{"version":3,"sources":["@havainnot/havainnot/utils/havainnot.helper.ts","@common/utils/localization.ts","@auditoinnit/sg-hpr/models/ICert.tsx","@auditoinnit/sg-fileupload/models/IFile.ts","@auditoinnit/sg-schema/rules.helpers.ts","@auditoinnit/sg-schema/extraActions/uiSetWith.ts","@auditoinnit/sg-schema/extraActions/index.ts","@auditoinnit/sg-schema/extraActions/makeReadonly.ts","@auditoinnit/sg-schema/extraActions/newOrder.ts","@auditoinnit/sg-schema/extraActions/setValue.ts","@auditoinnit/sg-schema/extraActions/overwriteWithCopyOfItem.ts","@auditoinnit/sg-schema/withRules.tsx","@auditoinnit/auditoinnit/components/form/EvaluationCounter/EvaluationCounter.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/write.ts","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/PersonPicker/PersonPickerWidget.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/EvaluationCounter/EvaluationCounterWidget.tsx","@auditoinnit/auditoinnit/data/notes/useNotesByField.ts","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/read.ts","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/PersonPicker/PersonPickerDisplay.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/EvaluationCounter/EvaluationCounterDisplay.tsx","@auditoinnit/auditoinnit/configuration/JsonSchemaFormConfiguration.ts","@auditoinnit/auditoinnit/configuration/Components.ts","@auditoinnit/auditoinnit/configuration/default/LocationName.tsx","@auditoinnit/auditoinnit/configuration/default/useResolveLocationFilters.tsx","@auditoinnit/auditoinnit/configuration/Hooks.ts","@auditoinnit/auditoinnit/configuration/ApplicationConfiguration.ts","@auditoinnit/auditoinnit/configuration/ConfigurationContext.tsx","@auditoinnit/sg-core/services/ApiService2.ts","@auditoinnit/sg-hpr/context/HprServiceContext.tsx","@auditoinnit/sg-core/swr/useSWROffline.ts","@auditoinnit/sg-hpr/components/persons/PersonPopupContent.tsx","@auditoinnit/sg-hpr/components/persons/PersonName.tsx","@havainnot/havainnot/components/ControlledPageScroll.tsx","@havainnot/havainnot/components/LanguageSelect.tsx","@havainnot/havainnot/components/TopRightCornerMenu.tsx","@havainnot/havainnot/components/PageTemplate/PageTemplate.tsx","@common/constants/StorageKeys.ts","@havainnot/havainnot/store/selectors/categorySelectors.ts","@havainnot/havainnot/store/selectors/observationListSelectors.ts","@auditoinnit/sg-core/models/ILoadable.ts","@havainnot/havainnot/mappers/ObservationMapper.ts","@havainnot/havainnot/mappers/ContextMapper.ts","@havainnot/havainnot/interfaces/IObservationEvent.ts","@havainnot/havainnot/utils/id.helper.ts","@havainnot/havainnot/services/observationService.ts","@havainnot/havainnot/store/selectors/observationSelectors.ts","@havainnot/havainnot/interfaces/ICategoryPermission.ts","@havainnot/havainnot/store/actions/contextActions.ts","@havainnot/havainnot/store/selectors/personSelectors.ts","@havainnot/havainnot/components/person/PersonName.tsx","@common/auth/components/AuthInitializeGuard.tsx","@common/components/LoaderSegment.tsx","@common/utils/ReactRouter.utils.ts","@common/hooks/useSettings.tsx","@common/context/SettingsProvider.tsx","ContextInjection.tsx","App.tsx","@common/utils/logBuildInfo.ts","serviceWorker.ts","index.tsx","@common/utils/print.helpers.ts","@auditoinnit/sg-core/utils/GateSupport.ts","@auditoinnit/sg-schema/utils/widgetRegistry.ts","@auditoinnit/sg-hpr/data/cacheKeys.ts","@havainnot/havainnot/store/actions/formActions.ts","@auditoinnit/sg-hooks/useConst.ts","@auditoinnit/sg-hooks/useBool.ts","@common/auth/interfaces/IAuthContext.ts","@common/auth/AuthenticationProvider.tsx","@havainnot/havainnot/services/personService.ts","@auditoinnit/auditoinnit/interfaces/IAuditNote.ts","@auditoinnit/auditoinnit/utils/auditoinnit.helpers.ts","sg-fileupload/context/FileUploadContext.tsx","@auditoinnit/sg-fileupload/services/FileUploadService.tsx","@auditoinnit/sg-fileupload/context/FileUploadServiceContext.tsx","@auditoinnit/routes.tsx","@auditoinnit/auditoinnit/components/audits/AuditsList/AuditsListItem.tsx","@auditoinnit/auditoinnit/components/audits/AuditsList/AuditsList.tsx","@auditoinnit/auditoinnit/components/audits/AuditsTable/TableColumns.tsx","@auditoinnit/auditoinnit/components/audits/AuditsTable/TablePagination.tsx","@auditoinnit/auditoinnit/components/audits/AuditsTable/AuditsTable.tsx","@auditoinnit/auditoinnit/components/audits/RenderAuditPageItems.tsx","@auditoinnit/auditoinnit/data/audits/useAuditsPageItems.ts","@auditoinnit/auditoinnit/components/audits/RenderAuditPage.tsx","@auditoinnit/auditoinnit/views/AuditListPage.tsx","@auditoinnit/auditoinnit/components/audits/RenderAudit.tsx","@auditoinnit/auditoinnit/components/formType/RenderFormTypeByGuid.tsx","@auditoinnit/auditoinnit/data/formType/useFormTypeByGuid.ts","@auditoinnit/auditoinnit/views/InitializeAuditPage.tsx","@auditoinnit/auditoinnit/data/audits/audit/useAuditInitialization.ts","@auditoinnit/sg-hpr/constant/CertStatusColors.ts","@auditoinnit/sg-hpr/components/persons/PersonCertStatus.tsx","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/DateTimePicker.validation.ts","sg-schema-form/context/SchemaContext.tsx","@auditoinnit/auditoinnit/constants/controlledFiltters.ts","@havainnot/havainnot/utils/item.helpers.ts","@havainnot/havainnot/store/reducers/contextReducer.ts","@havainnot/havainnot/store/reducers/categoryReducer.ts","@havainnot/havainnot/store/reducers/formReducer.ts","@havainnot/havainnot/store/reducers/locationReducer.ts","@havainnot/havainnot/store/reducers/personReducer.ts","@havainnot/havainnot/store/reducers/observationListReducer.ts","@havainnot/havainnot/store/reducers/observationReducer.ts","@havainnot/havainnot/store/reducers/permissionsReducer.ts","@havainnot/havainnot/store/reducers/appRoleReducer.ts","@havainnot/havainnot/store/reducers/formContextReducer.ts","@havainnot/havainnot/store/reducers.ts","@havainnot/store/reducers.ts","@havainnot/store/sagaEffectMiddleware.ts","@havainnot/havainnot/auth/store/initializeSaga.ts","@havainnot/havainnot/auth/store/loginSaga.ts","@havainnot/havainnot/auth/store/logoutSaga.ts","@havainnot/havainnot/auth/store/setLanguageSaga.ts","@havainnot/havainnot/auth/store/anonLogin.ts","@havainnot/havainnot/auth/store/getUsersAppRoles.ts","@havainnot/havainnot/store/actions/categoryAction.ts","@havainnot/havainnot/store/actions/permissionActions.ts","@havainnot/havainnot/store/sagas/fetchInitialContextSaga.ts","@havainnot/havainnot/store/sagas/updateContextDataSaga.ts","@havainnot/havainnot/store/actions/locationAction.ts","@havainnot/havainnot/store/sagas/fetchObservationCountsSaga.ts","@havainnot/havainnot/store/sagas/fetchObservationListPageSaga.ts","@havainnot/havainnot/store/sagas/fetchObservationList.ts","@havainnot/havainnot/store/sagas/fetchFormDefinitionSaga.ts","@havainnot/havainnot/store/sagas/fetchCreateObservationSaga.ts","@havainnot/havainnot/store/sagas/fetchObservationSaga.ts","@havainnot/havainnot/mappers/ClassificationTextMapper.ts","@havainnot/havainnot/store/sagas/fetchSaveObservationProcessFormSaga.ts","@havainnot/havainnot/store/sagas/fetchProcessorPersons.ts","@havainnot/havainnot/store/sagas/fetchPersonsSaga.ts","@havainnot/havainnot/store/actions/formContextActions.ts","@havainnot/havainnot/store/sagas/fetchFormContextLocations.ts","@havainnot/havainnot/store/sagas/fetchDelegateObservation.ts","@havainnot/havainnot/services/formContextService.ts","@havainnot/store/index.tsx","sg-auth/services/SgAuthStorage.ts","@havainnot/havainnot/store/sagas/index.ts","@common/hooks/useCookie.ts","sg-schema-form/hooks/useSchemaTranslation.ts","sg-fileupload/components/Image.tsx","@auditoinnit/sg-fileupload/components/Thumbnail.tsx","@auditoinnit/sg-fileupload/utils/image.helpets.ts","@auditoinnit/sg-hpr/data/hprSettings/useHprSettings.tsx","@havainnot/havainnot/components/formType/FormCategoryName.tsx","@havainnot/havainnot/components/formType/FormTypeName.tsx","@auditoinnit/sg-schema/schema.helpers.ts","@havainnot/havainnot/auth/store/authSelectors.ts","i18n.ts","@auditoinnit/sg-core/utils/Result.ts","@auditoinnit/sg-hooks/useLocalStorage.ts","@auditoinnit/auditoinnit/constants/StorageKeys.ts","@havainnot/havainnot/constants/statusColors.ts","sg-schema-form/constants/Translation.ts","@havainnot/havainnot/store/reducers/messageReducer.ts","@auditoinnit/auditoinnit/mappers/FormTypeMapper.ts","@auditoinnit/@custom/sg-mapAuditing/components/MapAuditing.utils.ts","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/AccordionObjectField/AccordionObjectFieldContext.tsx","@auditoinnit/sg-core/utils/enviroment.helpers copy.ts","@auditoinnit/auditoinnit/constants/EnviromentVariables.ts","@auditoinnit/auditoinnit/mappers/AuditItemMapper.ts","@auditoinnit/auditoinnit/mappers/AuditMapper.ts","@auditoinnit/auditoinnit/mappers/ContextMapper.ts","@auditoinnit/auditoinnit/services/auditService.ts","@auditoinnit/auditoinnit/utils/data.helpers.ts","sg-schema-form/extraActions/index.ts","sg-schema-form/extraActions/uiSetWith.ts","sg-schema-form/extraActions/hideEmptyFields.ts","sg-schema-form/constants/CustomTypes.ts","sg-schema-form/extraActions/uiErrorIfNoMatches.ts","sg-schema-form/utils/uiSchemaToStaticErrors.ts","sg-schema-form/constants/CustomFormats.ts","sg-hpr/models/ICert.tsx","sg-hpr/components/PeoplePicker.tsx","sg-schema-form/models/ISchemaRule.ts","sg-hpr/context/HprContext.tsx","sg-hpr/mock.ts","sg-schema-form/context/SignatureContext.tsx","sg-schema-form/utils/mockSignatureOptions.tsx","sg-schema-form/context/FormDataContext.tsx","sg-schema-form/models/ISchemaContext.ts","sg-schema-form/models/IFormContext.ts","sg-schema-form/utils/composeRules.ts","sg-schema-form/utils/forEachSchemaProperty.ts","sg-schema-form/withRules.tsx","sg-schema-form/utils/context.helpers.ts","sg-schema-form/utils/focusOnField.ts","sg-schema-form/utils/transformErrorsToFinnish.ts","sg-schema-form/utils/validateDateFields.ts","sg-schema-form/themes/semantic-ui/components/AddButton/AddButton.tsx","sg-schema-form/themes/semantic-ui/util.tsx","sg-schema-form/themes/semantic-ui/Fields/DescriptionField/DescriptionField.tsx","sg-schema-form/themes/semantic-ui/components/HelpField/HelpField.tsx","sg-schema-form/themes/semantic-ui/components/RawErrors/RawErrors.tsx","sg-schema-form/utils/isSupportedWidget.ts","sg-schema-form/themes/semantic-ui/components/UnsupportedFieldError.tsx","sg-schema-form/themes/semantic-ui/Templates/FieldTemplate/FieldTemplate.tsx","sg-schema-form/themes/semantic-ui/Templates/ArrayFieldTemplate/ArrayFieldTemplate.tsx","sg-schema-form/themes/semantic-ui/components/ErrorList/ErrorList.tsx","sg-schema-form/themes/semantic-ui/Fields/TitleField/TitleField.tsx","sg-schema-form/utils/getUiOptions.ts","sg-schema-form/themes/semantic-ui/Widgets/HeaderWidget/HeaderWidget.tsx","sg-schema-form/themes/semantic-ui/Fields/NullField.tsx","sg-schema-form/themes/semantic-ui/Fields/Custom.tsx","sg-schema-form/themes/semantic-ui/Fields/Fields.ts","sg-schema-form/themes/semantic-ui/Templates/ObjectFieldTemplate/ObjectFieldTemplate.tsx","sg-schema-form/themes/semantic-ui/Widgets/CheckboxWidget/CheckboxWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/CheckboxesWidget/CheckboxesWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/PasswordWidget/PasswordWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/RadioWidget/RadioWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/RangeWidget/RangeWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/SelectWidget/SelectWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/TextareaWidget/TextareaWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/TextWidget/TextWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/UpDownWidget/UpDownWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/ButtonGroup/ButtonGroup.tsx","sg-schema-form/themes/semantic-ui/components/InputElement/InputElement.tsx","sg-schema-form/themes/semantic-ui/Widgets/FileUploadWidget/FileUploadWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/ImageUploadWidget/ImageUploadWidget.tsx","sg-schema-form/components/Signature/SignatureInput.tsx","sg-schema-form/themes/semantic-ui/Widgets/SignatureWidget/SignatureWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/PersonPickerWidget/PersonPickerWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/MapLocationWidget/MapLocationWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/RelatedPermitWidget/RelatedPermitWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/AreaSelect/AreaSelect.tsx","sg-schema-form/components/DateTimePicker/DateTimePicker.validation.ts","sg-schema-form/constants/formats.ts","sg-schema-form/components/DateTimePicker/PickerUtils.ts","sg-schema-form/components/DateTimePicker/DateInput.tsx","sg-schema-form/components/DateTimePicker/DateTimePicker.utils.ts","sg-schema-form/components/DateTimePicker/HourMinuteSelect/TimeList.tsx","sg-schema-form/components/DateTimePicker/HourMinuteSelect/HourMinuteSelect.tsx","sg-schema-form/components/DateTimePicker/TimeInput.tsx","sg-schema-form/components/DateTimePicker/DateTimePicker.tsx","sg-schema-form/themes/semantic-ui/Widgets/DateTimeWidget/DateTimeWidget.tsx","sg-schema-form/components/DateRangePicker/DateRangePicker.tsx","sg-schema-form/themes/semantic-ui/components/Header/Header.tsx","sg-schema-form/themes/semantic-ui/Widgets/DateRangeWidget/DateRangeWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/PermitValidityWidget/PermitValidityWidget.tsx","sg-schema-form/themes/semantic-ui/Widgets/Widgets.ts","sg-schema-form/themes/semantic-ui/Theme.ts","sg-schema-form/themes/semantic-ui-display/components/AddButton/AddButton.tsx","sg-schema-form/themes/semantic-ui-display/util.tsx","sg-schema-form/themes/semantic-ui-display/Templates/ArrayFieldTemplate/ArrayFieldTemplate.tsx","sg-schema-form/themes/semantic-ui-display/components/ErrorList/ErrorList.tsx","sg-schema-form/themes/semantic-ui-display/Fields/DescriptionField/DescriptionField.tsx","sg-schema-form/themes/semantic-ui-display/Fields/TitleField/TitleField.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/HeaderWidget/HeaderWidget.tsx","sg-schema-form/themes/semantic-ui-display/Fields/NullField.tsx","sg-schema-form/themes/semantic-ui-display/components/HelpField/HelpField.tsx","sg-schema-form/themes/semantic-ui-display/components/RawErrors/RawErrors.tsx","sg-schema-form/themes/semantic-ui-display/components/UnsupportedFieldError.tsx","sg-schema-form/themes/semantic-ui-display/Templates/FieldTemplate/FieldTemplate.tsx","sg-schema-form/themes/semantic-ui-display/Fields/Custom.tsx","sg-schema-form/themes/semantic-ui-display/Fields/Fields.ts","sg-schema-form/themes/semantic-ui-display/Templates/ObjectFieldTemplate/ObjectFieldTemplate.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/CheckboxWidget/CheckboxWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/CheckboxesWidget/CheckboxesWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/PasswordWidget/PasswordWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/RadioWidget/RadioWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/RangeWidget/RangeWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/SelectWidget/SelectWidget.tsx","sg-schema-form/themes/semantic-ui-display/components/StringField/StringField.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/TextareaWidget/TextareaWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/TextWidget/TextWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/UpDownWidget/UpDownWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/FileUploadWidget/FileUploadWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/ImageUploadWidget/ImageUploadWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/SignatureWidget/SignatureWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/ButtonGroupWidget/ButtonGroupWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/PersonPickerWidget/PersonPickerWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/MapLocationWidget/MapLocationWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/RelatedPermitWidget/RelatedPermitWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/AreaSelect/AreaSelect.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/DateTimeWidget/DateTimeWidget.tsx","sg-schema-form/themes/semantic-ui-display/components/DateRangeDisplay.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/DateRangeWidget/DateRangeWidget.tsx","sg-schema-form/themes/semantic-ui-display/Widgets/PermitValidityWidget/PermitValidityWidget.tsx","sg-schema-form/utils/widgetRegistry.ts","sg-schema-form/themes/semantic-ui-display/Widgets/Widgets.ts","sg-schema-form/themes/semantic-ui-display/Theme.ts","sg-schema-form/configurations/JsonSchemaFormConfiguration.ts","sg-schema-form/utils/getSchemaActionTypes.ts","sg-schema-form/components/DisplayView.tsx","sg-schema-form/utils/forEachSchemaProp.ts","sg-schema-form/utils/transformHeaderErrors.ts","sg-schema-form/components/FormView.tsx","sg-schema-form/themes/semantic-ui/SemanticUIForm/SemanticUIForm.tsx","sg-schema-form/themes/semantic-ui/index.ts","sg-schema-form/themes/semantic-ui-display/SemanticUIForm/SemanticUIForm.tsx","sg-schema-form/themes/semantic-ui-display/index.ts","@auditoinnit/sg-core/hooks/useToast.ts","sg-fileupload/components/FileUpload.tsx","@havainnot/havainnot/auth/store/authReducer.ts","sg-core/utils/Result.ts","@auditoinnit/sg-hpr/data/persons/usePerson.tsx","@auditoinnit/auditoinnit/interfaces/IAppParatemers.ts","@auditoinnit/auditoinnit/interfaces/AppConfigurations.ts","@auditoinnit/auditoinnit/services/contextService.ts","sg-core/utils/GateSupport.ts","@havainnot/havainnot/data/observation/useMakeObservationPackage.ts","@havainnot/havainnot/store/actions/messageActions.ts","@auditoinnit/sg-fileupload/components/File.tsx","@auditoinnit/sg-hpr/data/persons/usePersonCache.ts","@auditoinnit/sg-hpr/components/companies/CompanyName.tsx","@auditoinnit/sg-hpr/utils/cert.helper.ts","@auditoinnit/auditoinnit/components/ErrorBoundary.tsx","@auditoinnit/auditoinnit/data/formType/useFormTypeList.ts","@auditoinnit/auditoinnit/mappers/CategoryMapper.ts","@auditoinnit/auditoinnit/mappers/PermissionMapper.ts","@auditoinnit/@tilannekuva/data/cacheKey.ts","@auditoinnit/sg-core/swr/useSWRCache.ts","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/AccordionObjectField/AccordionItem.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/AccordionObjectField/RenderAccordion.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/AccordionObjectField/AccordionItemObjectField.tsx","@auditoinnit/sg-hpr/components/companies/RenderCompany.tsx","@auditoinnit/sg-hpr/data/companies/useCompany.tsx","@havainnot/havainnot/constants/StorageKeys.ts","@auditoinnit/auditoinnit/utils/calculateEvaluationStatics.ts","@auditoinnit/auditoinnit/utils/observation.helpers.ts","@havainnot/havainnot/interfaces/IObservation.ts","@havainnot/havainnot/components/observation/ObservationCounters.tsx","@havainnot/havainnot/components/formType/FormListModal.tsx","@havainnot/havainnot/components/formType/FormCategoryMenuItem.tsx","@havainnot/havainnot/store/selectors/permissionSelectors.ts","@havainnot/havainnot/components/permissions/MinimumCategoryPermission.tsx","@havainnot/havainnot/components/formType/FormCategoryMenu.tsx","@havainnot/havainnot/views/FrontPage.tsx","@havainnot/havainnot/components/formType/FormCategoryIcon.tsx","@havainnot/havainnot/store/selectors/appRoleSelector.ts","@havainnot/havainnot/components/worklist/WorkListItem.tsx","@havainnot/havainnot/components/worklist/WorkList.tsx","@havainnot/havainnot/components/worklist/WorkListPagination.tsx","@havainnot/havainnot/views/WorklistPage.tsx","@havainnot/havainnot/constants/schemaContext.ts","@havainnot/havainnot/components/form/ErrorList.tsx","@havainnot/havainnot/schema/extraActions/uiSetWith.ts","@havainnot/havainnot/schema/extraActions/index.ts","@havainnot/havainnot/schema/extraActions/makeReadonly.ts","@havainnot/havainnot/schema/extraActions/newOrder.ts","@havainnot/havainnot/schema/extraActions/setValue.ts","@havainnot/havainnot/schema/extraActions/overwriteWithCopyOfItem.ts","@havainnot/havainnot/components/SchemaForm.tsx","@havainnot/havainnot/components/observation/ObservationForm.tsx","@havainnot/havainnot/views/NewObservationPage.tsx","@havainnot/havainnot/components/observation/ObservationDetail.tsx","@havainnot/havainnot/components/SchemaDisplay.tsx","@havainnot/routes.tsx","@havainnot/havainnot/components/DelegateProcessingModal.tsx","@havainnot/havainnot/components/formType/RenderFormDefinition.tsx","@havainnot/havainnot/data/context/useFormType.ts","@havainnot/havainnot/components/observation/processing/ProcessingForm.tsx","@havainnot/havainnot/components/ErrorMessage.tsx","@havainnot/havainnot/components/observation/processing/ProcessingDetail.tsx","@havainnot/havainnot/components/observation/ObservationPackageModal.tsx","@havainnot/havainnot/data/observation/useHistoryPackage.ts","@havainnot/havainnot/components/observation/OriginalObservationModal.tsx","@havainnot/havainnot/components/observation/ObservationHistoryModal.tsx","@havainnot/havainnot/components/observation/ObservationEditedDetail.tsx","@havainnot/havainnot/data/observation/useObservationHistory.ts","@havainnot/havainnot/components/permissions/RenderPermissionForCategory.tsx","@havainnot/havainnot/components/observation/AnonymousObservationPopup.tsx","@havainnot/havainnot/views/ObservationPage.tsx","@havainnot/havainnot/views/OpenObservationPage.tsx","@havainnot/havainnot/components/observation/ObservationPrint/ObservationPrint.tsx","@havainnot/havainnot/views/ObservationPrintPage.tsx","@havainnot/havainnot/views/AnonymousNewObservationPage.tsx","@havainnot/havainnot/data/observation/useSaveObservation.ts","@havainnot/havainnot/data/observation/useSaveHistoryPackage.ts","@havainnot/havainnot/components/observation/ObservationEditing.tsx","@havainnot/havainnot/views/EditObservationPage.tsx","sg-core/utils/json.helpers.ts","@havainnot/havainnot/store/actions/observationActions.ts","@havainnot/havainnot/components/LoaderSegment.tsx","@havainnot/havainnot/utils/observationToSearchableText.ts","@auditoinnit/auditoinnit/interfaces/IAudit.ts","@havainnot/havainnot/utils/json.helpers.ts","@havainnot/havainnot/mappers/FormDefinitionMapper.ts","@havainnot/havainnot/mappers/RoleMapper.ts","@havainnot/havainnot/interfaces/AppParatemers.ts","@havainnot/havainnot/interfaces/IAppConfigurations.ts","@havainnot/havainnot/mappers/FormDefinitionMapperCorrected.ts","@havainnot/havainnot/services/contextService.ts","@havainnot/havainnot/mappers/FormTypeMapper.ts","@havainnot/havainnot/mappers/PersonMapper.ts","@auditoinnit/auditoinnit/utils/schema.helpers.ts","@auditoinnit/auditoinnit/mappers/FormDefinitionMapper.ts","@auditoinnit/@tilannekuva/components/RenderMaptilerTileset.tsx","@auditoinnit/@tilannekuva/data/useMaptilerTileset.ts","@auditoinnit/@tilannekuva/utils/parseMapresourceXML.ts","@auditoinnit/@tilannekuva/components/RenderMapresource.tsx","@auditoinnit/@tilannekuva/data/useMapresource.ts","@auditoinnit/@tilannekuva/components/RasterMap.tsx","@auditoinnit/@tilannekuva/components/RasterLayer.tsx","@auditoinnit/@tilannekuva/utils/tileset.helpers.ts","@auditoinnit/@tilannekuva/components/FullscreenControl.js","@auditoinnit/@tilannekuva/components/Geolocate.tsx","@auditoinnit/@tilannekuva/components/MapAdapter.tsx","@auditoinnit/@custom/sg-mapAuditing/components/MapAuditingCheckDetail.tsx","@auditoinnit/@custom/sg-mapAuditing/components/MapAuditingCheckForm.tsx","@auditoinnit/@custom/sg-mapAuditing/components/MapAuditingMarker.tsx","@auditoinnit/auditoinnit/data/context/useApplyParameters.ts","@auditoinnit/auditoinnit/data/context/useInitialContext.ts","@common/hooks/useFieldErrors.ts","@common/hooks/useTexts.ts","@auditoinnit/auditoinnit/interfaces/ICategoryPermission.ts","@auditoinnit/auditoinnit/context/AuditNoteContext.tsx","@auditoinnit/auditoinnit/data/audits/useAuditsCache.ts","sg-auth/mappers/UserMapper.ts","sg-auth/services/SgAuthService.ts","@common/components/TestBackground.tsx","@common/models/CommonAppConfigurations.ts","@auditoinnit/auditoinnit/components/formType/RenderFormType.tsx","@auditoinnit/sg-schema/SchemaI18NProvider.tsx","@auditoinnit/sg-schema/useSchemaTranslation.ts","@auditoinnit/auditoinnit/utils/kierrokset.helper.ts","@auditoinnit/auditoinnit/components/formType/FormCategoryIcon.tsx","@havainnot/havainnot/store/selectors/contextSelectors.ts","@havainnot/havainnot/data/context/useApplyParameters.ts","sg-core/services/ApiService.ts","sg-core/models/ILoadable.ts","sg-core/components/ErrorBoundary.tsx","sg-core/components/RouteErrorBoundary.tsx","sg-core/hooks/useConst.ts","sg-core/hooks/useBool.ts","sg-core/hooks/useLocalStorage.ts","sg-core/hooks/useLoading.ts","sg-core/hooks/useOnClickOutside.tsx","sg-core/hooks/useIsMount.ts","sg-core/components/RenderPdfData.tsx","sg-core/models/ISubmittable.ts","sg-core/models/IApiDBRecord.ts","sg-core/services/EndpointService.ts","@auditoinnit/auditoinnit/auth/hooks/useLoggedInUser.ts","@auditoinnit/auditoinnit/data/observations/useObservationContext.ts","@auditoinnit/@tilannekuva/models/MapLocation.ts","@auditoinnit/auditoinnit/data/notes/useEditableNotes.ts","@auditoinnit/auditoinnit/context/AuditMetaContext.tsx","@auditoinnit/auditoinnit/mappers/ObservationMapper.ts","@auditoinnit/auditoinnit/utils/observation.helper.ts","@auditoinnit/auditoinnit/services/observationService.ts","@auditoinnit/@tilannekuva/models/TargetingScheme.ts","@auditoinnit/@tilannekuva/data/useTargetingScheme.ts","@auditoinnit/auditoinnit/constants/statusTextKey.ts","@auditoinnit/auditoinnit/components/audits/audit/AuditStatusLabel.tsx","sg-core/utils/enviroment.helpers.ts","@auditoinnit/auditoinnit/auth/AuthenticationProvider.tsx","@auditoinnit/sg-schema/constants/formats.ts","@havainnot/havainnot/utils/query.helper.ts","@havainnot/havainnot/constants/statusTextKey.ts","@auditoinnit/auditoinnit/data/formType/useFormType.ts","@auditoinnit/auditoinnit/components/schema/SchemaForm.tsx","@auditoinnit/auditoinnit/data/categories/useCategory.ts","@auditoinnit/auditoinnit/components/form/EvaluationsSummary/EvaluationsSummary.tsx","@auditoinnit/@custom/sg-mapAuditing/components/MapAuditingListItem.tsx","@auditoinnit/@custom/sg-mapAuditing/components/jsonSchema/MapAuditingDisplayField.tsx","@auditoinnit/@custom/sg-mapAuditing/components/jsonSchema/MapAuditingField.tsx","sg-fileupload/components/Thumbnail.tsx","@auditoinnit/sg-hooks/useIsMount.ts","@auditoinnit/auditoinnit/data/audits/useAuditsPage.ts","@havainnot/havainnot/utils/schema.helpers.ts","@havainnot/havainnot/utils/data.helpers.ts","@havainnot/havainnot/configuration/Components.ts","@havainnot/havainnot/configuration/default/LocationName.tsx","@havainnot/havainnot/configuration/default/useResolveLocationFilters.tsx","@havainnot/havainnot/configuration/ApplicationConfiguration.ts","@havainnot/havainnot/configuration/ConfigurationContext.tsx","@havainnot/endpoints.ts","@common/routes.tsx","@common/auth/components/AuthenticatedRoute.tsx","@common/utils/common.helpers.ts","@common/components/RouteErrorBoundary.tsx","routing.tsx","@havainnot/havainnot/mappers/CategoryMapper.ts","@havainnot/havainnot/mappers/PermissionMapper.ts","@auditoinnit/sg-hooks/useOnClickOutside.tsx","@auditoinnit/sg-fileupload/components/FileUpload.tsx","@auditoinnit/sg-fileupload/hooks/useFileToken.ts","@auditoinnit/sg-fileupload/components/ImageInput.tsx","@auditoinnit/sg-fileupload/components/Image.tsx","@auditoinnit/sg-hpr/data/companies/useCompanyList.tsx","@auditoinnit/auditoinnit/mappers/RoleMapper.ts","@auditoinnit/auditoinnit/components/Boundary.tsx","@auditoinnit/auditoinnit/utils/id.helper.ts","@havainnot/havainnot/auth/store/authActions.ts","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/EvaluationCheck/EvaluationCheckDisplay.tsx","@auditoinnit/auditoinnit/utils/evaluation.helpers.ts","@auditoinnit/auditoinnit/components/note/NoteFormInfo.tsx","@auditoinnit/auditoinnit/components/observation/ObservationFormCategoryIcon .tsx","@auditoinnit/auditoinnit/components/observation/RenderObservationFormDefinition.tsx","@auditoinnit/auditoinnit/components/observation/ObservationForm.tsx","@auditoinnit/auditoinnit/components/note/AuditNoteForm/DefaultNoteForm.tsx","@auditoinnit/auditoinnit/components/note/EditableAuditNoteForm.tsx","@auditoinnit/auditoinnit/components/note/EditableAuditNoteModal.tsx","@auditoinnit/sg-hpr/components/persons/PersonSearch/NotifyByIcon.tsx","@auditoinnit/sg-hpr/components/persons/PersonSearch/PersonSearchListItem.tsx","@auditoinnit/sg-hpr/components/persons/PersonSearch/PersonSearchMenuContent.tsx","@auditoinnit/sg-hpr/components/persons/PersonSearch/PersonSearch.tsx","@auditoinnit/sg-hpr/data/persons/useSearchPerson.ts","@auditoinnit/sg-hpr/hooks/usePersonCertValidator.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/AccordionObjectField/AccordionObjectField.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/EvaluationField/EvaluationField.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/EvaluationObjectTemplate/EvaluationObjectTemplate.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/write.ts","@auditoinnit/auditoinnit/components/note/NoteSubmitStatus.tsx","@auditoinnit/auditoinnit/mappers/AuditNoteMapper.ts","@auditoinnit/auditoinnit/components/note/NoteAccordionItem.tsx","@auditoinnit/auditoinnit/components/note/NoteAccordion.tsx","@havainnot/havainnot/interfaces/ObservationPackage/ObservationPackage.ts","@havainnot/havainnot/interfaces/ObservationPackage/versions/IObservationPackageV1.ts","@auditoinnit/auditoinnit/components/form/EvaluationCheck/EvaluationCheck.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaWidgets/EvaluationCheck/EvalutaionCheckWidget.tsx","@auditoinnit/auditoinnit/components/note/AddAuditNoteAction.tsx","@auditoinnit/auditoinnit/data/notes/useInitialNoteData.ts","@common/utils/testEnviroment.utils.ts","@auditoinnit/auditoinnit/data/cacheKeys.ts","@havainnot/havainnot/store/actions/observationListActions.ts","@auditoinnit/sg-core/services/EndpointService.ts","@auditoinnit/endpoints.ts","@auditoinnit/auditoinnit/interfaces/IAuditHistoryEvent.ts","@auditoinnit/auditoinnit/components/RedirectAndNotify.tsx","@auditoinnit/sg-schema/form.helpers.ts","@auditoinnit/auditoinnit/interfaces/IObservation.ts","@auditoinnit/auditoinnit/components/DefaultSelectPlaceholder.tsx","@auditoinnit/auditoinnit/components/formType/RenderFormTypes.tsx","@auditoinnit/auditoinnit/components/formType/FormTypeSelect.tsx","@auditoinnit/auditoinnit/components/audits/audit/AuditStatusSelect.tsx","@auditoinnit/auditoinnit/components/audits/filters/AudFiltersForm.tsx","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/DateTimePicker.utils.ts","@auditoinnit/auditoinnit/interfaces/IEvaluation.ts","@dokumentit/tyoluvat/constants/StorageKeys.ts","@dokumentit/routes.tsx","sg-core/swr/useSWRCache.ts","@auditoinnit/sg-hooks/useLoading.ts","@common/models/EmailAttachment.ts","@common/services/CommonService.ts","endpoints.ts","@tyoluvat/routes.tsx","@auditoinnit/auditoinnit/data/appRoles/useAppRoles.ts","@common/auth/components/FullPageLoader/FullPageLoader.tsx","sg-fileupload/components/File.tsx","sg-fileupload/components/FileInput.tsx","sg-fileupload/components/ImageInput.tsx","@common/auth/hooks/useLoggedInUser.ts","@auditoinnit/auditoinnit/components/ControlledPageScroll.tsx","@auditoinnit/auditoinnit/components/LanguageSelect.tsx","@auditoinnit/auditoinnit/utils/query.helper.ts","@auditoinnit/auditoinnit/components/PageTemplate/PageTemplate.tsx","@common/auth/hooks/useAuthentication.ts","@common/utils/query.helper.ts","@common/constants/EnviromentVariables.ts","@auditoinnit/auditoinnit/components/form/EvaluationsSummary/index.ts","@auditoinnit/auditoinnit/context/AuditFilterContext.tsx","@auditoinnit/sg-core/components/ErrorBoundary.tsx","@auditoinnit/auditoinnit/components/formType/FormTypeName.tsx","@auditoinnit/sg-hooks/useOnlineStatus.ts","@auditoinnit/auditoinnit/constants/schemaContext.ts","@auditoinnit/auditoinnit/components/form/ImageUpload.tsx","@auditoinnit/auditoinnit/constants/statusColors.ts","@auditoinnit/auditoinnit/data/formType/useFormDefinition.ts","@auditoinnit/auditoinnit/data/audits/audit/useAudit.ts","sg-core/utils/file.helpers.ts","sg-core/utils/string.helpers.ts","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/EvaluationField/EvaluationDisplayField.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/EvaluationObjectTemplate/EvaluationDisplayObjectTemplate.tsx","@auditoinnit/auditoinnit/components/form/jsonSchemaFields/read.ts","@auditoinnit/@leaflet/components/DraggableCircle.tsx","@auditoinnit/@leaflet/leaflet.helpers.ts","@auditoinnit/@custom/sg-mapAuditing/components/MapAuditing.tsx","@auditoinnit/auditoinnit/components/audits/RenderAuditItem.tsx","@auditoinnit/auditoinnit/data/audits/useAuditItem.ts","sg-schema-form/themes/semantic-ui-display/components/FieldHeader.tsx","@havainnot/havainnot/store/selectors/formSelectors.ts","@auditoinnit/sg-core/utils/json.helpers.ts","sg-fileupload/mock.ts","@havainnot/havainnot/store/actions/personAction.ts","@havainnot/havainnot/components/worklist/WorkListFilters.tsx","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/DateInput.tsx","@auditoinnit/sg-schema/themes/semantic/components/ErrorList.tsx","@auditoinnit/auditoinnit/data/observations/useObservationFormDefinition.ts","@auditoinnit/@tilannekuva/models/Map.ts","@auditoinnit/sg-schema/themes/semantic/templates/ObjectFieldTemplate.tsx","@auditoinnit/auditoinnit/data/categories/useCategories.ts","@auditoinnit/sg-schema/themes/semantic/widgets/BaseInput.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/Checkboxes.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/SelectWidget.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/Checkbox.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/Textarea.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/Radio.tsx","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/HourMinuteSelect/TimeList.tsx","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/HourMinuteSelect/HourMinuteSelect.tsx","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/TimeInput.tsx","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/DateTimePicker.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/DatePicker.tsx","@auditoinnit/sg-fileupload/components/FileInput.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/FileUpload6.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/ImageUpload6.tsx","@auditoinnit/sg-schema/themes/semantic/util/rows.ts","@auditoinnit/sg-schema/themes/semantic/components/DateTimePicker/getDefaultDateRangeValues.ts","@auditoinnit/sg-schema/themes/semantic/widgets/DateRangePicker.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/ButtonGroupWidget/ButtonGroupWidget.js","@auditoinnit/sg-schema/themes/semantic/widgets/InstructionWidget.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/index.ts","@auditoinnit/sg-schema/themes/semantic/widgets/Dropdown.tsx","@auditoinnit/sg-schema/themes/semantic/widgets/ToggleList.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/BaseInput.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/Checkboxes.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/Checkbox.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/TextArea.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/Radio.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/DatePicker.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/FileUpload6.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/ImageUpload6.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/SelectWidget.tsx","@auditoinnit/sg-schema/themes/semantic-display/components/TimeRangeDisplay.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/DateRangePicker.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/ButtonGroupWidget/ButtonGroupWidget.js","@auditoinnit/sg-schema/themes/semantic-display/widgets/InstructionWidget.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/index.ts","@auditoinnit/sg-schema/themes/semantic-display/widgets/Dropdown.tsx","@auditoinnit/sg-schema/themes/semantic-display/widgets/toggleList.tsx","@auditoinnit/sg-hpr/data/persons/usePersonForm.tsx","@auditoinnit/sg-hpr/data/companies/useCompanyForm.tsx","@auditoinnit/sg-hpr/components/companies/CompanyForm.tsx","@auditoinnit/sg-hpr/data/companies/useCreateCompany.ts","@auditoinnit/sg-hpr/data/companies/useCompanyCache.ts","@auditoinnit/sg-hpr/components/companies/AddCompanyModal.tsx","@auditoinnit/sg-hpr/components/companies/CompanySelect.tsx","@auditoinnit/sg-hpr/components/persons/PersonCertForm.tsx","@auditoinnit/sg-hpr/components/persons/RenderCert.tsx","@auditoinnit/sg-hpr/components/persons/PersonForm.tsx","@auditoinnit/sg-hpr/components/persons/AddPersonModal.tsx","@auditoinnit/sg-hpr/data/persons/useCreatePerson.ts","@auditoinnit/sg-hpr/components/persons/EditPersonModal.tsx","@auditoinnit/sg-hpr/data/persons/useUpdatePerson.ts","@auditoinnit/sg-hpr/components/persons/PersonPicker.tsx","@auditoinnit/sg-core/swr/useOfflineCache.ts","@auditoinnit/sg-core/swr/useOfflineStorage.ts","@auditoinnit/sg-core/swr/OfflineCacheContext.tsx","@havainnot/havainnot/store/selectors/messageSelector.ts","@havainnot/havainnot/components/message/AppMessage.tsx","@auditoinnit/sg-hpr/models/IPersonCert.tsx","@auditoinnit/sg-hpr/models/IPerson.tsx","@havainnot/havainnot/store/selectors.ts","sg-fileupload/models/IFile.ts"],"names":["formatIdLabel","id","_padStart","validateProcessingSchema","formSchema","properties","schema","on_julkinen","Object","type","console","warn","kasittelymerkintojen_julkisuus","enumOptions","enum","knownEnums","values","EProcessingMarkingPublicity","uknwownEnums","find","opt","includes","tila","EObservationStatus","getReadableTimestamp","rawTimestamp","timestamp","gateNonstandardDateToDate","_format","getLatestProcessingMarking","observation","markings","formData","merkinnat","latestToOldest","sort","a","b","Date","created_at","getTime","undefined","makeAnonObservationHref","packageId","printLanguage","baseUrl","window","location","origin","process","publicUrl","getRouteHrefById","HavainnotRouteId","AnonymousObservation","package","makeNewObservationPageHref","formDefinition","formType","pathname","NewObservationPage","state","clearStorage","EAppLanguages","langToAppLanguage","rawLang","FI","EN","ECertStatus","CertMapper","apiToDomain","api","name","nimi","refrenceName","viitenimi","isTimeLimited","maara_aikainen","gateBooleanToBoolean","EUploadStatus","removeContextData","newFormData","context","readonly","params","uiSchema","fields","field","Array","isArray","length","forEach","order","setValue","value","source","target","split","first","second","copyItemTo","from","to","index","uiSetWith","dataField","uiProperty","firstUi","secondUi","firstData","secondData","data","withRules","Form","props","initialSchema","initialUiSchema","initialFormData","onSubmit","onChange","rules","extraActions","moreExtraActions","contextSchema","contextData","focusOnError","otherProps","log","applyContext","defaultExtraActions","formEL","useRef","currentFormData","current","FormWithConditionals","useMemo","applyRules","Engine","useState","submitted","setSubmitted","handleSubmit","form","nativeEvent","debounced","_debounce","ref","onError","errors","firstError","focusOnField","stack","transformErrors","staticErros","uiSchemaToStaticErrors","concat","customFormats","EvaluationCounter","label","icon","color","allowNegative","count","updateValue","newCount","setFocusCount","focusReRender","prev","inputWrapper","inputElement","getElementsByTagName","inputActive","document","activeElement","inputValue","setInputValue","className","Icon","Button","onClick","Ref","innerRef","Input","onFocus","onBlur","Number","onKeyDown","event","key","preventDefault","_1","personPicker","options","appParameters","useApplicationConfiguration","isMulti","requiredCerts","excludeUncertified","noEmptyArrayItem","filter","personId","fallback","inputForCertStartDate","inputForHprCertificationStartDate","evaluationCheck","EvalutaionCheckWidget","evaluationCounter","t","formContext","fieldKey","enums","valueObj","texts","ok","useTranslation","notOk","notes","parentTitle","setParentTitle","useEffect","getTitle","setTimeout","accordionId","substring","indexOf","accordionTitleId","makeAccordionTitleId","parentTitleEl","getElementById","innerHTML","trim","clearTimeout","error","useAuditNoteContext","noteList","keys","reduce","acc","push","useNotesByField","makeCountUpdate","text","title","okay","Divider","notOkay","style","textAlign","paddingBottom","AddAuditNoteAction","fieldTitle","observationFormReference","parentObjectTitle","disabled","onSubmitted","note","NoteAccordion","rawValue","emptyValue","persons","companies","renderPerson","person","company","PersonName","showCompany","infoPopup","showPhone","showPersonPhonenumber","List","map","Item","padding","EvalutaionCheckDisplay","renderItem","iconProps","JsonSchemaConfiguration","_widgetRegistry","WidgetRegistry","create","built","_themes","_widgets","this","Error","theme","completeTheme","EWidgetType","Read","readFields","writeFields","widgets","read","write","withTheme","appendWidgets","commonSGReadWidgets","Write","commonSGWriteWidgets","commonhavainnotReadWidgets","commonhavainnotWriteWidgets","writer","reader","addWidget","build","defaultConfiguredComponents","ContextProvider","React","createElement","LocationPicker","LocationName","locationId","LocationMap","RenderMap","PersonNameById","PersonNameBase","useDefaultResolveLocationFilters","resolveLocationFilters","newFilters","defaultConfiguredHooks","usePerson","fetching","useGetLocationData","getLocationData","makeFailure","baseURL","bestGuessHostedInDevelopment","ApplicationConfiguration","components","hooks","observationPublicByDefault","applicationMenuHref","EnviromentVariables","siteLogoHref","PUBLIC_PATH","companyName","companyAddress","showAuditSummary","emailSupport","smsSupport","mapSupport","showLanguageSelect","languages","showDeveloperSettings","showRawApplicationErrors","testenviromentBackground","customConfigurationsLoaded","registerSettings","useResolveLocationFilters","testSchema","jsonSchemaConfig","fn","ensureExists","createApplicationConfiguration","config","makeSuccess","modifyConfigContext","createContext","setConfig","useModifyApplicationConfiguration","useContext","configContext","ConfigurationProvider","children","configFn","useAuthContext","token","lang","anonymousSession","Provider","ModifyConfigProvider","useLayoutEffect","loadConfigs","configResult","isFailure","Message","header","content","message","negative","Segment","loading","basic","AdditionalContextProvider","providerKey","JSON","stringify","updates","isSuccess","Function","configurationKey","TestBackground","active","GeneratedAction","getSgApiService","TOKEN","getToken","sendHttpRequest","endpoint","method","body","headers","fetch","path","response","statusText","json","success","sendHttpUrlRequest","url","noToken","hdrs","Authorization","sendAction","action","payload","getGeneratedAction","entityName","Create","Delete","GetList","GetOne","Update","sendActionGenerated","actionName","resultObj","result","results","useHprService","service","HprServiceProvider","useSWROffline","useOfflineCacheContext","online","getItem","setItem","clearItem","fetcher","cachedItem","initialItem","confs","onSuccess","initialData","useSWR","PersonPopupContent","renderField","Content","certs","cert","minWidth","display","alignItems","marginBottom","marginLeft","image","Image","avatar","fullname","phone","email","CompanyName","hidden","status","getPersonCertStatus","PersonCertStatus","CustomWrapper","as","showPhoneIcon","showEmailIcon","statusIcon","Wrapper","Popup","on","position","trigger","cursor","componentProps","RenderCompany","companyId","render","ControlledPageScroll","useLocation","history","useHistory","wrapperElement","noScrollTop","scrollTo","LanguageSelect","i18n","useSelector","selectLanguage","dispatch","useDispatch","languageOptions","Dropdown","parseQuery","search","nextLang","String","changeLanguage","createSetLanguageAction","direction","rdr","apps","guid","TopRightCornerMenu","showTenantSwitch","isOpen","setIsOpen","useBool","changeCompanyMenu","showChangeCompany","hideChangeCompany","user","useLoggedInUser","hideMenu","useOnClickOutside","menuContent","Menu","Header","app","href","menuCompanyContent","margin","maxWidth","src","size","secondary","open","onOpen","floating","labeled","PageTemplate","APP_PREFIX","replace","KEY_PREFIX","makeStorageKey","args","join","AUTH_COOKIE","RETURN_HREF_COOKIE","RDR_COOKIE","PREV_LOCATION","selectCategoryState","createSelector","selectHavainnotState","workPermit","categories","selectCategoriesByIdState","selectCategoriesIdList","categoryList","selectCategoryList","isLoaded","createLoaded","useCategoryList","useCategoryById","categoryId","selectObservationListState","observationList","selectObservationByIdState","observations","selectObservationIdList","selectObservationCounters","observationCounters","selectObservationPagination","pagination","selectObservationPages","pages","selectObservationFilters","filters","useObservationListPage","page","useObservationFilters","roleString","roles","isUnloaded","createRequestFetchObservationPageAction","createUnloaded","isLoadErrored","useObservationCounts","userRoles","useUsersAppRoles","createUpdateObservationFilters","updateFilters","useCallback","updated","update","useObservationPagination","gotoPage","createSetObservationPaginationPageAction","switchPage","amount","nextPage","prevPage","LoadStatus","d","$","Unloaded","Loaded","ReLoading","LoadErrored","createLoading","Loading","createLoadErrored","ObservationMapper","lomakedata","base64ToJson","decodedData","processingFormSchema","kasittelylomake_jsonschema","otsikko","creator","kirjaaja","lomake","alue","work","tyo","isObservationStatus","Unknown","description","kuvaus","kuva","mapLocation","karttasijainti","sijainti","kohde","marker","is_public","isEditor","on_kasittelija","kirjattu","editor","kasittelija","searchText","lomakedatahaku","domainToApi","domain","restOfFormData","processMarkings","kuvaId","booleanToGateBoolean","jsonToBase64","luokitteluteksti","classificationText","NewObservationMapper","ContextMapper","formTypes","lomakkeet","FormTypeMapper","kategoriat","CategoryMapper","henkilot","PersonMapper","categoryPermissions","oikeustasot","PermissionMapper","permissionsToDomain","ObservationEventMapper","tyyppi","permit","lupa","pdfGuid","historia_pdf_guid","historyPackageId","historiapaketti_id","aikaleima","performer","suorittaja","havainto","extractFormDataIdentifiers","identifiers","kohteet","personIds","observationToPersonIds","markingPersons","marking","vastaanottaja","_uniq","extractFormDataIdentifiersDTO","pacakgeToIdentifiers","getObservationService","apiService","Endpoint","anonymousSession___","makeAnonymousAction","Action","getObservations","getObservationsMap","getObservationPage","getObservationCounts","getObservation","saveObservation","createObservation","delegateObservation","saveHistoryData","getHistoryData","getHistoryDataAnonym","createHistoryEvent","updateHistoryEvent","getHistoryEvents","haku","kategoria","category","roolilista","sivupituus","apiResponse","havainnot","region","area","sivunumero","pageSize","teksti","freeText","handler","arkistorajaus","includeArchived","totalItems","tietuemaara","new","uusi","maara","onHandling","kasittelyssa","ready","kasitelty","observationGuid","tunnisteet","eventId","tapahtuma","opts","delegateAction","delegateBody","reciever","getObservationResponse","markingAboutDelegation","observationId","loggedInUser","toISOString","valitetty","InProgress","updateObservationResponse","deleagateResponse","jsonData","base64Data","base64data","sid","reqBody","tapahtumat","selectObservationState","selectCurrentObservation","selectNewObservation","newObservation","selectObservationProcessForm","processForm","selectDelegationStatus","delegationStatus","useCurrentObservationById","createRequestFetchObservationAction","useNewObservation","useObservationProcessForm","useDelegationStatus","EPermissionLevel","requestInitalAppContext","updateAppContext","createUpdateAppContextAction","createRequestFetchInitalAppContext","createSuccessFetchInitalAppContext","initialContext","createFailureFetchInitalAppContext","createSuccessAppRolesAction","selectPersonsState","selectPersonByIdState","selectPersonIdList","personList","selectProcessorPersonIdList","personListWithProcessorRole","getLoadedPersons","byId","createRequestFetchPersons","useLodablePersonById","isLoading","AuthInitializeGuard","initialized","loggingIn","initialize","skipInitialization","word","StillInitializing","startingApp","wait","FullPageLoader","loaderKey","LoaderSegment","padded","getUserConfirmation","dialogKey","callback","dialogTrigger","Symbol","for","defaultSettings","defaultValue","settings","setSetting","SettingsProvider","settingsData","setSettings","useSettings","ContextInjection","AuthenticationProvider","App","basename","RouterUtils","logBuildInfo","metaCollection","metaElements","group","info","el","groupEnd","Boolean","hostname","match","MainStyles","lazy","navigator","serviceWorker","then","registration","unregister","ReactDOM","I18nextProvider","I18n","gateBoolean","boolean","str","date","time","day","month","year","v","parseInt","isNaN","readWidgets","writeWidgets","widget","names","append","obj","writeNames","readNames","check","crossCheckArr","isWrite","HprCacheKeys","HprSettings","PersonList","ids","PersonInstance","PersonListInstance","CompanyList","requestFormDefinition","createRequestFetchFormDefinition","formId","createSuccessFetchFormDefinition","createFailureFetchFormDefinition","createSuccessFetchFormTypes","useConst","initial","setTrue","setFalse","noop","initialAuthContext","loggedIn","sessionCacheKey","loginWithUser","loginWithAnonymousToken","logOut","authentication","useAuthentication","getPersonService","Enpoint","getPersons","getPersonsByRole","getPersonsToDelegate","avainlista","HPR","role","rooli","textInput","lista","meiliosoite","ControlledObservationFormFields","informer","eventTime","details","images","formatAuditCreatedAt","createdAt","moment","format","auditToSearchableText","parts","toValues","makeAuditPdfFileHref","randomId","Math","random","toString","pdfGenerateUrl","makeAnonPermitHref","pdf","production","developmentPdfGenerationUrl","AuditoinnitRouteId","AnonymousAudit","makeFrontPageHref","AuditoinnitFrontPage","makeUnauthorizedHref","makeNewAuditPageHref","baseAudit","InitializeAuditPage","makeEditAuditPageHref","audit","clearLocalEdits","EditAuditPage","makeAuditPageHref","AuditPage","makeAuditsPageHref","AuditsPage","makeMapPageHref","MapPage","Context","useFileUploadContext","FileUploadProvider","useFileUrl","fileId","getFileUrl","getThumbnailUrl","fileUrl","setFileUrl","loadFileUrl","height","width","loadError","reload","createFileUploadService","getFileData","tiedosto","URL","blob","fileData","createObjectURL","getFileInfo","getImageInfo","naytekuva","korkeus","getFileToken","varmenne","uploadFileWithUpload5","file","FormData","removeFileWithId","setToken","getOpts","useFileUploadService","providedToken","setService","AuditListItem","item","auditHref","editAuditHref","unnamed","vertical","removed","EAuditStatus","Draft","marginRight","RenderFormType","formTypeId","FormCategoryIcon","AuditStatusLabel","submitter","statics","EvaluationsSummary","AuditsList","audits","RenderAuditItem","itemId","getTextProps","responsiblePerson","summary","makeTitleColumn","accessor","Cell","original","row","cell","fontWeight","makeStatusColumn","makeLocationColumn","makeResponsiblePersonColumn","makeSummaryColumn","minHeight","createColumns","showColumns","columnProps","columns","TablePagination","activePage","onPageChange","totalPages","ohterProps","onChangePage","newPage","Pagination","ceil","memo","AuditsTableContent","goToPage","table","useTable","getTableProps","getTableBodyProps","headerGroups","prepareRow","rows","Table","fixed","headerGroup","Row","getHeaderGroupProps","HeaderCell","getHeaderProps","Body","i","rowProps","getRowProps","cells","getCellProps","ellipsisItem","firstItem","lastItem","siblingRange","AuditsTable","items","pageChange","RenderAuditPageItems","initialPagination","onPaginationChanged","initialPg","useAuditPage","cache","useSWRCache","resolveItem","AuditoinnitCacheKeys","AuditItemInstance","get","rawData","useAuditsPageItems","RenderAuditPage","AuditListPageDesktopContent","onFiltersChanged","Grid","Column","floated","safetyAudits","placeholder","noResults","AuditListPageMobileContent","filtersVisible","openFilters","closeFilters","Sidebar","Pushable","animation","inverted","onHide","visible","filterAudits","inline","close","fluid","Pusher","paddingLeft","paddingRight","paddingTop","marginTop","textTransform","pg","AuditListPage","textProps","useAuditListFiltersContext","setFilters","setPagination","contentProps","Responsive","RenderAudit","auditGuid","useAudit","RenderFormTypeByGuid","formTypeGuid","useFormTypeList","formTypeList","useFormTypeByGuid","OpenNewEditAuditPageContent","setAuditGuid","useLoading","initializing","initializeError","startLoading","loadSuccess","loadErrored","useFormDefinition","useCategory","initializedAt","setInitializedAt","auditId","setAuditId","getAuditService","useAuditCache","revalidateStaticLists","mutateInstance","updateCache","hprPersonId","dateNow","setHours","setMinutes","setMilliseconds","auditDraft","metaData","participants","makeDefaultAuditTitle","createAudit","useAuditInitialization","go","RedirectAndNotify","OpenNewEditAuditPage","auditInitializationFailed","useParams","baseAuditGuid","FrontPage","PrintAuditPage","AuditoinnitRouting","prefix","routes","exact","requireAuth","component","ObservationPrint","MissingRole","template","routeId","CertStatusColors","Valid","NotValid","ValidationFailed","Expires","certIsExpiring","certIsInvalid","certIsValid","certCouldNotBeValidated","titleText","ERangeError","validateRange","inputTextSeemsCompleteDate","validateInput","InvalidInput","newDate","parse","resetTime","minDate","maxDate","isBefore","MinDateBoundary","isAfter","MaxDateBoundary","InvalidDate","validateDateInput","strict","strictInputTextSeemsCompleteDate","getDateRangeErrorMessage","invalidDate","DATE_FORMAT","validateTimeInput","hour","minute","inputTextSeemsCompleteTime","strictInputTextSeemsCompleteTime","getTimeRangeErrorMessage","maxTime","minTime","invalidTime","TIME_FORMAT","validateDateRange","validateTimeRange","defaultT","translate","addTranslationResource","useSchemaContext","SchemaProvider","mostRecentDesktopPagination","mostRecentMobilePagination","mostRecentFilters","Finished","getAuditCountSearchParams","clearFilters","owner","dateRange","defaultPagination","defaultAuditFilters","itemsToMappedIdList","mapping","parsed","itemsKey","appendUniqueToLodableIdList","lodableList","newIds","defaultContextState","initialContextLoaded","appRoles","appRoleList","appConfigs","defaultCategoryState","defaultFormState","definitions","currentDefinition","formTypesByGuid","defaultLocationState","locations","locationList","facilities","facilityList","areas","areaList","defaultPersonState","defaultObservationListState","defaultObservationState","defaultCategoryPermissionState","permissionsReducer","setCategoryPermissions","permissions","defaultAppRoleState","defaultFormContextState","havainnotReducer","defaultAuthState","defaultMessageState","combineReducers","authReducer","parsedRoles","parsedCategories","parsedByGuid","mappedLoading","loadedList","erroredPersons","parsedObservations","currentPage","mapped","paylod","counters","createSubmitting","createSubmitted","createSubmitErrored","userId","makeProcessFormSkeleton","processingMarkingPublicity","createUnsubmitted","newData","makeObservationSkeleton","isPublic","appRole","messageReducer","appReducer","createRootReducer","effectMiddleware","next","effect","code","store","createLogoutAction","authStorage","clearAuthFromStorage","auth","takeLeading","requestInitializeLogin","saga","guery","anonTokenRegexResult","exec","observationToken","getContext","commonService","authService","call","getPackageWithReadonlySession","loginResponse","put","changeSessionLanguage","createSuccessAnonLoginAction","anonFormRegexResult","formGuid","contextService","getAnonymousForm","anonRegexResult","observationService","activateTokenViaParam","returnHref","apiLanguage","applicationGuid","language","setCookie","expires","sameSite","JSCookies","set","createSuccessGateLoginAction","authCookie","getCookie","storedSid","fetchSessionDetail","returnHrefResult","createFailureLoginAction","createInitializeSaga","requestLogin","username","password","logout","setLanguage","select","selectToken","successAnonLogin","setContext","requestUsersAppRoles","getUserAppRoles","createSuccessFetchUserAppRoles","createFailureFetchUserAppRoles","createGetUsersAppRolesSaga","createSuccessFetchCategories","createSuccessCategoryPermissionAction","getInitialData","categores","createSuccessFetchPersons","e","makeFetchInitialContextSaga","requestObservationCounts","createSuccessFetchObservationCountsAction","createFailureFetchObservationCountsAction","makeFetchObservationCountsSaga","takeLatest","requestObservationListPage","createFailureFetchObservationListPageAction","createAppendToPersonList","createSetObservationPaginationItemsCountAction","createSuccessFetchObservationListPageAction","makeFetchObservationsPageSaga","requestObservationList","createFailureFetchObservationListAction","createSuccessFetchObservationListAction","makeFetchObservationListSaga","getFormDefinition","makeFetchFormDefinitionSaga","personService","requestCreateObservation","_","createSelectFormTypeById","createFailureFetchCreateObservationAction","createSelectFormDefinitionById","observationToSearchableText","personResults","saveResult","packageData","makeObservationPacakge","historyPackage","eventsResult","createSuccessFetchCreateObservationAction","makeFetchCreateObservationSagat","requestObservation","selectApiService","obsService","createSuccessFetchObservationAction","createFailureFetchObservationAction","ClassificationTextMapper","textToValue","classificationProperty","listSeparator","valueToText","requestSaveObservationProcessForm","currentObservation","customFormSchema","selectLoggedInUserId","createFailureFetchSaveObservationProcessFormAction","currentMarkings","newMarking","observationWithNewProcessForm","createSuccessFetchSaveObservationProcessFormAction","makeFetchSaveObservationProcessFormSaga","requestPersonsByProcessorRole","createSuccessFetchPersonsByProcessorRoleAction","createFailureFetchPersonsByProcessorRoleAction","makeFetchProcessorPersonsSaga","takeEvery","requestPersons","createFailureFetchPersons","requestContextLocations","createFailureFetchContextLocations","formContextService","getLocationList","makeFetchFormContextLocationsSaga","requestDelegateObservation","loggedInUserId","delegateOptions","delegateResult","createFailureFetchDelegateObservationAction","createSuccessFetchDelegateObservationAction","getFormContextService","s","storageKey","storage","getAuthFromStorage","setAuthToStorage","removeItem","getSgAuthStorage","sessionStorage","getAuthService","ServiceContext","havainnotApi","getContextService","common","getCommonService","sagaMiddleware","createSagaMiddleware","effectMiddlewares","middlewares","applyMiddleware","__REDUX_DEVTOOLS_EXTENSION__","rootReducer","createStore","compose","havainnotSagas","all","createInitializeLoginSaga","createLogoutSaga","createLoginSaga","createSetLanguageSaga","createAnonLoginSaga","createFetchInitialContextSaga","createUpdateContextDataSaga","createFetchObservationCountsSaga","craeteFetchDelegateObservationSaga","createFetchObservationsSaga","craeteFetchObservationListSaga","createFetchFormDefinitionSaga","createFetchCreateObservationSaga","createFetchObservationSaga","createFetchSaveObservationProcessFormSaga","createFetchProcessorPersonsSaga","createFetchPersonsSaga","createFetchFormContextLocationsSaga","run","createReduxStore","jsonParseError","remove","attributes","useCookie","delete","removeCookie","useSchemaTranslation","SCHEMEA_NS_KEY","globalT","ImageView","noModal","imgProps","isModalOpen","setIsModalOpen","closeModal","alt","onClose","justifyContent","Actions","backgroundColor","LARGE_IMAGE_STYLE","maxHeight","MODAL_CONTENT_STYLE","overflow","LOAD_ERRORED_STYLE","Thumbnail","thumbnailWidth","thumbnailHeight","imageFailed","fileToken","thumbnailUrl","Modal","useHprSettings","getHprSettings","suspense","revalidateOnFocus","revalidateOnMount","isValidating","FormCategoryName","FormTypeName","useFormTypeById","getUiOptions","utils","schemaToRows","getLabel","propertyKeys","propName","propSchema","findVal","object","some","k","staticError","missingProperty","property","selectAuthState","selectLoginStatus","authenticationStatus","selectReturnHref","selectLoggedInUser","selectAnonPackage","anonPackage","selectUsersAppRoles","selectLogoutCounter","logoutCounter","AuthenticationType","AnonToken","useLoginStatus","useAnonPackage","useLoggedInUserRoleRefrences","reference","useUsersAppRoleIdList","usersRoles","useAppRoles","refrence","r","loginStatus","initOptions","resources","translations","finnish","english","lng","fallbackLng","defaultNS","debug","nsSeparator","keySeparator","interpolation","escapeValue","use","initReactI18next","init","useLocalStorage","initialValue","localStorage","getInitialState","storedValue","setStoredValue","valueToStore","AUDIT_FILTERS","AUDIT_PAGINATION","AUDIT_MAP_FILTERS","clearLocalStorage","StatusColors","New","Late","makeAppMessage","messageProps","_uniqueId","messages","messageList","MessageReducer","messageIndex","messageId","slice","lomakemaaritys","workflow","tyonkulku","referenceName","CheckItemId","substr","isAuditCheckANote","checkData","mapAuditingToEvaluations","basePath","evaluations","EEvaluationStatus","NotOkay","Okay","Uknown","useAccordionObjectFieldContext","AccordionObjectFieldProvider","setActive","toggleItem","prevKey","getRequiredEnviromentVariable","variable","getBooleanEnviromentVariable","BASE_URL","siteLogo","kohderekisteri","apiBaseUrl","REACT_APP_COMPANY_NAME","REACT_APP_LOCAL_DEVELOPMENT_PDF_URL","AuditItemMapper","decodedBase64","decodedMetaData","metadata","isAuditStatus","vastuuhenkilo","submittedAt","poistettu","auditToItem","AuditMapper","modifiedAt","calculateEvaluationStatics","resolveEvaluationsData","created","modifier","valuationData","modified","__searchableText","newAuditMapper","getAudit","auditointi","getAuditItem","getAudits","auditoinnit","getMapAudits","getAuditPage","getAuditCounts","makeAuditBody","mapper","extractIdentifiersDTOFromAudit","completeAudit","saveAuditDraft","saveAudit","removeAudit","newEvent","NewAuditHistoryEventMapper","AuditHistoryEventMapper","yritykset","comp","PERSON_WIDGET_LIST","isPersonField","uiProps","auditToPersonIds","auditFormDataToPersonIds","idList","forEachSchemaProp","selectn","ExtraActions","hideEmptyFields","noValue","stringIsEmpty","arrayIsEmpty","emptyObject","prevUiSchema","StaticErrorIfArrayMatches","compareTo","errorText","_intersection","CUSTOM_FORMATS","defaultRenderPersonById","defaultRenderSearchResult","PeoplePicker","clearable","onAddPerson","onSearchPerson","onEditPerson","renderPersonLabel","renderSearchResult","dropdownProps","typeToSeach","addNew","searchError","selected","searching","timeoutRef","query","setQuery","searchResults","setSearchResults","getValidValue","hasValue","selectedCount","loadOptions","_onInputChange","newQuery","inputType","closeResults","_onInputFocus","focus","neutralizedValue","res","selectResult","isSelected","selectPerson","splice","EPredicate","EDefaultRuleActionType","EAdditionalActionType","useHprContext","HprProvider","mockFirstnames","mockSurnames","makeMockPhonenumber","pickRandomItem","list","floor","mockPersonList","fill","firstname","surname","mockFetchPerson","mockPersonSearch","mockHprOptions","fetchPersonById","searchPerson","SignatureWidgetProvider","uploadContext","hprContext","uploadSignature","uploadFile","renderSignatoryName","mockSignatureOptions","mockUploadOptions","renderSignature","noDownloadLink","removeSignatureConfirmationText","signatureCannotBeEmptyText","addNewSignatureText","addSignatureText","clearText","acceptText","FormDataProvider","FormContextMapper","mode","ActionType","composeRules","composedRules","conditions","HideEmptyFields","forEachSchemaProperty","uiProperties","invoke","pathBase","prop","uiProp","require","default","widgetOptions","defaultContextSchema","transformFormData","debouncedChangeHandler","uploadOptions","hprOptions","signatureOptions","uniqueClassName","fieldElement","getElementsByClassName","querySelectorAll","limit","transformErrorsToFinnish","validate","_selectn","dateValue","PickerUtils","valueToDate","_isAfter","addError","validateDateFields","AddButton","labelPosition","getSemanticProps","assign","semantic","cleanClassNames","classNameArr","omit","classList","previous","Set","cn","MaybeWrap","wrap","Component","DescriptionField","HelpField","helpText","flowing","top","right","circular","RawErrors","pointing","defaultProps","prompt","Field","Label","isSupportedWidget","widgetName","getWidget","FieldError","required","FieldTemplate","rawProps","displayLabel","rawErrors","rawHelp","rawDescription","registry","getDefaultRegistry","semanticProps","wrapLabel","wrapContent","errorOptions","widgetOk","Group","widths","grouped","isFixedItems","ArrayFieldTitle","TitleField","idSchema","$id","ArrayFieldDescription","gridStyle","gridTemplateColumns","isInitialArrayItem","DefaultArrayItem","wrapItem","horizontalButtons","verticalAlign","hasToolbar","hasMoveUp","hasMoveDown","hasRemove","tabIndex","readOnly","onReorderClick","onDropIndexClick","DefaultFixedArrayFieldTemplate","canAdd","classNames","onAddClick","itemProps","fieldDescription","p","DefaultNormalArrayFieldTemplate","ArrayFieldTemplate","ErrorList","dividing","isObject","thing","File","HeaderWidget","uiOptions","NullField","CustomField","autofocus","errorSchema","noError","defaultWidget","hasWidget","Widget","help","Fields","ObjectFieldTemplate","Fragment","CheckboxWidget","checked","Checkbox","autoFocus","CheckboxesWidget","enumDisabled","_onChange","option","at","selectValue","deselectValue","_onBlur","_onFocus","inlineOption","itemDisabled","PasswordWidget","RadioWidget","control","Radio","rangeSpec","RangeWidget","asNumber","guessType","nums","processValue","has","every","x","SelectWidget","multiple","dropdownOptions","disabledOptions","_map","createDefaultValueOptionsForDropDown","Select","selection","scrolling","upward","TextareaWidget","TextArea","TextWidget","UpDownWidget","ButtonGroup","enumColors","enumIcons","btnValue","newValue","primary","InputElement","isDragActive","fitted","InputAreaElement","uploadFileByDraggingOrClickHere","FileUploadWidget","horizontal","inputAreaElem","onUploaded","newImages","onRemoved","files","downloadImageByDraggingOrClickHere","ImageUploadWidget","dataURLtoBlob","dataurl","arr","mime","bstr","atob","n","u8arr","Uint8Array","charCodeAt","Blob","SignatureCanvas","signatoryName","onSaveSignature","canvasRef","isEditing","setEditing","isEmpty","setEmpty","signature","setSignature","updateSignature","signatureCanvas","getCanvas","toDataURL","confirm","penColor","canvasProps","clear","SignatureWidget","signatoryPerson","signatoryFieldReference","_select","PersonLabel","loadedPerson","fetchPerson","setPerson","load","PersonPickerWidget","MapLocationWidget","RelatedPermitWidget","permitOptions","setResults","Promise","resolve","perm","toLowerCase","debouncedSearch","onSearchChange","searchQuery","noResultsMessage","AreaSelect","DATE_TIME_FORMAT","TIME_VALUE_FORMAT","DATE_VALUE_FORMAT","TIME_REGEX","DATE_REGEX","catchErrors","separateDateAndTime","RegExp","test","timeInput","parseString","dateInput","formatDateString","formatDate","guessDateFormat","ensureValueFormat","referenceDate","_parse","hours","minutes","dateValueToFormat","schemaFormat","valueAsDate","inputTextToDate","inputText","overwriteDatePartOfDate","setDate","getDate","setMonth","getMonth","setFullYear","getFullYear","overwriteTimePartOfDate","getHours","getMinutes","getMilliseconds","setSeconds","roundToNearestHour","hourRoundingValue","isValidDate","ensureFreshDateInstance","inputDate","getDefaultDateValue","defaultTime","_isBefore","_add","days","getDefaultDateRangeValues","start","startDate","end","valueFormat","dateAsDate","timeAsDate","PickerValidator","getRangeErrorMessage","Time","DateInput","dateFormat","errorMessage","inputRef","inputError","setInputError","setOpen","updateInput","Validator","rangeError","zIndex","TimeList","onSelect","listRef","selectedItemRef","itemEl","findDOMNode","selectedEL","scrollTop","offsetTop","_onClick","celled","padStart","timeToOptions","num","hourOptions","minutesOptions","HourMinuteSelect","minHour","minMinute","maxHour","maxMinute","isMinHour","parseFloat","isMaxHour","optionsHour","optionsMinute","TimeInput","DateTimePicker","autoSelectTime","defaultValueBase","pastDateWarning","cannotBeInThePast","hideTimePicker","hideDatePicker","minDateAsDate","maxDateAsDate","minDateIsOnSameDay","isSameDay","maxDateIsOnSameDay","dateIsInPast","isPast","processedValue","parsedValue","timeValue","getDefaultTime","newTime","DateTimeWidget","defaultDateNow","defaultTimeType","maxDateNow","minDateNow","oneOfValidFormats","DateRangeWidget","uknownValue","uknownOnChange","startsOptions","endsOptions","starts","ends","getValue","getMaxMinOptions","defaultRangeOptions","minStartsDate","maxStartsDate","minEndsDate","maxEndsDate","renderPicker","FieldHeader","requiredProps","semanticHeader","DateRangePicker","__errors","PermitValidityWidget","Widgets","defaulyWidgets","Theme","tagName","SuiForm","liveValidate","MaybeWrapComponent","bulleted","root","yes","no","checkedOptions","selectedOption","opacity","hasSelected","StringField","suiImageGroup","ButtonGroupWidget","valueText","DateRangeDisplay","isSameDate","_isSameDay","timeFormat","startH","endH","startD","endD","_widgetOptions","semnanticUiReadTheme","semnanticUiWriteTheme","defaultActionTypes","getSchemaActionTypes","onlyExtraActions","rule","eventTypes","DisplayView","DefaultContextSchema","configurations","getForm","neutralizedAxtraActions","actionTypes","skipActions","baseActions","noHtml5Validate","transformHeaderErrors","paths","FormView","customTransformErrors","customTransformFormData","customValidation","hasErrors","setHasErrors","SemanticUIForm","useNotification","toast","FileUploadBtn","accept","Elem","wrapElement","LoaderElement","loaderElement","ListWrapperElement","listWrapperElement","uploadedFiles","fileObjs","setFiles","setLoading","setLoaded","createUploadableFile","Uploading","updateFileObj","newProps","prevFiles","fileObj","handleSingleUpload","newFile","reject","uploadResult","Done","UploadError","handleSingleRemove","timeout","newFiles","createLoadedFile","useDropzone","onDropAccepted","acceptedFiles","requests","uploaded","getRootProps","getInputProps","onRemove","GateUser","certList","getPerson","personData","refreshWhenHidden","ensureBoolean","uknown","AppParameterMapper","auditoinnit_sahkoposti_tuki","sahkoposti_tuki","auditoinnit_sms_tuki","sms_tuki","auditoinnit_kartta_tuki","kartta_tuki","auditoinnit_yritysen_nimi","yritysen_nimi","yrityksen_nimi","auditoinnit_yrityksen_osoite","yrityksen_osoite","auditoinnit_kehitysvalikko","kehitysvalikko","auditoinnit_nayta_sovellusvirhe_viestit","nayta_sovellusvirhe_viestit","auditoinnit_testiympariston_tausta","testiympariston_tausta","auditoinnit_kielet","kielet","auditoinnit_nayta_kieli_valikko","nayta_kieli_valikko","auditoinnit_nayta_yhteenveto","auditoinnit_sovellusvalikko_linkki","sovellusvalikko_linkki","AppConfigurationMapper","CommonAppConfigurationMapper","yhteenveto","kaannokset","ensureArray","roolit","RoleMapper","appParamters","parametrit","formDefinitionId","FormDefinitionMapper","getFormType","timeSeparator","valueArr","GATE_EMPTY_PROP","emptyPropertiesToGateEmptyProperties","versio","EObservationPackageVersio","v1","useMakeObservationPackage","makePackage","createShowNewMessageAction","createHideMessageAction","FileView","useFileToken","shortTitle","Upload6","compact","Line","usePersonCache","appendPersons","mutate","mutatePerson","appendListPersons","CompanyNameById","personCert","timeLimited","valid","getCertStatus","personCerts","ErrorBoundary","hasError","prevProps","clearWhenChanges","setState","logInfo","useInitialContext","ikoni","permissionLevelToDomain","OnlyPublic","Always","Never","roleId","lisays","edit","muokkaus","luku","freeze","KEY_BASE","TilannekuvaCacheKeys","MaptilerTilesetInstance","MapresourceInstance","TargetingSchemeInstance","MapList","AccordionItem","onToggle","Accordion","Title","RenderAccordion","AccordionItemObjectField","propertyWrapper","segmentProps","isRoot","PropertyWrapper","observationForm","accordionKey","erroredElement","element","styled","descirption","accordion","calculateEvaluationStatus","float","useCompanyList","useCompany","NEW_OBSERVATION_EDITS","transformObservationSchema","schemas","candidate","ilmottaja","CounterContent","clicked","setClicked","WorklistPage","ObservationCounters","whosOptions","roleList","currentWhose","countFilters","createRequestFetchObservationCountsAction","handleItemClick","observationCounts","visibleCounts","setVisibleCounts","counts","MemoizedObservationCounters","FormListModal","modalProps","useFormTypeListByCategoryId","formListHeader","Subheader","Link","Placeholder","FormCategoryMenuItem","stopPropagation","selectPermissionState","selectCategoryPermissions","useCategoryPermission","roleIds","categoryPerms","getMaxPermission","maxPerm","_maxBy","MinimumCategoryPermission","minimumPermission","permissionType","FormCategoryMenu","activeCategory","setActiveCategory","handleMenuItemClick","activeCategoryData","chunks","_chunk","closeIcon","dimmer","headerText","createNewObservationText","MemoizedFrontPage","FrontPageContainer","selectAppRoleState","selectAppRolesById","selectAppRoleList","selectAppRoles","listLoader","useUserCanViewNames","activeRoles","permissionsForCategory","showNameDetail","WorkListItem","showCreator","showId","routeLinkParam","labelColor","Card","ObservationPage","attached","backgroundImage","WorkListContainer","workList","showUniqueObservationId","WorkListPagination","onPageChangeWrapper","boundaryRange","noResultText","failedText","listIsEmpty","createClearObservationDeleagtionAction","createClearObservationProcessForm","createClearCreateObservationAction","AppMessage","WorkListFilters","WorkList","MemoizedWorklistPage","WorklistPageContainer","SchemaForm","canViewNames","dirtyAfterPageLoad","setDirtyAfterPageLoad","addResourceBundle","allowChangingProcessingMarkingPublicity","formContextData","apiToken","jsonSchema","ObservationForm","userRequired","canCancel","goBack","saveButtonText","cancelButtonText","submitSuccessText","submitSuccessLongText","submitErrorText","formLoadErrorText","useFormDefinitionById","skipInformerAutofillForRoles","skipAutofillForRoles","createInitializeNewObservatioFormAction","formSubmitted","isSubmitted","isSubmitErrored","createNewObservationFormDataUpdateAction","createRequestFetchCreateObservationAction","isSubmitting","getState","StorageKey","replaceState","appMessage","MemoizedNewObservationPage","NewObservationPageContainer","ObservationDetail","onlyStaticData","hiddenDivider","public","notPublic","currentHandler","statusLabelText","useTranslatedStatus","SchemaDisplay","displaySchema","newSchema","transformSchemaForDisplay","laaja_sijainti","DelegateProcessingModal","personOptions","setPersonOptions","handleSearch","debouncedSeach","handleInputChange","loadingState","createReloading","selectedPerson","setSelected","toggleModal","isReloading","warning","createRequestDelegateObservationAction","RenderFormDefinition","validateSchema","getFormDefinitionCorrected","raw","cacheKey","schemaOk","ProcessingFormContent","isOnEditing","latestMarking","customFormSchemaOk","processingMarkingPublicityDefaultValue","createInitializeObservatioProcessFormAction","openProcessForm","handleGoBack","createObservationProcessFormDataUpdateAction","createRequestFetchSaveObservationProcessFormAction","renderSchemaForm","defaultProcessingJSONSchema","ProcessingForm","processingFormDefinition","replaceErrors","getOwnPropertyNames","ErrorMessage","hideErrorMessage","showErrorMessage","isRawErrorVisible","setRawErrorVisible","overflowX","ProcessingDetail","userIsEditor","handlerMarkings","sender","forwarded","classification","statusTexts","getTranslatedStatusTexts","publicityStatus","renderMarking","lisatiedot","kuvat","All","Last","ObservationPackageDetailsContent","ObservationPackageDetails","packageResult","permitPackage","validateObservationPackage","revalidateOnReconnect","useHistoryPackage","OriginalModal","originalObservation","ObservationHistoryModal","events","modalHeader","closeEvent","showDetails","eventsContainingPackage","overflowY","relaxed","ObservationEditedDetailContent","latestEvent","firstEvent","hasEdits","edited","showOriginal","editHistory","ObservationEditedDetail","permitId","refreshInterval","useObservationHistory","RenderPermissionForCategory","permissionLevel","permissionGranted","AnonymousObservationPopup","popupProps","setPackageId","openPopup","closePopup","observationPackage","worklistButtonText","loadErrorText","authErrorText","editObservationText","showDevelopmentLinks","allowEditingObservation","displayFromData","editorPermission","EditObservationPage","MemoizedObservationPage","ObservationPageContainer","OpenObservationPage","setObservationId","getObservationId","getDataPackage","MemoizedOpenObservationPage","logoHref","ObservationPrintPage","MemoizedObservationPrintPage","ObservationPrintPageContainer","AnonymousObservationPage","MemoizedAnonymousObservationPage","AnonymousObservationPageContainer","setFormTypeId","useSaveObservation","saving","saveError","saveHistoryPackage","useSaveHistoryPackage","savedAt","setSavedAt","savePacakge","dataPackage","save","updatedObservation","personResult","historyEvents","initialEvent","ObservationEditing","onCancel","categorySlashForm","startSubmit","invokeSubmit","editedObservation","setEditedObservation","formTypeOptions","completeButton","click","MemoizedEditObservationPage","EditObservationPageContainer","HavainnotRouting","HavainnotFrontPage","AnonymousNewObservation","btoa","encodeURIComponent","p1","fromCharCode","decoded","decodeURIComponent","prototype","c","initializeNewObservationForm","companyList","nayta_nimitiedot","havainnot_logo_url","logo_url","havainnot_sahkoposti_tuki","havainnot_sms_tuki","havainnot_kartta_tuki","havainnot_yritysen_nimi","havainnot_yrityksen_osoite","havainnot_kehitysvalikko","havainnot_nayta_sovellusvirhe_viestit","havainnot_asiakasympariston_vaihto_valikko","asiakasympariston_vaihto_valikko","havainnot_testiympariston_tausta","hideEmptyFieldsFromObservationDetails","havainnot_piilota_tyhjat_kentant_havainnon_tiedoista","havainnot_havainnot_oletuksena_julkisia","havainnot_salli_havaintojen_muokkaus","havainnot_kasittelymerkintojen_julkisuus_valittavissa","havainnot_kasittelymerkintojen_julkisuus_oletusarvo","archiveLimit","havainnot_arkistointiraja","havainnot_kielet","havainnot_nayta_kieli_valikko","gateDirectUrl","gate_direct_url","havainnot_sovellusvalikko_linkki","sallittu","oletukset","julkisuus","arkistointi_suodatin","nayta_yksiloiva_tunniste","kasittelymerkinnat","valittavissa","esitys","kentat","tyhjat","piilotus","FormDefinitionMapperCorrected","formDefinitionGuid","etunimi","sukunimi","err","RenderMaptilerTileset","tilesetUrl","mapresourceUrl","endsWith","tileset","tileUrl","mapresource","useMaptilerTileset","getNumberAttribute","attr","getAttribute","parseMapresourceXML","xmlData","xmlDoc","DOMParser","parseFromString","tileFormatEl","tileSetsEl","layersElList","childNodes","layerList","unitsPerPixel","originEl","boundingBoxEl","tileFormat","extension","tileSet","profile","layers","y","boundingBox","minY","maxY","maxX","minX","RenderMapresource","textData","useMapresource","RasterMap","mapProps","mapElement","abs","Map","doubleClickZoom","mapComponent","leafletElement","onclick","L","RasterCoords","RasterLayer","layerProps","minZoom","maxZoom","TileLayer","noWrap","FullscreenControl","fullscreen","MapControl","withLeaflet","Geolocate","leaflet","locate","Locate","MapAdapter","nextTilesetUrl","defaultPosition","attribution","locateControl","controls","failedToLoadMap","failedToLoadMapresource","parsedPosition","parseMapLocation","defaultZoom","zoom","defaultCenter","center","isReady","setReady","clearReady","setTilesetUrl","waiting","setWaiting","tilesetUpdate","renderControls","ZoomControl","whenReady","zoomControl","attributionControl","iconLoading","iconElementTag","flyTo","onLocationError","MapAuditingCheckDetail","imageId","MapAuditingCheckForm","setFormData","missingRequiredProperties","setMissingRequiredProperties","updateFormData","updateStatus","renderCheckButton","ImageUpload","img","Colors","MapAuditingMarker","checkItem","interactive","popupOpen","setPopupOpen","popupEl","_close","_container","Circle","coordinates","radius","weight","dashArray","fillOpacity","closeOnClick","useApplyParameters","apllyParameters","parameters","rsc","addResources","yritys","katuosoite","sahkopostit","aktivoitu","tekstiviestit","kartat","virheviestit","testi","taustakuva","kielivalikko","emptyContext","InitialData","useFieldErrors","useTexts","trans","addNote","removeNote","setNotes","setNote","noteContext","AuditNoteProvider","onNotesChanged","prevNotes","noteId","nextNotes","storedFilters","AuditCounts","revalidatePage","recieveItems","mutateItemInstance","AuditInstance","clearInstance","henkilo","gate","hpr","initials","nimikirjaimet","puhelin","kieli","gateId","yleinenId","apiServices","addTokenToServices","activateReturnToken","returnToken","activateToken","isReturn","palautustoken","gateResponse","UserMapper","paluuosoite","api2","regexResult","pushState","endSession","TestEnviromentUtils","lahettaja","oletus","osoite","patevyydet","syota_alkupaiva","useFormType","i18nInstance","instance","NoteID","getUTCMilliseconds","FormCategoryIconContent","failed","selectContextState","selectInitialContextLoaded","useInitialContextLoaded","selectAppConfgis","useLoadAppParameters","configParams","activated","cleanData","_pickBy","loaded","paramsData","RouteErrorBoundaryComponent","toggleErrorMessage","errorMessageVisible","rawErrorMessage","whiteSpace","RouteErrorBoundary","withTranslation","setFn","setLoadError","listener","contains","addEventListener","removeEventListener","useIsMount","isMountRef","RenderPdfData","dataUrl","setDataUrl","loadData","xhr","XMLHttpRequest","responseType","onload","onerror","send","ApiDBRecordMapper","deleted","endpointSymbol","createEndpointMaker","baseUrlTrimmed","removeSlashes","startWithSlash","endsWithSlash","useCommonLoggedInUser","useObservationContext","getContextData","ObservationContext","almostJson","mapId","tk","z","encodeMapLocation","useEditableNotes","noteIds","updateNote","noteData","useAuditMetaContext","AuditMetaProvider","extractObservationIdentifiersDTO","extractObservationIdentifiers","createObservations","dto","__noteId","getFormDefinitionByReference","lomakeId","TargetingSchemeMapper","targetingData","kartta","targeting","useTargetingScheme","targetingScheme","kohdistusskema","MapMapper","divProps","hasDraftStatus","LABEL_STYLE","fontSize","variableName","useCommonAuthContext","CommonAuthenticationProvider","STRICT_TIME_REGEX","dateDataToDate","inputToDate","qs","objectFieldTemplates","ObjectFieldTemplates","useCategories","totalChecks","renderStatic","rawPercentage","percentage","round","MapAuditingListItem","itemData","showModal","hideModal","positionStr","mapTrigger","scrollWheelZoom","dragging","MapAuditingDisplayField","mapReference","titleType","Tilannekuva","renderListItem","MapAuditingField","scheme","MapAuditing","onAddNewCheck","onSetCheck","onRemoveCheck","nextFormData","useUserAppRoles","roleLoadError","fetchingRoles","pageData","mounting","minimumSearchQueryLength","RenderConfigurations","LoadParameters","makeEndpoint","Auth","Kohteet","Yleiset","Kartta","CommonRouteId","CommonRouting","CommonFrontPage","LoginExpiredPage","PageNotFoundPage","AuthenticatedRoute","prevPath","modules","TyoluvatRounting","DokumentitRouting","appRoutes","module","modulePrefix","route","withPathPrefix","getRouteHref","paramNames","routeTemplate","hrefTemplate","paramName","RouteSwitch","modulePrefixes","routeGroups","_groupBy","startsWith","Template","pathPrefix","routeProps","kasittelylomakemaaritys","uploadService","preview","getter","ImageListItem","Removing","ListWrapper","ImageInput","onUploadedCallback","fileService","getCompanies","companiesData","Boundary","createRequestInitializeLoginAction","createRequestFetchUserAppRoles","createSetUserAppRolesAction","EVALUATION_WIDGET_LIST","isEvaluationField","additionalProperties","fillUnfilledFields","unfilledFields","filledValue","setToValue","getUnfilledFields","mapAuditingValue","mappedChecks","NoteFormInfo","auditFormType","ControlledFields","ObservationFormCategoryIconContent","cetegory","ObservationFormCategoryIcon","RenderObservationFormDefinition","formReference","useObservationFormDefinition","submit","submitButton","modifiedSchema","DefaultNoteForm","EditableAuditNoteFormContent","observationFormDefinition","observationFormType","onUpdateFormData","hasRelatedObservation","makeObservation","defaultNoteSchema","sendToObservationApp","cantEditObservationDescription","makeItAsObservationDescription","EditableAuditNoteForm","relatedObservation","cancel","failedToFetchObservationForm","failedToFetchForm","submitNote","observationSchema","EditableAuditNoteModal","initialNote","observationFormTypeId","submitStatus","modal","unsubmitted","parent","createPortal","NotifyByIcon","notifyBy","notificationsByPhone","notificationsByEmail","unableToSendNotifications","PersonSearchListItem","onUnselect","certValidator","certStatus","justifySelf","PersonSearchMenuContent","onResultSelect","showNotifyBy","PersonSearch","editPersonsDetail","searchPersonByText","useSearchPerson","searchInput","setSearchInput","debouncedSetquery","validatePersonCerts","usePersonCertValidator","singleSelectedPerson","singleSelectedPersonCertStatus","reverse","dedupingInterval","resultsWithoutSelected","AccordionObjectField","EvaluationField","EvaluationObjectTemplate","propertiesWithValue","isEmptyValue","hideUknownEvaluationChecks","headerProps","evaluation","EvaluationChecksField","mapAuditing","accordionItem","NoteSubmitStatus","sending","sended","sendError","AuditNoteMapper","domainToFormData","tapahtuma_aika","editableNoteToMetaData","NoteAccordionItem","onTitleClick","onUpdate","confirmDeletion","showConfirmDeletion","hideConfirmDeletion","editNote","showEditModal","closeEditModal","auditMetaData","deleteNoteConfirmation","safetyObservation","auditNote","Confirm","onConfirm","confirmButton","cancelButton","activeIndex","setActiveItem","renderAccordionItem","prevIndex","validatePermitPackageContent","uknownData","EvaluationCheck","onItemClick","enumValue","ControlledField","useInitialNoteData","failedToOpenForm","modalOpen","openModal","TESTING_BACKGROUND_CLASS","addTestingBackground","add","setProperty","removeTestingBackground","AuditMap","MakeAuditPackageInstance","AuditPackageDataInstance","AppRoles","FormDefinitionInstance","ObservationFormDefinitionInstance","createRequestFetchObservationListAction","updatedFilters","pdfUrl","GENERATED","PdfGenerate","makePdfEndpoint","EAuditEventType","notify","DefaultSelectPlaceholder","selectProps","RenderFormTypes","FormTypeSelectBase","FormTypeSelect","AuditStatusSelect","draft","finished","AuditFiltersForm","labels","hideStatusFilter","hideFreetextFilter","LocationFilter","partial","iconPosition","valueToPickerValue","PERMITS_FILTERS","COMMON_AUTH_COOKIE","PERMIT_PAGINATION","PERMIT_LIST_PAGE_SIZE","ARCHIVE_PAGE_SIZE","PERMIT_EDITS","PERMIT_TASK_EDITS","DokumentitRouteId","PermitPageRouter","PermitsListPage","PermitArchivePage","EditPermitPage","InitializePermitPage","CopyPermitPage","NewPermitPage","PermitCreatedPage","PermitPrintPage","AnonymousPermitPage","AnonymousPermitApprovalPage","makeRelativeTyoluvatPath","getTyoluvatPathContext","pathParts","appPrefixIndex","tenantReference","appPrefix","configurationReference","ListPage","ArchivePage","DocumentPage","PermitEventLog","PermitEventPage","PermitStatusChangePage","PermitTaskPage","PermitTaskFormPage","PermitTasksPage","PermitPrint","AnonymousPermit","TyoluvatPageNotFoundPage","EmailAttachmentMapper","attachmentToApi","filename","base64sisalto","attachmentsToApi","fileUrlToAttachment","loadFileUrlToBase64data","attachemnt","sendEmail","address","sanomapohja","tunniste","templateKey","korvaukset","templateVariables","liitetiedostot","attachments","sendMultipleEmail","vastaanottajat","recievers","sendSms","numero","number","sendMultipleSms","saveDataPackage","getApiTranslations","tekstit","alkuperainen","kaannos","TyoluvatRouteId","TyoluvatRouting","TyoluvatFrontPage","PermitMapPage","PermitPage","truncateLength","_truncate","FileIndicator","ItemIcon","complete","RemoveError","FileInput","queryLang","otherParams","nextHref","EAction","initialState","apiLang","reducer","InitializationStarted","InitializationComplete","StartLogin","loginError","SuccessLogin","FailureLogin","AnonymousLogin","Logout","ChangeLanguage","useReducer","AUTH_COOKIE_KEY","secure","change","FailureChangeLanguage","TyoluvatStorage","AuditoinnitStorage","HavainnotStorage","handleLoginResult","loginWithToken","loginWithCookie","tokenResult","loginWithUrlParam","defaultApp","INITIAL_FILTERS","INITIAL_PAGINATION","AuditListFiltersProvider","prevFilters","useOnlineStatus","onLine","onlineStatus","setOnlineStatus","goOnline","goOffline","DefaultInputElement","dragImageHereOrClick","prevValue","mockDefinition","auditData","blobData","FileReader","readAsDataURL","onloadend","fromHtmlEntities","he","decode","EvaluationDisplayField","EvaluationDisplayObjectTemplate","DraggableCircle","renderContent","markerProps","useLeaflet","handleDragend","latlng","_latlng","lat","eventToLatlng","delayedOnChange","onDragend","onMousedown","disable","setLatLng","enable","draggable","autoPan","removeMarker","newMarkerCenter","setNewMarkerCenter","viewport","setViewport","clearNewMarker","layer","renderCheckItem","onViewportChanged","nextViewport","LatLng","refreshWhenOffline","useAuditItem","selectFormContextState","selectFormTypesByIdState","selectFormTypesByGuidState","selectFormTypesIdList","selectFormTypeList","createSelectFormTypeByGuid","selectFromDefinitionByIdState","selectCurrentFormDefiniton","isGuid","typeList","selectedId","sleep","ms","defaultOptions","removeFile","getImageUrl","createRequestFetchPersonsByProcessorRoleAction","makeLabel","empty","makeOption","useStatusFilterOptions","inProgess","useCategoryOptions","freeTextResetKey","setFreeTextResetKey","statusFilterChange","isAllSelected","creatorFilterChange","categoryFilterChange","debouncedUpdate","searchVisible","setSearchVisible","extendedSearchVisible","setExtendedSearchVisible","statusOptions","categoryOptions","button","queryLength","prevQueryLength","locale","Validate","localization","marked","oletussijainti","propertyWrapperProps","wrapperClassName","objectTemplate","CustomTemplate","BaseInput","inputProps","semanticOptions","schemaRequiresTrueValue","const","anyOf","oneOf","allOf","TextAreaWidget","multiline","referenceValue","DatePickerWidget","FileUpload6","isRow","hasText","untouchedStart","startsOnSubmission","updateStartsOnSubmission","nextValue","defaultRange","defaultEndValue","untouchedEnd","positive","InstructionWidget","instruction","linkHref","datePicker","DatePicker","fileUpload","imageUpload","ImageUpload6","checkboxes","Checkboxes","checkbox","radio","textarea","Textarea","dropdown","optionsAreValid","translatedOptions","selectOnBlur","toggleList","shouldTranslate","negate","subSchema","ensureValues","ensured","checkboxClicked","toggle","showAsCheckbox","buttonGroup","isDisabled","TextAreaDisplay","RadioDisplay","DatePickerDisplay","FileUpload6Display","ImageUpload6Display","SelectDisplay","TimeRangeDisplay","DateRangePickerDisplay","getDateValue","endDate","emptyField","InstructionDisplay","valueOption","validValues","trueValues","usePersonForm","fieldErrors","setErrors","prevData","certsData","certErrors","startsAt","endsAt","startsAtDate","endsAtDate","useCompanyForm","CompanyForm","useCreateCompanyHook","creating","createError","revalidateList","useCompanyCache","setCreatedAt","setCompanyId","createCompany","AddCompanyModal","addCompany","_onSubmit","CREATE_COMPANY","CompanySelect","selectCompany","creatingModal","showAddCompany","hideAddCompany","PersonCertForm","cardImage","indentifier","timelimited","autoComplete","hideMobileKeyboard","closable","defaultChecked","RenderCert","PersonForm","disabledPersonalDetail","formError","addImage","notificationByEmail","emailNotificationInfo","notificationByEmailOrSms","emailOrSmsNotificationInfo","permitsRequiredForWork","missingConfigurationForCert","makeInputChange","personCertData","personCertFormData","updateCert","AddPersonModal","setPersonId","savePerson","useCreatePerson","EditPersonModal","cannotEditUserInfo","updating","updateError","updatedAt","setUpdatedAt","useUpdatePerson","anotherAppUser","loggedAt","PersonPicker","showAddPerson","hideAddPerson","personOnEdit","setPersonOnEdit","useOfflineCache","keyBase","keyList","setKeyList","resolveKey","entries","useOfflineStorage","networkStatus","setOnline","defaultData","offlineCache","OfflineCacheProvider","selectMessageState","selectMessagesByIdState","useMessageById","createSelectMessageById","handleDismiss","onDismiss","PersonCertMapper","alkaa","paattyy","korttikuva","voimassa","vanhenee","ilmoitustapa","patevyys","gate_tunniste","kirjautumisaika"],"mappings":"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","file":"static/js/main.380c8f8e.chunk.js","sourcesContent":["\nimport _padStart from \"lodash/padStart\"\nimport { gateNonstandardDateToDate } from \"../../../sg-core\";\nimport _format from \"date-fns/format\";\nimport IObservation, { EObservationStatus, EProcessingMarkingPublicity } from \"../interfaces/IObservation\";\nimport { getRouteHrefById } from \"../../../routing\";\nimport { HavainnotRouteId } from \"../../routes\";\nimport { LocationDescriptorObject } from \"history\";\nimport IFormDefinition from \"../interfaces/IFormDefinition\";\nimport IFormType from \"../interfaces/IFormType\";\nimport { IFormSchema } from \"@/@auditoinnit/auditoinnit/interfaces/IFormSchema\";\n\n/**\n * Creates readable version of entity id\n * @param id \n */\nexport const formatIdLabel = (id: number): string => {\n return \"#\" + _padStart((\"\" + id), 2, \"0\");\n}\n\n\nexport const validateProcessingSchema = (formSchema: IFormSchema): boolean => {\n const properties = formSchema.schema.properties || {};\n\n\n // Check is public property\n if (properties.on_julkinen) {\n if (!(properties.on_julkinen instanceof Object)) {\n return false\n };\n if (properties.on_julkinen.type !== \"boolean\") {\n console.warn(\"[validateProcessingSchema]: found invalid type for on_julkinen, should be 'boolean' \")\n return false;\n };\n };\n\n // Check processing marking publicity property\n if (properties.kasittelymerkintojen_julkisuus) {\n if (!(properties.kasittelymerkintojen_julkisuus instanceof Object)) {\n return false\n };\n const enumOptions = properties.kasittelymerkintojen_julkisuus.enum || [];\n const knownEnums = Object.values(EProcessingMarkingPublicity);\n const uknwownEnums = enumOptions.find((opt) => !knownEnums.includes(opt as any));\n if (uknwownEnums && enumOptions) {\n console.warn(\"[validateProcessingSchema]: found uknown enum for kasittelymerkintojen_julkisuus '\" + uknwownEnums + \"'\")\n return false\n };\n };\n\n // Check status property\n if (properties.tila) {\n if (!(properties.tila instanceof Object)) {\n return false\n };\n const enumOptions = properties.tila.enum || [];\n const knownEnums = Object.values(EObservationStatus);\n const uknwownEnums = enumOptions.find((opt) => !knownEnums.includes(opt as any));\n if (enumOptions && uknwownEnums) {\n console.warn(\"[validateProcessingSchema]: found uknown enum for tila '\" + uknwownEnums + \"'\")\n return false\n };\n };\n\n\n return true\n}\n\nexport const getReadableTimestamp = (rawTimestamp: Date | null | string): string => {\n let timestamp = rawTimestamp;\n\n if (typeof rawTimestamp === \"string\") {\n timestamp = gateNonstandardDateToDate(rawTimestamp)\n }\n\n return timestamp ? _format(timestamp as Date, \"dd.MM.yyyy HH:mm\") : \"\"\n}\n\n\n\nexport const getLatestProcessingMarking = (observation: IObservation) => {\n const markings = observation.formData.merkinnat;\n\n const latestToOldest = markings?.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());\n const latestMarking = latestToOldest ? latestToOldest[0] : undefined\n return latestMarking\n}\n\nexport const getProcessingMarkingPublicityStatus = (observation: IObservation) => {\n const markings = observation.formData.merkinnat;\n\n const latestToOldest = markings?.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());\n const latestMarking = latestToOldest ? latestToOldest[0] : undefined\n return latestMarking?.formData.kasittelymerkintojen_julkisuus;\n};\n\n\nexport const makeAnonObservationHref = (packageId: any, printLanguage: any): string => {\n const baseUrl = window.location.origin;\n return `${baseUrl}${process.env.publicUrl || \"\"}${getRouteHrefById(HavainnotRouteId.AnonymousObservation, { package: packageId })}?lang=${printLanguage}`\n};\n\n\n\n\nexport const makeNewObservationPageHref = (formDefinition: IFormDefinition[\"id\"], formType: IFormType[\"guid\"]): LocationDescriptorObject => {\n return {\n pathname: getRouteHrefById(HavainnotRouteId.NewObservationPage, { formDefinition, formType }),\n state: { clearStorage: true }\n }\n};\n","\n\n\nexport enum EAppLanguages {\n FI = \"fi\",\n EN = \"en\"\n};\n\nexport type TDefaultAppLanguage = EAppLanguages.FI;\n\nexport const langToAppLanguage = (rawLang: string) => {\n switch (rawLang) {\n case \"fi\":\n return EAppLanguages.FI;\n case \"en\":\n return EAppLanguages.EN;\n case \"us\":\n return EAppLanguages.EN;\n }\n return EAppLanguages.FI;\n}\n\n\nexport type TTranslations = {\n [key in EAppLanguages]: {\n translations: TBase // T[TDefaultAppLanguage][\"translation\"]\n }\n};\n","import { gateBooleanToBoolean } from \"@/sg-core\"\n\nexport enum ECertStatus {\n Valid = 'valid',\n Expires = 'expires',\n NotValid = 'not_valid',\n ValidationFailed = 'validation_failed'\n};\n\n\nexport interface ICert {\n id: number;\n name: string;\n refrenceName: string;\n isTimeLimited: boolean;\n};\n\nexport interface ICertDTO {\n id: number;\n nimi: string;\n viitenimi: string;\n maara_aikainen?: string | \"Y\" | \"N\";\n};\n\n\nexport const CertMapper = {\n apiToDomain: (api: ICertDTO): ICert => {\n return ({\n id: api.id,\n name: api.nimi,\n refrenceName: api.viitenimi,\n isTimeLimited: api.maara_aikainen ? gateBooleanToBoolean(api.maara_aikainen) : false,\n })\n }\n}\n\n","export interface IFile {\n id: string;\n filename?: string;\n type?: string;\n}\n\nexport interface ILoadingFile {\n filename: string;\n type: string;\n preview: string;\n}\n\nexport enum EUploadStatus {\n UnUploaded = \"Tallentamaton\",\n Uploading = \"Tallennetaan\",\n Done = \"Tallennettu\",\n Removing = \"Poistetaan\",\n UploadError = \"Epäonnistui\",\n RemoveError = \"Epäonnistui\"\n}\n\nexport interface IFileObj {\n id: string;\n name?: string;\n guid?: string\n file?: File;\n info?: any\n preview?: string;\n status: EUploadStatus\n\n}\n","import { UiSchema } from '@rjsf/core';\nimport { JSONSchema } from './RJSF';\n\n/**\n * Adds context properties to schema, for use in rule conditions.\n * FormField component will hide context field based on idSchema (\"root_context\").\n */\nexport const applyContext = (contextSchema: JSONSchema | {}, schema: JSONSchema, uiSchema: UiSchema = {}) => {\n return {\n schema: {\n ...schema,\n properties: {\n ...schema.properties,\n context: contextSchema\n }\n },\n uiSchema\n }\n}\n\n/**\n * Drops context from formData\n * @param prevFormData \n */\nexport const removeContextData = (formData: any) => {\n let newFormData = { ...formData }\n delete newFormData.context\n return newFormData\n}\n","/**\n * Set ui schema property with value form reference field\n * @param {String} params.field -\n * @param {String} params.dataField - source of data \n * @param {String} params.uiProperty - proprty wich value is set\n */\nexport const uiSetWith = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { field, dataField, uiProperty } = params\n const [firstUi, secondUi] = field.split(\".\")\n const [firstData, secondData] = dataField.split(\".\")\n const data = secondData ? formData[firstData][secondData] : formData[dataField]\n if (!uiSchema[firstUi]) return\n\n if (secondUi) {\n uiSchema[firstUi][secondUi][uiProperty] = data\n } else {\n uiSchema[field][uiProperty] = data\n\n }\n\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n uiSetWith.propTypes = {\n field: PropTypes.string,\n dataField: PropTypes.string,\n uiProperty: PropTypes.string\n };\n\n}","\nimport { makeReadonly } from './makeReadonly'\nimport { newOrder } from './newOrder'\nimport { setValue } from './setValue'\nimport { uiSetWith } from './uiSetWith'\n\nimport { overwriteWithCopyOfItem } from './overwriteWithCopyOfItem'\n\nexport default {\n readonly: makeReadonly,\n order: newOrder,\n setValue: setValue,\n copyItemTo: overwriteWithCopyOfItem,\n uiSetWith,\n\n}","/**\n * Takes multiple fields, and makes them readonly.\n * @param {String} params.field - This field's data you want to make readonly\n */\nexport const makeReadonly = function (params: any, schema: any, uiSchema: any, formData: any) {\n\n var fields = params.field || [];\n\n if (Array.isArray(params.field) && params.field.length) {\n fields.forEach((field: string) => {\n uiSchema[field] = {\n ...(uiSchema[field] || {}),\n \"ui:readonly\": true\n }\n })\n } else if (params.field) {\n uiSchema[params.field] = {\n ...(uiSchema[params.field] || {}),\n \"ui:readonly\": true\n }\n }\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n makeReadonly.propTypes = {\n field: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]).isRequired,\n };\n\n makeReadonly.validate = function ({ field }: any, schema: any, uiSchema: any) {\n if (Array.isArray(field)) {\n field\n .filter(f => schema && schema.properties && schema.properties[f] === undefined)\n .forEach(f => console.error(`Field \"${f}\" is missing from schema on \"require\"`));\n } else if (\n schema &&\n schema.properties &&\n schema.properties[field] === undefined\n ) {\n console.error(`Field \"${field}\" is missing from schema on \"require\"`);\n }\n };\n\n}","/**\n * Takes multiple fields, and makes them readonly.\n * @param {String} params.field - This field's data you want to make readonly\n */\nexport const newOrder = function (params: any, schema: any, uiSchema: any, formData: any) {\n uiSchema[\"ui:order\"] = params.order || [\"*\"]\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n newOrder.propTypes = {\n order: PropTypes.arrayOf(PropTypes.string).isRequired,\n };\n\n newOrder.validate = function ({ order }: any, schema: any, uiSchema: any) {\n if (!Array.isArray(order)) {\n console.error(`Order is missing from parameters`)\n }\n };\n\n}","/**\n * Takes item from list and overwrite another field with list containing it\n * @param {String} params.from - name of the origin field\n * @param {String} params.to - field where item is copied\n * @param {String} [params.index=0] - index of item your copying\n */\nexport const setValue = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { source = \"\", target, } = params;\n\n const [first, second] = source.split(\".\");\n let value;\n\n if (first) {\n value = formData[first]\n };\n\n if (second && value && typeof value === \"object\") {\n value = value[second]\n }\n\n formData[target] = value\n\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n\n}","/**\n * Takes item from list and overwrite another field with list containing it\n * @param {String} params.from - name of the origin field\n * @param {String} params.to - field where item is copied\n * @param {String} [params.index=0] - index of item your copying\n */\nexport const overwriteWithCopyOfItem = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { from, to, index = 0 } = params;\n if (formData[from] && formData[from].length && formData[from][index]) {\n formData[to] = [formData[from][index]]\n }\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n overwriteWithCopyOfItem.propTypes = {\n from: PropTypes.string.isRequired,\n to: PropTypes.string.isRequired,\n index: PropTypes.number,\n };\n\n overwriteWithCopyOfItem.validate = function ({ from, to, index }: any, schema: any, uiSchema: any) {\n if (!from) {\n console.error(\"paramters is missing 'from' field\")\n }\n if (!schema.properties[from]) {\n console.error(\"schema is missing property called in from parameter, note that you can only use properties in first depth of schema\")\n }\n if (!to) {\n console.error(\"paramters is missing 'to' field\")\n }\n if (index && typeof index !== 'number') {\n console.error(\"index parameter need to be typeof number\")\n }\n };\n\n}","\nimport React, { useMemo, useRef, useState } from \"react\";\nimport applyRules from 'react-jsonschema-form-conditionals';\nimport Engine from 'json-rules-engine-simplified';\nimport { IChangeEvent, AjvError } from '@rjsf/core'\nimport { FormProps } from '@rjsf/core';\n\nimport { applyContext, removeContextData } from \"./rules.helpers\";\nimport defaultExtraActions from './extraActions'\nimport { focusOnField, transformErrors } from \"./form.helpers\"\nimport _debounce from \"lodash/debounce\"\nimport { uiSchemaToStaticErrors } from \"./schema.helpers\";\nimport { JSONSchema } from \"./RJSF\";\n\nexport interface IFormWithRules extends FormProps {\n rules?: { [key: string]: any }[]\n extraActions?: { [key: string]: any };\n contextData?: { [key: string]: any }\n contextSchema?: JSONSchema;\n focusOnError?: boolean;\n children?: any\n}\n\nexport const withRules = (Form: React.FC | React.ComponentClass) => {\n return (props: IFormWithRules) => {\n const {\n schema: initialSchema,\n uiSchema: initialUiSchema,\n formData: initialFormData,\n onSubmit,\n onChange,\n\n rules = [],\n extraActions: moreExtraActions = {},\n contextSchema = {},\n contextData = {},\n\n focusOnError = true,\n ...otherProps\n } = props;\n console.log({ props })\n\n\n const { schema, uiSchema } = applyContext(contextSchema, initialSchema, initialUiSchema)\n\n const extraActions = { ...defaultExtraActions, ...moreExtraActions };\n const formData = { ...initialFormData, context: contextData, }\n\n // Uses ref to obtain current formData in case component re-renders and tries to use initial data, configured above\n const formEL: any = useRef();\n const currentFormData = formEL.current?.formData || formData;\n\n const FormWithConditionals = useMemo(() => {\n return applyRules(schema, uiSchema, rules, Engine, extraActions)(Form)\n }, []); // eslint-disable-line\n\n const [submitted, setSubmitted] = useState(false)\n\n\n const handleSubmit = async (form: IChangeEvent | any, nativeEvent: React.FormEvent) => {\n !submitted && setSubmitted(true)\n onSubmit && onSubmit({ ...form, formData: removeContextData(form.formData) }, nativeEvent);\n };\n\n const handleChange = (form: IChangeEvent | any) => {\n if (onChange) {\n onChange({ ...form, formData: removeContextData(form.formData) }); // Context is only meant for schema rules.\n };\n };\n\n const handleError = (errors: { stack: string }[]) => {\n const firstError = errors[0];\n\n if (firstError && focusOnError) {\n focusOnField(firstError.stack.split(\": \")[0]);\n }\n\n props.onError && props.onError(errors);\n }\n\n const handleErrorTransform = (errors: AjvError[]) => {\n let staticErros = uiSchemaToStaticErrors(formEL.current.state.uiSchema);\n\n if (staticErros) {\n errors = errors.concat(staticErros);\n }\n\n if (otherProps.transformErrors) {\n errors = otherProps.transformErrors(errors);\n };\n\n return transformErrors(errors);\n }\n\n const debounced = _debounce(handleChange, 350)\n\n return (\n \n )\n }\n}\n\n","\nimport React, { useRef, useState } from \"react\";\nimport { Button, Icon, Input, InputProps, Ref, SemanticICONS } from \"semantic-ui-react\";\nimport { SemanticCOLORS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport \"./_EvaluationCounter.less\"\n\nexport interface EvaluationCounterProps {\n label?: string\n color: SemanticCOLORS;\n icon?: SemanticICONS;\n value?: number;\n onChange: (value?: number) => void;\n allowNegative?: boolean;\n};\n\nexport const EvaluationCounter: React.FC = ({\n label,\n icon,\n color,\n value,\n allowNegative = false,\n onChange\n}) => {\n\n\n const count = typeof value === \"number\" ? value : 0;\n\n const updateValue = (value?: number) => {\n let newCount = [\"number\", \"undefined\"].includes(typeof value) ? value : count;\n if (newCount && newCount < 0) {\n newCount = 0\n };\n onChange(newCount)\n };\n\n const increase = () => updateValue(count + 1);\n const decrease = () => updateValue(count - 1);\n\n\n const [_1, setFocusCount] = useState(0); // eslint-disable-line\n const focusReRender = () => setFocusCount((prev) => prev + 1);\n\n const inputWrapper = useRef();\n const inputElement = inputWrapper.current?.getElementsByTagName(\"input\")[0];\n const inputActive = inputElement === document.activeElement;\n\n const [inputValue, setInputValue] = useState(\"\");\n\n const handleInputFocus = () => {\n setInputValue(\"\");\n focusReRender();\n };\n\n const handleInputBlur = () => {\n updateValue(inputElement?.value?.length ? Number(inputElement.value) : value);\n focusReRender();\n }\n\n const hanldeInputChange: InputProps[\"onChange\"] = (_1, { value }) => {\n setInputValue(value);\n };\n\n const handleInputKeyDown = (event: KeyboardEvent) => {\n if (event.key == \"Enter\") {\n event.preventDefault();\n };\n };\n\n\n return (\n
\n {label && (\n
\n {icon && }\n {label}\n
\n )}\n\n
\n
\n \n
\n\n
\n \n \n \n
\n\n
\n }\n />\n
\n
\n
\n );\n};\n","import { PersonPickerWidget } from \"./PersonPicker/PersonPickerWidget\";\nimport { EvalutaionCheckWidget } from \"./EvaluationCheck/EvalutaionCheckWidget\";\nimport { EvaluationCounterWidget } from \"./EvaluationCounter/EvaluationCounterWidget\";\n\nexport default {\n\n personPicker: PersonPickerWidget,\n evaluationCheck: EvalutaionCheckWidget,\n evaluationCounter: EvaluationCounterWidget\n\n}","import React, { Fragment, Suspense } from \"react\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport HPRPeoplePicker, { TPickerValue } from '../../../../../sg-hpr/components/persons/PersonPicker'\nimport { useApplicationConfiguration } from \"@/@auditoinnit/auditoinnit/configuration/ConfigurationContext\";\n\n\nexport interface IPersonPickerOptions {\n requiredCerts?: string[],\n excludeUncertified?: boolean;\n};\n\nexport const PersonPickerWidget: React.FC = (props) => {\n\n const {\n onChange,\n value,\n schema,\n options,\n } = props;\n\n const appParameters = useApplicationConfiguration()\n const isMulti = schema.type === \"array\";\n\n const handleOnChange = (value: TPickerValue) => {\n onChange(value);\n }\n\n const { requiredCerts, excludeUncertified = false, } = options as IPersonPickerOptions;\n\n const noEmptyArrayItem = value && Array.isArray(value) ? [...value].filter((personId) => personId) : value\n return (\n \n }>\n \n \n \n );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { Divider, Icon } from \"semantic-ui-react\";\nimport { AddAuditNoteAction } from \"../../../note/AddAuditNoteAction\";\nimport { NoteAccordion } from \"../../../note/NoteAccordion\";\nimport { useNotesByField } from \"../../../../data/notes/useNotesByField\";\nimport { EvaluationCounter } from \"../../EvaluationCounter/EvaluationCounter\";\nimport \"./_EvaluationCounterWidget.less\"\nimport { useTranslation } from \"react-i18next\";\nimport { TFunction } from \"i18next\";\nimport { makeAccordionTitleId } from \"../../jsonSchemaFields/AccordionObjectField/AccordionItemObjectField\";\n\n\nconst getTextProps = (t: TFunction) => ({\n ok: t(\"Kunnossa\"),\n notOk: t(\"Korjattavaa\"),\n notes: t(\"Huomiot\")\n});\n\n\n\nexport interface IEvaluationCounterWidgetOptions {\n requiredCerts?: string[],\n};\n\nexport type TEvaluationCounterValue = {\n okay?: number;\n notOkay?: number;\n count: any\n};\n\n\nexport const EvaluationCounterWidget: React.FC = (props) => {\n const { onChange, schema, options, formContext, fieldKey, id } = props as any\n const enums: any[] = schema.enum ?? [0, 1, 2];\n\n const valueObj: TEvaluationCounterValue = typeof props.value === \"object\" ? props.value : {};\n\n\n const texts = getTextProps(useTranslation().t)\n\n\n\n const [parentTitle, setParentTitle] = useState(\"\");\n useEffect(() => {\n let getTitle = setTimeout(() => {\n const accordionId = id.substring(0, id.indexOf(`_${fieldKey}`))\n const accordionTitleId = makeAccordionTitleId(accordionId)\n const parentTitleEl = document.getElementById(accordionTitleId);\n setParentTitle((parentTitleEl?.innerHTML || \"\").trim());\n }, 400);\n return () => clearTimeout(getTitle);\n }, [id, fieldKey]);\n\n\n // Validate props\n if (enums.length > 3) console.warn(\"EvaluationCounterWidget recieved more than 3 enums\");\n if (!fieldKey) console.error(\"EvaluationCounterWidget is missing field key\");\n\n\n const { data: noteList } = useNotesByField(fieldKey);\n\n const makeCountUpdate = (key: keyof TEvaluationCounterValue) => (value?: number) => {\n onChange({ ...valueObj, [key]: value });\n };\n\n const text = options.title || schema.title || fieldKey;\n\n return (\n
\n\n \n\n \n\n \n\n \n\n\n
\n
\n \n {texts.notes}\n
\n\n console.log(\"Note created\", note)}\n />\n
\n \n
\n\n );\n};\n","import { useMemo } from \"react\";\nimport { IAuditNote, TEditableAuditNote } from \"../../interfaces/IAuditNote\";\nimport { useAuditNoteContext } from \"../../context/AuditNoteContext\";\n\nexport type IUseNotesByFieldData = (fieldKey: IAuditNote[\"key\"]) => {\n data: TEditableAuditNote[];\n};\n\nexport const useNotesByField: IUseNotesByFieldData = (fieldKey: IAuditNote[\"key\"]) => {\n const { notes } = useAuditNoteContext();\n const noteList = Object.keys(notes);\n\n const rawData = useMemo(() => {\n return noteList.reduce((acc, id) => {\n let data = notes[id];\n\n if (data.key === fieldKey) {\n acc.push(data);\n }\n return acc\n }, []);\n }, [notes, noteList, fieldKey])\n\n return { data: rawData }\n}","import { EvalutaionCheckDisplay } from \"./EvaluationCheck/EvaluationCheckDisplay\";\nimport { EvaluationCounterDisplay } from \"./EvaluationCounter/EvaluationCounterDisplay\";\nimport { PersonPickerDisplay } from \"./PersonPicker/PersonPickerDisplay\";\n\nexport default {\n personPicker: PersonPickerDisplay,\n evaluationCheck: EvalutaionCheckDisplay,\n evaluationCounter: EvaluationCounterDisplay\n} ","import React from \"react\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { List } from \"semantic-ui-react\";\nimport PersonName, { PersonNameById } from \"../../../../../sg-hpr/components/persons/PersonName\";\n\nexport const PersonPickerDisplay: React.FC = ({ value: rawValue, formContext }) => {\n let value = rawValue\n if (!value) {\n return

{formContext.emptyValue}

\n }\n\n const { persons = {}, companies = {} } = formContext.data || {}\n\n const renderPerson = (personId: number) => {\n const person = persons[personId]\n const company = person && person.company ? companies[person.company] : null;\n\n if (!person || (person.company && !company)) {\n return (\n \n )\n }\n return (\n \n )\n }\n\n return (\n
\n \n {Array.isArray(value) ? (\n value.map((personId, index) => (\n \n {personId ? renderPerson(personId) : null}\n \n\n ))) : value ? (\n value ? renderPerson(value) : null\n ) : formContext.emptyValue\n }\n \n
\n\n )\n};\n","import { TFunction } from \"i18next\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { Icon, IconProps } from \"semantic-ui-react\";\nimport { TEvaluationCounterValue } from \"./EvaluationCounterWidget\";\n\nconst getTextProps = (t: TFunction) => ({\n ok: t(\"Kunnossa\"),\n notOk: t(\"Korjattavaa\"),\n});\n\n\nexport const EvaluationCounterDisplay: React.FC = (props) => {\n const { schema } = props\n const texts = getTextProps(useTranslation().t)\n const valueObj: TEvaluationCounterValue = typeof props.value === \"object\" ? props.value : {}\n const enums: any[] = schema.enum ?? [0, 1, 2];\n\n if (enums.length > 3) { console.warn(\"EvaluationCounterDisplay recieved more than 3 enums\"); };\n\n\n const renderItem = (text: string, value: any = \"-\", iconProps?: IconProps) => (\n
\n {iconProps && }\n {value} {text}\n
\n );\n\n return (\n
\n\n {renderItem(texts.ok, valueObj.okay, { name: \"check\", color: \"green\" })}\n {renderItem(texts.notOk, valueObj.notOkay, { name: \"times\", color: \"red\" })}\n\n\n
\n\n )\n};\n","import { WidgetRegistry, IBuildWidgets, EWidgetType } from \"../../sg-schema/utils/widgetRegistry\";\nimport commonSGWriteWidgets from \"../../sg-schema/themes/semantic/widgets\";\nimport commonSGReadWidgets from \"../../sg-schema/themes/semantic-display/widgets\";\n\nimport { ThemeProps, withTheme, WidgetProps } from \"@rjsf/core\";\nimport { withRules } from \"../../sg-schema/withRules\";\nimport commonhavainnotWriteWidgets from \"../components/form/jsonSchemaWidgets/write\";\nimport commonhavainnotReadWidgets from \"../components/form/jsonSchemaWidgets/read\";\n\nimport writeFields from \"../components/form/jsonSchemaFields/write\";\nimport readFields from \"../components/form/jsonSchemaFields/read\";\n\nexport class JsonSchemaConfiguration {\n private _widgetRegistry = WidgetRegistry.create();\n private built = false;\n\n private _themes: { [type in EWidgetType]?: ThemeProps } = {};\n\n private _widgets?: IBuildWidgets;\n\n public get widgets(): IBuildWidgets {\n if (!this._widgets) {\n throw new Error(\"Cannot get widgets from Schema configuration: Widgets have not been built\");\n }\n return this._widgets;\n }\n\n public getForm(type: EWidgetType) {\n const theme = this._themes[type];\n if (!theme) {\n throw new Error(`Cannot get theme for form type '${type}': Theme not configured`);\n }\n\n const completeTheme = {\n ...theme,\n fields: type === EWidgetType.Read ? { ...theme.fields, ...readFields } : { ...theme.fields, ...writeFields },\n widgets: type === EWidgetType.Read ? this._widgets?.read : this._widgets?.write\n };\n\n return withRules(withTheme(completeTheme));\n }\n\n\n\n\n public addDefaultWidgets() {\n this._widgetRegistry.appendWidgets(EWidgetType.Read, commonSGReadWidgets);\n this._widgetRegistry.appendWidgets(EWidgetType.Write, commonSGWriteWidgets as any);\n\n this._widgetRegistry.appendWidgets(EWidgetType.Read, commonhavainnotReadWidgets);\n this._widgetRegistry.appendWidgets(EWidgetType.Write, commonhavainnotWriteWidgets);\n\n }\n\n public addWidget(name: string, writer: React.ComponentType, reader: React.ComponentType) {\n this._widgetRegistry.addWidget(EWidgetType.Write, name, writer);\n this._widgetRegistry.addWidget(EWidgetType.Read, name, reader);\n }\n\n public addTheme(type: EWidgetType, theme: ThemeProps) {\n this._themes[type] = theme;\n }\n\n public build() {\n if (this.built) {\n throw new Error(\"Cannot build JsonSchemaConfiguration: Configuration already built\");\n }\n this._widgets = this._widgetRegistry.build();\n this.built = true;\n }\n}","import React, { FC } from \"react\";\nimport { LocationName, ILocationNameProps } from \"./default/LocationName\"\nimport PersonName, { PersonNameById } from \"../../sg-hpr/components/persons/PersonName\";\nimport { IAuditListFilters } from \"../interfaces/IAudit\";\nimport { IKohderekisteri } from \"@/sg-kohderekisterit/IKohderekisteri\";\n\n\nexport interface IConfiguredComponents {\n ContextProvider: FC<{ token?: string; lang?: string; anonymousSession: boolean; registerSettings: any }>;\n LocationName: FC;\n LocationPicker: IKohderekisteri[\"LocationPicker\"];\n LocationFilter?: FC<{ filters: Partial; onChange: (partial: Partial) => void; minimal?: boolean; className?: string;[key: string]: any }>;\n\n LocationMap: IKohderekisteri[\"LocationMap\"];\n RenderMap: IKohderekisteri[\"RenderMap\"];\n\n PersonName: typeof PersonNameById\n PersonNameBase: typeof PersonName\n\n};\n\n\nexport const defaultConfiguredComponents: IConfiguredComponents = {\n\n ContextProvider: (props) => React.createElement(\"div\", props),\n LocationPicker: (props) => React.createElement(\"div\", props),\n\n LocationName,\n\n LocationMap: (props) => React.createElement(\"div\", props),\n RenderMap: (props) => React.createElement(\"div\", props),\n\n PersonName: PersonNameById,\n PersonNameBase: PersonName\n\n};","import React, { Fragment, HTMLAttributes } from \"react\";\nimport { ILocationData } from \"@/sg-kohderekisterit/IKohderekisteri\";\n\nexport interface ILocationNameProps extends HTMLAttributes {\n as?: any;\n locationId?: ILocationData[\"id\"];\n data?: ILocationData\n}\n\nexport const LocationName: React.FC = ({ locationId, data }) => {\n\n\n return (\n \n Unconfigure LocationName: {locationId}\n \n )\n}; ","\nexport type TResolveLocationFilters = (newFilters: any) => Promise\n\nexport const useDefaultResolveLocationFilters = (): TResolveLocationFilters => {\n const resolveLocationFilters = async (newFilters: any) => newFilters;\n return resolveLocationFilters\n}; ","import { IKohderekisteri } from '@/sg-kohderekisterit/IKohderekisteri';\nimport { makeFailure } from '../../sg-core/utils/Result';\n\nexport interface IConfiguredHooks {\n usePerson: (personId: number) => { data: { fullname: string; id: number;[key: string]: any } | null; fetching: boolean; };\n useGetLocationData: IKohderekisteri[\"useGetLocationData\"]\n};\n\n\nexport const defaultConfiguredHooks: IConfiguredHooks = {\n usePerson: (personId: number) => ({ data: null, fetching: false }),\n useGetLocationData: () => ({ getLocationData: async () => { return makeFailure(new Error(\"Hello world!\")) } })\n\n};","import { JsonSchemaConfiguration } from \"./JsonSchemaFormConfiguration\";\nimport { IConfiguredComponents, defaultConfiguredComponents } from \"./Components\";\nimport { useDefaultResolveLocationFilters, TResolveLocationFilters } from \"./default/useResolveLocationFilters\";\nimport { defaultConfiguredHooks, IConfiguredHooks } from \"./Hooks\";\nimport { makeFailure, makeSuccess, TResult } from \"../../sg-core/utils/Result\";\nimport { EnviromentVariables } from \"../constants/EnviromentVariables\";\nimport { IRegisterSettings } from \"@/sg-kohderekisterit/IKohderekisteri\";\n\nconst PUBLIC_PATH = process.env.PUBLIC_URL\nconst baseURL = process.env.REACT_APP_API_BASE_URL || \"\";\nconst bestGuessHostedInDevelopment = baseURL.indexOf(\"dev\") > -1 && baseURL.indexOf(\"prod\") === -1;\n\nexport type TConfigFn = (config: ApplicationConfiguration) => Promise;\n\n/**\n * A wrapper class for the configuration options for the entire WorkPermit-application.\n * The class is designed to be easily configurable for different customer needs.\n */\nexport class ApplicationConfiguration {\n\n //\n // COMPONENTS\n //\n\n public components: IConfiguredComponents = defaultConfiguredComponents;\n\n //\n // HOOKS\n //\n\n public hooks: IConfiguredHooks = defaultConfiguredHooks;\n\n //\n // SETTINGS\n //\n public observationPublicByDefault: boolean = true;\n public applicationMenuHref: string | null = EnviromentVariables.applicationMenuHref || \"https://gate.systemsgarden.com/\";\n public siteLogoHref: string = PUBLIC_PATH + \"/site-logo.png\";\n public companyName: string = \"Systems Garden Oy\"\n public companyAddress: string = \"Upseerinkatu 3, 02600 Espoo\";\n\n public showAuditSummary: boolean = true;\n public inputForHprCertificationStartDate: boolean = true;\n\n public emailSupport: boolean = true;\n public smsSupport: boolean = true;\n public mapSupport: boolean = true;\n\n public showLanguageSelect: boolean = false;\n public languages: Array = [\"fi\"];\n\n public showDeveloperSettings: boolean = bestGuessHostedInDevelopment;\n public showRawApplicationErrors: boolean = bestGuessHostedInDevelopment;\n public testenviromentBackground: boolean = bestGuessHostedInDevelopment;\n\n\n public customConfigurationsLoaded: boolean = false;\n\n public registerSettings: IRegisterSettings = {};\n\n //\n // FILTERS\n //\n\n public useResolveLocationFilters: () => TResolveLocationFilters = useDefaultResolveLocationFilters\n public testSchema = { schema: {}, uiSchema: {} };\n\n //\n // JSON Schema\n //\n\n private jsonSchemaConfig?: JsonSchemaConfiguration;\n\n public addJsonSchemaForm(fn: (options: JsonSchemaConfiguration) => void) {\n const jsonSchemaConfig = new JsonSchemaConfiguration();\n\n fn(jsonSchemaConfig);\n jsonSchemaConfig.build();\n\n this.jsonSchemaConfig = jsonSchemaConfig;\n }\n\n // Config getters\n public get jsonSchema(): JsonSchemaConfiguration {\n this.ensureExists(\"jsonSchemaConfig\");\n return this.jsonSchemaConfig!;\n }\n\n\n //\n // PRIVATES\n //\n\n // A simple throwing function for ensuring that a specific config exists.\n private ensureExists(name: string) {\n if (!this[name as keyof ApplicationConfiguration]) {\n throw new Error(`Failed to access '${name}'. The property was undefined`);\n }\n }\n}\n\nexport const createApplicationConfiguration = async (fn: (config: ApplicationConfiguration) => Promise): Promise> => {\n let config = new ApplicationConfiguration();\n\n try {\n config = await fn(config);\n } catch (e) {\n console.error(\"[Fatal]: ConfigurationError: \", e);\n return makeFailure(e)\n }\n\n return makeSuccess(config);\n}\n","import React, { createContext, useContext, PropsWithChildren, useState, useLayoutEffect, SetStateAction } from \"react\";\nimport { Message, Segment } from \"semantic-ui-react\";\nimport TestBackground from \"../../../@common/components/TestBackground\";\nimport { makeSuccess, TResult } from \"../../sg-core/utils/Result\";\nimport { useAuthContext } from \"../auth/AuthenticationProvider\";\nimport { ApplicationConfiguration, createApplicationConfiguration, TConfigFn } from \"./ApplicationConfiguration\";\n\nconst modifyConfigContext = createContext<{ setConfig: (updates: SetStateAction>) => void }>({ setConfig: () => new ApplicationConfiguration() });\nexport const useModifyApplicationConfiguration = () => useContext(modifyConfigContext);\n\n\nconst configContext = createContext(new ApplicationConfiguration());\n\nexport const useApplicationConfiguration = () => useContext(configContext);\n\n// Provider\nexport const ConfigurationProvider: React.FC> = ({ children, configFn }) => {\n const { token, lang, anonymousSession } = useAuthContext()\n const { Provider } = configContext;\n const { Provider: ModifyConfigProvider } = modifyConfigContext;\n\n const [config, setConfig] = useState>();\n\n const modifyConfig = (updates: SetStateAction>) => {\n if (!config?.isSuccess) {\n return\n }\n const data = updates instanceof Function ? updates(config.value) : updates;\n setConfig((prev) => {\n if (prev?.isSuccess) {\n let value = prev.value;\n Object.keys(data).forEach((key) => {\n const configurationKey = key as keyof ApplicationConfiguration\n if (typeof data[configurationKey] !== \"undefined\") {\n //@ts-ignore\n value[configurationKey] = data[configurationKey]\n }\n });\n return makeSuccess(value);\n }\n return prev\n })\n };\n\n useLayoutEffect(() => {\n const loadConfigs = async () => {\n const configResult = await createApplicationConfiguration(configFn);\n setConfig(configResult);\n };\n loadConfigs();\n }, [])\n\n if (config?.isFailure) {\n return \n };\n\n if (!config?.value) {\n return \n };\n\n const AdditionalContextProvider = config.value.components.ContextProvider;\n const providerKey = JSON.stringify(config.value);\n\n return (\n \n \n \n \n {children}\n \n \n \n\n )\n\n};","import fetch from \"unfetch\";\nimport { TResult, makeFailure, makeSuccess } from \"../utils/Result\";\nimport { IEndpoint } from \"./EndpointService\";\n\nexport enum GeneratedAction {\n GetList,\n GetOne,\n Create,\n Update,\n Delete\n}\n\nexport interface ISgApiService {\n sendHttpRequest: (endpoint: IEndpoint, type: string, body: any, headers: any) => Promise>;\n sendHttpUrlRequest: (url: string, method: string, body: any, headers?: any, noToken?: boolean) => Promise>;\n sendAction: (endpoint: IEndpoint, action: string, body: any, noToken?: boolean) => Promise>;\n sendActionGenerated: (endpoint: IEndpoint, entityName: string, action: GeneratedAction, body?: object) => Promise>;\n token: string | null;\n}\n\nexport const getSgApiService = (token?: string): ISgApiService => {\n\n let TOKEN = token;\n\n const getToken = () => {\n if (!TOKEN) {\n throw new Error(\"Cannot send a request with token if token is not set.\");\n }\n return `NAS SID ${TOKEN}`;\n };\n\n const sendHttpRequest = async (endpoint: IEndpoint, method: string, body: any, headers: any) => {\n try {\n const response = await fetch(endpoint.path, {\n method,\n body: JSON.stringify(body),\n headers,\n });\n\n if (!response.ok) {\n return makeFailure(new Error(response.statusText));\n }\n\n const json = await response.json();\n if (json.success === false) {\n let error = new Error(json.error.message,)\n //@ts-ignore\n error.data = json\n return makeFailure(error);\n }\n return makeSuccess(json);\n } catch (e) {\n return makeFailure(e);\n }\n };\n\n const sendHttpUrlRequest = async(url: string, method: string, body: any = {}, headers: any = {}, noToken?: boolean): Promise> => {\n try {\n const hdrs = { ...headers };\n if (!noToken) {\n hdrs.Authorization = getToken();\n }\n const response = await fetch(url, {\n method,\n body: body ? JSON.stringify(body) : undefined,\n headers: hdrs,\n });\n\n if (response.ok) {\n const data: T = await response.json();\n\n if ((data as any).error) {\n return makeFailure(new Error((data as any).error.message));\n }\n\n return makeSuccess(data);\n }\n return makeFailure(new Error(\"Unknown request error\"));\n } catch (e) {\n return makeFailure(e);\n }\n };\n\n const sendAction = async (endpoint: IEndpoint, action: string, payload: P, noToken: boolean = false) => {\n const body = {\n ...payload,\n action,\n };\n\n const headers: { [key: string]: string } = {};\n if (!noToken) {\n headers.Authorization = getToken();\n }\n\n return await sendHttpRequest(endpoint, \"POST\", body, headers);\n };\n\n const getGeneratedAction = (entityName: string, action: GeneratedAction): string => {\n switch (action) {\n case GeneratedAction.Create:\n return `lisaa_${entityName}`;\n case GeneratedAction.Delete:\n return `poista_${entityName}`;\n case GeneratedAction.GetList:\n return `hae_${entityName}_lista`;\n case GeneratedAction.GetOne:\n return `hae_${entityName}`;\n case GeneratedAction.Update:\n return `tallenna_${entityName}`;\n }\n }\n\n /**\n * Sends a predefined action to a generated API interface\n * @param entityName Name of the entity to find\n * @param action Action type we want to perform\n * @param body Request body\n * @param noToken Anonymous or not?\n */\n const sendActionGenerated = async(endpoint: IEndpoint, entityName: string, action: GeneratedAction, body: any = {}, noToken: boolean = false): Promise> => {\n const actionName = getGeneratedAction(entityName, action);\n\n const response = await sendAction(endpoint, actionName, body, noToken);\n\n if (response.isSuccess) {\n const resultObj = response.value;\n\n // In GATE generated APIs, the result is either in \"results\" -property (if it's a list)\n // or [entityName] -object.\n // If it's neither, we give up.\n const result = resultObj.results ?? resultObj[entityName];\n\n if ((typeof result) === \"undefined\") {\n return makeFailure(new Error(`Invalid response: expected '${entityName}' or 'results' property`));\n }\n\n return makeSuccess({\n data: result === \"\" ? [] : result,\n response: response.value,\n });\n }\n return response;\n };\n\n return {\n sendHttpRequest,\n sendHttpUrlRequest,\n sendAction,\n sendActionGenerated,\n token: TOKEN || null\n };\n};\n","import React, { createContext, useContext } from \"react\";\nimport { IHprService } from \"../services/HprService\";\n\nconst context = createContext(null);\nconst { Provider } = context;\n\nexport const useHprService = () => {\n const service = useContext(context);\n if (!service) throw new Error(\"Failed to get HPR servvice\");\n return service;\n};\n\n// Provider\nexport const HprServiceProvider: React.FC<{ service: IHprService }> = ({ children, service }) => {\n return (\n \n {children}\n \n );\n};\n","import { useEffect, useMemo } from \"react\";\nimport useSWR, { CacheInterface } from \"swr\";\nimport { ConfigInterface, fetcherFn, keyInterface, mutateInterface, responseInterface, triggerInterface } from \"swr/dist/types\";\nimport { useOfflineCacheContext } from \"./OfflineCacheContext\";\n\nexport type UseSWRCacheHook = () => { cache: CacheInterface, mutate: mutateInterface, trigger: triggerInterface };\n\nexport const useSWROffline = (\n key: keyInterface,\n fn?: fetcherFn,\n config?: ConfigInterface\n): responseInterface => {\n\n const { online, getItem, setItem, clearItem } = useOfflineCacheContext()\n\n const fetcher: any = fn ? async () => {\n\n if (!online) {\n const cachedItem = getItem(key);\n if (!cachedItem) throw Error(\"Cannot fetch offline is item not in offline cache\")\n return cachedItem as any;\n }\n return await fn();\n } : null\n\n\n const handleSuccess: ConfigInterface[\"onSuccess\"] = (data, key, config) => {\n // console.log(\"handleSuccess\", data, key, config)\n setItem(key, data);\n };\n\n const handleError: ConfigInterface[\"onError\"] = (data, key, config) => {\n console.log(\"handleError\", data, key, config)\n clearItem(key);\n }\n\n const initialItem = useMemo(() => getItem(key), []); // eslint-disable-line\n\n let confs: ConfigInterface = {\n ...config,\n onError: handleError,\n onSuccess: handleSuccess,\n initialData: !online ? initialItem : config?.initialData\n }\n\n const response = useSWR(key, fetcher, confs);\n\n useEffect(() => {\n setItem(key, response.data);\n }, [response.data]); // eslint-disable-line\n\n return response;\n};\n","import React, { useMemo } from \"react\";\nimport { IPerson } from \"../../models/IPerson\";\nimport { PopupProps, List, Icon, Divider } from \"semantic-ui-react\";\nimport { ImageView } from \"@sg-fileupload/components/Image\";\nimport { SemanticICONS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport CompanyName from \"../companies/CompanyName\";\nimport { PersonCertStatus } from \"./PersonCertStatus\";\nimport { getPersonCertStatus } from \"../../utils/cert.helper\";\nimport { IPersonCert } from \"../../models/IPersonCert\";\nimport { ICompany } from \"../../models/ICompany\";\n\ninterface PersonPopupContentProps extends PopupProps {\n person: IPerson;\n company: ICompany | null;\n showCompany?: boolean;\n showPhone?: boolean;\n\n};\n\nexport const PersonPopupContent: React.FC = ({ person, company }) => {\n\n const renderField = (icon: SemanticICONS | JSX.Element, content: any) => (\n \n \n {typeof icon === \"string\" ? : icon}\n\n \n {content} \n \n );\n\n const renderCert = (cert: IPersonCert) => {\n const status = getPersonCertStatus(cert, true);\n const icon = ;\n return (\n renderField(icon, cert?.name)\n )\n }\n\n const certs = useMemo(() => {\n const certs = person.certs;\n if (certs) {\n return Object.keys(certs).reduce>((acc, key) => {\n const cert = certs[key];\n return cert ? acc.concat(cert) : acc\n }, [])\n };\n return []\n }, [person.certs]);\n\n\n return (\n
\n
\n \n
\n {person.image ? : null}\n {person.fullname}\n
\n
\n
\n \n {person.phone && renderField(\"phone\", person.phone)}\n {person.email && renderField(\"envelope\", person.email)}\n {person.company && company && renderField(\"building\", )}\n\n \n
\n );\n};\n","import React, { Suspense } from \"react\";\nimport { IPerson } from \"../../models/IPerson\";\nimport CompanyName from \"../companies/CompanyName\";\nimport { Icon, Popup, Segment } from \"semantic-ui-react\";\nimport { PersonPopupContent } from \"./PersonPopupContent\";\nimport { RenderCompany } from \"../companies/RenderCompany\";\nimport { usePerson } from \"../../data/persons/usePerson\";\nimport { ICompany } from \"../../models/ICompany\";\nimport \"./_PersonName.less\";\n\n\nexport interface PersonNameProps {\n as?: any;\n person: IPerson;\n company?: ICompany | null;\n\n showCompany?: boolean;\n showPhone?: boolean;\n showPhoneIcon?: boolean\n showEmailIcon?: boolean;\n infoPopup?: boolean;\n statusIcon?: JSX.Element\n\n};\n\nconst PersonName: React.FC = ({\n as: CustomWrapper,\n person,\n company,\n\n showCompany = false,\n showPhone = false,\n showPhoneIcon,\n showEmailIcon = false,\n infoPopup = false,\n\n statusIcon\n}) => {\n\n const Wrapper = CustomWrapper || \"span\";\n\n return (\n \n {statusIcon}\n \n {infoPopup ? (\n {person.fullname}}\n content={(\n }>\n \n \n )}\n />\n ) : person.fullname}\n \n\n {showPhone && person.phone ? (\n \n {(typeof showPhoneIcon === \"undefined\" || showPhoneIcon) && < Icon name=\"phone\" />}{\" \"}\n {person.phone}\n \n ) : showPhoneIcon && person.phone ? (\n \n {\" \"}\n \n ) : null}\n\n {showEmailIcon && person.email ? (\n \n {\" \"}\n \n ) : null}\n\n {showCompany && company && (\n \n )}\n \n );\n};\n\ninterface PersonNameByIdProps extends Omit {\n personId: IPerson[\"id\"];\n\n}\nexport const PersonNameById: React.FC = ({ personId, ...props }) => {\n const { data: person } = usePerson(personId);\n\n if (!person) {\n return
\n };\n\n const componentProps = { ...props, person }\n\n if (person.company) {\n return (\n (\n \n )}\n />\n )\n };\n\n return (\n \n );\n};\n\n\nexport default PersonName;\n","import React, { useEffect, useRef } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\n\ninterface IPageScrollLocationState {\n noScrollTop: boolean;\n}\n\nconst ControlledPageScroll: React.FC<{ className?: string }> = ({ children, className }) => {\n const location = useLocation()\n const history = useHistory()\n\n const wrapperElement = useRef(null);\n\n useEffect(() => {\n let isNavigatingBackwards = history.action === \"POP\";\n if (!isNavigatingBackwards && location.state?.noScrollTop !== true) {\n wrapperElement.current && window.scrollTo(0, 0);\n }\n\n }, [location, history]);\n\n return (\n
{children}
\n );\n};\n\n\nexport default ControlledPageScroll;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Dropdown, SelectProps } from \"semantic-ui-react\";\nimport { langToAppLanguage } from \"../../../@common/utils/localization\";\nimport { createSetLanguageAction } from \"../auth/store/authActions\";\nimport { selectLanguage } from \"../auth/store/authSelectors\";\nimport { useApplicationConfiguration } from \"../configuration/ConfigurationContext\";\nimport { parseQuery, stringifyQuery } from \"../utils/query.helper\";\n\n\ninterface LanguageSelectProps { }\n\nconst LanguageSelect: React.FC = () => {\n const { showLanguageSelect, languages } = useApplicationConfiguration()\n const { i18n } = useTranslation();\n const lang = useSelector(selectLanguage);\n const dispatch = useDispatch();\n\n const selectChange: SelectProps[\"onChange\"] = (_1, { value }) => {\n const { lang: queryLang, ...otherParams } = parseQuery<{ lang?: string }>(window.location.search);\n const nextLang = String(value);\n\n if (queryLang) {\n // const nextHref = window.location.href.split(\"?\")[0] + `?${stringifyQuery({ ...otherParams, lang: nextLang })}`\n // window.location.href = (nextHref);\n }\n\n i18n.changeLanguage(langToAppLanguage(nextLang))\n dispatch(createSetLanguageAction(nextLang))\n };\n\n const languageOptions = Object.values(languages).map((lang) => ({\n text: lang === \"us\" ? \"English\" : lang === \"fi\" ? \"Suomi\" : lang,\n value: lang\n }));\n\n const value = lang;\n\n if (!showLanguageSelect) {\n return null\n };\n\n return (\n
\n \n
\n );\n};\n\n\nexport default LanguageSelect;\n","import { useBool, useOnClickOutside } from \"../../../sg-core\";\nimport React, { useState, useRef } from \"react\";\nimport { Divider, Dropdown, Icon, Menu } from \"semantic-ui-react\";\nimport { useLoggedInUser } from \"../auth/store/authSelectors\";\nimport { useApplicationConfiguration } from \"../configuration/ConfigurationContext\";\nimport LanguageSelect from \"./LanguageSelect\";\n\n\nconst companies = [\n {\n name: \"Demo 2021\",\n image: \"https://sg-demo-havainnot-test.azurewebsites.net/site-logo.png\",\n rdr: \"2\"\n },\n {\n name: \"Koekäyttö 01\",\n image: \"https://demo01-havainnot-test.azurewebsites.net/site-logo.png\",\n rdr: \"5dd45fa9-bb15-45c0-bfa7-070210e41775\"\n },\n {\n name: \"Koekäyttö 02\",\n image: \"https://demo02-havainnot-test.azurewebsites.net/site-logo.png\",\n rdr: \"af557d70-f70c-49a1-b24d-a1a282d38cb9\"\n }\n];\n\n\n\nconst apps = [\n {\n name: \"Auditoinnit\",\n image: \"https://gate.systemsgarden.com/entries/sovelluskuvake_gate2.aspx?id=590&seq=1647&width=104&height=104\",\n guid: \"2ca42404-ea49-4c13-847a-d8daff6a0711\"\n },\n {\n name: \"Havainnot\",\n image: \"https://gate.systemsgarden.com/entries/sovelluskuvake_gate2.aspx?id=589&seq=1647&width=104&height=104\",\n guid: \"fd39355f-b1ed-4f25-a5c9-2fa5ebad5de3\"\n },\n {\n name: \"Työluvat\",\n image: \"https://gate.systemsgarden.com/entries/sovelluskuvake_gate2.aspx?id=591&seq=1647&width=104&height=104\",\n guid: \"cd7a8cfd-73f8-4782-ac11-0bd443fe4411\"\n }\n];\n\n\n\ninterface TopRightCornerMenuProps { }\n\nconst TopRightCornerMenu: React.FC = () => {\n const { showTenantSwitch } = useApplicationConfiguration();\n const wrapperElement = useRef();\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [changeCompanyMenu, showChangeCompany, hideChangeCompany] = useBool();\n const user = useLoggedInUser();\n\n\n const hideMenu = () => {\n setIsOpen(false);\n hideChangeCompany();\n };\n\n const showMenu = () => setIsOpen(true);\n\n\n useOnClickOutside(wrapperElement, hideMenu)\n\n\n const menuContent = (\n \n \n

{user?.fullname}

\n

Demo 2021 - Vaihda tiliä

\n\n \n \n {apps.map((app) => (\n \n ))}\n\n
\n );\n\n\n const menuCompanyContent = (\n \n \n \n {companies.map((company) => (\n \n ))}\n\n \n );\n\n\n return (\n
\n \n\n \n \n \n\n {showTenantSwitch && (\n \n
\n }\n floating\n labeled\n className='icon'\n direction=\"left\"\n >\n {changeCompanyMenu ? menuCompanyContent : menuContent}\n \n
\n
\n )}\n\n
\n
\n );\n};\n\n\nexport default TopRightCornerMenu;\n\n\n/**\n *\n \n \n \n */","\nimport React from 'react';\nimport ControlledPageScroll from '../ControlledPageScroll';\nimport TopRightCornerMenu from '../TopRightCornerMenu';\nimport \"./_PageTemplate.less\";\n\ninterface PageTemplateProps { };\n\nexport const PageTemplate: React.FC = ({ children }) => {\n return (\n \n
\n \n {children}\n
\n
\n );\n}\n","\n\nconst APP_PREFIX = process.env.PUBLIC_URL?.replace(\"/\", \"\") || \"app\"\nconst KEY_PREFIX = \"turvallisuus-sovellukset-app\";\n\nconst makeStorageKey = (...args: string[]) => [KEY_PREFIX, APP_PREFIX, ...args].join(\":\");\n\nexport const AUTH_COOKIE = makeStorageKey(\"auth\");\nexport const RETURN_HREF_COOKIE = makeStorageKey(\"returnHref\");\nexport const RDR_COOKIE = makeStorageKey(\"rdr\");\n\nexport const PREV_LOCATION = makeStorageKey(\"PrevLocation\", \"path\");\n\n","\nimport { useSelector } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport { TLoadable, isLoaded, createLoaded } from \"../../../../sg-core\";\nimport { selectHavainnotState } from \"../selectors\";\nimport ICategory from \"../../interfaces/ICategory\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport { useFormTypeList } from \"./formSelectors\";\n\n\n// SELECTORS\nconst selectCategoryState = createSelector(\n selectHavainnotState,\n (workPermit) => workPermit.categories\n);\n\nexport const selectCategoriesByIdState = createSelector(\n selectCategoryState,\n (state) => state.categories,\n);\n\nconst selectCategoriesIdList = createSelector(\n selectCategoryState,\n (state) => state.categoryList,\n)\n\nexport const selectCategoryList = createSelector(\n selectCategoriesIdList,\n selectCategoriesByIdState,\n (categoryList, categories): TLoadable => {\n if (isLoaded(categoryList)) {\n return createLoaded(categoryList.data.map((id) => categories[id]));\n }\n return categoryList as TLoadable\n },\n);\n\n\n\n// HOOKS\nexport const useCategoryList = (): TLoadable => useSelector(selectCategoryList) as any;\nexport const useCategoryById = (categoryId: number | undefined): ICategory | undefined => {\n const categories = useSelector(selectCategoriesByIdState)\n return categoryId ? categories[categoryId] : undefined\n};\n\nexport const useFormTypeListByCategoryId = (categoryId: number): TLoadable => {\n const typeList = useFormTypeList();\n\n if (categoryId && isLoaded(typeList)) {\n return createLoaded(typeList.data.filter(({ id }) => id !== categoryId));\n\n } else if (isLoaded(typeList)) {\n return createLoaded([])\n }\n\n return typeList\n};\n","\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport { TLoadable, isLoaded, createLoaded, isUnloaded, createUnloaded, isLoadErrored } from \"../../../../sg-core\";\nimport { selectHavainnotState } from \"../selectors\";\nimport IObservation, { IObservationCounters } from \"../../interfaces/IObservation\";\nimport { createRequestFetchObservationListAction, createRequestFetchObservationPageAction, createUpdateObservationFilters, createSetObservationPaginationPageAction } from \"../actions/observationListActions\";\nimport { useMemo, useCallback, useEffect } from \"react\";\nimport { IObservationFilters } from \"../reducers/observationListReducer\";\nimport { useUsersAppRoles } from \"../../auth/store/authSelectors\";\n\n\n// SELECTORS\nconst selectObservationListState = createSelector(\n selectHavainnotState,\n (workPermit) => workPermit.observationList\n);\n\nconst selectObservationByIdState = createSelector(\n selectObservationListState,\n (state) => state.observations,\n);\n\nconst selectObservationIdList = createSelector(\n selectObservationListState,\n (state) => state.observationList,\n);\n\nconst selectObservationCounters = createSelector(\n selectObservationListState,\n (state) => state.observationCounters,\n);\n\nexport const selectObservationPagination = createSelector(\n selectObservationListState,\n (state) => state.pagination,\n);\n\nconst selectObservationPages = createSelector(\n selectObservationListState,\n (state) => state.pages,\n);\n\nexport const selectObservationFilters = createSelector(\n selectObservationListState,\n (state) => state.filters,\n);\n\nconst selectObservationList = createSelector(\n selectObservationIdList,\n selectObservationByIdState,\n (observationList, observations): TLoadable => {\n if (isLoaded(observationList)) {\n return createLoaded(observationList.data.map((id) => observations[id]));\n }\n return observationList as TLoadable\n },\n);\n\n// HOOKS \n\nexport const useObservationListPage = (): TLoadable => {\n const pagination = useSelector(selectObservationPagination);\n const pages = useSelector(selectObservationPages);\n const page = pages[pagination.page];\n const observations = useSelector(selectObservationByIdState);\n const { filters } = useObservationFilters();\n const dispatch = useDispatch();\n\n const roleString = filters.roles.join(\"\");\n\n\n return useMemo(() => {\n\n if (!page || isUnloaded(page)) {\n\n dispatch(createRequestFetchObservationPageAction());\n return createUnloaded();\n } else if (roleString) {\n\n }\n\n if (isLoaded(page)) {\n const data = page.data.map((id) => observations[id]);\n return createLoaded(data);\n }\n if (isLoadErrored(page)) {\n return page;\n }\n return createUnloaded();\n }, [page, observations, dispatch, roleString]);\n};\n\nexport const useObservationList = (filters?: IObservationFilters): TLoadable => {\n const observations = useSelector(selectObservationList);\n const dispatch = useDispatch();\n\n\n if (isUnloaded(observations)) {\n dispatch(createRequestFetchObservationListAction(filters || { roles: [] }));\n }\n\n return observations;\n}\n\nexport const useObservationCounts = (): TLoadable => {\n const counters = useSelector(selectObservationCounters)\n return counters\n};\n\nexport const useObservationFilters = () => {\n const userRoles = useUsersAppRoles();\n const filters = useSelector(selectObservationFilters);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isLoaded(userRoles) && userRoles.data.join(\"\") !== filters.roles.join(\"\")) {\n dispatch(createUpdateObservationFilters({ roles: userRoles.data }));\n }\n }, [dispatch, userRoles]);\n\n const updateFilters = useCallback((updated: Partial) => {\n dispatch(createUpdateObservationFilters(updated));\n }, [dispatch]);\n\n return useMemo(() => ({\n filters,\n update: updateFilters,\n }), [filters, updateFilters]);\n};\n\nexport const useObservationPagination = () => {\n const pagination = useSelector(selectObservationPagination);\n const dispatch = useDispatch();\n\n const gotoPage = useCallback((page: number) => {\n dispatch(createSetObservationPaginationPageAction(page));\n }, [dispatch]);\n\n const switchPage = useCallback((amount: number) => {\n gotoPage(pagination.page + amount);\n }, [pagination.page, gotoPage]);\n\n const nextPage = useCallback(() => switchPage(1), [switchPage]);\n const prevPage = useCallback(() => switchPage(-1), [switchPage]);\n\n return useMemo(() => ({\n pagination,\n gotoPage,\n nextPage,\n prevPage,\n }), [pagination, gotoPage, nextPage, prevPage]);\n};\n","enum LoadStatus {\n Unloaded,\n Loading,\n Loaded,\n LoadErrored,\n ReLoading,\n}\n\nexport interface ILoadableUnloaded {\n readonly $: LoadStatus.Unloaded;\n}\n\nexport interface ILoadableLoading {\n readonly $: LoadStatus.Loading;\n}\n\nexport interface ILoadableLoaded {\n readonly $: LoadStatus.Loaded;\n readonly data: T;\n}\n\nexport interface ILoadableErrored {\n readonly $: LoadStatus.LoadErrored;\n readonly error: Error;\n}\n\nexport interface ILoadableReloading {\n readonly $: LoadStatus.ReLoading;\n readonly data: T;\n}\n\nexport type TLoadable\n = ILoadableUnloaded\n | ILoadableLoading\n | ILoadableLoaded\n | ILoadableErrored\n | ILoadableReloading;\n\n// CHECK TYPE\n\nexport function isUnloaded(d: TLoadable): d is ILoadableUnloaded {\n return d.$ === LoadStatus.Unloaded;\n}\n\nexport function isLoading(d: TLoadable): d is ILoadableLoading {\n return d.$ === LoadStatus.Loading;\n}\n\nexport function isLoaded(d: TLoadable): d is ILoadableLoaded {\n return d.$ === LoadStatus.Loaded || d.$ === LoadStatus.ReLoading;\n}\n\nexport function isLoadErrored(d: TLoadable): d is ILoadableErrored {\n return d.$ === LoadStatus.LoadErrored;\n}\n\nexport function isReloading(d: TLoadable): d is ILoadableReloading {\n return d.$ === LoadStatus.ReLoading;\n}\n\n// CREATE\n\nexport const createUnloaded = (): ILoadableUnloaded => ({ $: LoadStatus.Unloaded });\n\nexport const createLoading = (): ILoadableLoading => ({ $: LoadStatus.Loading });\n\nexport const createLoaded = (data: T): ILoadableLoaded => ({ $: LoadStatus.Loaded, data });\n\nexport const createLoadErrored = (error: Error): ILoadableErrored => ({ $: LoadStatus.LoadErrored, error });\n\nexport const createReloading = (data: T): ILoadableReloading => ({ $: LoadStatus.ReLoading, data });\n","import { IObservationResult, ICreateObservationBody } from \"../services/observationService\";\nimport IObservation, { INewObservation, isObservationStatus, EObservationStatus } from \"../interfaces/IObservation\";\nimport { gateBooleanToBoolean, booleanToGateBoolean, base64ToJson, jsonToBase64 } from \"../../../sg-core\";\n\n\nconst ObservationMapper = {\n apiToDomain: (api: IObservationResult[\"havainto\"]): IObservation => {\n const { formSchema, ...decodedData } = api.lomakedata ? base64ToJson(api.lomakedata) : { formSchema: {} };\n const processingFormSchema = api.kasittelylomake_jsonschema ? base64ToJson(api.kasittelylomake_jsonschema) : undefined;\n return {\n id: api.id,\n guid: api.guid,\n name: api.otsikko || (api as any).nimi,\n creator: api.kirjaaja,\n formType: api.lomake,\n target: api.alue,\n work: api.tyo,\n status: isObservationStatus(api.tila) ? api.tila : EObservationStatus.Unknown,\n\n // use of decodedData here only for testing before API provides them otuside of formData.\n title: api.otsikko || decodedData.otsikko, //|| api.nimi,\n description: api.kuvaus || decodedData.kuvaus,\n image: api.kuva || decodedData.kuva,\n mapLocation: api.karttasijainti,\n\n formData: {\n otsikko: api.otsikko,\n kuvaus: api.kuvaus,\n on_julkinen: api.on_julkinen,\n ...decodedData,\n sijainti: api.alue,\n kohde: api.alue,\n karttasijainti: { marker: api.karttasijainti },\n kuva: api.kuva ? [{ id: api.kuva, name: \"\" }] : [],\n tila: api.tila, // !important that status is not provided from formData\n },\n formSchema,\n is_public: gateBooleanToBoolean(api.on_julkinen),\n isEditor: api.on_kasittelija ? gateBooleanToBoolean(api.on_kasittelija) : false,\n created_at: api.kirjattu,\n editor: api.kasittelija,\n processingFormSchema,\n searchText: api.lomakedatahaku\n }\n },\n\n domainToApi: (domain: IObservation): IObservationResult[\"havainto\"] => {\n const { otsikko, kuvaus, kuva, sijainti, kohde, tila, on_julkinen, processMarkings, ...restOfFormData } = domain.formData;\n const kuvaId = kuva && kuva[0] ? kuva[0].id : domain.image || \"\";\n\n return {\n id: domain.id,\n guid: domain.guid,\n // nimi: domain.name,\n otsikko: otsikko || domain.title,\n kuvaus: kuvaus || domain.description,\n kuva: kuvaId || undefined,\n karttasijainti: domain.mapLocation || undefined,\n\n kirjaaja: domain.creator,\n lomake: domain.formType,\n tyo: domain.work || undefined,\n tila: tila || domain.status,\n kirjattu: domain.created_at,\n alue: sijainti || kohde || domain.target,\n on_julkinen: booleanToGateBoolean(domain.is_public),\n kasittelija: domain.editor || undefined,\n lomakedata: jsonToBase64({\n formSchema: domain.formSchema,\n ...restOfFormData,\n otsikko,\n kuvaus,\n kuva\n }),\n luokitteluteksti: domain.classificationText,\n kasittelylomake_jsonschema: domain.processingFormSchema ? jsonToBase64(domain.processingFormSchema) : undefined,\n lomakedatahaku: jsonToBase64(domain.searchText as any)\n }\n },\n};\n\nexport default ObservationMapper\n\nexport const NewObservationMapper = {\n domainToApi: (domain: INewObservation): ICreateObservationBody[\"havainto\"] => {\n const kuvaId = domain.formData.kuva && domain.formData.kuva[0] ? domain.formData.kuva[0].id : \"\"\n\n const { sijainti, kohde, ...restOfFormData } = domain.formData\n return {\n otsikko: domain.formData.otsikko || domain.name,\n kuvaus: domain.formData.kuvaus,\n kuva: kuvaId,\n lomake: domain.formType,\n tila: domain.status,\n kirjattu: domain.created_at,\n alue: sijainti || kohde,\n on_julkinen: domain.is_public ? \"Y\" : \"N\",\n lomakedata: jsonToBase64({ formSchema: domain.formSchema, ...restOfFormData }),\n karttasijainti: domain.formData.karttasijainti?.marker,\n lomakedatahaku: jsonToBase64(domain.searchText as any),\n luokitteluteksti: domain.classificationText,\n kasittelylomake_jsonschema: domain.processingFormSchema ? jsonToBase64(domain.processingFormSchema) : undefined\n }\n },\n};","import { IUnparsedContext, IContextResults } from \"../interfaces/IHavainnotContext\";\nimport FormTypeMapper from \"./FormTypeMapper\";\nimport CategoryMapper from \"./CategoryMapper\";\nimport PersonMapper from \"./PersonMapper\";\nimport PermissionMapper from \"./PermissionMapper\";\nimport { IInitialContextResult } from \"../services/contextService\";\n\n\nexport const ContextMapper = {\n apiToDomain: (api: Partial): IUnparsedContext => {\n return {\n formTypes: api.lomakkeet ? api.lomakkeet.map(FormTypeMapper.apiToDomain) : undefined,\n categories: api.kategoriat ? api.kategoriat.map(CategoryMapper.apiToDomain) : undefined,\n persons: api.henkilot ? api.henkilot.map(PersonMapper.apiToDomain) : undefined,\n categoryPermissions: api.oikeustasot ? PermissionMapper.permissionsToDomain(api.oikeustasot) : undefined,\n };\n },\n};\n\n","import { gateNonstandardDateToDate } from \"../../../sg-core\";\nimport IFormDefinition from \"./IFormDefinition\";\nimport IObservation from \"./IObservation\";\nimport IPerson from \"./IPerson\";\n\n\n\n\n\ninterface IKnownObservationEventFormData { };\nexport type IObservationEventFormData = { [key: string]: any } & IKnownObservationEventFormData;\n\n\nexport interface IStandardEvent {\n id: number;\n title: string;\n type?: string;\n description?: string\n observation?: IObservation[\"id\"];\n\n timestamp?: Date | null;\n performer?: IPerson[\"id\"];\n\n historyPackageId?: string;\n pdfGuid?: string;\n\n formData?: IObservationEventFormData;\n formSchema?: IFormDefinition[\"schema\"];\n\n ruleId?: string\n\n creator?: number\n\n\n}\n\nexport type IObservationEvent = IStandardEvent\n\nexport type TCreatePermitEvent = Partial>\n\n\n\nexport interface IObservationEventDTO {\n id: number;\n otsikko?: string;\n tyyppi?: string;\n kuvaus?: string\n lupa?: IObservation[\"id\"];\n\n aikaleima?: string;\n suorittaja?: { id: number, sukunimi: string, etunimi: string }\n\n\n historiapaketti_id?: string;\n historia_pdf_guid?: string;\n\n\n creator?: number\n\n}\n\n\n\n\nexport type TCreateObservationEvent = Partial>\nexport type TCreateObservationEventDTO = Omit\n\n\nexport const ObservationEventMapper = {\n apiToDomain: (api: IObservationEventDTO): IObservationEvent => {\n\n const domain = {\n id: api.id,\n title: api.otsikko || \"\",\n description: api.kuvaus,\n type: api.tyyppi,\n permit: api.lupa,\n\n pdfGuid: api.historia_pdf_guid,\n historyPackageId: api.historiapaketti_id,\n\n\n timestamp: api.aikaleima ? gateNonstandardDateToDate(api.aikaleima) : undefined,\n\n performer: api.suorittaja?.id,\n\n creator: api.creator,\n }\n\n return domain\n },\n\n domainToApi: (domain: IObservationEvent): IObservationEventDTO => {\n\n const api = {\n id: domain.id,\n otsikko: domain.title,\n tyyppi: domain.type,\n kuvaus: domain.description,\n havainto: domain.observation,\n aikaleima: domain.timestamp?.toISOString(),\n historiapaketti_id: domain.historyPackageId,\n historia_pdf_guid: domain.pdfGuid,\n creator: domain.id,\n }\n\n return api\n\n\n },\n\n domainToCreatableApi: (domain: TCreateObservationEvent): TCreateObservationEventDTO => {\n const api = {\n otsikko: domain.title,\n kuvaus: domain.description,\n havainto: domain.observation,\n historiapaketti_id: domain.historyPackageId,\n historia_pdf_guid: domain.pdfGuid,\n tyyppi: domain.type,\n }\n\n return api\n },\n\n\n}","import IObservation from \"../interfaces/IObservation\";\nimport IPerson from \"../interfaces/IPerson\";\nimport { observationToPersonIds } from \"./data.helpers\";\nimport _uniq from \"lodash/uniq\";\nimport { IObservationPackage } from \"../interfaces/ObservationPackage/ObservationPackage\";\nimport { IHavainnotFormSchema } from \"../interfaces/IFormSchema\";\n\n\nexport interface TIdentifiersDTO {\n henkilot: string;\n kohteet: string;\n lomakkeet: string;\n};\n\n\nexport interface TIdentifiers {\n henkilot: Array;\n kohteet: Array;\n lomakkeet: Array;\n};\n\n\nexport const extractFormDataIdentifiers = (formData: IObservation[\"formData\"], schema: IHavainnotFormSchema): TIdentifiers => {\n const identifiers: TIdentifiers = {\n henkilot: [],\n kohteet: [],\n lomakkeet: []\n };\n\n let personIds = observationToPersonIds(formData, schema)\n identifiers.henkilot = personIds;\n\n\n const markings = formData.merkinnat;\n if (markings?.length) {\n let markingPersons: typeof personIds = [];\n markings.forEach((marking) => {\n if (marking.creator) {\n markingPersons = [...markingPersons, marking.creator]\n };\n if (marking.formData.vastaanottaja) {\n markingPersons = [...markingPersons, marking.formData.vastaanottaja]\n };\n });\n identifiers.henkilot = _uniq([...identifiers.henkilot, ...markingPersons]);\n };\n \n\n\n if (formData.kohde || formData.sijainti) {\n identifiers.kohteet = [(formData.kohde || formData.sijainti) as any];\n };\n\n return identifiers\n};\n\nexport const extractFormDataIdentifiersDTO = (formData: IObservation[\"formData\"], formSchema: IHavainnotFormSchema): TIdentifiersDTO | string => {\n const identifiers = extractFormDataIdentifiers(formData, formSchema);\n\n if ((identifiers.henkilot.length + identifiers.kohteet.length + identifiers.lomakkeet.length) === 0) {\n return \"n/a\"\n };\n\n return {\n henkilot: identifiers.henkilot.join(\",\"),\n kohteet: identifiers.kohteet.join(\",\"),\n lomakkeet: identifiers.lomakkeet.join(\",\"),\n }\n}\n\n\nexport const pacakgeToIdentifiers = (json: IObservationPackage): TIdentifiersDTO | string => {\n if (!json.observation.formSchema) {\n throw Error(\"Form configuration is missing\")\n };\n\n const identifiers = extractFormDataIdentifiers(json.observation.formData, json.observation.formSchema);\n\n if (json.observation.editor) {\n identifiers.henkilot = [...identifiers.henkilot, json.observation.editor];\n };\n\n if (json.observation.creator) {\n identifiers.henkilot = [...identifiers.henkilot, json.observation.creator];\n };\n\n if (json.observation.target) {\n identifiers.kohteet = [...identifiers.kohteet, json.observation.target as any];\n };\n\n if (json.observation.formType) {\n identifiers.lomakkeet = [...identifiers.lomakkeet, json.observation.formType as any];\n };\n\n\n if ((identifiers.henkilot.length + identifiers.kohteet.length + identifiers.lomakkeet.length) === 0) {\n return \"n/a\"\n };\n\n return {\n henkilot: identifiers.henkilot.join(\",\"),\n kohteet: identifiers.kohteet.join(\",\"),\n lomakkeet: identifiers.lomakkeet.join(\",\"),\n }\n}","import {\n TResult,\n makeSuccess,\n makeFailure,\n base64ToJson,\n jsonToBase64,\n ISgApiService,\n IEndpoint,\n} from \"../../../sg-core\";\n\nimport ObservationMapper, { NewObservationMapper } from \"../mappers/ObservationMapper\";\nimport IObservation, {\n INewObservation,\n IObservationListSearch,\n IObservationCounters,\n IProcessForm,\n EObservationStatus,\n} from \"../interfaces/IObservation\";\nimport { ContextMapper } from \"../mappers/ContextMapper\";\nimport { IUnparsedContext } from \"../interfaces/IHavainnotContext\";\nimport { IInitialContextResult } from \"./contextService\";\nimport { IPagination } from \"../interfaces/common/IPagination\";\nimport { IObservationFilters } from \"../store/reducers/observationListReducer\";\nimport { IObservationPackage } from \"../interfaces/ObservationPackage/ObservationPackage\";\nimport {\n IObservationEvent,\n IObservationEventDTO,\n ObservationEventMapper,\n TCreateObservationEvent,\n} from \"../interfaces/IObservationEvent\";\nimport { extractFormDataIdentifiersDTO, pacakgeToIdentifiers } from \"../utils/id.helper\";\n\nexport interface IObservationService {\n getObservations(\n search?: IObservationFilters,\n ): Promise>;\n getObservationPage(\n pagination: IPagination,\n search: IObservationFilters,\n ): Promise>;\n getObservationCounts(search?: IObservationFilters): Promise>;\n getObservationsMap(\n search?: IObservationFilters,\n ): Promise>;\n\n getObservation(\n observationGuid: string | number,\n ): Promise>;\n\n saveObservation(\n observation: IObservation,\n ): Promise>;\n createObservation(\n observation: INewObservation,\n ): Promise>;\n\n delegateObservation: (\n opts: IDelegateObservationOptions,\n ) => Promise>;\n\n saveHistoryData: (jsonData: IObservationPackage) => Promise>;\n getHistoryData: (id: string) => Promise>;\n getHistoryDataAnonym: (id: string) => Promise>;\n\n createHistoryEvent: (event: TCreateObservationEvent) => Promise>;\n\n getHistoryEvents: (observationId: number) => Promise>>;\n updateHistoryEvent: (\n eventId: number | string,\n data: Partial,\n ) => Promise>;\n}\n\nexport interface IObservationResult {\n success: true;\n action: \"hae_havainto\";\n havainto: {\n id: number;\n guid: string;\n // nimi: string;\n otsikko: string;\n kuvaus: string;\n kuva?: string;\n kirjattu: string;\n kirjaaja: number;\n lomake: number;\n alue: string;\n tyo?: number | undefined;\n tila: string;\n lomakedata: string;\n on_julkinen: \"Y\" | \"N\";\n on_kasittelija?: \"Y\" | \"N\";\n karttasijainti?: string;\n kasittelija?: number;\n luokitteluteksti?: string;\n kasittelylomake_jsonschema?: string;\n lomakedatahaku: string;\n };\n tapahtuma: { id: number };\n // lomakemaaritykset: any[] comes without base64 schema data\n\n henkilot: IInitialContextResult[\"henkilot\"];\n lomakkeet: IInitialContextResult[\"lomakkeet\"];\n kategoriat: IInitialContextResult[\"kategoriat\"];\n}\n\nexport interface IObservationListResult {\n success: true;\n action: \"tallenna_havainto\";\n havainnot?: any[];\n haku: { tietuemaara: number };\n henkilot: IInitialContextResult[\"henkilot\"];\n lomakkeet: IInitialContextResult[\"lomakkeet\"];\n kategoriat: IInitialContextResult[\"kategoriat\"];\n}\nexport interface IObservationCountsByStatusResult {\n success: true;\n action: \"hae_havaintojen_maarat_tiloittain\";\n havainnot: {\n uusi: { tila: \"uusi\"; maara: number };\n kasittelyssa: { tila: \"kasittelyssa\"; maara: number };\n valmis: { tila: \"valmis\"; maara: number };\n kasitelty: { tila: \"kasitelty\"; maara: number };\n };\n}\nexport interface ICreateObservationBody {\n success: true;\n action: \"tallenna_havainto\";\n havainto: {\n // id: number;\n // nimi: string;\n otsikko: string;\n kuvaus: string;\n kuva?: string;\n kirjattu: string;\n lomakedatahaku: string;\n // kirjaaja: number;\n lomake: number;\n alue: number;\n tyo?: number;\n tila: string;\n lomakedata: string;\n on_julkinen: \"Y\" | \"N\";\n karttasijainti?: string;\n luokitteluteksti?: string;\n kasittelylomake_jsonschema?: string;\n };\n}\n\nexport type IDelegateObservationOptions = {\n loggedInUser: number;\n reciever: number;\n observationGuid: IObservation[\"guid\"];\n};\nexport type TGetObservationPageValue = TResult<{\n totalItems: number;\n observations: IObservation[];\n context: IUnparsedContext;\n}>;\n\nexport interface IObservationService {\n getObservations(\n search?: IObservationFilters,\n ): Promise>;\n getObservationPage(\n pagination: IPagination,\n search: IObservationFilters,\n ): Promise>;\n getObservationCounts(search?: IObservationFilters): Promise>;\n getObservationsMap(\n search?: IObservationFilters,\n ): Promise>;\n\n getObservation(\n observationGuid: string | number,\n ): Promise>;\n\n saveObservation(\n observation: IObservation,\n ): Promise>;\n createObservation(\n observation: INewObservation,\n ): Promise>;\n\n delegateObservation: (\n opts: IDelegateObservationOptions,\n ) => Promise>;\n\n saveHistoryData: (jsonData: IObservationPackage) => Promise>;\n getHistoryData: (id: string) => Promise>;\n getHistoryDataAnonym: (id: string) => Promise>;\n\n createHistoryEvent: (event: TCreateObservationEvent) => Promise>;\n\n getHistoryEvents: (observationId: number) => Promise>>;\n updateHistoryEvent: (\n eventId: number | string,\n data: Partial,\n ) => Promise>;\n}\n\nexport const getObservationService = (\n apiService: ISgApiService,\n Endpoint: IEndpoint,\n anonymousSession___: boolean,\n): IObservationService => {\n let anonymousSession = window.location.pathname.indexOf(\"anonyymi\") > -1;\n\n const makeAnonymousAction = (actionName: string) =>\n anonymousSession ? `${actionName}_anonyymi` : actionName;\n\n const Action: { [K in keyof IObservationService]: string } = {\n getObservations: \"listaa_havainnot\",\n getObservationsMap: \"listaa_kartta_havainnot\",\n getObservationPage: \"listaa_havainnot\",\n getObservationCounts: \"hae_havaintojen_maarat_tiloittain\",\n\n getObservation: makeAnonymousAction(\"hae_havainto\"),\n saveObservation: \"tallenna_havainto\",\n createObservation: makeAnonymousAction(\"lisaa_havainto\"),\n delegateObservation: \"delegoi_havainto\",\n saveHistoryData: makeAnonymousAction(\"tallenna_historiapaketti\"),\n getHistoryData: \"hae_historiapaketti\",\n getHistoryDataAnonym: \"hae_historiapaketti_anonyymi\",\n createHistoryEvent: \"lisaa_tapahtuma\",\n updateHistoryEvent: makeAnonymousAction(\"tallenna_tapahtuma\"),\n getHistoryEvents: \"hae_historia\",\n };\n\n const getObservations = async (\n search?: IObservationListSearch,\n ): Promise> => {\n const action = Action.getObservations;\n\n const body = {\n haku: {\n kategoria: search?.category,\n tila: search?.status,\n roolilista: search?.roles?.join(\",\"),\n\n sivupituus: 999,\n },\n };\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n const havainnot = apiResponse.value.havainnot || [];\n return makeSuccess({\n observations: havainnot.map(ObservationMapper.apiToDomain),\n context: ContextMapper.apiToDomain(apiResponse.value),\n });\n }\n\n return apiResponse;\n };\n\n const getObservationsMap = async (\n search?: IObservationFilters,\n ): Promise> => {\n const action = Action.getObservationsMap;\n\n const body = {\n haku: {\n kategoria: search?.category,\n tila: search?.status,\n roolilista: search?.roles?.join(\",\"),\n sijainti: search?.region,\n kohde: search?.target,\n alue: search?.area,\n sivupituus: 999,\n },\n };\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n const havainnot = apiResponse.value.havainnot || [];\n return makeSuccess({\n observations: havainnot.map(ObservationMapper.apiToDomain),\n context: ContextMapper.apiToDomain(apiResponse.value),\n });\n }\n\n return apiResponse;\n };\n\n /**\n * Fetches a single page of observations according to the given pagination &\n * search filtering oprions\n * @param pagination Object with page & pageSize\n * @param search Filters to use in the search\n */\n const getObservationPage = async (\n pagination: IPagination,\n search?: IObservationFilters,\n ): Promise => {\n const action = Action.getObservationPage;\n\n const body = {\n haku: {\n // Set up pagination\n sivunumero: pagination.page + 1, // Gate pagination is 1-indexed, the app uses 0-indexed\n sivupituus: pagination.pageSize,\n\n // Optional filters\n tila: search?.status,\n teksti: search?.freeText,\n\n sijainti: search?.region,\n kohde: search?.target,\n alue: search?.area,\n\n roolilista: search?.roles.join(\",\"),\n kirjaaja: search?.creator,\n kasittelija: search?.handler,\n kategoria: search?.category,\n arkistorajaus: search?.includeArchived ? \"N\" : \"Y\",\n },\n };\n\n // Fetch the data\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n const { havainnot, haku } = apiResponse.value;\n\n // Map the fetched observation list and the data context into domain objects\n const observations = (havainnot || []).map(ObservationMapper.apiToDomain);\n const context = ContextMapper.apiToDomain(apiResponse.value);\n\n const totalItems = haku.tietuemaara;\n\n return makeSuccess({\n totalItems,\n observations,\n context,\n });\n }\n\n return makeFailure(apiResponse.error);\n };\n\n const getObservationCounts = async (\n search?: IObservationListSearch,\n ): Promise> => {\n const action = Action.getObservationCounts;\n const body = {\n haku: {\n roolilista: search?.roles?.join(\",\"),\n kirjaaja: search?.creator,\n kasittelija: search?.handler,\n },\n };\n const apiResponse = await apiService.sendAction(\n Endpoint,\n action,\n body,\n );\n\n if (apiResponse.isSuccess === true) {\n const { havainnot } = apiResponse.value;\n return makeSuccess({\n new: havainnot.uusi.maara,\n onHandling: havainnot.kasittelyssa.maara,\n ready: havainnot.kasitelty.maara,\n });\n }\n\n return apiResponse;\n };\n\n const getObservation = async (\n observationGuid?: string | number,\n ): Promise> => {\n const action = Action.getObservation;\n const body = {\n havainto: {\n guid: typeof observationGuid === \"string\" ? observationGuid : undefined,\n id: typeof observationGuid === \"number\" ? observationGuid : undefined,\n },\n };\n\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n observation: ObservationMapper.apiToDomain(apiResponse.value.havainto),\n context: ContextMapper.apiToDomain(apiResponse.value),\n });\n } else if (\n process.env.NODE_ENV === \"development\" &&\n ((apiResponse as any).error?.error?.message || (apiResponse as any).error?.message).startsWith(\n \"tunnisterekisterikentän sisältö puuttuu\",\n )\n ) {\n return makeSuccess({\n missingIdRegister: true,\n //@ts-ignore\n observation: ObservationMapper.apiToDomain(\n //@ts-ignore\n apiResponse.error.havainto || apiResponse.error.data.havainto,\n ),\n //@ts-ignore\n context: ContextMapper.apiToDomain(apiResponse.error),\n });\n }\n return apiResponse;\n };\n\n const saveObservation = async (\n observation: IObservation,\n ): Promise> => {\n const action = Action.saveObservation;\n if (!observation.formSchema) {\n throw Error(\"Missing form configurations\");\n }\n\n const body = {\n havainto: ObservationMapper.domainToApi(observation),\n tunnisteet: extractFormDataIdentifiersDTO(observation.formData, observation.formSchema),\n };\n\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n observation: ObservationMapper.apiToDomain(apiResponse.value.havainto),\n eventId: apiResponse.value.tapahtuma.id,\n });\n }\n return apiResponse;\n };\n\n const createObservation: IObservationService[\"createObservation\"] = async (\n observation: INewObservation,\n ) => {\n const action = Action.createObservation;\n if (!observation.formSchema) {\n throw Error(\"Missing form configurations\");\n }\n\n const body = {\n havainto: NewObservationMapper.domainToApi(observation),\n tunnisteet: extractFormDataIdentifiersDTO(observation.formData, observation.formSchema),\n };\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n observation: ObservationMapper.apiToDomain(apiResponse.value.havainto),\n event: apiResponse.value.tapahtuma as any,\n });\n }\n return apiResponse;\n };\n\n const delegateObservation = async (\n opts: IDelegateObservationOptions,\n ): Promise> => {\n const delegateAction = Action.delegateObservation;\n const delegateBody = { havainto: { guid: opts.observationGuid, kasittelija: opts.reciever } };\n\n // create marking about the delegation\n const getObservationResponse = await getObservation(opts.observationGuid);\n if (!getObservationResponse.isSuccess) throw getObservationResponse.error;\n const observation = { ...getObservationResponse.value.observation, editor: opts.reciever };\n\n const markingAboutDelegation: IProcessForm = {\n observationId: observation.id,\n creator: opts.loggedInUser,\n created_at: new Date().toISOString(),\n formType: 0,\n formData: { valitetty: true, vastaanottaja: opts.reciever },\n };\n observation.formData.tila = EObservationStatus.InProgress;\n observation.formData.merkinnat = (observation.formData.merkinnat || []).concat(\n markingAboutDelegation,\n );\n\n const updateObservationResponse = await saveObservation(observation);\n if (!updateObservationResponse.isSuccess) throw updateObservationResponse.error;\n\n const deleagateResponse = await apiService.sendAction(\n Endpoint,\n delegateAction,\n delegateBody,\n );\n\n if (deleagateResponse.isSuccess === true) {\n return makeSuccess({\n observation: ObservationMapper.apiToDomain(deleagateResponse.value.havainto),\n });\n }\n\n return deleagateResponse;\n };\n\n const saveHistoryData: IObservationService[\"saveHistoryData\"] = async (jsonData) => {\n const action = Action.saveHistoryData;\n const body = {\n base64Data: jsonToBase64(jsonData),\n tunnisteet: pacakgeToIdentifiers(jsonData),\n };\n\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ id: apiResponse.value.id });\n }\n return apiResponse;\n };\n\n const getHistoryData: IObservationService[\"getHistoryData\"] = async (id) => {\n const action = Action.getHistoryData;\n const body = { id };\n\n const apiResponse = await apiService.sendAction(Endpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n try {\n const data = base64ToJson(apiResponse.value.base64data);\n return makeSuccess(data);\n } catch (err) {\n return makeFailure(err as Error);\n }\n }\n return apiResponse;\n };\n\n const getHistoryDataAnonym: IObservationService[\"getHistoryDataAnonym\"] = async (id) => {\n const action = Action.getHistoryDataAnonym;\n const body = { id };\n const noToken = true;\n const apiResponse = await apiService.sendAction(Endpoint, action, body, noToken);\n\n if (apiResponse.isSuccess === true) {\n try {\n const data = base64ToJson(apiResponse.value.base64data);\n return makeSuccess({ data, token: apiResponse.value.sid });\n } catch (err) {\n return makeFailure(err as Error);\n }\n }\n return apiResponse;\n };\n\n const createHistoryEvent: IObservationService[\"createHistoryEvent\"] = async (event) => {\n const action = Action.createHistoryEvent;\n const payload = {\n havainto: { id: event.observation },\n tapahtuma: ObservationEventMapper.domainToCreatableApi(event),\n };\n const response = await apiService.sendAction<{ tapahtuma: IObservationEventDTO }>(\n Endpoint,\n action,\n payload,\n );\n if (response.isSuccess) {\n return makeSuccess(ObservationEventMapper.apiToDomain(response.value.tapahtuma));\n }\n return response;\n };\n\n const updateHistoryEvent: IObservationService[\"updateHistoryEvent\"] = async (eventId, data) => {\n const action = Action.updateHistoryEvent;\n let reqBody: any = {\n tapahtuma: {\n id: eventId,\n ...ObservationEventMapper.domainToCreatableApi(data),\n },\n };\n\n if (data.formData && data.formSchema) {\n reqBody = {\n ...reqBody,\n tunnisteet: extractFormDataIdentifiersDTO(data.formData, data.formSchema),\n };\n }\n\n const apiResponse = await apiService.sendAction<{ tapahtuma: IObservationEventDTO }>(\n Endpoint,\n action,\n reqBody,\n );\n if (apiResponse.isSuccess) {\n return makeSuccess(ObservationEventMapper.apiToDomain(apiResponse.value.tapahtuma));\n }\n\n return apiResponse;\n };\n\n const getHistoryEvents: IObservationService[\"getHistoryEvents\"] = async (observationId) => {\n const action = Action.getHistoryEvents;\n const payload = { havainto: { id: observationId } };\n\n const response = await apiService.sendAction<{\n havainto: { tapahtumat: Array };\n }>(Endpoint, action, payload);\n if (response.isSuccess) {\n return makeSuccess(\n (response.value.havainto.tapahtumat || []).map(ObservationEventMapper.apiToDomain),\n );\n }\n return response;\n };\n\n return {\n getObservations,\n getObservationPage,\n getObservation,\n getObservationCounts,\n getObservationsMap,\n\n // markForEditing,\n // unmarkFromEditing,\n\n saveObservation,\n createObservation,\n delegateObservation,\n\n saveHistoryData,\n getHistoryData,\n getHistoryDataAnonym,\n\n updateHistoryEvent,\n getHistoryEvents,\n createHistoryEvent,\n };\n};\n","import { useEffect } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport { TLoadable, isLoaded, isUnloaded, createLoading, isLoadErrored, TSubmittable } from \"../../../../sg-core\";\nimport { selectHavainnotState } from \"../selectors\";\nimport IObservation, { INewObservation } from \"../../interfaces/IObservation\";\nimport { createRequestFetchObservationAction } from \"../actions/observationActions\";\n\n\n// SELECTORS\nconst selectObservationState = createSelector(\n selectHavainnotState,\n (workPermit) => workPermit.observation\n);\n\nexport const selectCurrentObservation = createSelector(\n selectObservationState,\n (state) => state.observation\n);\n\nexport const selectNewObservation = createSelector(\n selectObservationState,\n (state) => state.newObservation,\n)\n\nexport const selectObservationProcessForm = createSelector(\n selectObservationState,\n (state) => state.processForm,\n);\n\nexport const selectDelegationStatus = createSelector(\n selectObservationState,\n (state) => state.delegationStatus,\n);\n\n\n// HOOKS\nexport const useCurrentObservationById = (observationGuid: string | null, observationId?: number): TLoadable => {\n const observation = useSelector(selectCurrentObservation);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isLoadErrored(observation)) {\n dispatch(createRequestFetchObservationAction(observationGuid || observationId || 0));\n }\n }, [observationId])\n\n if (isUnloaded(observation) || (isLoaded(observation) && (observationGuid ? observation.data.guid !== observationGuid : observation.data.id !== observationId))) {\n dispatch(createRequestFetchObservationAction(observationGuid || observationId || 0));\n return createLoading()\n }\n\n return observation as any;\n};\n\nexport const useNewObservation = (): TSubmittable | undefined => useSelector(selectNewObservation)\nexport const useObservationProcessForm = (): TSubmittable<{ [key: string]: any }> | undefined => useSelector(selectObservationProcessForm);\nexport const useDelegationStatus = (): TSubmittable | undefined => useSelector(selectDelegationStatus);\n\n","export enum EPermissionLevel {\n Never,\n OnlyPublic,\n Always,\n}\n\nexport const isPermissionLevel = (v: any): v is EPermissionLevel => (\n [EPermissionLevel.Always, EPermissionLevel.Never, EPermissionLevel.OnlyPublic]\n .includes(v)\n);\n\nexport interface ICategoryPermission {\n id: number;\n categoryId: number;\n roleId: number;\n read: EPermissionLevel;\n edit: EPermissionLevel;\n create: EPermissionLevel;\n}\n\nexport interface IPermissionDTO {\n id: number;\n tunniste?: string;\n kategoria: number;\n rooli: number;\n luku: string;\n muokkaus: string;\n lisays: string;\n}\n\nexport interface IAppRoleDTO {\n id: number;\n nimi: string;\n viitenimi: string;\n nayta_nimitiedot: \"Y\" | \"N\"\n}\n","\n\nimport { IInitialContextData } from '../../services/contextService';\nimport { IUnparsedContext } from '../../interfaces/IHavainnotContext';\nimport { IRole } from '../../interfaces/IHavainnotUser';\nimport { IAppParatemers } from '../../interfaces/AppParatemers';\n\nexport const requestInitalAppContext = \"REQUEST_FETCH_INITIAL_HAVAINNOT20_CONTEXT\";\nconst successFetchInitalAppContext = \"SUCCESS_FETCH_INITIAL_HAVAINNOT20_CONTEXT\";\nconst failureFetchInitalAppContext = \"FAILURE_FETCH_INITIAL_HAVAINNOT20_CONTEXT\";\nexport const updateAppContext = \"UPDATE_HAVAINNOT20_CONTEXT\";\nexport const successAppRoles = \"SUCCESS_APP_ROLES\";\nexport const setAppRoles = \"SET_APP_ROLES\";\n\n// FETCH LOCATION TYPES\nexport interface IRequestFetchInitalAppContext {\n type: typeof requestInitalAppContext;\n}\n\ninterface ISuccessFetchInitalAppContext {\n type: typeof successFetchInitalAppContext;\n payload: IInitialContextData;\n}\n\ninterface IFailureFetchInitalAppContext {\n type: typeof failureFetchInitalAppContext;\n payload: { error: Error };\n}\n\n\nexport interface IUpdateAppContext {\n type: typeof updateAppContext;\n payload: { context: IUnparsedContext }\n}\n\n\nexport interface ISuccessAppRoles {\n type: typeof successAppRoles;\n payload: { roles: IRole[], params: IAppParatemers | null }\n}\n\nexport interface ISetAppRoles {\n type: typeof setAppRoles;\n payload: { roles: IRole[] }\n}\n\nexport type IContextAction\n = IRequestFetchInitalAppContext\n | ISuccessFetchInitalAppContext\n | IFailureFetchInitalAppContext\n | IUpdateAppContext\n | ISuccessAppRoles\n ;\n\n\nexport const createUpdateAppContextAction = (context: IUnparsedContext): IUpdateAppContext => ({\n type: updateAppContext,\n payload: { context }\n});\n\nexport const createRequestFetchInitalAppContext = (): IRequestFetchInitalAppContext => ({\n type: requestInitalAppContext,\n});\n\nexport const createSuccessFetchInitalAppContext = (initialContext: IInitialContextData): ISuccessFetchInitalAppContext => ({\n type: successFetchInitalAppContext,\n payload: { ...initialContext },\n});\n\nexport const createFailureFetchInitalAppContext = (error: Error): IFailureFetchInitalAppContext => ({\n type: failureFetchInitalAppContext,\n payload: { error },\n});\n\n\nexport const createSuccessAppRolesAction = (roles: IRole[], params: IAppParatemers | null): ISuccessAppRoles => ({\n type: successAppRoles,\n payload: { roles, params },\n});\n\nexport const createSetAppRolesAction = (roles: IRole[]): ISetAppRoles => ({\n type: setAppRoles,\n payload: { roles },\n});\n\n\n\n\n","\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport { TLoadable, isLoaded, createLoaded, isUnloaded, createLoading, createUnloaded } from \"../../../../sg-core\";\nimport { selectHavainnotState } from \"../selectors\";\nimport IPerson from \"../../interfaces/IPerson\";\nimport { createRequestFetchPersonsByProcessorRoleAction, createRequestFetchPersons } from \"../actions/personAction\";\nimport { useEffect } from \"react\";\n\n\n// SELECTORS\nconst selectPersonsState = createSelector(\n selectHavainnotState,\n (workPermit) => workPermit.persons\n);\n\nexport const selectPersonByIdState = createSelector(\n selectPersonsState,\n (state) => state.persons,\n);\n\nconst selectPersonIdList = createSelector(\n selectPersonsState,\n (state) => state.personList,\n)\n\nconst selectProcessorPersonIdList = createSelector(\n selectPersonsState,\n (state) => state.personListWithProcessorRole,\n)\n\nconst getLoadedPersons = (personList: number[], byId: { [key: string]: TLoadable }) => {\n return personList.reduce((acc, id) => {\n let person = byId[id]\n return isLoaded(person) ? [...acc, person.data] : acc;\n }, []);\n}\n\nconst selectPersonList = createSelector(\n selectPersonIdList,\n selectPersonByIdState,\n (personList, persons): TLoadable => {\n if (isLoaded(personList)) {\n return createLoaded(getLoadedPersons(personList.data, persons))\n }\n return personList as TLoadable\n },\n);\n\nconst selectProcessorPersonList = createSelector(\n selectProcessorPersonIdList,\n selectPersonByIdState,\n (personList, persons): TLoadable => {\n if (isLoaded(personList)) {\n return createLoaded(getLoadedPersons(personList.data, persons).filter((person) => person));\n }\n return personList as TLoadable\n },\n);\n// HOOKS\nexport const usePersonList = (): TLoadable => useSelector(selectPersonList) as any;\nexport const useProcessorPersonList = (): TLoadable => {\n const dispatch = useDispatch()\n const personList = useSelector(selectProcessorPersonList);\n if (isUnloaded(personList)) {\n dispatch(createRequestFetchPersonsByProcessorRoleAction());\n return createLoading();\n }\n return personList\n};\n\nexport const usePersonById = (personId: number): IPerson | undefined => {\n const persons = useSelector(selectPersonByIdState);\n const person = persons[personId]\n return person && isLoaded(person) ? person.data : undefined;\n};\n\nexport const useLodablePersonById = (personId: number): TLoadable => {\n const persons = useSelector(selectPersonByIdState);\n const dispatch = useDispatch()\n const person = persons[personId]\n\n\n useEffect(() => {\n if (!person || isUnloaded(person)) {\n dispatch(createRequestFetchPersons([personId]))\n }\n }, [dispatch, personId, person]);\n\n if (!person) {\n return createUnloaded()\n }\n\n return person\n};\n/*\nexport const usePersonListByProcessorRole = (): TLoadable => {\n};\n*/","import React from \"react\";\nimport { useLodablePersonById } from \"../../store/selectors/personSelectors\";\nimport { isLoaded, isLoadErrored, isLoading } from \"../../../../sg-core\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface IPersonNameProps {\n personId: number;\n}\n\nexport const PersonName: React.FC = ({ personId }) => {\n\n const { t } = useTranslation();\n const person = useLodablePersonById(personId);\n\n if (!person || isLoadErrored(person)) {\n return {t(\"Tuntematon henkilötunniste\")} '{personId}'\n }\n\n if (isLoading(person)) {\n return ;\n }\n\n return {isLoaded(person) ? person.data.name : \"-\"};\n};","import React, { useEffect, Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAuthContext } from \"../AuthenticationProvider\";\nimport { TFunction } from \"i18next\";\nimport { FullPageLoader } from \"./FullPageLoader\";\n\nconst getTextProps = (t: TFunction) => ({\n startingApp: t(\"Käynnistetään sovellusta\"),\n wait: t(\"Odota\"),\n});\n\nexport const AuthInitializeGuard: React.FC = ({ children }) => {\n const { initialized, loggingIn, initialize } = useAuthContext();\n\n const skipInitialization = [\"tulosta\", \"anonyymi\", \"anonyymilomake\"].reduce(\n (acc, word) => (acc !== true ? window.location.pathname.indexOf(word) > -1 : acc),\n false,\n );\n\n useEffect(() => {\n if (!initialized && !skipInitialization && !loggingIn) {\n initialize();\n }\n }, [initialized, initialize, loggingIn, skipInitialization]);\n\n return initialized || skipInitialization ? <>{children} : ;\n};\n\nconst StillInitializing: React.FC = () => {\n const texts = getTextProps(useTranslation().t);\n\n return (\n \n );\n // return (\n // \n //
{texts.startingApp}
\n //

{texts.wait}

\n //
\n // );\n};\n","import React from \"react\";\nimport { SegmentProps, Segment } from \"semantic-ui-react\";\n\nexport const LoaderSegment: React.FC = (props) => (\n \n);\n","\n\n//\n// Some context: https://stackoverflow.com/questions/43122160/react-router-v4-prevent-transition-with-custom-hook-instead-of-prompt\n//\n\n/**\n * \n * @param dialogKey \n * @param callback \n * @returns \n */\nexport const getUserConfirmation = (dialogKey: string, callback: any) => {\n // use \"message\" as Symbol-based key\n //@ts-ignore\n const dialogTrigger = window[Symbol.for(dialogKey)];\n\n if (dialogTrigger) {\n // pass the callback to delegate\n // to the invoked dialog\n return dialogTrigger(callback);\n }\n\n // Fallback to allowing navigation\n callback(true);\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { EAppLanguages } from \"../utils/localization\";\n\nexport const defaultSettings: ISettings = {\n lang: EAppLanguages.FI\n}\n\nexport interface ISettings {\n lang: EAppLanguages;\n}\n\ninterface IUseSettingsData {\n settings: ISettings;\n setSetting: (key: T, value: ISettings[T]) => void\n}\n\nexport type IUseSettingsHook = () => IUseSettingsData;\n\nexport const useSettings: IUseSettingsHook = () => {\n const { i18n } = useTranslation();\n\n const [settings, setSettings] = useState(defaultSettings)\n\n const setSetting: IUseSettingsData[\"setSetting\"] = (key, value) => {\n if (key === \"lang\") {\n i18n.changeLanguage(value);\n }\n setSettings((prev) => ({ ...prev, [key]: value }))\n }\n\n return {\n settings,\n setSetting\n }\n};\n","import React, { createContext, useContext } from \"react\";\nimport { useSettings, defaultSettings, IUseSettingsHook } from \"../hooks/useSettings\";\n\nconst defaultValue = {\n settings: defaultSettings,\n setSetting: () => { }\n}\nconst context = createContext>(defaultValue);\nconst { Provider } = context;\n\nexport const useSettingsContext = () => useContext(context);\n\n// Provider\nexport const SettingsProvider: React.FC = ({ children }) => {\n const settingsData = useSettings();\n return (\n \n {children}\n \n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { AuthenticationProvider } from \"./@common/auth/AuthenticationProvider\";\nimport { SettingsProvider } from \"./@common/context/SettingsProvider\";\n\n\n/**\n * In this component you can append all the required provider\n * components for the application. The entire app will be wrapped\n * in this component.\n * \n * Injecting dependencies to the contexts will be done within this\n * component.\n */\n\nexport const ContextInjection: React.FC> = ({ children }) => {\n\n return (\n \n \n {children}\n \n \n );\n};\n","import React, { Suspense } from 'react';\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport { AuthInitializeGuard } from './@common/auth/components/AuthInitializeGuard';\nimport { LoaderSegment } from './@common/components/LoaderSegment';\nimport { EnviromentVariables } from './@common/constants/EnviromentVariables';\nimport * as RouterUtils from './@common/utils/ReactRouter.utils';\nimport { ContextInjection } from './ContextInjection';\nimport { RouteSwitch } from './routing';\n\n\ninterface AppProps { };\n\nconst App: React.FC = () => {\n return (\n \n \n\n \n }>\n \n \n \n\n \n \n );\n}\n\nexport default App;\n","\n/**\n * Logs details of CI build process to javascript console.\n */\nexport const logBuildInfo = () => {\n var head = document.getElementsByTagName('head')[0];\n const metaCollection = head.getElementsByTagName(\"meta\");\n const metaElements = Array.from(metaCollection);\n\n console.group(\"BUILD INFO\");\n console.info(\"ID:\", metaElements.find((el) => el.name === \"BUILD_ID\")?.content);\n console.info(\"REF:\", metaElements.find((el) => el.name === \"BUILD_REF\")?.content);\n console.info(\"WORKFLOW:\", metaElements.find((el) => el.name === \"BUILD_WORKFLOW\")?.content);\n console.groupEnd();\n};\n\nexport default logBuildInfo;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React, { Fragment, lazy, Suspense } from 'react';\n\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport { logBuildInfo } from \"./@common/utils/logBuildInfo\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport { I18nextProvider } from 'react-i18next';\nimport I18n from './i18n';\n\nimport \"./i18n\";\nimport { isNoCssPrintView } from './@common/utils/print.helpers';\n\n\nconst MainStyles = lazy(() => import(/* webpackChunkName: 'MainStyles' */\"./MainStyles\"));\n\n\nlogBuildInfo();\nserviceWorker.unregister();\n\nReactDOM.render(\n \n }>\n {!isNoCssPrintView() && }\n \n \n \n \n ,\n document.getElementById(\"root\")\n);","\n\nexport const isNoCssPrintView = () => {\n return window.location.href.indexOf(\"styles=false\") > -1\n}\n","export const gateBooleanToBoolean = (gateBoolean: string) => gateBoolean === \"Y\";\n\nexport const booleanToGateBoolean = (boolean: boolean) => boolean === true ? \"Y\" : \"N\";\n\n\nexport const gateNonstandardDateToDate = (str: string): Date | null => {\n const [date = \"\", time = \"\"] = str.split(\" \");\n\n const [day, month, year] = date.split(\".\");\n const [hour, minute, second] = time.split(\":\");\n\n const values = [day, month, year, hour, minute, second].map((v) => parseInt(v, 10));\n\n const nans = values.filter(Number.isNaN);\n\n if (nans.length > 0) {\n return null;\n }\n\n return new Date(\n values[2],\n values[1] - 1,\n values[0],\n values[3],\n values[4],\n values[5],\n );\n};\n\n\nconst GATE_EMPTY_PROP = \"(null)\";\n\n/**\n * Adds flags for empty values in object, so backend knows that field is empty.\n * @param obj \n */\nexport const emptyPropertiesToGateEmptyProperties = (obj: { [key: string]: any }): { [key: string]: any } => {\n return Object.keys(obj).reduce<{ [key: string]: any }>((acc, key) => {\n let prop = obj[key];\n\n if (typeof prop === \"object\") {\n acc[key] = emptyPropertiesToGateEmptyProperties(prop)\n } else if (prop === null) {\n acc[key] = GATE_EMPTY_PROP;\n } else if (prop === \"\") {\n acc[key] = GATE_EMPTY_PROP;\n } else {\n acc[key] = prop;\n }\n\n return acc;\n }, {})\n};","import { Widget } from \"@rjsf/core\";\n\ntype WidgetObj = { [type: string]: Widget };\n\nexport enum EWidgetType { Read, Write }\n\nexport interface IBuildWidgets {\n read: WidgetObj;\n write: WidgetObj;\n}\n\n/**\n * A class instance which is used as a helper object for combining multiple JSONSchema\n * widgets for both data writing (\"form\") and reading (\"display\"). Widgets can be added\n * to a registry instance with the addWidget and appendWidget function. Once all widgets\n * are added, the build-function can be called and the widget lists can be verified.\n *\n * @export\n * @class WidgetRegistry\n * @example\n * const registry = WidgetRegistry.create();\n *\n * registry.appendWidgets(EWidgetType.Read, defaultReadWidgets);\n * registry.appendWidgets(EWidgetType.Write, defaultWriteWidgets);\n *\n * registry.addWidget(EWidgetType.Read, \"customWidget\", CustomWidgetView);\n * registry.addWidget(EWidgetType.Write, \"customWidget\", CustomWidgetForm);\n *\n * const { read, write } = registry.build();\n */\nexport class WidgetRegistry {\n\n private readWidgets: WidgetObj = {};\n private writeWidgets: WidgetObj = {};\n\n private constructor() { }\n\n /**\n * Creates a new instance of WidgetRegistry, accepts no parameters\n */\n public static create(): WidgetRegistry {\n return new WidgetRegistry();\n }\n\n /**\n * Adds a new widget to the widget registry. Does not check the name, allowing\n * overwrites to happen.\n * @param type Is this a read or a write widget? Use the EWidgetType enum here\n * @param name Name of the widget, the same you use in the schema\n * @param widget The widget component\n */\n public addWidget(type: EWidgetType, name: string, widget: Widget) {\n if (type == EWidgetType.Read) {\n this.readWidgets[name] = widget;\n } else {\n this.writeWidgets[name] = widget;\n }\n }\n\n /**\n * Append widgets as an object. Useful if you already have a set of widgets in an object\n * @param type Read or write widgets?\n * @param widgets String-mapped object where values are Widget components\n */\n public appendWidgets(type: EWidgetType, widgets: WidgetObj) {\n const names = Object.keys(widgets);\n const append = (obj: WidgetObj) => {\n names.forEach((name) => {\n obj[name] = widgets[name];\n });\n };\n\n if (type === EWidgetType.Read) {\n append(this.readWidgets);\n } else {\n append(this.writeWidgets);\n }\n }\n\n /**\n * Verify and build the widget registry.\n * Returns a copy of the current registries for both read and write widgets.\n * @throws Throws an error if any of the widgets does not have a matching read/write pair.\n */\n public build() {\n const writeNames = Object.keys(this.readWidgets);\n const readNames = Object.keys(this.writeWidgets);\n\n const check = (crossCheckArr: string[], type: EWidgetType) => (name: string) => {\n const isInCrossCheckList = crossCheckArr.indexOf(name) !== -1;\n if (!isInCrossCheckList) {\n const isWrite = type === EWidgetType.Write;\n throw new Error(`[CustomWidgetsError]: A widget called '${name}' was defined in ${isWrite ? \"write\" : \"read\"} widgets, but not in ${isWrite ? \"read\" : \"write\"} widgets`);\n }\n };\n\n writeNames.forEach(check(readNames, EWidgetType.Write));\n readNames.forEach(check(writeNames, EWidgetType.Read));\n\n return {\n read: { ...this.readWidgets },\n write: { ...this.writeWidgets },\n };\n }\n}\n","import { IPerson } from \"../models/IPerson\";\n\nexport const HprCacheKeys = {\n HprSettings: \"hpr:HprSettings\",\n PersonList: (ids: Array) => {\n return [\"hpr:PersonList\", ids];\n },\n\n PersonInstance: (id: number) => [\"hpr:Person\", id],\n PersonListInstance: (id: number) => [\"hpr:PersonOnList\", id],\n\n CompanyList: (token: string | null) => {\n return [\"hpr:CompanyList\", token];\n },\n};\n","\n\n\nimport IFormDefinition from '../../interfaces/IFormDefinition'\nimport IFormType from '../../interfaces/IFormType';\n\nexport const requestFormDefinition = \"REQUEST_FETCH_FORM_DEFINITION\";\nconst successFetchFormDefinition = \"SUCCESS_FETCH_FORM_DEFINITION\";\nconst failureFetchFormDefinition = \"FAILURE_FETCH_FORM_DEFINITION\";\n\nexport const requestFormTypes = \"REQUEST_FETCH_FORM_TYPES\";\nconst successFetchFormTypes = \"SUCCESS_FETCH_FORM_TYPES\";\nconst failureFetchFormTypes = \"FAILURE_FETCH_FORM_TYPES\";\nconst appendToFormTypeList = \"APPEND_TO_FORM_TYPE_LIST\";\n\n\n// FETCH FORM CONFIG\nexport interface IRequestFetchFormDefinition {\n type: typeof requestFormDefinition;\n payload: { formId: number }\n}\n\ninterface ISuccessFetchFormDefinition {\n type: typeof successFetchFormDefinition;\n payload: { formDefinition: IFormDefinition };\n}\n\ninterface IFailureFetchFormDefinition {\n type: typeof failureFetchFormDefinition;\n payload: { error: Error };\n}\n\n\nexport interface IRequestFetchFormTypes {\n type: typeof requestFormTypes;\n}\n\ninterface ISuccessFetchFormTypes {\n type: typeof successFetchFormTypes;\n payload: { formTypes: IFormType[] };\n}\n\ninterface IFailureFetchFormTypes {\n type: typeof failureFetchFormTypes;\n payload: { error: Error };\n}\n\ninterface IAppendToFormTypeList {\n type: typeof appendToFormTypeList;\n payload: { formTypes: IFormType[] };\n}\n\n\n\nexport type IFormAction\n = IRequestFetchFormDefinition\n | ISuccessFetchFormDefinition\n | IFailureFetchFormDefinition\n\n | IRequestFetchFormTypes\n | ISuccessFetchFormTypes\n | IFailureFetchFormTypes\n | IAppendToFormTypeList\n ;\n\n\n\nexport const createRequestFetchFormDefinition = (formId: number): IRequestFetchFormDefinition => ({\n type: requestFormDefinition,\n payload: { formId }\n});\n\nexport const createSuccessFetchFormDefinition = (formDefinition: IFormDefinition): ISuccessFetchFormDefinition => ({\n type: successFetchFormDefinition,\n payload: { formDefinition },\n});\n\nexport const createFailureFetchFormDefinition = (error: Error): IFailureFetchFormDefinition => ({\n type: failureFetchFormDefinition,\n payload: { error },\n});\n\n\nexport const createRequestFetchFormTypes = (): IRequestFetchFormTypes => ({\n type: requestFormTypes,\n});\n\nexport const createSuccessFetchFormTypes = (formTypes: IFormType[]): ISuccessFetchFormTypes => ({\n type: successFetchFormTypes,\n payload: { formTypes },\n});\n\nexport const createFailureFetchFormTypes = (error: Error): IFailureFetchFormTypes => ({\n type: failureFetchFormTypes,\n payload: { error },\n});\n\n\nexport const createAppendToFormTypeList = (formTypes: IFormType[]): IAppendToFormTypeList => ({\n type: appendToFormTypeList,\n payload: { formTypes },\n});\n\n\n\n","import { useMemo } from \"react\";\n\nexport const useConst = (fn: () => T) => {\n return useMemo(fn, []);\n};\n","import { useState } from \"react\";\nimport { useConst } from \"./useConst\";\n\ntype UseBoolResult = [\n boolean,\n () => void,\n () => void,\n];\n\nexport const useBool = (initial: boolean = false): UseBoolResult => {\n const [value, setValue] = useState(initial);\n\n const setTrue = useConst(() => () => setValue(true));\n const setFalse = useConst(() => () => setValue(false));\n\n return [\n value,\n setTrue,\n setFalse,\n ];\n};\n","import { IAppUser } from \"../../models/AppUser\";\nimport { EAppLanguages } from \"../../utils/localization\";\n\nexport interface IAuthContext {\n // Properties\n initialized: boolean;\n loggingIn: boolean;\n loginError?: string;\n loggedIn: boolean;\n user?: IAppUser;\n token?: string;\n returnHref?: string;\n lang?: string;\n anonymousSession: boolean;\n applicationGuid?: string | null;\n\n sessionCacheKey: string;\n\n // Methods\n // logIn: (username: string, password: string, remember?: boolean) => void;\n loginWithUser: (user: IAppUser, sid: string) => void;\n loginWithAnonymousToken: (sid: string) => void;\n changeLanguage: (lang: string) => void;\n\n //loginWithCookie: () => void;\n\n logOut: () => void;\n initialize: () => void;\n}\n\nconst noop = () => undefined;\n\nexport const initialAuthContext: IAuthContext = {\n initialized: false,\n loggedIn: false,\n loggingIn: false,\n anonymousSession: false,\n lang: EAppLanguages.FI,\n\n sessionCacheKey: \"null\",\n // logIn: noop,\n loginWithUser: noop,\n loginWithAnonymousToken: noop,\n changeLanguage: noop,\n // loginWithCookie: noop,\n logOut: noop,\n initialize: noop,\n};\n","import React, { createContext, useContext } from \"react\";\nimport { initialAuthContext } from \"./interfaces/IAuthContext\";\nimport { useAuthentication } from \"./hooks/useAuthentication\";\n\n// Context, provider and standard hook\nconst context = createContext(initialAuthContext);\nconst Provider = context.Provider;\nexport const useAuthContext = () => useContext(context);\n\ninterface IAuthProviderProps { }\n\nexport const AuthenticationProvider: React.FC = ({ children }) => {\n const authentication = useAuthentication();\n return (\n \n {children}\n \n );\n};\n","import { TResult, makeSuccess, IEndpoint, ISgApiService } from \"../../../sg-core\";\nimport { IInitialContextResult } from \"./contextService\";\nimport IPerson from \"../interfaces/IPerson\";\nimport PersonMapper from \"../mappers/PersonMapper\";\nimport { DropdownItemProps } from \"semantic-ui-react\";\nimport { HPR } from \"../../endpoints\";\n\nexport interface IGetPersonsResult {\n success: true;\n action: \"etsi_henkilo_nimella\";\n henkilot: any[]\n};\n\nexport interface IPersonsByRoleResult {\n success: true;\n action: \"listaa_henkilot\";\n henkilot: IInitialContextResult[\"henkilot\"];\n};\n\nexport interface IPersonsToDelegateResult {\n success: true;\n action: \"listaa_henkilot\";\n lista: { id: number; teksti: string; meiliosoite: string; }[];\n};\n\nexport interface IPersonService {\n getPersons(personIds: number[]): Promise>;\n getPersonsByRole(role: string): Promise>;\n getPersonsToDelegate: (textInput?: string) => Promise>;\n};\n\nexport const getPersonService = (apiService: ISgApiService, Enpoint: IEndpoint, anonymousSession: boolean): IPersonService => {\n\n const makeAnonymousAction = (actionName: string) => anonymousSession ? `${actionName}_anonyymi` : actionName;\n\n const Action: { [K in keyof IPersonService]: string; } = {\n getPersons: makeAnonymousAction(\"listaa_henkilot_avaimella\"),\n getPersonsByRole: makeAnonymousAction(\"listaa_henkilot\"),\n getPersonsToDelegate: \"etsi_delegointi_kasittelija\",\n };\n\n const getPersons = async (personIds: number[]): Promise> => {\n const action = Action.getPersons;\n const reqBody = {\n avainlista: personIds.join(','),\n // patevyyslista: certList.join(',')\n }\n const apiResponse: any = await apiService.sendAction(HPR, action, reqBody);\n if (apiResponse.isSuccess === true) {\n const persons = (apiResponse.value.henkilot || []).map(PersonMapper.apiToDomain)\n return makeSuccess(persons);\n }\n\n return apiResponse;\n };\n\n\n const getPersonsByRole = async (role: string): Promise> => {\n const action = Action.getPersonsByRole;\n const body = { haku: { rooli: role } };\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(apiResponse.value.henkilot.map(PersonMapper.apiToDomain));\n }\n\n return apiResponse\n };\n\n const getPersonsToDelegate = async (textInput: string = \"\"): Promise> => {\n const action = Action.getPersonsToDelegate;\n const body = { haku: { nimi: textInput } };\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(apiResponse.value.lista.map((opt) => ({\n text: opt.teksti,\n value: opt.id,\n data: {\n id: opt.id,\n fullname: opt.teksti,\n email: opt.meiliosoite\n },\n key: opt.id\n })));\n }\n\n return apiResponse\n };\n\n return {\n getPersons,\n getPersonsByRole,\n getPersonsToDelegate\n };\n};","import { ILocationData } from \"@/sg-kohderekisterit/IKohderekisteri\";\nimport { IFormSchema } from \"./IFormSchema\";\nimport { IImage } from \"./IImage\";\n\n\n\nexport interface IAuditNote {\n id: number;\n key: string;\n title: string;\n details: string;\n images?: IImage[];\n\n relatedObservation?: number;\n submitStatus?: \"submitted\" | \"unsubmitted\" | \"submitError\",\n\n unsubmitted?: false;\n formData?: { [key: string]: any };\n\n fieldTitle: string;\n\n eventTime?: Date | null | string;\n\n creator: number;\n target: ILocationData[\"id\"];\n\n};\n\nexport type INewAuditNote = Omit;\n\nexport interface IUnsubmittedAuditNote {\n id: number;\n key: string;\n unsubmitted: true;\n submitStatus: \"unsubmitted\" | \"submitError\";\n observationSchema?: IFormSchema;\n formType?: number;\n\n formData?: IAuditNoteFormData// { [key: string]: any };\n}\n\nexport type TEditableAuditNote = IAuditNote | IUnsubmittedAuditNote\n\ninterface IControlledObservationFormFields {\n informer: \"ilmottaja\",\n target: \"sijainti\",\n eventTime: \"tapahtuma_aika\",\n title: \"otsikko\",\n details: \"kuvaus\",\n images: \"kuvat\",\n image: \"kuva\"\n};\n\n\nexport const ControlledObservationFormFields: IControlledObservationFormFields = {\n informer: \"ilmottaja\",\n target: \"sijainti\",\n eventTime: \"tapahtuma_aika\",\n title: \"otsikko\",\n details: \"kuvaus\",\n images: \"kuvat\",\n image: \"kuva\"\n};\n\n\nexport type IAuditNoteFormData = Partial & {\n makeObservation?: boolean;\n\n otsikko?: string;\n kuvaus?: string;\n\n sijainti?: ILocationData[\"id\"];\n ilmottaja?: number | string;\n tapahtuma_aika?: Date | null | string;\n\n kuvat?: IImage[];\n kuva?: IImage;\n};\n\n\n","import IAudit, { IAuditFormData, IAuditListFilters } from \"../interfaces/IAudit\";\nimport moment from \"moment\";\nimport IFormType from \"../interfaces/IFormType\";\nimport { LocationDescriptorObject } from \"history\";\nimport { EnviromentVariables } from \"../constants/EnviromentVariables\";\nimport { IFormSchema } from \"../interfaces/IFormSchema\";\nimport { IPerson } from \"../../sg-hpr/models/IPerson\";\nimport { AuditoinnitRouteId } from \"../../routes\";\nimport { getRouteHrefById } from \"../../../routing\";\n\nexport const formatAuditCreatedAt = (createdAt: IAudit[\"createdAt\"]) => {\n if (!createdAt) {\n return null;\n }\n const date = moment(createdAt).format(\"DD.MM.YYYY\");\n // const time = moment(createdAt).format(\"HH:mm\")\n\n return [date].join(\" \");\n};\n\n\n\nexport const resolveStaticFilters = (filters: IAuditListFilters, overwrites: Partial = {}): IAuditListFilters => ({\n ...filters,\n formType: undefined,\n responsiblePerson: undefined,\n status: undefined,\n freeText: \"\",\n ...overwrites\n})\n\nexport const auditToSearchableText = (\n formData: IAuditFormData,\n formSchema: IFormSchema,\n persons: Array\n) => {\n let parts: Array = [];\n parts = parts.concat(persons.map((person) => person.fullname).join(\" \"));\n\n const toValues = (obj: any): string => {\n if (obj instanceof Object) {\n return Object.values(obj).map(toValues).join(\" \")\n }\n const type = typeof obj\n if (type === \"boolean\") return \"\";\n if (type === \"undefined\") return \"\";\n return String(obj)\n };\n\n parts = parts.concat(toValues(formData));\n\n return parts.join(\" \")\n}\n\n\n//\n// Page href makers\n//\n\nexport const makeAuditPdfFileHref = (pdfGuid: string): string => {\n let randomId = Math.random().toString(36).substring(6);\n return `${EnviromentVariables.pdfGenerateUrl}/pdf-generate/file/${pdfGuid}/download?cache-key=${randomId}`\n};\n\n\nexport const makeAnonPermitHref = (packageId: any, printLanguage: any, pdf: boolean = false): string => {\n const baseUrl = EnviromentVariables.production || !pdf ? window.location.origin : EnviromentVariables.developmentPdfGenerationUrl\n return `${baseUrl}${EnviromentVariables.publicUrl || \"\"}${getRouteHrefById(AuditoinnitRouteId.AnonymousAudit, { package: packageId })}?lang=${printLanguage}`\n};\n\nexport const makeFrontPageHref = (): LocationDescriptorObject => {\n return {\n pathname: getRouteHrefById(AuditoinnitRouteId.AuditoinnitFrontPage),\n }\n};\n\nexport const makeUnauthorizedHref = (): LocationDescriptorObject => {\n return makeFrontPageHref()\n};\n\n\nexport const makeNewAuditPageHref = (formType: IFormType[\"guid\"], baseAudit: IAudit[\"guid\"] = \"null\"): LocationDescriptorObject => {\n return {\n pathname: getRouteHrefById(AuditoinnitRouteId.InitializeAuditPage, { formType, baseAudit }),\n }\n};\n\nexport const makeEditAuditPageHref = (audit: IAudit[\"guid\"], initialized = false, clearLocalEdits = false): LocationDescriptorObject => {\n return {\n pathname: getRouteHrefById(AuditoinnitRouteId.EditAuditPage, { audit }),\n state: { initialized, clearLocalEdits }\n }\n};\n\nexport const makeAuditPageHref = (audit: IAudit[\"guid\"]): LocationDescriptorObject => {\n return {\n pathname: getRouteHrefById(AuditoinnitRouteId.AuditPage, { audit }),\n // state: { audit }\n }\n};\n\nexport const makeAuditsPageHref = (filters?: Partial): LocationDescriptorObject => {\n return {\n pathname: getRouteHrefById(AuditoinnitRouteId.AuditsPage),\n state: { filters }\n }\n};\n\n\nexport const makeMapPageHref = (): LocationDescriptorObject => {\n return {\n pathname: getRouteHrefById(AuditoinnitRouteId.MapPage),\n }\n};\n\n\n","import React, { createContext, useContext, PropsWithChildren, useState, useEffect } from \"react\";\nimport { makeFailure, makeSuccess, TResult } from \"@sg-core/index\";\nimport { IFile } from \"../models/IFile\";\nimport { IUploadOptions } from \"../models/IUploadOptions\";\n\n\nconst Context = createContext(undefined);\n\nexport const useFileUploadContext = () => useContext(Context);\n\ninterface IFileUploadProiderProps {\n options: IUploadOptions;\n}\n\nexport const FileUploadProvider: React.FC> = ({ options, children }) => {\n return (\n \n {children}\n \n );\n};\n\nexport const useFileUrl = (fileId: IFile[\"id\"], options?: { height?: number, width?: number }) => {\n const { getFileUrl, getThumbnailUrl } = useFileUploadContext() || {};\n\n const [fileUrl, setFileUrl] = useState>();\n\n const loadFileUrl = async () => {\n try {\n const fetcher = (options?.height || options?.width) ? getThumbnailUrl : getFileUrl;\n if (!fetcher) {\n throw Error(\"missing fetcher\");\n };\n const fileUrl = await fetcher(fileId, options);\n setFileUrl(makeSuccess(fileUrl));\n } catch (error) {\n setFileUrl(makeFailure(error as Error))\n }\n };\n\n useEffect(() => {\n if (!fileUrl) {\n loadFileUrl();\n }\n }, [fileId, fileUrl]);\n\n return {\n loading: !fileUrl,\n loadError: fileUrl?.isFailure ? fileUrl.error.message : undefined,\n reload: loadFileUrl,\n fileUrl: fileUrl?.isSuccess ? fileUrl.value : undefined\n };\n};","import fetch from \"unfetch\";\nimport { IFile } from \"../models/IFile\";\nimport { TResult, makeSuccess, makeFailure } from \"../../sg-core/utils/Result\";\nimport { IFileUpload5Response } from \"../models/UploadResponse\";\n\nexport interface IFileUploadService {\n getFileData(fileId: string): Promise;\n getFileToken(): Promise>;\n uploadFileWithUpload5(file: File): Promise>;\n removeFileWithId(fileId: string): Promise>;\n getFileInfo(fileId: string): Promise>;\n getImageInfo(fileId: string, height?: number): Promise>;\n\n setToken(token: string | null): void;\n getOpts(): IFileUploadServiceOptions;\n}\n\nexport interface IFileUploadServiceOptions {\n url: string;\n}\n\nexport const createFileUploadService = (opts: IFileUploadServiceOptions): IFileUploadService => {\n\n let TOKEN: string | null = null;\n\n const getFileData = async (fileId: string) => {\n const payload = {\n action: \"hae_tiedosto\",\n tiedosto: { guid: fileId },\n };\n\n const headers: any = {};\n\n if (TOKEN) {\n headers.Authorization = `NAS SID ${TOKEN}`;\n }\n\n const response = await fetch(opts.url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n console.error(response);\n }\n\n const fileData = URL.createObjectURL(await response.blob());\n\n return fileData;\n };\n\n const getFileInfo = async (fileId: string) => {\n const payload = {\n action: \"hae_tiedostotiedot\",\n tiedosto: { guid: fileId },\n };\n\n const headers: any = {};\n\n if (TOKEN) {\n headers.Authorization = `NAS SID ${TOKEN}`;\n }\n\n const response = await fetch(opts.url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n console.error(response);\n }\n\n const json = await response.json();\n return makeSuccess(json.tiedosto);\n };\n\n const getImageInfo = async (fileId: string, height?: number) => {\n const payload = {\n action: \"hae_naytekuva\",\n tiedosto: { guid: fileId },\n naytekuva: { korkeus: height || 200 }\n\n };\n\n const headers: any = {};\n\n if (TOKEN) {\n headers.Authorization = `NAS SID ${TOKEN}`;\n }\n\n const response = await fetch(opts.url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n console.error(response);\n }\n\n const json = await response.json();\n return makeSuccess(json.tiedosto);\n };\n\n const getFileToken = async (): Promise> => {\n const headers: any = {\n \"Content-Type\": \"application/json\",\n };\n\n if (TOKEN) {\n headers.Authorization = `NAS SID ${TOKEN}`;\n }\n\n const payload = { action: \"hae_varmenne\" };\n\n try {\n const response = await fetch(opts.url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n const json = await response.json();\n\n const token = json.varmenne;\n\n if (token) {\n return makeSuccess(token);\n }\n return makeFailure(new Error(\"errNoFileTokenReceived\"));\n } catch (error) {\n return makeFailure(error);\n }\n };\n\n const uploadFileWithUpload5 = async (file: File): Promise> => {\n const formData = new FormData();\n formData.append(\"file\", file);\n\n const headers: any = {};\n\n if (TOKEN) {\n headers.Authorization = `NAS SID ${TOKEN}`;\n }\n\n try {\n const response = await fetch(opts.url + \"?action=lataa_tiedosto\", {\n method: \"POST\",\n headers,\n body: formData,\n });\n\n const json: IFileUpload5Response = await response.json();\n\n // We only upload one file, so response should only have one file\n if (json.tiedosto && json.tiedosto[0] && json.success) {\n return makeSuccess({ id: json.tiedosto[0].guid });\n } else {\n return makeFailure(new Error(\"errNoFileInServerResponse\"));\n }\n } catch (error) {\n return makeFailure(error);\n }\n };\n\n const removeFileWithId = async (guid: string): Promise> => {\n const headers: any = {\n \"Content-Type\": \"application/json\",\n };\n\n if (TOKEN) {\n headers.Authorization = `NAS SID ${TOKEN}`;\n }\n\n const payload = {\n action: \"poista_tiedosto\",\n tiedosto: {\n guid\n }\n };\n\n try {\n const response = await fetch(opts.url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n const json = await response.json();\n\n if (json.success) {\n return makeSuccess(json);\n } else if (json.error.message === \"tiedostoa ei löytynyt kannasta\") {\n // If image is not found, we can asume it has been removed previously.\n return makeSuccess(json);\n }\n return makeFailure(new Error(\"errNoFileRemoved\"));\n } catch (error) {\n return makeFailure(error);\n }\n };\n\n const setToken = (token: string | null) => {\n TOKEN = token;\n };\n\n const getOpts = (): IFileUploadServiceOptions => opts;\n\n return {\n getFileData,\n getFileToken,\n uploadFileWithUpload5,\n removeFileWithId,\n setToken,\n getOpts,\n getFileInfo,\n getImageInfo\n };\n};\n","import React, { createContext, useContext, PropsWithChildren, useState, useEffect } from \"react\";\nimport { IFileUploadService, createFileUploadService } from \"../services/FileUploadService\";\nimport { useAuthContext } from \"../../auditoinnit/auth/AuthenticationProvider\";\n\nconst Context = createContext(undefined);\n\nexport const useFileUploadService = () => useContext(Context);\n\ninterface IFileUploadProiderProps {\n url: string;\n token?: string;\n}\n\nexport const FileUploadProvider: React.FC> = ({ url, token: providedToken, children }) => {\n const { token } = useAuthContext()\n\n const [service, setService] = useState(createFileUploadService({ url }));\n if (providedToken) {\n service.setToken(providedToken);\n }\n\n useEffect(() => {\n setService(createFileUploadService({ url }));\n }, [url]);\n\n\n useEffect(() => {\n if (token) {\n service.setToken(token)\n }\n }, [service, token])\n\n return (\n \n {children}\n \n );\n};\n","import { lazy } from \"react\";\nimport { IRouteDefinition, ISubModuleRoutes } from \"../routing\";\n\n\nimport AuditsList from './auditoinnit/views/AuditListPage'\nimport InitializeAuditPage from './auditoinnit/views/InitializeAuditPage';\n\nconst FrontPage = lazy(() => import(/* webpackChunkName: 'FrontPage' */\"./auditoinnit/views/FrontPage\"));\nconst AuditPage = lazy(() => import(/* webpackChunkName: 'AuditPage' */\"./auditoinnit/views/AuditPage\"));\nconst EditAuditPage = lazy(() => import(/* webpackChunkName: 'EditAuditPage' */\"./auditoinnit/views/EditAuditPage\"));\nconst PrintAuditPage = lazy(() => import(/* webpackChunkName: 'AnonymousAuditPage' */\"./auditoinnit/views/PrintAuditPage\"));\nconst MapPage = lazy(() => import(/* webpackChunkName: 'MapPage' */\"./auditoinnit/views/MapPage\"));\n\n\n\n\n\n\nexport enum AuditoinnitRouteId {\n AuditoinnitFrontPage = \"auditoinnit-front-page\",\n NewAuditPage = \"auditoinnit-new-audit\",\n\n AuditPage = \"auditointi-audit-page\",\n OpenAuditPage = \"auditointi-open-audit-page\",\n AnonymousAudit = \"auditointi-anomyous-audit-page\",\n\n EditAuditPage = \"auditointi-edit-audit-page\",\n InitializeAuditPage = \"auditointi-initialize-audit-page\",\n\n AuditsPage = \"auditointi-audits-page\",\n\n AuthRequired = \"auditointi-requires-authentication-page\",\n MissingRole = \"auditointi-missing-correct-role-page\",\n\n ObservationPrint = \"auditointi-observation-print-page\",\n MapPage = \"auditointi-audits-map-page\"\n};\n\n\n\nexport const auditoinnitRoutes: IRouteDefinition[] = [\n {\n id: AuditoinnitRouteId.AuditoinnitFrontPage,\n exact: true,\n path: \"/\",\n render: () => ,\n },\n\n\n {\n id: AuditoinnitRouteId.AuditsPage,\n exact: true,\n path: \"/auditoinnit\",\n render: () => ,\n },\n {\n id: AuditoinnitRouteId.MapPage,\n exact: true,\n path: \"/kartta\",\n render: () => ,\n },\n\n\n {\n id: AuditoinnitRouteId.InitializeAuditPage,\n exact: true,\n path: \"/uusi-auditointi/:formType/:baseAudit\",\n render: () => ,\n },\n {\n id: AuditoinnitRouteId.EditAuditPage,\n exact: true,\n path: \"/auditointi/muokkaa/:audit\",\n render: () => ,\n },\n\n /* {\n id: RouteId.EditAuditPage,\n exact: true,\n path: \"/auditointi/muokkaa\",\n render: () => ,\n },*/\n\n\n {\n id: AuditoinnitRouteId.AuditPage,\n exact: true,\n path: \"/auditointi_:audit\",\n render: () => ,\n },\n\n {\n id: AuditoinnitRouteId.AnonymousAudit,\n requireAuth: false,\n exact: true,\n path: \"/anonyymi/auditointi_:package\",\n component: PrintAuditPage,\n },\n\n\n\n {\n id: AuditoinnitRouteId.ObservationPrint,\n exact: false,\n path: \"/tulosta/havainto\",\n render: () => ,\n },\n {\n id: AuditoinnitRouteId.MissingRole,\n exact: true,\n requireAuth: false,\n path: \"/ei_oikeutta\",\n render: () =>
Ei oikeutta
,\n },\n\n]\n\n\n\n\nconst AuditoinnitRouting: ISubModuleRoutes = {\n prefix: \"auditoinnit\",\n routes: auditoinnitRoutes,\n template: lazy(() => import(/* webpackChunkName: 'AuditoinnitApp' */\"./AuditoinnitApp\")),\n routeId: AuditoinnitRouteId\n}\n\nexport default AuditoinnitRouting","\nimport React from \"react\";\nimport { Segment } from \"semantic-ui-react\";\nimport { FormCategoryIcon } from \"../../formType/FormCategoryIcon\";\nimport { useApplicationConfiguration } from \"../../../configuration/ConfigurationContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { EAuditStatus } from \"../../../interfaces/IAudit\";\nimport { Link } from \"react-router-dom\";\nimport { PersonNameById } from \"../../../../sg-hpr/components/persons/PersonName\";\nimport { AuditStatusLabel } from \"../audit/AuditStatusLabel\";\nimport { makeAuditPageHref, makeEditAuditPageHref } from \"../../../utils/auditoinnit.helpers\";\nimport { IAuditItem } from \"../../../interfaces/IAuditItem\";\nimport { EvaluationsSummary } from \"../../form/EvaluationsSummary/EvaluationsSummary\";\nimport { RenderFormType } from \"../../formType/RenderFormType\";\n\nexport interface AuditListItemProps {\n item: IAuditItem;\n}\n\nexport const AuditListItem: React.FC = ({ item, }) => {\n const { t } = useTranslation();\n const { components: { LocationName } } = useApplicationConfiguration()\n\n const auditHref = makeAuditPageHref(item.guid);\n const editAuditHref = makeEditAuditPageHref(item.guid, false, true);\n\n const texts = {\n informer: t(\"Ilmoittaja\"),\n unnamed: t(\"Nimetön\")\n };\n\n return (\n \n\n\n {/* Heading */}\n \n\n
\n
\n (\n \n )}\n />\n
\n
\n
{item.title || texts.unnamed} #{item.id}
\n
\n
\n \n \n\n {/* Meta */}\n
\n {item.target ?
: null}\n
\n {item.submitter && }\n
\n {item.statics ? (\n \n ) : null}\n
\n\n
\n );\n};\n\n\n","\nimport React, { Fragment } from \"react\";\nimport { AuditListItem } from \"./AuditsListItem\";\nimport { RenderAuditItem } from \"../RenderAuditItem\";\nimport \"./_AuditList.less\";\n\n\ninterface AuditsListProps {\n audits: number[];\n};\n\nexport const AuditsList: React.FC = ({ audits }) => {\n return (\n \n {audits.map((id) => (\n (\n \n )}\n />\n ))}\n \n );\n};\n","import React from \"react\";\nimport { Link } from 'react-router-dom'\nimport { TFunction } from \"i18next\";\nimport { makeAuditPageHref, makeEditAuditPageHref } from \"../../../utils/auditoinnit.helpers\";\nimport { AuditStatusLabel } from \"../audit/AuditStatusLabel\";\nimport { IConfiguredComponents } from \"../../../configuration/Components\";\nimport { EvaluationsSummary } from \"../../form/EvaluationsSummary\";\nimport { RenderFormType } from \"../../formType/RenderFormType\";\nimport { FormCategoryIcon } from \"../../formType/FormCategoryIcon\";\nimport { EAuditStatus } from \"../../../interfaces/IAudit\";\n\n\nconst getTextProps = (t: TFunction) => ({\n audit: t(\"Auditointi\"),\n status: t(\"Tila\"),\n location: t(\"Sijainti\"),\n responsiblePerson: t(\"Vastuuhenkilö\"),\n summary: t(\"Yhteenveto\"),\n});\n\ntype ColumnProps = {\n texts: ReturnType;\n LocationName: IConfiguredComponents[\"LocationName\"],\n PersonName: IConfiguredComponents[\"PersonName\"]\n};\n\ntype ColumnFn = (props: ColumnProps) => any\n\n\n\nconst makeTitleColumn: ColumnFn = ({ texts }) => ({\n Header: texts.audit,\n accessor: \"title\",\n id: \"audit-name\",\n Cell: ({\n row: { original },\n cell: { value: title }\n }: any) => (\n
\n
\n {original.formType ? (\n (\n \n )}\n />\n ) : null}\n
\n \n
\n\n )\n});\n\nconst makeStatusColumn: ColumnFn = ({ texts }) => ({\n Header: texts.status,\n accessor: \"status\",\n id: \"audit-status\",\n Cell: ({ row, cell: { value: status } }: any) => (\n
\n \n
\n )\n});\n\nconst makeLocationColumn: ColumnFn = ({ texts, LocationName }) => ({\n Header: texts.location,\n accessor: \"target\",\n id: \"audit-target\",\n Cell: ({ row, cell: { value: locationId } }: any) => (\n
\n {locationId ? : null}\n
\n )\n});\n\nconst makeResponsiblePersonColumn: ColumnFn = ({ texts, PersonName }) => ({\n Header: texts.responsiblePerson,\n accessor: \"metaData\",\n id: \"audit-responsible-person\",\n Cell: ({ row, cell: { value: { responsiblePerson } } }: any) => {\n\n return (\n
\n { responsiblePerson ? : null}\n
\n )\n }\n});\n\nconst makeSummaryColumn: ColumnFn = ({ texts }) => ({\n Header: texts.summary,\n accessor: \"statics\",\n id: \"audit-statics\",\n Cell: ({ row, cell: { value: statics } }: any) => (\n
\n {statics ? : null}\n
\n )\n});\n\n\n\nconst createColumns = (\n t: TFunction,\n LocationName: IConfiguredComponents[\"LocationName\"],\n PersonName: IConfiguredComponents[\"PersonName\"],\n showColumns = true\n) => {\n const texts = getTextProps(t);\n\n const columnProps: ColumnProps = {\n texts,\n LocationName,\n PersonName\n };\n\n const columns = [\n makeTitleColumn(columnProps),\n makeStatusColumn(columnProps),\n makeLocationColumn(columnProps),\n makeResponsiblePersonColumn(columnProps),\n ];\n\n if (showColumns) {\n columns.push(makeSummaryColumn(columnProps));\n }\n\n return columns;\n\n};\n\nexport default createColumns","import React, { useCallback, memo } from \"react\";\nimport { Pagination, PaginationProps } from \"semantic-ui-react\";\n\ninterface TablePaginationProps extends Omit {\n activePage: number;\n onPageChange: (newPage: number) => void;\n totalPages: number;\n}\n\nconst TablePagination: React.FC = ({\n activePage,\n onPageChange,\n totalPages,\n ...ohterProps\n}) => {\n\n const onChangePage = useCallback((_1, { activePage: newPage }) => {\n // uses 1-indexed pages, but we use zero-indexed\n const next = newPage - 1\n if (typeof next === \"number\") {\n onPageChange(newPage);\n }\n }, [onPageChange]);\n\n return (\n \n );\n};\n\nexport default memo(TablePagination);\n","\nimport React, { Fragment, Suspense, useCallback, useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useTable } from \"react-table\";\nimport { Segment, Table } from \"semantic-ui-react\";\nimport { useApplicationConfiguration } from \"../../../configuration/ConfigurationContext\";\nimport { IPagination } from \"../../../interfaces/common/IPagination\";\nimport { IAuditItem } from \"../../../interfaces/IAuditItem\";\nimport createColumns from \"./TableColumns\";\nimport TablePagination from \"./TablePagination\";\nimport \"./_AuditsTable.less\";\n\ninterface AuditsTableProps {\n columns: any;\n data: IAuditItem[];\n pagination: IPagination;\n goToPage: (page: number) => void;\n};\n\nconst AuditsTableContent: React.FC = ({\n data,\n columns,\n pagination,\n goToPage,\n}) => {\n\n const table = useTable({ columns, data });\n\n const {\n getTableProps,\n getTableBodyProps,\n\n headerGroups,\n prepareRow,\n\n rows\n } = table;\n\n const pages = (pagination.totalItems || 0) / pagination.pageSize\n\n return (\n \n }>\n \n\n \n {headerGroups.map((headerGroup: any) => (\n \n {headerGroup.headers.map((header: any) => (\n \n {header.render(\"Header\")}\n \n ))}\n \n ))}\n \n\n \n {rows.map((row: any, i: number) => {\n prepareRow(row);\n const rowProps = row.getRowProps()\n return (\n \n {row.cells.map((cell: any) => (\n \n {cell.render(\"Cell\")}\n \n ))}\n \n );\n })}\n \n \n\n\n {pages > 1 && (\n \n )}\n\n \n \n );\n};\n\n\n\n\ninterface AuditsTable {\n items: IAuditItem[];\n pagination: IPagination;\n goToPage: (page: number) => void;\n};\n\nexport const AuditsTable: React.FC = ({ items, pagination, goToPage }) => {\n const { t } = useTranslation();\n const { components: { LocationName, PersonName }, showAuditSummary } = useApplicationConfiguration()\n const columns = useMemo(() => createColumns(t, LocationName, PersonName, showAuditSummary), [t]); // eslint-disable-line\n const pageChange = useCallback(goToPage, [])\n return (\n \n )\n}\n","\n\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useAuditsPageItems } from \"../../data/audits/useAuditsPageItems\";\nimport { IPagination } from \"../../interfaces/common/IPagination\";\nimport { IAuditListFilters } from \"../../interfaces/IAudit\";\nimport { IAuditItem } from \"../../interfaces/IAuditItem\";\n\ntype IRenderProps = { items: IAuditItem[], pagination: IPagination, goToPage: (page: number) => void };\n\ninterface RenderAuditPageItemsProps {\n filters: Partial;\n\n initialPagination: IPagination;\n onPaginationChanged: (pagination: IPagination) => void;\n\n render: (props: IRenderProps) => any;\n};\n\nexport const RenderAuditPageItems: React.FC = ({\n filters,\n\n initialPagination,\n onPaginationChanged,\n\n render\n}) => {\n\n const { data: items, pagination, goToPage } = useAuditsPageItems(initialPagination, filters);\n\n useEffect(() => {\n if (JSON.stringify(pagination) !== JSON.stringify(initialPagination)) {\n onPaginationChanged(pagination)\n }\n }, [pagination]);//eslint-disable-line\n return (\n \n {render({ items, pagination, goToPage })}\n \n )\n};\n\n","import { useMemo } from \"react\";\nimport { AuditoinnitCacheKeys } from \"../cacheKeys\";\nimport { IAuditListFilters } from \"../../interfaces/IAudit\";\nimport { IPagination } from \"../../interfaces/common/IPagination\";\nimport { IAuditItem } from \"../../interfaces/IAuditItem\";\nimport { useAuditPage } from \"./useAuditsPage\";\nimport { useSWRCache } from \"../../../sg-core/swr/useSWRCache\";\nimport { useAuthContext } from \"../../auth/AuthenticationProvider\";\n\nlet count = 0;\nexport type IUseAuditPageHook = (pagination?: IPagination, filters?: Partial) => {\n data: IAuditItem[];\n pagination: IPagination;\n fetching: boolean;\n goToPage: (page: number) => void;\n};\n\nexport const useAuditsPageItems: IUseAuditPageHook = (initialPg = { page: 1, pageSize: 20 }, filters = {}) => {\n const { data, fetching, pagination, goToPage } = useAuditPage(initialPg, filters);\n const { token, lang, anonymousSession } = useAuthContext();\n\n const { cache } = useSWRCache();\n const resolveItem = (id: number) => {\n const key = AuditoinnitCacheKeys(token, lang).AuditItemInstance(id);\n return cache.get(key);\n }\n\n const items = useMemo(() => {\n count = count + 1\n return data.map(resolveItem)\n }, [data, cache]); //eslint-disable-line\n\n const rawData = items;\n\n return useMemo(() => ({\n data: rawData,\n pagination,\n goToPage,\n fetching,\n }), [rawData, pagination, fetching, goToPage]);\n};\n","\n\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useAuditPage } from \"../../data/audits/useAuditsPage\";\nimport { IPagination } from \"../../interfaces/common/IPagination\";\nimport { IAuditListFilters } from \"../../interfaces/IAudit\";\n\ntype IRenderProps = { page: number[], pagination: IPagination, goToPage: (page: number) => void };\n\ninterface RenderAuditPageProps {\n filters: Partial;\n\n initialPagination: IPagination;\n onPaginationChanged: (pagination: IPagination) => void;\n\n render: (props: IRenderProps) => any;\n};\n\nexport const RenderAuditPage: React.FC = ({\n filters,\n\n initialPagination,\n onPaginationChanged,\n\n render\n}) => {\n\n const { data: page, pagination, goToPage } = useAuditPage(initialPagination, filters);\n\n useEffect(() => {\n if (JSON.stringify(pagination) !== JSON.stringify(initialPagination)) {\n onPaginationChanged(pagination)\n }\n }, [pagination]); // eslint-disable-line\n\n return (\n \n {render({ page, pagination, goToPage })}\n \n )\n};\n\n","import React, { Suspense, Fragment, useEffect } from \"react\";\nimport { Segment, Header, Grid, Icon, Divider, Responsive, Button, Sidebar, Menu } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PageTemplate } from \"../components/PageTemplate/PageTemplate\";\nimport { AuditsList } from \"../components/audits/AuditsList/index\";\nimport { TFunction } from \"i18next\";\nimport { AuditsTable } from \"../components/audits/AuditsTable\";\nimport { AuditFiltersForm } from \"../components/audits/filters/AudFiltersForm\";\nimport { IAuditListFilters } from \"../interfaces/IAudit\";\nimport { IPagination } from \"../interfaces/common/IPagination\";\nimport { RenderAuditPageItems } from \"../components/audits/RenderAuditPageItems\";\nimport { RenderAuditPage } from \"../components/audits/RenderAuditPage\";\nimport { useBool } from \"../../sg-hooks/useBool\";\nimport TablePagination from \"../components/audits/AuditsTable/TablePagination\";\nimport { useAuditListFiltersContext } from \"../context/AuditFilterContext\";\n\nconst getTextProps = (t: TFunction) => ({\n safetyAudits: t(\"Turvallisuusauditoinnit\"),\n audits: t(\"Auditoinnit\"),\n filterAudits: t(\"Suodata\"),\n close: t(\"Sulje\"),\n noResults: t(\"Ei tuloksia\")\n});\n\ninterface AuditListPageContentProps extends ReturnType {\n filters: IAuditListFilters;\n onFiltersChanged: (newFilters: IAuditListFilters) => void;\n\n pagination: IPagination;\n onPaginationChanged: (pagination: IPagination) => void;\n};\n\n//\n// Desktop\n//\n\nconst AuditListPageDesktopContent: React.FC = ({\n pagination,\n onPaginationChanged,\n\n filters,\n onFiltersChanged,\n ...texts\n}) => {\n return (\n \n \n );\n};\n\n//\n// Mobile\n//\n\nconst AuditListPageMobileContent: React.FC = ({\n\n filters,\n\n pagination,\n\n onFiltersChanged,\n onPaginationChanged,\n ...texts\n}) => {\n\n const [filtersVisible, openFilters, closeFilters] = useBool(false);\n\n return (\n \n \n\n }>\n \n
{texts.filterAudits}
\n \n \n \n );\n };\n\n\n if (loadError) {\n const style = {\n height: 90,\n width: 120,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"rgba(0,0,0,0.1)\"\n };\n return (\n \n \n \n );\n };\n\n return ;\n};\n","import React, { useState } from \"react\";\nimport { Image, Message, ImageProps, Button, Icon, Modal } from \"semantic-ui-react\";\nimport { useFileUploadService } from \"../context/FileUploadServiceContext\";\nimport useFileToken from \"../hooks/useFileToken\";\nimport { isLoaded, isLoadErrored, TLoadable, createLoaded } from \"../../sg-core/models/ILoadable\";\nimport * as Endpoint from \"../../endpoints\";\nimport { getFileUrl, getThumbnailUrl } from \"../utils/image.helpets\";\nimport { makeSuccess, TResult } from \"../../sg-core/utils/Result\";\n\nconst PUBLIC_PATH = process.env.PUBLIC_URL\n\n\nconst LARGE_IMAGE_STYLE = {\n display: \"block\",\n maxWidth: \"100%\",\n maxHeight: \"100%\",\n width: \"auto\",\n height: \"auto\",\n}\n\nconst MODAL_CONTENT_STYLE = {\n minHeight: \"500px\",\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\"\n}\n\nconst LOAD_ERRORED_STYLE = {\n height: 90,\n width: 120,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'rgba(0,0,0,0.1)'\n}\n\n\ninterface IImageProps extends ImageProps {\n id: string;\n thumbnailWidth?: number;\n thumbnailHeight?: number\n}\n\n\nconst Thumbnail: React.FC = ({ id, thumbnailWidth, thumbnailHeight, ...imgProps }) => {\n const fileService = useFileUploadService();\n if (!fileService) { throw new Error(\"ImageView cannot exists without an SG fileupload context.\") };\n\n const [imageFailed] = useState(false)\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const openModal = () => setIsModalOpen(true);\n const closeModal = () => setIsModalOpen(false);\n\n\n const fileToken = createLoaded(\"434\") as TLoadable // useFileToken();\n\n\n if (imageFailed) {\n return (\n \n \n )\n }\n\n\n if (isLoaded(fileToken)) {\n const fileUrl = getFileUrl(\n Endpoint.Upload6.path,\n id,\n fileToken.data\n );\n const thumbnailUrl = getThumbnailUrl(\n Endpoint.Upload6.path,\n id,\n fileToken.data,\n thumbnailHeight,\n thumbnailWidth\n );\n return (\n }\n onOpen={openModal}\n onClose={closeModal}\n >\n \n
\n \n
\n
\n \n \n \n \n );\n }\n\n if (isLoadErrored(fileToken)) {\n // return Kuvan lataus ei onnistunut;\n }\n\n return ;\n\n};\n\nexport default Thumbnail;\n","\n\n\n\n\nexport const getFileUrl = (baseUrl: string, fileId: string, token: string): string => {\n let url = [\n baseUrl,\n `?action=hae_tiedosto&varmenne=${token}`,\n `&tiedosto=${fileId}`\n ]\n return url.join(\"\");\n};\n\n\nexport const getThumbnailUrl = (baseUrl: string, fileId: string, token: string, height?: number, width?: number): string => {\n let url = [\n baseUrl,\n `?action=hae_naytekuva_tiedosto&varmenne=${token}`,\n `&tiedosto=${fileId}`\n ]\n if (width) {\n url = url.concat(`&leveys=${width}`)\n }\n if (height) {\n url = url.concat(`&korkeus=${height}`)\n }\n return url.join(\"\");\n};","import { useMemo } from \"react\";\nimport { useHprService } from \"../../context/HprServiceContext\";\nimport { HprCacheKeys } from \"../cacheKeys\";\nimport { IHprSettings } from \"../../models/IHprSettings\";\nimport useSWR from \"swr\";\n\nexport type IUseHprSettingsHook = () => {\n data: IHprSettings | null;\n fetching: boolean;\n};\n\nexport const useHprSettings: IUseHprSettingsHook = () => {\n\n const service = useHprService();\n const token = service.getToken();\n\n const fetcher = async (): Promise => {\n const settingsData = await service.getHprSettings();\n if (settingsData.isFailure) {\n throw settingsData.error;\n }\n return settingsData.value;\n };\n\n const { data, isValidating } = useSWR(() =>\n [HprCacheKeys.HprSettings, token],\n fetcher,\n {\n suspense: true,\n revalidateOnFocus: false,\n revalidateOnMount: false\n }\n );\n\n const rawData = data || null;\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating,\n }), [rawData, isValidating]);\n\n};","import React from \"react\";\nimport { useCategoryById } from \"../../store/selectors/categorySelectors\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface IFormCategoryNameProps {\n categoryId: number;\n}\n\nexport const FormCategoryName: React.FC = ({ categoryId }) => {\n const { t } = useTranslation();\n const category = useCategoryById(categoryId);\n\n if (!category) {\n return {t(\"Tuntematon\")};\n }\n\n return {category.name};\n};\n","import React from \"react\";\nimport { useFormTypeById } from \"../../store/selectors/formSelectors\";\nimport { FormCategoryName } from \"./FormCategoryName\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface IFormTypeNameProps {\n formTypeId: number;\n}\n\nexport const FormTypeName: React.FC = ({ formTypeId }) => {\n const { t } = useTranslation();\n const type = useFormTypeById(formTypeId);\n\n if (!type) {\n return {t(\"Tuntematon havaintotunniste\")} '{formTypeId}';\n }\n\n return / {type.name};\n}\n","import { AjvError } from \"@rjsf/core\"\nimport { utils } from \"@rjsf/core\"\n\n\nexport const getUiOptions = utils.getUiOptions;\n/**\n * Generates rows from JSONSchema object\n * @param schema \n * @param getLabel \n */\nexport const schemaToRows = (schema: any, getLabel: (subSchema: any) => string = (schema) => schema.title) => {\n const propertyKeys = schema.properties && Object.keys(schema.properties);\n if (!propertyKeys) return;\n\n return propertyKeys.map((propName: string) => {\n let propSchema = (schema as any).properties[propName];\n return { value: propName, text: getLabel(propSchema) || propName }\n })\n}\n\n\nfunction findVal(object: any, key: string): string | undefined {\n var value;\n Object.keys(object).some(function (k) {\n if (k === key) {\n value = object[k];\n return true;\n }\n if (object[k] && typeof object[k] === 'object') {\n value = findVal(object[k], key);\n return value !== undefined;\n }\n });\n return value;\n}\n\n\nexport const uiSchemaToStaticErrors = (uiSchema: { [key: string]: any }): AjvError[] => {\n let errors: AjvError[] = [];\n\n for (var key in uiSchema) {\n if (typeof uiSchema[key] === \"object\") {\n const staticError = findVal(uiSchema[key], '_StaticValidationError')\n if (staticError) {\n errors.push({\n message: staticError,\n name: \"staticError\",\n params: { missingProperty: key },\n property: `.${key}`,\n stack: `.${key} ${staticError}`\n })\n }\n }\n }\n\n return errors;\n}\n\n\n\nexport const gatherStaticErrorsFromUiSchema = async (uiSchema: { [key: string]: any }): Promise => {\n let errs: string[][] = []\n await new Promise((resolve) => {\n for (var key in uiSchema) {\n if (typeof uiSchema[key] === \"object\") {\n const staticError = findVal(uiSchema[key], '_StaticValidationError')\n if (staticError) {\n errs.push([key, staticError])\n }\n }\n }\n //@ts-ignore\n resolve();\n })\n\n return errs\n}\n","import { createSelector } from \"reselect\";\nimport { selectHavainnotState } from \"../../store/selectors\";\nimport { useSelector } from \"react-redux\";\nimport { isLoaded, createLoaded, createLoading } from \"../../../../sg-core\";\nimport { useAppRoles } from \"../../store/selectors/contextSelectors\";\nimport { AuthenticationType } from \"./authReducer\";\nimport { apiService } from \"../../../store\";\n\nexport const selectAuthState = createSelector(\n selectHavainnotState,\n (state) => state.authentication,\n);\n\nexport const selectLoginStatus = createSelector(\n selectAuthState,\n (auth) => auth.authenticationStatus,\n);\n\nexport const selectToken = createSelector(\n selectAuthState,\n (auth) => auth.token,\n);\n\nexport const selectRdr = createSelector(\n selectAuthState,\n (auth) => auth.rdr,\n);\n\n\nexport const selectLanguage = createSelector(\n selectAuthState,\n (auth) => auth.lang,\n);\n\nexport const selectReturnHref = createSelector(\n selectAuthState,\n (auth) => auth.returnHref,\n);\n\nexport const selectLoggedInUserId = createSelector(\n selectAuthState,\n (auth) => auth.loggedInUserId,\n);\n\nexport const selectLoggedInUser = createSelector(\n selectAuthState,\n (auth) => auth.loggedInUser,\n);\n\nexport const selectAnonPackage = createSelector(\n selectAuthState,\n (auth) => auth.anonPackage,\n);\n\n\n\nexport const selectUsersAppRoles = createSelector(\n selectAuthState,\n (auth) => auth.appRoles,\n);\n\nexport const selectLogoutCounter = createSelector(\n selectAuthState,\n (auth) => auth.logoutCounter,\n);\n\n\nexport const selectApiService = createSelector(\n selectAuthState,\n (auth) => {\n if (auth.token) { apiService.setToken(auth.token); };\n const anonymousSession = isLoaded(auth.authenticationStatus) && AuthenticationType.AnonToken === auth.authenticationStatus.data;\n return { apiService, anonymousSession }\n },\n);\n\n\n\n// HOOKS\n\nexport const useLoginStatus = () => useSelector(selectLoginStatus);\n\nexport const useLoggedInUser = () => useSelector(selectLoggedInUser);\n\nexport const useAnonPackage = () => useSelector(selectAnonPackage);\n\nexport const useLoggedInUserRoles = () => {\n const user = useLoggedInUser();\n if (!user) {\n return [];\n }\n return user.roles;\n};\n\nexport const useLoggedInUserRoleRefrences = () => {\n const user = useLoggedInUser()\n return user ? (user.roles || []).map(({ reference }: any) => reference) : []\n};\n\nexport const useUsersAppRoles = () => useSelector(selectUsersAppRoles);\n\nexport const useUsersAppRoleIdList = () => {\n const usersRoles = useSelector(selectUsersAppRoles);\n const appRoles = useAppRoles();\n\n if (isLoaded(usersRoles) && isLoaded(appRoles)) {\n return createLoaded(\n usersRoles.data.map((refrence) => {\n let role = appRoles.data.find((r) => r.reference === refrence);\n return role?.id;\n })\n )\n }\n\n return createLoading()\n};\n\n\n\nexport const useAuthentication = () => {\n const token = useSelector(selectToken);\n const loginStatus = useLoginStatus();\n const loggedIn = isLoaded(loginStatus);\n\n return {\n token,\n loginStatus,\n loggedIn,\n anonymousSession: isLoaded(loginStatus) && loginStatus.data === AuthenticationType.AnonToken\n }\n}\n","import i18n, { InitOptions } from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport finnish from \"./locales/fi.json\";\nimport english from \"./locales/en.json\";\nimport { TTranslations, EAppLanguages } from \"./@common/utils/localization\";\n\nconst resources: TTranslations = {\n [EAppLanguages.FI]: { translations: finnish },\n //@ts-ignore\n [EAppLanguages.EN]: { translations: english }\n};\n\n\nexport const initOptions: InitOptions = {\n resources: resources,\n lng: EAppLanguages.FI,\n fallbackLng: EAppLanguages.FI,\n defaultNS: \"translations\",\n debug: false,\n // keySeparator: false,\n nsSeparator: ':::',\n keySeparator: '::',\n interpolation: {\n escapeValue: false // React is safe from XSS,\n },\n}\n\ni18n\n .use(initReactI18next)\n .init(initOptions);\n\nexport default i18n;","export interface ISuccessResult {\n isSuccess: true;\n isFailure: false;\n value: T;\n}\n\nexport interface IFailureResult {\n isSuccess: false;\n isFailure: true;\n error: Error;\n}\n\nexport type TResult = ISuccessResult | IFailureResult;\n\nexport function makeSuccess(value: T): ISuccessResult {\n return {\n isSuccess: true,\n isFailure: false,\n value,\n };\n}\n\nexport function makeFailure(error: Error | unknown): IFailureResult {\n return {\n isSuccess: false,\n isFailure: true,\n error: error as Error,\n };\n}\n","import { SetStateAction, useCallback, useState } from \"react\";\n\ninterface IStorageItem { data: T, createdAt: number };\n\n\ntype IUseLocalStorageData = [\n T,\n (value: SetStateAction) => void\n];\n\n\nexport const useLocalStorage = (key: string, initialValue: T): IUseLocalStorageData => {\n\n const getInitialState = (): T => {\n try {\n\n const item = window.localStorage.getItem(key);\n\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // console.log(error);\n window.localStorage.removeItem(key)\n return initialValue\n }\n };\n\n\n const [storedValue, setStoredValue] = useState(getInitialState());\n\n const setValue = useCallback((value: SetStateAction) => {\n try {\n\n setStoredValue((prev) => {\n // Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(prev) : value;\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n\n return valueToStore\n });\n\n } catch (error) {\n\n // console.log(error);\n }\n }, [key]);\n\n return [storedValue, setValue];\n}","\n\nconst KEY_PREFIX = \"auditoinnit\"\n\nexport const AUDIT_FILTERS = KEY_PREFIX + \":filters\"\nexport const AUDIT_PAGINATION = KEY_PREFIX + \"::pagination\"\nexport const AUDIT_MAP_FILTERS = KEY_PREFIX + \":map-filters\"\n\n\n\nexport const clearLocalStorage = () => {\n localStorage.removeItem(AUDIT_FILTERS);\n localStorage.removeItem(AUDIT_PAGINATION);\n localStorage.removeItem(AUDIT_MAP_FILTERS);\n};","import { EObservationStatus } from \"../interfaces/IObservation\";\nimport { SemanticCOLORS } from \"semantic-ui-react\";\n\ntype TStatusColors = {\n [key in EObservationStatus]: SemanticCOLORS;\n}\n\nexport const StatusColors: TStatusColors = {\n [EObservationStatus.New]: \"red\",\n [EObservationStatus.InProgress]: \"yellow\",\n [EObservationStatus.Finished]: \"green\",\n [EObservationStatus.Late]: \"black\",\n [EObservationStatus.Unknown]: \"orange\",\n};\n","\n\nexport const SCHEMEA_NS_KEY = \"schemaTranslations\";","import _uniqueId from \"lodash/uniqueId\";\n\nimport { MessageProps } from \"semantic-ui-react\";\nimport { IMessageAction } from \"../actions/messageActions\";\n\nexport interface IAppMessage extends Partial {\n createdAt: Date;\n id: string;\n}\n\nexport type IIncomingAppMessage = Omit\n\nexport const makeAppMessage = (messageProps: Partial) => {\n return ({\n id: _uniqueId(),\n createdAt: new Date(),\n ...messageProps\n })\n}\n\nexport const defaultMessageState: IMessageState = {\n messages: {},\n messageList: []\n};\n\nexport interface IMessageState {\n messages: { [key: string]: IAppMessage | undefined };\n messageList: string[];\n\n};\n\nexport default function MessageReducer(state = defaultMessageState, action: IMessageAction) {\n switch (action.type) {\n\n case \"SHOW_NEW_MESSAGE\": {\n return {\n ...state,\n messages: {\n ...state.messages,\n [action.payload.message.id]: action.payload.message\n },\n messageList: [...state.messageList, action.payload.message.id]\n };\n }\n\n case \"HIDE_MESSAGE\": {\n const messageIndex = state.messageList.indexOf(action.payload.messageId);\n if (messageIndex > -1) {\n // let prevMessages = { ...state.messages };\n\n return {\n ...state,\n messages: {\n ...state.messages,\n [action.payload.messageId]: undefined\n },\n messageList: [\n ...state.messageList.slice(0, messageIndex),\n ...state.messageList.slice(messageIndex + 1)\n ]\n }\n }\n return state\n }\n\n\n default: {\n return state;\n }\n }\n}\n","import { IInitialContextResult } from \"../services/contextService\";\nimport IFormType from \"../interfaces/IFormType\";\n\n\nexport const FormTypeMapper = {\n apiToDomain: (api: IInitialContextResult[\"lomakkeet\"][0]): IFormType => ({\n id: api.id,\n guid: api.guid,\n name: api.nimi,\n category: api.kategoria,\n formDefinition: api.lomakemaaritys,\n workflow: api.tyonkulku,\n referenceName: api.viitenimi\n }),\n};\n\n\nexport default FormTypeMapper\n\n","import { IEvaluations, EEvaluationStatus } from \"../../../auditoinnit/interfaces/IEvaluation\";\nimport { TMapAuditingCheck, TMapAuditingValue } from \"../IMapAuditing\";\n\nexport const CheckItemId = () => {\n\n return \"Liikennemerkki_\" + Math.random().toString(9).substr(2, 4);\n};\n\nexport const isAuditCheckANote = (checkData: TMapAuditingCheck) => {\n return checkData.description?.length || checkData.images?.length;\n};\n\n\nexport const mapAuditingToEvaluations = (value: TMapAuditingValue, basePath: string): IEvaluations => {\n let evaluations: IEvaluations = {};\n\n Object.keys(value).forEach((key) => {\n const status =\n value[key]?.status === \"korjattavaa\" ? EEvaluationStatus.NotOkay\n : value[key]?.status === \"kunnossa\" ? EEvaluationStatus.Okay\n : EEvaluationStatus.Uknown\n\n evaluations[`${basePath}.${key}`] = { status };\n })\n\n return evaluations;\n};","import React, { createContext, useContext, useState } from \"react\";\n\nexport interface IAccordionObjectFieldContext {\n active?: string;\n toggleItem: (key: string) => void\n};\n\nconst context = createContext(null);\nconst { Provider } = context;\n\nexport const useAccordionObjectFieldContext = () => useContext(context);\n\n// Provider\nexport const AccordionObjectFieldProvider: React.FC = ({ children }) => {\n\n const [active, setActive] = useState();\n\n const toggleItem = (key: string) => {\n setActive((prevKey) => prevKey === key ? undefined : key)\n };\n\n const value: IAccordionObjectFieldContext = {\n active,\n toggleItem\n };\n\n return (\n \n {children}\n \n );\n};\n","\n\n\nexport const getRequiredEnviromentVariable = (name: string): string => {\n const variable = process.env[name];\n if (!variable) {\n throw new Error(`[env]: ${name} must be defined\"`);\n };\n return variable\n};\n\nexport const getBooleanEnviromentVariable = (name: string): boolean | undefined => {\n const variable = process.env[name];\n return variable ? variable === \"true\" : undefined\n};\n\n\n\nconst BASE_URL = getRequiredEnviromentVariable(\"REACT_APP_API_BASE_URL\");\nexport const bestGuessHostedInDevelopment = BASE_URL.indexOf(\"test\") > -1 && BASE_URL.indexOf(\"prod\") === -1;\n","import { TKohderekisteriName } from \"@/sg-kohderekisterit/index\";\nimport { getRequiredEnviromentVariable, getBooleanEnviromentVariable } from \"../../sg-core/utils/enviroment.helpers copy\";\n\ninterface IEnviromentVariables {\n production: boolean;\n publicUrl: string;\n apiBaseUrl: string;\n siteLogo: string;\n kohderekisteri: TKohderekisteriName,\n\n showAuditSummary?: boolean,\n\n companyName?: string,\n\n pdfGenerateUrl?: string;\n developmentPdfGenerationUrl?: string;\n\n applicationMenuHref?: string,\n showDeveloperSettings?: boolean,\n\n emailSupport?: boolean,\n smsSupport?: boolean,\n mapSupport?: boolean,\n};\n\nexport const EnviromentVariables: IEnviromentVariables = {\n siteLogo: \"/site-logo.png\",\n kohderekisteri: getRequiredEnviromentVariable(\"REACT_APP_KOHDEREKISTERI\") as TKohderekisteriName,\n apiBaseUrl: getRequiredEnviromentVariable(\"REACT_APP_API_BASE_URL\"),\n\n showAuditSummary: getBooleanEnviromentVariable(\"REACT_APP_SHOW_AUDIT_SUMMARY\"),\n\n companyName: process.env.REACT_APP_COMPANY_NAME,\n\n emailSupport: getBooleanEnviromentVariable(\"REACT_APP_EMAIL_SUPPOR\"),\n smsSupport: getBooleanEnviromentVariable(\"REACT_APP_SMS_SUPPORT\"),\n mapSupport: getBooleanEnviromentVariable(\"REACT_APP_MAP_SUPPORT\"),\n showDeveloperSettings: getBooleanEnviromentVariable(\"REACT_APP_SHOW_DEVELOPER_SETTINGS\"),\n\n applicationMenuHref: process.env.REACT_APP_APPLICATION_MENU_HREF,\n\n production: process.env.NODE_ENV === \"production\",\n publicUrl: process.env.PUBLIC_URL,\n pdfGenerateUrl: process.env.REACT_APP_PDF_GENERATOR_URL,\n developmentPdfGenerationUrl: process.env.REACT_APP_LOCAL_DEVELOPMENT_PDF_URL,\n};","import { gateBooleanToBoolean, gateNonstandardDateToDate } from \"../../sg-core/utils/GateSupport\";\nimport { base64ToJson } from \"../../sg-core/utils/json.helpers\";\nimport { IAuditResult } from \"../services/auditService\";\nimport IAudit, { EAuditStatus, isAuditStatus } from \"../interfaces/IAudit\";\nimport { IAuditItem } from \"../interfaces/IAuditItem\";\n\n\nconst AuditItemMapper = {\n apiToDomain: (api: IAuditResult[\"auditointi\"]): IAuditItem => {\n\n if (!api.lomakedata) { console.warn(\"[AuditMapper.apiToDomain]: Audit api result is missing lomakedata\"); };\n const decodedBase64 = api.lomakedata ? base64ToJson(api.lomakedata) : { formSchema: {}, notes: {} };\n const decodedMetaData = api.metadata ? base64ToJson(api.metadata) : null;\n\n\n const metaData = decodedMetaData || decodedBase64.metaData;\n const statics = decodedMetaData?.statics || decodedBase64?.statics;\n\n\n if (!metaData) { console.warn(\"[AuditMapper.apiToDomain]: Audit is missing fromSchema or metaData\"); };\n\n const status = isAuditStatus(api.tila) ? api.tila : EAuditStatus.Unknown;\n\n const { otsikko: title, alue: target } = api;\n\n return {\n id: api.id,\n guid: api.guid,\n title,\n\n\n target,\n status,\n formType: api.lomake,\n work: api.tyo,\n\n mapLocation: api.karttasijainti,\n\n statics: statics ? statics : undefined,\n\n\n metaData: metaData ? {\n ...metaData,\n responsiblePerson: api.vastuuhenkilo,\n target\n } : {},\n\n submitter: api.kirjaaja,\n submittedAt: api.kirjattu ? gateNonstandardDateToDate(api.kirjattu) || null : null,\n\n removed: gateBooleanToBoolean(api.poistettu)\n }\n },\n\n auditToItem: (audit: IAudit): IAuditItem => {\n const {\n id,\n guid,\n title,\n target,\n status,\n formType,\n work,\n metaData,\n submitter,\n submittedAt,\n removed,\n } = audit\n\n return {\n id,\n guid,\n title,\n target,\n status,\n formType,\n work,\n metaData,\n submitter,\n submittedAt,\n removed,\n statics: audit.statics\n\n }\n },\n\n};\n\nexport default AuditItemMapper\n","import {\n booleanToGateBoolean,\n gateBooleanToBoolean,\n gateNonstandardDateToDate,\n} from \"../../sg-core/utils/GateSupport\";\nimport { base64ToJson, jsonToBase64 } from \"../../sg-core/utils/json.helpers\";\nimport { IAuditMeta, INewAudit } from \"../interfaces/IAudit\";\nimport { IAuditResult, ICreateAuditBody } from \"../services/auditService\";\nimport IAudit, { EAuditStatus, isAuditStatus } from \"../interfaces/IAudit\";\nimport { calculateEvaluationStatics } from \"../utils/calculateEvaluationStatics\";\nimport { resolveEvaluationsData } from \"../utils/evaluation.helpers\";\n\ntype TAuditBase64Data = Pick;\n\nconst AuditMapper = {\n apiToDomain: (api: IAuditResult[\"auditointi\"]): IAudit => {\n if (!api.lomakedata) {\n console.warn(\"[AuditMapper.apiToDomain]: Audit api result is missing lomakedata\");\n }\n\n const decodedBase64 = api.lomakedata ? base64ToJson(api.lomakedata) : { formSchema: {}, notes: {} };\n const decodedMetaData = api.metadata ? base64ToJson(api.metadata) : undefined;\n\n const { formSchema, notes, formData, modifiedAt } = decodedBase64 as TAuditBase64Data;\n\n const metaData = decodedMetaData || decodedBase64.metaData;\n const statics = decodedMetaData?.statics || decodedBase64?.statics;\n\n if (!formSchema || !metaData) {\n console.warn(\"[AuditMapper.apiToDomain]: Audit is missing fromSchema or metaData\");\n }\n\n const status = isAuditStatus(api.tila) ? api.tila : EAuditStatus.Unknown;\n const { otsikko: title, alue: target } = api;\n const mapLocation = api.karttasijainti ? api.karttasijainti : undefined;\n\n if (mapLocation && formData.karttasijainti?.marker) {\n formData.karttasijainti.marker = mapLocation;\n }\n\n return {\n id: api.id,\n guid: api.guid,\n title,\n target,\n status,\n\n mapLocation,\n formType: api.lomake,\n work: api.tyo,\n\n image: metaData.images && metaData.images[0] ? metaData.images[0].id : null,\n\n formData: {\n ...formData,\n },\n\n formSchema,\n\n metaData: metaData\n ? {\n ...metaData,\n responsiblePerson: api.vastuuhenkilo,\n target,\n }\n : {},\n\n notes: notes,\n statics: statics\n ? statics\n : formSchema\n ? calculateEvaluationStatics(resolveEvaluationsData(formData, formSchema) || {})\n : undefined,\n\n submitter: api.kirjaaja,\n submittedAt: api.kirjattu ? gateNonstandardDateToDate(api.kirjattu) || null : null,\n\n creator: api.creator,\n createdAt: api.created ? gateNonstandardDateToDate(api.created) || null : null,\n\n modifier: (api as any).modifier,\n modifiedAt: modifiedAt ? new Date(modifiedAt as any) : null,\n removed: gateBooleanToBoolean(api.poistettu),\n };\n },\n\n domainToApi: (domain: IAudit): IAuditResult[\"auditointi\"] => {\n const valuationData = domain.formSchema\n ? resolveEvaluationsData(domain.formData, domain.formSchema)\n : undefined;\n\n const jsonData: TAuditBase64Data = {\n notes: domain.notes,\n formSchema: domain.formSchema,\n formData: domain.formData,\n modifiedAt:\n typeof domain.modifiedAt === \"string\"\n ? domain.modifiedAt\n : (domain.modifiedAt?.toISOString() as any),\n };\n\n const metaData: IAuditMeta = {\n ...domain.metaData,\n statics: valuationData ? calculateEvaluationStatics(valuationData) : undefined,\n };\n\n return {\n id: domain.id,\n guid: domain.guid,\n otsikko: domain.title,\n\n lomake: domain.formType,\n tyo: domain.work || 1,\n tila: domain.status,\n alue: domain.metaData.target || domain.target || undefined,\n\n vastuuhenkilo: domain.metaData.responsiblePerson,\n\n karttasijainti: domain.formData.karttasijainti?.marker || domain.mapLocation,\n\n kirjaaja: domain.submitter,\n kirjattu: domain.submittedAt?.toISOString(),\n\n created: domain.createdAt?.toISOString(),\n creator: domain.creator,\n\n modified:\n typeof domain.modifiedAt === \"string\" ? domain.modifiedAt : domain.modifiedAt?.toISOString(),\n modifier: domain.modifier,\n\n lomakedata: jsonToBase64(jsonData),\n metadata: jsonToBase64(metaData),\n\n lomakedatahaku: jsonToBase64(domain.__searchableText as any),\n\n poistettu: booleanToGateBoolean(domain.removed),\n };\n },\n};\n\nexport default AuditMapper;\n\nexport const newAuditMapper = {\n domainToApi: (domain: INewAudit): ICreateAuditBody[\"auditointi\"] => {\n const valuationData = domain.formSchema\n ? resolveEvaluationsData(domain.formData, domain.formSchema)\n : undefined;\n\n const jsonData: TAuditBase64Data = {\n notes: domain.notes,\n formSchema: domain.formSchema,\n formData: domain.formData,\n modifiedAt: new Date().toISOString() as any,\n };\n\n const metaData = {\n ...domain.metaData,\n statics: valuationData ? calculateEvaluationStatics(valuationData) : undefined,\n };\n\n return {\n otsikko: domain.title,\n\n lomake: domain.formType,\n tyo: domain.work || 1,\n tila: EAuditStatus.Draft,\n alue: domain.metaData.target || domain.target || undefined,\n karttasijainti: domain.formData.karttasijainti?.marker,\n\n vastuuhenkilo: domain.metaData.responsiblePerson,\n\n created: domain.createdAt?.toISOString(),\n creator: domain.creator,\n\n metadata: jsonToBase64(metaData),\n lomakedata: jsonToBase64(jsonData),\n lomakedatahaku: jsonToBase64(domain.__searchableText as any),\n };\n },\n};\n","import { IUnparsedContext } from \"../interfaces/IAuditoinnitContext\";\nimport FormTypeMapper from \"./FormTypeMapper\";\nimport CategoryMapper from \"./CategoryMapper\";\nimport PermissionMapper from \"./PermissionMapper\";\nimport { IInitialContextResult } from \"../services/contextService\";\nimport { PersonMapper } from \"../../sg-hpr/models/IPerson\";\n\n\nexport const ContextMapper = {\n apiToDomain: (api: Partial): IUnparsedContext => {\n return {\n formTypes: api.lomakkeet ? api.lomakkeet.map(FormTypeMapper.apiToDomain) : undefined,\n categories: api.kategoriat ? api.kategoriat.map(CategoryMapper.apiToDomain) : undefined,\n persons: api.henkilot ? api.henkilot.map(PersonMapper.apiToDomain) : undefined,\n categoryPermissions: api.oikeustasot ? PermissionMapper.permissionsToDomain(api.oikeustasot) : undefined,\n };\n },\n};\n\n","import { TResult, makeSuccess, makeFailure } from \"../../sg-core/utils/Result\";\nimport { ISgApiService } from \"../../sg-core/services/ApiService2\";\n\nimport { IInitialContextResult } from \"./contextService\";\nimport { IEndpoint } from \"../../sg-core/services/EndpointService\";\nimport IAudit, { INewAudit, IAuditListSearch, IAuditListFilters, TAuditCounters, EAuditStatus } from \"../interfaces/IAudit\";\nimport AuditMapper, { newAuditMapper } from \"../mappers/AuditMapper\";\nimport { IPagination } from \"../interfaces/common/IPagination\";\nimport { ContextMapper } from \"../mappers/ContextMapper\";\nimport { IUnparsedContext } from \"../interfaces/IAuditoinnitContext\";\nimport { IAuditItem } from \"../interfaces/IAuditItem\";\nimport AuditItemMapper from \"../mappers/AuditItemMapper\";\nimport { AuditHistoryEventMapper, IAuditHistoryEvent, IAuditHistoryEventDTO, INewAuditHistoryEvent, NewAuditHistoryEventMapper } from \"../interfaces/IAuditHistoryEvent\";\nimport { base64ToJson, jsonToBase64 } from \"../../sg-core/utils/json.helpers\";\nimport { IAudtiPackage } from \"../interfaces/IAuditPackage\";\nimport { extractFormDataIdentifiersDTO, extractIdentifiersDTOFromAudit, TIdentifiersDTO } from \"../utils/id.helper\";\n\nexport interface IAuditService {\n getAudit: (auditGuid: IAudit[\"guid\"]) => Promise>\n getAuditItem: (auditGuid: IAudit[\"guid\"]) => Promise>\n\n getAudits: (search?: IAuditListSearch) => Promise>\n getMapAudits: (search?: IAuditListFilters) => Promise>\n getAuditPage: (pagination: IPagination, search?: IAuditListFilters | undefined) => Promise>\n getAuditCounts(search?: IAuditListFilters): Promise>;\n\n removeAudit(audit: IAudit): Promise>;\n\n completeAudit(audit: IAudit): Promise>;\n saveAuditDraft(audit: IAudit): Promise>;\n saveAudit(audit: IAudit): Promise>;\n\n createAudit(audit: INewAudit): Promise>;\n\n createHistoryEvent(event: INewAuditHistoryEvent): Promise>;\n\n saveHistoryData: (jsonData: IAudtiPackage) => Promise>;\n getHistoryDataAnonym: (id: string) => Promise>;\n\n}\n\nexport interface IAuditResult {\n success: true;\n action: \"hae_havainto\";\n auditointi: {\n id: number;\n guid: string;\n otsikko: string;\n\n lomake: number;\n alue: string | null | undefined;\n tyo?: number;\n tila: string;\n lomakedata: string;\n metadata: string;\n\n kirjattu: string | undefined;\n kirjaaja?: number;\n\n karttasijainti?: string;\n\n vastuuhenkilo?: number;\n\n created?: string\n creator: number;\n\n modified?: string;\n modifier?: number;\n poistettu: \"Y\" | \"N\" | \"\";\n lomakedatahaku?: string\n }\n henkilot: IInitialContextResult[\"henkilot\"];\n lomakkeet: IInitialContextResult[\"lomakkeet\"];\n kategoriat: IInitialContextResult[\"kategoriat\"];\n}\n\nexport interface IAuditCountsByStatusResult {\n success: true;\n action: \"hae_auditointien_maarat_tiloittain\";\n auditoinnit: {\n [EAuditStatus.Draft]: { tila: EAuditStatus.Draft; maara: number };\n [EAuditStatus.Finished]: { tila: EAuditStatus.Finished; maara: number };\n };\n\n}\nexport interface IAuditListResult {\n success: true;\n action: \"tallenna_havainto\";\n auditoinnit?: any[];\n haku: { tietuemaara: number };\n henkilot: IInitialContextResult[\"henkilot\"];\n lomakkeet: IInitialContextResult[\"lomakkeet\"];\n kategoriat: IInitialContextResult[\"kategoriat\"];\n}\n\nexport interface ICreateAuditBody {\n success: true;\n action: \"tallenna_havainto\";\n auditointi: Omit;\n}\n\n\n\nexport const getAuditService = (apiService: ISgApiService, Enpoint: IEndpoint, anonymousSession: boolean): IAuditService => {\n\n const makeAnonymousAction = (actionName: string) => anonymousSession ? `${actionName}_anonyymi` : actionName;\n\n\n const Action: { [K in keyof IAuditService]: string; } = {\n getAudit: \"hae_auditointi\",\n getAuditItem: \"hae_auditointi\",\n getAudits: \"listaa_auditoinnit\",\n getMapAudits: \"listaa_kartta_auditoinnit\",\n getAuditPage: \"listaa_auditoinnit\",\n getAuditCounts: \"hae_auditointiten_maarat_tiloittain\",\n completeAudit: \"tallenna_auditointi\",\n saveAuditDraft: \"tallenna_auditointi\",\n saveAudit: \"tallenna_auditointi\",\n createAudit: \"lisaa_auditointi\",\n removeAudit: \"poista_auditointi\",\n createHistoryEvent: \"lisaa_tapahtuma\",\n saveHistoryData: \"tallenna_historiapaketti\",\n getHistoryDataAnonym: \"hae_historiapaketti_anonyymi\",\n }\n\n\n\n const getAudit: IAuditService[\"getAudit\"] = async (auditGuid) => {\n const action = Action.getAudit;\n const reqBody = { auditointi: { guid: auditGuid, } };\n const apiResponse = await apiService.sendAction<{ auditointi: any }>(Enpoint, action, reqBody);\n\n if (apiResponse.isSuccess === true) {\n const audit = AuditMapper.apiToDomain(apiResponse.value.auditointi);\n return makeSuccess({\n audit,\n context: {}\n });\n } else if (\n process.env.NODE_ENV === \"development\" &&\n (apiResponse as any).error?.message?.startsWith(\"tunnisterekisterikentän sisältö puuttuu\")\n ) {\n\n return makeSuccess({\n audit: {\n missingIdRegister: true, ...AuditMapper.apiToDomain((apiResponse as any).error.data.auditointi)\n },\n context: {}\n });\n }\n\n return apiResponse;\n };\n\n\n const getAuditItem: IAuditService[\"getAuditItem\"] = async (auditGuid) => {\n const action = Action.getAuditItem;\n const reqBody = { auditointi: { guid: auditGuid, } };\n const apiResponse = await apiService.sendAction<{ auditointi: any }>(Enpoint, action, reqBody);\n\n if (apiResponse.isSuccess === true) {\n const audit = AuditItemMapper.apiToDomain(apiResponse.value.auditointi);\n return makeSuccess(audit);\n }\n return apiResponse;\n };\n\n\n const getAudits: IAuditService[\"getAudits\"] = async (search) => {\n const action = Action.getAudits;\n const body = {\n haku: {\n kategoria: search?.category,\n roolilista: search?.roles?.join(\",\"),\n tila: \"valmis\"\n }\n };\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n const auditoinnit = apiResponse.value.auditoinnit || [];\n return makeSuccess({\n audits: auditoinnit.map(AuditItemMapper.apiToDomain),\n context: ContextMapper.apiToDomain(apiResponse.value),\n });\n }\n\n return apiResponse\n };\n\n const getMapAudits: IAuditService[\"getMapAudits\"] = async (search) => {\n const action = Action.getMapAudits;\n const body = {\n haku: {\n\n kategoria: search?.category,\n roolilista: search?.roles?.join(\",\"),\n tila: \"valmis\",\n //@ts-ignore\n lomake: search?.formType,\n //@ts-ignore\n vastuuhenkilo: search?.responsiblePerson,\n sijainti: search?.region,\n kohde: search?.target,\n alue: search?.area,\n\n }\n };\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n const auditoinnit = apiResponse.value.auditoinnit || [];\n return makeSuccess({\n audits: auditoinnit.map(AuditItemMapper.apiToDomain),\n context: ContextMapper.apiToDomain(apiResponse.value),\n });\n }\n\n return apiResponse\n };\n\n\n /**\n * Fetches a single page of observations according to the given pagination &\n * search filtering oprions\n * @param pagination Object with page & pageSize\n * @param search Filters to use in the search\n */\n const getAuditPage: IAuditService[\"getAuditPage\"] = async (pagination, search) => {\n const action = Action.getAuditPage;\n\n const body = {\n haku: {\n\n // Set up pagination\n sivunumero: pagination.page,\n sivupituus: pagination.pageSize,\n\n // Optional filters\n tila: search?.status,\n teksti: search?.freeText,\n vastuuhenkilo: search?.responsiblePerson,\n\n sijainti: search?.region,\n kohde: search?.target,\n alue: search?.area,\n\n lomake: search?.formType,\n\n roolilista: search?.roles && Array.isArray(search?.roles) ? search?.roles.join(\",\") : [],\n kirjaaja: search?.creator,\n kategoria: search?.category\n },\n };\n\n // Fetch the data\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n const { auditoinnit, haku } = apiResponse.value;\n // Map the fetched observation list and the data context into domain objects\n const audits = (auditoinnit || []).map(AuditItemMapper.apiToDomain);\n const context = ContextMapper.apiToDomain(apiResponse.value);\n const totalItems = haku.tietuemaara;\n return makeSuccess({\n totalItems,\n audits,\n context,\n });\n }\n\n return makeFailure(apiResponse.error);\n };\n\n\n const getAuditCounts: IAuditService[\"getAuditCounts\"] = async (search) => {\n const action = Action.getAuditCounts;\n const body = {\n haku: {\n roolilista: search?.roles?.join(\",\"),\n kirjaaja: search?.creator,\n // kasittelija: search?.handler,\n sijainti: search?.region,\n kohde: search?.target,\n alue: search?.area,\n\n }\n }\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n const { auditoinnit } = apiResponse.value\n return makeSuccess({\n [EAuditStatus.Finished]: auditoinnit[EAuditStatus.Finished].maara,\n [EAuditStatus.Draft]: auditoinnit[EAuditStatus.Draft].maara,\n [EAuditStatus.Unknown]: 0\n });\n }\n\n return apiResponse\n };\n\n\n const makeAuditBody = (audit: IAudit, mapper: (audit: IAudit) => any) => {\n if (!audit.formSchema) {\n throw Error(\"Missing form configurations\")\n }\n\n const body: { auditointi: any, tunnisteet: TIdentifiersDTO | string; } = {\n auditointi: {\n ...mapper(audit),\n },\n tunnisteet: extractIdentifiersDTOFromAudit(audit)\n };\n\n return body;\n }\n\n\n const completeAudit: IAuditService[\"completeAudit\"] = async (audit) => {\n const action = Action.completeAudit;\n const body = makeAuditBody({ ...audit, status: EAuditStatus.Finished }, AuditMapper.domainToApi);\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ audit: AuditMapper.apiToDomain(apiResponse.value.auditointi) });\n }\n return apiResponse\n };\n\n const saveAuditDraft: IAuditService[\"saveAuditDraft\"] = async (audit) => {\n let data = { ...audit };\n data.modifiedAt = new Date();\n\n const action = Action.saveAuditDraft;\n const body = makeAuditBody({ ...audit, status: EAuditStatus.Draft }, AuditMapper.domainToApi);\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ audit: AuditMapper.apiToDomain(apiResponse.value.auditointi) });\n }\n return apiResponse\n };\n\n\n const saveAudit: IAuditService[\"saveAudit\"] = async (audit) => {\n const action = Action.saveAudit;\n const body = makeAuditBody(audit, AuditMapper.domainToApi);\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ audit: AuditMapper.apiToDomain(apiResponse.value.auditointi) });\n }\n return apiResponse\n };\n\n\n\n const createAudit: IAuditService[\"createAudit\"] = async (audit) => {\n const action = Action.createAudit;\n const body = makeAuditBody({ ...audit, status: EAuditStatus.Draft } as any, newAuditMapper.domainToApi);\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ audit: AuditMapper.apiToDomain(apiResponse.value.auditointi) });\n }\n return apiResponse\n };\n\n\n const removeAudit: IAuditService[\"removeAudit\"] = async (audit) => {\n const action = Action.removeAudit;\n const body = {\n auditointi: {\n id: audit.id,\n }\n }\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(AuditMapper.apiToDomain(apiResponse.value.auditointi));\n }\n return apiResponse;\n };\n\n\n\n const createHistoryEvent: IAuditService[\"createHistoryEvent\"] = async (newEvent) => {\n const action = Action.createHistoryEvent\n const body = {\n tapahtuma: NewAuditHistoryEventMapper.domainToApi(newEvent),\n tunnisteet: \"n/a\"\n }\n const apiResponse = await apiService.sendAction<{ tapahtuma: IAuditHistoryEventDTO }>(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ event: AuditHistoryEventMapper.apiToDomain(apiResponse.value.tapahtuma) });\n }\n return apiResponse\n };\n\n\n const saveHistoryData: IAuditService[\"saveHistoryData\"] = async (jsonData) => {\n const action = Action.saveHistoryData;\n const body = {\n base64Data: jsonToBase64(jsonData),\n tunnisteet: {\n auditoinnit: [jsonData.audit.id].join(\",\"),\n kohteet: Object.keys(jsonData.data.locations).join(\",\"),\n henkilot: Object.keys(jsonData.data.persons).join(\",\"),\n yritykset: Object.keys(jsonData.data.persons).map((key) => jsonData.data.persons[key].company).filter(((comp) => comp)).join(\",\")\n }\n };\n\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ id: apiResponse.value.id })\n }\n return apiResponse\n }\n\n\n const getHistoryDataAnonym: IAuditService[\"getHistoryDataAnonym\"] = async (id) => {\n const action = Action.getHistoryDataAnonym;\n const body = { id };\n const noToken = true;\n const apiResponse = await apiService.sendAction(Enpoint, action, body, noToken);\n\n if (apiResponse.isSuccess === true) {\n try {\n const data = base64ToJson(apiResponse.value.base64data);\n return makeSuccess({ data, sid: apiResponse.value.sid })\n } catch (err) {\n return makeFailure(err);\n }\n }\n return apiResponse;\n }\n\n\n\n\n\n return {\n getAudit,\n getAuditItem,\n getAudits,\n getMapAudits,\n getAuditPage,\n getAuditCounts,\n\n completeAudit,\n createAudit,\n saveAuditDraft,\n saveAudit,\n removeAudit,\n\n createHistoryEvent,\n saveHistoryData,\n getHistoryDataAnonym\n };\n};\n","import { forEachSchemaProp } from \"./schema.helpers\";\nimport selectn from \"selectn\";\nimport IAudit from \"../interfaces/IAudit\";\nimport IObservation from \"../interfaces/IObservation\";\n\nconst PERSON_WIDGET_LIST = [\"personPicker\"];\n\nconst isPersonField = (uiProps: { [key: string]: any }) => PERSON_WIDGET_LIST.includes(uiProps[\"ui:widget\"])\n\nexport const auditToPersonIds = (audit: IAudit) => {\n return auditFormDataToPersonIds(audit.formData, audit.formSchema)\n}\n\nexport const auditFormDataToPersonIds = (formData: IAudit[\"formData\"], formSchema: IAudit[\"formSchema\"]) => {\n if (!formSchema || !formSchema.schema.properties) {\n return [];\n };\n\n\n let idList: number[] = [];\n\n const { schema, uiSchema } = formSchema || {};\n\n if (!schema.properties) {\n return idList;\n };\n\n forEachSchemaProp(schema.properties, (path, property) => {\n const uiProperty = selectn(path, uiSchema) || {};\n\n if (isPersonField(uiProperty)) {\n const value = selectn(path, formData);\n\n if (value) {\n idList = idList.concat(value);\n };\n\n if (Array.isArray(value) && value.length) {\n idList = idList.concat(value);\n };\n }\n });\n\n\n return idList\n\n};\n\n\nexport const observationToPersonIds = (formData: IObservation[\"formData\"], formSchema: IObservation[\"formSchema\"]) => {\n\n if (!formSchema || !formSchema.schema.properties) {\n return [];\n };\n\n let idList: number[] = [];\n\n const { schema, uiSchema } = formSchema || {};\n\n forEachSchemaProp(schema.properties as any, (path, property) => {\n const uiProperty = selectn(path, uiSchema) || {};\n\n if (isPersonField(uiProperty)) {\n const value = selectn(path, formData);\n\n if (value && typeof value === \"number\") {\n idList = idList.concat(value);\n };\n\n if (Array.isArray(value) && value.length) {\n idList = idList.concat(value);\n };\n }\n });\n return idList;\n};\n","\nimport { uiSetWith } from \"./uiSetWith\";\nimport { hideEmptyFields } from \"./hideEmptyFields\";\nimport { StaticErrorIfArrayMatches } from \"./uiErrorIfNoMatches\";\n\nconst ExtraActions = {\n uiSetWith,\n hideEmptyFields,\n StaticErrorIfArrayMatches,\n};\n\nexport default ExtraActions;","/**\n * Set ui schema property with value form reference field\n * @param {String} params.field -\n * @param {String} params.dataField - source of data \n * @param {String} params.uiProperty - proprty wich value is set\n */\nexport const uiSetWith = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { field, dataField, uiProperty } = params;\n const [firstUi, secondUi] = field.split(\".\");\n const [firstData, secondData] = dataField.split(\".\");\n const data = secondData ? formData[firstData][secondData] : formData[dataField];\n if (!uiSchema[firstUi]) return;\n\n if (secondUi) {\n uiSchema[firstUi][secondUi][uiProperty] = data;\n } else {\n uiSchema[field][uiProperty] = data;\n\n }\n\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== \"production\") {\n\n const PropTypes = require(\"prop-types\");\n\n uiSetWith.propTypes = {\n field: PropTypes.string,\n dataField: PropTypes.string,\n uiProperty: PropTypes.string\n };\n\n}","import { HEADER_TYPE } from \"../constants/CustomTypes\";\n\nexport const hideEmptyFields = (params: any, schema: any, uiSchema: any, formData: any) => {\n const properties = schema.properties;\n\n Object.keys(properties).forEach((key) => {\n const data = formData[key];\n const propSchema = properties[key];\n const noValue = typeof data === \"undefined\";\n const stringIsEmpty = typeof data === \"string\" ? (!data || data.replace(/\\s/g, \"\") === \"\") : false;\n const arrayIsEmpty = Array.isArray(data) ? !data.length : false;\n const emptyObject = data instanceof Object ? Object.keys(data).length < 1 : false;\n\n if (propSchema?.type === HEADER_TYPE) {\n return;\n }\n\n if (noValue || stringIsEmpty || arrayIsEmpty) {\n let prevUiSchema = uiSchema[key];\n uiSchema[key] = {\n ...(prevUiSchema || {}),\n \"ui:hidden\": true,\n \"ui:widget\": \"hidden\",\n };\n }\n\n if (emptyObject) {\n let prevUiSchema = uiSchema[key];\n uiSchema[key] = {\n ...(prevUiSchema || {}),\n \"ui:hidden\": true,\n \"ui:widget\": \"hidden\",\n\n };\n }\n\n });\n};","\n\nexport const HEADER_TYPE = \"header\";","import _intersection from \"lodash/intersection\";\n/**\n * Set ui schema property with value form reference field\n * @param {String} params.field -\n * @param {String} params.dataField - source of data \n * @param {String} params.uiProperty - proprty wich value is set\n */\nexport const StaticErrorIfArrayMatches = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { field, compareTo, errorText } = params;\n\n if (_intersection(formData[field], formData[compareTo]).length >= 1) {\n uiSchema[field][\"_StaticValidationError\"] = errorText;\n } else {\n delete uiSchema[field][\"_StaticValidationError\"];\n };\n\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== \"production\") {\n\n const PropTypes = require(\"prop-types\");\n\n StaticErrorIfArrayMatches.propTypes = {\n field: PropTypes.string,\n dataField: PropTypes.string,\n uiProperty: PropTypes.string\n };\n\n}","import { AjvError } from \"@rjsf/core\";\n\nconst findVal = (object: any, key: string): string | undefined => {\n var value;\n Object.keys(object).some((k: any) => {\n if (k === key) {\n value = object[k];\n return true;\n }\n if (object[k] && typeof object[k] === \"object\") {\n value = findVal(object[k], key);\n return value !== undefined;\n }\n return false;\n });\n return value;\n};\n\n\nexport const uiSchemaToStaticErrors = (uiSchema: { [key: string]: any }): AjvError[] => {\n let errors: AjvError[] = [];\n\n errors = Object.keys(uiSchema).reduce((acc, key) => {\n const data = uiSchema[key];\n if (typeof data === \"object\") {\n const staticError = findVal(data, \"_StaticValidationError\");\n if (staticError) {\n const error: AjvError = {\n message: staticError,\n name: \"staticError\",\n params: { missingProperty: key },\n property: `.${key}`,\n stack: `.${key} ${staticError}`\n };\n return [...acc, error];\n }\n }\n return acc;\n }, errors);\n\n return errors;\n};","\n\nexport const CUSTOM_FORMATS = {\n \"date\": /^\\d{4}-([0]\\d|1[0-2])-([0-2]\\d|3[01])$/,\n \"time\": /[0-2][0-9]:[0-5][0-9]/\n};","import { gateBooleanToBoolean } from \"../../sg-core\";\n\nexport enum ECertStatus {\n Valid = 'valid',\n Expires = 'expires',\n NotValid = 'not_valid',\n ValidationFailed = 'validation_failed'\n};\n\n\nexport interface ICert {\n id: number;\n name: string;\n refrenceName: string;\n isTimeLimited: boolean;\n};\n\nexport interface ICertDTO {\n id: number;\n nimi: string;\n viitenimi: string;\n maara_aikainen?: string | \"Y\" | \"N\";\n};\n\n\nexport const CertMapper = {\n apiToDomain: (api: ICertDTO): ICert => {\n return ({\n id: api.id,\n name: api.nimi,\n refrenceName: api.viitenimi,\n isTimeLimited: api.maara_aikainen ? gateBooleanToBoolean(api.maara_aikainen) : false,\n })\n }\n}\n\n","import React, { useRef, useState, useEffect, useMemo, useCallback, Suspense, Fragment } from \"react\";\nimport { Icon, Dropdown, Input, InputProps, DropdownProps, Menu, List, Segment } from \"semantic-ui-react\";\nimport { TPickerValue } from \"../models/IHprPicker\";\nimport { IPerson } from \"../models/IPerson\";\nimport { TResult, useBool, useLoading, useOnClickOutside } from \"../../sg-core\";\n\nimport \"./_PersonSearch.less\";\n\nconst defaultRenderPersonById = (person: IPerson[\"id\"]) => {person} ;\nconst defaultRenderSearchResult = (person: IPerson) => (\n \n)\nconst noop = () => { };\n\n\n\ninterface PeoplePickerProps extends Omit {\n value?: TPickerValue;\n\n onAddPerson?: () => void;\n onEditPerson?: (person: IPerson) => void;\n onSearchPerson: (text: string) => Promise>;\n\n onChange: (value: TPickerValue) => void;\n\n renderSearchResult?: (person: IPerson) => JSX.Element;\n renderPersonLabel?: (id: IPerson[\"id\"]) => JSX.Element;\n\n isMulti?: boolean;\n};\n\nconst PeoplePicker: React.FC = ({\n value,\n onChange,\n isMulti = false,\n clearable = true,\n\n onAddPerson = noop,\n onEditPerson = noop,\n onSearchPerson,\n\n renderPersonLabel = defaultRenderPersonById,\n renderSearchResult = defaultRenderSearchResult,\n\n ...dropdownProps\n}) => {\n\n const t = (key: string) => key;\n const texts = {\n typeToSeach: t(\"Kirjoita hakeaksesi\"),\n noResults: t(\"Ei tuloksia...\"),\n addNew: t(\"Lisää uusi\"),\n searchError: t(\"Haku virhe!\"),\n selected: t(\"Valittuna\")\n };\n\n const {\n loading: searching,\n loadError: searchError,\n startLoading,\n loadErrored,\n loadSuccess\n } = useLoading()\n //\n // Search\n //\n const timeoutRef = useRef()\n const [query, setQuery] = useState();\n const [searchResults, setSearchResults] = useState([]);\n const [isOpen, open, close] = useBool();\n\n const getValidValue = (value: TPickerValue) => isMulti ? Array.isArray(value) ? value : [] : value || null;\n const selected = getValidValue(value);\n\n const hasValue = Array.isArray(selected) ? selected.length : selected;\n const selectedCount = Array.isArray(selected) ? selected.length : selected ? 1 : 0;\n\n const loadOptions = async (query: string = \"\") => {\n const result = await onSearchPerson(query);\n if (result.isSuccess) {\n setSearchResults(result.value);\n loadSuccess();\n } else if (result.isFailure) {\n loadErrored(result.error.message)\n };\n };\n\n\n const _onInputChange: InputProps[\"onChange\"] = (event, data) => {\n let newQuery = data.value;\n if (hasValue && isMulti && !query?.length) {\n newQuery = newQuery.slice(-1);\n }\n //@ts-ignore\n if ((event.key === \"Backspace\" || event.nativeEvent.inputType === \"deleteContentBackward\") && !query?.length) {\n return\n }\n if (!isOpen) {\n open()\n }\n setQuery(newQuery);\n startLoading();\n timeoutRef.current = clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => loadOptions(newQuery), 250);\n };\n\n const _onInputKeyDown: InputProps[\"onKeyDown\"] = (event: any, data: any) => {\n if (event.key === \" \") {\n _onInputChange(event, { ...data, value: event.target.value + \" \" }); // Fixes wierd bug, where spacebar is dosn't fire inputs onChange handler\n return\n } else if (event.key === \"Backspace\" && !query?.length) {\n if (hasValue) {\n if (isMulti) {\n Array.isArray(value) && updateValue(value.splice(0, value.length - 1))\n } else {\n updateValue(undefined)\n }\n }\n };\n };\n\n const closeResults = useCallback(() => {\n if (isOpen) {\n close();\n setQuery(\"\");\n }\n }, [close, isOpen]);\n\n const _onInputFocus: InputProps[\"onFocus\"] = async () => {\n if (!searchResults?.length) {\n loadOptions(\" \");\n } else if (!query) {\n loadOptions(\" \")\n }\n open();\n };\n\n\n const wrapperElement = useRef();\n const inputElement = useRef();\n\n useOnClickOutside(wrapperElement, closeResults);\n\n useEffect(() => {\n if (isOpen) {\n inputElement.current?.focus();\n }\n }, [isOpen]);\n\n\n const updateValue = (value: TPickerValue) => {\n onChange(value);\n if (!isMulti) { closeResults(); };\n\n if (query) { setQuery(\"\") };\n\n const neutralizedValue = Array.isArray(value) ? value : value ? [value] : [];\n const unSelectedResults = searchResults.filter((res) => !neutralizedValue.includes(res.id));\n\n if (!unSelectedResults.length) { loadOptions(\" \") }\n };\n\n const selectPerson = (itemId: number) => {\n if (isMulti) {\n if (!Array.isArray(selected)) throw Error(\"Selected is not array\");\n const isSelected = selected.indexOf(itemId) > -1;\n updateValue(isSelected ? selected.filter((id) => id !== itemId) : [...selected, itemId]);\n } else {\n updateValue(itemId)\n };\n };\n\n const selectResult = (itemId: number) => {\n selectPerson(itemId);\n if (isMulti) {\n inputElement.current?.focus();\n }\n };\n\n const _clear = () => updateValue(null);\n\n\n\n const resultsWithoutSelected = useMemo(() => {\n return searchResults.filter((item) => (\n Array.isArray(selected) ? !selected.includes(item.id) : selected !== item.id\n ))\n }, [searchResults, selected]);\n\n\n return (\n
\n
\n\n \n \n\n {clearable && hasValue ? (\n
\n \n
\n ) : null}\n\n {!isOpen && hasValue ? (\n
\n {!Array.isArray(selected) && selected ? (\n renderPersonLabel(selected)\n ) : isMulti ? (\n `Valittuna ${selectedCount} henkilö`\n ) : null}\n
\n ) : null}\n\n
\n )}\n {...dropdownProps}\n >\n \n }>\n {searchError && (\n \n {texts.searchError} \n \n )}\n\n {searching ? (\n Haetaan... \n ) : searchResults?.length ? (\n \n {searchResults.map((person) => (\n selectResult(person.id)}\n children={renderSearchResult(person)}\n />\n ))}\n {onAddPerson && (\n \n )}\n \n ) : \n {texts.noResults} \n {onAddPerson && (\n \n )}\n \n }\n \n \n \n
\n\n\n {isMulti && Array.isArray(selected) && selected.length ? (\n \n {selected.map((personId) => (\n }>\n {renderPersonLabel(personId)} \n \n ))}\n \n ) : null}\n
\n );\n};\n\n\nexport default PeoplePicker;\n","\ntype TAnyValue = string | boolean | number | undefined | null;\n\nexport enum EPredicate {\n Exists = \"exists\",\n Is = \"is\",\n Includes = \"includes\",\n Less = \"less\",\n Greater = \"greater\"\n};\n\n\n\nexport interface IConditionMapping {\n [EPredicate.Exists]: boolean;\n [EPredicate.Is]: TAnyValue;\n [EPredicate.Includes]: string | number;\n [EPredicate.Less]: number;\n [EPredicate.Greater]: number;\n};\n\nexport type ISingleCondition = Partial;\n\nexport interface IRuleConditions { [key: string]: ISingleCondition };\n\nexport type TConditionList = Array<{ [key: string]: ISingleCondition }>;\n\n\n\nexport enum EDefaultRuleActionType {\n Remove = \"remove\",\n Require = \"require\"\n};\n\nexport enum EAdditionalActionType {\n HideEmptyFields = \"hideEmptyFields\"\n};\n\nexport const ActionType = {\n ...EDefaultRuleActionType,\n ...EAdditionalActionType,\n}\n\nexport type EKnownActionType = EDefaultRuleActionType | EAdditionalActionType;\n\nexport type TRuleActionType = EKnownActionType | string;\n\n\n\nexport interface IRuleEvent {\n type: TRuleActionType;\n params?: { [key: string]: any }\n};\n\n\n\nexport interface ISchemaRule {\n key?: string;\n conditions: IRuleConditions | { not: (IRuleConditions | { or: Array }) } | { or: Array };\n event: IRuleEvent | Array;\n};\n\nexport default ISchemaRule;\n\n","import React, { createContext, useContext, PropsWithChildren } from \"react\";\nimport { IHprOptions } from \"../models/IHprOptions\";\n\nconst Context = createContext(undefined);\n\nexport const useHprContext = () => useContext(Context);\n\ninterface IHprProiderProps {\n options: IHprOptions;\n}\n\nexport const HprProvider: React.FC> = ({ options, children }) => {\n return (\n \n {children}\n \n );\n};","import { makeFailure, makeSuccess, TResult } from \"../sg-core\";\nimport { IHprOptions, IPerson } from \"./models\";\n\nconst mockFirstnames = [\"Matti\", \"Simo\", \"Ismo\", \"Helena\", \"Tiia\", \"Karoliina\"];\nconst mockSurnames = [\"Korpi\", \"Kannisto\", \"Usvasuo\", \"Viimanen\", \"Skinnar\", \"Lehto\"];\nconst makeMockPhonenumber = () => Math.random().toString().slice(2, 11);\n\nconst pickRandomItem = (list: Array) => {\n return list[Math.floor(Math.random() * list.length)];\n};\n\n\nexport const mockPerson = (_1?: any, index: number = Math.random()): IPerson => {\n const firstname = pickRandomItem(mockFirstnames);\n const surname = pickRandomItem(mockSurnames);\n const fullname = surname + \" \" + firstname;\n const person: IPerson = {\n id: index + 1,\n fullname: fullname,\n firstname,\n surname,\n email: `${fullname}.${surname}@mail.com`,\n phone: makeMockPhonenumber(),\n company: undefined,\n certs: {},\n };\n return person;\n};\n\nexport const mockPersonList = new Array(10).fill(0).map(mockPerson);\n\nexport const mockFetchPerson = async (id: IPerson[\"id\"]) => {\n const result = mockPersonList.find((person) => id === person.id)\n return result ? makeSuccess(result) : makeFailure(Error(\"Failed to find person with this id\"));\n}\n\nexport const mockPersonSearch = async (query: string): Promise>> => {\n const result = mockPersonList.filter((person) => person.fullname.indexOf(query) > -1);\n return makeSuccess(result)\n}\n\nexport const mockHprOptions: IHprOptions = {\n fetchPersonById: mockFetchPerson,\n searchPerson: mockPersonSearch\n};","import React, { createContext, useContext, PropsWithChildren } from \"react\";\nimport { makeFailure, makeSuccess } from \"../../sg-core\";\nimport { useFileUploadContext } from \"../../sg-fileupload\";\nimport { ISignatureOptions } from \"../models/ISignatureOptions\";\nimport { useHprContext } from \"../../sg-hpr\";\n\nconst Context = createContext(undefined);\n\nexport const useSignatureWidgetContext = () => useContext(Context);\n\ninterface SignatureWidgetContextProps {\n options: ISignatureOptions;\n};\n\nexport const SignatureWidgetProvider: React.FC> = ({ options, children }) => {\n\n const uploadContext = useFileUploadContext();\n const hprContext = useHprContext();\n\n const uploadSignature: ISignatureOptions[\"uploadSignature\"] = async (data: any) => {\n if (uploadContext) {\n try {\n return makeSuccess((await uploadContext.uploadFile(data)).id);\n } catch (error) {\n return makeFailure(error as Error)\n }\n }\n return makeFailure(Error(\"Signature widget requires upload context\"))\n };\n\n\n const renderSignatoryName: ISignatureOptions[\"renderSignatoryName\"] = async ({ personId, name }) => {\n if (hprContext && personId) {\n return (\n personId: {personId} \n )\n }\n return (\n {name}\n )\n\n };\n\n return (\n \n {children}\n \n );\n};","import { ISignatureOptions } from \"../models/ISignatureOptions\";\nimport { defaultOptions as mockUploadOptions, ImageView } from \"../../sg-fileupload\";\nimport { makeFailure, makeSuccess } from \"../../sg-core\";\n\n\nexport const mockSignatureOptions: ISignatureOptions = {\n uploadSignature: async (data) => {\n try {\n return makeSuccess((await mockUploadOptions.uploadFile(data)).id);\n } catch (error) {\n return makeFailure(error as Error)\n }\n },\n renderSignature: (id) => ,\n renderSignatoryName: ({ name, personId }) => {personId || name} ,\n\n removeSignatureConfirmationText: \"Oletko varma että haluat poistaa allekirjoituksen.\",\n signatureCannotBeEmptyText: \"Allekirjoitus ei voi olla tyhjä\",\n addNewSignatureText: \"Lisää uusi allekirjoitus\",\n addSignatureText: \"Lisää allekirjoitus\",\n clearText: \"Tyhjennä\",\n acceptText: \"Hyväksy\"\n\n}","import React, { createContext, useContext, PropsWithChildren } from \"react\";\nimport { IAdvancedWidgetOptions } from \"../models/IAdvancedWidgetOptions\";\n\nconst Context = createContext<{ [key: string]: any } | undefined>(undefined);\n\nexport const useFormDataContext = () => useContext(Context);\n\ninterface FormDataProviderProps {\n data: { [key: string]: any };\n}\n\nexport const FormDataProvider: React.FC> = ({ data, children }) => {\n return (\n \n {children}\n \n );\n};","/**\n * Context object is injected to schema before render,\n * and is removed when form is submitted,\n * its only purpous is to allow using additional data in schema rule conditions.\n * For eg. you want to remove certain fields from display side of form, \n * or there are rules for certain permit status.\n */\n\nimport { IFormSchema } from \"./IFormSchema\";\n\nexport interface ISchemaContext {\n roles: string[];\n // canViewNames: boolean;\n mode: \"display\" | \"form\",\n // pdf?: boolean\n}\n\nexport const contextSchema: IFormSchema[\"schema\"] = {\n \"type\": \"object\",\n \"properties\": {\n \"roles\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"canViewNames\": {\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\"display\", \"form\"]\n }\n }\n};\n","import { IFormData, IFormSchema, ISchemaContext } from \"..\";\n\n\nexport interface IKnownFormContext {\n emptyValue: string;\n currentFormData: IFormData;\n mode: ISchemaContext[\"mode\"];\n\n};\n\nexport type IFormContext = Partial & { [key: string]: any };\n\nexport type IStrictFormContext = IKnownFormContext & { [key: string]: any };\n\n\n\nexport const FormContextMapper = {\n toStrictFormContext: (formContext: IFormContext = {}, formSchema: IFormSchema, currentFormData: IFormData): IStrictFormContext => {\n const { emptyValue } = formContext;\n return {\n ...formContext,\n emptyValue: emptyValue || formSchema.emptyValue || \"-\",\n currentFormData,\n mode: formContext.mode || \"form\"\n\n };\n },\n};\n\nexport const transformFormContext = (formContext: any, formSchema: IFormSchema) => {\n return {\n ...(formContext || {}),\n emptyValue: formContext.emptyValue || formSchema.emptyValue || \"-\"\n }\n}","import { IFormSchema } from \"..\";\nimport { IFormContext, IStrictFormContext } from \"../models/IFormContext\";\nimport ISchemaRule, { ActionType } from \"../models/ISchemaRule\";\n\n\n\n\nexport const composeRules = (\n rules: Array,\n formSchema: IFormSchema,\n formContext: IStrictFormContext\n): Array => {\n\n let composedRules = [...rules];\n\n if (formSchema.hideEmptyFields && formContext.mode === \"display\") {\n composedRules.push({\n conditions: {},\n event: { type: ActionType.HideEmptyFields }\n });\n };\n\n return composedRules;\n\n};\n\n\nexport default composeRules;","import { JSONSchema7, JSONSchema7Definition } from \"json-schema\";\nimport { IFormSchema } from \"../models/IFormSchema\";\n\n/**\n * Loops trough each schema property\n * @param properties \n * @param invoke \n * @param pathBase \n */\nexport const forEachSchemaProperty = (\n properties: JSONSchema7[\"properties\"],\n uiProperties: IFormSchema[\"uiSchema\"],\n invoke: (path: string, prop: JSONSchema7Definition, uiProp: IFormSchema[\"uiSchema\"]) => void,\n pathBase?: string\n) => {\n\n if (!properties) { return; };\n\n Object.keys(properties).forEach((key) => {\n const prop = properties[key];\n const uiProp = uiProperties[key] || {};\n if (prop === true || prop === false) { return; };\n\n if (prop.type === \"object\" && !uiProp[\"ui:widget\"]) {\n forEachSchemaProperty(prop.properties, uiProp, invoke, key);\n return;\n }\n\n const path = pathBase ? [pathBase, key].join(\".\") : key;\n invoke(path, prop, uiProp);\n });\n};\n","\nimport React, { useMemo, useRef, useState } from \"react\";\nimport Engine from \"json-rules-engine-simplified\";\nimport { IChangeEvent, AjvError, FormProps, FormValidation } from \"@rjsf/core\";\n\nimport defaultExtraActions from \"./extraActions\";\nimport _debounce from \"lodash/debounce\";\nimport { IFormSchema } from \"./models/IFormSchema\";\nimport { uiSchemaToStaticErrors } from \"./utils/uiSchemaToStaticErrors\";\nimport { applyContext, removeContextData } from \"./utils/context.helpers\";\nimport { focusOnField } from \"./utils/focusOnField\";\nimport { transformErrorsToFinnish } from \"./utils/transformErrorsToFinnish\";\nimport { CUSTOM_FORMATS } from \"./constants/CustomFormats\";\nimport { FileUploadProvider, defaultOptions as mockUploadOptions } from \"../sg-fileupload\";\nimport { IWidgetOptions } from \"./models/IWidgetOptions\";\nimport { HprProvider, mockHprOptions } from \"../sg-hpr\";\nimport { SignatureWidgetProvider } from \"./context/SignatureContext\";\nimport { mockSignatureOptions } from \"./utils/mockSignatureOptions\";\nimport { FormDataProvider } from \"./context/FormDataContext\";\nimport { contextSchema as defaultContextSchema } from \"./models/ISchemaContext\";\nimport { FormContextMapper } from \"./models/IFormContext\";\nimport composeRules from \"./utils/composeRules\";\nimport ISchemaRule from \"./models/ISchemaRule\";\nimport { validateDateFields } from \"./utils/validateDateFields\";\n\nconst applyRules = require(\"react-jsonschema-form-conditionals\").default;\n\nexport interface IFormWithRules extends Omit, \"schema\" | \"uiSchema\" | \"rules\"> {\n formSchema: IFormSchema;\n\n extraActions?: { [key: string]: any };\n contextData?: { [key: string]: any }\n contextSchema?: IFormSchema[\"schema\"];\n focusOnError?: boolean;\n children?: any\n}\ntype TWithRules = (Form: React.FC | React.ComponentClass, widgetOptions?: IWidgetOptions | undefined) => (props: IFormWithRules) => JSX.Element\n\n\nexport const withRules: TWithRules = (Form, widgetOptions) => {\n return (props: IFormWithRules) => {\n const {\n formSchema,\n\n formData: initialFormData,\n onSubmit,\n onChange,\n\n extraActions: moreExtraActions = {},\n contextSchema = defaultContextSchema,\n contextData = {},\n\n focusOnError = true,\n ...otherProps\n } = props;\n\n const { schema, uiSchema } = applyContext(contextSchema, formSchema.schema, formSchema.uiSchema);\n const extraActions = { ...defaultExtraActions, ...moreExtraActions };\n const formData = { ...initialFormData, context: contextData, };\n\n // Uses ref to obtain current formData in case component re-renders and tries to use initial data, configured above\n const formEL: any = useRef();\n const currentFormData = formEL.current?.formData || formData;\n\n\n const formContext = FormContextMapper.toStrictFormContext(otherProps.formContext, formSchema, currentFormData);\n\n const rules = (formSchema.rules || []) as Array;\n const composedRules = composeRules(rules, formSchema, formContext);\n\n\n\n const FormWithConditionals = useMemo(() => {\n return applyRules(schema, uiSchema, composedRules, Engine, extraActions)(Form);\n }, [composedRules]); // eslint-disable-line\n\n\n\n const [submitted, setSubmitted] = useState(false);\n\n const transformFormData = (formData: any) => {\n formData = removeContextData(formData); // context is only meant for schema rules.\n return formData;\n };\n\n const handleSubmit = async (form: IChangeEvent | any, e: any) => {\n\n\n const formData = transformFormData(form.formData);\n // pass event to parent\n if (onSubmit) {\n onSubmit({ ...form, formData }, e);\n }\n if (!submitted) {\n setSubmitted(true);\n }\n };\n\n const _handleChange = (form: IChangeEvent) => {\n const formData = transformFormData(form.formData);\n\n // pass event to parent\n if (onChange) {\n onChange({ ...form, formData });\n };\n };\n\n\n const _handleError = (errors: { stack: string }[]) => {\n const firstError = errors[0];\n\n // try to move focus to first field giving element\n if (firstError && focusOnError) {\n focusOnField(firstError.stack.split(\": \")[0]);\n }\n // pass event to parent\n if (props.onError) {\n props.onError(errors);\n }\n };\n\n\n const _handleErrorTransform = (errors: AjvError[]) => {\n if (!formEL.current?.state) {\n return errors;\n }\n let staticErros = uiSchemaToStaticErrors(formEL.current.state.uiSchema);\n\n // add static errors in uiSchema\n if (staticErros) {\n errors = errors.concat(staticErros);\n }\n\n // pass event to parent\n if (otherProps.transformErrors) {\n errors = otherProps.transformErrors(errors);\n };\n\n // translate errors\n errors = transformErrorsToFinnish(errors);\n\n // console.info(\"[withRules.transformErrors]\", { errors });\n return errors;\n };\n\n\n const _handleValidate = (formData: any, errors: FormValidation) => {\n console.log({ formData, errors })\n errors = validateDateFields(formSchema, formData, errors);\n if (otherProps.validate) {\n return otherProps.validate(formData, errors);\n };\n return errors\n };\n\n const debouncedChangeHandler = _debounce(_handleChange, 350);\n\n const context = otherProps.formContext\n\n\n\n\n return (\n \n \n \n \n \n \n \n \n \n\n );\n };\n};\n\n","import { UiSchema } from \"@rjsf/core\";\nimport { JSONSchema7 } from \"json-schema\";\n\n/**\n * Adds context properties to schema, for use in rule conditions.\n * FormField component will hide context field based on idSchema (\"root_context\").\n */\nexport const applyContext = (contextSchema: JSONSchema7 | {}, schema: JSONSchema7, uiSchema: UiSchema = {}) => {\n return {\n schema: {\n ...schema,\n properties: {\n ...schema.properties,\n context: contextSchema\n }\n },\n uiSchema: {\n ...uiSchema,\n context: {\n \"ui:hidden\": true,\n \"ui:field\": \"Custom\",\n \"ui:widget\": \"hidden\"\n }\n }\n };\n};\n\n/**\n * Drops context from formData\n * @param prevFormData \n */\nexport const removeContextData = (formData: any) => {\n let newFormData = { ...formData };\n delete newFormData.context;\n return newFormData;\n};\n\n","/**\n * Forces focus on field input by schema property path\n * @param property - property path on schema eg. \".firstname\" or \".sub_form.firstname\"\n */\nexport const focusOnField = (property: string) => {\n if (!property || typeof property !== \"string\") return;\n let uniqueClassName = \"root_\" + property; // property.replace(/^\\./g, \"root_\");\n let fieldElement = document.getElementsByClassName(uniqueClassName)[0];\n\n if (!fieldElement) {\n fieldElement = document.querySelectorAll(\".field.error\")[0];\n }\n\n if (fieldElement) {\n const inputElement = fieldElement.querySelectorAll(\"INPUT, SELECT, TEXTAREA, [tabindex]:not([tabindex=\\\"-1\\\"])\")[0] as HTMLInputElement | undefined;\n\n if (inputElement) {\n inputElement.focus();\n }\n }\n};\n","import { AjvError } from \"@rjsf/core\";\n\nexport function transformErrorsToFinnish(errors: AjvError[]): AjvError[] {\n return errors.map(error => {\n // console.info({ error });\n if (error.name === \"required\") {\n error.message = \"Pakollinen kenttä\";\n }\n\n if (error.name === \"maxLength\") {\n error.message = `Ei tulisi olla pidempi kuin ${error.params.limit} merkkiä`;\n }\n\n if (error.name === \"minLength\") {\n error.message = `Ei tulisi olla lyhyempi kuin ${error.params.limit} merkkiä`;\n }\n\n if (error.name === \"minItems\") {\n error.message = \"Valitse vähintään \" + error.params.limit\n }\n\n if (error.name === \"format\") {\n // console.info(\"[transformErrors.format]\", error.params);\n\n if (error.params.format === \"date-time\") {\n error.message = \"Päivämäärän tulee olla muodossa pp.kk.vvvv HH:mm\";\n }\n if (error.params.format === \"time\") {\n error.message = \"Kellonaika ei ole okeassa muodossa\";\n }\n if (error.params.format === \"date\") {\n error.message = \"Päivämäärän tulee olla muodossa pp.kk.vvvv\";\n }\n }\n\n\n\n return error;\n });\n}\n\n","import { FormValidation } from \"@rjsf/core\";\nimport { forEachSchemaProperty } from \"./forEachSchemaProperty\";\nimport { IFormSchema } from \"../models/IFormSchema\";\nimport { IFormData, PickerUtils } from \"..\";\nimport _selectn from \"selectn\"\nimport _isAfter from \"date-fns/isAfter\"\n\nexport const validateDateFields = (formSchema: IFormSchema, formData: IFormData, errors: FormValidation): any => {\n\n forEachSchemaProperty(\n formSchema.schema.properties,\n formSchema.uiSchema,\n (path, property, uiSchema) => {\n\n if (uiSchema[\"ui:widget\"] === \"datePicker\" && uiSchema[\"ui:maxDateNow\"] === true) {\n const value = _selectn(path, formData);\n if (value) {\n try {\n const dateValue = PickerUtils.valueToDate(value);\n if (!dateValue) throw Error(\"Invalid Date\")\n const dateAfterMaxDate = _isAfter(dateValue, new Date());\n if (dateAfterMaxDate) {\n errors[path].addError(\"Aika ei voi olla tulevaisuudessa\")\n }\n } catch (error) {\n // errors[path].addError(\"Invalid date\")\n }\n }\n\n\n }\n }\n );\n\n return errors\n};\n\n\n\n/**\n * \"tapahtuma_aika\": {\n \"ui:widget\": \"datePicker\",\n \"ui:defaultDateNow\": true,\n \"ui:maxDateNow\": true\n },\n\n */","import React from \"react\";\nimport { Button, Icon } from \"semantic-ui-react\";\n\nfunction AddButton(props: any) {\n return (\n \n );\n}\n\nexport default AddButton;\n","import React, { Fragment } from \"react\";\n\n/**\n * Extract props meant for semantic UI components from props that are\n * passed to Widgets, Templates and Fields.\n * @param {Object} params\n * @param {Object} params.formContext\n * @param {Object} params.uiSchema\n * @param {Object} params.options\n * @returns {any}\n */\nexport const getSemanticProps = ({\n formContext = {},\n uiSchema = {},\n options = {},\n}: any) => {\n return Object.assign(\n {},\n formContext.semantic || {},\n uiSchema[\"ui:options\"] ? uiSchema[\"ui:options\"].semantic : {},\n options.semantic || {}\n );\n};\n\n/**\n * Combine multiple strings containing class names into a single string,\n * removing duplicates. E.g.\n * cleanClassNames('bar', 'baz bar', 'x y ', undefined)\n * // 'bar baz x y'\n * @param {Array} classNameArr\n * @param {Array} omit\n * @returns {string}\n */\nexport function cleanClassNames(classNameArr: Array, omit = []) {\n // Split each arg on whitespace, and add it to an array. Skip false-y args\n // like \"\" and undefined.\n const classList = classNameArr\n .filter(Boolean)\n .reduce(\n (previous, current: any) => previous.concat(current.trim().split(/\\s+/)),\n []\n );\n\n // Remove any class names from omit, and make the rest unique before\n // returning them as a string\n //@ts-ignore\n return [...new Set(classList.filter(cn => !omit.includes(cn)))].join(\" \");\n}\n\n/**\n *\n * @param wrap\n * @param Component\n * @param props\n * @returns {*}\n * @constructor\n */\n\ninterface MaybeWrapProps {\n wrap?: any;\n component?: any;\n className?: string\n};\n\nexport const MaybeWrap: React.FC = ({\n wrap,\n component: Component = \"div\",\n ...props\n}) => {\n return wrap ? : ;\n};\n","import React from \"react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\ninterface DescriptionFieldProps {\n className?: string;\n description?: string;\n};\n\nconst DescriptionField: React.FC = ({ className, description }) => {\n const { t } = useSchemaTranslation();\n if (description) {\n return

{t(description)}

;\n }\n return null;\n};\n\nexport default DescriptionField;\n","import React from \"react\";\nimport { Icon, Message, Popup } from \"semantic-ui-react\";\nimport \"./_HelpField.less\";\n\ninterface HelpFieldProps {\n id: string;\n helpText?: string;\n}\n\n/**\n * @return {null}\n */\nconst HelpField: React.FC = ({\n helpText,\n id\n}) => {\n\n if (helpText) {\n return (\n \n )}\n />\n );\n }\n if (helpText) {\n return ;\n }\n return null;\n};\n\nexport default HelpField;\n","import React from \"react\";\nimport { Form, Label, List } from \"semantic-ui-react\";\nimport _uniqueId from \"lodash/uniqueId\";\n\n/**\n *\n * @param errors\n * @param displayError\n * @returns {*}\n * @constructor\n * @return {null}\n */\ninterface RawErrorsProps {\n errors: Array;\n id: string;\n options: any\n};\n\nconst RawErrors: React.FC = ({ errors, id, options }) => {\n const { pointing, size } = options;\n\n const defaultProps = {\n prompt: true,\n pointing: \"pointing\",\n id: id ? `${id}-error-message` : undefined,\n role: \"alert\",\n \"aria-atomic\": true,\n };\n\n if (errors && errors.length > 0) {\n return (\n \n \n \n {errors.map((error) => (\n \n ))}\n \n \n \n );\n }\n return null;\n};\n\nRawErrors.defaultProps = {\n options: {\n pointing: \"above\",\n size: \"small\",\n },\n};\n\nexport default RawErrors;\n","//@ts-ignore\nimport { utils } from \"@rjsf/core\";\n\n\n\nexport const isSupportedWidget = (widgetName: string, schema: any, widgets: any) => {\n if (widgetName) {\n try {\n const widget = utils.getWidget(schema as any, widgetName, widgets as any);\n\n return true;\n } catch (error) {\n // console.log(error)\n return false;\n }\n }\n return true;\n};","import React from \"react\"\nimport { FieldTemplateProps } from \"@rjsf/core\";\nimport { Form, Message } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../hooks/useSchemaTranslation\";\n\n\nexport const FieldError: React.FC = (props) => {\n const { t } = useSchemaTranslation();\n const label = props.label || props.schema.title;\n const widget = props.uiSchema[\"ui:widget\"];\n return (\n \n {label && }\n {widget ? (\n \n ) : }\n \n );\n};","import React, { useMemo } from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport DescriptionField from \"../../Fields/DescriptionField\";\nimport HelpField from \"../../components/HelpField\";\nimport RawErrors from \"../../components/RawErrors\";\nimport { getSemanticProps, MaybeWrap } from \"../../util\";\nimport \"./_FieldTemplate.less\";\nimport { FieldTemplateProps } from \"@rjsf/core\";\nimport { isSupportedWidget } from \"../../../../utils/isSupportedWidget\";\n//@ts-ignore\nimport { getDefaultRegistry } from \"@rjsf/core/lib/utils\";\nimport { FieldError } from \"../../components/UnsupportedFieldError\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nconst FieldTemplate: React.FC = (rawProps) => {\n const {\n id,\n children,\n displayLabel,\n rawErrors = [],\n rawHelp,\n rawDescription,\n registry = getDefaultRegistry(),\n label,\n ...props\n } = rawProps;\n const { t } = useSchemaTranslation();\n\n const semanticProps = getSemanticProps(props);\n const { wrapLabel, wrapContent, errorOptions } = semanticProps;\n\n const widgetName = props.uiSchema[\"ui:widget\"] as string || \"\";\n const widgetOk = useMemo(() => (id === \"root_context\" || label === \"context\") ? true : isSupportedWidget(widgetName, props.schema, registry.widgets), []);\n\n if (widgetName === \"hidden\") {\n return null;\n };\n\n return (\n \n \n {widgetOk ? children : }\n \n \n {displayLabel && rawDescription && (\n \n {rawDescription && (\n \n )}\n \n )}\n \n \n );\n};\n\nexport default FieldTemplate;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button, Grid, Segment } from \"semantic-ui-react\";\nimport { utils } from \"@rjsf/core\";\nimport AddButton from \"../../components/AddButton\";\nimport { cleanClassNames, getSemanticProps, MaybeWrap } from \"../../util\";\nimport FieldTemplate from \"../FieldTemplate\";\n\nconst { isFixedItems } = utils;\n\nconst ArrayFieldTitle = ({ TitleField, idSchema, uiSchema, title }: any) => {\n if (!title) {\n return null;\n }\n\n const id = `${idSchema.$id}__title`;\n return ;\n};\n\nfunction ArrayFieldDescription({ DescriptionField, idSchema, description }: any) {\n if (!description) {\n // See #312: Ensure compatibility with old versions of React.\n return null;\n }\n const id = `${idSchema.$id}__description`;\n return ;\n}\n\nconst gridStyle = (vertical: boolean) => ({\n display: \"grid\",\n gridTemplateColumns: `1fr ${vertical ? 65 : 110}px`,\n});\n\n// checks if its the first array item\nfunction isInitialArrayItem(props: any) {\n // no underscore because im not sure if we want to import a library here\n const { idSchema } = props.children.props;\n return idSchema.target && idSchema.conditions;\n}\n\n// Used in the two templates\nfunction DefaultArrayItem(props: any) {\n return (\n
\n \n \n \n {props.children}\n \n\n {props.hasToolbar && (\n \n {(props.hasMoveUp || props.hasMoveDown || props.hasRemove) && (\n \n {(props.hasMoveUp || props.hasMoveDown) && (\n \n )}\n\n {(props.hasMoveUp || props.hasMoveDown) && (\n \n )}\n\n {props.hasRemove && (\n \n )}\n \n )}\n \n )}\n \n \n
\n );\n}\n\n// Used for arrays that are represented as multiple selection fields\n// (displayed as a multi select or checkboxes)\nfunction DefaultFixedArrayFieldTemplate({\n uiSchema,\n idSchema,\n canAdd,\n className,\n classNames,\n disabled,\n items,\n onAddClick,\n readOnly,\n required,\n schema,\n title,\n TitleField,\n itemProps,\n}: any) {\n const fieldTitle = uiSchema[\"ui:title\"] || title;\n const fieldDescription = uiSchema[\"ui:description\"] || schema.description;\n\n return (\n
\n \n\n {fieldDescription && (\n \n {fieldDescription}\n
\n )}\n\n
\n
\n {items && items.map((p: any) => DefaultArrayItem({ ...p, ...itemProps }))}\n
\n\n {canAdd && (\n \n \n
\n )}\n \n \n );\n}\n\nfunction DefaultNormalArrayFieldTemplate({\n uiSchema,\n idSchema,\n canAdd,\n className,\n classNames,\n disabled,\n DescriptionField,\n items,\n onAddClick,\n readOnly,\n required,\n schema,\n title,\n TitleField,\n itemProps,\n}: any) {\n const fieldTitle = uiSchema[\"ui:title\"] || title;\n const fieldDescription = uiSchema[\"ui:description\"] || schema.description;\n return (\n \n \n\n {fieldDescription && (\n \n )}\n\n
\n
\n {items && items.map((p: any) => DefaultArrayItem({ ...p, ...itemProps }))}\n
\n\n {canAdd && (\n \n \n
\n )}\n \n \n );\n}\n\nfunction ArrayFieldTemplate(props: any) {\n const { schema, uiSchema } = props;\n const { horizontalButtons, wrapItem } = getSemanticProps(props);\n const itemProps = { horizontalButtons, wrapItem };\n const field = uiSchema[\"ui:field\"];\n if (field === \"custom\") {\n return ;\n }\n if (isFixedItems(schema)) {\n return ;\n }\n return ;\n}\n\nArrayFieldTemplate.defaultProps = {\n options: {},\n};\n\nArrayFieldTemplate.propTypes = {\n options: PropTypes.object,\n};\n\nexport default ArrayFieldTemplate;\n","/* eslint-disable react/no-array-index-key */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Message } from \"semantic-ui-react\";\n\n/**\n *\n * @param errors\n * @returns {*}\n * @constructor\n */\nfunction ErrorList({ errors }: { errors: Array }) {\n return (\n \n Errors\n \n {errors.map((error, index) => (\n {error.stack}\n ))}\n \n \n );\n}\n\nErrorList.propTypes = {\n errors: PropTypes.array,\n};\n\nexport default ErrorList;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Header } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { WidgetProps } from \"@rjsf/core\";\n\nfunction TitleField({ title, options }: Partial) {\n const { t } = useSchemaTranslation();\n\n const { semantic } = options as any;\n if (title) {\n return (\n
\n {t(title)}\n
\n );\n }\n return null\n}\n\nTitleField.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n dividing: true,\n },\n },\n};\n\nTitleField.propTypes = {\n options: PropTypes.object,\n};\n\nexport default TitleField;\n","\n\nexport function isObject(thing: any) {\n if (typeof File !== \"undefined\" && thing instanceof File) {\n return false;\n }\n return typeof thing === \"object\" && thing !== null && !Array.isArray(thing);\n}\n\n\nexport function getUiOptions(uiSchema: { [key: string]: any }): { [key: string]: any } {\n // get all passed options from ui:widget, ui:options, and ui:\n return Object.keys(uiSchema)\n .filter(key => key.indexOf(\"ui:\") === 0)\n .reduce((options, key) => {\n const value = uiSchema[key];\n\n if (key === \"ui:widget\" && isObject(value)) {\n console.warn(\n \"Setting options via ui:widget object is deprecated, use ui:options instead\"\n );\n return {\n ...options,\n ...(value.options || {}),\n widget: value.component,\n };\n }\n if (key === \"ui:options\" && isObject(value)) {\n return { ...options, ...value };\n }\n return { ...options, [key.substring(3)]: value };\n }, {});\n}\n","\nimport React from \"react\";\nimport { Header } from \"semantic-ui-react\";\nimport { WidgetProps, } from \"@rjsf/core\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\n\nexport const HeaderWidget: React.FC = ({\n label,\n schema,\n uiSchema = {},\n ...props\n}) => {\n const { t } = useSchemaTranslation();\n\n const uiOptions = getUiOptions(uiSchema as any);\n const semanticProps = (uiOptions?.semantic || {}) as any;\n const title = label || schema.title || (props as any).name;\n\n return (\n \n );\n};\n\nexport default HeaderWidget;\n","import React from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport HeaderWidget from \"../Widgets/HeaderWidget\";\n\nconst NullField = (props: any) => {\n return (\n \n \n \n );\n};\n\nexport default NullField;","import React from \"react\";\n\nimport {\n getWidget,\n getUiOptions,\n getDefaultRegistry,\n hasWidget,\n //@ts-ignore\n} from \"@rjsf/core/lib/utils\";\nimport { Message } from \"semantic-ui-react\";\nimport FieldTemplate from \"../Templates/FieldTemplate\";\nimport { WidgetProps } from \"@rjsf/core\";\n\nfunction CustomField(props: any) {\n const {\n schema,\n name,\n uiSchema,\n idSchema,\n formData,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n registry = getDefaultRegistry(),\n rawErrors,\n errorSchema,\n noError,\n } = props;\n\n const { title, format, description } = schema;\n const { widgets, formContext } = registry;\n let defaultWidget = \"text\";\n\n if (format && hasWidget(schema, format, widgets)) {\n defaultWidget = format;\n }\n\n const { widget = defaultWidget, placeholder = \"\", ...options } = getUiOptions(\n uiSchema\n );\n\n let Widget;\n\n try {\n Widget = getWidget(schema, widget, widgets);\n } catch (error) {\n // console.info(name, error);\n }\n\n if (!Widget) {\n return ;\n }\n\n return (\n \n \n
\n );\n}\n\nCustomField.defaultProps = {\n uiSchema: {},\n disabled: false,\n readonly: false,\n autofocus: false,\n};\n\nexport default CustomField;\n","import DescriptionField from \"./DescriptionField/DescriptionField\";\nimport TitleField from \"./TitleField/TitleField\";\nimport NullField from \"./NullField\";\nimport CustomField from \"./Custom\";\nimport StringField from \"../components/StringField\";\n\nconst Fields = {\n DescriptionField: DescriptionField as any,\n TitleField,\n NullField,\n \"custom\": CustomField,\n\n};\n\nexport default Fields;\n","import React from \"react\";\nimport { Divider } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction ObjectFieldTemplate({\n DescriptionField,\n description,\n TitleField,\n title,\n properties,\n required,\n uiSchema,\n idSchema,\n}: any) {\n const { t } = useSchemaTranslation();\n\n const fieldTitle = uiSchema[\"ui:title\"] || title;\n const fieldDescription = uiSchema[\"ui:description\"] || description;\n return (\n \n {fieldTitle && (\n \n )}\n {fieldDescription && (\n \n )}\n \n );\n}\n\nexport default ObjectFieldTemplate;\n","import React from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { getSemanticProps } from \"../../util\";\n\nfunction CheckboxWidget(props: any) {\n const {\n id,\n value,\n required,\n disabled,\n readonly,\n label,\n autofocus,\n onChange,\n onBlur,\n options,\n onFocus,\n formContext,\n } = props;\n const { t } = useSchemaTranslation();\n\n const semanticProps = getSemanticProps({ formContext, options });\n const _onChange = (event: any, data: any) => onChange && onChange(data.checked);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n const checked = value == \"true\" || value == true;\n return (\n \n );\n}\n\nCheckboxWidget.defaultProps = {\n options: {\n semantic: {\n // inverted: false,\n },\n },\n};\n\nexport default CheckboxWidget;\n","import React from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport TitleField from \"../../Fields/TitleField\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction selectValue(value: any, selected: any[], all: any[]) {\n const at = all.indexOf(value);\n const updated = selected.slice(0, at).concat(value, selected.slice(at));\n // As inserting values at predefined index positions doesn't work with empty\n // arrays, we need to reorder the updated selection to match the initial order\n //@ts-ignore\n return updated.sort((a, b) => all.indexOf(a) > all.indexOf(b));\n}\n\nfunction deselectValue(value: any, selected: any[]) {\n return selected.filter((v) => v !== value);\n}\n\nfunction CheckboxesWidget({\n id,\n disabled,\n options,\n value,\n autofocus,\n readonly,\n onChange,\n onBlur,\n onFocus,\n formContext,\n schema,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n const { enumOptions, enumDisabled, inline } = options;\n const { title } = schema;\n const semanticProps = getSemanticProps({ formContext, options });\n const _onChange = (option: any) => ({ target: { checked } }: any) => {\n // eslint-disable-next-line no-shadow\n\n\n const all = enumOptions.map(({ value }: any) => value);\n if (checked) {\n onChange(selectValue(option.value, value, all));\n } else {\n onChange(deselectValue(option.value, value));\n }\n };\n\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n const inlineOption = inline ? { inline: true } : { grouped: true };\n return (\n \n {title && }\n \n {enumOptions.length ? (\n enumOptions.map((option: any, index: number) => {\n const checked = value.indexOf(option.value) !== -1;\n const itemDisabled =\n enumDisabled && enumDisabled.indexOf(option.value) !== -1;\n return (\n \n );\n })\n ) : (\n

No options

\n )}\n
\n
\n );\n}\n\nCheckboxesWidget.defaultProps = {\n options: {\n semantic: {\n // inverted: false,\n },\n },\n};\n\nexport default CheckboxesWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\n\nfunction PasswordWidget({\n id,\n required,\n readonly,\n disabled,\n label,\n name,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n schema,\n formContext,\n}: any) {\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange && onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n );\n}\n\nPasswordWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n fluid: true,\n },\n },\n};\n\nPasswordWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default PasswordWidget;\n","import React, { Fragment } from \"react\";\nimport { Form, Radio } from \"semantic-ui-react\";\nimport PropTypes from \"prop-types\";\nimport { getSemanticProps } from \"../../util\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction RadioWidget({\n id,\n schema,\n options,\n value,\n required,\n disabled,\n readonly,\n onChange,\n onBlur,\n onFocus,\n formContext,\n label,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n // Generating a unique field name to identify this set of radio buttons\n const name = Math.random().toString();\n const { enumOptions, enumDisabled } = options;\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = (event: any, { value }: any) =>\n onChange && onChange(schema.type === \"boolean\" ? value !== \"false\" : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n const inlineOption = options.inline ? { inline: true } : { grouped: true };\n\n return (\n \n {label && (\n \n \n \n )}\n \n {enumOptions.length ? (\n enumOptions.map((option: any, i: number) => {\n const itemDisabled =\n enumDisabled && enumDisabled.indexOf(option.value) !== -1;\n return (\n \n );\n })\n ) : (\n

No options

\n )}\n
\n
\n );\n}\n\nRadioWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n fluid: true,\n },\n },\n};\n\nRadioWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default RadioWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Input } from \"semantic-ui-react\";\nimport { utils } from \"@rjsf/core\";\nimport { getSemanticProps } from \"../../util\";\n\nconst { rangeSpec } = utils;\nfunction RangeWidget({\n value,\n readonly,\n disabled,\n onBlur,\n onFocus,\n options,\n schema,\n onChange,\n required,\n name,\n id,\n formContext,\n}: any) {\n const semanticProps = getSemanticProps({ formContext, options });\n\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange && onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n \n {value}\n \n );\n}\n\nRangeWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n },\n },\n};\n\nRangeWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default RangeWidget;\n","import React, { Fragment } from \"react\";\nimport _map from \"lodash/map\";\nimport { Form } from \"semantic-ui-react\";\nimport { utils } from \"@rjsf/core\";\nimport PropTypes from \"prop-types\";\nimport { getSemanticProps } from \"../../util\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nconst { asNumber, guessType } = utils;\n\nconst nums = new Set([\"number\", \"integer\"]);\n\n/**\n * * Returns and creates an array format required for semantic drop down\n * @param {array} enumOptions- array of items for the dropdown\n * @param {array} enumDisabled - array of enum option values to disable\n * @returns {*}\n */\nfunction createDefaultValueOptionsForDropDown(enumOptions: any[], enumDisabled: any[], t: any) {\n const disabledOptions = enumDisabled || [];\n let options = [];\n // eslint-disable-next-line no-shadow\n options = _map(enumOptions, ({ label, value }) => ({\n disabled: disabledOptions.indexOf(value) !== -1,\n key: label,\n text: t(label),\n value,\n }));\n return options;\n}\n\n/**\n * This is a silly limitation in the DOM where option change event values are\n * always retrieved as strings.\n */\nconst processValue = (schema: any, value: any) => {\n // \"enum\" is a reserved word, so only \"type\" and \"items\" can be destructured\n const { type, items } = schema;\n if (value === \"\") {\n return undefined;\n } else if (type === \"array\" && items && nums.has(items.type)) {\n return Array.isArray(value) ? value.map(asNumber) : [];\n } else if (type === \"boolean\") {\n return value === \"true\" || value === true;\n } else if (type === \"number\") {\n return asNumber(value);\n }\n\n // If type is undefined, but an enum is present, try and infer the type from\n // the enum values\n if (schema.enum) {\n if (schema.enum.every((x: any) => guessType(x) === \"number\")) {\n return asNumber(value);\n } else if (schema.enum.every((x: any) => guessType(x) === \"boolean\")) {\n return value === \"true\";\n }\n }\n\n return value;\n};\n\nfunction SelectWidget({\n schema,\n id,\n options,\n name,\n required,\n disabled,\n readonly,\n value,\n multiple,\n placeholder,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n label,\n}: any) {\n const { t } = useSchemaTranslation();\n\n const semanticProps = getSemanticProps({ options });\n const { enumDisabled, enumOptions } = options;\n const emptyValue = multiple ? [] : \"\";\n const dropdownOptions = createDefaultValueOptionsForDropDown(\n enumOptions,\n enumDisabled,\n t\n );\n const _onChange = (\n event: any,\n // eslint-disable-next-line no-shadow\n { value }: any\n ) => onChange && onChange(processValue(schema, value));\n // eslint-disable-next-line no-shadow\n const _onBlur = ({ target: { value } }: any) =>\n onBlur && onBlur(id, processValue(schema, value));\n const _onFocus = ({\n // eslint-disable-next-line no-shadow\n target: { value },\n }: any) => onFocus && onFocus(id, processValue(schema, value));\n\n return (\n \n \n \n );\n}\n\nSelectWidget.defaultProps = {\n options: {\n semantic: {\n inverted: \"false\",\n fluid: true,\n selection: true,\n scrolling: true,\n upward: false,\n },\n },\n};\n\nSelectWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default SelectWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction TextareaWidget({\n id,\n placeholder,\n value,\n required,\n disabled,\n autofocus,\n label,\n name,\n readonly,\n onBlur,\n onFocus,\n onChange,\n options,\n schema,\n formContext,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange && onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n );\n}\n\nTextareaWidget.defaultProps = {\n options: {\n semantic: {\n // inverted: false,\n },\n },\n};\n\nTextareaWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default TextareaWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction TextWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n\n const { t } = useSchemaTranslation();\n\n const { placeholder } = getUiOptions(uiSchema) as any;\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n );\n}\n\nTextWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nTextWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default TextWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\n\nfunction UpDownWidget({\n id,\n required,\n readonly,\n disabled,\n label,\n name,\n value,\n options,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n formContext,\n}: any) {\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) => onChange && onChange(value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n return (\n \n \n \n );\n}\n\nUpDownWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n fluid: true,\n },\n },\n};\n\nUpDownWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default UpDownWidget;\n","import React from \"react\";\nimport _map from \"lodash/map\";\nimport { Button, Form, Icon } from \"semantic-ui-react\";\nimport { utils } from \"@rjsf/core\";\nimport PropTypes from \"prop-types\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nconst { asNumber, guessType } = utils;\n\nconst nums = new Set([\"number\", \"integer\"]);\n\nfunction selectValue(value: any, selected: any[], all: any[]) {\n const at = all.indexOf(value);\n const updated = selected.slice(0, at).concat(value, selected.slice(at));\n // As inserting values at predefined index positions doesn't work with empty\n // arrays, we need to reorder the updated selection to match the initial order\n //@ts-ignore\n return updated.sort((a, b) => all.indexOf(a) > all.indexOf(b));\n}\n\nfunction deselectValue(value: any, selected: any[]) {\n return selected.filter((v) => v !== value);\n}\n\n/**\n * * Returns and creates an array format required for semantic drop down\n * @param {array} enumOptions- array of items for the dropdown\n * @param {array} enumDisabled - array of enum option values to disable\n * @returns {*}\n */\nfunction createDefaultValueOptionsForDropDown(\n enumOptions: any[],\n enumDisabled: any[],\n enumIcons = [],\n enumColors = []\n) {\n const disabledOptions = enumDisabled || [];\n let options = [];\n // eslint-disable-next-line no-shadow\n options = _map(enumOptions, ({ label, value }, index) => ({\n disabled: disabledOptions.indexOf(value) !== -1,\n key: label,\n text: label,\n icon: enumIcons[index],\n color: enumColors[index],\n value,\n }));\n return options;\n}\n\n/**\n * This is a silly limitation in the DOM where option change event values are\n * always retrieved as strings.\n */\nconst processValue = (schema: any, value: any) => {\n // \"enum\" is a reserved word, so only \"type\" and \"items\" can be destructured\n const { type, items } = schema;\n if (value === \"\") {\n return undefined;\n } else if (type === \"array\" && items && nums.has(items.type)) {\n return Array.isArray(value) ? value.map(asNumber) : [];\n } else if (type === \"boolean\") {\n return value === \"true\" || value === true;\n } else if (type === \"number\") {\n return asNumber(value);\n }\n\n // If type is undefined, but an enum is present, try and infer the type from\n // the enum values\n if (schema.enum) {\n if (schema.enum.every((x: any) => guessType(x) === \"number\")) {\n return asNumber(value);\n } else if (schema.enum.every((x: any) => guessType(x) === \"boolean\")) {\n return value === \"true\";\n }\n }\n\n return value;\n};\n\nfunction ButtonGroup({\n schema,\n uiSchema,\n id,\n options,\n required,\n readonly,\n value,\n multiple,\n onChange,\n ...props\n}: any) {\n const { t } = useSchemaTranslation();\n\n const uiOptions = getUiOptions(uiSchema || {}) as any;\n const semanticProps = options.semantic || {};\n const { enumDisabled, enumOptions, enumColors, enumIcons } = options;\n const emptyValue = multiple ? [] : \"\";\n const dropdownOptions = createDefaultValueOptionsForDropDown(\n enumOptions,\n enumDisabled,\n enumIcons,\n enumColors\n );\n\n const _onChange = (event: any, { value: btnValue }: any) => {\n if (schema.type === \"array\") {\n const all = enumOptions.map((option: any) => option.value);\n value = Array.isArray(value) ? value : emptyValue;\n const checked = value.includes(btnValue);\n const newValue = checked\n ? deselectValue(btnValue, value)\n : selectValue(btnValue, value, all);\n if (onChange) {\n onChange(newValue);\n }\n } else {\n if (onChange) {\n onChange(processValue(schema, btnValue));\n }\n }\n };\n\n const label = props.label || schema.title;\n const inverted = semanticProps.inverted && (semanticProps.inverted !== \"false\" || semanticProps.inverted === true);\n return (\n \n {label && !inverted && }\n {dropdownOptions.length ? (\n \n {dropdownOptions.map((option) => {\n const checked = Array.isArray(value)\n ? value.includes(option.value)\n : value === option.value;\n const itemDisabled =\n enumDisabled && enumDisabled.indexOf(option.value) !== -1;\n return (\n \n ) : null\n }\n onClick={_onChange}\n disabled={itemDisabled}\n />\n );\n })}\n \n ) : (\n

No options

\n )}\n {label && inverted && }\n
\n );\n}\n\nButtonGroup.defaultProps = {\n options: {\n semantic: {\n inverted: \"false\",\n fluid: true,\n selection: true,\n scrolling: true,\n upward: false,\n },\n },\n};\n\nButtonGroup.propTypes = {\n options: PropTypes.object,\n};\n\nexport default ButtonGroup;\n","import React, { PropsWithChildren } from \"react\";\nimport { Icon } from \"semantic-ui-react\";\nimport { SemanticICONS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport { IFileUploadElementProps } from \"../../../../../sg-fileupload\";\nimport \"./_InputElement.less\";\n\ninterface InputElementProps extends IFileUploadElementProps {\n text: string;\n icon: SemanticICONS;\n}\n\nexport const InputElement: React.FC> = ({\n children,\n isDragActive,\n text,\n icon = \"file\"\n}) => {\n\n return (\n
\n
\n \n \n \n \n
\n
\n {text}\n {children}\n
\n
\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Form, List } from \"semantic-ui-react\";\nimport { TFunction } from \"i18next\";\nimport { IFileUploadElementProps, FileInput, FileView } from \"../../../../../sg-fileupload\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { InputElement } from \"../../components/InputElement\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nconst getTextProps = (t: TFunction) => ({\n uploadFileByDraggingOrClickHere: t(\"Lataa tiedosto raahaamalla se tähän tai napsauttamalla\"),\n});\n\nconst InputAreaElement: React.FC> = (props) => {\n const texts = getTextProps(useTranslation().t);\n return (\n \n );\n};\n\ninterface IFileUploadProps extends WidgetProps {\n type?: string\n}\n\n\nfunction FileUploadWidget({\n disabled,\n value,\n onChange,\n readonly,\n label,\n required\n}: IFileUploadProps) {\n const { t } = useSchemaTranslation();\n\n const onAddImage = (newImages: { id: string; name: string }[]) => {\n if (onChange) {\n onChange((value || []).concat(newImages));\n }\n };\n\n const onRemovedImage = (guid: string) => {\n if (onChange) {\n onChange(value.filter((file: any) => file.id !== guid));\n };\n };\n\n if (readonly) {\n return (\n \n {(value || []).map((file: any) => (\n \n \n \n ))}\n \n );\n };\n\n\n return (\n \n {label && }\n \n \n );\n}\n\nexport default FileUploadWidget;\n","import React, { PropsWithChildren } from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport { TFunction } from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { ImageInput, IFileUploadElementProps } from \"../../../../../sg-fileupload\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { InputElement } from \"../../components/InputElement\";\n\nconst getTextProps = (t: TFunction) => ({\n downloadImageByDraggingOrClickHere: t(\"Lataa kuva raahaamalla se tähän tai napsauttamalla\"),\n});\n\nconst InputAreaElement: React.FC> = (props) => {\n const texts = getTextProps(useTranslation().t);\n return (\n \n );\n};\n\n\n\nfunction ImageUploadWidget({\n disabled,\n value,\n onChange,\n readonly,\n label,\n required,\n}: WidgetProps) {\n\n const { t } = useSchemaTranslation();\n\n const onAddImage = (newImages: { id: string; name: string }[]) => {\n if (onChange) {\n onChange((value || []).concat(newImages));\n }\n };\n\n const onRemovedImage = (guid: string) => {\n if (onChange) {\n onChange(value.filter((file: any) => file.id !== guid));\n };\n };\n return (\n \n {label && }\n \n \n );\n}\n\nexport default ImageUploadWidget;\n","import React, { Fragment, useRef, useState } from \"react\"\nimport { Button, Label, Segment } from \"semantic-ui-react\";\nimport { TResult, useLoading } from \"../../../sg-core\";\nimport SignatureCanvasComponent from 'react-signature-canvas'\nimport \"./_SignatureInput.less\";\n\nfunction dataURLtoBlob(dataurl: string) {\n //@ts-ignore\n var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],\n bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n};\n\ntype TSignatureId = string;\n\ninterface SignatureCanvasProps {\n value?: TSignatureId;\n onChange?: (value?: TSignatureId) => any;\n\n signatoryName?: string;\n renderSignature: (id: TSignatureId) => any;\n onSaveSignature?: (data: File) => Promise>;\n\n removeSignatureConfirmationText: string;\n signatureCannotBeEmptyText: string;\n addNewSignatureText: string;\n addSignatureText: string;\n clearText: string;\n acceptText: string;\n}\n\nexport const SignatureCanvas: React.FC = ({\n value,\n onChange,\n signatoryName,\n renderSignature,\n onSaveSignature: uploadSignature,\n\n\n removeSignatureConfirmationText,\n signatureCannotBeEmptyText,\n addNewSignatureText,\n addSignatureText,\n clearText,\n acceptText,\n}) => {\n const canvasRef = useRef();\n\n const [isEditing, setEditing] = useState(true);\n const [isEmpty, setEmpty] = useState(false);\n const [signature, setSignature] = useState(value);\n const { loading, loadError, startLoading, loadSuccess, loadErrored } = useLoading();\n\n const clearCanvas = () => {\n if (canvasRef.current) {\n canvasRef.current.clear()\n };\n };\n\n const removeSignature = () => {\n var confirmRemove = window.confirm(removeSignatureConfirmationText);\n if (confirmRemove == true) { // eslint-disable-line eqeqeq\n setSignature(undefined);\n onChange && onChange(undefined);\n setEditing(true);\n setEmpty(false);\n }\n };\n\n const updateSignature = async () => {\n const signatureCanvas: any = canvasRef.current;\n if (signatureCanvas && uploadSignature) {\n if (signatureCanvas.isEmpty()) {\n setEmpty(true)\n return\n }\n\n const signature = signatureCanvas.getCanvas().toDataURL('image/png')\n const data = dataURLtoBlob(signature);\n startLoading();\n const result = await uploadSignature(data as File);\n if (result.isFailure) {\n loadErrored(result.error.message);\n return;\n };\n\n loadSuccess();\n setSignature(result.value);\n setEditing(false);\n isEmpty && setEmpty(false);\n };\n };\n\n\n const errorText = loadError ? loadError : isEmpty ? signatureCannotBeEmptyText : null;\n\n return (\n \n {signature ? (\n \n
\n {renderSignature(signature)}\n
\n \n \n \n
\n ) : isEditing ? (\n
\n \n\n {errorText &&
\n ) : null}\n\n\n\n\n
\n );\n};","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form, Message } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { SignatureCanvas } from \"../../../../components/Signature/SignatureInput\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { useSignatureWidgetContext } from \"../../../../context/SignatureContext\";\nimport _select from \"selectn\";\nimport { useFormDataContext } from \"../../../../context/FormDataContext\";\n\nfunction SignatureWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n\n const { t } = useSchemaTranslation();\n\n const signatureOptions = useSignatureWidgetContext();\n const formData = useFormDataContext();\n\n if (!signatureOptions) {\n return \n }\n\n const { placeholder } = getUiOptions(uiSchema) as any;\n const semanticProps = getSemanticProps({ formContext, options });\n\n const signatoryPerson = options.signatoryFieldReference ? _select(options.signatoryFieldReference, formContext.currentFormData) : null;\n\n const signatoryName = signatoryPerson || options.signatoryName ? signatureOptions.renderSignatoryName({ personId: signatoryPerson, name: options.signatoryName }) : undefined;\n label = label || schema.title;\n\n return (\n \n\n {label && }\n \n \n );\n}\n\nSignatureWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nSignatureWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default SignatureWidget;\n","import React, { Suspense, useEffect, useState } from \"react\";\nimport { Form, Icon, List, Message } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { IHprOptions, IPerson, useHprContext, PeoplePicker } from \"../../../../../sg-hpr\";\nimport { makeSuccess, TResult } from \"../../../../../sg-core\";\n\ninterface PersonLabelProps {\n fetchPerson: IHprOptions[\"fetchPersonById\"];\n personId: IPerson[\"id\"];\n person?: IPerson;\n requiredCerts?: Array;\n}\nconst PersonLabel: React.FC = ({ personId, person: loadedPerson, fetchPerson, requiredCerts }) => {\n const [person, setPerson] = useState | undefined>(loadedPerson ? makeSuccess(loadedPerson) : undefined);\n\n useEffect(() => {\n const load = async () => {\n const result = await fetchPerson(personId);\n setPerson(result)\n }\n load()\n }, [personId]);\n\n\n return (\n \n {requiredCerts ? : null}\n {\n person?.isFailure ? \"Failed to fetch person\"\n : person?.isSuccess ? person.value.fullname : \"\"\n }\n \n )\n}\n\ninterface IPeoplePickerOptions {\n requiredCerts?: string[],\n [key: string]: any\n}\n\nfunction PersonPickerWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema = {},\n rawErrors = [],\n}: any) {\n const hprContext = useHprContext()\n const { t } = useSchemaTranslation();\n\n const isMulti = schema.type === \"array\";\n\n const { placeholder } = getUiOptions(uiSchema);\n const { requiredCerts } = options || {};\n\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = (value: any) => {\n onChange(value);\n }\n\n\n if (!hprContext) {\n return (\n \n )\n };\n\n\n const renderPersonLabel = (personId: IPerson[\"id\"]) => (\n \n );\n\n const renderSearchResult = (person: IPerson) => (\n \n );\n\n\n\n return (\n \n {label && }\n }>\n \n \n \n\n );\n}\n\nexport default PersonPickerWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form, Icon, Segment, Header } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction MapLocationWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n // const { placeholder } = getUiOptions(uiSchema) as any;\n //const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n\n return (\n \n\n \n \n
\n
\n \n );\n}\n\nMapLocationWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n },\n },\n};\n\nMapLocationWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default MapLocationWidget;\n","import { useCallback, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form, StrictDropdownProps } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { useLoading } from \"../../../../../sg-core\";\nimport _debounce from \"lodash/debounce\";\n\nfunction RelatedPermitWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n const permitOptions = [\"Tulityölupa 6.8.2021\", \"Tulityölupa 7.8.2021\", \"Säiliötyölupa 8.8.2021\", \"Yleinentyölupa 2021-2022\"].map((text, index) => ({ text, value: index }))\n\n\n const { placeholder } = getUiOptions(uiSchema) as any;\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n const [query, setQuery] = useState(\"\");\n const { loading, loadError, loadErrored, loadSuccess, startLoading } = useLoading();\n const [results, setResults] = useState(permitOptions);\n\n const search = async (query: string) => {\n startLoading();\n setResults([]);\n await new Promise((resolve) => setTimeout(resolve, 400));\n if (query === \"error\") {\n loadErrored(\"Failed to fetch results\")\n } else {\n loadSuccess();\n setResults(permitOptions.filter((perm) => perm.text.toLowerCase().indexOf(query) > -1))\n };\n };\n const debouncedSearch = useCallback(_debounce(search, 200), [])\n\n const updateQuery: StrictDropdownProps[\"onSearchChange\"] = (_1, { query }) => {\n setQuery(query);\n debouncedSearch(query)\n };\n\n return (\n \n );\n\n\n return (\n \n );\n}\n\nRelatedPermitWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nRelatedPermitWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default RelatedPermitWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction AreaSelect({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n const { placeholder } = getUiOptions(uiSchema) as any;\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n );\n}\n\nAreaSelect.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nAreaSelect.propTypes = {\n options: PropTypes.object,\n};\n\nexport default AreaSelect;\n","\nimport _isBefore from \"date-fns/isBefore\"\nimport _isAfter from \"date-fns/isAfter\"\n\nimport { TFunction } from \"i18next\";\nimport { DATE_FORMAT, TIME_FORMAT } from \"../../constants/formats\"\nimport { PickerUtils } from \"./PickerUtils\";\n\ninterface IValidateRangeOptions {\n minDate: Date | undefined,\n maxDate: Date | undefined,\n format: string,\n validateInput: (inputValue: string) => boolean\n};\n\ninterface IValidateDateRangeOptions {\n minDate: Date | undefined,\n maxDate: Date | undefined\n};\n\ninterface IValidateTimeRangeOptions {\n minDate: Date | undefined,\n maxDate: Date | undefined\n};\n\nexport enum ERangeError {\n MaxDateBoundary = \"MaxDateBoundary\",\n MinDateBoundary = \"MinDateBoundary\",\n InvalidInput = \"InvalidInput\",\n InvalidDate = \"InvalidDate\",\n};\n\nconst validateRange = (inputValue: string, options: IValidateRangeOptions): ERangeError | undefined => {\n try {\n const { format, validateInput, minDate, maxDate } = options\n\n const inputTextSeemsCompleteDate = validateInput(inputValue);\n\n if (!inputTextSeemsCompleteDate) {\n return ERangeError.InvalidInput;\n };\n\n const referenceDate = PickerUtils.resetTime(new Date());\n const newDate = PickerUtils.parseString(inputValue, format, referenceDate);\n if (!newDate) {\n throw Error(\"Failed to parse date\");\n };\n\n const beforeMinDate = minDate && newDate ? _isBefore(newDate, minDate) : false;\n\n if (beforeMinDate) {\n return ERangeError.MinDateBoundary;\n };\n\n const dateAfterMaxDate = maxDate && newDate ? _isAfter(newDate, maxDate) : false;\n\n if (dateAfterMaxDate) {\n return ERangeError.MaxDateBoundary;\n };\n\n } catch (error) {\n // console.info(\"[validateRange]\", { error })\n return ERangeError.InvalidDate\n };\n};\n\nconst PickerValidator = {\n validateRange,\n\n Date: {\n\n validateInput: (inputValue: string, strict = false): boolean => {\n let [day, month, year] = inputValue.split(\".\");\n const inputTextSeemsCompleteDate = day && month && (year && year.length === 4);\n const strictInputTextSeemsCompleteDate = day && day.length === 2 && month && month.length === 2 && (year && year.length === 4);\n return Boolean(strict ? strictInputTextSeemsCompleteDate : inputTextSeemsCompleteDate);\n },\n\n validateRange: (inputValue: string, options: IValidateDateRangeOptions): ERangeError | undefined => {\n\n\n return validateRange(inputValue, {\n minDate: options.minDate ? PickerUtils.resetTime(PickerUtils.ensureFreshDateInstance(options.minDate) as any) : undefined,\n maxDate: options.maxDate ? PickerUtils.resetTime(PickerUtils.ensureFreshDateInstance(options.maxDate) as any) : undefined,\n format: DATE_FORMAT,\n validateInput: PickerValidator.Date.validateInput\n });\n },\n\n getRangeErrorMessage: (status: ERangeError, options: IValidateDateRangeOptions, t: TFunction) => {\n const { minDate, maxDate } = options;\n const texts = {\n maxDate: t(\"Suurin sallittu päivämäärä \"),\n minDate: t(\"Pienin sallittu päivämäärä \"),\n invalidDate: t(\"Virheellinen päivämäärä\")\n }\n const errorMessage = {\n [ERangeError.InvalidInput]: undefined,\n [ERangeError.MaxDateBoundary]: texts.maxDate + (maxDate ? PickerUtils.formatDate(maxDate, DATE_FORMAT) : \"\"),\n [ERangeError.MinDateBoundary]: texts.minDate + (minDate ? PickerUtils.formatDate(minDate, DATE_FORMAT) : \"\"),\n [ERangeError.InvalidDate]: texts.invalidDate,\n }[status];\n\n return errorMessage;\n }\n },\n\n Time: {\n validateInput: (inputValue: string, strict = false): boolean => {\n let [hour, minute] = inputValue.split(\":\");\n const inputTextSeemsCompleteTime = hour && minute;\n const strictInputTextSeemsCompleteTime = hour && hour.length === 2 && minute && minute.length === 2;\n return Boolean(strict ? strictInputTextSeemsCompleteTime : inputTextSeemsCompleteTime);\n },\n\n validateRange: (inputValue: string, options: IValidateTimeRangeOptions): ERangeError | undefined => {\n return validateRange(inputValue, {\n minDate: options.minDate,\n maxDate: options.maxDate,\n format: TIME_FORMAT,\n validateInput: PickerValidator.Time.validateInput\n });\n },\n\n getRangeErrorMessage: (status: ERangeError, options: IValidateTimeRangeOptions, t: TFunction) => {\n const { minDate, maxDate } = options;\n const texts = {\n maxTime: t(\"Suurin sallittu aika\"),\n minTime: t(\"Pienin sallittu aika \"),\n invalidTime: t(\"Virheellinen päivämäärä\")\n }\n const errorMessage = {\n [ERangeError.InvalidInput]: undefined,\n [ERangeError.MaxDateBoundary]: texts.maxTime + \" \" + (maxDate ? PickerUtils.formatDate(maxDate, TIME_FORMAT) : \"\"),\n [ERangeError.MinDateBoundary]: texts.minTime + \" \" + (minDate ? PickerUtils.formatDate(minDate, TIME_FORMAT) : \"\"),\n [ERangeError.InvalidDate]: texts.invalidTime,\n }[status];\n\n return errorMessage;\n }\n }\n}\n\n\n\nexport default PickerValidator;","\nimport parse from \"date-fns/parse\";\nimport format from \"date-fns/format\";\n\nexport const TIME_FORMAT = \"HH:mm\";\nexport const DATE_FORMAT = \"dd.MM.yyyy\";\nexport const DATE_TIME_FORMAT = \"dd.MM.yyyy HH:mm\";\n\nexport const TIME_VALUE_FORMAT = \"HH:mm\";\nexport const DATE_VALUE_FORMAT = \"yyyy-MM-dd\";\n\nexport const STRICT_HOUR_ROUNDING_VALUE_REGEX = \"[0-23]\";\n\nexport const STRICT_TIME_REGEX = \"^[0-2][0-9]:[0-5][0-9]\";\nexport const STRICT_DATE_REGEX = \"[0-3][0-9]\\.[0-1][0-9]\\.[0-9]{4}\";\n\n\n\nexport const dateDataToDate = (value: string | undefined, schemaFormat: \"date\" | \"time\" | \"date-time\") => {\n if (!value) {\n return;\n }\n try {\n if (schemaFormat === \"date\") {\n return parse(value, DATE_FORMAT, new Date());\n }\n\n if (schemaFormat === \"time\") {\n return parse(value, TIME_FORMAT, new Date());\n }\n\n } catch (error) {\n return new Date(value);\n }\n if (schemaFormat === \"date-time\") {\n return new Date(value);\n }\n};\n\nexport const dateValueToFormat = (value: string | undefined, schemaFormat: \"date\" | \"time\" | \"date-time\") => {\n\n const valueAsDate = dateDataToDate(value, schemaFormat);\n if (!valueAsDate) {\n return;\n }\n\n if (schemaFormat === \"date\") {\n return format(valueAsDate, DATE_FORMAT);\n }\n\n if (schemaFormat === \"time\") {\n return format(valueAsDate, TIME_FORMAT);\n }\n\n if (schemaFormat === \"date-time\") {\n return format(valueAsDate, DATE_TIME_FORMAT);\n }\n};","import { DATE_FORMAT, DATE_TIME_FORMAT, DATE_VALUE_FORMAT, TIME_FORMAT, TIME_VALUE_FORMAT } from \"../../constants/formats\"\nimport _format from \"date-fns/format\";\nimport _parse from \"date-fns/parse\";\nimport _isPast from \"date-fns/isPast\";\nimport _isSameDay from \"date-fns/isSameDay\";\nimport _isBefore from \"date-fns/isBefore\"\nimport _add from \"date-fns/add\"\n\nexport const TIME_REGEX = /^[0-2][0-9]:[0-5][0-9]/;\nexport const DATE_REGEX = /^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$/;\n\n/**\n * Invokes function safely inside try catch\n */\nexport const catchErrors = any>(fn: T, args: Parameters, fallback: any | ((error: any) => any)): ReturnType => {\n try {\n return fn(...args);\n } catch (error) {\n // console.info(\"[catchErrors]\", error, { fn, args, fallback });\n return typeof fallback === \"function\" ? fallback(error) : fallback;\n };\n};\n\nexport const PickerUtils = {\n\n /**\n * Formats picker value to separate time and date inputs texts\n * @param value \n * @returns \n */\n separateDateAndTime: (value?: string): { date?: Date, time?: Date, dateInput?: string, timeInput?: string } => {\n if (!value) {\n return {}\n };\n\n if (RegExp(TIME_REGEX).test(value)) {\n return {\n timeInput: value,\n time: PickerUtils.parseString(value, TIME_FORMAT)\n };\n };\n\n const date = new Date(value);\n\n if (RegExp(DATE_REGEX).test(value)) {\n return {\n date: date,\n dateInput: PickerUtils.formatDateString(value, DATE_FORMAT)\n };\n };\n\n return {\n date: date,\n time: date,\n dateInput: PickerUtils.formatDate(date, DATE_FORMAT),\n timeInput: PickerUtils.formatDate(date, TIME_FORMAT)\n };\n },\n\n guessDateFormat: (value: string): \"time\" | \"date\" | \"date-time\" | undefined => {\n if (RegExp(TIME_REGEX).test(value)) {\n return \"time\";\n };\n if (RegExp(DATE_REGEX).test(value)) {\n return \"date\";\n };\n const date = new Date(value);\n if (date) {\n return \"date-time\";\n };\n },\n\n\n\n ensureValueFormat: (value: string, format: \"time\" | \"date\" | \"date-time\"): string | undefined => {\n const date = PickerUtils.valueToDate(value);\n if (!date) return\n if (format === \"date\") {\n return PickerUtils.formatDate(date, DATE_VALUE_FORMAT);\n };\n if (format === \"time\") {\n return PickerUtils.formatDate(date, TIME_VALUE_FORMAT);\n };\n if (format === \"date-time\") {\n return date.toISOString()\n };\n },\n\n\n /**\n * Formats date object to string format\n */\n formatDate: (date: Date, format: string) => {\n return _format(date, format);\n },\n\n /**\n * Formats date string to a input text\n */\n formatDateString: (value: string, format: string) => {\n return _format(new Date(value), format)\n },\n\n /**\n * Parses input text to a date object\n */\n parseString: (text: string, format: string, referenceDate = new Date()) => {\n return _parse(text, format, referenceDate);\n },\n\n /**\n * Converts date string to date object\n */\n valueToDate: (text?: string): Date | undefined => {\n if (text && RegExp(/^[0-2][0-9]:[0-5][0-9]/).test(text)) {\n const [hours, minutes] = text.split(\":\");\n const date = PickerUtils.resetTime(new Date());\n date.setHours(Number(hours))\n date.setMinutes(Number(minutes))\n return date\n };\n return text ? new Date(text) : undefined\n },\n\n\n dateValueToFormat: (value: string | undefined, schemaFormat: \"date\" | \"time\" | \"date-time\") => {\n\n const valueAsDate = PickerUtils.valueToDate(value);\n if (!valueAsDate) {\n return;\n }\n\n if (schemaFormat === \"date\") {\n return PickerUtils.formatDate(valueAsDate, DATE_FORMAT);\n }\n\n if (schemaFormat === \"time\") {\n return PickerUtils.formatDate(valueAsDate, TIME_FORMAT);\n }\n\n if (schemaFormat === \"date-time\") {\n return PickerUtils.formatDate(valueAsDate, DATE_TIME_FORMAT);\n }\n },\n\n\n /**\n * Coverts input text to date object\n */\n inputTextToDate: (inputText: string | undefined, format: string, referenceDate = new Date()): Date | undefined => {\n if (inputText) {\n return _parse(inputText, format, referenceDate)\n };\n },\n\n /**\n * Override only date of date object\n */\n overwriteDatePartOfDate: (date: Date, newDate: Date) => {\n date.setDate(newDate.getDate());\n date.setMonth(newDate.getMonth());\n date.setFullYear(newDate.getFullYear());\n return new Date(date);\n },\n\n /**\n * Override only time of date objects\n */\n overwriteTimePartOfDate: (date: Date, newDate: Date) => {\n date.setHours(newDate.getHours());\n date.setMinutes(newDate.getMinutes());\n date.setMilliseconds(newDate.getMilliseconds());\n return new Date(date)\n },\n\n /**\n * Sets time part of date to 00:00:00:0000\n */\n resetTime: (date: Date) => {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return new Date(date)\n },\n\n /**\n * Rounds date to nearest hour\n */\n roundToNearestHour: (date: Date, hourRoundingValue: number = 1) => {\n date.setHours(date.getHours() + hourRoundingValue);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return new Date(date)\n },\n\n isValidDate: (date?: Date) => {\n return date && !isNaN(date.getTime())\n },\n\n /**\n * Creates new instance of date\n * @param inputDate \n * @returns \n */\n ensureFreshDateInstance: (inputDate?: Date) => {\n return (inputDate && PickerUtils.isValidDate(inputDate)) ? new Date(inputDate.getTime()) : undefined\n },\n\n\n /**\n * Takes reference date and calculates default value\n */\n getDefaultDateValue: (reference: Date, options: { defaultTime?: string; hourRoundingValue?: number; minDate?: Date; }): string | undefined => {\n let date = PickerUtils.ensureFreshDateInstance(reference);\n if (date) {\n let time = date;\n if (options.defaultTime && RegExp(TIME_REGEX).test(options.defaultTime)) {\n const [hour, minutes] = options.defaultTime.split(\":\").map(Number);\n time = PickerUtils.resetTime(date);\n time.setHours(hour);\n time.setMinutes(minutes);\n } else {\n time = PickerUtils.roundToNearestHour(time, options.hourRoundingValue);\n };\n\n if (options.minDate && (_isBefore(time, options.minDate) || PickerUtils.formatDate(options.minDate, TIME_FORMAT) === PickerUtils.formatDate(time, TIME_FORMAT))) {\n date = _add(date, { days: 1 }); // _add day if time is before reference\n };\n\n date = PickerUtils.overwriteTimePartOfDate(date, time);\n if (date) {\n return date.toISOString()\n }\n };\n },\n\n /**\n * Takes reference start - end values, and calculates default values for them.\n */\n getDefaultDateRangeValues: (value: { start?: string, end?: string; } | undefined, options: { start: { defaultTime?: string; hourRoundingValue?: number; }; end: { defaultTime?: string; hourRoundingValue?: number; } }) => {\n const reference = new Date();\n\n let start = value?.start;\n let startDate = catchErrors(PickerUtils.valueToDate, [start], undefined)\n\n if (!start || !startDate) {\n start = PickerUtils.getDefaultDateValue(reference, {\n minDate: reference,\n defaultTime: options.start.defaultTime,\n hourRoundingValue: options.start.hourRoundingValue\n });\n startDate = PickerUtils.valueToDate(start)\n };\n\n let end = value?.end;\n\n if (!end && startDate) {\n end = PickerUtils.getDefaultDateValue(startDate, {\n minDate: startDate,\n defaultTime: options.end.defaultTime,\n hourRoundingValue: options.end.hourRoundingValue\n });\n };\n\n return { end, start };\n },\n\n\n /**\n * Takes date and time inputs and joins them to value format\n */\n processValue: (\n dateInput: string | undefined,\n timeInput: string | undefined,\n valueFormat: \"date\" | \"time\" | \"date-time\"\n ): string | undefined => {\n\n const dateAsDate = dateInput ? PickerUtils.parseString(dateInput, DATE_FORMAT) : undefined;\n const timeAsDate = timeInput ? PickerUtils.parseString(timeInput, TIME_FORMAT) : undefined;\n\n if (valueFormat === \"date-time\" && dateAsDate && timeAsDate) {\n let newValue = PickerUtils.resetTime(new Date());\n newValue = PickerUtils.overwriteDatePartOfDate(newValue, dateAsDate);\n newValue = PickerUtils.overwriteTimePartOfDate(newValue, timeAsDate);\n return newValue.toISOString();\n };\n\n if ((valueFormat === \"date\" && dateAsDate) || dateAsDate) {\n return PickerUtils.formatDate(dateAsDate, DATE_VALUE_FORMAT);\n };\n\n if ((valueFormat === \"time\" && timeAsDate) || timeAsDate) {\n return PickerUtils.formatDate(timeAsDate, TIME_VALUE_FORMAT);\n };\n }\n};","\nimport React, { ChangeEvent, useState, useEffect, useRef } from \"react\";\nimport { Input, Button, Popup, InputOnChangeData, Label, Ref } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport format from \"date-fns/format\";\n\nimport { ErrorBoundary, useOnClickOutside } from \"../../../sg-core\";\nimport { DATE_FORMAT } from \"../../constants/formats\";\nimport Validator, { ERangeError } from \"./DateTimePicker.validation\"\nimport Calendar, { CalendarProps } from \"react-calendar\";\nimport { catchErrors, PickerUtils } from \"./PickerUtils\";\n\nexport interface IDateInput {\n minDate?: Date;\n maxDate?: Date;\n format?: string;\n errorMessage?: string;\n lang?: \"fi\" | \"en\" | string;\n\n value?: string;\n onChange: (date: string | undefined) => void;\n}\n\n\nexport const DateInput: React.FC = ({\n format: dateFormat = DATE_FORMAT,\n value,\n onChange,\n errorMessage,\n lang = \"fi\",\n ...props\n}) => {\n const { t } = useTranslation()\n\n const minDate = props.minDate;\n const maxDate = props.maxDate;\n\n const inputRef = useRef(null);\n\n const [inputError, setInputError] = useState();\n\n const [isOpen, setOpen] = useState(false);\n\n useEffect(() => {\n const inputElement = inputRef.current?.getElementsByTagName(\"INPUT\")[0] as HTMLInputElement | undefined;\n if (inputElement && typeof value !== undefined && (inputElement.value || \"\") !== value) {\n inputElement.value = value || \"\";\n };\n\n if (!value && inputError) {\n setInputError(undefined);\n };\n\n }, [value])\n\n\n const updateInput = (inputValue?: string, strict = false) => {\n if (inputError) {\n setInputError(undefined)\n };\n\n if (!inputValue) {\n return onChange(undefined);\n };\n\n const inputTextSeemsCompleteDate = Validator.Date.validateInput(inputValue, strict)\n if (!inputTextSeemsCompleteDate) {\n return\n };\n\n const rangeError = Validator.Date.validateRange(inputValue, { minDate, maxDate });\n\n if (rangeError) {\n const errorMessage = Validator.Date.getRangeErrorMessage(rangeError, { minDate, maxDate }, t);\n setInputError(errorMessage);\n\n\n if (rangeError === ERangeError.InvalidDate) {\n onChange(undefined);\n }\n onChange(inputValue);\n return\n }\n\n onChange(inputValue);\n }\n\n\n const _onCalendarChange: CalendarProps[\"onChange\"] = (value: Date) => {\n updateInput(format(value, DATE_FORMAT));\n setOpen(false);\n }\n\n const _onInputChange = (event: ChangeEvent, data: InputOnChangeData) => {\n inputError && setInputError(undefined);\n const value = event.target.value;\n updateInput(value, true);\n };\n\n\n const _onOutsideClick = () => {\n const inputElement = inputRef.current?.getElementsByTagName(\"INPUT\")[0] as HTMLInputElement | undefined;\n if (inputElement && inputElement === document.activeElement) {\n inputError && setInputError(undefined);\n updateInput(inputElement?.value);\n }\n };\n\n useOnClickOutside(inputRef, _onOutsideClick);\n\n return (\n
\n setOpen(false)}\n style={{ padding: 0, zIndex: 9999999 }}\n trigger={(\n \n setOpen(open => !open)}\n />\n }\n labelPosition=\"right\"\n />\n \n )}\n >\n Error: failed to display date picker
}>\n \n \n \n\n {(inputError || errorMessage) && }\n \n )\n};","import _isBefore from \"date-fns/isBefore\"\nimport _add from \"date-fns/add\"\n\nimport { STRICT_TIME_REGEX, TIME_FORMAT } from \"../../constants/formats\";\nimport { PickerUtils } from \"./PickerUtils\";\n\n\n\ninterface IGetDefaultDateValueOptions {\n defaultTime?: string;\n hourRoundingValue?: number;\n minDate?: Date;\n};\n\nexport const getDefaultDateValue = (reference: Date, options: IGetDefaultDateValueOptions): string | undefined => {\n let date = PickerUtils.ensureFreshDateInstance(reference);\n if (date) {\n let time = date;\n if (options.defaultTime && RegExp(STRICT_TIME_REGEX).test(options.defaultTime)) {\n const [hour, minutes] = options.defaultTime.split(\":\").map(Number);\n time = PickerUtils.resetTime(date);\n time.setHours(hour);\n time.setMinutes(minutes);\n } else {\n time = PickerUtils.roundToNearestHour(time, options.hourRoundingValue);\n };\n\n if (options.minDate && (_isBefore(time, options.minDate) || PickerUtils.formatDate(options.minDate, TIME_FORMAT) === PickerUtils.formatDate(time, TIME_FORMAT))) {\n date = _add(date, { days: 1 }); // _add day if time is before reference\n };\n\n date = PickerUtils.overwriteTimePartOfDate(date, time);\n if (date) {\n return date.toISOString()\n }\n };\n};\n\n","\nimport React, { useEffect, useRef, useState, Fragment } from \"react\";\nimport ReactDOM from \"react-dom\"\nimport { List, ListItemProps } from \"semantic-ui-react\";\n\nconst useKeyPress = function (targetKey: string) {\n const [keyPressed, setKeyPressed] = useState(false);\n\n function downHandler({ key }: KeyboardEvent) {\n if (key === targetKey) {\n setKeyPressed(true);\n }\n }\n\n const upHandler = ({ key, target }: KeyboardEvent) => {\n\n if (key === targetKey) {\n setKeyPressed(false);\n }\n };\n\n React.useEffect(() => {\n window.addEventListener(\"keydown\", downHandler);\n window.addEventListener(\"keyup\", upHandler);\n\n return () => {\n window.removeEventListener(\"keydown\", downHandler);\n window.removeEventListener(\"keyup\", upHandler);\n };\n });\n\n return keyPressed;\n};\n\nexport const TimeList: React.FC<{\n list: any[];\n onSelect: any;\n selected: any;\n label?: string\n}> = ({ list, selected, onSelect, label }) => {\n\n const listRef = useRef(null);\n const selectedItemRef = useRef(null);\n\n // const downPress = useKeyPress(\"ArrowDown\");\n // const upPress = useKeyPress(\"ArrowUp\");\n // const enterPress = useKeyPress(\"Enter\");\n\n /*\n const [cursor, setCursor] = useState(undefined);\n const [hovered, setHovered] = useState(undefined);\n const [listFocus, setListFocus] = useState(false);\n \n useEffect(() => {\n if (list.length && downPress && listFocus) {\n setCursor((prevState = 0) =>\n prevState < list.length - 1 ? prevState + 1 : prevState\n );\n }\n }, [downPress,]);\n \n useEffect(() => {\n if (list.length && upPress && listFocus) {\n setCursor((prevState = 0) => (prevState > 0 ? prevState - 1 : prevState));\n }\n }, [upPress]);\n \n useEffect(() => {\n if (list.length && enterPress && listFocus && cursor) {\n onSelect(list[cursor].value);\n }\n }, [cursor, enterPress]);\n \n useEffect(() => {\n if (list.length && hovered && listFocus) {\n setCursor(list.indexOf(hovered));\n }\n }, [hovered]);\n */\n\n useEffect(() => {\n const itemEl = ReactDOM.findDOMNode(listRef.current) as HTMLElement | undefined;\n const selectedEL = ReactDOM.findDOMNode(selectedItemRef.current) as HTMLElement | undefined;;\n if (itemEl && selectedEL) {\n itemEl.scrollTop = selectedEL.offsetTop - 30\n }\n }, [selected]);\n\n const _onClick = (_1: any, data: ListItemProps) => {\n onSelect(data.value)\n };\n\n\n return (\n \n
{label}
\n setListFocus(true)}\n // onBlur={() => setListFocus(false)}\n ref={listRef}\n id=\"hours\"\n className=\"TimeList\"\n celled\n selection\n >\n\n\n {list.map((item, i) => (\n setHovered(item)}\n // onMouseLeave={() => setHovered(undefined)}\n active={selected === item.value}\n >\n {item.text}\n \n ))\n }\n \n
\n\n )\n};","\nimport React, { useMemo } from \"react\";\nimport { Segment, Grid } from \"semantic-ui-react\";\nimport _uniqueId from \"lodash/uniqueId\"\nimport { TimeList } from \"./TimeList\";\nimport { TFunction } from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport \"./_HourMinuteSelect.less\"\n\nconst hours = Array(24).fill(null).map((_, i) => String(i).padStart(2, \"0\"));\nconst minutes = Array(60).fill(null).map((_, i) => String(i).padStart(2, \"0\"));\n\nconst timeToOptions = (num: string) => ({ text: num, value: num, key: _uniqueId() })\n\nconst hourOptions = hours.map(timeToOptions)\nconst minutesOptions = minutes.map(timeToOptions)\n\nconst getTextProps = (t: TFunction) => ({\n hour: t(\"Tunti\"),\n minute: t(\"Minuutti\"),\n\n});\n\ninterface IHourMinuteSelect {\n value?: string;\n minDate?: Date\n maxDate?: Date;\n onChange?: (date: string | undefined) => void;\n}\n\n\nexport const HourMinuteSelect: React.FC = ({\n\n value = \"00:00\",\n minDate,\n maxDate,\n onChange = () => null,\n\n}) => {\n const texts = getTextProps(useTranslation().t);\n\n const [minHour, minMinute] = minDate ? [minDate.getHours(), minDate.getMinutes()].map(String) : []\n const [maxHour, maxMinute] = maxDate ? [maxDate.getHours(), maxDate.getMinutes()].map(String) : []\n\n let [hour, minute] = value?.split(\":\")\n if (hour) hour = hour.padStart(2, \"0\");\n if (minute) minute = minute.padStart(2, \"0\");\n\n const onHourClick = (value: string = \"\") => {\n onChange([value, (minute || \"00\")].join(\":\"))\n };\n const onMinuteClick = (value: string = \"\") => {\n onChange([(hour || \"01\"), value].join(\":\"))\n };\n const isMinHour = minHour && hour && parseFloat(minHour) === parseFloat(hour);\n const isMaxHour = maxHour && hour && parseFloat(maxHour) === parseFloat(hour);\n\n const optionsHour = useMemo(() => (\n hourOptions.filter((hour) => {\n\n if (minHour && parseFloat(hour.value) < parseFloat(minHour)) return false\n if (maxHour && parseFloat(hour.value) > parseFloat(maxHour)) return false\n return true\n }\n )), [minHour, maxHour])\n\n const optionsMinute = useMemo(() => (\n minutesOptions.filter((minute) => {\n if (isMinHour && minMinute && parseFloat(minute.value) < parseFloat(minMinute)) return false\n if (isMaxHour && maxMinute && parseFloat(minute.value) > parseFloat(maxMinute)) return false\n return true\n }\n )), [minMinute, maxMinute, isMinHour, isMaxHour]);\n\n return (\n \n \n \n\n \n \n\n \n\n \n \n \n \n )\n};\n","\nimport React, { ChangeEvent, useState, useEffect, useRef } from \"react\";\nimport { Input, Button, Popup, InputOnChangeData, Label, Ref } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HourMinuteSelect } from \"./HourMinuteSelect/HourMinuteSelect\";\nimport Validator, { ERangeError } from \"./DateTimePicker.validation\"\nimport { useOnClickOutside } from \"../../../sg-core\";\n\n\ninterface ITimeInput {\n value?: string;\n minDate?: Date;\n maxDate?: Date;\n errorMessage?: string;\n onChange: (date: string | undefined) => void;\n}\n\n\nexport const TimeInput: React.FC = ({\n value,\n onChange,\n minDate,\n maxDate,\n errorMessage,\n}) => {\n\n const { t } = useTranslation()\n\n const inputRef = useRef(null);\n const inputElement = inputRef.current?.getElementsByTagName(\"INPUT\")[0] as HTMLInputElement | undefined;\n\n const [inputError, setInputError] = useState();\n const [isOpen, setOpen] = useState(false);\n\n useEffect(() => {\n if (!value && inputError) {\n setInputError(undefined);\n }\n }, [value]);\n\n\n useEffect(() => {\n if (value) {\n const rangeError = Validator.Time.validateRange(value, { minDate, maxDate });\n if (rangeError) {\n const errorMessage = Validator.Time.getRangeErrorMessage(rangeError, { minDate, maxDate }, t);\n setInputError(errorMessage);\n }\n }\n }, [])\n\n const update = (inputValue?: string, strict = false) => {\n if (!inputValue) {\n return onChange(inputValue)\n };\n\n inputValue = inputValue.replace(\".\", \":\");\n if ([\"24:00\", \"24:0\"].includes(inputValue)) {\n inputValue = \"00:00\"\n }\n\n const inputTextSeemsCompleteDate = Validator.Time.validateInput(inputValue, strict)\n\n if (!inputTextSeemsCompleteDate) {\n return\n };\n\n const rangeError = Validator.Time.validateRange(inputValue, { minDate, maxDate });\n if (rangeError) {\n const errorMessage = Validator.Time.getRangeErrorMessage(rangeError, { minDate, maxDate }, t);\n\n setInputError(errorMessage);\n if (rangeError === ERangeError.InvalidDate) {\n onChange(undefined);\n }\n onChange(inputValue);\n return\n }\n\n onChange(inputValue)\n };\n\n\n useEffect(() => {\n const inputElement = inputRef.current?.getElementsByTagName(\"INPUT\")[0] as HTMLInputElement | undefined;\n if (inputElement && typeof value !== undefined && (inputElement.value || \"\") !== value) {\n inputElement.value = value || \"\";\n }\n }, [value]);\n\n\n const _onInputChange = (event: ChangeEvent, data: InputOnChangeData) => {\n inputError && setInputError(undefined);\n update(event.target.value, true);\n };\n\n const _onOutsideClick = () => {\n if (inputElement && inputElement === document.activeElement) {\n const value = inputElement?.value\n inputError && setInputError(undefined);\n update(value);\n }\n };\n\n const _onTimeChange = (value?: string) => {\n if (inputElement) {\n inputElement.value = value || \"\"\n }\n update(value)\n }\n\n useOnClickOutside(inputRef, _onOutsideClick);\n return (\n
\n setOpen(false)}\n trigger={(\n \n setOpen((open) => !open)}\n />\n }\n labelPosition=\"right\"\n />\n \n )}\n >\n \n \n\n\n {(inputError || errorMessage) && }\n
\n )\n};\n","import React, { Fragment } from \"react\";\nimport { Button, Form } from \"semantic-ui-react\";\nimport { DateInput } from \"./DateInput\";\nimport { getDefaultDateValue } from \"./DateTimePicker.utils\";\nimport { TimeInput } from \"./TimeInput\";\nimport _format from \"date-fns/format\";\nimport isPast from \"date-fns/isPast\";\nimport isSameDay from \"date-fns/isSameDay\";\n\nimport \"./_DateTimePicker.less\";\nimport { DATE_FORMAT, TIME_FORMAT } from \"../../constants/formats\";\nimport { TFunction } from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport { catchErrors, PickerUtils } from \"./PickerUtils\";\n\nconst getTextProps = (t: TFunction) => ({\n cannotBeInThePast: t(\"Ei voi olla menneisyydessä\"),\n});\n\nexport interface DateTimePickerProps {\n value?: string;\n onChange: (value?: string) => any;\n\n format?: \"date\" | \"time\" | \"date-time\";\n valueFormat?: \"date\" | \"time\" | \"date-time\" | \"any\";\n\n pastDateWarning?: boolean;\n\n defaultValue?: Date;\n defaultTime?: string;\n defaultValueBase?: Date;\n hourRoundingValue?: number;\n autoSelectTime?: boolean;\n\n minDate?: string;\n maxDate?: string;\n\n required?: boolean;\n disabled?: boolean;\n clearable?: boolean;\n error?: boolean;\n}\n\nconst DateTimePicker: React.FC = ({\n value,\n onChange,\n\n format = \"date\",\n valueFormat,\n hourRoundingValue = 1,\n autoSelectTime = true,\n defaultValueBase = new Date(),\n\n defaultValue,\n defaultTime,\n\n pastDateWarning,\n\n minDate,\n maxDate,\n\n disabled = false,\n required = false,\n clearable = true,\n error = false,\n}) => {\n const { i18n } = useTranslation();\n\n const texts = getTextProps(useTranslation().t);\n\n valueFormat = !valueFormat ? format : valueFormat;\n const hideTimePicker = format.indexOf(\"time\") === -1;\n const hideDatePicker = format === \"time\";\n\n const { date, time, dateInput, timeInput } = catchErrors(PickerUtils.separateDateAndTime, [value], {});\n\n const minDateAsDate = catchErrors(PickerUtils.valueToDate, [minDate], undefined);\n const maxDateAsDate = catchErrors(PickerUtils.valueToDate, [maxDate], undefined);\n\n const minDateIsOnSameDay = date && minDateAsDate && isSameDay(date, minDateAsDate);\n const maxDateIsOnSameDay = date && maxDateAsDate && isSameDay(date, maxDateAsDate);\n\n const dateIsInPast =\n pastDateWarning && date && time ? isPast(PickerUtils.overwriteTimePartOfDate(date, time)) : false;\n\n const update = (date: string | undefined, time: string | undefined) => {\n if (!disabled) {\n const format = date && time ? \"date-time\" : date ? \"date\" : time ? \"time\" : undefined;\n const processedValue = catchErrors(\n PickerUtils.processValue,\n [date, time, format || \"date-time\"],\n \"invalid_value\",\n );\n if (processedValue !== \"invalid_value\") {\n onChange(processedValue);\n }\n }\n };\n\n const getDefaultTime = (referenceDate: Date = new Date()): string | undefined => {\n if (valueFormat === \"any\" || !autoSelectTime) {\n return undefined;\n }\n if (defaultValue) {\n return _format(defaultValue, TIME_FORMAT);\n }\n\n const time = getDefaultDateValue(referenceDate, {\n minDate: referenceDate,\n defaultTime,\n hourRoundingValue,\n });\n\n let parsedValue = PickerUtils.overwriteTimePartOfDate(referenceDate, defaultValueBase);\n\n if (hourRoundingValue) {\n parsedValue = PickerUtils.roundToNearestHour(parsedValue, hourRoundingValue);\n }\n\n const timeValue = time && !isSameDay(new Date(time), new Date()) ? new Date(time) : parsedValue;\n return _format(timeValue, TIME_FORMAT);\n };\n\n const updateDateInput = (value?: string) => {\n const referenceDate = minDateAsDate; // minDateAsDate ? new Date(minDateAsDate.getTime()) : undefined;\n if (referenceDate) {\n referenceDate.setHours(referenceDate.getHours() + 1);\n }\n update(\n value,\n !timeInput && value && format !== \"date\"\n ? getDefaultTime(referenceDate || new Date())\n : timeInput,\n );\n };\n\n const updateTimeInput = (newTime?: string) => {\n update(dateInput, newTime);\n };\n\n const clear = () => {\n update(undefined, undefined);\n };\n\n return (\n \n \n {!hideDatePicker ? (\n \n \n \n ) : null}\n\n {!hideTimePicker ? (\n \n \n \n ) : null}\n\n {clearable ? (\n \n {date || time ? (\n \n ) : null}\n \n ) : null}\n \n \n );\n};\n\nexport default DateTimePicker;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport DateTimePicker from \"../../../../components/DateTimePicker/DateTimePicker\";\nimport { Form } from \"semantic-ui-react\";\nimport _format from \"date-fns/format\";\nimport { TIME_FORMAT } from \"@/sg-schema-form/constants/formats\";\n\nfunction DateTimeWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n\n const schemaFormat = schema.format as \"date\" | \"time\" | \"date-time\";\n\n const {\n minDate,\n maxDate,\n defaultTimeType,\n defaultDateNow,\n maxDateNow,\n minDateNow,\n autoSelectTime = true,\n hourRoundingValue = 0\n } = options\n\n const oneOfValidFormats = schemaFormat && [\"date\", \"time\", \"date-time\"].includes(schemaFormat);\n\n if (!oneOfValidFormats && options.format) {\n return
[DatePickerWidget]: format in uiSchema is depricated, move format from uiSchema to schema
\n };\n\n if (!oneOfValidFormats) {\n return
[DatePickerWidget]: Schema is missing one of valid format (\"date\" | \"time\" | \"date-time\")
\n };\n\n\n const defaultTime = defaultDateNow ? _format(new Date(), TIME_FORMAT) : undefined\n return (\n \n {label && }\n \n \n );\n\n\n}\n\nDateTimeWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nDateTimeWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default DateTimeWidget","import React, { Fragment } from \"react\";\nimport { Form, Header, Label } from \"semantic-ui-react\";\n\nimport { TFunction } from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSchemaTranslation } from \"../../hooks/useSchemaTranslation\";\nimport { DateTimePicker, PickerUtils } from \"../DateTimePicker\";\n\nconst getTextProps = (t: TFunction) => ({\n starts: t(\"Alkaa\"),\n ends: t(\"Päättyy\")\n});\n\nexport type TValue = {\n start?: string,\n end?: string;\n};\n\ninterface DateRangePickerProps {\n format?: \"date\" | \"time\" | \"date-time\",\n valueFormat?: \"date\" | \"time\" | \"date-time\" | \"any\",\n\n value?: TValue;\n onChange: (value?: TValue) => any;\n\n minDate?: string | true;\n maxDate?: string | true;\n hourRoundingValue?: number;\n pastDateWarning?: boolean;\n\n start?: { title?: string; errors?: any[]; required?: boolean; },\n end?: { title?: string; errors?: any[]; required?: boolean; }\n\n disabled?: boolean;\n clearable?: boolean;\n autoSelectTime?: boolean;\n inline?: boolean;\n}\n\nconst DateRangeWidget: React.FC = ({\n disabled,\n inline = false,\n value: uknownValue,\n onChange: uknownOnChange,\n format = \"date\",\n\n hourRoundingValue = 1,\n pastDateWarning = true,\n autoSelectTime = true,\n minDate,\n maxDate,\n\n start: startsOptions,\n end: endsOptions,\n}) => {\n const t = useSchemaTranslation().t\n const texts = getTextProps(useTranslation().t)\n\n const value: TValue | undefined = uknownValue;\n\n const onChange = (value?: TValue) => { uknownOnChange(value); };\n\n const getValue = (key: keyof TValue) => value && value[key] ? value[key] : undefined;\n const getMaxMinOptions = (opt: string | true | undefined) => opt === true ? new Date().toISOString() : opt\n\n const starts = getValue(\"start\") as string | undefined;\n const ends = getValue(\"end\") as string | undefined;;\n\n const defaultRangeOptions = {\n start: {\n title: startsOptions?.title || \"Alkaa\",\n errors: startsOptions?.errors,\n required: startsOptions?.required ?? true\n },\n end: {\n title: endsOptions?.title || \"Päättyy\",\n errors: endsOptions?.errors,\n required: endsOptions?.required ?? true\n }\n };\n\n const updateStarts = (newValue?: string) => {\n if (newValue !== value?.start) {\n onChange({ ...(value || {}), \"start\": newValue ? PickerUtils.ensureValueFormat(newValue, format) : undefined });\n }\n };\n\n const updateEnds = (newValue?: string) => {\n onChange({ ...(value || {}), \"end\": newValue ? PickerUtils.ensureValueFormat(newValue, format) : undefined });\n };\n\n const minStartsDate = getMaxMinOptions(minDate);\n const maxStartsDate = ends ? ends : getMaxMinOptions(maxDate);\n\n const minEndsDate = starts ? starts : minStartsDate;\n const maxEndsDate = getMaxMinOptions(maxDate)\n\n const renderPicker = (key: \"start\" | \"end\", text: string | null, children: any) => {\n const options = key == \"start\" ? defaultRangeOptions.start : defaultRangeOptions.end;\n const label = text || t(options?.title);\n const errors = options?.errors || [];\n\n return (\n \n
{t(label)}
\n {children}\n {errors.length ? : null}\n
\n )\n };\n\n const Wrapper = [\"time\", \"date\"].includes(format) ? Form.Group : Fragment\n\n return (\n \n\n {renderPicker(\"start\", texts.starts, (\n \n \n \n ))}\n\n {renderPicker(\"end\", texts.ends, (\n \n ))}\n\n \n );\n}\n\nDateRangeWidget.defaultProps = {\n disabled: false,\n};\n\nexport default DateRangeWidget;\n","import React from \"react\";\nimport { Header as SemanticHeader } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { getUiOptions } from \"../../../../utils\";\n\ninterface FieldHeaderProps {\n content: string;\n schema?: { [key: string]: any };\n semanticProps: { [key: string]: any };\n};\n\nconst FieldHeader: React.FC = ({ content, semanticProps = {} }) => {\n const { t } = useSchemaTranslation();\n\n if (!semanticProps || !Object.keys(semanticProps).length) {\n return (\n \n );\n };\n\n return (\n \n );\n}\n\nexport default FieldHeader;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport _debounce from \"lodash/debounce\";\nimport { Form } from \"semantic-ui-react\";\nimport { DateRangePicker } from \"../../../../components/DateRangePicker\";\nimport FieldHeader from \"../../components/Header\";\n\nfunction DateRangeWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n errorSchema,\n ...other\n}: any) {\n const { t } = useSchemaTranslation();\n\n const schemaFormat = (schema.format || schema.properties?.start?.format) as \"date\" | \"time\" | \"date-time\" || \"date-time\";\n\n const requiredProps = schema.required || [];\n\n const {\n minDate,\n maxDate,\n defaultTimeType,\n autoSelectTime = true,\n semanticHeader,\n inline\n } = options\n\n if (!schema.properties || !schema.properties.start || !schema.properties.end) {\n return
[DateRangeWidget]: Missing start or end property
\n };\n\n return (\n \n {label && }\n \n \n );\n\n\n}\n\nDateRangeWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nDateRangeWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default DateRangeWidget","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport _debounce from \"lodash/debounce\";\nimport { Form } from \"semantic-ui-react\";\nimport { DateRangePicker } from \"../../../../components/DateRangePicker\";\nimport FieldHeader from \"../../components/Header\";\n\nfunction PermitValidityWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n errorSchema,\n ...other\n}: any) {\n const { t } = useSchemaTranslation();\n\n const schemaFormat = (schema.format || schema.properties?.start?.format) as \"date\" | \"time\" | \"date-time\" || \"date-time\";\n\n const requiredProps = schema.required || [];\n\n const {\n minDate,\n maxDate,\n defaultTimeType,\n autoSelectTime = true,\n semanticHeader,\n inline\n } = options\n\n if (!schema.properties || !schema.properties.start || !schema.properties.end) {\n return
[DateRangeWidget]: Missing start or end property
\n };\n\n return (\n \n {label && }\n \n \n );\n\n\n}\n\nPermitValidityWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nPermitValidityWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default PermitValidityWidget","import CheckboxWidget from \"./CheckboxWidget/CheckboxWidget\";\nimport CheckboxesWidget from \"./CheckboxesWidget/CheckboxesWidget\";\nimport PasswordWidget from \"./PasswordWidget/PasswordWidget\";\nimport RadioWidget from \"./RadioWidget/RadioWidget\";\nimport RangeWidget from \"./RangeWidget/RangeWidget\";\nimport SelectWidget from \"./SelectWidget/SelectWidget\";\nimport TextareaWidget from \"./TextareaWidget/TextareaWidget\";\nimport TextWidget from \"./TextWidget/TextWidget\";\nimport UpDownWidget from \"./UpDownWidget/UpDownWidget\";\nimport HeaderWidget from \"./HeaderWidget/HeaderWidget\";\nimport ButtonGroup from \"./ButtonGroup/ButtonGroup\";\n\nimport FileUploadWidget from \"./FileUploadWidget/FileUploadWidget\";\nimport ImageUploadWidget from \"./ImageUploadWidget/ImageUploadWidget\";\nimport SignatureWidget from \"./SignatureWidget/SignatureWidget\";\nimport PersonPickerWidget from \"./PersonPickerWidget/PersonPickerWidget\";\nimport MapLocationWidget from \"./MapLocationWidget\";\nimport RelatedPermitWidget from \"./RelatedPermitWidget\";\nimport AreaSelect from \"./AreaSelect\";\nimport DateTimeWidget from \"./DateTimeWidget\";\nimport DateRangeWidget from \"./DateRangeWidget\";\nimport PermitValidityWidget from \"./PermitValidityWidget\";\n\n\nconst Widgets = {\n CheckboxWidget,\n CheckboxesWidget,\n PasswordWidget,\n RadioWidget,\n RangeWidget,\n SelectWidget,\n TextareaWidget,\n TextWidget,\n UpDownWidget,\n \"header\": HeaderWidget,\n \"buttonGroup\": ButtonGroup,\n\n \"fileUpload\": FileUploadWidget,\n \"imageUpload\": ImageUploadWidget,\n \"signature\": SignatureWidget,\n\n \"personPicker\": PersonPickerWidget,\n \"mapLocation\": MapLocationWidget,\n \"areaSelect\": AreaSelect,\n \"dateTime\": DateTimeWidget,\n \"dateRange\": DateRangeWidget,\n\n\n \"relatedPermit\": RelatedPermitWidget,\n \"permitValidity\": PermitValidityWidget,\n\n};\n\nexport default Widgets;","import { ThemeProps, utils } from \"@rjsf/core\";\nimport { Form as SuiForm } from \"semantic-ui-react\";\nimport ArrayFieldTemplate from \"./Templates/ArrayFieldTemplate\";\nimport ErrorList from \"./components/ErrorList\";\nimport Fields from \"./Fields\";\nimport FieldTemplate from \"./Templates/FieldTemplate\";\nimport ObjectFieldTemplate from \"./Templates/ObjectFieldTemplate\";\nimport { widgets } from \"./Widgets\";\nconst { getDefaultRegistry } = utils;\nconst { fields, widgets: defaulyWidgets } = getDefaultRegistry();\n\nconst Theme: ThemeProps = {\n ArrayFieldTemplate: ArrayFieldTemplate as any,\n ErrorList: ErrorList as any,\n fields: { ...fields, ...Fields } as any,\n FieldTemplate: FieldTemplate as any,\n ObjectFieldTemplate,\n tagName: SuiForm,\n liveValidate: true,\n widgets: { ...defaulyWidgets, ...widgets } as any,\n\n className: \"SchemaForm ui form\",\n};\n\nexport default Theme;\n","import React from \"react\";\nimport { Button, Icon } from \"semantic-ui-react\";\n\nfunction AddButton(props: any) {\n return (\n \n );\n}\n\nexport default AddButton;\n","import React, { Fragment } from \"react\";\n\n/**\n * Extract props meant for semantic UI components from props that are\n * passed to Widgets, Templates and Fields.\n * @param {Object} params\n * @param {Object} params.formContext\n * @param {Object} params.uiSchema\n * @param {Object} params.options\n * @returns {any}\n */\nexport const getSemanticProps = ({\n formContext = {},\n uiSchema = {},\n options = {},\n}: any) => {\n return Object.assign(\n {},\n formContext.semantic || {},\n uiSchema[\"ui:options\"] ? uiSchema[\"ui:options\"].semantic : {},\n options.semantic || {}\n );\n};\n\n/**\n * Combine multiple strings containing class names into a single string,\n * removing duplicates. E.g.\n * cleanClassNames('bar', 'baz bar', 'x y ', undefined)\n * // 'bar baz x y'\n * @param {Array} classNameArr\n * @param {Array} omit\n * @returns {string}\n */\nexport function cleanClassNames(classNameArr: Array, omit = []) {\n // Split each arg on whitespace, and add it to an array. Skip false-y args\n // like \"\" and undefined.\n const classList = classNameArr\n .filter(Boolean)\n .reduce(\n (previous, current: any) => previous.concat(current.trim().split(/\\s+/)),\n []\n );\n\n // Remove any class names from omit, and make the rest unique before\n // returning them as a string\n //@ts-ignore\n return [...new Set(classList.filter(cn => !omit.includes(cn)))].join(\" \");\n}\n\n/**\n *\n * @param wrap\n * @param Component\n * @param props\n * @returns {*}\n * @constructor\n */\n\ninterface MaybeWrapProps {\n wrap?: any;\n component?: any;\n className?: string\n};\n\nexport const MaybeWrap: React.FC = ({\n wrap,\n component: Component = \"div\",\n ...props\n}) => {\n return wrap ? : ;\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button, Grid, Segment } from \"semantic-ui-react\";\nimport { utils } from \"@rjsf/core\";\nimport AddButton from \"../../components/AddButton\";\nimport { cleanClassNames, getSemanticProps, MaybeWrap } from \"../../util\";\n\nconst MaybeWrapComponent = MaybeWrap as any\nconst { isFixedItems } = utils;\n\nconst ArrayFieldTitle = ({ TitleField, idSchema, uiSchema, title }: any) => {\n if (!title) {\n return null;\n }\n\n const id = `${idSchema.$id}__title`;\n return ;\n};\n\nfunction ArrayFieldDescription({ DescriptionField, idSchema, description }: any) {\n if (!description) {\n // See #312: Ensure compatibility with old versions of React.\n return null;\n }\n const id = `${idSchema.$id}__description`;\n return ;\n}\n\nconst gridStyle = (vertical: boolean) => ({\n display: \"grid\",\n gridTemplateColumns: `1fr ${vertical ? 65 : 110}px`,\n});\n\n// checks if its the first array item\nfunction isInitialArrayItem(props: any) {\n // no underscore because im not sure if we want to import a library here\n const { idSchema } = props.children.props;\n return idSchema.target && idSchema.conditions;\n}\n\n// Used in the two templates\nfunction DefaultArrayItem(props: any) {\n return (\n
\n\n \n \n \n {props.children}\n \n\n {props.hasToolbar && (\n \n {(props.hasMoveUp || props.hasMoveDown || props.hasRemove) && (\n \n {(props.hasMoveUp || props.hasMoveDown) && (\n \n )}\n\n {(props.hasMoveUp || props.hasMoveDown) && (\n \n )}\n\n {props.hasRemove && (\n \n )}\n \n )}\n \n )}\n \n \n
\n );\n}\n\n// Used for arrays that are represented as multiple selection fields\n// (displayed as a multi select or checkboxes)\nfunction DefaultFixedArrayFieldTemplate({\n uiSchema,\n idSchema,\n canAdd,\n className,\n classNames,\n disabled,\n items,\n onAddClick,\n readOnly,\n required,\n schema,\n title,\n TitleField,\n itemProps,\n}: any) {\n const fieldTitle = uiSchema[\"ui:title\"] || title;\n const fieldDescription = uiSchema[\"ui:description\"] || schema.description;\n\n return (\n
\n \n\n {fieldDescription && (\n \n {fieldDescription}\n
\n )}\n\n
\n
\n {items && items.map((p: any) => DefaultArrayItem({ ...p, ...itemProps }))}\n
\n\n {canAdd && (\n \n \n
\n )}\n \n \n );\n}\n\nfunction DefaultNormalArrayFieldTemplate({\n uiSchema,\n idSchema,\n canAdd,\n className,\n classNames,\n disabled,\n DescriptionField,\n items,\n onAddClick,\n readOnly,\n required,\n schema,\n title,\n TitleField,\n itemProps,\n}: any) {\n const fieldTitle = uiSchema[\"ui:title\"] || title;\n const fieldDescription = uiSchema[\"ui:description\"] || schema.description;\n return (\n \n \n\n {fieldDescription && (\n \n )}\n\n
\n
\n {items && items.map((p: any) => DefaultArrayItem({ ...p, ...itemProps }))}\n
\n\n {canAdd && (\n \n \n
\n )}\n \n \n );\n}\n\nfunction ArrayFieldTemplate(props: any) {\n const { schema } = props;\n const { horizontalButtons, wrapItem } = getSemanticProps(props);\n const itemProps = { horizontalButtons, wrapItem };\n\n if (isFixedItems(schema)) {\n return ;\n }\n return ;\n}\n\nArrayFieldTemplate.defaultProps = {\n options: {},\n};\n\nArrayFieldTemplate.propTypes = {\n options: PropTypes.object,\n};\n\nexport default ArrayFieldTemplate;\n","/* eslint-disable react/no-array-index-key */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Message } from \"semantic-ui-react\";\n\n/**\n *\n * @param errors\n * @returns {*}\n * @constructor\n */\nfunction ErrorList({ errors }: { errors: Array }) {\n return (\n \n Errors\n \n {errors.map((error, index) => (\n {error.stack}\n ))}\n \n \n );\n}\n\nErrorList.propTypes = {\n errors: PropTypes.array,\n};\n\nexport default ErrorList;\n","import React from \"react\";\n\nfunction DescriptionField({ className, description }: any) {\n if (description) {\n return

{description}

;\n }\n return null;\n}\n\nexport default DescriptionField;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Header } from \"semantic-ui-react\";\n\nfunction TitleField({ title, options }: any) {\n const { semantic } = options;\n if (title) {\n return (\n
\n {title}\n
\n );\n }\n return null;\n}\n\nTitleField.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n dividing: true,\n },\n },\n};\n\nTitleField.propTypes = {\n options: PropTypes.object,\n};\n\nexport default TitleField;\n","\nimport React from \"react\";\nimport { Header } from \"semantic-ui-react\";\nimport { WidgetProps, } from \"@rjsf/core\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\n\nexport const HeaderWidget: React.FC = ({\n label,\n schema,\n uiSchema = {},\n ...props\n}) => {\n const { t } = useSchemaTranslation();\n\n const uiOptions = getUiOptions(uiSchema as any);\n const semanticProps = (uiOptions?.semantic || {}) as any;\n const title = label || schema.title || (props as any).name;\n\n return (\n \n );\n};\n\nexport default HeaderWidget;\n","import React from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport HeaderWidget from \"../Widgets/HeaderWidget\";\n\nconst NullField = (props: any) => {\n return (\n \n \n \n );\n};\n\nexport default NullField;","\nimport React from \"react\";\n\ninterface HelpFieldProps {\n id: string;\n helpText?: string;\n}\n\n/**\n * @return {null}\n */\nconst HelpField: React.FC = ({ }) => {\n return null;\n};\n\nexport default HelpField;\n","import React from \"react\";\nimport { Form, Label, List } from \"semantic-ui-react\";\nimport _uniqueId from \"lodash/uniqueId\";\n\n/**\n *\n * @param errors\n * @param displayError\n * @returns {*}\n * @constructor\n * @return {null}\n */\ninterface RawErrorsProps {\n errors: Array;\n id: string;\n options: any\n};\n\nconst RawErrors: React.FC = ({ errors, id, options }) => {\n const { pointing, size } = options;\n\n const defaultProps = {\n prompt: true,\n pointing: \"pointing\",\n id: id ? `${id}-error-message` : undefined,\n role: \"alert\",\n \"aria-atomic\": true,\n };\n\n if (errors && errors.length > 0) {\n return (\n \n \n \n {errors.map((error) => (\n \n ))}\n \n \n \n );\n }\n return null;\n};\n\nRawErrors.defaultProps = {\n options: {\n pointing: \"above\",\n size: \"small\",\n },\n};\n\nexport default RawErrors;\n","import React from \"react\"\nimport { FieldTemplateProps } from \"@rjsf/core\";\nimport { Form, Message } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../hooks/useSchemaTranslation\";\n\n\nexport const FieldError: React.FC = (props) => {\n const { t } = useSchemaTranslation();\n const label = props.label || props.schema.title;\n const widget = props.uiSchema[\"ui:widget\"];\n return (\n \n {label && }\n {widget ? (\n \n ) : }\n \n );\n};","import React, { useMemo } from \"react\";\n//@ts-ignore\nimport { getDefaultRegistry } from \"@rjsf/core/lib/utils\";\nimport { Form } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { isSupportedWidget } from \"../../../../utils/isSupportedWidget\";\nimport HelpField from \"../../components/HelpField\";\nimport RawErrors from \"../../components/RawErrors\";\nimport { FieldError } from \"../../components/UnsupportedFieldError\";\nimport { getSemanticProps, MaybeWrap } from \"../../util\";\nimport \"./_FieldTemplate.less\";\nimport DescriptionField from \"../../Fields/DescriptionField\";\nimport { FieldTemplateProps } from \"@rjsf/core\";\n\nconst FieldTemplate: React.FC = (rawProps) => {\n const {\n id,\n children,\n displayLabel,\n rawErrors = [],\n rawHelp,\n rawDescription,\n registry = getDefaultRegistry(),\n label,\n ...props\n } = rawProps;\n const { t } = useSchemaTranslation();\n\n const semanticProps = getSemanticProps(props);\n const { wrapLabel, wrapContent, errorOptions } = semanticProps;\n\n const widgetName = props.uiSchema[\"ui:widget\"] as string || \"\";\n const widgetOk = useMemo(() => (id === \"root_context\" || label === \"context\") ? true : isSupportedWidget(widgetName, props.schema, registry.widgets), []);\n\n if (widgetName === \"hidden\") {\n return null;\n };\n\n return (\n \n \n {widgetOk ? children : }\n \n \n {displayLabel && rawDescription && (\n \n {rawDescription && (\n \n )}\n \n )}\n \n \n );\n};\n\nexport default FieldTemplate;\n","import React from \"react\";\n\nimport {\n getWidget,\n getUiOptions,\n getDefaultRegistry,\n hasWidget,\n //@ts-ignore\n} from \"@rjsf/core/lib/utils\";\nimport { Message } from \"semantic-ui-react\";\nimport FieldTemplate from \"../Templates/FieldTemplate\";\nimport { WidgetProps } from \"@rjsf/core\";\n\nfunction CustomField(props: any) {\n const {\n schema,\n name,\n uiSchema,\n idSchema,\n formData,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n registry = getDefaultRegistry(),\n rawErrors,\n errorSchema,\n noError,\n } = props;\n\n const { title, format, description } = schema;\n const { widgets, formContext } = registry;\n let defaultWidget = \"text\";\n\n if (format && hasWidget(schema, format, widgets)) {\n defaultWidget = format;\n }\n\n const { widget = defaultWidget, placeholder = \"\", ...options } = getUiOptions(\n uiSchema\n );\n\n let Widget;\n\n try {\n Widget = getWidget(schema, widget, widgets);\n } catch (error) {\n // console.info(name, error);\n }\n\n if (!Widget) {\n return ;\n }\n\n return (\n \n \n \n );\n}\n\nCustomField.defaultProps = {\n uiSchema: {},\n disabled: false,\n readonly: false,\n autofocus: false,\n};\n\nexport default CustomField;\n","import DescriptionField from \"./DescriptionField/DescriptionField\";\nimport TitleField from \"./TitleField/TitleField\";\nimport NullField from \"./NullField\";\nimport CustomField from \"./Custom\";\n\nconst Fields = {\n DescriptionField,\n TitleField,\n NullField,\n \"custom\": CustomField,\n};\n\nexport default Fields;\n","import React from \"react\";\nimport { Divider } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction ObjectFieldTemplate({\n DescriptionField,\n description,\n TitleField,\n title,\n properties,\n required,\n uiSchema,\n idSchema,\n}: any) {\n const { t } = useSchemaTranslation();\n\n const root = idSchema.$id === \"root\";\n const fieldTitle = uiSchema[\"ui:title\"] || title;\n const fieldDescription = uiSchema[\"ui:description\"] || description;\n return (\n \n {!root && fieldTitle && (\n \n )}\n {!root && fieldDescription && (\n \n )}\n \n );\n}\n\nexport default ObjectFieldTemplate;\n","import React from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\nfunction CheckboxWidget(props: any) {\n const { id, value, label, formContext } = props;\n const { t, globalT } = useSchemaTranslation();\n\n const checked = value == \"true\" || value == true;\n\n const texts = {\n yes: globalT(\"Kyllä\"),\n no: globalT(\"Ei\"),\n };\n\n return (\n \n {t(label)}\n {typeof value === \"undefined\" ? formContext.emptyValue : checked ? texts.yes : texts.no}\n \n );\n}\n\nCheckboxWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n },\n },\n};\n\nexport default CheckboxWidget;\n","import React, { Fragment } from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\nfunction CheckboxesWidget({\n id,\n options,\n value,\n formContext,\n schema,\n}: any) {\n const { t } = useSchemaTranslation();\n\n const { enumOptions, inline } = options;\n const { title } = schema;\n\n const inlineOption = inline ? { inline: true } : { grouped: true };\n\n\n const checkedOptions = enumOptions.filter((option: any, index: number) => value.indexOf(option.value) !== -1);\n\n return (\n \n {title && {t(title)}}\n \n fdfdfjkoko\n {checkedOptions.length ?\n checkedOptions.map((option: any, index: number) => (\n \n )) : formContext.emptyValue || null}\n \n \n );\n}\n\nCheckboxesWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n },\n },\n};\n\nexport default CheckboxesWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\n\nfunction PasswordWidget({\n id,\n required,\n readonly,\n disabled,\n label,\n name,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n schema,\n formContext,\n}: any) {\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange && onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n );\n}\n\nPasswordWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n fluid: true,\n },\n },\n};\n\nPasswordWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default PasswordWidget;\n","import React from \"react\";\nimport { Form, Icon } from \"semantic-ui-react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\nfunction RadioWidget({ options, value, label, formContext }: any) {\n const { t } = useSchemaTranslation();\n\n // Generating a unique field name to identify this set of radio buttons\n const { enumOptions } = options;\n\n const inlineOption = options.inline ? { inline: true } : { grouped: true };\n const selectedOption = enumOptions.find((option: any) => value === option.value);\n return (\n \n {label && (\n \n {t(label)} \n \n )}\n {selectedOption ? {t(selectedOption.label)} : {formContext.emptyValue}}\n {!label &&\n enumOptions.map((option: any) => {\n const selected = value === option.value;\n const icon = selected ? (\n \n ) : (\n \n );\n return (\n \n {icon} {t(option.label)}\n \n );\n })}\n \n );\n}\n\nRadioWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n fluid: true,\n },\n },\n};\n\nRadioWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default RadioWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Input } from \"semantic-ui-react\";\nimport { utils } from \"@rjsf/core\";\nimport { getSemanticProps } from \"../../util\";\n\nconst { rangeSpec } = utils;\nfunction RangeWidget({\n value,\n readonly,\n disabled,\n onBlur,\n onFocus,\n options,\n schema,\n onChange,\n required,\n name,\n id,\n formContext,\n}: any) {\n const semanticProps = getSemanticProps({ formContext, options });\n\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange && onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n \n {value}\n \n );\n}\n\nRangeWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n },\n },\n};\n\nRangeWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default RangeWidget;\n","import React, { Fragment } from \"react\";\nimport _map from \"lodash/map\";\nimport { Form } from \"semantic-ui-react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\n/**\n * * Returns and creates an array format required for semantic drop down\n * @param {array} enumOptions- array of items for the dropdown\n * @param {array} enumDisabled - array of enum option values to disable\n * @returns {*}\n */\nfunction createDefaultValueOptionsForDropDown(enumOptions: any[], enumDisabled: any[], t: any) {\n const disabledOptions = enumDisabled || [];\n let options = [];\n // eslint-disable-next-line no-shadow\n options = _map(enumOptions, ({ label, value }) => ({\n disabled: disabledOptions.indexOf(value) !== -1,\n key: label,\n text: t(label),\n value,\n }));\n return options;\n}\n\nfunction SelectWidget({ schema, id, options, value, label, formContext }: any) {\n const { t } = useSchemaTranslation();\n\n const { enumDisabled, enumOptions } = options;\n const dropdownOptions = createDefaultValueOptionsForDropDown(\n enumOptions,\n enumDisabled,\n t\n );\n\n label = schema.title || label;\n const isSelected = (option: any) =>\n Array.isArray(value)\n ? value.includes(option.value)\n : value === option.value;\n const hasSelected = dropdownOptions.find(isSelected);\n return (\n \n {label && {t(schema.title || label)} }\n {!hasSelected ? (formContext.emptyValue || null) :\n dropdownOptions.map((option, index) =>\n isSelected(option) ? (\n {t(option.text)}\n ) : (\n
\n )\n )}\n \n );\n}\n\nSelectWidget.defaultProps = {\n options: {\n semantic: {\n inverted: \"false\",\n fluid: true,\n selection: true,\n scrolling: true,\n upward: false,\n },\n },\n};\n\nSelectWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default SelectWidget;\n","import React from \"react\";\nimport { Form } from \"semantic-ui-react\";\nimport { FieldHeader } from \"../FieldHeader\";\n\nconst StringField = ({ id, label, value }: any) => {\n return (\n \n {label}\n

{value}

\n
\n );\n};\n\nexport default StringField;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport StringField from \"../../components/StringField\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction TextareaWidget({ id, value, label, schema, formContext }: any) {\n const { t } = useSchemaTranslation();\n\n return ;\n}\n\nTextareaWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n },\n },\n};\n\nTextareaWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default TextareaWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport StringField from \"../../components/StringField\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction TextWidget({\n id,\n\n label,\n schema,\n value,\n formContext\n}: any) {\n const { t } = useSchemaTranslation();\n\n return ;\n}\n\nTextWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nTextWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default TextWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\n\nfunction UpDownWidget({\n id,\n required,\n readonly,\n disabled,\n label,\n name,\n value,\n options,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n formContext,\n}: any) {\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) => onChange && onChange(value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n return (\n \n \n \n );\n}\n\nUpDownWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n fluid: true,\n },\n },\n};\n\nUpDownWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default UpDownWidget;\n","import { List } from \"semantic-ui-react\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { FileView } from \"../../../../../sg-fileupload\";\nimport { Form } from \"semantic-ui-react\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction FileUploadWidget({\n id,\n value,\n placeholder,\n formContext,\n label\n}: WidgetProps) {\n\n const { t } = useSchemaTranslation();\n\n return (\n \n {label && {t(label)} }\n {value && value.length ? (\n value.map((file: any) => (\n \n \n \n ))\n ) :
{placeholder || formContext.emptyValue}
}\n
\n );\n\n};\n\nexport default FileUploadWidget;\n","import { Form, Image } from \"semantic-ui-react\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { ImageView } from \"../../../../../sg-fileupload\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\nfunction ImageUploadWidget({\n id,\n value,\n placeholder,\n formContext,\n options,\n label\n}: WidgetProps) {\n\n const { t } = useSchemaTranslation();\n\n const { suiImageGroup = {} } = options || {};\n\n return (\n \n {label && {t(label)} }\n {value && value.length ? (\n \n {value.map((file: any) => (\n \n ))}\n \n ) :
{placeholder || formContext.emptyValue}
}\n
\n );\n\n};\n\nexport default ImageUploadWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\n\nfunction SignatureWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n const { placeholder }: any = getUiOptions(uiSchema);\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n return (\n \n );\n}\n\nSignatureWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nSignatureWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default SignatureWidget;\n","import React, { Fragment } from \"react\";\nimport _map from \"lodash/map\";\nimport { Form, Icon } from \"semantic-ui-react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\n/**\n * * Returns and creates an array format required for semantic drop down\n * @param {array} enumOptions- array of items for the dropdown\n * @param {array} enumDisabled - array of enum option values to disable\n * @returns {*}\n */\nfunction createDefaultValueOptionsForDropDown(\n enumOptions: any[],\n enumDisabled: any[],\n enumIcons = [],\n enumColors = []\n) {\n const disabledOptions = enumDisabled || [];\n let options = [];\n // eslint-disable-next-line no-shadow\n options = _map(enumOptions, ({ label, value }, index) => ({\n disabled: disabledOptions.indexOf(value) !== -1,\n key: label,\n text: label,\n icon: enumIcons[index],\n color: enumColors[index],\n value,\n }));\n return options;\n}\n\nfunction ButtonGroupWidget({ schema, id, options, value, label }: any) {\n const { t } = useSchemaTranslation();\n\n const { enumDisabled, enumOptions, enumIcons, enumColors } = options;\n const dropdownOptions = createDefaultValueOptionsForDropDown(\n enumOptions,\n enumDisabled,\n enumIcons,\n enumColors\n );\n\n label = schema.title || label;\n const isSelected = (option: any) =>\n Array.isArray(value)\n ? value.includes(option.value)\n : value === option.value;\n\n return (\n \n {label && {t(schema.title || label)} }\n {dropdownOptions.map((option, index) =>\n isSelected(option) ? (\n \n {option.icon ? (\n \n ) : null}\n {t(option.text)}\n \n ) : (\n
\n )\n )}\n \n );\n}\n\nButtonGroupWidget.defaultProps = {\n options: {\n semantic: {\n inverted: \"false\",\n fluid: true,\n selection: true,\n scrolling: true,\n upward: false,\n },\n },\n};\n\nButtonGroupWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default ButtonGroupWidget;\n","import React, { Fragment, useEffect, useState } from \"react\";\nimport { Form, List, Message } from \"semantic-ui-react\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { IHprOptions, IPerson, useHprContext } from \"../../../../../sg-hpr\";\nimport { TResult } from \"../../../../../sg-core\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\ninterface PersonLabelProps {\n fetchPerson: IHprOptions[\"fetchPersonById\"];\n personId: IPerson[\"id\"];\n}\nconst PersonLabel: React.FC = ({ personId, fetchPerson }) => {\n const [person, setPerson] = useState>();\n\n useEffect(() => {\n const load = async () => {\n const result = await fetchPerson(personId);\n setPerson(result)\n }\n load()\n }, [personId]);\n\n\n return (\n {\n person?.isFailure ? \"Failed to fetch person\"\n : person?.isSuccess ? person.value.fullname : \"\"\n } \n )\n}\n\ninterface IPeoplePickerOptions {\n requiredCerts?: string[],\n [key: string]: any\n}\n\nfunction PersonPickerWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema = {},\n rawErrors = [],\n}: any) {\n const hprContext = useHprContext()\n const { t } = useSchemaTranslation();\n\n const { requiredCerts, placeholder } = getUiOptions(uiSchema);\n\n if (!hprContext) {\n return (\n \n )\n }\n\n const renderPerson = (personId: number) => {\n return \n }\n\n return (\n \n {label && {t(label)} }\n
\n \n {Array.isArray(value) ? (\n \n {value.length ? (formContext.emptyValue || null) : value.map((personId, index) => (\n \n {personId ? renderPerson(personId) : null}\n \n ))}\n \n ) : value ? (\n value ? renderPerson(value) : null\n ) : formContext.emptyValue\n }\n \n
\n
\n\n );\n}\n\nexport default PersonPickerWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Form, Header, Icon, Segment } from \"semantic-ui-react\";\nimport { getSemanticProps } from \"../../util\";\nimport { getUiOptions } from \"../../../../utils/getUiOptions\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\nfunction MapLocationWidget({\n id,\n required,\n readonly,\n disabled,\n name,\n label,\n schema,\n value,\n onChange,\n onBlur,\n onFocus,\n autofocus,\n options,\n formContext,\n uiSchema,\n rawErrors = [],\n}: any) {\n const { t } = useSchemaTranslation();\n\n const { placeholder } = getUiOptions(uiSchema) as any;\n const semanticProps = getSemanticProps({ formContext, options });\n // eslint-disable-next-line no-shadow\n const _onChange = ({ target: { value } }: any) =>\n onChange(value === \"\" ? options.emptyValue : value);\n const _onBlur = () => onBlur && onBlur(id, value);\n const _onFocus = () => onFocus && onFocus(id, value);\n\n\n return (\n \n\n {t(label || schema.title || id)}\n \n
\n
\n \n );\n}\n\nMapLocationWidget.defaultProps = {\n options: {\n semantic: {\n inverted: false,\n },\n },\n};\n\nMapLocationWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default MapLocationWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport StringField from \"../../components/StringField\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction RelatedPermitWidget({\n id,\n\n label,\n schema,\n value,\n}: any) {\n const { t } = useSchemaTranslation();\n\n return ;\n}\n\nRelatedPermitWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nRelatedPermitWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default RelatedPermitWidget;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport StringField from \"../../components/StringField\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\n\nfunction AreaSelect({\n id,\n\n label,\n schema,\n value,\n formContext\n}: any) {\n const { t } = useSchemaTranslation();\n\n return ;\n}\n\nAreaSelect.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nAreaSelect.propTypes = {\n options: PropTypes.object,\n};\n\nexport default AreaSelect;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport _debounce from \"lodash/debounce\";\nimport { catchErrors, PickerUtils } from \"../../../../components/DateTimePicker\";\nimport { Form } from \"semantic-ui-react\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\nfunction DateTimeWidget({ label, schema, value, formContext }: any) {\n const { t } = useSchemaTranslation();\n const schemaFormat = (schema.format || \"date-time\") as \"date\" | \"time\" | \"date-time\";\n let valueText = value\n ? catchErrors(PickerUtils.dateValueToFormat, [value, schemaFormat], \"Invalid date format\")\n : formContext.emptyValue;\n\n return (\n \n {label && {t(schema.title || label)} }\n {valueText}\n \n );\n}\n\nDateTimeWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nDateTimeWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default DateTimeWidget;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { PickerUtils } from \"../../../components/DateTimePicker\";\nimport { DATE_FORMAT, DATE_TIME_FORMAT, TIME_FORMAT } from \"../../../constants/formats\";\nimport _isSameDay from \"date-fns/isSameDay\";\n\ninterface DateRangeDisplayProps {\n start: Date;\n end: Date;\n format?: \"date\" | \"time\" | \"date-time\"\n}\n\nexport const DateRangeDisplay: React.FC = ({\n start,\n end,\n format = \"date-time\"\n}) => {\n\n const { t } = useTranslation();\n\n // Check if the date is the same on both start and end dates. This is so we know\n // only display the date once instead of two same dates. The exact hours does the same,\n // except it controls whether or not we display minutes too.\n const isSameDate = _isSameDay(start, end);\n const exactHours = (start.getMinutes() === 0) && (end.getMinutes() === 0);\n\n const timeFormat = exactHours ? \"HH\" : TIME_FORMAT;\n const startH = PickerUtils.formatDate(start, timeFormat);\n const endH = PickerUtils.formatDate(end, timeFormat);\n\n if (format === \"time\") {\n return {startH} - {endH};\n } else if (format === \"date\") {\n const startD = PickerUtils.formatDate(start, DATE_FORMAT);\n const endD = PickerUtils.formatDate(end, DATE_FORMAT);\n return {startD} - {endD};\n } else if (isSameDate) {\n const date = PickerUtils.formatDate(start, DATE_FORMAT);\n return {date} klo {startH} - {endH};\n } else {\n const startD = PickerUtils.formatDate(start, DATE_TIME_FORMAT);\n const endD = PickerUtils.formatDate(end, DATE_TIME_FORMAT);\n\n return {startD} - {endD}\n }\n};\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSchemaTranslation } from \"../../../../hooks/useSchemaTranslation\";\nimport _debounce from \"lodash/debounce\";\nimport DateTimePicker from \"../../../../components/DateTimePicker/DateTimePicker\";\nimport { Form } from \"semantic-ui-react\";\nimport { catchErrors, PickerUtils } from \"../../../../components/DateTimePicker\";\nimport { DateRangeDisplay } from \"../../components/DateRangeDisplay\";\nimport { FieldHeader } from \"../../components/FieldHeader\";\n\nfunction DateRangeWidget({\n label,\n schema,\n value,\n formContext,\n}: any) {\n const { t } = useSchemaTranslation();\n const schemaFormat = (schema.format || schema.properties?.start?.format) as \"date\" | \"time\" | \"date-time\" || \"date-time\";\n\n let start = value.start ? catchErrors(PickerUtils.valueToDate, [value.start], undefined) : undefined;\n let end = value.end ? catchErrors(PickerUtils.valueToDate, [value.end], undefined) : undefined;\n\n return (\n \n {label && {t(schema.title || label)} }\n {start && end ? (\n \n ) : formContext.emptyValue}\n \n );\n}\n\nDateRangeWidget.defaultProps = {\n options: {\n semantic: {\n fluid: true,\n inverted: false,\n },\n },\n};\n\nDateRangeWidget.propTypes = {\n options: PropTypes.object,\n};\n\nexport default DateRangeWidget","import React, { Fragment } from \"react\";\nimport _debounce from \"lodash/debounce\";\nimport DateRangeWidget from \"../DateRangeWidget\";\n\nfunction PermitValidityWidget(props: any) {\n return (\n \n );\n};\n\nPermitValidityWidget.defaultProps = {};\n\nPermitValidityWidget.propTypes = {};\n\nexport default PermitValidityWidget","import { Widget } from \"@rjsf/core\";\n\ntype WidgetObj = { [type: string]: Widget };\n\nexport enum EWidgetType { Read = \"read\", Write = \"write\" }\n\nexport interface IBuildWidgets {\n read: WidgetObj;\n write: WidgetObj;\n}\n\n/**\n * A class instance which is used as a helper object for combining multiple JSONSchema\n * widgets for both data writing (\"form\") and reading (\"display\"). Widgets can be added\n * to a registry instance with the addWidget and appendWidget function. Once all widgets\n * are added, the build-function can be called and the widget lists can be verified.\n *\n * @export\n * @class WidgetRegistry\n * @example\n * const registry = WidgetRegistry.create();\n *\n * registry.appendWidgets(EWidgetType.Read, defaultReadWidgets);\n * registry.appendWidgets(EWidgetType.Write, defaultWriteWidgets);\n *\n * registry.addWidget(EWidgetType.Read, \"customWidget\", CustomWidgetView);\n * registry.addWidget(EWidgetType.Write, \"customWidget\", CustomWidgetForm);\n *\n * const { read, write } = registry.build();\n */\nexport class WidgetRegistry {\n\n private readWidgets: WidgetObj = {};\n private writeWidgets: WidgetObj = {};\n\n private constructor() { }\n\n /**\n * Creates a new instance of WidgetRegistry, accepts no parameters\n */\n public static create(): WidgetRegistry {\n return new WidgetRegistry();\n }\n\n /**\n * Adds a new widget to the widget registry. Does not check the name, allowing\n * overwrites to happen.\n * @param type Is this a read or a write widget? Use the EWidgetType enum here\n * @param name Name of the widget, the same you use in the schema\n * @param widget The widget component\n */\n public addWidget(type: EWidgetType, name: string, widget: Widget) {\n if (type == EWidgetType.Read) {\n this.readWidgets[name] = widget;\n } else {\n this.writeWidgets[name] = widget;\n }\n }\n\n /**\n * Append widgets as an object. Useful if you already have a set of widgets in an object\n * @param type Read or write widgets?\n * @param widgets String-mapped object where values are Widget components\n */\n public appendWidgets(type: EWidgetType, widgets: WidgetObj) {\n const names = Object.keys(widgets);\n const append = (obj: WidgetObj) => {\n names.forEach((name) => {\n obj[name] = widgets[name];\n });\n };\n\n if (type === EWidgetType.Read) {\n append(this.readWidgets);\n } else {\n append(this.writeWidgets);\n }\n }\n\n /**\n * Verify and build the widget registry.\n * Returns a copy of the current registries for both read and write widgets.\n * @throws Throws an error if any of the widgets does not have a matching read/write pair.\n */\n public build() {\n const writeNames = Object.keys(this.readWidgets);\n const readNames = Object.keys(this.writeWidgets);\n\n const check = (crossCheckArr: string[], type: EWidgetType) => (name: string) => {\n const isInCrossCheckList = crossCheckArr.indexOf(name) !== -1;\n if (!isInCrossCheckList) {\n const isWrite = type === EWidgetType.Write;\n throw new Error(`[CustomWidgetsError]: A widget called '${name}' was defined in ${isWrite ? \"write\" : \"read\"} widgets, but not in ${isWrite ? \"read\" : \"write\"} widgets`);\n }\n };\n\n writeNames.forEach(check(readNames, EWidgetType.Write));\n readNames.forEach(check(writeNames, EWidgetType.Read));\n\n return {\n read: { ...this.readWidgets },\n write: { ...this.writeWidgets },\n };\n }\n}\n","import CheckboxWidget from \"./CheckboxWidget/CheckboxWidget\";\nimport CheckboxesWidget from \"./CheckboxesWidget/CheckboxesWidget\";\nimport PasswordWidget from \"./PasswordWidget/PasswordWidget\";\nimport RadioWidget from \"./RadioWidget/RadioWidget\";\nimport RangeWidget from \"./RangeWidget/RangeWidget\";\nimport SelectWidget from \"./SelectWidget/SelectWidget\";\nimport TextareaWidget from \"./TextareaWidget/TextareaWidget\";\nimport TextWidget from \"./TextWidget/TextWidget\";\nimport UpDownWidget from \"./UpDownWidget/UpDownWidget\";\nimport HeaderWidget from \"./HeaderWidget/HeaderWidget\";\nimport FileUploadWidget from \"./FileUploadWidget/FileUploadWidget\";\nimport ImageUploadWidget from \"./ImageUploadWidget/ImageUploadWidget\";\nimport SignatureWidget from \"./SignatureWidget/SignatureWidget\";\nimport ButtonGroupWidget from \"./ButtonGroupWidget/ButtonGroupWidget\";\nimport PersonPickerWidget from \"./PersonPickerWidget\";\nimport MapLocationWidget from \"./MapLocationWidget\";\nimport RelatedPermitWidget from \"./RelatedPermitWidget\";\nimport AreaSelect from \"./AreaSelect\";\nimport DateTimeWidget from \"./DateTimeWidget\";\nimport DateRangeWidget from \"./DateRangeWidget\";\nimport PermitValidityWidget from \"./PermitValidityWidget\";\n\nconst widgets = {\n CheckboxWidget,\n CheckboxesWidget,\n PasswordWidget,\n RadioWidget,\n RangeWidget,\n SelectWidget,\n TextareaWidget,\n TextWidget,\n UpDownWidget,\n \"header\": HeaderWidget,\n \"buttonGroup\": ButtonGroupWidget,\n\n \"fileUpload\": FileUploadWidget,\n \"imageUpload\": ImageUploadWidget,\n \"signature\": SignatureWidget,\n\n \"personPicker\": PersonPickerWidget,\n \"mapLocation\": MapLocationWidget,\n \"areaSelect\": AreaSelect,\n \"dateTime\": DateTimeWidget,\n \"dateRange\": DateRangeWidget,\n\n \"relatedPermit\": RelatedPermitWidget,\n \"permitValidity\": PermitValidityWidget,\n\n};\n\nexport default widgets;","import { ThemeProps, utils } from \"@rjsf/core\";\nimport { Form as SuiForm } from \"semantic-ui-react\";\nimport ArrayFieldTemplate from \"./Templates/ArrayFieldTemplate\";\nimport ErrorList from \"./components/ErrorList\";\nimport Fields from \"./Fields\";\nimport FieldTemplate from \"./Templates/FieldTemplate\";\nimport ObjectFieldTemplate from \"./Templates/ObjectFieldTemplate\";\nimport Widgets from \"./Widgets\";\nconst { getDefaultRegistry } = utils;\nconst { fields, widgets: defaulyWidgets } = getDefaultRegistry();\n\nconst Theme: ThemeProps = {\n ArrayFieldTemplate: ArrayFieldTemplate as any,\n ErrorList: ErrorList as any,\n fields: { ...fields, ...Fields } as any,\n FieldTemplate: FieldTemplate as any,\n ObjectFieldTemplate,\n tagName: SuiForm,\n widgets: { ...defaulyWidgets, ...Widgets } as any,\n\n className: \"SchemaDisplay ui form\",\n};\n\nexport default Theme;\n","import { ThemeProps, WidgetProps, withTheme } from \"@rjsf/core\";\n\nimport semnanticUiWriteTheme from \"../themes/semantic-ui/Theme\";\nimport semnanticUiReadTheme from \"../themes/semantic-ui-display/Theme\";\nimport { EWidgetType, IBuildWidgets, WidgetRegistry } from \"../utils/widgetRegistry\";\nimport { withRules } from \"../withRules\";\nimport { IWidgetOptions } from \"../models/IWidgetOptions\";\n\nexport class JsonSchemaConfiguration {\n private _widgetRegistry = WidgetRegistry.create();\n private built = false;\n\n private _themes: { [type in EWidgetType]?: ThemeProps } = {};\n\n private _widgets?: IBuildWidgets;\n\n private _widgetOptions: IWidgetOptions = {};\n\n public get widgets(): IBuildWidgets {\n if (!this._widgets) {\n throw new Error(\"Cannot get widgets from Schema configuration: Widgets have not been built\");\n }\n return this._widgets;\n }\n\n public getForm(type: EWidgetType) {\n\n const theme = this._themes[type];\n if (!theme) {\n throw new Error(`Cannot get theme for form type '${type}': Theme not configured`);\n }\n\n const completeTheme = {\n ...theme,\n fields: type === EWidgetType.Read ?\n { ...theme.fields, ...semnanticUiReadTheme.fields }\n : { ...theme.fields, ...semnanticUiReadTheme.fields },\n widgets: type === EWidgetType.Read ? this._widgets?.read : this._widgets?.write\n };\n\n return withRules(withTheme(completeTheme as any), this._widgetOptions);\n }\n\n public addDefaultWidgets() {\n this._widgetRegistry.appendWidgets(EWidgetType.Read, semnanticUiReadTheme.widgets as any);\n this._widgetRegistry.appendWidgets(EWidgetType.Write, semnanticUiWriteTheme.widgets as any);\n }\n\n public addWidget(name: string, writer: React.ComponentType, reader: React.ComponentType) {\n this._widgetRegistry.addWidget(EWidgetType.Write, name, writer);\n this._widgetRegistry.addWidget(EWidgetType.Read, name, reader);\n }\n\n public addTheme(type: EWidgetType, theme: ThemeProps) {\n this._themes[type] = theme;\n }\n\n public setWidgetOptions(key: TKey, options: IWidgetOptions[TKey]) {\n this._widgetOptions[key] = options;\n }\n\n public build() {\n if (this.built) {\n throw new Error(\"Cannot build JsonSchemaConfiguration: Configuration already built\");\n }\n this._widgets = this._widgetRegistry.build();\n\n this.built = true;\n }\n}","import _uniq from \"lodash/uniq\";\nimport { IFormSchema } from \"../models/IFormSchema\";\n\n\nconst defaultActionTypes = [\n \"remove\",\n \"require\",\n \"uiAppend\",\n \"uiOverride\",\n \"uiRepalce\"\n]\n/**\n * returns list of all actions used in form schema\n * @param uiProp\n */\nexport const getSchemaActionTypes = (formSchema: IFormSchema, onlyExtraActions: boolean = false) => {\n let names: Array = [];\n\n const { rules = [] } = formSchema;\n\n rules.forEach((rule) => {\n let eventTypes = Array.isArray(rule.event)\n ? rule.event.map((event) => event.type)\n : [rule.event.type];\n eventTypes = onlyExtraActions ? eventTypes.filter((type) => !defaultActionTypes.includes(type)) : eventTypes;\n names = names.concat(eventTypes);\n })\n\n\n return _uniq(names);\n};","import { FormProps } from \"@rjsf/core\";\nimport React, { Fragment, useMemo } from \"react\";\nimport { JsonSchemaConfiguration } from \"../configurations/JsonSchemaFormConfiguration\";\nimport { SCHEMEA_NS_KEY } from \"../constants/Translation\";\nimport { useSchemaContext } from \"../context/SchemaContext\";\nimport { FormContextMapper, IFormContext } from \"../models/IFormContext\";\nimport { IFormData, IFormSchema } from \"../models/IFormSchema\";\nimport { contextSchema as DefaultContextSchema, ISchemaContext } from \"../models/ISchemaContext\";\nimport composeRules from \"../utils/composeRules\";\nimport { getSchemaActionTypes } from \"../utils/getSchemaActionTypes\";\nimport { EWidgetType } from \"../utils/widgetRegistry\";\n\ninterface DisplayViewProps {\n formSchema: IFormSchema;\n formData: IFormData;\n contextSchema?: IFormSchema[\"schema\"];\n contextData?: ISchemaContext;\n extraActions?: { [key: string]: any };\n configurations: JsonSchemaConfiguration;\n formContext?: IFormContext;\n}\n\nexport const DisplayView: React.FC = ({\n formSchema,\n formData,\n formContext,\n contextData,\n contextSchema = DefaultContextSchema,\n extraActions,\n configurations,\n ...otherProps\n}) => {\n const { translations } = formSchema;\n const { translate, addTranslationResource } = useSchemaContext() || {};\n\n const Form = useMemo(() => configurations.getForm(EWidgetType.Read), []);\n\n\n // If there's translations, add them to the namespace\n if (translations) {\n const keys = Object.keys(translations);\n keys.forEach((key) => {\n addTranslationResource(key, SCHEMEA_NS_KEY, translations[key]);\n });\n };\n\n const neutralizedAxtraActions = useMemo(() => {\n const actionTypes = getSchemaActionTypes(formSchema);\n const skipActions = [\"remove\", \"require\", \"uiReplace\", \"uiOverride\", \"uiAppend\"]\n const baseActions = actionTypes.reduce<{ [key: string]: any }>((acc, type) => {\n\n if (!skipActions.includes(type)) {\n return ({ ...acc, [type]: (extraActions || {})[type] || (() => { }) })\n }\n return acc\n }, {});\n return { ...baseActions, ...(extraActions || {}) };\n }, []);\n\n\n return (\n \n }\n />\n \n );\n};","import { JSONSchema7, JSONSchema7Definition } from \"json-schema\";\n\n/**\n * Loops trough each schema property\n * @param properties \n * @param invoke \n * @param pathBase \n */\nexport const forEachSchemaProp = (\n properties: JSONSchema7[\"properties\"],\n invoke: (path: string, prop: JSONSchema7Definition) => void,\n pathBase?: string\n) => {\n if (!properties) { return; };\n\n Object.keys(properties).forEach((key) => {\n const prop = properties[key];\n if (prop === true || prop === false) { return; };\n\n if (prop.type === \"object\") {\n forEachSchemaProp(prop.properties, invoke, key);\n return;\n }\n\n const path = pathBase ? [pathBase, key].join(\".\") : key;\n invoke(path, prop);\n });\n};\n","import { AjvError } from \"@rjsf/core\";\nimport { forEachSchemaProp } from \"./forEachSchemaProp\";\nimport { IFormSchema } from \"../models/IFormSchema\";\n\n\nexport const transformHeaderErrors = (schema: IFormSchema[\"schema\"], errors: Array): Array => {\n\n let paths: string[] = [];\n\n forEachSchemaProp(schema.properties, (path, property) => {\n if ((property as any).type === \"header\") {\n paths = paths.concat(path);\n }\n });\n\n errors = errors.filter((error) => {\n const header = paths.find((path) => error.property.indexOf(path) > -1);\n return !header;\n });\n\n return errors;\n\n};","import React, { Fragment, useMemo, useState } from \"react\";\nimport { IFormData, IFormSchema } from \"../models/IFormSchema\";\nimport { contextSchema as DefaultContextSchema, ISchemaContext } from \"../models/ISchemaContext\";\nimport { ISubmitEvent, AjvError, FormProps, FormValidation } from \"@rjsf/core\";\nimport { transformHeaderErrors } from \"../utils/transformHeaderErrors\";\nimport { CUSTOM_FORMATS } from \"../constants/CustomFormats\";\nimport { Divider } from \"semantic-ui-react\";\nimport { SCHEMEA_NS_KEY } from \"../constants/Translation\";\nimport { JsonSchemaConfiguration } from \"../configurations/JsonSchemaFormConfiguration\";\nimport { EWidgetType } from \"../utils/widgetRegistry\";\nimport { useSchemaContext } from \"../context/SchemaContext\";\nimport { getSchemaActionTypes } from \"../utils/getSchemaActionTypes\";\n\ninterface FormViewProps extends Omit, \"schema\"> {\n formSchema: IFormSchema\n contextSchema?: IFormSchema[\"schema\"];\n\n formData?: T;\n translations?: { [key: string]: any };\n\n contextData?: ISchemaContext;\n extraActions?: { [key: string]: any };\n\n transformFormData?: (formData: Partial, formSchema: IFormSchema) => Partial\n validate?: (formData: any, errors: FormValidation) => FormValidation;\n\n focusOnError?: boolean;\n configurations: JsonSchemaConfiguration;\n\n onSubmit: (value: { [key: string]: any }) => void;\n\n}\n\n\nexport const FormView: React.FC = ({\n formSchema,\n formData,\n formContext,\n contextData,\n contextSchema = DefaultContextSchema,\n extraActions,\n configurations,\n\n onError,\n onSubmit,\n onChange,\n transformErrors: customTransformErrors,\n transformFormData: customTransformFormData,\n validate: customValidation,\n ...otherProps\n\n}) => {\n\n const { translate: t, addTranslationResource } = useSchemaContext() || {};\n const [hasErrors, setHasErrors] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n\n const { translations } = formSchema;\n const Form = useMemo(() => configurations.getForm(EWidgetType.Write), []);\n\n\n // If there's translations, add them to the namespace\n if (translations) {\n const keys = Object.keys(translations);\n keys.forEach((key) => {\n addTranslationResource(key, SCHEMEA_NS_KEY, translations[key]);\n });\n };\n\n\n\n const handleError = (errors: any[]) => {\n setHasErrors(errors.length ? true : false);\n if (onError) {\n onError(errors);\n };\n };\n\n const transformFormData = (formData: Partial, formSchema: IFormSchema) => {\n if (customTransformFormData) {\n formData = customTransformFormData(formData, formSchema);\n }\n return formData;\n };\n\n const handleSubmit = (form: ISubmitEvent) => {\n const formData: any = transformFormData(form.formData, formSchema);\n if (onSubmit) {\n onSubmit(formData);\n };\n setSubmitted(true);\n };\n\n const handleChange = (values: any) => {\n if (onChange) {\n onChange(values);\n };\n };\n\n const validate = (formData: any, errors: FormValidation) => {\n formData = transformFormData(formData, formSchema);\n if (customValidation) {\n errors = customValidation(formData, errors);\n };\n return errors;\n };\n\n const _transformErrors = (errors: AjvError[]): AjvError[] => {\n if (customTransformErrors) {\n errors = customTransformErrors(errors);\n }\n errors = transformHeaderErrors(formSchema.schema, errors);\n return errors;\n };\n\n const neutralizedAxtraActions = useMemo(() => {\n const actionTypes = getSchemaActionTypes(formSchema);\n const skipActions = [\"remove\", \"require\", \"uiReplace\", \"uiOverride\", \"uiAppend\"]\n const baseActions = actionTypes.reduce<{ [key: string]: any }>((acc, type) => {\n\n if (!skipActions.includes(type)) {\n return ({ ...acc, [type]: (extraActions || {})[type] || (() => { }) })\n }\n return acc\n }, {});\n return { ...baseActions, ...(extraActions || {}) };\n }, []);\n\n\n\n return (\n \n \n \n )}\n />\n \n );\n};","import { withTheme } from \"@rjsf/core\";\n\nimport Theme from \"../Theme\";\n\nconst SemanticUIForm = withTheme(Theme);\n\nexport default SemanticUIForm;\n","import SemanticUIForm from \"./SemanticUIForm/SemanticUIForm\";\n\nexport { default as Fields } from \"./Fields\";\nexport { default as FieldTemplate } from \"./Templates/FieldTemplate\";\nexport { default as SemanticUIForm } from \"./SemanticUIForm\";\nexport { default as ObjectFieldTemplate } from \"./Templates/ObjectFieldTemplate\";\nexport { default as Theme } from \"./Theme\";\nexport { widgets } from \"./Widgets\";\nexport * from \"./util\";\n\nexport { default as AddButton } from \"./components/AddButton\";\nexport { default as ErrorList } from \"./components/ErrorList\";\nexport { default as HelpField } from \"./components/HelpField\";\nexport { default as RawErrors } from \"./components/RawErrors\";\nexport * from \"./components/UnsupportedFieldError\";\n\n\nexport default SemanticUIForm;\n","import { withTheme } from \"@rjsf/core\";\n\nimport Theme from \"../Theme\";\n\nconst SemanticUIForm = withTheme(Theme);\n\nexport default SemanticUIForm;\n","import SemanticUIForm from \"./SemanticUIForm/SemanticUIForm\";\n\nexport { default as Fields } from \"./Fields\";\nexport { default as FieldTemplate } from \"./Templates/FieldTemplate\";\nexport { default as SemanticUIForm } from \"./SemanticUIForm\";\nexport { default as ObjectFieldTemplate } from \"./Templates/ObjectFieldTemplate\";\nexport { default as Theme } from \"./Theme\";\nexport { default as widgets } from \"./Widgets\";\n\nexport { default as AddButton } from \"./components/AddButton\";\nexport { default as ErrorList } from \"./components/ErrorList\";\nexport { default as HelpField } from \"./components/HelpField\";\nexport { default as RawErrors } from \"./components/RawErrors\";\nexport * from \"./components/UnsupportedFieldError\";\n\nexport default SemanticUIForm;\n","import { toast } from \"react-toastify\";\n\nexport const useNotification = () => {\n\n return toast;\n}\n","import React, { useState, PropsWithChildren, useEffect } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport { EUploadStatus, IUploadableFile } from \"../models/IFile\";\nimport { useFileUploadContext } from \"../context/FileUploadContext\";\n\nexport interface IFileUploadElementProps {\n isDragActive: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n name?: string\n}\n\ninterface IFileUploadProps {\n accept: \"image/*\" | undefined;\n multiple?: boolean;\n files?: { id: string; name: string }[];\n onUploaded: (files: { id: string; name: string }[]) => void;\n onRemoved: (guid: string) => void;\n wrapElement: React.ComponentType>;\n loaderElement: React.ComponentType<{\n file: IUploadableFile;\n onRemove: (file: IUploadableFile) => void;\n }>;\n listWrapperElement: React.ComponentType;\n name?: string\n disabled?: boolean\n\n\n}\n\nconst noop = () => {\n console.log(\"noop\");\n return undefined;\n};\nlet requests: any[];\n\nexport const FileUploadBtn: React.FC = (props) => {\n\n const {\n accept,\n multiple = false,\n onUploaded = noop,\n onRemoved = noop,\n wrapElement: Elem,\n loaderElement: LoaderElement,\n listWrapperElement: ListWrapperElement,\n files: uploadedFiles,\n disabled = false\n } = props;\n\n const { uploadFile, getFileInfo } = useFileUploadContext() || {};\n\n if (!uploadFile || !getFileInfo) {\n throw new Error(\"FileUploadContext is not provided. Cannot use a file upload component.\");\n }\n\n const [fileObjs, setFiles] = useState([]);\n const [isLoading, setLoading] = useState(false);\n const [isLoaded, setLoaded] = useState(false);\n\n\n const createUploadableFile = (file: File): IUploadableFile => ({\n id: _uniqueId(),\n name: file.name,\n file: file,\n status: EUploadStatus.Uploading\n });\n\n const createLoadedFile = (file: any): IUploadableFile => ({\n id: _uniqueId(),\n guid: file.id,\n name: file.name,\n status: EUploadStatus.Done\n });\n\n const updateFileObj = (id: string, newProps: any) => {\n setFiles((prevFiles) => prevFiles.map((fileObj) => fileObj.id === id ? { ...fileObj, ...newProps } : fileObj));\n };\n\n const removeFileObj = (id: string) => {\n setFiles((prevFiles) => prevFiles.filter((fileObj) => fileObj.id !== id));\n };\n\n\n const handleFiles = (acceptedFiles: File[] = []) => {\n if (!isLoaded) {\n setLoaded(true);\n };\n let newFiles: Array = acceptedFiles.map((file: any) => createUploadableFile(file));\n setFiles((prevFiles) => [...prevFiles, ...newFiles]);\n setLoading(true);\n const requests = newFiles.map((fileObj) => handleSingleUpload(fileObj));\n Promise.all(requests).then(function (values) {\n const succesfull = values.filter((file: any) => file.status === EUploadStatus.Done);\n const uploaded = succesfull.map(({ guid, name }: any) => ({ id: guid, name }));\n onUploaded(uploaded);\n setLoading(false);\n });\n };\n\n const handleSingleUpload = (newFile: IUploadableFile) => (\n new Promise(async (resolve, reject) => {\n try {\n if (!newFile.file) {\n throw Error(\"Missing file\");\n }\n const uploadResult = await uploadFile(newFile.file);\n const newProps = {\n guid: uploadResult.id,\n status: EUploadStatus.Done\n };\n updateFileObj(newFile.id, newProps);\n return resolve({ ...newFile, ...newProps });\n } catch (err) {\n console.log(\"err\", err);\n\n updateFileObj(newFile.id, { status: EUploadStatus.UploadError });\n return resolve(newFile);\n }\n })\n );\n\n const handleSingleFileInfo = (newFile: IUploadableFile) => (\n new Promise(async (resolve: any, reject: any) => {\n try {\n if (!newFile.guid) {\n throw Error(\"Missing file\");\n }\n const uploadResult = await getFileInfo(newFile.guid);\n\n updateFileObj(newFile.id, {\n status: EUploadStatus.Done,\n name: uploadResult.name,\n });\n\n return resolve(newFile);\n } catch (err) {\n updateFileObj(newFile.id, { status: EUploadStatus.UploadError });\n return resolve(newFile);\n }\n })\n );\n\n const handleSingleRemove = (newFile: IUploadableFile) => {\n if (!newFile.guid) {\n console.log(\"Missing file\");\n return;\n }\n removeFileObj(newFile.id);\n onRemoved(newFile.guid);\n };\n\n\n // Load initial files.\n useEffect(() => {\n let timeout = setTimeout(() => {\n\n if (uploadedFiles && uploadedFiles.length && !isLoaded) {\n setLoaded(true);\n let newFiles: Array = uploadedFiles.map((file: any) => createLoadedFile(file));\n setFiles(newFiles);\n // requests = newFiles.map((fileObj) => handleSingleFileInfo(fileObj));\n // Promise.all(requests).then(function (values) { });\n // requests.forEach((req: any) => req.cancel())\n }\n }, 50);\n return () => {\n clearTimeout(timeout);\n };\n\n }, [uploadedFiles]);\n\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDropAccepted: handleFiles,\n accept,\n disabled\n });\n\n return (\n
\n
\n \n \n \n
\n\n \n {fileObjs.map((file, index) => (\n \n\n ))}\n \n
\n );\n};\n\n","import {\n TLoadable,\n createUnloaded,\n createLoading,\n createLoaded,\n createLoadErrored,\n} from \"../../../../sg-core\";\nimport { TAuthAction } from \"./authActions\";\nimport IHavainnotUser from \"../../interfaces/IHavainnotUser\";\nimport { default as JSCookies } from \"js-cookie\";\n\nexport enum AuthenticationType {\n GateUser = \"GateUser\",\n AnonToken = \"AnonToken\",\n}\n\nexport interface IHav20AuthState {\n authenticationStatus: TLoadable;\n token: string | null;\n loggedInUserId: number | null;\n loggedInUser: IHavainnotUser | null;\n appRoles: TLoadable;\n logoutCounter: number;\n\n anonPackage?: any;\n returnHref: string | null;\n lang?: string;\n rdr: string | null;\n}\n\nexport const defaultAuthState: IHav20AuthState = {\n authenticationStatus: createLoading(),\n token: null,\n loggedInUserId: null,\n loggedInUser: null,\n appRoles: createUnloaded(),\n logoutCounter: 0,\n returnHref: null,\n rdr: JSCookies.get(\"rdr\") || null,\n};\n\nconst authReducer = (state = defaultAuthState, action: TAuthAction): IHav20AuthState => {\n switch (action.type) {\n case \"REQUEST_LOGIN\": {\n return {\n ...state,\n authenticationStatus: createLoading(),\n };\n }\n case \"REQUEST_INITIALIZE_LOGIN\": {\n return { ...state, authenticationStatus: createLoading() };\n }\n\n case \"SET_LANGUAGE\": {\n return {\n ...state,\n lang: action.payload.language,\n };\n }\n\n case \"SUCCESS_LOGIN\": {\n return {\n ...state,\n authenticationStatus: createLoaded(AuthenticationType.GateUser),\n loggedInUserId: action.payload.user.id,\n loggedInUser: action.payload.user,\n token: action.payload.sid,\n returnHref: action.payload.returnHref,\n lang: action.payload.lang,\n };\n }\n case \"SUCCESS_GATE_LOGIN\": {\n return {\n ...state,\n authenticationStatus: createLoaded(AuthenticationType.GateUser),\n loggedInUserId: action.payload.user.id,\n loggedInUser: action.payload.user,\n token: action.payload.sid,\n returnHref: action.payload.returnHref,\n lang: action.payload.lang,\n rdr: action.payload.rdr || null,\n };\n }\n\n case \"SUCCESS_ANON_LOGIN\": {\n return {\n ...state,\n authenticationStatus: createLoaded(AuthenticationType.AnonToken),\n token: action.payload.sid,\n anonPackage: action.payload.data,\n };\n }\n\n case \"FAILURE_LOGIN\": {\n return {\n ...state,\n authenticationStatus: createLoadErrored(action.error),\n loggedInUserId: null,\n loggedInUser: null,\n token: null,\n logoutCounter: state.logoutCounter + 1,\n };\n }\n\n case \"LOGOUT\": {\n return {\n ...state,\n authenticationStatus: createUnloaded(),\n loggedInUserId: null,\n loggedInUser: null,\n token: null,\n logoutCounter: state.logoutCounter + 1,\n };\n }\n\n case \"REQUEST_FETCH_USERS_APP_ROLES\": {\n return { ...state, appRoles: createLoading() };\n }\n\n case \"SUCCESS_FETCH_USERS_APP_ROLES\": {\n return { ...state, appRoles: createLoaded(action.payload.roles) };\n }\n\n case \"FAILURE_FETCH_USERS_APP_ROLES\": {\n return { ...state, appRoles: createLoadErrored(action.payload.error) };\n }\n\n case \"SET_APP_ROLES\": {\n return { ...state, appRoles: createLoaded(action.payload.roles) };\n }\n }\n return state;\n};\n\nexport default authReducer;\n","export interface ISuccessResult {\n isSuccess: true;\n isFailure: false;\n value: T;\n}\n\nexport interface IFailureResult {\n isSuccess: false;\n isFailure: true;\n error: Error;\n}\n\nexport type TResult = ISuccessResult | IFailureResult;\n\nexport function makeSuccess(value: T): ISuccessResult {\n return {\n isSuccess: true,\n isFailure: false,\n value,\n };\n}\n\nexport function makeFailure(error: Error): IFailureResult {\n return {\n isSuccess: false,\n isFailure: true,\n error,\n };\n}\n","import { useMemo } from \"react\";\nimport useSWR from \"swr\";\nimport { useHprService } from \"../../context/HprServiceContext\";\nimport { IPerson } from \"../../models/IPerson\";\nimport { HprCacheKeys } from \"../cacheKeys\";\nimport { useHprSettings } from \"../hprSettings/useHprSettings\";\n\nexport type IUsePersonHook = (personId: IPerson[\"id\"] | null) => {\n data: IPerson | null;\n fetching: boolean;\n};\n\nexport const usePerson: IUsePersonHook = (personId) => {\n\n const { data: settings } = useHprSettings();\n const certList = settings?.certs ? Object.keys(settings?.certs) : [];\n\n const service = useHprService();\n\n const fetcher = async (): Promise => {\n if (!personId) return null;\n const personData = await service.getPerson(personId, certList);\n if (personData.isFailure) {\n throw personData.error;\n }\n\n return personData.value;\n };\n\n const { data, isValidating } = useSWR(() =>\n HprCacheKeys.PersonInstance(personId || 0),\n fetcher,\n {\n suspense: true,\n revalidateOnFocus: false,\n revalidateOnMount: false,\n refreshWhenHidden: false\n }\n );\n\n const rawData = data || null;\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating,\n }), [rawData, isValidating]);\n\n};","\n\nexport interface IAppParatemers {\n emailSupport?: boolean;\n smsSupport?: boolean;\n mapSupport?: boolean;\n\n companyName?: string;\n companyAddress?: string;\n\n showDeveloperSettings?: boolean;\n showRawApplicationErrors?: boolean;\n testenviromentBackground?: boolean;\n\n languages?: Array;\n showLanguageSelect?: boolean;\n\n showAuditSummary?: boolean;\n applicationMenuHref?: string;\n}\n\n\n\nexport interface IAppParatemersDTO {\n\n // Common with all apps\n sahkoposti_tuki?: boolean;\n sms_tuki?: boolean;\n kartta_tuki?: boolean;\n kehitysvalikko?: boolean;\n nayta_sovellusvirhe_viestit?: boolean;\n yrityksen_nimi?: string;\n yrityksen_osoite?: string;\n\n kielet?: string;\n nayta_kieli_valikko?: string;\n testiympariston_tausta?: string;\n sovellusvalikko_linkki?: string\n\n // App spesific\n auditoinnit_sahkoposti_tuki?: boolean;\n auditoinnit_sms_tuki?: boolean;\n auditoinnit_kartta_tuki?: boolean;\n auditoinnit_kehitysvalikko?: boolean;\n auditoinnit_nayta_sovellusvirhe_viestit?: boolean;\n auditoinnit_yritysen_nimi?: string;\n auditoinnit_yrityksen_osoite?: string;\n auditoinnit_kielet?: string;\n auditoinnit_nayta_kieli_valikko?: string;\n auditoinnit_testiympariston_tausta?: boolean;\n\n auditoinnit_nayta_yhteenveto?: boolean;\n auditoinnit_sovellusvalikko_linkki?: string\n\n};\n\nconst ensureBoolean = (uknown: any) => typeof uknown === \"boolean\" ? uknown : undefined;\n\n/**\n * Mapper primarly uses app spesific parameter and fallbacks to common parameters used in all safety applications.\n */\nexport const AppParameterMapper = {\n apiToDomain: (api: IAppParatemersDTO): IAppParatemers => ({\n\n emailSupport: ensureBoolean(api.auditoinnit_sahkoposti_tuki ?? api.sahkoposti_tuki),\n smsSupport: ensureBoolean(api.auditoinnit_sms_tuki ?? api.sms_tuki),\n mapSupport: ensureBoolean(api.auditoinnit_kartta_tuki ?? api.kartta_tuki),\n\n companyName: api.auditoinnit_yritysen_nimi ?? (api as any).yritysen_nimi ?? api.yrityksen_nimi,\n companyAddress: api.auditoinnit_yrityksen_osoite ?? api.yrityksen_osoite,\n\n showDeveloperSettings: ensureBoolean(api.auditoinnit_kehitysvalikko ?? api.kehitysvalikko),\n showRawApplicationErrors: ensureBoolean(api.auditoinnit_nayta_sovellusvirhe_viestit ?? api.nayta_sovellusvirhe_viestit),\n testenviromentBackground: ensureBoolean(api.auditoinnit_testiympariston_tausta ?? api.testiympariston_tausta),\n\n languages: (api.auditoinnit_kielet || api.kielet) ? (api.auditoinnit_kielet ?? api.kielet ?? \"\").split(\",\") : undefined,\n showLanguageSelect: ensureBoolean(api.auditoinnit_nayta_kieli_valikko ?? api.nayta_kieli_valikko),\n\n showAuditSummary: ensureBoolean(api.auditoinnit_nayta_yhteenveto),\n applicationMenuHref: api.auditoinnit_sovellusvalikko_linkki || api.sovellusvalikko_linkki,\n\n\n }),\n};\n\n\n","import { CommonAppConfigurationMapper, ICommonAppConfigurations, ICommonAppConfigurationsDTO } from \"@/@common/models/CommonAppConfigurations\";\nimport { gateBooleanToBoolean } from \"../../../sg-core\";\n\n\ntype TGateBoolean = \"Y\" | \"N\";\n\nexport interface IAppConfigurations extends ICommonAppConfigurations {\n auditointi?: {\n yhteenveto?: boolean;\n };\n\n kaannokset?: {\n fi?: { [key: string]: any };\n en?: { [key: string]: any }\n }\n}\n\n\n\nexport interface IAppConfigurationsDTO extends ICommonAppConfigurationsDTO {\n auditointi: {\n yhteenveto: TGateBoolean;\n },\n\n kaannokset?: {\n fi?: { [key: string]: any };\n en?: { [key: string]: any }\n }\n};\n\n\n/**\n * Mapper primarly uses app spesific parameter and fallbacks to common parameters used in all safety applications.\n */\nexport const AppConfigurationMapper = {\n apiToDomain: (api: IAppConfigurationsDTO): IAppConfigurations => {\n return {\n ...CommonAppConfigurationMapper.apiToDomain(api),\n\n auditointi: {\n yhteenveto: api.auditointi?.yhteenveto ? gateBooleanToBoolean(api.auditointi.yhteenveto) : undefined\n\n },\n\n kaannokset: api.kaannokset,\n }\n },\n};\n\n\n","import { TResult, makeSuccess } from \"../../sg-core/utils/Result\";\nimport { ISgApiService } from \"../../sg-core/services/ApiService2\";\nimport IFormType from \"../interfaces/IFormType\";\nimport ICategory from \"../interfaces/ICategory\";\nimport IFormDefinition from \"../interfaces/IFormDefinition\";\nimport FormDefinitionMapper from \"../mappers/FormDefinitionMapper\";\nimport FormTypeMapper from \"../mappers/FormTypeMapper\";\nimport CategoryMapper from \"../mappers/CategoryMapper\";\nimport PermissionMapper from \"../mappers/PermissionMapper\";\nimport { SemanticICONS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport { IPermissionDTO, IAppRoleDTO, ICategoryPermission } from \"../interfaces/ICategoryPermission\";\nimport { IRole } from \"../interfaces/IAuditoinnitUser\";\nimport { RoleMapper } from \"../mappers/RoleMapper\";\nimport { IEndpoint } from \"../../sg-core/services/EndpointService\";\nimport { IPerson } from \"../../sg-hpr/models/IPerson\";\nimport { AppParameterMapper, IAppParatemers, IAppParatemersDTO } from \"../interfaces/IAppParatemers\";\nimport { AppConfigurationMapper, IAppConfigurations, IAppConfigurationsDTO } from \"../interfaces/AppConfigurations\";\n\nexport interface IInitialContextData {\n formTypes: IFormType[]\n categores: ICategory[]\n persons: IPerson[]\n categoryPermissions: ICategoryPermission[];\n appRoles: IRole[];\n appParamters: IAppParatemers | null;\n appConfigs: IAppConfigurations | null;\n}\n\nexport interface IContextService {\n getInitialData(): Promise>;\n getFormDefinition(formId: number): Promise>;\n getUserAppRoles: () => Promise>;\n getAnonymousForm: (guid: string) => Promise>;\n getFormType: (id: IFormType[\"id\"]) => Promise>;\n}\n\nexport interface IInitialContextResult {\n success: true;\n // action: \"hae_perustiedot\";\n henkilot: { id: number; nimi: string; kuva: string, etunimi: string; sukunimi: string; }[];\n lomakkeet: { id: number; guid: string; nimi: string; kategoria: number; lomakemaaritys: number; tyonkulku: number; viitenimi?: string }[];\n kategoriat: { id: number; nimi: string; ikoni?: SemanticICONS }[];\n oikeustasot?: IPermissionDTO[];\n roolit?: IAppRoleDTO[];\n parametrit: IAppParatemersDTO;\n config: IAppConfigurationsDTO;\n}\n\nexport interface IFormConfigResult {\n success: true;\n action: \"hae_perustiedot\";\n lomakemaaritys: { id: number; nimi: string; kategoria: number; tyonkulku: number; data: string };\n lomake: { id: number; nimi: string; kategoria: number; tyonkulku: number; lomakemaaritys: { data: string } };\n}\n\n\nexport const getContextService = (apiService: ISgApiService, Enpoint: IEndpoint, anonymousSession: boolean): IContextService => {\n\n const makeAnonymousAction = (actionName: string) => anonymousSession ? `${actionName}_anonyymi` : actionName;\n\n const ensureArray = (v: T[]): T[] => {\n if (!v || !Array.isArray(v)) {\n return [];\n }\n return v;\n };\n\n const getInitialData = async (): Promise> => {\n const action = makeAnonymousAction(\"hae_perustiedot\");\n const apiResponse = await apiService.sendAction(Enpoint, action, {});\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n formTypes: ensureArray(apiResponse.value.lomakkeet).map(FormTypeMapper.apiToDomain),\n categores: ensureArray(apiResponse.value.kategoriat).map(CategoryMapper.apiToDomain),\n // locations: apiResponse.value.sijainnit.map(LocationMapper.apiToDomain),\n // facilities: apiResponse.value.kohteet.map(FacilityMapper.apiToDomain),\n // areas: apiResponse.value.alueet.map(AreaMapper.apiToDomain),\n persons: [],\n categoryPermissions: PermissionMapper.permissionsToDomain(apiResponse.value.oikeustasot || []),\n appRoles: apiResponse.value.roolit ? apiResponse.value.roolit.map(RoleMapper.apiToDomain) : [],\n appParamters: apiResponse.value.parametrit ? AppParameterMapper.apiToDomain(apiResponse.value.parametrit) : null,\n appConfigs: apiResponse.value.config ? AppConfigurationMapper.apiToDomain(apiResponse.value.config) : null\n });\n }\n return apiResponse\n };\n\n\n\n const getUserAppRoles = async (): Promise> => {\n const action = makeAnonymousAction(\"hae_kayttajaroolit\");\n const body = {}\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n if (apiResponse.isSuccess === true) {\n return makeSuccess(apiResponse.value.roolilista.split(\",\"));\n }\n return apiResponse\n };\n\n\n const getAnonymousForm = async (guid: string): Promise> => {\n const action = \"kasittele_lomakeavaus_anonyymi\"\n const body = { lomake: { guid } }\n const apiResponse = await apiService.sendAction(Enpoint, action, body, true);\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n formTypeId: apiResponse.value.lomake.id,\n token: apiResponse.value.sid\n });\n }\n return apiResponse\n };\n\n const getFormDefinition = async (formDefinitionId: number): Promise> => {\n const action = \"hae_lomakemaaritys\"\n const body = { lomakemaaritys: { id: formDefinitionId } }\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(FormDefinitionMapper.apiToDomain(apiResponse.value.lomakemaaritys));\n }\n return apiResponse\n };\n\n const getFormType: IContextService[\"getFormType\"] = async (id): Promise> => {\n const action = \"hae_lomake\";\n const body = { lomake: { id } }\n const apiResponse = await apiService.sendAction<{ lomake: IInitialContextResult[\"lomakkeet\"][0] }>(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(FormTypeMapper.apiToDomain(apiResponse.value.lomake));\n }\n return apiResponse\n };\n\n\n return {\n getInitialData,\n getFormDefinition,\n getUserAppRoles,\n getAnonymousForm,\n getFormType\n };\n};\n","export const gateBooleanToBoolean = (gateBoolean: string) => gateBoolean === \"Y\";\n\nexport const booleanToGateBoolean = (boolean: boolean) => boolean === true ? \"Y\" : \"N\";\n\n\nexport const gateNonstandardDateToDate = (str: string): Date | null => {\n const [date = \"\", time = \"\"] = str.split(\" \");\n\n const [day, month, year] = date.split(\".\");\n const timeSeparator = time.indexOf(\":\") > -1 ? \":\" : \".\";\n const [hour, minute, second] = time.split(timeSeparator);\n\n let valueArr = [day, month, year];\n\n if (time) {\n valueArr.push(hour, minute, second)\n }\n const values = valueArr.map((v) => parseInt(v, 10));\n\n const nans = values.filter(Number.isNaN);\n\n if (nans.length > 0) {\n return null;\n }\n\n if (time) {\n return new Date(\n values[2],\n values[1] - 1,\n values[0],\n values[3],\n values[4],\n values[5],\n );\n }\n\n return new Date(\n values[2],\n values[1] - 1,\n values[0]\n );\n};\n\n\nconst GATE_EMPTY_PROP = \"(null)\";\n\n/**\n * Adds flags for empty values in object, so backend knows that field is empty.\n * @param obj \n */\nexport const emptyPropertiesToGateEmptyProperties = (obj: { [key: string]: any }): { [key: string]: any } => {\n return Object.keys(obj).reduce<{ [key: string]: any }>((acc, key) => {\n let prop = obj[key];\n\n if (typeof prop === \"object\") {\n acc[key] = emptyPropertiesToGateEmptyProperties(prop)\n } else if (prop === null) {\n acc[key] = GATE_EMPTY_PROP;\n } else if (prop === \"\") {\n acc[key] = GATE_EMPTY_PROP;\n } else {\n acc[key] = prop;\n }\n\n return acc;\n }, {})\n};","import { makeFailure, makeSuccess, TResult, isLoaded, getSgApiService } from \"../../../../sg-core\";\nimport { useAuthentication } from \"../../auth/store/authSelectors\";\nimport IObservation from \"../../interfaces/IObservation\";\nimport { EObservationPackageVersio, IObservationPackage } from \"../../interfaces/ObservationPackage/ObservationPackage\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport { useFormTypeList } from \"../../store/selectors/formSelectors\";\nimport { useCategoryList } from \"../../store/selectors/categorySelectors\";\nimport ICategory from \"../../interfaces/ICategory\";\n\n\n\nexport const makeObservationPacakge = (data: { observation: IObservation; formType?: IFormType; category?: ICategory; }): IObservationPackage => {\n const packageData: IObservationPackage = {\n versio: EObservationPackageVersio.v1,\n observation: data.observation,\n formType: data.formType || {} as any,\n category: {} as any\n };\n\n return packageData\n}\n\n\n\n\ninterface IUseGetObservationData {\n makePackage: (data: { observation: IObservation; }) => Promise>>;\n};\n\nexport type IUseMakeObservationPackageHook = () => IUseGetObservationData;\n\n/**\n * Hook that fetches permit and all relation data, and composes data package out of it\n */\nexport const useMakeObservationPackage: IUseMakeObservationPackageHook = () => {\n const { token, anonymousSession } = useAuthentication();\n\n const apiService = getSgApiService(\"\");\n apiService.setToken(token || \"\");\n\n const formTypes = useFormTypeList();\n const categories = useCategoryList();\n\n const makePackage: IUseGetObservationData[\"makePackage\"] = async ({ observation }) => {\n try {\n\n const formType = formTypes && isLoaded(formTypes) ? formTypes.data.find((form) => form.id === observation.formType) : undefined;\n const category = categories && isLoaded(categories) ? categories.data.find((category) => category.id === formType?.category) : undefined;\n const packageData: IObservationPackage = makeObservationPacakge({\n observation,\n formType,\n category\n });\n\n\n return makeSuccess(packageData);\n } catch (error) {\n console.info(error);\n return makeFailure(error as Error);\n };\n };\n\n return {\n makePackage\n };\n};\n","\nimport { IAppMessage } from \"../reducers/messageReducer\";\n\nexport const showNewMessage = \"SHOW_NEW_MESSAGE\";\nexport const hideMessage = \"HIDE_MESSAGE\";\n\nexport interface IShowNewMessage {\n type: typeof showNewMessage;\n payload: { message: IAppMessage }\n}\n\nexport interface IHideMessage {\n type: typeof hideMessage;\n payload: { messageId: string }\n}\n\nexport type IMessageAction\n = IShowNewMessage\n | IHideMessage\n ;\n\n\nexport const createShowNewMessageAction = (message: IAppMessage): IShowNewMessage => ({\n type: showNewMessage,\n payload: { message },\n});\n\nexport const createHideMessageAction = (messageId: string): IHideMessage => ({\n type: hideMessage,\n payload: { messageId },\n});\n\n\n","import React from \"react\";\nimport { Message, ImageProps, Placeholder } from \"semantic-ui-react\";\nimport { isLoaded, isLoadErrored } from \"../../sg-core/models/ILoadable\";\nimport { useFileUploadService } from \"../context/FileUploadServiceContext\";\nimport useFileToken from \"../hooks/useFileToken\";\nimport { Upload6 } from \"../../endpoints\"\n\n\ninterface IImageProps extends ImageProps {\n id: string;\n title: string\n}\n\nconst getFileUrl = (baseUrl: string, fileId: string, token: string): string => {\n return [\n baseUrl,\n \"?action=hae_tiedosto&varmenne=\",\n token,\n \"&tiedosto=\",\n fileId,\n ].join(\"\");\n};\n\nconst FileView: React.FC = ({ id, title, ...imgProps }) => {\n const fileService = useFileUploadService();\n\n if (!fileService) {\n throw new Error(\"ImageView cannot exists without an SG fileupload context.\");\n }\n\n const fileToken = useFileToken();\n let shortTitle = title.length > 40 ? `${title.substr(0, 40)}...` : title;\n\n if (isLoaded(fileToken)) {\n const fileUrl = getFileUrl(\n Upload6.path,\n id,\n fileToken.data,\n );\n return {shortTitle} ;\n }\n\n if (isLoadErrored(fileToken)) {\n return Tiedoston lataus ei onnistunut;\n }\n\n return ;\n};\n\nexport default FileView;\n","import { mutate } from 'swr';\nimport { HprCacheKeys } from '../cacheKeys';\nimport { IPerson } from '../../models/IPerson';\n\n\nexport const usePersonCache = () => {\n\n const appendPersons = async (persons: IPerson[]) => {\n persons.forEach((person) => {\n mutate(HprCacheKeys.PersonInstance(person.id), person)\n });\n };\n\n const mutatePerson = async (person: IPerson) => {\n mutate(HprCacheKeys.PersonInstance(person.id), person)\n };\n\n const appendListPersons = async (persons: IPerson[]) => {\n persons.forEach((person) => {\n mutate(HprCacheKeys.PersonListInstance(person.id), person)\n });\n };\n\n return {\n appendPersons,\n mutatePerson,\n\n appendListPersons\n };\n};\n","import React from \"react\";\nimport { ICompany } from \"../../models/ICompany\";\nimport { SemanticICONS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport { Icon } from \"semantic-ui-react\";\nimport { RenderCompany } from \"./RenderCompany\";\n\ninterface CompanyNameProps {\n as?: any;\n company: ICompany;\n icon?: SemanticICONS | boolean;\n className?: string\n};\n\nconst CompanyName: React.FC = ({\n as: CustomWrapper,\n company,\n icon,\n ...otherProps\n}) => {\n const Wrapper = CustomWrapper || \"span\"\n return (\n \n {typeof icon === \"string\" ? (\n \n ) : icon ? (\n \n ) : null\n }\n\n {company.name}\n\n \n );\n};\n\nexport const CompanyNameById: React.FC & { companyId: ICompany[\"id\"] }> = ({ companyId, ...props }) => {\n return (\n {\n if (!company) {\n return
\n }\n return (\n \n )\n }}\n />\n )\n};\n\nexport default CompanyName;\n","import { IPersonCerts } from \"../models/IPerson\";\nimport { IPersonCert } from \"../models/IPersonCert\";\nimport { IHprSettings } from \"../models/IHprSettings\";\n\nimport { ECertStatus } from \"../models/ICert\";\n\n\nexport const getPersonCertStatus = (personCert: IPersonCert, timeLimited: boolean = false) => {\n if (timeLimited && personCert.valid && personCert.expires) {\n return ECertStatus.Expires;\n }\n\n return personCert.valid ? ECertStatus.Valid : ECertStatus.NotValid;\n}\n\n\nexport const getCertStatus = (personCerts: IPersonCerts, certs: IHprSettings[\"certs\"], requiredCerts: Array) => {\n return requiredCerts.reduce((acc, key) => {\n const personCert = personCerts[key];\n const cert = certs[key]\n\n const status = personCert ? getPersonCertStatus(personCert, cert.isTimeLimited) : ECertStatus.NotValid\n\n if (acc !== ECertStatus.NotValid) {\n acc = status;\n };\n\n return acc\n }, ECertStatus.Valid)\n};","import React, { ErrorInfo } from \"react\";\n\ninterface IErrorState {\n hasError: boolean;\n error: Error | null;\n}\n\ninterface IErrorProps {\n clearWhenChanges?: string | boolean;\n onError?: (error: Error) => void;\n fallback: JSX.Element;\n}\n\nclass ErrorBoundary extends React.Component {\n constructor(props: IErrorProps) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n }\n }\n\n static getDerivedStateFromError(error: Error): IErrorState {\n return {\n hasError: true,\n error: error,\n }\n }\n\n componentDidUpdate(prevProps: IErrorProps) {\n if (this.props.clearWhenChanges !== prevProps.clearWhenChanges) {\n if (this.state.hasError) {\n this.setState({ hasError: false, error: null })\n }\n }\n }\n\n componentDidCatch(error: Error, logInfo: ErrorInfo) {\n console.error(logInfo);\n console.error(error);\n if (error && this.props.onError) {\n this.props.onError(error)\n }\n }\n\n render() {\n\n if (this.state.hasError) {\n return this.props.fallback;\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary","import { useMemo } from \"react\";\nimport { useInitialContext } from \"../context/useInitialContext\";\nimport IFormType from \"../../interfaces/IFormType\";\n\nexport type IUseFormTypeListHook = () => {\n data: IFormType[];\n fetching: boolean;\n}\n\nexport const useFormTypeList: IUseFormTypeListHook = () => {\n const { data: { formTypes: rawData }, fetching } = useInitialContext();\n return useMemo(() => ({ data: rawData, fetching, }), [rawData, fetching]);\n};\n","import { IInitialContextResult } from \"../services/contextService\";\nimport ICategory from \"../interfaces/ICategory\";\n\nconst CategoryMapper = {\n apiToDomain: (api: IInitialContextResult[\"kategoriat\"][0]): ICategory => ({\n id: api.id,\n name: api.nimi,\n icon: api.ikoni\n }),\n};\n\nexport default CategoryMapper\n","import { IPermissionDTO, ICategoryPermission, EPermissionLevel } from \"../interfaces/ICategoryPermission\";\n\nconst PermissionMapper = {\n permissionLevelToDomain: (v: string): EPermissionLevel => {\n switch (v) {\n case \"vain_julkiset\":\n return EPermissionLevel.OnlyPublic;\n case \"aina\":\n return EPermissionLevel.Always;\n case \"ei_koskaan\":\n default:\n return EPermissionLevel.Never;\n }\n },\n permissionsToDomain: (permissions: IPermissionDTO[]): ICategoryPermission[] => {\n return permissions.map((perm): ICategoryPermission => ({\n id: perm.id,\n categoryId: perm.kategoria,\n roleId: perm.rooli,\n create: PermissionMapper.permissionLevelToDomain(perm.lisays),\n edit: PermissionMapper.permissionLevelToDomain(perm.muokkaus),\n read: PermissionMapper.permissionLevelToDomain(perm.luku),\n }));\n },\n // permissionsToDomain: (roles: IAppRoleDTO[], permissions: IPermissionDTO[]): IPermissionsToDomainResult => {\n // const groupedByCategory = _groupBy(permissions, \"categoryId\");\n\n // return _mapValues(groupedByCategory, (perms, categoryId): ICategoryPermission => {\n // const maxPermissionRead = _maxBy(perms, (perm) => PermissionMapper.permissionLevelToDomain(perm.luku));\n // const maxPermissionUpdate = _maxBy(perms, (perm) => PermissionMapper.permissionLevelToDomain(perm.muokkaus));\n // const maxPermissionCreate = _maxBy(perms, (perm) => PermissionMapper.permissionLevelToDomain(perm.lisays));\n\n // return {\n // id: 1,\n // categoryId: categoryId as any as number, // _mapValues types the key as string, but we know it's a number\n // create: PermissionMapper.permissionLevelToDomain(maxPermissionCreate.lisays),\n // edit: PermissionMapper.permissionLevelToDomain(maxPermissionUpdate.muokkaus),\n // read: PermissionMapper.permissionLevelToDomain(maxPermissionRead.luku),\n // };\n // });\n // },\n};\n\nexport default Object.freeze(PermissionMapper);\n","\nconst KEY_BASE = \"tilannekuva:\"\n\nexport const TilannekuvaCacheKeys = {\n MaptilerTilesetInstance: (id: string) => [KEY_BASE, \"MaptilerTilesetInstance\", id].join(\"-\"),\n MapresourceInstance: (url: string) => [KEY_BASE, \"MapresourceInstance\", url].join(\"-\"),\n TargetingSchemeInstance: (referenceName: string) => [KEY_BASE, \"TargetingSchemeInstance\", referenceName].join(\"-\"),\n\n MapList: () => [KEY_BASE, \"mapList\"].join(\"-\")\n\n};\n","import { CacheInterface, cache, mutate, trigger } from \"swr\";\nimport { mutateInterface, triggerInterface } from \"swr/dist/types\";\n\nexport type UseSWRCacheHook = () => {\n cache: CacheInterface,\n mutate: mutateInterface,\n trigger: triggerInterface\n};\n\n// Default implementation\n\nexport const useSWRCache: UseSWRCacheHook = () => {\n return {\n cache,\n mutate,\n trigger,\n };\n};\n","import React, { Fragment } from 'react';\nimport { Accordion, Icon } from 'semantic-ui-react'\n\n\ninterface AccordionItemProps {\n title: string | JSX.Element,\n description: string,\n active: boolean\n onToggle: () => void;\n statusIcon?: JSX.Element;\n hasError?: boolean\n}\n\nexport const AccordionItem: React.FC = ({\n title,\n description,\n active,\n onToggle,\n hasError,\n children\n}) => {\n return (\n \n \n \n {title}\n \n \n
\n

{description}

\n {children}\n
\n
\n
\n );\n};\n\n","\n\n\nimport React, { Fragment } from \"react\";\nimport { useAccordionObjectFieldContext, IAccordionObjectFieldContext } from \"./AccordionObjectFieldContext\";\n\ntype IRenderProps = IAccordionObjectFieldContext;\n\ninterface RenderAccordionProps {\n render: (props: IRenderProps) => any;\n};\n\nexport const RenderAccordion: React.FC = ({ render }) => {\n const context = useAccordionObjectFieldContext();\n\n if (!context) {\n return
Failed to render accordion
\n };\n\n return (\n \n {render(context)}\n \n );\n};\n\n","import React, { Fragment } from 'react';\n\nimport { ObjectFieldTemplateProps } from '@rjsf/core';\nimport { Segment, Accordion, Icon } from 'semantic-ui-react'\nimport { AccordionObjectFieldProvider, useAccordionObjectFieldContext } from './AccordionObjectFieldContext';\nimport { AccordionItem } from './AccordionItem';\nimport { RenderAccordion } from './RenderAccordion';\nimport { calculateEvaluationStatus } from '../../../../utils/calculateEvaluationStatics';\nimport { EEvaluationStatus } from '../../../../interfaces/IEvaluation';\nimport \"./_AccordionObjectField.less\";\nimport \"./_AnimatedAccordion.less\";\nimport { useSchemaTranslation } from '../../../../../sg-schema/useSchemaTranslation';\nimport { getUiOptions } from '../../../../../sg-schema/schema.helpers';\n\n\nexport const makeAccordionTitleId = (accordionId: string) => `${accordionId}-accordion-object-title`\n\n\nconst AccordionItemObjectField = (props: ObjectFieldTemplateProps) => {\n const {\n title,\n properties,\n uiSchema,\n idSchema,\n formContext = {},\n } = props;\n\n const { propertyWrapper } = formContext\n const { segmentProps } = getUiOptions(uiSchema) || {}\n\n const isRoot = idSchema.$id === \"root\"\n const PropertyWrapper = propertyWrapper || isRoot ? Fragment : Segment;\n\n const observationForm = uiSchema[\"ui:observationFormReference\"];\n const { t } = useSchemaTranslation();\n\n const context = useAccordionObjectFieldContext();\n const accordionKey = idSchema.$id\n\n const toggleTopLevelAccordion = () => {\n if (context?.toggleItem) {\n context.toggleItem(accordionKey);\n }\n };\n\n const renderElement = (element: any, index: number) => {\n\n if (!element.content.props.uiSchema[\"ui:observationFormReference\"]) {\n element.content.props.uiSchema[\"ui:observationFormReference\"] = observationForm;\n }\n\n const props = element.content.props\n const accordionKey = props.idSchema.$id;\n const descirption = props.description || (props.uiSchema && props.uiSchema[\"ui:description\"]) || props.schema.description;\n\n const accordion = accordionKey !== \"root_context\" && (typeof props.uiSchema[\"ui:accordion\"] === \"undefined\" || props.uiSchema[\"ui:accordion\"] !== false)\n\n const title = props.schema.title || props.uiSchema[\"ui:title\"] || props.title;\n\n if (accordion) {\n const status = props.formData ? calculateEvaluationStatus(props.formData) : undefined;\n\n const color = status === EEvaluationStatus.Okay ? \"green\" : status === EEvaluationStatus.NotOkay ? \"red\" : status === EEvaluationStatus.Uknown ? \"grey\" : \"\"\n\n\n return (\n (\n = 1}\n title={(\n \n {t(title)}\n {color ? : undefined}\n \n )}\n description={descirption ? t(descirption) : props.description}\n active={accordionKey === active}\n onToggle={() => toggleItem(accordionKey)}\n key={index}\n children={element.content}\n />\n )}\n />\n )\n };\n\n return (\n \n {element.content}\n \n )\n };\n\n\n\n const erroredElement = properties.find((element: any) => Object.keys(element.content.props.errorSchema).length >= 1)\n const hasErrors = Boolean(erroredElement);\n\n\n return (\n \n \n\n \n \n\n\n\n \n
{uiSchema['ui:title'] || title}
\n {properties.map(renderElement)}\n
\n\n
\n
\n \n \n );\n};\n\nexport default AccordionItemObjectField;\n","import React, { Fragment } from \"react\";\nimport { useCompany } from \"../../data/companies/useCompany\";\nimport { ICompany } from \"../../models/ICompany\";\n\ntype IRenderProps = { company: ICompany | null };\n\ninterface RenderCompanyProps {\n companyId: number;\n render: (props: IRenderProps) => any;\n};\n\nexport const RenderCompany: React.FC = ({ companyId, render }) => {\n const { data: company } = useCompany(companyId);\n return (\n \n {render({ company })}\n \n );\n};\n\n","import { useMemo } from \"react\";\nimport { ICompany } from \"../../models/ICompany\";\nimport { useCompanyList } from \"./useCompanyList\";\n\n\n\nexport type IUseCompanyHook = (companyId: ICompany[\"id\"]) => {\n data: ICompany | null;\n fetching: boolean;\n};\n\nexport const useCompany: IUseCompanyHook = (id) => {\n\n const { data: companies, fetching } = useCompanyList();\n\n const data = companies.find((company) => company.id === id)\n\n if (companies.length && !data) console.warn(\"Failed to find company by id: \", id);\n\n const rawData = data || null;\n\n return useMemo(() => ({\n data: rawData,\n fetching,\n }), [rawData, fetching]);\n\n};","\n\n\n\nconst KEY_PREFIX = \"havainnot-app\";\nconst makeStorageKey = (...args: string[]) => [KEY_PREFIX, ...args].join(\"__\");\n\n\nexport const NEW_OBSERVATION_EDITS = makeStorageKey(\"new-observation-edits\");\n\n\n\nexport const clearLocalStorage = () => {\n localStorage.removeItem(NEW_OBSERVATION_EDITS);\n};","import { EEvaluationStatus, IEvaluations, IEvaluationStatics } from \"../interfaces/IEvaluation\";\n\n\n\nexport const calculateEvaluationStatus = (value: IEvaluations[any]) => {\n let status;\n\n if (value.status === EEvaluationStatus.Okay) {\n status = EEvaluationStatus.Okay\n } else if (value.status === EEvaluationStatus.NotOkay) {\n status = EEvaluationStatus.NotOkay\n } else if (value.status === EEvaluationStatus.Uknown) {\n status = EEvaluationStatus.Uknown\n } else if (value.okay && value.okay >= 1 && (!value.notOkay || value.okay < 1)) {\n status = EEvaluationStatus.Okay\n } else if (value.notOkay || (typeof value.notOkay !== \"undefined\" && value.notOkay > 1)) {\n status = EEvaluationStatus.NotOkay\n }\n\n return status;\n}\n\n\n\nexport const calculateEvaluationStatics = (data: IEvaluations) => {\n\n const checkKeys = Object.keys(data);\n\n const statics = checkKeys.reduce((acc, key) => {\n\n const { status, okay, notOkay } = data[key] || {};\n\n\n // Add one okay if no notOkays and even one okay\n if (typeof okay !== \"undefined\" && typeof notOkay !== \"undefined\") {\n if (notOkay > 0) {\n acc.notOkay = acc.notOkay + 1\n } else if (okay > 0) {\n acc.okay = acc.okay + 1\n }\n };\n\n // Add one by status\n if (typeof status !== \"undefined\") {\n switch (status) {\n case EEvaluationStatus.Okay:\n acc.okay = acc.okay + 1\n break;\n case EEvaluationStatus.NotOkay:\n acc.notOkay = acc.notOkay + 1\n break;\n case EEvaluationStatus.Uknown:\n acc.uknown = acc.uknown + 1\n break;\n }\n };\n\n return acc\n }, { okay: 0, notOkay: 0, uknown: 0 });\n\n return statics;\n\n};\n\n","import { IAuditFormData } from \"../interfaces/IAudit\";\nimport IFormDefinition from \"../interfaces/IFormDefinition\";\nimport { IFormSchema } from \"../interfaces/IFormSchema\";\nimport { forEachSchemaProp } from \"./schema.helpers\";\nimport _selectn from \"selectn\";\nimport { TSubmittableObservation } from \"../interfaces/IObservation\";\nimport { JSONSchemaDefinition } from \"../../sg-schema/RJSF\";\n\n\nexport const ControlledObservationFormFields = {\n informer: \"ilmottaja\",\n target: \"sijainti\",\n eventTime: \"tapahtuma_aika\",\n\n title: \"otsikko\",\n details: \"kuvaus\",\n images: \"kuvat\",\n image: \"kuva\"\n};\n\nconst makeRemoveRule = (field: string) => ({\n conditions: {},\n event: {\n type: \"remove\",\n params: {\n field: [field]\n }\n }\n});\n\nexport const transformObservationSchema = (schemas: IFormDefinition[\"schema\"]): IFormDefinition[\"schema\"] => {\n const { schema: { properties = {} }, rules = [] } = schemas;\n\n const removeTopLeveFields = [\n ControlledObservationFormFields.informer,\n // ControlledObservationFormFields.eventTime\n ];\n\n removeTopLeveFields.forEach((key) => {\n properties[key] && rules.push(makeRemoveRule(key));\n });\n\n\n if (!schemas.uiSchema[\"ui:order\"]) {\n const order = [\"otsikko\", \"kuvaus\", \"kuvat\", \"*\"]\n schemas.uiSchema[\"ui:order\"] = order;\n };\n\n return ({\n ...schemas,\n rules\n })\n};\n\n\nconst extractSubmittableObservations = (value: IAuditFormData[any], prop: JSONSchemaDefinition, path: string) => {\n let items: any[] = [];\n\n if (!prop || typeof prop === \"boolean\" || typeof prop.type !== \"string\") {\n return items;\n }\n\n items = !value ? [] : Array.isArray(value) ? value : typeof value === \"object\" ? [value] : [];\n\n\n let observations: Array = items.map((data, index) => ({ path: prop.type === \"array\" ? `${path}[${index}]` : path, data }))\n observations = observations.filter((entry) => entry.data.safetyObservation);\n\n return observations;\n};\n\n\nexport const getSafetyObservations = (formData: IAuditFormData, formSchema: IFormSchema) => {\n const { uiSchema } = formSchema;\n let observations: Array = []\n if (!formSchema.schema.properties) {\n return observations\n }\n forEachSchemaProp(formSchema.schema.properties, (path, prop) => {\n const uiProp = _selectn(path, uiSchema) || {};\n const value = _selectn(path, formData);\n\n const observationOptions = uiProp[\"ui:safetyObservation\"];\n if (observationOptions && observationOptions.formReference) {\n observations = extractSubmittableObservations(value, prop, path);\n };\n\n })\n return observations;\n\n\n}\n","import IFormType from \"./IFormType\"\nimport { IHavainnotFormSchema } from \"./IFormSchema\";\nimport SGUser from \"./IHavainnotUser\";\nimport { ILocationData } from \"@/sg-kohderekisterit/IKohderekisteri\";\nimport { IFormSchema } from \"@/@auditoinnit/auditoinnit/interfaces/IFormSchema\";\n\nexport enum EObservationStatus {\n New = \"uusi\",\n InProgress = \"kasittelyssa\",\n Finished = \"kasitelty\",\n Late = \"myohassa\",\n Unknown = \"tuntematon\",\n}\n\nexport const isObservationStatus = (candidate: string): candidate is EObservationStatus => {\n return [EObservationStatus.New, EObservationStatus.Late, EObservationStatus.InProgress, EObservationStatus.Finished]\n .includes(candidate as EObservationStatus);\n};\n\ninterface IKnownObservationFormData {\n merkinnat?: IProcessForm[];\n karttasijainti?: { marker?: string }\n}\n\nexport default interface IObservation {\n id: number;\n guid: string;\n name: string;\n creator: number;\n formType: number;\n target: ILocationData[\"id\"];\n work?: number;\n status: EObservationStatus;\n\n mapLocation?: string;\n\n searchText: string;\n\n title: string;\n description: string;\n image: string;\n formData: IKnownObservationFormData & { [key: string]: any };\n formSchema?: IHavainnotFormSchema;\n is_public: boolean;\n editor?: number;\n created_at: string;\n isEditor: boolean;\n\n processingFormSchema?: IFormSchema;\n classificationText?: string;\n}\n\nexport interface INewObservation extends Partial {\n // creator: number;\n formType: number;\n title: string;\n status: EObservationStatus;\n name: string;\n description?: string;\n image?: string;\n is_public: boolean;\n formData: IKnownObservationFormData & { [key: string]: any };\n formSchema?: IHavainnotFormSchema;\n created_at: string;\n searchText: string;\n}\n\nexport interface IObservationListSearch {\n whose?: \"own\" | \"all\";\n category?: number;\n status?: string;\n roles?: string[];\n creator?: number;\n handler?: number;\n}\n\nexport interface IObservationCounters {\n new: number;\n onHandling: number;\n ready: number;\n}\n\nexport const makeObservationSkeleton = (formType: IFormType, user: SGUser | null, isPublic: boolean): INewObservation => {\n const created_at = new Date().toISOString()\n return ({\n work: formType.workflow,\n // creator: 1, // userId, Should havainto app id currently is gate id wich breaks the API calls.\n name: formType.name,\n title: formType.name,\n formType: formType.id,\n formData: {\n ilmottaja: user?.fullname\n },\n status: EObservationStatus.New,\n is_public: isPublic,\n created_at,\n searchText: \"\"\n });\n}\n\nexport type TClassificationText = Array | Array | string | number | undefined;\n\nexport enum EProcessingMarkingPublicity {\n All = \"kaikki\",\n None = \"ei_mikaan\",\n Last = \"viimeisin\"\n}\n\ninterface IKnownProcessFormData {\n on_julkinen?: boolean;\n kasittelymerkintojen_julkisuus?: EProcessingMarkingPublicity;\n tila?: EObservationStatus;\n kuvat?: Array<{ id: string }>;\n lisatiedot?: string;\n luokitteluteksti?: TClassificationText;\n}\n\nexport interface IProcessForm {\n observationId: number;\n creator?: number;\n created_at: string;\n formData: IKnownProcessFormData & { [key: string]: any }\n formType: number;\n}\n\nexport const makeProcessFormSkeleton = (\n observation: IObservation,\n userId: number,\n isPublic: boolean,\n processingMarkingPublicity: EProcessingMarkingPublicity,\n formType?: IFormType,\n classificationText?: TClassificationText\n): IProcessForm => {\n const created_at = new Date().toISOString();\n return ({\n formData: {\n on_julkinen: isPublic,\n kasittelymerkintojen_julkisuus: processingMarkingPublicity,\n luokitteluteksti: classificationText\n },\n observationId: observation.id,\n // creator: 1,\n created_at,\n formType: 0 // //currently uses simple hard coded JSON schema in \"/src/constants/turvallisuushavainto.test.schema.json\"\n })\n}","import React, { useState, useEffect, Fragment } from \"react\";\nimport {\n Segment,\n Header,\n Label,\n Menu,\n Message,\n SegmentProps,\n} from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Redirect } from \"react-router-dom\";\nimport { useDispatch } from \"react-redux\";\nimport { createRequestFetchObservationCountsAction } from \"../../store/actions/observationListActions\";\nimport {\n useObservationCounts,\n useObservationFilters,\n} from \"../../store/selectors/observationListSelectors\";\nimport { isLoaded, isLoadErrored } from \"../../../../sg-core\";\nimport { SemanticCOLORS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport { EObservationStatus } from \"../../interfaces/IObservation\";\nimport {\n useLoggedInUser,\n useUsersAppRoles,\n} from \"../../auth/store/authSelectors\";\nimport { getRouteHrefById } from \"../../../../routing\";\nimport { HavainnotRouteId } from \"../../../routes\";\n\nexport type TObservationCounts = {\n new: number;\n onHandling: number;\n ready: number;\n};\n\ninterface IObservationCountersProps {\n counts?: TObservationCounts;\n}\n\ninterface ICounterContentProps {\n count: number | string;\n text: string;\n color: SemanticCOLORS;\n status: EObservationStatus;\n}\n\nconst CounterContent: React.FC = ({\n count,\n text,\n color,\n status,\n ...segmentProps\n}) => {\n const [clicked, setClicked] = useState(false);\n const { update } = useObservationFilters();\n\n // Use an effect to postpone the state update when the link is clicked.\n // If we don't postpone it, React will go into an infinite render loop.\n useEffect(() => (clicked ? update({ status }) : undefined), [\n clicked,\n status,\n update,\n ]);\n\n // Poor mans -> Redirect after clicked = true\n // We do it like this because we want to run some code on click.\n // Edit: Other way would be to use location state and handle update call in WorklistPage\n if (clicked) {\n return (\n \n );\n }\n\n return (\n \n
setClicked(true)}>\n
{count}
\n \n
\n
\n );\n};\n\nconst ObservationCounters: React.FC = (props) => {\n const dispatch = useDispatch();\n const { t } = useTranslation();\n const whosOptions = [\n {\n value: \"all\",\n label: t(\"Kaikkien\"),\n },\n {\n value: \"own\",\n label: t(\"Omat\"),\n },\n {\n value: \"responsible\",\n label: t(\"Vastuulla\"),\n },\n ];\n\n const user = useLoggedInUser();\n const roleList = useUsersAppRoles();\n const { filters, update } = useObservationFilters();\n const currentWhose =\n user && filters.creator === user.hprPersonId\n ? \"own\"\n : user && filters.handler === user.hprPersonId\n ? \"responsible\"\n : \"all\";\n\n useEffect(() => {\n if (isLoaded(roleList)) {\n const countFilters = {\n creator: filters.creator,\n handler: filters.handler,\n roles: roleList.data,\n };\n dispatch(createRequestFetchObservationCountsAction(countFilters));\n }\n }, [dispatch, filters.creator, filters.handler, roleList]);\n\n const handleItemClick = (e: any, { value }: any) => {\n const creator = value === \"own\" ? user?.id : undefined;\n const handler = value === \"responsible\" ? user?.id : undefined;\n update({ creator, handler });\n };\n\n const observationCounts = useObservationCounts();\n const [visibleCounts, setVisibleCounts] = useState();\n\n // Update visible counts when new ones are loaded.\n useEffect(() => {\n if (\n isLoaded(observationCounts) &&\n observationCounts.data !== visibleCounts\n ) {\n setVisibleCounts(observationCounts.data);\n }\n }, [observationCounts, visibleCounts]);\n\n const counts = visibleCounts\n ? visibleCounts\n : { new: \"-\", onHandling: \"-\", ready: \"-\" };\n\n return (\n \n \n {whosOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n\n \n \n\n \n \n \n \n \n\n {isLoadErrored(observationCounts) ? (\n \n ) : null}\n \n );\n};\n\nconst MemoizedObservationCounters = React.memo(ObservationCounters);\n\nexport default MemoizedObservationCounters;\n","import React from \"react\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport { Modal, Icon, Header, Segment, ModalProps, Placeholder, Message } from \"semantic-ui-react\";\nimport ICategory from \"../../interfaces/ICategory\";\nimport { useFormTypeListByCategoryId } from \"../../store/selectors/formSelectors\";\nimport { isLoaded, isLoadErrored } from \"../../../../sg-core\";\nimport { useTranslation } from \"react-i18next\";\nimport { makeNewObservationPageHref } from \"../../utils/havainnot.helper\";\n\ninterface IFormListModal {\n category: ICategory;\n}\n\nconst FormListModal: React.FC = ({ category, ...modalProps }) => {\n const { t } = useTranslation();\n const formTypes = useFormTypeListByCategoryId(category.id)\n const formListHeader = t(\"Valitse lomake\")\n\n\n if (isLoaded(formTypes) && formTypes.data.length === 1) {\n const to = makeNewObservationPageHref(\n formTypes.data[0].formDefinition,\n formTypes.data[0].guid\n );\n\n\n if (to) {\n return (\n \n )\n }\n }\n\n return (\n \n \n {category.icon ? : null}\n {category.name}\n \n \n {formListHeader} \n {isLoaded(formTypes) ? (\n \n {formTypes.data.map((formType) => (\n \n {formType.name}\n \n ))\n }\n \n ) : isLoadErrored(formTypes) ? (\n \n ) : (\n \n \n \n \n )}\n\n \n \n );\n};\n\n\nexport default FormListModal;\n","import React from \"react\";\nimport { Segment, SegmentProps, Icon } from \"semantic-ui-react\";\nimport ICategory from \"../../interfaces/ICategory\";\n\ninterface IFormCategoryMenuItem {\n category: ICategory;\n onClick?: (e: any, categoryId: number) => void;\n segmentProps?: Partial\n}\n\nconst FormCategoryMenuItem: React.FC = (props) => {\n const { category, onClick, segmentProps = {} } = props;\n\n const handleClick = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n onClick instanceof Function && onClick(e, category.id)\n }\n return (\n \n {category.icon ? <>
: null}\n {category.name}\n
\n );\n};\n\nexport default FormCategoryMenuItem;\n","import _maxBy from \"lodash/maxBy\";\n\nimport { createSelector } from \"reselect\";\nimport { selectHavainnotState } from \"../selectors\";\nimport { useSelector } from \"react-redux\";\nimport { useUsersAppRoleIdList } from \"../../auth/store/authSelectors\";\nimport { useMemo } from \"react\";\nimport { EPermissionLevel, ICategoryPermission } from \"../../interfaces/ICategoryPermission\";\nimport { isLoaded } from \"../../../../sg-core\";\n\nconst selectPermissionState = createSelector(selectHavainnotState, (state) => state.permissions);\n\nexport const selectCategoryPermissions = createSelector(\n selectPermissionState,\n (state) => state.categoryPermissions,\n);\n\nexport const useCategoryPermission = (categoryId: number | false) => {\n const permissions = useSelector(selectCategoryPermissions);\n // const userRoles = useLoggedInUserRoles();\n const userRoles = useUsersAppRoleIdList();\n\n const roleIds = isLoaded(userRoles) ? userRoles.data : [];\n\n return useMemo(() => {\n if (isLoaded(permissions) && categoryId) {\n // const roleIds = userRoles.map((r) => r.id);\n\n const includePermission = (perm: ICategoryPermission) => {\n return perm.categoryId === categoryId && roleIds.includes(perm.roleId);\n };\n\n const categoryPerms = permissions.data.filter(includePermission);\n\n const getMaxPermission = (type: \"read\" | \"edit\" | \"create\") => {\n const maxPerm = _maxBy(categoryPerms, type);\n return maxPerm ? maxPerm[type] : EPermissionLevel.Never;\n };\n\n return {\n read: getMaxPermission(\"read\"),\n edit: getMaxPermission(\"edit\"),\n create: getMaxPermission(\"create\"),\n };\n }\n return {\n read: EPermissionLevel.Never,\n edit: EPermissionLevel.Never,\n create: EPermissionLevel.Never,\n };\n }, [permissions, categoryId, roleIds]);\n};\n","import React, { PropsWithChildren, Fragment } from \"react\";\nimport { EPermissionLevel } from \"../../interfaces/ICategoryPermission\";\nimport { useCategoryPermission } from \"../../store/selectors/permissionSelectors\";\n\ninterface IProps {\n categoryId: number;\n permissionType: \"read\" | \"edit\" | \"create\";\n minimumPermission: EPermissionLevel;\n fallback?: JSX.Element;\n}\n\nexport const MinimumCategoryPermission: React.FC> = (props) => {\n const { categoryId, minimumPermission, permissionType, fallback, children } = props;\n\n const permissionsForCategory = useCategoryPermission(categoryId);\n const permissionLevel = permissionsForCategory[permissionType];\n\n \n if (permissionLevel >= minimumPermission) {\n return {children};\n } else {\n return fallback || null;\n }\n};\n ","import React, { useState } from \"react\";\nimport { Segment } from \"semantic-ui-react\";\nimport ICategory from \"../../interfaces/ICategory\";\nimport _chunk from 'lodash/chunk'\nimport FormListModal from \"./FormListModal\";\nimport CategoryMenuItem from './FormCategoryMenuItem'\nimport { EPermissionLevel } from \"../../interfaces/ICategoryPermission\";\nimport { MinimumCategoryPermission } from \"../permissions/MinimumCategoryPermission\";\n\ninterface IFormCategoryMenuProps {\n categories: ICategory[]\n}\n\nconst FormCategoryMenu: React.FC = (props) => {\n const { categories } = props;\n const [activeCategory, setActiveCategory] = useState();\n\n const handleMenuItemClick = (e: any, categoryId: number) => {\n setActiveCategory(categoryId);\n };\n\n const handleModalClose = () => {\n setActiveCategory(undefined);\n };\n\n const activeCategoryData = categories.find(({ id }) => activeCategory === id);\n const chunks = _chunk(categories, 2);\n\n return (\n \n {categories.length > 1 ? (\n chunks.map((group, index) => (\n \n {group.map((category) => (\n \n \n \n\n ))}\n \n ))\n ) : categories.map((category) => (\n \n ))}\n\n {activeCategory && activeCategoryData ? (\n \n ) : null}\n \n );\n};\n\nexport default FormCategoryMenu;\n","import React, { useMemo } from \"react\";\nimport { Header, Segment, Message } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport FrontPageCounters from '../components/observation/ObservationCounters'\nimport { useCategoryList } from \"../store/selectors/categorySelectors\";\nimport { isLoading, isLoadErrored, isLoaded } from \"../../../sg-core\";\nimport FormCategoryMenu from \"../components/formType/FormCategoryMenu\";\nimport { TFunction } from \"i18next\";\nimport { PageTemplate } from \"../components/PageTemplate/PageTemplate\";\n\nconst getTextProps = (t: TFunction) => ({\n headerText: t(\"Havaintosovellus\"),\n createNewObservationText: t(\"Tee uusi havainto\"),\n loadError: t(\"Latauksessa tapahtui virhe!\")\n});\n\n\ninterface IFrontPageProps extends ReturnType { };\n\nconst FrontPage: React.FC = ({ headerText, createNewObservationText, loadError }) => {\n\n const categories = useCategoryList();\n\n if (isLoading(categories)) {\n return \n }\n\n return (\n \n
{headerText}
\n\n \n\n
{createNewObservationText}
\n\n {isLoadErrored(categories) ? (\n \n ) : isLoaded(categories) ? (\n \n ) : \n }\n
\n );\n};\n\nconst MemoizedFrontPage = React.memo(FrontPage);\n\nconst FrontPageContainer: React.FC = () => {\n const { t } = useTranslation();\n const textProps = useMemo(() => getTextProps(t), [t]);\n return ;\n};\n\nexport default FrontPageContainer;\n","import React from \"react\";\nimport { useCategoryById } from \"../../store/selectors/categorySelectors\";\nimport { Icon } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface IFormCategoryIconProps {\n categoryId: number;\n}\n\nexport const FormCategoryIcon: React.FC = ({ categoryId }) => {\n const category = useCategoryById(categoryId);\n const { t } = useTranslation();\n if (!category) {\n return {t(\"Tuntematon kategoriatunniste\")}'{categoryId}';\n }\n\n return ;\n}\n","\nimport { useSelector } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport { TLoadable, isLoaded, createLoaded, createUnloaded } from \"../../../../sg-core\";\nimport { selectHavainnotState } from \"../selectors\";\nimport { IRole } from \"../../interfaces/IHavainnotUser\";\nimport { useUsersAppRoleIdList } from \"../../auth/store/authSelectors\";\nimport ICategory from \"../../interfaces/ICategory\";\nimport { selectCategoryPermissions, useCategoryPermission } from \"./permissionSelectors\";\nimport { useMemo } from \"react\";\n\n// SELECTORS\nconst selectAppRoleState = createSelector(\n selectHavainnotState,\n (workPermit) => workPermit.appRole\n);\n\n\nexport const selectAppRolesById = createSelector(\n selectAppRoleState,\n (state) => state.appRoles,\n);\n\nexport const selectAppRoleList = createSelector(\n selectAppRoleState,\n (state) => state.appRoleList,\n);\n\n\nconst selectAppRoles = createSelector(\n selectAppRoleList,\n selectAppRolesById,\n (listLoader, byId) => {\n if (isLoaded(listLoader)) {\n return createLoaded(listLoader.data.map((id) => byId[id]));\n }\n return createUnloaded();\n }\n);\n\n// HOOKS\nexport const useAppRoles = (): TLoadable => useSelector(selectAppRoles);\n\n\nexport const useUserCanViewNamesOld = () => {\n const roles = useUsersAppRoleIdList();\n const appRoles = useAppRoles()\n const byId = useSelector(selectAppRolesById)\n\n if (isLoaded(roles) && isLoaded(appRoles)) {\n return roles.data.reduce((acc, userRole) => {\n const canView = userRole && byId[userRole] && byId[userRole].showNameDetail\n if (canView) { acc = true };\n return acc\n }, false);\n }\n\n return false;\n}\n\n\nexport const useUserCanViewNames = (categoryId?: ICategory[\"id\"]) => {\n\n const permissions = useSelector(selectCategoryPermissions);\n const activeRoles = useUsersAppRoleIdList();\n const appRoles = useAppRoles()\n // const byId = useSelector(selectAppRolesById);\n\n const canViewNames = useMemo(() => {\n if (!isLoaded(appRoles) || !isLoaded(permissions) || !isLoaded(activeRoles)) {\n return false;\n }\n const permissionsForCategory = categoryId ? permissions.data.filter((perm) => perm.categoryId === categoryId) : [];\n const rolesOfPermissions = appRoles.data.filter((role) => permissionsForCategory.find((perm) => perm.roleId === role.id));\n\n return rolesOfPermissions.reduce((acc, role) => {\n const canView = role && activeRoles.data.includes(role.id) && role.showNameDetail\n if (canView) {\n acc = true\n };\n return acc\n }, false);\n\n\n }, [permissions, categoryId, appRoles, activeRoles])\n\n \n return canViewNames;\n}","import React, { memo, useMemo } from \"react\";\nimport { Card, Label, Image, Icon } from \"semantic-ui-react\";\nimport IObservation from \"../../interfaces/IObservation\";\nimport { PersonName } from \"../person/PersonName\";\nimport { FormTypeName } from \"../formType/FormTypeName\";\nimport { StatusColors } from \"../../constants/statusColors\";\nimport { useFormTypeById } from \"../../store/selectors/formSelectors\";\nimport { FormCategoryIcon } from \"../formType/FormCategoryIcon\";\nimport { formatIdLabel, getReadableTimestamp } from \"../../utils/havainnot.helper\";\nimport { useApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { HavainnotRouteId } from \"../../../routes\";\nimport { Link } from \"react-router-dom\";\nimport { getRouteHrefById } from \"../../../../routing\";\nimport { Thumbnail } from \"../../../../sg-fileupload\";\nimport { useUserCanViewNames } from \"../../store/selectors/appRoleSelector\";\n\ninterface IWorkListItemProps {\n item: IObservation;\n showCreator: boolean;\n showId: boolean;\n}\n\nconst WorkListItem: React.FC = ({ item, showCreator = true, showId = false }) => {\n const { t } = useTranslation();\n const { components: { LocationName } } = useApplicationConfiguration();\n const formType = useFormTypeById(item.formType);\n const showNameDetail = useUserCanViewNames(formType?.category);\n\n const routeLinkParam = useMemo(() => ({ observation: item.guid, }), [item]);\n const labelColor = StatusColors[item.status];\n\n return (\n \n \n \n\n
\n\n
\n\n

{item.name}

\n\n
\n {item.target ?
: null}\n {showCreator && showNameDetail ?
: null}\n
{getReadableTimestamp(item.created_at)}
\n {showCreator && item.editor ?
: null}\n
\n
\n\n {item.image ? (\n \n
\n \n
\n
\n ) : null}\n
\n
\n
\n );\n};\n\nexport default memo(WorkListItem);\n","import React, { Fragment } from \"react\";\nimport WorkListItem from \"./WorkListItem\";\nimport IObservation from \"../../interfaces/IObservation\";\nimport { useApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\n\ninterface IWorkListContainerProps {\n workList: IObservation[];\n}\n\nconst WorkListContainer: React.FC = ({ workList }) => {\n const { showUniqueObservationId } = useApplicationConfiguration();\n return (\n \n {workList.map((work) => (\n \n ))}\n \n );\n};\n\nexport default WorkListContainer;\n","import React, { useCallback } from \"react\";\nimport { Pagination, PaginationProps } from \"semantic-ui-react\";\nimport { useObservationPagination } from \"../../store/selectors/observationListSelectors\";\n\nexport const WorkListPagination: React.FC = () => {\n\n const { pagination, gotoPage } = useObservationPagination();\n\n const onPageChangeWrapper = useCallback((_1, { activePage }: PaginationProps) => {\n const page = parseInt(activePage as string, 10);\n if (!Number.isNaN(page)) {\n gotoPage(page - 1);\n window.scrollTo(0, 0);\n }\n }, [gotoPage]);\n\n const totalPages = Math.ceil((pagination.totalItems || 0) / pagination.pageSize);\n\n // No need to render pagination if there's no pages\n if (totalPages <= 1) {\n return null;\n }\n\n return (\n \n );\n};\n","import React, { Suspense, useEffect, useMemo } from \"react\";\nimport { Header, Message, Segment } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport WorkList from \"../components/worklist/WorkList\";\nimport { TLoadable, isLoaded, isUnloaded, isLoading, isLoadErrored } from \"../../../sg-core\";\nimport IObservation from \"../interfaces/IObservation\";\nimport { LoaderSegment } from \"../components/LoaderSegment\";\nimport { useObservationListPage, useObservationPagination } from \"../store/selectors/observationListSelectors\";\nimport { WorkListFilters } from \"../components/worklist/WorkListFilters\";\nimport { WorkListPagination } from \"../components/worklist/WorkListPagination\";\nimport { useLocation } from \"react-router-dom\";\nimport AppMessage from \"../components/message/AppMessage\";\nimport { useDispatch } from \"react-redux\";\nimport { createClearObservationDeleagtionAction, createClearObservationProcessForm, createClearCreateObservationAction } from \"../store/actions/observationActions\";\nimport { TFunction } from \"i18next\";\nimport { PageTemplate } from \"../components/PageTemplate/PageTemplate\";\n\nconst getTextProps = (t: TFunction) => ({\n headerText: t(\"Tehdyt havainnot\"),\n noResultText: t(\"Ei tuloksia\"),\n failedText: t(\"Haussa tapahtui virhe\")\n\n});\n\ninterface IWorklistPageProps extends ReturnType {\n workList: TLoadable;\n\n}\n\nconst WorklistPage: React.FC = ({\n headerText,\n workList,\n noResultText,\n failedText\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslation();\n const { state } = useLocation<{ messageId?: string }>();\n\n const listIsEmpty = isLoaded(workList) && workList.data.length === 0;\n\n useEffect(() => {\n dispatch(createClearObservationDeleagtionAction());\n dispatch(createClearObservationProcessForm());\n dispatch(createClearCreateObservationAction())\n }, []);\n const { pagination: { totalItems } } = useObservationPagination();\n\n return (\n \n {state?.messageId ? : null}\n\n
{headerText} {totalItems ? `(${totalItems})` : null}
\n\n \n\n {(isUnloaded(workList) || isLoading(workList)) && }\n\n\n }>\n {isLoaded(workList) && }\n \n\n {isLoadErrored(workList) && (\n \n )}\n\n {listIsEmpty && (\n {noResultText}\n )}\n\n \n\n
\n );\n};\n\nconst MemoizedWorklistPage = React.memo(WorklistPage);\n\nconst WorklistPageContainer: React.FC = () => {\n const { t } = useTranslation();\n const textProps = useMemo(() => getTextProps(t), [t]);\n const workList = useObservationListPage();\n\n return (\n \n );\n};\n\nexport default WorklistPageContainer;\n","\n\n\nimport { JSONSchema6 } from 'json-schema';\nimport { EObservationStatus } from '../interfaces/IObservation';\n\n\nexport interface ISchemaContext {\n roles: string[];\n canViewNames: boolean;\n mode: \"display\" | \"form\",\n status: EObservationStatus,\n allowChangingProcessingMarkingPublicity: boolean;\n emptyValue?: string;\n}\n\nexport const contextSchema: JSONSchema6 = {\n \"type\": \"object\",\n \"properties\": {\n \"roles\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"canViewNames\": {\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\"display\", \"form\"]\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"uusi\", \"kasittelyssa\", \"kasitelty\"]\n },\n \"allowChangingProcessingMarkingPublicity\": {\n \"type\": \"boolean\"\n }\n }\n}\n","import React from \"react\"\nimport { useTranslation } from \"react-i18next\";\nimport { Message } from \"semantic-ui-react\"\n\n\ninterface ErrorListProps {\n errors: Array\n};\n\nexport const ErrorList: React.FC = ({ errors }) => {\n const t = useTranslation().t\n const errorMessage = t(\"Lomakkeella on virheitä!\");\n return (\n \n {errorMessage}\n {/*\n \n {errors.map((error, index) => (\n {error.stack}\n ))}\n \n */}\n \n );\n};\n\nexport default ErrorList;","/**\n * Set ui schema property with value form reference field\n * @param {String} params.field -\n * @param {String} params.dataField - source of data \n * @param {String} params.uiProperty - proprty wich value is set\n */\nexport const uiSetWith = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { field, dataField, uiProperty } = params\n const [firstUi, secondUi] = field.split(\".\")\n const [firstData, secondData] = dataField.split(\".\")\n const data = secondData ? formData[firstData][secondData] : formData[dataField]\n if (!uiSchema[firstUi]) return\n\n if (secondUi) {\n uiSchema[firstUi][secondUi][uiProperty] = data\n } else {\n uiSchema[field][uiProperty] = data\n\n }\n\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n uiSetWith.propTypes = {\n field: PropTypes.string,\n dataField: PropTypes.string,\n uiProperty: PropTypes.string\n };\n\n}","\nimport { makeReadonly } from './makeReadonly'\nimport { newOrder } from './newOrder'\nimport { setValue } from './setValue'\nimport { uiSetWith } from './uiSetWith'\n\nimport { overwriteWithCopyOfItem } from './overwriteWithCopyOfItem'\n\n\nconst extraActions = {\n readonly: makeReadonly,\n order: newOrder,\n setValue: setValue,\n copyItemTo: overwriteWithCopyOfItem,\n uiSetWith\n};\n\nexport default extraActions;","/**\n * Takes multiple fields, and makes them readonly.\n * @param {String} params.field - This field's data you want to make readonly\n */\nexport const makeReadonly = function (params: any, schema: any, uiSchema: any, formData: any) {\n\n var fields = params.field || [];\n\n if (Array.isArray(params.field) && params.field.length) {\n fields.forEach((field: string) => {\n uiSchema[field] = {\n ...(uiSchema[field] || {}),\n \"ui:readonly\": true\n }\n })\n } else if (params.field) {\n uiSchema[params.field] = {\n ...(uiSchema[params.field] || {}),\n \"ui:readonly\": true\n }\n }\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n makeReadonly.propTypes = {\n field: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]).isRequired,\n };\n\n makeReadonly.validate = function ({ field }: any, schema: any, uiSchema: any) {\n if (Array.isArray(field)) {\n field\n .filter(f => schema && schema.properties && schema.properties[f] === undefined)\n .forEach(f => console.error(`Field \"${f}\" is missing from schema on \"require\"`));\n } else if (\n schema &&\n schema.properties &&\n schema.properties[field] === undefined\n ) {\n console.error(`Field \"${field}\" is missing from schema on \"require\"`);\n }\n };\n\n}","/**\n * Takes multiple fields, and makes them readonly.\n * @param {String} params.field - This field's data you want to make readonly\n */\nexport const newOrder = function (params: any, schema: any, uiSchema: any, formData: any) {\n uiSchema[\"ui:order\"] = params.order || [\"*\"]\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n newOrder.propTypes = {\n order: PropTypes.arrayOf(PropTypes.string).isRequired,\n };\n\n newOrder.validate = function ({ order }: any, schema: any, uiSchema: any) {\n if (!Array.isArray(order)) {\n console.error(`Order is missing from parameters`)\n }\n };\n\n}","/**\n * Takes item from list and overwrite another field with list containing it\n * @param {String} params.from - name of the origin field\n * @param {String} params.to - field where item is copied\n * @param {String} [params.index=0] - index of item your copying\n */\nexport const setValue = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { source = \"\", target, } = params;\n\n const [first, second] = source.split(\".\");\n let value;\n\n if (first) {\n value = formData[first]\n };\n\n if (second && value && typeof value === \"object\") {\n value = value[second]\n }\n\n formData[target] = value\n\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n\n}","/**\n * Takes item from list and overwrite another field with list containing it\n * @param {String} params.from - name of the origin field\n * @param {String} params.to - field where item is copied\n * @param {String} [params.index=0] - index of item your copying\n */\nexport const overwriteWithCopyOfItem = function (params: any, schema: any, uiSchema: any, formData: any) {\n const { from, to, index = 0 } = params;\n if (formData[from] && formData[from].length && formData[from][index]) {\n formData[to] = [formData[from][index]]\n }\n};\n\n\n// Action validation\nif (process.env.NODE_ENV !== 'production') {\n\n const PropTypes = require('prop-types');\n\n overwriteWithCopyOfItem.propTypes = {\n from: PropTypes.string.isRequired,\n to: PropTypes.string.isRequired,\n index: PropTypes.number,\n };\n\n overwriteWithCopyOfItem.validate = function ({ from, to, index }: any, schema: any, uiSchema: any) {\n if (!from) {\n console.error(\"paramters is missing 'from' field\")\n }\n if (!schema.properties[from]) {\n console.error(\"schema is missing property called in from parameter, note that you can only use properties in first depth of schema\")\n }\n if (!to) {\n console.error(\"paramters is missing 'to' field\")\n }\n if (index && typeof index !== 'number') {\n console.error(\"index parameter need to be typeof number\")\n }\n };\n\n}","import React, { useState } from \"react\";\nimport { Button } from \"semantic-ui-react\";\nimport { contextSchema, ISchemaContext } from \"../constants/schemaContext\";\nimport { selectLanguage, useAuthentication, useLoggedInUser } from \"../auth/store/authSelectors\";\nimport { EObservationStatus } from \"../interfaces/IObservation\";\nimport { useApplicationConfiguration } from \"../configuration/ConfigurationContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { IFormContext } from \"../interfaces/FormContext\";\nimport { useSelector } from \"react-redux\";\nimport { FormProps } from \"@rjsf/core\";\n\nimport { FormView, IFormWithRules } from \"../../../sg-schema-form\";\nimport ErrorList from \"./form/ErrorList\";\nimport extraActions from \"../schema/extraActions\";\nimport { EAppLanguages } from \"../../../@common/utils/localization\";\n\n\ninterface ISchemaForm extends IFormWithRules {\n canViewNames: boolean;\n // schema: IFormSchema[\"schema\"];\n // uiSchema: IFormSchema[\"uiSchema\"];\n // formData?: { [key: string]: any };\n // rules?: { [key: string]: any }[];\n // translations?: { [key: string]: any };\n\n}\n\nconst SchemaForm: React.FC = ({\n formSchema,\n // rules = [],\n // schema,\n // uiSchema,\n formData = {},\n children,\n onSubmit,\n onChange,\n onError,\n liveValidate,\n canViewNames,\n // translations,\n ...otherProps\n}) => {\n\n const config = useApplicationConfiguration();\n // const Form = useMemo(() => config.jsonSchema.getForm(EWidgetType.Write), []);\n const { t, i18n } = useTranslation()\n\n const [dirtyAfterPageLoad, setDirtyAfterPageLoad] = useState(false);\n const [hasErrors, setHasErrors] = useState(false)\n\n const handleError = (errors: any[]) => {\n console.log(\"[SchemaForm.handleError]\", { errors })\n setHasErrors(errors.length ? true : false)\n onError && onError(errors);\n }\n\n const handleSubmit: FormProps[\"onSubmit\"] = (form) => {\n //@ts-ignore\n onSubmit && onSubmit(form);\n }\n\n const handleChange: FormProps[\"onChange\"] = (form) => {\n console.info(\"[SchemaForm.handleChange]\", form)\n onChange && onChange(form.formData)\n setDirtyAfterPageLoad(true);\n }\n\n\n\n\n // If there's translations, add them to the namespace\n if (formSchema.translations) {\n const translations = formSchema.translations;\n const keys = Object.keys(translations);\n keys.forEach((key) => {\n i18n.addResourceBundle(key, \"schema\", translations[key]);\n });\n };\n\n const user = useLoggedInUser();\n const lang = useSelector(selectLanguage) as EAppLanguages || EAppLanguages.FI;\n const { token, anonymousSession } = useAuthentication();\n const roleList = user ? user.roles.map(({ reference }) => reference).filter((value) => value) : []\n\n const contextData: ISchemaContext = {\n roles: roleList,\n canViewNames,\n mode: \"form\",\n status: formData.status || formData.tila || EObservationStatus.New,\n allowChangingProcessingMarkingPublicity: config.allowChangingProcessingMarkingPublicity\n }\n\n const formContextData: IFormContext = {\n apiToken: token,\n anonymousSession,\n lang,\n dirtyAfterPageLoad\n };\n /*\n const formSchema: IFormSchema = {\n schema: schema as any,\n uiSchema: uiSchema as any,\n rules,\n translations,\n defaultLanguage: lang\n };\n */\n return (\n {t(\"Tallenna\")} }\n />\n );\n};\n\nSchemaForm.defaultProps = {\n noHtml5Validate: true,\n liveValidate: false\n}\nexport default SchemaForm;\n","import React, { Fragment, useEffect, useMemo } from \"react\";\nimport { FormTypeName } from \"../formType/FormTypeName\";\nimport { Header, Message, Button, Segment } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\nimport SchemaForm from \"../SchemaForm\";\nimport { isSubmitErrored, isSubmitted, isSubmitting, isLoaded, isLoadErrored } from \"../../../../sg-core\";\nimport { TFunction } from \"i18next\";\nimport { useLoggedInUser } from \"../../auth/store/authSelectors\";\nimport { useHistory } from \"react-router-dom\";\nimport { useNewObservation } from \"../../store/selectors/observationSelectors\";\nimport { useFormDefinitionById, useFormTypeById } from \"../../store/selectors/formSelectors\";\nimport {\n createInitializeNewObservatioFormAction,\n createNewObservationFormDataUpdateAction,\n createRequestFetchCreateObservationAction,\n} from \"../../store/actions/observationActions\";\nimport { useDispatch } from \"react-redux\";\nimport { useUserCanViewNames } from \"../../store/selectors/appRoleSelector\";\n\nconst getTextProps = (t: TFunction) => ({\n headerText: t(\"Tee uusi havainto\"),\n saveButtonText: t(\"Tallenna\"),\n cancelButtonText: t(\"Peruuta\"),\n\n submitSuccessText: t(\"Tallennus onnistui\"),\n submitSuccessLongText: t(\"Havainto tallennettiin onnistuneesti ja odottaa käsittelijää.\"),\n submitErrorText: t(\"Tallennuksessa tapahtui virhe!\"),\n formLoadErrorText: t(\"Lomakkeen haku epäonnistui!\"),\n});\n\ninterface IObservationForm {\n formTypeGuid: string | number;\n userRequired?: boolean;\n canCancel?: boolean;\n onSuccess: () => void;\n\n initialFormData?: any;\n onChange?: (values: any) => void;\n}\n\nconst ObservationForm: React.FC = ({\n formTypeGuid,\n userRequired = true,\n canCancel = true,\n onSuccess,\n\n initialFormData,\n onChange,\n}) => {\n const dispatch = useDispatch();\n\n const history = useHistory();\n const goBack = () => history.goBack();\n\n const user = useLoggedInUser();\n\n const { t } = useTranslation();\n const texts = getTextProps(t);\n\n const newObservation = useNewObservation();\n const formType = useFormTypeById(typeof formTypeGuid === \"string\" ? (formTypeGuid as any) : undefined);\n const formDefinition = useFormDefinitionById(formType?.formDefinition);\n const canViewNames = useUserCanViewNames(formType?.category);\n\n const autofillInformer = useMemo(() => {\n if (isLoaded(formDefinition)) {\n const skipInformerAutofillForRoles =\n formDefinition.data.schema.havainnot?.skipInformerAutofillForRoles;\n const skipAutofillForRoles =\n skipInformerAutofillForRoles && Array.isArray(skipInformerAutofillForRoles)\n ? skipInformerAutofillForRoles\n : skipInformerAutofillForRoles\n ? [skipInformerAutofillForRoles]\n : [];\n const hasOneOfPreventingRoles = user?.roles.find((role) =>\n skipAutofillForRoles.includes(role.reference),\n );\n return !hasOneOfPreventingRoles;\n }\n return true;\n }, [formDefinition, user]);\n\n const informer = autofillInformer ? user?.fullname || t(\"Anonyymi\") : undefined;\n\n const formData = initialFormData || {\n ...(newObservation ? newObservation.data.formData : {}),\n ilmottaja: informer,\n };\n\n const { observationPublicByDefault } = useApplicationConfiguration();\n\n // Initialize form\n useEffect(() => {\n if (formType && (userRequired === false || user)) {\n dispatch(createInitializeNewObservatioFormAction(formType, user, observationPublicByDefault));\n }\n }, [dispatch, formType, userRequired, user, observationPublicByDefault]);\n\n const handleSubmit = (values: { [key: string]: any }) => {\n dispatch(createNewObservationFormDataUpdateAction(values));\n dispatch(createRequestFetchCreateObservationAction());\n };\n\n // Render\n\n const formSubmitted = newObservation && isSubmitted(newObservation);\n useEffect(() => {\n if (formSubmitted) {\n onSuccess();\n }\n }, [formSubmitted]);\n\n if (formSubmitted) {\n return ;\n }\n if (isLoadErrored(formDefinition)) {\n return ;\n }\n\n if (formType && !formType?.formDefinition) {\n return ;\n }\n\n if (!isLoaded(formDefinition)) {\n return ;\n }\n\n // const informer = autofillInformer ? user?.fullname || t(\"Anonyymi\") : undefined;\n // const formData = { ...(newObservation ? newObservation.data.formData : {}), ilmottaja: informer };\n\n return (\n \n
\n {texts.headerText}{\" \"}\n
\n
{formType?.id && }
\n
\n\n {newObservation && isSubmitErrored(newObservation) ? (\n {texts.submitErrorText}\n ) : null}\n {isLoaded(formDefinition) ? (\n \n {newObservation && isSubmitErrored(newObservation) ? (\n {texts.submitErrorText}\n ) : null}\n
\n \n {canCancel && (\n \n )}\n \n ) : isLoadErrored(formDefinition) ? (\n \n ) : (\n \n )}\n\n {!isLoaded(formDefinition) ? (\n <>\n \n {canCancel && }\n \n ) : null}\n
\n );\n};\n\nexport default ObservationForm;\n","import React, { useEffect, useLayoutEffect, useMemo, useState } from \"react\";\nimport { Message } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams, Redirect, useLocation, } from \"react-router-dom\";\n\n\nimport ObservationForm from \"../components/observation/ObservationForm\";\nimport { makeAppMessage } from \"../store/reducers/messageReducer\";\nimport { createShowNewMessageAction } from \"../store/actions/messageActions\";\nimport { useDispatch } from \"react-redux\";\nimport { PageTemplate } from \"../components/PageTemplate/PageTemplate\";\nimport { getRouteHrefById } from \"../../../routing\";\nimport { HavainnotRouteId } from \"../../routes\";\nimport * as StorageKey from \"../constants/StorageKeys\";\nimport { getState, setState, useLocalStorage } from \"@/sg-core\";\n\n\n\ninterface INewObservationPage { };\n\nconst NewObservationPage: React.FC = (props) => {\n const { t, i18n } = useTranslation();\n\n const params = useParams<{ formType: string }>();\n const { state } = useLocation<{ clearStorage?: boolean }>();\n\n const formTypeGuid = params.formType;\n\n const dispatch = useDispatch();\n\n const [submitted, setSubmitted] = useState(false)\n\n\n const initialFormData = useMemo(() => getState(StorageKey.NEW_OBSERVATION_EDITS), [i18n.language])\n const setStoredData = (values: any) => {\n setState(StorageKey.NEW_OBSERVATION_EDITS, values)\n };\n\n useLayoutEffect(() => {\n if (state?.clearStorage) {\n localStorage.removeItem(StorageKey.NEW_OBSERVATION_EDITS);\n window.history.replaceState({}, document.title)\n }\n }, []);\n\n if (submitted) {\n const appMessage = makeAppMessage({\n header: t(\"Tallennus onnistui\"),\n content: t(\"Havainto tallennettiin onnistuneesti ja odottaa käsittelijää.\"),\n success: true\n });\n dispatch(createShowNewMessageAction(appMessage))\n\n return \n };\n\n if (!formTypeGuid) {\n return ;\n }\n\n return (\n \n setSubmitted(true)}\n onChange={setStoredData}\n initialFormData={state?.clearStorage ? undefined : initialFormData}\n />\n \n );\n};\n\nconst MemoizedNewObservationPage = React.memo(NewObservationPage);\n\nconst NewObservationPageContainer: React.FC = () => {\n return ;\n};\n\nexport default NewObservationPageContainer;\n","import React, { Fragment } from \"react\";\n\nimport IObservation from \"../../interfaces/IObservation\";\nimport { PersonName } from \"../person/PersonName\";\nimport { FormTypeName } from \"../formType/FormTypeName\";\nimport { Header, Label, Icon, Divider } from \"semantic-ui-react\";\nimport { StatusColors } from \"../../constants/statusColors\";\nimport { useTranslatedStatus } from \"../../constants/statusTextKey\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { formatIdLabel, getReadableTimestamp } from \"../../utils/havainnot.helper\";\nimport { useApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\nimport { TFunction } from \"i18next\";\n\nconst getTextProps = (t: TFunction) => ({\n public: t(\"Julkinen\"),\n notPublic: t(\"Ei julkinen\"),\n createdAt: t(\"Luotu\"),\n informer: t(\"Ilmoittaja\"),\n currentHandler: t(\"Nykyinen käsittelijä\"),\n});\n/**\n * Dsiplays general info about the observation\n * - these fields are same depending on category or formType.\n * - use SchemaDisplay component to show data stored inside formData.\n */\n\ninterface IObservationDetail {\n observation: IObservation;\n hiddenDivider?: boolean;\n onlyStaticData?: boolean;\n showNameDetail: boolean;\n}\n\nconst ObservationDetail: React.FC = ({\n observation,\n showNameDetail,\n onlyStaticData = false,\n hiddenDivider = false,\n}) => {\n const {\n components: { LocationName },\n showUniqueObservationId,\n } = useApplicationConfiguration();\n const texts = getTextProps(useTranslation().t);\n const labelColor = StatusColors[observation.status];\n const statusLabelText = useTranslatedStatus(observation.status);\n\n return (\n <>\n
\n {\" \"}\n {observation.title}{\" \"}\n
\n\n \n\n
}>\n \n \n )\n}","import { useLayoutEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport { TLoadable, isLoaded, createLoaded, createUnloaded } from \"../../../../sg-core\";\nimport { selectHavainnotState } from \"../selectors\";\nimport { IRole } from \"../../interfaces/IHavainnotUser\";\nimport { useApplyParameters } from \"../../data/context/useApplyParameters\";\n\n// SELECTORS\nconst selectContextState = createSelector(selectHavainnotState, (workPermit) => workPermit.context);\n\nexport const selectInitialContextLoaded = createSelector(\n selectContextState,\n (state) => state.initialContextLoaded,\n);\n\n// HOOKS\nexport const useInitialContextLoaded = (): TLoadable =>\n useSelector(selectInitialContextLoaded) as any;\n\nexport const selectAppRolesById = createSelector(selectContextState, (state) => state.appRoles);\n\nexport const selectAppRoleList = createSelector(selectContextState, (state) => state.appRoleList);\n\nexport const selectAppConfgis = createSelector(selectContextState, (state) => state.appConfigs);\n\nconst selectAppRoles = createSelector(selectAppRoleList, selectAppRolesById, (listLoader, byId) => {\n if (isLoaded(listLoader)) {\n return createLoaded(listLoader.data.map((id) => byId[id]));\n }\n return createUnloaded();\n});\n\nexport const useAppRoles = (): TLoadable => useSelector(selectAppRoles);\n\nexport const useLoadAppParameters = () => {\n const configParams = useSelector(selectAppConfgis);\n const { apllyParameters } = useApplyParameters();\n const [loaded, setLoaded] = useState(false);\n\n const paramsData = isLoaded(configParams) && configParams.data;\n\n useLayoutEffect(() => {\n if (!loaded && paramsData) {\n setLoaded(true);\n apllyParameters(paramsData);\n }\n }, [paramsData]);\n};\n","\nimport { useModifyApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\nimport _pickBy from \"lodash/pickBy\";\nimport { IAppConfigurations } from \"../../interfaces/IAppConfigurations\";\nimport { ApplicationConfiguration } from \"../../configuration/ApplicationConfiguration\";\nimport { createLoaded } from \"../../../../sg-core\";\n\nexport type IUseApplyParameters = () => {\n apllyParameters: (parameters: IAppConfigurations) => void;\n}\n\nexport const useApplyParameters: IUseApplyParameters = () => {\n const { setConfig } = useModifyApplicationConfiguration();\n\n const apllyParameters = (parameters: IAppConfigurations) => {\n\n let data: Partial = {\n activated: createLoaded(parameters.aktivoitu),\n\n companyName: parameters.yritys.nimi,\n companyAddress: parameters.yritys.katuosoite,\n\n\n emailSupport: parameters.sahkopostit.aktivoitu,\n smsSupport: parameters.tekstiviestit.aktivoitu,\n mapSupport: parameters.kartat.aktivoitu,\n\n showDeveloperSettings: parameters.kehitysvalikko,\n showRawApplicationErrors: parameters.virheviestit,\n testenviromentBackground: parameters.testi.taustakuva,\n\n archiveLimit: parameters.havainnot.arkistointi_suodatin ? \" \" : undefined,\n observationPublicByDefault: parameters.havainnot.oletukset.julkisuus,\n\n hideEmptyFieldsFromObservationDetails: parameters.esitys.kentat.tyhjat.piilotus,\n allowEditingObservation: parameters.havainnot.muokkaus.sallittu,\n\n allowChangingProcessingMarkingPublicity: parameters.kasittelymerkinnat.julkisuus.valittavissa,\n processingMarkingPublicityDefaultValue: parameters.kasittelymerkinnat.oletukset.julkisuus,\n\n showLanguageSelect: parameters.kielivalikko,\n languages: parameters.kielet,\n\n showUniqueObservationId: parameters.havainnot.nayta_yksiloiva_tunniste\n\n // gateDirectUrl: parameters.gateDirectUrl,\n // showTenantSwitch: parameters.showTenantSwitch,\n // applicationMenuHref: parameters.applicationMenuHref\n\n };\n\n const cleanData = _pickBy(data, v => v !== undefined)\n setConfig(cleanData);\n }\n\n return ({\n apllyParameters\n })\n\n};\n","import fetch from \"unfetch\";\nimport { TResult, makeFailure, makeSuccess } from \"../utils/Result\";\nimport { IEndpoint } from \"./EndpointService\";\n\nexport enum GeneratedAction {\n GetList,\n GetOne,\n Create,\n Update,\n Delete\n}\n\nexport interface ISgApiService {\n sendHttpRequest: (endpoint: IEndpoint, type: string, body: any, headers: any) => Promise>;\n sendHttpUrlRequest: (url: string, method: string, body: any, headers?: any, noToken?: boolean) => Promise>;\n sendAction: (endpoint: IEndpoint, action: string, body: any, noToken?: boolean) => Promise>;\n sendActionGenerated: (endpoint: IEndpoint, entityName: string, action: GeneratedAction, body?: object) => Promise>;\n token: string | null;\n setToken: (token: string | number) => void;\n}\n\nexport const getSgApiService = (token?: string): ISgApiService => {\n\n let TOKEN = token;\n\n const getToken = () => {\n if (!TOKEN) {\n throw new Error(\"Cannot send a request with token if token is not set.\");\n }\n return `NAS SID ${TOKEN}`;\n };\n\n const sendHttpRequest = async (endpoint: IEndpoint, method: string, body: any, headers: any) => {\n try {\n const response = await fetch(endpoint.path, {\n method,\n body: JSON.stringify(body),\n headers,\n });\n\n if (!response.ok) {\n return makeFailure(new Error(response.statusText));\n }\n\n const json = await response.json();\n if (json.success === false) {\n const error = new Error((json as any).error.message);\n //@ts-ignore\n error.data = json;\n return makeFailure(error);\n }\n return makeSuccess(json);\n } catch (e) {\n return makeFailure(e as Error);\n }\n };\n\n const sendHttpUrlRequest = async(url: string, method: string, body: any = {}, headers: any = {}, noToken?: boolean): Promise> => {\n try {\n const hdrs = { ...headers };\n if (!noToken) {\n hdrs.Authorization = getToken();\n }\n const response = await fetch(url, {\n method,\n body: body ? JSON.stringify(body) : undefined,\n headers: hdrs,\n });\n\n if (response.ok) {\n const data: T = await response.json();\n if ((data as any).error) {\n const error = new Error((data as any).error.message);\n //@ts-ignore\n error.data = data;\n return makeFailure(error);\n }\n\n return makeSuccess(data);\n }\n return makeFailure(new Error(\"Unknown request error\"));\n } catch (e) {\n return makeFailure(e as Error);\n }\n };\n\n const sendAction = async (endpoint: IEndpoint, action: string, payload: P, noToken: boolean = false) => {\n const body = {\n ...payload,\n action,\n };\n\n const headers: { [key: string]: string } = {};\n if (!noToken) {\n headers.Authorization = getToken();\n }\n\n return await sendHttpRequest(endpoint, \"POST\", body, headers);\n };\n\n const getGeneratedAction = (entityName: string, action: GeneratedAction): string => {\n switch (action) {\n case GeneratedAction.Create:\n return `lisaa_${entityName}`;\n case GeneratedAction.Delete:\n return `poista_${entityName}`;\n case GeneratedAction.GetList:\n return `hae_${entityName}_lista`;\n case GeneratedAction.GetOne:\n return `hae_${entityName}`;\n case GeneratedAction.Update:\n return `tallenna_${entityName}`;\n }\n }\n\n /**\n * Sends a predefined action to a generated API interface\n * @param entityName Name of the entity to find\n * @param action Action type we want to perform\n * @param body Request body\n * @param noToken Anonymous or not?\n */\n const sendActionGenerated = async(endpoint: IEndpoint, entityName: string, action: GeneratedAction, body: any = {}, noToken: boolean = false): Promise> => {\n const actionName = getGeneratedAction(entityName, action);\n\n const response = await sendAction(endpoint, actionName, body, noToken);\n\n if (response.isSuccess) {\n const resultObj = response.value;\n\n // In GATE generated APIs, the result is either in \"results\" -property (if it's a list)\n // or [entityName] -object.\n // If it's neither, we give up.\n const result = resultObj.results ?? resultObj[entityName];\n\n if ((typeof result) === \"undefined\") {\n return makeFailure(new Error(`Invalid response: expected '${entityName}' or 'results' property`));\n }\n\n return makeSuccess({\n data: result === \"\" ? [] : result,\n response: response.value,\n });\n }\n return response;\n };\n\n const setToken = (token: string | number) => {\n TOKEN = `${token}`;\n };\n\n return {\n sendHttpRequest,\n sendHttpUrlRequest,\n sendAction,\n sendActionGenerated,\n token: TOKEN || null,\n setToken\n };\n};\n","enum LoadStatus {\n Unloaded,\n Loading,\n Loaded,\n LoadErrored,\n ReLoading,\n}\n\nexport interface ILoadableUnloaded {\n readonly $: LoadStatus.Unloaded;\n}\n\nexport interface ILoadableLoading {\n readonly $: LoadStatus.Loading;\n}\n\nexport interface ILoadableLoaded {\n readonly $: LoadStatus.Loaded;\n readonly data: T;\n}\n\nexport interface ILoadableErrored {\n readonly $: LoadStatus.LoadErrored;\n readonly error: Error;\n}\n\nexport interface ILoadableReloading {\n readonly $: LoadStatus.ReLoading;\n readonly data: T;\n}\n\nexport type TLoadable\n = ILoadableUnloaded\n | ILoadableLoading\n | ILoadableLoaded\n | ILoadableErrored\n | ILoadableReloading;\n\n// CHECK TYPE\n\nexport function isUnloaded(d: TLoadable): d is ILoadableUnloaded {\n return d.$ === LoadStatus.Unloaded;\n}\n\nexport function isLoading(d: TLoadable): d is ILoadableLoading {\n return d.$ === LoadStatus.Loading;\n}\n\nexport function isLoaded(d: TLoadable): d is ILoadableLoaded {\n return d.$ === LoadStatus.Loaded || d.$ === LoadStatus.ReLoading;\n}\n\nexport function isLoadErrored(d: TLoadable): d is ILoadableErrored {\n return d.$ === LoadStatus.LoadErrored;\n}\n\nexport function isReloading(d: TLoadable): d is ILoadableReloading {\n return d.$ === LoadStatus.ReLoading;\n}\n\n// CREATE\n\nexport const createUnloaded = (): ILoadableUnloaded => ({ $: LoadStatus.Unloaded });\n\nexport const createLoading = (): ILoadableLoading => ({ $: LoadStatus.Loading });\n\nexport const createLoaded = (data: T): ILoadableLoaded => ({ $: LoadStatus.Loaded, data });\n\nexport const createLoadErrored = (error: Error): ILoadableErrored => ({ $: LoadStatus.LoadErrored, error });\n\nexport const createReloading = (data: T): ILoadableReloading => ({ $: LoadStatus.ReLoading, data });\n","import React, { ErrorInfo } from \"react\";\n\ninterface IErrorState {\n hasError: boolean;\n error: Error | null;\n}\n\ninterface IErrorProps {\n onError?: (error: Error) => void;\n fallback: JSX.Element;\n}\n\nexport class ErrorBoundary extends React.Component {\n constructor(props: IErrorProps) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n };\n }\n\n static getDerivedStateFromError(error: Error): IErrorState {\n return {\n hasError: true,\n error: error,\n };\n }\n\n componentDidCatch(error: Error, logInfo: ErrorInfo) {\n console.error(logInfo);\n console.error(error);\n if (error && this.props.onError) {\n this.props.onError(error);\n }\n }\n\n render() {\n\n if (this.state.hasError) {\n return this.props.fallback;\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;","import React, { ErrorInfo, Fragment } from \"react\";\nimport { withTranslation, WithTranslation } from \"react-i18next\";\nimport { Message } from \"semantic-ui-react\";\n\ninterface IErrorProps extends WithTranslation {\n rawErrorMessage?: boolean;\n}\n\n\ninterface IErrorState {\n hasError: boolean;\n error: Error | null;\n errorMessageVisible: boolean;\n}\n\nclass RouteErrorBoundaryComponent extends React.Component {\n constructor(props: IErrorProps) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n errorMessageVisible: false\n }\n }\n\n static getDerivedStateFromError(error: Error): IErrorState {\n return {\n hasError: true,\n error: error,\n errorMessageVisible: false\n }\n }\n\n componentDidCatch(error: Error, logInfo: ErrorInfo) {\n console.error(logInfo);\n console.error(error);\n }\n\n\n toggleErrorMessage = () => {\n this.setState((prev) => ({\n errorMessageVisible: !prev.errorMessageVisible\n }))\n }\n\n render() {\n const { t, rawErrorMessage = false } = this.props;\n\n if (this.state.hasError) {\n return (\n \n {t(\"Sovelluksessa tapahtui odottamaton virhe!\")}\n

{t(\"Yritä päivittää sivu, tai poistaa sivuston selaustiedot\")}

\n\n {rawErrorMessage ? (\n \n

Näytä virheviesti

\n {this.state.errorMessageVisible ?\n
 {this.state.error?.stack?.toString()} 
\n : null}\n
\n ) : null}\n\n
\n );\n }\n\n return this.props.children;\n }\n}\n\nexport const RouteErrorBoundary = withTranslation()(RouteErrorBoundaryComponent)\n\nexport default withTranslation()(RouteErrorBoundary);","import { useMemo } from \"react\";\n\nexport const useConst = (fn: () => T) => {\n return useMemo(fn, []); //eslint-disable-line\n};\n","import { useState } from \"react\";\nimport { useConst } from \"./useConst\";\n\ntype UseBoolResult = [\n boolean,\n () => void,\n () => void,\n];\n\nexport const useBool = (initial: boolean = false): UseBoolResult => {\n const [value, setValue] = useState(initial);\n\n const setTrue = useConst(() => () => setValue(true));\n const setFalse = useConst(() => () => setValue(false));\n\n return [\n value,\n setTrue,\n setFalse,\n ];\n};\n","import { SetStateAction, useCallback, useState } from \"react\";\n\ntype IUseLocalStorageData = [\n T,\n (value: SetStateAction) => void\n];\n\n\nexport const getState = (key: string): T | undefined => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : undefined;\n } catch (error) {\n // console.info(error);\n window.localStorage.removeItem(key);\n return undefined;\n }\n};\n\n\nexport const setState = (key: string, setFn: SetStateAction) => {\n if (!setFn) { console.warn(\"[useLocalStorage.setValue]: no value provided\"); }\n try {\n const state = getState(key);\n const valueToStore = setFn instanceof Function ? setFn(state) : setFn;\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n // console.info(error);\n }\n}\n\n\n\nexport const useLocalStorage = (key: string, initialValue: T): IUseLocalStorageData => {\n\n const [storedValue, setStoredValue] = useState(getState(key) ?? initialValue);\n\n const setValue = useCallback((value: SetStateAction) => {\n if (!value) { console.warn(\"[useLocalStorage.setValue]: no value provided\"); }\n try {\n\n setStoredValue((prev) => {\n // Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(prev) : value;\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n\n return valueToStore;\n });\n\n } catch (error) {\n // console.info(error);\n }\n }, [key]);\n\n return [storedValue, setValue];\n};","import { useState, useMemo } from \"react\";\n\ninterface IUseLoadingData {\n loading: boolean;\n loadError?: TError;\n startLoading: () => void;\n loadSuccess: () => void;\n loadErrored: (error: TError) => void;\n}\n\nexport type UseLoadingDataHook = () => IUseLoadingData;\n\nexport const useLoading = () => {\n const [loading, setLoading] = useState(false);\n const [loadError, setLoadError] = useState();\n\n return useMemo((): IUseLoadingData => {\n\n const startLoading = () => {\n setLoading(true);\n setLoadError(undefined);\n };\n\n const loadSuccess = () => {\n setLoading(false);\n setLoadError(undefined);\n };\n\n const loadErrored = (error: TError) => {\n setLoading(false);\n setLoadError(error);\n };\n\n return ({\n loading,\n loadError,\n startLoading,\n loadErrored,\n loadSuccess,\n });\n }, [loading, loadError]);\n};\n","import { useEffect } from \"react\";\n\n\n\n\n\n\nexport const useOnClickOutside = (ref: any, handler: (event: MouseEvent | TouchEvent) => void) => {\n useEffect(\n () => {\n const listener = (event: MouseEvent | TouchEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n },\n // Add ref and handler to effect dependencies\n // It's worth noting that because passed in handler is a new ...\n // ... function on every render that will cause this effect ...\n // ... callback/cleanup to run every render. It's not a big deal ...\n // ... but to optimize you can wrap handler in useCallback before ...\n // ... passing it into this hook.\n [ref, handler]\n );\n}","\n\nimport { useRef, useEffect } from \"react\";\n\nexport const useIsMount = () => {\n const isMountRef = useRef(true);\n\n useEffect(() => {\n isMountRef.current = false;\n }, []);\n\n return isMountRef.current;\n};","\n\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useLoading } from \"../hooks\";\nimport { makeFailure, makeSuccess, TResult } from \"../utils/Result\";\n\ntype IRenderProps = {\n dataUrl?: string\n failed: boolean;\n loading: boolean;\n};\n\ninterface RenderPdfDataProps {\n url?: string;\n render: (props: IRenderProps) => any;\n};\n\nexport const RenderPdfData: React.FC = ({ url, render }) => {\n const {\n loading,\n loadError,\n startLoading,\n loadSuccess,\n loadErrored,\n } = useLoading();\n\n const [dataUrl, setDataUrl] = useState>();\n\n\n useEffect(() => {\n const loadData = async (url: string) => {\n try {\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n xhr.onload = function (e) {\n if (this.status == 200) {// eslint-disable-line\n var blob = new Blob([this.response], { type: \"application/pdf\" });\n const dataUrl = window.URL.createObjectURL(blob);\n setDataUrl(makeSuccess(dataUrl));\n loadSuccess()\n }\n };\n xhr.onerror = () => {\n const error = new Error(\"Request failed\")\n setDataUrl(makeFailure(error as Error));\n loadErrored(error.message)\n }\n xhr.send();\n\n\n } catch (error) {\n // console.info(error);\n setDataUrl(makeFailure(error as Error));\n loadErrored((error as Error).message)\n };\n }\n\n if (!dataUrl && !loading && url) {\n startLoading()\n loadData(url);\n };\n }, [url]); // eslint-disable-line\n\n\n\n return (\n \n {render({\n loading,\n dataUrl: dataUrl?.isSuccess ? dataUrl.value : undefined,\n failed: loadError ? true : (dataUrl && dataUrl.isFailure) ? true : false\n })}\n \n )\n};\n\n","\nexport interface IUnsubmitted {\n readonly $: \"unsubmitted\";\n readonly data: T;\n}\n\nexport interface ISubmitting {\n readonly $: \"submitting\";\n readonly data: T;\n}\n\nexport interface ISubmitted {\n readonly $: \"submitted\";\n readonly data: T;\n readonly response?: TResponse;\n}\n\nexport interface ISubmitErrored {\n readonly $: \"submit-errored\";\n readonly data: T;\n readonly error: Error;\n}\n\nexport type TSubmittable\n = IUnsubmitted\n | ISubmitting\n | ISubmitted\n | ISubmitErrored;\n\n// CHECK TYPE\n\nexport function isUnsubmitted(d: TSubmittable): d is IUnsubmitted {\n return d.$ === \"unsubmitted\";\n}\n\nexport function isSubmitting(d: TSubmittable): d is ISubmitting {\n return d.$ === \"submitting\";\n}\n\nexport function isSubmitted(d: TSubmittable): d is ISubmitted {\n return d.$ === \"submitted\";\n}\n\nexport function isSubmitErrored(d: TSubmittable): d is ISubmitErrored {\n return d.$ === \"submit-errored\";\n}\n\n// CREATE\n\nexport function createUnsubmitted(data: T): IUnsubmitted {\n return { $: \"unsubmitted\", data };\n}\n\nexport function createSubmitting(data: T): ISubmitting {\n return { $: \"submitting\", data };\n}\n\nexport function createSubmitted(data: T, response?: TResponse): ISubmitted {\n return { $: \"submitted\", data, response };\n}\n\nexport function createSubmitErrored(data: T, error: Error): ISubmitErrored {\n return { $: \"submit-errored\", data, error };\n}\n","import { gateBooleanToBoolean, gateNonstandardDateToDate } from \"../utils/GateSupport\"\n\n\nexport type IApiDBRecord = {\n created: Date | null\n deleted: boolean,\n modified: Date | null\n}\n\n\nexport type IApiDBRecordDTO = {\n created: string\n deleted: \"Y\" | \"N\",\n modified: string\n}\n\n\n\nexport const ApiDBRecordMapper = {\n apiToDomain: (api: IApiDBRecordDTO): IApiDBRecord => {\n return {\n created: api.created ? gateNonstandardDateToDate(api.created) : null,\n deleted: gateBooleanToBoolean(api.deleted),\n modified: api.created ? gateNonstandardDateToDate(api.created) : null\n }\n }\n}\n","\n// Unique symbol for ensuring endpoint values. This prevents\n// invalid endpoints being manually created in other places in the\n// code.\n// THIS SHOULD NOT BE EXPORTED\nconst endpointSymbol = Symbol(\"endpoint\");\n\nexport interface IEndpoint {\n [endpointSymbol]: true;\n readonly path: string;\n}\n\nexport const createEndpointMaker = (baseUrl: string) => {\n\n if (!baseUrl) {\n throw new Error(`Cannot create endpoint maker without a valid base url. Given url was '${baseUrl}'.`);\n }\n\n // Remove trailing slash\n const baseUrlTrimmed = baseUrl[baseUrl.length - 1] === \"/\"\n ? baseUrl.substr(0, baseUrl.length - 1)\n : baseUrl;\n \n // Paths will be later joined together with slashes, so we remove them first with this function\n const removeSlashes = (str: string): string => {\n const startWithSlash = str[0] === \"/\";\n const endsWithSlash = str.length > 0 && str[str.length - 1] === \"/\";\n\n return str.slice(\n startWithSlash ? 1 : 0,\n endsWithSlash ? str.length - 1 : str.length,\n );\n };\n\n return (path: string[]): IEndpoint => ({\n [endpointSymbol]: true,\n path: `${baseUrlTrimmed}/${path.map(removeSlashes).join(\"/\")}`,\n });\n};\n","\nimport { useLoggedInUser as useCommonLoggedInUser } from \"../../../../@common/auth/hooks/useLoggedInUser\"\n\nexport const useLoggedInUser = useCommonLoggedInUser","import { useMemo } from \"react\";\nimport { AuditoinnitCacheKeys } from \"../cacheKeys\";\nimport * as Endpoint from \"../../../endpoints\";\nimport { getSgApiService } from \"../../../sg-core/services/ApiService2\";\nimport { useAuthContext } from \"../../auth/AuthenticationProvider\";\nimport { useSWROffline } from \"../../../sg-core/swr/useSWROffline\";\nimport { getObservationService, IInitialContextData } from \"../../services/observationService\";\n\nexport type IUseObservationContextHook = () => {\n data: IInitialContextData;\n fetching: boolean;\n}\n\nconst emptyContext: IInitialContextData = {\n formTypes: [],\n categories: [],\n categoryPermissions: [],\n appRoles: [],\n};\n\nexport const useObservationContext: IUseObservationContextHook = () => {\n const { token, lang, anonymousSession } = useAuthContext();\n\n const fetcher = async (): Promise => {\n const service = getObservationService(getSgApiService(token), Endpoint.havainnot);\n\n const contextData = await service.getContextData()\n\n if (contextData.isFailure) {\n throw contextData.error;\n }\n\n return contextData.value;\n };\n\n const { data, isValidating } = useSWROffline(\n AuditoinnitCacheKeys(token, lang).ObservationContext,\n fetcher,\n {\n suspense: true,\n revalidateOnFocus: false,\n revalidateOnMount: false,\n revalidateOnReconnect: false,\n\n });\n\n const rawData = data ?? emptyContext;\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating,\n }), [rawData, isValidating]);\n};\n","\nexport interface IMapLocation {\n center: [number, number]\n mapId?: number;\n zoom: number\n};\n\nexport const parseMapLocation = (value: string): IMapLocation | undefined => {\n try {\n let almostJson = value\n .replace(/\\)\\(/g, ',\"')\n .replace(/=/g, '\":')\n .replace(/\\(/g, '{\"')\n .replace(/\\)/g, \"}\")\n // add double quotes tilannekuva id as string\n .replace(/\"tk\":/, '\"tk\":\"')\n .replace(/,\"x\"/, '\",\"x\"')\n const { x, y, tk, z } = JSON.parse(almostJson);\n return {\n mapId: tk,\n center: [x, y],\n zoom: z\n }\n } catch (err) {\n console.error(\"parseMapLocation: value is not in valid format.\");\n }\n};\n\nexport const encodeMapLocation = (data: IMapLocation) => {\n let location = [];\n\n if (data.mapId) {\n location.push(`(tk=${data.mapId})`);\n };\n\n location.push(`(x=${data.center[0]})`);\n location.push(`(y=${data.center[1]})`);\n location.push(`(z=${data.zoom})`);\n\n return location.join(\"\");\n};\n\n","import { useMemo } from \"react\";\nimport { IAuditNote, TEditableAuditNote } from \"../../interfaces/IAuditNote\";\nimport { useAuditNoteContext } from \"../../context/AuditNoteContext\";\nimport { NoteID } from \"../../utils/kierrokset.helper\";\n\nexport type IUseEditableNotesHook = (fieldKey?: string) => {\n noteList: TEditableAuditNote[];\n addNote: (note: TEditableAuditNote) => void;\n updateNote: (id: number, updates: Partial) => void;\n removeNote: (id: number) => void;\n\n};\n\nexport const useEditableNotes: IUseEditableNotesHook = (fieldKey) => {\n const { notes, setNote, addNote, removeNote } = useAuditNoteContext();\n const noteIds = Object.keys(notes).filter((id) => !fieldKey || notes[id].key === fieldKey);\n\n const add = (note: TEditableAuditNote) => {\n addNote(note);\n };\n\n const remove = (id: TEditableAuditNote[\"id\"]) => {\n removeNote(id);\n };\n\n const update = (id: number, updates: Partial) => {\n const noteData = notes[String(id)];\n if (!noteData) {\n throw Error(\"Failed to find note by this id \" + id);\n };\n\n setNote({ ...noteData as any, ...updates });\n };\n\n const noteList = useMemo(() => noteIds.map((id) => notes[id]), [fieldKey, noteIds, notes])\n\n return {\n noteList,\n updateNote: update,\n addNote: add,\n removeNote: remove\n }\n}","import React, { createContext, useContext } from \"react\";\nimport { IAuditMetaFormData } from \"../interfaces/IAudit\";\n\ninterface IAuditMetaContext {\n metaData: IAuditMetaFormData;\n}\n\nconst defaultValue: IAuditMetaContext = {\n metaData: {},\n};\n\nconst context = createContext(defaultValue);\nconst { Provider } = context;\n\nexport const useAuditMetaContext = () => useContext(context);\n\n// Provider\nexport const AuditMetaProvider: React.FC<{ metaData: IAuditMetaFormData }> = ({ children, metaData }) => {\n\n return (\n \n {children}\n \n );\n};\n","import { IObservationResult, ICreateObservationBody } from \"../services/observationService\";\nimport IObservation, { INewObservation, isObservationStatus, EObservationStatus } from \"../interfaces/IObservation\";\nimport { gateBooleanToBoolean, booleanToGateBoolean } from \"../../sg-core/utils/GateSupport\";\nimport { base64ToJson, jsonToBase64 } from \"../../sg-core/utils/json.helpers\";\n\n\nconst ObservationMapper = {\n apiToDomain: (api: IObservationResult[\"havainto\"]): IObservation => {\n const { formSchema, ...decodedData } = api.lomakedata ? base64ToJson(api.lomakedata) : { formSchema: {} }\n return {\n id: api.id,\n guid: api.guid,\n name: api.otsikko || (api as any).nimi,\n creator: api.kirjaaja,\n formType: api.lomake,\n target: api.alue as any,\n work: api.tyo,\n status: isObservationStatus(api.tila) ? api.tila : EObservationStatus.Unknown,\n\n // use of decodedData here only for testing before API provides them otuside of formData.\n title: api.otsikko || decodedData.otsikko, //|| api.nimi,\n description: api.kuvaus || decodedData.kuvaus,\n image: api.kuva || decodedData.kuva,\n mapLocation: api.karttasijainti,\n\n formData: {\n otsikko: api.otsikko,\n kuvaus: api.kuvaus,\n on_julkinen: api.on_julkinen,\n ...decodedData,\n sijainti: api.alue,\n kohde: api.alue,\n karttasijainti: { marker: api.karttasijainti },\n kuva: api.kuva ? [{ id: api.kuva, name: \"\" }] : [],\n tila: api.tila, // !important that status is not provided from formData\n },\n formSchema,\n is_public: gateBooleanToBoolean(api.on_julkinen),\n isEditor: api.on_kasittelija ? gateBooleanToBoolean(api.on_kasittelija) : false,\n created_at: api.kirjattu,\n editor: api.kasittelija,\n searchText: api.lomakedatahaku\n }\n },\n\n domainToApi: (domain: IObservation): IObservationResult[\"havainto\"] => {\n const { otsikko, kuvaus, kuva, sijainti, kohde, tila, on_julkinen, processMarkings, ...restOfFormData } = domain.formData;\n const kuvaId = kuva && kuva[0] ? kuva[0].id : domain.image || \"\";\n\n return {\n id: domain.id,\n guid: domain.guid,\n // nimi: domain.name,\n otsikko: otsikko || domain.title,\n kuvaus: kuvaus || domain.description,\n kuva: kuvaId || undefined,\n karttasijainti: domain.mapLocation || undefined,\n\n kirjaaja: domain.creator,\n lomake: domain.formType,\n tyo: domain.work || undefined,\n tila: tila || domain.status,\n kirjattu: domain.created_at,\n alue: sijainti || kohde || domain.target,\n on_julkinen: booleanToGateBoolean(domain.is_public),\n kasittelija: domain.editor || undefined,\n lomakedata: jsonToBase64({\n formSchema: domain.formSchema,\n ...restOfFormData,\n otsikko,\n kuvaus,\n kuva\n }),\n lomakedatahaku: jsonToBase64(domain.searchText as any)\n }\n },\n};\n\nexport default ObservationMapper\n\nexport const NewObservationMapper = {\n domainToApi: (domain: INewObservation): ICreateObservationBody[\"havainto\"] => {\n const kuvaId = domain.formData.kuva && domain.formData.kuva[0] ? domain.formData.kuva[0].id : \"\";\n const { sijainti, kohde, ...restOfFormData } = domain.formData;\n\n return {\n otsikko: domain.formData.otsikko || domain.name,\n kuvaus: domain.formData.kuvaus,\n kuva: kuvaId,\n lomake: domain.formType,\n tila: domain.status,\n kirjattu: domain.created_at,\n alue: sijainti || kohde,\n on_julkinen: domain.is_public ? \"Y\" : \"N\",\n lomakedata: jsonToBase64({ formSchema: domain.formSchema, ...restOfFormData }),\n karttasijainti: domain.formData.karttasijainti?.marker,\n lomakedatahaku: jsonToBase64(domain.searchText as any)\n }\n },\n};","import { IFormSchema } from \"../interfaces/IFormSchema\";\nimport IObservation from \"../interfaces/IObservation\";\nimport _uniq from \"lodash/uniq\";\nimport { IPerson } from \"../../sg-hpr/models/IPerson\";\nimport { observationToPersonIds } from \"./data.helpers\";\n\n\nexport interface TIdentifiersDTO {\n henkilot: string;\n kohteet: string;\n lomakkeet: string;\n};\n\n\nexport interface TIdentifiers {\n henkilot: Array;\n kohteet: Array;\n lomakkeet: Array;\n};\n\n\nexport const extractObservationIdentifiers = (formData: IObservation[\"formData\"], schema: IFormSchema): TIdentifiers => {\n const identifiers: TIdentifiers = {\n henkilot: [],\n kohteet: [],\n lomakkeet: []\n };\n\n let personIds = observationToPersonIds(formData, schema)\n identifiers.henkilot = personIds;\n\n\n const markings = formData.merkinnat;\n if (markings?.length) {\n let markingPersons: typeof personIds = [];\n markings.forEach((marking) => {\n if (marking.creator) {\n markingPersons = [...markingPersons, marking.creator]\n };\n if (marking.formData.vastaanottaja) {\n markingPersons = [...markingPersons, marking.formData.vastaanottaja]\n };\n });\n identifiers.henkilot = _uniq([...identifiers.henkilot, ...markingPersons]);\n };\n\n\n\n if (formData.kohde || formData.sijainti) {\n identifiers.kohteet = [(formData.kohde || formData.sijainti) as any];\n };\n\n return identifiers\n};\n\nexport const extractObservationIdentifiersDTO = (formData: IObservation[\"formData\"], formSchema: IFormSchema): TIdentifiersDTO | string => {\n const identifiers = extractObservationIdentifiers(formData, formSchema);\n\n if ((identifiers.henkilot.length + identifiers.kohteet.length + identifiers.lomakkeet.length) === 0) {\n return \"n/a\"\n };\n\n return {\n henkilot: identifiers.henkilot.join(\",\"),\n kohteet: identifiers.kohteet.join(\",\"),\n lomakkeet: identifiers.lomakkeet.join(\",\"),\n }\n}\n\n","import { TResult, makeSuccess } from \"../../sg-core/utils/Result\";\nimport { ISgApiService } from \"../../sg-core/services/ApiService2\";\n\nimport ObservationMapper, { NewObservationMapper } from \"../mappers/ObservationMapper\";\nimport IObservation, { INewObservation } from \"../interfaces/IObservation\";\nimport { IEndpoint } from \"../../sg-core/services/EndpointService\";\nimport { IAppRoleDTO, ICategoryPermission, IPermissionDTO } from \"../interfaces/ICategoryPermission\";\nimport { SemanticICONS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport IFormType from \"../interfaces/IFormType\";\nimport ICategory from \"../interfaces/ICategory\";\nimport { IRole } from \"../interfaces/IAuditoinnitUser\";\nimport IFormDefinition from \"../interfaces/IFormDefinition\";\nimport FormTypeMapper from \"../mappers/FormTypeMapper\";\nimport CategoryMapper from \"../mappers/CategoryMapper\";\nimport PermissionMapper from \"../mappers/PermissionMapper\";\nimport RoleMapper from \"../mappers/RoleMapper\";\nimport { IFormConfigResult } from \"./contextService\";\nimport FormDefinitionMapper from \"../mappers/FormDefinitionMapper\";\nimport { extractObservationIdentifiersDTO } from \"../utils/observation.helper\";\nimport { base64ToJson } from \"@sg-core/utils/json.helpers\";\nimport { extractFormDataIdentifiersDTO, TIdentifiersDTO } from \"../utils/id.helper\";\nimport _uniq from \"lodash/uniq\";\n\nexport interface IObservationService {\n createObservation(observation: INewObservation): Promise>;\n createObservations(observation: Array): Promise }>>;\n getObservation(observationGuid: string | number): Promise>;\n\n getContextData(): Promise>;\n getFormDefinition(formId: number): Promise>;\n getFormDefinitionByReference(referenceName: string): Promise>;\n\n}\n\nexport interface IInitialContextData {\n formTypes: IFormType[]\n categories: ICategory[]\n categoryPermissions: ICategoryPermission[];\n appRoles: IRole[];\n}\n\n\nexport interface IInitialContextResult {\n success: true;\n // action: \"hae_perustiedot\";\n lomakkeet: { id: number; guid: string; nimi: string; kategoria: number; lomakemaaritys: number; tyonkulku: number }[];\n kategoriat: { id: number; nimi: string; ikoni?: SemanticICONS }[];\n oikeustasot?: IPermissionDTO[];\n roolit?: IAppRoleDTO[];\n}\n\nexport interface IObservationResult {\n success: true;\n action: \"hae_havainto\";\n havainto: {\n id: number;\n guid: string;\n // nimi: string; \n otsikko: string;\n kuvaus: string;\n kuva?: string;\n kirjattu: string;\n kirjaaja: number;\n lomake: number;\n alue: string;\n tyo?: number | undefined;\n tila: string;\n lomakedata: string;\n on_julkinen: \"Y\" | \"N\"\n on_kasittelija?: \"Y\" | \"N\",\n karttasijainti?: string;\n kasittelija?: number;\n lomakedatahaku: string;\n }\n};\n\nexport interface IObservationsResult {\n success: true;\n action: \"lisaa_havainnot\";\n havainnot: Array\n};\n\n\n\nexport interface ICreateObservationBody {\n success: true;\n action: \"tallenna_havainto\";\n havainto: {\n // id: number;\n // nimi: string;\n otsikko: string;\n kuvaus: string;\n kuva?: string;\n kirjattu: string;\n lomakedatahaku: string;\n // kirjaaja: number;\n lomake: number; alue: number; tyo?: number; tila: string; lomakedata: string;\n on_julkinen: \"Y\" | \"N\";\n karttasijainti?: string\n }\n};\n\nexport const getObservationService = (apiService: ISgApiService, Enpoint: IEndpoint): IObservationService => {\n\n const createObservation: IObservationService[\"createObservation\"] = async (observation) => {\n const action = \"lisaa_havainto\"\n if (!observation.formSchema) {\n throw Error(\"Missing form configurations\");\n };\n\n const body = {\n havainto: NewObservationMapper.domainToApi(observation),\n tunnisteet: extractObservationIdentifiersDTO(observation.formData, observation.formSchema)\n }\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ observation: ObservationMapper.apiToDomain(apiResponse.value.havainto) });\n }\n return apiResponse;\n };\n\n\n\n const createObservations: IObservationService[\"createObservations\"] = async (observations) => {\n const action = \"lisaa_havainnot\"\n\n const tunnisteet = observations.reduce((acc, observation) => {\n if (!observation.formSchema) return acc;\n const ids = extractFormDataIdentifiersDTO(observation.formData, observation.formSchema);\n\n if (typeof ids !== \"string\") {\n\n acc = {\n henkilot: _uniq([...acc.henkilot.split(\",\"), ...(ids.henkilot.split(\",\"))]).filter((item) => item !== \"\").join(\",\"),\n kohteet: _uniq([...acc.kohteet.split(\",\"), ...(ids.kohteet.split(\",\"))]).filter((item) => item !== \"\").join(\",\"),\n };\n }\n return acc\n }, { henkilot: \"\", kohteet: \"\" })\n\n // extractFormDataIdentifiersDTO(observation.formData, observation.formSchema)\n\n const body = {\n havainnot: observations.map(NewObservationMapper.domainToApi),\n tunnisteet\n }\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n observations: (apiResponse.value.havainnot || []).map((dto, index) => ({\n ...ObservationMapper.apiToDomain(dto),\n __noteId: (observations[index] || {}).__noteId\n }))\n });\n }\n return apiResponse;\n };\n\n\n\n\n\n const getContextData: IObservationService[\"getContextData\"] = async () => {\n const action = \"hae_perustiedot\"\n const apiResponse = await apiService.sendAction(Enpoint, action, {});\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n formTypes: apiResponse.value.lomakkeet.map(FormTypeMapper.apiToDomain),\n categories: apiResponse.value.kategoriat.map(CategoryMapper.apiToDomain),\n\n\n categoryPermissions: PermissionMapper.permissionsToDomain(apiResponse.value.oikeustasot || []),\n appRoles: apiResponse.value.roolit ? apiResponse.value.roolit.map(RoleMapper.apiToDomain) : []\n });\n }\n return apiResponse\n };\n\n\n const getFormDefinition: IObservationService[\"getFormDefinition\"] = async (formId) => {\n const action = \"hae_lomakemaaritys\"\n const body = { lomake: { id: formId } }\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(FormDefinitionMapper.apiToDomain(apiResponse.value.lomake, base64ToJson));\n }\n return apiResponse\n };\n\n\n\n const getFormDefinitionByReference: IObservationService[\"getFormDefinitionByReference\"] = async (referenceName) => {\n const action = \"hae_lomakemaaritys_viitenimella\"\n const body = { lomake: { viitenimi: referenceName } }\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(FormDefinitionMapper.apiToDomain(apiResponse.value.lomake, base64ToJson));\n }\n return apiResponse\n };\n\n\n\n\n const getObservation = async (observationGuid?: string | number): Promise> => {\n const action = \"hae_havainto\";\n const body = {\n havainto: {\n guid: typeof observationGuid === \"string\" ? observationGuid : undefined,\n id: typeof observationGuid === \"number\" ? observationGuid : undefined\n }\n };\n\n const apiResponse = await apiService.sendAction(Enpoint, action, body);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({\n observation: ObservationMapper.apiToDomain(apiResponse.value.havainto),\n context: {\n //@ts-ignore\n lomakeId: apiResponse.value.lomakkeet ? apiResponse.value.lomakkeet[0].id : null\n }\n });\n }\n return apiResponse;\n };\n\n\n return {\n createObservations,\n createObservation,\n getContextData,\n getFormDefinition,\n getFormDefinitionByReference,\n getObservation\n };\n};\n","import { base64ToJson } from \"../../sg-core/utils/json.helpers\";\nimport { IMap, IMapDTO } from \"./Map\";\n\nexport type TTargetingItem = {\n key: string;\n coordinates: [number, number]\n}\n\nexport interface ITargetingSchemeDTO {\n id: number;\n nimi: string;\n kartta: IMapDTO[\"id\"];\n base64data: string;\n guid: string;\n viitenimi: string;\n};\n\nexport interface ITargetingScheme {\n id: number;\n name: string;\n map: IMap[\"id\"];\n targeting: { [key: string]: TTargetingItem };\n guid: string;\n referenceName: string;\n};\n\n\nexport const TargetingSchemeMapper = {\n apiToDomain: (api: ITargetingSchemeDTO): ITargetingScheme => {\n const targetingData = api.base64data ? base64ToJson(api.base64data) : {};\n return {\n id: api.id,\n name: api.nimi,\n map: api.kartta,\n targeting: targetingData,\n guid: api.guid,\n referenceName: api.viitenimi,\n }\n }\n};\n","import { useMemo } from \"react\";\nimport fetch from \"unfetch\";\nimport useSWR, { ConfigInterface } from \"swr\";\nimport { TilannekuvaCacheKeys } from \"./cacheKey\";\nimport { ITargetingScheme, TargetingSchemeMapper } from \"../models/TargetingScheme\";\nimport { IMap, MapMapper } from \"../models/Map\";\n\ntype TValue = {\n targetingScheme: ITargetingScheme;\n map: IMap\n}\n\nexport type TUseTargetingSchemeHook = (referenceName: string, endpoint?: string, token?: string, config?: ConfigInterface) => {\n data: TValue | null;\n fetching: boolean;\n}\n\nexport const useTargetingScheme: TUseTargetingSchemeHook = (referenceName, endpoint, token, config = {}) => {\n\n\n const fetcher = async (): Promise => {\n\n if (!endpoint || !token) {\n return null\n }\n\n try {\n const response = await fetch(endpoint, {\n method: \"POST\",\n body: JSON.stringify({\n \"action\": \"hae_kohdistusskema\",\n \"kohdistusskema\": { viitenimi: referenceName }\n }),\n headers: { \"Authorization\": \"NAS SID \" + token }\n });\n\n const json = await response.json();\n if (json.success === false) {\n throw Error(json)\n }\n\n return {\n targetingScheme: TargetingSchemeMapper.apiToDomain(json.kohdistusskema),\n map: MapMapper.apiToDomain(json.kartta)\n }\n } catch (error) {\n console.info(error)\n return null;\n }\n };\n\n const cacheKey = TilannekuvaCacheKeys.TargetingSchemeInstance(referenceName);\n\n const { data, isValidating } = useSWR(\n cacheKey,\n fetcher,\n {\n suspense: true,\n revalidateOnFocus: false,\n revalidateOnMount: false,\n revalidateOnReconnect: false,\n ...config\n }\n );\n\n\n const rawData = data ?? null;\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating\n }), [rawData, isValidating]);\n};\n","import { TFunction } from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport { EAuditStatus } from \"../interfaces/IAudit\";\nimport { EObservationStatus } from \"../interfaces/IObservation\";\n\ntype TStatusTextKey = {\n [key in EAuditStatus]: string;\n}\nexport const StatusTextKey: TStatusTextKey = {\n [EAuditStatus.Draft]: \"Luonnos\",\n [EAuditStatus.Finished]: \"Valmis\",\n [EAuditStatus.Unknown]: \"Unknown\",\n};\n\n\nconst getTextProps = (t: TFunction): TStatusTextKey => ({\n [EAuditStatus.Draft]: t(\"Luonnos\"),\n [EAuditStatus.Finished]: t(\"Valmis\"),\n [EAuditStatus.Unknown]: t(\"Unknown\"),\n})\n\nexport const getTranslatedStatusTexts = getTextProps;\n\nexport const useTranslatedStatus = (status: EAuditStatus): string => {\n const texts = getTextProps(useTranslation().t);\n return texts[status];\n};\n","import React, { CSSProperties, HTMLAttributes } from \"react\";\nimport { StatusColors } from \"../../../constants/statusColors\";\nimport { useTranslatedStatus } from \"../../../constants/statusTextKey\";\nimport { EAuditStatus } from \"../../../interfaces/IAudit\";\n\ninterface AuditStatusLabelProps extends HTMLAttributes {\n as?: any;\n status: EAuditStatus,\n};\n\nexport const AuditStatusLabel: React.FC = ({\n as: CustomWrapper,\n status,\n style = {},\n ...divProps\n}) => {\n const hasDraftStatus = EAuditStatus.Draft === status;\n\n const LABEL_STYLE: CSSProperties = {\n textTransform: \"uppercase\",\n fontWeight: \"bold\",\n fontSize: \"0.7em\",\n marginLeft: \"0.5em\",\n color: hasDraftStatus ? StatusColors[status] : \"inherit\",\n ...style\n };\n\n const Wrapper = CustomWrapper || \"span\";\n\n const label = useTranslatedStatus(status);\n\n return (\n {label} \n );\n};\n","\n\n/**\n * Accesses enviroment variable and throws error if its missing\n * @param variableName\n * @returns \n */\nexport const getRequiredEnviromentVariable = (variableName: string): string => {\n const variable = process.env[variableName];\n if (!variable) {\n throw new Error(`[env]: ${variableName} must be defined\"`);\n };\n return variable\n};\n\n/**\n * Converts enviroment variable to boolean\n * @param variableName \n * @returns \n */\nexport const getBooleanEnviromentVariable = (variableName: string): boolean | undefined => {\n const variable = process.env[variableName];\n return variable ? variable === \"true\" : undefined\n};\n\n\nconst BASE_URL = process.env.REACT_APP_API_BASE_URL || \"\";\n/**\n * Returns true if base url constains word test\n */\nexport const bestGuessHostedInDevelopment = BASE_URL.indexOf(\"test\") > -1 && BASE_URL.indexOf(\"prod\") === -1;\n\n","import {\n AuthenticationProvider as CommonAuthenticationProvider,\n useAuthContext as useCommonAuthContext\n} from \"../../../@common/auth/AuthenticationProvider\";\n\nexport const useAuthContext = useCommonAuthContext;\n\nexport const AuthenticationProvider = CommonAuthenticationProvider","\nimport parse from \"date-fns/parse\"\nimport format from \"date-fns/format\"\n\nexport const TIME_FORMAT = \"HH:mm\";\nexport const DATE_FORMAT = \"dd.MM.yyyy\";\n\nexport const DATE_TIME_FORMAT = \"dd.MM.yyyy HH:mm\";\n\nexport const STRICT_HOUR_ROUNDING_VALUE_REGEX = \"[0-23]\";\n\nexport const STRICT_TIME_REGEX = \"^[0-2][0-9]:[0-5][0-9]\";\nexport const STRICT_DATE_REGEX = \"[0-3][0-9]\\.[0-1][0-9]\\.[0-9]{4}\";\n\n\n\nexport const dateDataToDate = (value: string | undefined, schemaFormat: \"date\" | \"time\" | \"date-time\") => {\n if (!value) {\n return\n }\n try {\n if (schemaFormat === \"date\") {\n return parse(value, DATE_FORMAT, new Date())\n }\n\n if (schemaFormat === \"time\") {\n return parse(value, TIME_FORMAT, new Date())\n }\n\n } catch (error) {\n return new Date(value)\n }\n if (schemaFormat === \"date-time\") {\n return new Date(value)\n }\n}\n\nconst inputToDate = (value?: string) => {\n if (!value) {\n return;\n };\n try {\n if (RegExp(STRICT_TIME_REGEX).test(value)) {\n return parse(value, TIME_FORMAT, new Date())\n };\n if (RegExp(STRICT_DATE_REGEX).test(value)) {\n return parse(value, DATE_FORMAT, new Date())\n };\n return new Date(value)\n } catch (error) {\n return\n }\n};\n\nexport const dateValueToFormat = (value: string | undefined, schemaFormat: \"date\" | \"time\" | \"date-time\") => {\n const valueAsDate = inputToDate(value);\n if (!valueAsDate) {\n return\n }\n\n if (schemaFormat === \"date\") {\n return format(valueAsDate, DATE_FORMAT)\n }\n\n if (schemaFormat === \"time\") {\n return format(valueAsDate, TIME_FORMAT)\n }\n\n if (schemaFormat === \"date-time\") {\n return format(valueAsDate, DATE_TIME_FORMAT)\n }\n}","import qs from \"qs\"\n\ntype TParams = { [key: string]: any };\n\nexport const parseQuery = (search: string) => {\n search = search.replace(\"?\", \"\");\n return qs.parse(search) as Partial\n};\nexport const stringifyQuery = (params: T) => qs.stringify(params);","import { TFunction } from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport { EObservationStatus } from \"../interfaces/IObservation\";\n\ntype TStatusTextKey = {\n [key in EObservationStatus]: string;\n}\nexport const StatusTextKey: TStatusTextKey = {\n [EObservationStatus.New]: \"Uusi\",\n [EObservationStatus.InProgress]: \"Käsittelyssä\",\n [EObservationStatus.Finished]: \"Käsitelty\",\n [EObservationStatus.Late]: \"Myöhässä\",\n [EObservationStatus.Unknown]: \"Unknown\",\n};\n\nconst getTextProps = (t: TFunction): TStatusTextKey => ({\n [EObservationStatus.New]: t(\"Uusi\"),\n [EObservationStatus.InProgress]: t(\"Käsittelyssä\"),\n [EObservationStatus.Finished]: t(\"Käsitelty\"),\n [EObservationStatus.Late]: t(\"Myöhässä\"),\n [EObservationStatus.Unknown]: t(\"Unknown\"),\n})\n\nexport const getTranslatedStatusTexts = getTextProps;\n\nexport const useTranslatedStatus = (status: EObservationStatus): string => {\n const texts = getTextProps(useTranslation().t);\n return texts[status];\n};","import { useMemo } from \"react\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport { useFormTypeList } from \"./useFormTypeList\";\n\nexport type IUseFormTypeHook = (formTypeId: IFormType[\"id\"]) => {\n data: IFormType;\n fetching: boolean;\n}\n\nexport const useFormType: IUseFormTypeHook = (formTypeId) => {\n const { data: formTypeList, fetching } = useFormTypeList()\n const rawData = useMemo(() => formTypeList.find(({ id }) => id === formTypeId), [formTypeList, formTypeId]);\n if (!rawData) {\n throw Error(\"Cannot find formType by id \" + formTypeId);\n }\n return useMemo(() => ({ data: rawData, fetching, }), [rawData, fetching]);\n};\n","import React, { useState, useMemo } from \"react\";\nimport { JSONSchema6 } from 'json-schema';\nimport { ISubmitEvent, FormProps } from \"@rjsf/core\";\nimport { Button } from \"semantic-ui-react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { useApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\nimport { IFormWithRules } from \"../../../sg-schema/withRules\";\nimport { EWidgetType } from \"../../../sg-schema/utils/widgetRegistry\";\nimport { JSONSchema, UiSchema } from \"../../../sg-schema/RJSF\";\n\nimport { useLoggedInUser } from \"../../auth/hooks/useLoggedInUser\";\nimport { EAuditStatus } from \"../../interfaces/IAudit\";\nimport { contextSchema, ISchemaContext } from \"../../constants/schemaContext\";\nimport { ObjectFieldTemplates } from \"../form/jsonSchemaFields/write\";\nimport { IFormContext } from \"../../interfaces/IFormContext\";\nimport { useAuthContext } from \"../../auth/AuthenticationProvider\";\n\ninterface ISchemaForm extends IFormWithRules {\n schema: JSONSchema;\n uiSchema: UiSchema;\n formData?: { [key: string]: any };\n rules?: { [key: string]: any }[];\n translations?: { [key: string]: any };\n\n}\n\nconst SchemaForm: React.FC = ({\n rules = [],\n schema,\n uiSchema,\n translations,\n formData = {},\n children,\n onSubmit,\n onError,\n onChange,\n liveValidate,\n ...otherProps\n}) => {\n\n const config = useApplicationConfiguration();\n const Form = useMemo(() => config.jsonSchema.getForm(EWidgetType.Write), []); // eslint-disable-line\n const { t, i18n } = useTranslation();\n\n // If there's translations, add them to the namespace\n if (translations) {\n const keys = Object.keys(translations);\n keys.forEach((key) => {\n i18n.addResourceBundle(key, \"schema\", translations[key]);\n });\n }\n\n const [dirtyAfterPageLoad, setDirtyAfterPageLoad] = useState(false);\n const [hasErrors, setHasErrors] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n\n const handleError = (errors: any[]) => {\n setHasErrors(errors.length ? true : false)\n onError && onError(errors);\n }\n\n const handleSubmit = (form: ISubmitEvent, nativeEvent: React.FormEvent) => {\n onSubmit && onSubmit(form.formData, nativeEvent);\n setSubmitted(true);\n };\n\n\n const handleChange: FormProps[\"onChange\"] = (form) => {\n onChange && onChange(form);\n setDirtyAfterPageLoad(true)\n };\n\n\n const user = useLoggedInUser();\n const { token } = useAuthContext();\n\n const roleList = user ? user.roles.map(({ reference }) => reference).filter((value) => value) : []\n\n const contextData: ISchemaContext = {\n roles: roleList,\n mode: \"form\",\n status: formData.status || formData.tila || EAuditStatus.Draft,\n };\n\n const formContext: IFormContext = {\n ...(otherProps.formContext || {}),\n objectFieldTemplates: ObjectFieldTemplates,\n apiToken: token,\n dirtyAfterPageLoad\n };\n\n\n return (\n {t(\"Tallenna\")} }\n />\n );\n};\n\nSchemaForm.defaultProps = {\n noHtml5Validate: true,\n liveValidate: false\n}\nexport default SchemaForm;\n","import { useMemo } from \"react\";\nimport ICategory from \"../../interfaces/ICategory\";\nimport { useCategories } from \"./useCategories\";\n\nexport type IUseCategoryHook = (category: ICategory[\"id\"]) => {\n data: ICategory;\n fetching: boolean;\n failed: boolean\n}\n\nexport const useCategory: IUseCategoryHook = (categoryId) => {\n const { data: categoryList, fetching } = useCategories()\n const rawData = useMemo(() => categoryList.find(({ id }) => id === categoryId), [categoryList, categoryId]);\n\n if (!rawData) {\n // throw Error(\"Cannot find category by id\" + categoryId);\n }\n\n return useMemo(() => ({ data: rawData as any, fetching, failed: !rawData }), [rawData, fetching]);\n};\n","import React from \"react\";\nimport { Icon, IconProps } from \"semantic-ui-react\";\nimport { IEvaluationStatics } from \"../../../interfaces/IEvaluation\";\nimport \"./_EvaluationsSummary.less\";\n\ninterface EvaluationsSummaryProps {\n data: IEvaluationStatics;\n};\n\nexport const EvaluationsSummary: React.FC = ({ data }) => {\n\n const totalChecks = data.okay + data.notOkay + data.uknown;\n\n\n const renderStatic = (text: string, count: number, iconProps: IconProps) => {\n const rawPercentage = (count / totalChecks * 100);\n const percentage = Math.round(rawPercentage);\n\n if (isNaN(percentage)) {\n return (\n
\n \n \n \n
\n )\n }\n\n return (\n
\n \n \n \n \n {count} kpl \n
\n )\n }\n\n return (\n
\n {renderStatic(\"Kunnossa\", data.okay, { name: \"check\", color: \"green\" })}\n {renderStatic(\"Korjattavaa\", data.notOkay, { name: \"times\", color: \"red\" })}\n {data.uknown > 0 && renderStatic(\"Ei tietoa\", data.uknown, { name: \"question\", color: \"grey\" })}\n
\n );\n}\n","import React from \"react\";\nimport { Button, Header, Image, List, Modal } from \"semantic-ui-react\";\nimport { TMapAuditingCheck } from \"../IMapAuditing\";\nimport { MapAdapter } from \"../../../@tilannekuva/components/MapAdapter\"\nimport { MapAuditingMarker } from \"./MapAuditingMarker\"\nimport Thumbnail from \"../../../sg-fileupload/components/Thumbnail\";\nimport { IMap } from \"../../../@tilannekuva/models/Map\";\nimport { useBool } from \"../../../sg-hooks/useBool\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface MapAuditingListItemProps {\n title: string;\n itemData: TMapAuditingCheck;\n map: IMap\n};\n\nexport const MapAuditingListItem: React.FC = ({\n title,\n itemData,\n map\n}) => {\n const t = useTranslation().t;\n const [open, showModal, hideModal] = useBool(false)\n\n const positionStr = `(tk=${map?.id})(x=${itemData.coordinates[0]})(y=${itemData.coordinates[1]})(z=5)`\n\n\n const mapTrigger = (\n
\n \n \n \n
\n );\n\n\n\n return (\n \n
\n
\n \n
\n \n \n \n
\n \n
\n
\n
{title}
\n

{itemData.description}

\n\n {(itemData.images?.length || 0) > 0 && (\n \n {itemData.images?.map((imageId) => (\n \n ))}\n \n )}\n
\n
\n \n );\n};\n","import React, { Fragment } from \"react\";\nimport { FieldProps } from \"@rjsf/core\";\nimport { Tilannekuva } from \"../../../../endpoints\";\nimport { TMapAuditingCheck, TMapAuditingValue } from \"../../IMapAuditing\";\nimport { useAuthContext } from \"../../../../auditoinnit/auth/AuthenticationProvider\";\nimport { Header, List, Segment } from \"semantic-ui-react\";\nimport { isAuditCheckANote } from \"../MapAuditing.utils\";\nimport { MapAuditingListItem } from \"../MapAuditingListItem\";\nimport { useTargetingScheme } from \"../../../../@tilannekuva/data/useTargetingScheme\";\n\nexport const MapAuditingDisplayField: React.FC> = (props) => {\n const { token } = useAuthContext();\n const { uiSchema = {} } = props as any\n\n const formData: TMapAuditingValue = props.formData ?? {};\n\n const mapReference = uiSchema[\"ui:mapReference\"] || \"tammisairaala_liikennemerkit\";\n const titleType = uiSchema[\"ui:titleType\"] || \"none\" as \"key\" | \"none\";\n\n const { data: targetingResult } = useTargetingScheme(mapReference, Tilannekuva.path, token);\n const { targetingScheme, map } = targetingResult || {}\n\n\n const renderListItem = (key: string, itemData: TMapAuditingCheck) => {\n if (!map) { return null }\n return (\n \n );\n };\n\n\n const items = Object.keys(formData).map((key, index) => formData[key]).filter((data) => isAuditCheckANote(data));\n return (\n \n\n {items.length ? (\n \n {Object.keys(formData).map((key, index) =>\n isAuditCheckANote(formData[key]) && renderListItem(key, formData[key])\n )}\n \n ) : \n
Ei kirjattuja huomiota
\n
\n }\n\n
\n )\n};\n","import React, { Fragment, useEffect } from \"react\";\nimport { FieldProps } from \"@rjsf/core\";\nimport { Tilannekuva } from \"../../../../endpoints\";\nimport { useAuthContext } from \"../../../../auditoinnit/auth/AuthenticationProvider\";\nimport { TPositionMapping } from \"../../mock\";\nimport { MapAuditing } from \"../MapAuditing\";\nimport { CheckItemId } from \"../MapAuditing.utils\";\nimport { useTargetingScheme } from \"../../../../@tilannekuva/data/useTargetingScheme\";\nimport { ITargetingScheme } from \"../../../../@tilannekuva/models/TargetingScheme\";\n\nconst targetingSchemeToPositionMapping = (scheme: ITargetingScheme): TPositionMapping => {\n return Object.keys(scheme.targeting).reduce((acc, key, index) => {\n return {\n ...acc, [key]: {\n fixed: true,\n coordinates: scheme.targeting[key].coordinates,\n status: undefined\n }\n }\n }, {});\n};\n\ntype TMapAuditingCheck = {\n coordinates: [number, number];\n status?: \"kunnossa\" | \"korjattavaa\",\n fixed?: boolean;\n};\ntype TMapAuditingValue = { [key: string]: TMapAuditingCheck };\n\nexport const MapAuditingField: React.FC> = (props) => {\n const { token } = useAuthContext();\n const { onChange, uiSchema = {} } = props as any\n\n const formData: TMapAuditingValue = props.formData ?? {};\n\n const mapReference = uiSchema[\"ui:mapReference\"] || \"tammisairaala_liikennemerkit\";\n const titleType = uiSchema[\"ui:titleType\"] || \"none\" as \"key\" | \"none\";\n\n\n const { data: targetingResult } = useTargetingScheme(mapReference, Tilannekuva.path, token);\n const { targetingScheme, map } = targetingResult || {}\n\n\n useEffect(() => {\n if (!Object.keys(formData).length && targetingScheme && targetingScheme.targeting) {\n onChange(targetingSchemeToPositionMapping(targetingScheme));\n }\n }, [onChange, formData, targetingScheme]);\n\n\n const addCheck = (center: [number, number]) => {\n const checkData: TMapAuditingCheck = {\n coordinates: center\n };\n onChange({ ...formData, [CheckItemId()]: checkData })\n };\n\n const setCheck = (key: string, checkData: TMapAuditingCheck) => {\n onChange({ ...formData, [key]: checkData });\n };\n\n const removeCheck = (key: string) => {\n const nextFormData = { ...formData };\n delete nextFormData[key];\n onChange(nextFormData)\n };\n\n\n if (!token || !map) {\n return
No Token
\n };\n\n\n return (\n \n \n \n )\n};\n","import React, { useState } from \"react\";\nimport { Image, ImageProps, Button, Icon, Modal } from \"semantic-ui-react\";\nimport { useFileUrl } from \"../context/FileUploadContext\";\nimport { ImageView } from \"./Image\";\n\n\nconst PUBLIC_PATH = process.env.PUBLIC_URL;\n\n\nconst LARGE_IMAGE_STYLE = {\n display: \"block\",\n maxWidth: \"100%\",\n maxHeight: \"100%\",\n width: \"auto\",\n height: \"auto\",\n};\n\nconst MODAL_CONTENT_STYLE = {\n minHeight: \"500px\",\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\"\n};\n\nconst LOAD_ERRORED_STYLE = {\n height: 90,\n width: 120,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"rgba(0,0,0,0.1)\"\n};\n\n\ninterface IImageProps extends ImageProps {\n id: string;\n thumbnailWidth?: number;\n thumbnailHeight?: number\n}\n\n\nexport const Thumbnail: React.FC = ({ id, thumbnailWidth, thumbnailHeight, ...imgProps }) => {\n const { loadError, fileUrl: thumbnailUrl } = useFileUrl(id, { width: thumbnailWidth, height: thumbnailHeight });\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const openModal = () => setIsModalOpen(true);\n const closeModal = () => setIsModalOpen(false);\n\n if (loadError) {\n return (\n \n \n \n );\n };\n\n if (thumbnailUrl) {\n return (\n }\n onOpen={openModal}\n onClose={closeModal}\n >\n \n
\n
\n \n \n \n \n );\n }\n\n\n return ;\n\n};\n","\n\nimport { useRef, useEffect } from \"react\";\n\nexport const useIsMount = () => {\n const isMountRef = useRef(true);\n\n useEffect(() => {\n isMountRef.current = false;\n }, []);\n\n return isMountRef.current;\n};","import { useEffect, useMemo, useState } from \"react\";\nimport { AuditoinnitCacheKeys } from \"../cacheKeys\";\nimport * as Endpoint from \"../../../endpoints\";\nimport { getSgApiService } from \"../../../sg-core/services/ApiService2\";\nimport { useAuthContext } from \"../../auth/AuthenticationProvider\";\nimport { IAuditListFilters } from \"../../interfaces/IAudit\";\nimport { getAuditService } from \"../../services/auditService\";\nimport { IPagination } from \"../../interfaces/common/IPagination\";\nimport { useAuditCache } from \"./useAuditsCache\";\nimport { useSWROffline } from \"../../../sg-core/swr/useSWROffline\";\nimport { useIsMount } from \"../../../sg-hooks/useIsMount\";\nimport { defaultAuditFilters, defaultPagination } from \"../../constants/controlledFiltters\";\nimport { ConfigInterface } from \"swr\";\nimport { useUserAppRoles } from \"../appRoles/useAppRoles\";\n\nexport type IUseAuditPageHook = (pagination?: IPagination, filters?: Partial, config?: ConfigInterface<{ items: number[], totalItems: number }, Error>) => {\n data: number[];\n pagination: IPagination;\n goToPage: (page: number) => void;\n fetching: boolean;\n}\n\nexport const useAuditPage: IUseAuditPageHook = (\n initialPagination = defaultPagination,\n filters = defaultAuditFilters,\n config = {}\n) => {\n const { token, lang, anonymousSession } = useAuthContext();\n const { data: roles, error: roleLoadError, fetching: fetchingRoles } = useUserAppRoles();\n filters.roles = !roleLoadError && !fetchingRoles ? roles : undefined;\n\n const service = getAuditService(getSgApiService(token), Endpoint.auditoinnit, anonymousSession);\n const { recieveItems } = useAuditCache();\n const [pagination, setPagination] = useState(initialPagination);\n\n\n const fetcher = async (): Promise<{ items: number[], totalItems: number }> => {\n if (!filters.roles) { throw new Error(\"Missing user roles\"); };\n const pageData = await service.getAuditPage(pagination, filters as any);\n if (pageData.isFailure) throw pageData.error;\n recieveItems(pageData.value.audits);\n return {\n items: pageData.value.audits.map(({ id }) => id),\n totalItems: pageData.value.totalItems\n };\n };\n\n const cacheKey = AuditoinnitCacheKeys(token, lang).AuditPage(pagination, filters);\n const { data, isValidating } = useSWROffline(cacheKey, fetcher, {\n suspense: true,\n revalidateOnFocus: false,\n ...config\n });\n\n\n const { totalItems, items } = data || {};\n\n const mounting = useIsMount();\n\n useEffect(() => {\n if (!mounting) {\n setPagination({ page: 1, pageSize: initialPagination.pageSize });\n }\n }, [filters]); //eslint-disable-line\n\n useEffect(() => { setPagination((prev) => ({ ...prev, totalItems })) }, [totalItems])\n\n useEffect(() => {\n const otherThanFirstPageHasNoItems = items && items.length < 1 && pagination.page > 1\n if (otherThanFirstPageHasNoItems) {\n setPagination((prev) => ({ ...prev, page: 1 }))\n }\n }, [items, pagination.page]);\n\n\n\n const rawData = items ?? [];\n\n return useMemo(() => ({\n data: rawData,\n pagination,\n goToPage: (page) => setPagination((prev) => ({ ...prev, page })),\n fetching: isValidating,\n }), [rawData, pagination, setPagination, isValidating]);\n};\n","import { IHavainnotFormSchema } from \"../interfaces/IFormSchema\";\nimport { JSONSchema, JSONSchemaDefinition } from \"../schema/RJSF\";\n\n\n/**\n * Loops trough each schema property\n * @param properties \n * @param invoke \n * @param pathBase \n */\nexport const forEachSchemaProp = (\n properties: JSONSchema[\"properties\"],\n invoke: (path: string, prop: JSONSchemaDefinition) => void,\n pathBase?: string\n) => {\n if (!properties) { return };\n\n Object.keys(properties).forEach((key) => {\n const prop = properties[key];\n if (prop === true || prop === false) { return };\n\n if (prop.type === \"object\") {\n forEachSchemaProp(prop.properties, invoke, key);\n return\n }\n\n const path = pathBase ? [pathBase, key].join(\".\") : key;\n invoke(path, prop);\n });\n};\n\n\n/**\n * Loops trough each schema property\n * @param properties \n * @param invoke \n * @param pathBase \n */\nexport const getInstructionDocumentHrefs = (schema: IHavainnotFormSchema) => {\n let documentHrefs: Array = [];\n\n forEachSchemaProp(schema.schema.properties as any, (path) => {\n const uiProps = schema.uiSchema[path] || {};\n const options = uiProps[\"ui:instruction\"];\n const instructionWidget = uiProps[\"ui:widget\"] === \"instruction\";\n if (instructionWidget && options) {\n documentHrefs = documentHrefs.concat(options.href)\n }\n\n });\n\n return documentHrefs;\n};\n","import IObservation from \"../interfaces/IObservation\";\nimport { forEachSchemaProp } from \"./schema.helpers\";\n\nimport selectn from \"selectn\";\nimport { UiSchema } from \"../schema/RJSF\";\n\nexport const PERSON_WIDGET_LIST = [\"personPicker\"];\nexport const isPersonField = (uiProps: UiSchema) => PERSON_WIDGET_LIST.includes(uiProps[\"ui:widget\"] as string)\n\n\n\nexport const observationToPersonIds = (formData: IObservation[\"formData\"], formSchema: IObservation[\"formSchema\"]) => {\n\n if (!formSchema || !formSchema.schema.properties) {\n return [];\n };\n\n let idList: number[] = [];\n\n const { schema, uiSchema } = formSchema || {};\n\n\n forEachSchemaProp(schema.properties as any, (path, property) => {\n const uiProperty = selectn(path, uiSchema) || {};\n\n if (isPersonField(uiProperty)) {\n const value = selectn(path, formData);\n\n if (value) {\n idList = idList.concat(value);\n };\n\n if (Array.isArray(value) && value.length) {\n idList = idList.concat(value);\n };\n }\n });\n\n\n if (formData.merkinnat) {\n formData.merkinnat.forEach((marking) => {\n if (marking.creator) {\n idList = idList.concat(marking.creator);\n }\n if (marking.formData.vastaanottaja) {\n idList = idList.concat(marking.formData.vastaanottaja);\n }\n })\n }\n return idList;\n};\n","import React, { FC } from \"react\";\nimport { IKohderekisteri } from \"../../../sg-kohderekisterit/IKohderekisteri\";\nimport { LocationName } from \"./default/LocationName\"\n\nexport interface IConfiguredComponents {\n ContextProvider: FC<{ token?: string; lang?: string, anonymousSession: boolean; registerSettings: any }>;\n LocationName: IKohderekisteri[\"LocationName\"];\n LocationFilter?: IKohderekisteri[\"LocationFilter\"]\n\n LocationMap: IKohderekisteri[\"LocationMap\"];\n RenderMap: IKohderekisteri[\"RenderMap\"];\n\n};\n\n\nexport const defaultConfiguredComponents: IConfiguredComponents = {\n\n ContextProvider: (props) => React.createElement(\"div\", props),\n\n\n LocationName,\n LocationMap: (props) => React.createElement(\"div\", props),\n\n RenderMap: (props) => React.createElement(\"div\", props),\n\n};","import React, { Fragment } from \"react\";\n\nexport interface ILocationNameProps {\n locationId?: string;\n}\n\nexport const LocationName: React.FC = ({ locationId }) => {\n\n\n return (\n \n Unconfigure LocationName: {locationId}\n \n )\n};","\nexport type TResolveLocationFilters = (newFilters: any) => Promise\n\nexport const useDefaultResolveLocationFilters = (): TResolveLocationFilters => {\n const resolveLocationFilters = async (newFilters: any) => newFilters;\n return resolveLocationFilters\n}; ","import { JsonSchemaConfiguration } from \"../../../sg-schema-form\";\n\nimport { IConfiguredComponents, defaultConfiguredComponents } from \"./Components\";\nimport { useDefaultResolveLocationFilters, TResolveLocationFilters } from \"./default/useResolveLocationFilters\";\nimport { EProcessingMarkingPublicity } from \"../interfaces/IObservation\";\nimport { IRegisterSettings, IUseGetLocationDataHook } from \"../../../sg-kohderekisterit/IKohderekisteri\";\nimport { bestGuessHostedInDevelopment, makeFailure, makeSuccess, TResult, createUnloaded, TLoadable } from \"../../../sg-core\";\n\nexport type TConfigFn = (config: ApplicationConfiguration) => Promise;\n\n\n/**\n * A wrapper class for the configuration options for the entire WorkPermit-application.\n * The class is designed to be easily configurable for different customer needs.\n */\nexport class ApplicationConfiguration {\n\n //\n // COMPONENTS\n //\n\n public components: IConfiguredComponents = defaultConfiguredComponents;\n\n //\n // SETTINGS\n //\n public activated: TLoadable = createUnloaded();\n public observationPublicByDefault: boolean = true;\n public applicationMenuHref: string | null = process.env.REACT_APP_APPLICATION_MENU_HREF || \"https://gate.systemsgarden.com/\";\n public siteLogoHref: string = process.env.PUBLIC_URL + (process.env.REACT_APP_SITE_LOGO || \"/site-logo.png\");\n\n public showDeveloperSettings: boolean = bestGuessHostedInDevelopment;\n public showRawApplicationErrors: boolean = bestGuessHostedInDevelopment;\n public testenviromentBackground: boolean = bestGuessHostedInDevelopment;\n public showDevelopmentLinks: boolean = false;\n public showTenantSwitch: boolean = false;\n\n public emailSupport: boolean = true;\n public smsSupport: boolean = true;\n public mapSupport: boolean = true;\n\n public companyName: string = \"Systems Garden Oy\";\n public companyAddress: string = \"Upseerinkatu 3, 02600 Espoo\";\n\n public showLanguageSelect: boolean = false;\n public languages: Array = [\"fi\"];\n public gateDirectUrl: string = \"https://gate.systemsgarden.com/direct2\";\n\n\n public allowEditingObservation: boolean = false;\n public hideEmptyFieldsFromObservationDetails: boolean = false;\n public archiveLimit: string | undefined = undefined;\n public minimumSearchQueryLength: number = 3;\n public showUniqueObservationId: boolean = true;\n\n public allowChangingProcessingMarkingPublicity: boolean = false;\n public processingMarkingPublicityDefaultValue: EProcessingMarkingPublicity = EProcessingMarkingPublicity.All\n\n\n public registerSettings: IRegisterSettings = {};\n\n public useGetLocationData: IUseGetLocationDataHook = () => ({\n getLocationData: async () => makeFailure(new Error(\"Unconfigured hook\"))\n });\n //\n // FILTERS\n //\n\n public useResolveLocationFilters: () => TResolveLocationFilters = useDefaultResolveLocationFilters\n public testSchema = { schema: {}, uiSchema: {} };\n\n //\n // JSON Schema\n //\n\n private jsonSchemaConfig?: JsonSchemaConfiguration;\n\n public addJsonSchemaForm(fn: (options: JsonSchemaConfiguration) => void) {\n const jsonSchemaConfig = new JsonSchemaConfiguration();\n\n fn(jsonSchemaConfig);\n jsonSchemaConfig.build();\n\n this.jsonSchemaConfig = jsonSchemaConfig;\n }\n\n public modifyJsonSchemaForm(fn: (options: JsonSchemaConfiguration) => void) {\n const jsonSchemaConfig = this.jsonSchemaConfig;\n if (jsonSchemaConfig) {\n fn(jsonSchemaConfig);\n this.jsonSchemaConfig = jsonSchemaConfig;\n };\n };\n\n // Config getters\n public get jsonSchema(): JsonSchemaConfiguration {\n this.ensureExists(\"jsonSchemaConfig\");\n return this.jsonSchemaConfig!;\n }\n\n\n //\n // PRIVATES\n //\n\n // A simple throwing function for ensuring that a specific config exists.\n private ensureExists(name: string) {\n if (!this[name as keyof ApplicationConfiguration]) {\n throw new Error(`Failed to access '${name}'. The property was undefined`);\n }\n }\n}\n\nexport const createApplicationConfiguration = async (fn: (config: ApplicationConfiguration) => Promise): Promise> => {\n let config = new ApplicationConfiguration();\n\n try {\n config = await fn(config);\n } catch (e) {\n console.error(\"[Fatal]: ConfigurationError: \", e);\n return makeFailure(e as Error)\n }\n\n return makeSuccess(config);\n}\n","import React, {\n createContext,\n useContext,\n PropsWithChildren,\n useState,\n useLayoutEffect,\n SetStateAction,\n Fragment,\n} from \"react\";\nimport { Message } from \"semantic-ui-react\";\nimport { makeSuccess, TResult } from \"../../../sg-core\";\nimport {\n ApplicationConfiguration,\n createApplicationConfiguration,\n TConfigFn,\n} from \"./ApplicationConfiguration\";\nimport { useAuthentication } from \"../auth/store/authSelectors\";\nimport { useLoadAppParameters } from \"../store/selectors/contextSelectors\";\nimport { LoaderSegment } from \"../components/LoaderSegment\";\nimport TestBackground from \"../../../@common/components/TestBackground\";\n\nconst modifyConfigContext = createContext<{\n setConfig: (updates: SetStateAction>) => void;\n}>({ setConfig: () => new ApplicationConfiguration() });\nexport const useModifyApplicationConfiguration = () => useContext(modifyConfigContext);\n\nconst configContext = createContext(new ApplicationConfiguration());\n\nexport const useApplicationConfiguration = () => {\n return useContext(configContext);\n};\n\nexport const RenderConfigurations: React.FC<{ render: (props: ApplicationConfiguration) => any }> = ({\n render,\n}) => {\n const config = useApplicationConfiguration();\n return {render(config)} ;\n};\n\nconst LoadParameters = () => {\n useLoadAppParameters();\n return null;\n};\n\n// Provider\nexport const ConfigurationProvider: React.FC> = ({\n children,\n configFn,\n}) => {\n const { token, anonymousSession } = useAuthentication();\n const { Provider } = configContext;\n const { Provider: ModifyConfigProvider } = modifyConfigContext;\n\n const [config, setConfig] = useState>();\n\n const modifyConfig = (updates: SetStateAction>) => {\n if (!config?.isSuccess) {\n return;\n }\n const data = updates instanceof Function ? updates(config.value) : updates;\n setConfig((prev) => {\n if (prev?.isSuccess) {\n let value = prev.value;\n Object.keys(data).forEach((key) => {\n const configurationKey = key as keyof ApplicationConfiguration;\n if (typeof data[configurationKey] !== \"undefined\") {\n //@ts-ignore\n value[configurationKey] = data[configurationKey];\n }\n });\n return makeSuccess(value);\n }\n return prev;\n });\n };\n\n useLayoutEffect(() => {\n const loadConfigs = async () => {\n const configResult = await createApplicationConfiguration(configFn);\n setConfig(configResult);\n };\n loadConfigs();\n }, []);\n\n if (config?.isFailure) {\n return ;\n }\n\n if (!config?.value) {\n return ;\n }\n\n const AdditionalContextProvider = config.value.components.ContextProvider;\n const providerKey = JSON.stringify(config.value);\n\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n};\n","import { createEndpointMaker } from \"../sg-core\";\n\nconst baseUrl = process.env.REACT_APP_API_BASE_URL;\nif (!baseUrl) { throw new Error(\"REACT_APP_API_BASE_URL must be defined\") }\n\nconst makeEndpoint = createEndpointMaker(baseUrl);\n\nexport const Auth = makeEndpoint([\"login_v03.aspx\"]);\n\nexport const havainnot = makeEndpoint([\"havainnot_v09.aspx\"]);\n\nexport const Kohteet = makeEndpoint([\"kohteet_v02.aspx\"]);\n\nexport const Yleiset = makeEndpoint([\"yleiset_v04.aspx\"]);\n\nexport const Upload6 = makeEndpoint([\"upload6_v02.aspx\"]);\n\nexport const Kartta = makeEndpoint([\"Kartta_v01.aspx\"]);\n\nexport const HPR = makeEndpoint([\"hpr_v02.aspx\"]);\n","import { lazy } from \"react\";\nimport { IRouteDefinition, ISubModuleRoutes } from \"../routing\";\n\nexport enum CommonRouteId {\n CommonFrontPage = \"front-page\",\n LoginExpiredPage = \"login-expired-page\",\n PageNotFoundPage = \"page-not-found-page\"\n}\n\nexport const commonRoutes: IRouteDefinition[] = [\n {\n id: CommonRouteId.CommonFrontPage,\n exact: true,\n path: \"/\",\n component: lazy(() => import(/* webpackChunkName: 'FrontPage' */\"./views/FrontPage\"))\n },\n {\n id: CommonRouteId.LoginExpiredPage,\n exact: true,\n requireAuth: false,\n path: \"/istunto_vanhentunut\",\n component: lazy(() => import(/* webpackChunkName: 'LoginExpiredPage' */\"./views/LoginExpiredPage\"))\n },\n {\n id: CommonRouteId.PageNotFoundPage,\n exact: true,\n requireAuth: false,\n path: \"\",\n component: lazy(() => import(/* webpackChunkName: 'LoginExpiredPage' */\"./views/PageNotFoundPage\"))\n }\n]\n\nconst CommonRouting: ISubModuleRoutes = {\n prefix: \"\",\n routes: commonRoutes,\n template: null,\n routeId: CommonRouteId\n}\n\nexport default CommonRouting\n\n","import React from \"react\";\nimport { useAuthContext } from \"../AuthenticationProvider\";\nimport { Segment, Icon } from \"semantic-ui-react\";\nimport { RouteProps, Route, Redirect, useLocation } from \"react-router-dom\";\nimport * as Common from \"../../utils/common.helpers\";\n\nexport const AuthenticatedRoute: React.FC = (props) => {\n const { loggedIn, loggingIn, initialized } = useAuthContext();\n const location = useLocation();\n\n if (loggedIn) {\n return ;\n }\n\n if (!initialized && loggingIn) {\n return (\n \n

\n Kirjaudutaan\n

\n
\n );\n }\n\n return ;\n};\n","import { LocationDescriptorObject } from \"history\";\nimport { getRouteHrefById } from \"../../routing\";\nimport { CommonRouteId } from \"../routes\";\n\n\nexport const makeFrontPageHref = (): LocationDescriptorObject => ({\n pathname: getRouteHrefById(CommonRouteId.CommonFrontPage),\n});\n\n\nexport const makeLoginExpiredPageHref = (prevPath?: string): LocationDescriptorObject => ({\n pathname: getRouteHrefById(CommonRouteId.LoginExpiredPage),\n state: { prevPath }\n});\n\n\n\n","import React, { ErrorInfo, Fragment } from \"react\";\nimport { withTranslation, WithTranslation } from \"react-i18next\";\nimport { Message } from \"semantic-ui-react\";\n\ninterface IErrorProps extends WithTranslation {\n rawErrorMessage?: boolean;\n}\n\n\ninterface IErrorState {\n hasError: boolean;\n error: Error | null;\n errorMessageVisible: boolean;\n}\n\nclass RouteErrorBoundary extends React.Component {\n constructor(props: IErrorProps) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n errorMessageVisible: false\n }\n }\n\n static getDerivedStateFromError(error: Error): IErrorState {\n return {\n hasError: true,\n error: error,\n errorMessageVisible: false\n }\n }\n\n componentDidCatch(error: Error, logInfo: ErrorInfo) {\n console.error(logInfo);\n console.error(error);\n }\n\n\n toggleErrorMessage = () => {\n this.setState((prev) => ({\n errorMessageVisible: !prev.errorMessageVisible\n }))\n }\n\n render() {\n const { t, rawErrorMessage = false } = this.props;\n\n if (this.state.hasError) {\n return (\n \n {t(\"Sovelluksessa tapahtui odottamaton virhe!\")}\n

{t(\"Yritä päivittää sivu, tai poistaa sivuston selaustiedot\")}

\n\n {rawErrorMessage ? (\n \n

Näytä virheviesti

\n {this.state.errorMessageVisible ?\n
 {this.state.error?.stack?.toString()} 
\n : null}\n
\n ) : null}\n\n
\n );\n }\n\n return this.props.children;\n }\n}\n\nexport default withTranslation()(RouteErrorBoundary);","import React, { Fragment } from \"react\";\nimport { Switch, Route, RouteProps } from \"react-router-dom\";\nimport { AuthenticatedRoute } from \"./@common/auth/components/AuthenticatedRoute\";\nimport _groupBy from \"lodash/groupBy\";\n\n// Modules containing routes \nimport CommonRouting from \"./@common/routes\";\nimport HavainnotRouting from \"./@havainnot/routes\";\nimport TyoluvatRounting from \"./@tyoluvat/routes\";\nimport AuditoinnitRouting from \"./@auditoinnit/routes\";\nimport DokumentitRouting from \"./@dokumentit/routes\";\n\nimport RouteErrorBoundary from \"./@common/components/RouteErrorBoundary\";\n\n\n\nexport interface IRouteDefinition {\n readonly id: string;\n readonly hrefTemplate?: string;\n readonly path: string;\n readonly exact: boolean;\n readonly render?: React.FC;\n readonly component?: React.FC;\n readonly template?: React.FC;\n readonly requireAuth?: false;\n readonly requiredRoles?: string[];\n}\n\nexport interface ISubModuleRoutes {\n prefix: string;\n routes: Array;\n template: React.FC<{}> | null;\n routeId: { [key: string]: string }\n}\n\nconst modules = [\n AuditoinnitRouting,\n TyoluvatRounting,\n HavainnotRouting,\n DokumentitRouting,\n CommonRouting\n]\n\n/**\n * Adds prefix to all route.paths\n */\nconst withPathPrefix = (modulePrefix: string, routes: Array): Array => {\n if (modulePrefix === \"\") return routes\n const prefix = `/${modulePrefix}`\n return routes.map((route) => ({\n ...route,\n path: route.path === \"/\" ? prefix : [prefix, route.path].join(\"\")\n }))\n};\n\n// Import and concatenate required routes from our modules\nconst appRoutes: IRouteDefinition[] = [\n ...(modules.reduce>((acc, module) => {\n return acc.concat(withPathPrefix(module.prefix, module.routes))\n }, [])),\n];\n\nexport function getRouteHref(route: IRouteDefinition, params: { [key: string]: any } = {}): string {\n const paramNames = Object.keys(params);\n const routeTemplate = route.hrefTemplate || route.path;\n return paramNames.reduce(\n (href, paramName) => href.replace(`:${paramName}`, params[paramName]),\n routeTemplate,\n );\n}\n\n/**\n * Return the appropriate Link href for the given route id with the applied\n * parameters. Returns null if the route, for some reason, is not found.\n *\n * @export\n* @param {keyof typeof RouteId} id The RouteId of the route we're linking to\n* @param {{ [key: string]: any }} params Object containing parameters\n* @returns {(string | null)}\n */\nexport function getRouteHrefById(id: string, params: { [key: string]: any } = {}): string | undefined {\n const route = appRoutes.find((r) => r.id === id);\n if (route) {\n return getRouteHref(route, params);\n } else {\n return undefined;\n }\n}\n\n/**\n* Renders a component for the given IRouteDefinition\n* @param route The route to render\n*/\nconst renderRoute = (route: IRouteDefinition,): JSX.Element => {\n\n\n if (typeof route.requireAuth !== \"boolean\" || route.requireAuth) {\n return (\n \n );\n }\n return (\n \n );\n};\n\nexport const RouteSwitch: React.FC = () => {\n const modulePrefixes = modules.map((module) => module.prefix);\n\n const routeGroups = _groupBy(appRoutes, (route) => {\n const prefix = modulePrefixes.find((prefix) => prefix && route.path.startsWith(`/${prefix}`));\n return prefix || \"common\"\n });\n\n const renderSubModuleRoutes = (module: ISubModuleRoutes) => {\n const routes = routeGroups[module.prefix || \"common\"];\n const Template = module.template || Fragment;\n const pathPrefix = module.prefix === \"\" ? undefined : `/${module.prefix}`;\n\n if (routes && routes.length) {\n return (\n \n \n \n )\n }\n return null\n }\n return (\n \n \n {modules.map(renderSubModuleRoutes)}\n \n \n );\n};\n","import { IInitialContextResult } from \"../services/contextService\";\nimport ICategory from \"../interfaces/ICategory\";\n\nconst CategoryMapper = {\n apiToDomain: (api: IInitialContextResult[\"kategoriat\"][0]): ICategory => ({\n id: api.id,\n name: api.nimi,\n icon: api.ikoni,\n processingFormDefinition: api.kasittelylomakemaaritys\n }),\n};\n\nexport default CategoryMapper\n","import { IPermissionDTO, ICategoryPermission, EPermissionLevel } from \"../interfaces/ICategoryPermission\";\n\nconst PermissionMapper = {\n permissionLevelToDomain: (v: string): EPermissionLevel => {\n switch (v) {\n case \"vain_julkiset\":\n return EPermissionLevel.OnlyPublic;\n case \"aina\":\n return EPermissionLevel.Always;\n case \"ei_koskaan\":\n default:\n return EPermissionLevel.Never;\n }\n },\n permissionsToDomain: (permissions: IPermissionDTO[]): ICategoryPermission[] => {\n return permissions.map((perm): ICategoryPermission => ({\n id: perm.id,\n categoryId: perm.kategoria,\n roleId: perm.rooli,\n create: PermissionMapper.permissionLevelToDomain(perm.lisays),\n edit: PermissionMapper.permissionLevelToDomain(perm.muokkaus),\n read: PermissionMapper.permissionLevelToDomain(perm.luku),\n }));\n },\n // permissionsToDomain: (roles: IAppRoleDTO[], permissions: IPermissionDTO[]): IPermissionsToDomainResult => {\n // const groupedByCategory = _groupBy(permissions, \"categoryId\");\n\n // return _mapValues(groupedByCategory, (perms, categoryId): ICategoryPermission => {\n // const maxPermissionRead = _maxBy(perms, (perm) => PermissionMapper.permissionLevelToDomain(perm.luku));\n // const maxPermissionUpdate = _maxBy(perms, (perm) => PermissionMapper.permissionLevelToDomain(perm.muokkaus));\n // const maxPermissionCreate = _maxBy(perms, (perm) => PermissionMapper.permissionLevelToDomain(perm.lisays));\n\n // return {\n // id: 1,\n // categoryId: categoryId as any as number, // _mapValues types the key as string, but we know it's a number\n // create: PermissionMapper.permissionLevelToDomain(maxPermissionCreate.lisays),\n // edit: PermissionMapper.permissionLevelToDomain(maxPermissionUpdate.muokkaus),\n // read: PermissionMapper.permissionLevelToDomain(maxPermissionRead.luku),\n // };\n // });\n // },\n};\n\nexport default Object.freeze(PermissionMapper);\n","import { useEffect } from \"react\";\n\n\n\n\n\n\nexport const useOnClickOutside = (ref: any, handler: (event: MouseEvent | TouchEvent) => void) => {\n useEffect(\n () => {\n const listener = (event: MouseEvent | TouchEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n },\n // Add ref and handler to effect dependencies\n // It's worth noting that because passed in handler is a new ...\n // ... function on every render that will cause this effect ...\n // ... callback/cleanup to run every render. It's not a big deal ...\n // ... but to optimize you can wrap handler in useCallback before ...\n // ... passing it into this hook.\n [ref, handler]\n );\n}","import React, { memo, useState, PropsWithChildren, useEffect } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport { IFileObj, EUploadStatus } from \"../models/IFile\";\nimport { useFileUploadService } from \"../context/FileUploadServiceContext\";\n\nexport interface IFileUploadElementProps {\n isDragActive: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n name?: string\n}\n\ninterface IFileUploadProps {\n accept: \"image/*\" | undefined;\n multiple?: boolean;\n files?: { id: string; name: string }[];\n onUploaded: (files: { id: string; name: string }[]) => void;\n onRemoved: (guid: string) => void;\n wrapElement: React.ComponentType>;\n loaderElement: React.ComponentType<{\n file: IFileObj;\n onRemove: (file: IFileObj) => void;\n }>;\n listWrapperElement: React.ComponentType;\n name?: string\n disabled?: boolean\n\n\n}\n\nconst noop = () => {\n console.log('noop');\n return undefined\n};\nlet requests: any[];\n\nconst FileUploadBtn: React.FC = (props) => {\n\n const {\n accept,\n multiple = false,\n onUploaded = noop,\n onRemoved = noop,\n wrapElement: Elem,\n loaderElement: LoaderElement,\n listWrapperElement: ListWrapperElement,\n files: uploadedFiles,\n disabled = false\n } = props;\n\n const uploadService = useFileUploadService();\n if (!uploadService) {\n throw new Error(\"FileUploadService is not provided. Cannot use a file upload component.\");\n }\n\n const [fileObjs, setFiles] = useState([])\n const [isLoading, setLoading] = useState(false)\n const [isLoaded, setLoaded] = useState(false)\n\n\n const createUploadableFile = (file: File): IFileObj => ({\n id: _uniqueId(),\n name: file.name,\n file: file,\n status: EUploadStatus.Uploading\n })\n\n const createLoadedFile = (file: any): IFileObj => ({\n id: _uniqueId(),\n guid: file.id,\n status: EUploadStatus.Uploading\n })\n\n const updateFileObj = (id: string, newProps: any) => {\n setFiles((prevFiles) => prevFiles.map((fileObj) => fileObj.id === id ? { ...fileObj, ...newProps } : fileObj))\n }\n\n const removeFileObj = (id: string) => {\n setFiles((prevFiles) => prevFiles.filter((fileObj) => fileObj.id !== id))\n }\n\n\n const handleFiles = (acceptedFiles: File[] = []) => {\n !isLoaded && setLoaded(true)\n let newFiles: IFileObj[] = acceptedFiles.map((file: any) => createUploadableFile(file))\n setFiles((prevFiles) => multiple ? [...prevFiles, ...newFiles] : newFiles);\n setLoading(true)\n const requests = newFiles.map((fileObj) => handleSingleUpload(fileObj));\n Promise.all(requests).then(function (values) {\n const succesfull = values.filter((file: any) => file.status === EUploadStatus.Done)\n const uploaded = succesfull.map(({ guid, name }: any) => ({ id: guid, name }))\n onUploaded(uploaded)\n setLoading(false);\n })\n }\n\n const handleSingleUpload = (newFile: IFileObj) => (\n new Promise(async (resolve, reject) => {\n try {\n if (!newFile.file) {\n throw Error('Missing file')\n }\n const uploadResult = await uploadService.uploadFileWithUpload5(newFile.file);\n if (uploadResult.isSuccess) {\n const newProps = {\n guid: uploadResult.value.id,\n status: EUploadStatus.Done\n }\n updateFileObj(newFile.id, newProps)\n return resolve({ ...newFile, ...newProps })\n } else {\n throw Error('Failed request')\n }\n } catch (err) {\n console.log(\"err\", err)\n\n updateFileObj(newFile.id, { status: EUploadStatus.UploadError })\n return resolve(newFile)\n }\n })\n )\n\n const handleSingleFileInfo = (newFile: IFileObj) => (\n new Promise(async (resolve: any, reject: any) => {\n try {\n if (!newFile.guid) {\n throw Error('Missing file')\n }\n const uploadResult = await uploadService.getImageInfo(newFile.guid, 400);\n if (uploadResult.isSuccess) {\n updateFileObj(newFile.id, {\n status: EUploadStatus.Done,\n name: uploadResult.value.nimi,\n preview: uploadResult.value.naytekuva ? uploadResult.value.naytekuva.base64Data : undefined\n })\n return resolve(newFile)\n } else {\n throw Error('Failed request')\n }\n } catch (err) {\n updateFileObj(newFile.id, { status: EUploadStatus.UploadError })\n return resolve(newFile)\n }\n\n })\n )\n\n const handleSingleRemove = (newFile: IFileObj) => {\n if (!newFile.guid) {\n console.log('Missing file')\n return\n }\n removeFileObj(newFile.id)\n onRemoved(newFile.guid)\n }\n\n\n // Load initial files.\n useEffect(() => {\n let timeout = setTimeout(() => {\n if (uploadedFiles && uploadedFiles.length && !isLoaded) {\n setLoaded(true)\n let newFiles: IFileObj[] = uploadedFiles.map((file: any) => createLoadedFile(file))\n setFiles(newFiles)\n requests = newFiles.map((fileObj) => handleSingleFileInfo(fileObj));\n Promise.all(requests).then(function (values) { });\n // requests.forEach((req: any) => req.cancel())\n }\n }, 50);\n return () => {\n clearTimeout(timeout)\n }\n\n }, [uploadedFiles, fileObjs]) // eslint-disable-line react-hooks/exhaustive-deps\n\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDropAccepted: handleFiles,\n accept,\n disabled\n });\n\n return (\n
\n
\n \n \n \n
\n \n {fileObjs.map((file, index) => (\n \n\n ))}\n \n
\n );\n};\n\nexport default memo(FileUploadBtn);\n","import { TLoadable, createLoaded, createUnloaded, isUnloaded, createLoading, createLoadErrored } from \"../../sg-core/models/ILoadable\";\nimport { useFileUploadService } from \"../context/FileUploadServiceContext\";\nimport { useState, useEffect } from \"react\";\n\nconst useFileToken = (): TLoadable => {\n const uploadService = useFileUploadService();\n\n if (!uploadService) {\n throw new Error(\"[useFileToken] This hook cannot be called outside of a file upload context\");\n }\n\n const [token, setToken] = useState>(createUnloaded());\n\n useEffect(() => {\n const getter = async () => {\n setToken(createLoading());\n\n const result = await uploadService.getFileToken();\n if (result.isSuccess) {\n setToken(createLoaded(result.value));\n } else {\n setToken(createLoadErrored(result.error));\n }\n };\n if (isUnloaded(token)) {\n getter();\n }\n }, [uploadService]);// eslint-disable-line\n\n return token;\n};\n\nexport default useFileToken;\n","import React, { memo, useCallback, PropsWithChildren } from \"react\";\nimport { Label, List, Icon, Image as SUIImage } from \"semantic-ui-react\";\n\nimport SgFileUpload, { IFileUploadElementProps } from \"./FileUpload\";\nimport { IFileObj, EUploadStatus } from \"../models/IFile\";\nimport Image from './Image'\nimport Thumbnail from \"./Thumbnail\";\n\n\nexport interface IImageInputProps {\n files: { id: string; name: string }[]\n multiple?: boolean;\n onUploaded?: (newFiles: { id: string; name: string }[]) => void;\n onRemoved: (guid: string) => void;\n onInvalidFile?: (error: Error) => void;\n inputAreaElem: React.ComponentType>;\n disabled?: boolean\n}\n\nconst noop = () => undefined;\n\nconst ImageListItem: React.FC<{ file: IFileObj; onRemove: any }> = ({ file, onRemove }) => {\n const loading = [EUploadStatus.Uploading, EUploadStatus.Removing].includes(file.status)\n // const complete = file.status === EUploadStatus.Done;\n // const error = [EUploadStatus.RemoveError, EUploadStatus.UploadError].includes(file.status)\n if (file.guid) {\n return (\n \n !loading && onRemove(file)}\n color=\"black\"\n size=\"tiny\"\n style={{ cursor: \"pointer\" }}\n floating circular>\n \n {loading ? : }\n \n \n \n \n )\n }\n\n return (\n \n \n \n );\n\n};\n\nconst ListWrapper: React.FC = ({ children }) => (\n {children} \n)\n\n\nconst ImageInput: React.FC = (props) => {\n const {\n onUploaded = noop,\n onRemoved = noop,\n inputAreaElem,\n multiple,\n files,\n disabled\n } = props;\n\n const onUploadedCallback = useCallback((files: { id: string; name: string }[]) => {\n onUploaded(files);\n }, [onUploaded]);\n\n return (\n \n );\n};\n\nexport default memo(ImageInput);\n","import React, { useState } from \"react\";\nimport { Image, Message, ImageProps, Button, Icon, Modal } from \"semantic-ui-react\";\nimport { useFileUploadService } from \"../context/FileUploadServiceContext\";\nimport useFileToken from \"../hooks/useFileToken\";\nimport { isLoaded, isLoadErrored } from \"../../sg-core/models/ILoadable\";\nimport * as Endpoint from \"../../endpoints\";\n\nconst PUBLIC_PATH = process.env.PUBLIC_URL\n\n\ninterface IImageProps extends ImageProps {\n id: string;\n}\n\nconst getFileUrl = (baseUrl: string, fileId: string, token: string): string => {\n return [\n baseUrl,\n \"?action=hae_tiedosto&varmenne=\",\n token,\n \"&tiedosto=\",\n fileId,\n ].join(\"\");\n};\n\nconst ImageView: React.FC = ({ id, ...imgProps }) => {\n const fileService = useFileUploadService();\n const [imageFailed] = useState(false)\n // const [preview, setPreview] = useState>(createUnsubmitted({}));\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const openModal = () => setIsModalOpen(true);\n const closeModal = () => setIsModalOpen(false);\n\n\n if (!fileService) {\n throw new Error(\"ImageView cannot exists without an SG fileupload context.\");\n }\n\n const fileToken = useFileToken();\n if (imageFailed) {\n // eslint-disable-next-line \n return (\n \n )\n }\n if (isLoaded(fileToken)) {\n const fileUrl = getFileUrl(\n Endpoint.Upload6.path,\n id,\n fileToken.data,\n );\n return (\n \n )}\n onOpen={openModal}\n onClose={closeModal}\n >\n \n
\n \n
\n
\n \n \n \n \n );\n }\n\n if (isLoadErrored(fileToken)) {\n return Kuvan lataus ei onnistunut;\n }\n\n return ;\n\n};\n\nexport default ImageView;\n","import { useMemo } from \"react\";\nimport { ICompany } from \"../../models/ICompany\";\nimport { useHprService } from \"../../context/HprServiceContext\";\nimport { HprCacheKeys } from \"../cacheKeys\";\nimport useSWR, { ConfigInterface } from \"swr\";\n\nexport type IUseCompanyListHook = (config?: ConfigInterface) => {\n data: ICompany[];\n fetching: boolean;\n};\n\nexport const useCompanyList: IUseCompanyListHook = (config) => {\n const service = useHprService();\n const token = service.getToken();\n\n const fetcher = async (): Promise => {\n const companiesData = await service.getCompanies();\n if (companiesData.isFailure) {\n throw companiesData.error;\n }\n return companiesData.value;\n };\n\n const { data, isValidating } = useSWR(() =>\n HprCacheKeys.CompanyList(token),\n fetcher,\n {\n suspense: true,\n revalidateOnFocus: false,\n revalidateOnMount: false,\n revalidateOnReconnect: false,\n initialData: config?.initialData\n }\n );\n\n const rawData = data || [];\n\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating,\n }), [rawData, isValidating]);\n\n};","import { IRole } from \"../interfaces/IAuditoinnitUser\";\nimport { IAppRoleDTO } from \"../interfaces/ICategoryPermission\";\nimport { gateBooleanToBoolean } from \"../../sg-core/utils/GateSupport\";\n\n\nexport const RoleMapper = {\n apiToDomain: (api: IAppRoleDTO): IRole => ({\n id: api.id,\n name: api.nimi,\n reference: api.viitenimi,\n showNameDetail: gateBooleanToBoolean(api.nayta_nimitiedot)\n }),\n};\n\n\nexport default RoleMapper\n\n","\nimport React, { ErrorInfo } from \"react\";\n\ninterface BoundaryProps {\n fallback: any\n}\n\nexport class Boundary extends React.Component {\n state = {\n error: null\n }\n\n static getDerivedStateFromError(error: Error) {\n // Update state so next render shows fallback UI.\n return { error: error };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n // Log the error to an error reporting service\n }\n\n render() {\n if (this.state.error) {\n // You can render any custom fallback UI\n return this.props.fallback;\n }\n\n return this.props.children;\n }\n};\n","import { IPerson } from \"../../sg-hpr/models/IPerson\";\nimport { IFormSchema } from \"../interfaces/IFormSchema\";\nimport IAudit from \"../interfaces/IAudit\";\nimport { auditFormDataToPersonIds } from \"./data.helpers\";\nimport _uniq from \"lodash/uniq\";\n\nexport interface TIdentifiersDTO {\n henkilot: string;\n kohteet: string;\n};\n\n\nexport interface TIdentifiers {\n henkilot: Array;\n kohteet: Array;\n};\n\n\nexport const extractFormDataIdentifiers = (formData: IAudit[\"formData\"], schema: IFormSchema): TIdentifiers => {\n const identifiers: TIdentifiers = {\n henkilot: [],\n kohteet: [],\n };\n\n const personIds = auditFormDataToPersonIds(formData, schema)\n identifiers.henkilot = personIds\n\n if (formData.kohde) {\n identifiers.kohteet = identifiers.kohteet.concat(formData.kohde as any)\n } else if (formData.sijainti) {\n identifiers.kohteet = identifiers.kohteet.concat(formData.sijainti as any)\n };\n\n if (formData.target) {\n identifiers.kohteet = identifiers.kohteet.concat(formData.target as any)\n };\n return identifiers\n};\n\n\nexport const extractFormDataIdentifiersDTO = (formData: IAudit[\"formData\"], formSchema: IFormSchema): TIdentifiersDTO | string => {\n const identifiers = extractFormDataIdentifiers(formData, formSchema);\n\n if (!identifiers.henkilot.length && !identifiers.kohteet.length) {\n return \"n/a\"\n };\n\n return {\n henkilot: _uniq(identifiers.henkilot).join(\",\"),\n kohteet: _uniq(identifiers.kohteet).join(\",\"),\n }\n}\n\nexport const extractIdentifiersDTOFromAudit = (audit: IAudit): TIdentifiersDTO | string => {\n if (!audit.formSchema) {\n throw Error(\"Missing form configuration\")\n }\n\n let identifiers = extractFormDataIdentifiers(audit.formData, audit.formSchema);\n\n if (audit.metaData.participants) {\n identifiers.henkilot = [...identifiers.henkilot, ...audit.metaData.participants];\n }\n\n if (!identifiers.henkilot.length && !identifiers.kohteet.length) {\n return \"n/a\"\n };\n\n return {\n henkilot: identifiers.henkilot.join(\",\"),\n kohteet: identifiers.kohteet.join(\",\"),\n }\n}","import IHavainnotUser from \"../../interfaces/IHavainnotUser\";\n\nexport const requestLogin = \"REQUEST_LOGIN\";\nexport const setLanguage = \"SET_LANGUAGE\";\n\n\nexport const requestInitializeLogin = \"REQUEST_INITIALIZE_LOGIN\";\nconst successLogin = \"SUCCESS_LOGIN\";\nconst successGateLogin = \"SUCCESS_GATE_LOGIN\";\nexport const successAnonLogin = \"SUCCESS_ANON_LOGIN\";\n\nconst failureLogin = \"FAILURE_LOGIN\";\nexport const logout = \"LOGOUT\";\n\n\nexport const requestUsersAppRoles = \"REQUEST_FETCH_USERS_APP_ROLES\";\nconst successFetchUsersAppRoles = \"SUCCESS_FETCH_USERS_APP_ROLES\";\nconst failureFetchUsersAppRoles = \"FAILURE_FETCH_USERS_APP_ROLES\";\nexport const setUserAppRoles = \"SET_APP_ROLES\";\n\n// TYPES\nexport interface IRequestLogin {\n type: typeof requestLogin;\n payload: {\n username: string;\n password: string;\n };\n}\n\nexport interface ISetLanguage {\n type: typeof setLanguage;\n payload: {\n language: string;\n };\n}\n\n\ninterface ISuccessLogin {\n type: typeof successLogin;\n payload: {\n sid: string;\n user: IHavainnotUser;\n returnHref: string;\n lang: string;\n };\n}\n\ninterface ISuccessGateLogin {\n type: typeof successGateLogin;\n payload: {\n sid: string;\n user: IHavainnotUser;\n returnHref: string;\n lang: string;\n rdr: string;\n };\n}\n\ninterface ISuccessAnonLogin {\n type: typeof successAnonLogin;\n payload: {\n sid: string;\n data: any;\n };\n}\n\n\ninterface IFailureLogin {\n type: typeof failureLogin;\n error: Error;\n}\n\ninterface IRequestInitializeLogin {\n type: typeof requestInitializeLogin;\n}\n\ninterface ILogout {\n type: typeof logout;\n}\n\n\nexport type TAuthAction\n = IRequestLogin\n | ISuccessGateLogin\n | ISuccessLogin\n | IFailureLogin\n | IRequestInitializeLogin\n | ILogout\n\n | ISuccessAnonLogin\n\n | IRequestFetchUsersAppRoles\n | ISuccessFetchUsersAppRoles\n | IFailureFetchUsersAppRoles\n | ISetUserAppRoles\n | ISetLanguage\n ;\n\n// CREATORS\nexport const createRequestLoginAction = (username: string, password: string): IRequestLogin => ({\n type: requestLogin,\n payload: { username, password },\n});\n\nexport const createRequestInitializeLoginAction = (): IRequestInitializeLogin => ({\n type: requestInitializeLogin,\n});\n\nexport const createSetLanguageAction = (language: string): ISetLanguage => ({\n type: setLanguage,\n payload: { language }\n});\n\nexport const createSuccessLoginAction = (sid: string, user: IHavainnotUser, returnHref: string, lang: string): ISuccessLogin => ({\n type: successLogin,\n payload: { sid, user, returnHref, lang },\n});\n\nexport const createSuccessGateLoginAction = (sid: string, user: IHavainnotUser, returnHref: string, lang: string, rdr: string): ISuccessGateLogin => ({\n type: successGateLogin,\n payload: { sid, user, returnHref, lang, rdr },\n});\n\nexport const createSuccessAnonLoginAction = (sid: string, data: any): ISuccessAnonLogin => ({\n type: successAnonLogin,\n payload: { sid, data },\n});\n\n\nexport const createFailureLoginAction = (error: Error): IFailureLogin => ({\n type: failureLogin,\n error,\n});\n\nexport const createLogoutAction = (): ILogout => ({\n type: logout,\n});\n\n\nexport interface IRequestFetchUsersAppRoles {\n type: typeof requestUsersAppRoles;\n}\n\ninterface ISuccessFetchUsersAppRoles {\n type: typeof successFetchUsersAppRoles;\n payload: { roles: string[] };\n}\n\ninterface IFailureFetchUsersAppRoles {\n type: typeof failureFetchUsersAppRoles;\n payload: { error: Error };\n}\n\nexport interface ISetUserAppRoles {\n type: typeof setUserAppRoles;\n payload: { roles: string[] }\n}\n\n\nexport const createRequestFetchUserAppRoles = (): IRequestFetchUsersAppRoles => ({\n type: requestUsersAppRoles,\n});\n\nexport const createSuccessFetchUserAppRoles = (roles: string[]): ISuccessFetchUsersAppRoles => ({\n type: successFetchUsersAppRoles,\n payload: { roles },\n});\n\nexport const createFailureFetchUserAppRoles = (error: Error): IFailureFetchUsersAppRoles => ({\n type: failureFetchUsersAppRoles,\n payload: { error },\n});\n\nexport const createSetUserAppRolesAction = (roles: string[]): ISetUserAppRoles => ({\n type: setUserAppRoles,\n payload: { roles },\n});\n\n\n\n","import React from \"react\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { TEvaluationCehckValue } from \"./EvalutaionCheckWidget\";\nimport { IconProps, Icon } from \"semantic-ui-react\";\nimport { TFunction } from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\n\nconst getTextProps = (t: TFunction) => ({\n ok: t(\"Kunnossa\"),\n notOk: t(\"Korjattavaa\"),\n uknown: t(\"Ei tietoa\"),\n});\n\nexport const EvalutaionCheckDisplay: React.FC = (props) => {\n const texts = getTextProps(useTranslation().t)\n\n const { schema } = props\n const valueObj: TEvaluationCehckValue = typeof props.value === \"object\" && props.value?.notes ? props.value : { notes: [] }\n const enums: any[] = schema.enum ?? [0, 1, 2];\n\n if (enums.length > 3) { console.warn(\"EvalutaionCheckDisplay recieved more than 3 enums\"); };\n\n const renderItem = (text: string, iconProps: IconProps) => (\n
\n \n {text}\n
\n );\n\n return (\n
\n {valueObj.status === enums[1] && renderItem(texts.ok, { name: \"check\", color: \"green\" })}\n {valueObj.status === enums[0] && renderItem(texts.notOk, { name: \"times\", color: \"red\" })}\n {valueObj.status === enums[2] && renderItem(texts.uknown, { name: \"question\" })}\n
\n\n )\n};\n","import { IFormSchema } from \"../interfaces/IFormSchema\";\nimport { EEvaluationStatus, IEvaluations } from \"../interfaces/IEvaluation\";\nimport selectn from \"selectn\";\nimport { TEvaluationCehckValue } from \"../components/form/jsonSchemaWidgets/EvaluationCheck/EvalutaionCheckWidget\";\nimport { TEvaluationCounterValue } from \"../components/form/jsonSchemaWidgets/EvaluationCounter/EvaluationCounterWidget\";\nimport { JSONSchema, JSONSchemaDefinition } from \"../../sg-schema/RJSF\";\nimport { mapAuditingToEvaluations } from \"../../@custom/sg-mapAuditing/components/MapAuditing.utils\";\n\nconst EVALUATION_WIDGET_LIST = [\"evaluationCheck\", \"evaluationCounter\"];\n\n/**\n * Makes best guess wheter property is evaluation check or counter\n */\nconst isEvaluationField = (uiProps: { [key: string]: any }) => {\n return uiProps[\"ui:field\"] === \"evaluation\" || EVALUATION_WIDGET_LIST.includes(uiProps[\"ui:widget\"])\n};\n\n/**\n * Loops trough each schema property\n * @param properties \n * @param invoke \n * @param pathBase \n */\nconst forEachSchemaProp = (\n properties: JSONSchema[\"properties\"],\n invoke: (path: string, prop: JSONSchemaDefinition) => void,\n pathBase?: string\n) => {\n if (!properties) { return };\n\n Object.keys(properties).forEach((key) => {\n const prop = properties[key];\n if (prop === true || prop === false) { return };\n\n if (prop.type === \"object\") {\n if (prop.additionalProperties) {\n invoke(pathBase ? [pathBase, key].join(\".\") : key, prop);\n }\n forEachSchemaProp(prop.properties, invoke, key);\n return\n }\n\n const path = pathBase ? [pathBase, key].join(\".\") : key;\n invoke(path, prop);\n });\n};\n\n/**\n * Sets value by property path\n */\nfunction setToValue(obj: { [key: string]: any }, value: any, path: string) {\n var i;\n //@ts-ignore\n path = path.split('.');\n for (i = 0; i < path.length - 1; i++) {\n obj = (obj || {})[path[i]];\n\n }\n\n (obj || {})[path[i]] = value;\n\n}\n\n/**\n * Gathers all unfilled evaluation check and counter fields, and returns list schema property paths\n */\nexport const fillUnfilledFields = (formData: { [key: string]: any }, unfilledFields: string[]) => {\n\n const filledValue: TEvaluationCehckValue = { status: EEvaluationStatus.Uknown as any, notes: [] }\n\n unfilledFields.forEach((path) => {\n setToValue(formData, filledValue, path);\n });\n\n return formData\n};\n\n\n\n\n/**\n * Gathers all unfilled evaluation check and counter fields, and returns list schema property paths\n */\nexport const getUnfilledFields = (formData: { [key: string]: any }, schemas: IFormSchema) => {\n const { uiSchema, schema } = schemas\n if (!schema?.properties) { return };\n if (schemas.uiSchema[\"ui:consentEvaluationChecks\"] !== true) { return };\n\n let unfilledFields: string[] = [];\n\n forEachSchemaProp(schema.properties, (path, prop) => {\n const uiProps = selectn(path, uiSchema) || {};\n if (isEvaluationField(uiProps)) {\n const value: TEvaluationCehckValue & TEvaluationCounterValue | undefined = selectn(path, formData);\n\n if ((!value || typeof value.status === \"undefined\") && (!value || (!value.notOkay && !value.okay))) {\n unfilledFields.push(path)\n }\n };\n })\n\n return unfilledFields\n};\n\n\n/**\n * Gathers all evaluation check and counter fields, and returns mapping of schema property paths and values\n */\nexport const resolveEvaluationsData = (formData: { [key: string]: any }, schemas: IFormSchema) => {\n const { uiSchema, schema } = schemas\n if (!schema?.properties) { return };\n\n let data: IEvaluations = {};\n\n forEachSchemaProp(schema.properties, (path, prop) => {\n const uiProps = selectn(path, uiSchema) || {};\n\n if (isEvaluationField(uiProps)) {\n const value = selectn(path, formData);\n data[path] = value;\n\n } else if (uiProps[\"ui:field\"] === \"mapAuditing\") {\n const mapAuditingValue = selectn(path, formData) || {};\n const mappedChecks = mapAuditingToEvaluations(mapAuditingValue, path);\n data = { ...data, ...mappedChecks };\n }\n })\n\n return data;\n};\n\n","import React, { Fragment } from \"react\";\nimport { PersonNameById } from \"../../../sg-hpr/components/persons/PersonName\";\nimport { useApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\nimport { ControlledObservationFormFields as ControlledFields, IAuditNoteFormData } from \"../../interfaces/IAuditNote\";\nimport moment from \"moment\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport { FormTypeName } from \"../formType/FormTypeName\";\n\ninterface NoteFormInfoProps {\n formData: IAuditNoteFormData;\n auditFormType: IFormType[\"id\"];\n};\n\nexport const NoteFormInfo: React.FC = ({\n formData,\n auditFormType\n}) => {\n\n const { components: { LocationName } } = useApplicationConfiguration();\n\n return (\n
\n
\n {/*\n
\n {formData.target && (\n \n )}\n
\n */}\n
\n {formData.creator && (\n \n )}\n
\n
\n {formData[ControlledFields.eventTime] && (\n moment(formData[ControlledFields.eventTime]).format(\"DD.MM.YYYY\")\n )}\n
\n
\n );\n};\n","import React from \"react\";\nimport { Icon, IconProps } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Boundary } from \"../Boundary\";\nimport { useObservationContext } from \"../../data/observations/useObservationContext\";\n\ninterface ObservationFormCategoryIconProps extends Omit {\n categoryId: number;\n}\n\nconst ObservationFormCategoryIconContent: React.FC = ({ categoryId, ...iconProps }) => {\n const { data: { categories } } = useObservationContext();\n const { t } = useTranslation();\n\n const cetegory = categories.find(({ id }) => id === categoryId);\n\n if (!cetegory) {\n console.warn(t(\"Tuntematon kategoriatunniste\"));\n return null;\n };\n\n if (!cetegory.icon) {\n return null;\n }\n\n return ;\n}\n\nexport const ObservationFormCategoryIcon: React.FC = (props) => {\n return (\n ?
}>\n \n \n )\n}\n","\n\n\nimport React, { Fragment } from \"react\";\nimport { useObservationFormDefinition } from \"../../data/observations/useObservationFormDefinition\";\nimport IFormDefinition from \"../../interfaces/IFormDefinition\";\n\ntype IRenderProps = { formDefinition: IFormDefinition | null };\n\ninterface RenderObservationFormDefinitionProps {\n formReference: string;\n render: (props: IRenderProps) => any;\n};\n\nexport const RenderObservationFormDefinition: React.FC = ({ formReference, render }) => {\n const { data: formDefinition } = useObservationFormDefinition(formReference);\n return (\n \n {render({ formDefinition })}\n \n );\n};\n\n","import React, { RefObject, useMemo } from \"react\";\nimport { FormProps } from \"semantic-ui-react\";\nimport SchemaForm from \"../schema/SchemaForm\";\nimport IFormDefinition from \"../../interfaces/IFormDefinition\";\nimport { transformObservationSchema } from \"../../utils/observation.helpers\";\nimport { IFormSchema } from \"../../interfaces/IFormSchema\";\n\n\n\nexport interface ObservationFormProps extends Omit {\n formData: { [key: string]: any }\n onChange: (values: { [key: string]: any }) => void;\n onSubmit: (values: { [key: string]: any }, observationSchema: IFormSchema) => void;\n\n formDefinition: IFormDefinition;\n submitButton: RefObject;\n};\n\nexport const ObservationForm: React.FC = ({\n formData,\n\n onChange: updateFormData,\n onSubmit: submit,\n\n formDefinition,\n\n submitButton,\n ...formProps\n}) => {\n\n const modifiedSchema = useMemo(() => {\n return transformObservationSchema(formDefinition.schema);\n }, [formDefinition]);\n\n\n return (\n submit(values, formDefinition.schema)}\n onChange={(form) => updateFormData(form.formData)}\n ErrorList={(form) => null}\n >\n
\n \n
\n \n \n\n );\n\n\n\n const parent = document.getElementById(\"create-note-modal-container\");\n if (!parent) {\n return null\n }\n\n return ReactDOM.createPortal(modal, parent);\n};\n\nexport default EditableAuditNoteModal;","\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Icon } from \"semantic-ui-react\";\n\ninterface NotifyByIconProps {\n notifyBy: \"phone\" | \"mail\" | \"none\"\n};\n\nexport const NotifyByIcon: React.FC = ({ notifyBy }) => {\n const t = useTranslation().t;\n\n const texts = {\n notificationsByPhone: t(\"Ilmoitukset lähetetään tekstiviestillä\"),\n notificationsByEmail: t(\"Ilmoitukset lähetetään sähköpostilla\"),\n unableToSendNotifications: t(\"Käyttäjälle ei voida lähettää ilmoituksia\"),\n };\n\n\n return (\n \n {notifyBy === \"phone\" ? (\n \n {\" \"}\n \n ) : notifyBy === \"mail\" ? (\n \n {\" \"}\n \n ) : notifyBy === \"none\" ? (\n \n {\" \"}\n \n ) : null}\n \n )\n}","import React from \"react\";\nimport { Icon, List } from \"semantic-ui-react\";\nimport PersonName from \"../PersonName\";\nimport { usePerson } from \"../../../data/persons/usePerson\";\nimport { CompanyNameById } from \"../../companies/CompanyName\";\nimport { IPerson } from \"../../../models/IPerson\";\nimport { TCertValidationFn } from \"../../../hooks/usePersonCertValidator\";\nimport { PersonCertStatus } from \"../PersonCertStatus\";\nimport \"./_PersonSearch.less\";\nimport { NotifyByIcon } from \"./NotifyByIcon\";\n\n\ninterface PersonSearchListItemProps {\n personId: number;\n onUnselect?: (id: number) => void;\n onEditPerson?: (id: IPerson) => void;\n certValidator: TCertValidationFn;\n};\n\nexport const PersonSearchListItem: React.FC = ({\n personId,\n onUnselect,\n onEditPerson,\n certValidator\n}) => {\n // const t = useTranslation().t;\n /*\n const texts = {\n notificationsByPhone: t(\"Ilmoitukset lähetetään tekstiviestillä\"),\n notificationsByEmail: t(\"Ilmoitukset lähetetään sähköpostilla\"),\n unableToSendNotifications: t(\"Käyttäjälle ei voida lähettää ilmoituksia\"),\n };\n */\n const { data: person } = usePerson(personId);\n\n if (!person) {\n return null\n };\n\n const certStatus = certValidator(person.certs)\n const notifyBy = person.phone?.length ? \"phone\" : person.email?.length ? \"mail\" : \"none\";\n\n return (\n \n
\n
\n {certStatus ? (\n \n ) : null}\n\n \n\n
\n \n {person.company && (\n \n )}\n
\n
\n\n\n
\n onEditPerson && onEditPerson(person)}>\n \n \n onUnselect && onUnselect(person.id)}>\n \n \n
\n\n
\n
\n )\n};\n","import React, { Fragment } from \"react\";\nimport { Menu, Segment } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { IPerson } from \"../../../models/IPerson\";\nimport PersonName from \"../PersonName\";\nimport { TCertValidationFn } from \"../../../hooks/usePersonCertValidator\";\nimport { PersonCertStatus } from \"../PersonCertStatus\";\nimport { NotifyByIcon } from \"./NotifyByIcon\";\nimport { RenderCompany } from \"../../companies/RenderCompany\";\nimport { ICompany } from \"../../../models/ICompany\";\n\n\ninterface PersonSearchMenuContentProps {\n searching: boolean;\n searchError: string | undefined;\n results: IPerson[];\n onResultSelect: (id: IPerson[\"id\"]) => void;\n onAddPerson?: () => void;\n certValidator: TCertValidationFn;\n showNotifyBy?: \"phone\" | \"email\" | \"phone_and_email\"\n}\nexport const PersonSearchMenuContent: React.FC = (props) => {\n const { searching, searchError, results, onResultSelect, onAddPerson, certValidator, showNotifyBy } = props;\n\n const t = useTranslation().t;\n const texts = {\n noResults: t(\"Ei tuloksia\"),\n addNew: t(\"Lisää uusi\"),\n searchError: t(\"Haku virhe!\"),\n searching: t(\"Haetaan...\")\n };\n\n return (\n \n {searchError && (\n \n {texts.searchError} \n \n )}\n\n {searching ? (\n {texts.searching} \n ) : results?.length ? (\n \n {results.map((item) => {\n const certStatus = certValidator(item.certs)\n const notifyBy = showNotifyBy === \"phone_and_email\" ? (\n item.phone?.length ? \"phone\" : item.email?.length ? \"mail\" : \"none\"\n ) : showNotifyBy === \"phone\" ? item.phone?.length ? \"phone\" : \"none\" :\n showNotifyBy === \"email\" ? (\n item.email?.length ? \"mail\" : \"none\"\n ) : undefined;\n\n\n const renderPerson = (company?: ICompany) => (\n : notifyBy ? : undefined}\n />\n );\n\n return (\n onResultSelect(item.id)}\n style={{ minWidth: \"300px\" }}\n content={(\n \n {item.company ? (\n company ? renderPerson(company) : renderPerson()}\n />\n ) : renderPerson()}\n\n \n )}\n />\n )\n })}\n {onAddPerson && (\n \n )}\n \n ) : (\n \n {texts.noResults} \n {onAddPerson && (\n \n )}\n \n )\n }\n\n \n )\n};\n\n\n","import React, { useRef, useState, useEffect, useMemo, useCallback, Suspense, Fragment } from \"react\";\nimport { Icon, Dropdown, Input, InputProps, DropdownProps, List, Menu, Checkbox, Form } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSearchPerson } from \"../../../data/persons/useSearchPerson\";\nimport { IPerson } from \"../../../models/IPerson\";\nimport { useBool } from \"@sg-core/index\"\nimport { useOnClickOutside } from \"@sg-core/index\";\nimport { TPickerValue } from \"../../../models/IHprPicker\";\nimport { PersonNameById } from \"../PersonName\";\nimport { PersonSearchListItem } from \"./PersonSearchListItem\";\nimport { PersonSearchMenuContent } from \"./PersonSearchMenuContent\";\nimport { usePersonCertValidator } from \"../../../hooks/usePersonCertValidator\";\nimport { PersonCertStatus } from \"../PersonCertStatus\";\nimport { usePerson } from \"../../../data/persons/usePerson\";\nimport _debounce from \"lodash/debounce\";\nimport useSWR from \"swr\";\nimport \"./_PersonSearch.less\";\n\n\ninterface PersonSearchProps extends Omit {\n onChange: (value: TPickerValue) => void;\n value?: TPickerValue;\n isMulti?: boolean;\n onAddPerson?: () => void;\n onEditPerson?: (id: IPerson) => void;\n requiredCerts: Array;\n showNotifyBy?: \"phone\" | \"email\" | \"phone_and_email\",\n excludeUncertified?: boolean;\n};\n\nconst PersonSearch: React.FC = ({\n value,\n onChange,\n isMulti = false,\n clearable = true,\n onAddPerson,\n onEditPerson,\n requiredCerts,\n showNotifyBy,\n excludeUncertified = false,\n ...dropdownProps\n}) => {\n\n const t = useTranslation().t;\n const texts = {\n typeToSeach: t(\"Kirjoita hakeaksesi\"),\n noResults: t(\"Ei tuloksia...\"),\n addNew: t(\"Lisää uusi\"),\n searchError: t(\"Haku virhe!\"),\n selected: t(\"Valittuna\"),\n editPersonsDetail: t(\"Muokkaa käyttäjän tietoja\")\n };\n\n const { search } = useSearchPerson();\n\n\n const wrapperElement = useRef();\n const inputElement = useRef();\n\n const [isOpen, open, close] = useBool();\n\n const [searchInput, setSearchInput] = useState();\n const [query, setQuery] = useState();\n const searchQuery = isOpen ? query || \" \" : query;\n\n\n const getValidValue = (value: TPickerValue) => isMulti ? Array.isArray(value) ? value : [] : value || null;\n const selected = getValidValue(value);\n const hasValue = Array.isArray(selected) ? selected.length : selected;\n const selectedCount = Array.isArray(selected) ? selected.length : selected ? 1 : 0;\n\n\n const debouncedSetquery = useCallback(_debounce(setQuery, 300), []);\n\n const { validatePersonCerts } = usePersonCertValidator(requiredCerts);\n const { data: singleSelectedPerson } = usePerson(!Array.isArray(selected) ? selected : null);\n const singleSelectedPersonCertStatus = singleSelectedPerson ? validatePersonCerts(singleSelectedPerson.certs) : undefined;\n\n\n\n\n useEffect(() => { debouncedSetquery(searchInput); }, [searchInput, debouncedSetquery]);\n\n useEffect(() => {\n if (isOpen) {\n inputElement.current?.focus();\n }\n }, [isOpen]);\n\n const fetcher = async (key: string): Promise> => {\n const query = key.split(\"-\").reverse()[0]; // eslint-disable-line\n\n if (!query) { return []; };\n\n\n /// showOnlyValidPersons\n const result = await search(query, excludeUncertified ? requiredCerts : undefined);\n if (result.isFailure) {\n throw result.error\n };\n\n return result.value\n };\n\n\n const { data, isValidating: searching, error: searchError } = useSWR(\n `PersonSearch_query-${requiredCerts.join(\"-\")}-${searchQuery}`,\n fetcher,\n {\n suspense: false,\n dedupingInterval: 300\n }\n );\n\n\n const resultsWithoutSelected = useMemo(() => {\n return (data || []).filter((item) => Array.isArray(selected) ? !selected.includes(item.id) : selected !== item.id)\n }, [data, selected]);\n\n const closeResults = useCallback(() => {\n if (isOpen) {\n close();\n setSearchInput(\"\");\n }\n }, [close, isOpen]);\n\n\n const updateValue = (value: TPickerValue) => {\n onChange(value);\n if (!isMulti) { closeResults(); };\n\n if (searchInput) { setSearchInput(\"\") };\n\n const neutralizedValue = Array.isArray(value) ? value : value ? [value] : [];\n const unSelectedResults = (data || []).filter((res) => !neutralizedValue.includes(res.id));\n\n if (!unSelectedResults.length) { setSearchInput(\"\") }\n };\n\n const selectPerson = (itemId: number) => {\n if (isMulti) {\n if (!Array.isArray(selected)) throw Error(\"Selected is not array\");\n const isSelected = selected.indexOf(itemId) > -1;\n updateValue(isSelected ? selected.filter((id) => id !== itemId) : [...selected, itemId]);\n } else {\n updateValue(itemId)\n };\n };\n\n\n const selectResult = (itemId: number) => {\n selectPerson(itemId);\n if (isMulti) {\n inputElement.current?.focus();\n }\n };\n\n const _onClear = () => updateValue(isMulti ? [] : null);\n\n const _onInputChange: InputProps[\"onChange\"] = (event, data) => {\n let newQuery = data.value;\n if (hasValue && isMulti && !searchInput?.length) {\n newQuery = newQuery.slice(-1);\n }\n //@ts-ignore\n if ((event.key === \"Backspace\" || event.nativeEvent.inputType === \"deleteContentBackward\") && !searchInput?.length) {\n return\n }\n if (!isOpen) {\n open()\n }\n setSearchInput(newQuery);\n };\n\n const _onInputKeyDown: InputProps[\"onKeyDown\"] = (event: any, data: any) => {\n if (event.key === \" \") {\n _onInputChange(event, { ...data, value: event.target.value + \" \" }); // Fixes wierd bug, where spacebar is dosn't fire inputs onChange handler\n return\n } else if (event.key === \"Backspace\" && !searchInput?.length) {\n if (hasValue) {\n if (isMulti) {\n Array.isArray(value) && updateValue(value.splice(0, value.length - 1))\n } else {\n updateValue(undefined)\n }\n }\n };\n };\n\n const _onInputFocus: InputProps[\"onFocus\"] = async () => {\n open();\n };\n\n useOnClickOutside(wrapperElement, closeResults);\n\n\n return (\n
\n
\n\n \n \n\n {clearable && hasValue ? (\n
\n \n
\n ) : null}\n\n {!isOpen && hasValue ? (\n
\n {selected && !Array.isArray(selected) ? (\n \n }\n personId={selected as any}\n showCompany\n />\n \n ) : isMulti ? (\n `Valittuna ${selectedCount} henkilö`\n ) : null}\n
\n ) : null}\n\n
\n )}\n {...dropdownProps}\n >\n \n }>\n \n {selected && !isMulti && singleSelectedPerson ? (\n onEditPerson && onEditPerson(singleSelectedPerson)}\n content={texts.editPersonsDetail}\n />\n ) : null}\n \n \n \n
\n\n {\n isMulti && Array.isArray(selected) && selected.length ? (\n \n {selected.map((personId) => (\n }>\n \n \n ))}\n \n ) : null\n }\n \n );\n};\n\n\nexport default PersonSearch;\n","import { useLoading } from \"@sg-core/index\";\nimport { makeSuccess, TResult, makeFailure } from \"@sg-core//index\";\nimport { useHprService } from '../../context/HprServiceContext';\nimport { IPerson } from '../../models/IPerson';\nimport { usePersonCache } from './usePersonCache';\nimport { useMemo } from 'react';\nimport { useHprSettings } from '../hprSettings/useHprSettings';\n\ninterface IUseSearchPersonData {\n search: (text: string, requiredCerts?: Array) => Promise>;\n searching: boolean;\n searchError?: string;\n};\n\nexport type IUseSearchPersonHook = () => IUseSearchPersonData;\n\nexport const useSearchPerson: IUseSearchPersonHook = () => {\n\n const {\n loading: searching,\n loadError: searchError,\n startLoading,\n loadSuccess,\n loadErrored,\n } = useLoading();\n\n const { data: settings } = useHprSettings();\n const certList = settings?.certs ? Object.keys(settings?.certs) : [];\n\n\n const service = useHprService();\n const { appendPersons } = usePersonCache();\n\n const search = async (text: string, requiredCerts?: Array): Promise> => {\n try {\n\n startLoading();\n const result = await service.searchPersonByText(text, certList, requiredCerts);\n\n if (result.isSuccess) {\n loadSuccess();\n await appendPersons(result.value);\n return makeSuccess(result.value);\n };\n throw result.error;\n } catch (error) {\n // console.info(error);\n loadErrored((error as Error).message);\n return makeFailure(error as Error)\n };\n };\n\n return useMemo(() => ({\n search,\n searching,\n searchError,\n }), [searching, searchError]); // eslint-disable-line\n};\n","import { useHprSettings } from \"../data/hprSettings/useHprSettings\";\nimport { ECertStatus } from \"../models/ICert\";\nimport { IPerson } from \"../models/IPerson\";\nimport { getCertStatus } from \"../utils/cert.helper\";\n\n\nexport type TCertValidationFn = (personCerts: IPerson[\"certs\"]) => ECertStatus | undefined;\n\nexport type IUsePersonCertValidatorHook = (requiredCerts: Array) => {\n validatePersonCerts: TCertValidationFn;\n};\n\nexport const usePersonCertValidator: IUsePersonCertValidatorHook = (requiredCerts) => {\n\n const { data } = useHprSettings()\n const certs = data?.certs;\n\n const validatePersonCerts = (personCerts: IPerson[\"certs\"]) => {\n if (!certs || !personCerts || requiredCerts.length < 1) return;\n return getCertStatus(personCerts, certs, requiredCerts)\n }\n\n return { validatePersonCerts }\n\n};","import React, { Fragment } from 'react';\n\nimport { ObjectFieldTemplateProps } from '@rjsf/core';\nimport { AccordionObjectFieldProvider } from './AccordionObjectFieldContext';\nimport { Divider } from 'semantic-ui-react';\nimport ObjectFieldTemplate from '../../../../../sg-schema/themes/semantic/templates/ObjectFieldTemplate';\nimport \"./_AccordionObjectField.less\";\n\n\nconst AccordionObjectField = (props: ObjectFieldTemplateProps) => {\n\n // Prevents infinite loop\n let uiSchema = props.uiSchema;\n uiSchema[\"ui:objectTemplate\"] = \"\";\n\n return (\n \n \n \n \n \n )\n};\n\nexport default AccordionObjectField;\n","import React from \"react\";\n\nimport { utils } from \"@rjsf/core\";\nimport { FieldProps } from \"@rjsf/core\";\nimport { EvalutaionCheckWidget } from \"../../jsonSchemaWidgets/EvaluationCheck/EvalutaionCheckWidget\";\nimport { Header, List, Form } from \"semantic-ui-react\";\nimport { useSchemaTranslation } from \"../../../../../sg-schema/useSchemaTranslation\";\n\n/*\n\n\n CURRENTLY HAS NO USE\n\n\n\n*/\n\nconst EvaluationField: React.FC = (props) => {\n const {\n schema,\n name,\n uiSchema,\n idSchema,\n formData,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n registry = utils.getDefaultRegistry(),\n errorSchema,\n } = props;\n\n const { t } = useSchemaTranslation();\n const { title } = schema;\n const { widgets, formContext } = registry;\n let defaultWidget = EvalutaionCheckWidget;\n\n const options: any = utils.getUiOptions(uiSchema) || {};\n\n const { widget = defaultWidget, placeholder = \"\", header = {}, ...uiOptions } = options;\n\n const Widget = utils.getWidget(schema, widget, widgets);\n const text = options.title || schema.title || name;\n\n const rawErrors = props.rawErrors || (errorSchema[\"status\"] && errorSchema[\"status\"].__errors);\n const rawDescription = schema[\"description\"] || uiSchema[\"description\"] || uiSchema[\"ui:description\"];\n const displayLabel = widget !== \"checkbox\" && props.label !== \" \";\n console.log(name, { rawDescription, displayLabel, options, props });\n return (\n \n {text ? (\n
\n {\" \"}\n {t(text)}{\" \"}\n
\n ) : null}\n\n {displayLabel && rawDescription ?

{t(rawDescription)}

: null}\n\n \n\n {rawErrors && rawErrors.length > 0 && (\n \n {rawErrors.map((error: any, i: number) => (\n \n {error}\n \n ))}\n \n )}\n
\n );\n};\n\nEvaluationField.defaultProps = {\n uiSchema: {},\n disabled: false,\n readonly: false,\n autofocus: false,\n};\n\nexport default EvaluationField;\n","import React from 'react';\nimport { ObjectFieldTemplateProps } from '@rjsf/core';\nimport { Segment } from 'semantic-ui-react'\nimport { useSchemaTranslation } from '../../../../../sg-schema/useSchemaTranslation';\nimport { EEvaluationStatus } from '../../../../interfaces/IEvaluation';\n\nconst EvaluationObjectTemplate = (props: ObjectFieldTemplateProps) => {\n const {\n DescriptionField,\n description,\n TitleField,\n title,\n properties,\n required,\n uiSchema,\n idSchema,\n formContext,\n } = props;\n const { t } = useSchemaTranslation();\n const observationForm = uiSchema[\"ui:observationFormReference\"];\n\n const propertiesWithValue = properties.filter((property) => {\n const props = property.content.props\n const isEmptyValue = (!props.formData || !props.formData.status) || (props.formData.status === EEvaluationStatus.Uknown && typeof props.formData.okay === \"undefined\" && typeof props.formData.notOkay === \"undefined\")\n return formContext.hideUknownEvaluationChecks === true ? !isEmptyValue : true\n });\n\n if (!propertiesWithValue.length) {\n return null\n }\n\n return (\n
\n {(uiSchema['ui:title'] || title) && (\n \n )}\n {description && (\n \n )}\n
\n {properties.map((element: any, index) => {\n const props = element.content.props\n\n if (!props.uiSchema[\"ui:observationFormReference\"]) {\n element.content.props.uiSchema[\"ui:observationFormReference\"] = observationForm;\n }\n\n return (\n \n {element.content}\n \n )\n })}\n
\n\n
\n );\n};\n\nexport default EvaluationObjectTemplate;\n","\nimport { FieldProps } from \"@rjsf/core\";\nimport { StatelessComponent } from \"react\";\nimport { MapAuditingField } from \"../../../../@custom/sg-mapAuditing\";\nimport AccordionItemObjectField from \"./AccordionObjectField/AccordionItemObjectField\";\nimport AccordionObjectField from \"./AccordionObjectField/AccordionObjectField\";\nimport EvaluationChecksField from \"./EvaluationField/EvaluationField\";\nimport EvaluationObjectTemplate from \"./EvaluationObjectTemplate/EvaluationObjectTemplate\";\n\nexport default {\n evaluation: EvaluationChecksField,\n mapAuditing: MapAuditingField as StatelessComponent\n};\n\nexport const ObjectFieldTemplates = {\n accordion: AccordionObjectField,\n accordionItem: AccordionItemObjectField,\n evaluation: EvaluationObjectTemplate\n};","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { TFunction } from \"i18next\";\nimport { Icon, SemanticICONS } from \"semantic-ui-react\"\nimport IObservation from \"../../interfaces/IObservation\";\n\nconst getTextProps = (t: TFunction) => ({\n sending: t(\"Lähetetään havaintosovellukseen\"),\n sended: t(\"Lähetetty havaintosovellukseen\"),\n sendError: t(\"Lähetys havaintosovellukseen epäonnistui\"),\n});\n\ninterface NoteSubmitStatusProps {\n status?: \"submitted\" | \"unsubmitted\" | \"submitError\",\n className?: string;\n relatedObservation?: IObservation[\"id\"];\n};\n\nexport const NoteSubmitStatus: React.FC = ({\n className,\n status,\n relatedObservation\n}) => {\n const texts = getTextProps(useTranslation().t);\n\n const icon: SemanticICONS = \"paper plane\";\n\n if (!status && relatedObservation) {\n status = \"submitted\"\n };\n\n if (!status) {\n return null\n };\n\n const statusText = {\n \"submitted\": texts.sended,\n \"submitError\": texts.sendError,\n \"unsubmitted\": texts.sending\n }[status];\n\n\n\n return (\n

\n \n {statusText}\n

\n )\n}","import { ControlledObservationFormFields, IAuditNote, IAuditNoteFormData, TEditableAuditNote } from \"../interfaces/IAuditNote\";\n\nconst AuditNoteMapper = {\n domainToFormData: (domain: IAuditNote): IAuditNoteFormData => ({\n otsikko: domain.title,\n kuvaus: domain.details,\n makeObservation: Boolean(domain.relatedObservation),\n\n sijainti: domain.target,\n ilmottaja: domain.creator,\n tapahtuma_aika: domain.eventTime,\n kuvat: domain.images,\n // kuva: domain.images,\n }),\n\n\n\n editableNoteToMetaData: (note: TEditableAuditNote): Pick => {\n if (note.unsubmitted || note.submitStatus !== \"submitted\") {\n let formData = note.formData || {};\n return {\n title: formData[ControlledObservationFormFields.title] || \"\",\n details: formData[ControlledObservationFormFields.details] || \"\",\n images: formData[ControlledObservationFormFields.images],\n };\n };\n const { title, details, images } = note\n return { title, details, images };\n }\n\n};\n\nexport default AuditNoteMapper\n","import React, { Fragment, useMemo } from \"react\";\n\nimport { Accordion, Confirm, Icon, Image, List } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport Thumbnail from \"../../../sg-fileupload/components/Thumbnail\";\nimport { NoteSubmitStatus } from \"./NoteSubmitStatus\";\nimport \"./_NoteAccordion.less\";\nimport { IAuditNote, TEditableAuditNote } from \"../../interfaces/IAuditNote\";\nimport { useBool } from \"../../../sg-hooks/useBool\";\nimport ErrorBoundary from \"../ErrorBoundary\";\nimport EditableAuditNoteModal from \"./EditableAuditNoteModal\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport AuditNoteMapper from \"../../mappers/AuditNoteMapper\";\nimport { useAuditMetaContext } from \"../../context/AuditMetaContext\";\n\nexport interface NoteAccordionItemProps {\n fieldTitle: string;\n active?: boolean;\n formType: IFormType[\"id\"];\n observationFormReference?: string;\n\n onRemove?: (noteId: IAuditNote[\"id\"]) => void;\n onUpdate?: (id: number, updates: Partial) => void;\n onTitleClick?: () => void;\n\n note: TEditableAuditNote;\n}\n\nexport const NoteAccordionItem: React.FC = ({\n fieldTitle,\n active,\n onTitleClick,\n onRemove,\n onUpdate,\n\n observationFormReference,\n formType,\n note,\n}) => {\n const [confirmDeletion, showConfirmDeletion, hideConfirmDeletion] = useBool();\n const [editNote, showEditModal, closeEditModal] = useBool();\n const auditMetaData = useAuditMetaContext();\n const { t } = useTranslation();\n\n const texts = {\n edit: t(\"Muokkaa\"),\n delete: t(\"Poista\"),\n cancel: t(\"Peru\"),\n ok: t(\"Ok\"),\n deleteNoteConfirmation: t(\"Haluatko varmisti poistaa kirjatun huomion?\"),\n };\n\n const remove = () => {\n onRemove && onRemove(note.id);\n hideConfirmDeletion();\n };\n\n const saveUpdates = (auditNote: TEditableAuditNote) => {\n onUpdate && onUpdate(note.id, auditNote);\n closeEditModal();\n };\n\n const safetyObservation = note.unsubmitted\n ? note.formData?.makeObservation\n : Boolean(note.relatedObservation);\n\n const metaData = AuditNoteMapper.editableNoteToMetaData(note);\n\n const formData = useMemo(() => {\n let data = note.unsubmitted ? note.formData || {} : AuditNoteMapper.domainToFormData(note);\n // data.target = auditMetaData.metaData.target;\n data.sijainti = auditMetaData.metaData.target;\n data.target = auditMetaData.metaData.target;\n return data;\n }, [note, auditMetaData]);\n\n return (\n \n \n \n {metaData.title} \n \n \n

{metaData.details}

\n\n {metaData.images ? (\n \n {metaData.images.map((image) => (\n \n ))}\n \n ) : null}\n\n {safetyObservation && (\n \n )}\n\n \n \n {texts.edit}\n \n\n {editNote && (\n }>\n \n \n )}\n\n {onRemove && {texts.delete}}\n \n \n
\n
\n );\n};\n","import React, { useState, Fragment } from \"react\";\nimport { Accordion, Divider } from \"semantic-ui-react\";\nimport { ControlledObservationFormFields, IAuditNote, IAuditNoteFormData, TEditableAuditNote } from \"../../interfaces/IAuditNote\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport { NoteAccordionItem, NoteAccordionItemProps } from \"./NoteAccordionItem\";\nimport \"./_NoteAccordion.less\"\n\ninterface AuditNoteListProps {\n notes: TEditableAuditNote[];\n onRemove?: (noteId: IAuditNote[\"id\"]) => void;\n onUpdate?: (id: number, updates: Partial) => void;\n\n fieldTitle: string;\n formType: IFormType[\"id\"];\n observationFormReference?: string;\n};\n\nexport const NoteAccordion: React.FC = ({\n fieldTitle,\n notes,\n onRemove,\n onUpdate,\n\n formType,\n observationFormReference\n}) => {\n\n const [activeIndex, setActiveItem] = useState();\n\n\n const renderAccordionItem = (index: number, props: NoteAccordionItemProps) => {\n const toggle = () => setActiveItem((prevIndex) => prevIndex === index ? null : index);\n const remove = (id: IAuditNote[\"id\"]) => {\n onRemove && onRemove(id);\n setActiveItem(null)\n }\n return (\n \n\n \n \n );\n };\n\n const renderNote = (note: TEditableAuditNote, index: number) => {\n if (note.submitStatus && note.submitStatus !== \"submitted\") {\n\n return renderAccordionItem(index, {\n fieldTitle,\n formType,\n observationFormReference,\n note\n });\n };\n\n return renderAccordionItem(index, {\n fieldTitle,\n note,\n formType,\n observationFormReference\n });\n };\n\n if (!notes.length) {\n return null;\n };\n\n return (\n \n {notes.map(renderNote)}\n {notes.length && \n );\n};\n","import { TResult } from \"../../../../sg-core\";\nimport * as V1 from \"./versions/IObservationPackageV1\";\nimport { observationPackageConverter } from \"./versions/permitPackageConverter\";\n\nexport enum EObservationPackageVersio {\n v1 = \"v1\",\n};\n\nexport type IObservationPackage = V1.IObservationPackageV1;\nconst validatePermitPackageContent = V1.validateObservationPackageV1;\n\n\n/**\n * Validates permit package data and runs required conversios to most recent versio \n * @param uknownData \n * @returns - Validated and converted package data\n */\nexport const validateObservationPackage = (uknownData: Partial): TResult => {\n let data = observationPackageConverter(uknownData);\n return validatePermitPackageContent(data);\n};","import { makeFailure, makeSuccess, TResult } from \"../../../../../sg-core\";\nimport ICategory from \"../../ICategory\";\nimport IFormType from \"../../IFormType\";\nimport IObservation from \"../../IObservation\";\nimport { EObservationPackageVersio } from \"../ObservationPackage\"\n\n\ntype V1Observation = IObservation;\ntype V1Category = ICategory;\ntype V1FormType = IFormType;\n\n\n\n//\n// Package content\n//\nexport interface IObservationPackageV1 {\n versio: EObservationPackageVersio.v1;\n observation: V1Observation;\n formType: V1FormType;\n category: V1Category;\n};\n\n//\n// Content validator\n//\n\nexport const validateObservationPackageV1 = (uknownData: Partial): TResult => {\n try {\n if (!uknownData.observation || !uknownData.observation.id) throw new Error(\"Missing observation\");\n // if (!uknownData.formType || !uknownData.formType.id) throw new Error(\"Missing formType\");\n // if (!uknownData.category || !uknownData.category.id) throw new Error(\"Missing category\");\n\n const permitPackage = uknownData as IObservationPackageV1;\n\n return makeSuccess(permitPackage);\n } catch (error) {\n console.info(\"[validatePermitPackageV1]\", { uknownData })\n console.info(error)\n return makeFailure(error as Error);\n };\n};\n","\nimport { TFunction } from \"i18next\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button, ButtonProps, Icon, IconProps } from \"semantic-ui-react\";\nimport \"./_EvaluationCheck.less\"\n\nexport interface EvaluationCheckProps {\n enums: any[];\n value?: any;\n onChange: (value?: any) => void;\n};\n\n\nconst getTextProps = (t: TFunction) => ({\n ok: t(\"Kunnossa\"),\n notOk: t(\"Korjattavaa\"),\n uknown: t(\"Ei tietoa\"),\n});\n\nexport const EvaluationCheck: React.FC = ({ enums, value, onChange }) => {\n\n const texts = getTextProps(useTranslation().t)\n const onItemClick: ButtonProps[\"onClick\"] = (_1, { value: status }) => {\n onChange(status);\n };\n\n const renderItem = (text: string, enumValue: number, iconProps: IconProps) => (\n
\n \n \n \n \n
\n );\n\n return (\n
\n {renderItem(texts.ok, enums[1], { name: \"check\", color: \"green\" })}\n {renderItem(texts.notOk, enums[0], { name: \"times\", color: \"red\" })}\n {renderItem(texts.uknown, enums[2], { name: \"question\", color: \"grey\" })}\n
\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { WidgetProps } from \"@rjsf/core\";\nimport { IAuditNote } from \"../../../../interfaces/IAuditNote\";\nimport { AddAuditNoteAction } from \"../../../note/AddAuditNoteAction\";\nimport { NoteAccordion } from \"../../../note/NoteAccordion\";\nimport { EvaluationCheck } from \"../../EvaluationCheck\";\nimport \"./_EvaluationCheckWidget.less\"\nimport { Icon, Divider } from \"semantic-ui-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useEditableNotes } from \"../../../../data/notes/useEditableNotes\";\nimport { makeAccordionTitleId } from \"../../jsonSchemaFields/AccordionObjectField/AccordionItemObjectField\";\n\nexport interface IEvalutaionCheckWidgetOptions {\n requiredCerts?: string[],\n};\n\nexport type TEvaluationCehckValue = { status?: number[]; notes: IAuditNote[] }\n\n\nexport const EvalutaionCheckWidget: React.FC = (props) => {\n const {\n onChange,\n schema,\n options,\n fieldKey,\n formContext,\n id = \"\"\n } = props as any\n\n\n const t = useTranslation().t;\n const texts = {\n notes: t(\"Huomiot\")\n };\n\n\n const [parentTitle, setParentTitle] = useState(\"\");\n useEffect(() => {\n let getTitle = setTimeout(() => {\n const accordionId = id.substring(0, id.indexOf(`_${fieldKey}`))\n const accordionTitleId = makeAccordionTitleId(accordionId)\n const parentTitleEl = document.getElementById(accordionTitleId);\n setParentTitle((parentTitleEl?.innerHTML || \"\").trim());\n }, 400);\n return () => clearTimeout(getTitle);\n }, [id, fieldKey]);\n\n\n\n const enums: any[] = schema.enum ?? [0, 1, 2];\n\n const valueObj: TEvaluationCehckValue = typeof props.value === \"object\" && props.value?.notes ? props.value : { notes: [] }\n\n // Validate props\n if (enums.length > 3) console.warn(\"EvalutaionCheckWidget recieved more than 3 enums\");\n if (!fieldKey) console.error(\"EvalutaionCheckWidget is missing key\");\n\n // const { data: noteList, } = useNotesByField(fieldKey);\n\n const { noteList, updateNote, addNote, removeNote } = useEditableNotes(fieldKey);\n\n const text = options.title || schema.title || fieldKey;\n\n return (\n
\n onChange({ ...valueObj, status })}\n value={valueObj.status}\n />\n \n
\n
\n \n {texts.notes}\n
\n\n { }}\n />\n
\n\n \n
\n\n );\n};\n","import React, { Fragment, Suspense } from \"react\";\nimport { Button } from \"semantic-ui-react\";\nimport { useBool } from \"../../../sg-hooks/useBool\";\nimport { IAuditNote, TEditableAuditNote } from \"../../interfaces/IAuditNote\";\nimport { useTranslation } from \"react-i18next\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport ErrorBoundary from \"../ErrorBoundary\";\nimport { useNotification } from \"../../../sg-core/hooks/useToast\";\nimport EditableAuditNoteModal from \"./EditableAuditNoteModal\";\nimport { useEditableNotes } from \"../../data/notes/useEditableNotes\";\nimport { useInitialNoteData } from \"../../data/notes/useInitialNoteData\";\n\ninterface AddAuditNoteActionProps {\n fieldKey: IAuditNote[\"key\"];\n parentObjectTitle?: string;\n fieldTitle: IAuditNote[\"fieldTitle\"];\n formType: IFormType[\"id\"];\n observationFormReference?: string;\n\n onSubmitted: (note: TEditableAuditNote) => void;\n disabled?: boolean;\n};\n\nexport const AddAuditNoteAction: React.FC = ({\n fieldKey,\n fieldTitle,\n parentObjectTitle,\n formType,\n onSubmitted,\n observationFormReference,\n disabled = false,\n}) => {\n\n const { t } = useTranslation();\n const toast = useNotification();\n\n const { noteList, updateNote, addNote, removeNote } = useEditableNotes(fieldKey);\n\n const initialData = useInitialNoteData({ key: fieldKey, fieldTitle });\n\n const texts = {\n addNote: t(\"Lisää huomio\"),\n failedToOpenForm: t(\"Lomakkeen avaus epäonnistui!\")\n }\n\n const [modalOpen, openModal, closeModal] = useBool()\n\n const _onSave = (auditNote: TEditableAuditNote) => {\n console.info(\"AddAuditNoteAction\", { auditNote })\n addNote(auditNote);\n closeModal();\n onSubmitted(auditNote);\n };\n\n const onModalError = (error: Error) => {\n console.log(error)\n toast.error(texts.failedToOpenForm);\n closeModal();\n }\n\n\n return (\n \n }>\n\n \n\n {modalOpen && (\n }>\n \n \n )}\n \n \n );\n};\n\n\n/*\n {modalOpen && (\n }>\n \n \n )}\n */","import { useAuthContext } from '../../auth/AuthenticationProvider';\nimport { useAuditMetaContext } from '../../context/AuditMetaContext';\nimport { ControlledObservationFormFields as ControlledField } from \"../../utils/observation.helpers\";\nimport { IAuditNoteFormData } from '../../interfaces/IAuditNote';\n\n\nexport type UseInitialNoteDataHook = (confs: { key: string, fieldTitle: string }) => IAuditNoteFormData;\n\nexport const useInitialNoteData: UseInitialNoteDataHook = (confs) => {\n\n const { user, anonymousSession } = useAuthContext();\n const { metaData } = useAuditMetaContext();\n\n const data: IAuditNoteFormData = {\n [ControlledField.informer]: user?.fullname,\n [ControlledField.target]: metaData.target,\n [ControlledField.eventTime]: new Date().toISOString(),\n\n\n key: confs.key,\n fieldTitle: confs.fieldTitle,\n makeObservation: false,\n\n target: metaData.target,\n // creator: user?.hprPersonId\n };\n\n return data\n};\n","\nexport const TESTING_BACKGROUND_CLASS = \"testing-background\"\n\nexport const addTestingBackground = () => {\n let root = document.getElementById('root');\n root?.classList.add(\"testing-background\");\n root?.style.setProperty(\"background-image\", `url(\"/test-text-tranparent.svg\")`);\n};\n\n\nexport const removeTestingBackground = () => {\n let root = document.getElementById('root');\n root?.classList.remove(\"testing-background\");\n root?.style.setProperty(\"background-image\", \"none\");\n};","import { IPagination } from \"../interfaces/common/IPagination\";\nimport { IAuditListFilters } from \"../interfaces/IAudit\";\n\nconst KEY_BASE = \"auditoinnit\"\n\nexport const AuditoinnitCacheKeys = (token?: string, lang?: string) => ({\n AuditPage: (pagination: IPagination, filters: Partial) => [KEY_BASE, \"auditsPage\", pagination.page, JSON.stringify(filters)],\n AuditMap: (filters: Partial) => [KEY_BASE, \"auditMap\", JSON.stringify(filters)],\n\n AuditItemInstance: (id: number) => [KEY_BASE, \"auditsItem\", id],\n\n AuditCounts: (search: IAuditListFilters) => [KEY_BASE, \"auditCounts\", search.region, search.target, search.area, JSON.stringify(search.roles)],\n AuditInstance: (id: string) => [KEY_BASE, \"audit\", id],\n MakeAuditPackageInstance: (id: number | string) => [KEY_BASE, lang, \"auditPacakge\", id],\n AuditPackageDataInstance: (id: string) => [KEY_BASE, lang, \"auditPacakgeData\", id],\n\n InitialData: KEY_BASE + lang + \":initialData\",\n AppRoles: KEY_BASE + \":appRoles\",\n FormDefinitionInstance: (id: number) => [KEY_BASE, lang, \"formDefinition\", id],\n\n\n ObservationContext: KEY_BASE + lang + \":observationContext\",\n ObservationFormDefinitionInstance: (id: number | string) => [KEY_BASE, lang, \"observation:formDefinition\", id],\n});","import IObservation, { IObservationListSearch, IObservationCounters } from '../../interfaces/IObservation';\nimport { IObservationListState, IObservationFilters } from '../reducers/observationListReducer';\n\nexport const requestObservationList = \"REQUEST_FETCH_OBSERVATION_LIST\";\nconst successFetchObservationList = \"SUCCESS_FETCH_OBSERVATION_LIST\";\nconst failureFetchObservationList = \"FAILURE_FETCH_OBSERVATION_LIST\";\n\nexport const requestObservationListPage = \"REQUEST_FETCH_OBSERVATION_LIST_PAGE\";\nconst successObservationListPage = \"SUCCESS_FETCH_OBSERVATION_LIST_PAGE\";\nconst failureObservationListPage = \"FAILURE_FETCH_OBSERVATION_LIST_PAGE\";\n\nconst updateObservationListFilters = \"UPDATE_OBSERVATION_LIST_FILTERS\";\n\nconst setObservationPaginationPage = \"SET_OBSERVATION_PAGINATION_PAGE\";\nconst setObservationPaginationPageSize = \"SET_OBSERVATION_PAGINATION_PAGE_SIZE\";\nconst setObservationPaginationItemsCount = \"SET_OBSERVATION_PAGINATION_ITEMS_COUNT\";\n\nexport const requestObservationCounts = \"REQUEST_FETCH_OBSERVATION_COUNTS\";\nconst successFetchObservationCounts = \"SUCCESS_FETCH_OBSERVATION_COUNTS\";\nconst failureFetchObservationCounts = \"FAILURE_FETCH_OBSERVATION_COUNTS\";\n\n\nexport const setPageSize = \"SET_PAGE_SIZE\";\n\nexport interface ISetPageSize {\n type: typeof setPageSize;\n payload: { size: number }\n}\n\nexport const createSetPageSizeAction = (size: number): ISetPageSize => ({\n type: setPageSize,\n payload: { size }\n});\n\n\n// FETCH OBSERVATION\nexport interface IRequestFetchObservationList {\n type: typeof requestObservationList;\n payload: { search?: IObservationFilters }\n}\n\ninterface ISuccessFetchObservationList {\n type: typeof successFetchObservationList;\n payload: { observations: IObservation[] };\n}\n\ninterface IFailureFetchObservationList {\n type: typeof failureFetchObservationList;\n payload: { error: Error };\n}\n\nexport interface IRequestFetchObservationListPage {\n type: typeof requestObservationListPage;\n}\n\ninterface ISuccessFetchObservationListPage {\n type: typeof successObservationListPage;\n payload: { observations: IObservation[] };\n}\n\ninterface IFailureFetchObservationListPage {\n type: typeof failureObservationListPage;\n paylod: { error: Error };\n}\n\n// PAGINATED LIST UPDATES\n\ninterface IUpdateObservationListFilters {\n type: typeof updateObservationListFilters;\n payload: {\n filters: Partial;\n };\n}\n\ninterface ISetObservationPaginationPage {\n type: typeof setObservationPaginationPage;\n payload: { page: number },\n}\n\ninterface ISetObservationPaginationPageSize {\n type: typeof setObservationPaginationPageSize;\n payload: { pageSize: number }\n}\n\ninterface ISetObservationPaginationItemsCount {\n type: typeof setObservationPaginationItemsCount;\n payload: { count: number };\n}\n\n// FETCH COUNTERS\nexport interface IRequestFetchObservationCounts {\n type: typeof requestObservationCounts;\n payload: { search?: IObservationFilters }\n}\n\ninterface ISuccessFetchObservationCounts {\n type: typeof successFetchObservationCounts;\n payload: { counters: IObservationCounters };\n}\n\ninterface IFailureFetchObservationCounts {\n type: typeof failureFetchObservationCounts;\n payload: { error: Error };\n}\n\nexport type IObservationListAction\n = IRequestFetchObservationList\n | ISuccessFetchObservationList\n | IFailureFetchObservationList\n\n | IUpdateObservationListFilters\n | ISetObservationPaginationPage\n | ISetObservationPaginationPageSize\n | ISetObservationPaginationItemsCount\n\n | IRequestFetchObservationListPage\n | ISuccessFetchObservationListPage\n | IFailureFetchObservationListPage\n\n | IRequestFetchObservationCounts\n | ISuccessFetchObservationCounts\n | IFailureFetchObservationCounts\n\n | ISetPageSize\n ;\n\n// FETCH OBSERVATION\nexport const createRequestFetchObservationListAction = (search?: IObservationFilters): IRequestFetchObservationList => ({\n type: requestObservationList,\n payload: { search }\n});\n\nexport const createSuccessFetchObservationListAction = (observations: IObservation[]): ISuccessFetchObservationList => ({\n type: successFetchObservationList,\n payload: { observations }\n});\n\nexport const createFailureFetchObservationListAction = (error: Error): IFailureFetchObservationList => ({\n type: failureFetchObservationList,\n payload: { error }\n});\n\nexport const createRequestFetchObservationPageAction = (): IRequestFetchObservationListPage => ({\n type: requestObservationListPage,\n});\n\nexport const createSuccessFetchObservationListPageAction = (observations: IObservation[]): ISuccessFetchObservationListPage => ({\n type: successObservationListPage,\n payload: { observations },\n});\n\nexport const createFailureFetchObservationListPageAction = (error: Error): IFailureFetchObservationListPage => ({\n type: failureObservationListPage,\n paylod: { error },\n});\n\n// PAGINATED LIST FILTER UPDATES\n\nexport const createUpdateObservationFilters = (updatedFilters: Partial): IUpdateObservationListFilters => ({\n type: updateObservationListFilters,\n payload: { filters: updatedFilters },\n});\n\nexport const createSetObservationPaginationPageAction = (page: number): ISetObservationPaginationPage => ({\n type: setObservationPaginationPage,\n payload: { page },\n});\n\nexport const createSetObservationPaginationPageSizeAction = (pageSize: number): ISetObservationPaginationPageSize => ({\n type: setObservationPaginationPageSize,\n payload: { pageSize },\n});\n\nexport const createSetObservationPaginationItemsCountAction = (count: number): ISetObservationPaginationItemsCount => ({\n type: setObservationPaginationItemsCount,\n payload: { count },\n});\n\n// FETCH COUNTERS\nexport const createRequestFetchObservationCountsAction = (search?: IObservationFilters): IRequestFetchObservationCounts => ({\n type: requestObservationCounts,\n payload: { search }\n});\n\nexport const createSuccessFetchObservationCountsAction = (counters: IObservationCounters): ISuccessFetchObservationCounts => ({\n type: successFetchObservationCounts,\n payload: { counters }\n});\n\nexport const createFailureFetchObservationCountsAction = (error: Error): IFailureFetchObservationCounts => ({\n type: failureFetchObservationCounts,\n payload: { error }\n});\n\n\n","\n// Unique symbol for ensuring endpoint values. This prevents\n// invalid endpoints being manually created in other places in the\n// code.\n// THIS SHOULD NOT BE EXPORTED\nconst endpointSymbol = Symbol(\"endpoint\");\n\nexport interface IEndpoint {\n [endpointSymbol]: true;\n readonly path: string;\n}\n\nexport const createEndpointMaker = (baseUrl: string) => {\n\n if (!baseUrl) {\n throw new Error(`Cannot create endpoint maker without a valid base url. Given url was '${baseUrl}'.`);\n }\n\n // Remove trailing slash\n const baseUrlTrimmed = baseUrl[baseUrl.length - 1] === \"/\"\n ? baseUrl.substr(0, baseUrl.length - 1)\n : baseUrl;\n \n // Paths will be later joined together with slashes, so we remove them first with this function\n const removeSlashes = (str: string): string => {\n const startWithSlash = str[0] === \"/\";\n const endsWithSlash = str.length > 0 && str[str.length - 1] === \"/\";\n\n return str.slice(\n startWithSlash ? 1 : 0,\n endsWithSlash ? str.length - 1 : str.length,\n );\n };\n\n return (path: string[]): IEndpoint => ({\n [endpointSymbol]: true,\n path: `${baseUrlTrimmed}/${path.map(removeSlashes).join(\"/\")}`,\n });\n};\n","import { createEndpointMaker } from \"./sg-core/services/EndpointService\";\n\nconst baseUrl = process.env.REACT_APP_API_BASE_URL;\nif (!baseUrl) { throw new Error(\"REACT_APP_API_BASE_URL must be defined\") }\n\nconst pdfUrl = process.env.REACT_APP_PDF_GENERATOR_URL;\nif (!pdfUrl) { throw new Error(\"REACT_APP_PDF_GENERATOR_URL must be defined\") }\n\n\n\nconst GENERATED = \"generated\";\n\nconst makeEndpoint = createEndpointMaker(baseUrl);\n\nexport const Auth = makeEndpoint([\"login_v03.aspx\"]);\n\nexport const havainnot = makeEndpoint([\"havainnot_v09.aspx\"]);\n\nexport const auditoinnit = makeEndpoint([\"auditoinnit_v02.aspx\"]);\nexport const GeneratedAuditoinnit = makeEndpoint([GENERATED, \"auditoinnit_api.aspx\"]);\n\nexport const Kohteet = makeEndpoint([\"kohteet_v02.aspx\"]);\n\nexport const Yleiset = makeEndpoint([\"yleiset_v04.aspx\"]);\n\nexport const Upload6 = makeEndpoint([\"upload6_v02.aspx\"]);\n\nexport const Common = makeEndpoint([\"yleiset_v04.aspx\"]);\n\nexport const HPR = makeEndpoint([\"hpr_v02.aspx\"]);\n\nexport const GeneratedHpr = makeEndpoint([GENERATED, \"hpr_api.aspx\"]);\n\nexport const Kartta = makeEndpoint([\"Kartta_v01.aspx\"]);\n\nexport const Tilannekuva = makeEndpoint([\"tilannekuva_v02.aspx\"]);\n\n\nconst PDF = \"pdf-generate\";\nconst makePdfEndpoint = createEndpointMaker(pdfUrl);\nexport const PdfGenerate = makePdfEndpoint([PDF]);\n","import IAudit from \"./IAudit\";\n\nexport interface IAuditHistoryEventDTO {\n id: number;\n otsikko: string;\n aikaleima: string;\n kuvaus: string;\n tyyppi: string;\n suorittaja: number;\n historiapaketti_id: string;\n auditointi: IAudit[\"id\"];\n};\n\nexport enum EAuditEventType {\n Finished = \"valmis\",\n InProgress = \"kesken\",\n Conversion = \"konversio\"\n};\n\nexport interface IAuditHistoryEvent {\n id: number;\n title: string;\n description: string;\n timestamp: string;\n type: EAuditEventType;\n performer: number;\n historyPackageId: string;\n audit: IAudit[\"id\"]\n};\n\nexport type IAuditHistoryEventMeta = Pick;\n\nexport type INewAuditHistoryEvent = Omit;\nexport type INewAuditHistoryEventDTO = Omit;\n\n\n\nexport const AuditHistoryEventMapper = {\n apiToDomain: (api: IAuditHistoryEventDTO): IAuditHistoryEvent => {\n return {\n id: api.id,\n title: api.otsikko,\n timestamp: api.aikaleima,\n description: api.kuvaus,\n type: api.tyyppi as EAuditEventType,\n performer: api.suorittaja,\n historyPackageId: api.historiapaketti_id,\n audit: api.auditointi\n }\n },\n\n domainToApi: (domain: IAuditHistoryEvent): IAuditHistoryEventDTO => {\n return {\n id: domain.id,\n otsikko: domain.title,\n aikaleima: domain.timestamp,\n kuvaus: domain.description,\n tyyppi: domain.type,\n suorittaja: domain.performer,\n historiapaketti_id: domain.historyPackageId,\n auditointi: domain.audit\n }\n }\n};\n\n\nexport const NewAuditHistoryEventMapper = {\n domainToApi: (domain: INewAuditHistoryEvent): INewAuditHistoryEventDTO => {\n return {\n otsikko: domain.title,\n aikaleima: domain.timestamp,\n kuvaus: domain.description,\n tyyppi: domain.type,\n suorittaja: domain.performer,\n historiapaketti_id: domain.historyPackageId,\n auditointi: domain.audit\n }\n }\n};","import React, { useEffect } from \"react\";\nimport { Redirect, RedirectProps } from \"react-router-dom\";\nimport { useNotification } from \"../../sg-core/hooks/useToast\";\n\ninterface RedirectAndNotifyProps extends RedirectProps {\n note: string;\n status: \"success\" | \"error\" | \"info\"\n\n};\n\nexport const RedirectAndNotify: React.FC = ({ status, note, ...props }) => {\n const toast = useNotification()\n\n useEffect(() => {\n const notify = toast[status];\n notify(note)\n }, []);//eslint-disable-line\n\n return (\n \n )\n};\n\n\n","import { AjvError } from \"@rjsf/core\"\n\n/**\n * Forces focus on field input by schema property path\n * @param property - property path on schema eg. \".firstname\" or \".sub_form.firstname\"\n */\nexport const focusOnField = (property: string) => {\n if (!property || typeof property !== \"string\") return\n let uniqueClassName = \"root_\" + property; // property.replace(/^\\./g, \"root_\");\n let fieldElement = document.getElementsByClassName(uniqueClassName)[0];\n\n if (!fieldElement) {\n fieldElement = document.querySelectorAll(\".field.error\")[0];\n }\n\n if (fieldElement) {\n const inputElement = fieldElement.querySelectorAll(\"INPUT, SELECT, TEXTAREA, [tabindex]:not([tabindex=\\\"-1\\\"])\")[0] as HTMLInputElement | undefined;\n\n inputElement && inputElement.focus();\n }\n}\n\n\nexport function transformErrors(errors: AjvError[]): AjvError[] {\n return errors.map(error => {\n if (error.name === \"required\") {\n error.message = \"Pakollinen kenttä\"\n }\n\n if (error.name === \"maxLength\") {\n error.message = `Ei tulisi olla pidempi kuin ${error.params.limit} merkkiä`\n }\n\n if (error.name === \"minLength\") {\n error.message = `Ei tulisi olla lyhyempi kuin ${error.params.limit} merkkiä`\n }\n\n if (error.name === \"minItems\") {\n error.message = `Valitse vähintään ${error.params.limit}`\n }\n\n if (error.name === \"maxItems\") {\n error.message = `Valitse enintään ${error.params.limit}`\n }\n\n\n if (error.name === \"format\") {\n\n if (error.params.format === \"date-time\") {\n error.message = \"Päivämäärän tulee olla muodossa pp.kk.vvvv HH:mm\"\n }\n if (error.params.format === \"time\") {\n error.message = \"Kellonaika ei ole okeassa muodossa\"\n }\n if (error.params.format === \"date\") {\n error.message = \"Päivämäärän tulee olla muodossa pp.kk.vvvv\"\n }\n }\n\n\n\n return error;\n });\n}","import IFormType from \"./IFormType\"\nimport { IFormSchema } from \"./IFormSchema\";\nimport SGUser from \"./IAuditoinnitUser\";\nimport { ILocationData } from \"@/sg-kohderekisterit/IKohderekisteri\";\n\nexport type TSubmittableObservation = {\n path: string;\n data: {\n safetyObservation: boolean;\n _safetyObservationStatus: \"submitted\" | \"unsubmitted\" | \"submitError\";\n _safetyObservationId?: number;\n } & { [key: string]: any };\n}\n\nexport enum EObservationStatus {\n New = \"uusi\",\n InProgress = \"kasittelyssa\",\n Finished = \"kasitelty\",\n Late = \"myohassa\",\n Unknown = \"tuntematon\",\n}\n\nexport const isObservationStatus = (candidate: string): candidate is EObservationStatus => {\n return [EObservationStatus.New, EObservationStatus.Late, EObservationStatus.InProgress, EObservationStatus.Finished]\n .includes(candidate as EObservationStatus);\n};\n\ninterface IKnownObservationFormData {\n merkinnat?: IProcessForm[];\n karttasijainti?: { marker?: string }\n}\n\nexport default interface IObservation {\n id: number;\n guid: string;\n name: string;\n creator: number;\n formType: number;\n target: ILocationData[\"id\"];\n work?: number;\n status: EObservationStatus;\n\n mapLocation?: string;\n\n title: string;\n description: string;\n image: string;\n formData: IKnownObservationFormData & { [key: string]: any };\n formSchema?: IFormSchema;\n is_public: boolean;\n editor?: number;\n created_at: string;\n isEditor: boolean;\n __noteId?: number;\n\n searchText: string;\n}\n\nexport interface INewObservation extends Partial {\n // creator: number;\n formType: number;\n title: string;\n status: EObservationStatus;\n name: string;\n description?: string;\n image?: string;\n is_public: boolean;\n formData: IKnownObservationFormData & { [key: string]: any };\n formSchema?: IFormSchema;\n created_at: string;\n searchText: string;\n __noteId?: number;\n\n}\n\nexport interface IObservationListSearch {\n whose?: \"own\" | \"all\";\n category?: number;\n status?: string;\n roles?: string[];\n creator?: number;\n handler?: number;\n}\n\nexport interface IObservationCounters {\n new: number;\n onHandling: number;\n ready: number;\n}\n\nexport const makeObservationSkeleton = (formType: IFormType, user: SGUser | null, isPublic: boolean): INewObservation => {\n const created_at = new Date().toISOString()\n return ({\n work: formType.workflow,\n // creator: 1, // userId, Should havainto app id currently is gate id wich breaks the API calls.\n name: formType.name,\n title: formType.name,\n formType: formType.id,\n formData: {\n ilmottaja: user?.fullname\n },\n status: EObservationStatus.New,\n is_public: isPublic,\n created_at,\n searchText: \"\"\n });\n}\n\nexport interface IProcessForm {\n observationId: number;\n creator?: number;\n createdAt: string;\n formData: { [key: string]: any }\n formType: number;\n}\n\nexport const makeProcessFormSkeleton = (observationId: number, userId: number, isPublic: boolean, formType?: IFormType): IProcessForm => {\n const createdAt = new Date().toISOString()\n return ({\n formData: {\n on_julkinen: isPublic\n },\n observationId,\n // creator: 1,\n createdAt,\n formType: 0 // //currently uses simple hard coded JSON schema in \"/src/constants/turvallisuushavainto.test.schema.json\"\n })\n}","import React from \"react\";\nimport { Form } from \"semantic-ui-react\";\n\ninterface DefaultSelectPlaceholderProps { };\n\nexport const DefaultSelectPlaceholder: React.FC = ({\n ...selectProps\n}) => {\n\n return (\n \n )\n};\n\n\n","\n\n\nimport React, { Fragment } from \"react\";\nimport { useFormTypeList } from \"../../data/formType/useFormTypeList\";\nimport IFormType from \"../../interfaces/IFormType\";\n\ntype IRenderProps = { formTypes: IFormType[] };\n\ninterface RenderFormTypesProps { render: (props: IRenderProps) => any; };\n\nexport const RenderFormTypes: React.FC = ({ render }) => {\n const { data: formTypes } = useFormTypeList();\n return (\n \n {render({ formTypes })}\n \n );\n};\n\n","import React, { Suspense, useCallback, useMemo } from \"react\";\nimport { Form, SelectProps } from \"semantic-ui-react\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport { DefaultSelectPlaceholder } from \"../DefaultSelectPlaceholder\";\nimport { RenderFormTypes } from \"./RenderFormTypes\";\n\n\ninterface FormTypeSelectProps extends Omit {\n value?: IFormType[\"id\"];\n onChange: (value?: IFormType[\"id\"]) => void;\n formTypes?: IFormType[];\n};\n\nconst FormTypeSelectBase: React.FC = ({\n formTypes,\n onChange,\n value,\n ...selectProps\n}) => {\n\n const options = useMemo(() => formTypes ?\n formTypes.map((formType) => ({ text: formType.name, value: formType.id }))\n : [],\n [formTypes])\n\n const updateValue: SelectProps[\"onChange\"] = (_1, { value }) => {\n onChange(value ? value as any : undefined);\n }\n\n return (\n \n )\n};\n\n\nexport const FormTypeSelect: React.FC = (props) => {\n return (\n }>\n (\n \n )}\n />\n \n );\n};","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Form, SelectProps } from \"semantic-ui-react\";\nimport { EAuditStatus } from \"../../../interfaces/IAudit\";\n\n\ninterface AuditStatusSelectProps extends Omit {\n value?: EAuditStatus\n onChange: (value?: EAuditStatus) => void;\n};\n\nexport const AuditStatusSelect: React.FC = ({\n onChange,\n value,\n ...selectProps\n}) => {\n const { t } = useTranslation()\n const texts = {\n draft: t(\"Luonnos\"),\n finished: t(\"Valmis\")\n };\n\n const updateValue: SelectProps[\"onChange\"] = (_1, { value }) => {\n onChange(value ? value as any : undefined);\n };\n\n return (\n \n )\n};\n","import React, { Fragment, useCallback } from \"react\";\nimport { EAuditStatus, IAuditListFilters } from \"../../../interfaces/IAudit\";\nimport { Form, Icon, InputProps } from \"semantic-ui-react\";\nimport \"./_AuditFiltersForm.less\";\nimport { useApplicationConfiguration } from \"../../../configuration/ConfigurationContext\";\nimport { FormTypeSelect } from \"../../formType/FormTypeSelect\";\nimport { AuditStatusSelect } from \"../audit/AuditStatusSelect\";\nimport { useTranslation } from \"react-i18next\";\nimport PersonSearch from \"../../../../sg-hpr/components/persons/PersonSearch/PersonSearch\";\n\n\ninterface AuditFiltersFormProps {\n formData: IAuditListFilters;\n onChange?: (formData: IAuditListFilters) => void;\n onUpdate?: (formData: Partial) => void;\n labels?: boolean;\n inline?: boolean;\n hideStatusFilter?: boolean;\n hideFreetextFilter?: boolean;\n}\n\nexport const AuditFiltersForm: React.FC = ({\n formData,\n onChange,\n onUpdate,\n labels = false,\n inline = true,\n hideStatusFilter = false,\n hideFreetextFilter = false\n}) => {\n const { t } = useTranslation();\n\n const texts = {\n type: t(\"Tyyppi\"),\n status: t(\"Tila\"),\n responsiblePerson: t(\"Vastuuhenkilö\"),\n search: t(\"Haku\")\n\n }\n const { components: { LocationFilter } } = useApplicationConfiguration();\n\n const update = useCallback((partial: Partial) => {\n if (onChange) onChange({ ...formData, ...partial });\n if (onUpdate) onUpdate(partial)\n }, [formData, onChange, onUpdate]);\n\n const Wrapper = inline ? Form.Group : Fragment;\n\n\n const updateFormType = (formType?: number) => update({ formType });\n const updateResponsiblePerson = (responsiblePerson?: number | number[] | null) => update({ responsiblePerson: Array.isArray(responsiblePerson) ? responsiblePerson[0] : responsiblePerson || undefined });\n const updateStatus = (status?: EAuditStatus) => update({ status });\n const updateFreeText: InputProps[\"onChange\"] = (_1, { value }) => update({ freeText: value });\n\n return (\n
\n \n\n {LocationFilter ? (\n \n ) : null}\n\n \n\n \n \n \n\n {!hideStatusFilter && }\n\n {!hideFreetextFilter && }\n value={formData.freeText}\n onChange={updateFreeText}\n iconPosition=\"left\"\n fluid\n />}\n\n\n \n\n
\n )\n}","import {\n TDefaultTimeType,\n TLocalPickerValue,\n IDefaultValueOptions\n} from \"./IDateInput\";\n\nimport format from \"date-fns/format\"\nimport parse from \"date-fns/parse\"\nimport isBefore from \"date-fns/isBefore\"\nimport isAfter from \"date-fns/isAfter\"\nimport sub from \"date-fns/sub\"\nimport add from \"date-fns/add\"\n\nimport { DATE_FORMAT, STRICT_TIME_REGEX, TIME_FORMAT } from \"../../../../constants/formats\";\n\n/**\n * \n * @param date \n * @param time \n * @param valueFormat \n */\nexport const processValue = (\n date: string | undefined,\n time: string | undefined,\n valueFormat: \"date\" | \"time\" | \"date-time\"\n): string | undefined => {\n const dateAsDate = date && parse(date, DATE_FORMAT, new Date());\n const timeAsDate = time && parse(time, TIME_FORMAT, new Date());\n\n if (!dateAsDate && !timeAsDate) {\n // return;\n };\n\n if (valueFormat === \"date-time\" && dateAsDate && timeAsDate) {\n let newValue = resetTime(new Date());\n newValue = overwriteDatePartOfDate(newValue, dateAsDate);\n newValue = overwriteTimePartOfDate(newValue, timeAsDate);\n return newValue.toISOString();\n };\n\n if ((valueFormat === \"date\" && dateAsDate) || dateAsDate) {\n return format(dateAsDate, \"yyyy-MM-dd\");\n };\n\n if ((valueFormat === \"time\" && timeAsDate) || timeAsDate) {\n return format(timeAsDate, \"HH:mm\");\n };\n};\n\n\nexport const valueToPickerValue = (value?: string): TLocalPickerValue => {\n try {\n\n if (!value) {\n return {};\n };\n\n\n if (RegExp(/^[0-2][0-9]:[0-5][0-9]/).test(value)) {\n return { time: value };\n };\n\n if (RegExp(/^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$/).test(value)) {\n return { date: format(new Date(value), DATE_FORMAT) };\n };\n\n const valueAsDate = new Date(value);\n\n return {\n date: format(valueAsDate, DATE_FORMAT),\n time: format(valueAsDate, TIME_FORMAT)\n };\n\n } catch (error) {\n return {};\n };\n};\n\nexport const valueToDate = (value?: string): Date | undefined => {\n try {\n if (value && RegExp(/^[0-2][0-9]:[0-5][0-9]/).test(value)) {\n return\n }\n return value ? new Date(value) : undefined\n } catch (error) {\n return\n }\n};\n\ninterface IGetDefaultDateValueOptions {\n defaultTime?: string;\n hourRoundingValue?: number;\n minDate?: Date;\n};\n\nexport const getDefaultDateValue = (reference: Date, options: IGetDefaultDateValueOptions): string | undefined => {\n let date = ensureFreshDateInstance(reference);\n if (date) {\n let time = date;\n if (options.defaultTime && RegExp(STRICT_TIME_REGEX).test(options.defaultTime)) {\n const [hour, minutes] = options.defaultTime.split(\":\").map(Number);\n time = resetTime(date);\n time.setHours(hour);\n time.setMinutes(minutes);\n } else {\n time = roundToNearestHour(time, options.hourRoundingValue);\n };\n\n if (options.minDate && (isBefore(time, options.minDate) || format(options.minDate, TIME_FORMAT) === format(time, TIME_FORMAT))) {\n date = add(date, { days: 1 }); // Add day if time is before reference\n };\n\n date = overwriteTimePartOfDate(date, time);\n if (date) {\n return date.toISOString()\n }\n };\n};\n\n\n\n\n/**\n * Override only date of date object\n */\nexport const overwriteDatePartOfDate = (date: Date, newDate: Date) => {\n date.setDate(newDate.getDate());\n date.setMonth(newDate.getMonth());\n date.setFullYear(newDate.getFullYear());\n return new Date(date);\n};\n\n/**\n * Override only time of date objects\n */\nexport const overwriteTimePartOfDate = (date: Date, newDate: Date) => {\n date.setHours(newDate.getHours());\n date.setMinutes(newDate.getMinutes());\n date.setMilliseconds(newDate.getMilliseconds());\n return new Date(date)\n};\n\n/**\n * Sets time part of date to 00:00:00:0000\n * @param date \n */\nexport const resetTime = (date: Date) => {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return new Date(date)\n};\n\n/**\n * \n * @param date \n * @param hourRoundingValue \n */\nexport const roundToNearestHour = (date: Date, hourRoundingValue: number = 1) => {\n date.setHours(date.getHours() + hourRoundingValue);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return new Date(date)\n};\n\n\n\n\n/**\n * Checks that date is not invalid\n */\nexport const isValidDate = (date?: Date) => date && !isNaN(date.getTime());\n\n/**\n * Makes new date intance if input exsits and is valid\n */\nexport const ensureFreshDateInstance = (inputDate?: Date) => (inputDate && isValidDate(inputDate)) ? new Date(inputDate) : undefined\n","\n\n\n\n\nexport enum EEvaluationStatus {\n Okay = 1,\n NotOkay = 0,\n Uknown = 2\n};\n\nexport interface IEvaluationStatics {\n okay: number;\n notOkay: number;\n uknown: number\n};\n\n\nexport interface IEvaluations {\n [key: string]: {\n status?: EEvaluationStatus,\n okay?: number;\n notOkay?: number\n }\n};\n\nexport const emptyEvaluationStatics = {\n okay: 0,\n notOkay: 0,\n uknown: 0\n}","import { AUTH_COOKIE as COMMON_AUTH_COOKIE } from \"../../../@common/constants/StorageKeys\";\n\nconst KEY_PREFIX = \"tyoluvat-app\";\nconst makeStorageKey = (...args: string[]) => [KEY_PREFIX, ...args].join(\"__\");\n\nexport const AUTH_COOKIE = COMMON_AUTH_COOKIE; // makeStorageKey(\"sid\");\nexport const PREV_LOCATION = makeStorageKey(\"PrevLocation\", \"path\");\n\nexport const PERMITS_FILTERS = makeStorageKey(\"filters\")\nexport const PERMIT_PAGINATION = makeStorageKey(\"pagination\");\n\nexport const PERMIT_LIST_PAGE_SIZE = makeStorageKey(\"permitList-page-size\")\nexport const ARCHIVE_PAGE_SIZE = makeStorageKey(\"archive-page-size\")\n\n\nexport const PERMIT_EDITS = makeStorageKey(\"permit-edits\");\nexport const PERMIT_TASK_EDITS = makeStorageKey(\"permit-task\");\n\n\n\nexport const clearLocalStorage = () => {\n localStorage.removeItem(PERMITS_FILTERS);\n localStorage.removeItem(PERMIT_PAGINATION);\n localStorage.removeItem(PERMIT_EDITS);\n localStorage.removeItem(PERMIT_TASK_EDITS);\n};","import { lazy } from \"react\";\nimport { IRouteDefinition, ISubModuleRoutes } from \"../routing\";\nimport { Location } from \"history\";\n\nconst FrontPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_FrontPage' */\"./tyoluvat/views/FrontPage\"));\nconst PermitPageRouter = lazy(() => import(/* webpackChunkName: 'DokumentitApp_PermitPageRouter' */\"./tyoluvat/views/PermitPage/PermitPage\"));\nconst PermitsListPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_PermitsListPage' */\"./tyoluvat/views/PermitsListPage\"))\nconst PermitArchivePage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_PermitArchivePage' */\"./tyoluvat/views/PermitArchivePage\"))\n\nconst MapPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_PermitMapPage' */\"./tyoluvat/views/MapPage\"))\nconst EditPermitPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_EditPermitPage' */\"./tyoluvat/views/EditPermitPage\"))\nconst InitializePermitPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_InitializePermitPage' */\"./tyoluvat/views/InitializePermitPage\"))\nconst CopyPermitPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_CopyPermitPage' */\"./tyoluvat/views/CopyPermitPage\"))\nconst NewPermitPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_NewPermitPage' */\"./tyoluvat/views/NewPermitPage\"))\n\nconst PermitCreatedPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_PermitCreatedPage' */\"./tyoluvat/views/PermitCreatedPage\"))\nconst PermitPrintPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_PermitPrintPage' */\"./tyoluvat/views/PermitPrintPage\"))\nconst AnonymousPermitPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_AnonymousPermitPage' */\"./tyoluvat/views/AnonymousPermitPage\"))\nconst AnonymousPermitApprovalPage = lazy(() => import(/* webpackChunkName: 'DokumentitApp_AnonymousPermitApprovalPage' */\"./tyoluvat/views/AnonymousPermitApprovalPage\"))\n\nexport const TYOLUVAT_APP_PREFIX = \"dokumentit\"\n\n\nexport enum DokumentitRouteId {\n FrontPage = \"dokumentit-front-page\",\n ListPage = \"dokumentit-list-page\",\n MapPage = \"dokumentit-map-page\",\n ArchivePage = \"dokumentit-archive-page\",\n InitializePermitPage = \"dokumentit-open-form-page\",\n NewPermitPage = \"dokumentit-new-document-page\",\n\n DocumentPage = \"dokumentit-page\",\n PermitHistoryPage = \"dokumentit-document-history-page\",\n PermitTasksPage = \"dokumentit-document-tasks-page\",\n PermitEventLog = \"dokumentit-document-event-log-page\",\n PermitEventPage = \"dokumentit-document-event-page\",\n PermitStatusChangePage = \"dokumentit-document-status-change-page\",\n PermitTaskPage = \"dokumentit-document-task-detail-page\",\n PermitTaskFormPage = \"dokumentit-document-task-form-page\",\n PermitManualControl = \"dokumentit-document-task-manual-control\",\n\n\n PermitCreatedPage = \"dokumentit-document-created-page\",\n CopyPermitPage = \"dokumentit-document-copy-page\",\n PermitPrint = \"dokumentit-document-print-page\",\n AnonymousPermit = \"dokumentit-anonymous-document-page\",\n AnonymousPermitApproval = \"dokumentit-anonymous-document-approval-page\",\n EditPermitPage = \"dokumentit-edit-document-page\",\n TyoluvatPageNotFoundPage = \"dokumentit-page-not-found\"\n\n};\n\nconst makeRelativeTyoluvatPath = (path: string) => {\n return `/:configurationReference${path}`\n};\n\nexport const getTyoluvatPathContext = (location: Location): { tenantReference: string; appPrefix: string; configurationReference: string } => {\n const pathParts = location.pathname.split(\"/\");\n const appPrefixIndex = pathParts.indexOf(TYOLUVAT_APP_PREFIX);\n const isHostedOnMultitenantFolderStructure = appPrefixIndex > 0;\n\n if (isHostedOnMultitenantFolderStructure) {\n const [tenantReference, appPrefix, configurationReference] = pathParts;\n return { tenantReference, appPrefix, configurationReference };\n };\n\n const configurationReference = pathParts[appPrefixIndex + 1];\n return { tenantReference: \"\", configurationReference, appPrefix: pathParts[0] };\n};\n\nexport const tyoluvatRoutes: IRouteDefinition[] = [\n {\n id: DokumentitRouteId.FrontPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/\"),\n component: FrontPage\n },\n\n {\n id: DokumentitRouteId.ListPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lista\"),\n component: PermitsListPage\n },\n\n {\n id: DokumentitRouteId.ArchivePage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/arkisto\"),\n component: PermitArchivePage\n },\n\n {\n id: DokumentitRouteId.MapPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/kartta\"),\n component: MapPage\n },\n\n {\n id: DokumentitRouteId.DocumentPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lista/:permit/tiedot\"),\n component: PermitPageRouter\n },\n\n {\n id: DokumentitRouteId.PermitEventLog,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lista/:permit/tapahtumat\"),\n component: PermitPageRouter\n },\n\n {\n id: DokumentitRouteId.PermitEventPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lista/:permit/tapahtumat/:event\"),\n component: PermitPageRouter\n },\n\n {\n id: DokumentitRouteId.PermitStatusChangePage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lista/:permit/tilanvaihto\"),\n component: PermitPageRouter\n },\n\n {\n id: DokumentitRouteId.PermitTaskPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lista/:permit/tehtavat/:task/tiedot\"),\n component: PermitPageRouter\n },\n\n {\n id: DokumentitRouteId.PermitTaskFormPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lista/:permit/tehtavat/:task/lomake\"),\n component: PermitPageRouter\n },\n\n {\n id: DokumentitRouteId.PermitTasksPage,\n exact: false,\n path: makeRelativeTyoluvatPath(\"/lista/:permit/tehtavat\"),\n component: PermitPageRouter\n },\n\n\n {\n id: DokumentitRouteId.EditPermitPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/muokkaa/dokumentti_:permit\"),\n component: EditPermitPage\n },\n\n\n {\n id: DokumentitRouteId.InitializePermitPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/uusi-dokumentti/:formType\"),\n component: InitializePermitPage\n },\n\n\n {\n id: DokumentitRouteId.CopyPermitPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/uusi-dokumentti/:formType/:basePermit\"),\n component: CopyPermitPage\n },\n\n\n {\n id: DokumentitRouteId.NewPermitPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/lomake/:formType\"),\n component: NewPermitPage\n },\n\n\n\n {\n id: DokumentitRouteId.PermitCreatedPage,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/valmis/:formType/:permit\"),\n component: PermitCreatedPage\n },\n\n\n //\n // Anonymous routes\n //\n\n {\n id: DokumentitRouteId.PermitPrint,\n requireAuth: false,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/tulosta/dokumentti/:package\"),\n component: PermitPrintPage\n },\n\n {\n id: DokumentitRouteId.AnonymousPermit,\n requireAuth: false,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/anonyymi/dokumentti/:package\"),\n component: AnonymousPermitPage\n },\n\n {\n id: DokumentitRouteId.AnonymousPermit,\n requireAuth: false,\n exact: true,\n path: makeRelativeTyoluvatPath(\"/anonyymi/kuittaus/:package/:approvalGuid\"),\n component: AnonymousPermitApprovalPage\n },\n\n {\n id: DokumentitRouteId.TyoluvatPageNotFoundPage,\n exact: false,\n requireAuth: false,\n path: makeRelativeTyoluvatPath(\"\"),\n component: lazy(() => import(/* webpackChunkName: 'NotFound' */\"./tyoluvat/views/SelectConfiguration\"))\n }\n\n];\n\n\n\n\nconst DokumentitRouting: ISubModuleRoutes = {\n prefix: \"dokumentit\",\n routes: tyoluvatRoutes,\n template: lazy(() => import(/* webpackChunkName: 'DokumentitApp' */\"./DokumentitApp\")),\n routeId: DokumentitRouteId\n}\n\nexport default DokumentitRouting","import { CacheInterface, cache, mutate, trigger } from \"swr\";\nimport { mutateInterface, triggerInterface } from \"swr/dist/types\";\n\nexport type UseSWRCacheHook = () => {\n cache: CacheInterface,\n mutate: mutateInterface,\n trigger: triggerInterface\n};\n\n// Default implementation\n\nexport const useSWRCache: UseSWRCacheHook = () => {\n return {\n cache,\n mutate,\n trigger,\n };\n};\n","import { useState, useMemo } from \"react\";\n\ninterface IUseLoadingData {\n loading: boolean;\n loadError?: TError;\n startLoading: () => void;\n loadSuccess: () => void;\n loadErrored: (error: TError) => void;\n}\n\nexport type UseLoadingDataHook = () => IUseLoadingData;\n\nexport const useLoading = () => {\n const [loading, setLoading] = useState(false);\n const [loadError, setLoadError] = useState();\n\n return useMemo((): IUseLoadingData => {\n\n const startLoading = () => {\n setLoading(true);\n setLoadError(undefined);\n };\n\n const loadSuccess = () => {\n setLoading(false);\n setLoadError(undefined);\n };\n\n const loadErrored = (error: TError) => {\n setLoading(false);\n setLoadError(error);\n };\n\n return ({\n loading,\n loadError,\n startLoading,\n loadErrored,\n loadSuccess,\n });\n }, [loading, loadError]);\n};\n","import { makeFailure, makeSuccess, TResult, loadFileUrlToBase64data } from \"@sg-core/index\";\n\nexport interface IEmailAttachment {\n filename: string;\n base64data: string;\n};\n\nexport interface IEmailAttachmentDTO {\n nimi: string;\n base64sisalto: string;\n};\n\nexport type TEmailAttachments = Array;\n\nexport type TEmailAttachmentsDTO = Array;\n\n\nexport const EmailAttachmentMapper = {\n attachmentToApi: (domain: IEmailAttachment): IEmailAttachmentDTO => {\n return {\n nimi: domain.filename,\n base64sisalto: domain.base64data\n }\n },\n attachmentsToApi: (domain: TEmailAttachments): TEmailAttachmentsDTO => {\n return domain.map(EmailAttachmentMapper.attachmentToApi);\n },\n fileUrlToAttachment: async (href: string, filename: string): Promise> => {\n const data = await loadFileUrlToBase64data(href);\n if (!data.isSuccess) {\n return makeFailure(data.error);\n };\n const attachemnt: IEmailAttachment = {\n filename: filename,\n base64data: data.value\n };\n return makeSuccess(attachemnt);\n }\n};\n\n","import {\n TResult,\n makeSuccess,\n makeFailure,\n ISgApiService,\n jsonToBase64,\n base64ToJson,\n IEndpoint,\n} from \"@sg-core/index\";\n\nimport { IReciever } from \"../models/Reciever\";\nimport {\n EmailAttachmentMapper,\n TEmailAttachments,\n TEmailAttachmentsDTO,\n} from \"../models/EmailAttachment\";\n\n/**\n * SEND EMAIL\n */\n\ninterface ISendEmailResultDTO {\n success: true;\n action: \"laheta_sahkoposti\";\n}\n\nexport interface IEmailReciever extends IReciever {\n osoite?: string;\n nimi?: string;\n templateVariables?: { [key: string]: any };\n}\n\ninterface ISendEmailRequestPayload {\n vastaanottaja?: { osoite: string; nimi: string };\n vastaanottajat?: Array<{ osoite: string; nimi: string }>;\n lahettaja?: { osoite?: string; nimi: string };\n sanomapohja: { tunniste: string; korvaukset?: { [key: string]: any } };\n liitetiedostot?: TEmailAttachmentsDTO;\n}\n\nexport interface ISendEmailOptions {\n reciever: IEmailReciever;\n sender: { name: string; address?: string };\n templateKey: string;\n templateVariables?: { [key: string]: any };\n attachments?: TEmailAttachments;\n}\n\nexport interface ISendMultipleEmailOptions {\n recievers: Array;\n sender?: { name: string; address?: string };\n templateKey: string;\n templateVariables?: { [key: string]: any };\n attachments?: TEmailAttachments;\n}\n\n/**\n * SEND SMS\n */\n\nexport interface ISmsReciever extends IReciever {\n number: string;\n templateVariables?: { [key: string]: any };\n}\n\ninterface ISendSmsRequestPayload {\n vastaanottaja?: { numero: string; nimi: string };\n vastaanottajat?: Array<{ numero: string; nimi: string }>;\n sanomapohja: { tunniste: string; korvaukset?: { [key: string]: any } };\n}\n\nexport interface ISendMultipleSmsOptions {\n recievers: Array;\n templateKey: string;\n templateVariables?: { [key: string]: any };\n}\n\nexport interface ISendSmsOptions {\n reciever: ISmsReciever;\n templateKey: string;\n templateVariables?: { [key: string]: any };\n}\n\n/**\n * SAVE DATA PACKAGE\n */\n\ninterface ISaveDataPackageResultDTO {\n success: true;\n action: \"tallenna_sanomaparametrit\";\n id: string;\n}\n\n/**\n * GET DATA PACKAGE\n */\n\ninterface IGetDataPackageResultDTO {\n success: true;\n action: \"hae_sanomaparametrit\";\n base64data: string;\n}\n\ninterface IGetAnonDataPackageResultDTO {\n success: true;\n action: \"hae_sanomaparametrit_anonyymi\";\n base64data: string;\n sid: string;\n}\n\nexport interface ICommonService {\n sendEmail(options: ISendEmailOptions): Promise>;\n sendSms(options: ISendSmsOptions): Promise>;\n\n sendMultipleSms(options: ISendMultipleSmsOptions): Promise>;\n sendMultipleEmail(options: ISendMultipleEmailOptions): Promise>;\n\n saveDataPackage: (jsonData: {\n [key: string]: any;\n }) => Promise>;\n getDataPackage: (\n id: string\n ) => Promise>;\n\n getPackageWithReadonlySession: (\n id: string\n ) => Promise>;\n getApiTranslations: (\n keys: Array,\n lang?: string\n ) => Promise>;\n}\n\nexport const getCommonService = (\n apiService: ISgApiService,\n Enpoint: IEndpoint\n): ICommonService => {\n /**\n * Send email from backend service using preconfigured templates\n */\n const sendEmail = async (\n options: ISendEmailOptions\n ): Promise> => {\n const action = \"laheta_sahkoposti\";\n const body: ISendEmailRequestPayload = {\n vastaanottaja: {\n osoite: options.reciever.address || \"\",\n nimi: options.reciever.name,\n },\n lahettaja: { nimi: options.sender.name },\n sanomapohja: {\n tunniste: options.templateKey,\n korvaukset: options.templateVariables || {},\n },\n liitetiedostot: options.attachments?.length\n ? EmailAttachmentMapper.attachmentsToApi(options.attachments)\n : undefined,\n };\n\n const apiResponse = await apiService.sendAction(\n Enpoint,\n action,\n body\n );\n\n if (apiResponse.isSuccess === true && apiResponse.value.success === true) {\n return makeSuccess({});\n }\n return apiResponse;\n };\n\n const sendMultipleEmail: ICommonService[\"sendMultipleEmail\"] = async (\n options\n ) => {\n const action = \"laheta_sahkoposti\";\n const body: ISendEmailRequestPayload = {\n vastaanottajat: options.recievers.map((reciever) => ({\n osoite: reciever.address || \"\",\n nimi: reciever.name,\n })),\n lahettaja: options.sender ? { nimi: options.sender.name } : undefined,\n sanomapohja: {\n tunniste: options.templateKey,\n korvaukset: options.templateVariables || {},\n },\n liitetiedostot: options.attachments?.length\n ? EmailAttachmentMapper.attachmentsToApi(options.attachments)\n : undefined,\n };\n\n const apiResponse = await apiService.sendAction(\n Enpoint,\n action,\n body\n );\n\n if (apiResponse.isSuccess === true && apiResponse.value.success === true) {\n return makeSuccess({});\n }\n return apiResponse;\n };\n\n /**\n * Send email from backend service using preconfigured templates\n */\n const sendSms = async (options: ISendSmsOptions): Promise> => {\n const action = \"laheta_tekstiviesti\";\n const body: ISendSmsRequestPayload = {\n vastaanottaja: {\n numero: options.reciever.number,\n nimi: options.reciever.name,\n },\n sanomapohja: {\n tunniste: options.templateKey,\n korvaukset: options.templateVariables || {},\n },\n };\n const apiResponse = await apiService.sendAction(\n Enpoint,\n action,\n body\n );\n if (apiResponse.isSuccess === true && apiResponse.value.success === true) {\n return makeSuccess({});\n }\n return apiResponse;\n };\n\n const sendMultipleSms: ICommonService[\"sendMultipleSms\"] = async (\n options\n ) => {\n const action = \"laheta_tekstiviesti\";\n const body: ISendSmsRequestPayload = {\n vastaanottajat: options.recievers.map((reciever) => ({\n numero: reciever.number,\n nimi: reciever.name,\n })),\n sanomapohja: {\n tunniste: options.templateKey,\n korvaukset: options.templateVariables || {},\n },\n };\n const apiResponse = await apiService.sendAction(\n Enpoint,\n action,\n body\n );\n\n if (apiResponse.isSuccess === true && apiResponse.value.success === true) {\n return makeSuccess({});\n }\n return apiResponse;\n };\n\n /**\n * Save unstructured JSON data to backend for later retrieval\n */\n const saveDataPackage = async (jsonData: {\n [key: string]: any;\n }): Promise> => {\n const action = \"tallenna_sanomaparametrit\";\n const body = {\n base64Data: jsonToBase64(jsonData),\n };\n\n const apiResponse = await apiService.sendAction(\n Enpoint,\n action,\n body\n );\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess({ id: apiResponse.value.id });\n }\n return apiResponse;\n };\n\n const getDataPackage = async (\n id: string\n ): Promise> => {\n const action = \"hae_sanomaparametrit\";\n const body = { id };\n\n const apiResponse = await apiService.sendAction(\n Enpoint,\n action,\n body\n );\n\n if (apiResponse.isSuccess === true) {\n try {\n const data = base64ToJson(apiResponse.value.base64data);\n return makeSuccess({ data });\n } catch (err) {\n return makeFailure(err as Error);\n }\n }\n return apiResponse;\n };\n\n const getPackageWithReadonlySession = async (\n id: string\n ): Promise> => {\n const action = \"hae_sanomaparametrit_anonyymi\";\n const body = { id };\n const apiResponse =\n await apiService.sendAction(\n Enpoint,\n action,\n body,\n true\n );\n\n if (apiResponse.isSuccess === true) {\n try {\n const data = base64ToJson(apiResponse.value.base64data);\n return makeSuccess({ data, token: apiResponse.value.sid });\n } catch (err) {\n return makeFailure(err as Error);\n }\n }\n return apiResponse;\n };\n\n const getApiTranslations: ICommonService[\"getApiTranslations\"] = async (\n translations,\n lang\n ) => {\n const action = \"hae_kaannostekstit_anonyymi\";\n const body = {\n kieli: lang === \"en\" ? \"us\" : lang,\n tekstit: translations.reduce>(\n (acc, key) => [...acc, { alkuperainen: key }],\n []\n ),\n };\n const noToken = true;\n const apiResponse = await apiService.sendAction<{\n tekstit: Array<{ alkuperainen: string; kaannos: string }>;\n }>(Enpoint, action, body, noToken);\n\n if (apiResponse.isSuccess === true) {\n return makeSuccess(\n apiResponse.value.tekstit.reduce(\n (acc, item) => ({ ...acc, [item.alkuperainen]: item.kaannos }),\n {}\n )\n );\n }\n return apiResponse;\n };\n\n return {\n sendEmail,\n sendMultipleEmail,\n\n sendSms,\n sendMultipleSms,\n\n saveDataPackage,\n getDataPackage,\n getPackageWithReadonlySession,\n getApiTranslations,\n };\n};\n","import { createEndpointMaker } from \"./sg-core\";\n\nconst baseUrl = process.env.REACT_APP_API_BASE_URL;\nif (!baseUrl) { throw new Error(\"REACT_APP_API_BASE_URL must be defined\") }\n\n\nconst pdfUrl = process.env.REACT_APP_PDF_GENERATOR_URL;\nif (!pdfUrl) { throw new Error(\"REACT_APP_PDF_GENERATOR_URL must be defined\") }\n\n\nconst makeEndpoint = createEndpointMaker(baseUrl);\n\nexport const Auth = makeEndpoint([\"login_v03.aspx\"]);\n\nexport const Havainnot = makeEndpoint([\"havainnot_v08.aspx\"]);\nexport const Auditoinnit = makeEndpoint([\"auditoinnit_v01.aspx\"]);\nexport const Tyoluvat = makeEndpoint([\"tyoluvat_v08.aspx\"]);\n\nexport const GeneratedAuditoinnit = makeEndpoint([\"generated\", \"auditoinnit_api.aspx\"]);\nexport const GeneratedTyoluvat = makeEndpoint([\"generated\", \"tyoluvat_api.aspx\"]);\nexport const GeneratedTyonkulut = makeEndpoint([\"generated\", \"tyonkulut_api.aspx\"]);\nexport const GeneratedHpr = makeEndpoint([\"generated\", \"hpr_api.aspx\"]);\n\nexport const Kartta = makeEndpoint([\"Kartta_v01.aspx\"]);\nexport const Kohteet = makeEndpoint([\"kohteet_v02.aspx\"]);\nexport const Yleiset = makeEndpoint([\"yleiset_v04.aspx\"]);\nexport const Upload6 = makeEndpoint([\"upload6_v02.aspx\"]);\nexport const HPR = makeEndpoint([\"hpr_v02.aspx\"]);\n\n\nexport const PdfGenerate = createEndpointMaker(pdfUrl)([\"pdf-generate\"]);\n","import { lazy } from \"react\";\nimport { IRouteDefinition, ISubModuleRoutes } from \"../routing\";\n\n\nconst FrontPage = lazy(() => import(/* webpackChunkName: 'FrontPage' */\"./tyoluvat/views/FrontPage\"));\nconst PermitPageRouter = lazy(() => import(/* webpackChunkName: 'PermitPageRouter' */\"./tyoluvat/views/PermitPage/PermitPage\"));\nconst PermitsListPage = lazy(() => import(/* webpackChunkName: 'PermitsListPage' */\"./tyoluvat/views/PermitsListPage\"))\nconst PermitArchivePage = lazy(() => import(/* webpackChunkName: 'PermitArchivePage' */\"./tyoluvat/views/PermitArchivePage\"))\n\nconst MapPage = lazy(() => import(/* webpackChunkName: 'PermitMapPage' */\"./tyoluvat/views/MapPage\"))\nconst EditPermitPage = lazy(() => import(/* webpackChunkName: 'EditPermitPage' */\"./tyoluvat/views/EditPermitPage\"))\nconst InitializePermitPage = lazy(() => import(/* webpackChunkName: 'InitializePermitPage' */\"./tyoluvat/views/InitializePermitPage\"))\nconst CopyPermitPage = lazy(() => import(/* webpackChunkName: 'CopyPermitPage' */\"./tyoluvat/views/CopyPermitPage\"))\nconst NewPermitPage = lazy(() => import(/* webpackChunkName: 'NewPermitPage' */\"./tyoluvat/views/NewPermitPage\"))\n\nconst PermitCreatedPage = lazy(() => import(/* webpackChunkName: 'PermitCreatedPage' */\"./tyoluvat/views/PermitCreatedPage\"))\nconst PermitPrintPage = lazy(() => import(/* webpackChunkName: 'PermitPrintPage' */\"./tyoluvat/views/PermitPrintPage\"))\nconst AnonymousPermitPage = lazy(() => import(/* webpackChunkName: 'AnonymousPermitPage' */\"./tyoluvat/views/AnonymousPermitPage\"))\nconst AnonymousPermitApprovalPage = lazy(() => import(/* webpackChunkName: 'AnonymousPermitApprovalPage' */\"./tyoluvat/views/AnonymousPermitApprovalPage\"))\n\n\n\n\n\nexport enum TyoluvatRouteId {\n TyoluvatFrontPage = \"tyoluvat-front-page\",\n PermitsListPage = \"tyoluvat-permit-list-page\",\n PermitMapPage = \"tyoluvat-permit-map-page\",\n PermitArchivePage = \"tyoluvat-permit-archive-page\",\n InitializePermitPage = \"tyoluvat-open-permit-form-page\",\n NewPermitPage = \"tyoluvat-new-permit-page\",\n\n PermitPage = \"tyoluvat-permit-page\",\n PermitHistoryPage = \"tyoluvat-permit-history-page\",\n PermitTasksPage = \"tyoluvat-permit-tasks-page\",\n PermitEventLog = \"tyoluvat-permit-event-log-page\",\n PermitEventPage = \"tyoluvat-permit-event-page\",\n PermitStatusChangePage = \"tyoluvat-permit-status-change-page\",\n PermitTaskPage = \"tyoluvat-permit-task-detail-page\",\n PermitTaskFormPage = \"tyoluvat-permit-task-form-page\",\n PermitManualControl = \"tyoluvat-permit-task-manual-control\",\n\n\n PermitCreatedPage = \"tyoluvat-permit-created-page\",\n CopyPermitPage = \"tyoluvat-permit-copy-page\",\n PermitPrint = \"tyoluvat-permit-print-page\",\n AnonymousPermit = \"tyoluvat-anonymous-permit-page\",\n AnonymousPermitApproval = \"tyoluvat-anonymous-permit-approval-page\",\n EditPermitPage = \"tyoluvat-edit-permit-page\",\n TyoluvatPageNotFoundPage = \"tyoluvat-page-not-found\"\n\n};\n\n\n\nexport const tyoluvatRoutes: IRouteDefinition[] = [\n {\n id: TyoluvatRouteId.TyoluvatFrontPage,\n exact: true,\n path: \"/\",\n component: FrontPage\n },\n\n {\n id: TyoluvatRouteId.PermitsListPage,\n exact: true,\n path: \"/luvat\",\n component: PermitsListPage\n },\n\n {\n id: TyoluvatRouteId.PermitArchivePage,\n exact: true,\n path: \"/arkisto\",\n component: PermitArchivePage\n },\n\n {\n id: TyoluvatRouteId.PermitMapPage,\n exact: true,\n path: \"/kartta\",\n component: MapPage\n },\n\n {\n id: TyoluvatRouteId.PermitPage,\n exact: true,\n path: \"/luvat/:permit/tiedot\",\n component: PermitPageRouter\n },\n\n {\n id: TyoluvatRouteId.PermitEventLog,\n exact: true,\n path: \"/luvat/:permit/tapahtumat\",\n component: PermitPageRouter\n },\n\n {\n id: TyoluvatRouteId.PermitEventPage,\n exact: true,\n path: \"/luvat/:permit/tapahtumat/:event\",\n component: PermitPageRouter\n },\n\n {\n id: TyoluvatRouteId.PermitStatusChangePage,\n exact: true,\n path: \"/luvat/:permit/tilanvaihto\",\n component: PermitPageRouter\n },\n\n {\n id: TyoluvatRouteId.PermitTaskPage,\n exact: true,\n path: \"/luvat/:permit/tehtavat/:task/tiedot\",\n component: PermitPageRouter\n },\n\n {\n id: TyoluvatRouteId.PermitTaskFormPage,\n exact: true,\n path: \"/luvat/:permit/tehtavat/:task/lomake\",\n component: PermitPageRouter\n },\n\n {\n id: TyoluvatRouteId.PermitTasksPage,\n exact: false,\n path: \"/luvat/:permit/tehtavat\",\n component: PermitPageRouter\n },\n\n\n {\n id: TyoluvatRouteId.EditPermitPage,\n exact: true,\n path: \"/muokkaa/permit_:permit\",\n component: EditPermitPage\n },\n\n\n {\n id: TyoluvatRouteId.InitializePermitPage,\n exact: true,\n path: \"/uusi-lupa/:formType\",\n component: InitializePermitPage\n },\n\n\n {\n id: TyoluvatRouteId.CopyPermitPage,\n exact: true,\n path: \"/uusi-lupa/:formType/:basePermit\",\n component: CopyPermitPage\n },\n\n\n {\n id: TyoluvatRouteId.NewPermitPage,\n exact: true,\n path: \"/lupalomake/:formType\",\n component: NewPermitPage\n },\n\n\n\n {\n id: TyoluvatRouteId.PermitCreatedPage,\n exact: true,\n path: \"/valmis/:formType/:permit\",\n component: PermitCreatedPage\n },\n\n\n //\n // Anonymous routes\n //\n\n {\n id: TyoluvatRouteId.PermitPrint,\n requireAuth: false,\n exact: true,\n path: \"/tulosta/lupa/:package\",\n component: PermitPrintPage\n },\n\n {\n id: TyoluvatRouteId.AnonymousPermit,\n requireAuth: false,\n exact: true,\n path: \"/anonyymi/lupa/:package\",\n component: AnonymousPermitPage\n },\n\n {\n id: TyoluvatRouteId.AnonymousPermit,\n requireAuth: false,\n exact: true,\n path: \"/anonyymi/kuittaus/:package/:approvalGuid\",\n component: AnonymousPermitApprovalPage\n },\n\n {\n id: TyoluvatRouteId.TyoluvatPageNotFoundPage,\n exact: false,\n requireAuth: false,\n path: \"\",\n component: lazy(() => import(/* webpackChunkName: 'LoginExpiredPage' */\"../@common/views/PageNotFoundPage\"))\n }\n\n]\n\n\n\n\nconst TyoluvatRouting: ISubModuleRoutes = {\n prefix: \"tyoluvat\",\n routes: tyoluvatRoutes,\n template: lazy(() => import(/* webpackChunkName: 'TyoluvatApp' */\"./TyoluvatApp\")),\n routeId: TyoluvatRouteId\n}\n\nexport default TyoluvatRouting","import { useMemo } from \"react\";\nimport { AuditoinnitCacheKeys } from \"../cacheKeys\";\nimport { getContextService } from '../../services/contextService';\nimport * as Endpoint from \"../../../endpoints\";\nimport { getSgApiService } from \"../../../sg-core/services/ApiService2\";\nimport { useAuthContext } from \"../../auth/AuthenticationProvider\";\nimport { useSWROffline } from \"../../../sg-core/swr/useSWROffline\";\n\nexport type IUseUserAppRolesHook = () => {\n data: string[];\n fetching: boolean;\n error: any\n}\n\nexport const useUserAppRoles: IUseUserAppRolesHook = () => {\n const { token, lang, anonymousSession } = useAuthContext();\n\n const fetcher = async (): Promise => {\n if (!token) return [];\n const service = getContextService(getSgApiService(token), Endpoint.auditoinnit, anonymousSession);\n\n const initialData = await service.getUserAppRoles()\n\n if (initialData.isFailure) {\n throw initialData.error;\n }\n\n return initialData.value;\n };\n\n const cacheKey = AuditoinnitCacheKeys(token, lang).AppRoles;\n const { data, isValidating, error } = useSWROffline(\n cacheKey,\n fetcher,\n\n { suspense: true, revalidateOnFocus: false, revalidateOnMount: false }\n );\n\n const rawData = data ?? [];\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating,\n error\n }), [rawData, isValidating]);\n};\n","import React from \"react\";\nimport { Header, Segment } from \"semantic-ui-react\";\nimport { bestGuessHostedInDevelopment } from \"../../../../sg-core/utils/enviroment.helpers\";\nimport \"./_FullPageLoader.less\";\n\ninterface FullPageLoaderProps {\n loaderKey?: string;\n title?: string;\n description?: string;\n fixed?: boolean;\n};\n\nexport const FullPageLoader: React.FC = ({\n loaderKey = \"uknown\",\n title,\n description,\n fixed = false\n}) => {\n if (bestGuessHostedInDevelopment) {\n // console.log(\"[FullPageLoader]\", { loaderKey, title, description });\n };\n return (\n \n
{title}
\n {description &&

{description}

}\n \n );\n};\n\nexport const defaultFullPageLoader = ;","import React from \"react\";\nimport { Message, Placeholder } from \"semantic-ui-react\";\nimport { useFileUrl } from \"../context/FileUploadContext\";\nimport _truncate from \"lodash/truncate\";\n\ninterface FileViewProps {\n id: string;\n title: string;\n truncateLength?: number\n}\n\n\nexport const FileView: React.FC = ({ id, title, truncateLength = 40 }) => {\n const { loadError, fileUrl } = useFileUrl(id);\n\n let shortTitle = truncateLength > 0 ? _truncate(title, { length: 40 }) : title;\n\n if (fileUrl) {\n return {shortTitle} ;\n }\n\n if (loadError) {\n return Tiedoston lataus ei onnistunut;\n }\n\n return ;\n\n};\n","import React, { useCallback, PropsWithChildren } from \"react\";\nimport { List, Icon } from \"semantic-ui-react\";\nimport { FileUploadBtn, IFileUploadElementProps } from \"./FileUpload\";\nimport { EUploadStatus, IUploadableFile } from \"../models/IFile\";\nimport { FileView } from \".\";\n\nexport interface FileInputProps {\n name?: string;\n files: { id: string; name: string }[]\n multiple?: boolean;\n onUploaded?: (newFiles: { id: string; name: string }[]) => void;\n onRemoved: (guid: string) => void;\n onInvalidFile?: (error: Error) => void;\n inputAreaElem: React.ComponentType>;\n}\n\n\nconst noop = () => undefined;\n\nconst FileIndicator: React.FC<{ file: IUploadableFile; onRemove: any }> = ({ file, onRemove }) => {\n\n const loading = [EUploadStatus.Uploading, EUploadStatus.Removing].includes(file.status);\n const complete = file.status === EUploadStatus.Done;\n const error = [EUploadStatus.RemoveError, EUploadStatus.UploadError].includes(file.status);\n\n let ItemIcon;\n if (loading) {\n ItemIcon = ;\n } else if (complete || error) {\n ItemIcon = ;\n }\n\n const name = file.name || \"\";\n let shortTitle = name.length > 40 ? `${name.substr(0, 40)}...` : name;\n\n\n return (\n \n {ItemIcon && {ItemIcon} }\n \n \n {file.name && file.guid && }\n { ({file.status})}\n onRemove(file)} style={{ marginLeft: '20px', cursor: 'pointer', color: 'grey' }}>\n \n \n \n \n \n )\n return (
{shortTitle}
)\n\n};\n\n\nconst ListWrapper: React.FC = ({ children }) => ( {children} );\n\nexport const FileInput: React.FC = (props) => {\n const {\n onUploaded = noop,\n onRemoved = noop,\n inputAreaElem,\n multiple,\n files,\n name\n } = props;\n\n const onUploadedCallback = useCallback((files: { id: string; name: string }[]) => {\n onUploaded(files);\n }, [onUploaded]);\n\n return (\n \n );\n};\n","import React, { useCallback, PropsWithChildren } from \"react\";\nimport { Label, List, Icon, Image as SUIImage } from \"semantic-ui-react\";\nimport { EUploadStatus, IUploadableFile } from \"../models/IFile\";\n\nimport { FileUploadBtn, IFileUploadElementProps } from \"./FileUpload\";\nimport { ImageView as Image } from \"./Image\";\n\n\nexport interface IImageInputProps {\n files: { id: string; name: string }[]\n multiple?: boolean;\n onUploaded?: (newFiles: { id: string; name: string }[]) => void;\n onRemoved: (guid: string) => void;\n onInvalidFile?: (error: Error) => void;\n inputAreaElem: React.ComponentType>;\n disabled?: boolean\n}\n\nconst noop = () => undefined;\n\nconst ImageListItem: React.FC<{ file: IUploadableFile; onRemove: any }> = ({ file, onRemove }) => {\n const loading = [EUploadStatus.Uploading, EUploadStatus.Removing].includes(file.status);\n\n if (file.guid) {\n return (\n \n !loading && onRemove(file)}\n color=\"black\"\n size=\"tiny\"\n style={{ cursor: \"pointer\" }}\n floating circular>\n \n {loading ? : }\n \n \n \n \n );\n }\n\n return (\n \n \n \n );\n\n};\n\nconst ListWrapper: React.FC = ({ children }) => (\n\n {children} \n);\n\n\nexport const ImageInput: React.FC = (props) => {\n const {\n onUploaded = noop,\n onRemoved = noop,\n inputAreaElem,\n multiple,\n files,\n disabled\n } = props;\n\n const onUploadedCallback = useCallback((files: { id: string; name: string }[]) => {\n onUploaded(files);\n }, [onUploaded]);\n\n return (\n \n );\n};\n\n","import { useAuthContext } from \"../AuthenticationProvider\";\nimport { IUser } from \"../../../sg-auth/models/User\";\n\nexport const useLoggedInUser = (): IUser => {\n const user = useAuthContext().user;\n\n if (!user) {\n throw new Error(\"Invalid operation: cannot retrieve user when the user is not logged in\");\n }\n\n return user;\n};\n","import React, { useEffect, useRef } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\n\ninterface IPageScrollLocationState {\n noScrollTop: boolean;\n}\n\nconst ControlledPageScroll: React.FC<{ className?: string; }> = ({ children, className }) => {\n const location = useLocation()\n const history = useHistory()\n\n const wrapperElement = useRef(null);\n\n useEffect(() => {\n let isNavigatingBackwards = history.action === \"POP\";\n if (!isNavigatingBackwards && location.state?.noScrollTop !== true) {\n wrapperElement.current && window.scrollTo(0, 0);\n }\n\n }, [location, history]);\n\n return (\n
{children}
\n );\n};\n\n\nexport default ControlledPageScroll;\n","import React from \"react\";\nimport { Dropdown, SelectProps } from \"semantic-ui-react\";\nimport { useAuthContext } from \"../auth/AuthenticationProvider\";\nimport { useApplicationConfiguration } from \"../configuration/ConfigurationContext\";\nimport { parseQuery, stringifyQuery } from \"../utils/query.helper\";\n\n\n\ninterface LanguageSelectProps { }\n\nconst LanguageSelect: React.FC = () => {\n const { showLanguageSelect, languages } = useApplicationConfiguration()\n const { lang, changeLanguage } = useAuthContext();\n\n const selectChange: SelectProps[\"onChange\"] = (_1, { value }) => {\n const { lang: queryLang, ...otherParams } = parseQuery<{ lang?: string }>(window.location.search);\n const nextLang = String(value);\n\n if (queryLang) {\n const nextHref = window.location.href.split(\"?\")[0] + `?${stringifyQuery({ ...otherParams, lang: nextLang })}`\n window.location.href = (nextHref);\n }\n\n changeLanguage(nextLang)\n };\n\n const languageOptions = Object.values(languages).map((lang) => ({\n text: lang === \"us\" ? \"English\" : lang === \"fi\" ? \"Suomi\" : lang,\n value: lang\n }));\n\n const value = lang;\n\n if (!showLanguageSelect) {\n return null\n };\n\n return (\n
\n \n
\n );\n};\n\n\nexport default LanguageSelect;\n","import qs from \"qs\"\n\ntype TParams = { [key: string]: any };\n\nexport const parseQuery = (search: string) => {\n search = search.replace(\"?\", \"\");\n return qs.parse(search) as Partial\n};\nexport const stringifyQuery = (params: T) => qs.stringify(params);","\nimport React, { useLayoutEffect } from 'react';\nimport { useApplicationConfiguration } from '../../configuration/ConfigurationContext';\nimport ControlledPageScroll from '../ControlledPageScroll';\nimport LanguageSelect from '../LanguageSelect';\n\nimport \"./_PageTemplate.less\";\n\ninterface PageTemplateProps {\n id?: string\n};\n\nexport const PageTemplate: React.FC = ({ id, children }) => {\n const { showLanguageSelect } = useApplicationConfiguration()\n\n useLayoutEffect(() => {\n if (id) {\n document.body.id = id;\n return () => { document.body.id = \"\"; }\n }\n }, [id]);\n\n return (\n \n
\n {showLanguageSelect && (\n \n )}\n {children}\n
\n
\n );\n}\n","import { IAuthContext } from \"../interfaces/IAuthContext\";\nimport { IAppUser } from \"../../models/AppUser\";\nimport { Reducer, useReducer, useEffect, useMemo } from \"react\";\nimport { useSWRCache } from \"../../../sg-core/swr/useSWRCache\";\nimport { getAuthService, ILoginResult } from \"../../../sg-auth/services/SgAuthService\";\n\nimport * as Endpoint from \"../../../endpoints\";\nimport { makeSuccess, makeFailure, TResult } from \"../../../sg-core/utils/Result\";\nimport { useCookie } from \"../../hooks/useCookie\";\nimport { AUTH_COOKIE as AUTH_COOKIE_KEY, RDR_COOKIE, RETURN_HREF_COOKIE } from \"../../constants/StorageKeys\";\nimport { parseQuery } from \"../../utils/query.helper\";\nimport { default as JSCookies } from \"js-cookie\";\nimport * as AuditoinnitStorage from \"@/@auditoinnit/auditoinnit/constants/StorageKeys\";\nimport * as TyoluvatStorage from \"@/@dokumentit/tyoluvat/constants/StorageKeys\";\nimport * as HavainnotStorage from \"@/@havainnot/havainnot/constants/StorageKeys\";\nimport { EAppLanguages } from \"@/@common/utils/localization\";\n\nexport type AuthenticationHook = () => IAuthContext;\n\n// Default authentication hook implementation\n\ninterface IState {\n initializing: boolean;\n initialized: boolean;\n loggedIn: boolean;\n loggingIn: boolean;\n loginError?: string;\n user?: IAppUser;\n token?: string;\n returnHref?: string;\n lang?: string;\n apiLang?: TResult;\n anonymousSession: boolean;\n applicationGuid?: string | null;\n}\n\nenum EAction {\n InitializationStarted = \"InitializationStarted\",\n InitializationComplete = \"InitializationComplete\",\n AnonymousLogin = \"AnonymousLogin\",\n StartLogin = \"StartLogin\",\n SuccessLogin = \"SuccessLogin\",\n FailureLogin = \"FailureLogin\",\n Logout = \"Logout\",\n ChangeLanguage = \"ChangeLanguage\",\n FailureChangeLanguage = \"FailureChangeLanguage\",\n}\n\ntype TAction\n = { type: EAction.Logout | EAction.StartLogin | EAction.InitializationComplete | EAction.InitializationStarted }\n | { type: EAction.FailureLogin, error: string }\n | { type: EAction.SuccessLogin, user: IAppUser, token: string; returnHref?: string; lang: string; applicationGuid?: string; apiLang?: TResult }\n | { type: EAction.AnonymousLogin, token: string }\n | { type: EAction.ChangeLanguage, lang: string; apiLang: TResult }\n | { type: EAction.FailureChangeLanguage, apiLang: TResult };\n\nconst initialState: IState = {\n initializing: false,\n initialized: false,\n loggedIn: false,\n loggingIn: false,\n anonymousSession: false,\n applicationGuid: JSCookies.get(RDR_COOKIE) || null,\n lang: EAppLanguages.FI,\n apiLang: makeSuccess(\"fi\")\n};\n\nconst reducer: Reducer = (state, action) => {\n\n const set = (data: Partial) => ({ ...state, ...data });\n\n switch (action.type) {\n case EAction.InitializationStarted: {\n return set({ initializing: true });\n }\n case EAction.InitializationComplete: {\n return set({ initialized: true, initializing: false });\n }\n case EAction.StartLogin: {\n return set({ loggedIn: false, loggingIn: true, user: undefined, loginError: undefined });\n }\n case EAction.SuccessLogin: {\n return set({ loggedIn: true, loggingIn: false, user: action.user, token: action.token, returnHref: action.returnHref, lang: action.lang, applicationGuid: action.applicationGuid });\n }\n case EAction.FailureLogin: {\n return set({ loggedIn: false, loggingIn: false, loginError: action.error });\n }\n case EAction.AnonymousLogin: {\n return set({ loggedIn: true, loggingIn: false, token: action.token, user: undefined, initialized: true, anonymousSession: true });\n }\n case EAction.Logout: {\n return set({ loggedIn: false, loggingIn: false, loginError: undefined, user: undefined, applicationGuid: undefined });\n }\n case EAction.ChangeLanguage: {\n return set({ lang: action.lang });\n }\n default: {\n return state;\n }\n }\n};\n\n\nexport const useAuthentication: AuthenticationHook = () => {\n const [state, dispatch] = useReducer(reducer, initialState);\n const authCookie = useCookie(AUTH_COOKIE_KEY, { expires: 7, sameSite: \"lax\", secure: true });\n const returnHref = useCookie(RETURN_HREF_COOKIE, { expires: 7, sameSite: \"lax\", secure: true });\n\n const authService = getAuthService(Endpoint.Auth.path, state.anonymousSession, []);\n\n const { cache } = useSWRCache();\n\n\n useEffect(() => {\n if (state.loginError) {\n authCookie.delete();\n }\n }, [state.loginError]); // eslint-disable-line\n\n\n useEffect(() => {\n const guery = parseQuery<{ lang?: string }>(window.location.search);\n const rawLang = guery.lang || state.lang;\n const apiLang = state.apiLang?.isSuccess ? state.apiLang.value : \"\";\n\n const change = async (lang: any, token: any) => {\n const result = await authService.changeSessionLanguage(lang, token);\n if (result.isSuccess) {\n dispatch({ type: EAction.ChangeLanguage, lang: lang, apiLang: makeSuccess(lang) });\n return\n };\n dispatch({ type: EAction.FailureChangeLanguage, apiLang: result });\n };\n\n if (!state.apiLang?.isFailure && state.token && (rawLang && rawLang !== apiLang)) {\n change(rawLang, state.token)\n }\n }, [state.token]); // eslint-disable-line\n\n\n return useMemo(() => {\n\n\n const setRdr = (applicationGuid: string) => {\n JSCookies.set(RDR_COOKIE, applicationGuid, { path: process.env.PUBLIC_URL, expires: 7, sameSite: \"lax\", secure: true });\n }\n\n const clearLocalStorage = () => {\n TyoluvatStorage.clearLocalStorage();\n AuditoinnitStorage.clearLocalStorage();\n HavainnotStorage.clearLocalStorage();\n };\n\n const loginWithUser = (user: IAppUser, sid: string) => {\n dispatch({ type: EAction.SuccessLogin, user, token: sid, lang: user.language });\n };\n\n\n const loginWithAnonymousToken = (sid: string) => {\n dispatch({ type: EAction.AnonymousLogin, token: sid });\n };\n\n\n type TLoginFetcher = (token: string) => Promise>;\n\n const handleLoginResult = async (fetcher: TLoginFetcher, args: Parameters): Promise> => {\n try {\n const result = await fetcher(...args);\n if (!result.isSuccess) throw result.error;\n dispatch({\n type: EAction.SuccessLogin,\n ...result.value,\n lang: result.value.user.language,\n apiLang: makeSuccess(result.value.apiLanguage)\n });\n authCookie.delete();\n authCookie.set(result.value.token);\n setRdr(result.value.applicationGuid);\n\n if (result.value.returnHref) {\n returnHref.set(result.value.returnHref);\n }\n return result;\n } catch (rawError) {\n const error = (rawError as Error);\n dispatch({ type: EAction.FailureLogin, error: error.message });\n return makeFailure(error);\n };\n }\n\n const loginWithToken = async (token: string, isReturnToken = false) => {\n clearLocalStorage();\n return await handleLoginResult(authService.activateToken, [token]);\n };\n\n const loginWithCookie = async () => {\n const tokenResult = authCookie.get();\n if (!tokenResult.isSuccess) {\n return tokenResult\n };\n const token = tokenResult.value\n\n return await handleLoginResult(authService.fetchSessionDetail, [token]);\n };\n\n\n const loginWithUrlParam = async () => {\n const { search } = window.location;\n const regex = /^\\?.*token=([A-Za-z0-9-]+)/g;\n const regexResult = regex.exec(search);\n\n if (regexResult === null) { return makeFailure(Error(\"No token in URL\")) }\n\n const [_1, token] = regexResult; // eslint-disable-line\n\n // Remove token form url\n window.history.pushState(\"object or string\", \"Title\", window.location.pathname);\n\n return await loginWithToken(token);\n };\n\n const changeLanguage = async (lang: any) => {\n if (!state.token) return;\n // const result = await authService.changeSessionLanguage(lang, state.token);\n // if (result.isSuccess) {\n // dispatch({ type: EAction.ChangeLanguage, lang: lang });\n // };\n };\n\n const logOut = async () => {\n dispatch({ type: EAction.Logout });\n cache.clear();\n authCookie.delete();\n JSCookies.remove(RDR_COOKIE);\n clearLocalStorage();\n };\n\n const initialize = async () => {\n if (!state.initializing && !state.initialized) {\n dispatch({ type: EAction.InitializationStarted });\n\n if (window.location.search.indexOf(\"token=\") > -1) {\n await loginWithUrlParam();\n } else {\n await loginWithCookie();\n }\n\n dispatch({ type: EAction.InitializationComplete });\n }\n };\n\n const sessionCacheKey = [state.token, state.lang].join(\"-\")\n const returnHrefResult = returnHref.get();\n\n return {\n // logIn,\n loginWithUser,\n loginWithAnonymousToken,\n changeLanguage,\n // loginWithCookie,\n logOut,\n loggedIn: state.loggedIn,\n loggingIn: state.loggingIn,\n loginError: state.loginError,\n initialized: state.initialized,\n user: state.user,\n token: state.token,\n lang: state.lang,\n returnHref: returnHrefResult.isSuccess ? returnHrefResult.value : undefined,\n sessionCacheKey,\n initialize,\n anonymousSession: state.anonymousSession,\n applicationGuid: state.applicationGuid\n };\n }, [state]); // eslint-disable-line\n};\n","import qs from \"qs\"\n\ntype TParams = { [key: string]: any };\n\nexport const parseQuery = (search: string) => {\n search = search.replace(\"?\", \"\");\n return qs.parse(search) as Partial\n};\nexport const stringifyQuery = (params: T) => qs.stringify(params);","import { getRequiredEnviromentVariable } from \"../../sg-core\";\n\ninterface IEnviromentVariables {\n siteLogo: string;\n kohderekisteri: string,\n apiBaseUrl: string;\n production: boolean;\n publicUrl: string;\n defaultApp: \"tyoluvat\" | \"havainnot\" | \"auditoinnit\";\n\n applicationMenuHref?: string;\n};\n\nexport const EnviromentVariables: IEnviromentVariables = {\n siteLogo: process.env.REACT_APP_SITE_LOGO || \"/site-logo.png\",\n kohderekisteri: getRequiredEnviromentVariable(\"REACT_APP_KOHDEREKISTERI\"),\n apiBaseUrl: getRequiredEnviromentVariable(\"REACT_APP_API_BASE_URL\"),\n\n production: process.env.NODE_ENV === \"production\",\n publicUrl: process.env.PUBLIC_URL,\n defaultApp: process.env.REACT_APP_DEFAULT_APP as any || \"tyoluvat\",\n applicationMenuHref: process.env.REACT_APP_APPLICATION_MENU_HREF || \"https://gate.systemsgarden.com/\",\n};\n\n","export * from \"./EvaluationsSummary\";","import React, { createContext, useContext, SetStateAction, useLayoutEffect } from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { useLocalStorage } from \"../../sg-hooks/useLocalStorage\";\nimport { AUDIT_FILTERS, AUDIT_PAGINATION } from \"../constants/StorageKeys\";\nimport { IPagination } from \"../interfaces/common/IPagination\";\nimport { IAuditListFilters } from \"../interfaces/IAudit\";\n\nconst INITIAL_FILTERS = { roles: [] };\nconst INITIAL_PAGINATION = { page: 1, pageSize: 10 };\n\n\ninterface IAuditListFiltersContext {\n filters: IAuditListFilters;\n pagination: IPagination\n\n updateFilters: (updates: Partial) => void;\n setFilters: (updates: IAuditListFilters) => void;\n\n setPagination: (set: SetStateAction) => void;\n}\n\nconst noop = () => undefined;\n\nconst defaultValue: IAuditListFiltersContext = {\n filters: INITIAL_FILTERS,\n pagination: INITIAL_PAGINATION,\n updateFilters: noop,\n setFilters: noop,\n setPagination: noop\n\n};\n\nconst context = createContext(defaultValue);\nconst { Provider } = context;\n\nexport const useAuditListFiltersContext = () => useContext(context);\n\n// Provider\nexport const AuditListFiltersProvider: React.FC = ({ children }) => {\n const history = useHistory()\n const location = useLocation<{ filters: IAuditListFilters }>();\n\n const [filters, setFilters] = useLocalStorage(AUDIT_FILTERS, INITIAL_FILTERS);\n const [pagination, setPagination] = useLocalStorage(AUDIT_PAGINATION, INITIAL_PAGINATION);\n\n const updateFilters = (updates: Partial) => {\n setFilters((prevFilters) => ({ ...prevFilters, ...updates }));\n setPagination(INITIAL_PAGINATION);\n };\n\n // Update filters from location \n useLayoutEffect(() => {\n //@ts-ignore\n if (location.state?.filters) {\n history.replace(location.pathname)\n setFilters(location.state.filters);\n }\n }, [history, location.pathname, location, setFilters])\n\n\n const value: IAuditListFiltersContext = {\n filters,\n updateFilters,\n setFilters,\n\n pagination,\n setPagination\n };\n\n return (\n \n {children}\n \n );\n};\n","import React, { ErrorInfo } from \"react\";\n\ninterface IErrorState {\n hasError: boolean;\n error: Error | null;\n}\n\ninterface IErrorProps {\n onError?: (error: Error) => void;\n fallback: JSX.Element;\n}\n\nclass ErrorBoundary extends React.Component {\n constructor(props: IErrorProps) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n }\n }\n\n static getDerivedStateFromError(error: Error): IErrorState {\n return {\n hasError: true,\n error: error,\n }\n }\n\n componentDidCatch(error: Error, logInfo: ErrorInfo) {\n console.error(logInfo);\n console.error(error);\n if (error && this.props.onError) {\n this.props.onError(error)\n }\n }\n\n render() {\n\n if (this.state.hasError) {\n return this.props.fallback;\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useFormType } from \"../../data/formType/useFormType\";\n\ninterface IFormTypeNameProps {\n formTypeId: number;\n}\n\nexport const FormTypeName: React.FC = ({ formTypeId }) => {\n const { t } = useTranslation();\n const { data: type } = useFormType(formTypeId);\n\n if (!type) {\n return {t(\"Tuntematon havaintotunniste\")} '{formTypeId}';\n }\n\n return {type.name};\n}\n","import { useEffect, useState } from \"react\";\n\n\n\nconst getOnlineStatus = () => {\n return typeof navigator !== \"undefined\" &&\n typeof navigator.onLine === \"boolean\"\n ? navigator.onLine\n : true;\n}\n\ntype IUseOnlineStatusHook = () => boolean;\n\nexport const useOnlineStatus: IUseOnlineStatusHook = () => {\n const [onlineStatus, setOnlineStatus] = useState(getOnlineStatus());\n\n const goOnline = () => setOnlineStatus(true);\n\n const goOffline = () => setOnlineStatus(false);\n\n useEffect(() => {\n window.addEventListener(\"online\", goOnline);\n window.addEventListener(\"offline\", goOffline);\n\n return () => {\n window.removeEventListener(\"online\", goOnline);\n window.removeEventListener(\"offline\", goOffline);\n };\n }, []);\n\n return onlineStatus;\n}","\n\n\nimport { EAuditStatus } from '../interfaces/IAudit';\nimport { JSONSchema } from \"../../sg-schema/RJSF\";\n\n\nexport interface ISchemaContext {\n roles: string[];\n mode: \"display\" | \"form\",\n status: EAuditStatus,\n}\n\nexport const contextSchema: JSONSchema = {\n \"type\": \"object\",\n \"properties\": {\n \"roles\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\"display\", \"form\"]\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [EAuditStatus.Draft, EAuditStatus.Finished]\n },\n\n \"canViewNames\": {\n \"type\": \"boolean\"\n },\n }\n}\n","import React, { PropsWithChildren } from \"react\";\nimport { Icon, List, Image, Responsive } from \"semantic-ui-react\";\nimport ImageInput from \"../../../sg-fileupload/components/ImageInput\";\nimport { IFileUploadElementProps } from \"../../../sg-fileupload/components/FileUpload\";\nimport { IImage } from \"../../interfaces/IImage\";\nimport { useTranslation } from \"react-i18next\";\n\n\nconst DefaultInputElement: React.FC> = ({ children, isDragActive }) => {\n const { t } = useTranslation()\n const texts = {\n dragImageHereOrClick: t(\"Lataa kuva raahaamalla se tähän tai napsauttamalla\")\n };\n\n return (\n \n
\n
\n \n \n \n \n
\n
\n {texts.dragImageHereOrClick}\n {children}\n
\n
\n
\n );\n};\n\ntype TValue = IImage | IImage[];\n\ntype TValueProp = T extends [] ? IImage[] : IImage;\n\n\ninterface ImageUploadProps {\n type?: string,\n value?: TValueProp;\n onChange: (value: TValueProp) => void;\n readonly?: boolean;\n disabled?: boolean;\n isMulti?: boolean;\n InputElement?: React.FC>\n}\n\nconst ImageUpload = (props: ImageUploadProps) => {\n const {\n value,\n onChange,\n disabled = false,\n readonly = false,\n isMulti = false,\n InputElement = DefaultInputElement\n } = props\n\n\n const onAddImage = (newImages: IImage[]) => {\n if (!onChange) return;\n const prevValue = isMulti ? (Array.isArray(value) ? value || [] as IImage[] : [] as IImage[]) : value;\n if (isMulti) {\n onChange((prevValue as any).concat(newImages));\n } else {\n onChange(newImages[0] as any)\n }\n };\n\n const onRemovedImage = (guid: string) => {\n if (!onChange) return;\n if (isMulti) {\n onChange((value as any || []).filter((file: any) => file.id !== guid))\n } else {\n onChange(null as any)\n }\n };\n\n if (readonly) {\n return (\n \n {isMulti ? (\n (value as any || []).map((file: any) => (\n \n \n \n ))\n ) : value ? (\n \n \n \n ) : null}\n \n )\n }\n\n return (\n \n );\n}\n\nImageUpload.defaultProps = {\n type: \"text\",\n required: false,\n disabled: false,\n readOnly: false,\n autoFocus: false,\n};\n\nexport default ImageUpload;\n","import { SemanticCOLORS } from \"semantic-ui-react\";\nimport { EAuditStatus } from \"../interfaces/IAudit\";\n\ntype TStatusColors = {\n [key in EAuditStatus]: SemanticCOLORS;\n}\n\nexport const StatusColors: TStatusColors = {\n [EAuditStatus.Draft]: \"orange\",\n [EAuditStatus.Finished]: \"red\",\n [EAuditStatus.Unknown]: \"grey\",\n};\n","import { useMemo } from \"react\";\nimport * as Endpoint from \"../../../endpoints\";\n\nimport IFormType from \"../../interfaces/IFormType\";\nimport { useAuthContext } from \"../../auth/AuthenticationProvider\";\nimport IFormDefinition from \"../../interfaces/IFormDefinition\";\nimport { getSgApiService } from \"../../../sg-core/services/ApiService2\";\nimport { getContextService } from \"../../services/contextService\";\nimport { AuditoinnitCacheKeys } from \"../cacheKeys\";\nimport { useSWROffline } from \"../../../sg-core/swr/useSWROffline\";\n\nexport type IUseFormTypeHook = (formTypeId: IFormType[\"id\"]) => {\n data: IFormDefinition | null;\n fetching: boolean;\n}\n\nexport const useFormDefinition: IUseFormTypeHook = (formTypeId) => {\n const { token, lang, anonymousSession } = useAuthContext();\n const service = getContextService(getSgApiService(token), Endpoint.auditoinnit, anonymousSession);\n\n\n const fetcher = async (): Promise => {\n\n const initialData = await service.getFormDefinition(formTypeId);\n if (initialData.isFailure) {\n throw initialData.error;\n }\n if (!initialData.value || !initialData.value.schema) {\n throw Error(\"Schema is missing!\");\n }\n const mockDefinition = { ...initialData.value };\n if (process.env.NODE_ENV !== \"production\") {\n // mockDefinition.schema = require(\"../../../@schemas/kerava_vapaakierros.json\")\n }\n return mockDefinition;\n };\n\n const cacheKey = AuditoinnitCacheKeys(token, lang).FormDefinitionInstance(formTypeId);\n const { data, isValidating } = useSWROffline(\n cacheKey,\n fetcher,\n { suspense: true, revalidateOnFocus: false, revalidateOnMount: false }\n );\n\n\n const rawData = data ?? null;\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating\n }), [rawData, isValidating]);\n};\n","import { useMemo } from \"react\";\nimport { AuditoinnitCacheKeys } from \"../../cacheKeys\";\nimport * as Endpoint from \"../../../../endpoints\";\nimport { getSgApiService } from \"../../../../sg-core/services/ApiService2\";\nimport { useAuthContext } from \"../../../auth/AuthenticationProvider\";\nimport IAudit from \"../../../interfaces/IAudit\";\nimport { getAuditService } from \"../../../services/auditService\";\nimport { useSWROffline } from \"../../../../sg-core/swr/useSWROffline\";\nimport { ConfigInterface } from \"swr\";\n\nexport type IUseAuditHook = (auditGuid?: IAudit[\"guid\"], config?: ConfigInterface) => {\n data: IAudit | null;\n fetching: boolean;\n}\n\nexport const useAudit: IUseAuditHook = (auditGuid, config = {}) => {\n const { token, lang, anonymousSession } = useAuthContext();\n const service = getAuditService(getSgApiService(token), Endpoint.auditoinnit, anonymousSession);\n\n\n const fetcher = async (): Promise => {\n if (!auditGuid) return null;\n\n const auditData = await service.getAudit(auditGuid)\n\n if (auditData.isFailure) {\n throw auditData.error;\n }\n return auditData.value.audit;\n };\n\n const cacheKey = AuditoinnitCacheKeys(token, lang).AuditInstance(auditGuid || \"null\");\n const { data, isValidating } = useSWROffline(cacheKey, fetcher, {\n suspense: true,\n revalidateOnFocus: false,\n revalidateOnMount: true,\n revalidateOnReconnect: false,\n ...config\n });\n\n const rawData = data || null;\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating,\n }), [rawData, isValidating]);\n};\n","import { makeFailure, makeSuccess, TResult } from \"./Result\";\n\n\n/**\n * Loads file from url\n * @param href \n * @returns \n */\nexport const loadFileUrl = async (href: string): Promise> => {\n try {\n const response = await fetch(href);\n if (!response.ok) {\n throw Error(\"Failed to load file from url\")\n };\n const data = await response.blob();\n return makeSuccess(data);\n } catch (error) {\n return makeFailure(error as Error);\n };\n};\n\n/**\n * Loads file from url and returns it base64 encoded\n * @param href \n * @param filename \n */\nexport const loadFileUrlToBase64data = async (href: string): Promise> => {\n try {\n const blobData = await loadFileUrl(href);\n\n if (!blobData.isSuccess) {\n throw blobData.error\n };\n\n var reader = new FileReader();\n reader.readAsDataURL(blobData.value);\n\n const dataUrl = await new Promise(resolve => {\n reader.onloadend = () => resolve(reader.result)\n });\n\n if (typeof dataUrl !== \"string\") {\n throw Error(\"Failed to read file as data url\");\n };\n\n const base64Data = dataUrl.split(',')[1];\n\n return makeSuccess(base64Data)\n } catch (error) {\n return makeFailure(error as Error)\n }\n};\n\n/**\n * Formats uknown string to file name safe format\n * @param text \n * @returns \n */\nexport const stringToFilename = (text: string): string => {\n return text.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n}","import he from \"he\"\n\n/**\n * Convert a string to HTML entities\n */\nexport const toHtmlEntities = (str: string) => {\n return he.encode(str);\n};\n\n\n/**\n * Create string from HTML entities\n */\nexport const fromHtmlEntities = (str: string) => {\n return he.decode(str);\n};","import React from \"react\";\n\nimport { utils } from \"@rjsf/core\";\nimport { FieldProps } from \"@rjsf/core\";\nimport { List, Form, Header } from \"semantic-ui-react\";\nimport { EvalutaionCheckDisplay } from \"../../jsonSchemaWidgets/EvaluationCheck/EvaluationCheckDisplay\";\nimport { useSchemaTranslation } from \"../../../../../sg-schema/useSchemaTranslation\";\n\n\n/*\n\n\n CURRENTLY HAS NO USE\n\n*/\n\nconst EvaluationChecksField: React.FC = (props) => {\n const {\n schema,\n name,\n uiSchema,\n idSchema,\n formData,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n registry = utils.getDefaultRegistry(),\n errorSchema,\n } = props;\n const { t } = useSchemaTranslation();\n const { title } = schema;\n const { widgets, formContext } = registry;\n let defaultWidget = EvalutaionCheckDisplay\n\n const options: any = utils.getUiOptions(uiSchema) || {}\n\n const { widget = defaultWidget, placeholder = \"\", header = {}, ...uiOptions } = options;\n\n const Widget = utils.getWidget(schema, widget, widgets);\n const text = options.title || schema.title || name;\n\n const rawErrors = props.rawErrors || (errorSchema[\"status\"] && errorSchema[\"status\"].__errors)\n\n return (\n \n\n {text ? (\n
{t(text)}
\n ) : null}\n\n \n\n {rawErrors && rawErrors.length > 0 && (\n \n {rawErrors.map((error: any, i: number) => (\n \n {error}\n \n ))}\n \n )}\n
\n\n );\n}\n\nEvaluationChecksField.defaultProps = {\n uiSchema: {},\n disabled: false,\n readonly: false,\n autofocus: false,\n};\n\nexport default EvaluationChecksField;\n","import React from 'react';\nimport { ObjectFieldTemplateProps } from '@rjsf/core';\nimport { Segment } from 'semantic-ui-react'\nimport { useSchemaTranslation } from '../../../../../sg-schema/useSchemaTranslation';\nimport { EEvaluationStatus } from '../../../../interfaces/IEvaluation';\n\nconst EvaluationObjectTemplate = (props: ObjectFieldTemplateProps) => {\n const {\n DescriptionField,\n description,\n TitleField,\n title,\n properties,\n required,\n uiSchema,\n idSchema,\n formContext,\n } = props;\n const { t } = useSchemaTranslation();\n const observationForm = uiSchema[\"ui:observationFormReference\"];\n\n\n const propertiesWithValue = properties.filter((property) => {\n const props = property.content.props\n const isEmptyValue = (!props.formData || typeof props.formData.status === \"undefined\") || (props.formData.status === EEvaluationStatus.Uknown && typeof props.formData.okay === \"undefined\" && typeof props.formData.notOkay === \"undefined\")\n return formContext.hideUknownEvaluationChecks === true ? !isEmptyValue : true\n });\n\n if (!propertiesWithValue.length) {\n return null\n }\n\n return (\n
\n {(uiSchema['ui:title'] || title) && (\n \n )}\n {description && (\n \n )}\n
20 ? \" over-20-entires\" : \"\")}>\n {propertiesWithValue.map((element: any, index) => {\n const props = element.content.props\n\n if (!props.uiSchema[\"ui:observationFormReference\"]) {\n element.content.props.uiSchema[\"ui:observationFormReference\"] = observationForm;\n }\n\n return (\n \n {element.content}\n \n )\n })}\n
\n\n
\n );\n};\n\nexport default EvaluationObjectTemplate;\n","import { FieldProps } from \"@rjsf/core\";\nimport { StatelessComponent } from \"react\";\nimport { MapAuditingDisplayField } from \"../../../../@custom/sg-mapAuditing\";\nimport EvaluationDisplayField from \"./EvaluationField/EvaluationDisplayField\";\nimport EvaluationDisplayObjectTemplate from \"./EvaluationObjectTemplate/EvaluationDisplayObjectTemplate\";\n\nexport default {\n evaluation: EvaluationDisplayField,\n mapAuditing: MapAuditingDisplayField as StatelessComponent\n}\n\nexport const ObjectFieldTemplates = {\n // accordion: EvaluationDisplayObjectTemplate,\n accordionItem: EvaluationDisplayObjectTemplate,\n\n evaluation: EvaluationDisplayObjectTemplate\n}","import React, { useRef } from 'react'\nimport { useLeaflet, MarkerProps, Circle, Popup } from \"react-leaflet\";\nimport { eventToLatlng } from '../leaflet.helpers';\nimport _debounce from \"lodash/debounce\";\n\nconst noop = () => null\n\nexport interface IDraggableMarker extends MarkerProps {\n onChange?: (coords?: [number, number]) => void;\n onRemove?: () => void;\n renderContent?: (params: { removeMarker?: () => void; }) => any;\n style?: { [key: string]: any };\n className?: string;\n}\n\nconst DraggableCircle: React.FC = ({\n onRemove,\n onChange = noop,\n renderContent,\n ...markerProps\n}) => {\n const leaflet = useLeaflet()\n const map = leaflet.map\n\n const handleDragend = (e: any) => {\n const latlng = eventToLatlng(e)\n onChange([latlng.lat, latlng.lng])\n };\n\n\n const delayedOnChange = useRef(_debounce(handleDragend, 200));\n\n const _onMousedown = (event: any) => {\n if (map) {\n map.on('mousemove', function (e: any) {\n map.dragging.disable()\n event.target.setLatLng(e.latlng);\n delayedOnChange.current(e)\n });\n map.on('mouseup', function (e: any) {\n map.dragging.enable()\n map.removeEventListener('mousemove');\n });\n };\n }\n\n\n\n return (\n \n {renderContent ? (\n renderContent({ removeMarker: onRemove })\n ) : onRemove ? (\n \n Poista sijainti\n \n ) : null}\n \n\n )\n}\n\nexport default DraggableCircle\n","\n/**\n * Get latLng object from leaflet event\n */\nexport const eventToLatlng = (e: any): { lat: number; lng: number; } => {\n const latlng = e.latlng || e.target._latlng;\n return { lat: latlng.lat, lng: latlng.lng }\n}\n\n\nexport const latlngToCoords = (latlng: { lat: number; lng: number; }): [number, number] => {\n return [latlng.lat, latlng.lng]\n}\n\n\nexport const roundCoords = (coords: [number, number], percision: number): [number, number] => {\n const x = Number(coords[0].toPrecision(percision));\n const y = Number(coords[1].toFixed(percision));\n return [x, y]\n}","import React, { Fragment, useEffect, useMemo, useState } from \"react\";\nimport { MapAdapter } from \"../../../@tilannekuva/components/MapAdapter\";\nimport { TMapAuditingCheck, TMapAuditingValue } from \"../IMapAuditing\";\nimport { MapAuditingMarker } from \"./MapAuditingMarker\";\nimport Control from 'react-leaflet-control';\nimport { Button } from \"semantic-ui-react\";\nimport { Viewport } from \"react-leaflet\";\nimport { parseMapLocation } from \"../../../@tilannekuva/models/MapLocation\";\nimport { LatLng } from \"leaflet\";\nimport \"../MapAuditing.less\";\nimport DraggableCircle from \"../../../@leaflet/components/DraggableCircle\";\nimport { IMap } from \"../../../@tilannekuva/models/Map\";\n\n\ninterface MapAuditingProps {\n map: IMap;\n formData: TMapAuditingValue | undefined;\n onAddNewCheck?: (center: [number, number]) => void;\n onSetCheck?: (key: string, checkData: TMapAuditingCheck) => void;\n onRemoveCheck?: (key: string) => void;\n titleType: \"key\" | \"none\";\n\n controls?: boolean;\n interactive?: boolean;\n style?: any\n};\n\nexport const MapAuditing: React.FC = ({\n map,\n formData = {},\n onAddNewCheck,\n onSetCheck,\n onRemoveCheck,\n titleType,\n controls = true,\n interactive = true,\n style\n}) => {\n\n const defaultPosition = map.defaultPosition; // `(tk=${map.id})(x=74.632)(y=-25.465)(z=4)`;\n const parsedPosition = parseMapLocation(defaultPosition)\n\n const [newMarkerCenter, setNewMarkerCenter] = useState<[number, number] | null>(null);\n const [viewport, setViewport] = useState({ center: parsedPosition?.center, zoom: parsedPosition?.zoom });\n\n const addNewMarker = () => setNewMarkerCenter(viewport?.center || null);\n const updateNewMarker = (center?: [number, number]) => center && setNewMarkerCenter(center);\n const clearNewMarker = () => setNewMarkerCenter(null);\n const acceptNewMarker = () => {\n if (onAddNewCheck && newMarkerCenter) {\n onAddNewCheck(newMarkerCenter);\n clearNewMarker();\n };\n };\n\n const handleViewPortChanged = (nextViewport: Viewport) => {\n if (nextViewport.center?.join(\"-\") !== viewport.center?.join(\"-\")) {\n setViewport(nextViewport);\n if (newMarkerCenter && nextViewport.center) {\n setNewMarkerCenter(nextViewport.center);\n };\n };\n };\n\n const renderCheckItem = (key: string, itemData?: TMapAuditingCheck) => (\n \n {itemData && (\n onSetCheck(key, checkData) : undefined}\n onRemove={onRemoveCheck ? () => onRemoveCheck(key) : undefined}\n interactive={!Boolean(newMarkerCenter)}\n />\n )}\n \n );\n\n const handleContainerClick = (event: any) => {\n console.info(\"handleContainerClick\", event)\n }\n\n\n const layer = useMemo(() => (\n \n {Object.keys(formData).map((key) => renderCheckItem(key, formData[key]))}\n \n ), [formData, newMarkerCenter]);\n\n return (\n
\n\n console.log(event.latlng)}\n style={style}\n >\n {newMarkerCenter && onAddNewCheck && (\n \n )}\n\n {onAddNewCheck && \n
\n )\n};\n","\n\n\nimport React, { Fragment } from \"react\";\nimport { useAuditItem } from \"../../data/audits/useAuditItem\";\nimport { IAuditItem } from \"../../interfaces/IAuditItem\";\n\ntype IRenderProps = { item: IAuditItem };\n\ninterface RenderAuditItemProps {\n itemId: number;\n render: (props: IRenderProps) => any;\n};\n\nexport const RenderAuditItem: React.FC = ({ itemId, render }) => {\n\n const { data: item } = useAuditItem(itemId);\n\n if (!item) {\n return
Tietuetta ei löytynyt
\n }\n\n return (\n \n {render({ item })}\n \n )\n};\n\n","import { useMemo } from \"react\";\nimport { AuditoinnitCacheKeys } from \"../cacheKeys\";\nimport { IAuditItem } from \"../../interfaces/IAuditItem\";\nimport { useSWROffline } from \"../../../sg-core/swr/useSWROffline\";\nimport { useSWRCache } from \"../../../sg-core/swr/useSWRCache\";\nimport { useAuthContext } from \"../../auth/AuthenticationProvider\";\n\nexport type IUseAuditItemHook = (auditId: IAuditItem[\"id\"]) => {\n data: IAuditItem | null;\n fetching: boolean;\n}\n\nexport const useAuditItem: IUseAuditItemHook = (auditId) => {\n const { cache } = useSWRCache();\n const { token, lang } = useAuthContext();\n\n const fetcher = async (): Promise => {\n\n const key = AuditoinnitCacheKeys(token, lang).AuditItemInstance(auditId);\n return cache.get(key);\n\n // return null\n };\n\n const cacheKey = AuditoinnitCacheKeys(token, lang).AuditItemInstance(auditId);\n const { data, isValidating } = useSWROffline(\n cacheKey,\n fetcher,\n {\n suspense: true,\n initialData: null,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n revalidateOnMount: false,\n refreshWhenOffline: false,\n refreshWhenHidden: false,\n\n }\n );\n\n const rawData = data ?? null;\n\n return useMemo(() => ({\n data: rawData,\n fetching: isValidating,\n }), [rawData, isValidating]);\n};\n","import React from \"react\"\nimport { Header } from \"semantic-ui-react\";\n\n\nexport const FieldHeader: React.FC<{ content?: string }> = (props) => {\n return (\n
{props.content || props.children}
\n );\n};","import { useSelector, useDispatch } from \"react-redux\";\nimport { createSelector } from \"reselect\";\nimport {\n TLoadable,\n isLoaded,\n createLoaded,\n isLoading,\n createUnloaded,\n createLoading,\n isUnloaded,\n} from \"../../../../sg-core\";\nimport { selectHavainnotState } from \"../selectors\";\nimport IFormType from \"../../interfaces/IFormType\";\nimport { createRequestFetchFormDefinition } from \"../actions/formActions\";\nimport IFormDefinition from \"../../interfaces/IFormDefinition\";\n\n// SELECTORS\nexport const selectFormContextState = createSelector(selectHavainnotState, (workPermit) => workPermit.form);\n\nexport const selectFormTypesByIdState = createSelector(selectFormContextState, (state) => state.formTypes);\n\nexport const selectFormTypesByGuidState = createSelector(\n selectFormContextState,\n (state) => state.formTypesByGuid,\n);\n\nconst selectFormTypesIdList = createSelector(selectFormContextState, (state) => state.formTypeList);\n\nconst selectFormTypeList = createSelector(\n selectFormTypesIdList,\n selectFormTypesByIdState,\n (formTypeList, formTypes): TLoadable => {\n if (isLoaded(formTypeList)) {\n return createLoaded(formTypeList.data.map((id) => formTypes[id]));\n }\n return formTypeList as TLoadable;\n },\n);\n\nexport const createSelectFormTypeById = (formTypeId: number | undefined) =>\n createSelector(selectFormTypesByIdState, (formTypes): IFormType | undefined => {\n return formTypeId ? formTypes[formTypeId] : undefined;\n });\n\nexport const createSelectFormTypeByGuid = (formTypeId: string | undefined) =>\n createSelector(selectFormTypesByGuidState, (formTypes): IFormType | undefined => {\n return formTypeId ? formTypes[formTypeId] : undefined;\n });\n\nexport const selectFromDefinitionByIdState = createSelector(\n selectFormContextState,\n (state) => state.definitions,\n);\n\nconst selectCurrentFormDefiniton = createSelector(selectFormContextState, (state) => state.currentDefinition);\n\nexport const createSelectFormDefinitionById = (formId: number) =>\n createSelector(selectFromDefinitionByIdState, (definitions): IFormDefinition | undefined => {\n return definitions ? definitions[formId] : undefined;\n });\n\n// HOOKS\nexport const useFormTypeList = (): TLoadable => useSelector(selectFormTypeList) as any;\nexport const useFormTypeById = (formTypeId: number | undefined): IFormType | undefined => {\n const isGuid = (formTypeId + \"\").length > 10;\n return useSelector(\n isGuid ? createSelectFormTypeByGuid(formTypeId + \"\") : createSelectFormTypeById(formTypeId),\n );\n};\nexport const useFormTypeByGuid = (formTypeId: string | undefined): IFormType | undefined =>\n useSelector(createSelectFormTypeByGuid(formTypeId));\n\nexport const useFormTypeListByCategoryId = (categoryId: number): TLoadable => {\n const typeList = useFormTypeList();\n\n if (categoryId && isLoaded(typeList)) {\n return createLoaded(typeList.data.filter(({ category }) => category === categoryId));\n } else if (isLoaded(typeList)) {\n return createLoaded([]);\n }\n\n return typeList;\n};\n\nexport const useFormDefinitionById = (formTypeId?: number | undefined): TLoadable => {\n const dispatch = useDispatch();\n\n const selectedId = useSelector(selectCurrentFormDefiniton);\n const definitions = useSelector(selectFromDefinitionByIdState);\n\n if (\n !isLoading(selectedId) &&\n isLoaded(selectedId) &&\n formTypeId &&\n `${formTypeId}` !== `${selectedId.data}`\n ) {\n dispatch(createRequestFetchFormDefinition(formTypeId));\n return createUnloaded();\n }\n if (isUnloaded(selectedId) && formTypeId) {\n dispatch(createRequestFetchFormDefinition(formTypeId));\n return createLoading();\n }\n\n if (isLoaded(selectedId)) {\n return createLoaded(definitions[selectedId.data]);\n }\n return selectedId as TLoadable;\n};\n","\n\n/**\n * Encodes JSON to base64, and takes care of proper charecter encoding.\n * src: https://stackoverflow.com/a/30106551\n */\nexport const jsonToBase64 = (json: { [key: string]: any }) => {\n const str = JSON.stringify(json);\n const encoded = btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(parseInt(p1, 16))\n }));\n return encoded\n}\n\n\n\n/**\n * Parses base64 encoded JSON, and takes care of proper charecter encoding.\n * src: https://stackoverflow.com/a/30106551\n */\nexport const base64ToJson = (base64Data: string) => {\n const decoded = decodeURIComponent(Array.prototype.map.call(atob(base64Data), (c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n }).join(''));\n return JSON.parse(decoded)\n}\n","import { IFile } from \"./models/IFile\";\nimport { IUploadOptions } from \"./models/IUploadOptions\";\n\n\nexport const file: IFile = {\n id: \"30-4354465\",\n filename: \"potretti.png\",\n type: \"png\"\n};\n\nconst sleep = async (ms = 500) => await new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const defaultOptions: IUploadOptions = {\n uploadFile: async () => { await sleep(600); return file; },\n removeFile: async () => { await sleep(800); },\n\n getFileUrl: async (id) => id + \"\",\n getImageUrl: async (id) => id + \"\",\n getThumbnailUrl: (id, options) => id + \"\" + options?.height + options?.width,\n getFileInfo: async () => { await sleep(600); return { name: \"potretti.png\" }; },\n};","import IPerson from \"../../interfaces/IPerson\";\n\nexport const requestPersons = \"REQUEST_FETCH_PERSONS\";\nconst successFetchPersons = \"SUCCESS_FETCH_PERSONS\";\nconst failureFetchPersons = \"FAILURE_FETCH_PERSONS\";\n\nexport const requestPersonsByProcessorRole = \"REQUEST_FETCH_PERSONS_BY_PROCESSOR_ROLE\";\nconst successFetchPersonsByProcessorRole = \"SUCCESS_FETCH_PERSONS_BY_PROCESSOR_ROLE\";\nconst failureFetchPersonsByProcessorRole = \"FAILURE_FETCH_PERSONS_BY_PROCESSOR_ROLE\";\n\nconst appendToPersonList = \"APPEND_TO_PERSON_LIST\";\n\n\nexport interface IRequestFetchPersons {\n type: typeof requestPersons;\n payload: { personIds: number[] };\n}\n\ninterface ISuccessFetchPersons {\n type: typeof successFetchPersons;\n payload: { persons: IPerson[] };\n}\n\ninterface IFailureFetchPersons {\n type: typeof failureFetchPersons;\n payload: { error: Error; personIds: number[] };\n}\n\n\nexport interface IRequestFetchPersonsByProcessorRole {\n type: typeof requestPersonsByProcessorRole;\n}\n\ninterface ISuccessFetchPersonsByProcessorRole {\n type: typeof successFetchPersonsByProcessorRole;\n payload: { persons: IPerson[] };\n}\n\ninterface IFailureFetchPersonsByProcessorRole {\n type: typeof failureFetchPersonsByProcessorRole;\n payload: { error: Error };\n}\n\n\n\ninterface IAppendToPersonList {\n type: typeof appendToPersonList;\n payload: { persons: IPerson[] };\n}\n\n\nexport type IPersonAction\n = IRequestFetchPersons\n | ISuccessFetchPersons\n | IFailureFetchPersons\n\n | IRequestFetchPersonsByProcessorRole\n | ISuccessFetchPersonsByProcessorRole\n | IFailureFetchPersonsByProcessorRole\n\n | IAppendToPersonList\n ;\n\nexport const createRequestFetchPersons = (personIds: number[]): IRequestFetchPersons => ({\n type: requestPersons,\n payload: { personIds }\n});\n\nexport const createSuccessFetchPersons = (persons: IPerson[]): ISuccessFetchPersons => ({\n type: successFetchPersons,\n payload: { persons },\n});\n\nexport const createFailureFetchPersons = (error: Error, personIds: number[]): IFailureFetchPersons => ({\n type: failureFetchPersons,\n payload: { error, personIds },\n});\n\nexport const createAppendToPersonList = (persons: IPerson[]): IAppendToPersonList => ({\n type: appendToPersonList,\n payload: { persons },\n});\n\n\n\nexport const createRequestFetchPersonsByProcessorRoleAction = (): IRequestFetchPersonsByProcessorRole => ({\n type: requestPersonsByProcessorRole,\n});\n\nexport const createSuccessFetchPersonsByProcessorRoleAction = (persons: IPerson[]): ISuccessFetchPersonsByProcessorRole => ({\n type: successFetchPersonsByProcessorRole,\n payload: { persons },\n});\n\nexport const createFailureFetchPersonsByProcessorRoleAction = (error: Error): IFailureFetchPersonsByProcessorRole => ({\n type: failureFetchPersonsByProcessorRole,\n payload: { error },\n});","import React, { Fragment, useState, useCallback, useMemo, useRef } from \"react\";\nimport { Dropdown, DropdownItemProps, DropdownProps, Button, Input, Segment, InputProps, Select, Header, SelectProps, Form, CheckboxProps } from \"semantic-ui-react\";\nimport { useObservationFilters } from \"../../store/selectors/observationListSelectors\";\nimport { SemanticCOLORS } from \"semantic-ui-react/dist/commonjs/generic\";\nimport { EObservationStatus } from \"../../interfaces/IObservation\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLoggedInUser } from \"../../auth/store/authSelectors\";\nimport _debounce from 'lodash/debounce';\nimport { IObservationFilters } from \"../../store/reducers/observationListReducer\";\nimport { useCategoryList } from \"../../store/selectors/categorySelectors\";\nimport { isLoaded } from \"../../../../sg-core\";\nimport { useApplicationConfiguration } from \"../../configuration/ConfigurationContext\";\n\nconst makeLabel = (color: SemanticCOLORS) => ({\n color,\n empty: true,\n circular: true,\n});\n\nconst makeOption = (text: string, color: SemanticCOLORS, value?: EObservationStatus): DropdownItemProps => ({\n key: value ?? \"undefined\",\n value,\n text,\n label: makeLabel(color),\n});\n\nexport const useStatusFilterOptions = () => {\n const { t } = useTranslation();\n const texts = {\n new: t(\"Uusi\"),\n inProgess: t(\"Käsittelyssä\"),\n finished: t(\"Käsitelty\"),\n all: t(\"Kaikki\")\n }\n return useMemo((): DropdownItemProps[] => [\n makeOption(texts.new, \"red\", EObservationStatus.New),\n makeOption(texts.inProgess, \"yellow\", EObservationStatus.InProgress),\n makeOption(texts.finished, \"green\", EObservationStatus.Finished),\n // makeOption(t(\"Myöhässä\"), \"black\", EObservationStatus.Late),\n makeOption(texts.all, \"grey\", EObservationStatus.Unknown),\n ], [t]);\n};\n\nexport const useCategoryOptions = () => {\n const categories = useCategoryList();\n\n if (isLoaded(categories)) {\n return categories.data.map((category) => ({\n key: category.id,\n text: category.name,\n value: category.id,\n icon: category.icon\n }));\n }\n\n return []\n\n}\n\n\n\nexport const WorkListFilters: React.FC = () => {\n const { t } = useTranslation();\n const user = useLoggedInUser();\n\n const { components: { LocationFilter }, archiveLimit, minimumSearchQueryLength } = useApplicationConfiguration()\n const { filters, update } = useObservationFilters();\n const [freeTextResetKey, setFreeTextResetKey] = useState(1);\n\n const statusFilterChange: DropdownProps[\"onChange\"] = useCallback((_1, { value }) => {\n const isAllSelected = value === EObservationStatus.Unknown;\n const status = value && !isAllSelected ? value : undefined;\n update({ status });\n }, [update]);\n\n const creatorFilterChange: DropdownProps[\"onChange\"] = useCallback((_1, { value }) => {\n const creator = value === \"own\" ? user?.hprPersonId : undefined\n const handler = value === \"responsible\" ? user?.hprPersonId : undefined\n update({ creator, handler });\n }, [update, user]);\n\n\n const categoryFilterChange: SelectProps[\"onChange\"] = useCallback((_1, { value }) => {\n update({ category: value });\n }, [update]);\n\n\n\n const includeArchiveFilterChange: CheckboxProps[\"onChange\"] = (_1, { value, checked }) => {\n update({ includeArchived: typeof checked === \"boolean\" ? checked : false });\n };\n\n const debouncedUpdate = useRef(_debounce((value: Partial) => update(value), 400)).current;\n\n const textFilterChange: InputProps[\"onChange\"] = (_1, { value }) => {\n const queryLength = value.length;\n const prevQueryLength = filters.freeText?.length || 0;\n if (queryLength >= minimumSearchQueryLength || queryLength < prevQueryLength) {\n debouncedUpdate({ freeText: value || undefined });\n };\n };\n\n\n\n const clearTextFilter = () => {\n update({ freeText: undefined });\n setFreeTextResetKey((key) => key + 1);\n }\n\n const [searchVisible, setSearchVisible] = useState(false);\n const [extendedSearchVisible, setExtendedSearchVisible] = useState(false);\n\n\n\n const statusOptions = useStatusFilterOptions();\n const categoryOptions = useCategoryOptions()\n const currentWhose = user && filters.creator === user.hprPersonId ? \"own\" : user && filters.handler === user.hprPersonId ? \"responsible\" : \"all\";\n\n return (\n \n\n \n\n \n\n