{"version":3,"sources":["locales/translations.ts","utils/LocaleHE.js","utils/date-fns-locales-list.ts","utils/date-utils.ts","api/odata/ODataFilter.ts","styles/colors/bookitColors.ts","utils/userProfileSettings.ts","app/slice/selectors.ts","app/components/Forms/FormsLayout/FormRightSection/index.tsx","app/components/Forms/FormsLayout/StyledForm/index.tsx","api/HttpClient.ts","styles/colors/types.ts","app/components/BasicIcons/FontAwesome/index.tsx","app/components/BasicTable/types/FilterParam.ts","api/SettingsApi.ts","app/slice/workers/doPrefetchConfigurableColumns.ts","app/slice/saga.ts","app/slice/index.ts","app/components/BasicButtons/Button/index.tsx","utils/url-utils.ts","api/odata/generated/enums/Roles.ts","app/Layout/FrontendLayout/slice/type.ts","utils/loadable.tsx","app/components/Typography/index.tsx","app/Layout/FrontendLayout/slice/saga.ts","app/Layout/FrontendLayout/slice/index.ts","app/Layout/FrontendLayout/slice/selectors.ts","app/components/BasicButtons/IconButton/index.tsx","utils/typeUtils.ts","enums/UserAttributesEnum.ts","types/AppSettings.ts","utils/globalSettings/GlobalSettings.ts","types/KnownModules.ts","app/components/Typography/BasicTypography.tsx","api/odata/generated/enums/AvailabilityTypes.ts","utils/mobileDetect.ts","app/components/BasicPickers/AutocompletePicker/index.tsx","app/components/BasicPickers/BaseOptionsPicker/highlightSearchTerm.tsx","api/odata/generated/enums/ServiceType.ts","utils/redux-injectors.ts","app/components/BasicTooltips/Tooltip/index.tsx","app/components/BasicPickers/Utils/autoCompletePickerUtils.ts","app/hooks/useSidePanelOpen.tsx","app/components/AssetQuickSearch/styled.tsx","utils/enumKeys.ts","app/Layout/FrontendLayout/components/CoverWrapper/index.tsx","app/components/LinearProgress/index.tsx","app/Layout/FrontendLayout/components/PageWrapper/components/Head.tsx","app/Layout/FrontendLayout/components/PageWrapper/components/ShortHead.tsx","app/Layout/FrontendLayout/components/PageWrapper/styled/index.tsx","app/Layout/FrontendLayout/components/PageWrapper/components/ButtonsPanel.tsx","app/Layout/FrontendLayout/components/PageWrapper/components/TopButtonsPanel.tsx","app/Layout/FrontendLayout/components/PageWrapper/components/FormSkeleton.tsx","app/Layout/FrontendLayout/components/PageWrapper/index.tsx","enums/AssetAttributes.ts","styles/typography/bookitTypography.ts","app/hooks/useEffectOnMount.ts","api/odata/generated/enums/ReservationStatus.ts","app/components/Forms/Schemas/index.ts","app/components/Forms/FormTextField.tsx","utils/@reduxjs/toolkit.tsx","app/hooks/useAsyncAwaitedState.ts","app/pages/OtherServiceDetails/Details/slice/selectors.ts","app/Layout/FrontendLayout/components/Snackbar/types.ts","utils/globalSettings/AllowedSettings.ts","utils/string-utils.ts","app/components/BasicButtons/TopActionButton/index.tsx","app/components/BasicIcons/InfoIcon/index.tsx","app/pages/Samples/RequestSamplesPage/slice/types.ts","app/pages/Samples/RequestSamplesPage/slice/utils/ServiceRequestTableColumn.ts","app/pages/Samples/RequestSamplesPage/slice/selectors.ts","app/pages/ReservationDetails/Details/slice/selectors.ts","app/hooks/useSystemDate.ts","app/components/ExternalLink/index.tsx","app/components/Forms/FormRender/FormRenderer.tsx","app/components/BasicPickers/BaseOptionsPicker/index.tsx","app/components/DialogConfirm/index.tsx","enums/ConfigurableTypes.ts","enums/RepetitiveOptions.ts","utils/entity-utils.ts","api/odata/generated/enums/RequiredTypes.ts","api/odata/generated/enums/DisplayTypes.ts","app/components/CustomForm/CustomFormUtils.ts","app/components/DatePeriods/index.tsx","app/components/pickers/AutocompletePickers/UserPicker/index.tsx","app/components/Forms/FormLabelText.tsx","utils/assertExhaustive.tsx","app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker/index.tsx","app/components/LoadingIndicator/index.tsx","types/CustomDate.ts","app/hooks/usePromise.ts","types/PresetDatesRange.ts","app/pages/AssetPopUp/OpenAssetDetails/index.tsx","app/pages/Samples/RequestSamplesPage/slice/saga.ts","app/pages/Samples/RequestSamplesPage/slice/index.ts","app/components/Forms/FormRichTextField.tsx","app/components/pickers/MultiSelectPickers/AssetsPicker/index.tsx","app/pages/UsageDetails/Details/slice/selectors.ts","app/components/Forms/FormNumberField.tsx","api/odata/generated/enums/PurchaseOrderOptions.ts","app/pages/OtherServiceDetails/Details/slice/types.ts","app/pages/OtherServiceDetails/Details/slice/saga.ts","app/pages/OtherServiceDetails/Details/slice/index.ts","types/AuthenticatedUser.ts","app/components/BasicInputs/BaseTextField/index.tsx","enums/commentReferenceTypes.ts","api/OtherServicesApi.ts","app/pages/ReservationDetails/Details/components/useGlobalSettingsHook.ts","app/components/BasicInputs/TextControlField/index.tsx","app/pages/Samples/SamplesListPage/slice/index.ts","app/components/BasicTable/types/ColumnWithDeps.ts","app/components/BasicTable/Comparers/index.ts","app/components/BasicTable/index.tsx","app/hooks/useAsyncGetOnMount.ts","utils/logLevel.ts","app/components/BasicTable/components/BooleanRender/index.tsx","app/slice/types.ts","enums/OnlineServiceTypeEnum.ts","app/pages/UserDetails/OpenUserProfile/index.tsx","app/components/BasicLinks/AccessibleMuiLink/index.tsx","styles/constantVariables.ts","enums/Article.ts","app/components/Forms/FormConnectedFilters/slice/selectors.ts","app/components/pickers/AutocompletePickers/BudgetPicker/index.tsx","app/pages/Actions/GlobalSelectedActions/ValidToRender/renderTypes.ts","app/components/StyledComponents/index.tsx","app/components/DropDown/index.tsx","app/components/AssetThumbImage/getAssetImageSrc.tsx","api/ReservationsApi.ts","app/components/BasicTable/Filters/AssetRangeFilter/index.tsx","app/pages/Samples/SamplePlatesPage/slice/index.ts","app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionIconButton/index.tsx","app/hooks/useIsMobile.ts","app/pages/ReservationDetails/Details/components/utils.ts","app/components/BasicTable/withSavedHistory.tsx","app/components/ReactActions/StyledMenuItem.tsx","app/components/ReactActions/HoverActions.tsx","app/components/ReactActions/ClickableActions.tsx","app/components/ReactActions/index.tsx","enums/enums.ts","app/components/Forms/FormBookitDatePicker/index.tsx","app/components/pickers/AutocompletePickers/OfflineServiceTypePicker/index.tsx","app/pages/ServiceRequestsKanbanPage/slice/selectors.ts","app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/selectors.ts","utils/messages.ts","app/components/BasicTable/BasicFilter/AppliedFilterComponent.tsx","enums/DraftReservationTypes.ts","api/odata/generated/enums/AllowReservationCollaboratorsTypes.ts","app/pages/ReservationDetails/Details/slice/mapSettingsFromServices.ts","app/pages/ReservationDetails/Details/slice/ConvertModelToUpdateEntity.ts","app/pages/ReservationDetails/Details/slice/ConvertModelToInsertEntity.ts","app/pages/ReservationDetails/Details/slice/saga.ts","app/pages/ReservationDetails/Details/slice/TryDisableRemoveableEquipments.ts","app/pages/ReservationDetails/Details/slice/ConvertDtoToModel.ts","app/pages/ReservationDetails/Details/slice/getReservationSettings.ts","app/pages/ReservationDetails/Details/slice/index.ts","app/pages/AssetPopUp/components/Utils.ts","app/components/BasicTable/Filters/DatesRangeFilter/index.tsx","app/components/BasicTable/Filters/BooleanPickerFilter/index.tsx","app/components/BasicButtons/ActionButton/index.tsx","app/components/Forms/FormUserPicker.tsx","app/components/BasicTable/CellRenderers/DateRenderer/index.tsx","enums/OfflineReferenceTypeEnum.ts","app/pages/ReservationDetails/Details/slice/types.ts","app/pages/Samples/EditableTable/EditableCell/index.tsx","app/components/BasicPickers/BaseURLPicker/index.tsx","app/pages/Actions/GlobalSelectedActions/OpenReservation.tsx","app/components/BasicTable/CellRenderers/DateTimeRenderer/index.tsx","app/components/Forms/Switch.tsx","api/CommentsApi.ts","app/components/BasicInputs/GhostInput/index.tsx","app/components/LargeFilesUpload/Components/useUploadToNewComment.ts","app/components/DatePicker/utils/pickerDateValidate.tsx","app/pages/ArticlesPage/slice/selectors.ts","app/pages/ReservationDetails/Details/ReservationForm/handlers.tsx","app/components/BasicPickers/AutocompleteMultiPickerEx/index.tsx","locales/i18n.ts","app/components/Forms/FormsLayout/FormSectionTitle.tsx","app/components/BasicTable/UnconfigurableTable/FilterHandler.tsx","app/components/LargeFilesUpload/slice/saga.ts","app/components/LargeFilesUpload/slice/index.ts","app/components/Forms/FormBookitDateTimePicker/index.tsx","enums/MandatoryOfflineTypeEnum.ts","api/WorkOrderApi.ts","app/pages/Samples/components/ReadonlyField/index.tsx","enums/BudgetFields.ts","enums/CustomFormType.ts","app/components/Forms/FormConnectedFilters/slice/types.ts","app/components/Forms/FormConnectedFilters/slice/saga.ts","app/components/Forms/FormConnectedFilters/slice/index.ts","api/odata/generated/enums/FileTypes.ts","app/components/pickers/AutocompletePickers/ExtraddlPicker/index.tsx","app/pages/AssetPopUp/IAssetRow.tsx","app/components/BasicPickers/AutocompleteMultiPicker/index.tsx","app/components/pickers/MultiSelectPickers/OnlineServicesPicker/index.tsx","app/components/BasicInputs/Check/index.tsx","app/pages/CalendarPage/Scheduler/components/event_text/handlebars.ts","app/pages/CalendarPage/Scheduler/components/event_text/ExtractPathsVisitor.ts","app/pages/CalendarPage/Scheduler/slice/selectors.ts","app/pages/SavedViewsPage/SavedViewPage/slice/types.ts","app/pages/SavedViewsPage/SavedViewPage/slice/saga.ts","app/pages/SavedViewsPage/SavedViewPage/slice/index.ts","app/components/BasicAlert/index.tsx","app/components/Messages/slice/type.ts","app/components/Forms/FormCheckbox.tsx","app/components/BasicChip/index.tsx","app/pages/InvoiceDetails/Slice/selector.ts","app/components/BasicTable/BasicFilter/styled.tsx","app/pages/SavedViewsPage/SavedViewPage/slice/selectors.ts","app/components/BasicTable/Filters/ExtraDDLFilter/index.tsx","enums/CatRateTypes.ts","app/components/BasicTable/RowActions.tsx","app/components/pickers/ServiceGroupPicker/index.tsx","app/permissions/WorkOrders/allowedroles.tsx","app/permissions/WorkOrders/workOrdersPermissionUtils.ts","app/pages/Samples/RequestSamplesPage/slice/path.ts","app/components/Forms/FormControls/FormControl/index.tsx","app/components/BasicTable/components/GetTableCount.ts","app/pages/PublicAssets/PUBLIC_ASSETS_PATH.tsx","styles/shadows/bookitShadow.ts","app/pages/Samples/EditableTable/Fields/TextField/index.tsx","app/components/BasicTable/Filters/UserFilter/index.tsx","app/components/DateTimeLabel/index.tsx","app/components/BasicTable/components/DescriptionCell/index.tsx","app/pages/CalendarPage/GetCalendarPagePath.tsx","app/components/Comments/index.tsx","app/components/Forms/FormFundingTypePicker.tsx","enums/EmptySlotAdminClick.ts","app/components/BasicTable/Filters/index.tsx","app/components/BasicList/StyledList/index.tsx","app/components/BasicTable/BasicFilter/AddFilterButton.tsx","app/components/BasicTable/BasicFilter/AppliedFiltersContainer/index.tsx","app/components/BasicTable/BasicFilter/index.tsx","utils/number-utils.ts","app/components/BookitDatePicker/DateInput.tsx","utils/DateFormattingUtils/longFormatters.ts","utils/DateFormattingUtils/getFormatTokens.ts","app/components/BookitDatePicker/utils/types.ts","app/components/BookitDatePicker/StyledPicker.tsx","app/components/pickers/StaticOptionsPickers/DaysByMonthPicker/index.tsx","app/components/pickers/StaticOptionsPickers/MonthOfYearPicker/index.tsx","app/components/pickers/StaticOptionsPickers/YearsPicker/index.tsx","app/components/BookitDatePicker/DateDropDown/index.tsx","app/components/pickers/StaticOptionsPickers/HoursPicker/index.tsx","app/components/pickers/StaticOptionsPickers/MinutesPicker/index.tsx","app/components/pickers/StaticOptionsPickers/AmPmPicker/index.tsx","app/components/BookitDatePicker/TimeDropDown/index.tsx","app/hooks/useIsomorphicLayoutEffect.ts","app/hooks/useEventListener.ts","app/components/BookitDatePicker/utils/useDateTimeChange.ts","app/components/BookitDatePicker/KeyboardRifmInput/index.tsx","app/components/BookitDatePicker/KeyboardInput.tsx","app/components/BookitDatePicker/TimeOptionPicker/index.tsx","app/components/BookitDatePicker/index.tsx","app/hooks/useKeyUpOutside.ts","app/components/Forms/FormControls/FormControlLabel/index.tsx","app/components/Forms/FormControls/FormHelperText/index.tsx","types/DatesRange.ts","app/pages/ServiceRequestsKanbanPage/slice/saga.ts","app/pages/ServiceRequestsKanbanPage/slice/index.ts","types/IRepetitiveDto.ts","api/savedViewsApi.ts","app/components/pickers/AutocompletePickers/WorkOrderTypePicker/index.tsx","app/components/pickers/AutocompletePickers/InventoryBatchesPicker/index.tsx","app/components/BasicTable/CellRenderers/AlignRight.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/saga.ts","app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/index.ts","app/components/PrintToPDF/PrintPDFSection.tsx","app/components/pickers/AutocompletePickers/UserGroupPicker/index.tsx","app/permissions/Asset/assetPermissions.ts","app/components/BasicTable/useProfileSetting/parseProfileUrl.ts","app/components/BasicTable/useProfileSetting/index.ts","app/components/Forms/FormEquipmentsPicker.tsx","enums/TrainingState.ts","api/UsersApi.ts","app/components/Forms/FormBudgetPicker.tsx","app/components/LargeFilesUpload/slice/selectoes.ts","app/pages/Samples/EditableTable/Fields/NumberField/index.tsx","app/pages/ReservationWaitingListPage/SignUpWaitingListDetails/utils.ts","app/components/BasicTable/UnconfigurableTable/UnconfigurableTable.tsx","app/components/TextField/index.tsx","app/components/Forms/FormServiceGroupPicker.tsx","app/pages/ArticlesPage/slice/saga.ts","app/pages/ArticlesPage/slice/index.ts","app/components/BasicTable/CellRenderers/ModificationsValueRenderer/index.tsx","app/Layout/FrontendLayout/components/TopBar/styled/index.tsx","app/components/Forms/FormsLayout/wrappers/index.tsx","app/hooks/useExpandedSideBarState.ts","app/pages/Samples/SamplesListPage/slice/selectors.ts","utils/modelStateUtils.ts","app/components/BasicTable/Hooks/aggregations.js","app/components/BasicTable/Hooks/utils.js","app/components/BasicTable/Hooks/useSummary.js","app/components/BasicTable/components/TableCard/index.tsx","app/components/BasicTable/components/TabsToolbar/index.tsx","app/components/BasicTable/components/FloatingActions.tsx","app/components/BasicTable/components/CustomTableToolbar/index.tsx","app/components/BasicTable/ControlledTable/RenderRow.tsx","app/components/BasicTable/components/CustomEmptyTable/index.tsx","app/components/BasicTable/ControlledTable/TableCell.tsx","app/components/BasicTable/ControlledTable/RenderGroupedRow.tsx","app/components/BasicTable/ImportButton/index.tsx","app/components/BasicTable/ControlledTable/index.tsx","app/components/PrintToPDF/slice/selectors.ts","app/components/BasicPickers/EnumPicker/index.tsx","app/pages/ReservationDetails/Details/components/FormFieldListeners/isMember.tsx","app/components/BasicInputs/Select/index.tsx","app/components/BasicTable/BasicFilter/SavedListsDropDown/index.tsx","app/pages/AssetPopUp/components/BadgeCounter.tsx","app/components/BasicTable/Filters/NumberFieldFilter/index.tsx","app/components/pickers/AutocompletePickers/BuildingPicker/index.tsx","app/components/pickers/AutocompletePickers/CampusPicker/index.tsx","app/components/pickers/AutocompletePickers/RoomPicker/index.tsx","app/hooks/useResponseModel.ts","app/components/PopupImportExport/Actions/Types.ts","app/components/BasicPickers/BaseOptionsMultiPicker/index.tsx","app/pages/CalendarPage/calendarPageDefaultPath.ts","app/components/pickers/AutocompletePickers/OnlineServicePicker/index.tsx","app/components/pickers/AutocompletePickers/AssetPicker/index.tsx","app/components/BasicInputs/Toggle/index.tsx","app/components/BasicToggle/index.tsx","app/components/PrintToPDF/slice/saga.ts","app/components/PrintToPDF/slice/index.ts","app/components/Forms/ValidationSchemaProvider.tsx","enums/ServiceGroupRegistrationStatus.ts","app/components/Forms/FormAssetsPicker.tsx","enums/ReferenceType.ts","app/pages/Actions/PageTopActions/AddConsumable/index.tsx","app/pages/OtherServiceDetails/Details/components/AddServiceFromSelection.tsx","app/pages/OtherServiceDetails/Details/components/AddService.tsx","app/pages/OtherServiceDetails/Details/components/InventoryBatchChip.tsx","app/pages/OtherServiceDetails/Details/components/QuickServiceItem.tsx","app/pages/OtherServiceDetails/Details/components/BookQuickServices.tsx","app/pages/UsageDetails/Details/slice/getUsageSettingsState.ts","app/pages/UsageDetails/Details/slice/ConvertModelToEntity.ts","app/pages/UsageDetails/Details/slice/saga.ts","app/pages/UsageDetails/Details/slice/index.ts","app/pages/UsageDetails/Details/slice/ConvertDtoToModel.ts","app/components/Forms/FormRepetitive/slice/saga.ts","app/components/Forms/FormRepetitive/slice/index.ts","app/components/CalendarButton/index.tsx","enums/FormFieldsPerRowVariant.ts","app/pages/OfflineTypeReferencesDetails/Details/slice/selectors.ts","enums/RemindBefore.ts","app/components/pickers/AutocompletePickers/UserMultiPicker/index.tsx","app/components/BasicTable/CellRenderers/BooleanRenderer/index.tsx","app/permissions/Reservations/reservationPermissions.ts","app/components/BasicTable/BasicFilter/utils.ts","app/components/BasicTable/styled.tsx","api/odata/generated/enums/ServiceRequestMilestoneStatuses.ts","api/odata/generated/entities/IAssetDto.ts","app/pages/ReservationDetails/Details/components/CalculatePricing/index.tsx","app/components/Forms/FormAssetPicker.tsx","app/components/BasicTable/ConfigurableColumns.ts","api/odata/ODataParamsBuilder.ts","app/pages/AssetPopUp/components/TableFilters.tsx","types/IConnectedFiltersDto.ts","app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/types.ts","api/UsageApi.ts","app/components/BasicTable/Filters/BuildingPickerFilter/index.tsx","api/utils.ts","app/components/pickers/AutocompletePickers/LocationPicker/index.tsx","app/components/pickers/AutocompletePickers/InstitutePicker/index.tsx","app/pages/NotFoundPage/index.tsx","app/components/pickers/AutocompletePickers/DepartmentPicker/index.tsx","app/pages/Actions/GlobalSelectedActions/OpenUsageDetails.tsx","app/components/basic/StatusLabel/index.tsx","app/components/BasicTable/CellRenderers/AssetRenderer/index.tsx","app/components/BasicTable/TableFilterBuilder/index.ts","app/components/BasicTable/BasicFilter/TableToolbar/index.tsx","app/components/pickers/StaticOptionsPickers/OnlineServiceTypePicker/index.tsx","app/components/ButtonConfirm/index.tsx","app/pages/Samples/components/RunTypePicker/index.tsx","app/components/pickers/MultiSelectPickers/ServiceGroupsPicker/index.tsx","app/pages/Actions/GlobalSelectedActions/OpenWorkOrder.tsx","app/components/BasicTabs/TabPanel/index.tsx","app/pages/AssetPopUp/AttributeRenderers/index.tsx","app/pages/AssetPopUp/AssetLocationLastUpdate.tsx","app/components/BasicTable/components/DoubleRenderer/index.tsx","app/pages/AssetPopUp/components/AssetComments.tsx","app/pages/AssetPopUp/Rows.tsx","app/pages/AssetPopUp/components/AssetDetailsFiles.tsx","app/pages/AssetPopUp/components/RenderAssetRows.tsx","app/pages/AssetPopUp/components/MismatchCoreMessage.tsx","app/pages/AssetPopUp/components/AssetDetailsTabContent.tsx","app/pages/AssetPopUp/components/AssetBookingRules.tsx","app/pages/AssetPopUp/components/AssetTrainingSessions.tsx","app/pages/AssetPopUp/components/AssetArcticlesTable.tsx","app/pages/AssetPopUp/components/AssetWorkOrders.tsx","app/pages/AssetPopUp/components/AssetDetailsTabs.tsx","app/pages/AssetPopUp/AttributeRenderers/ShowImage/slice/saga.ts","app/pages/AssetPopUp/AttributeRenderers/ShowImage/slice/index.tsx","app/pages/AssetPopUp/AttributeRenderers/ShowImage/AssetImagePopup.tsx","app/pages/AssetPopUp/components/AssetWaitingList.tsx","app/pages/AssetPopUp/index.tsx","app/pages/NotFoundPage/Loadable.tsx","app/Layout/FrontendLayout/components/PageWrapper/PageActions/SwitchActions.tsx","app/components/BasicButtons/ActionIconButton/index.tsx","app/pages/ReservationDetails/Details/slice/getBudgetVisible.ts","app/components/pickers/MultiSelectPickers/EquipmentReservationPicker/index.tsx","app/components/Forms/FormOfflineServiceTypePicker.tsx","app/components/CommentsContainer/styled.tsx","app/components/LargeFilesUpload/Upload/index.ts","app/components/LargeFilesUpload/Upload/Api.ts","app/components/LargeFilesUpload/Components/FileCard.tsx","app/components/LargeFilesUpload/Components/SelectFile.tsx","app/components/LargeFilesUpload/index.tsx","app/components/CommentsContainer/AddComment.tsx","app/components/CommentsContainer/FileButton.tsx","app/components/CommentsContainer/CommentCell.tsx","app/components/CommentsContainer/index.tsx","locales/useTranslation.ts","app/components/BookitDatePicker/BookitDateTimePicker.tsx","utils/date-utils-tz.ts","app/pages/AssetsInventory/Details/slice/selectors.ts","api/CustomFormApi.ts","app/components/CustomForm/CustomFormAsSection.tsx","app/components/CustomForm/CustomFormContent/index.tsx","app/components/CustomForm/CusomFormControl/Form/index.tsx","app/components/CustomForm/CusomFormControl/index.tsx","enums/MultipleInstrumentReservations.ts","app/pages/Actions/GlobalSelectedActions/OpenWaitingList.tsx","app/components/PopupImportExport/Actions/index.ts","app/components/PopupImportExport/Actions/Api.ts","app/components/BasicTable/Filters/ServiceMultiFilter/index.tsx","app/components/BasicTable/initFilterData.ts","enums/InvoiceStatuses.ts","app/pages/Actions/GlobalSelectedActions/OpenInvoiceDetails.tsx","app/components/DownloadFileButton/index.tsx","app/components/pickers/AutocompletePickers/ServiceShortPicker/index.tsx","app/components/pickers/AutocompletePickers/UnitTypePicker/index.tsx","app/components/Forms/FormInputFile.tsx","app/components/Forms/FormRepetitive/slice/types.ts","app/components/pickers/MultiSelectPickers/AccompaniedServicesPicker/index.tsx","app/components/Forms/FormReservationEquipmentsPicker.tsx","app/components/Forms/FormReservationStatusPicker.tsx","app/pages/ReservationDetails/Details/components/ReservationCustomForm.tsx","app/pages/ReservationDetails/Details/components/FormFieldListeners/StartTimeListener.tsx","app/pages/ReservationDetails/Details/components/FormFieldListeners/EndTimeListener.tsx","app/components/BasicChip/ChipChekBoxGroup.tsx","app/components/BasicChip/ChipLabelGroup.tsx","app/components/Forms/FormChipsGroup.tsx","app/pages/ReservationDetails/Details/components/ReservationOfflineServices.tsx","app/pages/ReservationDetails/Details/components/ReservationActions.tsx","app/pages/ReservationDetails/Details/components/TerminateReservation.tsx","app/components/Forms/FormTrainingSessionPicker.tsx","app/pages/ReservationDetails/Details/ReservationForm/getReservationsLink.tsx","app/pages/TrainingSessionsPage/components/EditTrainingSessionsLink/index.tsx","app/pages/ReservationDetails/Details/components/TrainingSignUpAdminAlertContent/index.tsx","app/pages/ReservationDetails/Details/components/ReservationTimePicker/index.tsx","app/pages/ReservationDetails/Details/components/EquipmentsDataAssemblies/index.tsx","app/pages/ReservationDetails/Details/components/ReservationWorkOrders/index.tsx","app/components/Forms/FormWorkFlowBooking/index.tsx","app/pages/ReservationDetails/Details/components/RequestDetails/index.tsx","app/pages/ReservationDetails/Details/ReservationForm/index.tsx","app/pages/ReservationDetails/Details/ReservationForm/getTutoringRequired.tsx","app/pages/ReservationDetails/Details/ReservationForm/getReservationCollaboratorsFilter.tsx","app/pages/ReservationDetails/Details/components/ApproveTrainingRecords.tsx","app/pages/ReservationDetails/Details/components/TransferReservation.tsx","app/pages/ReservationDetails/Details/components/Modifications/index.tsx","app/pages/ReservationDetails/Details/components/Modifications/Filter.tsx","app/pages/ReservationDetails/Details/index.tsx","app/components/pickers/DatePeriodsPicker/index.tsx","enums/GlobalEnums.ts","app/components/RadioGroup/index.tsx","app/components/Forms/Schemas/SchemaMethods.ts","app/components/Forms/FormRestrictedUserGroupPicker.tsx","app/Layout/FrontendLayout/components/SideBar/slice/utils/replaceIcon.ts","app/Layout/FrontendLayout/components/SideBar/slice/utils/isExternal.ts","app/Layout/FrontendLayout/components/SideBar/slice/utils/toMenuItemEntry.ts","app/Layout/FrontendLayout/components/SideBar/slice/utils/getLink.ts","app/Layout/FrontendLayout/components/SideBar/slice/utils/convertUrl.ts","app/Layout/FrontendLayout/components/SideBar/slice/utils/filterVisible.ts","app/Layout/FrontendLayout/components/SideBar/slice/utils/prepareMenu.ts","app/Layout/FrontendLayout/components/SideBar/slice/utils/findSelectedMenuEntry.ts","app/Layout/FrontendLayout/components/SideBar/slice/saga.ts","app/Layout/FrontendLayout/components/SideBar/slice/index.ts","app/components/Forms/FormAutocompleteOptions.tsx","api/ExternalApi.ts","app/components/CustomForm/CustomFormFields/CustomFormDropDown.tsx","app/components/BasicTable/ControlledTable/addRowSelect.tsx","app/components/BasicTable/ControlledTable/ConditionalSelectHeaderCheckbox.ts","app/pages/Samples/RequestSamplesPage/slice/prepareServiceRequestRowModel.ts","utils/fileStoreHelper.ts","enums/InstrumentListAssemblyTypes.ts","app/components/Admin/AdminActions/index.tsx","app/components/pickers/AutocompletePickers/AssetCatGroupPicker/index.tsx","types/ResponseType.ts","app/components/pickers/AutocompletePickers/AssetCatPicker/index.tsx","app/components/BasicTable/Filters/ServiceGroupFilter/index.tsx","enums/WorkingHoursTypes.ts","app/pages/CalendarPage/Scheduler/slice/saga.ts","app/pages/CalendarPage/Scheduler/slice/index.ts","app/components/pickers/AutocompletePickers/UserGroupMultiPicker/index.tsx","app/components/BasicTable/Filters/RoomPickerFilter/index.tsx","app/components/Forms/FormUsersPicker.tsx","app/components/Description/index.tsx","app/components/pickers/AutocompletePickers/InstituteTypePicker/index.tsx","app/components/BasicTable/components/TableSkeleton/styled.tsx","app/components/BasicTable/components/TableSkeleton/index.tsx","app/components/basic/Wrappers/FlexWrappers/flexRow.tsx","app/components/BasicCards/index.tsx","app/hooks/useGlobalServiceGroupsFilter.ts","app/components/pickers/AutocompletePickers/SubLocationListPicker/index.tsx","app/pages/Animals/InternalIdLoginPage/slice/saga.ts","app/pages/Animals/InternalIdLoginPage/slice/index.ts","app/components/pickers/AutocompletePickers/SuperGroupPicker/index.tsx","app/pages/WorkOrdersPage/Actions/NewWorkOrder/index.tsx","enums/BudgetExperimentStatuses.ts","app/components/pickers/AutocompletePickers/RegionPicker/index.tsx","app/components/pickers/AutocompletePickers/MyAssetAvailabilityTypeMultiPicker/index.tsx","app/components/BasicIcons/SvgIcons/I-cursor.svg","app/components/BasicIcons/SvgIcons/check.svg","app/components/BasicIcons/SvgIcons/times.svg","app/components/BasicIcons/SvgIcons/chevron-down.svg","app/components/BasicIcons/SvgIcons/chevron-up.svg","app/components/BasicIcons/SvgIcons/notavailable.svg","app/components/BasicIcons/SvgIcons/notAllowed.svg","app/components/BasicIcons/SvgIcons/checked.svg","app/components/BasicIcons/SvgIcons/unchecked.svg","app/components/BasicIcons/SvgIcons/undeterminate.svg","app/components/BasicIcons/SvgIcons/notFoundPage.svg","app/components/BasicIcons/SvgIcons/index.tsx","app/components/EndUsageConfirm/EndUsageOfflineServices/index.tsx","app/components/EndUsageConfirm/index.tsx","app/components/BasicLinks/RouterLink/index.tsx","app/components/BasicTable/GlobalFilter.tsx","app/pages/Actions/GlobalSelectedActions/ValidToRender/useAssetsPermissionsUtils.ts","app/pages/Actions/GlobalSelectedActions/AddWorkOrder.tsx","app/permissions/UserTrainings/allowedroles.tsx","app/permissions/UserTrainings/userTrainingPermissionUtils.ts","app/components/CommentsContainer/commentParser.tsx","app/components/BasicTable/withoutGlobalServiceGroupFilter.tsx","utils/cookies.ts","types/SiteMapSettings.ts","utils/redux-saga/index.ts","app/components/BasicLinks/Link/index.tsx","app/components/BasicTooltips/Hooks/withTooltipHook.tsx","app/components/DialogAlert/slice/index.ts","app/Layout/FrontendLayout/components/PageWrapper/components/TitlePage.tsx","app/components/Forms/FormControls/FormGroup/index.tsx","app/components/Forms/FormAdminUserPicker.tsx","app/pages/MyAssetsPage/AssetsSelection/slice/selectors.ts","app/pages/MyAssetsPage/AssetsSelection/slice/index.ts","app/components/BasicTable/useMemoFilters.ts","app/components/ValueLabel/index.tsx","app/components/Forms/FormAutocomplete.tsx","app/components/Forms/FormAutocompleteMulti.tsx","app/pages/ReservationDetails/Details/slice/combineOfflineServiceTypes.ts","app/components/pickers/AutocompletePickers/TrainingSessionPicker/index.tsx","app/components/CustomForm/CustomFormFields/CustomFormUserSelection.tsx","app/components/pickers/StaticOptionsPickers/RemindBeforePicker/index.tsx","app/components/Forms/FormRepetitive/slice/selectors.ts","app/components/pickers/AutocompletePickers/SampleTypePicker.index.tsx","app/components/pickers/AutocompletePickers/WorkflowBookingPicker/index.tsx","app/components/pickers/StaticOptionsPickers/OfflineRefernceTypePicker/index.tsx","app/components/Forms/FormRadioGroupBase.tsx","api/UserNotificationsApi.ts","app/components/Forms/FromRadioGroup.tsx","app/components/CustomForm/CustomFormFields/CustomFormAnswerQuestions.tsx","app/components/CustomForm/CustomFormFields/CustomFormCheckBox.tsx","app/components/CustomForm/CustomFormFields/CustomFormDate.tsx","app/components/CustomForm/CustomFormFields/CustomFormDisclimer.tsx","app/components/CustomForm/CustomFormFields/CustomFormEmail.tsx","app/components/CustomForm/CustomFormFields/CustomFormNumberText.tsx","app/components/CustomForm/CustomFormFields/CustomFormParagraph.tsx","app/components/CustomForm/CustomFormFields/CustomFormPositiveNumber.tsx","app/components/CustomForm/CustomFormFields/CustomFormRadioGroup.tsx","app/components/CustomForm/CustomFormFields/CustomFormRichText.tsx","app/components/CustomForm/CustomFormFields/CustomFormShortText.tsx","app/components/CustomForm/CustomFormFields.tsx","app/pages/OfflineTypeReferencesDetails/Details/slice/types.ts","api/OfflineTypeRefsApi.ts","app/pages/OfflineTypeReferencesDetails/Details/slice/saga.ts","app/pages/OfflineTypeReferencesDetails/Details/slice/index.ts","app/pages/InvoiceDetails/Slice/saga.ts","app/pages/InvoiceDetails/Slice/index.ts","app/components/pickers/AutocompletePickers/ServiceUserGroupPicker/index.tsx","app/components/Forms/FormServiceUserGroupPicker.tsx","app/components/BookitlabLogo/messages.ts","api/odata/generated/entities/IUserFilterDto.ts","api/fileStoreApi.ts","app/components/BasicTabs/TabsWrapper.tsx","app/components/Forms/FormsLayout/FormDivider/index.tsx","api/odata/generated/enums/SamplePlatePositionNamingTypes.ts","app/pages/LocationsPage/Details/index.tsx","app/components/Forms/Schemas/InvoiceChildRowBaseSchema/index.ts","enums/allowCreateInvoicesBy.ts","app/pages/AddPaymentPage/index.tsx","app/pages/AddPaymentPage/PaymentSchema.ts","api/ChargeApi.ts","app/components/Forms/FormCatRateTypePicker.tsx","app/components/Forms/FormSampleTypePicker.tsx","app/pages/AddChargePage/index.tsx","app/pages/AddChargePage/ChargeSchema.ts","app/pages/LabelTypesPage/LabelTypeEdit/Loadable.ts","app/pages/ArticlesPage/Hooks/useAllowedToChangeStatus.tsx","app/pages/ArticlesPage/ArticleDetails/index.tsx","app/pages/ArticlesPage/utils.ts","app/components/Forms/FormCustomPicker.tsx","app/pages/ArticlesPage/ArticlePickers/index.tsx","app/pages/ArticlesPage/ArticleFormPickers/index.tsx","app/pages/ArticlesPage/NewArticleDetailsForm/index.tsx","app/components/CommentsContainer/IComment.ts","app/pages/ArticlesPage/ArticleComments.tsx","app/pages/ArticlesPage/EditArticleDetailsForm/index.tsx","app/pages/UserAttributes/UserAttributesDetailsPage/Details/Actions/UserAttributesActions.tsx","app/pages/UserAttributes/UserAttributesDetailsPage/Details/slice/types.ts","api/UserAttributesApi.ts","app/pages/UserAttributes/UserAttributesDetailsPage/Details/slice/saga.ts","app/pages/UserAttributes/UserAttributesDetailsPage/Details/slice/index.ts","app/pages/UserAttributes/UserAttributesDetailsPage/Details/slice/selectors.ts","app/pages/UserAttributes/UserAttributesDetailsPage/Details/UserAttributesForm/index.tsx","app/pages/UserAttributes/UserAttributesDetailsPage/Details/index.tsx","app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails/schema.ts","app/components/Forms/FormPriorityPicker.tsx","app/components/Forms/FormServiceRequestStatusPicker.tsx","app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails/components/Form/index.tsx","app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails/components/AddSubTicket/index.tsx","app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails/index.tsx","app/pages/OtherServiceDetails/StockRenewal/StockRenewalForm.tsx","app/pages/OtherServiceDetails/StockRenewal/index.tsx","app/pages/OtherServiceDetails/RenewStock/RenewStockForm.tsx","app/pages/OtherServiceDetails/RenewStock/index.tsx","app/pages/OtherServiceDetails/InventoryBatch/InventoryBatchForm.tsx","app/pages/OtherServiceDetails/InventoryBatch/index.tsx","app/pages/ArticlesPage/ArticleAssociationForm/index.tsx","app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/Actions/RequestStatusesActions.tsx","app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/slice/types.ts","api/RequestStatusesApi.ts","app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/slice/saga.ts","app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/slice/index.tsx","app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/slice/selectors.ts","app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/RequestStatusesForm/index.tsx","app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/index.tsx","app/pages/ReservationDetails/Details/MultipleReservations/ReservationEvent.tsx","app/pages/ReservationDetails/Details/MultipleReservations/index.tsx","app/components/Forms/FormWindowHours.tsx","app/pages/ReservationWaitingListPage/SignUpWaitingListDetails/index.tsx","app/pages/ReservationWaitingListPage/SignUpWaitingListDetails/SignUpSchema.ts","app/components/Forms/FormServiceShortPicker.tsx","app/components/Forms/FormOfflineRefernceTypePicker.tsx","app/components/pickers/StaticOptionsPickers/MandatoryOfflineTypePicker/index.tsx","app/components/Forms/FormMandatoryOfflineTypePicker.tsx","app/pages/OfflineTypeReferencesDetails/Details/OfflineTypeRefsForm.tsx","app/pages/OfflineTypeReferencesDetails/Details/index.tsx","app/Layout/FrontendLayout/components/SidePanel/SidePanelRenderer.tsx","app/components/BasicTable/Filters/PriorityFilter/index.tsx","app/pages/ServiceRequestsKanbanPage/Filter.ts","app/components/pickers/AutocompletePickers/ServiceRequestStatusMultiPicker/index.tsx","app/components/Popover/index.tsx","api/BillingActionsApi.ts","app/pages/OnlineBudgetsStatusPage/slice/types.ts","enums/ServiceGroupAdminsManageUsersEnum.ts","app/components/BasicInputs/BaseInputs/StandardInput/index.tsx","api/PaymentApi.ts","app/components/Forms/FormsLayout/FormRow/index.tsx","app/pages/Samples/SamplePlatesPage/slice/selectors.ts","app/pages/NotAvailablePage/Loadable.ts","app/components/BasicTable/BasicFilter/FilterBox/index.tsx","app/pages/UserTrainings/TrainingDetailsPage/Details/Actions/TrainingActions.tsx","app/components/AssetImagesGallery/ImageRender.tsx","app/components/AssetThumbImage/index.tsx","app/pages/AssetPopUp/components/types.ts","app/components/pickers/AutocompletePickers/WorkOrdersPicker/index.tsx","app/components/pickers/StaticOptionsPickers/PriorityPicker/index.tsx","api/odata/generated/enums/Priorities.ts","api/SubscribersApi.ts","api/CostCentersApi.ts","app/pages/Samples/EditableTable/TablePaginationActions.tsx","app/pages/Samples/EditableTable/index.tsx","app/components/pickers/AutocompletePickers/SamplePlatePositionsPicker/index.tsx","app/components/Forms/FormGradientPicker.tsx","app/pages/Samples/components/CreateSampleRunReservation/index.tsx","app/pages/Samples/RunDetailsPage/Actions/index.ts","app/pages/Samples/RunDetailsPage/SelectedRowActions/GetSelectaedRowActions.tsx","app/pages/Samples/RunDetailsPage/AnalyticalSampleIDSuffix.tsx","app/pages/Samples/RunDetailsPage/Components/Comments/index.tsx","app/pages/Samples/RunDetailsPage/ImportComponents/PopupImport.tsx","app/pages/Samples/RunDetailsPage/ImportComponents/ImportSamplePlates/index.tsx","app/pages/Samples/RunDetailsPage/index.tsx","api/EmailNotificationsApi.ts","app/pages/EmailNotificationsPage/index.tsx","app/pages/EmailNotificationsPage/SelectedRowActions/GetSelectedRowActions.tsx","app/components/BasicTable/withGlobalServiceGroupFilter.tsx","app/components/BasicTable/Filters/AssetCatGroupFilter/index.tsx","app/components/BasicTable/Filters/AssetCatFilter/index.tsx","app/components/pickers/AutocompletePickers/ProjectPicker/index.tsx","app/components/BasicTable/Filters/ProjectFilter/index.tsx","app/components/BasicTable/Filters/InstituteFilter/index.tsx","app/components/BasicTable/Filters/DepartmentFilter/index.tsx","app/components/pickers/AutocompletePickers/AssetMultiPicker/index.tsx","app/components/BasicTable/Filters/AssetMultiFilter/index.tsx","app/components/pickers/AutocompletePickers/UserDisciplinePicker/index.tsx","app/components/BookitlabLogo/index.tsx","app/components/BasicTable/BasicFilter/TableToolbar/styled/index.tsx","app/components/BasicPickers/BaseURLMultiPicker/index.tsx","app/components/pickers/AutocompletePickers/InvoiceIdMultiPicker/index.tsx","app/components/BasicTable/Filters/InstituteTypeFilter/index.tsx","app/components/LabelPrint/Printers/getQrUrl.ts","app/components/LabelPrint/Printers/Dymo.ts","app/components/LabelPrint/Printers/Zebra.ts","app/components/LabelPrint/Printers/index.ts","app/components/LabelPrint/slice/saga.ts","app/components/LabelPrint/slice/index.ts","app/components/pickers/AutocompletePickers/TrainingLevelPicker/index.tsx","app/components/BasicTable/BasicFilter/FilterContainer/index.tsx","app/components/BasicTable/getFilterValue.tsx","app/components/BasicTable/Filters/LocationPickerFilter/index.tsx","enums/ReservationOrDowntimeEnum.ts","api/odata/generated/enums/EmailType.ts","app/components/BasicDialog/BasicDialogTitle.tsx","app/components/pickers/AutocompletePickers/ServiceTypePicker/index.tsx","app/Layout/FrontendLayout/components/CustomerLogo/index.tsx","app/pages/CalendarPage/Scheduler/utils/parseType.tsx","api/odata/generated/enums/TimelineGroupBy.ts","app/pages/CalendarPage/parseCalendarPageParams.tsx","app/components/BasicTable/BasicFilter/FiltersButton/index.tsx","app/components/BasicTable/Filters/CampusPickerFilter/index.tsx","app/components/QrCodeExport/index.tsx","app/components/pickers/AutocompletePickers/ReasonTypePicker/index.tsx","app/components/Forms/FormRoomPicker.tsx","app/components/pickers/AutocompletePickers/TagsPicker/index.tsx","app/components/pickers/AutocompletePickers/AreassPicker/index.tsx","app/components/BasicTabs/BasicTab/index.tsx","app/components/BasicTabs/index.tsx","app/components/BooleanPicker/index.tsx","app/Layout/FrontendLayout/components/PageWrapper/components/SkeletonIfLoading.tsx","app/components/BasicCheckBox/index.tsx","app/slice/router-selectors.ts","app/components/BasicTable/Filters/ServiceFilter/index.tsx","app/components/PrintToPDF/index.tsx","app/components/BasicTable/Filters/RegionFilter/index.tsx","app/components/BasicTable/Filters/ServiceGroupsFilter/index.tsx","app/components/BasicTable/Filters/SuperGroupFilter/index.tsx","app/components/pickers/AutocompletePickers/LoanablePicker/index.tsx","app/components/pickers/AutocompletePickers/StatusPicker/index.tsx","app/components/pickers/AutocompletePickers/LockersPicker/index.tsx","app/components/pickers/StaticOptionsPickers/AssemblyTypePicker/index.tsx","app/components/BasicTable/Filters/SubLocationListFilter/index.tsx","app/pages/Actions/PageTopActions/AddReservation/index.tsx","app/components/ErrorBoundary/index.tsx","app/components/Forms/FormsLayout/StyledFormFieldsContainer/index.tsx","app/components/BasicButtons/FilterIconButton/index.tsx","app/pages/WorkOrdersPage/PrimaryAction.ts","app/pages/Actions/GlobalSelectedActions/BringBackUp.tsx","app/pages/Actions/GlobalSelectedActions/DownWorkOrder.tsx","app/pages/Actions/GlobalSelectedActions/OpenCalendar.tsx","app/pages/Actions/GlobalSelectedActions/OpenWrokOrders.tsx","app/components/BasicTable/useConfigurableColumnsAdvanced.ts","app/pages/ReservationHistoryPage/PrimaryAction.ts","app/components/pickers/AutocompletePickers/AvailabilityTypePicker/index.tsx","app/components/BasicDialog/BasicDialogContentWithTitle.tsx","app/components/BasicDialog/index.tsx","app/pages/AddChargePage/AddChargeButton.tsx","app/components/Forms/FormTrainingLevelPicker.tsx","app/components/BasicTable/components/TableCardGrid/index.tsx","app/pages/ArticlesPage/ArticleDoiLink/index.tsx","app/pages/WorkOrdersPage/WorkOrdersTable.tsx","app/components/ReservationCreateButton/index.tsx","app/components/pickers/AutocompletePickers/CustomFormPicker/index.tsx","app/components/pickers/StaticOptionsPickers/PaymentMethodEnumPicker/index.tsx","app/components/pickers/AutocompletePickers/SamplePlatePicker/index.tsx","app/components/pickers/AutocompletePickers/SamplePlatePositionPicker/index.tsx","app/pages/Samples/SamplesListPage/ImportButton.tsx","app/components/Forms/FormLocationPicker.tsx","app/components/pickers/StaticOptionsPickers/PriceSheetMethodPicker/index.tsx","app/pages/Regions/RegionLink.tsx","api/ServiceRequestsApi.ts","app/pages/MyAssetsPage/DefaultFilter.tsx","app/components/BasicTable/CellRenderers/DecimalRenderer/index.tsx","app/components/pickers/StaticOptionsPickers/ServiceTypeEnumPicker/index.tsx","app/components/pickers/AutocompletePickers/ServiceRequestStatusPicker/index.tsx","app/components/DialogForm/index.tsx","app/pages/ReservationHistoryPage/Columns.tsx","app/pages/ReservationHistoryPage/ReservationHistoryTable.tsx","app/pages/Actions/GlobalSelectedActions/OpenOfflineTypeRefs.tsx","enums/MinTimeAheadPeriodTypes.ts","api/RestrictionsApi.ts","enums/TrainingStatus.ts","app/pages/InstrumentRestrictionsPage/Details/components/styled.tsx","app/pages/InstrumentRestrictionsPage/Details/components/UserOwnPermissions.tsx","api/UserPermissionsApi.ts","app/pages/InstrumentRestrictionsPage/Details/InstrumentRestrictions.tsx","styles/colors/info.ts","styles/MUIExtend/themeOverrides.ts","styles/CssVariables/variables.ts","styles/theme.tsx","app/components/Copyright/messages.ts","app/components/Copyright/styled/index.tsx","app/components/Copyright/index.tsx","api/BarcodeScanApi.ts","app/pages/AssetsInventory/Details/slice/saga.ts","app/pages/AssetsInventory/Details/slice/index.ts","app/components/BasicChip/StatusChip.tsx","app/pages/WorkOrdersPage/Columns.tsx","app/pages/OtherServiceDetails/ReportConsumables/ConsumablesForm.tsx","app/pages/OtherServiceDetails/ReportConsumables/index.tsx","app/components/DatePicker/utils/toEndDateDisplayValue.tsx","app/components/DatePicker/utils/truncateTime.tsx","app/components/Messages/slice/saga.ts","app/components/Messages/slice/index.ts","app/components/pickers/AutocompletePickers/SamplePlateTypePicker/index.tsx","app/components/Forms/FromSamplePlateTypePicker.tsx","app/components/BasicDialog/BasicDialogActions.tsx","app/components/RichTextEditor/index.tsx","app/components/UserAvatar/index.tsx","app/pages/AssetPopUp/getAssetEditLink.ts","app/pages/AssemblySnapshots/AssemblyStructure/index.tsx","app/components/pickers/AutocompletePickers/AssemblySnapshotsPicker/index.tsx","app/components/BasicTable/useConfigurableColumns.ts","app/components/BasicTable/TablePaginationActions.tsx","app/components/Popper/index.tsx","app/components/Popper/PopperTitle.tsx","app/components/BasicTable/ExportButton/index.tsx","app/hooks/useGlobalDomEvents.ts","app/components/BasicTable/SelectedActions/index.tsx","app/components/BasicTable/BasicFilter/FilterDisplay/index.tsx","app/components/BasicTable/components/ConfigureColumnsButton.tsx","app/hooks/useLocationChange.ts","app/permissions/Users/useUserPermissions.ts","api/SamplesApi.ts","app/pages/Samples/RequestSamplesPage/components/ServiceRequestBlockedByInvoice/getServiceRequestBlockedByInvoicedMessage.ts","enums/WorkWeekDays.ts","app/pages/AssetPopUp/components/MobileDropDownTabs/index.tsx","app/slice/globalDbSettingsSelectors.ts","app/components/LabelPrint/PrintSelectedAssetLabelsButton/index.tsx","app/components/BasicInputs/Radio/index.tsx","app/components/CustomForm/CustomFormFields/CustomFormFileUpload.tsx","app/components/Forms/FormRepetitive/RepetitiveControl.tsx","app/pages/ReservationDetails/Details/components/FormFieldListeners/BudgetListener.tsx","app/pages/ReservationDetails/Details/components/FormFieldListeners/UserNameListener.tsx","app/pages/ReservationDetails/Details/components/FormFieldListeners/UserGroupListener.tsx","app/components/Forms/FormAccompaniedServicesPicker.tsx","app/pages/Samples/RunDetailsPage/ImportComponents/ImportComponent.tsx","app/pages/ReservationDetails/Details/components/ReadOnlyDetails/index.tsx","app/pages/ReservationDetails/Details/components/Modifications/Columns.tsx","api/InvoiceTemplatesApi.ts","app/components/Forms/FormInventoryBatchPicker.tsx","app/components/BasicTable/Filters/DatesPeriodFilter/index.tsx","app/pages/CalendarPage/Scheduler/utils/syncSchedulerEvents.tsx","app/components/BasicDialog/BasicDialogContent.tsx","app/components/Forms/FormsLayout/FormErrorSummury/index.tsx","app/pages/OfflineTypeReferencesPage/OfflineTypeReferencesPopUp/index.tsx","app/pages/ServiceRequestsKanbanPage/components/getServiceRequestTicketTitle.tsx","app/pages/ServiceRequestsKanbanPage/components/ParentTicketDetailsButton/index.tsx","app/pages/ArticlesExternalSearchPage/Loadable.ts","app/Layout/FrontendLayout/components/SideBar/slice/selectors.ts","app/components/pickers/AutocompletePickers/BudgetExperimentsPicker/index.tsx","app/components/Forms/FormBudgetExperimentsPicker.tsx","app/components/Forms/FormConnectedFilters/FormFieldListeners/UserGroupListener.tsx","app/components/Forms/FormConnectedFilters/FormFieldListeners/UserNameListener.tsx","app/components/Forms/FormConnectedFilters/FormFieldListeners/BudgetListener.tsx","app/components/Forms/FormConnectedFilters/index.tsx","app/components/Forms/FormConnectedFilters/ConnectedFiltersControl.tsx","api/RegionsApi.ts","app/pages/Regions/RegionsDetailsPage/Details/slice/saga.ts","app/pages/Regions/RegionsDetailsPage/Details/slice/index.ts","app/pages/Regions/RegionsDetailsPage/Details/slice/selectors.ts","app/pages/Regions/RegionsDetailsPage/Details/index.tsx","app/components/pickers/StaticOptionsPickers/ServiceRequestMilestoneStatusPicker/index.tsx","app/components/Forms/FormServiceRequestMilestoneStatusPicker.tsx","app/pages/Samples/components/ServiceRequestMilestoneDetails/index.tsx","app/components/Forms/FormUnitTypePicker.tsx","app/components/Forms/FormServiceRequestMilestoneChargeServicePicker.tsx","app/pages/Samples/components/ServiceRequestMilestoneChargeDetails/index.tsx","app/components/RichTextEditor/RichEditorSerializer.tsx","app/components/RichTextEditor/styled.tsx","app/components/RichTextEditor/RichEditor.tsx","app/components/pickers/AutocompletePickers/PaymentMethodPicker/index.tsx","app/components/Forms/FormPaymentMethodPicker.tsx","app/components/pickers/AutocompletePickers/ReservationBudgetExperimentPicker/index.tsx","app/components/Forms/ReservationBudgetExperimentPicker.tsx","app/components/BasicInputs/FileUpload/FilePreview/Loadable.ts","app/components/BasicInputs/FileUpload/FileView.tsx","enums/RestrictDurationUnitTypes.ts","app/pages/CalendarPage/Scheduler/utils/index.ts","enums/InvoiceFundingType.ts","app/components/DateLabel.tsx/index.tsx","enums/ScreenToShowOn.ts","app/components/BasicTable/Filters/InstrumentCatFilter/index.tsx","app/components/BasicTable/Filters/UserAssetContactMultiFilter/index.tsx","app/components/BasicTabs/TabContent.ts","app/pages/UsersPage/PageActions/Actions.ts","app/pages/BillingPreviewPage/Actions/Apis.ts","app/components/BasicTable/CellRenderers/PercentageRenderer/index.tsx","app/pages/Actions/GlobalSelectedActions/OpenArticleDetails.tsx","app/pages/NotAvailablePage/index.tsx","app/components/BasicTable/CellRenderers/UserNotificationsStateRenderer/index.tsx","app/components/LabelPrint/slice/selectors.ts","app/components/Forms/FormColorPicker.tsx","app/components/BasicTable/CellRenderers/DurationRenderer/index.tsx","app/components/BasicPickers/EnumMultiPicker/index.tsx","enums/JoinStatus.ts","app/pages/LocationsPage/Details/ditails.ts","app/components/BasicTable/Filters/UserGroupFIlter/index.tsx","app/pages/Animals/InternalIdLoginPage/slice/selectors.ts","app/components/BasicTable/Filters/CustomPickerFilter/index.tsx","app/components/pickers/CustomPicker/index.tsx","app/pages/PublicAssets/slice/selectors.ts","app/components/BasicTable/Filters/UserGroupMultiFilter/index.tsx","app/components/PopupImportExport/Loadable.ts","api/EmailApi.ts","app/hooks/useSendMail.ts","app/components/pickers/AutocompletePickers/ResrevationStatusMultiPicker/index.tsx","app/components/BasicTable/Filters/ResrvationStatusMultiFilter/index.tsx","app/components/BasicTable/Filters/UpcomingReservationfilter/index.tsx","app/components/BasicTable/Filters/WorkflowBookingFilter/index.tsx","app/components/pickers/AutocompletePickers/ReservationByIdWithPartsPicker/index.tsx","app/components/BasicTable/Filters/ReservationByIdWithPartsFilter/index.tsx","app/components/BasicTable/BasicFilter/FilterDisplay/InstrumentsFilterDisplay/index.tsx","app/components/pickers/StaticOptionsPickers/AssemblyTypeshortMultiPicker/index.tsx","app/components/BasicTable/Filters/AssemblyTypeShortMultiFilter/index.tsx","app/pages/ReservationHistoryPage/Filter.tsx","app/pages/SavedViewsPage/AddToLists/index.tsx","app/components/BasicTable/Filters/UserDisciplineFilter/index.tsx","app/hooks/useScriptTag.ts","app/components/LabelPrint/usePrintScriptTags.ts","app/components/BasicTable/CellRenderers/ListRenderer/index.tsx","utils/isDefined.ts","app/components/BasicInputs/FileUpload/FileInput.tsx","app/components/pickers/AutocompletePickers/ReservationStatusPicker/index.tsx","app/components/BasicTable/Filters/ServiceTypeFilter/index.tsx","app/components/BasicTable/Filters/ProjectFilter/getBudgetsFilterSettings.tsx","api/odata/getPredicates.ts","app/components/BasicTable/Filters/MyAssetAvailabilityTypeMultiPickerFilter/index.tsx","app/pages/Actions/GlobalSelectedActions/OpenRequestDetails.tsx","app/components/pickers/AutocompletePickers/DocumentTypePicker/index.tsx","enums/Degree.ts","app/components/BasicTable/Filters/CampusFilter/index.tsx","app/components/pickers/AutocompletePickers/SubscriptionTypesPicker/index.tsx","app/pages/PublicAssets/slice/saga.ts","app/pages/PublicAssets/slice/index.ts","app/components/BasicButtons/BaseToggleButton/index.tsx","app/components/BasicButtons/BaseToggleButtonGroup/index.tsx","app/hooks/useLocaleUsesAmPm.ts","app/components/BasicTable/BasicFilter/TableToolbar/RefreshIcon.tsx","app/components/PopupImport/index.tsx","app/components/BasicTable/Filters/TagsFilter/index.tsx","app/components/BasicTable/Filters/LoanableFilter/index.tsx","app/components/BasicTable/Filters/StatusFilter/index.tsx","app/components/BasicTable/Filters/LockersFilter/index.tsx","app/components/BasicTable/Filters/AssemblyTypesFilter/index.tsx","app/components/BasicTable/Filters/AreasFilter/index.tsx","app/components/BasicTable/Filters/OnlineServiceTypeFilter/index.tsx","enums/InternalServiceRequestStatuses.ts","app/components/BasicTable/CellRenderers/UserRenderer/index.tsx","app/components/InvoiceRowReferenceLinks/index.tsx","app/components/BasicInputs/RadioGroupsControl/index.tsx","app/Layout/FrontendLayout/components/SidePanel/wrappers/index.tsx","app/Layout/FrontendLayout/components/SidePanel/SidePanelPopup.tsx","app/Layout/FrontendLayout/components/SidePanel/index.tsx","app/components/BasicRadioBox/index.tsx","app/components/BasicRadioGroup/index.tsx","app/components/Forms/FormsLayout/FormFieldsSection/index.tsx","app/components/Forms/FormsLayout/FormLeftSection/index.tsx","app/components/LargeFilesUpload/styled.tsx","app/pages/Documents/DocumentsTable.tsx","app/components/BasicTable/components/NoTableData/index.tsx","app/pages/Documents/Columns.tsx","app/pages/TrainingSessionsPage/PrimaryAction.ts","app/pages/OtherServiceDetails/Details/components/InventoryBatchList.tsx","api/AssetDetailsApi.ts","app/pages/ReservationWaitingListPage/PrimaryAction.ts","app/pages/ReservationWaitingListPage/Filter.tsx","app/components/Forms/FormParagraph.tsx","app/components/pickers/AutocompletePickers/CatRateTypePicker/index.tsx","app/components/BasicTable/CellRenderers/ImageRenderer/index.tsx","app/components/BasicTable/CellRenderers/EquipmentIdRenderer/index.tsx","app/components/BasicTable/CellRenderers/OperationTypeIdRenderer/index.tsx","app/components/BasicTable/CellRenderers/AssetImageRenderer/index.tsx","app/pages/CalendarPage/Scheduler/utils/parseLength.tsx","app/pages/CalendarPage/Scheduler/slice/types.ts","app/components/BasicTable/Filters/AssetFilter/index.tsx","app/components/Forms/formserviceGroupsPicker.tsx","app/pages/Actions/GlobalSelectedActions/OpenConsumable.tsx","app/components/BasicTable/Filters/NumbersRangeFilter/index.tsx","app/components/BasicTable/Filters/AvailabilityTypeBookableFilter/index.tsx","app/pages/UserTrainingsPage/PrimaryAction.ts","app/components/Messages/slice/selector.ts","app/components/Messages/styled.tsx","app/components/Messages/MessageActions.tsx","app/components/Messages/SnackBarMessage.tsx","app/components/Messages/components/LoanDeskMessage.tsx","app/components/Messages/components/ReservationStartedMessage.tsx","app/components/Messages/components/UsageReservationMessage.tsx","app/components/Messages/RenderSnackMessage.tsx","app/components/Messages/index.tsx","app/components/pickers/AutocompletePickers/RoomTSPicker/index.tsx","app/components/BasicTable/Filters/RoomTSFilter/index.tsx","app/components/pickers/MultiSelectPickers/TrainingProgramsMultiPicker/index.tsx","app/components/BasicTable/Filters/TrainingProgramsMultiFilter/index.tsx","app/pages/TrainingSessionsPage/Filter.tsx","app/components/pickers/AutocompletePickers/ActiveSampleTypesPicker/index.tsx","app/components/pickers/AutocompletePickers/RelevantBudgetPicker/index.tsx","app/pages/ServiceRequestListPage/CreateNewRequest/index.tsx","app/components/BasicTable/Filters/OfflineReferenceTypeFilter/index.tsx","app/components/BasicTable/Filters/ServiceShortFilter/index.tsx","app/pages/OfflineTypeReferencesPage/Filter.tsx","app/components/BasicInputs/FileUpload/FilesPreview.tsx","app/components/BasicInputs/FileUpload/FileUpload.tsx","app/components/BasicInputs/BaseInputs/FilledInput/index.tsx","api/TermsOfUseAgreementApi.ts","app/Layout/FrontendLayout/components/TopBar/components/openMenuButton/index.tsx","app/pages/AssemblySnapshots/SnapshotLink/index.tsx","app/components/BasicTable/BasicFilter/TableToolbar/TableToolbarHeader.tsx","app/components/BasicTable/BasicFilter/FiltersGroupDisplay/index.tsx","app/components/BasicTable/components/TableError/index.tsx","app/components/BasicTable/CellRenderers/DefaultRenderer/index.tsx","app/components/BasicTable/CellRenderers/FileNameRenderer/index.tsx","app/components/BasicTable/Filters/DatePickerFilter/index.tsx","app/components/BasicTable/Filters/TextFieldFilter/index.tsx","app/pages/TrainingSessionsPage/Columns.tsx","app/components/BasicTable/CellRenderers/UsedSlotsRenderer/index.tsx","app/components/BasicTable/CellRenderers/TrainingStateRenderer/index.tsx","app/pages/TrainingSessionsPage/RowActions/ReservationLink.tsx","app/pages/TrainingSessionsPage/TrainingSessionsTable.tsx","app/components/BasicTable/getNextFilter.tsx","app/pages/ArticlesPage/ArticlesTable.tsx","app/pages/ArticlesPage/PrimaryAction.ts","app/hooks/usePrevious.tsx","app/components/Forms/FormAutocompleteMultiOptions.tsx","app/components/ScannerView/index.tsx","app/pages/ReservationWaitingListPage/Columns.tsx","app/pages/ReservationWaitingListPage/ReservationWaitingListTable.tsx","app/pages/QuizDetailsPage/QuizDetails/index.tsx","app/components/pickers/AutocompletePickers/WorkOrderTypeStatusPicker/index.tsx","app/components/Forms/FormCustomFormPicker.tsx","app/components/pickers/AutocompletePickers/CatRateTypePicker/useAllowManualChargesOutsideInvoices.tsx","app/components/Forms/FormOfflineServicePicker.tsx","app/components/pickers/AutocompletePickers/OfflineServicePicker/index.tsx","app/pages/Actions/GlobalSelectedActions/OpenTimeline.tsx","app/pages/Samples/SamplePlatesPage/slice/saga.ts","app/pages/CalendarPage/Scheduler/utils/adjustSchedulerEventTimes.tsx","app/pages/CalendarPage/Scheduler/utils/applyForceFullDayReservations.tsx","app/components/Forms/FormDepartmentPicker.tsx","app/pages/MyAssetsPage/Columns.tsx","app/components/BasicTable/CellRenderers/AssetIdRenderer/index.tsx","app/components/BasicTable/Filters/ServiceTypeEnumFilter/index.tsx","app/pages/Actions/GlobalSelectedActions/CloneEquipments.tsx","app/pages/CalendarPage/Scheduler/utils/formatSchedulerDateOrUndefined.tsx","app/components/BasicTable/CellRenderers/BookedByRenderer/index.tsx","app/components/BasicTable/CellRenderers/ReservationStatusRenderer/index.tsx","app/pages/Actions/PageTopActions/AddOfflineRefs/index.tsx","app/pages/OfflineTypeReferencesPage/OfflineTypeReferencesTable.tsx","app/pages/OfflineTypeReferencesPage/Columns.tsx","app/pages/InvoiceBatches/InvoiceBatchesComments.tsx","app/components/pickers/AutocompletePickers/InvoiceStatusPicker/index.tsx","app/components/pickers/AutocompletePickers/InvoiceTemplatePicker/index.tsx","app/pages/Actions/GlobalSelectedActions/OpenSubscriber.tsx","app/pages/ReservationHistoryPage/Actions/GetActions.tsx","app/pages/UserTrainingsPage/Columns.tsx","app/pages/Actions/GlobalSelectedActions/OpenTraining.tsx","app/pages/UserTrainingsPage/Actions/GetActions.tsx","app/pages/UserTrainingsPage/TrainingsTable.tsx","app/pages/AssetSearchHistory/Columns.tsx","app/pages/AssetSearchHistory/AssetSearchHistoryTable.tsx","app/pages/CustomFormPreviewPage/CustomFormPreview/index.tsx","app/pages/OnlineBudgetsStatusPage/Filter.tsx","app/components/InfiniteScroll/index.tsx","app/hooks/useRequiredRedirectToCoreSelection.ts","app/pages/InvoiceDetails/InvoiceComments/index.tsx","app/pages/InvoiceDetails/InvoiceInReview/index.tsx","app/pages/InvoiceDetails/InvoiceRemarks/index.tsx","app/pages/InvoiceDetails/ReadOnly/index.tsx","app/pages/InvoiceDetails/ReadOnly/Rows.tsx","app/pages/InvoiceDetails/Tables/Details/Columns.tsx","app/components/BasicTable/Filters/SampleTypeFilter/index.tsx","app/pages/InvoiceDetails/Tables/Filter.tsx","app/pages/InvoiceDetails/Tables/Details/getDefaultFilters.ts","app/pages/InvoiceDetails/Tables/Details/index.tsx","app/pages/InvoiceDetails/Tables/InvoiceHistory/index.tsx","app/pages/InvoiceDetails/Tables/InvoiceHistory/Columns.tsx","app/pages/InvoiceDetails/Tables/InvoiceHistory/Filter.tsx","app/pages/InvoiceDetails/Tables/PayHistory/index.tsx","app/pages/InvoiceDetails/Tables/PayHistory/columns.tsx","app/pages/InvoiceDetails/Tables/PayHistory/Filter.tsx","app/pages/InvoiceDetails/Tables/Payments/index.tsx","app/pages/InvoiceDetails/Tables/Payments/Columns.tsx","app/pages/InvoiceDetails/Tables/RowHistory/index.tsx","app/pages/InvoiceDetails/Tables/RowHistory/Columns.tsx","app/pages/InvoiceDetails/Tables/RowHistory/Filter.tsx","app/pages/InvoiceDetails/index.tsx","app/pages/UserDetails/Details/typeUtils.ts","app/pages/UserDetails/Details/Components/UserImageRender/index.tsx","app/pages/UserDetails/Details/Components/UserComments/index.tsx","app/pages/UserDetails/Details/Components/DefaultUserGroup/index.tsx","app/pages/UserDetails/Details/Components/DefaultBudget/index.tsx","app/pages/UserDetails/Details/Components/InternalIdRender/index.tsx","app/pages/UserDetails/Details/Components/InternalId2Render/index.tsx","app/pages/UserDetails/Details/UserRows.tsx","app/pages/UserDetails/Details/Components/RenderRows/index.tsx","app/pages/UserDetails/Details/Components/UserProfileTabContent.tsx","app/pages/UserDetails/Details/Components/UserTabsRender/index.tsx","app/pages/UserDetails/Details/Components/UserReservationHistoryTable.tsx","app/pages/UserDetails/Details/Components/UserWorkOrdersTable.tsx","app/pages/UserDetails/Details/Components/UserTrainingsTable.tsx","app/pages/UserDetails/Details/Components/UserSearchHistoryTable.tsx","app/components/pickers/AutocompletePickers/ServicePicker/index.tsx","app/pages/UserDetails/Details/Components/CheckTrainingStatus/index.tsx","app/pages/UserDetails/Details/index.tsx","app/components/pickers/StaticOptionsPickers/ScreenToShowOnPicker/index.tsx","app/components/pickers/StaticOptionsPickers/InvoiceStatusWithStaticOptionsPicker/index.tsx","app/pages/BillingActions/BillingActionsDetailsPage/Details/slice/types.ts","app/pages/BillingActions/BillingActionsDetailsPage/Details/slice/saga.ts","app/pages/BillingActions/BillingActionsDetailsPage/Details/slice/index.ts","app/pages/BillingActions/BillingActionsDetailsPage/Details/slice/selectors.ts","app/components/pickers/MultiSelectPickers/EmailAttachmentTypePicker/EATBaseURLMultiPicker/index.tsx","app/components/pickers/MultiSelectPickers/EmailAttachmentTypePicker/index.tsx","app/components/Forms/FormEmailAttachmentTypePicker.tsx","app/components/Forms/FormInvoiceStatusPicker.tsx","app/components/Forms/FormScreenToShowOnPicker.tsx","app/components/Forms/FormPaymentMethodEnumPicker.tsx","app/components/pickers/MultiSelectPickers/EmailRecipientTypesPicker/ERTBaseURLMultiPicker/index.tsx","app/components/pickers/MultiSelectPickers/EmailRecipientTypesPicker/index.tsx","app/components/Forms/FormEmailRecipientTypesPicker.tsx","app/pages/BillingActions/BillingActionsDetailsPage/Details/BillingActionsForm/index.tsx","app/pages/BillingActions/BillingActionsDetailsPage/Details/Actions/BillingActions_Actions.tsx","app/pages/BillingActions/BillingActionsDetailsPage/Details/index.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/Actions/WorkOrderActions.tsx","app/components/Forms/FormWorkOrderTypePicker.tsx","app/components/Forms/FormWorkOrderTypeStatusPicker.tsx","app/components/Forms/FormRemindBeforePicker.tsx","app/components/pickers/AutocompletePickers/SymptomCodesPicker/index.tsx","app/components/Forms/FormSymptomCodesPicker.tsx","app/components/pickers/AutocompletePickers/RepairCodesPicker/index.tsx","app/components/Forms/FormRepairCodesPicker.tsx","app/components/Forms/FormReasonTypePicker.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/CreationDetails/index.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/WorkOrderForm/FormUnlimitedDowntime.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/WorkOrderForm/WorkOrderComments.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/WorkOrderForm/WorkOrderLinks/AddCalibrationWorkOrder.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/WorkOrderForm/WorkOrderLinks/HoverLinkItem.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/WorkOrderForm/WorkOrderLinks/WorkOrderLinks.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/WorkOrderForm/index.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/index.tsx","app/pages/CoreSelectionPage/Table/getFilters.tsx","app/pages/CoreSelectionPage/Table/getDefaultFilters.ts","app/components/Forms/FormInstitutePicker/index.tsx","app/components/pickers/AutocompletePickers/PermissionLevelPicker/index.tsx","app/components/Forms/FormPermissionLevelPicker/index.tsx","app/components/Forms/FormUserGroupsPicker/index.tsx","app/pages/CoreSelectionPage/SelectedBulkActions/UpdateUserGroupPermissions/UpdateGroupPermissions.tsx","app/pages/CoreSelectionPage/SelectedBulkActions/UpdateUserGroupPermissions/index.tsx","app/pages/CoreSelectionPage/SelectedBulkActions/GetSelectedActions.tsx","app/pages/CoreSelectionPage/Table/CoreSelectionTable.tsx","app/pages/CoreSelectionPage/Table/Columns.tsx","app/pages/CoreSelectionPage/slice/index.ts","app/pages/CoreSelectionPage/slice/selectors.ts","app/pages/CoreSelectionPage/CoreSelection.tsx","app/components/CheckBoxGroup/index.tsx","app/components/Forms/FormCheckBoxGroup.tsx","app/components/pickers/StaticOptionsPickers/EveryDaysPicker/index.tsx","app/components/Forms/FormEveryDaysPicker.tsx","app/components/pickers/StaticOptionsPickers/RepeatMonthlyBy/index.tsx","app/components/Forms/FormRepeatMonthlyByPicker.tsx","app/components/pickers/StaticOptionsPickers/RepeatPeriodPicker/index.tsx","app/components/Forms/FormRepeatPeriodPicker.tsx","app/components/pickers/StaticOptionsPickers/RepetitiveOptionsPicker/index.tsx","app/components/Forms/FormRepetitiveOptionsPicker.tsx","app/components/Forms/FormRepetitive/index.tsx","app/components/Forms/Schemas/RepititiveSchema.ts","api/UserTrainingApi.ts","app/pages/UserTrainings/TrainingDetailsPage/Details/slice/types.ts","app/pages/UserTrainings/TrainingDetailsPage/Details/slice/saga.ts","app/pages/UserTrainings/TrainingDetailsPage/Details/slice/index.ts","app/pages/UserTrainings/TrainingDetailsPage/Details/slice/selectors.ts","app/components/pickers/AutocompletePickers/TrainingReservationsPicker/index.tsx","app/components/Forms/FormTrainingReservationsPicker.tsx","app/pages/UserTrainings/TrainingDetailsPage/Details/UserTrainingForm/UserTrainingComments/index.tsx","app/pages/UserTrainings/TrainingDetailsPage/Details/UserTrainingForm/index.tsx","app/pages/UserTrainings/TrainingDetailsPage/Details/index.tsx","app/pages/UsageDetails/Details/components/Modifications/Columns.tsx","app/pages/UsageDetails/Details/components/Modifications/index.tsx","app/pages/UsageDetails/Details/components/Modifications/Filter.tsx","app/pages/UsageDetails/Details/components/UsageOfflineServices/index.tsx","app/components/pickers/AutocompletePickers/UsageEquipmentPicker/index.tsx","app/components/Forms/FormUsageEquipmentPicker/index.tsx","app/pages/UsageDetails/Details/components/UsageReservationDetails/index.tsx","app/pages/UsageDetails/Details/components/UsageForm/index.tsx","app/pages/UsageDetails/Details/index.tsx","app/pages/SubscribersDetailsPage/Details/Actions/SubscribersActions.tsx","app/pages/SubscribersDetailsPage/Details/slice/types.ts","app/pages/SubscribersDetailsPage/Details/slice/saga.tsx","app/pages/SubscribersDetailsPage/Details/slice/index.tsx","app/pages/SubscribersDetailsPage/Details/slice/selectors.ts","app/components/Forms/FormSubscriptionTypesPicker.tsx","app/pages/SubscribersDetailsPage/Details/SubscribersForm/SubscriptionForOptions.tsx","app/pages/SubscribersDetailsPage/Details/SubscribersForm/index.tsx","app/pages/SubscribersDetailsPage/Details/index.tsx","app/pages/PriceSheetPeriodDetails/Details/slice/types.ts","api/PriceSheetApi.ts","app/pages/PriceSheetPeriodDetails/Details/slice/saga.ts","app/pages/PriceSheetPeriodDetails/Details/slice/index.ts","app/pages/PriceSheetPeriodDetails/Details/slice/selectors.ts","app/components/Forms/FormPriceSheetMethodPicker.tsx","app/pages/PriceSheetPeriodDetails/Details/PricePeriodsForm/index.tsx","app/pages/PriceSheetPeriodDetails/Details/index.tsx","app/pages/CalendarMessages/CalendarMessagesDetails/Details/Actions/CalendarMessagesActions.tsx","app/pages/CalendarMessages/CalendarMessagesDetails/Details/slice/types.ts","api/CalendarMessagesApi.ts","app/pages/CalendarMessages/CalendarMessagesDetails/Details/slice/saga.ts","app/pages/CalendarMessages/CalendarMessagesDetails/Details/slice/index.ts","app/pages/CalendarMessages/CalendarMessagesDetails/Details/slice/selectors.ts","app/pages/CalendarMessages/CalendarMessagesDetails/Details/CalendarMessagesForm/index.tsx","app/pages/CalendarMessages/CalendarMessagesDetails/Details/index.tsx","app/pages/Samples/SamplePlatesDetailsPage/Details/Actions/SamplePlatesActions.tsx","app/pages/Samples/SamplePlatesDetailsPage/Details/slice/types.ts","api/SamplePlatesApi.ts","app/pages/Samples/SamplePlatesDetailsPage/Details/slice/saga.ts","app/pages/Samples/SamplePlatesDetailsPage/Details/slice/index.ts","app/pages/Samples/SamplePlatesDetailsPage/Details/slice/selectors.ts","app/pages/Samples/SamplePlatesDetailsPage/Details/SamplePlatesForm/index.tsx","app/pages/Samples/SamplePlatesDetailsPage/Details/index.tsx","app/pages/CostCentersDetailsPage/Details/slice/types.ts","app/pages/CostCentersDetailsPage/Details/slice/saga.tsx","app/pages/CostCentersDetailsPage/Details/slice/index.tsx","app/pages/CostCentersDetailsPage/Details/slice/selectors.ts","app/pages/CostCentersDetailsPage/Details/Actions/CostCentersActions.tsx","app/pages/CostCentersDetailsPage/Details/CostCentersForm/index.tsx","app/pages/CostCentersDetailsPage/Details/index.tsx","app/components/pickers/StaticOptionsPickers/BarcodeLogStatusPicker/index.tsx","app/components/BasicTable/Filters/BarcodeLogStatusFilter/index.tsx","app/pages/AssetsInventoryLog/InventoryLog/GetFilters.tsx","app/pages/AssetsInventoryLog/InventoryLog/InventoryLogTable.tsx","app/pages/AssetsInventoryLog/InventoryLog/GetColumns.tsx","app/pages/AssetsInventoryLog/InventoryLog/index.tsx","app/pages/SavedViewsPage/SavedViewPage/Details/Actions/SavedViewActions.tsx","app/pages/SavedViewsPage/SavedViewPage/Details/SavedViewForm.tsx","app/pages/SavedViewsPage/SavedViewPage/Details/validationSchema.ts","app/pages/SavedViewsPage/SavedViewPage/Details/index.tsx","app/pages/SavedViewsPage/SavedViewPage/Details/Actions/RightTopActions.tsx","app/pages/MyAssetsPage/AssetsSelection/Filter.tsx","app/pages/MyAssetsPage/AssetsSelection/AssetsSelectionTable.tsx","app/pages/MyAssetsPage/AssetsSelection/RecentAssets.tsx","app/pages/MyAssetsPage/AssetsSelection/AssetsSelection.tsx","app/pages/MyAssetsPage/AssetsSelection/useAddNewActions.ts","app/components/PrintToPDF/Components/Dialog.tsx","app/components/PrintToPDF/Components/CheckBox.tsx","app/components/PrintToPDF/styled.tsx","app/components/PrintToPDF/Components/PopupPrintToPDFComponent.tsx","app/components/PrintToPDF/Components/PrintToPDFPopup.tsx","app/pages/InvoiceTemplates/InvoiceTemplatePopUp/PopUpListItems/index.tsx","app/pages/InvoiceTemplates/InvoiceTemplatePopUp/HtmlTextBox/index.tsx","app/pages/InvoiceTemplates/InvoiceTemplatePopUp/PreviewButton.tsx","app/pages/InvoiceTemplates/InvoiceTemplatePopUp/index.tsx","app/components/pickers/StaticOptionsPickers/EmailTypePicker/index.tsx","app/components/BasicTable/Filters/EmailTypeFilter/index.tsx","app/pages/EmailNotificationsPage/Filter.tsx","app/components/CustomForm/CustomFormSkeleton/index.tsx","app/components/CustomForm/QuizCustomForm.tsx","app/pages/QuizPage/StartQuiz/index.tsx","app/pages/AssetPopUp/IAsset.tsx","app/pages/MyAssetsPage/Actions/Api.ts","app/pages/MyAssetsPage/SelectedRowActions/GetSelectedActions.tsx","app/pages/Actions/PageTopActions/SignUpToInstrument/index.tsx","app/pages/ReservationWaitingListPage/Actions/GetActions.tsx","utils/export.ts","app/pages/Samples/SamplesListPage/slice/saga.ts","app/pages/OtherServiceDetails/Details/OfflineForm/index.tsx","app/pages/OtherServiceDetails/Details/index.tsx","app/components/AssetImagesGallery/styled.tsx","app/components/AssetImagesGallery/index.tsx","app/pages/ArticlesPage/AricleDatasetLink/index.tsx","app/pages/ArticlesPage/Columns.tsx","app/pages/AssetPopUp/CreateAnAssetRelatedEvent.tsx","app/pages/AssetPopUp/AssetActions/index.tsx","app/pages/Samples/EditableTable/Fields/StyledSelect.tsx","app/pages/Samples/components/TmtType/index.tsx","app/components/pickers/AutocompletePickers/TimeSlotTypePicker/index.tsx","app/components/Forms/FormTimeSlotTypePicker/index.tsx","app/pages/Samples/components/SamplesTable/index.tsx","app/pages/Samples/RequestSamplesPage/components/ServiceRequestCustomForm/index.tsx","app/pages/Samples/components/EventBudgetPicker/index.tsx","app/pages/Samples/components/Utils/index.ts","api/odata/generated/enums/InternalServiceRequestStatus.ts","app/pages/Samples/components/ServiceRequestSubmissionDetails/index.tsx","app/pages/Samples/RequestSamplesPage/components/SubmitServiceRequestButton/index.tsx","app/pages/Samples/RequestSamplesPage/components/CancelServiceRequestButton/index.tsx","app/pages/Samples/components/ServiceRequestAddons/utils.ts","app/pages/Samples/components/ServiceRequestAddons/index.tsx","app/components/pickers/StaticOptionsPickers/ServiceRequestMilestoneStatusMenuPicker/index.tsx","app/pages/Samples/components/ServiceRequestMilestones/index.tsx","app/pages/Samples/components/ServiceRequestMilestonesSection/index.tsx","app/pages/Samples/RequestSamplesPage/components/CloneServiceRequestButton/index.tsx","app/pages/Samples/components/ServiceRequestRowsTable/components/AddServiceRequestRowButton/index.tsx","app/pages/Samples/components/ServiceRequestRowEditableCell/index.tsx","app/pages/Samples/EditableTable/Fields/DateField/index.tsx","app/pages/Samples/EditableTable/Fields/DropDownList/index.tsx","app/pages/Samples/EditableTable/Fields/DropDownList/IWithAsyncOptions.tsx","app/pages/Samples/EditableTable/Fields/DropDownList/useAsyncOptions.tsx","app/pages/Samples/EditableTable/Fields/getCellComponent.tsx","app/pages/Samples/EditableTable/Fields/getReadonlyCell.tsx","app/pages/Samples/components/ServiceRequestRowsTable/getCustomFormTableColumns.tsx","app/pages/Samples/components/ServiceRequestRowStatusPicker/index.tsx","app/pages/Samples/components/ServiceRequestRowsTable/getTableColumns.tsx","api/odata/generated/enums/InternalServiceRequestRowStatus.ts","app/pages/Samples/components/ServiceRequestRowsTable/components/ServiceRequestComments/index.tsx","app/pages/Samples/components/ServiceRequestRowsTable/components/ServiceRequestRowsImport/index.tsx","app/pages/Samples/components/ServiceRequestRowsTable/components/BulkUpdate/index.tsx","app/pages/Samples/components/ServiceRequestRowsTable/components/ColumnsSelect/index.tsx","app/pages/Samples/components/ServiceRequestRowsTable/index.tsx","app/pages/Samples/RequestSamplesPage/components/QuoteSentToUserAlert/index.tsx","app/pages/Samples/RequestSamplesPage/components/SendQuoteButton/index.tsx","app/pages/Samples/components/ServiceRequestRowsTable/getServiceRequestRowSchema.ts","app/pages/Samples/RequestSamplesPage/components/DownloadAllFiles/index.tsx","app/pages/Samples/RequestSamplesPage/utils/RequestErrorSummury.tsx","app/pages/Samples/components/ServiceRequestReservations/index.tsx","app/components/pickers/AutocompletePickers/GradientsPicker/index.tsx","app/pages/Samples/components/CreateRequestReservation/index.tsx","app/pages/Samples/components/ShortRequestDetails/index.tsx","app/pages/Samples/styled.tsx","app/pages/Samples/RequestSamplesPage/components/ServiceRequestBlockedByInvoice/index.tsx","app/pages/Samples/RequestSamplesPage/index.tsx","app/pages/Samples/RequestSamplesPage/utils/validationSchema.ts","app/components/PrintToPDF/getPrintPDFSections.tsx","app/pages/EmailNotificationsPage/getNotificationsLogPageLocation.tsx","app/pages/Samples/RequestSamplesPage/getServiceRequestTitle.tsx","app/Layout/FrontendLayout/components/TopBar/ProfileMenu/EventsCount/index.tsx","api/assetQuickSearchApi.ts","app/components/AssetQuickSearch/slice/saga.ts","app/components/AssetQuickSearch/slice/index.ts","app/components/AssetQuickSearch/slice/selectors.ts","app/components/AssetQuickSearch/AssetListItem/index.tsx","app/components/AssetQuickSearch/RecentAssetsList/index.tsx","app/components/AssetQuickSearch/RecentItem/index.tsx","app/components/AssetQuickSearch/RecentSearchTermsList/index.tsx","app/components/AssetQuickSearch/MenuSearchItem/index.tsx","app/components/AssetQuickSearch/MenuSearchResultList/index.tsx","app/components/AssetQuickSearch/AssetSearchResultsByType/index.tsx","app/components/AssetQuickSearch/index.tsx","app/Layout/FrontendLayout/components/TopBar/ProfileMenu/messages.ts","app/Layout/FrontendLayout/components/TopBar/ProfileMenu/UserMenu/UserMenuButton.tsx","app/Layout/FrontendLayout/components/TopBar/ProfileMenu/UserMenu/index.tsx","app/Layout/FrontendLayout/components/TopBar/ProfileMenu/SwitchSites/index.tsx","app/components/LocaleSelector/index.tsx","app/Layout/FrontendLayout/components/TopBar/ProfileMenu/index.tsx","app/Layout/FrontendLayout/components/TopBar/components/ToggleSideMenuButton.tsx","app/Layout/FrontendLayout/components/TopBar/TopToolbar/index.tsx","app/components/GlobalServiceGroupFilter/TopGroupButton/index.tsx","app/components/GlobalServiceGroupFilter/CoreSelectionButton/index.tsx","app/Layout/FrontendLayout/components/TopBar/SubTopToolbar/index.tsx","app/Layout/FrontendLayout/components/TopBar/index.tsx","styles/CssVariables/styledVariables.ts","app/Layout/FrontendLayout/components/SideBar/GroupsIcon/index.tsx","app/Layout/FrontendLayout/components/SideBar/SideBarMenu/index.tsx","app/hooks/useSpecificCoreChanged.ts","app/components/BookitlabLogo/BookitlabShortLogo.tsx","app/Layout/FrontendLayout/components/SideBar/UserProfileMobile/index.tsx","app/Layout/FrontendLayout/components/SideBar/SideBarHeader/index.tsx","app/Layout/FrontendLayout/components/SideBar/SideBarFooter/index.tsx","app/Layout/FrontendLayout/components/SideBar/SideBarQuickAction/index.tsx","app/Layout/FrontendLayout/components/SideBar/index.tsx","app/Layout/FrontendLayout/SideBarDrawer.tsx","app/Layout/FrontendLayout/styled/index.tsx","app/Layout/FrontendLayout/components/AdminPanel/index.tsx","app/Layout/FrontendLayout/index.tsx","app/pages/ServiceRequestsKanbanPage/components/ServiceRequestCard/index.tsx","app/pages/ServiceRequestsKanbanPage/components/Kanban/index.tsx","app/Layout/FrontendLayout/components/ContentBox/index.tsx","app/pages/ServiceRequestsKanbanPage/index.tsx","app/pages/AssetFile/fileAvailability.ts","app/pages/AssetFile/Form.tsx","app/pages/AssetFile/index.tsx","../node_modules/date-fns/esm/locale lazy /^/.*$/ groupOptions: {} namespace object","styles/global-styles.ts","app/Layout/FrontendLayout/Loadable.ts","app/pages/AnimalTypesPage/Loadable.ts","app/components/DialogAlert/messages.ts","app/components/DialogAlert/slice/selectors.ts","app/components/DialogAlert/index.tsx","app/Layout/FrontendLayout/components/Snackbar/Loadable.ts","app/pages/Animals/InternalIdLoginPage/Loadable.ts","app/pages/AnimalsListPage/Loadable.ts","app/Layout/PosLayout/index.tsx","app/pages/Animals/AnimalCaseConsumablesPage/Loadable.ts","app/Layout/LoginLayout/index.tsx","app/pages/Animals/AnimalsHomePage/Loadable.ts","app/pages/Animals/PrivateAnimalRoute/index.tsx","app/pages/Animals/CreateNewCasePage/Loadable.ts","app/pages/Samples/SamplesListPage/Loadable.ts","app/pages/Samples/RunDetailsPage/Loadable.ts","app/pages/Samples/RequestSamplesPage/Loadable.ts","app/pages/TrainingSessionsPage/Loadable.ts","app/pages/Buildings/Loadable.ts","app/pages/ReservationHistoryPage/Loadable.ts","app/pages/AddNewReportPage/Loadable.ts","app/pages/TrainingWaitingListPage/Loadable.ts","store/history.ts","app/pages/EmailNotificationsPage/Loadable.ts","app/pages/ExperimentTemplates/Loadable.ts","app/pages/UsersHistoryPage/Loadable.ts","app/pages/UserTrainingsPage/Loadable.ts","app/components/Routers/RestrictedRoute/index.tsx","app/pages/UsersPage/loadable.ts","app/pages/Animals/AnimalExtendedBillingReportPage/Loadable.ts","app/pages/UserTrainingHistoryPage/Loadable.ts","app/pages/OtherServicesPage/Loadable.ts","app/pages/BudgetsPage/Loadable.ts","app/pages/ServiceRequestListPage/Loadable.ts","app/pages/WorkOrdersPage/Loadable.ts","app/pages/Documents/Loadable.ts","app/pages/QuizPage/Loadable.ts","app/pages/QuizDetailsPage/Loadable.ts","app/pages/UserTrainings/TrainingDetailsPage/Loadable.ts","app/pages/Samples/SampleModificationsPage/Loadable.ts","app/pages/UsageHistoryPage/Loadable.ts","app/pages/Samples/RunsListPage/Loadable.ts","app/pages/Animals/AnimalCaseEditPage/AnimalCasesHistory/Loadable.ts","app/pages/SendEmailToUsers/Loadable.ts","app/pages/ChargesPage/Loadable.ts","app/pages/MyAssetsPage/Loadable.ts","app/pages/LocationsPage/loadable.ts","app/pages/LocationsPage/BuildingPage/loadable.ts","app/pages/LocationsPage/CampusesPage/loadable.ts","app/pages/LocationsPage/AreasPage/loadable.ts","app/pages/LocationsPage/LocationListPage/loadable.ts","app/pages/LocationsPage/SubLocationListPage/loadable.ts","app/pages/InvoiceBatches/Loadable.ts","app/pages/CategoriesPage/Loadable.ts","app/pages/CategoryGroupsPage/Loadable.ts","app/pages/BillingPreviewPage/Loadable.ts","app/pages/OnlineBudgetsStatusPage/slice/selectors.ts","app/pages/OnlineBudgetsStatusPage/slice/saga.ts","app/pages/OnlineBudgetsStatusPage/slice/index.ts","app/pages/OnlineBudgetsStatusPage/ChargeOnlineBudgetsButton/index.tsx","app/pages/OnlineBudgetsStatusPage/GenerateInvoicesButton/index.tsx","app/pages/OnlineBudgetsStatusPage/PayButton/index.tsx","app/pages/OnlineBudgetsStatusPage/GenerateInvoicesAndSendToSap/index.tsx","app/pages/AddPaymentPage/AddPaymentButton.tsx","app/pages/OnlineBudgetsStatusPage/useRowActions.tsx","app/pages/OnlineBudgetsStatusPage/index.tsx","app/pages/OnlineBudgetsStatusPage/columns.tsx","app/pages/OnlineBudgetsStatusPage/pageActions.tsx","app/pages/OnlineBudgetsStatusPage/getDefaultFitlers.ts","app/pages/InvoiceDetails/Loadable.ts","app/pages/WorkOrders/WorkOrderDetailsPage/Loadable.ts","app/pages/InvoiceBillingPage/Loadable.ts","app/pages/BillingActions/BillingActionsPage/Loadable.ts","app/pages/BillingActions/BillingActionsDetailsPage/Loadable.ts","app/pages/LocationsPage/LocationTypesPage/loadable.ts","app/pages/LocationsPage/SubLocationTypesPage/loadable.ts","app/pages/SavedViewsPage/SavedViewPage/Loadable.ts","app/pages/SavedViewsPage/SavedViewsPage/Loadable.ts","app/pages/LabelTypesPage/Loadable.ts","app/pages/AssetDetailsPage/Loadable.ts","app/components/LabelPrint/LabelPrintDialog/Loadable.ts","app/pages/KioskProjects/Loadable.ts","app/pages/KioskProjects/KioskProjectConsumablesPage/Loadable.ts","app/pages/KioskProjects/PrivateKioskProjectsRoute/Loadable.ts","app/components/SessionTimeout/SessionTimeout.ts","app/components/SessionTimeout/DialogAlert.tsx","app/components/SessionTimeout/index.tsx","app/pages/QuizSubmissionsPage/Loadable.ts","app/pages/QuizzesPage/Loadable.ts","app/pages/AdHocReportListPage/Loadable.ts","app/pages/RoomsPage/Loadable.ts","app/pages/CalendarMessages/CalendarMessagesPage/Loadable.ts","app/pages/CoresDirectoryPage/Loadable.ts","app/pages/Samples/SamplePlatesPage/Loadable.ts","app/Layout/FrontendLayout/components/HeadTitle/useTabTitle.ts","app/Layout/FrontendLayout/components/HeadTitle/useFavicon.ts","app/Layout/FrontendLayout/components/HeadTitle/useTitle.ts","app/Layout/FrontendLayout/components/HeadTitle/index.tsx","app/pages/InstrumentRestrictionsPage/Loadable.ts","app/pages/LabelTypeDetailsPage/Loadable.ts","app/pages/ConfigurableColumnExportImport/Loadable.ts","app/components/Routers/ShortURLRoute/index.tsx","app/components/Routers/ServerBarcodesRoute/index.tsx","app/pages/NewMessagePage/Loadable.ts","app/pages/OtherServiceDetails/OtherServiceDetailsPage/Loadable.ts","app/pages/InvoiceTemplates/InvoiceTemplatesPage/Loadable.ts","app/pages/ExpensesPage/Loadable.ts","app/pages/PriceSheetPeriodsPage/Loadable.ts","app/pages/PriceSheetPeriodDetails/PriceSheetPeriodDetailsPage/Loadable.ts","app/pages/ArticlesPage/Loadable.ts","app/Layout/AccountLayout/Loadable.ts","app/pages/Account/Register/Loadable.ts","app/pages/CalendarPage/Loadable.tsx","app/hocs/withSaveAsLastVisitedPage.tsx","app/pages/ReservationDetails/ReservationDetailsPage/Loadable.ts","app/pages/HomePage/Loadable.tsx","app/pages/SystemPage/Loadable.tsx","app/pages/DashboardPage/Loadable.ts","app/pages/CoreSelectionPage/Loadable.ts","app/pages/CoreHomePage/Loadable.ts","app/pages/CoreStatsPage/Loadable.ts","app/pages/ReportingPage/Loadable.ts","app/pages/BookitLabDashboardPage/Loadable.ts","app/components/RedirectWithSearch/index.tsx","app/pages/MyAssetsPage/AssetsSelection/Loadable.ts","app/pages/TermsOfUseAgreementPage/Loadable.ts","app/Layout/FrontendLayout/components/Snackbar/SnackWrapper.tsx","app/pages/ActiveUserGroupPage/Loadable.ts","app/pages/CannedReports/Loadable.ts","app/pages/UserAttributes/UserAttributesPage/Loadable.ts","app/pages/OtherServiceDetails/ReportConsumables/ReportConsumablesPage/Loadable.ts","app/pages/LoginPage/Loadable.ts","app/pages/CalendarMessages/CalendarMessagesDetails/Loadable.ts","app/pages/ServiceRequestsKanbanPage/Loadable.ts","app/pages/OfflineServiceTypesPage/Loadable.ts","app/pages/Animals/AnimalCaseEditPage/Loadable.ts","app/AllIcons.ts","app/Layout/PublicAssetsLayout/index.tsx","app/pages/PublicAssets/Loadable.ts","app/pages/NotAllowedPage/Loadable.ts","app/pages/PlayGround/Loadable.ts","app/pages/AssetsInventory/Loadable.ts","app/pages/AssetsInventoryLog/Loadable.ts","app/pages/ServiceRequestAuditTrailHistoryPage/Loadable.ts","app/pages/FloorsPage/Loadable.ts","app/pages/SubscriptionTypesPage/Loadable.ts","app/pages/BudgetExperimentsPage/Loadable.ts","app/pages/RequestStatuses/RequestStatusesPage/Loadable.ts","app/pages/SubscribersPage/Loadable..ts","app/pages/Regions/RegionsDetailsPage/index.tsx","app/pages/ProjectMembersPage/Loadable.ts","app/pages/ReservationWaitingListPage/Loadable.ts","app/pages/JoinAdGroup/Loadable.ts","app/pages/JoinAdGroup/JoinConfirmPage/Loadable.ts","app/pages/PlannedWorkOrdersPage/Loadable.ts","app/pages/NotificationsPage/Loadable.ts","app/pages/Samples/SamplePlatesDetailsPage/Loadable.ts","app/pages/AssetFile/Loadable.ts","app/pages/AssetSettings/Loadable.ts","app/pages/UsageDetails/UsageDetailsPage/Loadable.ts","app/pages/Regions/RegionsPage/Loadable.ts","app/pages/SuperGroups/SuperGroupsPage/Loadable.ts","app/pages/AssemblySnapshots/Loadable.ts","app/pages/UserDetails/UserProfilePage/Loadable.ts","app/pages/AssetSearchHistory/Loadable.ts","app/pages/AllCoresPage/Loadable.tsx","app/pages/SpecificCoresPage/Loadable.tsx","app/pages/CoreSettingsPage/Loadable.ts","app/pages/SSOErrorsPage/Loadable.ts","app/pages/SubscribersDetailsPage/Loadable.ts","app/pages/SsoIntegrationPage/Loadable.ts","app/components/Routers/BudgetsRestrictedRoute/index.tsx","app/pages/PublicSchedulePage/Loadable.ts","app/pages/SystemSettingsAuditTrailPage/Loadable.ts","app/pages/CostCentersPage/Loadable.ts","app/pages/CostCentersDetailsPage/Loadable.ts","app/pages/OfflineTypeReferencesPage/Loadable.ts","app/pages/ServiceRequestTypesPage/Loadable.ts","app/pages/CustomFormPreviewPage/Loadable.ts","app/index.tsx","store/BarcodeScanner.ts","store/SagaMonitor.ts","reportWebVitals.ts","app/components/MobileBarcodeScanner/index.tsx","index.tsx","store/configureStore.ts","store/reducers.ts"],"names":["translations","Proxy","get","target","key","obj","_index","require","__esModule","default","formatLongHE","date","formats","full","long","medium","short","defaultWidth","time","dateTime","dateFnsLocalesList","log","getLogger","DateUtils","dateFnsUtils","DateIOFormats","dayOfMonth","fullDate","fullDateWithWeekday","fullDateTime","fullDateTime12h","fullDateTime24h","fullTime","fullTime12h","fullTime24h","hours12h","hours24h","keyboardDate","keyboardDateTime","keyboardDateTime12h","keyboardDateTime24h","minutes","month","monthAndDate","monthAndYear","monthShort","weekday","weekdayShort","normalDate","normalDateWithWeekday","seconds","shortDate","year","localDayOfWeek","isToday","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInDays","differenceInWeeks","differenceInMonths","differenceInQuarters","differenceInYears","differenceInCalendarDays","add","addMilliseconds","addSeconds","addMinutes","addHours","addDays","addWeeks","addMonths","addQuarters","addYears","startOfMinute","startOfHour","startOfDay","startOfMonth","startOfQuarter","startOfYear","endOfHour","endOfDay","endOfMonth","endOfQuarter","endOfYear","endOfTomorrow","startOfTomorrow","startOfYesterday","endOfYesterday","startOfToday","lastDayOfMonth","getDaysInMonth","getDayOfYear","getYear","getMonth","getHours","getMinutes","getDate","setDate","setMonth","setYear","setHours","setMinutes","intervalToDuration","this","DateFnsUtils","locale","localeId","systemFirstDayOfWeek","l","parseLocale","getLocale","undefined","options","weekStartsOn","console","warn","error","culture","a","includes","module","tryImportLocale","language","region","join","result","code","formatLong","v","parseISO","f","d","dateOrStringToDate","format","err","timeZone","Intl","DateTimeFormat","resolvedOptions","formatInTimeZone","s","isNaN","getTime","parse","formatDistanceToNow","addSuffix","formatISO","Date","formatDate","convertedDate","value","fdow","startOfWeek","Array","from","map","e","i","startDate","endDate","months","getFullYear","firstDayOfWeek","dateUtils","endOfWeek","getDay","week","setWeek","day","setDay","values","set","FirstDayOfWeek","getWeekOfMonth","hoursMinutes","split","parseInt","CustomDate","toDate","meridiem","ampm","val","hours","state","toLowerCase","toUpperCase","ODataOperators","quoteODataValue","toString","escapeODataValue","representation","isArray","Id","Error","replaceAll","withisInversed","condition","isInversed","Condition","field","operator","field1","c1","start","push","GreaterThanEqual","end","LessThanEqual","length","c","GreaterThan","LessThan","res","fieldName","name","String","Equals","NotEquals","Contains","ContainsM","resCM","Between","between","Intersection","intersection","Any","hasAny","NotAny","notAny","In","InM","inM","Includes","Excludes","AnyIn","anyIn","HasNoAny","haNoAny","All","all","AllIn","allIn","ODataFilterBuilder","x","predicates","globalServiceGroupFilter","stringColumns","stringSearch","isOptionalServiceGroup","filter","stringValue","p","concat","grayscale_gray_borders_c5","grayscale_gray_selection_c4","bookitColors","base","black","white","grayscale","blackRegular","blackComponents","graySubtitles","grayComponents","grayComponentsLight","grayBorders","graySelection","graybgComponents","grayBackground","grayBackgroundLight","overlays","overlayBlack","overlayWhite","primary","dark","hover","regular","components","componentsLight","borders","disabled","bgHover","background","bgLight","secondary","violet","danger","success","warning","UserProfile","settings","savedSettings","sett","find","index","Key","defaultSetting","Value","Enabled","Selected","UserName","Name","AdGroup","DefaultGroups","IsMultiple","StaffEnabled","comparator","selectSlice","appSettings","initialState","selectAppSettings","createSelector","selectKnownModules","Modules","selectKnownModule","knownModules","selectSystemFirstDayOfWeek","Globalization","UseAmPm","selectWebVersion","WebVersion","selectUploadFileSizeLimit","UploadFileSizeLimit","selectMinimizedBookitlabLogo","MinimizedBookitlabLogo","defaultForbiddenFileExtensions","selectForbiddenFileExtensions","ForbiddenFileExtensions","selectLastCodeUpdate","LastCodeUpdate","selectAppTimeZone","TimeZone","selectSettingTimeZones","SettingTimeZones","selectPublicUrl","PublicBaseUrl","appendTrailingSlash","selectRegisterUserGroup","DefaultRegistrationGroup","selectOffsetDate","systemOffset","TimezoneOffsetMinutes","correctDate","currentDateOffset","getTimezoneOffset","selectEmailFromAddress","UserRegistersToSpecificCores","UserRegistersToSpecificCoresType","UserRegistersToSpecificCores_NA","EmailFromAddress","selectExistingImages","ExistingImages","selectAuthenticatedUserObject","authenticatedUser","selectAuthenticatedUser","AuthenticatedUser","selectSupportedLocales","SupportedLocales","selectDefaultLocaleId","DefaultLocaleId","selectLdapEnabled","LdapEnabled","selectCurrentLocale","defaultLocaleId","currentLocaleId","selectCurrentLocaleIdentifier","selectCurrentLanguage","selectAssetFieldSettings","pickBy","AssetFieldSettings","IsPublic","selectAssetPopupSettings","assetFieldSettings","Object","entries","Visible","DisplayName","selectEnabledUserFieldSettings","UserFieldSettings","Disabled","selectUserFieldSettings","type","userFieldSettings","Setting","selectIsFullScreen","isFullScreen","selectLoading","isAuthenticated","loadingAppSettings","loadingSiteMapSettings","loadingUserProfileSettings","loadingSystemSettings","loadingAuthenticatedUser","selectLoadingUser","selectNotifications","notifications","selectGlobalSettingsObj","systemSettings","selectglobalSettings","GlobalSettings","selectGlobalSetting","globalSettingsObj","trim","AllowedSettings","selectImageExist","image","existingImages","some","selectGlobalSettingBool","selectSiteMapProvider","siteMapSettings","SiteMapProvider","selectEventsCount","eventsCount","selectEventsCountLoading","loadingEventsCount","selectUserProfileSettings","userProfileSettings","selectUserProfileSetting","GetSettingByKey","selectIsSubBarCollapsed","isExpanded","subBarCollapsed","selectIsAuthenticated","updatedUserProfileSettings","selectIsExpandedSideBar","updatedExpandState","isMobile","expanded","GetSideBarExpanded","selectGlobalServiceGroupFilter","topServiceGroupsIsHidden","selectSpecificServiceGroupFilter","hideDashboardSubMenu","specificServiceGroupFilter","selectAllCoresSelectableCount","allServiceGroupsSelectable","selectAllCoresSelectable","selectShowGlobalServiceGroupFilter","showGlobalServiceGroupFilter","selectBarcodeScanTarget","barcodeScanTarget","selectShowAllCores","showAllCores","selectSkipLocationChanged","skipLocationChanged","selectReservationStatuses","manualScanProcessing","KnownModules","UserGroupCoordRole","AllowWorkflowBooking","MultipleTentativeReservationsUnderWorkflowBooking","DraftReservationsEnabled","t","GetListItem","ReservationStatus","list","Approved","Pending","PendingCoord","Cancelled","CancelledByAdmin","Tentative","Draft","selectUsageEnabled","RoomUserRoleEnabled","LocalApp","Relay","IpRelay","WebRelayTm","WebRelayX600m","UsageForm","LoanDesk","DoorAccess","NiDAQmx","KmTronicRelay","RaspberryPi","FormRightSection","props","children","isCover","useTopSpacing","sidePanelExpanded","useSelector","selectExpandedSidePanel","showShortView","selectSidePanelOpen","theme","useTheme","className","clsx","shortView","topSpacing","StyledForm","id","onSubmit","avoidStyles","noPadding","useRequestSection","other","ref","StyledFormFieldsContainer","axios","defaults","baseURL","process","timeout","interceptors","request","use","config","headers","isStatusOK","status","formatBatchUrl","substr","httpClient","cancelToken","CancelToken","url","params","response","data","put","post","patch","delete","b","payload","requests","r","pathName","search","method","atomicityGroup","uniqueId","body","responses","every","urls","batch","file","formData","FormData","append","responseType","Accept","getBlackColorOption","palette","common","graySubtitle","blackComponent","backgroundHover","getColorOption","color","main","light","textHover","contrastText","Icon","React","icon","colorExtend","info","iconName","defColor","getColor","WithTitle","Tooltip","title","URLSearchParamsCI","URLSearchParams","keys","GetRawValue","setisInversedForUrl","isInversedPrefix","findIsfilterInversed","startsWith","isFilterInversed","definedVal","hasprefix","substring","GetNumberOrUndefined","rawValue","number","GetStringOrUndefined","getStringUnionOrUndefined","unionArray","toLocaleLowerCase","getStringUnionArrayOrUndefined","isNullOrUndefined","splitFilterValue","GetBooleanOrUndefined","GetDateOrUndefined","parseQueryStringDate","GetPartialEntity","GetEnum","enumObject","enumToEntityArray","numValue","tryParseInt","item","GetBooleanEntity","Yes","No","initPickerValue","additionalOptions","additionalItem","option","Promise","resolve","failureResult","verifiedData","initExPickerValue","sourceUrl","withoutServiceGroups","initMultiExPickerValue","separator","serviceGroups","ids","additionalItems","initMultiPickerValue","getPeriodTypeNameOrUndefined","lowered","namedValue","ALL_PERIOD_TYPES","num","getDefaultFilterDatePeriod","periodTypeFieldName","customStartFieldName","customEndFieldName","periodType","PresetDatesRange","Custom","fromType","presetDatesRangeToQueryString","formatQueryStringDate","getDefaultFilterNumberPeriod","NumebersRangeToQueryString","startFieldName","endFieldName","formatQueryStringDateValue","serializeValue","defaultSerializer","arrayToQueryString","stringValues","arrayByNameEntityNumberToQueryString","getStringEntityArray","allSearch","allEntities","getNumberEntityArray","getNumberEntityArrayFromString","assetRangeSerializer","fieldname","isAssetRangeType","unitType","getAssetRange","valOrNull","parseFloat","getSplitNumberArray","indexOf","joinArray","SYSTEM_SETTINGS_URL","SettingsApi","doPrefetchConfigurableColumns","select","authSet","ScreensId","CoresDirectory","ReservationHistory","UserTraining","m","Instruments","UpcomingTrainingSessions","ServiceRequests","MyAssets","Alerts","MaintenanceAssets","noAuthSet","PublicAssets","screenId","GetCachedConfigurableColumnsData","ConfigurableTypes","ColumnScreenConfig","getAppSettings","getAuthenticatedUser","doSetIsAuthenticated","doChangeLanguage","getSiteMapSource","doNavigate","getEventsCount","getUserProfileSettings","getSystemSettings","getLoginSystemSettings","updateUserProfileSettings","doUpdateExpandedState","doLoadGlobalServiceGroupFilter","doLoadSpecificServiceGroupFilter","doLoadAllServiceGroupsSelectable","doSaveAllGlobalServiceGroupFilter","doSaveGlobalServiceGroupFilter","doSaveUserProfileSetting","doSaveFilter","doSavePageSize","doSaveCardsMode","doUpdateMyListSelected","doBarcodeScan","doScanUser","handleFullScreenChange","doEnterFullScreen","doExitFullScreen","doSetBarcodeScannigTarget","doShowAllCores","doCollapseSubBar","doAgreeTermOfUse","getAppSettingsFromSaga","action","call","actions","appSettingsLoaded","setLocale","noAuthSettings","window","location","pathname","replace","toRootedURL","loadSystemSettings_Success","loadError","message","user","LoginType","LoginTypes","Password","getAuthenticatedUser_Success","Roles","LargeAnimalsOperatingRoomTechnician","internalIdLoginActions","setIsAuthenticated","getAuthenticatedUser_Error","IsAuthenticatedChanged","setCookieLocale","i18next","changeLanguage","encodeURIComponent","siteMap","loadSiteMapSettings_Success","loadSiteMapSettings_Error","href","count","loadEventsCount_Success","loadEventsCount_Error","delay","loadUserProfile_Success","loadUserProfile_Error","loadSystemSettings_Error","loadLoginSystemSettings_Success","loadLoginSystemSettings_Error","withDelay","GetSettingByKeyOrDefault","assign","model","requestURL","updateUserProfile_Success","updateUserProfile_Error","updateExpandedState_Success","updateExpandedState_Error","$select","loadGlobalServiceGroupFilter_Success","loadSpecificServiceGroupFilter_Success","$count","loadAllServiceGroupsSelectable_Success","allGroups","savedata","selection","addNotification","variant","SwitchedTo","HideDashboardSubMenu","dashSubMenuDisabled","allGroupsCount","httpPaload","equals","navigate","updateMyList","MIN_LENGTH_DEFAULT","MinBarcodeLength","minBarcodeLengthString","InternalUserIdFieldLength","internalUserIdLengthString","internalUserIdLength","scannTarget","ScanTarget","BarcodeScanModalBody","scanResult","parseBarcode","BarcodeNotFoundEx","ScanTemplateResult","Asset","Internal","External","InternalCode","getRoomByExternalBarcode","roomId","PUBLIC_ASSETS_PATH","roomid","barcode","getScannedUser","scannedUser","internalId","isLoanDesk","userId","isRoomAdmin","$top","$filter","username","document","fullscreenElement","enterFullScreen_Success","exitFullScreen_Success","selector","documentElement","querySelector","fullScreenElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","fullScreenExitFunction","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","barcodeScannigTarget_Success","setShowAllCores","setCollapseSubBar","TermsOfUseAgreementApi","agreeTermsOfUseAgreement","ErrorMessages","takeLatest","loadAppSettings","loadSiteMapSettings","loadEventsCount","loadUserProfileSettings","takeLatestByKey","updateExpandedState","loadGlobalServiceGroupFilter","loadSpecificServiceGroupFilter","saveGlobalServiceGroupFilter","saveAllGlobalServiceGroupFilter","loadAllServiceGroupsSelectable","saveUserProfileSetting","saveFilter","loadSystemSettings","loadLoginSystemSettings","savePageSize","updateMyListSelected_Local","BARCODE_SCANNED","manualScanBarcode","saveCardsMode","fullScreenChannel","eventChannel","emitter","addEventListener","removeEventListener","takeEvery","takeLeading","enterFullScreen","exitFullScreen","setBarcodeScannigTarget","collapseSubBar","agreeTermOfUse","getCookieLocale","notificationsCount","slice","createSlice","reducers","addNewGroup","AdminServiceGroups","findIndex","splice","addNotifications","forEach","removeNotification","array","keyFn","upsert","itemIndex","updatedItem","userNodes","ChildNodes","flat","element","reactUrl","Url","ss","LoginScreenCompanyLogo","LoginScreenCompanyLogoLink","LoginScreenCompanyLogoHeight","ShowForgotPassword","Help_Login","updateExpandedState_Local","saveGlobalServiceGroupFilter_Success","enterFullScreen_Error","exitFullScreen_Error","barcodeScannigTarget_Error","setSkipLocationChanged","manualScanBarcode_Success","manualScanBarcode_error","appSettingsActions","useAppSettingsSlice","useInjectReducer","reducer","useInjectSaga","saga","Button","withTooltipHook","processing","size","component","to","truncateLabel","startIcon","ariaLabel","dispatch","useDispatch","appActions","absolutePath","path","truncateClass","textSizeClass","capitalize","disableRipple","disableFocusRipple","disableTouchRipple","onClick","event","toto","toLocationDescriptor","handleClick","endIcon","aria-label","isAbsoluteURL","urlString","schema","query","cpath","tryCleanASPRoot","rootedpath","isRooted","basePath","trimEnd","trimStart","combine","toQueryString","buildURL","endsWith","useAbsolute","toPath","publicUrl","URL","getExportParameters","$format","getExportForImportParameters","openExportLink","tz","reqParams","Iana","cd","filename","fileDownload","debug","odataUrlPrefix","downloadFile","decodeURIComponent","defaultFileName","getFileName","defaultName","RenderPageType","lazyLoad","importFunc","selectorFunc","opts","fallback","lazyFactory","then","LazyComponent","lazy","H1","H2","H3","H4","Body","bold","bodyVarian","Caption","captionVarian","Uppercase","Tips","tipsVarian","InputLabel","inputLabelVarian","InputValue","inputValueVarian","ButtonLabel","buttonLabeVarian","doOpenSidePanel","doOpenAdminPanel","layoutSaga","selectHasNotSavedChanges","isChangesNotSaved","sidePanelOpen","setContinueState","continue","setConfirmOpen","resetSidePanel","noDelay","setTuggleOpenState","open","selectAdminPanelOpen","resetAdminPanel","setAdminPanelUrl","setAdminPanelOpen","openSidePanel","openAdminPanel","initialSidPanelState","pageType","pageProps","coverOpen","coverExpanded","sidePanelState","confirmState","confirmOpen","approved","rejected","showLocalConfirm","continueToLink","hasAnyNotSavedChanges","doRefreshTable","continueState","continueOnApprove","hideNavigation","actionTableProcessing","upsnackbarIndex","isMobileView","adminPanelState","adminPanelOpen","toggleSidePanel","closeSidePanel","setPageType","setPageProps","setExpanded","resetConfirmState","setConfirmApproved","setConfirmRejected","setContinueToLink","setNotSavedChanges","setRefreshTable","setActionTableProcessing","setLocalConfirm","setContinueOnApprove","setHideNavigation","resetContinueState","setUpSnackBarIndex","setIsMobileView","setIsCoverOpen","setIsCoverExpanded","layoutActions","useLayoutSlice","layout","selectSidePanelState","selectPageType","selectPageTypeProps","selectConfirmOpen","selectConfirmApproved","selectConfirmRejected","selectDoRefreshTable","selectContinueState","selectContinueToLink","selectHideNavigation","selectSnackBarIndex","selectIsMobileView","selectActionTableProcessing","selectProcessingIndicator","methodName","selectIsCoverOpen","selectIsCoverExpanded","selectAdminPanelUrl","IconButton","shape","absolutePosition","ExternalLink","RouterLink","isEmptyOrWhitespace","toUndefinedIfEmptyOrWhitespace","toLowerCaseSafely","notUndefined","toNumberOrNull","hasStringProperty","entity","propName","toIdentifiableArray","toIdentifiable","UserAttributeEnum","EnumAssetTypes","IsBudgetFieldEnabled","setting","BudgetField","BudgetFieldSettings","bf","IsModuleEnabled","IsUsageEnabled","globalSettings","GetBooleanByKey","IsAssetFieldEnabled","AssetField","AssetAvailabilityType","AssetAttributes","AssetTypes","IsAssetFieldRequired","RequiredAssetTypes","IsAssetFieldIsPublic","IsAssetImageExist","imageName","imageSize","getOffsetDate","GetAssetTypeFrom","availability","AvailabilityTypes","NotAvailable","AvailableNotBookable","FreelyBookable","BookableWApproval","LoanableEquipment","ServiceRelated","ServiceGroup","SuperGroup","RequestRelated","TrainingProgram","LectureRoom","keyValue","TryGet","GetString","typeEnum","getDefault","BasicTypography","italic","style","truncateSize","uppercase","typographyComponentMapping","Boolean","toAvailabilityUnion","availabilityType","getAvailabilityUnion","DetectIsMobile","checkIsMobile","useIsMobile","GetBrowserInfo","rdd","AutocompletePicker","label","loadData","filterOptions","onChange","listSize","mini","isOpen","disableClearable","fullWidth","noOptionsText","required","propsLoading","loading","freeSolo","handleInputChange","additionalSearchTerm","renderOptionName","getOptionLabelName","inputProps","autoFocus","autoHighlight","autoComplete","autoSelect","blurOnSelect","clearOnEscape","includeInputInList","selectOnFocus","disableListWrap","filterSelectedOptions","disableCloseOnSelect","openOnFocus","setSomeOpen","ListboxProps","expandedColumns","customRenderOption","getOptionSelected","useTranslation","timerRef","firstOpen","setOpen","setOptions","searchTerm","setSearchTerm","hasSelected","setSelected","firstMounted","setFirstMounted","useEffectOnMount","handleSelectText","setSelectionRange","clearTimeout","current","setLoading","doload","active","rawResponse","extractDataFromResponse","optionsData","loadDataAndPrepareOptions","Autocomplete","onOpen","onPickerOpen","onClose","reason","details","multiple","onInputChange","newInputValue","getOptionDisabled","getOptionLabel","NA","renderOption","text","highlight","matches","match","parts","part","highlightSearchTerm","inputValue","onBlur","popupIcon","closeIcon","renderInput","BaseTextField","innerProps","placeholder","AllValues","helperText","innerClassName","onFocus","setTimeout","InputProps","omit","endAdornment","CircularProgress","InfoIcon","infoWidthPlus","infoWidthMinus","ServiceType","ServiceTypeUnionArray","useReducer","useSaga","TooltipContent","styled","span","themeColor","headTitle","arrow","interactive","disableContentWrapper","colorText","classes","popper","MAX_TOP","getAutoCompleteLoadDataFn","idPropertyName","DisplaynamePropertyName","basePredicates","expand","transformModel","useSearchOrPredicate","queryString","maxTop","orderBy","groupBy","dynamicPredicates","$orderby","uniq","$apply","$expand","undefinedIfIsEmpty","more","limit","unshift","nonSelectableOptions","ShowingFirstXRecords","maxRecordsLimit","addActionToOptions","addOption","isAction","useSidePanelState","onConfirm","onReject","useSidePanel","confirmRejected","confirmApproved","continueToOther","continueLink","cover","setCover","coverClosed","setCoverClosed","closeCover","onCloseCover","closePanel","showConfirm","openPanel","renderPageType","renderPageProps","AssetQuickSearchForm","form","showInSideBar","SearchContainer","div","borderRadius","breakpoints","up","AssetQuickSearchPopper","zIndex","drawer","modal","down","AssetQuickSearchPaper","box_shadow_s","SearchList","RecentList","Div100","Div50","QuickSearchSection","QuickSearchSectionTitle","QuickSearchSearchesItems","QuickSearchRecentItems","QuickSearchEmptySection","QuickSearchEmptyContent","QuickSearchEmptyBody","QuickSearchSeeAll","QuickSearchMainTitleSection","QuickSearchAllInstrumentsSection","MenuSearchEmptyContent","SecondaryContent","ApprovalRequiredContent","isNumber","onlyStringReducer","nums","enumStringKeys","reduce","enumToDescriptedArray","enumeration","Number","description","tryGetName","tFunction","GetTFunction","i18n","isInitialized","getFixedT","ns","defaultNS","toEntityEnumArray","prefixKey","OriginalName","getSingleEnumEntityById","GetOptionsFilterFunction","items","customSearch","enumToArray","CoverRoot","CoverWrapper","stopPropagation","Dialog","maxWidth","coverShortRoot","coverExpandedRoot","hideBackdrop","scroll","disableAutoFocus","LinearProgress","visible","TitleRoot","paddingTop","display","flexDirection","alignItems","width","gap","justifyContent","alignSelf","padding","spacing","position","top","flex","backgroundColor","Head","closable","pageName","titlePage","titlePageLoading","pageLink","titleTooltip","disableExpandToggle","expandPanel","subTitlePage","leftTopActions","rightTopActions","showProcessing","useSwithActions","switchState","rightTopActionsLength","rightActionsLoading","actionsLength","SkeletonIfLoading","ShowLess","TitlePage","buttonsLenth","tooltip","Skeleton","height","ReactActions","ot","ind","keepOpen","SwitchActions","getProps","Close","ShortTitleRoot","ShortHead","toPageLink","rightTopActionsAsMenu","useShortView","hideMenu","topIconsLength","absolutePageLink","toExpandPanel","CloseSidePanel","TopButtonsContainer","ButtonsPanel","leftActions","rightActions","leftActionsMaxLength","MoreOptionsMobile","iconVariant","paddingInline","TopButtonsPanel","maxLeftTopButtonsLength","leftActionsLoading","getRandomWidth","Math","random","toFixed","ButtonsSkeleton","FormSkeleton","fullPage","PageWrapperRoot","minWidth","overflow","overflowY","boxShadow","marginBottom","bookitShadows","shadowBorderTop","flexShrink","flexGrow","PageWrapper","confirm","useSwitchActions","topProcessing","hideTitleBar","isCoverOpen","collapsedBar","showGroups","isCovered","isCoverClosed","setIsCoverClosed","covered","baseRootUsePanelHeight","baseRootUsePanelShortHeight","baseRootHeight","subBarExpanded","baseNavigationHeight","contentRoot","contentMobRoot","boldS","fontFamily","fontSize","fontStyle","lineHeight","fontWeight","letterSpacing","bodyS","tipsRegular","inputLabelM","inputLabelXS","inputValueS","buttonM","buttonS","bookitTypography","h1","h2","h3","h4","subtitle1","subtitle2","boldL","boldM","bodyL","bodyM","captionBold","captionRegular","textTransform","tipsBold","inputValueM","effect","EntityNumberSchema","Yup","ensure","EntityStringSchema","CheckEntityShema","defined","checked","referencesSchema","of","inventoryBatchesSchema","ServiceGroupEntitySchema","ServiceGroupId","ServiceTypeId","Active","HideProjects","IntQuantityOnly","UnitTypeID","nullable","UnitTypeName","AllowToUser","Inventory","DefaultQuantity","notRequired","ReservationOverlappingInventory","IsAdmin","AllowedBudgets","StaffOnly","BudgetsTurnedOn","NotLessThanZero","TrackInventory","InventoryBatchesEnabled","InventoryBatches","RelatedReferences","BudgetEntitySechema","BudgetExperimentEntitySechema","InstituteProjectEntitySechema","PaymentMethodEntitySchema","UserEntitySchema","OnlineServiceEntitySchema","OfflineServiceTypeEntitySchema","FeeTypeEntitySchema","UserGroupEntitySchema","ServiceTypeSchema","FormTextField","useField","meta","minInputWidth","textBoxWidth","createSliceOriginal","useAsyncExtendedState","useState","setState","useMemo","nextState","initialNextState","mounted","partialState","initialExtendState","offlineServiceState","selectProcessing","selectInitConsumablesProcessing","consumablesProcessing","selectService","detailsState","selectServiceHasError","hasErrors","selectServiceCompleted","completed","selectConnectedInitState","connectedDataState","selectServiceChangeState","serviceChangeResultState","selectServiceChangeStateLoading","serviceChangeStateLoading","selectFieldHandler","valueHandler","selectCreditState","creditState","selectCredit","selectCreditProcessing","selectCreditCompleted","selectHasCharges","hasCharges","selectConsumablesState","consumablesState","selectSavedReservationService","savedReservationService","selectConsumablesData","selectConsumablesHasErrors","selectConsumablesCompleted","selectConsumablesValueHandler","consumablesValueHandler","selectSelectedServiceType","selectedServiceTypes","selectEditCreatableService","editCreatableService","selectBarcodeScanned","barcodeScanned","selectRefreshConsumableServices","refeshOfflineServices","selectStockRenewalsState","stockRenewalState","selectStockRenewalProcessing","selectStockRenewalData","selectStockRenewalHasErrors","selectStockRenewalCompleted","selectStockRenewalValueHandler","stockRenewalValueHandler","selectRenewStockState","renewStockState","selectRenewStockProcessing","selectRenewStockData","selectRenewStockHasErrors","selectRenewStockCompleted","selectRenewStockValueHandler","renewStockValueHandler","selectIsEdit","isEdit","selectInventoryBatchState","inventoryBatchState","selectInventoryBatchProcessing","selectInventoryBatchData","selectInventoryBatchHasErrors","selectInventoryBatchCompleted","selectInventoryBatchValueHandler","inventoryBatchValueHandler","selectInventoryBatchIsEdit","batchIsEdit","selectInventoryBatchEditable","inventoryBatchEditable","selectCreatableService","getCreatableService","selectChargableServices","chargableServices","SnackBarActionType","SnackBarMessageType","removeHtml","tryParseWithoutNaN","tryParse","stringSplit","tryParseFloat","tryParseBool","isNumericPositive","test","parseFirstLastName","input","fullName","lastName","secondLastName","nameTokens","TopActionButton","customIcon","noChangeOnMobile","isIconButton","starticon","endicon","tabIndex","focusable","ColumnTypesArray","ServiceRequestTableColumn","columnDto","isAdmin","IsColumn","Options","ColumnType","isRequired","Label","Index","Required","ParentId","SizeLimit","Description","DisplayType","CopyPrevValues","CustomRoles","UserSelectionType","FixedRoles","Parent","Children","isColumnRequired","assertExhaustive","createOptions","parentFieldName","getParentFieldName","parent","getFieldName","columnId","ServiceRequestTableColumnsCollection","columnsData","VisibleToAdminOnly","lanesEnabled","columnsObj","columns","column","keyBy","AssignParent","requestSamples","selectRequestSamples","selectServiceRequestStatuses","ServiceRequestStatuses","selectServiceRequestRowStatues","ServiceRequestRowStatuses","selectSubmitting","submitting","selectServiceRequestStatusesByInternalId","serviceRequestInternalStatus","InternalStatusId","selectServiceRequestId","serviceRequestId","selectRequestDetails","RequestDetails","selectCommentIsInternal","CommentIsInternal","selectRequestDetailsData","selectServiceRequestCustomForm","FormValues","selectServiceRequestCustomTable","Rows","selectServiceRequestFormData","formValues","rows","selectRequestDetailsFieldsState","fieldsState","selectServiceRequestDetailsFieldState","Service","selectCreatedFor","CreatedFor","selectIsServiceRequestAdmin","serviceRequestDetails","isInvoiced","InvoiceId","none","isOwner","isEditable","Administrators","MilestonesAddonsType","IsAdminOf","ServiceId","Sample","internalStatusId","Status","selectSamplesTableState","SamplesTableState","selectSamplesData","RequestSamples","selectImportState","ImportState","selectSelectedSamples","SamplesSelected","selectCustomForm","CustomForm","selectCustomFormFields","FormFields","selectServiceRequestCustomFormColumns","SampleManagementTables","customForm","LanesEnabled","selectServiceRequestCustomFormFields","selectServiceRequestMilestones","Milestones","selectServiceRequestMilestoneProcessing","milestoneProcessing","selectServiceRequestMilestonesLoading","milestonesLoading","selectLastInsertedMilestoneId","lastInsertedMilestoneId","selectServiceRequestSidePanel","SidePanel","selectServiceRequestRows","ServiceRequestRows","fromDtoValue","formValueDto","tryFormatIso","DisplayValue","selectServiceRequestRowInsertStatus","createServiceRequestRowStatus","reservation","selectReservationState","selectReservation","selectReservationProcessing","selectReservationHasError","selectReservationCompleted","selectReservationData","selectReservationSettings","reservationSettingsState","selectEquipmentsSettings","equipmentsSettingsState","selectConfirmAssistedReservations","confirmAssistedReservations","selectUserTrainingData","trainingsData","selectRequestedValueFor","requestedValueFor","selectEquipmentChangeState","requestedValue","equipmentChangeResultState","selectEquipmentChangeCompleted","isChangeCompleted","selectAsyncChangeLoading","asyncChangeLoading","selectTransferState","transferState","selectTransferProcessing","transferProcessing","selectTransferStepCompleted","transferStepCompleted","selectTransferToUser","User","selectTransferReservation","ReservtionId","selectTransferWaitingApproval","WaitingTransferApproval","selectCalculateCreditState","caluclateCreditState","selectShowConfirmPricing","showConfirmPricing","selectSavedOfflineServices","savedOfflineServices","selectRemovedOfflineServices","removedOfflineServices","selectRefreshOfflineServices","refeshOfflineService","selectTerminateState","terminationState","selectTerminateProcessing","terminatProcessing","selectTerminateCompleted","terminateCompleted","selectCloneReservations","cloneReservation","selectReservationDtoState","reservationDtoState","selectSavedForLater","SaveForLater","selectSubmitCalculateCredit","submitCalculateCredit","selectByApprovalErrors","ByApprovalErrors","selectUserCanRequestApproval","userCanRequestApproval","selectMaxReservationComplexityValidationResult","MaxReservationComplexityValidationResult","selectRefreshWorkOrderLink","refreshWorkOrderLink","selectMultipleProcessing","multipleProcessing","selectMultiPanelClosed","multiPanelClosed","selectReservationNotFound","notFound","selectUserRequestedBackground","userRequestedBackground","useSystemDate","newDate","useCallback","LinkBehavior","Link","ExternalLinkRoot","useInlineUrl","rest","history","useHistory","emptyLink","localPath","publicNS","handleLocalPathClick","showIcon","CopyURL","clipboardWrite","URLCopied","clipboardWriteEnabled","navigator","permissions","clipboard","writeText","copyResult","FormikField","fullRow","hide","minRow","FormikSection","fields","order","avoidRenderSection","titleSection","FormListener","onFormChange","useFormikContext","setFieldValue","isValid","dirty","setFieldTouched","validateField","setFieldError","validate","SubmittingHandler","resetSubmitting","setSubmitting","FieldHandler","run","fieldKey","fieldValue","shouldValidate","resetFieldState","additionalFunc","useFieldChangeHandler","changeField","FieldValue","setValue","resetValueKey","getFieldMeta","BaseOptionsPicker","getOptions","createFilterOptions","ignoreAccents","ignoreCase","stringify","DialogConfirm","confirmButtonLabel","cancelButtonLabel","onCancel","subtitle","confirmTitle","managedState","rtl","paperClassName","handleClose","handleConfirm","btnActions","Confirm","Cancel","isopen","PaperProps","ExportTypes","RepetitiveOptions","RepeatPeriod","RepeatMonthlyBy","GetRepetitiveOptions","dayName","getDayText","weekName","WorkWeekDays","getWeekNumberOfMonth","weekDays","getLongDaysArray","RepeatWeeklyOn","RepeatMonthlyOn","RepeatEveryWeekDay","toEntity","otherData","RequiredTypes","DisplayTypes","formFileSchema","Size","PostedFile","formValueSchema","FormFieldId","Readonly","SourceValueId","AlertId","AlertTypeId","CustomFormId","CustomFormName","RequestId","ReservationId","ExperimentItemId","BudgetExperimentId","ServiceGroupUserId","ParseFormFieldEnums","formFields","ff","DeserializeValue","formField","formValue","Type","ddlValue","getDropDownInitValue","SerializeValue","objects","members","object","member","instanceOfIFormValueType","fileValue","getSerializableIsRequired","getFieldSchema","fileSize","notAllowedExt","parentDepValue","parentReqValue","DependencyFieldId","RequiredFieldToCompare","when","is","context","pDepVal","pReqVal","exclusive","min","files","lookup","extension","blockedTypes","allowedTypes","allowedExt","last","parentDepVal","parentReqVal","getCustomFormDateSchema","email","max","singleResult","multipleResult","depValue","reqValue","RequiredValueToCompare","comparedValue","getParentValue","isDependencyVisible","DependencyValue","valueTocompare","parentValue","DependencyMultiple","DependencyVisibility","vp","pv","vf","hasOwnProperty","getFieldsVisibilities","visibleOnCompletion","visibilities","visibleOnComletion","isVisible","useCustomFormSchema","getCustomFormInitialValues","startQuiz","initialValues","orderFields","next","serializeValues","serialized","serializeCustomFormRowValue","getCustomFormDisplayValue","shortDateFormat","getCustomFormColumnSchema","baseSchema","integer","getCustomFormColumnBaseSchema","getPeriodTypesEntity","valueType","getPeriods","getPeriodTypesEntityById","noExpandURlTypes","fullActiveUrl","adminsUrl","relevantUrl","budgetExperimentsUrl","initUserData","urlType","$skip","initUrl","UserPicker","servicegroups","withGroupFilter","selectArray","AllUsers","ServicesFilter","services","budgetExperimentEnabled","userGroupId","budgetId","defaultBudgetEnabled","isDefaultSelected","HideProject","AdminServicesFilter","serviceItems","groupIds","Set","groupsF","servF","initAssigneeAdminUsers","AssignedToCoreAdmin","AssignedToInstrumentAdmin","AssignedToLabTech","reject","FormLabelText","html","StyledInfo","marginLeft","getSingleInvoiceFundingType","InvoiceFundingType","initFundingTypeData","initval","FundingTypeIdPicker","Progress","inProgress","usePromise","asyncFunction","isCancelled","useRef","isUnmounted","callAsyncFunction","promise","cancel","fulfillPromise","reset","stateWithReset","useEffect","shortDateTimeFormat","DatesRange","fromPreset","st","et","y","AssetLink","openAsset","useOpenAssetPopUp","link","useAssetLinkUrl","getUrl","serviceId","serviceType","ShowAssetSidePanel","onLinkClick","pick","openPanelWithCover","OpenAssetsInSidePanel","GetBoolean","assetPopupProps","identifier","AssetDetails","OpenAssetPrimaryAction","row","toggle","getAssetLinkIdentifier","original","getAssetIdentifier","doInit","doLoadRequestDetails","doRefreshRequestDetails","doLoadFormValues","doSaveFormValue","doLoadSamples","doLoadServiceRequestRows","doLoadMilestones","doCreateSample","doUpdateServiceRequestSampleField","doUpdateServiceRequestRowValue","doImport","doDeleteSamples","doPatchRequestDetails","doUpdateStatus","doUpdateServiceRequestRowStatus","doUpdateBudget","doUpdateGradient","doUpdateOverheadMinutes","doUpdatePurchaseOrder","doUpdateExternalInternalNumber","doUpdateFundingType","doSubmit","putErrorMessages","doCancelServiceRequest","doInsertMilestoneCharge","doInsertMilestoneCharges","doDeleteServiceRequestMilestoneCharge","doUpdateMilestoneCharge","doInsertMilestone","doDeleteMilestone","doUpdateMilestone","doCloseSidePanel","doCloneServiceRequest","doCreateServiceRequestRow","doLoadServiceRequestRowStatuses","requestSamplesSaga","statuses","initServiceRequestStatuses_Success","SampleManagementTablesEnabled","requestDetails","loadRequestDetails_Success","loadFormValues","pageIndex","pageSize","RequestMilestones","requestMilestones","loadMilestones","getServiceRequestBlockedByInvoicedMessage","messageKey","loadRequestDetails_Error","refreshRequestDetails_Success","valuesObject","loadFormValues_Success","isAxiosError","Message","currentTableState","filters","sortBy","desc","TableFilterBuilder","customFilters","globalFilter","searchColumns","loadSamples_Success","loadSamples_Error","AnErrorOccurred","Forbidden","prepareServiceRequestRowModel","loadServiceRequestRows_Success","loadMilestones_Success","createSample_Success","createSample_Error","updateServiceRequestSampleField_Success","updateServiceRequestSampleField_Error","msg","innererror","serviceRequestValue","RowId","ColumnId","JSON","results","errorMessages","updateServiceRequestRowValue_Error","updateServiceRequestRowValue_Success","uploadFile","AllRowsImportedSuccessfully","OneOrMoreErrorOccurredDuringImportPleaseReviewOutputFile","import_Success","import_Error","deleteSamples","errors","successCount","tableState","loadSamples","XRecordsWereBeDeleted","patch_Success","patch_Error","axiosError","statusText","Reason","updateStatus_Success","StatusUpdatedTo","updateStatus_Error","ServiceRequestStatusUpdate_Error","serviceRequestRowId","updateServiceRequestRowStatus_Success","Budget","updateBudget_Success","BudgetUpdatedTo","refreshRequestDetails","updateBudget_Error","Gradient","updateGradient_Success","GradientUpdatedTo","updateGradient_Error","OverheadMinutes","updateOverheadMinutes_Success","OverheadTimeUpdatedTo","updateOverheadMinutes_Error","PurchaseOrder","updatePurchaseOrder_Success","PurchaseOrderUpdatedTo","updatePurchaseOrder_Error","ExternalInternalNumber","updateExternalInternalNumber_Success","ExternalInternalNumberUpdatedTo","updateExternalInternalNumber_Error","FundingTypeId","updateFundingType_Success","FundingTypeUpdatedTo","updateFundingType_Error","submitStep_success","StepHasBeenSubmitted","getErrorMessages","submitStep_Error","dataErrorMessages","RequestCancelled","ServiceRequestId","ServiceRequestMilestoneId","charge","Amount","Rate","OfflineServiceType","Quantity","OfflineServiceTypeId","Remarks","UnitTypeId","UpdatedBy","Title","UnitType","Unit","insertMilestoneCharge_Success","InsertSuccess","insertMilestoneCharge_Error","insertUpdate","deleted","idx","deleteUrl","deleteMilestoneCharges_Success","updateUrl","updtResult","hasUpdates","charges","indx","insertMilestoneCharges_Success","UpdateSuccess","messages","getv2ControllerErrorMessages","insertMilestoneCharges_Error","serviceRequest","deleteMilestoneCharge_Success","DeleteSuccess","updateMilestoneCharge_Success","updateMilestoneCharge_Error","CompletionDate","Assignees","u","Charged","ServiceRequestMilestoneCharges","TargetDate","insertMilestone_Success","insertMilestone_Error","deleteMilestone_Success","requestPayload","StatusId","ServiceRequestMilestoneStatuses","updateMilestone_Success","updateMilestone_Error","ServiceRequestDetails","resetRequestDetails","isSidePanelOpen","SuccessMessages","openRequestProps","GetServiceRequestDetailsPath","dto","serviceRequestModelToDto","createServiceRequestRow_Success","ServiceRequestRow_InsertSuccess","ServiceRequestRow_InsertError","createServiceRequestRow_Error","ExceptionMessage","loadServiceRequestRowStatuses_Success","init","loadRequestDetails","insertMilestoneCharge","insertMilestoneCharges","updateMilestoneCharge","deleteMilestoneCharge","insertMilestone","updateMilestone","deleteMilestone","updateStatus","updateServiceRequestRowStatus","updateBudget","updatePurchaseOrder","updateExternalInternalNumber","updateFundingType","updateGradient","updateOverheadMinutes","submitStep","cancelServiceRequest","createSample","debounce","updateServiceRequestSampleField","updateServiceRequestRowValue","import","cloneServiceRequest","createServiceRequestRow","loadServiceRequestRows","saveFormValues","initServiceRequestStatuses_Error","milestoneChargeProcessing","merge","prev","dataLength","loadServiceRequestRows_Error","deleteServiceRequestRows","deleteServiceRequestRows_Success","milestone","remove","updCharge","toggleImport","setHasFiles","HasFiles","requestSamplesActions","useRequestSamplesSlice","FormRichTextField","hasMentions","onChangeMentions","additionalButtons","isInvoiceTemplateEditor","extendedMode","labelOnTop","helpers","RichTextField","formikValue","autofocus","controlsVisible","setControlsVisible","bookable","bookableAndnotbookable","servicesRelated","initAssetsData","byService","serviceTypes","admin","types","AssetsFilterForWorkOrder","orederType","Groups","AssetCats","AssetsFilterForCalibrationWorkOrder","selectedIds","AssetsFilterForSavedView","topServiceGroups","AssetsPicker","defaultValue","restrictByAvType","showOnlyActiveAssets","avFilter","getAvFilter","innerLoadData","selectUsageState","usageState","selectUsageStateProcessing","selectUsageDtoState","usageDtoState","selectUsageDetailsState","selectUsageHasError","selectUsageStateData","selectUsageProcessing","selectUsageCompleted","selectUsageSettings","usageSettingsState","selectUsageNotFound","selectUsageChangesState","usageChangesState","selectStopUsageProcessing","stopUsageProcessing","selectShowEndUsageDialog","showEndUsageDialog","selectCreateManually","createManully","selectUsageStarted","usageStarted","FormNumberField","noWarnOnNuN","helper","endLabel","disableTypography","PurchaseOrderOptions","ConvertDtoToConnectedModel","service","BookedBy","UserDisplayName","UserGroup","UserGroupName","BudgetID","InstituteProject","InstituteProjectId","InstituteProjectName","StartTime","ServiceDate","BudgetExperiment","BudgetExperimentName","ExternalCustomer","ExternalCustomerId","ExternalCustomerName","FundingType","Reference","ConvertInitDataToConnectedModel","BudgetId","BudgetName","ConvertModelToInsertEntity","connectedModel","ServiceTypeID","DiscountFactor","UsageId","SyncReservation","SyncUsage","Units","InventoryBatchId","InventoryBatch","InventoryBatchName","InventoryBatchAmount","ConvertModelToUpdateEntity","ConvertModelToUpdateRenewStockEntity","autoGenerateBatch","DateReceived","RenewStockInventory","AutoGenerateNewBatches","getDefaultService","Mandatory","HasCharges","getDefaultBatch","ExpirationDate","Lot","OfflineServiceTypeName","PurchaseDate","PurchasePricePerUnit","ConvertConsumablesToInsertEntity","discountFactor","remarks","savedData","InsertedAt","ServiceRate","DepartmentId","InsertedBy","Institute","InstituteId","InstituteTypeId","globalFactor","serviceFactor","ConvertConsumablesToMilestoneCharge","chargedOriginals","milestoneData","updated","serviceRequestMilestoneId","ChargeId","ConvertRenewStockToInsertEntity","ConvertInventoryBatchToEntity","doInitDetails","doInitServiceChangeStateData","doCreate","doUpdate","doSetAnyValue","doSetConsumableValue","doSetRenewalValue","doGetCredit","doGetTotalCredit","doInitConsumables","doCreateConsumables","doSetIsBarcodeScanned","doInitStockRenewal","doCreateStockRenewals","doInitRenewStock","doCreateRenewStock","doUpdateRenewStock","doInitInventoryBatch","doCreateInventoryBatch","doUpdateInventoryBatch","doSetRenewStockValue","doSetInventoryBatchValue","offlineServiceStateSaga","hasError","api","initOfflineService","uuid","WarningMessages","IsValid","getServiceType","connectedFiltersActions","extendSettingsState","Offline","saveState","initDetails_Success","editCreatable","parameters","ServiceTypes","ADGroup","Start","initServiceChangeStateData","initDetails_Error","getServiceChangeState","initServiceChangeStateData_Success","initServiceChangeStateData_Error","selectConnectedFiltersData","httpPayloads","insertOtherService","responseErrors","responseWarnings","responseSuccess","messageType","openSidepanelDetails","messageTypeProps","created","itemName","OfflineService","detailsType","OtherServiceDetails","detailsTypeProps","queryParams","initialService","saveCreatable","setReservationService","createService_Success","errormessage","createService_Error","updatedService","updateOtherService","respErrors","updateService_Success","modelState","getModelStateErrors","updateService_Error","setAnyValueSuccess","setConsumableValueSuccess","setStockRenewalValueSuccess","calculateCredit","getCredit_Success","credit","TotalCost","balance","Balance","calculateTotalCredit","getTotalCredit_Success","initData","initConsumableServices","consumableInitData","connectedData","ConnectedFiltersInit","reservationUserGroupGroupByBudgetUserGroup","ActiveUserGroup","reportFrom","initConsumables_Success","initConsumables_Error","Services","err_Quantity_required","createConsumables_Error","createConsumables_Success","insertConsumableServices","itemEndName","multiDetails","getAssetByInternalCode","serviceTypeId","Consumables","scanedBarcode","setSelectedServiceType","setBarcodeScanned","setBarcodeScanned_Success","initStockRenewalServices","initStockRenewal_Success","initStockRenewal_Error","insertStockRenewalServices","RenewStock","createStockRenewals_Success","createStockRenewals_Error","initRenewStockService","initRenewStock_Success","initRenewStock_Error","setEditCreatableService","createRenewStock_Success","preventRefreshTable","createRenewStock_Error","updateRenewStock_Success","updateRenewStock_Error","initInventoryBatch","initInventoryBatch_Success","initInventoryBatch_Error","insertInventoryBatch","initialBatch","setInventoryBatchEditable","createInventoryBatch_Success","createInventoryBatch_Error","updateInventoryBatch","updateInventoryBatch_Success","updateInventoryBatch_Error","setRenewStockValueSuccess","setInventoryBatchValueSuccess","initDetails","createService","updateService","setAnyValue","setConsumableValue","createConsumables","getCredit","getTotalCredit","initConsumables","setStockRenewalValue","setRenewStockValue","setInventoryBatchValue","initStockRenewal","createStockRenewals","initRenewStock","createRenewStock","updateRenewStock","createInventoryBatch","ConvertDtoToModel","resetDetailsState","resetValueHandler","resetServiceChangeState","getCredit_Error","resetCreditState","getTotalCredit_Error","resetTotalCreditState","resetConsumableValueHandler","updateChargableServices","extendConsumablesData","resetConsumablesState","resetSelectedServiceType","setRefreshConsumableOfflineServices","resetStockRenewalValueHandler","resetStockRenewalState","resetRenewStockValueHandler","ConvertRenewStockToModel","resetRenewStockState","resetInventoryBatchValueHandler","resetInventoryBatchState","offlineServiceStateActions","useOfflineServiceStateSlice","CustomRolePermissionLevel","CustomRoleAllowePages","LocaleId","TimeZoneId","UserGroups","AdminEquipments","InstrumentEventsGroups","CreatableGroups","HasRegisterableServiceGroups","FormatedName","HasNotifications","HasOptOutCoreSelection","CalendarType","RequireUserGroupCoordApproval","HasSignedTermsOfUse","IsActiveDirectory","JoinStatus","CustomRoleUrls","HasAdminGroupPermissions","HasLabTechGroupPermissions","HasAdminServicePermissions","HasLabTechServicePermissions","UserId","pages","level","CustomRole","page","rootedPage","serviceGroupId","GroupAdministrators","IsLabTech","RepAdmin","LabTech","LoanDeskManager","RoomOnly","HeadOfLab","FinAdmin","InvoicesReader","EquipmentAdministrator","CreateNewAssetsAdmin","InventoryAdmin","g","IsAllAdminGroupPermissions","IsAllServicesAdmin","IsAllLabTechGroupPermissions","IsAllServicesLabTech","CalendarOnly","KioskAdmin","isInRole","role","baseRoles","odjRoles","variantComponent","standard","StandardInput","filled","FilledInput","outlined","FormHelperTextProps","hiddenLabel","InputLabelProps","inputRef","focused","multiline","rowsMax","rowsMin","SelectProps","disableUnderline","inputMore","shrink","notched","displayRequired","native","requiredPlaseholder","helperTextId","inputLabelId","InputComponent","sizeClass","InputElement","aria-describedby","noLabel","LabelElement","htmlFor","hasStartIcon","startAdornment","hasEndIcon","withLabel","labelId","CommentReferenceTypes","OtherServicesApi","otherService","otherServices","rowId","deleteService","deleteCustom","deleteReservationServices","calculateCreditModel","getReservationOfflineServices","reservationId","repeat","getUsageOfflineServices","usageId","deleteInventoryBatch","loadOfflineServiceData","useGlobalSettingsHook","adminRoles","InstituteCoord","privateBudgetsRoles","userRoles","reservationRestricted","setReservationRestricted","budgetModuleEnabled","setBudgetModuleEnabled","priceSheetPricing","setPriceSheetPricing","purchaseOrderLengthSetting","setPurchaseOrderLengthSetting","hideRepetitiveReservations","setHideRepetitiveReservations","billingEnabled","setBillingEnabled","userIsMainAdmin","setUserIsMainAdmin","userSettings","userServiceGroupCommentsEnabled","setUserServiceGroupCommentsEnabled","userLabTechCommentsEnabled","setUserLabTechCommentsEnabled","allowOngoingReservationModificationEnabled","setAllowOngoingReservationModificationEnabled","doNotAllowReservationUserChangeByStaff","setDoNotAllowReservationUserChangeByStaff","instituteProjectsEnabled","setInstituteProjectsEnabled","reservationTerminationEnabled","setReservationTerminationEnabled","displayEditUserDetails","setDisplayEditUserDetails","multipleAdGroupsEnabled","setMultipleAdGroupsEnabled","draftReservationsEnabled","setDraftReservationsEnabled","MandatoryOfflineServicesOnTrainingSignUps","setMandatoryOfflineServicesOnTrainingSignUps","crossInstrumentTrainingEnabled","setCrossInstrumentTrainingEnabled","userAndGroupPermissionsEnabled","setUserAndGroupPermissionsEnabled","serviceGroupAdminsCanManageAdUsers","setServiceGroupAdminsCanManageAdUsers","openUserProfileOnSidePanel","setOpenUserProfileOnSidePanel","serviceGroupAdminsCanManageAllUsers","setServiceGroupAdminsCanManageAllUsers","tutoringModulesEnabled","setTutoringModulesEnabled","tutoringEnabled","setTutoringEnabled","accServicesEnabled","setAccServicesEnabled","allowUsersToViewTheirCharges","setAllowUsersToViewTheirCharges","showReferenceFieldInReservationDetails","setShowReferenceFieldInReservationDetails","offlineServiceWithReservation","setOfflineServiceWithReservation","multipleInstrumentsEnabled","setMultipleInstrumentsEnabled","trainingSessionEnabled","setTrainingSessionEnabled","reservationFormEnabled","setReservationFormEnabled","resMultipleFormsEnabled","setResMultipleFormsEnabled","assistedReservationsEnabled","setAssistedReservationsEnabled","showCalcPriceOnOfflineService","setShowCalcPriceOnOfflineService","showCalculatePrice","setShowCalculatePrice","allowPartialProjectCharges","setAllowPartialProjectCharges","allowPartialSingleProjectCharges","setAllowPartialSingleProjectCharges","budgetExperimentModuleEnabled","setBudgetExperimentModuleEnabled","fundingTypeBudgetEnabled","setFundingTypeBudgetEnabled","purchaseOrderBudgetEnabled","setPurchaseOrderBudgetEnabled","isBudgetsWithoutUserGroup","setIsBudgetsWithoutUserGroup","requestReservationEnabled","setRequestReservationEnabled","budgetLimitedByUsers","setIsBudgetLimitedByUsers","hideNonDefaultBudgets","setHideNonDefaultBudgets","assemblyPartsEnabled","setAssemblyPartsEnabled","userDefaultBudgetEnabled","setUserDefaultBudgetEnabled","showDefaultUserGroupOnUserProfileEnabled","setShowDefaultUserGroupOnUserProfileEnabled","setDefaultBudgetEnabled","userGroupReservationRestricted","setUserGroupReservationRestricted","setReservationUserGroupGroupByBudgetUserGroup","onlyOwnUserGroupsAllowed","setOnlyOwnUserGroupsAllowed","allowAddRemoveOnEditReservation","setAllowAddRemoveOnEditReservation","allowToRemoveFromMultipleReservation","setAllowToRemoveFromMultipleReservation","hideReservationCollaborators","setHideReservationCollaborators","isConfidentialBudgetsEnabled","setIsConfidentialBudgetsEnabled","allowWorkflowBookingEnabled","setAllowWorkflowBookingEnabled","modifyReservationNameForUsers","setModifyReservationNameForUsers","loanDeskEnabled","setLoanDeskEnabled","enableCoreAffilationManagment","setEnableCoreAffilationManagment","loadCompleted","setLoadCompleted","maximumEmailRecipients","setMaximumEmailRecipients","projectsAreOptional","setProjectsAreOptional","BudgetFields","Confidential","MultipleInstruments_AddRemoveOnEditReservation","AllowToRemoveFromMultipleReservation","HideTrainingSessionsSettings","ModifyReservationNameForUsers","InstituteProjects","ProjectsAreOptional","multipleInstrumentsSetting","GetNullableByKey","MultipleInstrumentReservations","NotAllowed","TerminateReservation","AccServices","AllowOngoingReservationModification","DoNotAllowReservationUserChangeByStaff","UserServiceGroupComments","UserLabTechComments","HideReferenceFieldInReservationDetails","AllowUsersToViewCharges","HideAssistedReservationsSettings","BudgetLimited_ByUsers","Budgets","PriceSheetPricing","Billing","PurchaseOrderLengthSetting","intValue","OfflineServiceWithReservation","resRestrictedSetting","UserReservationsRestricted","UserOwnRestricted","resUserGroupRestrictedSetting","UserGroupRestricted","UserPermission","GroupPermissions","ServiceGroupAdminsCanManageUsers","ServiceGroupAdminsManageUsersEnum","ServiceGroupAdminsCanManageUsers_CanAssignOnlySSOusers","ServiceGroupAdminsCanManageUsers_CanAssignAnyUser","EnableServiceGroupAffilationManagment","ReservationUserGroupGroupByBudgetUserGroup","CrossInstrumentTraining","ShowDefaultBudgetOnUserProfile","ShowDefaultUserGroupOnUserProfile","DisplayEditUserDetails","OpenUserProfileOnSidePanel","HideCalcPriceOnOfflineService","Invoices","Default","PurchaseOrderOption","Tutoring","TutoringHours","EquipmentAssemblies","HideNonDefaultBudgets","SGACreateProjects","BudgetExperiments","DisableBillingEvents","AllowPartialMultipleProjectCharges","AllowPartialSingleProjectCharges","ReservationsCustomForm","MultipleCustomForms","HideReservationCollaborators","ServiceRequestReservations","MultipleAdGroups","MaximumEmailRecipients","HideRepetitiveReservations","billingModuleEnabled","resCustomFormEnabled","AssemblyPartsEnabled","confidentialBudgetsEnabled","ShowDefaultUserGroupOnUserProfileEnabled","ServiceRequestReservationEnabled","LoanDeskEnabled","ServiceGroupAdminsCanManageAdUsers","ServiceGroupAdminsCanManageAllUsers","EnableCoreAffilationManagment","UserServiceGroupCommentsEnabled","UserLabTechCommentsEnabled","MultipleAdGroupsEnabled","TextControlField","startIconComponent","endIconComponent","SamplesList","SamplesListTableState","EditMode","ShowRunDialog","ImportStarted","ImportFinished","Completion","loadSamplesList","export","loadSamplesList_Success","loadSamplesList_Error","setSelectedSamples","loadAllFilteredSamples","loadAllFilteredSamples_Success","updateField","updateField_Success","updateField_Error","loadRunDetqails","loadRunDetqails_Success","RunDetails","runSelectedSamples","SelectedRunType","runType","runSelectedSamples_Success","updateRunSampleValue","Samples","rt","RUN_TYPES","k","RunType","prop","payloadWithoutId","TMT_Set","setShowRunDialog","setRunType","StandardRun","MassSpec","Labeling","setShowImportDialog","readImportFile","readImportFile_Success","record","sample","TargetPosition","TargetPlateId","TargetTubeLabel","TargetSampleType","TargetConcentration","TargetVolume","completeRun","aciton","completeRun_Success","completeRun_Error","updateRun","updateRun_Success","Instrument","SecondaryInstrument","ACQUISITION_TYPE","updateRun_Error","exportRun","toggleEditMode","samplesListActions","useSamplesListSlice","samplesListSaga","hasDeps","SortByComparer","n","ServiceGroupsComparer","REQUEST_CANCELLED_MESSAGE","defaultRowIdAccessor","BasicTable","additionalColumns","getRowId","useExport","rowActions","inlineRowActions","pageActions","screenName","selectedRowsActions","filterOpen","customParams","useImportLink","importLink","importHandler","needRefresh","ServiceGroupsOptional","topAlertMessage","onPageSizeChanged","onPageIndexChanged","savedListSettings","floatingTabSettings","useExportForImport","customEmptyTableSettings","exportForImportFilterKey","printing","onTableCountChange","useCustomSearch","descriptionKey","initComplete","dataState","setDataState","extendDataState","doRefresh","setTableState","handleChangeState","serviceGroupsCompared","useCustomCompareMemo","columnsCompared","useConfigurableColumns","configurableColumns","handleConfigurableColumns","configCompleted","refreshConfigurableColumns","getDisplayColumns","basecolumns","calculateColumnAccessors","columnAccessors","accessor","getAllAdditionalColumns","flatMap","deps","customFilter","useMemoFilters","appliedFilters","handleFilterChange","onFilterChange","fetchData","oDataParams","buildParams","getUrlAndParams","globalFilterValue","newState","controlledPageCount","ceil","titleKey","allAdditionalColumnsTable","columnAccessorsTable","cancelTokenSource","source","columnsConfig","isFetchReady","token","handleExportClick","TryGetExportColumns","exportColumnAccessors","tableParams","exporturl","getAllFilteredRows","allRowsSelected","setAllRowsSelected","toggleAllRowsSelected","handleRefresh","allAdditionalColumns","reloadConfigurableColumns","useRowSelect","selectedRowIds","refreshFromState","TableSkeleton","isCards","useCardsByDefault","compactTable","ControlledTable","compact","onChangeState","onExport","pageCount","availableFilters","initialPageSize","onDownloadTemplate","onSelectedRowsChange","subHeader","onRefresh","onConfigurableColumns","useGlobalFilter","imageSrcKey","allowCards","primaryAction","onModeChange","withToolBar","tabSectionSettings","isRowSelectable","onSelectedChange","hideMenuOnMobile","viewCardsCheck","cardSize","cardPosition","useConfigurable","customToolbarSettings","preventInnerClicks","getAllFilteredRowsCallback","hideFilters","baseTableActionsOnToolbar","screenNameVariant","customExpandMenu","customScreenName","showGlobalSearchIconOnToolbar","toggleGlobalSearchIcon","getSavedDefaultFilters","importMenuItems","isContentEditable","tablePaddingVariant","minCardHeight","tableContainerAsSection","searchText","q","columnAccessorsString","allAdditionalColumnsString","useAsyncGetWithEffect","load","defaultVal","setBusy","setVal","prefix","template","levelFormatter","nameFormatter","timestampFormatter","toISOString","globalThis","logLevel","BooleanRender","anonimusUrls","calendarPageDefaultPath","parseBarcodeURL","assetScanned","regExpTemplate","AssetBarcodeRelativeUrlTemplate","toCompareUrl","internalCode","regObject","RegExp","exec","groups","resUrl","parseAssetUrl","subLocationScanned","SubLocationBarcodeRelativeUrlTemplate","subLocationId","locationId","RoomId","locationid","sublocationid","SubLocation","LocationId","SubLocationId","parseSubLocationUrl","locationScanned","LocationBarcodeRelativeUrlTemplate","Location","parseLocationUrl","roomScanned","RoomBarcodeRelativeUrlTemplate","Room","parseRoomUrl","external","OnlineServiceType","UserNameFormatted","twoRows","UserFormatResult","UserNameFormated","UserProfileLink","openProfile","useOpenUserProfilePopUp","useUserProfileLinkUrl","un","userName","allowedToView","useUserPermissions","displayName","openAsSidePanel","userPopupProps","AccessibleMuiLink","linkId","tooltipOpen","setTooltipOpen","handleFocus","handleBlur","disableFocusListener","disableHoverListener","disableTouchListener","ctrlKey","preventDefault","onKeyDown","onMouseEnter","onMouseLeave","DRAWER_WIDTH","DRAWER_WIDTH_SHORT","DRAWER_MOBILE_WIDTH","SIDE_PANEL_WIDTH","COVER_WIDTH","MAX_POPER_WIDTH","MAX_COVER_EXPANDED_WIDTH","ArticleStatus","selectConnectedFilters","connectedFilters","selectConnectedFieldHandler","connectedValueHandler","selectConnectedSettings","connectedSettings","allBudgetsUrl","initBudgetData","queryUrl","BudgetPicker","BudgetByUserGroupFilter","loadBudgets","restrictedBudgetFilter","startTime","endTime","fundingType","usrFilter","memberTimeFilter","fundingTypeId","startFilter","endFilter","groupFilter","servFilter","deffFilter","RenderTypes","AllowedToRender","renderType","asset","AllowedByRolePermissions","AvailableByServiceType","AvailableByAvailabilityType","Availability","AddToList","AddWorkOrder","OpenCalendar","OpenTimeline","OpenWorkOrder","OpenWorkOrders","NewReservation","IsReadOnlyUser","DownWorkOrder","BringBackUp","ExportQRCodes","PrintAssetLabels","UpgradeLocalApp","CloneEquipments","DownloadImages","ExportForImport","serType","Online","avType","SpanPaddingInline8","FlexColumn","FlexColumn16","FlexRow","FlexRow8","StyledStatusLabel","StyledLimitLabel","ErrorsPageWrapper","ReadOnlyDetailsRoot","ReadOnlyDetailsColumns","ReadOnlyDetailsRow","IconsContainer","DropDown","onMouseDown","menuChildren","menuProps","addChevron","onHandleClose","iconButton","disablePortal","anchorEl","setAnchorEl","marginThreshold","anchorOrigin","handleOpen","currentTarget","aria-controls","aria-haspopup","getContentAnchorEl","MenuListProps","dense","container","vertical","horizontal","transformOrigin","getAssetImageThumbSrc","imageExist","defaultImage","getDefaultImage","getDefaultImgSize","getAssetImageSrc","ReservationsApi","initReservation","insertReservation","updateReservation","getReservation","getReservationUserTrainingEquipments","hasAnyFirstReservations","getEquipmentsChangeState","getReservationValidationState","getReservationSlots","validateDuration","validatePrerequisite","validatePermissions","changeStatus","getEquipmentsData","createTraining","reservations","HasFutureReservationsHttp","equipmentNames","transferReservation","sendTransferNotification","sendCancelTransferNotification","cancelTransferReservation","sendTerminateNotification","ReservationIds","hasUsage","resId","eqid","eqId","endUsage","sids","quantity","userCanBookEquipment","equipmentid","updateMultiReservations","initAssetRangeData","initUnitTypeData","assetRangeCustomFilter","filterBySelectedUnit","SourceUnits","sourceFilter","unit","rate","ConversionRate","TargetId","TargetUnits","targetFilter","assetRangeDisplay","AssetRangeFilter","customData","stateValue","handleOnChange","PleaseSelectRangeUnitType","create","bulckCreate","update","visibleColumns","get_Success","get_Error","getPlateTypes_Success","plateTypes","showBulkCreate","IsRack","SamplePlateType","hideBulkCreate","bulkCreate","bulkCreate_SetProgress","progress","bulkCreate_Success","create_Error","bulkCreate_Error","edit","LocationName","RoomName","SamplePlateTypeId","SamplePlateTypeName","ServiceGroupName","delete_Success","delete_Error","deactivatePlates","deactivatePlates_Success","deactivatePlates_Error","deletePlates","deletePlates_Success","deletePlates_Error","samplePlatesActions","useSamplePlatesSlice","samplePlatesSaga","actionsSamplePlates","SelectedRowsActionIconButton","snackBarMessageType","confirmBody","variantButton","updateDialogVariant","validConfirm","busy","setShowConfirm","handleAction","resp","Notification","persist","showLinkMessage","linkUrl","linkText","respm","errmsg","sccmsg","wrnmsg","useMobileOrientation","orientation","isLandscape","isPortrait","innerWidth","md","point","sm","lg","xl","currentPoint","pointWidth","updateFormValues","coming","orn","o","validateMinEnd","validateAccServices","allEquipments","allAcc","acc","EquipmentId","getWorkFlowName","getPrintPDFDefaultSections","serviceRequestEnabled","hasCustomForm","sections","ReservationDetails","ReservationConsumables","CustomFormDetails","AssociatedServiceRequestDetails","toURLSearchParams","withEmptyValues","queryStringSerializer","serializer","useFilters","savedFilterKey","GetFiltersDefinition","getDefaultFilter","reservedQueryStringParameterNames","getRequiredFilter","getSelectedViewFilter","enableSavedLists","getPartialResults","useSyncSearch","useSavedViewSlice","savedViewActions","useLocation","showFiltersFn","visibleFiltersFilter","rowsKey","useCardsKey","useProfileSetting","profileSettingKey","savedUrl","savedValue","updateSavedFilterValue","updateValue","parseProfileUrl","savedFilterValue","filterChange","setFilterChange","defaultSearch","getPresetFilter","isDefault","requiredSearch","savedViewId","SAVEDVIEW_SEARCH_KEY","selectSavedView","localizedFilters","getLocalizedFilters","visibleFilters","mapDefaultFilters","urlKey","depFilters","getDependencyFilters","setAppliedFilters","initFilterData","routerActions","defaultRows","setPageSize","defaultCardsMode","setCardsMode","removeEmptyFilters","newParams","savedFilter","allFilters","setPageIndex","cardsMode","syncSearch","currentSearch","getNextFilter","originalSearch","savedListSerializedKey","selectMyList","currentSearchString","setFilterValueCallback","getFilterValueCallback","getFilterValue","handelPageSizeChange","handelPageIndexChange","handleCardsModeChange","isCardsMode","defaultFilters","setDefaultFilters","allfilters","setFilterValue","notNullable","notDefault","withSavedHistoryT","Component","getIgnoredSearch","ignore","CustMenuItem","MenuItem","StyledMenuItem","StyledRoot","ActionsRoot","HoverActions","popupState","usePopupState","popupId","buttons","anchorRef","bindHover","bindMenu","close","ClickableActions","bindFocus","Menu","closeAfterTransition","hoverMenu","nonEmptyItems","PriceSheetBy","BudgetType","AutomaticAssetNamings","SideBarQuickActionsEnum","RowStatusVisibility","RowStatusEditablity","FormBookitDatePicker","disableFuture","disablePast","inputVariant","labelFunc","clearable","fullScreen","truncateTime","onError","getParsableDate","setError","minDate","maxDate","OfflineServiceTypePicker","UsageRelatedFilter","Ids","excludedIds","ReservationsRelatedFilter","equipmentGroups","optionalServiceTypes","hideProject","allServicesAllowed","budgetServiceGroupServicesAllowed","byAdmin","byUser","UsageDetailsRelatedFilter","equipmentGroupId","OfflineServiceRelatedFilter","relatedGroups","RenewStockRelatedFilter","InventoryBatchRelatedFilter","serviceRequestsKanban","selectServiceRequestsKanban","selectServiceRequestsKanbanProcessingUpdate","processingUpdate","selectServiceRequestsKanbanProcessingInsert","processingInsert","selectServiceRequestsKanbanTickets","selectServiceRequestsKanbanSelectedStatuses","selectedStatuses","selectServiceRequestsKanbanData","tickets","dataList","section","selectGlobalFilter","selectFilter","filterString","selectTicketIds","selectedStatusIds","selectShowAddSubTicket","showAddSubTicket","selectEdit","parentTicket","ticket","selectSectionOrders","selectedStatusOrders","selectWorkOrder","workOrder","selectWorkOrderProcessing","selectCreateWorkOrderProcessing","createState","selectUpdateWorkOrderProcessing","updateState","selectCreateWorkOrder","selectUpdateWorkOrder","selectCreateWorkOrderCompleted","selectUpdateWorkOrderCompleted","selectCreateWorkOrderHasError","selectUpdateWorkOrderHasError","selectSendEmailOnResOffline","sendEmailOnOffline","selectReservationOffline","reservationOffline","selectReservationOfflineData","selectReservationOfflineProcessing","selectReservationOfflineCompleted","selectReadonlyWorkOrder","readonlyState","selectUpdateAllRecurrent","updateAllRecurrent","selectOfflineEventStart","OfflineEventStart","selectOfflineEventEnd","OfflineEventEnd","selectSavedLinkedOrders","doSaveNewComments","createdOrders","savedLinkedOrders","selectLinksProcessing","calibrationsChanged","linksProcessing","selectDowntimeOverlaps","downtimeOverlaps","_t","IsEntity","IsEntityType","IsEntityArray","IsEntityString","IsEmptyArray","IsNotEmptyArray","PureAppliedFilterComponent","onRemove","onApply","direction","canHaveInversed","inversionDisabled","filterData","filterPredicates","depKey","predict","setPredict","handleChange","applyItem","handleRemoveClick","invalidLabel","toggleInversed","fieldName1","displayNameKey","button","selected","dateTimeClear","NonRemovableFilter","AppliedFilterComponent","prevProps","nextProps","predicetes","DraftReservationTypes","AllowReservationCollaboratorsTypes","mapSettingsFromServices","equipments","accServices","HasHideProjects","HasConflictProjects","HasMultipleProjects","AllowPartialProjectCharges","HasPartialSingleProject","AllOffServicesAllowed","ReservationOfflineServicesEnabled","OfflineServicesVisible","AllowReservationCollaborators","AllowedToStartUsage","NotAllowedToStartUsage","budgetExperimentVisible","BudgetExperimentSettings","TrainingSignUpApproval","HideTrainingSession","HasAttendance","ForceTutoring","ForceFullDayReservations","IsEquipmentTutoring","NotAllowReservations","AllowOneAccSerOnly","IsAllAdmin","RestrictReservationToTimeSlots","DefaultReservationDuration","sort","MinOrderHours","MaxOrderHours","MaxOrderDuration","MinOrderGap","RestrictDurationUnitsAmount","RestrictDurationUnitType","DefaultAccServiceId","Billable","IsLoanDesc","LoanTypeId","AllowModification","AllowExtendReservation","AllowUsersToShortenReservations","AllowedToTransfer","AllowedToTransferAll","EnforceReservationRestrictions","LimitlessReservationAllowed","BudgetVisible","getBudgetVisible","OfflineServiceTypes","combineOfflineServiceTypes","arr","HasAccServices","StaffUserVisibleAllways","StaffUserSelectionVisible","StaffUserVisibleOnPending","StaffUserRequiredAlwais","StaffUserSelectionRequired","StaffUserRequiredOnPending","StaffUserSelection","DraftForAll","DraftReservationsTypeId","DraftReservationTypes_AllUser","DraftApprovalRequred","DraftReservationTypes_ApprovalRequired","DraftSaveForLater","DraftReservationTypes_SaveForLater","combineOptionalEquipments","offlineServices","terminate","EquipmentsData","EquipmentName","AccServiceIds","AssemblyId","EndTime","SampleRunId","SampleIds","Collaborators","CollaboratedUsers","PartialAttendance","PartialAttendanceStart","PartialAttendanceEnd","FullDayReservation","Username","StaffUser","UserGroupId","TrainingSignUp","TrainingSessionId","TrainingSession","TransferFromId","UserRequestedByApproval","UserRequestedBackground","TransferredTo","WorkflowBooking","RecurringUpdateOption","AllStartTimes","BudgetIds","OfflineServices","ServiceTypeName","UnitsName","Factor","TransferInProgress","Entered","RecordDate","UpdatedAt","CancelledAt","CustomFormValues","FieldId","Parts","TutorName","Terminated","SavedForLater","StartDate","EndDate","PartReservations","AssignToServiceRequestId","AssignToServiceRequestRowIds","AssignToServiceRequestSampleIds","Repeat","RecurringEvents","DoNotRepeat","RepeatsEveryType","RepeatsEveryPeriod","RepeatsEveryNum","RepeatsEveryDay","RepeatEndTime","RecurringEndDate","RepeatOption","Repeat_Period","RepeatsBy","RepeatsMonthlyBy","RepeatsOn","RepeatsOnDays","MandatoriesEquipments","OptionalsEquipments","doInitReservation","doInitReservationEdit","doInitReservationEdit_Load_OfflineMandatory","getReservationProperty","selectConfirmPricingEnabled","doCreateReservation","doCreateReservationInternal","doUpdateReservation","processUserRequestedInBackround","doUpdateSettigs","doUpdateEquipmentSettigs","doLoadValidationData","doSetStart","doSetEnd","doSetAny","doTransferReservation","doCancelTransferReservation","doTerminateReservation","doUpdateMultiReservations","reservationSaga","UpdateToNow","End","isChange","resourceChanged","BaseEquipment","extendEquipmentSettingsState","mandatories","sampleRunId","initReservation_Success","isEmpty","isChanged","userTrainigData","userTrainingsApprovalData","Equipments","CheckStatus","prevState","bid","CheckSession","initValidationData","warnings","initReservation_Error","OfflineMandatory","userTrainingEquipments","FatherId","setTrainingsData","fork","extendReservationSettings","ConfirmPricing","confirmPricingEnabled","GetIsNotBillable","calcCredit","createReservationInternal","take","сonfirmPricing","confirmAction","createReservation_Success","createReservation_Error","insertReservationNoficiationMessageKey","isCloned","customFormFiles","getFilesModel","FileTypes","ReservationFile","CustomFormTypeEnum","Reservation","FileStoreApi","saveFormFiles","fileRes","fileResponse","errorMessage","addModelError","self","autoHideDuration","AUTO_HIDE_DURATION","setCloneReservation","caluclateCredit_Success","warnOnTrainingSession","FirstEquipmentId","ClickHere","afterLinkText","res_futureTrainingSession_LinkTitle","repetitiveActions","resetState","reservationIds","insertModel","insertedModel","updateReservationNotificationMessageKey","reservationDto","reccurentUpdateOption","filesData","originalCustomFormFiles","currentCustomFormFiles","updateFormFiles","fileResponses","terminateReservation_error","Succes_ReservationTerminated","terminateReservation_success","reccurentServices","offRes","offErrors","offResponse","offWarnings","removedServiceType","remResIds","delData","delRes","initClonedReservation_Success","updateReservation_Success","updateReservation_Error","setUserRequestedBackground","updateReservationSettings","newSettings","updateEquipmentSettingsState","CustomForms","StatusChange","IsForceTutoring","initValidationData_Success","initValidationData_Error","setStartSuccess","setEndSuccess","transferReservation_Error","transferReservation_Success","cancelTransfer_Error","cancelTransfer_Success","Model","updateMultiReservations_completed","createReservation","setStartDate","setEndDate","cancelTransfer","terminateReservation","TryDisableRemoveableEquipments","noremoved","titleInfo","StaffMandatoryEquipment","generateTrainingSessionName","getSingleReservationStatus","op","AssemblyParts","getReservationSettings","TrainingSessionOnly","SessionId","LastUpdateDate","LastUpdateAdmin","ParentAssemblyReservationId","TopAssemblyReservationId","HasOfflineServices","HasTrainingSession","NextReservationTime","RecurringReservationUpdateOptions","CurrentReservation","FirstInitEquipments","FutureReservation","IsFuture","Ongoing","IsOngoing","PastReservation","IsPast","OfflineOptional","resetDetailsErrorsState","resetAssisteTrainingData","resetEquipmentChangeState","getAnyValue","getAnyValueSuccess","resetRequestedFor","resetTransferState","calculateCredit_Error","setSubmitCalculateCredit","setSavedOfflineServices","setRemovedOfflineServices","setRefreshOfflineServices","resetTerminateState","setAsyncChangeLoading","setByApprovalErrors","setUserCanRequestApproval","setMaxReservationComplexityValidationResult","setRefreshWorkOrderLink","setMultipleProcessing","setMultipleClosed","reservationActions","useReservationSlice","isBookable","isOnlineService","moveArrayItem","pos","ri","moveArrayItemByName","rn","addArrayItemByName","GetIsBookable","GetReservationEnabled","notAllowReservations","reservationEnabled","GetUsageEnabled","autoMode","AutoMode","LocalAppEnabled","GetAlertsEnabled","alertsEnabled","GetNotificationAvailable","available","State","AssetRowState","SectionName","PropName","valid","validToRender","RemoveLastEmptySections","pop","GetRawSections","CheckEmptyRawSections","RemoveEmptySections","GetSections","noNameSection","GetRowsSections","leftRes","rightRes","checkSection","getSectionsFilter","resSections","imageSection","removeArrayItem","RowToSections","leftSections","rightSections","RowsToSections","fetchAssetBy","fetchAssetByInternal","Division","DivisionName","AlertsEnabled","isAuth","AvailabilityType","fetchAssetAdditionalData","buttonsData","typeId","fetchAssetButtonsData","allPeriods","noFuturePeriods","DatesRangeWrapper","DatesRangeFilter","periodValue","changedValue","periods","Forever","From","minutesStep","saveOnSelect","maskIfEmpty","To","BooleanPickerFilter","trueName","falseName","ActionButton","FormUserPicker","DateRenderer","OfflineReferenceTypeEnum","FundingTypes","ReservationRepeatPeriods","ReservationRepeatMonthlyTypes","EditableCell","WrappedComponent","initialValue","updateMyData","BaseURLPicker","queryfilter","ReservationLink","openDetails","useOpenReservationPopUp","getLink","useReservationLinkUrl","ClickToSeeReservationDetails","resProps","useSwitchButtons","panelState","DateTimeRenderer","FormSwitch","boldLebel","maxLabelWidth","useInputField","inputName","inputId","inputMode","inputAfterLabel","onInputFocus","boldLabel","boxed","CommentsApi","GetComments","reference","referenceString","$orderBy","SendComment","referenceId","refernceString","commentId","fileTypeId","Files","Text","IsInternal","removeFile","delteUrl","DeleteComment","GhostInput","valueHtml","valueText","labelBolder","ghosInputLabelBold","useUploadToNewComment","largeFileActions","useLargeFilesUploadSlice","onCommentAdded","comment","setCanUpload","validateError","propss","utils","validateDate","currentDate","opDate","maxMonthDays","finalDate","maxDateMessage","minDateMessage","invalidDateMessage","strictCompareDates","validateTime","convertToMeridiem","getMeridiem","checkDateInput","dateStart","regexDDMMYYYY","regexYYYYMMdd","regexMMDDYYYY","selectArticles","articles","selectArticlesExternalSearchResults","externalSearchResults","selectArticlesExternalSearchForm","externalSearchFormDetails","selectArticlesExternalSearchPageIndex","externalSearchPageIndex","selectArticlesExternalSearchPageSize","externalSearchPageSize","selectArticlesExternalSearchPageData","selectArticleDetails","articleDetails","selectRefreshEditArticleAssociation","refreshEditArticleAssociation","selectArticleDetailsBusy","articleDetailsBusy","selectEditArticleAssociationBusy","editArticleAssociationBusy","selectArticleDetailsForm","ServiceGroupAssets","Assets","InstrumentAssets","staffUserChangeHandler","equipmentsChangeHandler","extendStaffMandatoryEquipment","extendMandatoryEquipments","initStaffReservation","setStaffEquipmentRestricted","reservationSettings","staffEquipmentId","StaffEquipmentId","setEquipments","initEquipmentsData","staffEquipment","mand","alleqs","NodeColumn","NodeRow","prerquisitErrorsHandler","setPrerequisitErrors","onEquipmentClicked","onRestrictionsClick","PrerequisiteTrainings","node","ErrorMessage","pre","cursor","AllRestrictions","per","trainingSessionChangeHandler","setMessage","initTrainingSession","warn_TrainingSessionsTimeSlot","SignUp","otheMessagesHandler","customFormErrorsHandler","dur","permissionsErrorsHandler","AutocompleteMultiPickerEx","renderTags","renderOptionLabel","renderOptions","onChipClick","hasLabel","newValue","getTagProps","selectable","custombgcolor","Color","notremoved","Fragment","backendOptions","loadPath","lngs","namespaces","chain","mapValues","detectionOptions","lookupCookie","LOCALE_COOKIE_NAME","supportedLngs","supportedLocales","convertDetectedLanguage","lng","formatOptions","fullDateTimeFormat","Backend","initReactI18next","LanguageDetector","detection","fallbackLng","fallbackNS","appendNamespaceToMissingKey","interpolation","escapeValue","backend","on","loaded","SectionTitle","FormSectionTitle","filterHandler","isSidePanel","setFilters","anyDefinition","preset","saved","withoutReserved","withReserved","addReserved","filterSearch","filterValue","reserved","largeFilesUploadSaga","selectedFiles","canUpload","uploading","targetId","startedToUpload","currentNumberOfUploadedFiles","numberOfUploadedFiles","commentType","refernceStringId","setSeletedFiles","setCommentProperties","addFile","resetNumberOfUploadedFiles","FormBookitDateTimePicker","labelInline","dateLabel","timeLabel","MandatoryOfflineTypeEnum","WorkOrderApi","initCreateData","initUpdateData","insertWorkOrder","updateWorkOrder","offData","getNewWorkOrderStatus","deleteOrders","deleteTempComments","commentIds","catch","DowntimeOrders","assetIds","foo","nowDate","removefromLinks","linkedId","addToLinked","removeLinkedCalibration","addLinkedToCalibration","getLinkedToCalibration","getOverlappingDowntimes","updateWorkOrdersStatus","workOrderStatus","workOrdersIds","statusId","ReadonlyField","mapSettings","isEditMode","budgetEnabled","getOfflineBudgetVisible","isForMilestone","resUGEnabled","isServiceAdmin","IsAllGroupOrLabTechAdmin","isRoleAdmin","isUserGroupCoordinator","UserGroupCoord","btExpEnabled","chargesViewAllowed","hasConflictProjects","budgetVisible","fundingTypeVisible","userGroupVisible","userVisible","budgetExpirementVisible","instProjVisible","extCustomerVisible","purchaseOrderVisible","PurchaseOrderOptionId","Hidden","referenceVisible","endTimeVisible","startTimeVisible","doSetConnectedValue","doResetState","connectedFiltersSaga","setConnectedValueSuccess","currentData","updateSettingsState","resetConnectedState_success","setConnectedValue","resetConnectedState","budgetInputDisabled","setSubmit","resetConnectedHandler","useConnectedFiltersSlice","initExtraDDLData","ExtraDDLPicker","AutocompleteMultiPicker","fullWdithOptions","additionalAction","setInputValue","handleRenderOptionLabel","fullwidth","adminUrl","reservableUrl","initOnlineServicesData","sourceurl","OnlineServiceMultiPicker","OnlineServiceSinglePicker","RestrictedByAdminFilter","ServiceGroupIds","IsAdminPanel","ServiceGroupFilter","Check","checkicon","uncheckicon","indetermicon","withPadding","checkSizeClass","checkedIcon","indeterminateIcon","Handlebar","sanitizeHtml","customFormAst","compileHandlebarsTemplate","ast","ReplaceMutatingVisitor","accept","replacementStatement","_replacementStatement","_path","mutating","mustache","ExtractPathsVisitor","paths","scheduler","selectScheduler","selectEvents","events","selectSchedulerOfflineHours","viewState","offlineHours","selectTrainingSessions","trainingSessions","selectSchedulerViewState","selectSchedulerDateTs","selectSchedulerViewType","viewType","selectNonWorkingHours","nonWorkingHours","selectTutoringHours","tutoringWorkingHours","selectSchedulerTempEvents","tempReservations","selectSelectedReservationEvents","selectedReservationEvents","selectLoadedServices","selectedServices","selectSchedulerServicesLimit","limitKey","limitString","selectSchedulerFilters","selectWithReservationsOnly","selectSchedulerServicesLimitReached","limitNumber","selectSchedulerSelectedServices","selectSchedulerDerivedServices","derivedServices","selectMappedReservations","mapEvents","reservation_id","start_date","end_date","EquipmentColor","service_id","service_name","selectMappedOfflineHours","offline","alert_id","offline_id","selectMappedTrainingSessions","trainingsession_id","selectMapped","selectSchedulerParseEvents","mappedEvents","readonly","notClickable","canEditReservation","BookedById","Restricted","allowedToViewAlert","ReportedBy","_no_resize_end","_no_resize_start","_no_drag_move","selectSchedulerServices","WithReservationsOnly","servicesWithEvents","has","filterServicesByEvents","serviceGroupIds","filterServicesByServiceGroups","selectSchedulerPreviousViewState","previousViewState","selectMultipleModeState","selectSelectedSavedView","currentSelected","userProfile","instrumentMultipleEnabled","GetSettingValueBy","Multiple","AllowedDefaultMultiple","selectSchedulerViewStartDate","getViewStartDate","viewLength","customStart","selectDefaultCustomDaysTimelineValue","daysString","selectSchedulerViewEndDate","customDays","getViewEndDate","selectSchedulerViewCustomStart","selectNotUseLocation","notUseLocation","selectEmptySlotAdminClick","emptySlotAdminClick","selectSchedulerNewEventServices","tempReservation","getSingleServiceEventServices","selectTwoDaysTimelineButtonEnabled","selectCustomDaysTimelineButtonEnabled","selectIncludeCustomFormInSchedulerReservationTooltip","IncludeCustomFormInSchedulerReservationTooltip","selectSchedulerReservationBodyTemplate","SchedulerReservationBodyTemplate","selectSchedulerReservationTooltipTemplate","SchedulerReservationTooltipTemplate","selectCalendarReservationColumns","schedulerReservationBodyTemplate","schedulerReservationTooltipTemplate","equipmentAssemblies","allowWorkflowBooking","includeCustomFormInSchedulerReservationTooltip","pathExtractor","reservationHistorySelectArray","union","selectSchedulerLoadingEvents","loadingEvents","selectTimelineGroupBy","selectExportToPDF","exportToPDF","ConvertModelToEntity","Shared","doInitNewDetails","doUpdateViewAssets","doSelectSavedView","doPatch","doUseSavedView","savedViewSaga","loadNew","eid","initNewDetails_Success","initNewDetails_Error","httpPayload","createSavedView","MyInstrumentList","SavedViewDetails","createView_Success","createView_Error","updateSavedView","updateView_Success","updateView_Error","newAssets","assets","el","view","groupId","shared","updateViewAssets_Success","updateViewAssets_Error","selectSavedView_Success","savedViewsApi","patch_success","useSavedView","useSavedView_success","initNewDetails","createView","updateView","updateViewAssets","savedViewUserName","SavedViewExtraData","UserNameDisplay","createdAt","CreatedAt","usages","UsageCount","resetCreateSavedViewState","resetUpdateSavedViewState","selectedSavedView","selectSavedView_Error","MessageText","css","showMore","minHeight","defaultIconMapping","BasicAlert","content","collapsedMinHeight","isShowMore","setIsShowMore","in","severity","iconMapping","show","MessageTypeEnum","getDuration","displaySeconds","FormCheckbox","StyledChip","withStyles","root","customsize","customcolor","opacity","pointerEvents","darken","customwidth","labelSmall","clickable","sizeSmall","deleteIcon","customiconcolor","margin","fade","Chip","BookitChip","aria-disabled","onDelete","BookitChipWithCheck","BookitChipWithInfo","checkname","checkid","InvoiceDetails","selectNotFound","selectActiveFilters","selectInvoice","invoice","StyledFiltersContainer","ButtonsContainer","StyledFilterBoxRoot","FilterBoxRoot","forwardRef","AddFilterBoxRoot","StyledMenuList","FilterRoot","StyledPaper","StyledDialog","StyledDialogTitle","DialogTitle","StyledIconButton","StyledDialogContent","StyledContentWrapper","savedView","selectSavedViewProcessing","selectCreateSavedView","selectUpdateSavedView","selectUpdateUserName","selectExtraData","selectCreateSavedViewCompleted","selectUpdateSavedViewCompleted","selectCreateSavedViewHasError","selectUpdateSavedViewHasError","ExtraDDLFilter","CatRateTypes","StyledItemIcon","ListItemIcon","RowMenuActions","bindTrigger","popupProps","OpenMenu","RowActionMenuItem","setProcessing","withLoading","renderAsTitle","RowActionsMenu","useRowActionsColumn","tablePlugins","actionColumns","Header","Action","disableSortBy","Cell","hooks","useInlineRowActionsColumn","regPublicUrl","billableAdminUrl","initServiceGroupsData","ServiceGroupPicker","serviceGroupFilterUrl","allowedroles","InstrumentEventsAdmin","useWorkOrdersPermissions","roles","callback","hasPermissions","isMainOrInstrumentEventsAdmin","HasAdminGroupOnlyPermissions","HasAdminServiceOnlyPermissions","HasInstrumentEventsGroupPermissions","ServiceRequestDetailsPath","generatePath","FormControl","GettableCount","box_shadow_m","box_shadow_l","shadowXS","shadowS","shadowM","shadowL","shadowXL","TextField","UserFilter","DateTimeLabel","DescriptionCell","leaveDelay","leaveTouchDelay","GetCalendarPagePath","GetSchedulerPagePath","calendarPageFullPath","useCalendarLink","getCalendarLink","EnableLegacyScheduler","openToBook","defaultMulti","Comments","defaultComment","cannotComment","emailType","disableFileUpload","referenceName","referenseStringId","additionalActions","checkEditPermissions","checkPermissions","deletable","print","fileType","Undefined","globalActions","changed","setChanged","comments","editComment","newComment","onEditComment","ReferenceId","finally","deleteComment","onDeleteComment","withMentions","Invoice","FormFundingTypePicker","EmptySlotAdminClick","StyledUlList","StyledSimpleList","StyledBulletList","UlList","SimpleList","BulletedList","showBullet","AddFilterButton","filtersSelectionOpen","setInnput","disabledTitle","Popper","SelectFieldToFilterBy","SearchFilter","mobHorizontal","mobVertical","handleFilterSelect","AppliedFiltersContainer","mobileRoot","mobileHorizontalRoot","dependencyProp","depFiltered","filt","filterValues","updateDepValues","BasicFilterGroup","appliedFiltersDirection","filterDefaultOpen","showAddResetButtons","setVisibleFilters","handleAddFilterWithValue","currentState","handleApply","areSameFilter","handleRemoveFitler","applied","appliedFitltersCount","autoOpenAddFilter","SavedListsDropDown","serviceItem","savedListRelatedPickerName","hasInVisibleFilters","addFilter","serializedKey","listViewbyAsset","MoreFilters","MoreFiltersDisabled","apply","ResetFilters_info","ResetFilters","roundTwoPlacesAfterDecimalPoint","round","DateInput","openPicker","TextFieldComponent","validationError","togglePicker","TextComponent","innerInputProps","readOnly","InputAdornment","ev","nodeName","dateLongFormatter","pattern","timeLongFormatter","longFormatters","P","dateTimeFormat","matchResult","datePattern","timePattern","formattingTokensRegExp","longFormattingTokensRegExp","getFormatTokens","formatString","tokens","firstCharacter","longFormatter","setInputViewDate","ddd","toEndDateDisplayValue","getValueDateOrTruncat","dateFormat","getMaskedDateValue","mask","singleValue","dateStartFrom","dateSeparator","getMaskedTimeValue","hour","minute","StyledPicker","PickerPopper","daysEntityArray","_","defaultDayValue","getDayEntityFromDate","DaysByMonthPicker","maxDay","monthDate","monthEntityArray","FullName","MonthId","defaultMonthValue","getMonthEntityFromDate","MonthOfYearPicker","MAX_YEAR","yearsEntityArray","defaultYearValue","getYearEntityFromDate","YearsPicker","DateDropDown","dayDisabled","monthDisabled","yearDisabled","useUtils","dateTimeValue","dateSelected","setDateSelected","daySelected","setDaySelected","monthSelected","setMonthSelected","yearSelected","setYearSelected","innerError","setInnerError","isYearOpen","setIsYearOpen","isMonthOpen","setIsMonthOpen","isDayOpen","setIsDayOpen","someOpen","withCompletion","handleDayChange","handleMonthChange","handleYearChange","FormHelperText","hoursEntityArray12","hoursEntityArray24","defaultHourValue12","getMeridiemHours","defaultHourValue24","getHoursEntityFromDate","HoursPicker","useAmPm","minutesEntityArray","defaultMinutes","getMinutesEntityFromDate","MinutesPicker","AmPmEntityArray","defaultAmPm","getAmPmEntityFromDate","AmPmPicker","TimeDropDown","hoursDisabled","minutesDisabled","hoursSelected","setHoursSelected","minutesSelected","setMinutesSelected","ampmSelected","setAmpmSelected","isHourOpen","setIsHourOpen","isMinuteOpen","setIsMinuteOpen","isAmPmOpen","setIsAmPmOpen","ampmValue","handleHoursChange","handleMinutesChange","handleAmPmChange","ampmVal","useIsomorphicLayoutEffect","useLayoutEffect","useEventListener","eventName","handler","savedHandler","targetElement","eventListener","useDateTimeChange","refresh","valueRef","dateTimeMask","maskFormats","dateStartOf","userValue","isDeleleteButtonDownRef","wasZeroBefore","selectionStateChanged","eventValue","increment","isHourChanged","isMinutesChanged","isAmPmChanged","isDayChanged","isMonthChanged","isYearChanged","isNoOperation","selectionChanged","formattedValue","moveSelectionForward","finalTime","partChanged","maskFormat","prevValue","stayOnSelection","newTime","prevParts","prevHour","prevMinute","prevMeridiem","newVal","hourInt","prevHourInt","comb","minuteInt","prevMinuteInt","formatingTime","finalValue","isPrevZero","isSelectionChanged","zeroPress","startedFrom","dayVal","prevDayVal","dayInt","prevInt","monthVal","prevMonthVal","monthInt","prevMonthInt","yearVal","prevYearVal","yearInt","padEnd","formatingDate","oneLetterHour","handleKeyDown","evt","handleKeyUp","hasSingleChar","selectionStart","maskedValue","onSelectionChange","selectionEnd","KeyboardRifmInput","isPickerOpen","defTokens","first","dateStartWith","dateTokens","timeTokens","defaultDateTimeMask","inputMask","setHasError","setErrorMessage","setSelectionChanged","dateChange","onMouseUp","timeSelection","dateSelection","onKeyUp","arrows","dateArrowSelection","selStart","selEnd","nativeEvent","stopImmediatePropagation","KeyboardInput","displayDate","emptyLabel","getDisplayDate","innerInputValue","setInnerInputValue","changedValueRef","dateVal","mergeDateAndTime","setValidationError","innerValidationError","textValue","TimeOptionPicker","hoursItems","minutesItems","ampmItems","hourRef","minuteRef","selectedId","scrollTo","hourScroll","step","minuteScroll","PickerOptions","List","disablePadding","ListItem","Divider","ap","gridAutoColumns","gridAutoRows","gridColumn","gridRow","maxHeight","borderBottom","borderTop","listStyle","scrollBehavior","whiteSpace","BookitDatePicker","useLocaleUsesAmPm","elementRef","closablePicker","closeTitle","readonlyInput","useTimeClockPicker","useTimeDropDowns","useDateDropDowns","dateInputProps","keyboardInputProps","dateValue","setDateValue","handleSave","contains","countState","inputDisplayValue","timeFormat","getInputViewDate","ClickAwayListener","mouseEvent","onClickAway","inpValue","transition","TransitionProps","Fade","Paper","TimePicker","disableToolbar","timeValue","DatePicker","Save","Clear","FormControlLabel","withInfo","boxedChecked","boxedError","shortLabel","withInput","shiftRight","createPeriod","now","startFn","endFn","addFn","offset","doGetItems","doGetMoreItems","doSetSelectedStatuses","doReorder","doInsert","selectorChangeSaga","monitorSelector","doShowEdit","doShowEditParent","doUpdateitemsForFilter","doUpdateSecionOrder","serviceRequestsKanbanSaga","ENTITY_SET_URL","fetchTicketsByStatusId","fetchTicketsParams","skip","fetchTicketById","FETCH_SELECT_EXPAND","notificationMessageKey_getItems","orders","sectionId","bar","getItems_Success","getItems_Error","getMoreItems_Success","loadedIds","currentStatusIdentifiers","getItems","destinationSectionId","sourceSectionId","indexChanges","ServiceRequestStatusId","destinationIndex","reorder_Success","reorder_Error","sourceIndex","notificationMessageKey","AssignedTo_Id","AssignedTo","Priority","SamplesCount","ParentTicket","ParentTicketId","insert_Success","GenericInsertSuccessMessage","insert_Error","update_Success","GenericUpdateSuccessMessage","update_Error","extractErrorMessages","previousValue","currentValue","takePattern","nextValue","openSidePanelProps","showEdit_Success","ServiceRequestTicketDetails","showEdit","showEdit_Error","setGlobalFilter","setFilterString","setSectionOrder","getMoreItems","setSelectedStatuses","reorder","insert","showEditParent","fetchCount","isEqual","sourceSection","destinationSection","removed","updateSamplesCount","serviceRequestsKanbanActions","useServiceRequestsKanbanSlice","originalSamplesCount","ShortWeekDays","getShortDaysArray","RepetitiveInit","untilDate","GetAutoCreateTitle","eventStart","AutoCreateEvent","AutoCreateFor","RepeatCustom","periodName","Days","Weeks","RepeatDaily","parseISOOrNull","GetIntervals","dates","originStart","originalEnd","days","nextWeek","dayWeek","newMonthDate","newDayWeek","calcDay","checkDate","counter","theDay","firstDay","lastDay","newDay","period","everyDayNum","nextDay","daysToAdd","newDayDate","mtheDay","mnextDay","mdaysToAdd","Months","RepeatsBy_DayOfMonth","monthDay","RepeatsBy_DayOfWeek","newMonth","deleteSavedViews","viewIds","getMySavedViews","mySavedViewFilter","onlyMyView","initWOTypeData","initWOTypeDataParams","downtime","filteredWorkOrderTypes","calibration","isOfflineServiceType","grp","elem","cts","AssetCatId","byGroups","byCats","WorkOrderTypePicker","convertInventoryBatchName","loadBaseData","InventoryBatchPicker","loadInventoryBatchesData","BatchesByServiceTypeFilter","withStockRenewed","AlignRight","doInitCreate","doInitUpdate","doSendReservationsOfflineEmail","doRemoveFromLinked","doAddToLinked","doRemoveLinkedCalibration","doaddLinkedCalibration","doSetCreatedOrders","doCheckDowntimeOverlaps","doRemoveTempComments","workOrderSaga","userTimeZone","formatToTimeZoneUTCDate","EventStart","AlertStart","initWorkOrder_Success","initWorkOrder_Error","offStart","offEnd","initUpdateWorkOrder_Success","initUpdateWorkOrder_Error","ConvertNewWorkOrdersToModel","submissionFormFiles","workOrderDetails","SubmissionFormFiles","savedLinkeCalibrations","commmentIds","AlertTypeFile","AlertType","WorkOrderTypeId","setSaveNewComments","setOrderNumbers","WorkOrdersPageName","WorkOrderDetails","widx","addLinkedCalibration","WorkOrderType","hasResOffline","ReservationOffline","ReasonName","createWorkOrder_Success","createWorkOrder_Error","staffFormFiles","StaffFormFiles","updateAll","UpdateAll","originalSubFormFiles","RecurringAssetId","RecurringGroupId","originalStaffFormFiles","AlertFile","Alert","AutoCreatedOrders","longDateTimeFormat","updateWorkOrder_Success","updateWorkOrder_Error","paload","doNotNotifyUsers","allAffectedUsers","sendData","sendReservationsOfflineEmail_Success","sendReservationsOfflineEmail_Error","removeFromLinked_success","addToLink_success","removeLinkedCalibration_success","addLinkedCalibration_success","setOrderNumbers_success","checkDowntimeOverlaps_Success","initWorkOrder","initUpdateWorkOrder","createWorkOrder","sendReservationsOfflineEmail","removeFromLinked","checkDowntimeOverlaps","resetCreateWorkOrderState","ConvertEntityToModel","ToDown","resetUpdateWorkOrderState","resetReservationsOfflineState","setUpdateAllRecurrent","LinkedAlerts","setOfflineEventStart","setOfflineEventEnd","setSavedLinkedOrders","resetSavedLinkedOrders","setCalibrationChanged","workOrderActions","useWorkOrderSlice","PrintPDFSection","printPDFSections","selectPrintPDFSections","componentRef","printClasses","forceChecked","PrintSection","sectionClass","initUserGroupData","UserGroupPicker","RestrictedUserGroupPicker","RestrictedFilter","departmentId","instituteId","instituteTypeId","restricted","useAdminPermissions","allowedToEdit","allowedToAdd","HasCreateAdminGroupPermissions","allowedToEditOffline","allowedToAddOffline","allowedToEditBatch","allowedToEditGroup","allowedRoles","hasRolePermissions","part1","part2","undefinedIfFalsy","userProfileSetting","savedEnabled","updateEnabled","noTransform","FormOnlineServicesComboPicker","transform","actualValue","FormOnlineServicesSinglePicker","TrainingState","UsersApi","exportForImport","users","sendCode","Email","Token","verifyCode","createAccount","checkCaptcha","reqUrl","checkUserName","checkEmail","sendRegistrationEmail","setActiveAdGroup","adGroup","getUser","userNameUnicoded","updateDefaultUserGroup","userGorup","usergroup","updateDefaultBudget","budget","updateInternalId","internal","InternalId","updateDtuCardId","updateInternalId2","syncLdapUser","FormBudgetPicker","selectLargeFilesUpload","largeFilesUpload","selectLargeFilesCanUpload","selectLargeFilesUploading","selectLargeFilesStartedToUpload","selectLargeFilesUploadTargetId","selectLargeFilesUploadFilesNumber","selectLargeFilesUploadSelectedFiles","NumberField","withMinMax","withProps","getNotifyOnResCancelationOptions","doNotNotify","NotifyOnReservationHourseBeforeCancel","Info","NotifyOnReservationHourseBeforeCancel_info","getNotifyOnResTerminationOptions","NotifyResTermEvery","NotifyResTermHours","getNotifyOnEndUsageOptions","NotifyUsageEndEvery","NotifyUsageEndHours","optionToBoolean","convertSignUpToModel","edited","EquipmentID","Equipment","BeforeResCancelHour","NotifyOnResCancelation","NextResTermHours","NotifyOnResTermination","NextReservationHours","NotifyOnEndUsage","BeforeResStartHour","BeforeTrainStartHour","UpcomingReservations","UpcomingTrainingSession","UserEmail","convertSimpleSignUpToModel","usageEnabled","WindowHours","getIsRowSimpleMode","allNotifications","enabled","enabledNotifications","firstCount","isSimpleMode","hoursCount","notificationsLength","UnconfigurableTable","onExportForImport","exportNotConfigurable","setData","setDataLength","setControlledPageCount","serializedCustomFilter","handleSelectedRowsChange","fitContent","StyledTextField","MatTextField","FormServiceGroupPicker","entityOnly","doShowDetails","doExternalSearch","doSaveArticleAssociation","articlesSaga","externalId","externalIdSource","showDetails_Success","externalSearch_Skip","searchForm","Source","externalSearch_Success","Count","Items","StatusCodes","TOO_MANY_REQUESTS","TooManyRequests","externalSearch_Error","isNew","fn","Queryable","AwaitingApproval","PublicationAwaitingApproval","Success","saveArticleAssociation_Success","mes","saveArticleAssociation_Error","showDetails","externalSearch","chnagePage","saveArticleAssociation","article","resetArticleAssociationState","someAction","clearArticleDetails","articlesActions","useArticlesSlice","ModificationsValueRenderer","StyledTopBar","drawerWidth","sidePanelWidth","transitions","easing","sharp","duration","leavingScreen","enteringScreen","SubTopBar","attrs","easeInOut","ProfileSection","StyledUserMenu","withTheme","StyledUserMenuExtended","Section","LeftSection","RightSection","RowSection","flexWrap","FormFieldsBox","xs","CustomDivider","hr","useExpandedSideBarState","expandLocal","samplesList","selectSamplesList","selectRunDetails","selectShowRunDialog","selectSamplesListEditMode","selectImportingRunDetails","selectImportingRunDetailsFinished","selectRunDetailsCreatedDate","CreateDate","selectRunDetailsCompletion","Errors","toErrorMessage","isDefined","modelError","propertyValue","Exception","sum","aggregatedValues","minMax","average","median","mid","floor","unique","uniqueCount","Map","getFirstDefined","args","flattenBy","recurse","emptyArray","emptyObject","resetGroupBy","setGroupBy","useSummary","stateReducers","visibleColumnsDeps","instance","useInstance","prepareRow","previousState","groupByColumns","col","nonGroupByColumns","isGrouped","groupedIndex","pluginName","defaultUserAggregations","flatRows","rowsById","allColumns","groupByFn","defaultGroupByFn","manualGroupBy","aggregations","userAggregations","plugins","autoResetGroupBy","disableGroupBy","defaultCanGroupBy","ensurePluginOrder","defaultColumnGroupBy","defaultGroupBy","columnDisableGroupBy","canGroupBy","Aggregated","existingGroupBy","aggregateRowsToValues","leafRows","groupedRows","depth","aggregateFn","aggregate","groupedValues","leafValues","columnValue","aggregateValue","aggregateValueFn","groupedFlatRows","groupedRowsById","onlyGroupedFlatRows","onlyGroupedRowsById","nonGroupedFlatRows","nonGroupedRowsById","groupUpRecursively","parentId","rowGroupsMap","aggregatedGroupedRows","groupByVal","subRows","groupByID","subRow","summaryRows","getAutoResetGroupBy","useGetLatest","useMountedLayoutEffect","preGroupedRows","preGroupedFlatRow","preGroupedRowsById","allCells","cell","isPlaceholder","isAggregated","resKey","TableCard","viewCheckBox","useSelect","hasAdditionalActions","hasInlineRowActions","someSelected","showTitleCell","contentEditable","maxContentRowsLength","useButtons","cells","sizeOfMobileCard","img","hasImg","imgSrc","showSelect","setShowSelect","isDisabled","render","checkBoxTitle","CardMouseOver_info","backStyle","imageSrc","selectVisible","checkBox","mobileSize","toggleRowSelected","useImage","topActions","hasTopActions","cardContentRows","TabsToolbar","leftTabs","selectedValue","selectedArray","rowsCount","getMultiMode","onAllRowsSelected","disableMultiMode","defaultMultiMode","rightTabActions","multiMode","setMultiMode","TabsContainer","Grow","Tabs","updateIndicator","selectionFollowsFocus","indicatorColor","tab","allPagesUnselected","Unselect","ClearSelection","CoreMultiSelect_info","CoreSelectAll","genericMemo","FloatingContainer","insetBlock","insetInline","bottom","SperActions","FloatingActions","selectedActions","totalRows","buttonActions","maxButtons","baseActions","sperActions","fixedContainer","fixedContainerMobile","isPopup","mobile","compactActions","CustomRoot","CustomToolbarFunc","CustomToolbar","RenderRow","onRowClicked","rowTitle","rowIsClickable","cursorBehavior","canClickRow","ClickToViewUnderlyingData","TableRow","getRowProps","TableCell","getCellProps","CustomEmptyTable","customContent","EmptyTableWrapper","TableHeaderCellLabel","RenderGroupedRow","ImportButton","handleImport","menuItems","showSingleImportButton","Import","keepMounted","defaultGetSubRows","defaultCheckIfRowIsSelectable","tableRowsSize","getSubRows","manualPagination","manualSorting","enablePagination","alwaysShowTableHeader","baseSortBy","filtersButtonAnchorEl","setFiltersButtonAnchorEl","useSortBy","useExpanded","usePagination","addRowSelect","columnsDefinition","columnDefaults","DefaultRenderer","useTable","manualSortBy","manualGlobalFilter","autoResetSelectedRows","autoResetPage","getTableProps","getTableBodyProps","headerGroups","reactTableRows","reactTablePage","gotoPage","selectedFlatRows","isAllRowsSelected","setSortBy","isSomeSelected","accumulator","appliedFiltersLength","alreadySelected","setAlreadySelected","filterRef","handleFilterOpen","customProcesing","globalSearchOpen","selectGlobalSearchOpen","showGlobalFilter","defaultPageActions","dataCount","FilterIconButton","filterLength","innerRef","rowsPerPageOptions","sortedUniq","handleSortBy","sortAction","newSortBy","sortDescFirst","isSortedDesc","existingSortBy","existingIndex","hasDescDefined","sortByActual","topMessage","setTopMessage","setGlobalMessage","ShowNotRelatedServiceGroups_warning","setIsCards","onLoading","baseTableActions","ConfigureColumnsButton","ExportButton","selectedFilterRowProp","onDownloadTemplateClick","Table","Cards","table_id","tableHead","TableHead","headerGroup","getHeaderGroupProps","getHeaderProps","getSortByToggleProps","TableSortLabel","IconComponent","TableHeaderIcon","isSorted","hideSortIcon","TableToolbar","showMenu","showGlobalSearchIcon","toggleGlobalFilter","FilterContainer","BasicFilter","SelectedActions","GlobalFilter","FiltersButton","FiltersGroupDisplay","openFilter","useCustomToolbar","useTabsSection","selectedTabValue","showClear","TableError","TableCardGrid","TableBody","rowIndex","summaryRow","TablePagination","colSpan","rowsPerPage","labelRowsPerPage","RowsPerPage","MenuProps","labelDisplayedRows","PaginationMobile_Info","Pagination_Info","onChangePage","onChangeRowsPerPage","newPageSize","ActionsComponent","TablePaginationActions","NoTableData","useFloatingActions","selectedFloatingActions","buttonFloatingActions","selectPrintPDF","printPDF","selectPrintPDFPrinting","useSections","Sections","selectPrintPDFisLoading","isLoading","EnumPicker","nameRender","EnumNamesArray","selectedOption","withEnumOptions","isMember","selectedUser","selectedUserGroup","samePrimaryUserGroup","userGroups","ug","Select","renderValue","classNames","ITEM_HEIGHT","displayEmpty","SavedLists","savedActions","selectedServiceGroups","fetchView","myViews","setMyViews","fetchViewState","fetchViewPromise","selectedView","displayedOptions","getViewDislpayName","renderedView","selectedChangeLocation","selectedViewChange","removeSelected","openDetailsList","FilterBox","InstrumentList","PleaseSelectView","MySavedLists","ListItemText","SharedLists","ManageLists","AddSavedView","Badge","textAlign","BadgeCounter","customCount","hasValue","NumberFieldFilter","assetBuildingUrl","publicBuildingUrl","LocationsUrl","initBuildingData","BuildingPicker","assetCampusUrl","publicCampusUrl","locationsUrl","initCampusData","CampusPicker","CampusByServiceGroupFilter","convertRoomWithBuildingName","BuildingName","assetRoomUrl","initRoomData","RoomPicker","RoomByBuildingFilter","useResponseModel","responseFailed","ImportAdditionalData","ImportResult","BaseOptionsMultiPicker","CalendarPagePaths","initOnlineServiceData","OnlineServicePicker","initAssetData","AssetPicker","Toggle","Switch","BasicToggle","isChecked","setIsChecked","FormGroup","control","doUpdateSections","doSaveSections","printPDFSaga","updateSections","saveSections","setPrinting","setUseSections","updateSection","clearLoading","tables","table","printPDFActions","usePrintPDFSlice","RequiredFieldsContext","createContext","requiredFields","ValidationSchemaProvider","skipValidation","describe","fieldValidationSchema","getIn","tests","Provider","useIsRequired","useContext","ServiceGroupRegistrationStatus","FormAssetsPicker","ReferenceType","AddCoverConsumable","onAddClick","AddConsumable","AddServiceFromSelection","getServiceTypes","addServices","removeServices","addAndRemoveServices","buttonName","newSelectedServices","setUpdated","isBarcodeScanned","fetchServiceTypes","setServiceTypes","fetchServiceTypeState","fetchServiceTypePromise","added","AddService","addService","useAssetSelection","offlineTypeFilter","onClickCapture","ContentWrapper","NotFound","AllServices","SelectAddOnService","InventoryBatchChip","renderService","onServiceClick","onAddBatchClick","renewStock","handleServiceChange","onRenewStockClick","batchRequested","savedCreatableRenewal","handleBatchListClose","availableBatches","currentBatch","handleChipSelect","InventoryBatchEmptyGenerateOn_info","InventoryBatchEmptyGenerateOff_info","InventoryBatch_notFound","handleBatchListOpen","InventoryBatchList","addNewBatchClick","onBatchClick","selectedBatch","showRenewStockButtons","createdRenewal","batchId","batches","QuickItem","QuickServiceItem","mandatory","handleRemove","createdEditable","minStep","maxStep","errorAdded","setErrorAdded","handleAddError","setQuantity","quantityInValid","err_LowQuantity","IsAdminOfService","counterUpdated","setCounterUpdated","arrowTitle","RenewStockArrow_info","ReservationOfflineServiceEditArrow_info","ConsumableCreateArrow_info","ReservationOfflineServiceCreateArrow_info","serviceChange","change","withError","precision","err_HighQuantity","OfflineServiceIsMandatory_info","OfflineServiceMandatory_err","StyledBaseTextField","spin","QuickServiceItems","BookQuickServices","refreshServices","refreshCosumables","offlineActions","initServicesFunc","onServiceRemove","onServicesRemove","onServiceUpdate","createServiceFromServiceType","createServicesFromServiceType","loadSeviceTypes","onAddAndRemoveServices","showScannerView","useDropDownSelectionFirst","fetchServices","currentUser","serviceCreated","setServiceCreated","setServices","fetchServicesState","fetchServicesPromise","handleRemoveService","handleAddService","StokRenewed","handleAddServices","handleRemoveServices","newServices","handleAddAndRemoveServices","staticServices","addedServ","focusedService","hasServices","ScannerView","selParams","actionType","offTypeIds","AssetsSelection","getUsageSettings","HasAdminRoles","IdleTimeout","AutoEnd","UpdatedManually","IsGuessLogOffTime","OngoingUsage","PastUsage","Owner","TypeId","IsLoanDescType","IsRoomType","OfflineUsageEndServices","AbruptlyEnded","IsEditable","HasErrors","manually","AccSerIds","AccServiceId","Operator","HasInvoicedCharges","SavedOfflineServices","Reset","doInitUsage","doInitUsageEdit","doChangeUsageData","doCreateOrStartUsage","doUpdateUsage","doStopUsage","usageSaga","UsageApi","initUsage","initUsage_Success","sid","AllowOverlappingUsages","IsManual","manual","changeUsageData","loadReservations","initUsage_Error","getUsage","initUsageNotFound_Error","usageSettings","getValidationState","validateUsageData_Success","validateUsageData_Error","getUsageChangeState","updateSettings","extendUsageSettings","changeUsageData_Success","changeUsageData_Error","updateUsageSettings","dtoState","startUsage","menu_UsageDetails","UsageDetails","startUsage_Success","startUsage_Error","originalDto","updateUsage","updateUsage_Success","updateUsage_Error","usage","stopUsage","stopUsage_Error","stopUsage_Success","validateUsageData","refreshOfflineService","resetUsageChangeState","setStopUsageProcessing","setShowEndUsageDialog","setCreateManully","setUsageStarted","usageStateActions","useUsageStateSlice","doSaveState","doSetRepetitiveValue","repetitiveSaga","saveState_success","setRepetitiveValueSuccess","setRepetitiveValue","repetitiveValueHandler","resetRepetitiveHandler","useRepetitiveSlice","CalendarButton","FormFieldsPerRowVariant","offlineTypeRefs","selectOfflineTypeRefs","selectDetails","selectDetailsHasError","selectDetailsCompleted","selectOfflineRefsFilters","RemindBefore","defaultUrl","initUserMultiData","UserMultiPicker","BooleanRenderer","useReservationPermissions","IsAdminOrOwnerOf","filterKey","TableRoot","TableContent","ServiceRequestMilestoneStatusesUnionArray","mapAssetsToServiceFilterDto","mapAssetsToServiceTypeFilterDto","CreditContainer","CalculatePricing","creditProcessing","creditCompleted","pricingType","pricingBodyKey","PricingConfirmationLabelEditText1","PricingConfirmationUsageLabelEditText1","PricingConfirmationOfflineEditText1","PricingConfirmationLabelText1","PricingConfirmationUsageLabelText1","PricingConfirmationOfflineText1","Pricing_EstimatedCost","Pricing_Balance","Pricing_BalanceResult","FormAssetPicker","configurableColumnsCache","listId","configurableType","force","noThrowError","param","ListID","ConfigurableType","getTableColumns","ConfigurableColumnsSetUp","j","hasCustomName","CustomName","getColumnAccessors","ColumnExportConfig","isExport","expaneded","customparams","getPredicates","BaseFilterValues","GetFilter","SetValue","filterBy","rf","toDown","AssignUsers","AssignedUsers","AlertDescription","Downtime","InstrumentWasDown","EventEnd","OfflineRemarks","ReasonType","ReasonTypeId","ReasonTypeName","getSingleReminder","RemindMeBefore","WorkOrderTypeStatus","StatusName","RepairCodes","SymptomCodes","AlertTitle","AutoCreateTitle","StaffFormValues","fv","SubmissionFormValues","StuffCustomForm","HasAletForm","IsClosed","ClosedStatuses","ShowOnCalibrationHistory","NotEditable","TitleEnabled","EventTimeEnabled","DowntimeEnabled","AssigneeEnabled","entities","workModel","repeatAsset","times","repetitive","alert","offlineStart","offlineEnd","alertStart","offend","parseRepetitive","assetGuid","Guid","ass","timesGuid","AssetId","MaxDate","RepeatAssets","RecurringAssetUniq","RecurringGroupUniq","CommentIds","AssetName","getAlertStart","remindBefore","oneday","twodays","threedays","oneweek","onemonth","BuildingPickerFilter","handleBadRequest","ModelState","ms","initLocationData","LocationPicker","serviceGroup","initInstituteData","InstitutePicker","NotFoundPage","PageNotFound","noWrap","GoBackToHome","initDepartmentData","DepartmentPicker","UsageDetailsLink","useOpenUsageDetailsPopUp","useUsageDetailsLinkUrl","rId","rid","UsageReportLink","useReportUsageDetailsPopUp","useReportUsageLinkUrl","DocumentPreviousUsageRecord","StatusLabel","AssetRenderer","additionalFilters","multipleServiceGroups","filterSettingToCondition","extractValuePart","memo","alertContent","showAlert","titleIcon","titleAsColumn","titleExtended","disableGutters","shortview","edge","titleAndIconMobile","RefreshContent","getSingleOnlineServiceType","GetAvailableOnlineServiceTypes","roomsEnabled","Software","initOnlineServiceTypeData","getOnlineServiceTypeAssetFilter","enabledTypes","enabledUsageTypes","enabledRemoteTypes","OnlineServiceTypePicker","ButtonConfirm","confirmationDialogTitle","confirmationDialogBody","AreYouSure","getRunTypeOptions","getRunTypeValue","runtype","RunTypePicker","initServiceGroupsMultiData","ServiceGroupByDivisionsFilter","ServiceGroupsPicker","OpenWorkOrderButton","orderId","bringBackUp","orderProps","Up","panelProps","openOrder","menu_EditWorkOrder","WorkOrderLink","useOpenWorkOrderPopUp","useWorkOrderLinkUrl","TabPanel","tabsPanelId","tabsId","scrollableContent","scrollablePanel","hidden","aria-labelledby","ShortText","FullText","HtmlRenderer","fullText","setFullText","needButton","setNeedButton","clientHeight","scrollHeight","clientWidth","scrollWidth","ShowMore","ArrayRenderer","UsersRenderer","OfficeTel","AssetLocationLastUpdate","assetId","fetchState","fetch","Updated","DoubleRender","AssetComments","left","staffonly","noTitle","AssetComment","getRows","isReadOnly","clickImage","Image","AssetImagesGallery","baseImageName","AssetImageNames","imageNames","onImageClick","NoHeader","editLink","getAssetEditLink","DivisionId","ApprovalRequired","TrainingMandatory","MinimumReservationDurationH","MaximumReservationDurationH","ReservationMinimumGap","CarryOverTimeSlotGap","CarryOverTimeSlotTypeName","dependencies","AssetsInstituteBusiness","Accessories","AssetCatGroupName","AssetCatGroupEnabled","SeeAllRelatedAssets","setProps","assetCatGroupId","AssetCat","GroupId","customPredicates","hideCoresToggle","AssetCategory","AssetCatEnabled","InternalServiceAvaliable","assetCatId","NickName","OtherNames","Brand","ModelNumber","Campus","Building","RoomNumber","LocationsList","EquipmentExpert","ContactsPersonForEquipment","ExternalCompany","MainSpecificationRange","ElectricalSpecs","FunctionalCharacteristics","WebLink","RoutineActiveAnalysisCapable","Tags","Asset_ExtraDate0","Asset_ExtraDate1","Asset_ExtraDate2","Asset_ExtraDate3","Asset_ExtraDate4","Asset_ExtraDate5","Asset_ExtraDate6","Asset_ExtraDate7","Asset_ExtraDate8","Asset_ExtraDate9","Asset_ExtraText0","Asset_ExtraText1","Asset_ExtraText2","Asset_ExtraText3","Asset_ExtraText4","Asset_ExtraText5","Asset_ExtraText6","Asset_ExtraText7","Asset_ExtraText8","Asset_ExtraText9","Asset_ExtraText10","Asset_ExtraText11","Asset_ExtraText12","Asset_ExtraText13","Asset_ExtraText14","Asset_ExtraText15","Asset_ExtraInt0","Asset_ExtraInt1","Asset_ExtraInt2","Asset_ExtraInt3","Asset_ExtraInt4","Asset_ExtraDec0","Asset_ExtraDec1","Asset_ExtraDec2","Asset_ExtraDec3","Asset_ExtraDec4","Asset_ExtraBool0","Asset_ExtraBool1","Asset_ExtraBool2","Asset_ExtraBool3","Asset_ExtraBool4","Asset_ExtraUrl0","Asset_ExtraUrl1","Asset_ExtraUrl2","Asset_ExtraUrl3","Asset_ExtraUrl4","Asset_ExtraRichText0","Asset_ExtraRichText1","Asset_ExtraRichText2","Asset_ExtraRichText3","Asset_ExtraRichText4","Asset_ExtraDDL0","ExtraDDL0","Asset_ExtraDDL1","ExtraDDL1","Asset_ExtraDDL2","ExtraDDL2","Asset_ExtraDDL3","ExtraDDL3","Asset_ExtraDDL4","ExtraDDL4","Asset_ExtraDDL5","ExtraDDL5","Asset_ExtraDDL6","ExtraDDL6","Asset_ExtraDDL7","ExtraDDL7","Asset_ExtraDDL8","ExtraDDL8","Asset_ExtraDDL9","ExtraDDL9","Asset_ExtraDDL10","ExtraDDL10","Asset_ExtraDDL11","ExtraDDL11","Asset_ExtraDDL12","ExtraDDL12","Asset_ExtraDDL13","ExtraDDL13","Asset_ExtraDDL14","ExtraDDL14","Asset_ExtraDDL15","ExtraDDL15","BrandBarcodeNumber","ServiceContract","WarrantyEndDate","LifeDateView","ExportLicense","InternalEquipmentBarcodeNumber","AccountingId","AssetClassification","AssetLocation","AssetContacts","AssetIdentifiers","AssetAdditionalInfo","AssetSectionLabel7","AssetSectionLabel8","AssetSectionLabel9","AssetSectionLabel10","Doi","doiURL","AssetDoiTooltip","AssemblyStructure","DOI","assemblyStructure","showTitle","SnapshotLink","equipmentId","showPicker","AssemblyPastSnapshots","Range","MinValue","MaxValue","CommentsAndAttachments","CommentsAreStaffonly","ShortDescription","ExcludeAssetDocumentsColumns","AssetDetailsFiles","documentsColumns","getColumns","DocumentsTable","notFullWidth","noLabelRendersArray","asHtmlRenderArray","DefautltCell","RenderRows","cellData","RenderLeftSection","RenderRightSection","MismatchCore","MismatchCoreMessage","mismatchCore","updateGlobalServiceGroup","sg","MismatchAssetCore_warning","SwitchToThisCore","AssetDetailsTabContent","HideTopServiceGroupFilter","updRows","ImageGallery","assetPredicate","groupPredicate","predicatesString","documentsDataCount","setDocumentsDataCount","fetchDocumentsDataCount","ThereAreNoAttributesInAssetDetails","AssetBookingRules","InstrumentRestrictions","initUser","showTable","assetPickerDisabled","withNoPadding","hideEquipmentFormTitle","withNoWrapper","AssetTrainingSessionsColumns","GetPredicates","serviceGroupPredicate","Trainer","updateCounters","AssetTrainingSessions","getTrainingFilters","trainingSessionsColumns","AddNew","ManageSessions","upcoming","hasNextSession","trainingSessionPrimaryAction","TrainingSessionsTable","AssetArticlesTable","articlePrimaryAction","ArticlesTable","AssetWorkOrdersColumns","AssetCalibrationColumns","calibrationPredicate","GetWorkOrdersTableCount","AssetWorkOrders","workOrdersColumns","PageActions","allowToAddNew","NewWorkOrder","WorkOrder","initAsset","assetName","workOrderPrimaryAction","goToWorkOrders","WorkOrdersTable","ActiveIncidents","AssetDetailsTabs","tabs","selectedTab","setSelectedTab","handleSelectedTabChange","tabsPanels","Content","MobileDropDownTabs","handleTabChange","tabPanels","BasicTabs","selectedTabIndex","showAssetImageSaga","setImage","setShow","setShowImage","useShowAssetImageSlice","ImagePopupWrapper","AssetImagePopup","showAssetImageActions","disableBackdropClick","disableEscapeKeyDown","imagePath","ImageRender","imgPath","imageRendering","backgroundSize","backgroundBlendMode","AssetWaitingListColumns","AssetWaitingList","GetFilters","waitingListColumns","GetActions","waitingListPrimaryAction","goToWaitingList","ReservationWaitingListTable","WaitingList","countersForTabs","CountersForTabs","AssetPopUp","useRedirectToDash","addFromCalendar","assetStateActions","useAssetsSelectionSlice","setRows","selectColumns","setSelectColumns","expandColumns","setExpandColumns","setButtonsData","idChanged","setIdChanged","loadingAdditionalData","selectLoadingAdditionalData","setLoadingAdditionalData","loadingButtonsAdditionalData","setLoadingButtonsAdditionalData","openEndUsage","setOpenEndUsage","endUsageProcessing","setEndUsageProcessing","assetCover","counters","setCounters","assetProps","showAssetImage","setShowAssetImage","setImagePath","readOnlyUser","isDashboardCore","reservationsEnabled","hideTrainingSessionsSettings","hidePublications","DisablePublicationsModule","assetFieldEnabled","tempCounters","updateCountersEnable","handleImageClose","dict","publicationsEnabled","PublicationSettings","calibrationsEnabled","IncidentSettings","loadCounters","TrainingSessions","GetTrainingSessionsTableCount","WorkOrders","GetArticlesTableCount","GetWaitingListTableCount","loadAdditionalData","ad","AssetAssemblyStructure","Allowed_ByTraining","EndUsageIds","CanRequestAccess","ApprovalStatusId","CanBeCreatedFromLinkOnly","ReservationEnabled","NotActiveSince","loadButtonsAdditionalData","enabledAssetProps","columnNamesFilter","setRequestParams","DefaultAttributes","ExpandableRows","rs","DefaultRows","assetProp","AssetCatGroup","ServiceGroups","handleEndUsage","usageData","AssetDetailsApi","assetActions","useAssetActions","allowToUser","availabilityId","canBeCreatedFromLinkOnly","canRequestAccessToCore","coreApprovalStatusId","divisionId","saveCore","serviceGroupName","AssetDetailsTab_Details","commentsForStaff","AssetNoLongerActiveWarning","BookingRules","AssetDetailsTab_WorkOrders","Calibrations","Publications","menu_ReservationWaitingList","handleCloselClick","ConsumableType","RequestType","dataFound","ShowAssetFull","EndUsageConfirm","usageProcessing","Messages","err_Equipment_NotFound","SwitchTarget","updateX","openReservation","ReservationsOnly","openWorkOrder","DownTimeOnly","SwitchToReservationTitle","SwitchToDowntime","setSelectedOption","ActionIconButton","isNotBillable","ReservationEquipmentsPicker","ReservationSingleEquipmentPicker","ReservationsEquipmentFilter","firstInitEquipments","mandatoryIds","FormOfflineServiceTypePicker","CommentsWrapper","CommentSection","minChunkSize","UploadLargeFile","_pause","_busy","finished","fileId","uploadId","NeedCompleteMultipartUpload","uploadResponses","pause","DeleteUnfinishedLargeFiles","chunkSendResult","continueFrom","uploadEnd","CompletionResult","conscreateCancelToken","chunkSize","uploadChunk","Result","FileId","UploadId","ETag","PartNumber","CompleteMultipartUpload","finish","Api","uploadChunck","fileName","chunck","EMPTY","chunk","FileTypeId","FileCard","remorFile","canUplpoad","setInProgress","setProgress","setPart","setPause","getFileSize","notificationActions","uploadLargeFile","closeHandler","deleteUnfinishedLargeFiles","upload","stopAndCancel","Card","CardContent","ErrorDueUpload","ReUploadFile","string","SelectFile","filesPlaceholder","downloadFileName","maxFilesCount","maxSize","maxFiles","onDrop","acceptedFiles","useDropzone","getRootProps","getInputProps","LargeFilesUpdate","AllowLargeFilesUpload","fileSizeMessage","MaxLargeFileSize","MaxUploadFileSize","Attachments","Template","DragTheFilesOrBrowse","AddComment","bindSubmitComment","formRef","scrollIntoView","behavior","block","inline","userSchema","Users","initial","innerClicked","handleSubmit","validationSchema","formik","submitForm","getFieldHelpers","VisibleToUsers","fixedWidth","WriteAComment","isSubmitting","fileSizeToString","dp","thresh","abs","units","FileButton","canRemove","onDeleteFile","openDelete","setOpenDelete","sendNotifications","msg_DeleteFile","Grid","rawName","suffix","shortenName","Delete","err_DeleteFileFailure","CommentCell","setHover","setEdit","setFiles","currentUserComment","CreatedBy","uploadedFiles","filesUpload","isCommentAdmin","hasEditRights","getComments","UserAvatar","Edit","CommentsContainer","emailBody","emailSubject","shouldSendEmail","sectionTitle","setCount","sortedComments","writeCommentOpen","setWriteCommentOpen","sendMail","useSendMail","innerSender","createEmail","DefaultEmailTemplateBody","DefaultEmailTemplateSubject","DefaultPageName","DefaultReferenceName","CommentsCount","Comments_EmptyMessage","Subject","renderToStaticMarkup","SaveToLog","Cc","Bcc","I18nUseTranslation","BookitDateTimePicker","dateId","timeId","dateName","timeName","dateLabelInline","timeLabelInline","parsedValue","setTimeValue","setDateError","handleDateChange","displayValue","getSeconds","handleTimeChange","dateError","timeError","setTimeError","handleOnError","onDateError","onTimeError","noLabelInline","datePlaceholder","timePlaceholder","fromTimZoneToUTC","lastIndexOf","utcDate","zonedTimeToUtc","utcToZonedTime","parseExact","ts","timeOfDay","toTimeZoneUTCDate","datetime","dateOfDay","parseDateExact","selectAssetInventory","assetInventory","selectRoomSelected","selectedRoomState","selectLocationSelected","selectedLocationState","selectSubLocationSelected","selectedSubLocationState","selectScanProcessing","scanProcessing","selectNoRoomAccessProcessing","noRoomAccessProcessing","selectInventoryLogFilters","logFilters","CustomFormApi","customFormId","CustomFormAsSection","fieldsPerRow","asSection","sectionProps","ThreeFields","CustomFormContent","formType","validationEnabled","TwoFields","onFieldChange","isVisibleField","sortedActiveFormFields","fieldRequired","useRequest","Request","useCustomFormSection","SingleColumnView","OneField","bindSubmitForm","formName","formIsValid","setInitialValues","validateOnMount","validateOnChange","validateOnBlur","formikHelpers","CustomFormControl","submitFormRef","FormType","onLoadCompleted","onLoadStarted","originalFiles","setOriginalFiles","fetchCustomForm","loadValue","fieldId","InitFormFiles","resvalue","fetchFormValues","getFormValues","fetchFormState","fetchFormPromise","loadedValues","setValues","serializedvalues","vals","portalRef","formFieldId","Portal","FieldsPerRow","WaitingListSignUpLink","openSignUp","useOpenWaitingListPopUp","ReservationSignUpWaitingListDetails","signupProps","initialDetails","SignUpWaitingListDetails","ConfigurableColumns","TemplateColumns","ScreenId","Iad","iad","accServiceId","ImportTemplate","Ext","ext","importImages","maxContentLength","ExportImportActions","Export","ImportImages","ServiceMultiFilter","ServiceAdminFilter","ServiceReservationFilter","filterByServiceGroups","initCompleted","refreshAfterInit","InvoiceStatuses","InvoiceDetailsLink","useOpenInvoiceDetailsPopUp","useInvoiceLinkUrl","DownloadFileButon","Error_FileNotAvailable","Download","ServiceShortPicker","InitServiceShortData","InitServiceShortDataByRefType","refTypeId","Offline_ServiceRequest","ServiceByOfflineRefernceFilter","getUnitTypesData","UnitTypePicker","FormInputFile","submitCount","showError","fileInputProps","errorMesage","showPreview","saveFiles","RepetitiveFor","AccompaniedServicesPicker","SingleAccompaniedServicesPicker","ReservationsAccServicesFilter","FormReservationEquipmentsPicker","autoExpand","FormReservationStatusPicker","ReservationStatusPicker","ReservationCustomForm","customForms","customFormRef","mandatoryForms","optionalForms","isAsyncChangeLoading","selectedForms","formValuesForms","formId","StartTimeListener","initialStart","initialEnd","equipmentSettings","changeHandler","fullDayReservation","manualChange","prevStartTime","setPrevStartTime","prevEndTime","setPrevEndTime","isStartChanged","isEndChanged","initilized","setInitilized","validateForm","prevEnd","EndTimeListener","initialized","setInitialized","newEnd","ChipCheckBoxGroup","isRow","FormLabel","ChipLabelGroup","FormChipCheckBoxGroup","setOnChanged","FormChipLabelGroup","ReservationOfflineServices","savedServices","savedServiceEditable","offActions","hanleUpdateLocalServices","ServiceGroupServicesAllowed","fetchServiceType","sortFunc","prepareService","ReservationOfflineServiceDefaultRemarks","staticService","initServices","servicesFiltered","combineMandatoryOfflineServices","onRemoveService","fetchAnyServices","potentialData","hasAnyServices","setHasAnyServices","fetchAnyServicesState","fetchAnyServicesPromise","SaveFormButton","CancelReservationButton","ApproveReservationButton","SaveForLaterButton","TransferButton","TerminateReservationButton","CreateTrainingButton","isLoaanDesc","onTerminate","settingActions","terminateProcessing","endUsageOfflineServiceIds","setEndUsageOfflineServiceIds","showConfirmEndUsage","setShowConfirmEndUsage","showEndUsage","setShowEndUsage","usageEndProcessing","setUsageEndProcessing","hasUsageProcessing","setHasUsageProcessing","HasUsage","OfflineServiceTypeIds","TerminateReservationMobile","TerminateReservationWithUsage","FormTrainingSessionPicker","TrainingSessionPicker","getReservationsLink","trainingSignUp","EditTrainingSessionLink","trainingSessionId","SignUpContent","TrainingSignUpAdminAlertContent","attendees","getSessionSlots","Attendees","TrainingSessionsCountMessage","ManageSignUps","EditTrainingSession","trainingSesisonId","FormReservationTimePeriodPicker","StartTimePropertyName","startField","startMeta","EndTimePropertyName","endField","endMeta","endHelpers","getStoreValue","handleStartTimeChange","produce","originalStartTime","originalEndTime","diff","adjustEndByStart","onStartTimeChange","handleEndTimeChange","onEndTimeChange","datePickerVariant","FormRow","startTimeLabel","startTimeDisabled","endTimeLabel","endTimeDisabled","fetchAssemblies","batchResponse","sorted","Path","assembly","assemblyParts","AssemblyContent","EquipmentsDataAssemblies","reservedAssemblyParts","extendState","fetchAssembliesPromiseState","fetchAssembliesPromise","popperAnchor","equipmentsData","HasAssemblyParts","Popover","reservedAssemblyPart","RenderAssemblyParts","NoDataFound","PartsIncludedWithin","err_ErrorOccured","OrderContent","ReservationWorkOrders","onWorkTypeClick","refreshWorkOrders","equipmentIds","relatedAssets","relatedWorkOrders","loadWorkOrders","workOrdersLink","workOrdersLinkTitle","ReservationAlertsLink","titleLink","StaffOnly_Icon","NoReservationAlerts","PleaseSelectAnAlertType","FormWorkFlowBooking","useWorkFlowPicker","WorkflowBookingPicker","entityVal","ReservationRequestDetails","relatedReservation","RequestWrapper","TotalRowsCount","TotalSamples","AssociatedRowsCount","SamplesAssociatedWithThisReservation","ReservationForm","repetitiveFormRef","onStatusChange","onOfflineServiceClick","editable","endTimeEnabled","waitingTransferApproval","transferToUser","terminationEnabled","handleTerminate","allowEditMultipleEquipments","offlineServicesErrors","assistedTrainingData","allowOngoingModifications","fieldHandler","requestedFor","equipmentChangeState","equipmentChangeCompleted","insertUpdateCompleted","savedForLater","durationErrors","setDurationErrors","permissionErrors","setPermissionErrors","prerequisitErrors","customFormErrors","setCustomFormErrors","otherErrors","setOtherErrors","otherWarnings","setOtherWarnings","otherInfo","setOtherInfo","otherSuccess","setOtherSuccess","customFormOnlyPrinted","mandatoryServices","ParentName","resetAllErrors","currentFormFiles","originalFormFiles","resetFieldHandler","reserValueKey","saveRequestedValue","addPrerquisitErrors","nodes","addOtheMessages","addCustomFormErrors","addPermissionsErrors","userGroupChanged","setUserGroupChanged","bookedbyChanged","setBookedByChanged","staffChanged","setStaffChanged","serviceChanged","setServiceChanged","accServiceChanged","setAccServiceChanged","budgetChanged","setBudgetChanged","statusChanged","setStatusChanged","startTimeChanged","setStartTimeChanged","endTimeChanged","setEndTimeChanged","tutoringChanged","setTutoringChanged","optionalChanged","setOptionalChanged","allIsValid","setAllIsValid","trainingSessionChanged","setTrainingSessionChanged","purchaseOrderChanged","setPurchaseOrderChanged","setOriginalFormFiles","setCurrentFormFiles","setFirstInitEquipments","currentStatus","setCurrentStatus","isTrainingSignUp","setIsTrainingSignUp","changeOfflineServices","operation","userProfileVisible","tutoringVisible","trainingSessionVisible","workflowBookingVisible","workflowBookingEnabled","trainingSignUpVisible","staffVisible","reservationCollaboratorsVisible","staffRequired","warningMessages","AvailableInstrumentsMessage","ReservationPendingApproval","Approve","res_wrn_NewPendingReservation","RequireGroupCoordApprovalMessage","res_wrn_NewPendingCoordReservation","res_wrn_DraftReservation","MakeFirm","Transfer","ReservationTransferMessage","TrainingSessionsRes_warning","infoMessages","TutoringAssistedReservation","AssistedReservationsPendingApprovalInfo","TransferReservation","TransferredToDetailsMessage","CancelTransfer","resIdTransferredFrom","TakeOverTransfer","NotUsingThisReservation","TerminateReservationInfo","ReleaseUnusedTimeButton","session","ReservationSidePanelAssemblyPart_ErrorMessage","successMessages","ReservationAssistedApproved","selectedEqs","staff","tsid","accid","singleClick","ft","srid","srrid","srsid","terminated","staffUser","trainingSessionData","staffUserName","err_res_StaffUserEquipmentRestricted","staffChangeHandler","multipleEquipmentsChangeHandler","accServicesSelected","getMandatoryOfflineServices","eqAccServices","newAccervices","handleValidate","userGroup","validations","resultValidation","permErrors","PermissionErrors","UserCanRequestApproval","allErrors","err_MultipleEquipmentsWithAndWithoutAccServices","handleFormChange","setTouched","TrainerName","validateForms","TrainingSessionData","DefaultBudget","foobar","instrument","forceTutoring","overrideTraining","accService","OverrideTraining","RequiresAdminApproval","getTutoringRequired","computedSchema","reservationSchema","optional","OnlineService","err_OnlineServiceFieldRequired","AssemblyPartReservationCanNotBeUpdatedDirectly","BudgetNumber","HideExperiments","res_err_BudgetExperimentRequired","otherwise","err_UserFieldRequired","_errStartTimeRequired","_errEndTimeRequired","err_EndTimeLowerThanStartTime","valueOf","OrderStatus","ExperimentEln","Experiment","Attendance","PartialAttendanceStartDuration","PartialAttendanceEndDuration","err_AccompaniedService_required","AccompaniedService","CollaboratorUsers","withMutation","BudgetIsRequired","FundingTypeRequired","StaffUserRequired","err_WorkflowBookingRequired","prevProcessing","setPrevProcessing","handleFullDayReservationChange","currentPeriod","adjusted","adjustSchedulerEventTimes","partialReservationDetailsState","enableReinitialize","messageList","fieldDisabled","reservationCollaboratorsFilter","getReservationCollaboratorsFilter","staffUserPickerPredicates","equipment","BudgetListener","setUserGroup","setFundingType","UserGroupListener","UserNameListener","isReservations","warningNodes","infoNodes","successNodes","PleaseSelectServices","FormAccompaniedServicesPicker","PleaseSelectAnAccompaniedService","tutoringRequired","rotate","AddingsMandatoryEquipments","AddingsOptionalEquipments","ReservRelatedFilter","ReservationName_Desc","FullDayReservation_Description","FormRestrictedUserGroupPicker","SponsorDepartment_Desc","ReservationUser_Desc","IsDefault","StaffUser_Info","PleaseSelectStaffUser","FormUsersPicker","CollaboratorUsers_Info","ReservationTrainingApproval_Desc","TrainingSignUp_info","RepetitiveControl","RepetitiveReservation","Reservations","RUN_DETAILS_PAGE_PATH","ReservationSampleRunId_Desc","ReadOnlyDetails","ApproveTrainingRecords","handleApproveOnce","handleEditAssisted","appSetActions","existingTrainings","servicesWithoutTraining","TrainingRecordId","showPopupAccordingToSetting","NotShowPopup","showPopup","handleEditClick","equId","equIds","fatherId","handleNweCreateClick","handleCreateTrainings","postData","TrainingLevelId","trdata","TrainingsCreatedSuccessfully","TrainingsAlreadyExist","ApproveOnce","menu_EditUserTraining","CreateDetailedTraining","ApproveForGood","AssistedReservationApprovalOptions","This_user_already_has_a_valid_training","CreateNewTrainingRecord_YesNo","handleTransfer","transferAllowedToGroup","budgetExpirementModuleEnabled","trnsferSubmitted","trasferToUser","setTranferToUser","TransferReservation_info","TransferToUser","ReservationModifications","getModificationsColumns","Done","TTable","ModificationsHistory","Period","onCloseReservation","printActions","innerFormRef","hasChanges","repetitiveValues","selectRepetitiveData","actionCompleted","reservationProcessing","confirmAssisted","transferStepWaiting","transferUser","transferredForId","reservationNotFound","setPrint","printExpanded","setPrintExpanded","handlePrintToPDF","handleClosePrintToPDF","confirmBeforeTransfer","setShowTransfer","setConfirmBeforeTransfer","firstLoad","setFirstLoad","requestCompleted","setRequestCompleted","showConfirmRecurring","setShowConfirmRecurring","showConfirmAssisted","setShowConfirmAssisted","createTrainingOpen","setCreateTrainingOpen","showTransfer","showCalculateCredit","setShowCalculateCredit","confirmCloned","setConfirmCloned","canceled","setCanceled","openModifications","setOpenModifications","userReadOnly","allowSortenReservation","timeEnabledForOwner","timeEnabled","canBeCanceled","canBeApproved","canSaveForLater","reservationCanceled","calculateButtonVisible","not_restricted","noInstumentRestricted","confidential","workOrderSwithProps","eqids","firstInitilized","offH","eStart","aType","sympt","aStatus","aStart","useSwithButtons","handleSaveClick","handleSubmitForm","cancelReservation","approveReservation","draftReservation","handleChangeStatus","setOfflineServicesErrors","handleSetError","AutoEndReservation_remarks","handleUpdateAllRecurrent","handleUpdateFollowing","Following","handleUpdateJustOne","assistedApproveOnse","handleByApprovalConfirm","handleMaxReservationComplexityValidationResult","editAssisted","TrainingDetails","onTrainingClose","handleEquipmentClick","handleRestrictionsClick","restrictProps","RestrictionDetails","handleOfflineServiceClick","otherProps","handleWorkTypeClick","woProps","handleAddBatchClick","batchProps","stid","handleCalculateCredit","mactions","CancelReservation","ApproveReservation","CreateTraining","OfflineServicesError_info","CalculatePricing_info","res_SaveAndClone_info","SaveAndClone","CreateAndClone","relId","ShowRelatedReservations","refType","refId","Charges","manualUsage","Usages","PrintPdf","pageTitle","CloneReservation","AddReservation","menu_ReservationDetails","menu_NewReservation","isGroupAdmin","ByApprovalAvailable","MaxReservationComplexityReached","confirmPopover","MaxReservationComplexity","CancelMultipleReservations","UpdateMultipleReservations","WeeklyReservationConfirmationMessage","JustThisOne","CancelFollowing","UpdateFollowing","CancelAll","CloneReservationConfirm","Proceed","transfer","ByApprovalConfirmationModalTitle","ReservationConfirmByApproval","NotAllowedContent","RestrictedNotAllowed","Continue","PrintToPDF","printTitle","onBeforeunload","DATE_PERIODS","DatePeriodsPicker","getOptionsCallback","UserGroupsProviderTypes","RadioGroup","TransformDate","ctx","isType","replaceIcon","isExternal","toMenuItemEntry","LinkWithChildren","filterVisible","HideReact","IsAdminSettings","Hide","prepareMenu","childNodes","adminItems","MainTab","SubTab","mainTab","groupTab","GroupTab","closeOnClick","findSelectedMenuEntry","loweredPathName","loweredLink","isExact","doPrepareMenu","doLocationChange","sideBarSaga","selectRouterPathname","setMenuItems","selectedItem","setPathName","selectMenuItems","activeItem","LOCATION_CHANGE","group","toggleExpand","item2","setMenuName","entry","sideBarActions","useSideBarSlice","FormAutocompleteOptions","FormAutocomplete","ExternalApi","isMultiple","OptionsSourceType","deserializeOptions","optsArray","opt","CustomFormDropDown","externalLoadData","FormAutocompleteMulti","FormAutocompleteMultiOptions","CheckWrapper","ExpandWrapper","checkboxProps","headerProps","checkIfRowIsSelectable","shouldSelectPage","checkIfAllSelectableRowsSelected","isSelected","isSelectPage","getToggleAllPageRowsSelectedProps","getToggleAllRowsSelectedProps","indeterminate","getConditionalSelectHeaderCheckboxProps","checkProps","getToggleRowSelectedProps","getConditionalSelectColumnCheckboxProps","getToggleRowExpandedProps","Values","rowValues","getArray","modelValue","updateOption","reccurentAssetId","recurrentGroupId","alertTypeId","AssemblyTypes","AssemblyTypesShort","AdminActions","menuTab","subTab","siteMapProvider","adminSettings","adminSettingsActions","AssetsSubTabUnionArray","ar","AssetsRelatedSetting","assetBaseUrl","initAssetCatGroupData","AssetCatGroupPicker","noGlobalServiceGroupFilter","GetResponseMessages","infoText","initAssetCatData","AssetCatPicker","noServiceGroup","PartOfDay","doChangeViewMode","doChangeViewModePartial","changeLocation","doGetEvents","doGetServices","doGetDerivedServices","doEdit","doEditTrainingSession","doEditReservation","doEditAlert","doReset","doUpdateMultipleMode","doUpdateEmptySlotClick","doGetEmptySlotAdminClick","doSetFilters","doResetWorkOrder","schedulerSaga","previous","isStateEqual","forceEvents","getEvents","setPreviousViewState","pickViewState","applyStateSearchParams","periodFilterFieldName","groupByFilterFieldName","currentMode","previousMode","eventsParams","splitFilter","eventFilters","training","serviceRelatedFilter","ReservationOrDowntime","sharedFilter","servicesFilter","equipmentIdArray","withReservationsOnly","fetchedServices","reservations_fields","effects","fetchEvents","fetchTrainingSessions","noServicesSelected","loadWorkingHoursForFetchedEvents","fetchWorkingHours","fetchedEventsEffect","fetchedTrainingSessionsEffect","fetchWorkingHoursEffect","fetchedEvents","fetchedTrainingSessions","fetchedWorkingHours","getEvents_Success","offlineServicesFilter","getOfflineHours_Success","distinctEquipmentIds","getDerivedServices","getNonWorkingHours","nonWorking","getNonWorkingHours_Success","getTutoringWorkingHours","tutoring","getTutoringWorkingHours_Success","ReservationOrDowntimeEnum","OffLine","trainingFilterBuilder","startParameter","endParameter","prepareDateParameter","serviceIdParameter","getServiceDetails","getServices_Success","needMoreServiceProps","servicesResponse","requiredProps","actualProps","getDerivedServices_Success","trainingSession","reservationDetailsState","reservationSidePanelOpened","requestedServices","defaultMultiModeBehavior","equipmentChanged","payloadServiceIds","requestedServicesAssemblyIds","TopAssemblyId","useRequestedServices","Scheduler_AssemblyPartSelected_InfoMessage","reservationSidePanelServiceId","sample_run_id","alertQueryParams","alert_type","updateMultiMode_Success","updateEmptySlotSettings_success","gsettings","defaultEmptySlotSetting","CalendarTimelineEmptySlotClickSettings","defaultEmptySlotClick","WhatToAdd","userEmptySlotAdminClick","userSetting","getPredicate","predicate","serviceRelatedFilters","filteredServices","serviceFilterValue","MaximumTimelineRowsLimit","maxTimelineServices","CalendarServicesPickerCapacity","maxCalendarServices","maxServices","changeViewMode","changeViewModePartial","getServices","updateMultiMode","updateEmptySlotSettings","getEmptySlotAdminClick","TimelineGroupBy","withNoChangeLocation","changeGroupBy","getEvents_Error","getTrainingSessions_Success","multipleInstrumentsMode","setNotUseLocation","setSelectedReservationEvents","resetExportToPDF","schedulerActions","useSchedulerSlice","initUserGroupMultiData","UserGroupMultiPicker","RoomPickerFilter","DEFAULT_WIDTH","cleanedValue","pattern2","pattern3","pattern4","pattern5","tryCleanValue","titleValue","parsedTitle","htmlParse","maxChars","toCharsWidth","doTruncate","data-html","TruncatedDescriptionText","Styled","toCssWidth","lengthType","initInstituteTypeData","InstituteTypePicker","TableSkeletonRoot","TableRowsSkeletonRoot","HeaderSkeleton","CellSkeleton","CardSkeleton","ShadowSkeleton","CalendarSkeletonRoot","RenderTableHeaderCells","RenderTableRows","aria-live","aria-busy","TableCardsSkeleton","TableRowsSkeleton","TableContainer","CalendarSkeleton","FlexRowDiv","FlexRowCenter","FlexRowNoContent","FlexRowStart","StyledCardActions","CardActions","StyledCardContent","BasicCard","cardContent","iconTitle","maxContentHeight","trimTitle","showCheckBoxOnTop","imgError","setImageError","defaultImgSrc","imageDimensions","setImageDimensions","imageUrl","src","onload","loadImage","showHeader","contentHeight","mouseUp","setMouseUp","trimTitleText","trimmedTitle","trimSize","StyledCard","cardActive","cardInfo","cardSuccess","cardWarning","cardError","position_vertical","position_horizontal","cardSize_small","cardSize_medium","cardImage","parentElement","ImageContainer","mobileSizeMedium","mobileSizeSmall","backgroundSizeCover","backgroundSizeContain","onLoadedMetadata","onLoad","hasImage","cardImageExist","border","textOverflow","wordBreak","overflowX","paddingRight","useGlobalServiceGroupsFilter","applyGlobalServiceGroupsFilter","gloabalSettings","initSubLocationListData","SubLocationListPicker","doLogin","doRedirectToLogin","internalIdLoginSaga","SESSIONSTORAGE_KEY","storeInternalIdLogin","sessionStorage","removeItem","setItem","loadInternalIdLogin","getItem","storedIdentity","init_success","isLargeAnimals","General","login","redirectToLogin","logout","returnUrl","identity","clearError","useInternalIdLoginSlice","baseUrl","initSuperGroupData","SuperGroupPicker","NewWorkOrderButton","setAssets","workTypes","setWorkTypes","loadingAsset","setLoadingAssets","handleAssetChange","getParamFromUrl","useLocationChange","previus","AddEvent","CreateAnAssetRelatedEvent","bindPopover","NewWorkOrderRoot","right","QuickWorkOrderPleaseSelectAssets","PleaseSelectAnEventType","wt","AssetAlertType","NoAlertTypesFoundForSelectedAssets","BudgetExperimentStatuses","filterUrl","initRegionData","RegionPicker","onlineUrl","initMyAssetAvailabilityTypeMultiData","initMyAssetAvailabilityTypeOnlineMultiData","MyAssetAvailabilityTypeMultiPicker","arguments","prototype","excluded","sourceKeys","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgChevronUp","_ref","svgRef","titleId","xmlns","viewBox","fill","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","stroke","strokeWidth","strokeMiterlimit","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","_ref24","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","_ref39","_ref40","_ref41","_ref42","_ref43","_ref44","_ref45","strokeLinecap","strokeLinejoin","_ref46","_ref47","_ref48","_ref49","_ref50","_ref51","_ref52","_ref53","_ref54","_ref55","_ref56","_ref57","_ref58","_ref59","_ref60","_ref61","_ref62","_ref63","_ref64","_ref65","_ref66","_ref67","_ref68","_ref69","_ref70","_ref71","_ref72","SvgNotavailable","SvgNotAllowed","SvgNotFoundPage","SvgIcon","ChevronUpIcon","NotAvailableSVG","htmlColor","NotAvailableIcon","NotAllowedSVG","NotAllowedIcon","NotFoundPageSVG","NotFoundPageIcon","EndUsageOfflineServices","offlineIds","servicesSelected","setServicesSelected","UsageOfflineServiceDefaultRemarks","titleVariant","titleExtension","setSelectedServices","setRemarks","setIds","setReset","setUsageData","confirmUsageEnd","setConfirmUsageEnd","endUsageWithOffline","endUsageOfflineValid","confirmEndUsageTitl","ConfirmEndUsage_title","EndUsageConfirmTitle","EndUsageRoot","isProcessing","UsageEndOfflineService","ReasonRemarks","UsageEndRemarksPlaceholder","BasicCheckBox","ConfirmServicesCorrectly","ConfirmEndUsage","ConfirmEndUsage_err","useRemoveSearch","useAsyncDebounce","Search","useAssetsPermissions","allowedToViewUpgradeLocalApp","WorkButton","WorkOrderContent","getAssets","workTypeLoading","setWorkTypeLoading","assetLoading","setAssetLoading","TooManyInstrumentsSelected","wrap","useUserTrainingPermissions","allowedToViewUserTraining","domNode","attribs","class","attributes","withoutGlobalServiceGroupFilter","Cookies","MainTabs","AssetsSubTab","NoAuthNodes","HasChildNodes","ResourceKey","reg_NewUserRegistration","isAdminNode","ParentNode","menu_PublicAssets","SSOConfigurationError","searchItem","irurl","chitem","rurl","rpath","prurl","purl","rurl1","getCurrentMainNode","getUserNodes","parentNodes","currentPathNameLowered","elementPathName","nodeUrl","currentPath","nodeSegments","pathSegments","segment","isMatchingPath","newSearch","getCurrentNodes","currentNode","findNode","HasCustomRoleUrlPermission","filtered","nodeAccesibleByRole","it","findMainTabNode","subTabTitle","Settings","UserAccessToBudgets","GroupBudgetsAdmin","BudgetAdmin","patternOrChannel","keyfn","tasks","isKeyEmpty","task","tt","isPathAndQuery","hideAlert","useDialogAlertSlice","TitleSection","ShortTitle","showCopy","setShowCopy","copied","setCopied","truncatedTitle","cliTruncate","iconSize","StyledFormGroup","MuiFormGroup","FormAdminUsersPicker","FormAdminSingleUsersPicker","selectAssetsSelection","assetsSelection","selectAssetsSelectionFilters","nonEmpty","singleValueToId","mapped","ValueLabel","initValue","haidProject","Duration","RemainedSlots","MaxAttendees_NA","PleaseSelectATRainingSession","initids","getGetUserSelectionsAutocompleteFn","CustomFormUserSelection","RemindBeforePicker","selectRepetitive","selectRepetitiveFieldHandler","initSampleTypeData","SampleTypePicker","initWorkflowBookingData","initOfflineReferenceTypeData","OfflineReferenceTypePicker","FormRadioGroupBase","customLabel","touched","withTitle","restUrl","UserNotificationsApi","insertSignUp","updateSignUp","getSignUp","signOut","deleteSelectedRows","getSettings","FormRadioGroup","CustomFormAnswerQuestions","QuizScore","Points","indexToAlpha","CustomFormCheckBox","CustomFormDate","CustomFormDisclimer","CustomFormEmail","CustomFormNumberText","CustomFormParagraph","FormParagraph","CustomFormPositiveNumberText","CustomFormRadioGroup","CustomFormRichText","CustomFormShortText","CustomFormField","CustomFormDisclaimer","CustomFormFileUpload","requireComponent","offlineType","RefService","RefId","RefType","RefTypeId","ConverModelToDto","SampleRequestTypeId","SampleRequestTypeName","OnlineServiceTypeId","OnlineServiceTypeName","MergeModelsToDto","OfflineTypeRefsApi","doCreateRefs","doUpdateRefs","offlineTypeRefsSaga","initType","menu_OfflineTypeRefernces","OfflineTypeRefDetails","createRefs_Success","createRefs_Error","updatedPeriod","RelatedService","updateRefs_Success","updateRefs_Error","createRefs","updateRefs","resetFilters","offlineTypeRefsActions","useOfflineTypeRefsSlice","doGetInvoice","InvoiceDetailsSaga","setInvoice","getInvoice","InvoiceDetailActions","useInvoiceDetailsSlice","ServiceUserGroupPicker","FormServiceUserGroupPicker","bookitlab","BookitLab","convertAuthToIUserFilterDto","TabsWrapper","paddingLeft","TabPanelWrapper","SubTabsWrapper","borderLeft","FormDivider","SamplePlatePositionNamingTypes","LocationDetails","shallowEqual","DeatilsOperations","handleCancelClick","PageComponent","handleSubmitCallResult","submitcall","LocationContent","ModelDetails","Update","IdSpec","InvoiceChildRowBaseSchema","PleaseSelectABudgetNumber","PleaseSelectServiceGroup","PleaseSelectADate","AllowCreateInvoicesBy","AddPayment","invoiceId","amount","paymentId","onClosePayment","notifyActions","submitRef","sendResponse","refreshTable","submit","payment","PaymentApi","UpdatePayment","success_EditInvoicePayment","err_EditInvoicePayment","err_InvoicePaymentAdd","Method","setinitialValues","MethodId","PaymentMethodName","isMounted","PaymentSchema","err_PaymentMethodRequired","PleaseEnterAnAmount","positive","InvalidValue","getPaymentSchema","PaymentSchemaWithBudgetNotRequired","getPaymentSchemaWithBudgetNotRequired","Paymentform","FormPaymentMethodPicker","PaymentMethod","Submit","Payment","AddPaymentInvoice","ChargeApi","Resource","OtherService","BaseRate","CatRateTypeId","FeeType","SampleTypeId","SampleType","ActualRate","FormCatRateTypePicker","CatRateTypePicker","FormSampleTypePicker","AddCharge","onCloseCharge","insertedAt","setinsertedAt","insertedBy","setinsertedBy","userGroupByBudeget","Manual","setInitialValue","OnlineServiceId","CatRateType","SampleServiceId","SampleService","queryBudg","budgetRes","serviceGroupRes","budegtval","success_EditInvoiceLine","msg_addedChargeSuccessfully","budgetOnly","CreateInovicesBy","AlllowCreateInvoicesBy_BudgetsOnly","ChargeSchema","catRateType","Refund","Discount","negative","GetChargeSchema","ChargeForm","setAmount","bySystemSetting","FormOfflineServicePicker","Charge","AddManualInvoiceLine","LabelTypePage","LabelTypeEdit","useAllowedToChangeStatus","ArticleDetails","selectedArticle","refreshDetails","isSaved","articleDetailsForm","allowedToChangeStatus","CreatedByMe","PublicationRecordApproved_info","useCanEdit","canEdit","canAdd","useCanAdd","ExternalId","ExternalIdSource","openExternalEntry","ArticleEdit","editArticle","ArticleForm","getValue","PublicationDetails","EditAssociationButton","Authors","EnteredBy","EnteredAt","ArticleDoiLink","doi","ArticleDataset","Dataset","ISSN","ORCID","ORCIDs","Year","RelatedUser","RelatedUserDisplayName","CalibrationRecord","Journal","ArticlePageNumber","PageNumber","ParticipatedLabs","ParticipatedInstruments","Abstract","EditArticle","EditAssociation","AssociateThisPublicationTitle","AssociateThisPublication","assetSchema","assetsSchema","GetInstrumentFilter","sv","GetCalibrationRecordFilter","test_s","FormCustomPicker","CustomPickerFilter","ArticleWorkOrdersPicker","ArticleFormPicker","NewArticleDetailsForm","oldServiceGroups","setOldServiceGroups","setServiceGroups","instruments","setInstruments","canEditStatus","setCanEditStatus","ServiceGroupAsset","handleCloseClick","instrumentFilter","CalibrationRecordFilter","ServiceGroupAssetId","ArticleContributionLevelId","FirstInstrumentAssetName","FirstServiceGroupAssetName","CalibrationRecordName","DepartmentName","InstituteName","InstituteTypeName","statusPickerData","AddPublication","ArticlePleaseSelectEquipmentFirst","PleaseSelectWorkOrder","CalibrationRecord_info","PleaseSelectAUser","PleaseSelectAsset","ConvertNewToComment","newcomment","newFiles","ArticleComments","commentsFormRef","setchanged","newSavedComments","setNewSavedComments","newComments","setNewComments","Article","ArticleComment","EditArticleDetailsForm","editProcessing","detailsLoading","submitCommentRef","GetServiceGroupAsset","ConvertModelToEntityUserAttributesDetails","Attribute","AttributeLocalized","SSO","SSOAttribute","RegistrationForm","UserDetails","UserSidePanel","Order","ConvertEntityToModelUserAttributesDetails","UserAttributesApi","userAttributesDetailsSaga","initUserAttributesDetails_Success","initUserAttributesDetails_Error","initUpdateUserAttributesDetails_Success","initUpdateUserAttributesDetails_Error","menu_UserAttributes","UserAttributesDetails","createUserAttributesDetails_Success","createUserAttributesDetails_Error","SsoAttrSyncedWithUser","syncSSOAttributeValue","updateUserAttributesDetails_Success","updateUserAttributesDetails_Error","initUserAttributesDetails","initUpdateUserAttributesDetails","createUserAttributesDetails","updateUserAttributesDetails","UserAttrSyncedWithSso","resetUpdateUserAttributesDetailsState","resetCreateUserAttributesDetailsState","userAttributesDetailsActions","selectUserAttributesDetails","userAttributesDetail","selectCreateUserAttributesDetails","selectCreateUserAttributesDetailsCompleted","selectUpdateUserAttributesDetails","selectUpdateUserAttributesDetailsCompleted","selectUserAttributesDetailsProcessing","selectSsoAttrSyncedWithUser","selectUserAttrSyncedWithSso","UserAttributesForm","ssoAttrState","setSyncSSOAttributeValue","isNotEditableField","userAttributesDetailsSchema","sso","SsoAttrSyncUserWarning","SyncSSOAttribute","UserAttrSyncSsoWarning","SyncUserAttribute","SsoAttrUserAttrWarning","UserAttributeDetails","SSOAttribute_info","SyncSSOAttribute_info","SyncUserAttribute_info","MandatoryFieldsArePartOfTheRegistrationForm","hasUnsavedChanges","requestCreateCompleted","requestUpdateCompleted","ssoAttrSyncedWithUser","userAttrSyncedWithSso","createModel","editModel","baseModel","EditAttribute","AddNewAttribute","getInitialValues","getTicketSchema","samplesAutomationEnabled","FormPriorityPicker","PriorityPicker","FormServiceRequestStatusPicker","ServiceRequestStatusPicker","Form","AddSubTicket","SamplesAutomation","ServiceRequest","SubSamplesCount","TotalSamplesCount","handleCancel","AddSubServiceRequestTicket","editState","editItem","handleAddSubTicketClick","ParentTicketDetailsButton","getServiceRequestTicketTitle","ServiceRequestTicket","StockRenewalForm","onAddServiceClick","recentMostBatchesChanged","setRecentMostBatchesChanged","otherServicesSchema","stockRenwevalSchema","err_OfflineServiceTypeRequired","err_DateReceived_required","StockRenewal","createServices","onRemoveServices","onUpdateService","loadServiceTypes","setErrors","ReportConsumablesMainInfo","ReceivedDateTimeLabel","AutoGenerateNewBatchesDisabled_info","AutoGenerateNewBatches_info","ReportedConsumables","initialServices","stockRenewalServicesData","isReadOnlyUser","assetsFilter","renewProps","StockRenewals","RenewStockForm","batchChanged","setBatchChanged","serviceTypeSelected","setServiceTypeSelected","renewStockSchema","currVal","err_IntQuantityOnly","Batch","NotAllowNegativeInventory_currentEqualsZero_err","NotAllowNegativeInventory_currentMoreThanZero_err","err_InventoryBatch_required","RenewStockInfo","Consumable","Box","FormInventoryBatchPicker","AddNewBatch","EditSelectedBatch","renewStockData","RenewStockOfConsumables","InventoryBatchForm","inventoryBatchSchema","BatchName","err_BatchName_required","BatchExpirationDate","BatchPurchaseDate","err_BatchPurchaseDate_required","BatchInventory","err_BatchInventory_required","BatchLot","BatchPurchasePricePerUnit","NotAllowNegativeInventory_err","BatchInfo","Inventory_ServiceType_Description","inventoryBatchData","CreateNewBatch","ArticleAssociationForm","ConvertModelToEntityRequestStatusesDetails","RequestStatusesApi","requestStatusesDetailsSaga","initUpdateRequestStatusesDetails_Success","initUpdateRequestStatusesDetails_Error","menu_RequestStatuses","RequestStatusesDetails","updateRequestStatusesDetails_Success","updateRequestStatusesDetails_Error","initUpdateRequestStatusesDetails","updateRequestStatusesDetails","initRequestStatusesDetails","initRequestStatusesDetails_Success","initRequestStatusesDetails_Error","resetUpdateRequestStatusesDetailsState","resetCreateRequestStatusesDetailsState","createRequestStatusesDetails","createRequestStatusesDetails_Success","createRequestStatusesDetails_Error","requestStatusesDetailsActions","selectRequestStatusesDetails","requestStatusesDetail","selectCreateRequestStatusesDetailsCompleted","selectUpdateRequestStatusesDetails","selectUpdateRequestStatusesDetailsCompleted","selectRequestStatusesDetailsProcessing","RequestStatusesForm","requestStatusesDetailsSchema","RequestStatusDetails","Add","EventContent","ReservationEvent","MultipleReservations","selectedEvents","toSaveEvents","EquipmentChanged","UpdateReservations","EditTimelineReservationsTitle","QuickMultiReservationsAlertExt","ReservationsBeingEdited","FormWindowHoursField","SignUpUser","simplesubmitRef","closeApproved","closeRejected","loadedDetails","setLoadedDetails","termOptions","cancelOptions","usageOptions","simpleMode","setSimpleMode","isSimpleView","setIsSimpleView","setIsMounted","isAdminRole","isLabTech","isAdminView","err_NotificationHoursNegativeOrZero","GetSignUpSchema","simpleschema","GetSimpleSignUpSchema","closeMessageOnPanelOpen","UserNotificationsSignUpToWaitingList","handleSimpleSubmit","updatedModel","SignUpForm","ReservationCancel","ResTerminationNotification","UsageEndNotification","UserNotificationsResetToBasic","SimpleSignUpForm","WaitingListOptions","UserNotifications_SimpleMode","UserNotificationsSwitchToAdvanced","ReservationNewWaitingListSignUp","FormServiceShortPicker","FormOfflineReferenceTypePicker","MandatoryOfflineTypePicker","getInnerOptions","Mandatory_OnCompletion","FormMandatoryOfflineTypePicker","OfflineTypeRefsForm","refServiceChanged","setRefServiceChanged","offlineTypeChanged","setOfflineTypeChanged","refTypeChanged","setRefTypeChanged","Mandatory_Optional","RelatedServiceRequired_err","RefernceTypeRequired_err","MandatoryOfflineRef","MandatoryOfflineRef_required","offService","refPredicates","offlinePredicates","rtid","SelectAType","PleaseSelectAnItem","PleaseSelectServiceType","SelectAnOption","MandatoryOfflineRef_info","OfflineDefaultQuantity_info","OfflineTypeReferencesDetails","onCloseRefs","refsDetails","fullAdmin","SidePanelRenderer","QuizCreate","StartQuiz","QuizzDetails","QuizDetails","AddBillingAction","LabelType","PricePeriodsDetails","ArticleNew","InvoiceTemplatePopUp","CoreSelection","CalendarMessagesDetails","ReportConsumables","ServiceRequestMilestone","ServiceRequestMilestoneDetails","ServiceRequestMilestoneCharge","ServiceRequestMilestoneChargeDetails","InvoiceBatchesComments","AssetInventoryLog","InventoryLog","MultiReservations","SamplePlatesDetails","AssetFile","RegionDetails","screenType","SubscribersDetails","CostCentersDetails","OfflineTypeRefs","OfflineTypeReferencesPopUp","CustomFormPreview","PriorityMultiFilter","StatusFilterId","PriorityFilterId","IncludeStatus","ServiceRequestStatusMultiPicker","initServiceRequestStatusMultiDataBySelectOrder","PrioritiesUnionArray","initServiceRequestStatusMultiData","exclude","StyledDiv","closeButtonTitle","PopoverPaddingWrapper","BillingActionsApi","insertBillingActionsDetails","updateBillingActionsDetails","deleteBillingActionsDetails","billingActionIds","getBillingActions","screen","getBillingActionById","billingActionId","getBillingActionInvoices","batchInvoiceIds","processEmailAction","billingActionsParams","invoiceIds","ProcessSftpUploadAction","processStatusAction","getRecipientsEmailAddresses","billingActionsRow","emailTypes","EmailRecipientTypes","ShowOn","specEmailAddresses","SpecificEmailAddresses","PaymentMethods","inputComponent","ShouldCloseInvoice","wrapOnMobile","shrinkClass","hideRow","selectSamplePlates","samplePlates","selectSamplePlatesData","selectSamplePlatesTableState","selectBulkSamplePlatesCreate","TrainingActivationAllowedBySGAOnly","UpdateActiveTrainingWarningTitle","DeactivateTrainingMessage","ActivateButton","DeactivateTraining","Deactivate","deletIndex","defaultImg","pathSrc","setPathSrc","loadingImg","setLoadingImg","checkImage","onerror","alt","AssetThumbImage","hasImgeBroken","setHasImgeBroken","thumbSizeClass","ThumbRoot","getContrastText","Schedule","WorkOrderPicker","WorkOrdersCalibrationFilter","woTypeId","excludeIds","PriorityMultiPicker","withEnumMultiOptions","EnumMultiPicker","Priorities","SubscribersApi","insertSubscribersDetails","updateSubscribersDetails","deleteSubscription","CostCentersApi","insertCostCentersDetails","updateCostCentersDetails","deleteCostCenter","useStyles","makeStyles","EditableTable","tableInstance","isSomeselected","handleExport","newPage","range","SamplePlatePositionsPicker","plateId","samplePlateId","loadDatax","plate","SamplePlateTypeRows","columnsCount","SamplePlateTypeColumns","SamplePlateTypeColumnsNaming","Alpha","fromCharCode","SamplePlateTypeRowsNaming","S2Value","TargetSamplePlatePositionsPicker","FormGradientPicker","EstimatedRuntimeMinutes","SampleOverhead","TotalOverhead","SecondaryEquipment","CreateSampleRunReservation","runDetails","save","setSave","formikRef","CreateReservation","InstrumentId","SecondaryInstrumentId","GradientId","getReservationDuration","handleCreateReservationButtonClick","RunDetailsCreateReservation","SaveGradient_info","DialogContent","SampleRunGradient","DialogActions","totalMinutes","ExportForImportRunDetailsSamples","exportConfigurableColumns","samples_url","exportUrl","GetSelectedActions","validUpdate","Suffix","PopupSuffixComponent","handleSubmitk","AnalyticalSampleIDSuffix","AnalyticalSampleIDSuffix_info","AnalyticalSampleIDSuffixPopup","SuffixDialog","RunComments","runId","CommentsWrap","SampleRun","ImportSamplePlateForm","setFile","generatePlatesonImport","setGeneratePlatesonImport","handleFileChange","handleCheckboxChange","ImportRecords","paddingBottom","ImportComponent","hideMessage","onDownloadTemplateButtonClick","GeneratePlatesOnImport","FormRoomPicker","FormLocationPicker","ImportSamplePlates","importStarted","importFinished","Root","Container","RunDetailsPage","completion","requestactions","createdDate","showSuffixDialog","setShowSuffixDialog","samplePlateImportOpen","setSamplePlateImportOpen","samples","handleCompleteButtonClick","submitSuffixDialog","showCompleteDialog","handleExportButtonClick","SampleId","TMT_Type","TMT_Label","SamplePlateId","UniquePlateNumber","PlatePosition","NumericalPlatePosition","SamplePlatePicker","TargetSamplePlatePositionPicker","pactions","Complete","ImportTargetSamples","ExportForRobot","useConfigurableColumnsAdvanced","SampleRunsDetails","handleDownloadTemplateClick","DownloadTemplateRunDetailsSamples","hideImportButton","RunDetailsPageInstructions","ExportRunDetailsSamples","RUNID","EmailNotificationsApi","NOTIFICATIONS_LOG_PAGE_PATH","getFilters","EmailNotificationsPage","withGlobalServiceGroupFilter","scopeOfMonth","DeleteEmailNotficationsMonth","EmailNotficationsScreenWarning","isMainAdmin","Timestamp","Recipient","RecipientName","EmailTo","EmailCc","EmailBcc","EmailMessage","selectedRowActions","DeleteEmailNotificationsRows_info","ConfirmDeleteEmailNotif_title","ConfirmDeleteEmailNotif_message","OK","DeleteNotifications_success","DeleteNotifications_error","menu_EmailNotifications","AssetCatGroupFilter","AssetCatFilter","initProjectData","ProjectFilter","AllBudgets","InstituteFilter","DepartmentFilter","initAssetMultiData","AssetMultiFilter","AssetWorkOrderMultiFilter","initUserDisciplineData","UserDisciplinePicker","loadPublicData","UserDisciplinePublicPicker","BookitlabLogo","BookitlabLoginLogo","StyledToolbar","DashboardToolbar","DashboardContent","BaseURLMultiPicker","initInvoiceIdData","InvoiceIdMultiPicker","InstituteTypeFilter","getQrUrl","urlTemplate","assetDetails","AssetBarcodeUrlTemplate","getAssetQrUrl","Handlebars","compile","getQrUrlH","generateLabel","labelXml","assetData","dymo","framework","openLabelXml","objectMapping","getObjectMapping","objectName","writeData","splittedData","SubLocationName","setObjectText","staticObjectNames","getObjectNames","nameParts","assetPropertyName","properties","shift","Dymo","getPrinters","dymoLabelPrinterOption","printer","Device","initDymoFramework","getLabelWriterPrintersAsync","dymoPrinters","preview","labelType","blob","dataURItoBlob","Xml","download","Blob","getLabelXml","printParams","createLabelWriterPrintParamsXml","twinTurboRoll","TwinTurboRoll","errorDetails","dataURI","byteString","atob","mimeString","ab","ArrayBuffer","ia","Uint8Array","charCodeAt","registerHelper","maxLength","fillString","padStart","DymoPrinter","Zebra","BrowserPrint","getLocalDevices","device_list","printers","uid","noEscape","labels","zebra","Printer","stopWatching","send","getPrinterInterface","doGetPrinters","doGetLabelTypes","doGetObjects","doOpen","doPrint","labelPrintSaga","DymoPrinterSupported","dymo_printers","getPrinters_Error","ZebraPrinterSupported","zebra_printers","serializablePayload","getPrinters_Success","labelTypes","getLabelTypes_Success","getLabelTypes_Error","loadObjects","assetResponse","roomResponse","locationlistsResponse","sublocationlistsResponse","samplePlatesResponse","consumableTypesResponse","getAssetDetails_Success","getAssetDetails_Failure","selectLabelPrint","getAssetDetails","getLabelTypes","DymoPrinterIsNotSupported","print_Error","ZebraPrinterIsNotSupported","printerInterface","RoomBarcodeUrlTemplate","LocationBarcodeUrlTemplate","SubLocationBarcodeUrlTemplate","SamplePlateBarcodeUrlTemplate","ConsumableTypeBarcodeUrlTemplate","QR","printAction","print_Success","printState","closeAssetLabelPrintDialog","selectedPrinter","selectedTemplate","download_Success","download_Error","preview_Success","preview_Error","labelPrintActions","useLabelPrintSlice","initTrainingLevelData","TrainingLevelPicker","TrainingLevelFilter","trainingLevelPermissionsEnabled","userPermissionsEnabled","eq","UseServiceGroupTrainingLevels","useGlobalDOMEvents","keyup","Filters","PaperComponent","BackdropProps","invisible","clickAway","clickAwayFunc","LocationPickerFilter","EmailType","EmailTypeUnionArray","BasicDialogTitle","initServiceTypeData","ServiceTypePicker","withServiceGroupFilter","CustomerLogo","customerLink","setCustomerLink","customerImg","setCustomerImg","TopCustomerLogoLink","TopCustomerLogo","CompanyLogoAriaLabel","CompanyLogoAlt","TimelineGroupByUnionArray","parseCalendarPageParams","dashView","defaultviewType","parseType","presetPeriodToViewLength","getTimelineGroupBy","CounterIcon","allFiltersLength","CampusPickerFilter","ExportQRCodesButton","ExportQR","initReasonTypeData","ReasonTypePicker","assetTagsUrl","publicAssetTagsUrl","initTagsData","intIds","strIds","TagsPicker","noServiceGroups","initAreasData","AreasPicker","BasicTab","mainIcon","Tab","textColor","scrollButtons","centered","selectedTabId","withGroups","setTabIndex","realTabs","isGroupedTab","getTabValue","getTabProps","tabsVertical","tabsHorizontal","scrollContent","TabIndicatorProps","tabIndicatorVertical","tabIndicatorHorizontal","basicTabSelected","groupedHeader","GroupedTabComponent","GroupTabHeader","groupName","Collapse","GetBooleanFilterOptions","BooleanPicker","SceletonBox","selectRouterSlice","router","selectRouterLocation","selectRouterSearch","selectRouterSearchParams","ServiceFilter","printPDFFisLoading","startPrinting","setStartPrinting","promiseResolveRef","handlePrint","useReactToPrint","documentTitle","onAfterPrint","onBeforeGetContent","saveMarkedSections","PrintContent","noTitlePrinted","preparing","hideDisabled","RegionFilter","ServiceGroupsFilter","SuperGroupFilter","LoanTypeOptions","initLoanableData","LoanablePicker","initStatusData","StatusPicker","initLockersData","LockersPicker","initAssemblyTypeData","AssemblyTypePicker","SubLocationFilter","serviceIds","ErrorBoundary","_log","fallBack","errorInfo","isCoverExpanded","filterLengs","badgeContent","showZero","getAssetIds","getEquipmentIds","fetchDownOrders","downOrders","setDownOrders","fetchOrdersState","fetchOrdersPromise","calendarLinkParams","calendarLink","alertslink","aid","downTime","BringBackUpOnWorkOrders","BringBackUpOnCalendar","bookMultiple","menu_WorkOrders","excludeFroExport","configurableColumnsExport","GetTargetColumns","columnsToRemove","ExcludeColumns","reservationsPrimaryAction","initAvailabilityTypeData","loadBookableData","AvailabilityTypeBookablePicker","BasicDialogContentWithTitle","titles","BasicDialog","dialogRootClassName","BasicDialogActions","AddChargeButton","singleAdminServiceGroup","ServiceGroupBudgetsAdmin","chargesProps","FormTrainingLevelPicker","sperItems","sperLength","CardGrid","cardVertical","cardHorizontal","minCardHeightMd","minCardHeightLg","doiId","tryGetDoiFromUrl","externalIdSourceType","linkURL","newProps","Reflect","deleteProperty","menu_AllWorkOrders","ReservationCreateButton","openPanelOrCover","selectGlobalDbSetting_EnableLegacyScheduler","legacyURL","openProps","AlertFormFilter","CustomFormPicker","getSinglePaymentMethod","PaymentMethodEnumPicker","SamplePlatePositionPicker","SourceSamplePlatePositionPicker","onImportButtonClick","getSinglePriceSheetMethod","PriceSheetMethodPicker","RegionLink","openRegion","useOpenRegionPopUp","initialModel","SourceUrl","ServiceRequestsApi","UpdateStatuses","DeleteRequests","AddRequest","osid","purchaseOrder","updateAdminOnComment","DefaultFilter","DecimalRenderer","getSingleServiceTypeEnum","initServiceTypeEnumData","ServiceTypeEnumPicker","GetAvailableServiceTypes","DialogForm","FormContent","subTitle","UsageStartTime","UsageEndTime","ReservationStatusRenderer","DurationH","DurationT","DurationRenderer","AccService","CancelledBefore","BudgetTaskName","BookedByRenderer","NumberOfUsages","LastModifiedAt","WorkflowBookingName","BudgetInternalId","RemainingDurationD","Loanable","BudgetRemarks","UserGroupMail","DivisionDescription","BudgetFund","AssetInternalCode","AssetRoom","AssetDescription","AssetModel","AssetModelNumber","TotalReservations","InstituteType","Department","BudgetInitialCost","BudgetLeader","BudgetExternalUpdatedAt","BudgetExternalEndDate","BudgetIsOnline","BudgetEndDate","BudgetStartDate","BudgetHideExperiments","BudgetManager","BudgetSubsProfCostCenter","BudgetSubsProfProjectNumber","FacilityProject","AssetCampus","BudgetSubsProfActivity","PartialAttendanceDuration","AssetCategoryGroup","BudgetHardLimit","BudgetSoftLimit","BudgetAmount","AssetBuilding","ServiceActivityCode","AssetBrandCode","Month","WeekNumber","UserDiscipline","ServiceGroupAdminEmail","BudgetBudget","BudgetPercent","ReservationHistoryTable","addColumns","menu_ReservationsHistory","OfflineTypeRefsLink","useOpenOfflineRefsPopUp","useOfflineRefsLinkUrl","ClickToSeeDetails","ClickToCreateNewRecord","MinTimeAheadPeriodTypes","RestrictionsApi","TrainingStatus","PrerequisiteFor","AssistedRoot","StatusText","TrainingsWrapper","ApprovalRequiredLabel","RestrictWrapper","PermissionsWrapper","UserOwnPermissions","onUserChange","permLoading","restrictedOption","handleUserChange","userIsAdmin","ShowRestrictionsFor","clearOnBlur","Valid","PermissionName","TimeSlotTypeName","TimeSlotTypeId","NoAdditionalRestrictionsFound","res_err_Permissions_StaffOnly","UserPermissionsApi","authuser","setEquipmentId","setEquipmentGroupId","selectedService","setSelectedService","setSelectedUser","fetchRestrictions","restrictions","setRestriction","fetchRestrictionsState","fetchRestrictionsPromise","userRestrictions","setUserRestrictions","fetchUserRestrictions","fetchUserRestrictionsState","fetchUserRestrictionsPromise","fetchAsset","fetchAssetState","fetchAssetPromise","minTimeAhead","MinTimeAheadPeriodValue","Before","AdvancedReservation","MinTimeAheadPeriodType","MinTimeAheadMinutesSinceMidnight","OnTheSameDay","ToBeBookedBy","getStatus","validRender","PrerequisiteTrainingsIndicators","found","CoreWideRequirement","prerequisites","PrerequisiteEquipments","preq","usrrest","ImageName","userOnChange","assetOnChange","RenderContent","Permissions","Passed","Expired","Missing","PreApproved","PreApproved_info","RestrictToTutoringHours","AssistedReservationHours","AssistedReservationsAllowedOnlyDuringSpecificHours","DayOfWeek","WeeklyOn","SpecificDateOn","MinReservationOrder","MaxReservationOrder","CarryOverTimeSlotTypeId","MinimumTimeAhead","AdvancedReservation_info","ToBeBookedBy_info","RestrictionsOverview","BypassQuotas","BypassQuotasForReservations","BypassUserQuotasAndGaps","BypassUserQuotasAndGapsD","BypassUserQuotasAndGapsD_Description","BypassUserQuotasAndGapsD_DescriptionCont","BypassMinResDurationD","BypassMinResDurationT","BypassMinResDurationD_DescriptionCont","AdditionalRestrictions","SpecificUserSlotPermissions_info","ReservationRestrictions","infoColors","colorInfoFull","cyan","colorInfoDark","colorInfoHover","colorInfoRegular","colorInfoComponents","colorInfoComponentsLight","colorInfoBorders","colorInfoDisabled","colorInfoBgHover","colorInfoBg","colorInfoBgLight","MuiButtonOverride","textDecoration","contained","containedSizeSmall","containedSizeLarge","marginRight","textSizeSmall","textSizeLarge","sizeLarge","iconSizeMedium","iconSizeLarge","iconSizeSmall","MuiIconButtonOverride","MuiToggleButtonGroupOverride","borderColor","grouped","groupedHorizontal","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","groupedVertical","marginTop","MuiToggleButtonOverride","boxSizing","verticalScrolling","createBreakpoints","lato_Light","lato_Regular","lato_Bold","lato_Black","DefaultThemeSettings","typography","overrides","MuiCssBaseline","unicodeRange","BookitThemeSettings","mobileStepper","speedDial","appBar","snackbar","accent","grayDividers","paper","MuiTypography","colorError","colorPrimary","colorSecondary","colorTextPrimary","colorTextSecondary","MuiPaper","MuiAppBar","colorDefault","MuiLink","MuiSelect","MuiInputBase","adornedStart","adornedEnd","MuiInput","formControl","borderBottomColor","underline","shorter","easeOut","marginInline","borderBottomStyle","marginDense","inputMarginDense","inputMultiline","inputTypeSearch","MuiFilledInput","inputHiddenLabel","inputAdornedStart","inputAdornedEnd","MuiFormHelperText","MuiFormLabel","asterisk","MuiInputLabel","animated","MuiInputAdornment","positionStart","positionEnd","MuiSvgIcon","fontSizeSmall","MuiList","MuiListItem","MuiListItemText","MuiListItemIcon","MuiDivider","MuiAvatar","objectFit","MuiTableContainer","MuiTable","MuiTableHead","MuiTableBody","MuiTableRow","MuiTableCell","backgroundClip","head","footer","MuiTableSortLabel","MuiTablePagination","caption","spacer","selectRoot","toolbar","menuItem","MuiTextField","MuiPopover","MuiChip","MuiButton","MuiIconButton","MuiToggleButtonGroup","MuiToggleButton","MuiSwitch","verticalAlign","colorAdjust","switchBase","shortest","thumb","track","MuiFormControl","paddingBlock","marginNormal","MuiFormControlLabel","WebkitTapHighlightColor","labelPlacementStart","labelPlacementTop","labelPlacementBottom","MuiCheckbox","backgroundImage","MuiRadio","PrivateSwitchBase","MuiBadge","badge","MUIDataTableBodyCell","MUIDataTableBody","MUIDataTableHeadCell","contentWrapper","fixedHeader","toolButton","MUIDataTableToolbarSelect","paddingLe","MuiDialog","paperWidthXs","scrollPaper","paperWidthFalse","paperScrollPaper","paperFullWidth","MuiDialogContent","MuiDialogActions","MuiDialogTitle","MuiBackdrop","MuiAlert","MuiCard","MuiCardContent","divSizing","MuiCircularProgress","MuiMenu","MuiMenuItem","MuiPickersDatePickerRoot","toolbarLandscape","dateLandscape","MuiPickerDTToolbar","MuiDrawer","paperAnchorDockedLeft","MuiPickersToolbar","MuiPickersToolbarButton","toolbarBtn","MuiPickersToolbarText","toolbarTxt","toolbarBtnSelected","MuiAutocomplete","visibility","tag","tagSizeSmall","hasPopupIcon","hasClearIcon","inputRoot","inputFocused","clearIndicator","clearIndicatorDirty","popupIndicator","popupIndicatorOpen","listbox","noOptions","outline","groupLabel","groupUl","MuiTabs","flexContainer","scrollable","indicator","MuiLinearProgress","MuiTab","wrapper","textColorInherit","MuiTooltip","MuiCollapse","MuiGrid","MuiTreeView","MuiTreeItem","gridTemplateColumns","columnGap","darkTheme","grey","green","animalsThemeSettings","h5","h6","body1","body2","CreateTheme","baseTheme","createMuiTheme","getBaseTheme","Prog4biz","BookitlabCopyrightNoticeTitle","SoftwareBy","SystemTime","TermsOfUse","CopyrightSection","Copyright","webVersion","lastUpdate","align","disableVersionOnMobile","Clock","setNow","interval","setInterval","clearInterval","BarcodeScanApi","sublocationId","doSetSelectedRoom","doSetSelectedLocation","doSetSelectedSubLocation","doSetNoRoomAccess","assetInventoryStateSaga","setSelectedRoom_Success","setSelectedLocation_Success","setSelectedSubLocation_Success","QRCodeBaseLength","minBarcodeAssetLengthString","MinAssetQRLength","setScanProcessing","scanManualBarcode_error","room","subLocation","Barcode","RoomDetails","scanManualBarcode_Success","roomResult","LocationListId","SubLocationDetails","roomSelected","setNoRoomAccess_error","setNoRoomAccess_success","setSelectedSubLocation","setSelectedLocation","setSelectedRoom","scanManualBarcode","setNoRoomAccess","setNoRoomAccessProcessing","setLogFilters","assetInventoryActions","useAssetInventorySlice","StatusChip","Attachment","EventDueDate","ReportedByDisplayName","LastUpdated","LastComment","LastCommentBy","LastCommentAt","AlertOfflineTime","UnlimitedDowntime","ConsumablesForm","connectedFiltersFormRef","serviceSettings","connectedInit","serviceChangeState","factor","innerDiscountFactor","setDiscountFactor","innerRemarks","DefaultExperiment","reportConsumableSchema","reportedFrom","relatedService","ReferenceTypeId","Offline_Reservation","Details","ConnectedFiltersControl","isChildEntry","serviceTypeEnum","LogDateTimeLabel","startLabelInline","budgetPickerInfo","ConsumableProject_info","assetFilter","consumableServicesData","creditProccessing","handleCalculateClose","byGroup","AllowedServices","updatedRemarks","RequestAddOnServices","LogConsumables","truncatedDate","dir","doeRefreshReservations","addReservations","addUsages","addLoanDesks","addCalendarMessages","doGotIt","messagesSaga","calendarUrl","func","funcs","getPageMessages","_action","reservationsInValue","_i","reservationStarted","usagesInValue","usageReservation","LoanDeskInValue","LoanDesks","loadDesk","withNull","orEmpty","selectedEquipment","calendarInValue","calendars","calendar","gotIt","refreshUsages","clear","messagesActions","useMessagesSlice","SamplePlateTypePicker","FormSamplePlateTypePicker","RichTextEditor","HideCommentSharingForAllUsers","initials","defaultText","pointer","openOnNewTab","AssemblyStructureContent","SnapshotSelectTitle","renderItem","childRes","generateAssemblySnapshotName","convertAssemblySnapshotName","initAssemblySnapshotWithParams","AssemblySnapshotFilter","AssemblySnapshotPicker","setConfigurableColumns","loadConfigurableColumns","WrongColumnDefinition_info","fetchConfigState","getConfigurableColumns","setConfigurableColumnsExport","loadConfigurableColumnsExport","fetchExport","publicSub","redirUrl","ReturnUrl","PaginationActions","StyledPopper","popperRef","focus","placement","PopperTitleRoot","PopperTitle","handleExportForImportClick","handleExportForImport","rowsCallback","toBigQS","selectedRows","exportRows","MaxRecordsAllowedAssetImport","messageLongQS","err_ImportForExportFailed_longQS","deffMessage","err_ImportForExportFailed","showSingleExportButton","ExportButtonTooltip","ExportToXLSX","DownloadTemplate","allActions","InvisibleEmptySpan","FilterChip","FilterDisplay","GetPresetDatesRangeDisplayString","getDisplay","renderFilterDisplay","ConfigurableColumnsLink","Columns","prevLocation","usePrevious","allowedToViewUserDetails","allowedToEditDetails","allowedToEditUserDetails","allowedToEditSettings","allowedToEditUserSettings","GroupAdminAffiliated","IsGroupAdmin","userIsAffiliatedAdmin","coreManagementEnabled","allowEdit","isMilestoneAndIncomplete","requestblockedbyinvoice","requestblockedbyinvoice_complete","DropDownTabsWrapper","PrintSelectedAssetLabelsButton","dymoEnabled","zebraEnabled","usePrintScriptTags","PrintLabels","Radio","RadioIconUnchecked","RadioIconChecked","shrinkLabel","saveRepetitive","withTopSeparator","withBottomSeparator","setInitData","RepetitiveData","wait","buttonId","ImportRecordsDescription","ImportRecordsSteps","ToImportNewRecords","UploadTheUpdatedFile","DetailsWrapper","ReservationAdvancedDetails","LastUpdatedBy","Field","OldValue","NewValue","InvoiceTemplatesApi","insertInvoiceTemplate","invoiceTemplate","HeaderFile","FooterFile","updateInvoiceTemplate","deleteInvoiceTemplates","invoiceTemplatesIds","getInvoiceTemplateById","assignInvoiceTemplateToInvoiceBatch","invoiceBatches","invoiceTemplateIds","invoiceBatchIds","SchedulerDatePositionArray","syncSchedulerEvents","_events","mappedEventIds","getState","min_date","max_date","mapfn","BasicDialogContent","SummuryBox","ErrorsSummury","msgs","onCloseTable","pagelink","setfilterCallback","requiredFilter","onCllose","confirm_DeleteOfflineService","servicesIds","Failed","OfflineTypeReferencesTable","ServiceRelatedRefs","MainTicket","ArticlesExternalSearchPagePath","ArticlesExternalSearchPage","sideBar","budgetExperimentsFilter","resStart","resEnd","BudgetExperimentsPicker","loadBudgetExperiments","FormBudgetExperimentsPicker","setUser","setBudget","forceDisabled","selectedUserGroupo","selectedUserDto","setBudgetExperiment","fetchBudgetExperiment","budgetExperiments","budg","experiments","ConnectedFiltersForm","ConnectedFiltersData","endLabelInline","orderForConsumables","userChanged","setUserChanged","budgetExpirementChanged","setBudgetExpirementChanged","ConnectedFiltersSchema","err_UserGroupRequired","reserFieldHandler","updateDataState","editAllowed","createUpdateAllowed","inputsDisabled","saveConnectedFilters","RegionsApi","doInitRegion","doCreateRegion","doUpdateRegion","regionsSaga","initRegion_Success","initRegion_Error","Region","createRegion_Success","createRegion_Error","updateRegion_Success","updateRegion_Error","initRegion","createRegion","updateRegion","resetRegionState","regionsActions","selectRegions","regions","selectRegionsProcessing","selectRegionsData","selectRegionsHasErrors","regionData","regionSchema","RegionNameIsRequired","menu_EditRegion","menu_AddNewRegion","AddRegion","RegionName","ServiceRequestMilestoneStatusPicker","FormServiceRequestMilestoneStatusPicker","toDto","updateCharge","handleSubmitButtonClick","toInitialValues","AddMilestone","Milestone","serviceRequestMilestoneSchema","newStatus","oneOf","FormUnitTypeTypePicker","FormServiceRequestMilestoneChargeServicePicker","AddManualCharge","insertCharge","initUnitTypeValue","addServiceSchema","handle","ELEMENT_TAGS","A","getAttribute","BLOCKQUOTE","H5","H6","IMG","LI","OL","PRE","UL","MENTION","TABLE","TBODY","THEAD","TR","TD","TH","TEXT_TAGS","CODE","DEL","strikethrough","EM","I","S","STRONG","U","DATA","plain","deserialize","nodeType","textContent","jsx","child","deserializeHtmlString","htmlString","currentSring","removeBR","parsed","DOMParser","parseFromString","serializeItemHtmlString","leaf","leafHtmlString","elementHtmlString","EMPTY_SLATE_NODE","serializeHtmlString","emptyValue","RichEditorRoot","MentionsWrapper","HOTKEYS","RICH_EDITOR_BUTTON_CLASS","RichTextWithMentions","useCodeButton","renderElement","renderLeaf","editor","withImages","withTables","withHtml","withHistory","withReact","createEditor","setInitValue","setTarget","setIndex","setSearch","setUsers","mention","setMention","mentions","setMentions","showControlPanel","stringVal","unmounted","Transforms","insertNodes","at","move","distance","prevIndex","nextIndex","rect","ReactEditor","toDOMRange","getBoundingClientRect","pageYOffset","pageXOffset","debounceValue","isCollapsed","edges","wordBefore","Editor","before","beforeRange","beforeText","beforeMatch","after","afterRange","afterMatch","newMentions","getMentions","onMentionsChange","anchor","EnterAUser","spellCheck","hotkey","isHotkey","toggleMark","data-cy","char","isMarkActive","removeMark","addMark","MarkButton","useSlate","ToggleButton","BlockButton","isBlockActive","toggleBlock","LIST_TYPES","isActive","isList","unwrapNodes","setNodes","wrapNodes","StartRichEditor","isInline","isVoid","ReactDOM","createPortal","insertData","getData","json","insertImage","uri","fnRemoteImage","isImageUrl","isUrl","imageExtensions","deleteBackward","deleteForward","insertBreak","isEditor","SlateElement","isElement","cellPath","Point","fragment","insertFragment","Element","Leaf","ImageElement","useSelected","useFocused","TrStyled","TdStyled","Mention","PaymentMethodPicker","budgetDtoFields","budgetExperimentDtoFields","getLoadData","getBudgetExperimentsValidForReservationPathInfo","getBudgetExpandClause","pp","ReservationBudgetExperimentPicker","getDefaultBudgetExperiment","selectedExpirementId","FormReservationBudgetExperimentPicker","fetchDefaultBudgetExperimentState","fetchDefaultBudgetExperiment","setValueRef","serializedServices","deserializedServices","componentDidMount","BudgetTaskBudgetId","FilePreview","FileView","withShrinkLabel","prettyBytes","maximumFractionDigits","fileUrl","webkitRelativePath","downloadClick","PreviwWrapper","fileDisplayValue","RestrictDurationUnitTypes","getViewLength","viewMode","getViewType","parseViewMode","getSchedulerViewMode","viewlength","getSchedulerViewType","datets","getPeriodDisplayLabel","isSameYear","isSameMonth","lengthTypeToPeriodType","viewStateFromFilter","periodTypeUnion","schedulerPreset","periodTypeToLengthType","serializeSchedulerDate","getPeriodFromViewLength","timelineColumnWidth","MatchUnitSlotToEnd","dateSt","slotLength","lastCorrectEnd","diffDuration","LimitMinutes","getMinutesDiff","LimitHours","getHoursDiff","LimitDays","getDaysDiff","LimitWeeks","LimitMonths","getMonthDiff","adjustToTimeSlot","workingHours","minDuration","slots","withEdges","workingSlots","endCounter","dayOfWeek","getSlotsFromWorkingHours","weekStartDay","startSlots","startOrdered","correctEnd","weekEndDay","endSlots","endOrdered","DateLabel","ScreenToShowOn","initInstrumentCatData","InstrumentCatFilter","UserAssetContactMultiFilter","GetMessagesArray","DoAction1","DoAction","insertUserAD","BillingPreviewApi","FormView1_UpdateItem","PercentageRenderer","TruncatedLabel","ArticleLink","openArticle","useOpenArticlePopUp","NotAvailablePage","NotAvailablePageDescription","UserNotificationsStateRenderer","WhenToNotify_SimpleMode","WhenToNotify_AdvancedMode","labelPrint","FormColorPicker","getRandomColor","totalSeconds","JoinStatusEnum","UserGroupFilter","internalIdLogin","selectInternalIdLogin","selectInternalIdLoginUserId","selectInternalIdLoginUserName","selectLoginType","initCustomPicker","CustomPicker","selectPublicAsset","publicAsset","selectSelectedUnitItem","selectSelectedUnitSearch","selectedData","dataSearch","selectMenuOpen","menuOpen","UserGroupMultiFilter","PopupImportExport","EmailApi","err_SendEmailToUserFailed","initReservationStatusMultiData","ReservationStatusMultiPicker","ResrvationStatusMultiFilter","Future","getInitUpcomingReservationfilterMultiData","UpcomingReservationfilter","AllReservations","WorkflowBookingFilter","initReservationByIdWithPartsData","ReservationByIdWithPartsPicker","ReservationByIdWithPartsFilter","InstrumentsFilterRoot","InstrumentFilterChip","InstrumentsFilterDisplay","handleDelete","chip","Normal","initAssemblyTypeShortData","AssemblyTypeShortMultiPicker","AssemblyTypeShortMultiFilter","RG_DatePeriod","pushServicesFilter","pushBookedByFilter","budgetsFilter","getBudgetsFilterSettings","pushAssetCatGroupFilter","pushAssetCatFilter","pushAssetAvailabilityFilter","ExcludeStatus","ReservationsRelatedToReservationId","ReservationParts","OrderedBy","ReservationStartsOn","DatePickerFilter","ReservationEndsOn","NumbersRangeFilter","InstrumentType","TextFieldFilter","pushRoomFilter","pushBuildingFilter","Discipline","UserDisciplineFilter","pushBudgetManagerFilter","pushCampusFilter","pushWorkflowBookingFilter","AvailabilityTypeBookableFilter","includeAllMyManagedServicesOption","allMyManagedServicesOption","AllMyManagedServices","pushServicesCalendarFilter","CampusFilter","AddToLists","getEquipments","setLoadingCompleted","hasUpdateError","updateAssets","CreateList","useScriptTag","cleanup","async","script","getElementById","createElement","appendChild","removeChild","StyledItem","ListRenderer","localized","notLocalizedValue","onlyone","tooltipTitle","FileInput","onFileChange","uploadLabel","uploadText","shrinkFile","initReservationStatusData","NaN","ServiceTypeFilter","cp","AvailabilityTypeAvailableMultiFilter","AvailabilityTypeAvailableOnlineMultiFilter","RequestLink","openRequest","useOpenRequestPopUp","useRequestLinkUrl","requestProps","initDocumentTypeData","DocumentType","Degree","initSubscriptionTypesData","SubscriptionTypesPicker","dosetSelectedItem","dosetSelectedItems","dosetAssetPublicFilters","publicAssetSaga","setSelectedItem_Success","setSelectedItems_Success","currValue","setAssetPublicFilters_success","setSelectedItem","setSelectedItems","setAssetPublicFilters","setMenuOpen","toggleMenuOpen","setGlobalSearchOpen","toggleGlobalSearchOpen","publicAssetActions","usePublicAssetSlice","BaseToggleButton","separated","BaseToggleButtonGroupInner","otherOptions","toggleValue","setToggleValue","handleOtherChange","handleToggleValue","newViewType","ToggleButtonGroup","errorBorder","fullWidthButton","hasMainIcon","Other","BaseToggleButtonGroup","formatter","hour12","testTime","UTC","formattedTime","RefreshIcon","PopupImport","downloadTemplateprocessing","setDownloadTemplateProcessing","TagsFilter","LoanableFilter","StatusFilter","LockersFilter","AssetTypesFilter","AreasFilter","OnlineServiceTypeFilter","InternalServiceRequestStatuses","UserRenderer","InvoiceRowReferenceLinks","links","OfflineServiceId","SubscriptionId","RadioGroupsControl","StyledFormControl","StyledFormLabel","StyledFormHelperText","SidePanelRoot","SidePanelPopper","SidePanelPopup","panelExpanded","sidePanelRootExpanded","sidePanelRootCollapsed","rootopen","rootclose","mobileroot","modifiers","keepTogether","preventOverflow","boundariesElement","flip","BasicRadioBox","autoWrapLabel","labelBold","radioGroup","useRadioGroup","autoWrap","BasicRadioGroup","FormFieldsSection","sectionMaxWidthClass","FormLeftSection","pageDescription","dataErrors","setDataErrors","dataWarnings","setDataWarnings","dataSuccess","setDataSuccess","dataInfos","setDataInfos","colapsedMinHeight","handleCloseError","handleCloseWarning","handleCloseInfo","handleCloseSuccess","succ","DropBoxWrapper","Documents","menu_Documents","dash_EmptyWidgetTitle","dash_EmptyWidgetBody","FileName","FileNameRenderer","FileType","AvailableToUsers","StaffUsersFiles","StaffOnlyFiles","PublicFiles","hasReservation","myReservationId","batchDeletable","removedBatch","setRemovedBatch","removeBatchOpen","setRemoveBatchOpen","DeleteBatchInventory_title","DeleteBatchInventory_message","getAssetById","expandable","downloadImages","downUrl","scanBarcode","logNoRoomAccess","initCatRateTypeData","bysSystemSetting","feeTypes","allowManualChargesOutsideInvoiceSetting","useAllowManualChargesOutsideInvoices","getX","isInvoice","ImageRenderer","useServiceIdAction","hrefPath","ID","back","ServiceIdRenderer","EditSettings","OperationTypeIdRenderer","AssetImageRenderer","ViewLengthsArray","viewLengthOptions","shortName","viewTypeOptions","AssetPickerFilter","FormServiceGroupsPicker","ConsumableLink","useOpenConsumablePopUp","useConsumableLinkUrl","EditOfflineServiceTitle","NumberRangeWrapper","propsValue","userTrainingPrimaryAction","messagesState","selectMessages","selectMessagesAlreadyExist","AnnoncementsRoot","sideBarOpen","MessageActions","messageActions","SnackBarMessage","messageContent","messageTitle","messageRef","showMoreInDialog","setShowMoreInDialog","showMoreCollapse","setShowMoreCollapse","dialogOpen","setDialogOpen","SnackBarWrapper","LoanDeskMessage","ReservationStartedMessage_LoanDesk","curr","ReservationStartedMessage","AllUsagesEnded","InstrumentStillReservered","ReleaseUnusedReservation","YouHaveOngoingReservations","ReservationStarted","UpdateOngoingReservations","UsageReservationMessage","IpRelay_reservationTimeForInstrument","StartUsage","IpRelay_LinkToUsage","RenderSnackMessage","Announcment","removableAnnouncment","usageProps","calProps","closeAllKey","pageToType","secondaryPage","alreadyExists","closeOnTouch","setCloseOnTouch","hideIconVariant","preventDuplicate","ClickAwayListenerProps","maxSnack","MaxMessage","MessagesChildren","useSnackbar","enqueueSnackbar","closeSnackbar","allMessages","closeAllOptions","CloseAll","DashboardAnnouncement","GotIt","initRoomTSData","RoomTSPicker","RoomTSFilter","initTrainingProgramMultiData","TrainingProgramsMultiPicker","applyGlobalServiceGroupFilter","TrainingProgramsMultiFilter","CustomDatePeriods","ShowOnlyWithAvailability","Available","UnderMinimum","UpcomingSessionsOnly","ActiveSampleTypesPicker","RelevantBudgetPicker","selectedBudget","budgets","CreateNewRequest","chosenUser","setChosenUser","chosenFundingType","chosenPurchaseOrder","setPurchaseOrder","chosenBudget","setChosenBudget","setService","initActiveSampleTypesData","getServiceRequest","getService","showProject","ProjectIsRequired","purchaseOrderLength","purchaseOrderRequired","purchaseLengthInvalid","projectIsRequired","Requests_Created_Failure","Requests_Created_Success","propsSide","mt","RequiredLabServiceLabel","PleaseSelectUser","Reservation_Error_ShortPurchaseOrderLength","Reservation_Error_PurchaseOrderRequired","ServiceRequests_Ordering","OfflineReferenceTypeFilter","ServiceShortFilter","FilesPreview","FileUpload","notSaveFiles","innerFiles","setInnerFiles","fileValues","setFileValues","convertFilesToArray","addNewFiles","deleteFileName","savedFiles","newFile","updateFiles","filesAsArray","updatedFiles","FileWrapper","getTermsOfUseAgreement","versionId","OpenMenuButton","structure","selectedStructure","setSelectedStructure","snapshotLoading","setSnapshotLoading","handleAssemblyChange","snapshots","ViewAssemblyStructure_info","AssemblySnapshots","PleaseSelectASnapshot","SnapshotJson","NoSnapshotFoundForAsset","TableToolbarHeader","StyledH1","gutterBottom","setItems","LoadingFailed","debouncedOnChange","Signups","TrainingStateRenderer","TrainingResource","MinimumAttendance","MaximumAttendance","TotalUsedSlots","UsedSlotsRenderer","HashSymbol","HasNextSession","NextSession","ReservationLinkAction","SignedUp","TrainingSessions_Calendar_SignedUp","TrainingSessions_Calendar_UnderMinimum","Maximum","TrainingSessions_Calendar_Maximum","TrainingSessions_Calendar_Available","iconsize","AllTrainingSessions","globalServiceGroupsFilter","newPredicates","externalPredicates","Articles","StyledScanView","BarcodeScannViewDescription","Input","WhenToNotify","quizSubmissionId","fetchDataPromiseState","fetchDataPromise","backToQuizess","BackToQuizzes","Quiz","QuizzYourScoreIsXoutofY","Score","MaxScore","CongratulationsYouHavePassedTheQuiz","YouAreNowCertified","TrainingLevelName","Level","QuizSuccessTestMessage","SorryThisDidNotWorkSoWell","QuizFailureTestMessage","WorkOrderTypeStatusPicker","onlyNew","FormCustomFormPicker","AllowManualChargesOutsideInvoice","OfflineServicePicker","OfflineServiceMultiPicker","Timeline","doGet","doExport","doBulkCreate","doDelete","doDeactivatePlates","doDeletePlates","getLoadDataParams","someResult","genratePlatesFromBulk","LastId","firstId","FirstId","log10","Prefix","plates","samplePlate","forceFullDayReservations","flow","partialRight","applyForceFullDayReservations","truncatedEndTime","FormDepartmentPicker","suppliersLabel","RequireSupplierExternalId","SupplierExternalId","notShowTitle","AssetIdRenderer","Created","LifeDate","InstrumentCat","OperationType","AssetCatName","AssetType2Counter","Overdue","DueToday","ShortDescriptionOfInstrument","RoomMapId","CoreName","Raac","MainSpecRange","BrandCode","Rank","ExtraDDL8Value","GasSource","SGA_Public","UnderOriginalWarranty","WarrantyEndDateVisibleAllUsers","canview","EquipmentExperts","AssemblyParent","AssemblyChilds","BookAppVersion","BookAppVersionUpdateDate","LateTime","EarlyLeaveTime","EarlyStartAllowedMinutes","LocationTracking","LocationUpdatedAt","Divisions","RegionId","ServiceTypeEnumFilter","CloneEquipmentSettings","menu_CloneEquipmentSettings","serializeSchedulerDateOrUndefined","DoneWOBooking","ApprovedOnce","NotDone","AllStatus","reservationStatusLabelVariant","AddOfflineRefs","infoTitle","referId","tmp","referTypeId","InvoiceBatchesCommentsRenderer","InvoiceStatusPicker","InvoiceTemplatePicker","SubscriberLink","openSubscriber","useOpenSubscriberPopUp","useSubscriberLinkUrl","subscProps","AttachmentExist","TrainingDate","TrainerId","TrainingLevel","ExpiredDate","UserTrainingLink","openTraining","useOpenTrainingPopUp","useTrainingLinkUrl","trainingProps","trainingId","AddTraining","menu_AddNewUserTraining","UserTrainingModificationHistory","TrainingsTable","menu_UserTraining","SearchDatetime","MainText","ServiceName","BarCode","ResultsCount","AssetSearchHistoryTable","menu_AssetSearchHistory","CustomFormTypeId","formTypes","handleShowInSidePanelClick","previewProps","ViewInSidePanel","Preview","HasBalanceOrEstimatedCharges","Company","LoaderHeader","InfiniteScroll","scrollableTarget","FrontendLayout_MainContent_ID","loader","useRequiredRedirect","globalCoreVisible","termsOfUseAgreementEnabled","TermsOfUseAgreement","multipleAdGroupsModuleEnabled","joinAdGroupEnabled","JoinAdGroup","UserGroupsProviderType","isFirstLogin","OptOutCoreSelection","isFirstActiveUserGroupSelected","skipCoreSelectionScreen","SkipCoreSelectionScreen","usageKioskRoleEnabled","UsageKioskRoleEnabled","roomUserRoleEnabled","redirectToTermsOfUseAgreement","setRedirectToTermsOfUseAgreement","redirectToActiveUserGroup","setRedirectToActiveUserGroup","redirectToCoreSelection","setRedirectToCoreSelection","redirectToUsageKiosk","setRedirectToUsageKiosk","redirectToUsageRoom","setRedirectToUsageRoom","redirectToConsumableKiosk","setRedirectToConsumableKiosk","redirectToJoinAdGroup","setRedirectToJoinAdGroup","SQL","ConsumableKiosk","getRedirectSettings","InvoiceComments","divider","InvoiceInReview","notifActions","SentToReview","CanEdit","yup","InvoiceInReviewMessage","InvoiceDetailsUrl","ReviewApproved","InvoiceApprovedMsg","Reject","EnterInvoiceRejectReason","InvoiceRejectReasonPrefix","ReviewRejected","InvoiceRemarks","UpdatedOK","UpdateFailed","openChangeStatus","openChangeInvoiceTemplate","currency","ISOCurrencySymbol","InvoiceBalance","attrib","InvoiceTemplate","InvoiceTemplateId","LastSentToBilling","justify","header","InvoiceNotFound","hasSubRows","SampleTypeFilter","ShowZeroAmountRows","showZeroAmountRows","DetailsTable","OpenEditRow","appsettings","openEdit","BudgetCat","BudgetCats","InstrumentsAndServices","Task","EquipmentService","Mixed","TimeSlotType","SubsProfPercentage","SubsidyProfit","RelevantToManualCharges","InsertedByDisplay","EditInvoiceLine","RowActions","DeletInvoiceRows","ConfirmDeleting","deleteInvoiceConfirmMessage","toggleAll","InvoicePaid","EditBudgetInvoiceRows","EditBudgetInvoiceRows_info","Change","SubscriptionName","setIsGrouped","InvoiceCharges","menu_InvoiceCharges","GroupByReferenceDescription","DoNotGroupByReference","GroupByReference","InvoiceHistory","History","PayHistory","InvoiceRowId","PaymentTable","openEditPayment","EditInvoicePayment","PaymentDeleteConfirm","PaymentsDelete_success","PaymentsDelete_err","menu_InvoicePayments","RowHistory","deleteInvoiceOpen","setDeleteInvoiceOpen","allowedFees","AllowedFeeTypes","isChargesAllowed","invoiceHistoryOpen","setInvoiceHistoryOpen","rowHistoryOpen","setRowHistoryOpen","payHistoryOpen","setPayHistoryOpen","updateStatusOpen","setUpdateStatusOpen","updateInvoiceTemplateOpen","setUpdateInvoiceTemplateOpen","updateInvoiceIdsOpen","setUpdateInvoiceIdsOpen","openNewCharge","chargProps","openNewPayment","paymentProps","setNewStatus","setInvoiceTemplate","setInvoiceIds","deleteInvoice","invoiceTemplateId","topButtons","AddACharge","EditInvoiceStatus","EditInvoiceTemplate","CantDeleteInvoice","InvoiceRowsHistory","invoiceIdEntity","paymentPageActions","PaymentModificationsHistory","editFunc","paymentFunc","PayId","InvoiceWrapper","disableEnforceFocus","UpdateInvoiceStatus","UpdateInvoiceTemplate","handlePreview","InvoiceDeleteConfirmationMessage","UserRowState","DefaultUserRows","DefaultUserAttributes","ExpandableUserRows","isValidRow","GetUserRawSections","rowOrder","sectionOrder","GetUserRowsSections","leftsections","initialSections","StyledByteImg","UserImageRender","defaultImgMobileSrc","Bytes","UserComments","core","setCore","ServiceGroupAdminPickerChange","UserServiceGroup","OneCommentForLaboratory","DefaultUserGroup","AllowedUserGroups","DefaultUserGroupId","handleUpdate","DefaultBudgetId","setSelectedBudget","InternalIdRender","UserInternalId","currentInternalId","setInternalId","DTUStudentCardEnabled","DTUStudentCardIntergration","handleDtuCardUpdate","Data","DtuBasen","InternalId2Render","UserInternalId2","getUserRows","currentUserName","defaultBudgetVisible","isHeadOfLab","isInvoiceAdmin","defaultUserGroupVisible","internalIdVisible","internalId2Visible","commentsVisible","MobileTel","HomeTel","YearInDegree","LabLocation","Advisor","Manager","Address","PoBox","PostalCode","PostalAddress","Province","Country","LicenseNo","LastLogin","LastActivityDate","RestrictedMobileNumber","StaffComments","UserOverview","UserContactDetails","UserCompanyDetails","UserAdditionalDetails","EditableUserSettings","RenderUserRows","UserProfileTabContent","UserTabsRender","UserReservationHistoryColumns","upcomingReservations","UserReservationHistoryTable","getHistoryFilters","historyColumns","goToReservationHistory","ExpandInReservationHistory","updateTableCounters","UserWorkOrdersColumns","UserWorkOrdersTable","UserTrainingColumns","UserTrainingsTable","trainingColumns","goToTrainings","UserSearchHistoryColumns","UserSearchHistoryTable","ServicePicker","CheckTrainingStatus","bindPopper","fetcUser","ldapEnabled","allowedView","allowEditDetails","allowEditSettings","IsCurrentUser","userAttributes","userCover","UserTrainings","SearchHistory","resCount","GetReservationHistoryTableCount","GetTrainingsTableCount","GetSearchHistoryTableCount","rowsM","userProp","selectColumnsM","expandColumnsM","menu_UserProfile","UserTrainingsTab","SearchHistoryTab","EditUserDetails","EditUser","UserSettings","SelectActiveUserGroup","changeUserGroup","UsageHistory","UserModificationHistory","UsersHistory","AD","menu_Budgets","ClickToSeeFullDetails","UserNotFound","getSingleScreenToShowOn","ScreenToShowOnPicker","getSingleInvoiceStatusWithStaticOptions","InvoiceStatusWithStaticOptionsPicker","ConvertModelToEntityBillingActionsDetails","OperationName","IsSendEmail","IsSftpUpload","EmailAttachmentTypes","ChangeStatusTo","GeneratePayment","ConvertEntityToModelBillingActionsDetails","billingActionsDetailsSaga","initBillingActionsDetails_Success","initBillingActionsDetails_Error","initUpdateBillingActionsDetails_Success","initUpdateBillingActionsDetails_Error","createBillingActionsDetails_Success","createBillingActionsDetails_Error","BillingActionsPageName","updateBillingActionsDetails_Success","updateBillingActionsDetails_Error","initBillingActionsDetails","initUpdateBillingActionsDetails","createBillingActionsDetails","resetUpdateBillingActionsDetailsState","resetCreateBillingActionsDetailsState","billingActionsDetailsActions","selectBillingActionsDetails","billingActionsDetail","selectCreateBillingActionsDetails","selectCreateBillingActionsDetailsCompleted","selectUpdateBillingActionsDetails","selectUpdateBillingActionsDetailsCompleted","selectBillingActionsDetailsProcessing","EATBaseURLMultiPicker","EmailAttachmentTypePicker","FormEmailAttachmentTypePicker","FormInvoiceStatusPicker","FormScreenToShowOnPicker","FormPaymentMethodEnumPicker","ERTBaseURLMultiPicker","EmailRecipientTypesPicker","FormEmailRecipientTypesPicker","BillingActionsForm","isSftpEnabled","SAP_SFTP","budgetFieldFundingTypeEnabled","IsSendEmailChanged","setIsSendEmailChanged","IsSftpUploadChanged","setIsSftpUploadChanged","isMultipleEmails","billingActionsDetailsSchema","err_OperationNameRequired","err_ShowOn","FundingTypeIsRequired","BillingActionDetails","err_OperationNameUnique","AllInvoiceStatuses","EnterEmailsSeparatedByCommaWithoutSpaces","BillingActionsDetails","menu_EditAction","menu_AddNewAction","EditAction","AddNewAction","ReopenOrderButton","DeleteOrderButton","FormWorkOrderTypePicker","FormWorkOrderTypeStatusPicker","FormRemindBeforePicker","SymptomCodesPicker","FormSymptomCodesPicker","RepairCodesPicker","RepairCodesAssetCatFilter","assetCats","FormRepairCodesPicker","FormReasonTypePicker","CreationDetails","DetailsRoot","WorkOrderAdditionalDetails","WorkOrderTypeType","DoneDate","ClosedAt","DoneBy","ClosedBy","FormUnlimitedDowntime","EndDowntime","WorkOrderComments","onNewCommmentAdded","onCommmentsReady","isUploading","formSubmitted","setFormSubitted","isInner","AlertComment","AddCalibrationWorkOrder","workOrederIds","workOrederTypeId","saveLinkedOrders","setAsset","setWorkOrder","workOrderType","setWorkOrderType","fetchWorkOrderType","woId","handleWorkTypeChange","handleWorkOrderChange","LinkWorkOrder","AddCalibrationReference","PleaseSelectACalibration","HoverLinkedItem","linked","useHoverButton","onHoverClick","hoverIcon","HoverLinkedItems","onItemClcik","Linked","getLength","WorkOrderLinks","countLinks","LinkedWorkOrders","unmountOnExit","WorkOrderForm","handleTypeChange","workOrderTypeFormRef","workOrderStaffFormRef","readonlyDetails","canView","onAssetClicked","setWorkOrderOfflineStartChangedValue","setWorkOrderOfflineEndChangedValue","onLinkedClick","bringUp","overlaps","unlimitedDowntime","setUnlimitedDowntime","typeChanged","setTypeChanged","downTimeChanged","setDownTimeChanged","remindBeforeChanged","setRemindBeforeChanged","setOriginalSubFormFiles","setOriginalStaffFormFiles","selectedType","setSelectedType","linkedWorkOrders","Links","alertId","workOrderSchema","wschema","err_AssetRequired","errEvent_Type_Required","typeError","AlertName","EventTypeStatus","errEvent_Type_Status_Required","ReminderOptions","AlertStartTimeLabel","OfflineEventStartLabel","check","OfflineEventStartRequired","OfflineEventEndLabel","err_DownTimeEndGreaterThenStart","err_AlertNameRequired","err_EventDueDateRequired","DefaultSubject","DowntimeDuration","offEndTime","DowntimeReasonTypeId","DefaultRemaindBefore","remb","assignee","AssignedToCreator","changeLinkedOrders","addedOrders","removedOrders","removeCalibrationOrder","addCalibrationOrder","handleOfflineEventStartChange","handleOfflineEventEndChange","InstrumentHasOverlappingDowntimeEvents","ShowAllDowntimeEventsOn","Calendar","isInitialValid","LockedClosedRecord","EventDetails","PleaseSelectAnAssigneeUser","PleaseSelectAnAlertTypeStatus","ReportSymptoms","PleaseSelectAnAlertSymptomCode","RepairCodesEnabled","PleaseSelectAnAlertRepairCode","PleaseSelectAReasonType","OfflineRemarksPlaceholder","EventDueDateTimeLabel","RemindMeBefore_Description","SubmissionFormDetails","StaffFilledForm","PleaseSelectCustomForm","continueTo","sendOfflineEmail","sendOfflineProcessing","sendOfflineData","sendEmailCompleted","hasCreateProcessing","hasUpdateUpdateProcessing","hasCreateError","showDeleteRecurring","setShowDeleteRecurring","showSendEmail","setShowSendEmail","showCloseStatus","setShowCloseStatus","closedStatus","setClosedStatus","radioNotifyUsersValue","setRadioNotifyUsersValue","radioCancelAffectedReservationsValue","setRadioCancelAffectedReservationsValue","workOrderOfflineStartChangedValue","workOrderOfflineEndChangedValue","isCloseWorkOrderClicked","setIsCloseWorkOrderClicked","hasProcessing","IsAllInstrumentEventsGroupPermissions","viewPermissions","typeName","setTypeName","newCommentIds","reservationSwithProps","commentsReady","setCommentsReady","onCommentsReady","createValue","setCreateValue","subFormFiles","orderType","handleDeleteOrder","OnlyMainOrResourceWorkOrdersAdminCanDeleteCalibrationRecords","handleSendEmailClick","handleCancelSend","handleCloseOrder","handleOpenOrder","handleDeleteClick","handleDeleteAllNext","CloseIncident","CloseEvent","ReopenIncident","ReopenEvent","DeleteIncident","DeleteEvent","SendCustomEmail_short","SendCustomEmail","ViewCalendar_short","ViewCalendar","ShowAllRecurringEvents","notifyUsersRadioGroupOptions","JustBookedUsers","AllAffectedUsers","AllAffectedUsers_info","cancelAffectedReservationsRadioGroupOptions","menu_AddNewWorkOrder","WorkOrderRestrictedNotAllowed","UpdateDowntimeAdditionalActions","CreateDowntimeAdditionalActions","TheDowntimePeriodHasChangedNotifyUsers","NotifyUsers","isChangedStartDowntimeShorter","isChangedEndDowntimeShorter","isChangedDowntimeShorter","CancelAffectedReservations","UpdateDowntime","CreateDowntime","UpdateRecurringEventsTitle","EventRepeatConfirmationMessage","UpdateAllRecurringEvents","DeleteRecurringEvents","DeleteAllRecurringEvents","DeleteAllFutureRecurringEvents","YouAreClosingCalibrationRecord","RecordWillBeNotEditableAfterClosing","hasOwnedGroups","OnlyMyCores","onlyMyCores","ownedbyme","FormInstitutePicker","PermissionLevelPicker","FormPermissionLevelPicker","FormUserGroupsPicker","UpdateGroupPermissionsForm","instituteChanged","setInstituteChanged","departmentChanged","setDepartmentChanged","handleInstituteChange","handleDepartmentChange","handleUserGroupChange","AdGroups","PermissionLevel","err_SelectPermissionLevelException","err_TimeSlotTypeRequired","SetPermissionsOnSelectedServiceGroups","FormTimeSlotTypePicker","UpdateUserGroupPermissions","updtPermissionOpen","setUpdtPermissionOpen","submitted","setSubmitted","updatePermission","PermissionLevelId","CreateUpdateGroupPermissions","SetPermissions","CoreSelectionTable","updtFirstLogin","updtOptOut","redirectToDash","optOutCoreSelection","savedServiceGroups","setOnlyMyCores","tabNumber","setTubNumber","showImportConfirm","setShowImportConfirm","userHelp","Help_ServiceGroupRegistration","multiCoresSelectionMode","setMultiCoresselectionMode","setCurrentMode","currentModeRef","setSelectedRowIds","loacalServiceGroups","setLoacalServiceGroups","showMyCoresOptions","handleRemoveGroup","oldGroups","handleRowsServiceGroupsChange","handleServiceGroupsChange","handleSingleGroupChange","onSelectChange","canSwitch","OnSelectNotRegisteredCore_error","primaryMultipleAction","isCard","cols","OwnedByMe","AdminEmail","OnlineServicesCount","OfflineServicesCount","RequestTypesCount","LimitServiceGroupLicenses","ServiceGroupAdminsLimit","AdminsTotal","LabTechsLimit","LabTechTotal","RequestAccess","DeSelectServiceGroup","SelectServiceGroup","ViewServiceGroupDetails","ServiceGroupSettings","_selectedRows","_rows","_onRefresh","_toggleAll","toggleSingle","DeleteSelectedCard_info","tabLeftActions","AllCores","_count","MyCores","tabRightActions","DontShowThisAgain","_ev","CoreSelectionOptOut_info","selectedBulkActions","DeleteSelectedGroups","SelectedServiceGroupsWillBeDeleted","err_ServiceGroupCanNotBeDeleted","DeactivateServiceGroup","ConfirmDeactivate","err_ServiceGroupCanNotBeDeactivated","allowedToUseBulkActions","acts","CreateNew","SelectDeffServiceGroups","CoresTabSetting","adds","ImportHandler","handleImportClose","menu_CoreSelection","mode","newMode","Rejected","_toggleAllRowsSelected","selectCoreSelection","coreSelection","selectCoreSelectionFilters","noDashboardRedirectByClick","NoDashboardRedirectOnCoreSelection","updateIsFirstLogin","updateIsOptOut","Private","CheckBoxGroup","labelPlacement","FormCheckBoxGroup","EveryDaysPicker","FormEveryDaysPicker","RepeatMonthlyByPicker","FormRepeatMonthlyByPicker","RepeatPeriodPicker","FormRepeatPeriodPicker","RepetitiveOptionsPicker","withParamsFilter","FormRepetitiveOptionsPicker","RepetitiveForm","recurringChanged","setRecurringChanged","repeatPeriodChanged","setRepeatPeriodChanged","repeatEndChanged","setRepeatEndChanged","Until","err_RepeatUntilDateLessThanStart","err_AlertInvalidRecurringUntilDate","err_PepeatsOnDaysRequired","RepetitiveSchema","leftSideSections","RepeatsEvery","UserTrainingApi","trainings","approve","ur","AllowBookingFromTrainingDate","MustOrderEveryDays","MustUseEveryDays","UnhideServiceGroup","TrainingProgramId","TrainingProgramName","duUpdateTraining","doApproveRejectReservations","doActivate","trainingSaga","initCreateTraining_Success","initCreateTraining_Error","initUpdateTraining_Success","initUpdateTraining_Error","trainingsResponse","createTraining_Success","createTraining_Error","updateTraining_Success","updateTraining_Error","approveRejectReservations_success","approveRejectReservations_error","activateDeactivateTraining_success","activate","activateDeactivateTraining_error","initCreateTraining","initUpdateTraining","updateTraining","approveRejectReservations","activateDeactivateTraining","reservationsUpdateState","showApproveReservations","showRejectReservations","ApproveRejectRecords","ShowApproveReservationsMessage","ShowReviseToPendingMessage","resetCreateTrainingState","resetReservationsState","resetUpdateTrainingState","ReservationStart","ReservationEnd","setReservationsUpdateState","trainingActions","selectTraining","selectInitTrainingProcessing","selectCreateTraining","selectUpdateTraining","selectCreateTrainingCompleted","selectUpdateTrainingCompleted","selectCreateTrainingHasError","selectUpdateTrainingHasError","selectShowApproveReservatiions","selectShowRejectReservatiions","selectReservatiionsData","selectReservatiionsProcessing","selectReservatiionsUpdateCompleted","formatName","TrainingResevationsPicker","trainingDate","tDate","strDate","FormTrainingReservationsPicker","UserTrainingComments","UserTrainingForm","TrainingLevelPermissions","usersShema","equipmentShema","err_UserNameRequired","ServiceType_Online","err_TrainingDateFieldRequired","err_TrainerIsRequired","activeDisabled","resDisbaled","setResDisbaled","allowBookingDisbaled","setAllowBookingDisbaled","setAllowBookingVisible","setEquipmentChanged","trDateChanged","setTrDateChanged","trLevelChanged","setTrLevelChanged","handleEquipmentChange","handleTrDateChange","handleTrLevelChange","ExpiredDays","UserTrainingTopMessage","NotActive","OneActiveTrainingLevelOnSpecificInstrument_info","UserTraining_EquipmentInfo","UserTraining_UserInfo","UsersPlaceholder","DateOfTraining","LevelAchieved","TrainingLevelPlaceholder","TrainerPlaceholder","LinkedReservation","SelectLinkedReservation","TrainingRestrictions","TrainingExpiration","User_ExpiredDate_Description","User_MustOrderEveryDays_Description","EnterNumberOfDays","User_MustUseEveryDays_Description","HideInstrumentsFromUntrainedUsers","UnhideServiceGroup_Description","AllowBookingFromNow","showApprove","setShowApprove","showReject","setShowReject","approveReservations","rejectReservations","relatedReservations","updateResCompleted","editTraining","currenTrainingServiceGroupId","activateAllowed","handleActivateTraining","handleReject","handleApprove","handleResCancel","ActivateTraining","RejectAllReservations","UserTraining_ReviseReservations","RejectAll","ApproveAllReservations","UserTraining_ApproveReservations","ApproveAll","UsageModifications","UsageOfflineServices","responseDel","manualUrl","UsageEquipmentPicker","FormUsageEquipmentsPicker","UsageReservationDetails","createMnually","usageChangeState","hasLoadProcessing","remarksVisible","accServiceEditable","startTimeEditable","endTimeEditable","budgetEditable","tutoringEditable","usageChangeHandler","equip","cmd","tutor","usageSchema","PleaseSelectUserOperator","UsageConsumables","usageNotFound","resetUsage","setResetUsage","resetButtonVisible","usageEndMessage","AbruptlyEndedAt_info","handleCreateManually","handleStopUsage","UpdateUsage","CreateUsage","StopUsage","CalculateUsagePricing_info","Usage","UsageCharges","menu_CreateUsage","menu_Usage","UsageRestrictedNotAllowed","ConvertModelToEntitySubscribersDetails","SubscriptionType","SubscriptionTypeId","Cost","SendExpirationNotificationDays","NotDeletable","SubscriptionFor","ConvertEntityToModelSubscribersDetails","subscribersDetailsSaga","initSubscribersDetails_Success","initSubscribersDetails_Error","initUpdateSubscribersDetails_Success","initUpdateSubscribersDetails_Error","menu_Subscribers","createSubscribersDetails_Success","createSubscribersDetails_Error","updateSubscribersDetails_Success","updateSubscribersDetails_Error","initSubscribersDetails","initUpdateSubscribersDetails","createSubscribersDetails","resetUpdateSubscribersDetailsState","resetCreateSubscribersDetailsState","subscribersDetailsActions","selectSubscribersDetails","subscribersDetail","selectCreateSubscribersDetails","selectCreateSubscribersDetailsCompleted","selectUpdateSubscribersDetails","selectUpdateSubscribersDetailsCompleted","selectSubscribersDetailsProcessing","FormSubscriptionTypesPicker","SubscriptionForOptions","BySubscriptionUser","BySubscriptionUserGroup","SubscribersForm","radioSubscriptionForValue","setRadioSubscriptionForValue","subscribersDetailsSchema","SubscriptionSubscriptionTypeRequired","StartDateIsRequired","EndDateIsRequired","SubscriptionCostRequired","Subscription","SubscriptionBudgetRequired","SubscriptionUserGroupRequired","SubscriptionSubscriptionType","SubscriptionSubscriptionTypeDescription","hasDates","DurationDays","DurationMonths","DurationStart","DurationEnd","CreateSubscriptionBy","SubscriptionStartDate","SubscriptionStartDateDescription","SubscriptionEndDate","SubscriptionEndDateDescription","SubscriptionUser","SubscriptionUserGroup","BudgetFundingType_info","SubscriptionBudget","SubscriptionBudgetDescription","SubscriptionCost","SubscriptionCostDescription","SendExpirationNotificationDays_info","menu_Subscriptions_Edit","menu_Subscriptions_AddNew","PriceSheetApi","doCreatePeriod","doUpdatePeriod","pricePeriodSaga","menu_PriceSheetPeriod","initialPeriod","createPeriod_Success","createPeriod_Error","updatePeriod_Success","updatePeriod_Error","updatePeriod","pricePeriodActions","selectPricePeriod","pricePeriod","FormPriceSheetMethodPicker","PricePeriodsForm","globalPriceSheetEnabled","priceEnabled","serviceGroupChanged","setServiceGroupChanged","startChanged","setStartChanged","endChanged","setEndChanged","pricPeriodsSchema","PriceSheetMethod","err_ServiceGroupRequired","err_PriceSheetMethod_isrequired","PricePeriodDetails","PricePeriodsFormEndDate_info","PriceSheetMethod_info","GlobalPriceSheetPeriods","priceSheetByEnabled","priceSheetBy","PriceSheets","OpenPriceSheetInfo","periodId","gName","priceBy","EditPriceSheetPeriod","AddPriceSheetPeriod","PricePeriod","AddPricePeriod","ConvertModelToEntityCalendarMessagesDetails","PlantDate","DisplaySeconds","ConvertEntityToModelCalendarMessagesDetails","CalendarMessagesApi","calendarMessagesDetailsSaga","initCalendarMessagesDetails_Success","initCalendarMessagesDetails_Error","initUpdateCalendarMessagesDetails_Success","initUpdateCalendarMessagesDetails_Error","menu_CalendarMessages","createCalendarMessagesDetails_Success","createCalendarMessagesDetails_Error","updateCalendarMessagesDetails_Success","updateCalendarMessagesDetails_Error","initCalendarMessagesDetails","initUpdateCalendarMessagesDetails","createCalendarMessagesDetails","updateCalendarMessagesDetails","resetUpdateCalendarMessagesDetailsState","resetCreateCalendarMessagesDetailsState","calendarMessagesDetailsActions","selectCalendarMessagesDetails","calendarMessagesDetail","selectCreateCalendarMessagesDetails","selectCreateCalendarMessagesDetailsCompleted","selectUpdateCalendarMessagesDetails","selectUpdateCalendarMessagesDetailsCompleted","selectCalendarMessagesDetailsProcessing","CalendarMessagesForm","initValues","IsServiceGroupChanged","setIsServiceGroupChanged","getDisabledInfo","hasAdminGroups","calendarMessagesDetailsSchema","Laboratory","Group","ShowOn_information","AllServiceGroups","SelectCores","singleServiceGroup","servGrId","servGr","Announcement","AddNewAnnouncement","ConvertModelToEntitySamplePlatesDetails","ConvertEntityToModelSamplePlatesDetails","SamplePlatesApi","changedId","samplePlatesDetailsSaga","initSamplePlatesDetails_Success","initSamplePlatesDetails_Error","initUpdateSamplePlatesDetails_Success","initUpdateSamplePlatesDetails_Error","SamplePlates","createSamplePlatesDetails_Success","createSamplePlatesDetails_Error","updateSamplePlatesDetails_Success","updateSamplePlatesDetails_Error","initSamplePlatesDetails","initUpdateSamplePlatesDetails","createSamplePlatesDetails","updateSamplePlatesDetails","resetUpdateSamplePlatesDetailsState","resetCreateSamplePlatesDetailsState","samplePlatesDetailsActions","selectSamplePlatesDetails","samplePlatesDetail","selectCreateSamplePlatesDetails","selectCreateSamplePlatesDetailsCompleted","selectUpdateSamplePlatesDetails","selectUpdateSamplePlatesDetailsCompleted","selectSamplePlatesDetailsProcessing","SamplePlatesForm","samplePlatesDetailsSchema","SamplePlateDetails","EditSamplePlate","AddNewSamplePlate","ConvertModelToEntityCostCentersDetails","CostCenter","ConvertEntityToModelCostCentersDetails","costCentersDetailsSaga","initCostCentersDetails_Success","initCostCentersDetails_Error","initUpdateCostCentersDetails_Success","initUpdateCostCentersDetails_Error","menu_CostCenters","createCostCentersDetails_Success","createCostCentersDetails_Error","updateCostCentersDetails_Success","updateCostCentersDetails_Error","initCostCentersDetails","initUpdateCostCentersDetails","createCostCentersDetails","resetUpdateCostCentersDetailsState","resetCreateCostCentersDetailsState","costCentersDetailsActions","selectCostCentersDetails","costCentersDetail","selectCreateCostCentersDetails","selectCreateCostCentersDetailsCompleted","selectUpdateCostCentersDetails","selectUpdateCostCentersDetailsCompleted","selectCostCentersDetailsProcessing","CostCentersForm","CostCenterIsRequired","CostCenterDetails","menu_CostCenter_Edit","menu_CostCenter_AddNew","Statuses","initLogStatusesData","BarcodeLogStatusPicker","BarcodeLogStatusFilter","AllStatuses","hideRoomFloor","HideRoomFloorTextBoxes","EntryDate","fromInitPreset","LocationList","SubLocationsList","FloorName","ShowBarcodesWithoutAssetsOrRooms","InventoryLogTable","isShortView","emptyTable","defaultFilter","BarcodeScanLog","menu_AssetInventoryLog","defaultFilterSearch","dateFilter","SavedViewForm","viewOnly","ExtraData","savedViewSchema","err_SavedViewNameRequired","SavedViewName","err_savedViewAssetRequired","SavedViewAssets","SavedViewShared","SavedViewBookMultiple","getsavedViewSchema","TimesUsed","SavedViewAssetsPlaceholder","SavedViewBookMultiple_info","extraData","isServiceGroupAdmin","useView","notShown","BookableAsset","TakeDown","useLeftTopActions","menu_EditSavedView","menu_AddNewSavedView","myAssetsDefaultFilters","AdvancedAssetSearchFilterAttributes","CreatedSince","ActiveAssets","Areas","LocationNotUpdatedSince","ResourceServiceType","ShowAssemblyParts","UsageStatus","RangeWeight","RangekN","RangeTemperature","RangeArea","RangeVolume","RangeAmount","AssetsSelectionTable","primaryMultiAction","multiModeDisabled","useRecentAssets","RecentAssets","canExportAssetRanges","POnumber","AssetAccessories","Contacts","Experts","Suppliers","multiAssetSelectionMode","setMultiAssetSelectionMode","loacalAssets","setLoacalAssets","localAssetsRef","getMyListFilter","selectedRws","selectedRowDefaultActions","isShowAllCores","handleRowsChange","handleSingleChange","oldAssets","AssetSearch","RecentContent","collapseOpen","setCollapseOpen","fetchRecentAssets","recentAssets","setRecentAssets","fetchRecentAssetsState","fetchRecentAssetsPromise","recentShort","requestTypeIds","appSettingsAction","setOpenRequest","requestId","setRequestId","selectedAssets","setSelectedAssets","schedActions","AssetCatGroupId","createOffline","addTrainingSession","useAddNewActions","allowMultiToggle","allowAllCoresToggle","availabilityTypesArray","SelectConsumables","CreateRequest","CreateAWorkOrder","AddTrainingSession","InstrumentAssetSearch","noTableData","NoConsumablesHeadTitle","NoConsumablesTitle","primaryRecentAction","AvailabilityTypeId","AvailabilityTypeName","notAvailable","handleSearchAllCores","SearchAllCores","menu_MyInstrumentsAssets","PopupPrintToPDFDialog","DialogContentRoot","CheckBox","PrintPdfWrapper","PopupPrintToPDFComponent","convertItemsToFlags","checkboxes","setCheckboxes","handleCheckboxChecked","static","PrintToPDFPopup","StyledInvoicePopUpPaper","PopUpListItems","BillingAddress_info","BudgetActivityCode_info","BudgetCostCenter_info","BudgetExtraTextField1_info","BudgetExtraTextField2_info","BudgetExtraTextField3_info","BudgetExtraTextField4_info","BudgetExtraTextField5_info","BudgetProjectCode_info","BudgetProjectName_info","CoreCostCenter_info","CreditCode_info","InvoiceBalance_info","InvoiceCore_info","InvoiceCurrency_info","InvoiceCustomerEHF_info","InvoiceCustomerRef_info","InvoiceDate_info","InvoiceDepartment_info","InvoiceFromDate_info","InvoiceId_info","InvoiceInstitute_info","InvoiceInstituteType_info","InvoiceIdLink_info","InvoiceProcessedUser_info","InvoiceProcessedUserEmail_info","InvoiceProcessedUserGroup_info","InvoiceProcessedUserMobile_info","InvoiceProcessedUserPhone_info","InvoiceProjectNumber_info","InvoiceRemarks_info","ConfigureColumns","InvoiceLetters","InvoiceSummaryTable_info","InvoiceSummarServicesTable_info","InvoiceSummury_BudgetUserService_info","InvoiceSummaryByInvoiceRowsNonGrouped","InvoiceToDate_info","InvoiceTotalCost_info","InvoiceAdGroup_info","InvoiceUserGroupEmail_info","InvoiceVAT_template_info","BudgetInvoicingRemarks_info","LastRequestID_info","LetterDate_info","ProjectActivity_info","ProjectNumber_info","InvoiceUserGroup_info","HtmlTextBox","formikValues","Html","textBoxValue","setTextBoxValue","OnUpdate","InvoiceTemplateHtmlSource","PreviewButton","handleInvoiceIdChange","InvoiceTemplatePopUpLink","TableHeaderColor","TableBodyColor","HeaderFileName","FooterFileName","testHex","InvoiceTemplatePopUpSchema","OnSubmit","invoiceTemplateHtml","valueToReplace","patrn","originalValue","html_replace","InvoiceTemplateUpdateSuccess","InvoiceTemplateAddedSuccessfully","InvoiceTemplateForm","classname","AdditionalInformationOnInvoicetemplate","AdditionalInformationOnInvoicetemplate_info","TemplateName","AllFundingTypes","TemplateHeaderImage","ModifyInvoiceLetterTemplateHere","TemplateFooterImage","InvoiceLetterTableHeadColor","InvoiceLetterTableHeadColor_info","InvoiceLetterTableBodyColor","InvoiceLetterTableBodyColor_info","StyledInvoiceReservedWordsWrapper","ReservedWordsForInvoiceLetterTemplateMsg","menu_InvoiceTemplates","AddInvoiceTemplate","EmailTypePicker","EmailTypeFilter","NotificationType","CustomFormSkeleton","QuizCustomForm","fetchQuiz","quizId","ShuffleFields","Question","UsedAttempts","Submissions","SubmittedById","QuizTrainingPassingScore","UserCanStartQuiz","QuizNumberOfAttempts","fetchQuizPromiseState","fetchQuizPromise","setStartQuiz","quizSubmission","submitStatus","submitQuiz","submission","setSubmission","submissionId","resultQuiz","ContinueToQuiz","CancelYourSubmission","StyledQuizDiv","QuizDescription","QuizInstructions","QuizFiledAttemptsMessage","QuizFiledAttemptsInstrumentMessage","mapToAssetDto","myAsset","AssetsApi","allowedToImport","enabledByCores","ExportAssetRangesTooltip","ExportAssetRanges","AssetRanges","DownloadAssetImages","SignUpToInstrument","serviceIdRawValue","userNameRawValue","equipmentInitialized","setEquipmentInitialized","userInitialized","setUserInitialized","UserNotificationsSignUpForInstrument","writeCsvFile","Papa","exportCsv","stringData","csvContent","doLoadData","doUpdateField","doRunSelectedSamples","doCompleteRun","doUpdateRun","doLoadRunDetqails","doImportRunDetails","doLoadAllSelectedSamples","doExportRun","loadIds","httpUrl","allsamples","completeRunResponse","XSamplesWereProcessed","skippedSamplesCount","XSamplesWereSkipped","derivativesCount","runupdate","samples_response","readCsvFile","dynamicTyping","complete","platesUrl","createPlate","createPlates","runSamples","tpid","records","tablestate","AnalyticalSampleId","Position","TubeLabel","Volume","Concentration","OfflineForm","asyncChangeStateLoading","quantityChanged","setQuantityChanged","isTypeActive","offlineService","OfflineServiceCharges","AddNewOfflineService","ConsumableLog","ImageCarousel","deleteImage","loadingAssetData","allImages","AssetImageSizeType","thumbPath","largePath","large","selectedImg","setSelectedImg","customRenderThumb","autoPlay","showIndicators","thumbWidth","showStatus","showThumbs","swipeable","renderThumbs","onClickItem","ClickToSeeInFullScreen","ArticleDatasetLink","dataset","ArticleServiceGroupsColumnId","ArticleInstrumentsColumnId","PubMedId","FileComment","checkRow","fetchAlertTypesPromise","fetchAlertTypesState","fetchAlertTypes","downtimeProps","Event","ButtonOrLink","quizzEnabled","Quizzes","AssetCheck","addWorkOrder","addReservation","PlaceAReservation","addUsage","CanStartUsage","Use","CanEndUsage","Stop","addTakeDown","AlertInfo","PlanedEventsEnabled","hasDownActive","noAlerts","hasActive","HasActiveDownAlertsAdmin_info","HasNoAlertsAdmin_info","CreateNewSampleRequest","ReportAConsumable","SwitchToCoreOpenItsBoard","CoreBoard","approvalStatus","addRequestAccess","menu_AddNewTrainingSessions","NewTrainingSession","UntrainedToolTip","TrainingQuiz","AlertsIcon","ScheduledEvents","RequestAnOtherService","RequestsList","ResCancelNotifications","ReservationNotification","NotifyExists","NotifyToolTip","NoNotifyToolTip","Notifications","ShowFeed","CalendarPublicIntegrationFeed_Icon","OutlookGoogle","StyledSelect","TmtType","autoWidth","TimeSlotTypePicker","READONLY_COLUMNS","SamplesTable","samplesTableState","selectedSamples","CellTextField","BiologicalSampleId","SubjectId","TaxaId","Grouping","CellNumberField","SampleRequests","customPageSize","handleCreateButtonClick","SourceRunIds","TargetRunIds","openExportUrl","readWriteOnly","exportColumns","downloadTemplateUrl","goToSamplesList","OpenInSamplesList","_refresh","handelDeleteSamplesClick","ThisCannotBeUndoneAreYouSure","AddSample","MoreActions","getActions","ServiceRequestCustomForm","allowUserUpload","EventBudgetPicker","eventPredicates","useServiceRequestStatusUpdate","serviceRequestStatusId","fieldState","InternalServiceRequestStatus","ServiceRequestSubmissionDetails","fullDetails","authUser","poLocal","setPoLocal","internalLocal","setInternalLocal","projectFieldVisibleToUser","ReturnedToUser","purchaseOrderMandatory","statusFieldState","handlePurchaseOrderSave","debouncedPoChange","handleExternalInternalNumberSave","debouncedInterChange","SubmittedBy","SubmittedAt","StatusAndBudget","SendQuoteToUser","handleFundingTypeChange","ShowInternalNumber","SubmitServiceRequestButton","getRowsErrors","submitEnabled","ServiceRequestSubmitButtonTooltip_Enabled","ServiceRequestSubmitButtonTooltip_Disabled","ServiceRequest_SubmitStepAlert","CancelServiceRequestButton","CancelRequest","getConsumableIsMandatory","consumable","Mandatory_Users","ChargeToService","IsDeleted","ChargesConsumables","consumables","entered","missing","Mandatory_Default","chargeId","ConsumableTypeToService","ServiceRequestAddons","requestDetailsData","show_newAddonServiceCharge","ServiceRequestInternalStatus","ServiceRequestAddonTypes","showAddonServiceCharge","AddonType","InternalStatus","show_newManualCharge","showManualCharge","handleAddServiceClick","offServiceFilter","ConsumableServices","adg","po","showOfflineServicesError","showOfflineServicesWarning","MilestoneChargesServicesQuantity_warn","handleAddChargeClick","enableAddonCharge","enableManualCharge","handleServiceRowClick","EditAddService","ServiceOrCharge","RequestOfflineServicesRequired","AddOnServices","Addon_Empty_AddEnabled","AddRelatedServices","AddonCharges_Empty_AddEnabled","ServiceRequestMilestoneStatusMenuPicker","handleMenuItemClick","ServiceRequestMilestones","milestones","lastInsertedMilestone","milestoneInserting","setInsertMilestone","handleToggleClick","handleAddMilestone","newMilestone","ordered","latestMilestone","numberRegex","getNewMilestone","sidePanelProps","showActionsColumn","Records","RequestMilestoneOfflineServicesRequired","Total","MilestoneStatus","Actions","handleStatusChange","MilestoneServicesCharges","ServiceRequestMilestonesSection","loadingMilestones","CloneServiceRequestButton","handleCloneButtonClick","Clone","AddServiceRequestRowButton","AddNewCustomTableRow","arrayHelpers","AddRows","ServiceRequestRowEditableCell","fieldProps","innerValue","setInnerValue","useDebounce","getDebounceValue","childColumn","getServiceRequestRowFieldName","getServiceRequestRowName","columnFieldName","columnType","DateField","SRSelect","withAsyncOptions","hocProps","asyncOptionProps","optionsPromise","fetchOptions","promiseState","debounced","trailing","maxWait","useAsyncOptions","getCellComponent","getReadonlyCell","getValueRenderer","getCustomFormTableColumns","fieldComponent","isFocused","getCell","originalRow","enableHide","ServiceRequestRowStatusPicker","ServiceREquestRowStatusCell","RowGap","ActionsCell","DeleteButton","CloneButton","handleCloneClick","InternalServiceRequestRowStatus","ServiceRequestRowComments","canUserEdit","ServiceRequestRowsImport","ImportSuccessMessage","convertImportResponse","ImportErrorMessage","UpdateColumnValueAcrossMultipleRows","DownloadImportTemplate","ExportRows","importResponse","Completed","InsertDate","Serial","SourceLinkId","SourceRowId","UpdateDate","BulkUpdate","Column","formikContext","rowIdentifiers","postValue","rowids","GenericUpdateErrorMessage","ColumnsSelect","getHidableColumns","colvis_buttontext","toggleHideColumn","handleToggle","Checkbox","hiddenColumns","getHiddenColumnsKey","getHiddenColumns","localStorage","columnIds","ServiceRequestRowsTable","customFormColumns","requestStatusId","hideRowIdColumn","rowStatusVisibility","rowStatusColumnEditable","requestRows","IsStatusColumnVisible","AlwaysVisible","VisibleToUserOnRequestStepDone","IsStatusColumnEditable","AdminsOnly","UsersAndAdmins","changeState","tableColumns","statusColumnEditable","statusColumnVisible","dynamicColumns","staticColumns","LineStatus","cellProps","serviceRequestTypeId","onCreateReservation","SRFormContent","autoResetExpanded","setHiddenColumns","ServiceRequestTable","RequestRows_error","SRTableBody","rowProps","EditableCellField","StyledTableCell","ServiceRequestRow","SRTablePagination","QuoteSentToUserAlert","approvedStatus","QuoteApproved","cancelledStatuses","Request_SendQuoteToUser_PendingMessage","Request_SendQuoteToUser_ApproveQuote","firstCancelledStatus","Request_SendQuoteToUser_RejectQuote","ConfirmRejectDialog","RejectReasonEmpty_err","Confirm_RejectQuote_Title","Confirm_RejectQuote_TextLabel","SendQuoteButtonButton","SendQuote","getSchema","dynamicValuesSchema","DownloadAllFiles","FormValuesErrorsSummury","formValuesErrors","RowsErrorsSummury","rowsErrors","valsObj","SRReservationColumns","reservationsColumns","GradientsPicker","CreateRequestReservation","requestOverheadMinutes","gradient","serviceRequestRelatedEquipments","createOpen","equipmentsPredicates","overheadMinText","setOverheadMinText","selectedGradient","setSelectedGradient","setSelectedEquipment","handleOverheadSave","handleOverheadChange","validToCreate","openIn","ServiceRequestCreateRservation","ServiceRequestGradient","ServiceRequestGradient_info","RequestReservationTime_info","RequestReservationOverallOverheadTime","RequestReservationTime","PleaseSelectAnInstrument","PleaseSelectAnEquipmentAndSamples","OpenInSchedule","ShortRequestDetails","onFullDetailsChange","ShortRequestContent","MoreEdit","RequestContentWrapper","ServiceRequestBlockedByInvoice","RequestSamplesPage","RequestDetailsPage","serviceRequestFormData","submittingRequest","ServiceRequestRelatedEquipments","sidePanel","reservationOpen","setReservationOpen","setSelectedRows","fullRequestDetails","setFullRequestDetails","handleFullDetailsChange","changedState","showCancelRequest","handleCreateResClose","handleCreateRowReservation","customFormFields","rowsVisible","customFormSchema","getRequestDetailsSchema","hasRowsErrors","setHasRowsErrors","printSections","userProfileSettingsSections","rowsEnabled","samplesEnabled","milestonesEnabled","ExportPDF_SubmissionsDetails","ExportPDF_RequestForm_Table","ExportPDF_Comments","ExportPDF_RequestRows_Table","ExportPDF_Milestones_Services","ExportPDF_ModificationHistory","getPrintPDFSections","handleManageOfflineRefsClick","rtactions","PleaseSubmitRequestFirstInOrderToPrint","NotificationTypeId","ManageRelatedService","EditSampleType","openRowsSidePanel","NOT_FOUND","getTitle","addonType","AddonCharges","getServiceRequestTitle","AllowUserUpload","RowStatusColumnEditabilityId","RowStatusColumnVisibilityId","HideRowIdColumn","CommentOnEditOnly","EVENTS_COUNT_ROLES","AllowRoles","ModuleContainer","StyledSpanIcon","EventsCountInner","eventsLoading","EventsCount","AssetQuickSearchApi","getAssetSearch","Results","TotalResultsLength","getRecentAssets","doShowSearchInput","doSetOpen","doSearchAssets","doSearchAllAssets","doGetRecentAssets","doGetRecentSearchTerms","assetQuickSearchSaga","getRecentSearchTerms","searchAssets_Success","searchAssets_Error","allCores","searchMenus","searchMenu","menuResult","setMenuSearchResults","setOnlineSearchResults","setOfflineSearchResults","setRequestSearchResults","setTotalSearchCount","online","totalRresults","searchAllAssets_Success","searchAllAssets_Error","getRecentAssets_Success","getRecentAssets_Error","getRecentSearchTerms_Success","getRecentSearchTerms_Error","menuNodes","childItems","ch","uniqBy","showSearchInput","searchAssets","searchAllAssets","showSearchInSidebar","showSearchResults","recentSearchTerms","searchResults","allSearchResults","onlineSearchResults","offlineSearchResults","requestSearchResults","totalSearchCount","menuItemsSearchResult","assetQuickSearchActions","useAssetQuickSearchSlice","selectAssetQuickSearch","assetQuickSearch","selectRecentAssets","selectRecentSearchTerms","selectAllSearchResults","selectSearchTerm","selectOpen","selectShowSearchInSidebar","selectOnlineSearchResults","selectOfflineSearchResults","selectRequestSearchResults","selectTotalSearchCount","selectMenuSearchResults","DefaultQuickAssetSearchAction","getAssetDetailsLink","getTimelineLink","AssetListItem","useAssetPopup","truncateName","defaultLink","validKey","getSettingValue","showCalendarLinks","handleAssetClick","ShowFullDetails","Avatar","ListItemSecondaryAction","RecentAssetsList","RecentItem","avatar","RecentSearchTermsList","recentSearchTermsState","RecentSearches","NoSearchTermFound","MenuSearchItem","convertUrl","Trans","MenuSearchResultList","menuSearchState","RelatedScreens","NoRelatedScreensFound","AssetSearchResultsByType","onAllAssetsClick","onlineState","offlineState","requestState","menuItemsState","OnlineServiceLabel","InstrumentsFound","RequestServiceLabel","RequestsFound","OfflineServiceLabel","ConsumablesFound","showOnline","showOffline","showRequests","NothingFound","FullResults","AssetQuickSearch","searchAllCores","totalResults","allSearchResultsState","handleOpenAssets","SearchAnAssets","AssetsSearch","TryThis","SeeAllInstruments","reg_ChangePassword","main_master_LogOutLinkText","Help","OptOutNotifications","ServiceGroupRegistration","menu_GoogleCalendar","menu_OutlookCalendar","UserMenuButton","UserMenu","googleCalendarModuleEnabled","GoogleCalendar","serviceGroupRegistrationModuleEnabled","googleCalendar","outlookCalendar","Opt_Out","AllowUsersToOpt_Out","SwitchFromToAnotherUserGroup","SwitchFrom","SwitchSites","allowToSwitchToOtherSites","AllowToSwitchToOtherSites","externalTitleOne","ExternalSwitchTitle1","externalUrlOne","ExternalSwitchUrl1","externalTitleTwo","ExternalSwitchTitle2","externalUrlTwo","ExternalSwitchUrl2","externalSitesIcon","ExternalSitesIcon","buttonIcon","hasExternalOne","hasExternalTwo","useExternalLinks","SwitchToOtherSites","LocaleSelector","connect","ProfileMenu","ToggleSideMenuButton","Separator","TopToolbar","TopGroupButton","firstServiceGroupName","CoreSelectionButton","SubTopToolbar","serviceGroupsCount","singleCore","isAdminOfSingle","handleCollapse","OpenCore","TopBar","sidePanelCollapsed","elevation","appBarShift","appBarShiftShort","sidePanelShift","GroupsIcon","groupsCount","SwitchToOtherLaboratory","GroupIcon","NavWrapper","SideBarMenu","changeSubMenuName","newName","openCoreSelection","toggleMenu","specificServiceGroups","specMenuItem","newMenuName","menu_SpecificCore","newGroupsCount","doChangeName","doAllCoresClick","doSpecificCoresClick","doChange","onAllCoresClick","onSpecificCoresClick","useSpecificCoreChanged","onSubMenuClick","passThroughIndex","tabGroup","subMenuEndIconId","subMenuEndIcon","MenuItemL1","handlePopupClick","handleTopLevelMenuItemClick","aria","StyledListItemMaybeLink","TopLevelListItemText","StyledListItemSecondaryAction","Expand","anchorPosition","ListItemMaybeLink","ListItemX","secondaryAction","BookitlabShortLogo","version","xmlnsXlink","enableBackground","xmlSpace","UserProfileMobile","assetSearchActions","SearchAssets","SideBarHeader","logoMinimized","sideBarHeaderOpen","sideBarHeaderMobile","headerButtonsMobile","StyledSideBarFooter","SideBarFooter","SideBarQuickAction","actionOptions","defaultSystemAction","SideBarQuickActions","systemAction","coreSelected","baseAction","SidebarQuickAction","sideBarQickActionMobile","SideBarComponent","SideBar","SideBarDrawer","handleDrawerClose","Drawer","ModalProps","sideBarMobile","sideBarMobileHorizontal","drawerOpen","drawerClose","LayoutRoot","Main","FullHeightBlock","AdminPanelPopper","AdminPanel","iframeLoaded","setIframeLoaded","iframeRef","closeAdminPanel","FrontendLayout","selectedGroups","isBudgets","toCoreEnabled","isRedirectToTermsOfUseAgreement","isRedirectToActiveUserGroup","isRedirectToCoreSelection","isRedirectToUsageKiosk","isRedirectToUsageRoom","isRedirectToConsumableKiosk","isRedirectToJoinAdGroup","handleFullscreenChange","innerHeight","classList","handleRejectConfirm","handleApproveConfirm","layoutRootMobile","shiftLeft","shiftRightOpen","shiftRightClose","useselectable","mobileOpen","NotSavedChanges_message","NotSavedChanges_title","ServiceRequestCard","CardHeader","dragHandleProps","StyledCardContentRow","StyledFoo","PriorityIcon","priority","getIcon","getIconColor","Kanban","onDragEnd","provided","destination","itemId","draggableId","droppableId","StyledGridContainer","StyledColumn","isDropDisabled","droppableProvided","droppableSnapshot","hasMore","scrollThreshold","onLoadMore","CardsContainer","renderTitle","draggableProvided","draggableSnapshot","draggableRubric","draggableProps","Ascending","Descending","OrderPicker","currentVal","KanbanOrderedColumns_info","FrontendLayoutContentBox","ServiceRequestsKanbanPagePath","ServiceRequestsKanban","SERVICE_REQUEST_KANBAN_IGNORED_STATUSES","ServiceRequestsKanbanPage","AllappliedFilters","selectedStatusFilter","kanban","filterChanged","newItems","StyledServiceRequestStatusMultiPicker","FileAvailability","fileSchema","linkSchema","hasAsset","setValid","setFileType","isFile","isFileTypeForm","FileAvailability_info","fileAvailable","docType","isLinkTypeForm","fromAsset","fileLink","File","isFileType","AssetFilePage","defaultAssetFile","noAsset","LinkedAssetId","LinkedAssetName","AssetDocTypeId","AssetDocTypeName","sendNotification","shouldReset","FileSchema","newActions","SavePlusOne","menu_AssetFile","webpackAsyncContext","req","__webpack_require__","exports","FontsStyle","createGlobalStyle","GlobalStyle","AnimalTypesPage","selectDialogAlert","dialogAlert","DialogAlert","useMediaQuery","DialogContentText","SnackbarManager","InternalIdLoginPage","AnimalsListPage","PosLayout","PosLayoutWrapper","AnimalCaseConsumablesPage","LoginLayout","LoginLayoutWrapper","AppBar","Toolbar","LogoMenu","AnimalsHomePage","PrivateAnimalRoute","CreateNewCasePage","SamplesListPage","TrainingSessionsPage","BuildingsPage","HistoryPage","AddNewReportPage","TrainingWaitingListPage","createBrowserHistory","basename","ExperimentTemplatesPage","UsersHistoryPage","UserTrainingPage","RestrictedRoute","allowedNode","accesibleByRole","UsersPage","AnimalExtendedBillingReportPage","UserTrainingHistoryPage","UserTrainingHistory","OtherServicesPage","BudgetsPage","ServiceRequestPage","ServiceRequestListPage","WorkOrdersPage","DocumentsPage","QuizPage","QuizDetailsPage","UserTrainingDetailsPage","TrainingDetailsPage","SampleModificationsPage","UsageHistoryPage","RunsListPage","AnimalCasesHistoryPage","SendEmailToUsersPage","SendEmailToUsers","ChargesPage","MyAssetsPage","Locations","LocationsPage","BuildingPage","CampusesPage","AreasPage","LocationListPage","SubLocationListPage","InvoiceBatches","InvoiceBatchesPage","CategoriesPage","CategoryGroupsPage","BillingPreviewPage","selectOnlineBudgetsStatus","onlineBudgetsStatus","selectOnlineBudgetsStatusSelected","selectPayState","pay","selectGenerateInvoicesState","generateInvoicesState","selectChargeOnlineBudgetsState","selectEndDate","selectIGenerateInvoicesAndSendToSapState","generateInvoicesAndSendToSap","doGetTableData","doGenerateInvoices","doChargeOnlineBudgets","doDownloadChargeOnlineBudgetsErrors","doPay","doGenerateSelectedInvoices","onlineBudgetsStatusSaga","getTableData_Success","getTableData_Error","Item","ServiceGroupsCsv","UserGroupsCsv","PeriodType","BudgetIncluded","invoiceBy","CoreInvoiceBy","InvoiceCreatedBy","InvoiceVat","CoreBy","ShowZeroAmountInvoices","ShowInvoicePartialEvents","Async","Recalculate","generateInvoices_Success","getTableData","generateInvoices_Error","processed","chargeOnlineBudgets_SetCurrentRecord","chargeOnlineBudgets_SetStatus","SuccessTransactionsCount","HostBudgetNumber","chargeOnlineBudgets_Error","chargeOnlineBudgets_Success","chargeOnlineBudgets_SetDialogOpen","ProcessingFinished","ExportToExcel","AddWorkSheetHeader","AddWorkSheetData","book","paymentDate","payments","balanceRow","Payments","pay_setStatus","pay_Finish","PaymentCreatedSuccess","GenerateInvoicesAndChargeOnlineBudgets_SetCurrentRecord","GenerateInvoicesAndChargeOnlineBudgets_SetProgress","GenerateSelectedInvoices_Error","GenerateSelectedInvoices_Success","chargeOnlineBudgets","generateInvoices","chargeOnlineBudgets_DownloadErrors","GenerateInvoicesAndChargeOnlineBudgets","needTableRefresh","setneedTableRefresh","currentRecord","pay_Open","pay_SetSelected","pay_Close","GenerateSelectedInvoices_SetDialogOpen","onlineBudgetsStatusActions","useOnlineBudgetsStatusSlice","ChargeOnlineBudgetsButton","handleDialogClose","confirmationMessage","SendBalanceToSap","ChargeBalanceOnline","DownloadErrors","GenerateInvoicesButton","GenerateInvoiceForEstimatedCharges","PayButton","totalUpaidBalance","UnpaidBalance","PayDescription","Pay","paymentMethod","TotalPayments","PaySelected","GenerateInvoicesAndSendToSap","GenerateInvoices","AddPaymentButton","LinkContent","useRowActions","accumulateInvoices","AccumulateNewChargesToExistingInvoice","invoices","tryParseInvoicesData","getBudget","getServiceGroup","SeeFullDetailsOfBalanceAndTransferChargesToAnotherBudget","BudgetDetailsBudgetTransfer","getPaymentAmount","subActions","InvoiceStart","InvoiceEnd","InvoiceBudgetBalanceKeyAccessor","OnlineBudgetsStatusPage","ByProjectUserGroup","IDNo","TotalInvoiced","ugid","showEstimated","TotlaPaid","OnlineBudgetStatusBalanceTooltip","OverallEstimatedBalanceTooltip","OverallEstimatedBalance","OnlineBudgetStatusEstimatedChargesTooltip","EstimatedCharges","useColumns","endDateString","memoedColumns","disableActionButtons","EndDateMustBeSetToTodayOrEarlier","WS_Billing","usePageActions","handleEndDateChange","OnlineBudgetsBillingUnfinishedUsagesRemark0","OnlineBudgetsBillingUnfinishedUsagesRemark1","OnlineBudgetsBillingUnfinishedUsagesRemark2","OnlineBudgetsBillingUnfinishedUsagesRemark4","OnlineBudgetsBillingUnfinishedUsagesRemark3","rowAccessor","OnlineBudgetsStatusTable","BillingByProjectsOrCores","OnlineBudgetsStatus","InvoiceDetailsPage","WorkOrderDetailsPage","BillingPage","BillingActions","BillingActionsPage","BillingActionsDetailsPage","LocationTypesPage","SubLocationTypesPage","SavedViewDetailsPage","SavedViews","SavedViewsPage","LabelTypesPage","AssetDetailsPage","LabelPrintDialog","KioskProjectsPage","KioskProjectConsumablesPage","PrivateKioskProjectsRoute","SESSIONTIMEOUT_ASHX_CACHE_BUST","checkFailCount","CheckSessionTimeout","loginUrl","appRoot","showWarning","redirectAction","onbeforeunload","currentUrl","Fulfilled","ExtendSessionTimeout","dataType","contentType","buttonText","onButtonClick","SessionTimeout","checkUrl","ignoreSession","Warning","SessionExpirationWarning","SubmissionsPage","QuizzesPage","AdHocReportListPage","Rooms","CalendarMessages","CalendarMessagesPage","CoresDirectoryPage","SamplePlatesPage","useTabTitle","selectorLoading","favIconImg","FavIconImg","favIconTitle","FavIconTitle","defaultFavicon","refFavIcon","favIcon","favLink","useFavicon","handleFavIconChange","defaultTitle","refTitle","useTitle","handleTitleChange","HeadTitle","titleTemplate","htmlAttributes","lang","InstrumentRestrictionsPage","LabelTypeDetailsPage","ConfigurableColumnExportImportPage","ShortURLRoute","hash","rooted","ServerBarcodeRoute","templates","exact","NewMessagePage","OtherServiceDetailsPage","InvoiceTemplates","InvoiceTemplatesPage","Expenses","ExpensesPage","PricePeriodsPagePage","PricePeriods","PriceSheetPeriodDetailsPage","ArticlesPagePath","ArticlesPage","AccountLayout","RegisterPage","CalendarPage","updateY","withSaveAsLastVisitedPage","CalendarPageDefaultRedir","ReservationDetailsPage","HomePage","SystemPage","DashboardPage","DefaultDashboardPage","CoreSelectionPage","CoreHomePage","CoreHomeByRoutePage","CoreStatsPage","ReportingPage","BookitLabDashboadPage","RedirectWithSearch","preserveSearch","AssetSelectionPage","TermsOfUseAgreementPage","upSnackbarIndex","SnackWrapper","ActiveUserGroupPage","CannedReportsPage","CannedReports","UserAttributes","UserAttributesPage","ReportConsumablesPage","LoginPage","CalendarMessagesDetailsPage","OfflineServiceTypesPage","AnimalCaseEditPage","library","faUserCircle","faChevronUp","faPencil","faLock","faUsers","faBell","faQuestionCircle","faSignOutAlt","faHome","faLayerGroup","faBookmark","faCalendarAlt","faDumbbell","faCommentAltDots","faBolt","faListUl","faChartBar","faChartColumn","faChartLine","faChartPie","faChartPieAlt","faMegaphone","faFileInvoiceDollar","faCog","faTimes","faCircle","faCircleSmall","faCircleCheck","faPrint","faSearch","faChevronDoubleUp","faChevronDoubleDown","faCheck","faCheckDouble","faInfo","faTriangleExclamation","faXmark","faChevronDown","faCircleXmark","faEllipsisV","faPlus","faFilter","faTable","faMinus","faFileImport","faGlobe","faLockOpen","faEdit","faTrash","faInfoCircle","faGripVertical","faBellSlash","faExclamationCircle","faTimesCircle","faArrowLeft","faTools","faPlay","faHistory","faAdd","faStream","faRulerTriangle","faThList","faClipboardListCheck","faPencilAlt","faCalendarPlus","faPause","faSave","faCalendars","faListTimeline","faCode","faBan","faFloppyDiskCircleArrowRight","faCalculator","faRefresh","faSquare","faClone","faClock","faChevronRight","faClipboardList","faEnvelope","faCalendar","faCheckCircle","faLink","faChevronDoubleRight","faChevronDoubleLeft","faChevronLeft","faList","faUser","faGripHorizontal","faArrowFromLeft","faVial","faStopwatch","faWrench","faArrowUpRightFromSquare","faExternalLink","faExternalLinkAlt","faClose","faDownload","faBold","faItalic","faUnderline","faH1","faH2","faQuoteRight","faListOl","faFileAlt","faAt","faBarcode","faChain","faPowerOff","faPlug","faMicroscope","faCalendarCheck","faCalendarExclamation","faCalendarTimes","faFileUpload","faSpinner","faMoneyCheckEdit","faLevelUpAlt","faPaperclip","faAbacus","faAlbum","faFile","faSync","faRectangleVerticalHistory","faUniversity","faShopSlash","faDollarSign","faExchange","faSms","faUserPlus","faUserShield","faWarning","faLocationCrosshairs","faCircleDollarToSlot","faCopy","faCodeBranch","faChevronsUp","faChevronsDown","faEquals","faFileSpreadsheet","faFilePdf","faNewspaper","faFileImage","faFlag","faBarcodeScan","faMap","faBars","faMagnifyingGlass","faGrid2","faScrewdriver","faBullhorn","faMoneyBill","faFileArrowUp","faEarthEurope","faScannerKeyboard","faChevronsLeft","faChevronsRight","faCircleNotch","faMapLocation","faScrewdriverWrench","faBandage","faHourglassHalf","fasInfinity","faSquareMinus","faSquarePlus","faArrowsToEye","faSquareChevronUp","faToggleOn","faToggleOff","faToggleLargeOn","faToggleLargeOff","faCircleDashed","falCircleCheck","falTriangleExclamation","falCircleQuarters","falCircleExclamation","falMinimize","falMaximize","falTable","falCalendars","falPencil","FalBinoculars","fadTelescope","fadInfinity","fadCalendarCheck","fadCalendarExclamation","fadCalendarTimes","fadCalendarPlus","farMaximize","farCommentQuestion","farcircleExclamation","farCircleCheck","farCircle","farCircleSmall","farSquareChevronUp","farToggleOn","farToggleOff","farToggleLargeOn","farToggleLargeOff","farPencil","farFileAlt","farEye","farArrowsToEye","farCircleDashed","fabGoogle","fabWindows","faShare","faGear","faArrowUp","faArrowDown","faSigma","faEye","faBinoculars","PablicLayoutWrapper","PublicAssetsLayout","PublicAssetsPage","NotAllowedPage","PlayGroundPage","AssetsInventoryPage","AssetsInventoryLogPage","ServiceRequestAuditTrailHistoryPage","Floors","SubscriptionTypesPage","BudgetExperimentsPage","RequestStatusesPage","RequestStatuses","SubscribersPage","Subscribers","RegionDetailsPage","regionId","ProjectMembersPage","ReservationWaitingListPage","ReservationWaitingList","JoinAdGroupPage","JoinConfirmPage","PlannedWorkOrdersPage","NotificationsPage","SamplePlatesDetailsPage","AssetsFilePage","AssetSettingsPage","AssetSettings","UsageDetailsPage","RegionsPage","Regions","SuperGroupsPage","SuperGroups","AssemblySnapshotsPage","UserProfilePage","AssetSearchHistoryPage","AllCoresPage","SpecificCoresPage","CoreSettingsPage","SSOErrorsPage","SSOErrors","SubscribersDetailsPage","SsoIntegrationPage","SsoIntegration","BudgetsRestrictedRoute","routeProps","UserAccessToBudgetsUnionUserAccessToBudgetsUnion","isBudgetsAccessible","PublicSchedulePage","SystemSettingsAuditTrailPage","CostCentersPage","CostCenters","CostCentersDetailsPage","OfflineTypeReferencesPage","OfflineTypeReferences","ServiceRequestTypesPage","CustomFormPreviewPage","jss","jssPreset","App","userLoading","isLoginPage","isPublicPage","useDir","bookitTheme","defaultTheme","animalTheme","CurrentLocale","StylesProvider","CssBaseline","IsLoaded","TransitionComponent","I18nContext","barcodeScannerMiddleware","store","BARCODE_SCANNING","LoggingSagaMonitor","disableAll","effectId","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","MobileBarcodeScanner","handleBarcodeScanned","mobileBarcodeScanCallback","reduxSagaMonitorOptions","sagaMonitor","sagaMiddleware","createSagaMiddleware","runSaga","middlewares","createRouterMiddleware","createReducer","injectedReducers","combineReducers","connectRouter","barcodeScanner","barcodeScannerReducer","enhancers","createInjectorsEnhancer","configureStore","middleware","getDefaultMiddleware","serializableCheck","immutableCheck","devTools","configureAppStore","MOUNT_NODE","google","families","intervalBetweenKeyPress","scanningEndTimeout","ignoreOnInput","historyLength"],"mappings":";wGAEA,kCAUO,IAAMA,EACX,IAAIC,MACF,GACA,CACEC,IADF,SACMC,EAAQC,GACV,OAAOA,M,4GCRiBC,E,6rBAJ5BC,IAI4BD,EAH9BE,EAAQ,QAIMF,EAAIG,WAAaH,EAAM,CAAEI,QAASJ,GAGlD,IAmCaK,GAjBI,CACfC,MAAM,EAAIL,GAAOG,SAAS,CACxBG,QApBc,CAChBC,KAAM,uBACNC,KAAM,iBACNC,OAAQ,gBACRC,MAAO,SAiBLC,aAAc,SAEhBC,MAAM,EAAIZ,GAAOG,SAAS,CACxBG,QAlBc,CAChBC,KAAM,eACNC,KAAM,YACNC,OAAQ,UACRC,MAAO,QAeLC,aAAc,SAEhBE,UAAU,EAAIb,GAAOG,SAAS,CAC5BG,QAhBkB,CACpBC,KAAM,+CACNC,KAAM,+CACNC,OAAQ,qBACRC,MAAO,sBAaLC,aAAc,U,UCzCLG,GAAqB,CAChC,OACA,KACA,KACA,QACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QACA,KACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,KACA,QACA,KACA,KACA,QACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QACA,KACA,KACA,KACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,KACA,QACA,QACA,SChBIC,GAAMC,aAAU,a,IAYhBC,G,WAEJ,aAAe,yBADfC,kBACc,OAoTPC,cAA+B,CACpCC,WAAY,IACZC,SAAU,KACVC,oBAAqB,OACrBC,aAAc,OACdC,gBAAiB,eACjBC,gBAAiB,WACjBC,SAAU,IACVC,YAAa,YACbC,YAAa,QACbC,SAAU,KACVC,SAAU,KACVC,aAAc,IACdC,iBAAkB,MAClBC,oBAAqB,cACrBC,oBAAqB,UACrBC,QAAS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CAAAA,I,4DAAAA,I,gFAAAA,I,gFAAAA,I,0DAAAA,I,sDAAAA,I,wCAAAA,I,8CAAAA,I,gDAAAA,I,8DAAAA,I,8CAAAA,I,wDAAAA,I,gDAAAA,I,kDAAAA,I,oEAAAA,I,kDAAAA,I,4EAAAA,I,wEAAAA,I,gEAAAA,I,wEAAAA,I,kEAAAA,I,sDAAAA,I,oFAAAA,I,oEAAAA,I,oEAAAA,I,wCAAAA,I,0DAAAA,I,kDAAAA,I,8CAAAA,I,sDAAAA,I,8EAAAA,I,0FAAAA,I,oEAAAA,I,wDAAAA,I,oCAAAA,I,gDAAAA,I,8CAAAA,I,0GAAAA,I,oFAAAA,I,4EAAAA,I,0DAAAA,I,gDAAAA,I,oEAAAA,I,wDAAAA,I,4DAAAA,I,8DAAAA,I,kDAAAA,I,8DAAAA,I,kDAAAA,I,oEAAAA,I,oEAAAA,I,sDAAAA,I,wEAAAA,I,8EAAAA,I,oGAAAA,I,gFAAAA,I,wDAAAA,I,4DAAAA,I,kDAAAA,I,0CAAAA,I,0FAAAA,I,4CAAAA,I,4DAAAA,I,4DAAAA,I,0DAAAA,I,4BAAAA,I,gEAAAA,I,oDAAAA,I,4DAAAA,I,iEAAAA,I,6CAAAA,I,iCAAAA,I,iEAAAA,I,qFAAAA,I,6CAAAA,I,2DAAAA,I,iDAAAA,I,6CAAAA,I,iDAAAA,I,6CAAAA,I,2CAAAA,I,2DAAAA,I,2DAAAA,I,2DAAAA,I,mEAAAA,I,mEAAAA,I,mDAAAA,I,mFAAAA,I,yCAAAA,I,+CAAAA,I,2DAAAA,I,uDAAAA,I,2CAAAA,I,6CAAAA,I,mCAAAA,I,qCAAAA,I,mEAAAA,I,+EAAAA,I,mFAAAA,I,2CAAAA,I,yEAAAA,I,iFAAAA,I,6DAAAA,I,6DAAAA,I,iFAAAA,I,mGAAAA,I,qCAAAA,I,2EAAAA,I,yDAAAA,I,qCAAAA,I,+CAAAA,I,qDAAAA,I,6DAAAA,I,6CAAAA,I,iDAAAA,I,mDAAAA,I,mEAAAA,I,2DAAAA,I,6EAAAA,I,+BAAAA,I,yCAAAA,I,2DAAAA,I,mEAAAA,I,6DAAAA,I,qEAAAA,I,mEAAAA,I,uDAAAA,I,yEAAAA,I,yGAAAA,I,qDAAAA,I,+CAAAA,I,8DAAAA,M,mCCaL,SAAS0uC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AED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,GAED,QAAS,CACR,KACA,EACA,GAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,GAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,GAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,GAED,QAAS,CACR,KACA,EACA,GAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,GAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,GAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,KAED,WAAY,CACX,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,KAED,WAAY,CACX,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,KAED,WAAY,CACX,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,IACA,GAED,WAAY,CACX,IACA,GAED,8BAA+B,CAC9B,IACA,GAED,+BAAgC,CAC/B,IACA,GAED,oCAAqC,CACpC,IACA,GAED,uCAAwC,CACvC,IACA,GAED,0BAA2B,CAC1B,IACA,GAED,2BAA4B,CAC3B,IACA,GAED,gCAAiC,CAChC,IACA,GAED,mCAAoC,CACnC,IACA,GAED,8BAA+B,CAC9B,IACA,GAED,+BAAgC,CAC/B,IACA,GAED,oCAAqC,CACpC,IACA,GAED,uCAAwC,CACvC,IACA,GAED,wBAAyB,CACxB,IACA,GAED,yBAA0B,CACzB,IACA,GAED,8BAA+B,CAC9B,IACA,GAED,iCAAkC,CACjC,IACA,GAED,qBAAsB,CACrB,IACA,GAED,sBAAuB,CACtB,IACA,GAED,2BAA4B,CAC3B,IACA,GAED,8BAA+B,CAC9B,IACA,GAED,gBAAiB,CAChB,IACA,GAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,IACA,GAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,KAED,WAAY,CACX,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,GAED,QAAS,CACR,KACA,EACA,GAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,GAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,GAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,YAAa,CACZ,KACA,EACA,IAED,aAAc,CACb,KACA,EACA,IAED,gCAAiC,CAChC,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,sCAAuC,CACtC,KACA,EACA,KAED,yCAA0C,CACzC,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,kCAAmC,CAClC,KACA,EACA,KAED,qCAAsC,CACrC,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,sCAAuC,CACtC,KACA,EACA,KAED,yCAA0C,CACzC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,IAED,oBAAqB,CACpB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,IAED,0BAA2B,CAC1B,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,GAED,QAAS,CACR,KACA,EACA,GAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,GAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,GAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,GAED,QAAS,CACR,KACA,EACA,GAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,GAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,GAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,GAED,QAAS,CACR,KACA,EACA,GAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,GAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,GAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,YAAa,CACZ,KACA,EACA,KAED,iBAAkB,CACjB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,GAED,QAAS,CACR,KACA,EACA,GAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,GAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,GAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,YAAa,CACZ,KACA,EACA,IAED,aAAc,CACb,KACA,EACA,IAED,gCAAiC,CAChC,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,sCAAuC,CACtC,KACA,EACA,KAED,yCAA0C,CACzC,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,kCAAmC,CAClC,KACA,EACA,KAED,qCAAsC,CACrC,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,sCAAuC,CACtC,KACA,EACA,KAED,yCAA0C,CACzC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,IAED,oBAAqB,CACpB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,IAED,0BAA2B,CAC1B,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,IAED,4BAA6B,CAC5B,KACA,EACA,IAED,iCAAkC,CACjC,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,YAAa,CACZ,KACA,EACA,IAED,aAAc,CACb,KACA,EACA,IAED,gCAAiC,CAChC,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,sCAAuC,CACtC,KACA,EACA,KAED,yCAA0C,CACzC,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,kCAAmC,CAClC,KACA,EACA,KAED,qCAAsC,CACrC,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,sCAAuC,CACtC,KACA,EACA,KAED,yCAA0C,CACzC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,IAED,oBAAqB,CACpB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,IAED,0BAA2B,CAC1B,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,OAAQ,CACP,KACA,EACA,IAED,QAAS,CACR,KACA,EACA,IAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,6BAA8B,CAC7B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,4BAA6B,CAC5B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,aAAc,CACb,KACA,EACA,IAED,eAAgB,CACf,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,qBAAsB,CACrB,KACA,EACA,KAED,eAAgB,CACf,KACA,EACA,KAED,oBAAqB,CACpB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,IAED,+BAAgC,CAC/B,KACA,EACA,IAED,oCAAqC,CACpC,KACA,EACA,IAED,uCAAwC,CACvC,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,0BAA2B,CAC1B,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,gCAAiC,CAChC,KACA,EACA,KAED,mCAAoC,CACnC,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC,CACpC,KACA,EACA,KAED,uCAAwC,CACvC,KACA,EACA,KAED,wBAAyB,CACxB,KACA,EACA,KAED,yBAA0B,CACzB,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,iCAAkC,CACjC,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,sBAAuB,CACtB,KACA,EACA,KAED,2BAA4B,CAC3B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,EACA,KAED,gBAAiB,CAChB,KACA,EACA,IAED,kBAAmB,CAClB,KACA,EACA,KAED,qBAAsB,CACrB,KACA,EACA,KAED,mBAAoB,CACnB,KACA,EACA,IAED,wBAAyB,CACxB,KACA,EACA,KAED,kBAAmB,CAClB,KACA,EACA,KAED,uBAAwB,CACvB,KACA,EACA,KAED,UAAW,CACV,KACA,EACA,IAED,WAAY,CACX,KACA,EACA,IAED,8BAA+B,CAC9B,KACA,EACA,KAED,+BAAgC,CAC/B,KACA,EACA,KAED,oCAAqC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CrC,kBAAM,oCACN,SAAA31B,GAAM,OAAIA,EAAOmua,2B,oBCDNC,GAAqBz4Y,aAChC,kBAAM,4DACN,SAAA31B,GAAM,OAAIA,EAAOoua,sB,+0ECwanBC,KAAQ9xa,IAEN+xa,gBACAC,eACAC,YACAC,UACAC,WACAC,UACAC,oBACAC,gBACAC,UACAC,gBACAC,cACAC,iBACAC,cACAC,oBACAC,UACAC,YACAC,cACAC,iBACAC,eACAC,cACAC,iBACAC,eACAC,uBACAC,SACAC,WACAC,YACAC,iBACAC,iBACAC,WACAC,YACAC,qBACAC,uBACAC,WACAC,iBACAC,UACAC,yBACAC,WACAC,iBACAC,iBACAC,eACAC,UACAC,YACAC,WACAC,WACAC,gBACAC,WACAC,cACAC,UACAC,WACAC,gBACAC,kBACAC,eACAC,uBACAC,iBACAC,eACAC,WACAC,UACAC,aACAC,SACAC,YACAC,mBACAC,YACAC,wBACAC,eACAC,kBACAC,WACAC,UACAC,eACAC,kBACAC,UACAC,SACAC,gCACAC,gBACAC,aACAC,YACAC,WACAC,WACAC,kBACAC,mBACAC,cACAC,cACAC,iBACAC,UACAC,wBACAC,uBACAC,iBACAC,UACAC,UACAC,oBACAC,mBACAC,UACAC,eACAC,YACAC,4BACAC,kBACAC,qBACAC,WACAC,cACAC,UACAC,YACAC,eACAC,QACAC,QACAC,gBACAC,YACAC,aACAC,QACAC,aACAC,WACAC,cACAC,UACAC,gBACAC,mBACAC,yBACAC,mBACAC,gBACAC,aACAC,oBACAC,gBACAC,eACAC,YACAC,WACAC,UACAC,UACAC,8BACAC,gBACAC,eACAC,gBACAC,cACAC,SACAC,cACAC,gBACAC,aACAC,wBACAC,wBACAC,UACAC,gBACAC,gBACAC,kBACAC,YACAC,qBACAC,aACAC,eACAC,eACAC,UACAC,iBACAC,SACAC,UACAC,qBACAC,WACAC,iBACAC,cACAC,eACAC,iBACAC,iBACAC,qBACAC,kBACAC,mBACAC,iBACAC,iBACAC,uBACAC,aACAC,mBACAC,cACAC,iBACAC,gBAC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ACA,iBACA,mCACA,gBACA,WACA,sBACA,uBACA,eACA,6CACA,gBACA,cACA,uBACA,iBACA,0BACA,6BACA,qBACA,0BACA,cACA,uBACA,0BACA,gBACA,WACA,mBACA,0BAEA,gBACA,wCACA,oBACA,aACA,YACA,YACA,SACA,gBACA,mBACA,kBACA,cACA,kBACA,kBACA,uBACA,gCACA,oBACA,wBACA,WACA,kBACA,2BACA,8BACA,iBACA,oBACA,sBACA,mBACA,WACA,cACA,uBACA,0BACA,0BACA,kBACA,oBACA,YACA,kCACA,oBACA,2BACA,wBACA,gBACA,2BACA,wBACA,eACA,uBACA,2BACA,iBACAwgC,KACAm2G,GACA,kBACA,uBAEAthZ,KACA,oBACA,wBACA,cACA,mCACA,eACA,qBACA,qBACA,mBACA,eACA,0BACA,uBACA,kBACA,eACA,WACA,sBACA,mBACA,eACA,qBACA,gBACA,uBACA,wBACA,6BACA,0BACA,aACA,mBACA,iBACA,oBACA,qBACA,qBACA,kBACA,gBACA,gCACA,eACA,0BACA,uBACA,sBACA,uBACA,uDA3JJ,SA8JE,eAAC,IAAD,CAAkB7T,MAAO6oa,EAAzB,SAGE,eAACpsB,EAAD,UAEE,gBAAC,IAAD,WACE,eAAC,IAAD,CACEhhY,KAAM,mBACNT,UAAW46Y,KAEb,eAAC,IAAD,CACEn6Y,KAAM,CAAC,sCACPT,UAAWi7Y,KAEb,eAAC,IAAD,CACEx6Y,KAAM,wBACNT,UAAWm7Y,KAEb,eAAC,IAAD,CACE16Y,KAAM,wBACNT,UAAWo7Y,KAEb,eAAC,IAAD,CACE36Y,KAAM,cACNT,UAAW86Y,KAEb,eAAC,IAAD,CACEr6Y,KAAM,iBACNT,UAAWg7Y,KAEb,eAAC,IAAD,CACEv6Y,KAAM,cACNT,UAAW66Y,KAEb,eAAC,IAAD,CACEp6Y,KAAM,gBACNT,UAAWisZ,KAEb,eAAC,IAAD,CACExrZ,KAAM,iBACNT,UAAWksZ,KAEb,eAAC,IAAD,CACEzrZ,KAAM,6BACNT,UAAWq7Y,KAEb,eAAC,IAAD,CACE5B,OAAK,EACLh5Y,KAAM4xH,KACN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","file":"static/js/main.fd4cd8cf.chunk.js","sourcesContent":["import { ConvertedToObjectType, TranslationJsonType } from './types';\r\n\r\n/**\r\n * This file is seperate from the './i18n.ts' simply to make the Hot Module Replacement work seamlessly.\r\n * Your components can import this file in 'messages.ts' files which would ruin the HMR if this isn't a separate module\r\n **/\r\n\r\n/**\r\n * translations object - primarily provides intellisence on resource/localization keys during compilation time.\r\n * At a later stage the json keys file is ditched entirely in favor of backend localization resources. At this stage this object only needs to return it's keys and nothing more.\r\n * Otherwise the whole resource file can end up being bundled in the main/vendors chunk which adds around 1MB to the file size.\r\n */\r\nexport const translations: ConvertedToObjectType =\r\n new Proxy(\r\n {},\r\n {\r\n get(target, key) {\r\n return key;\r\n },\r\n },\r\n ) as any;\r\n","// This module is copied from\r\n// node_modules\\date-fns\\locale\\he\\_lib\\formatLong\\index.js\r\n// and modified to solve the date separator problem for \"HE\".\r\n// Here the date separator \".\" is replaced with \"/\" for short date case.\r\n\r\nvar _index = _interopRequireDefault(\r\n require('date-fns/locale/_lib/buildFormatLongFn/index.js'),\r\n);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nvar dateFormats = {\r\n full: 'EEEE, d בMMMM y',\r\n long: 'd בMMMM y',\r\n medium: 'd בMMM y',\r\n short: 'd/M/y',\r\n};\r\nvar timeFormats = {\r\n full: 'H:mm:ss zzzz',\r\n long: 'H:mm:ss z',\r\n medium: 'H:mm:ss',\r\n short: 'H:mm',\r\n};\r\nvar dateTimeFormats = {\r\n full: \"{{date}} 'בשעה' {{time}}\",\r\n long: \"{{date}} 'בשעה' {{time}}\",\r\n medium: '{{date}}, {{time}}',\r\n short: '{{date}}, {{time}}',\r\n};\r\nvar formatLong = {\r\n date: (0, _index.default)({\r\n formats: dateFormats,\r\n defaultWidth: 'full',\r\n }),\r\n time: (0, _index.default)({\r\n formats: timeFormats,\r\n defaultWidth: 'full',\r\n }),\r\n dateTime: (0, _index.default)({\r\n formats: dateTimeFormats,\r\n defaultWidth: 'full',\r\n }),\r\n};\r\n/*var _default = formatLong;\r\nexports.default = _default;\r\nmodule.exports = exports.default;*/\r\nexport const formatLongHE = formatLong;\r\n","//C:\\Users\\mikea\\Projects\\bookitlab\\web-ui [40.6 ≡ +3 ~15 -0 | +4 ~260 -0 !]> Get-ChildItem C:\\Users\\mikea\\Projects\\bookitlab\\web-ui\\node_modules\\date-fns\\esm\\locale\\ -Directory | select -ExpandProperty name | ConvertTo-Json\r\nexport const dateFnsLocalesList = [\r\n '_lib',\r\n 'af',\r\n 'ar',\r\n 'ar-DZ',\r\n 'ar-EG',\r\n 'ar-MA',\r\n 'ar-SA',\r\n 'ar-TN',\r\n 'az',\r\n 'be',\r\n 'bg',\r\n 'bn',\r\n 'bs',\r\n 'ca',\r\n 'cs',\r\n 'cy',\r\n 'da',\r\n 'de',\r\n 'de-AT',\r\n 'el',\r\n 'en-AU',\r\n 'en-CA',\r\n 'en-GB',\r\n 'en-IE',\r\n 'en-IN',\r\n 'en-NZ',\r\n 'en-US',\r\n 'en-ZA',\r\n 'eo',\r\n 'es',\r\n 'et',\r\n 'eu',\r\n 'fa-IR',\r\n 'fi',\r\n 'fr',\r\n 'fr-CA',\r\n 'fr-CH',\r\n 'fy',\r\n 'gd',\r\n 'gl',\r\n 'gu',\r\n 'he',\r\n 'hi',\r\n 'hr',\r\n 'ht',\r\n 'hu',\r\n 'hy',\r\n 'id',\r\n 'is',\r\n 'it',\r\n 'ja',\r\n 'ja-Hira',\r\n 'ka',\r\n 'kk',\r\n 'km',\r\n 'kn',\r\n 'ko',\r\n 'lb',\r\n 'lt',\r\n 'lv',\r\n 'mk',\r\n 'mn',\r\n 'ms',\r\n 'mt',\r\n 'nb',\r\n 'nl',\r\n 'nl-BE',\r\n 'nn',\r\n 'pl',\r\n 'pt',\r\n 'pt-BR',\r\n 'ro',\r\n 'ru',\r\n 'sk',\r\n 'sl',\r\n 'sq',\r\n 'sr',\r\n 'sr-Latn',\r\n 'sv',\r\n 'ta',\r\n 'te',\r\n 'th',\r\n 'tr',\r\n 'ug',\r\n 'uk',\r\n 'uz',\r\n 'uz-Cyrl',\r\n 'vi',\r\n 'zh-CN',\r\n 'zh-HK',\r\n 'zh-TW',\r\n];\r\n","import DateFnsUtils from '@date-io/date-fns';\r\nimport { IUtils } from '@date-io/core/IUtils';\r\n\r\nimport {\r\n add,\r\n addMilliseconds,\r\n addDays,\r\n addHours,\r\n addMinutes,\r\n addMonths,\r\n addQuarters,\r\n addSeconds,\r\n addWeeks,\r\n addYears,\r\n differenceInCalendarDays,\r\n differenceInDays,\r\n differenceInHours,\r\n differenceInMinutes,\r\n differenceInMonths,\r\n differenceInQuarters,\r\n differenceInSeconds,\r\n differenceInWeeks,\r\n differenceInYears,\r\n endOfDay,\r\n endOfHour,\r\n endOfMonth,\r\n endOfQuarter,\r\n endOfTomorrow,\r\n endOfWeek,\r\n endOfYear,\r\n endOfYesterday,\r\n format,\r\n startOfMinute,\r\n formatDistanceToNow,\r\n formatISO,\r\n getDate,\r\n getDay,\r\n getDayOfYear,\r\n getDaysInMonth,\r\n getHours,\r\n getMinutes,\r\n getMonth,\r\n getYear,\r\n getWeekOfMonth,\r\n intervalToDuration,\r\n isToday,\r\n lastDayOfMonth,\r\n Locale,\r\n parse,\r\n parseISO,\r\n set,\r\n setDate,\r\n setDay,\r\n setHours,\r\n setMinutes,\r\n setMonth,\r\n setWeek,\r\n setYear,\r\n startOfDay,\r\n startOfHour,\r\n startOfMonth,\r\n startOfQuarter,\r\n startOfToday,\r\n startOfTomorrow,\r\n startOfWeek,\r\n startOfYesterday,\r\n} from 'date-fns';\r\nimport { formatInTimeZone } from 'date-fns-tz';\r\nimport startOfYear from 'date-fns/startOfYear';\r\nimport { CustomDate, DateType } from 'types/CustomDate';\r\nimport { formatLongHE } from 'utils/LocaleHE';\r\nimport { getLogger } from './logLevel';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\nimport { LocaleIdentifier } from 'app/slice/types';\r\nimport { dateFnsLocalesList } from './date-fns-locales-list';\r\n\r\nconst log = getLogger('DateUtils');\r\n\r\n/**\r\n * he->he\r\n * en-us->enUS\r\n * @param s\r\n * @returns\r\n */\r\nexport function dateFnsCultureName(localeId: LocaleIdentifier): string {\r\n return localeId.language + localeId.region;\r\n}\r\n\r\nclass DateUtils {\r\n dateFnsUtils: IUtils;\r\n constructor() {\r\n this.dateFnsUtils = new DateFnsUtils();\r\n }\r\n\r\n CurrentLocale(): Locale {\r\n return this.dateFnsUtils.locale;\r\n }\r\n public async setLocale(\r\n localeId: string,\r\n systemFirstDayOfWeek?: WeekStartsOn,\r\n ) {\r\n const l = parseLocale(localeId);\r\n try {\r\n const locale = (await this.getLocale(l)) as Locale;\r\n if (locale !== undefined) {\r\n this.dateFnsUtils.locale = locale;\r\n\r\n if (\r\n this.dateFnsUtils.locale.options !== undefined &&\r\n systemFirstDayOfWeek !== undefined\r\n ) {\r\n this.dateFnsUtils.locale.options.weekStartsOn = systemFirstDayOfWeek;\r\n }\r\n } else {\r\n console.warn('locale not found', localeId);\r\n }\r\n } catch (err) {\r\n console.error('setLocale', localeId, err);\r\n }\r\n }\r\n async tryImportLocale(culture: string) {\r\n // first a quick check that there should be such a locale\r\n if (!dateFnsLocalesList.includes(culture)) {\r\n return undefined;\r\n }\r\n try {\r\n const module = await import(`date-fns/esm/locale/${culture}`);\r\n return module.default;\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n async getLocale(culture: LocaleIdentifier) {\r\n // try fetching most specific local e.g. en-US\r\n let result = await this.tryImportLocale(\r\n [culture.language, culture.region].join('-'),\r\n );\r\n if (result === undefined) {\r\n // try and import language only locale if full locale identifier yielded no results\r\n // e.g. no en-150 (en-EU) locale is present at dateFns locales, so in this case try to fall back to \"en\"\r\n if (culture.region !== undefined) {\r\n result = await this.tryImportLocale(culture.language);\r\n }\r\n }\r\n if (result !== undefined) {\r\n if (result.code === 'he') {\r\n result.formatLong = formatLongHE;\r\n }\r\n }\r\n return result;\r\n }\r\n dateOrStringToDate(v: string | Date): Date {\r\n const d = typeof v === 'string' ? this.parseISO(v as string) : (v as Date);\r\n return d;\r\n }\r\n\r\n format(v: Date | string | null | undefined, f: string): string | null {\r\n if (v == null || v === undefined) {\r\n return null;\r\n }\r\n try {\r\n const d = this.dateOrStringToDate(v);\r\n return format(d, f, {\r\n locale: this.dateFnsUtils.locale,\r\n });\r\n } catch (err) {\r\n console.error(err);\r\n return null;\r\n }\r\n }\r\n public HoursMinutesSecondsFormat(v: Date | string | null): string | null {\r\n //return this.format(v, 'hh:mm:ss');\r\n return this.format(v, this.DateIOFormats.fullTime);\r\n }\r\n /**\r\n * Format to long date only format (localized). e.g. 23 Apr 2987\r\n * @param v date\r\n * @returns localized formatted string\r\n */\r\n public longDateFormat(v: Date | string | null | undefined): string | null {\r\n return this.format(v, this.DateIOFormats.fullDate); //'PP'\r\n }\r\n /**\r\n * Format to short date only format (localized). e.g. 23 04 2987\r\n * @param v date\r\n * @returns localized formatted string\r\n */\r\n public shortDateFormat(v: Date | string | null | undefined): string | null {\r\n return this.format(v, this.DateIOFormats.keyboardDate); //'P'\r\n }\r\n\r\n /**\r\n * Format to long date + time format (localized). e.g. 23 Apr 2987 12:13 AM\r\n * @param v date\r\n * @returns localized formatted string\r\n */\r\n public fullDateTimeFormat(v: Date | string): string | null {\r\n const d = this.dateOrStringToDate(v);\r\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n return formatInTimeZone(\r\n d,\r\n timeZone,\r\n this.DateIOFormats.fullDateTime + ' zzz',\r\n {\r\n locale: this.dateFnsUtils.locale,\r\n },\r\n ); //PP pp\r\n }\r\n /**\r\n * Format to long date + time format (localized). e.g. 23 Apr 2987 12:13 AM\r\n * @param v date\r\n * @returns localized formatted string\r\n */\r\n public longDateTimeFormat(\r\n v: Date | string | null | undefined,\r\n ): string | null {\r\n return this.format(v, this.DateIOFormats.fullDateTime); //PP pp\r\n }\r\n /**\r\n * Format to short date + time format (localized). e.g. 23 04 2987 12:13 AM\r\n * @param v date\r\n * @returns localized formatted string\r\n */\r\n public shortDateTimeFormat(\r\n v: Date | string | null | undefined,\r\n ): string | null {\r\n return this.format(v, this.DateIOFormats.keyboardDateTime); //P p\r\n }\r\n public timeFormat(v: Date | string | null | undefined): string | null {\r\n return this.format(v, this.DateIOFormats.fullTime); //p\r\n }\r\n public parseISO(s: string | Date): Date {\r\n if (typeof s === 'string') {\r\n return parseISO(s);\r\n } else {\r\n return s;\r\n }\r\n }\r\n public tryParseISO(s: string): Date | null {\r\n try {\r\n return parseISO(s);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Little helper function to parse .net dto date fields.\r\n * @param s ISO like string\r\n * @returns parsed date or null\r\n */\r\n public parseISOOrNull(s: string | Date | null): Date | null {\r\n if (s === null) {\r\n return null;\r\n }\r\n if (typeof s === 'string') {\r\n try {\r\n return parseISO(s);\r\n } catch (error) {\r\n log.error(`parseISOOrNull - failed to parse ${s}`);\r\n return null;\r\n }\r\n } else {\r\n return s;\r\n }\r\n }\r\n public tryParse(s: string | undefined | null): Date | null {\r\n if (s === undefined) {\r\n return null;\r\n }\r\n if (s === null) {\r\n return null;\r\n }\r\n //first try pars using iso\r\n let result = this.parseISO(s);\r\n if (result === undefined) {\r\n return null;\r\n }\r\n if (!isNaN(result.getTime())) {\r\n return result;\r\n }\r\n\r\n // then try localized short date time\r\n result = parse(s, 'P p', 0, { locale: this.dateFnsUtils.locale });\r\n if (!isNaN(result.getTime())) {\r\n return result;\r\n }\r\n\r\n return null;\r\n }\r\n public formatDistanceToNow(v: string | Date) {\r\n const d = this.dateOrStringToDate(v);\r\n return formatDistanceToNow(d, {\r\n addSuffix: true,\r\n locale: this.dateFnsUtils.locale,\r\n });\r\n }\r\n public truncateTime(v: Date | string): Date {\r\n const d = this.dateOrStringToDate(v);\r\n const s = startOfDay(d);\r\n return s;\r\n }\r\n public truncateSeconds(v: Date | string): Date {\r\n const d = this.dateOrStringToDate(v);\r\n const s = startOfMinute(d);\r\n return s;\r\n }\r\n /**\r\n * API date & times arrive all in the UTC time zone and are parsed in client's time zone.\r\n * This & parseISO serve as a central customization point for time zone related functionality.\r\n * @param date date to format\r\n * @param options format options\r\n * @returns ISO string representation\r\n */\r\n public formatISO(\r\n date: Date,\r\n options?: {\r\n format?: 'extended' | 'basic';\r\n representation?: DateType;\r\n },\r\n ) {\r\n return formatISO(date, options);\r\n }\r\n public tryFormatIso(\r\n date: any,\r\n options?: {\r\n format?: 'extended' | 'basic';\r\n representation?: DateType;\r\n },\r\n ) {\r\n try {\r\n if (date === null) {\r\n return null;\r\n }\r\n if (date === undefined) {\r\n return undefined;\r\n }\r\n if (typeof date === 'string' || date instanceof Date) {\r\n const formatDate = this.dateOrStringToDate(date);\r\n return this.formatISO(formatDate, options);\r\n } else {\r\n return null;\r\n }\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n public formatQueryStringDate(\r\n date: Date,\r\n options?: {\r\n representation?: DateType;\r\n },\r\n ): string {\r\n let convertedDate = this.dateOrStringToDate(date);\r\n return this.formatISO(convertedDate);\r\n }\r\n public parseQueryStringDate(value: string): Date {\r\n return this.parseISO(value);\r\n }\r\n public getDayText(date: Date): string {\r\n return this.format(date, this.DateIOFormats.localDayOfWeek)!;\r\n }\r\n\r\n public getShortDaysArray(): string[] {\r\n const fdow = startOfWeek(new Date());\r\n return Array.from(Array(7)).map(\r\n (e, i) => this.format(addDays(fdow, i), this.DateIOFormats.weekdayShort)!,\r\n );\r\n }\r\n public getLongDaysArray(): string[] {\r\n const fdow = startOfWeek(new Date());\r\n return Array.from(Array(7)).map(\r\n (e, i) => this.format(addDays(fdow, i), this.DateIOFormats.weekday)!,\r\n );\r\n }\r\n public getMinutesDiff(startDate: Date, endDate: Date) {\r\n let diff = endDate.getTime() - startDate.getTime();\r\n return diff / 60000;\r\n }\r\n public getHoursDiff(startDate: Date, endDate: Date) {\r\n const msInHour = 1000 * 60 * 60;\r\n return (endDate.getTime() - startDate.getTime()) / msInHour;\r\n }\r\n public getDaysDiff(startDate: Date, endDate: Date) {\r\n const msInDays = 1000 * 3600 * 24;\r\n return (endDate.getTime() - startDate.getTime()) / msInDays;\r\n }\r\n public getWeekDiff(startDate: Date, endDate: Date) {\r\n const msInWeek = 7 * 24 * 60 * 60 * 1000;\r\n return (endDate.getTime() - startDate.getTime()) / msInWeek;\r\n }\r\n public getMonthDiff(startDate: Date, endDate: Date) {\r\n var months;\r\n months = (endDate.getFullYear() - startDate.getFullYear()) * 12;\r\n months -= startDate.getMonth();\r\n months += endDate.getMonth();\r\n return months <= 0 ? 0 : months;\r\n }\r\n public DateIOFormats: DateIOFormats = {\r\n dayOfMonth: 'd',\r\n fullDate: 'PP',\r\n fullDateWithWeekday: 'PPPP',\r\n fullDateTime: 'PP p',\r\n fullDateTime12h: 'PP hh:mm aaa',\r\n fullDateTime24h: 'PP HH:mm',\r\n fullTime: 'p',\r\n fullTime12h: 'hh:mm aaa',\r\n fullTime24h: 'HH:mm',\r\n hours12h: 'hh',\r\n hours24h: 'HH',\r\n keyboardDate: 'P',\r\n keyboardDateTime: 'P p',\r\n keyboardDateTime12h: 'P hh:mm aaa',\r\n keyboardDateTime24h: 'P HH:mm',\r\n minutes: 'mm',\r\n month: 'LLLL',\r\n monthAndDate: 'MMMM d',\r\n monthAndYear: 'LLLL yyyy',\r\n monthShort: 'MMM',\r\n weekday: 'EEEE',\r\n weekdayShort: 'EEE',\r\n normalDate: 'd MMMM',\r\n normalDateWithWeekday: 'EEE, MMM d',\r\n seconds: 'ss',\r\n shortDate: 'MMM d',\r\n year: 'yyyy',\r\n /**\r\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\r\n * | | co | 2nd, 3rd, ..., 1st | 7 |\r\n * | | cc | 02, 03, ..., 01 | |\r\n * | | ccc | Mon, Tue, Wed, ..., Su | |\r\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\r\n * | | ccccc | M, T, W, T, F, S, S | |\r\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\r\n */\r\n localDayOfWeek: 'ccc',\r\n };\r\n public isToday = isToday;\r\n // diff functions\r\n public differenceInSeconds = differenceInSeconds;\r\n public differenceInMinutes = differenceInMinutes;\r\n public differenceInHours = differenceInHours;\r\n public differenceInDays = differenceInDays;\r\n public differenceInWeeks = differenceInWeeks;\r\n public differenceInMonths = differenceInMonths;\r\n public differenceInQuarters = differenceInQuarters;\r\n public differenceInYears = differenceInYears;\r\n public differenceInCalendarDays = differenceInCalendarDays;\r\n\r\n // add functions\r\n public add = add;\r\n public addMilliseconds = addMilliseconds;\r\n public addSeconds = addSeconds;\r\n public addMinutes = addMinutes;\r\n public addHours = addHours;\r\n public addDays = addDays;\r\n public addWeeks = addWeeks;\r\n public addMonths = addMonths;\r\n public addQuarters = addQuarters;\r\n public addYears = addYears;\r\n\r\n // startOf functions\r\n public startOfMinute = startOfMinute;\r\n public startOfHour = startOfHour;\r\n public startOfDay = startOfDay;\r\n public startOfWeek(\r\n date: Date | number,\r\n firstDayOfWeek?: WeekStartsOn | number,\r\n ) {\r\n return startOfWeek(date, {\r\n locale: dateUtils.dateFnsUtils.locale,\r\n weekStartsOn: firstDayOfWeek as WeekStartsOn,\r\n });\r\n }\r\n public startOfMonth = startOfMonth;\r\n public startOfQuarter = startOfQuarter;\r\n public startOfYear = startOfYear;\r\n\r\n // endOf functions\r\n public endOfHour = endOfHour;\r\n public endOfDay = endOfDay;\r\n public endOfWeek(\r\n date: Date | number,\r\n firstDayOfWeek?: WeekStartsOn | number,\r\n ) {\r\n return endOfWeek(date, {\r\n locale: dateUtils.dateFnsUtils.locale,\r\n weekStartsOn: firstDayOfWeek as WeekStartsOn,\r\n });\r\n }\r\n public endOfMonth = endOfMonth;\r\n public endOfQuarter = endOfQuarter;\r\n public endOfYear = endOfYear;\r\n public endOfTomorrow = endOfTomorrow;\r\n public startOfTomorrow = startOfTomorrow;\r\n public startOfYesterday = startOfYesterday;\r\n public endOfYesterday = endOfYesterday;\r\n public startOfToday = startOfToday;\r\n public lastDayOfMonth = lastDayOfMonth;\r\n public getDaysInMonth = getDaysInMonth;\r\n public getDayOfYear = getDayOfYear;\r\n\r\n //other\r\n public getYear = getYear;\r\n public getMonth = getMonth;\r\n public getHours = getHours;\r\n public getMinutes = getMinutes;\r\n public getDate = getDate;\r\n public setDate = setDate;\r\n public setMonth = setMonth;\r\n public setYear = setYear;\r\n public setHours = setHours;\r\n public setMinutes = setMinutes;\r\n public getDay(date: Date | number): number {\r\n return getDay(date) as number;\r\n }\r\n public setWeek(\r\n date: Date | number,\r\n week: number,\r\n firstDayOfWeek: WeekStartsOn | number,\r\n ): Date {\r\n return setWeek(date, week, {\r\n locale: this.dateFnsUtils.locale,\r\n weekStartsOn: firstDayOfWeek as WeekStartsOn,\r\n });\r\n }\r\n public setDay(\r\n date: Date | number,\r\n day: number,\r\n firstDayOfWeek: WeekStartsOn | number,\r\n ): Date {\r\n return setDay(date, day, {\r\n locale: this.dateFnsUtils.locale,\r\n weekStartsOn: firstDayOfWeek as WeekStartsOn,\r\n });\r\n }\r\n public set(\r\n date: Date | number,\r\n values: {\r\n year?: number;\r\n month?: number;\r\n date?: number;\r\n hours?: number;\r\n minutes?: number;\r\n seconds?: number;\r\n milliseconds?: number;\r\n },\r\n ): Date {\r\n return set(date, values);\r\n }\r\n\r\n public getWeekNumberOfMonth(\r\n date: Date,\r\n FirstDayOfWeek?: WeekStartsOn | number,\r\n ): number {\r\n return getWeekOfMonth(date, {\r\n locale: this.dateFnsUtils.locale,\r\n weekStartsOn: FirstDayOfWeek as WeekStartsOn,\r\n });\r\n }\r\n public intervalToDuration = intervalToDuration;\r\n\r\n public timeStringToDecimal(time: string): number {\r\n var hoursMinutes = time.split(/[.:]/);\r\n var hours = parseInt(hoursMinutes[0], 10);\r\n var minutes = hoursMinutes[1] ? parseInt(hoursMinutes[1], 10) : 0;\r\n return hours + minutes / 60;\r\n }\r\n public toDate(date: Date | string) {\r\n return dateUtils.dateOrStringToDate(date);\r\n }\r\n public newDate(date: Date | string | undefined) {\r\n if (!date) {\r\n return new CustomDate(new Date(), 'complete');\r\n } else {\r\n return new CustomDate(this.toDate(date), 'complete');\r\n }\r\n }\r\n public getMeridiem(date: Date | string) {\r\n return dateUtils.getHours(dateUtils.toDate(date)) >= 12 ? 'pm' : 'am';\r\n }\r\n public convertToMeridiem(\r\n time: Date | string,\r\n meridiem: 'am' | 'pm',\r\n ampm: boolean,\r\n ) {\r\n let val = dateUtils.toDate(time);\r\n if (ampm) {\r\n var currentMeridiem = dateUtils.getHours(val) >= 12 ? 'pm' : 'am';\r\n if (currentMeridiem !== meridiem) {\r\n var hours =\r\n meridiem === 'am'\r\n ? dateUtils.getHours(val) - 12\r\n : dateUtils.getHours(val) + 12;\r\n return dateUtils.setHours(val, hours);\r\n }\r\n }\r\n return val;\r\n }\r\n public getMeridiemHours(time: Date | string) {\r\n let val = dateUtils.toDate(time);\r\n var currentMeridiem = dateUtils.getHours(val) > 12 ? 'pm' : 'am';\r\n if (currentMeridiem === 'pm') {\r\n let hours = dateUtils.getHours(val) - 12;\r\n return hours;\r\n }\r\n return dateUtils.getHours(val);\r\n }\r\n public getParsableDate(date: ParsableDate) {\r\n var resDate =\r\n date === null || date === undefined\r\n ? null\r\n : typeof date === 'object'\r\n ? new Date(date as Date)\r\n : typeof date === 'number'\r\n ? new Date(date)\r\n : dateUtils.dateOrStringToDate(date);\r\n return resDate;\r\n }\r\n}\r\nexport const parseLocale = function (state: string) {\r\n let [language, region] = state.split('-');\r\n return { language: language?.toLowerCase(), region: region?.toUpperCase() };\r\n};\r\nexport const dateUtils = new DateUtils();\r\n\r\nexport type WeekStartsOn = 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;\r\nexport interface DateIOFormats {\r\n /** Localized full date @example \"Jan 1, 2019\" */\r\n fullDate: TLibFormatToken;\r\n /** Partially localized full date with weekday, useful for text-to-speech accessibility @example \"Tuesday, January 1, 2019\" */\r\n fullDateWithWeekday: TLibFormatToken;\r\n /** Date format string with month and day of month @example \"1 January\" */\r\n normalDate: TLibFormatToken;\r\n /** Date format string with weekday, month and day of month @example \"Wed, Jan 1\" */\r\n normalDateWithWeekday: TLibFormatToken;\r\n /** Shorter day format @example \"Jan 1\" */\r\n shortDate: TLibFormatToken;\r\n /** Year format string @example \"2019\" */\r\n year: TLibFormatToken;\r\n /** Month format string @example \"January\" */\r\n month: TLibFormatToken;\r\n /** Short month format string @example \"Jan\" */\r\n monthShort: TLibFormatToken;\r\n /** Month with year format string @example \"January 2018\" */\r\n monthAndYear: TLibFormatToken;\r\n /** Month with date format string @example \"January 1\" */\r\n monthAndDate: TLibFormatToken;\r\n /** Weekday format string @example \"Wednesday\" */\r\n weekday: TLibFormatToken;\r\n /** Short weekday format string @example \"Wed\" */\r\n weekdayShort: TLibFormatToken;\r\n /** Day format string @example \"1\" */\r\n dayOfMonth: TLibFormatToken;\r\n /** Hours format string @example \"11\" */\r\n hours12h: TLibFormatToken;\r\n /** Hours format string @example \"23\" */\r\n hours24h: TLibFormatToken;\r\n /** Minutes format string @example \"44\" */\r\n minutes: TLibFormatToken;\r\n /** Seconds format string @example \"00\" */\r\n seconds: TLibFormatToken;\r\n /** Full time localized format string @example \"11:44 PM\" for US, \"23:44\" for Europe */\r\n fullTime: TLibFormatToken;\r\n /** Not localized full time format string @example \"11:44 PM\" */\r\n fullTime12h: TLibFormatToken;\r\n /** Not localized full time format string @example \"23:44\" */\r\n fullTime24h: TLibFormatToken;\r\n /** Date & time format string with localized time @example \"Jan 1, 2018 11:44 PM\" */\r\n fullDateTime: TLibFormatToken;\r\n /** Not localized date & Time format 12h @example \"Jan 1, 2018 11:44 PM\" */\r\n fullDateTime12h: TLibFormatToken;\r\n /** Not localized date & Time format 24h @example \"Jan 1, 2018 23:44\" */\r\n fullDateTime24h: TLibFormatToken;\r\n /** Localized keyboard input friendly date format @example \"02/13/2020 */\r\n keyboardDate: TLibFormatToken;\r\n /** Localized keyboard input friendly date/time format @example \"02/13/2020 23:44\" */\r\n keyboardDateTime: TLibFormatToken;\r\n /** Partially localized keyboard input friendly date/time 12h format @example \"02/13/2020 11:44 PM\" */\r\n keyboardDateTime12h: TLibFormatToken;\r\n /** Partially localized keyboard input friendly date/time 24h format @example \"02/13/2020 23:44\" */\r\n keyboardDateTime24h: TLibFormatToken;\r\n localDayOfWeek: TLibFormatToken;\r\n}\r\n","import { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport { SearchColumnType } from 'app/components/BasicTable/BasicTableProps';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\n/**\r\n * Supported OData operators\r\n * TODO: extend to greater than, etc\r\n */\r\nexport enum ODataOperators {\r\n Equals = 'eq',\r\n NotEquals = 'ne',\r\n GreaterThan = 'gt',\r\n GreaterThanEqual = 'ge',\r\n LessThan = 'lt',\r\n LessThanEqual = 'le',\r\n Contains = 'contains',\r\n Between = 'between',\r\n Intersection = 'intersection',\r\n Any = 'any',\r\n NotAny = 'notAny',\r\n In = 'in',\r\n Includes = 'includes',\r\n Excludes = 'excludes',\r\n InM = 'inm',\r\n AnyIn = 'AnyIn',\r\n ContainsM = 'containsm',\r\n HasNoAny = 'hasNoAny',\r\n All = 'all',\r\n AllIn = 'allIn',\r\n}\r\nexport type OdataFilterOperatorType =\r\n | ODataOperators\r\n | ((value: FilterValueType | undefined) => string);\r\nexport const operatorToString = (\r\n key: ODataOperators,\r\n value: FilterValueType | undefined,\r\n t: TFunction,\r\n): string => {\r\n return key === ODataOperators.Equals\r\n ? t(translations.ODataEquals)\r\n : key === ODataOperators.NotEquals\r\n ? t(translations.ODataNotEquals)\r\n : key === ODataOperators.GreaterThan\r\n ? value instanceof Date\r\n ? t(translations.ODataGtAfter)\r\n : t(translations.ODataGreaterThan)\r\n : key === 'lt'\r\n ? value instanceof Date\r\n ? t(translations.ODataLtBefore)\r\n : t(translations.ODataLessThan)\r\n : key === ODataOperators.GreaterThanEqual\r\n ? t(translations.ODataGreaterThanEqual)\r\n : key === ODataOperators.LessThanEqual\r\n ? t(translations.ODataLessThanEqual)\r\n : key === ODataOperators.Intersection\r\n ? t(translations.ODataIntersection)\r\n : key === ODataOperators.NotAny\r\n ? t(translations.ODataNotAny)\r\n : key === ODataOperators.Includes\r\n ? t(translations.ODataIncludes)\r\n : key === ODataOperators.Excludes\r\n ? t(translations.ODataExcludes)\r\n : key === ODataOperators.AnyIn\r\n ? t(translations.ODataAnyIn)\r\n : key === ODataOperators.ContainsM\r\n ? t(translations.ODataContainsM)\r\n : key === ODataOperators.InM\r\n ? t(translations.ODataInM)\r\n : key === ODataOperators.HasNoAny\r\n ? t(translations.ODataHasNoAny)\r\n : key === ODataOperators.All\r\n ? t(translations.ODataAll)\r\n : key === ODataOperators.AllIn\r\n ? t(translations.ODataAllIn)\r\n : key === ODataOperators.In\r\n ? t(translations.ODataIn)\r\n : key === ODataOperators.Any\r\n ? t(translations.ODataAny)\r\n : key;\r\n};\r\n/**\r\n * Supported value types\r\n */\r\nexport type ODataFieldType = string | number | Date | boolean;\r\n\r\n/**\r\n * Formats a const value in oData format.\r\n * @param value value\r\n * @returns formatted value that can be used in odata filter expression\r\n */\r\nexport function quoteODataValue(\r\n value: FilterValueType | Array,\r\n) {\r\n if (value === null) {\r\n return null;\r\n } else if (typeof value === 'number') {\r\n return value.toString();\r\n } else if (typeof value === 'boolean') {\r\n return value.toString();\r\n } else if (typeof value === 'string') {\r\n return `'${escapeODataValue(value)}'`;\r\n } else if (value instanceof CustomDate) {\r\n return `${dateUtils.formatISO(value, {\r\n representation: (value as CustomDate).representation ?? 'date',\r\n })}`;\r\n } else if (value instanceof Date) {\r\n return `${dateUtils.formatISO(value)}`;\r\n } else if (Array.isArray(value)) {\r\n return `(${value.map(v => quoteODataValue(v)).join(',')})`;\r\n } else if ('Id' in value) {\r\n return quoteODataValue(value.Id);\r\n } else {\r\n console.error(`Value type not supported: ${value}`, value);\r\n throw new Error(`Value type not supported: ${value}`);\r\n }\r\n}\r\n/**\r\n * Escapes const OData value\r\n * @param value value\r\n * @returns\r\n */\r\nexport function escapeODataValue(value: string): string {\r\n return value.replaceAll(\"'\", \"''\");\r\n}\r\n\r\nexport function withisInversed<\r\n T extends string | undefined = string | undefined,\r\n>(condition: T, isInversed: boolean | undefined) {\r\n if (!isInversed || (condition ?? '') === '') {\r\n return condition;\r\n }\r\n return '(' + condition + ') eq false';\r\n}\r\n\r\n/**\r\n * Filter condition to be used in future custom filters\r\n */\r\nexport class Condition {\r\n public field: keyof TRow;\r\n public field1?: keyof TRow;\r\n public operator?: ODataOperators;\r\n public value?: FilterValueType;\r\n public isInversed?: boolean;\r\n constructor(\r\n field: keyof TRow,\r\n operator: ODataOperators,\r\n value: FilterValueType | undefined,\r\n field1?: keyof TRow,\r\n isInversed?: boolean,\r\n ) {\r\n this.field = field;\r\n this.field1 = field1;\r\n this.operator = operator;\r\n this.value = value;\r\n this.isInversed = isInversed;\r\n }\r\n\r\n /**\r\n * Format the range filter (between operator)\r\n * @returns odata filter string\r\n */\r\n between() {\r\n const c1: Condition[] = [];\r\n const start = (this.value as any).start;\r\n if (start !== null) {\r\n c1.push(\r\n new Condition(this.field, ODataOperators.GreaterThanEqual, start),\r\n );\r\n }\r\n const end = (this.value as any).end;\r\n if (end !== null) {\r\n c1.push(new Condition(this.field, ODataOperators.LessThanEqual, end));\r\n }\r\n const result =\r\n c1.length > 0 ? `(${c1.map(c => c.toString()).join(' and ')})` : '';\r\n return result;\r\n }\r\n /**\r\n * Format the range filter (intersection operator)\r\n * @returns odata filter string\r\n */\r\n intersection() {\r\n if (this.field1 === undefined) return '';\r\n const c1: Condition[] = [];\r\n const start = (this.value as any).start;\r\n if (start !== null) {\r\n c1.push(new Condition(this.field1, ODataOperators.GreaterThan, start));\r\n }\r\n const end = (this.value as any).end;\r\n if (end !== null) {\r\n c1.push(new Condition(this.field, ODataOperators.LessThan, end));\r\n }\r\n const result =\r\n c1.length > 0 ? `${c1.map(c => c.toString()).join(' and ')}` : '';\r\n return result;\r\n }\r\n hasAny() {\r\n //if (this.field1 === undefined) return '';\r\n const result = `${this.field}/any(g: g${\r\n this.field1 ? '/' + this.field1 : ''\r\n } eq ${quoteODataValue(this.value as number)})`;\r\n return result;\r\n }\r\n haNoAny() {\r\n const result = `not ${this.field}/any()`;\r\n return result;\r\n }\r\n notAny() {\r\n //if (this.field1 === undefined) return '';\r\n const result = `${this.field}/any(g: g${\r\n this.field1 ? '/' + this.field1 : ''\r\n } eq ${quoteODataValue(this.value as number)}) eq false`;\r\n return result;\r\n }\r\n anyIn() {\r\n if (!Array.isArray(this.value)) return '';\r\n const result = `${this.field}/any(g: g${\r\n !!this.field1 ? '/' + this.field1 : ''\r\n } in ${quoteODataValue(this.value)})`;\r\n return result;\r\n }\r\n allIn() {\r\n if (!Array.isArray(this.value)) return '';\r\n const result = `${this.field}/all(g: g${\r\n this.field1 ? '/' + this.field1 : ''\r\n } in ${quoteODataValue(this.value)})`;\r\n return result;\r\n }\r\n all() {\r\n if (this.field1 === undefined) return '';\r\n const result = `${this.field}/all(g: g/${this.field1} eq ${quoteODataValue(\r\n this.value as number,\r\n )})`;\r\n return result;\r\n }\r\n inM() {\r\n let res: string[] | undefined =\r\n this.value !== null && Array.isArray(this.value)\r\n ? (this.value as Array).map(v => {\r\n return `${quoteODataValue(v)} in ${this.field}`;\r\n })\r\n : undefined;\r\n return res !== undefined ? `(${res.join(' or ')})` : '';\r\n }\r\n public withNull(fieldName?: string) {\r\n const res = this.toString();\r\n const name = fieldName ?? String(this.field);\r\n if (res === undefined) return res;\r\n return '((' + res + ') or ' + name + ' eq null)';\r\n }\r\n public orEmpty(fieldName?: string) {\r\n const res = this.toString();\r\n const name = fieldName ?? String(this.field);\r\n if (res === undefined) return res;\r\n return '((' + res + ') or (' + name + '/any() eq false))';\r\n }\r\n public toString(): string | undefined {\r\n if (this.value === undefined) {\r\n return undefined;\r\n }\r\n if (this.operator === undefined) {\r\n return undefined;\r\n }\r\n switch (this.operator) {\r\n case ODataOperators.Equals:\r\n case ODataOperators.NotEquals:\r\n case ODataOperators.GreaterThan:\r\n case ODataOperators.GreaterThanEqual:\r\n case ODataOperators.LessThan:\r\n case ODataOperators.LessThanEqual:\r\n return `${this.field} ${this.operator} ${quoteODataValue(this.value)}`;\r\n case ODataOperators.Contains:\r\n return `contains(tolower(${this.field}), ${quoteODataValue(\r\n this.value,\r\n ).toLowerCase()})`;\r\n case ODataOperators.ContainsM:\r\n let resCM: string[] | undefined =\r\n this.value !== null && Array.isArray(this.value)\r\n ? (this.value as Array).map(v => {\r\n return `contains(tolower(${this.field}), ${quoteODataValue(\r\n v?.['Name'] ?? v,\r\n ).toLowerCase()})`;\r\n })\r\n : undefined;\r\n return resCM !== undefined ? resCM.join(' or ') : '';\r\n case ODataOperators.Between:\r\n return this.between();\r\n case ODataOperators.Intersection:\r\n return this.intersection();\r\n case ODataOperators.Any:\r\n return this.hasAny();\r\n case ODataOperators.NotAny:\r\n return this.notAny();\r\n case ODataOperators.In:\r\n return `(${quoteODataValue(this.value)} in ${this.field})`;\r\n case ODataOperators.InM:\r\n return this.inM();\r\n case ODataOperators.Includes:\r\n return `(${this.field} in ${quoteODataValue(this.value)})`;\r\n case ODataOperators.Excludes:\r\n return `(${this.field} in ${quoteODataValue(this.value)} eq false)`;\r\n case ODataOperators.AnyIn:\r\n return this.anyIn();\r\n case ODataOperators.HasNoAny:\r\n return this.haNoAny();\r\n case ODataOperators.All:\r\n return this.all();\r\n case ODataOperators.AllIn:\r\n return this.allIn();\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * OData filter expression builder\r\n */\r\nexport class ODataFilterBuilder {\r\n predicates: (string | Condition)[] = [];\r\n globalServiceGroupFilter: Condition[] = [];\r\n stringColumns?: Array>;\r\n stringSearch?: string | null;\r\n isOptionalServiceGroup?: boolean;\r\n constructor(x: {\r\n predicates: (string | Condition)[];\r\n stringColumns?: Array>;\r\n stringSearch?: string | null;\r\n globalServiceGroupFilter?: Condition[];\r\n timezone?: string;\r\n isOptionalServiceGroup?: boolean;\r\n }) {\r\n this.predicates = x.predicates.filter(\r\n f => f.toString() !== '' && f.toString() !== undefined,\r\n );\r\n this.stringColumns = x.stringColumns;\r\n this.stringSearch = x.stringSearch;\r\n this.globalServiceGroupFilter = x.globalServiceGroupFilter || [];\r\n this.isOptionalServiceGroup = x.isOptionalServiceGroup;\r\n }\r\n public toString(): string | undefined {\r\n const x: string[] = [];\r\n if (\r\n this.stringSearch !== undefined &&\r\n this.stringSearch !== null &&\r\n this.stringSearch !== ''\r\n ) {\r\n if (this.stringColumns !== undefined) {\r\n const stringValue = this.stringSearch.toLowerCase();\r\n x.push(\r\n '(' +\r\n this.stringColumns\r\n .map(c =>\r\n typeof c === 'function'\r\n ? c(\"'\" + escapeODataValue(stringValue) + \"'\")\r\n : new Condition(\r\n c as keyof T,\r\n ODataOperators.Contains,\r\n stringValue,\r\n ),\r\n )\r\n .map(c => c.toString())\r\n .join(' or ') +\r\n ')',\r\n );\r\n }\r\n }\r\n if (this.predicates?.length > 0) {\r\n x.push(\r\n '(' +\r\n this.predicates\r\n .map(p => withisInversed(p.toString(), p['isInversed']))\r\n .filter(p => p !== '' && p !== undefined)\r\n .join(' and ') +\r\n ')',\r\n );\r\n }\r\n if (\r\n this.globalServiceGroupFilter.length > 0 &&\r\n this.globalServiceGroupFilter[0].field !== ''\r\n ) {\r\n if (this.globalServiceGroupFilter[0].field === 'ServiceGroupId') {\r\n x.push(\r\n '(' +\r\n (this.isOptionalServiceGroup === true\r\n ? this.globalServiceGroupFilter\r\n .concat(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Equals,\r\n null,\r\n ),\r\n )\r\n .map(p => p.toString())\r\n .join(' or ')\r\n : this.globalServiceGroupFilter\r\n .map(p => p.toString())\r\n .join(' or ')) +\r\n ')',\r\n );\r\n } else {\r\n x.push(\r\n '(' +\r\n this.globalServiceGroupFilter.map(p => p.toString()).join(' or ') +\r\n ')',\r\n );\r\n }\r\n }\r\n const result =\r\n x.length === 0\r\n ? undefined\r\n : x.length === 1 && x[0] === '()'\r\n ? undefined\r\n : x.join(' and ');\r\n return result;\r\n }\r\n}\r\n\r\nexport type oDataValue = { operator: ODataOperators; value: string };\r\n","//base colors\r\nexport const base_black_c11 = '#121926';\r\nexport const base_white_c0 = '#FFFFFF';\r\n//grayscale colors\r\nexport const grayscale_black_regular_c10 = '#202939';\r\nexport const grayscale_black_components_c9 = '#364152';\r\nexport const grayscale_gray_subtitles_c8 = '#4B5565';\r\nexport const grayscale_gray_components_c7 = '#697586';\r\nexport const grayscale_gray_components_light_c6 = '#9AA3B2';\r\nexport const grayscale_gray_borders_c5 = '#CDD5DF';\r\nexport const grayscale_gray_selection_c4 = '#E3E8EF';\r\nexport const grayscale_gray_bg_components_c3 = '#EEF2F6';\r\nexport const grayscale_gray_background_c2 = '#F8FAFC';\r\nexport const grayscale_gray_bg_light_c1 = '#FCFCFD';\r\n\r\n//opacity colors\r\nexport const overlay_opacity_black = 'rgba(0, 5, 10, 0.70)';\r\nexport const overlay_opacity_white = 'rgba(255, 255, 255, 0.95)';\r\n\r\n//primary colors\r\nexport const primary_dark_text_c10 = '#0B4A6F';\r\nexport const primary_hover_c9 = '#065986';\r\nexport const primary_regular_c8 = '#026AA2';\r\nexport const primary_components_c7 = '#0086C9';\r\nexport const primary_components_light_c6 = '#0BA5EC';\r\nexport const primary_borders_c5 = '#36BFFA';\r\nexport const primary_disabled_c4 = '#C5EAFE';\r\nexport const primary_bg_hover_c3 = '#E0F2FE';\r\nexport const primary_background_c2 = '#F0F9FF';\r\nexport const primary_bg_light_c1 = '#F5FBFF';\r\n\r\n//secondary colors\r\nexport const secondary_violet_dark_text_c10 = '#283493';\r\nexport const secondary_violet_hover_c9 = '#404FB7';\r\nexport const secondary_violet_regular_c8 = '#5C6FDB';\r\nexport const secondary_violet_components_c7 = '#7F94FF';\r\nexport const secondary_violet_components_light_c6 = '#9FB0FF';\r\nexport const secondary_violet_borders_c5 = '#B2C1FF';\r\nexport const secondary_violet_disabled_c4 = '#CBD6FF';\r\nexport const secondary_violet_bg_hover_c3 = '#E5EBFF';\r\nexport const secondary_violet_background_c2 = '#F2F5FF';\r\nexport const secondary_violet_bg_light_c1 = '#F9FAFF';\r\n\r\n//danger colors\r\nexport const semantic_danger_dark_text_c10 = '#841444';\r\nexport const semantic_danger_hover_c9 = '#A41F4C';\r\nexport const semantic_danger_regular_c8 = '#C42E52';\r\nexport const semantic_danger_components_c7 = '#EF6D74';\r\nexport const semantic_danger_components_light_c6 = '#EF6D74';\r\nexport const semantic_danger_borders_c5 = '#F78F8B';\r\nexport const semantic_danger_disabled_c4 = '#FCBCB3';\r\nexport const semantic_danger_bg_hover_c3 = '#FDE1D8';\r\nexport const semantic_danger_background_c2 = '#FEF0EC';\r\nexport const semantic_danger_bg_light_c1 = '#FFF8F5';\r\n\r\n//success colors\r\nexport const semantic_success_dark_text_c10 = '#076F4F';\r\nexport const semantic_success_hover_c9 = '#0C8654';\r\nexport const semantic_success_regular_c8 = '#13A75C';\r\nexport const semantic_success_components_c7 = '#1CC760';\r\nexport const semantic_success_components_light_c6 = '#27E861';\r\nexport const semantic_success_borders_c5 = '#7CF889';\r\nexport const semantic_success_disabled_c4 = '#A8FCA9';\r\nexport const semantic_success_bg_hover_c3 = '#D7FDD3';\r\nexport const semantic_success_background_c2 = '#EBFEE9';\r\nexport const semantic_success_bg_light_c1 = '#F5FFF4';\r\n\r\n//alert(warning) colors\r\nexport const semantic_alert_dark_text_c10 = '#7F5000';\r\nexport const semantic_alert_hover_c9 = '#9D6800';\r\nexport const semantic_alert_regular_c8 = '#BC8200';\r\nexport const semantic_alert_components_c7 = '#DB9E00';\r\nexport const semantic_alert_components_light_c6 = '#E9BD3A';\r\nexport const semantic_alert_borders_c5 = '#F4D361';\r\nexport const semantic_alert_disabled_c4 = '#FBE896';\r\nexport const semantic_alert_bg_hover_c3 = '#FDF4CA';\r\nexport const semantic_alert_background_c2 = '#FEFAE4';\r\nexport const semantic_alert_bg_light_c1 = '#FFFCF2';\r\n\r\nexport const bookitColors = {\r\n base: {\r\n black: base_black_c11,\r\n white: base_white_c0,\r\n },\r\n grayscale: {\r\n blackRegular: grayscale_black_regular_c10,\r\n blackComponents: grayscale_black_components_c9,\r\n graySubtitles: grayscale_gray_subtitles_c8,\r\n grayComponents: grayscale_gray_components_c7,\r\n grayComponentsLight: grayscale_gray_components_light_c6,\r\n grayBorders: grayscale_gray_borders_c5,\r\n graySelection: grayscale_gray_selection_c4,\r\n graybgComponents: grayscale_gray_bg_components_c3,\r\n grayBackground: grayscale_gray_background_c2,\r\n grayBackgroundLight: grayscale_gray_bg_light_c1,\r\n },\r\n overlays: {\r\n overlayBlack: overlay_opacity_black,\r\n overlayWhite: overlay_opacity_white,\r\n },\r\n primary: {\r\n dark: primary_dark_text_c10,\r\n hover: primary_hover_c9,\r\n regular: primary_regular_c8,\r\n components: primary_components_c7,\r\n componentsLight: primary_components_light_c6,\r\n borders: primary_borders_c5,\r\n disabled: primary_disabled_c4,\r\n bgHover: primary_bg_hover_c3,\r\n background: primary_background_c2,\r\n bgLight: primary_bg_light_c1,\r\n },\r\n secondary: {\r\n violet: {\r\n dark: secondary_violet_dark_text_c10,\r\n hover: secondary_violet_hover_c9,\r\n regular: secondary_violet_regular_c8,\r\n components: secondary_violet_components_c7,\r\n componentsLight: secondary_violet_components_light_c6,\r\n borders: secondary_violet_borders_c5,\r\n disabled: secondary_violet_disabled_c4,\r\n bgHover: secondary_violet_bg_hover_c3,\r\n background: secondary_violet_background_c2,\r\n bgLight: secondary_violet_bg_light_c1,\r\n },\r\n },\r\n danger: {\r\n dark: semantic_danger_dark_text_c10,\r\n hover: semantic_danger_hover_c9,\r\n regular: semantic_danger_regular_c8,\r\n components: semantic_danger_components_c7,\r\n componentsLight: semantic_danger_components_light_c6,\r\n borders: semantic_danger_borders_c5,\r\n disabled: semantic_danger_disabled_c4,\r\n bgHover: semantic_danger_bg_hover_c3,\r\n background: semantic_danger_background_c2,\r\n bgLight: semantic_danger_bg_light_c1,\r\n },\r\n success: {\r\n dark: semantic_success_dark_text_c10,\r\n hover: semantic_success_hover_c9,\r\n regular: semantic_success_regular_c8,\r\n components: semantic_success_components_c7,\r\n componentsLight: semantic_success_components_light_c6,\r\n borders: semantic_success_borders_c5,\r\n disabled: semantic_success_disabled_c4,\r\n bgHover: semantic_success_bg_hover_c3,\r\n background: semantic_success_background_c2,\r\n bgLight: semantic_success_bg_light_c1,\r\n },\r\n warning: {\r\n dark: semantic_alert_dark_text_c10,\r\n hover: semantic_alert_hover_c9,\r\n regular: semantic_alert_regular_c8,\r\n components: semantic_alert_components_c7,\r\n componentsLight: semantic_alert_components_light_c6,\r\n borders: semantic_alert_borders_c5,\r\n disabled: semantic_alert_disabled_c4,\r\n bgHover: semantic_alert_bg_hover_c3,\r\n background: semantic_alert_background_c2,\r\n bgLight: semantic_alert_bg_light_c1,\r\n },\r\n};\r\nexport interface ColorsMeta {\r\n Name: string;\r\n SemanticMeta: ColorSemanticMeta[];\r\n}\r\nexport interface ColorSemanticMeta {\r\n Name: string;\r\n Title: string;\r\n Colors: ColorDescriptionMeta[];\r\n}\r\nexport interface ColorDescriptionMeta {\r\n color: string;\r\n colorName: string;\r\n colorCode: string;\r\n colorVariable: string;\r\n}\r\nexport const baseColorMeta: ColorSemanticMeta = {\r\n Name: 'Base',\r\n Title:\r\n 'Black Palette for titles, copyrighting and components. Brand black color',\r\n Colors: [\r\n {\r\n color: bookitColors.base.black,\r\n colorName: 'Black',\r\n colorCode: 'c11',\r\n colorVariable: 'base_black_c11',\r\n },\r\n {\r\n color: bookitColors.base.white,\r\n colorName: 'White',\r\n colorCode: 'c0',\r\n colorVariable: 'base_white_c0',\r\n },\r\n ],\r\n};\r\nexport const overlaysColorMeta: ColorSemanticMeta = {\r\n Name: 'Overlays',\r\n Title:\r\n 'Black and white overlays for popups, popovers and transparent elements',\r\n Colors: [\r\n {\r\n color: bookitColors.overlays.overlayBlack,\r\n colorName: 'Black Popup Overlay',\r\n colorCode: 'opacity-black',\r\n colorVariable: 'overlay_opacity_black',\r\n },\r\n {\r\n color: bookitColors.overlays.overlayWhite,\r\n colorName: 'White Popup Overlay',\r\n colorCode: 'opacity-white',\r\n colorVariable: 'overlay_opacity_white',\r\n },\r\n ],\r\n};\r\nexport const grayscaleColorMeta: ColorSemanticMeta = {\r\n Name: 'Grayscale',\r\n Title:\r\n 'Black Palette for titles, copyrighting and components. Brand black color',\r\n Colors: [\r\n {\r\n color: bookitColors.grayscale.blackRegular,\r\n colorName: 'Regular',\r\n colorCode: 'c10',\r\n colorVariable: 'grayscale_black_regular_c10',\r\n },\r\n {\r\n color: bookitColors.grayscale.blackComponents,\r\n colorName: 'Black Components',\r\n colorCode: 'c9',\r\n colorVariable: 'grayscale_black_components_c9',\r\n },\r\n {\r\n color: bookitColors.grayscale.graySubtitles,\r\n colorName: 'Gray Subtitles',\r\n colorCode: 'c8',\r\n colorVariable: 'grayscale_gray_subtitles_c8',\r\n },\r\n {\r\n color: bookitColors.grayscale.grayComponents,\r\n colorName: 'Gray Components',\r\n colorCode: 'c7',\r\n colorVariable: 'grayscale_gray_components_c7',\r\n },\r\n {\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n colorName: 'Gray Components Light',\r\n colorCode: 'c6',\r\n colorVariable: 'grayscale_gray_components_light_c6',\r\n },\r\n {\r\n color: bookitColors.grayscale.grayBorders,\r\n colorName: 'Gray Borders',\r\n colorCode: 'c5',\r\n colorVariable: 'grayscale_gray_borders_c5',\r\n },\r\n {\r\n color: bookitColors.grayscale.graySelection,\r\n colorName: 'Gray Selection',\r\n colorCode: 'c4',\r\n colorVariable: 'grayscale_gray_selection_c4',\r\n },\r\n {\r\n color: bookitColors.grayscale.graybgComponents,\r\n colorName: 'Gray Bg Components',\r\n colorCode: 'c3',\r\n colorVariable: 'grayscale_gray_bg_components_c3',\r\n },\r\n {\r\n color: bookitColors.grayscale.grayBackground,\r\n colorName: 'Gray Background',\r\n colorCode: 'c2',\r\n colorVariable: 'grayscale_gray_background_c2',\r\n },\r\n {\r\n color: bookitColors.grayscale.grayBackgroundLight,\r\n colorName: 'Gray Background Light',\r\n colorCode: 'c1',\r\n colorVariable: 'grayscale_gray_bg_light_c1',\r\n },\r\n ],\r\n};\r\nexport const primaryColorMeta: ColorSemanticMeta = {\r\n Name: 'Primary',\r\n Title: 'Primary brand blue color',\r\n Colors: [\r\n {\r\n color: bookitColors.primary.dark,\r\n colorName: 'Dark Text',\r\n colorCode: 'c10',\r\n colorVariable: 'primary_dark_text_c10',\r\n },\r\n {\r\n color: bookitColors.primary.hover,\r\n colorName: 'Hover',\r\n colorCode: 'c9',\r\n colorVariable: 'primary_hover_c9',\r\n },\r\n {\r\n color: bookitColors.primary.regular,\r\n colorName: 'Regular',\r\n colorCode: 'c8',\r\n colorVariable: 'primary_regular_c8',\r\n },\r\n {\r\n color: bookitColors.primary.components,\r\n colorName: 'Components',\r\n colorCode: 'c7',\r\n colorVariable: 'primary_components_c7',\r\n },\r\n {\r\n color: bookitColors.primary.componentsLight,\r\n colorName: 'Components Light',\r\n colorCode: 'c6',\r\n colorVariable: 'primary_components_light_c6',\r\n },\r\n {\r\n color: bookitColors.primary.borders,\r\n colorName: 'Borders',\r\n colorCode: 'c5',\r\n colorVariable: 'primary_borders_c5',\r\n },\r\n {\r\n color: bookitColors.primary.disabled,\r\n colorName: 'Disabled',\r\n colorCode: 'c4',\r\n colorVariable: 'primary_disabled_c4',\r\n },\r\n {\r\n color: bookitColors.primary.bgHover,\r\n colorName: 'Background Hover',\r\n colorCode: 'c3',\r\n colorVariable: 'primary_bg_hover_c3',\r\n },\r\n {\r\n color: bookitColors.primary.background,\r\n colorName: 'Background',\r\n colorCode: 'c2',\r\n colorVariable: 'primary_background_c2',\r\n },\r\n {\r\n color: bookitColors.primary.bgLight,\r\n colorName: 'Background Light',\r\n colorCode: 'c1',\r\n colorVariable: 'primary_bg_light_c1',\r\n },\r\n ],\r\n};\r\nexport const successColorMeta: ColorSemanticMeta = {\r\n Name: 'Success',\r\n Title: 'Main confirmation messages',\r\n Colors: [\r\n {\r\n color: bookitColors.success.dark,\r\n colorName: 'Dark Text',\r\n colorCode: 'c10',\r\n colorVariable: 'success_dark_text_c10',\r\n },\r\n {\r\n color: bookitColors.success.hover,\r\n colorName: 'Hover',\r\n colorCode: 'c9',\r\n colorVariable: 'success_hover_c9',\r\n },\r\n {\r\n color: bookitColors.success.regular,\r\n colorName: 'Regular',\r\n colorCode: 'c8',\r\n colorVariable: 'success_regular_c8',\r\n },\r\n {\r\n color: bookitColors.success.components,\r\n colorName: 'Components',\r\n colorCode: 'c7',\r\n colorVariable: 'success_components_c7',\r\n },\r\n {\r\n color: bookitColors.success.componentsLight,\r\n colorName: 'Components Light',\r\n colorCode: 'c6',\r\n colorVariable: 'success_components_light_c6',\r\n },\r\n {\r\n color: bookitColors.success.borders,\r\n colorName: 'Borders',\r\n colorCode: 'c5',\r\n colorVariable: 'success_borders_c5',\r\n },\r\n {\r\n color: bookitColors.success.disabled,\r\n colorName: 'Disabled',\r\n colorCode: 'c4',\r\n colorVariable: 'success_disabled_c4',\r\n },\r\n {\r\n color: bookitColors.success.bgHover,\r\n colorName: 'Background Hover',\r\n colorCode: 'c3',\r\n colorVariable: 'success_bg_hover_c3',\r\n },\r\n {\r\n color: bookitColors.success.background,\r\n colorName: 'Background',\r\n colorCode: 'c2',\r\n colorVariable: 'success_background_c2',\r\n },\r\n {\r\n color: bookitColors.success.bgLight,\r\n colorName: 'Background Light',\r\n colorCode: 'c1',\r\n colorVariable: 'success_bg_light_c1',\r\n },\r\n ],\r\n};\r\nexport const dangerColorMeta: ColorSemanticMeta = {\r\n Name: 'Danger',\r\n Title: 'For main danger buttons and indication',\r\n Colors: [\r\n {\r\n color: bookitColors.danger.dark,\r\n colorName: 'Dark Text',\r\n colorCode: 'c10',\r\n colorVariable: 'danger_dark_text_c10',\r\n },\r\n {\r\n color: bookitColors.danger.hover,\r\n colorName: 'Hover',\r\n colorCode: 'c9',\r\n colorVariable: 'danger_hover_c9',\r\n },\r\n {\r\n color: bookitColors.danger.regular,\r\n colorName: 'Regular',\r\n colorCode: 'c8',\r\n colorVariable: 'danger_regular_c8',\r\n },\r\n {\r\n color: bookitColors.danger.components,\r\n colorName: 'Components',\r\n colorCode: 'c7',\r\n colorVariable: 'danger_components_c7',\r\n },\r\n {\r\n color: bookitColors.danger.componentsLight,\r\n colorName: 'Components Light',\r\n colorCode: 'c6',\r\n colorVariable: 'danger_components_light_c6',\r\n },\r\n {\r\n color: bookitColors.danger.borders,\r\n colorName: 'Borders',\r\n colorCode: 'c5',\r\n colorVariable: 'danger_borders_c5',\r\n },\r\n {\r\n color: bookitColors.danger.disabled,\r\n colorName: 'Disabled',\r\n colorCode: 'c4',\r\n colorVariable: 'danger_disabled_c4',\r\n },\r\n {\r\n color: bookitColors.danger.bgHover,\r\n colorName: 'Background Hover',\r\n colorCode: 'c3',\r\n colorVariable: 'danger_bg_hover_c3',\r\n },\r\n {\r\n color: bookitColors.danger.background,\r\n colorName: 'Background',\r\n colorCode: 'c2',\r\n colorVariable: 'danger_background_c2',\r\n },\r\n {\r\n color: bookitColors.danger.bgLight,\r\n colorName: 'Background Light',\r\n colorCode: 'c1',\r\n colorVariable: 'danger_bg_light_c1',\r\n },\r\n ],\r\n};\r\nexport const alertColorMeta: ColorSemanticMeta = {\r\n Name: 'alert',\r\n Title: 'For main alert buttons and indication',\r\n Colors: [\r\n {\r\n color: bookitColors.warning.dark,\r\n colorName: 'Dark Text',\r\n colorCode: 'c10',\r\n colorVariable: 'alert_dark_text_c10',\r\n },\r\n {\r\n color: bookitColors.warning.hover,\r\n colorName: 'Hover',\r\n colorCode: 'c9',\r\n colorVariable: 'alert_hover_c9',\r\n },\r\n {\r\n color: bookitColors.warning.regular,\r\n colorName: 'Regular',\r\n colorCode: 'c8',\r\n colorVariable: 'alert_regular_c8',\r\n },\r\n {\r\n color: bookitColors.warning.components,\r\n colorName: 'Components',\r\n colorCode: 'c7',\r\n colorVariable: 'alert_components_c7',\r\n },\r\n {\r\n color: bookitColors.warning.componentsLight,\r\n colorName: 'Components Light',\r\n colorCode: 'c6',\r\n colorVariable: 'alert_components_light_c6',\r\n },\r\n {\r\n color: bookitColors.warning.borders,\r\n colorName: 'Borders',\r\n colorCode: 'c5',\r\n colorVariable: 'alert_borders_c5',\r\n },\r\n {\r\n color: bookitColors.warning.disabled,\r\n colorName: 'Disabled',\r\n colorCode: 'c4',\r\n colorVariable: 'alert_disabled_c4',\r\n },\r\n {\r\n color: bookitColors.warning.bgHover,\r\n colorName: 'Background Hover',\r\n colorCode: 'c3',\r\n colorVariable: 'alert_bg_hover_c3',\r\n },\r\n {\r\n color: bookitColors.warning.background,\r\n colorName: 'Background',\r\n colorCode: 'c2',\r\n colorVariable: 'alert_background_c2',\r\n },\r\n {\r\n color: bookitColors.warning.bgLight,\r\n colorName: 'Background Light',\r\n colorCode: 'c1',\r\n colorVariable: 'alert_bg_light_c1',\r\n },\r\n ],\r\n};\r\nexport const violetColorMeta: ColorSemanticMeta = {\r\n Name: 'Violet',\r\n Title: 'Secondary',\r\n Colors: [\r\n {\r\n color: bookitColors.secondary.violet.dark,\r\n colorName: 'Dark Text',\r\n colorCode: 'c10',\r\n colorVariable: 'secondary_violet_dark_text_c10',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.hover,\r\n colorName: 'Hover',\r\n colorCode: 'c9',\r\n colorVariable: 'secondary_violet_hover_c9',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.regular,\r\n colorName: 'Regular',\r\n colorCode: 'c8',\r\n colorVariable: 'secondary_violet_regular_c8',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.components,\r\n colorName: 'Components',\r\n colorCode: 'c7',\r\n colorVariable: 'secondary_violet_components_c7',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.componentsLight,\r\n colorName: 'Components Light',\r\n colorCode: 'c6',\r\n colorVariable: 'secondary_violet_components_light_c6',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.borders,\r\n colorName: 'Borders',\r\n colorCode: 'c5',\r\n colorVariable: 'secondary_violet_borders_c5',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.disabled,\r\n colorName: 'Disabled',\r\n colorCode: 'c4',\r\n colorVariable: 'secondary_violet_disabled_c4',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.bgHover,\r\n colorName: 'Background Hover',\r\n colorCode: 'c3',\r\n colorVariable: 'secondary_violet_bg_hover_c3',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.background,\r\n colorName: 'Background',\r\n colorCode: 'c2',\r\n colorVariable: 'secondary_violet_background_c2',\r\n },\r\n {\r\n color: bookitColors.secondary.violet.bgLight,\r\n colorName: 'Background Light',\r\n colorCode: 'c1',\r\n colorVariable: 'secondary_violet_bg_light_c1',\r\n },\r\n ],\r\n};\r\n","/**\r\n * UserProfileSettings\r\n */\r\nimport { UserProfileSettings } from 'types/UserProfileSettings';\r\nexport const USER_PROFILE_KEYS = ['SideBarExpanded'] as const;\r\nexport class UserProfile {\r\n savedSettings: UserProfileSettings[];\r\n constructor(settings: UserProfileSettings[]) {\r\n this.savedSettings = settings;\r\n }\r\n public GetSettingByKey(key: string): UserProfileSettings | null {\r\n if (this.savedSettings.length > 0) {\r\n let sett = this.savedSettings.find((value, index) => value.Key === key);\r\n return sett === undefined ? null : sett;\r\n } else {\r\n return null;\r\n }\r\n }\r\n public GetSettingByKeyOrDefault(key: string): UserProfileSettings {\r\n let defaultSetting = {\r\n Key: key,\r\n Value: '',\r\n Enabled: false,\r\n Selected: false,\r\n UserName: '',\r\n Id: 0,\r\n Name: '',\r\n AdGroup: '',\r\n DefaultGroups: '',\r\n IsMultiple: null,\r\n StaffEnabled: false,\r\n } as UserProfileSettings;\r\n if (this.savedSettings.length > 0) {\r\n let sett = this.savedSettings.find((value, index) => value.Key === key);\r\n return sett === undefined ? defaultSetting : sett;\r\n } else {\r\n return defaultSetting;\r\n }\r\n }\r\n public UpdateSettingByKey(key: string): UserProfileSettings {\r\n let defaultSetting = {\r\n Key: key,\r\n Value: '',\r\n Enabled: false,\r\n Selected: false,\r\n UserName: '',\r\n Id: 0,\r\n Name: '',\r\n AdGroup: '',\r\n DefaultGroups: '',\r\n IsMultiple: null,\r\n StaffEnabled: false,\r\n } as UserProfileSettings;\r\n if (this.savedSettings.length > 0) {\r\n let sett = this.savedSettings.find((value, index) => value.Key === key);\r\n return sett === undefined ? defaultSetting : sett;\r\n } else {\r\n return defaultSetting;\r\n }\r\n }\r\n public GetSettingValueBy(\r\n comparator: (item: UserProfileSettings) => boolean,\r\n ): UserProfileSettings | undefined {\r\n return this.savedSettings.find(comparator);\r\n }\r\n\r\n public GetSettingValueByKey(key: string): any | null {\r\n if (this.savedSettings.length > 0) {\r\n let sett = this.savedSettings.find((value, index) => value.Key === key);\r\n switch (key) {\r\n case 'SideBarExpanded': {\r\n return sett === undefined ? true : sett.Enabled;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetSideBarExpanded(key: string): any | null {\r\n if (this.savedSettings.length > 0) {\r\n let sett = this.savedSettings.find((value, index) => value.Key === key);\r\n switch (key) {\r\n case 'SideBarExpanded': {\r\n return sett === undefined ? true : sett.Enabled;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { RootState } from 'types';\r\nimport { createSelector } from '@reduxjs/toolkit';\r\nimport { AuthenticatedUser, IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { SiteMapProvider } from 'types/SiteMapSettings';\r\nimport { dateUtils, parseLocale, WeekStartsOn } from 'utils/date-utils';\r\nimport { AllowedSettings, GlobalSettings } from 'utils/globalSettings';\r\nimport { UserProfile } from 'utils/userProfileSettings';\r\nimport { initialState } from '.';\r\nimport { UserRegistersToSpecificCoresType } from 'enums/enums';\r\nimport { appendTrailingSlash } from 'utils/url-utils';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { ReservationStatus } from 'api/odata/generated/enums/ReservationStatus';\r\nimport { TFunction } from 'i18next';\r\nimport { Entity } from 'types/common';\r\nimport { pickBy } from 'lodash';\r\nimport { UserScreenType } from 'app/pages/UserDetails/Details/typeUtils';\r\nimport { ISettingModel } from 'api/odata/generated/entities/ISettingModel';\r\n\r\nconst selectSlice = (state: RootState) => {\r\n return state.appSettings || initialState;\r\n};\r\nexport const selectAppSettings = createSelector(\r\n [selectSlice],\r\n state => state.appSettings,\r\n);\r\n\r\nexport const selectKnownModules = createSelector(\r\n [selectAppSettings],\r\n state => state?.Modules,\r\n);\r\nexport const selectKnownModule = createSelector(\r\n [selectKnownModules, (state, knownModules: KnownModules) => knownModules],\r\n (state, knownModules: KnownModules) => state?.includes(knownModules) ?? false,\r\n);\r\n\r\nexport const selectUseAmPm = createSelector([selectAppSettings], state => {\r\n return state?.Globalization?.UseAmPm;\r\n});\r\nexport const selectSystemFirstDayOfWeek = createSelector(\r\n [selectAppSettings],\r\n (state): WeekStartsOn => {\r\n const DEFAULT_FIRST_DAY_OF_WEEK = 1;\r\n const firstDayOfWeek =\r\n state?.Globalization?.FirstDayOfWeek ?? DEFAULT_FIRST_DAY_OF_WEEK;\r\n if (firstDayOfWeek >= 0 && firstDayOfWeek <= 6) {\r\n return firstDayOfWeek as WeekStartsOn;\r\n } else {\r\n return DEFAULT_FIRST_DAY_OF_WEEK;\r\n }\r\n },\r\n);\r\nexport const selectWebVersion = createSelector(\r\n [selectAppSettings],\r\n state => state?.WebVersion,\r\n);\r\nconst DefaultUploadFileSizeLimit = 500000;\r\nexport const selectUploadFileSizeLimit = createSelector(\r\n [selectAppSettings],\r\n state => state?.UploadFileSizeLimit || DefaultUploadFileSizeLimit,\r\n);\r\nexport const selectMinimizedBookitlabLogo = createSelector(\r\n [selectAppSettings],\r\n state => state?.MinimizedBookitlabLogo || false,\r\n);\r\nconst defaultForbiddenFileExtensions = [\r\n '.dll',\r\n '.exe',\r\n '.vbs',\r\n '.js',\r\n '.ts',\r\n '.tsx',\r\n '.msi',\r\n '.com',\r\n '.bat',\r\n];\r\nexport const selectForbiddenFileExtensions = createSelector(\r\n [selectAppSettings],\r\n state => state?.ForbiddenFileExtensions ?? defaultForbiddenFileExtensions,\r\n);\r\nexport const selectLastCodeUpdate = createSelector(\r\n [selectAppSettings],\r\n state => state?.LastCodeUpdate,\r\n);\r\nexport const selectAppTimeZone = createSelector(\r\n [selectAppSettings],\r\n state => state?.TimeZone,\r\n);\r\nexport const selectSettingTimeZones = createSelector(\r\n [selectAppSettings],\r\n state => state?.SettingTimeZones ?? [],\r\n);\r\nexport const selectPublicUrl = createSelector([selectAppSettings], state =>\r\n state?.PublicBaseUrl === undefined\r\n ? undefined\r\n : appendTrailingSlash(state.PublicBaseUrl),\r\n);\r\nexport const selectRegisterUserGroup = createSelector(\r\n [selectAppSettings],\r\n state => state?.DefaultRegistrationGroup,\r\n);\r\nexport const selectOffsetDate = createSelector(\r\n [selectAppTimeZone, (state, date: Date | string | undefined | null) => date],\r\n (timeZone, date) => {\r\n const systemOffset = timeZone?.TimezoneOffsetMinutes ?? 0;\r\n let correctDate =\r\n date === null || date === undefined\r\n ? dateUtils.dateOrStringToDate(new Date())\r\n : dateUtils.dateOrStringToDate(date);\r\n const currentDateOffset = correctDate.getTimezoneOffset();\r\n const dateOrNow = dateUtils.addMinutes(\r\n correctDate,\r\n systemOffset + currentDateOffset,\r\n );\r\n return dateOrNow;\r\n },\r\n);\r\nexport const selectUserRegistersToSpecificCores = createSelector(\r\n [selectAppSettings],\r\n state =>\r\n (state?.UserRegistersToSpecificCores as UserRegistersToSpecificCoresType) ||\r\n UserRegistersToSpecificCoresType.UserRegistersToSpecificCores_NA,\r\n);\r\nexport const selectEmailFromAddress = createSelector(\r\n [selectAppSettings],\r\n state => state?.EmailFromAddress,\r\n);\r\nexport const selectExistingImages = createSelector(\r\n [selectAppSettings],\r\n state => state?.ExistingImages,\r\n);\r\n\r\nconst constructAuthenticatedUser = (a?: IAuthenticatedUser) => {\r\n return a === undefined ? undefined : new AuthenticatedUser(a);\r\n};\r\nconst selectAuthenticatedUserObject = createSelector(\r\n [selectSlice],\r\n state => state.authenticatedUser,\r\n);\r\nexport const selectAuthenticatedUser = createSelector(\r\n [selectAuthenticatedUserObject],\r\n state => {\r\n const b = constructAuthenticatedUser(state);\r\n return b;\r\n },\r\n);\r\nexport const selectSupportedLocales = createSelector(\r\n [selectAppSettings],\r\n state => state?.Globalization?.SupportedLocales ?? [],\r\n);\r\nexport const selectDefaultLocaleId = createSelector(\r\n [selectAppSettings],\r\n state => state?.Globalization?.DefaultLocaleId,\r\n);\r\nexport const selectLdapEnabled = createSelector(\r\n [selectAppSettings],\r\n state => state?.LdapEnabled ?? false,\r\n);\r\nexport const selectCurrentLocale = createSelector(\r\n [selectSlice, selectAuthenticatedUser, selectDefaultLocaleId],\r\n (state, authenticatedUser, defaultLocaleId) => state.currentLocaleId,\r\n);\r\nexport const selectCurrentLocaleIdentifier = createSelector(\r\n [selectCurrentLocale],\r\n state => {\r\n try {\r\n if (state === undefined) {\r\n return undefined;\r\n }\r\n return parseLocale(state);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n },\r\n);\r\nexport const selectCurrentLanguage = createSelector(\r\n [selectCurrentLocaleIdentifier],\r\n state => state?.language,\r\n);\r\n\r\n/**\r\n * Returns enabled asset attributes for current session (public/private)\r\n * */\r\nexport const selectAssetFieldSettings = createSelector(\r\n [selectAppSettings, selectAuthenticatedUser],\r\n (appSettings, authenticatedUser) =>\r\n pickBy(\r\n appSettings?.AssetFieldSettings,\r\n (value, key) => value.IsPublic || authenticatedUser !== undefined,\r\n ),\r\n);\r\n\r\nexport const selectAssetPopupSettings = createSelector(\r\n [selectAppSettings, selectAssetFieldSettings, selectAuthenticatedUser],\r\n (appSettings, assetFieldSettings, authenticatedUser) => {\r\n return Object.entries(assetFieldSettings).map(([key, value]) => ({\r\n Id: key,\r\n Visible: true,\r\n DisplayName: value.DisplayName,\r\n }));\r\n },\r\n);\r\n/**\r\n * Returns enabled user attributes for current user page\r\n * */\r\nexport const selectEnabledUserFieldSettings = createSelector(\r\n [selectAppSettings],\r\n appSettings =>\r\n pickBy(\r\n appSettings?.UserFieldSettings,\r\n (value, key) => value.Disabled !== true,\r\n ),\r\n);\r\nexport const selectUserFieldSettings = createSelector(\r\n [selectEnabledUserFieldSettings, (state, type: UserScreenType) => type],\r\n (userFieldSettings, type) => {\r\n return Object.entries(userFieldSettings)\r\n .filter(([key, value]) => value[type] === true)\r\n .map(([key, value]) => ({\r\n Id: key,\r\n Setting: value,\r\n }));\r\n },\r\n);\r\nexport const selectIsFullScreen = createSelector(\r\n [selectSlice],\r\n state => state.isFullScreen,\r\n);\r\n\r\nexport const selectLoading = createSelector([selectSlice], state => {\r\n let loading =\r\n state.isAuthenticated === true\r\n ? state.loadingAppSettings ||\r\n state.loadingSiteMapSettings ||\r\n state.loadingUserProfileSettings ||\r\n state.loadingSystemSettings\r\n : state.isAuthenticated === false\r\n ? state.loadingAppSettings || state.loadingSystemSettings\r\n : state.loadingAuthenticatedUser || state.loadingSystemSettings;\r\n return loading;\r\n});\r\nexport const selectError = createSelector([selectSlice], state => state.error);\r\nexport const selectLoadingUser = createSelector(\r\n [selectSlice],\r\n state => state.loadingAuthenticatedUser,\r\n);\r\nexport const selectNotifications = createSelector(\r\n [selectSlice],\r\n state => state.notifications,\r\n);\r\nconst selectGlobalSettingsObj = createSelector(\r\n [selectSlice],\r\n state => state.systemSettings,\r\n);\r\nexport const selectglobalSettings = createSelector(\r\n [selectGlobalSettingsObj],\r\n state => new GlobalSettings(state || ([] as ISettingModel[])),\r\n);\r\nexport const selectGlobalSetting = createSelector(\r\n [selectGlobalSettingsObj, (state, name: AllowedSettings) => name],\r\n (globalSettingsObj, name) => {\r\n const x = globalSettingsObj.find(\r\n f =>\r\n f.Id.trim().toLowerCase() ===\r\n AllowedSettings[name].trim().toLowerCase(),\r\n );\r\n return x?.Value ?? undefined;\r\n },\r\n);\r\nexport const selectImageExist = createSelector(\r\n [selectExistingImages, (state, image: string | null) => image],\r\n (existingImages, image) => {\r\n let result = false;\r\n if (image === null) {\r\n return false;\r\n }\r\n if (!!existingImages && existingImages.length > 0) {\r\n result = existingImages.some(f => f === image);\r\n }\r\n return result;\r\n },\r\n);\r\nexport const selectGlobalSettingBool = createSelector(\r\n [selectGlobalSettingsObj, (state, name: AllowedSettings) => name],\r\n (globalSettingsObj, name) => {\r\n const x = globalSettingsObj.find(\r\n f =>\r\n f.Id.trim().toLowerCase() ===\r\n AllowedSettings[name].trim().toLowerCase(),\r\n );\r\n return x?.Value === null ||\r\n x?.Value === undefined ||\r\n x.Value === '' ||\r\n x.Value.toLowerCase() === 'false'\r\n ? false\r\n : x.Value.toLowerCase() === 'true';\r\n },\r\n);\r\nexport const selectSiteMapSettings = createSelector(\r\n [selectSlice],\r\n state => state.siteMapSettings,\r\n);\r\nexport const selectSiteMapProvider = createSelector(\r\n [selectSlice],\r\n state => new SiteMapProvider(state.siteMapSettings),\r\n);\r\nexport const selectEventsCount = createSelector(\r\n [selectSlice],\r\n state => state.eventsCount,\r\n);\r\nexport const selectEventsCountLoading = createSelector(\r\n [selectSlice],\r\n state => state.loadingEventsCount,\r\n);\r\nexport const selectUserProfileSettings = createSelector(\r\n [selectSlice],\r\n state => new UserProfile(state.userProfileSettings),\r\n);\r\n/**\r\n * Selects specific user profile setting value provided by the key\r\n * usage example:\r\n * const userProfileValue = useSelector(state => selectUserProfileSetting(state, \"userProfileKey\"))\r\n */\r\nexport const selectUserProfileSetting = createSelector(\r\n [selectUserProfileSettings, (state, key) => key],\r\n (state, key) => state.GetSettingByKey(key)?.Value,\r\n);\r\nexport const selectIsExpanded = createSelector(\r\n [selectSlice],\r\n state => state.isExpanded,\r\n);\r\nexport const selectIsSubBarCollapsed = createSelector(\r\n [selectSlice],\r\n state => state.subBarCollapsed,\r\n);\r\n\r\nexport const selectUpdatedUserProfileSettings = createSelector(\r\n [selectSlice],\r\n state => state.updatedUserProfileSettings,\r\n);\r\nexport const selectIsAuthenticated = createSelector(\r\n [selectSlice],\r\n state => state.isAuthenticated,\r\n);\r\nexport const selectUpdatedExpandState = createSelector(\r\n [selectSlice],\r\n state => state.updatedExpandState,\r\n);\r\nexport const selectIsExpandedSideBar = createSelector(\r\n [selectSlice, (state, isMobile) => isMobile],\r\n (state, isMobile) => {\r\n let result: boolean = false;\r\n if (isMobile) {\r\n result = state.isExpanded;\r\n } else {\r\n if (state.updatedExpandState) {\r\n result = state.isExpanded;\r\n } else {\r\n let sett = new UserProfile(state.userProfileSettings);\r\n let expanded = sett.GetSideBarExpanded('SideBarExpanded');\r\n result = expanded !== null ? expanded : true;\r\n }\r\n }\r\n return result;\r\n },\r\n);\r\nexport const selectGlobalServiceGroupFilter = createSelector(\r\n [selectSlice],\r\n state => {\r\n let topServiceGroupsIsHidden = state.systemSettings.find(\r\n f => f.Id === 'HideTopServiceGroupFilter',\r\n );\r\n if (\r\n topServiceGroupsIsHidden !== null &&\r\n topServiceGroupsIsHidden !== undefined\r\n ) {\r\n if (topServiceGroupsIsHidden.Value === 'True') {\r\n return [];\r\n } else {\r\n return state.globalServiceGroupFilter;\r\n }\r\n } else {\r\n return state.globalServiceGroupFilter;\r\n }\r\n },\r\n);\r\nexport const selectSpecificServiceGroupFilter = createSelector(\r\n [selectSlice],\r\n state => {\r\n let topServiceGroupsIsHidden = state.systemSettings.find(\r\n f => f.Id === 'HideTopServiceGroupFilter',\r\n );\r\n let hideDashboardSubMenu = state.systemSettings.find(\r\n f => f.Id === 'HideDashboardSubMenu',\r\n );\r\n if (\r\n topServiceGroupsIsHidden !== null &&\r\n topServiceGroupsIsHidden !== undefined\r\n ) {\r\n if (hideDashboardSubMenu !== null && hideDashboardSubMenu !== undefined) {\r\n if (hideDashboardSubMenu.Value === 'True') {\r\n return [];\r\n } else {\r\n return state.specificServiceGroupFilter;\r\n }\r\n } else {\r\n return state.specificServiceGroupFilter;\r\n }\r\n } else {\r\n return state.specificServiceGroupFilter;\r\n }\r\n },\r\n);\r\nexport const selectAllCoresSelectableCount = createSelector(\r\n [selectSlice],\r\n state => state.allServiceGroupsSelectable?.length,\r\n);\r\nexport const selectAllCoresSelectable = createSelector(\r\n [selectSlice],\r\n state => state.allServiceGroupsSelectable,\r\n);\r\nexport const selectShowGlobalServiceGroupFilter = createSelector(\r\n [selectSlice],\r\n state => state.showGlobalServiceGroupFilter,\r\n);\r\nexport const selectBarcodeScanTarget = createSelector(\r\n [selectSlice],\r\n state => state.barcodeScanTarget,\r\n);\r\nexport const selectShowAllCores = createSelector(\r\n [selectSlice],\r\n state => state.showAllCores,\r\n);\r\nexport const selectSkipLocationChanged = createSelector(\r\n [selectSlice],\r\n state => state.skipLocationChanged,\r\n);\r\nexport const selectManualScanProcessing = createSelector(\r\n [selectSlice],\r\n state => state.manualScanProcessing,\r\n);\r\n/**\r\n * Selects reservation statuses enabled on the system level\r\n * ```\r\n * const statuses = useSelector(state => selectReservationStatuses(state, t));\r\n * ```\r\n */\r\nexport const selectReservationStatuses = createSelector(\r\n [\r\n selectSlice,\r\n state => selectKnownModule(state, KnownModules.UserGroupCoordRole),\r\n state =>\r\n selectGlobalSettingBool(state, AllowedSettings.AllowWorkflowBooking) &&\r\n selectGlobalSettingBool(\r\n state,\r\n AllowedSettings.MultipleTentativeReservationsUnderWorkflowBooking,\r\n ),\r\n state =>\r\n selectGlobalSettingBool(state, AllowedSettings.DraftReservationsEnabled),\r\n (state, t: TFunction) => t,\r\n ],\r\n (\r\n state,\r\n UserGroupCoordRole,\r\n AllowWorkflowBooking,\r\n DraftReservationsEnabled,\r\n t,\r\n ) => {\r\n const GetListItem = (s: ReservationStatus) => ({\r\n Id: s,\r\n Name: t(ReservationStatus[s]),\r\n });\r\n const list: Array> = [];\r\n\r\n list.push(GetListItem(ReservationStatus.Approved));\r\n list.push(GetListItem(ReservationStatus.Pending));\r\n if (UserGroupCoordRole) {\r\n list.push(GetListItem(ReservationStatus.PendingCoord));\r\n }\r\n list.push(GetListItem(ReservationStatus.Cancelled));\r\n list.push(GetListItem(ReservationStatus.CancelledByAdmin));\r\n if (AllowWorkflowBooking) {\r\n list.push(GetListItem(ReservationStatus.Tentative));\r\n }\r\n if (DraftReservationsEnabled) {\r\n list.push(GetListItem(ReservationStatus.Draft));\r\n }\r\n return list;\r\n },\r\n);\r\nexport const selectUsageEnabled = createSelector(\r\n [\r\n selectSlice,\r\n selectKnownModules,\r\n state =>\r\n selectGlobalSettingBool(state, AllowedSettings.RoomUserRoleEnabled),\r\n ],\r\n (state, knownModules, RoomUserRoleEnabled) => {\r\n return (\r\n knownModules?.includes(KnownModules.LocalApp) ||\r\n knownModules?.includes(KnownModules.Relay) ||\r\n knownModules?.includes(KnownModules.IpRelay) ||\r\n knownModules?.includes(KnownModules.WebRelayTm) ||\r\n knownModules?.includes(KnownModules.WebRelayX600m) ||\r\n knownModules?.includes(KnownModules.UsageForm) ||\r\n knownModules?.includes(KnownModules.LoanDesk) ||\r\n knownModules?.includes(KnownModules.DoorAccess) ||\r\n knownModules?.includes(KnownModules.NiDAQmx) ||\r\n knownModules?.includes(KnownModules.KmTronicRelay) ||\r\n knownModules?.includes(KnownModules.RaspberryPi) ||\r\n RoomUserRoleEnabled\r\n );\r\n },\r\n);\r\n","import * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useTheme } from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport { RightSection } from '../wrappers';\r\n\r\nexport interface FormRightSectionProps {\r\n children: React.ReactNode;\r\n isCover?: boolean;\r\n useTopSpacing?: boolean;\r\n}\r\nexport const FormRightSection = (props: FormRightSectionProps) => {\r\n const { children, isCover, useTopSpacing = true } = props;\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const showShortView = (sidePanelOpen && !sidePanelExpanded) || isCover;\r\n const theme = useTheme();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { Form } from 'formik';\r\nimport { StyledFormFieldsContainer } from '../StyledFormFieldsContainer';\r\nexport interface IndexNode {\r\n node: React.ReactNode;\r\n index: number | string;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n showMore?: boolean;\r\n}\r\nexport interface StyledFormProps {\r\n onSubmit?: (e?: React.FormEvent | undefined) => void;\r\n children: React.ReactNode;\r\n avoidStyles?: boolean;\r\n id?: string;\r\n isCover?: boolean;\r\n noPadding?: boolean;\r\n useRequestSection?: boolean;\r\n ref?: React.Ref;\r\n}\r\nexport const StyledForm = (props: StyledFormProps) => {\r\n const {\r\n id,\r\n onSubmit,\r\n avoidStyles,\r\n children,\r\n isCover,\r\n noPadding,\r\n useRequestSection,\r\n ...other\r\n } = props;\r\n return (\r\n
\r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n","import axios, { AxiosRequestConfig, AxiosResponse, CancelToken } from 'axios';\r\nimport { StatusCodes } from 'http-status-codes';\r\nimport { uniqueId } from 'lodash';\r\naxios.defaults.baseURL = process.env.PUBLIC_URL;\r\nconst timeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone;\r\nconst TIMEZONE_HEADER_NAME = 'X-TimeZone';\r\naxios.defaults.timeout = 600000;\r\naxios.interceptors.request.use(function (config) {\r\n config.headers[TIMEZONE_HEADER_NAME] = timeZone;\r\n return config;\r\n});\r\n\r\n/**\r\n * Check if HTTP status is a success - anything in 2xx range\r\n * e.g. 200, 201, etc.\r\n * @param status HTTP_STATUS\r\n * @returns true for all success statuses\r\n */\r\nconst isStatusOK = (status: number) => status >= 200 && status < 300;\r\n\r\nexport type BatchRequest = {\r\n id?: string;\r\n method: 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';\r\n pathName: string;\r\n search?: URLSearchParams;\r\n body?: any;\r\n};\r\ninterface BatchResponse {\r\n id: string;\r\n atomicityGroup: string;\r\n status: StatusCodes;\r\n headers: Record;\r\n body?: unknown;\r\n}\r\nexport interface BatchResponses {\r\n responses: BatchResponse[];\r\n}\r\n// const y = {\r\n// responses: [\r\n// {\r\n// id: 'g1_0',\r\n// atomicityGroup: 'f27f07a2-e8f4-4c62-8216-4611e3ba07c6',\r\n// status: 204,\r\n// headers: { 'odata-version': '4.0' },\r\n// },\r\n// {\r\n// id: 'g1_1',\r\n// atomicityGroup: 'f27f07a2-e8f4-4c62-8216-4611e3ba07c6',\r\n// status: 204,\r\n// headers: { 'odata-version': '4.0' },\r\n// },\r\n// ],\r\n// };\r\n// const x = {\r\n// requests: [\r\n// {\r\n// method: 'PATCH',\r\n// atomicityGroup: 'g1',\r\n// url:\r\n// 'http://localhost:3194/bkt_webApp/api/odata/v4/ServiceRequestTickets(650)',\r\n// headers: {\r\n// 'content-type':\r\n// 'application/json; odata.metadata=minimal; odata.streaming=true',\r\n// 'odata-version': '4.0',\r\n// },\r\n// id: 'g1_0',\r\n// body: { Index: 0 },\r\n// },\r\n// {\r\n// method: 'PATCH',\r\n// atomicityGroup: 'g1',\r\n// url:\r\n// 'http://localhost:3194/bkt_webApp/api/odata/v4/ServiceRequestTickets(651)',\r\n// headers: {\r\n// 'content-type':\r\n// 'application/json; odata.metadata=minimal; odata.streaming=true',\r\n// 'odata-version': '4.0',\r\n// },\r\n// id: 'g1_1',\r\n// body: { Index: 1 },\r\n// },\r\n// ],\r\n// };\r\n\r\nclass Client {\r\n public cancelToken = axios.CancelToken;\r\n public async get(\r\n url: string,\r\n params?: any,\r\n cancelToken?: CancelToken,\r\n ): Promise {\r\n try {\r\n const response = await axios.get(url, {\r\n params: params,\r\n cancelToken: cancelToken,\r\n });\r\n if (isStatusOK(response.status)) {\r\n return response.data;\r\n } else {\r\n throw response;\r\n }\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n public async put>(\r\n url: string,\r\n data?: any,\r\n config?: AxiosRequestConfig,\r\n ): Promise {\r\n const response = await axios.put(url, data, config);\r\n if (isStatusOK(response.status)) {\r\n return response.data;\r\n } else {\r\n throw response;\r\n }\r\n }\r\n public async post(\r\n url: string,\r\n data?: any,\r\n config?: AxiosRequestConfig,\r\n ): Promise {\r\n try {\r\n const response = await axios.post(url, data, config);\r\n if (isStatusOK(response.status)) {\r\n return response.data;\r\n } else {\r\n throw response;\r\n }\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n public async patch(\r\n url: string,\r\n data?: any,\r\n config?: AxiosRequestConfig,\r\n ): Promise {\r\n const response = await axios.patch(url, data, config);\r\n if (isStatusOK(response.status)) {\r\n return response.data;\r\n } else {\r\n throw response;\r\n }\r\n }\r\n public async delete>(\r\n url: string,\r\n config?: AxiosRequestConfig,\r\n ): Promise {\r\n const response = await axios.delete(url);\r\n if (isStatusOK(response.status)) {\r\n return response.data;\r\n } else {\r\n throw response;\r\n }\r\n }\r\n public async deleteCustom(\r\n url: string,\r\n config?: AxiosRequestConfig,\r\n ): Promise {\r\n const response = await axios.delete(url);\r\n if (isStatusOK(response.status)) {\r\n return response.data;\r\n } else {\r\n throw response;\r\n }\r\n }\r\n\r\n public async batch(b: Array): Promise {\r\n const atomicityGroup = 'g1';\r\n const payload = {\r\n requests: b\r\n /**\r\n * url can be either:\r\n * 1. fully qualified e.g. https://localhost:44355/bkt_webapp/api/odata/v4/reservations?$top=1\r\n * 2. app relative without leading slash: api/odata/v4/reservations?$top=1\r\n * 3. odata route relative: reservations?$top=1\r\n * \r\n * currently something fails rougint working hours - custom function with datetime parameters.\r\n * direct get works just fine\r\n * GET http://localhost:3194/bkt_webApp/api/odata/v4/WorkingHours/GetNonWorking(serviceId=[10083],start=2024-05-25T21:00:00Z,end=2024-06-01T21:00:00Z)\r\n * \r\n * but the batch fails with 404\r\n * POST http://localhost:3194/bkt_webApp/api/odata/v4/$batch\r\n{\r\n \"requests\": [\r\n {\r\n \"method\": \"GET\",\r\n \"atomicityGroup\": \"g1\",\r\n \"url\": \"http://localhost:3194/bkt_webApp/api/odata/v4/WorkingHours/GetNonWorking(serviceId=[10083],start=2024-05-25T21:00:00Z,end=2024-06-01T21:00:00Z)\",\r\n \"headers\": {\r\n \"content-type\": \"application/json; odata.metadata=minimal; odata.streaming=true\",\r\n \"odata-version\": \"4.0\"\r\n },\r\n \"id\": \"g1_1\"\r\n }\r\n ]\r\n}\r\n * \r\n * \r\n */\r\n .map((r, index) => {\r\n let url = formatBatchUrl(r.pathName);\r\n if (r.search !== undefined) {\r\n url += `?${r.search}`;\r\n }\r\n return {\r\n method: r.method,\r\n atomicityGroup: atomicityGroup,\r\n url: url,\r\n headers: {\r\n 'content-type':\r\n 'application/json; odata.metadata=minimal; odata.streaming=true',\r\n 'odata-version': '4.0',\r\n },\r\n id: r.id ?? uniqueId(`${atomicityGroup}_`),\r\n body: r.body,\r\n };\r\n }),\r\n };\r\n const response: AxiosResponse = await axios.post(\r\n '/api/odata/v4/$batch',\r\n payload,\r\n );\r\n\r\n if (\r\n response.data.responses.every(response => isStatusOK(response.status))\r\n ) {\r\n return response.data;\r\n } else {\r\n throw response;\r\n }\r\n }\r\n public async batchDelete(urls: string[]) {\r\n return this.batch(\r\n urls.map(f => ({\r\n pathName: f,\r\n method: 'DELETE',\r\n })),\r\n );\r\n }\r\n /**\r\n * Response type is blob by default due to historical reasons. If json is expected, then\r\n * uploadFile('url', data, {resposneType:'json'})\r\n * @param url\r\n * @param file\r\n * @param config\r\n */\r\n public async uploadFile(url, file, config?: AxiosRequestConfig) {\r\n const formData = new FormData();\r\n formData.append('File', file);\r\n const response = await axios.post(url, formData, {\r\n responseType: 'blob',\r\n timeout: undefined,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n Accept: 'application/json',\r\n },\r\n ...config,\r\n });\r\n return response;\r\n }\r\n}\r\nfunction formatBatchUrl(s: string) {\r\n if (s[0] === '/') {\r\n s = s.substr(1);\r\n }\r\n return s;\r\n}\r\nexport const httpClient = new Client();\r\n","import { Theme } from '@material-ui/core';\r\nimport { PropTypes } from '@material-ui/core';\r\nimport { PaletteColor } from '@material-ui/core/styles/createPalette';\r\n\r\nexport type TypeColor =\r\n | Exclude\r\n | 'danger'\r\n | 'accent'\r\n | 'filters'\r\n | 'success'\r\n | 'black'\r\n | 'info'\r\n | 'warning';\r\nexport type TypeColorOptions =\r\n | 'dark'\r\n | 'main'\r\n | 'light'\r\n | 'textHover'\r\n | 'bgHover'\r\n | 'contrastText';\r\nexport const getColor = (\r\n theme: Theme,\r\n color: TypeColor | undefined = 'primary',\r\n options: TypeColorOptions | undefined = 'main',\r\n): string | undefined => {\r\n switch (color) {\r\n case 'black':\r\n return getBlackColorOption(options, theme);\r\n case 'accent':\r\n case 'danger':\r\n case 'default':\r\n case 'filters':\r\n case 'info':\r\n case 'primary':\r\n case 'secondary':\r\n case 'success':\r\n case 'warning':\r\n return getColorOption(options, theme.palette[color]);\r\n default:\r\n return getColorOption(options, theme.palette.primary);\r\n }\r\n};\r\nfunction getBlackColorOption(options: string, theme: Theme) {\r\n switch (options) {\r\n case 'main':\r\n return theme.palette.common.graySubtitle;\r\n case 'dark':\r\n return theme.palette.common.blackRegular;\r\n case 'light':\r\n return theme.palette.common.grayComponentsLight;\r\n case 'textHover':\r\n return theme.palette.common.blackComponent;\r\n case 'bgHover':\r\n return theme.palette.common.backgroundHover;\r\n case 'contrastText':\r\n return theme.palette.common.white;\r\n default:\r\n return theme.palette.common.graySubtitle;\r\n }\r\n}\r\nfunction getColorOption(options: string | undefined, color: PaletteColor) {\r\n switch (options) {\r\n case 'main':\r\n return color.main;\r\n case 'dark':\r\n return color.dark;\r\n case 'light':\r\n return color.light;\r\n case 'textHover':\r\n return color.textHover;\r\n case 'bgHover':\r\n return color.bgHover;\r\n case 'contrastText':\r\n return color.contrastText;\r\n default:\r\n return color.main;\r\n }\r\n}\r\n","import { IconName as fontawesome_IconName } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n FontAwesomeIcon,\r\n FontAwesomeIconProps,\r\n} from '@fortawesome/react-fontawesome';\r\nimport { useTheme } from '@material-ui/core';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport * as React from 'react';\r\nimport { getColor, TypeColor, TypeColorOptions } from 'styles/colors/types';\r\nimport { IconName, IconProp } from 'app/AllIcons';\r\n\r\nexport interface IconProps\r\n extends Omit {\r\n color?: TypeColor;\r\n colorExtend?: TypeColorOptions;\r\n icon: IconProp;\r\n info?: string;\r\n}\r\n\r\nexport const Icon = React.forwardRef(function Icon(\r\n { icon, color, colorExtend, info, ...props }: IconProps,\r\n ref,\r\n) {\r\n const iconName = icon as IconName;\r\n //typeof icon === 'string' ? () : (icon as IconProp);\r\n const theme = useTheme();\r\n const defColor = color && getColor(theme, color, colorExtend); //|| theme.palette.common.graySubtitle\r\n\r\n const WithTitle = ({ children }: { children: React.ReactNode }) =>\r\n info ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n <>{children}\r\n );\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n// variant with ref - using SvgIcon component\r\n\r\n// export const Icon = React.forwardRef((props, ref) => {\r\n// const { icon, color, ...rest } = props;\r\n// const iconName = icon as IconName;\r\n// const theme = useTheme();\r\n// const defColor = color && getColor(theme, color);\r\n// return (\r\n// \r\n// \r\n// \r\n// );\r\n// });\r\n","import { GetBooleanFilterOptions } from 'app/components/BooleanPicker';\r\nimport { ALL_PERIOD_TYPES, PeriodTypes } from 'app/components/DatePeriods';\r\nimport startOfDay from 'date-fns/startOfDay';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { CustomDate, DateType } from 'types/CustomDate';\r\nimport { INumbersRange } from 'types/INumbersRange';\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { isNullOrUndefined, valOrNull } from 'utils/typeUtils';\r\nimport { FilterValueType } from '../BasicFilter/FilterValueType';\r\nimport {\r\n FilterIntializer,\r\n FilterSerializer,\r\n} from '../BasicFilter/IFilterSettings';\r\nimport { AssetRangeType, isAssetRangeType } from '../Filters/AssetRangeFilter';\r\n\r\nexport interface FilterParam {\r\n Name: string;\r\n Value?: FilterValueType;\r\n}\r\n\r\n/**\r\n * Case Insensitive URLSearchParams\r\n */\r\nexport class URLSearchParamsCI extends URLSearchParams {\r\n constructor(value?: string | URLSearchParams) {\r\n super();\r\n\r\n const params = new URLSearchParams(value);\r\n for (const [name, value] of params) {\r\n this.append(name.toLowerCase(), value);\r\n }\r\n }\r\n public get(name: string): string | null {\r\n return super.get(name.toLowerCase());\r\n }\r\n public set(name: string, value: string | undefined) {\r\n this.delete(name.toLowerCase());\r\n if (value !== undefined) {\r\n super.set(name, value);\r\n }\r\n }\r\n\r\n public toObject() {\r\n const result = {};\r\n for (const key of this.keys()) {\r\n result[key] = this.get(key);\r\n }\r\n return result;\r\n }\r\n\r\n public equals(other: URLSearchParams): boolean {\r\n const b = new URLSearchParamsCI(other);\r\n return this.toString() === b.toString();\r\n }\r\n}\r\n\r\nexport function GetRawValue(params: URLSearchParams, fieldName: string) {\r\n var value = params.get(fieldName);\r\n if (value === null) {\r\n return undefined;\r\n }\r\n if (value === '') {\r\n return null;\r\n }\r\n return setisInversedForUrl(value, false);\r\n}\r\n\r\nexport const isInversedPrefix = 'not;';\r\n\r\nexport function isFilterInversed(val: string | null | undefined) {\r\n if ((val ?? '') === '') {\r\n return false;\r\n }\r\n return val!.startsWith(isInversedPrefix);\r\n}\r\n\r\nexport function findIsfilterInversed(search: string, key: string | undefined) {\r\n if (key === undefined) return undefined;\r\n const params = new URLSearchParams(search);\r\n const val = params.get(key);\r\n return isFilterInversed(val);\r\n}\r\n\r\nexport function setisInversedForUrl<\r\n T extends string | null | undefined = string | null | undefined,\r\n>(val: T, isInversed: boolean) {\r\n if ((val ?? '') === '') return val;\r\n const definedVal = val!;\r\n const hasprefix = definedVal.startsWith(isInversedPrefix);\r\n if (isInversed && !hasprefix) {\r\n return isInversedPrefix + definedVal;\r\n }\r\n if (!isInversed && hasprefix) {\r\n return definedVal.substring(isInversedPrefix.length);\r\n }\r\n return definedVal;\r\n}\r\n\r\n/**\r\n *\r\n * @param rawValue\r\n * @returns\r\n */\r\nexport function GetNumberOrUndefined(rawValue: string | undefined | null) {\r\n if (rawValue === undefined) {\r\n return undefined;\r\n }\r\n if (rawValue === null) {\r\n return null;\r\n }\r\n var number = parseInt(rawValue);\r\n if (isNaN(number)) {\r\n return undefined;\r\n }\r\n return number;\r\n}\r\nexport function GetStringOrUndefined(rawValue: string | undefined | null) {\r\n if (rawValue === undefined) {\r\n return undefined;\r\n }\r\n if (rawValue === null) {\r\n return null;\r\n }\r\n if (rawValue === '') {\r\n return null;\r\n }\r\n return rawValue;\r\n}\r\nexport function getStringUnionOrUndefined(\r\n rawValue: string | undefined | null,\r\n unionArray: Array,\r\n) {\r\n if (rawValue === undefined) {\r\n return undefined;\r\n }\r\n if (rawValue === null) {\r\n return null;\r\n }\r\n if (rawValue === '') {\r\n return null;\r\n }\r\n return unionArray.find(\r\n f => f.toLocaleLowerCase() === rawValue?.toLowerCase(),\r\n );\r\n}\r\n\r\nexport function getStringUnionArrayOrUndefined(\r\n rawValue: string | undefined | null,\r\n unionArray: Array,\r\n) {\r\n if (isNullOrUndefined(rawValue)) return rawValue;\r\n const values = splitFilterValue(rawValue)\r\n .map(v => getStringUnionOrUndefined(v, unionArray))\r\n .filter(v => !isNullOrUndefined(v));\r\n if (!values.length) return undefined;\r\n return values as Array;\r\n}\r\nexport function GetBooleanOrUndefined(rawValue: string | undefined | null) {\r\n if (rawValue === undefined) {\r\n return undefined;\r\n }\r\n if (rawValue === null) {\r\n return null;\r\n }\r\n const value = rawValue.toLowerCase() === 'true';\r\n return value;\r\n}\r\nexport function GetDateOrUndefined(\r\n rawValue: string | undefined | null,\r\n type?: DateType,\r\n) {\r\n if (rawValue === undefined) {\r\n return undefined;\r\n }\r\n if (rawValue === null) {\r\n return null;\r\n }\r\n const date = dateUtils.parseQueryStringDate(rawValue);\r\n if (isNaN(date.getTime())) {\r\n return undefined;\r\n }\r\n return new CustomDate(date, type ?? 'complete');\r\n}\r\n\r\nexport function GetPartialEntity(\r\n id: T | undefined | null,\r\n): Identifiable | undefined | null {\r\n if (id === undefined) {\r\n return undefined;\r\n }\r\n if (id === null) {\r\n return null;\r\n }\r\n return { Id: id };\r\n}\r\nexport function GetEnum(\r\n value: string | null | undefined,\r\n enumObject: object,\r\n t: TFunction,\r\n) {\r\n if (value === null) {\r\n return null;\r\n }\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n var options = enumToEntityArray(enumObject, t);\r\n var numValue = tryParseInt(value);\r\n if (numValue === undefined) {\r\n return null;\r\n }\r\n if (isNaN(numValue)) {\r\n return null;\r\n }\r\n var item = options.find(f => f.Id === numValue);\r\n\r\n return item ?? null;\r\n}\r\nexport function GetBooleanEntity(\r\n value: boolean | undefined | null,\r\n t: TFunction,\r\n): Entity | undefined | null {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n if (value === null) {\r\n return null;\r\n }\r\n return {\r\n Id: value,\r\n Name: t(value === true ? translations.Yes : translations.No),\r\n };\r\n}\r\n\r\nexport const initPickerValue = (\r\n f: (value: string) => Promise[]>,\r\n additionalOptions?: Array>,\r\n): FilterIntializer => {\r\n return async (item: FilterValueType) => {\r\n const x = item as Identifiable;\r\n const id = x.Id;\r\n // if some \"addionalItem\" are injected through the filter - first try to look the entity there\r\n // for example, the \"all my managed servcies\" - with the magic -999 id\r\n const additionalItem = additionalOptions?.find(option => option.Id === id);\r\n if (additionalItem !== undefined) {\r\n return Promise.resolve(additionalItem);\r\n }\r\n const failureResult: Entity = { Id: id, Name: 'N/A' };\r\n if (item === null || (!!x && x.Id === '')) {\r\n return Promise.resolve(failureResult);\r\n }\r\n try {\r\n const data: any = await f(id.toString());\r\n const verifiedData = !!data.value ? data.value : data;\r\n const name =\r\n verifiedData.length > 0\r\n ? (verifiedData[0] as Entity)\r\n : failureResult;\r\n return name;\r\n } catch {\r\n return failureResult;\r\n }\r\n };\r\n};\r\nexport const initExPickerValue = (\r\n f: (\r\n value: string,\r\n sourceUrl?: any,\r\n withoutServiceGroups?: boolean,\r\n ) => Promise[]>,\r\n additionalOptions?: Array>,\r\n sourceUrl?: any,\r\n withoutServiceGroups?: boolean,\r\n) => {\r\n return async (item: FilterValueType) => {\r\n const x = item as Identifiable;\r\n const id = x.Id;\r\n // if some \"addionalItem\" are injected through the filter - first try to look the entity there\r\n // for example, the \"all my managed servcies\" - with the magic -999 id\r\n const additionalItem = additionalOptions?.find(option => option.Id === id);\r\n if (additionalItem !== undefined) {\r\n return Promise.resolve(additionalItem);\r\n }\r\n const failureResult: Entity = { Id: id, Name: 'N/A' };\r\n if (item === null || (!!x && x.Id === '')) {\r\n return Promise.resolve(failureResult);\r\n }\r\n try {\r\n const data: any = await f(id.toString(), sourceUrl, withoutServiceGroups);\r\n const verifiedData = !!data.value ? data.value : data;\r\n const name =\r\n verifiedData.length > 0\r\n ? (verifiedData[0] as Entity)\r\n : failureResult;\r\n return name;\r\n } catch {\r\n return failureResult;\r\n }\r\n };\r\n};\r\n\r\nexport const initMultiExPickerValue = (\r\n f: (\r\n value: string | undefined,\r\n sourceUrl?: any,\r\n separator?: string,\r\n serviceGroups?: Array>,\r\n ) => Promise[]>,\r\n additionalOptions?: Entity[],\r\n sourceUrl?: any,\r\n separator?: string,\r\n): FilterIntializer => {\r\n return async (\r\n item: FilterValueType,\r\n serviceGroups?: Array>,\r\n ) => {\r\n const x = item as Identifiable[];\r\n const ids = x.map(v => v.Id);\r\n const additionalItems = additionalOptions?.filter(option =>\r\n ids.includes(option.Id),\r\n );\r\n if (additionalItems && additionalItems.length) {\r\n return additionalItems;\r\n }\r\n const failureResult: Entity[] = [];\r\n if (item === null || (!!x && !x.length) || ids.every(v => !v || v === '')) {\r\n return failureResult;\r\n }\r\n try {\r\n const data: Entity[] = await f(\r\n ids.join(separator || '|'),\r\n sourceUrl,\r\n separator || '|',\r\n serviceGroups,\r\n );\r\n return data.length > 0 ? data : failureResult;\r\n } catch {\r\n return failureResult;\r\n }\r\n };\r\n};\r\n\r\nexport const initMultiPickerValue = (\r\n f: (value: string) => Promise[]>,\r\n additionalOptions?: Entity[],\r\n) => {\r\n return async (item: FilterValueType) => {\r\n const x = item as Identifiable[];\r\n const ids = x.map(v => v.Id);\r\n const additionalItems = additionalOptions?.filter(option =>\r\n ids.includes(option.Id),\r\n );\r\n if (additionalItems && additionalItems.length) {\r\n return Promise.resolve(additionalItems);\r\n }\r\n const failureResult: Entity[] = [];\r\n if (\r\n item === null ||\r\n (!!x && !x.length) ||\r\n ids.every(v => v === undefined || v === null || v === '')\r\n ) {\r\n return Promise.resolve(failureResult);\r\n }\r\n try {\r\n const data = await f(ids.join('|'));\r\n return data.length > 0 ? data : failureResult;\r\n } catch {\r\n return failureResult;\r\n }\r\n };\r\n};\r\n\r\nexport function getFilterParams(search: string): FilterParam[] {\r\n let result = [] as FilterParam[];\r\n const params = new URLSearchParams(search);\r\n params.forEach((value, key) => {\r\n if (value !== '' && value !== undefined)\r\n result.push({ Name: key, Value: value });\r\n });\r\n return result;\r\n}\r\n\r\nexport function getDefaultFilterValue(\r\n name: string,\r\n params: FilterParam[],\r\n): string | undefined {\r\n const f = params.find(item => item.Name === name && item.Value !== '');\r\n if (f !== undefined) {\r\n return f.Value as string;\r\n } else return undefined;\r\n}\r\n\r\nexport function getDefaultFilterBool(\r\n name: string,\r\n params: FilterParam[],\r\n t: TFunction,\r\n): Entity | null {\r\n const f = params.find(item => item.Name === name && item.Value !== '');\r\n const value = f?.Value;\r\n const options = GetBooleanFilterOptions(t);\r\n\r\n return options.find(item => item.Id.toString() === value) ?? null;\r\n}\r\n\r\nexport function getDefaultFilterDate(\r\n name: string,\r\n params: FilterParam[],\r\n): Date | null {\r\n const st = getDefaultFilterValue(name, params);\r\n if (st === undefined) {\r\n return null;\r\n }\r\n const date = dateUtils.parseQueryStringDate(st);\r\n if (date === null) {\r\n return null;\r\n }\r\n return startOfDay(date);\r\n}\r\nexport const getPeriodTypeNameOrUndefined = (s: string | null | undefined) => {\r\n if (s === undefined) {\r\n return undefined;\r\n }\r\n const lowered = s?.toLowerCase();\r\n const namedValue: PeriodTypes | undefined = ALL_PERIOD_TYPES.find(\r\n f => f.toLowerCase() === lowered,\r\n );\r\n if (namedValue !== undefined) {\r\n return namedValue;\r\n }\r\n\r\n const num = GetNumberOrUndefined(s);\r\n if (num === null || num === undefined) {\r\n return null;\r\n }\r\n if (isNaN(num)) {\r\n return null;\r\n }\r\n\r\n if (num >= 0 && num < ALL_PERIOD_TYPES.length) {\r\n const numberedValue = ALL_PERIOD_TYPES[num];\r\n return numberedValue;\r\n }\r\n\r\n return namedValue;\r\n};\r\n\r\nexport function getDefaultFilterDatePeriod(\r\n periodTypeFieldName: string,\r\n customStartFieldName: string,\r\n customEndFieldName: string,\r\n params: URLSearchParams,\r\n): PresetDatesRange | undefined | null {\r\n let periodType = getPeriodTypeNameOrUndefined(\r\n GetRawValue(params, periodTypeFieldName),\r\n );\r\n\r\n const start = GetDateOrUndefined(\r\n GetRawValue(params, customStartFieldName),\r\n 'complete',\r\n );\r\n const end = GetDateOrUndefined(\r\n GetRawValue(params, customEndFieldName),\r\n 'complete',\r\n );\r\n\r\n // set the periodType to CustomDate if either start or end date were provided\r\n // this intended to handle cases where a link to the page is not fully constructed\r\n // e.g. /sompage?start=xxx will be translated to period type=CustomDate, start=xxx\r\n if (isNullOrUndefined(periodType)) {\r\n if (!isNullOrUndefined(start) || !isNullOrUndefined(end)) {\r\n periodType = 'CustomDate';\r\n }\r\n }\r\n\r\n if (periodType === undefined || periodType === null) {\r\n return periodType;\r\n }\r\n\r\n if (periodType === 'CustomDate') {\r\n return PresetDatesRange.Custom(start, end);\r\n } else {\r\n return PresetDatesRange.fromType(periodType, null, null);\r\n }\r\n}\r\n\r\nexport const presetDatesRangeToQueryString =\r\n (periodTypeFieldName, customStartFieldName, customEndFieldName) =>\r\n (value: FilterValueType | undefined) => {\r\n var result = new URLSearchParams();\r\n\r\n if (value === null) {\r\n result.append(periodTypeFieldName, '');\r\n return result;\r\n }\r\n if (value !== null && value !== undefined) {\r\n const type = (value as PresetDatesRange).type?.Id;\r\n const id = (value as PresetDatesRange).type?.Id;\r\n\r\n if (id !== undefined) {\r\n result.append(periodTypeFieldName, id.toString());\r\n if (type === 'CustomDate') {\r\n var start = (value as PresetDatesRange).start;\r\n if (start !== null && start !== undefined) {\r\n result.append(\r\n customStartFieldName,\r\n dateUtils.formatQueryStringDate(start, {\r\n representation:\r\n (start as CustomDate)?.representation ?? 'complete',\r\n }),\r\n );\r\n }\r\n var end = (value as PresetDatesRange).end;\r\n if (end !== null && end !== undefined) {\r\n result.append(\r\n customEndFieldName,\r\n dateUtils.formatQueryStringDate(end, {\r\n representation:\r\n (start as CustomDate)?.representation ?? 'complete',\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\nexport const getDefaultFilterNumberPeriod = (\r\n fieldName: string,\r\n params: URLSearchParams,\r\n): INumbersRange | undefined | null => {\r\n const start = GetNumberOrUndefined(GetRawValue(params, `${fieldName}-min`));\r\n const end = GetNumberOrUndefined(GetRawValue(params, `${fieldName}-max`));\r\n if (start === undefined && end === undefined) {\r\n return undefined;\r\n } else if (start === null && end === null) {\r\n return null;\r\n } else {\r\n return {\r\n start: start ?? null,\r\n end: end ?? null,\r\n };\r\n }\r\n};\r\nexport const NumebersRangeToQueryString =\r\n fieldName => (value: FilterValueType | undefined) => {\r\n var result = new URLSearchParams();\r\n const startFieldName = `${fieldName}-min`;\r\n const endFieldName = `${fieldName}-max`;\r\n if (value === null) {\r\n result.append(startFieldName, '');\r\n result.append(endFieldName, '');\r\n return result;\r\n }\r\n if (value !== null && value !== undefined) {\r\n const start = (value as INumbersRange)?.start;\r\n const end = (value as INumbersRange)?.end;\r\n\r\n result.append(startFieldName, start?.toString() ?? '');\r\n result.append(endFieldName, end?.toString() ?? '');\r\n }\r\n return result;\r\n };\r\nexport const formatQueryStringDateValue: (\r\n fieldName: string,\r\n) => FilterSerializer =\r\n (fieldName: string) => (value: FilterValueType | undefined | null) => {\r\n var result = new URLSearchParams();\r\n if (value === null) {\r\n result.set(fieldName, '');\r\n }\r\n if (\r\n value !== undefined &&\r\n value !== null &&\r\n !isNaN((value as Date)?.getTime?.())\r\n ) {\r\n result.set(\r\n fieldName,\r\n dateUtils.formatQueryStringDate(value as Date, {\r\n representation: 'date',\r\n }),\r\n );\r\n }\r\n return result;\r\n };\r\nfunction serializeValue(value: FilterValueType): string | undefined | null {\r\n try {\r\n if (value === null) {\r\n return null;\r\n }\r\n return typeof value === 'string'\r\n ? value\r\n : typeof value === 'number'\r\n ? value?.toString()\r\n : value instanceof CustomDate\r\n ? dateUtils.formatQueryStringDate(value, {\r\n representation: (value as CustomDate).representation ?? 'date',\r\n })\r\n : value instanceof Date\r\n ? dateUtils.formatQueryStringDate(value)\r\n : (value as Entity)?.Id?.toString();\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport const defaultSerializer: (fieldName: string) => FilterSerializer =\r\n fieldName => value => {\r\n var result = new URLSearchParams();\r\n if (value === null) {\r\n result.set(fieldName, '');\r\n }\r\n if (value !== undefined) {\r\n var stringValue = serializeValue(value);\r\n if (stringValue !== null && stringValue !== undefined) {\r\n result.set(fieldName, stringValue);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\nexport const arrayToQueryString: (fieldName: string) => FilterSerializer =\r\n fieldName => value => {\r\n let result = new URLSearchParams();\r\n if (Array.isArray(value) || value == null) {\r\n let stringValues = value\r\n ?.map(v => serializeValue(v))\r\n .filter(v => v !== undefined);\r\n result.set(fieldName, stringValues?.join('|') ?? '');\r\n }\r\n return result;\r\n };\r\n\r\nexport const arrayByNameEntityNumberToQueryString: (\r\n fieldName: string,\r\n) => FilterSerializer = fieldName => value => {\r\n let result = new URLSearchParams();\r\n if (Array.isArray(value) || value == null) {\r\n let stringValues = value\r\n ?.map(v => (v as Entity)?.Name?.toString())\r\n .filter(v => v !== undefined);\r\n result.set(fieldName, stringValues?.join('|') ?? '');\r\n }\r\n return result;\r\n};\r\nexport const getStringEntityArray = (\r\n params: URLSearchParams,\r\n fieldName: string,\r\n): FilterValueType | undefined => {\r\n let search = GetRawValue(params, fieldName);\r\n if (search === undefined) return undefined;\r\n if (search === null) return null;\r\n let allSearch = splitFilterValue(search).map(v => GetStringOrUndefined(v));\r\n allSearch = allSearch.filter(v => v !== undefined);\r\n if (!allSearch.length) return undefined;\r\n let allEntities = allSearch.map(v => GetPartialEntity(v));\r\n allEntities = allEntities.filter(v => v !== undefined);\r\n if (!allEntities.length) return undefined;\r\n return allEntities as FilterValueType;\r\n};\r\n\r\nexport const getNumberEntityArray = (\r\n params: URLSearchParams,\r\n fieldName: string,\r\n): FilterValueType | undefined => {\r\n let search = GetRawValue(params, fieldName);\r\n return getNumberEntityArrayFromString(search) as FilterValueType;\r\n};\r\nexport const getNumberEntityArrayFromString = (\r\n search: string | undefined | null,\r\n) => {\r\n if (search === undefined) return undefined;\r\n if (search === null) return null;\r\n let allSearch = splitFilterValue(search).map(v => GetNumberOrUndefined(v));\r\n allSearch = allSearch.filter(v => v !== undefined);\r\n if (!allSearch.length) return undefined;\r\n let allEntities = allSearch.map(v => GetPartialEntity(v));\r\n allEntities = allEntities.filter(v => v !== undefined);\r\n if (!allEntities.length) return undefined;\r\n return allEntities;\r\n};\r\n\r\nexport const assetRangeSerializer: (fieldName: string) => FilterSerializer =\r\n (fieldname: string) => value => {\r\n const res = new URLSearchParams();\r\n if (isAssetRangeType(value)) {\r\n res.set(fieldname + 'Val', serializeValue(value.value) ?? '');\r\n res.set(fieldname + 'Type', serializeValue(value.unitType) ?? '');\r\n }\r\n return res;\r\n };\r\n\r\nexport const getAssetRange = (\r\n params: URLSearchParams,\r\n fieldName: string,\r\n): FilterValueType | undefined => {\r\n const val = GetRawValue(params, fieldName + 'Val');\r\n const type = GetRawValue(params, fieldName + 'Type');\r\n if (\r\n valOrNull(val) === null ||\r\n isNaN(parseFloat(val ?? '')) ||\r\n valOrNull(type) === null ||\r\n isNaN(parseInt(type ?? ''))\r\n ) {\r\n return undefined;\r\n }\r\n return {\r\n unitType: { Id: parseInt(type ?? '') },\r\n value: parseFloat(val ?? ''),\r\n } as AssetRangeType;\r\n};\r\nexport const getSplitNumberArray = (search: string): number[] => {\r\n return splitFilterValue(search)\r\n .map(v => {\r\n var number = parseInt(v);\r\n if (isNaN(number)) {\r\n return 0;\r\n }\r\n return number;\r\n })\r\n .filter(f => f > 0);\r\n};\r\nexport const splitFilterValue = (search: string, separator?: string) => {\r\n let x = search.indexOf(separator ?? '|') >= 0 ? separator ?? '|' : ',';\r\n let allSearch = search.split(x);\r\n return allSearch;\r\n};\r\nexport const joinArray = (values: Array, separator?: string) => {\r\n return values.join(separator ?? '|');\r\n};\r\n","import { httpClient } from './HttpClient';\r\nimport { ISettingModel } from 'api/odata/generated/entities/ISettingModel';\r\n\r\nconst SYSTEM_SETTINGS_URL = '/api/odata/v4/SystemSettings';\r\nexport const SettingsApi = {\r\n getAlowedSystemSetting: () => {\r\n return httpClient.get(SYSTEM_SETTINGS_URL);\r\n },\r\n getLoginSystemSettings: () => {\r\n const url = '/api/v3/appsettings/GetLoginSettings';\r\n return httpClient.get(url);\r\n },\r\n getSingleSystemSetting: (id: number) => {\r\n return httpClient.get(SYSTEM_SETTINGS_URL, { key: id });\r\n },\r\n setSystemSetting: (setting: ISettingModel) => {\r\n return httpClient.post(SYSTEM_SETTINGS_URL, setting);\r\n },\r\n};\r\n","import { select } from 'redux-saga/effects';\r\nimport { selectAppSettings, selectIsAuthenticated } from '../selectors';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { ConfigurableTypes, ScreensId } from 'enums/ConfigurableTypes';\r\nimport { GetCachedConfigurableColumnsData } from 'app/components/BasicTable/ConfigurableColumns';\r\nimport { KnownModules } from 'types/KnownModules';\r\n\r\n/**\r\n * Does prefetch for configurable columns for selected table based pages. These should include mostly used/mostly visited ones\r\n */\r\nexport function* doPrefetchConfigurableColumns() {\r\n const settings: AppSettings = yield select(selectAppSettings);\r\n const isAuthenticated: boolean | undefined = yield select(\r\n selectIsAuthenticated,\r\n );\r\n // Ids of the pages (ScreenId enum) and respective required modules\r\n // Some of the pages can be disabled and are not shown so not all of the configurable columns might be needed\r\n const authSet: Array<{ s: ScreensId; m?: KnownModules }> = [\r\n // service groups aka cores directory src\\app\\pages\\CoresDirectoryPage\\index.tsx\r\n { s: ScreensId.CoresDirectory },\r\n // reservation history - C:\\Users\\mikea\\Projects\\bookitlab\\web-ui\\src\\app\\pages\\ReservationHistoryPage\\index.tsx\r\n { s: ScreensId.ReservationHistory },\r\n // user training - src\\app\\pages\\UserTrainingsPage\\index.tsx\r\n { s: ScreensId.UserTraining, m: KnownModules.Instruments },\r\n // training sessions - src\\app\\pages\\TrainingSessionsPage\\index.tsx\r\n {\r\n s: ScreensId.UpcomingTrainingSessions,\r\n m: KnownModules.Instruments,\r\n },\r\n // service requests - src\\app\\pages\\ServiceRequestListPage\\index.tsx\r\n { s: ScreensId.ServiceRequests, m: KnownModules.ServiceRequests },\r\n // my assets / instruments - src\\app\\pages\\MyAssetsPage\\index.tsx\r\n { s: ScreensId.MyAssets },\r\n // work orders aka events aka alerts - src\\app\\pages\\WorkOrdersPage\\index.tsx\r\n { s: ScreensId.Alerts, m: KnownModules.MaintenanceAssets },\r\n ];\r\n const noAuthSet: Array<{ s: ScreensId; m?: KnownModules }> = [\r\n // public assets src\\app\\pages\\PublicAssets\\index.tsx\r\n { s: ScreensId.PublicAssets },\r\n ];\r\n const screens: Array = (isAuthenticated ? authSet : noAuthSet)\r\n .filter(item => item.m === undefined || settings.Modules.includes(item.m))\r\n .map(item => item.s);\r\n // preloads reservations history display columns to get faster to the table data\r\n // does not return anything here, but the fetched data will be already prefetch for the later use elsewhere\r\n screens.map(screenId => {\r\n return GetCachedConfigurableColumnsData(\r\n screenId,\r\n ConfigurableTypes.ColumnScreenConfig,\r\n isAuthenticated,\r\n undefined,\r\n true,\r\n );\r\n });\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { SettingsApi } from 'api/SettingsApi';\r\nimport { internalIdLoginActions } from 'app/pages/Animals/InternalIdLoginPage/slice';\r\nimport { AxiosError } from 'axios';\r\nimport { push, replace } from 'connected-react-router';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport {\r\n call,\r\n put,\r\n takeLatest,\r\n delay,\r\n all,\r\n select,\r\n takeEvery,\r\n takeLeading,\r\n} from 'redux-saga/effects';\r\nimport { AuthenticatedUser, IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { Entity } from 'types/common';\r\nimport { UserProfileSettings } from 'types/UserProfileSettings';\r\nimport { dateUtils, WeekStartsOn } from 'utils/date-utils';\r\nimport { UserProfile } from 'utils/userProfileSettings';\r\nimport { appSettingsActions as actions } from '.';\r\nimport {\r\n selectAllCoresSelectable,\r\n selectAllCoresSelectableCount,\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectBarcodeScanTarget,\r\n selectGlobalSetting,\r\n selectGlobalSettingBool,\r\n selectSystemFirstDayOfWeek,\r\n selectUserProfileSettings,\r\n} from './selectors';\r\nimport {\r\n LoginTypes,\r\n parseBarcode,\r\n SaveUserProfileSettingAction,\r\n ScanTarget,\r\n ScanTemplateResult,\r\n} from './types';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { Location } from 'history';\r\nimport { URLSearchParamsCI } from 'app/components/BasicTable/types/FilterParam';\r\nimport { SavedViewSelected } from 'app/pages/SavedViewsPage/SavedViewPage/slice/types';\r\nimport { BARCODE_SCANNED } from 'react-usb-barcode-scanner';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { IRoomDto } from 'api/odata/generated/entities/IRoomDto';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { eventChannel } from 'redux-saga';\r\nimport { getLogger } from 'utils/logLevel';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { doPrefetchConfigurableColumns } from './workers/doPrefetchConfigurableColumns';\r\nimport { ISettingModel } from 'api/odata/generated/entities/ISettingModel';\r\nimport { setCookieLocale } from 'utils/cookies';\r\nimport { TermsOfUseAgreementApi } from 'api/TermsOfUseAgreementApi';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { IUsers } from 'app/pages/UsersPage/IUsers';\r\nimport { takeLatestByKey } from 'utils/redux-saga';\r\nimport { PUBLIC_ASSETS_PATH } from 'app/pages/PublicAssets/PUBLIC_ASSETS_PATH';\r\n\r\nexport function* getAppSettings(action: PayloadAction) {\r\n const requestURL = '/api/v3/appsettings';\r\n const noAuthURL = '/api/v3/appsettings/NotAuthenticatedSettings';\r\n const url = action.payload ? requestURL : noAuthURL;\r\n try {\r\n const appSettings: AppSettings = yield call(httpClient.get, url);\r\n yield put(actions.appSettingsLoaded(appSettings));\r\n //initialize the locale\r\n yield put(actions.setLocale(appSettings.Globalization.DefaultLocaleId));\r\n // For dev purposes - populate supportedLocales variable which is normally populated on the server side\r\n if (process.env.NODE_ENV === 'development') {\r\n if (appSettings.Globalization.SupportedLocales) {\r\n globalThis.supportedLocales =\r\n appSettings.Globalization.SupportedLocales.map(item => item.Id);\r\n }\r\n }\r\n\r\n if (!action.payload) {\r\n if (\r\n appSettings.noAuthSettings !== undefined &&\r\n appSettings.noAuthSettings !== null\r\n ) {\r\n if (\r\n (appSettings.noAuthSettings as ISettingModel[]).some(\r\n f => f.Id === 'NewUsersSignupForm' && f.Value === 'False',\r\n ) &&\r\n window.location.pathname.toLowerCase().indexOf('registeraccount') >= 0\r\n ) {\r\n window.location.replace(toRootedURL('/login'));\r\n }\r\n\r\n yield put(\r\n actions.loadSystemSettings_Success(appSettings.noAuthSettings),\r\n );\r\n }\r\n }\r\n } catch (err: unknown) {\r\n yield put(\r\n actions.loadError({\r\n message: 'fail -' + (err as AxiosError)?.response?.status,\r\n }),\r\n );\r\n }\r\n}\r\nfunction* getAuthenticatedUser(action: PayloadAction) {\r\n const requestURL = '/api/v3/appsettings/authenticateduser';\r\n try {\r\n const response = yield call(httpClient.get, requestURL);\r\n const user = response as IAuthenticatedUser;\r\n user.LoginType = LoginTypes.Password;\r\n yield put(actions.getAuthenticatedUser_Success(user));\r\n if (user.Roles.indexOf(Roles.LargeAnimalsOperatingRoomTechnician) >= 0) {\r\n yield put(internalIdLoginActions.success(user));\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n const status = (err as AxiosError)?.response?.status;\r\n if (status === 401 || !status || action.payload) {\r\n yield put(actions.setIsAuthenticated(false));\r\n } else {\r\n window.location.replace(toRootedURL('/login'));\r\n }\r\n yield put(actions.getAuthenticatedUser_Error('auth get fail'));\r\n }\r\n}\r\nfunction* doSetIsAuthenticated(action: PayloadAction) {\r\n yield put(actions.IsAuthenticatedChanged(action.payload));\r\n}\r\nfunction* doChangeLanguage(action: PayloadAction) {\r\n if (action.payload === null) {\r\n return;\r\n }\r\n try {\r\n const locale: string = action.payload;\r\n if (locale === undefined) {\r\n return;\r\n }\r\n\r\n const systemFirstDayOfWeek: WeekStartsOn = yield select(\r\n selectSystemFirstDayOfWeek,\r\n );\r\n const authenticatedUser: IAuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n setCookieLocale(locale);\r\n if (!!authenticatedUser && !!authenticatedUser.Id) {\r\n yield all([\r\n call(l => {\r\n i18next.changeLanguage(l);\r\n }, locale),\r\n call(l => dateUtils.setLocale(l, systemFirstDayOfWeek), locale),\r\n call(\r\n httpClient.patch,\r\n `/api/odata/v4/Users/${encodeURIComponent(authenticatedUser.Id)}`,\r\n {\r\n localeId: locale,\r\n },\r\n ),\r\n ]);\r\n } else {\r\n yield all([\r\n call(l => {\r\n i18next.changeLanguage(l);\r\n }, locale),\r\n call(l => dateUtils.setLocale(l, systemFirstDayOfWeek), locale),\r\n ]);\r\n }\r\n } catch (err) {\r\n console.error('setLanguage', err);\r\n }\r\n}\r\nfunction* getSiteMapSource() {\r\n const requestURL = '/api/v3/siteMapSettings';\r\n try {\r\n const siteMap = yield call(httpClient.get, requestURL);\r\n yield put(actions.loadSiteMapSettings_Success(siteMap));\r\n } catch (err) {\r\n yield put(actions.loadSiteMapSettings_Error('site map loding error'));\r\n }\r\n}\r\nfunction* doNavigate(action: PayloadAction) {\r\n if (\r\n typeof action.payload === 'string' &&\r\n action.payload.indexOf('.aspx') > 0\r\n ) {\r\n window.location.href = toRootedURL(action.payload);\r\n } else {\r\n yield put(push(action.payload));\r\n }\r\n}\r\nfunction* getEventsCount() {\r\n const requestURL = '/api/v3/eventsCount';\r\n try {\r\n const count = yield call(httpClient.get, requestURL);\r\n yield put(actions.loadEventsCount_Success(count));\r\n } catch (err) {\r\n yield put(actions.loadEventsCount_Error('events count loading error'));\r\n }\r\n}\r\nfunction* getUserProfileSettings() {\r\n yield delay(500);\r\n const requestURL = '/api/v3/userProfile';\r\n try {\r\n const settings = yield call(httpClient.get, requestURL);\r\n yield put(actions.loadUserProfile_Success(settings));\r\n } catch (err) {\r\n yield put(\r\n actions.loadUserProfile_Error('user profile settings loading error'),\r\n );\r\n }\r\n}\r\nfunction* getSystemSettings() {\r\n yield delay(500);\r\n try {\r\n const settings = yield call(SettingsApi.getAlowedSystemSetting);\r\n yield put(actions.loadSystemSettings_Success(settings));\r\n } catch (err) {\r\n yield put(\r\n actions.loadSystemSettings_Error('user profile settings loading error'),\r\n );\r\n }\r\n}\r\nfunction* getLoginSystemSettings() {\r\n try {\r\n const settings = yield call(SettingsApi.getLoginSystemSettings);\r\n yield put(actions.loadLoginSystemSettings_Success(settings));\r\n } catch (err) {\r\n yield put(\r\n actions.loadLoginSystemSettings_Error('Login settings loading error'),\r\n );\r\n }\r\n}\r\nfunction* updateUserProfileSettings(\r\n action: PayloadAction<{\r\n key: string;\r\n model: UserProfileSettings;\r\n withDelay?: boolean;\r\n }>,\r\n) {\r\n if (action.payload.withDelay) {\r\n yield delay(500);\r\n }\r\n const sett: UserProfile = yield select(selectUserProfileSettings);\r\n let item = sett.GetSettingByKeyOrDefault(\r\n action.payload.key,\r\n ) as UserProfileSettings;\r\n const payload = Object.assign({}, item, action.payload.model);\r\n const requestURL = `/api/v3/userProfile/update?key=${action.payload.key}`;\r\n try {\r\n const data = yield call(httpClient.put, requestURL, payload);\r\n yield put(actions.updateUserProfile_Success(data));\r\n } catch (err) {\r\n yield put(\r\n actions.updateUserProfile_Error('user profile settings loading error'),\r\n );\r\n }\r\n}\r\nfunction* doUpdateExpandedState(action: PayloadAction) {\r\n const sett: UserProfile = yield select(selectUserProfileSettings);\r\n let item = sett.GetSettingByKeyOrDefault(\r\n 'SideBarExpanded',\r\n ) as UserProfileSettings;\r\n const payload = Object.assign({}, item, { Enabled: action.payload });\r\n const requestURL = `/api/v3/userProfile/update?key=SideBarExpanded`;\r\n try {\r\n const data = yield call(httpClient.put, requestURL, payload);\r\n yield put(actions.updateExpandedState_Success(data));\r\n } catch (err) {\r\n yield put(\r\n actions.updateExpandedState_Error('user profile settings loading error'),\r\n );\r\n }\r\n}\r\n// function* doUpdateExpandedState_Local(action: PayloadAction) {\r\n// yield put(actions.setExpandedState_Local(action.payload));\r\n// }\r\nfunction* doLoadGlobalServiceGroupFilter() {\r\n try {\r\n const url = '/api/odata/v4/servicegroups/GetGlobalServiceGroupsFilter';\r\n const params = { $select: 'Id,Name,SidebarQuickAction' };\r\n const data = yield call(httpClient.get, url, params);\r\n yield put(actions.loadGlobalServiceGroupFilter_Success(data.value));\r\n yield* doLoadSpecificServiceGroupFilter();\r\n } catch {\r\n //noop\r\n }\r\n}\r\nfunction* doLoadSpecificServiceGroupFilter() {\r\n try {\r\n const url = '/api/odata/v4/servicegroups/GetSpecificGroupsFilter';\r\n const params = { $select: 'Id,Name,SidebarQuickAction' };\r\n const data = yield call(httpClient.get, url, params);\r\n yield put(actions.loadSpecificServiceGroupFilter_Success(data.value));\r\n } catch {\r\n //noop\r\n }\r\n}\r\nfunction* doLoadAllServiceGroupsSelectable() {\r\n try {\r\n const url = '/api/odata/v4/servicegroups/GetSelectable';\r\n const params = { $count: true, $select: 'Id,Name,SidebarQuickAction' };\r\n const data = yield call(httpClient.get, url, params);\r\n yield put(actions.loadAllServiceGroupsSelectable_Success(data.value));\r\n } catch {\r\n //noop\r\n }\r\n}\r\nfunction* doSaveAllGlobalServiceGroupFilter(action: PayloadAction) {\r\n try {\r\n let allGroups = yield select(selectAllCoresSelectable);\r\n if (!allGroups) {\r\n const url = '/api/odata/v4/servicegroups/GetSelectable';\r\n const params = { $select: 'Id,Name,SidebarQuickAction' };\r\n const data = yield call(httpClient.get, url, params);\r\n allGroups = data.value;\r\n }\r\n\r\n const saveurl = '/api/odata/v4/servicegroups/SetGlobalServiceGroupsFilter';\r\n const savedata = { selection: allGroups.map(f => f.Id) };\r\n yield call(httpClient.post, saveurl, savedata);\r\n yield put(actions.loadGlobalServiceGroupFilter_Success(allGroups));\r\n yield put(\r\n actions.addNotification({\r\n key: 'topServiceGroups',\r\n variant: 'success',\r\n message: `${i18next.t(translations.SwitchedTo)} ${\r\n allGroups[0].Name\r\n } and + ${allGroups.length - 1} more`,\r\n }),\r\n );\r\n } catch {\r\n //noop\r\n }\r\n}\r\nfunction* doSaveGlobalServiceGroupFilter(\r\n action: PayloadAction[]>,\r\n) {\r\n const dashSubMenuDisabled: boolean = yield select(state =>\r\n selectGlobalSettingBool(state, AllowedSettings.HideDashboardSubMenu),\r\n );\r\n const allGroupsCount = yield select(selectAllCoresSelectableCount);\r\n if (!dashSubMenuDisabled && allGroupsCount > action.payload.length) {\r\n yield put(actions.loadSpecificServiceGroupFilter_Success(action.payload));\r\n }\r\n try {\r\n const url = '/api/odata/v4/servicegroups/SetGlobalServiceGroupsFilter';\r\n const data = { selection: action.payload.map(f => f.Id) };\r\n yield call(httpClient.post, url, data);\r\n yield put(actions.loadGlobalServiceGroupFilter_Success(action.payload));\r\n yield getSiteMapSource();\r\n // yield* doLoadSpecificServiceGroupFilter();\r\n if (action.payload.length <= 3) {\r\n yield put(\r\n actions.addNotification({\r\n key: 'topServiceGroups',\r\n variant: 'success',\r\n message: `${i18next.t(translations.SwitchedTo)} ${action.payload\r\n .map(f => f.Name)\r\n .join(', ')}`,\r\n }),\r\n );\r\n } else {\r\n yield put(\r\n actions.addNotification({\r\n key: 'topServiceGroups',\r\n variant: 'success',\r\n message: `${i18next.t(translations.SwitchedTo)} ${\r\n action.payload[0].Name\r\n } and + ${action.payload.length - 1} more`,\r\n }),\r\n );\r\n }\r\n } catch {\r\n //noop\r\n }\r\n}\r\nfunction* doSaveUserProfileSetting(action: SaveUserProfileSettingAction) {\r\n try {\r\n // save the filter in the backend\r\n const url = `/api/v3/userProfile/update`;\r\n const httpPaload: Partial = {\r\n Value: action.payload.Value,\r\n Enabled: action.payload.Enabled,\r\n };\r\n\r\n yield call(httpClient.put, url, httpPaload, {\r\n params: { key: action.payload.Key },\r\n });\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\nfunction* doSaveFilter(\r\n action: PayloadAction<{\r\n key: string;\r\n location: Location;\r\n search: string;\r\n }>,\r\n) {\r\n try {\r\n // push new search to browser history\r\n const search = action.payload.search;\r\n const noChangeInURL = new URLSearchParamsCI(search).equals(\r\n new URLSearchParamsCI(action.payload.location.search),\r\n );\r\n if (!noChangeInURL) {\r\n if (\r\n action.payload.location.search !== search ||\r\n (action.payload.location.search === '' && search === '')\r\n ) {\r\n yield put(\r\n actions.navigate({\r\n search: search,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n const authenticatedUser: AuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n yield* doSaveUserProfileSetting({\r\n type: action.type,\r\n payload: {\r\n Key: action.payload.key,\r\n Value: search.toString(),\r\n UserName: authenticatedUser.Id,\r\n Enabled: true,\r\n },\r\n });\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\n\r\nfunction* doSavePageSize(\r\n action: PayloadAction<{ key: string; value: number }>,\r\n) {\r\n try {\r\n const url = `/api/v3/userProfile/update`;\r\n const httpPaload: Partial = {\r\n Value: action.payload.value.toString(),\r\n };\r\n\r\n yield call(httpClient.put, url, httpPaload, {\r\n params: { key: action.payload.key },\r\n });\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\nfunction* doSaveCardsMode(\r\n action: PayloadAction<{ key: string; value: boolean }>,\r\n) {\r\n try {\r\n const url = `/api/v3/userProfile/update`;\r\n const httpPaload: Partial = {\r\n Value: action.payload.value.toString(),\r\n };\r\n\r\n yield call(httpClient.put, url, httpPaload, {\r\n params: { key: action.payload.key },\r\n });\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\nfunction* doUpdateMyListSelected(\r\n action: PayloadAction,\r\n) {\r\n yield put(actions.updateMyList(action.payload));\r\n}\r\n\r\n/**\r\n * Handle barcode scans\r\n * @param action action raised by barcode scanner middleware\r\n */\r\nfunction* doBarcodeScan(action: PayloadAction<{ data: string }>) {\r\n const MIN_LENGTH_DEFAULT = 6;\r\n const minBarcodeLengthString: string | undefined = yield select(state =>\r\n selectGlobalSetting(state, AllowedSettings.MinBarcodeLength),\r\n );\r\n const internalUserIdLengthString: string | undefined = yield select(state =>\r\n selectGlobalSetting(state, AllowedSettings.InternalUserIdFieldLength),\r\n );\r\n const MinBarcodeLength =\r\n tryParseInt(minBarcodeLengthString) ?? MIN_LENGTH_DEFAULT;\r\n const internalUserIdLength = tryParseInt(internalUserIdLengthString) ?? 0;\r\n // prevent accidental barcode detection on fast user input\r\n if (action.payload.data.length < MinBarcodeLength) {\r\n return;\r\n }\r\n const scannTarget: ScanTarget | undefined = yield select(\r\n selectBarcodeScanTarget,\r\n );\r\n if (scannTarget !== undefined && scannTarget !== ScanTarget.All) {\r\n return;\r\n }\r\n const appSettings: AppSettings = yield select(selectAppSettings);\r\n yield put(\r\n actions.addNotification({\r\n variant: 'info',\r\n message:\r\n i18next.t(translations.BarcodeScanModalBody) +\r\n ' ' +\r\n action.payload.data,\r\n }),\r\n );\r\n try {\r\n // // in case and the barcode is a valid internal url - it should be opened in the current window\r\n // const path = parseBarcodeURL(action, appSettings);\r\n // if (path !== undefined) {\r\n // // perform full navigation since not all target pages are react compatible\r\n // // replace with yeild put(push(path)) when asset details + search are converted to react\r\n // globalThis.window.location.href = toRootedURL(path);\r\n // return;\r\n // }\r\n\r\n // // first lookup room by it's external barcode\r\n // let roomId = yield call(getRoomByExternalBarcode, action.payload.data);\r\n // if (roomId !== undefined) {\r\n // window.location.href = toRootedURL('/Assets/default.aspx', {\r\n // roomid: roomId,\r\n // });\r\n // return;\r\n // }\r\n const internalUserIdScanned =\r\n internalUserIdLength > 0 &&\r\n action.payload.data.length === internalUserIdLength;\r\n if (internalUserIdScanned) {\r\n yield* doScanUser(action);\r\n return;\r\n }\r\n const scanResult = parseBarcode(action.payload.data, appSettings);\r\n if (scanResult === undefined) {\r\n yield put(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.BarcodeNotFoundEx),\r\n }),\r\n );\r\n return;\r\n } else {\r\n switch (scanResult.type) {\r\n case ScanTemplateResult.Asset:\r\n yield put(push(''));\r\n yield put(replace(`Assets/Details?id=${scanResult.InternalCode}`));\r\n return;\r\n case ScanTemplateResult.Internal:\r\n let roomId = yield call(\r\n getRoomByExternalBarcode,\r\n scanResult.InternalCode ?? action.payload.data,\r\n );\r\n if (roomId !== undefined) {\r\n window.location.href = toRootedURL(PUBLIC_ASSETS_PATH, {\r\n roomid: roomId,\r\n });\r\n return;\r\n }\r\n break;\r\n case ScanTemplateResult.External:\r\n console.error(\r\n `${action.type}`,\r\n action.payload,\r\n 'scanned external URL',\r\n );\r\n yield put(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: 'Error: Scanned external URL',\r\n }),\r\n );\r\n return;\r\n }\r\n }\r\n\r\n // TODO: add other barcode lookups below\r\n\r\n yield put(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.BarcodeNotFoundEx),\r\n }),\r\n );\r\n } catch (error) {\r\n console.error(`${action.type}`, action.payload, error);\r\n }\r\n}\r\nfunction* doScanUser(action: PayloadAction<{ data: string }>) {\r\n const barcode = action.payload.data;\r\n const authenticatedUser: AuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const scannedUser = yield call(getScannedUser, barcode);\r\n if (scannedUser === undefined) {\r\n window.location.href = toRootedURL('/Errors/UserInternalIdNotFound.aspx', {\r\n internalId: barcode,\r\n });\r\n return;\r\n } else {\r\n if (authenticatedUser?.isLoanDesk()) {\r\n window.location.href = toRootedURL('/LoanDesk.aspx', {\r\n userId: scannedUser,\r\n });\r\n } else if (authenticatedUser?.isRoomAdmin()) {\r\n window.location.href = toRootedURL('/InstrumentRoom.aspx', {\r\n userId: scannedUser,\r\n });\r\n } else {\r\n window.location.href = toRootedURL('/Users/Profile', {\r\n id: scannedUser,\r\n });\r\n }\r\n return;\r\n }\r\n}\r\nasync function getRoomByExternalBarcode(barcode: string) {\r\n try {\r\n var response: IODataQueryResponse = await httpClient.get(\r\n '/api/odata/v4/rooms',\r\n {\r\n $top: 1,\r\n $select: 'Id',\r\n $filter: new Condition(\r\n 'ExternalBarcode',\r\n ODataOperators.Equals,\r\n barcode,\r\n ).toString(),\r\n },\r\n );\r\n var roomId = response.value[0]?.Id;\r\n return roomId;\r\n } catch (error) {}\r\n}\r\nasync function getScannedUser(barcode: string) {\r\n try {\r\n const response: IODataQueryResponse = await httpClient.get(\r\n '/api/odata/v4/users',\r\n {\r\n $top: 1,\r\n $select: 'Name',\r\n $filter: new Condition(\r\n 'UserInternalId',\r\n ODataOperators.Equals,\r\n barcode,\r\n ).toString(),\r\n },\r\n );\r\n const username = response.value[0]?.Name;\r\n return username;\r\n } catch (error) {}\r\n}\r\n\r\nfunction* handleFullScreenChange() {\r\n const isFullScreen = document.fullscreenElement !== null;\r\n if (isFullScreen) {\r\n yield put(actions.enterFullScreen_Success());\r\n } else {\r\n yield put(actions.exitFullScreen_Success());\r\n }\r\n}\r\nfunction* doEnterFullScreen(action: PayloadAction<{ selector?: string }>) {\r\n const log = getLogger('doEnterFullScreen');\r\n const selector = action.payload.selector;\r\n const x =\r\n selector === undefined\r\n ? document.documentElement\r\n : document.querySelector(selector);\r\n const fullScreenElement = (x ?? document.documentElement) as HTMLElement & {\r\n mozRequestFullScreen(): Promise;\r\n webkitRequestFullscreen(): Promise;\r\n msRequestFullscreen(): Promise;\r\n };\r\n try {\r\n yield call;\r\n if (fullScreenElement.requestFullscreen) {\r\n fullScreenElement.requestFullscreen();\r\n }\r\n if (fullScreenElement.webkitRequestFullscreen) {\r\n fullScreenElement.webkitRequestFullscreen();\r\n }\r\n if (fullScreenElement.mozRequestFullScreen) {\r\n fullScreenElement.mozRequestFullScreen();\r\n }\r\n if (fullScreenElement.msRequestFullscreen) {\r\n fullScreenElement.msRequestFullscreen();\r\n }\r\n\r\n yield put(actions.enterFullScreen_Success());\r\n log.info('Entered FullScreen', fullScreenElement);\r\n } catch (error) {\r\n log.info('Error entering full screen mode', error);\r\n yield put(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: 'Failed to enter full screen mode. ' + String(error),\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doExitFullScreen() {\r\n const fullScreenExitFunction = document as Document & {\r\n mozCancelFullScreen(): Promise;\r\n webkitExitFullscreen(): Promise;\r\n msExitFullscreen(): Promise;\r\n };\r\n if (document.fullscreenElement !== null) {\r\n if (fullScreenExitFunction.exitFullscreen) {\r\n fullScreenExitFunction.exitFullscreen();\r\n } else if (fullScreenExitFunction.mozCancelFullScreen) {\r\n /* Firefox */\r\n fullScreenExitFunction.mozCancelFullScreen();\r\n } else if (fullScreenExitFunction.webkitExitFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n fullScreenExitFunction.webkitExitFullscreen();\r\n } else if (fullScreenExitFunction.msExitFullscreen) {\r\n /* IE/Edge */\r\n fullScreenExitFunction.msExitFullscreen();\r\n }\r\n }\r\n yield put(actions.exitFullScreen_Success());\r\n}\r\nfunction* doSetBarcodeScannigTarget(\r\n action: PayloadAction,\r\n) {\r\n yield put(actions.barcodeScannigTarget_Success(action.payload));\r\n}\r\nfunction* doShowAllCores(action: PayloadAction) {\r\n yield put(actions.setShowAllCores(action.payload));\r\n}\r\nfunction* doCollapseSubBar(action: PayloadAction) {\r\n yield put(actions.setCollapseSubBar(action.payload));\r\n}\r\nfunction* doAgreeTermOfUse(action: PayloadAction) {\r\n try {\r\n const result = yield call(\r\n TermsOfUseAgreementApi.agreeTermsOfUseAgreement,\r\n action.payload,\r\n );\r\n const response = result as IResponseType;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: response.ErrorMessages[0],\r\n }),\r\n );\r\n } else {\r\n yield put(actions.getAuthenticatedUser(false));\r\n yield put(actions.navigate('/dashboards'));\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\n\r\nexport function* getAppSettingsFromSaga() {\r\n yield takeLatest(actions.loadAppSettings.type, getAppSettings);\r\n yield takeLatest(actions.getAuthenticatedUser.type, getAuthenticatedUser);\r\n yield takeLatest(actions.loadSiteMapSettings.type, getSiteMapSource);\r\n yield takeLatest(actions.setLocale.type, doChangeLanguage);\r\n yield takeLatest(actions.loadEventsCount.type, getEventsCount);\r\n yield takeLatest(\r\n actions.loadUserProfileSettings.type,\r\n getUserProfileSettings,\r\n );\r\n yield takeLatestByKey<{\r\n key: string;\r\n model: UserProfileSettings;\r\n withDelay?: boolean;\r\n }>(\r\n actions.updateUserProfileSettings.type,\r\n p => p.key,\r\n updateUserProfileSettings,\r\n );\r\n yield takeLatest(actions.setIsAuthenticated.type, doSetIsAuthenticated);\r\n yield takeLatest(actions.updateExpandedState.type, doUpdateExpandedState);\r\n // yield takeLatest(\r\n // actions.updateExpandedState_Local.type,\r\n // doUpdateExpandedState_Local,\r\n // );\r\n yield takeLatest(actions.navigate.type, doNavigate);\r\n yield takeLatest(\r\n actions.loadGlobalServiceGroupFilter.type,\r\n doLoadGlobalServiceGroupFilter,\r\n );\r\n yield takeLatest(\r\n actions.loadSpecificServiceGroupFilter.type,\r\n doLoadSpecificServiceGroupFilter,\r\n );\r\n yield takeLatest(\r\n actions.saveGlobalServiceGroupFilter.type,\r\n doSaveGlobalServiceGroupFilter,\r\n );\r\n yield takeLatest(\r\n actions.saveAllGlobalServiceGroupFilter.type,\r\n doSaveAllGlobalServiceGroupFilter,\r\n );\r\n\r\n yield takeLatest(\r\n actions.loadAllServiceGroupsSelectable.type,\r\n doLoadAllServiceGroupsSelectable,\r\n );\r\n yield takeLatest(\r\n actions.saveUserProfileSetting.type,\r\n doSaveUserProfileSetting,\r\n );\r\n yield takeLatest(actions.saveFilter.type, doSaveFilter);\r\n yield takeLatest(actions.loadSystemSettings.type, getSystemSettings);\r\n yield takeLatest(\r\n actions.loadLoginSystemSettings.type,\r\n getLoginSystemSettings,\r\n );\r\n // currently prefetch only depends on the modules (appSettings), so it made sense to fire those immediately after the modules availability\r\n yield takeLatest(\r\n actions.appSettingsLoaded.type,\r\n doPrefetchConfigurableColumns,\r\n );\r\n yield takeLatest(actions.savePageSize.type, doSavePageSize);\r\n yield takeLatest(\r\n actions.updateMyListSelected_Local.type,\r\n doUpdateMyListSelected,\r\n );\r\n yield takeLatest(BARCODE_SCANNED, doBarcodeScan);\r\n yield takeLatest(actions.manualScanBarcode, doBarcodeScan);\r\n yield takeLatest(actions.saveCardsMode.type, doSaveCardsMode);\r\n const fullScreenChannel = eventChannel(emitter => {\r\n document.addEventListener('fullscreenchange', emitter);\r\n return () => document.removeEventListener('fullscreenchange', emitter);\r\n });\r\n yield takeEvery(fullScreenChannel, handleFullScreenChange);\r\n yield takeLeading(actions.enterFullScreen, doEnterFullScreen);\r\n yield takeLeading(actions.exitFullScreen, doExitFullScreen);\r\n yield takeLatest(\r\n actions.setBarcodeScannigTarget.type,\r\n doSetBarcodeScannigTarget,\r\n );\r\n yield takeLatest(actions.showAllCores.type, doShowAllCores);\r\n yield takeLatest(actions.collapseSubBar.type, doCollapseSubBar);\r\n yield takeLatest(actions.agreeTermOfUse.type, doAgreeTermOfUse);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { AppSettings, AppSettingsErrorType } from 'types/AppSettings';\r\nimport {\r\n AuthServiceGroupDto,\r\n IAuthenticatedUser,\r\n} from 'types/AuthenticatedUser';\r\nimport { Entity } from 'types/common';\r\nimport { Notification } from 'types/Notification';\r\nimport { SiteMapSettings } from 'types/SiteMapSettings';\r\nimport { UserProfileSettings } from 'types/UserProfileSettings';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { getAppSettingsFromSaga } from './saga';\r\nimport {\r\n AppSettingsState,\r\n LoginSettingsModel,\r\n LoginTypes,\r\n SaveUserProfileSettingAction,\r\n ScanTarget,\r\n} from './types';\r\nimport * as H from 'history';\r\nimport { SavedViewSelected } from 'app/pages/SavedViewsPage/SavedViewPage/slice/types';\r\nimport { getCookieLocale } from 'utils/cookies';\r\nimport { ISettingModel } from 'api/odata/generated/entities/ISettingModel';\r\n\r\nexport const initialState: AppSettingsState = {\r\n error: null,\r\n loadingAppSettings: true,\r\n loadingAuthenticatedUser: false,\r\n loadingSiteMapSettings: false,\r\n loadingEventsCount: false,\r\n loadingUserProfileSettings: false,\r\n appSettings: null,\r\n notifications: [],\r\n siteMapSettings: null,\r\n eventsCount: 0,\r\n userProfileSettings: [],\r\n updatedUserProfileSettings: false,\r\n isExpanded: false,\r\n globalServiceGroupFilter: undefined,\r\n specificServiceGroupFilter: undefined,\r\n showGlobalServiceGroupFilter: false,\r\n allServiceGroupsSelectable: undefined,\r\n systemSettings: [],\r\n loadingSystemSettings: false,\r\n isAuthenticated: undefined,\r\n isFullScreen: false,\r\n showAllCores: false,\r\n subBarCollapsed: undefined,\r\n updatedExpandState: undefined,\r\n skipLocationChanged: undefined,\r\n currentLocaleId: getCookieLocale(),\r\n manualScanProcessing: undefined,\r\n};\r\n\r\nlet notificationsCount = 1;\r\nconst slice = createSlice({\r\n name: 'appSettings',\r\n initialState,\r\n reducers: {\r\n loadAppSettings(state, action: PayloadAction) {\r\n state.loadingAppSettings = true;\r\n },\r\n appSettingsLoaded(state, action: PayloadAction) {\r\n const appSettings = action.payload;\r\n state.appSettings = appSettings;\r\n state.loadingAppSettings = false;\r\n },\r\n loadError(state, action: PayloadAction) {\r\n //TODO: process error state - show feedback?\r\n state.error = action.payload.message;\r\n state.loadingAppSettings = false;\r\n },\r\n getAuthenticatedUser(state, action: PayloadAction) {\r\n state.loadingAuthenticatedUser = true;\r\n state.authenticatedUser = undefined;\r\n },\r\n getAuthenticatedUser_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n const LoginType = LoginTypes.Password;\r\n state.loadingAuthenticatedUser = false;\r\n state.isAuthenticated = true;\r\n state.authenticatedUser = { ...action.payload, LoginType };\r\n },\r\n addNewGroup(state, action: PayloadAction) {\r\n state.authenticatedUser?.AdminServiceGroups?.push(action.payload);\r\n },\r\n getAuthenticatedUser_Error(state, action: PayloadAction) {\r\n state.loadingAuthenticatedUser = false;\r\n state.isAuthenticated = false;\r\n state.authenticatedUser = undefined;\r\n },\r\n setIsAuthenticated(state, action: PayloadAction) {},\r\n IsAuthenticatedChanged(state, action: PayloadAction) {\r\n state.isAuthenticated = action.payload;\r\n },\r\n setLocale(state, action: PayloadAction) {\r\n state.currentLocaleId = action.payload;\r\n },\r\n addNotification(state, action: PayloadAction) {\r\n // remove notification with the same key if exists\r\n const key = action.payload.key ?? notificationsCount++;\r\n const index = state.notifications.findIndex(x => x.key === key);\r\n if (index >= 0) {\r\n state.notifications.splice(index, 1);\r\n }\r\n // add new notification\r\n state.notifications.push({\r\n key: key,\r\n ...action.payload,\r\n });\r\n },\r\n addNotifications(state, action: PayloadAction) {\r\n action.payload.forEach(item =>\r\n state.notifications.push({\r\n key: notificationsCount++,\r\n ...item,\r\n }),\r\n );\r\n },\r\n removeNotification(state, action: PayloadAction) {\r\n const index = state.notifications.findIndex(\r\n x => x.key === action.payload,\r\n );\r\n if (index >= 0) {\r\n state.notifications.splice(index, 1);\r\n }\r\n },\r\n loadSiteMapSettings(state) {\r\n state.loadingSiteMapSettings = true;\r\n },\r\n loadSiteMapSettings_Success(state, action: PayloadAction) {\r\n const siteMap = action.payload;\r\n state.siteMapSettings = siteMap;\r\n state.loadingSiteMapSettings = false;\r\n },\r\n loadSiteMapSettings_Error(state, action: PayloadAction) {\r\n state.error = action.payload;\r\n state.loadingSiteMapSettings = false;\r\n },\r\n saveUserProfileSetting(state, action: SaveUserProfileSettingAction) {\r\n function upsert(array: Array, item: T, keyFn: (T) => string) {\r\n const key = keyFn(item);\r\n const e = array.find(a => keyFn(a) === key);\r\n if (e === undefined) {\r\n return array.push(item);\r\n } else {\r\n Object.assign(e, item);\r\n }\r\n }\r\n upsert(\r\n state.userProfileSettings,\r\n {\r\n ...{\r\n Id: 0,\r\n Name: null,\r\n AdGroup: null,\r\n DefaultGroups: null,\r\n Enabled: true,\r\n IsMultiple: false,\r\n Selected: false,\r\n StaffEnabled: false,\r\n },\r\n ...action.payload,\r\n },\r\n f => f.Key?.toLowerCase(),\r\n );\r\n },\r\n saveFilter(\r\n state,\r\n action: PayloadAction<{\r\n key: string;\r\n location: H.LocationDescriptorObject;\r\n search: string;\r\n }>,\r\n ) {\r\n const itemIndex =\r\n state.userProfileSettings.findIndex(\r\n item => item.Key.toLowerCase() === action.payload.key.toLowerCase(),\r\n ) ?? -1;\r\n if (itemIndex >= 0) {\r\n let updatedItem = state.userProfileSettings.find(\r\n item => item.Key.toLowerCase() === action.payload.key.toLowerCase(),\r\n );\r\n if (!!updatedItem) {\r\n updatedItem.Value = action.payload.search;\r\n state.userProfileSettings.splice(itemIndex, 1);\r\n state.userProfileSettings.push(updatedItem);\r\n }\r\n } else {\r\n let item = {\r\n UserName: state.authenticatedUser?.DisplayName,\r\n Id: 0,\r\n Key: action.payload.key,\r\n Value: action.payload.search,\r\n } as UserProfileSettings;\r\n state.userProfileSettings.push(item);\r\n }\r\n // state.userProfileSettings.forEach(item => {\r\n // if (item.Key.toLowerCase() === action.payload.key.toLowerCase()) {\r\n // Object.assign({}, item, { Value: action.payload.search });\r\n // }\r\n // });\r\n // (\r\n // state.siteMapProvider ?? new SiteMapProvider(state.siteMapSettings)\r\n // ).updatePath(action.payload.location.pathname, action.payload.search);\r\n state.siteMapSettings?.userNodes\r\n .map(f => f.ChildNodes)\r\n .flat()\r\n .forEach(element => {\r\n if (element !== undefined) {\r\n const reactUrl = element.reactUrl;\r\n if (reactUrl !== undefined && reactUrl !== null) {\r\n const elementPath = reactUrl.split('?')[0] ?? reactUrl;\r\n if (elementPath === action.payload.location.pathname) {\r\n element.reactUrl = `${action.payload.location.pathname}?${action.payload.search}`;\r\n element.Url = `${action.payload.location.pathname}?${action.payload.search}`;\r\n }\r\n }\r\n }\r\n });\r\n },\r\n savePageSize(state, action: PayloadAction<{ key: string; value: number }>) {\r\n const itemIndex =\r\n state.userProfileSettings.findIndex(\r\n item => item.Key.toLowerCase() === action.payload.key.toLowerCase(),\r\n ) ?? -1;\r\n if (itemIndex >= 0) {\r\n let updatedItem = state.userProfileSettings.find(\r\n item => item.Key.toLowerCase() === action.payload.key.toLowerCase(),\r\n );\r\n if (!!updatedItem) {\r\n updatedItem.Value = action.payload.value.toString();\r\n state.userProfileSettings.splice(itemIndex, 1);\r\n state.userProfileSettings.push(updatedItem);\r\n }\r\n } else {\r\n let item = {\r\n UserName: state.authenticatedUser?.DisplayName,\r\n Id: 0,\r\n Key: action.payload.key,\r\n Value: action.payload.value.toString(),\r\n } as UserProfileSettings;\r\n state.userProfileSettings.push(item);\r\n }\r\n },\r\n saveCardsMode(\r\n state,\r\n action: PayloadAction<{ key: string; value: boolean }>,\r\n ) {\r\n const itemIndex =\r\n state.userProfileSettings.findIndex(\r\n item => item.Key.toLowerCase() === action.payload.key.toLowerCase(),\r\n ) ?? -1;\r\n if (itemIndex >= 0) {\r\n let updatedItem = state.userProfileSettings.find(\r\n item => item.Key.toLowerCase() === action.payload.key.toLowerCase(),\r\n );\r\n if (!!updatedItem) {\r\n updatedItem.Value = action.payload.value.toString();\r\n state.userProfileSettings.splice(itemIndex, 1);\r\n state.userProfileSettings.push(updatedItem);\r\n }\r\n } else {\r\n let item = {\r\n UserName: state.authenticatedUser?.DisplayName,\r\n Id: 0,\r\n Key: action.payload.key,\r\n Value: action.payload.value.toString(),\r\n } as UserProfileSettings;\r\n state.userProfileSettings.push(item);\r\n }\r\n },\r\n loadEventsCount(state) {\r\n state.loadingEventsCount = true;\r\n },\r\n loadEventsCount_Success(state, action: PayloadAction) {\r\n state.eventsCount = action.payload;\r\n state.loadingEventsCount = false;\r\n },\r\n loadEventsCount_Error(state, action: PayloadAction) {\r\n state.error = action.payload;\r\n state.loadingEventsCount = false;\r\n },\r\n\r\n loadSystemSettings(state) {\r\n state.loadingSystemSettings = true;\r\n },\r\n loadSystemSettings_Success(state, action: PayloadAction) {\r\n let data: any = action.payload;\r\n state.systemSettings = !!data.value\r\n ? (data.value as ISettingModel[])\r\n : (data as ISettingModel[]); /* action.payload; */\r\n state.loadingSystemSettings = false;\r\n },\r\n loadSystemSettings_Error(state, action: PayloadAction) {\r\n state.error = action.payload;\r\n state.loadingSystemSettings = false;\r\n },\r\n\r\n loadLoginSystemSettings(state) {\r\n state.loadingSystemSettings = true;\r\n },\r\n\r\n loadLoginSystemSettings_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n let data: any = action.payload;\r\n data.settings.forEach(s => {\r\n let ss = state.systemSettings.find(f => f.Id === s.Id);\r\n if (ss !== undefined) {\r\n ss.Value = s.Value;\r\n } else {\r\n state.systemSettings.push(s);\r\n }\r\n });\r\n\r\n if (state.appSettings !== null) {\r\n data.Modules.forEach(m => {\r\n if (state.appSettings?.Modules.find(f => f === m) === undefined) {\r\n state.appSettings?.Modules.push(m);\r\n }\r\n });\r\n state.appSettings.LoginScreenCompanyLogo = data.LoginScreenCompanyLogo;\r\n state.appSettings.LoginScreenCompanyLogoLink =\r\n data.LoginScreenCompanyLogoLink;\r\n state.appSettings.LoginScreenCompanyLogoHeight =\r\n data.LoginScreenCompanyLogoHeight;\r\n state.appSettings.ShowForgotPassword = data.ShowForgotPassword;\r\n state.appSettings.Help_Login = data.Help_Login;\r\n } else {\r\n let settings = {} as AppSettings;\r\n settings.LoginScreenCompanyLogo = data.LoginScreenCompanyLogo;\r\n settings.LoginScreenCompanyLogoLink = data.LoginScreenCompanyLogoLink;\r\n settings.LoginScreenCompanyLogoHeight =\r\n data.LoginScreenCompanyLogoHeight;\r\n settings.ShowForgotPassword = data.ShowForgotPassword;\r\n settings.Help_Login = data.Help_Login;\r\n settings.Modules = data.Modules;\r\n settings.WebVersion = data.WebVersion;\r\n settings.LastCodeUpdate = data.LastCodeUpdate;\r\n state.appSettings = settings;\r\n }\r\n state.loadingSystemSettings = false;\r\n },\r\n loadLoginSystemSettings_Error(state, action: PayloadAction) {\r\n state.error = action.payload;\r\n state.loadingSystemSettings = false;\r\n },\r\n\r\n loadUserProfileSettings(state) {\r\n state.loadingUserProfileSettings = true;\r\n },\r\n loadUserProfile_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.userProfileSettings = action.payload;\r\n state.loadingUserProfileSettings = false;\r\n },\r\n loadUserProfile_Error(state, action: PayloadAction) {\r\n state.error = action.payload;\r\n state.loadingUserProfileSettings = false;\r\n },\r\n updateUserProfileSettings(\r\n state,\r\n action: PayloadAction<{ key: string; model: UserProfileSettings }>,\r\n ) {\r\n state.updatedUserProfileSettings = true;\r\n },\r\n updateUserProfile_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.updatedUserProfileSettings = false;\r\n const itemIndex =\r\n state.userProfileSettings.findIndex(\r\n item => item.Key === action.payload.Key,\r\n ) ?? -1;\r\n if (itemIndex >= 0) {\r\n state.userProfileSettings.splice(itemIndex, 1);\r\n state.userProfileSettings.push(action.payload);\r\n } else {\r\n state.userProfileSettings.push(action.payload);\r\n }\r\n },\r\n updateUserProfile_Error(state, action: PayloadAction) {\r\n state.updatedUserProfileSettings = false;\r\n },\r\n updateExpandedState(state, action: PayloadAction) {\r\n state.updatedExpandState = true;\r\n },\r\n updateExpandedState_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.updatedExpandState = false;\r\n const itemIndex =\r\n state.userProfileSettings.findIndex(\r\n item => item.Key === action.payload.Key,\r\n ) ?? -1;\r\n if (itemIndex >= 0) {\r\n state.userProfileSettings.splice(itemIndex, 1);\r\n state.userProfileSettings.push(action.payload);\r\n } else {\r\n state.userProfileSettings.push(action.payload);\r\n }\r\n },\r\n updateExpandedState_Error(state, action: PayloadAction) {\r\n state.updatedExpandState = false;\r\n },\r\n updateExpandedState_Local(state, action: PayloadAction) {\r\n state.isExpanded = action.payload;\r\n },\r\n // setExpandedState_Local(state, action: PayloadAction) {\r\n // state.isExpanded = action.payload;\r\n // },\r\n navigate(\r\n state,\r\n action: PayloadAction>,\r\n ) {},\r\n\r\n showGlobalServiceGroupFilter(state, action: PayloadAction) {\r\n state.showGlobalServiceGroupFilter = action.payload;\r\n },\r\n loadGlobalServiceGroupFilter(state, action: PayloadAction) {},\r\n loadGlobalServiceGroupFilter_Success(\r\n state,\r\n action: PayloadAction[]>,\r\n ) {\r\n state.globalServiceGroupFilter = action.payload;\r\n },\r\n loadSpecificServiceGroupFilter(state, action: PayloadAction) {},\r\n loadSpecificServiceGroupFilter_Success(\r\n state,\r\n action: PayloadAction[]>,\r\n ) {\r\n state.specificServiceGroupFilter = action.payload;\r\n },\r\n saveGlobalServiceGroupFilter(\r\n state,\r\n action: PayloadAction[]>,\r\n ) {\r\n state.globalServiceGroupFilter = action.payload;\r\n },\r\n saveGlobalServiceGroupFilter_Success(\r\n state,\r\n action: PayloadAction[]>,\r\n ) {\r\n state.globalServiceGroupFilter = action.payload;\r\n },\r\n loadAllServiceGroupsSelectable(state, action: PayloadAction) {},\r\n loadAllServiceGroupsSelectable_Success(\r\n state,\r\n action: PayloadAction[]>,\r\n ) {\r\n state.allServiceGroupsSelectable = action.payload;\r\n },\r\n saveAllGlobalServiceGroupFilter(state, action: PayloadAction) {\r\n state.globalServiceGroupFilter = state.allServiceGroupsSelectable;\r\n },\r\n updateMyListSelected_Local(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n console.log('myListSelected', action.payload);\r\n },\r\n updateMyList(state, action: PayloadAction) {\r\n if (state.appSettings !== null) {\r\n // state.appSettings.myListSelected = action.payload;\r\n }\r\n },\r\n enterFullScreen(state, action: PayloadAction<{ selector?: string }>) {},\r\n exitFullScreen(state, action: PayloadAction) {},\r\n enterFullScreen_Success(state, action: PayloadAction) {\r\n state.isFullScreen = true;\r\n },\r\n exitFullScreen_Success(state, action: PayloadAction) {\r\n state.isFullScreen = false;\r\n },\r\n enterFullScreen_Error(\r\n state,\r\n action: PayloadAction<{ selector: string }>,\r\n ) {},\r\n exitFullScreen_Error(state, action: PayloadAction<{ selector: string }>) {},\r\n setBarcodeScannigTarget(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n barcodeScannigTarget_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.barcodeScanTarget = action.payload;\r\n },\r\n barcodeScannigTarget_Error(state, action: PayloadAction) {\r\n state.barcodeScanTarget = undefined;\r\n },\r\n showAllCores(state, action: PayloadAction) {},\r\n setShowAllCores(state, action: PayloadAction) {\r\n state.showAllCores = action.payload;\r\n },\r\n collapseSubBar(state, action: PayloadAction) {},\r\n setCollapseSubBar(state, action: PayloadAction) {\r\n state.subBarCollapsed = action.payload;\r\n },\r\n setSkipLocationChanged(state, action: PayloadAction) {\r\n state.skipLocationChanged = action.payload;\r\n },\r\n //currently used for testing purpose to scan a barcodes, but can be usefull late if need to implement some manuall scanning.\r\n manualScanBarcode(state, action: PayloadAction<{ data: string }>) {},\r\n manualScanBarcode_Success(state, action: PayloadAction) {\r\n state.manualScanProcessing = false;\r\n },\r\n manualScanBarcode_error(state, action: PayloadAction) {\r\n state.manualScanProcessing = false;\r\n },\r\n agreeTermOfUse(state, action: PayloadAction) {},\r\n },\r\n});\r\n\r\nexport const { actions: appSettingsActions } = slice;\r\n\r\nexport const useAppSettingsSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: getAppSettingsFromSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useAppSettingsSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import {\r\n Button as MatButton,\r\n ButtonProps as MatButtonProps,\r\n CircularProgress,\r\n} from '@material-ui/core/index';\r\nimport { capitalize } from 'lodash';\r\nimport * as React from 'react';\r\n// import { generatePath, useHistory } from 'react-router-dom';\r\nimport { IPathAndQuery, toRootedURL } from 'utils/url-utils';\r\nimport clsx from 'clsx';\r\nimport { toLocationDescriptor } from 'app/components/BasicLinks/Link';\r\nimport { useDispatch } from 'react-redux';\r\nimport { withTooltipHook } from 'app/components/BasicTooltips/Hooks/withTooltipHook';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\n//import * as rdd from 'react-device-detect';\r\n\r\nexport type ButtonsVariant =\r\n | 'main'\r\n | 'gray'\r\n | 'accent'\r\n | 'white'\r\n | 'ghost'\r\n | 'ghostColor'\r\n | 'danger'\r\n | 'text'\r\n | 'textGray';\r\nexport interface ButtonProps extends Omit {\r\n processing?: boolean;\r\n /**\r\n * Variants overview:\r\n * main - Regular in figma — main color button, used for CTA (call-to-action) buttons\r\n * white - Secondary White in figma — White button with borders. Used as a button for secondary actions across all application.\r\n * ghost - Ghost Gray in figma — button that in the Resting state looks like a simple text , but it contains internal paddings and color background on hover and focus states\r\n * ghostColor - Ghost Color in figma — button that in the Resting state looks like a link/text button , but it contains internal paddings and color background on hover and focus states\r\n * accent - Accent in figma — Alternative button for the CTA actions, used on the screens that already contain several panels and too many primary buttons. However, this style is now barely used and is candidate to deprecation.\r\n * gray - Secondary Gray in figma — Gray button style that before used in filters. This style is now barely used and is candidate to deprecation.\r\n * danger - Primary Danger in figma — Red filled primary button that is used in the confirmation popups and screens only\r\n * warning - Primary Alert in figma — Alert filled button that is used to warn users on the section when we need to pay attention about some behavior in the component so user should click on it to fix some issue.\r\n * Currntly is used to warn about conflict in the Configurable columns, so user should resolve it.\r\n * text - Text Button in figma - Have similar behavior to Anchor Link.\r\n * textGray - Text Button in figma - The same as text varian only styled as grey text link.\r\n */\r\n variant?: ButtonsVariant;\r\n href?: string | IPathAndQuery;\r\n component?: React.ElementType;\r\n to?: string | IPathAndQuery;\r\n target?: string;\r\n truncateLabel?: 'small' | 'medium' | 'large';\r\n // for WCAG\r\n ariaLabel?: string;\r\n}\r\n\r\nexport const Button = withTooltipHook(\r\n React.forwardRef(\r\n (\r\n {\r\n children,\r\n disabled,\r\n processing,\r\n size = 'medium',\r\n variant = 'main',\r\n href,\r\n component,\r\n title,\r\n to,\r\n truncateLabel,\r\n startIcon,\r\n ariaLabel,\r\n ...props\r\n }: ButtonProps,\r\n ref,\r\n ) => {\r\n //const isSafari = rdd.isSafari || rdd.isIOS;\r\n const dispatch = useDispatch();\r\n const { actions: appActions } = useAppSettingsSlice();\r\n const absolutePath =\r\n href === undefined\r\n ? undefined\r\n : typeof href === 'string'\r\n ? toRootedURL(href)\r\n : toRootedURL(\r\n (href as IPathAndQuery).path,\r\n (href as IPathAndQuery).search,\r\n );\r\n const handleClick = (e: any) => {\r\n if (props.onClick) {\r\n props.onClick(e);\r\n }\r\n if (!!to) {\r\n let toto = typeof to === 'string' ? to : toLocationDescriptor(to);\r\n dispatch(appActions.navigate(toto));\r\n //history.push(toto);\r\n }\r\n };\r\n const truncateClass = React.useMemo(() => {\r\n if (!truncateLabel) return undefined;\r\n switch (truncateLabel) {\r\n case 'small':\r\n return 'truncateSmall';\r\n case 'medium':\r\n return 'truncateMedium';\r\n case 'large':\r\n return 'truncateLarge';\r\n }\r\n }, [truncateLabel]);\r\n const textSizeClass = React.useMemo(() => {\r\n return `textSize${capitalize(size)}`;\r\n }, [size]);\r\n return (\r\n {\r\n handleClick(event);\r\n }}\r\n className={clsx(\r\n props.className,\r\n `variant${capitalize(variant)}${\r\n startIcon !== undefined ? ' hasStartIcon' : ''\r\n }${props.endIcon !== undefined ? ' hasEndIcon' : ''}`,\r\n )}\r\n href={absolutePath}\r\n startIcon={startIcon}\r\n aria-label={ariaLabel ?? title}\r\n {...props}\r\n >\r\n \r\n {children}\r\n \r\n\r\n {processing && }\r\n \r\n );\r\n },\r\n ),\r\n);\r\n// const WithTitle = React.forwardRef(\r\n// (\r\n// {\r\n// children,\r\n// title,\r\n// }: { children: React.ReactNode; title?: React.ReactChild },\r\n// ref,\r\n// ) =>\r\n// !!title ? (\r\n// \r\n// {children}\r\n// \r\n// ) : (\r\n// <>{children}\r\n// ),\r\n// );\r\n","import { trimEnd, trimStart } from 'lodash';\r\nimport * as H from 'history';\r\nimport { URLSearchParamsCI } from 'app/components/BasicTable/types/FilterParam';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectPublicUrl } from 'app/slice/selectors';\r\nimport fileDownload from 'js-file-download';\r\nimport axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport { ITimeZone } from 'types/AppSettings';\r\n\r\nconst PATH_SEPARATOR = '/';\r\nconst ASP_ROOT = '~';\r\nexport function isAbsoluteURL(urlString: string): boolean {\r\n const lowered = urlString.toLowerCase();\r\n return ['http://', 'https://'].some(schema => lowered.startsWith(schema));\r\n}\r\nfunction isRooted(path: string): boolean {\r\n return path.toLowerCase().startsWith(process.env.PUBLIC_URL.toLowerCase());\r\n}\r\nfunction tryCleanASPRoot(path: string): string {\r\n return path.startsWith(ASP_ROOT) ? path.replace(ASP_ROOT, '') : path;\r\n}\r\nexport function combine(basePath: string, path: string): string {\r\n var result =\r\n trimEnd(basePath, PATH_SEPARATOR) +\r\n PATH_SEPARATOR +\r\n trimStart(path, PATH_SEPARATOR);\r\n return result;\r\n}\r\n\r\n/**\r\n * convert relative path to host rooted, e.g. /reservations -> /bkt_webApp/reservations\r\n * @param path\r\n * @returns url usable in an href attribute\r\n */\r\nexport function toRootedURL(path: string, query?: Record): string {\r\n const cpath = tryCleanASPRoot(path);\r\n const alreadyRoot = isAbsoluteURL(cpath) || isRooted(cpath);\r\n const rootedpath = alreadyRoot\r\n ? cpath\r\n : combine(process.env.PUBLIC_URL, cpath);\r\n const fullPath =\r\n query === undefined ? rootedpath : `${rootedpath}?${toQueryString(query)}`;\r\n return fullPath;\r\n}\r\n\r\n/**\r\n * Converts Record values to string and add to URLSearchParams\r\n * @param p object representation of query string\r\n * @returns URLSearchParams\r\n */\r\nexport function toQueryString(p: Record): URLSearchParams {\r\n var result = new URLSearchParams();\r\n Object.entries(p)\r\n .filter(([key, value]) => value !== undefined)\r\n .forEach(([key, value]) => {\r\n result.append(key, value);\r\n });\r\n return result;\r\n}\r\n\r\nexport function buildURL(path: string, params: Record): string {\r\n var result = [toRootedURL(path), '?', toQueryString(params)].join('');\r\n return result;\r\n}\r\nexport function toRelative(root: URL, url: URL) {\r\n if (root.origin !== url.origin) {\r\n return undefined;\r\n }\r\n if (!url.pathname.toLowerCase().startsWith(root.pathname.toLowerCase())) {\r\n throw new Error('External path found.');\r\n }\r\n const rootPath = appendTrailingSlash(root.pathname);\r\n const pathStart = url.pathname.substr(rootPath.length - 1);\r\n const result = pathStart + url.search + url.hash;\r\n return result;\r\n}\r\nexport function appendTrailingSlash(pathname: string) {\r\n return pathname + (pathname.endsWith('/') ? '' : '/');\r\n}\r\nexport function removeLeadingSlash(pathname: string) {\r\n if (pathname.startsWith('/')) {\r\n return pathname.substring(1);\r\n } else {\r\n return pathname;\r\n }\r\n}\r\n\r\n/**\r\n * Provides absoluteURL (e.g. https://foo.bar/baz?foo) given the usual path & search parameters that can be shared/copied\r\n * @param path target pathName\r\n * @param params search parameters\r\n * @returns absolute url\r\n */\r\nexport function useAbsolute(path?: string, toPath?: string) {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n if (toPath !== undefined) {\r\n path = toPath;\r\n }\r\n if (publicUrl === undefined) {\r\n return undefined;\r\n }\r\n if (path === undefined) {\r\n return undefined;\r\n }\r\n if (isAbsoluteURL(path)) {\r\n return path;\r\n }\r\n\r\n var baseURL = new URL(publicUrl);\r\n var targetURL = new URL(removeLeadingSlash(path), baseURL);\r\n return targetURL.toString();\r\n}\r\n\r\n/**\r\n * Converts odata api parameters to export query string\r\n * @param params odata api parameters\r\n * @returns\r\n */\r\nexport function getExportParameters(params: Record) {\r\n const result = {\r\n ...params,\r\n $format: 'application/xlsx',\r\n };\r\n delete result['$count'];\r\n delete result['$top'];\r\n delete result['$skip'];\r\n delete result['$orderby'];\r\n return result;\r\n}\r\nexport function getExportForImportParameters(params: Record) {\r\n const result = { ...params };\r\n delete result['$count'];\r\n delete result['$top'];\r\n delete result['$skip'];\r\n delete result['$orderby'];\r\n return result;\r\n}\r\nexport function openExportLinkOld(\r\n path: string,\r\n params?: Record,\r\n): void {\r\n const url = toRootedURL(path, params);\r\n window.open(url, '_blank');\r\n}\r\n\r\nexport async function openExportLink(\r\n path: string,\r\n params?: Record,\r\n tz?: ITimeZone,\r\n post?: boolean,\r\n): Promise {\r\n return new Promise(async resolve => {\r\n const url = path.replace(process.env.PUBLIC_URL, '');\r\n let reqParams: AxiosRequestConfig = {\r\n responseType: 'blob',\r\n timeout: undefined,\r\n params: post === true ? undefined : params,\r\n };\r\n if (!!tz) {\r\n Object.assign({}, reqParams, { headers: { 'X-TimeZone': tz?.Iana } });\r\n }\r\n try {\r\n let response;\r\n if (post === true) {\r\n response = await axios.post(url, params, reqParams);\r\n } else {\r\n response = await axios.get(url, reqParams);\r\n }\r\n const cd = response.headers['content-disposition'];\r\n const filename: string =\r\n cd !== undefined ? cd.split('filename=')[1] : 'ExportFile.xlsx';\r\n fileDownload(response.data, filename);\r\n } catch (error: unknown) {\r\n console.debug(error);\r\n }\r\n resolve();\r\n });\r\n}\r\n\r\nexport const odataUrlPrefix = '/api/odata/v4/';\r\n\r\nexport type IPathAndQuery = { path: string; search: Record };\r\n\r\nexport function getReturnURL(\r\n location: H.Location,\r\n defaultReturnURL: string = '/',\r\n): string {\r\n try {\r\n const params = new URLSearchParamsCI(location.search);\r\n const returnURLKey = 'returnURL';\r\n const value = params.get(returnURLKey);\r\n return value ?? defaultReturnURL;\r\n } catch (error) {\r\n return defaultReturnURL;\r\n }\r\n}\r\n\r\n/**\r\n * Pipes content-disposition=attachments download links through client side\r\n * @param props\r\n */\r\nexport async function downloadFile(props: {\r\n path: string;\r\n defaultFileName?: string;\r\n}) {\r\n const response = await axios.get(props.path, {\r\n timeout: 60 * 60 * 1000,\r\n responseType: 'blob',\r\n });\r\n const cd = response.headers['content-disposition'];\r\n const [, filename] = cd?.split('=');\r\n fileDownload(\r\n response.data,\r\n decodeURIComponent(filename ?? props.defaultFileName),\r\n );\r\n}\r\n\r\nexport const getFileName = (result: AxiosResponse, defaultName?: string) => {\r\n const cd = result.headers['content-disposition'];\r\n const [, filename] = cd?.split('=');\r\n return filename ?? defaultName;\r\n};\r\n","/**\r\n *\r\n * auto generated interface for Default.Roles\r\n *\r\n */\r\n\r\nexport enum Roles {\r\n Administrators = 1,\r\n GroupAdministrators = 2,\r\n InstituteCoord = 3,\r\n HeadOfLab = 4,\r\n CagesAdministrators = 5,\r\n LabTech = 6,\r\n FinAdmin = 7,\r\n RepAdmin = 8,\r\n InventoryAdmin = 9,\r\n UserGroupCoord = 10,\r\n InstrumentEventsAdmin = 11,\r\n GroupBudgetsAdmin = 12,\r\n CalendarOnly = 13,\r\n Readonly = 14,\r\n LoanDeskManager = 15,\r\n EquipmentAdministrator = 16,\r\n UserInquiryAdmin = 17,\r\n ModelAdmin = 18,\r\n RoomOnly = 19,\r\n InvoicesReader = 20,\r\n KioskAdmin = 21,\r\n CustomRole = 22,\r\n BudgetAdmin = 23,\r\n GroupAdminAffiliated = 24,\r\n AnimalAdmin = 25,\r\n LargeAnimalsOperatingRoomUser = 26,\r\n LargeAnimalsOperatingRoomTechnician = 27,\r\n LargeAnimalsOperatingRoomVeterinarian = 28,\r\n CoreBudgetsAdmin = 29,\r\n ConsumableKiosk = 30,\r\n CreateNewAssetsAdmin = 31,\r\n ServiceGroupBudgetsAdmin = 32,\r\n}\r\nexport type RolesUnion = keyof typeof Roles;\r\nexport const RolesUnionArray: Array = [\r\n 'Administrators',\r\n 'GroupAdministrators',\r\n 'InstituteCoord',\r\n 'HeadOfLab',\r\n 'CagesAdministrators',\r\n 'LabTech',\r\n 'FinAdmin',\r\n 'RepAdmin',\r\n 'InventoryAdmin',\r\n 'UserGroupCoord',\r\n 'InstrumentEventsAdmin',\r\n 'GroupBudgetsAdmin',\r\n 'CalendarOnly',\r\n 'Readonly',\r\n 'LoanDeskManager',\r\n 'EquipmentAdministrator',\r\n 'UserInquiryAdmin',\r\n 'ModelAdmin',\r\n 'RoomOnly',\r\n 'InvoicesReader',\r\n 'KioskAdmin',\r\n 'CustomRole',\r\n 'BudgetAdmin',\r\n 'GroupAdminAffiliated',\r\n 'AnimalAdmin',\r\n 'LargeAnimalsOperatingRoomUser',\r\n 'LargeAnimalsOperatingRoomTechnician',\r\n 'LargeAnimalsOperatingRoomVeterinarian',\r\n 'CoreBudgetsAdmin',\r\n 'ConsumableKiosk',\r\n 'CreateNewAssetsAdmin',\r\n 'ServiceGroupBudgetsAdmin',\r\n];\r\n","import { LocationDetailsProps } from 'app/pages/LocationsPage/Details';\r\nimport { AssetPopUpProps } from 'app/pages/AssetPopUp';\r\nimport { QuizDetailsProps } from 'app/pages/QuizDetailsPage/QuizDetails';\r\nimport { StartQuizProps } from 'app/pages/QuizPage/StartQuiz';\r\nimport { TrainingDetailsProps } from 'app/pages/UserTrainings/TrainingDetailsPage/Details';\r\nimport { WorkOrderDetailsProps } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details';\r\nimport { PaymentProps } from 'app/pages/AddPaymentPage';\r\nimport { ChargeProps } from 'app/pages/AddChargePage';\r\nimport { BillingActionsDetailsProps } from 'app/pages/BillingActions/BillingActionsDetailsPage/Details';\r\nimport { SavedViewDetailsProps } from 'app/pages/SavedViewsPage/SavedViewPage/Details';\r\nimport { InstrumentRestrictionsProps } from 'app/pages/InstrumentRestrictionsPage/Details/InstrumentRestrictions';\r\nimport { ReservationDetailsProps } from 'app/pages/ReservationDetails/Details';\r\nimport { InvoiceTemplatePopUpProps } from 'app/pages/InvoiceTemplates/InvoiceTemplatePopUp';\r\nimport { OtherServiceDetailsProps } from 'app/pages/OtherServiceDetails/Details';\r\nimport { PricePeriodDetailsProps } from 'app/pages/PriceSheetPeriodDetails/Details';\r\nimport { CoreSelectionProps } from 'app/pages/CoreSelectionPage/CoreSelection';\r\nimport { AssetsSelectionProps } from 'app/pages/MyAssetsPage/AssetsSelection/AssetsSelection';\r\nimport { UserAttributesDetailsProps } from 'app/pages/UserAttributes/UserAttributesDetailsPage/Details';\r\nimport { ServiceRequestDetailsProps } from 'app/pages/Samples/RequestSamplesPage';\r\nimport { CalendarMessagesDetailsProps } from 'app/pages/CalendarMessages/CalendarMessagesDetails/Details';\r\nimport { ReportConsumablesProps } from 'app/pages/OtherServiceDetails/ReportConsumables';\r\nimport { ServiceRequestTicketDetailsProps } from 'app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails';\r\nimport { ServiceRequestMilestoneDetailsProps } from 'app/pages/Samples/components/ServiceRequestMilestoneDetails';\r\nimport { ServiceRequestMilestoneChargeDetailsProps } from 'app/pages/Samples/components/ServiceRequestMilestoneChargeDetails';\r\nimport { StockRenewalProps } from 'app/pages/OtherServiceDetails/StockRenewal';\r\nimport { RenewStockProps } from 'app/pages/OtherServiceDetails/RenewStock';\r\nimport { InventoryBatchProps } from 'app/pages/OtherServiceDetails/InventoryBatch';\r\nimport { InvoiceBatchesCommentsProps } from 'app/pages/InvoiceBatches/InvoiceBatchesComments';\r\nimport { InventoryLogProps } from 'app/pages/AssetsInventoryLog/InventoryLog';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { ArticleAssociationFormProps } from 'app/pages/ArticlesPage/ArticleAssociationForm';\r\nimport { RequestStatusesDetailsProps } from 'app/pages/RequestStatuses/RequestStatusesDetailsPage/Details';\r\nimport { RegionDetailsProps } from 'app/pages/Regions/RegionsDetailsPage/Details';\r\nimport { MultipleReservationsProps } from 'app/pages/ReservationDetails/Details/MultipleReservations';\r\nimport { SignUpWaitingListDetailsProps } from 'app/pages/ReservationWaitingListPage/SignUpWaitingListDetails';\r\nimport { InvoiceDetailsProps } from 'app/pages/InvoiceDetails';\r\nimport { SamplePlatesDetailsProps } from 'app/pages/Samples/SamplePlatesDetailsPage/Details';\r\nimport { AssetFileProps } from 'app/pages/AssetFile';\r\nimport { UsageDetailsProps } from 'app/pages/UsageDetails/Details';\r\nimport { UserDetailsProps } from 'app/pages/UserDetails/Details';\r\nimport { SubscribersDetailsProps } from 'app/pages/SubscribersDetailsPage/Details';\r\nimport { CostCentersDetailsProps } from 'app/pages/CostCentersDetailsPage/Details';\r\nimport { OfflineTypeReferencesDetailsProps } from 'app/pages/OfflineTypeReferencesDetails/Details';\r\nimport { OfflineTypeReferencesPopUpProps } from 'app/pages/OfflineTypeReferencesPage/OfflineTypeReferencesPopUp';\r\nimport { CustomFormPreviewProps } from 'app/pages/CustomFormPreviewPage/CustomFormPreview';\r\n\r\nexport interface LayoutState {\r\n sidePanelState: SidePanelState;\r\n confirmState: ConfirmState;\r\n continueState: ContinueState;\r\n hasAnyNotSavedChanges: boolean;\r\n doRefreshTable: boolean;\r\n hideNavigation?: boolean;\r\n actionTableProcessing?: ProcessingData;\r\n upsnackbarIndex?: boolean;\r\n isMobileView?: boolean;\r\n adminPanelState: AdminPanelState;\r\n}\r\nexport interface SidePanelState {\r\n sidePanelOpen: boolean;\r\n pageType?: RenderPageType;\r\n pageProps?: PageTypeProps;\r\n expanded: boolean;\r\n coverOpen?: boolean;\r\n coverExpanded?: boolean;\r\n}\r\nexport interface ConfirmState {\r\n confirmOpen: boolean;\r\n approved: boolean;\r\n rejected: boolean;\r\n showLocalConfirm: boolean;\r\n continueToLink?: string;\r\n}\r\nexport interface ContinueState {\r\n pageType?: RenderPageType;\r\n pageProps?: PageTypeProps;\r\n expanded?: boolean;\r\n continueOnApprove: boolean;\r\n}\r\nexport interface AdminPanelState {\r\n adminPanelOpen: boolean;\r\n url?: string | IPathAndQuery;\r\n}\r\nexport interface ProcessingData {\r\n name: string;\r\n processing: boolean;\r\n}\r\nexport enum RenderPageType {\r\n TrainingDetails,\r\n QuizCreate,\r\n QuizzDetails,\r\n LocationDetails,\r\n AssetDetails,\r\n WorkOrderDetails,\r\n AddPayment,\r\n AddCharge,\r\n InvoiceDetails,\r\n AddBillingAction,\r\n SavedViewDetails,\r\n LabelType,\r\n LabelTypeEdit,\r\n OtherServiceDetails,\r\n RestrictionDetails,\r\n InvoiceTemplatePopUp,\r\n ReservationDetails,\r\n PricePeriodsDetails,\r\n Article,\r\n CoreSelection,\r\n AssetsSelection,\r\n ArticleNew,\r\n ArticleEdit,\r\n UserAttributesDetails,\r\n ServiceRequestDetails,\r\n CalendarMessagesDetails,\r\n ReportConsumables,\r\n ServiceRequestTicketDetails,\r\n ServiceRequestMilestone,\r\n ServiceRequestMilestoneCharge,\r\n StockRenewal,\r\n RenewStock,\r\n InventoryBatch,\r\n InvoiceBatchesComments,\r\n AssetInventoryLog,\r\n ArticleForm,\r\n RequestStatusesDetails,\r\n RegionDetails,\r\n MultiReservations,\r\n SignUpWaitingListDetails,\r\n SamplePlatesDetails,\r\n AssetFile,\r\n UsageDetails,\r\n UserProfile,\r\n SubscribersDetails,\r\n CostCentersDetails,\r\n OfflineTypeRefs,\r\n OfflineTypeRefDetails,\r\n CustomFormPreview,\r\n}\r\nexport interface SidePanelContentProps {\r\n useSidePanel: boolean;\r\n}\r\nexport type PageTypeProps =\r\n | TrainingDetailsProps\r\n | StartQuizProps\r\n | QuizDetailsProps\r\n | LocationDetailsProps\r\n | AssetPopUpProps\r\n | WorkOrderDetailsProps\r\n | PaymentProps\r\n | ChargeProps\r\n | InvoiceDetailsProps\r\n | BillingActionsDetailsProps\r\n | SavedViewDetailsProps\r\n | InvoiceTemplatePopUpProps\r\n | OtherServiceDetailsProps\r\n | InstrumentRestrictionsProps\r\n | ReservationDetailsProps\r\n | PricePeriodDetailsProps\r\n | CoreSelectionProps\r\n | AssetsSelectionProps\r\n | UserAttributesDetailsProps\r\n | ServiceRequestDetailsProps\r\n | ServiceRequestTicketDetailsProps\r\n | ReportConsumablesProps\r\n | CalendarMessagesDetailsProps\r\n | ServiceRequestMilestoneDetailsProps\r\n | ServiceRequestMilestoneChargeDetailsProps\r\n | StockRenewalProps\r\n | RenewStockProps\r\n | InventoryBatchProps\r\n | InvoiceBatchesCommentsProps\r\n | InventoryLogProps\r\n | ArticleAssociationFormProps\r\n | RequestStatusesDetailsProps\r\n | RegionDetailsProps\r\n | MultipleReservationsProps\r\n | SignUpWaitingListDetailsProps\r\n | SamplePlatesDetailsProps\r\n | AssetFileProps\r\n | UsageDetailsProps\r\n | UserDetailsProps\r\n | SubscribersDetailsProps\r\n | CostCentersDetailsProps\r\n | OfflineTypeReferencesDetailsProps\r\n | OfflineTypeReferencesPopUpProps\r\n | CustomFormPreviewProps;\r\n","import React, { lazy, Suspense } from 'react';\r\n\r\ninterface Opts {\r\n fallback: React.ReactNode;\r\n}\r\ntype Unpromisify = T extends Promise ? P : never;\r\n\r\nexport const lazyLoad = <\r\n T extends Promise,\r\n U extends React.ComponentType,\r\n>(\r\n importFunc: () => T,\r\n selectorFunc?: (s: Unpromisify) => U,\r\n opts: Opts = { fallback: null },\r\n) => {\r\n let lazyFactory: () => Promise<{ default: U }> = importFunc;\r\n\r\n if (selectorFunc) {\r\n lazyFactory = () =>\r\n importFunc().then(module => ({ default: selectorFunc(module) }));\r\n }\r\n\r\n const LazyComponent = lazy(lazyFactory);\r\n\r\n return (props: React.ComponentProps): JSX.Element => (\r\n \r\n \r\n \r\n );\r\n};\r\n","import BasicTypography, { BasicTypographyProps } from './BasicTypography';\r\n\r\nexport function H1(props: BasicTypographyProps) {\r\n const { children, ...other } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport function H2(props: BasicTypographyProps) {\r\n const { children, ...other } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport function H3(props: BasicTypographyProps) {\r\n const { children, ...other } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport function H4(props: BasicTypographyProps) {\r\n const { children, ...other } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport interface SubTitleProps extends BasicTypographyProps {\r\n size?: 'small' | 'medium';\r\n children: React.ReactNode;\r\n}\r\nexport function SubTitle(props: SubTitleProps) {\r\n const { size, children, ...other } = props;\r\n const subtitleVarian = size === 'small' ? 'subtitle2' : 'subtitle1';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport interface BodyProps extends BasicTypographyProps {\r\n size?: 'small' | 'medium' | 'large';\r\n bold?: boolean;\r\n children: React.ReactNode;\r\n}\r\nexport function Body(props: BodyProps) {\r\n const { size, bold, children, ...other } = props;\r\n const bodyVarian =\r\n size === 'large'\r\n ? bold\r\n ? 'boldL'\r\n : 'bodyL'\r\n : size === 'small'\r\n ? bold\r\n ? 'boldS'\r\n : 'bodyS'\r\n : bold\r\n ? 'boldM'\r\n : 'bodyM';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport interface CaptionProps extends BasicTypographyProps {\r\n bold?: boolean;\r\n children: React.ReactNode;\r\n}\r\nexport function Caption(props: CaptionProps) {\r\n const { bold, children, ...other } = props;\r\n const captionVarian = bold ? 'captionBold' : 'captionRegular';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport interface UppercaseProps extends BasicTypographyProps {\r\n children: React.ReactNode;\r\n}\r\nexport function Uppercase(props: UppercaseProps) {\r\n const { children, ...other } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport interface TipsProps extends BasicTypographyProps {\r\n bold?: boolean;\r\n children: React.ReactNode;\r\n}\r\nexport function Tips(props: TipsProps) {\r\n const { bold, children, ...other } = props;\r\n const tipsVarian = bold ? 'tipsBold' : 'tipsRegular';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport interface InputLabelProps extends BasicTypographyProps {\r\n size?: 'xs' | 'medium';\r\n children: React.ReactNode;\r\n}\r\nexport function InputLabel(props: InputLabelProps) {\r\n const { size, children, ...other } = props;\r\n const inputLabelVarian = size === 'xs' ? 'inputLabelXS' : 'inputLabelM';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nexport interface InputValueProps extends BasicTypographyProps {\r\n size?: 'small' | 'medium';\r\n children: React.ReactNode;\r\n}\r\nexport function InputValue(props: InputValueProps) {\r\n const { size, children, ...other } = props;\r\n const inputValueVarian = size === 'small' ? 'inputValueS' : 'inputValueM';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport interface ButtonLabelProps extends BasicTypographyProps {\r\n size?: 'small' | 'medium';\r\n children: React.ReactNode;\r\n}\r\nexport function ButtonLabel(props: ButtonLabelProps) {\r\n const { size, children, ...other } = props;\r\n const buttonLabeVarian = size === 'small' ? 'buttonS' : 'buttonM';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { delay, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { layoutActions as actions } from '.';\r\nimport { PageTypeProps, RenderPageType } from './type';\r\nimport {\r\n selectAdminPanelOpen,\r\n selectHasNotSavedChanges,\r\n selectSidePanelOpen,\r\n} from './selectors';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\n\r\n// export function* doInitSidePanel() {\r\n// yield put(actions.initLayoutState());\r\n// }\r\nexport function* doOpenSidePanel(\r\n action: PayloadAction<{\r\n type: RenderPageType | undefined;\r\n props: PageTypeProps | undefined;\r\n expanded: boolean | undefined;\r\n noDelay?: boolean;\r\n }>,\r\n) {\r\n const isChangesNotSaved: boolean = yield select(selectHasNotSavedChanges);\r\n const sidePanelOpen: boolean = yield select(selectSidePanelOpen);\r\n if (isChangesNotSaved) {\r\n yield put(\r\n actions.setContinueState({\r\n type: action.payload.type,\r\n props: action.payload.props,\r\n expanded: action.payload.expanded,\r\n continue: true,\r\n }),\r\n );\r\n yield put(actions.setConfirmOpen(true));\r\n } else {\r\n if (sidePanelOpen) {\r\n yield put(actions.resetSidePanel(true));\r\n if (!action.payload.noDelay) {\r\n yield delay(200);\r\n }\r\n yield put(\r\n actions.setTuggleOpenState({\r\n expanded: !!action.payload.expanded,\r\n type: action.payload.type,\r\n props: action.payload.props,\r\n open: true,\r\n }),\r\n );\r\n } else {\r\n yield put(\r\n actions.setTuggleOpenState({\r\n expanded: !!action.payload.expanded,\r\n type: action.payload.type,\r\n props: action.payload.props,\r\n open: true,\r\n }),\r\n );\r\n }\r\n }\r\n}\r\nexport function* doOpenAdminPanel(\r\n action: PayloadAction<{\r\n url: string | IPathAndQuery;\r\n }>,\r\n) {\r\n const adminPanelOpen: boolean = yield select(selectAdminPanelOpen);\r\n if (adminPanelOpen) {\r\n yield put(actions.resetAdminPanel(true));\r\n yield delay(100);\r\n yield put(actions.setAdminPanelUrl(action.payload.url));\r\n } else {\r\n yield put(actions.setAdminPanelUrl(action.payload.url));\r\n yield put(actions.setAdminPanelOpen(true));\r\n }\r\n}\r\nexport function* layoutSaga() {\r\n yield takeLatest(actions.openSidePanel.type, doOpenSidePanel);\r\n yield takeLatest(actions.openAdminPanel.type, doOpenAdminPanel);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { layoutSaga } from './saga';\r\nimport {\r\n LayoutState,\r\n PageTypeProps,\r\n ProcessingData,\r\n RenderPageType,\r\n} from './type';\r\n\r\nconst initialSidPanelState = {\r\n sidePanelOpen: false,\r\n pageType: undefined,\r\n pageProps: undefined,\r\n expanded: false,\r\n coverOpen: false,\r\n coverExpanded: false,\r\n};\r\nexport const initialState: LayoutState = {\r\n sidePanelState: initialSidPanelState,\r\n confirmState: {\r\n confirmOpen: false,\r\n approved: false,\r\n rejected: false,\r\n showLocalConfirm: false,\r\n continueToLink: undefined,\r\n },\r\n hasAnyNotSavedChanges: false,\r\n doRefreshTable: false,\r\n continueState: {\r\n continueOnApprove: false,\r\n pageProps: undefined,\r\n pageType: undefined,\r\n expanded: undefined,\r\n },\r\n hideNavigation: undefined,\r\n actionTableProcessing: undefined,\r\n upsnackbarIndex: undefined,\r\n isMobileView: undefined,\r\n adminPanelState: {\r\n adminPanelOpen: false,\r\n url: undefined,\r\n },\r\n};\r\nexport interface IOpenSidePanelPayload {\r\n type: RenderPageType | undefined;\r\n props: PageTypeProps | undefined;\r\n expanded?: boolean;\r\n noDelay?: boolean;\r\n}\r\n\r\nconst slice = createSlice({\r\n name: 'layout',\r\n initialState,\r\n reducers: {\r\n toggleSidePanel(state, action: PayloadAction) {\r\n state.sidePanelState.sidePanelOpen = action.payload;\r\n },\r\n openSidePanel(state, action: PayloadAction) {},\r\n closeSidePanel(state, action: PayloadAction) {\r\n state.sidePanelState = initialSidPanelState;\r\n },\r\n setTuggleOpenState(\r\n state,\r\n action: PayloadAction<{\r\n expanded: boolean;\r\n type: RenderPageType | undefined;\r\n props: PageTypeProps | undefined;\r\n open: boolean;\r\n }>,\r\n ) {\r\n state.sidePanelState.expanded = action.payload.expanded;\r\n state.sidePanelState.pageProps = action.payload.props;\r\n state.sidePanelState.pageType = action.payload.type;\r\n state.sidePanelState.sidePanelOpen = action.payload.open;\r\n },\r\n setPageType(state, action: PayloadAction) {\r\n state.sidePanelState.pageType = action.payload;\r\n },\r\n setPageProps(state, action: PayloadAction) {\r\n state.sidePanelState.pageProps = action.payload;\r\n },\r\n setExpanded(state, action: PayloadAction) {\r\n state.sidePanelState.expanded = action.payload;\r\n },\r\n resetSidePanel(state, action: PayloadAction) {\r\n state.sidePanelState.sidePanelOpen = action.payload || false;\r\n state.sidePanelState.pageProps = undefined;\r\n state.sidePanelState.pageType = undefined;\r\n state.sidePanelState.expanded = false;\r\n state.sidePanelState.coverExpanded = undefined;\r\n state.sidePanelState.coverOpen = undefined;\r\n state.confirmState = {\r\n confirmOpen: false,\r\n approved: false,\r\n rejected: false,\r\n showLocalConfirm: false,\r\n continueToLink: undefined,\r\n };\r\n state.hasAnyNotSavedChanges = false;\r\n state.upsnackbarIndex = undefined;\r\n },\r\n setConfirmOpen(state, action: PayloadAction) {\r\n state.confirmState.confirmOpen = action.payload;\r\n },\r\n resetConfirmState(state, action: PayloadAction) {\r\n state.confirmState = {\r\n confirmOpen: false,\r\n approved: false,\r\n rejected: false,\r\n showLocalConfirm: false,\r\n continueToLink: undefined,\r\n };\r\n },\r\n setConfirmApproved(state, action: PayloadAction) {\r\n state.confirmState.approved = action.payload;\r\n },\r\n setConfirmRejected(state, action: PayloadAction) {\r\n state.confirmState.rejected = action.payload;\r\n },\r\n setContinueToLink(state, action: PayloadAction) {\r\n state.confirmState.continueToLink = action.payload;\r\n },\r\n setNotSavedChanges(state, action: PayloadAction) {\r\n state.hasAnyNotSavedChanges = action.payload;\r\n },\r\n setRefreshTable(state, action: PayloadAction) {\r\n state.doRefreshTable = action.payload;\r\n },\r\n setActionTableProcessing(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.actionTableProcessing = action.payload;\r\n },\r\n setLocalConfirm(state, action: PayloadAction) {\r\n state.confirmState.showLocalConfirm = action.payload;\r\n },\r\n setContinueOnApprove(state, action: PayloadAction) {\r\n state.continueState.continueOnApprove = action.payload;\r\n },\r\n setHideNavigation(state, action: PayloadAction) {\r\n state.hideNavigation = action.payload;\r\n },\r\n setContinueState(\r\n state,\r\n action: PayloadAction<{\r\n type: RenderPageType | undefined;\r\n props: PageTypeProps | undefined;\r\n expanded: boolean | undefined;\r\n continue: boolean;\r\n }>,\r\n ) {\r\n state.continueState.continueOnApprove = action.payload.continue;\r\n state.continueState.pageProps = action.payload.props;\r\n state.continueState.pageType = action.payload.type;\r\n state.continueState.expanded = action.payload.expanded;\r\n },\r\n resetContinueState(state, action: PayloadAction) {\r\n state.continueState = {\r\n continueOnApprove: false,\r\n pageProps: undefined,\r\n pageType: undefined,\r\n expanded: undefined,\r\n };\r\n },\r\n setUpSnackBarIndex(state, action: PayloadAction) {\r\n state.upsnackbarIndex = action.payload;\r\n },\r\n setIsMobileView(state, action: PayloadAction) {\r\n state.isMobileView = action.payload;\r\n },\r\n setIsCoverOpen(state, action: PayloadAction) {\r\n state.sidePanelState.coverOpen = action.payload;\r\n },\r\n setIsCoverExpanded(state, action: PayloadAction) {\r\n state.sidePanelState.coverExpanded = action.payload;\r\n },\r\n openAdminPanel(\r\n state,\r\n action: PayloadAction<{ url: string | IPathAndQuery }>,\r\n ) {},\r\n resetAdminPanel(state, action: PayloadAction) {\r\n state.adminPanelState.adminPanelOpen = action.payload || false;\r\n state.adminPanelState.url = undefined;\r\n },\r\n setAdminPanelUrl(state, action: PayloadAction) {\r\n state.adminPanelState.url = action.payload;\r\n },\r\n setAdminPanelOpen(state, action: PayloadAction) {\r\n state.adminPanelState.adminPanelOpen = action.payload || false;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: layoutActions } = slice;\r\n\r\nexport const useLayoutSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: layoutSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'types/RootState';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => {\r\n return state.layout || initialState;\r\n};\r\nexport const selectSidePanelState = createSelector(\r\n [selectSlice],\r\n state => state.sidePanelState,\r\n);\r\nexport const selectSidePanelOpen = createSelector(\r\n [selectSlice],\r\n state => state.sidePanelState.sidePanelOpen,\r\n);\r\nexport const selectPageType = createSelector(\r\n [selectSlice],\r\n state => state.sidePanelState.pageType,\r\n);\r\nexport const selectExpandedSidePanel = createSelector(\r\n [selectSlice],\r\n state => state.sidePanelState.expanded,\r\n);\r\nexport const selectPageTypeProps = createSelector(\r\n [selectSlice],\r\n state => state.sidePanelState.pageProps,\r\n);\r\nexport const selectConfirmState = createSelector(\r\n [selectSlice],\r\n state => state.confirmState,\r\n);\r\nexport const selectConfirmOpen = createSelector(\r\n [selectSlice],\r\n state => state.confirmState.confirmOpen,\r\n);\r\nexport const selectConfirmApproved = createSelector(\r\n [selectSlice],\r\n state => state.confirmState.approved,\r\n);\r\nexport const selectConfirmRejected = createSelector(\r\n [selectSlice],\r\n state => state.confirmState.rejected,\r\n);\r\nexport const selectHasNotSavedChanges = createSelector(\r\n [selectSlice],\r\n state => state.hasAnyNotSavedChanges,\r\n);\r\nexport const selectDoRefreshTable = createSelector(\r\n [selectSlice],\r\n state => state.doRefreshTable,\r\n);\r\nexport const selectShowLocalConfirm = createSelector(\r\n [selectSlice],\r\n state => state.confirmState.showLocalConfirm,\r\n);\r\nexport const selectContinueOnApprove = createSelector(\r\n [selectSlice],\r\n state => state.continueState.continueOnApprove,\r\n);\r\nexport const selectContinueState = createSelector(\r\n [selectSlice],\r\n state => state.continueState,\r\n);\r\nexport const selectContinueToLink = createSelector(\r\n [selectSlice],\r\n state => state.confirmState.continueToLink,\r\n);\r\nexport const selectHideNavigation = createSelector(\r\n [selectSlice],\r\n state => state.hideNavigation,\r\n);\r\nexport const selectSnackBarIndex = createSelector(\r\n [selectSlice],\r\n state => state.upsnackbarIndex,\r\n);\r\nexport const selectIsMobileView = createSelector(\r\n [selectSlice],\r\n state => state.isMobileView,\r\n);\r\nexport const selectActionTableProcessing = createSelector(\r\n [selectSlice],\r\n state => state.actionTableProcessing,\r\n);\r\nexport const selectProcessingIndicator = createSelector(\r\n [selectActionTableProcessing],\r\n processing => (methodName: string) => {\r\n if (processing === undefined) {\r\n return undefined;\r\n } else if (methodName === processing.name) {\r\n return processing.processing;\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n);\r\nexport const selectIsCoverOpen = createSelector(\r\n [selectSidePanelState],\r\n state => state.coverOpen,\r\n);\r\nexport const selectIsCoverExpanded = createSelector(\r\n [selectSidePanelState],\r\n state => state.coverExpanded,\r\n);\r\nexport const selectAdminPanelOpen = createSelector(\r\n [selectSlice],\r\n state => state.adminPanelState.adminPanelOpen,\r\n);\r\nexport const selectAdminPanelUrl = createSelector(\r\n [selectSlice],\r\n state => state.adminPanelState.url,\r\n);\r\n","import * as React from 'react';\r\nimport {\r\n IconButton as MatIconButton,\r\n IconButtonProps as MatIconButtonProps,\r\n} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport { IPathAndQuery, toRootedURL } from 'utils/url-utils';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { IconProp } from 'app/AllIcons';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { capitalize } from 'lodash';\r\nimport { ButtonsVariant } from '../Button';\r\nimport { RouterLink } from 'app/components/BasicLinks/RouterLink';\r\nimport { ExternalLink } from 'app/components/ExternalLink';\r\nimport { withTooltipHook } from 'app/components/BasicTooltips/Hooks/withTooltipHook';\r\n\r\nexport interface IconButtonPropsBase\r\n extends Omit {\r\n disabled?: boolean;\r\n children?: React.ReactNode;\r\n href?: string | IPathAndQuery;\r\n to?: string | IPathAndQuery;\r\n target?: string;\r\n icon?: IconProp;\r\n // for WCAG\r\n ariaLabel?: string;\r\n}\r\nexport interface IPrimaryIconStyleThemeProps {\r\n size?: 'large' | 'medium' | 'small' | 'xs';\r\n variant?: ButtonsVariant;\r\n shape?: 'circle' | 'square';\r\n absolutePosition?: 'small' | 'medium' | 'large';\r\n}\r\nexport type IconButtonProps = IconButtonPropsBase & IPrimaryIconStyleThemeProps;\r\n\r\nexport const IconButton = withTooltipHook(\r\n React.forwardRef(function IconButton(\r\n props: IconButtonProps,\r\n ref: React.ForwardedRef,\r\n ) {\r\n const {\r\n children,\r\n disabled,\r\n size = 'small',\r\n variant = 'ghost',\r\n shape = 'square',\r\n href,\r\n to,\r\n title,\r\n target,\r\n icon,\r\n className,\r\n absolutePosition,\r\n ariaLabel,\r\n ...other\r\n } = props;\r\n\r\n const absolutePath =\r\n href === undefined\r\n ? undefined\r\n : typeof href === 'string'\r\n ? toRootedURL(href)\r\n : toRootedURL(\r\n (href as IPathAndQuery).path,\r\n (href as IPathAndQuery).search,\r\n );\r\n return (\r\n \r\n {!!children ? children : }\r\n \r\n );\r\n }),\r\n);\r\n\r\nexport function WithTitle({\r\n children,\r\n title,\r\n}: React.PropsWithChildren<{\r\n title?: string;\r\n}>) {\r\n if (title) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n } else {\r\n return <>{children};\r\n }\r\n}\r\n","import { Identifiable } from 'types/common';\r\n\r\nexport function isNullOrUndefined(\r\n value: T | null | undefined,\r\n): value is null | undefined {\r\n return value === null || value === undefined;\r\n}\r\n\r\nexport function isEmptyOrWhitespace(s: string | null | undefined): boolean {\r\n return s === null || s === undefined || s === '' || s.trim() === '';\r\n}\r\nexport function toUndefinedIfEmptyOrWhitespace(s: string | null | undefined) {\r\n return isEmptyOrWhitespace(s) ? undefined : s;\r\n}\r\nexport function toLowerCaseSafely(s: string | null | undefined): string | null {\r\n return s === null || s === undefined ? null : s.toLowerCase();\r\n}\r\n\r\nexport const valOrNull = (val: T | undefined | null) => {\r\n return val ?? null;\r\n};\r\n\r\n//for use in filter to mark all as not undefined\r\nexport const notUndefined = (val: T | undefined): val is T => {\r\n return val !== undefined;\r\n};\r\n\r\nexport type PartialExceptId> = Pick &\r\n Partial>;\r\n\r\nexport function toNumberOrNull(value: any): number | null {\r\n if (value === null || value === undefined) {\r\n return null;\r\n }\r\n if (typeof value === 'string') {\r\n if (isNaN(parseInt(value))) {\r\n return null;\r\n } else {\r\n return parseInt(value);\r\n }\r\n } else if (typeof value === 'number') {\r\n return value;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function hasStringProperty

(\r\n entity: any,\r\n propName: P,\r\n): entity is Record {\r\n return (\r\n propName in entity &&\r\n entity[propName] !== undefined &&\r\n entity[propName] !== null &&\r\n typeof entity[propName] === 'string'\r\n );\r\n}\r\nexport function toIdentifiable(value: T): Identifiable {\r\n return { Id: value };\r\n}\r\nexport function toIdentifiableArray(values: T[]): Identifiable[] {\r\n return values.map(value => toIdentifiable(value));\r\n}\r\n","export enum UserAttributeEnum {\r\n UserName = 1,\r\n DisplayName = 2,\r\n Password = 3,\r\n UserGroup = 4,\r\n Mobile = 5,\r\n OfficeTel = 6,\r\n Email = 7,\r\n UserInternalId = 8,\r\n Degree = 9,\r\n Locked = 10,\r\n PoBox = 11,\r\n Title = 12,\r\n HomeTel = 13,\r\n Company = 14,\r\n PostalCode = 15,\r\n Province = 16,\r\n Country = 17,\r\n Address = 18,\r\n PostalAddress = 19,\r\n Discipline = 20,\r\n AD = 21,\r\n Department = 22,\r\n Institute = 23,\r\n RegisteredToCore = 24,\r\n UploadImage = 25,\r\n TempPassword = 26,\r\n InstituteType = 27,\r\n UserInternalId2 = 28,\r\n LastLogin = 29,\r\n RestrictedMobileNumber = 30,\r\n LastActivityDate = 31,\r\n ConfirmPassword = 32,\r\n OfficeLocation = 33,\r\n Advisor = 34,\r\n YearInDegree = 35,\r\n Image = 36,\r\n Manager = 37,\r\n ORCID = 38,\r\n}\r\n","import { BudgetFields } from 'enums/BudgetFields';\r\nimport { AssetAttributes } from 'enums/AssetAttributes';\r\nimport { KnownModules } from './KnownModules';\r\nimport { Entity } from './common';\r\nimport { ImageSize } from 'app/components/AssetThumbImage/getAssetImageSrc';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { AvailabilityTypes } from 'api/odata/generated/enums/AvailabilityTypes';\r\nimport { ISettingModel } from 'api/odata/generated/entities/ISettingModel';\r\nimport { UserAttributeEnum } from 'enums/UserAttributesEnum';\r\nimport { IUserAttributesDto } from 'api/odata/generated/entities/IUserAttributesDto';\r\nimport { UserScreenType } from 'app/pages/UserDetails/Details/typeUtils';\r\nimport { AllowedSettings, GlobalSettings } from 'utils/globalSettings';\r\n\r\nexport enum EnumAssetTypes {\r\n Equipment,\r\n TrainingProgram,\r\n LectureRoom,\r\n ServiceGroup,\r\n SuperGroup,\r\n Request,\r\n OfflineService,\r\n NotAvailable,\r\n}\r\nexport interface AppSettings {\r\n Globalization: CultureInfoModel;\r\n Modules: KnownModules[];\r\n UserInternalIdLength: number | null;\r\n InternalUserId2FieldLength: number | null;\r\n WebVersion: string;\r\n LastCodeUpdate: Date;\r\n UserGroupsProviderType: number;\r\n AssetFieldSettings: Record;\r\n UserFieldSettings: Record;\r\n PublicBaseUrl: string;\r\n UploadFileSizeLimit: number;\r\n MinimizedBookitlabLogo: boolean;\r\n ForbiddenFileExtensions: string[];\r\n BudgetFieldSettings: {\r\n BudgetField: BudgetFields;\r\n Disabled: Boolean;\r\n }[];\r\n TimeZone: ITimeZone;\r\n SettingTimeZones: Entity[];\r\n AssetBarcodeUrlTemplate: string;\r\n AssetBarcodeRelativeUrlTemplate: string;\r\n RoomBarcodeUrlTemplate: string;\r\n RoomBarcodeRelativeUrlTemplate: string;\r\n LocationBarcodeUrlTemplate: string;\r\n LocationBarcodeRelativeUrlTemplate: string;\r\n SubLocationBarcodeUrlTemplate: string;\r\n SubLocationBarcodeRelativeUrlTemplate: string;\r\n SamplePlateBarcodeUrlTemplate: string;\r\n SamplePlateBarcodeRelativeUrlTemplate: string;\r\n ConsumableTypeBarcodeUrlTemplate: string;\r\n ConsumableTypeBarcodeRelativeUrlTemplate: string;\r\n RequiredUserProps: string[];\r\n HideUserProps: string[];\r\n DefaultRegistrationGroup: Entity | null;\r\n UserRegistersToSpecificCores: number;\r\n TopCustomerLogoLink: string;\r\n TopCustomerLogo: string;\r\n FavIconImg: string;\r\n FavIconTitle: string;\r\n DTUOrbitWebServiceEnabled: boolean;\r\n PubMedWebServiceEnabled: boolean;\r\n EmailFromAddress: string;\r\n ShowRawErrors: boolean;\r\n ExistingImages: string[];\r\n Help_Login: string | null;\r\n LoginScreenCompanyLogoLink: string;\r\n LoginScreenCompanyLogo: string;\r\n LoginScreenCompanyLogoHeight: string;\r\n ShowForgotPassword: boolean;\r\n AdvancedAssetPublicSearchFilterAttributes: string;\r\n BrowseByUnitBy: number;\r\n noAuthSettings?: ISettingModel[] | null;\r\n LdapEnabled: boolean;\r\n IsBookitLabSupport: boolean;\r\n OnlineBudgetsEnabled: boolean;\r\n}\r\n\r\ntype Continent =\r\n | 'Africa'\r\n | 'America'\r\n | 'Antarctica'\r\n | 'Arctic'\r\n | 'Asia'\r\n | 'Atlantic'\r\n | 'Australia'\r\n | 'Europe'\r\n | 'Indian'\r\n | 'and'\r\n | 'Pacific';\r\n\r\nexport interface ITimeZone {\r\n Id: string;\r\n StandardName: string;\r\n TimezoneOffsetMinutes: number;\r\n DisplayName: string;\r\n Iana: `${Continent}/${string}`;\r\n}\r\n\r\nexport function IsBudgetFieldEnabled(\r\n setting: AppSettings | null,\r\n BudgetField: BudgetFields,\r\n): boolean {\r\n if (!!setting && setting.BudgetFieldSettings) {\r\n var result = setting.BudgetFieldSettings.find(bf => {\r\n return bf.BudgetField === BudgetField;\r\n });\r\n return result !== undefined ? result.Disabled === false : true;\r\n }\r\n return false;\r\n}\r\n\r\nexport interface CultureInfoModel {\r\n Locale: string;\r\n SupportedLocales: Array>;\r\n DefaultLocaleId: string;\r\n FirstDayOfWeek: number;\r\n UseAmPm: boolean;\r\n}\r\n\r\nexport interface AppSettingsErrorType {\r\n message: string;\r\n}\r\nexport function IsModuleEnabled(\r\n setting: AppSettings | null,\r\n module: KnownModules,\r\n): boolean {\r\n if (!!setting && setting.Modules) {\r\n return setting?.Modules.includes(module);\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsUsageEnabled(\r\n setting: AppSettings | null,\r\n globalSettings: GlobalSettings,\r\n): boolean {\r\n const knownModules = setting?.Modules;\r\n const RoomUserRoleEnabled = globalSettings.GetBooleanByKey(\r\n AllowedSettings.RoomUserRoleEnabled,\r\n );\r\n return (\r\n knownModules?.includes(KnownModules.LocalApp) ||\r\n knownModules?.includes(KnownModules.Relay) ||\r\n knownModules?.includes(KnownModules.IpRelay) ||\r\n knownModules?.includes(KnownModules.WebRelayTm) ||\r\n knownModules?.includes(KnownModules.WebRelayX600m) ||\r\n knownModules?.includes(KnownModules.UsageForm) ||\r\n knownModules?.includes(KnownModules.LoanDesk) ||\r\n knownModules?.includes(KnownModules.DoorAccess) ||\r\n knownModules?.includes(KnownModules.NiDAQmx) ||\r\n knownModules?.includes(KnownModules.KmTronicRelay) ||\r\n knownModules?.includes(KnownModules.RaspberryPi) ||\r\n RoomUserRoleEnabled\r\n );\r\n}\r\n\r\nexport function IsAssetFieldEnabled(\r\n setting: AppSettings | null,\r\n AssetField: AssetAttributes,\r\n AssetAvailabilityType?: AssetTypes,\r\n): boolean {\r\n if (!!setting && setting.AssetFieldSettings && AssetField !== undefined) {\r\n const s = setting.AssetFieldSettings[AssetAttributes[AssetField]];\r\n if (s !== undefined) {\r\n if (AssetAvailabilityType !== undefined) {\r\n const id = EnumAssetTypes[AssetAvailabilityType];\r\n return s.AssetTypes.includes(id);\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsAssetFieldRequired(\r\n setting: AppSettings | null,\r\n AssetField: AssetAttributes,\r\n AssetAvailabilityType?: AssetTypes,\r\n): boolean {\r\n if (!setting?.AssetFieldSettings || AssetField === undefined) return false;\r\n const s: IAssetAttributeSettingDto =\r\n setting.AssetFieldSettings[AssetAttributes[AssetField]];\r\n if (s === undefined) return false;\r\n if (AssetAvailabilityType !== undefined) {\r\n return s.RequiredAssetTypes.includes(EnumAssetTypes[AssetAvailabilityType]);\r\n }\r\n return false;\r\n}\r\nexport function IsAssetFieldIsPublic(\r\n setting: AppSettings | null,\r\n AssetField: AssetAttributes,\r\n AssetAvailabilityType?: AssetTypes,\r\n): boolean {\r\n if (!!setting && setting.AssetFieldSettings && AssetField !== undefined) {\r\n const s = setting.AssetFieldSettings[AssetAttributes[AssetField]];\r\n if (s !== undefined) {\r\n if (AssetAvailabilityType !== undefined) {\r\n const id = EnumAssetTypes[AssetAvailabilityType];\r\n return s.AssetTypes.includes(id) && s.IsPublic === true;\r\n } else {\r\n return s.IsPublic === true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nexport function IsAssetImageExist(\r\n settings: AppSettings | null,\r\n imageName: string | null,\r\n imageSize?: ImageSize,\r\n) {\r\n if (\r\n imageName === null ||\r\n settings === null ||\r\n !settings.ExistingImages ||\r\n (!!settings.ExistingImages && settings.ExistingImages.length < 1)\r\n ) {\r\n return false;\r\n }\r\n let result = false;\r\n result =\r\n !!settings.ExistingImages &&\r\n settings.ExistingImages.length > 0 &&\r\n settings.ExistingImages.some(f => f === imageName);\r\n // switch (imageSize) {\r\n // case 'full':\r\n // result =\r\n\r\n // break;\r\n // case 'thumb':\r\n // result =\r\n // !!settings.ExistingImages.ThumbImages &&\r\n // settings.ExistingImages.ThumbImages.length > 0 &&\r\n // settings.ExistingImages.ThumbImages.some(f => f === imageName);\r\n // break;\r\n // case 'vertical':\r\n // result =\r\n // !!settings.ExistingImages.CardVerticalImages &&\r\n // settings.ExistingImages.CardVerticalImages.length > 0 &&\r\n // settings.ExistingImages.CardVerticalImages.some(f => f === imageName);\r\n // break;\r\n // case 'horizontal':\r\n // result =\r\n // !!settings.ExistingImages.CardHorizontalImages &&\r\n // settings.ExistingImages.CardHorizontalImages.length > 0 &&\r\n // settings.ExistingImages.CardHorizontalImages.some(f => f === imageName);\r\n // break;\r\n // default:\r\n // result = false;\r\n // }\r\n return result;\r\n}\r\nexport function IsUserFieldEnabled(\r\n setting: AppSettings | null,\r\n UserField: UserAttributeEnum,\r\n type?: UserScreenType,\r\n): boolean {\r\n if (!!setting && setting.UserFieldSettings && UserField !== undefined) {\r\n const s = setting.UserFieldSettings[UserAttributeEnum[UserField]];\r\n if (s !== undefined) {\r\n if (type !== undefined) {\r\n return s[type] === true && s.Disabled !== true;\r\n }\r\n return s.Disabled !== true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsUserFieldRequired(\r\n setting: AppSettings | null,\r\n UserField: UserAttributeEnum,\r\n type?: UserScreenType,\r\n): boolean {\r\n if (!!setting && setting.UserFieldSettings && UserField !== undefined) {\r\n const s = setting.UserFieldSettings[UserAttributeEnum[UserField]];\r\n if (s !== undefined) {\r\n if (type !== undefined) {\r\n return s[type] === true && s.Mandatory === true && s.Disabled !== true;\r\n }\r\n return s.Mandatory === true && s.Disabled !== true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function getOffsetDate(\r\n settings: AppSettings | null,\r\n date: Date | string | undefined | null,\r\n) {\r\n const systemOffset = settings?.TimeZone?.TimezoneOffsetMinutes ?? 0;\r\n let correctDate =\r\n date === null || date === undefined\r\n ? dateUtils.dateOrStringToDate(new Date())\r\n : dateUtils.dateOrStringToDate(date);\r\n const currentDateOffset = correctDate.getTimezoneOffset();\r\n const dateOrNow = dateUtils.addMinutes(\r\n correctDate,\r\n systemOffset + currentDateOffset,\r\n );\r\n return dateOrNow;\r\n}\r\n\r\nexport function GetAssetTypeFrom(\r\n availability: AvailabilityTypes,\r\n): AssetTypes | undefined {\r\n switch (availability) {\r\n case AvailabilityTypes.NotAvailable:\r\n case AvailabilityTypes.AvailableNotBookable:\r\n return 'NotAvailable';\r\n case AvailabilityTypes.FreelyBookable:\r\n case AvailabilityTypes.BookableWApproval:\r\n case AvailabilityTypes.LoanableEquipment:\r\n return 'Equipment';\r\n case AvailabilityTypes.ServiceRelated:\r\n return 'OfflineService';\r\n case AvailabilityTypes.ServiceGroup:\r\n return 'ServiceGroup';\r\n case AvailabilityTypes.SuperGroup:\r\n return 'SuperGroup';\r\n case AvailabilityTypes.RequestRelated:\r\n return 'Request';\r\n case AvailabilityTypes.TrainingProgram:\r\n return 'TrainingProgram';\r\n case AvailabilityTypes.LectureRoom:\r\n return 'LectureRoom';\r\n default:\r\n return;\r\n }\r\n}\r\n\r\nexport type AssetTypes =\r\n | 'Equipment'\r\n | 'TrainingProgram'\r\n | 'LectureRoom'\r\n | 'ServiceGroup'\r\n | 'SuperGroup'\r\n | 'Request'\r\n | 'OfflineService'\r\n | 'NotAvailable';\r\nexport interface IAssetAttributeSettingDto {\r\n Name: string;\r\n AssetTypes: Array;\r\n RequiredAssetTypes: Array;\r\n AssetCats: Array;\r\n IsPublic: boolean;\r\n Enabled: boolean;\r\n DisplayName: string;\r\n Order: number;\r\n}\r\n","import { ISettingModel } from 'api/odata/generated/entities/ISettingModel';\r\nimport { EnumType } from 'typescript';\r\nimport { AllowedSettings } from './AllowedSettings';\r\n\r\nexport class GlobalSettings {\r\n settings: ISettingModel[];\r\n constructor(sett: ISettingModel[]) {\r\n this.settings = sett;\r\n }\r\n public TryGet(key: string): string | null {\r\n if (this.settings.length > 0) {\r\n let obj = this.settings.find((value, index) => value.Id === key);\r\n return obj === undefined ? null : obj.Value;\r\n } else {\r\n return null;\r\n }\r\n }\r\n //please dont forget to add key of the setting to the allowed list of the enum AllowedSettings\r\n public GetString(key: AllowedSettings): string {\r\n let keyValue = AllowedSettings[key];\r\n let res = this.TryGet(keyValue.toString());\r\n return res === null ? '' : res;\r\n }\r\n public GetNullableByKey(key: AllowedSettings): string | null {\r\n let keyValue = AllowedSettings[key];\r\n return this.TryGet(keyValue.toString());\r\n }\r\n public GetNullableString(key: string): string | null {\r\n return this.TryGet(key);\r\n }\r\n public GetBooleanByKey(key: AllowedSettings): boolean {\r\n let res = this.GetString(key);\r\n return res === '' ? false : res.toLowerCase() === 'true';\r\n }\r\n public GetBoolean(key: string): boolean {\r\n let res = this.TryGet(key);\r\n return res === null ? false : res.toLowerCase() === 'true';\r\n }\r\n public GetNullableBoolean(key: string): boolean | null {\r\n let res = this.TryGet(key);\r\n return res === null ? null : res.toLowerCase() === 'true';\r\n }\r\n public GetEnum(key: string, typeEnum: EnumType): EnumType {\r\n let res = this.TryGet(key);\r\n return res === null ? typeEnum.getDefault() : typeEnum[res];\r\n }\r\n public GetNullableEnum(key: string, typeEnum: EnumType): EnumType | null {\r\n let res = this.TryGet(key);\r\n return res === null ? null : typeEnum[res];\r\n }\r\n}\r\n","export enum KnownModules {\r\n Default = 0,\r\n Assets = 1,\r\n BudgetsSyncDoNotDeactivateMissingBudgets = 2,\r\n AccServices = 3,\r\n Quizzes = 4,\r\n AllowOngoingReservationModification = 5,\r\n AssetBarcodePrinting = 6,\r\n AssetDetailsDisplayContactsRelatedOnly = 7,\r\n AutomatedEndTimeUpdate = 8,\r\n AutomaticEmailSending = 9,\r\n AutomaticMonthlyPaymentLetter = 10,\r\n Billing = 11,\r\n Blitz = 12,\r\n WebRelayTm = 13,\r\n WebRelayX600m = 14,\r\n NiDAQmx = 15,\r\n KmTronicRelay = 16,\r\n Budgets = 17,\r\n BudgetCats = 18,\r\n BudgetLimits = 19,\r\n Cages = 20,\r\n Colonies = 21,\r\n ConfigurableColumns = 22,\r\n CoreWizard = 23,\r\n CustmerBranding = 25,\r\n CreditByQuarter = 26,\r\n CustomFormLinks = 27,\r\n CustomRoles = 28,\r\n Dashboards = 29,\r\n DashboardAnnouncement = 30,\r\n DataStorage = 31,\r\n DataStoreCharge = 32,\r\n Departments = 33,\r\n Divisions = 35,\r\n Documents = 36,\r\n DoorAccess = 37,\r\n DoorAccessTibboController = 38,\r\n DoorAccessImport = 39,\r\n Eln /*Projects/Experiments*/ = 40,\r\n Experiment = 41,\r\n EmailCommunicationWithUsers = 42,\r\n EquipmentAssemblies = 43,\r\n EventsBillingByEndDate = 44,\r\n EventsBillingByStartDate = 45,\r\n Expenses = 46,\r\n Factors = 47,\r\n FactorsByInstTypes = 48,\r\n FactorsByUserGroups = 49,\r\n FinAdminRole = 50,\r\n FixedRate = 51,\r\n ForgotPassword = 52,\r\n Genomics = 53,\r\n GroupPermissions = 54,\r\n GroupTrainingBookings = 55,\r\n GoogleCalendar = 56,\r\n HideInstrumentsFromUntrainedUsers = 57,\r\n HideNonDefaultBudgets = 58,\r\n HeaderStyle = 59,\r\n IdleTimeOut = 60,\r\n InstituteCoordRole = 61,\r\n Instruments = 62,\r\n Invoices = 63,\r\n IpRelay = 64,\r\n JoinAdGroup = 65,\r\n //JoinAdGroupText = 66,\r\n JoinAdGroupGenerate = 67,\r\n LabTechRole = 68,\r\n LargeAnimals = 69,\r\n LocalApp = 70,\r\n LocationTracking = 71,\r\n MaintenanceAssets = 72,\r\n Messages = 73,\r\n MultipleAdGroups = 74,\r\n Newsletter = 75,\r\n OfflineFactors = 76,\r\n OfflineServiceWithReservation = 77,\r\n OfflineServices = 78,\r\n OnlineBudgets = 79,\r\n PaymentsByBudgets = 80,\r\n PaymentsManagement = 81,\r\n Pricing = 84,\r\n ProjectQuotes = 85,\r\n Projects = 86,\r\n QuickbooksExport = 87,\r\n Quotes = 88,\r\n Relay = 89,\r\n RepAdminRole = 90,\r\n RequestedServiceLinesInwokradditionalstatuses = 91,\r\n RequireAssetRoomAndBuilding = 93,\r\n ResCancelNotifications = 94,\r\n ReservationNotification = 95,\r\n ReservationShrink = 96,\r\n ReservationTakeOver = 97,\r\n ReservationsCustomForm = 99,\r\n RetroReservations = 101,\r\n RetroReservationsAdminAsUser = 102,\r\n SAP_Billing = 103,\r\n SAP_NRC_Billing = 104,\r\n SAP_SFTP = 105,\r\n SampleManagementAutoProcessRequests = 106,\r\n SampleManagementTables = 107,\r\n SampleProcessing = 108,\r\n SampleRequestPrintLabels = 109,\r\n SampleRequestQuote = 110,\r\n SampleRequestResultFiles = 111,\r\n Sensors = 112,\r\n ServiceRequests = 113,\r\n RequestMilestones = 114,\r\n ShibbolethAuthentication = 115,\r\n ShibbolethExternalBudgets = 116,\r\n ShowLicenseScreen = 117,\r\n SkipPendingReservationCharge = 118,\r\n SkipReservationBudgetValidation = 119,\r\n SystemSettings = 120,\r\n OAuth = 121,\r\n Suppliers = 122,\r\n TempUsers = 123,\r\n TimeZone = 124,\r\n Timeline = 125,\r\n TrainingExpiration = 126,\r\n Tutoring = 127,\r\n TutoringHours = 128,\r\n Undergraduate = 129,\r\n UsageForm = 130,\r\n UsageTutoring = 131,\r\n UserBudgets = 132,\r\n UserCanExpire = 133,\r\n UserGroupCoordRole = 134,\r\n UserGroupSelfAssign = 135,\r\n UserGroupsAssignment = 136,\r\n UserPermission = 137,\r\n WS_Billing = 138,\r\n WeeklyCalendar = 139,\r\n WindowsAuthentication = 140,\r\n ShowAvailableNotBookableAssetsOnDashboard = 142,\r\n EnableWorkflowExperiments = 143,\r\n MultipleInstruments_AddRemoveOnEditReservation = 144,\r\n PriceSheetPricing = 145,\r\n PriceSheetFeeTypes = 146,\r\n BudgetExperiments = 147,\r\n Location = 148,\r\n ServiceGroupRegistration = 149,\r\n ReportsGenerator = 150,\r\n AssetDecommission = 151,\r\n //ShowBudgetsScreenFromUsers = 152,\r\n CloningInstrumentsAssets = 153,\r\n InstituteProjects = 154,\r\n OfflineServiceBookedBy = 155,\r\n TermsOfUseAgreement = 156,\r\n TrainingLevelPermissions = 157,\r\n TrainingPrograms = 158,\r\n SourceAndLabelSampleProccessing = 159,\r\n LocalAppRemoteControl = 160,\r\n LoanDesk = 161,\r\n VisualLogBook = 162,\r\n BiWeeklyWorkingHoursPeriods = 163,\r\n ReservationsImport = 164,\r\n AllowSGAToControlSingleEquipment = 166,\r\n MultipleCustomForms = 167,\r\n UserInquiry = 168,\r\n ProjectJoinRequests = 169,\r\n DTUStudentCardIntergration = 170,\r\n AssetModels = 171,\r\n PriceSheetUserGroups = 172,\r\n PeopleSoftBilling = 173,\r\n DisableBillingEvents = 174,\r\n InstrumetServiceProjectCode = 175,\r\n RaspberryPi = 176,\r\n SamplesAutomation = 177,\r\n}\r\n","import { Typography, TypographyProps } from '@material-ui/core';\r\nimport { BookitTypographyVariant } from '@material-ui/core/styles/createTypography';\r\nimport { capitalize } from 'lodash';\r\nimport * as React from 'react';\r\nimport { typographyComponentMapping } from 'styles/typography/bookitTypography';\r\nimport clsx from 'clsx';\r\n\r\nexport interface BasicTypographyProps extends Omit {\r\n variant?: BookitTypographyVariant;\r\n component?: React.ElementType;\r\n italic?: boolean;\r\n style?: React.CSSProperties;\r\n className?: string;\r\n bold?: boolean;\r\n uppercase?: boolean;\r\n truncateSize?: '10' | '15' | '20' | '25' | '30' | '40' | '50';\r\n}\r\n\r\nexport const BasicTypography = (props: BasicTypographyProps) => {\r\n const {\r\n children,\r\n variant = 'bodyM',\r\n italic,\r\n component,\r\n color,\r\n style,\r\n className,\r\n truncateSize,\r\n bold,\r\n uppercase,\r\n ...other\r\n } = props;\r\n const truncateClass = React.useMemo(() => {\r\n if (!truncateSize) return '';\r\n return `truncate${truncateSize}`;\r\n }, [truncateSize]);\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport default BasicTypography;\r\n","/**\r\n *\r\n * auto generated interface for Bookit.Data.AvailabilityTypes\r\n *\r\n */\r\n\r\nexport enum AvailabilityTypes {\r\n NotAvailable = 0,\r\n AvailableNotBookable = 1,\r\n FreelyBookable = 2,\r\n /**\r\n * @deprecated use FreelyBookable instead\r\n */\r\n BookableWApproval = 3,\r\n ServiceRelated = 4,\r\n ServiceGroup = 5,\r\n SuperGroup = 6,\r\n //FreelyBookableBillable = 7,\r\n //ApprovalRequiredBillable = 8,\r\n RequestRelated = 9,\r\n TrainingProgram = 10,\r\n LoanableEquipment = 11,\r\n LectureRoom = 12,\r\n}\r\nexport type AvailabilityTypesUnion = keyof typeof AvailabilityTypes;\r\nexport const AvailabilityTypesUnionArray: Array = [\r\n 'NotAvailable',\r\n 'AvailableNotBookable',\r\n 'FreelyBookable',\r\n //'BookableWApproval',\r\n 'ServiceRelated',\r\n 'ServiceGroup',\r\n 'SuperGroup',\r\n //'FreelyBookableBillable',\r\n //'ApprovalRequiredBillable',\r\n 'RequestRelated',\r\n 'TrainingProgram',\r\n 'LoanableEquipment',\r\n 'LectureRoom',\r\n];\r\n\r\nexport const toAvailabilityUnion = (\r\n availabilityType: AvailabilityTypes | AvailabilityTypesUnion | undefined,\r\n): AvailabilityTypesUnion | undefined => {\r\n if (availabilityType === undefined) return;\r\n if (typeof availabilityType === 'string') return availabilityType;\r\n return getAvailabilityUnion(availabilityType);\r\n};\r\n\r\nexport const getAvailabilityUnion = (\r\n availabilityType: AvailabilityTypes,\r\n): AvailabilityTypesUnion | undefined => {\r\n switch (availabilityType) {\r\n case AvailabilityTypes.NotAvailable:\r\n return 'NotAvailable';\r\n case AvailabilityTypes.AvailableNotBookable:\r\n return 'AvailableNotBookable';\r\n case AvailabilityTypes.FreelyBookable:\r\n case AvailabilityTypes.BookableWApproval:\r\n return 'FreelyBookable';\r\n case AvailabilityTypes.ServiceRelated:\r\n return 'ServiceRelated';\r\n case AvailabilityTypes.ServiceGroup:\r\n return 'ServiceGroup';\r\n case AvailabilityTypes.SuperGroup:\r\n return 'SuperGroup';\r\n case AvailabilityTypes.RequestRelated:\r\n return 'RequestRelated';\r\n case AvailabilityTypes.TrainingProgram:\r\n return 'TrainingProgram';\r\n case AvailabilityTypes.LoanableEquipment:\r\n return 'LoanableEquipment';\r\n case AvailabilityTypes.LectureRoom:\r\n return 'LectureRoom';\r\n default:\r\n return undefined;\r\n }\r\n};\r\n","import { useIsMobile } from 'app/hooks/useIsMobile';\r\nimport * as rdd from 'react-device-detect';\r\n\r\nexport function DetectIsMobile() {\r\n const { checkIsMobile } = useIsMobile();\r\n return checkIsMobile();\r\n}\r\nexport function GetBrowserInfo() {\r\n console.debug(`\r\n fullBrowserVersion: ${rdd.fullBrowserVersion};\r\n browserName: ${rdd.browserName};\r\n browserVersion: ${rdd.browserVersion};\r\n deviceType: ${rdd.deviceType};\r\n engineName: ${rdd.engineName};\r\n engineVersion: ${rdd.engineVersion};\r\n osName: ${rdd.osName};\r\n osVersion: ${rdd.osVersion};\r\n mobileModel: ${rdd.mobileModel};\r\n mobileVendor: ${rdd.mobileVendor};\r\n `);\r\n}\r\n","/**\r\n *\r\n * AutocompletePickerS2\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { CircularProgress, InputBaseComponentProps } from '@material-ui/core';\r\nimport Autocomplete, {\r\n AutocompleteRenderOptionState,\r\n} from '@material-ui/lab/Autocomplete';\r\nimport { EntityType } from 'types/common';\r\nimport BaseTextField from 'app/components/BasicInputs/BaseTextField';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport clsx from 'clsx';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport {\r\n extractDataFromResponse,\r\n IDisableable,\r\n loadDataAndPrepareOptions,\r\n OptionType,\r\n} from '../Utils/autoCompletePickerUtils';\r\nimport { FilterOptionsState } from '@material-ui/lab';\r\nimport { highlightSearchTerm } from '../BaseOptionsPicker/highlightSearchTerm';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { capitalize, omit } from 'lodash';\r\n\r\nexport interface AutocompletePickerProps {\r\n loadData: (\r\n searchTerm: string | null,\r\n predicates?: (string | Condition)[],\r\n expandedColumns?: string,\r\n ) => Promise;\r\n filterOptions?: (\r\n options: OptionType[],\r\n state: FilterOptionsState>,\r\n ) => OptionType[];\r\n value?: T | null;\r\n label?: string;\r\n onChange?: (value: T | null) => void;\r\n size?: 'small' | 'medium' | 'large' | 'xl';\r\n listSize?: 'small' | 'medium' | 'large';\r\n mini?: boolean;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n isOpen?: boolean;\r\n disableClearable?: boolean;\r\n required?: boolean;\r\n fullWidth?: boolean;\r\n additionalItem?: T | null;\r\n disabled?: boolean;\r\n name?: string;\r\n placeholder?: string;\r\n onBlur?: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n info?: string;\r\n noOptionsText?: React.ReactNode;\r\n defaultValue?: T | null;\r\n id?: string;\r\n select?: boolean;\r\n customData?: T | T[] | null;\r\n predicates?: (string | Condition)[];\r\n ariaLabel?: string;\r\n className?: string;\r\n innerClassName?: string;\r\n innerProps?: Partial>;\r\n title?: string;\r\n loading?: boolean;\r\n clearOnBlur?: boolean;\r\n freeSolo?: boolean;\r\n handleInputChange?: (value: string) => void;\r\n additionalSearchTerm?: string | null;\r\n onPickerOpen?: () => void;\r\n renderOptionName?: (option: OptionType) => string;\r\n getOptionLabelName?: (option: OptionType) => string;\r\n inputProps?: InputBaseComponentProps | undefined;\r\n autoFocus?: boolean;\r\n autoHighlight?: boolean;\r\n autoComplete?: boolean;\r\n autoSelect?: boolean;\r\n blurOnSelect?: 'touch' | 'mouse' | true | false;\r\n clearOnEscape?: boolean;\r\n includeInputInList?: boolean;\r\n selectOnFocus?: boolean;\r\n disableListWrap?: boolean;\r\n disableCloseOnSelect?: boolean;\r\n filterSelectedOptions?: boolean;\r\n openOnFocus?: boolean;\r\n setSomeOpen?: (open: boolean) => void;\r\n ListboxProps?: object;\r\n expandedColumns?: string;\r\n customRenderOption?: (\r\n option: OptionType,\r\n state: AutocompleteRenderOptionState,\r\n ) => React.ReactNode;\r\n getOptionSelected?: (option: OptionType, value: OptionType) => boolean;\r\n}\r\n\r\nexport function AutocompletePicker({\r\n label,\r\n loadData,\r\n filterOptions = options => options,\r\n value,\r\n onChange,\r\n size = 'large',\r\n listSize = 'small',\r\n mini,\r\n variant = 'standard',\r\n isOpen,\r\n disableClearable,\r\n fullWidth = false,\r\n additionalItem,\r\n disabled,\r\n info,\r\n noOptionsText,\r\n id,\r\n select,\r\n required,\r\n predicates,\r\n ariaLabel,\r\n className,\r\n title,\r\n loading: propsLoading,\r\n freeSolo,\r\n handleInputChange,\r\n additionalSearchTerm,\r\n renderOptionName,\r\n getOptionLabelName,\r\n inputProps,\r\n autoFocus,\r\n autoHighlight = false,\r\n autoComplete,\r\n autoSelect,\r\n blurOnSelect,\r\n clearOnEscape,\r\n includeInputInList,\r\n selectOnFocus,\r\n disableListWrap,\r\n filterSelectedOptions,\r\n disableCloseOnSelect,\r\n openOnFocus,\r\n setSomeOpen,\r\n ListboxProps,\r\n expandedColumns,\r\n customRenderOption,\r\n getOptionSelected,\r\n ...props\r\n}: AutocompletePickerProps) {\r\n const { t } = useTranslation();\r\n const isMobile = DetectIsMobile();\r\n // const classes = autocompleteStyles();\r\n // const extClasses = autocompleteExtendStyles();\r\n const timerRef = React.useRef(null);\r\n //const miniClass = `${size === 'small' && mini ? 'miniDense' : ''}`;\r\n let firstOpen = isOpen;\r\n const [open, setOpen] = React.useState(firstOpen);\r\n const [options, setOptions] = React.useState<\r\n Array> | undefined\r\n >([]);\r\n const [searchTerm, setSearchTerm] = React.useState(\r\n additionalSearchTerm === undefined ? null : additionalSearchTerm,\r\n );\r\n const [hasSelected, setSelected] = React.useState(\r\n value !== undefined && value !== null,\r\n );\r\n React.useEffect(() => {\r\n setSelected(value !== undefined && value !== null);\r\n }, [value]);\r\n const [firstMounted, setFirstMounted] = React.useState(\r\n true,\r\n );\r\n useEffectOnMount(() => {\r\n !!setSomeOpen && setSomeOpen(isOpen ?? false);\r\n });\r\n const handleSelectText = (\r\n event: React.FocusEvent,\r\n ) => {\r\n event.target.select();\r\n event.target.setSelectionRange(0, event.target.value.length);\r\n setFirstMounted(undefined);\r\n console.log('auto focus running');\r\n };\r\n React.useEffect(() => {\r\n return () => clearTimeout(timerRef.current);\r\n }, []);\r\n const [loading, setLoading] = React.useState(propsLoading ?? false);\r\n // update internal \"loading\" state when \"loading\" property changes it's value\r\n React.useEffect(() => {\r\n if (propsLoading !== undefined) {\r\n setLoading(propsLoading);\r\n }\r\n }, [propsLoading]);\r\n const doload = open && (options === undefined || options?.length === 0);\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const showShortView = isMobile || (sidePanelOpen && !sidePanelExpanded);\r\n\r\n React.useEffect(() => {\r\n let active = true;\r\n if (!doload) {\r\n return undefined;\r\n }\r\n (async () => {\r\n try {\r\n setLoading(true);\r\n const rawResponse = await loadData(\r\n searchTerm,\r\n predicates,\r\n expandedColumns,\r\n );\r\n const response = extractDataFromResponse(rawResponse);\r\n const optionsData = loadDataAndPrepareOptions({\r\n response,\r\n additionalItem,\r\n t,\r\n });\r\n\r\n if (active) {\r\n setOptions(optionsData);\r\n setLoading(false);\r\n }\r\n } catch {\r\n if (!active) return;\r\n setOptions([]);\r\n setLoading(false);\r\n }\r\n })();\r\n\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n additionalItem,\r\n doload,\r\n expandedColumns,\r\n loadData,\r\n predicates,\r\n searchTerm,\r\n t,\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (!open) {\r\n setOptions(undefined);\r\n }\r\n }, [open]);\r\n\r\n return (\r\n {\r\n !disableClearable && setOptions(undefined);\r\n !selectOnFocus && setSearchTerm(null);\r\n setOpen(true);\r\n !!setSomeOpen && setSomeOpen(true);\r\n !!props.onPickerOpen && props.onPickerOpen();\r\n }}\r\n onClose={() => {\r\n setSearchTerm(null);\r\n setOpen(false);\r\n !!setSomeOpen && setSomeOpen(false);\r\n setLoading(false);\r\n }}\r\n onChange={(event, value, reason, details) => {\r\n if (\r\n value == null ||\r\n ((value as T)?.Id !== undefined &&\r\n (value as unknown as IDisableable)?.disabled !== true)\r\n ) {\r\n setSearchTerm(null);\r\n onChange?.(value as T);\r\n setSelected(value !== undefined && value !== null);\r\n }\r\n }}\r\n multiple={false}\r\n onInputChange={(event, newInputValue, reason) => {\r\n setOptions(undefined);\r\n if (reason === 'input') {\r\n let val =\r\n !!newInputValue && newInputValue !== null\r\n ? newInputValue.trimStart()\r\n : newInputValue;\r\n setSearchTerm(val);\r\n if (handleInputChange !== undefined) {\r\n handleInputChange(val);\r\n }\r\n }\r\n }}\r\n getOptionSelected={\r\n getOptionSelected ??\r\n ((option, value) =>\r\n (option as T)?.Id !== undefined &&\r\n (value as T)?.Id !== undefined &&\r\n (option as T)?.Id === (value as T)?.Id)\r\n }\r\n getOptionDisabled={option =>\r\n (option as unknown as IDisableable)?.disabled ?? false\r\n }\r\n getOptionLabel={option => {\r\n if (!!getOptionLabelName) {\r\n return getOptionLabelName(option);\r\n } else {\r\n return option.Name ?? t(translations.NA);\r\n }\r\n }}\r\n renderOption={(option, state) =>\r\n !!customRenderOption\r\n ? customRenderOption(option, state)\r\n : highlightSearchTerm(\r\n !!renderOptionName ? renderOptionName(option) : option.Name,\r\n state.inputValue,\r\n )\r\n }\r\n options={(options as OptionType[]) ?? []}\r\n filterSelectedOptions={filterSelectedOptions}\r\n /**\r\n * filter is needed to be disabled in order to show server filterd items that might not contain the searchterm as is\r\n * or to show any other additional label like \"showing x records, please search fo more\"\r\n * */\r\n filterOptions={filterOptions}\r\n loading={loading}\r\n value={value ?? null}\r\n // classes={{\r\n // root: clsx(classes.root, showShortView ? 'shortView' : undefined),\r\n // tag: classes.tag,\r\n // tagSizeSmall: classes.tagSizeSmall,\r\n // inputRoot: classes.inputRoot,\r\n // input: classes.input,\r\n // inputFocused: classes.inputFocused,\r\n // endAdornment: classes.endAdornment,\r\n // clearIndicator: classes.clearIndicator,\r\n // popupIndicator: classes.popupIndicator,\r\n // popupIndicatorOpen: classes.popupIndicatorOpen,\r\n // paper: classes.paper,\r\n // listbox: classes.listbox,\r\n // loading: classes.loading,\r\n // noOptions: classes.noOptions,\r\n // option: classes.option,\r\n // groupLabel: classes.groupLabel,\r\n // groupUl: classes.groupUl,\r\n // }}\r\n fullWidth={fullWidth}\r\n className={clsx('autocomplete', className, {\r\n shortView: showShortView && !isMobile,\r\n })}\r\n disableClearable={disableClearable}\r\n onBlur={props?.onBlur}\r\n size={size === 'small' ? 'small' : 'medium'}\r\n popupIcon={}\r\n closeIcon={}\r\n freeSolo={freeSolo}\r\n selectOnFocus={selectOnFocus || (isMobile ? false : true)}\r\n renderInput={params => (\r\n event.target.select()}\r\n autoFocus={autoFocus}\r\n onFocus={event => {\r\n clearTimeout(timerRef.current);\r\n if (\r\n autoFocus &&\r\n value !== null &&\r\n value !== undefined &&\r\n selectOnFocus &&\r\n firstMounted\r\n ) {\r\n timerRef.current = setTimeout(handleSelectText, 100, event);\r\n }\r\n }}\r\n inputProps={{\r\n ...params.inputProps,\r\n ...inputProps,\r\n className: 'autocompleteInput',\r\n 'aria-label': `${\r\n label ? undefined : ariaLabel ? ariaLabel : 'search input'\r\n }`,\r\n // 'aria-labelledby': `${\r\n // label ? undefined : id ? `${id}_label` : undefined\r\n // }`,\r\n title: title,\r\n }}\r\n InputProps={{\r\n //autoFocus: firstOpen || autoFocus,\r\n className: clsx(\r\n 'autocompleteInputRoot',\r\n { shortView: showShortView && !isMobile },\r\n params.InputProps.className,\r\n ),\r\n ...omit(params.InputProps, 'className'),\r\n endAdornment: (\r\n \r\n {props.error}\r\n {loading ? (\r\n \r\n ) : info ? (\r\n \r\n ) : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ),\r\n }}\r\n />\r\n )}\r\n autoHighlight={\r\n Boolean(searchTerm) ||\r\n autoHighlight ||\r\n disableClearable ||\r\n options?.length === 1\r\n }\r\n autoComplete={autoComplete}\r\n autoSelect={\r\n autoSelect ||\r\n Boolean(searchTerm) ||\r\n autoHighlight ||\r\n options?.length === 1\r\n }\r\n blurOnSelect={blurOnSelect}\r\n clearOnEscape={clearOnEscape}\r\n includeInputInList={includeInputInList}\r\n disableListWrap={disableListWrap}\r\n openOnFocus={openOnFocus}\r\n disableCloseOnSelect={disableCloseOnSelect}\r\n ListboxProps={{\r\n ...ListboxProps,\r\n className: clsx('autocompleteList', `listSize${capitalize(listSize)}`),\r\n }}\r\n />\r\n );\r\n}\r\n","import parse from 'autosuggest-highlight/parse';\r\nimport match from 'autosuggest-highlight/match';\r\n\r\nexport function highlightSearchTerm(text, highlight) {\r\n // Split on highlight term and include term into parts, ignore case\r\n const matches = match(text, highlight);\r\n const parts = parse(text, matches);\r\n\r\n return (\r\n \r\n {parts.map((part, index) =>\r\n part.highlight ? (\r\n {part.text}\r\n ) : (\r\n {part.text}\r\n ),\r\n )}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * auto generated interface for Bookit.Data.ServiceType\r\n *\r\n */\r\n\r\nexport enum ServiceType {\r\n Online = 1,\r\n Offline = 2,\r\n Sample = 3,\r\n}\r\nexport type ServiceTypeUnion = keyof typeof ServiceType;\r\nexport const ServiceTypeUnionArray: Array = [\r\n 'Online',\r\n 'Offline',\r\n 'Sample',\r\n];\r\n","import {\r\n useInjectReducer as useReducer,\r\n useInjectSaga as useSaga,\r\n} from 'redux-injectors';\r\nimport {\r\n InjectReducerParams,\r\n InjectSagaParams,\r\n RootStateKeyType,\r\n} from './types/injector-typings';\r\n\r\n/* Wrap redux-injectors with stricter types */\r\n\r\nexport function useInjectReducer(\r\n params: InjectReducerParams,\r\n) {\r\n return useReducer(params);\r\n}\r\n\r\nexport function useInjectSaga(params: InjectSagaParams) {\r\n return useSaga(params);\r\n}\r\n","import {\r\n Tooltip as MuiTooltip,\r\n TooltipProps as MuiTooltipProps,\r\n} from '@material-ui/core';\r\nimport { Body } from 'app/components/Typography';\r\nimport { TFunctionResult } from 'i18next';\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\nexport type ThemeColor = 'dark' | 'light';\r\nexport interface TooltipsProps extends Omit {\r\n themeColor?: ThemeColor;\r\n /**\r\n * Tooltip title. redefined here to include TFunctionResult\r\n */\r\n title: React.ReactNode | TFunctionResult;\r\n headTitle?: React.ReactNode | TFunctionResult;\r\n disableContentWrapper?: boolean;\r\n}\r\nconst TooltipContent = styled.span`\r\n&.tooltip-content {\r\n cursor: pointer;\r\n pointer-events: auto;\r\n`;\r\nexport function Tooltip({\r\n children,\r\n themeColor = 'dark',\r\n title,\r\n headTitle,\r\n arrow = true,\r\n interactive = false,\r\n disableContentWrapper,\r\n ...props\r\n}: TooltipsProps) {\r\n const colorText = themeColor === 'dark' ? 'Dark' : 'Light';\r\n return (\r\n \r\n {!!headTitle && (\r\n \r\n {headTitle}\r\n \r\n )}\r\n \r\n {title}\r\n \r\n \r\n ) : (\r\n ''\r\n )\r\n }\r\n {...props}\r\n >\r\n {!disableContentWrapper ? (\r\n {children}\r\n ) : (\r\n children\r\n )}\r\n \r\n );\r\n}\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { EntityType, INamedEntity } from 'types/common';\r\nimport {\r\n Condition,\r\n escapeODataValue,\r\n ODataFilterBuilder,\r\n} from 'api/odata/ODataFilter';\r\nimport { translations } from 'locales/translations';\r\nimport { TFunction } from 'i18next';\r\nimport { uniq } from 'lodash';\r\nimport { undefinedIfIsEmpty } from 'app/components/BasicTable/useProfileSetting/parseProfileUrl';\r\n\r\n/**\r\n * Sets maximum limit of rows to fetch from the server for autocomplete picker.\r\n * Fetching all at once significantly slows down UI on slow connections.\r\n */\r\nconst MAX_TOP = 200;\r\n\r\ninterface loadDataParams {\r\n url: string;\r\n idPropertyName?: keyof TEntity;\r\n DisplaynamePropertyName?: keyof TEntity;\r\n predicates?: (string | Condition)[];\r\n select?: Array;\r\n globalServiceGroupFilter?: Condition[];\r\n expand?: string;\r\n isOptionalServiceGroup?: boolean;\r\n transformModel?: (item: TEntity) => TEntity;\r\n useSearchOrPredicate?: boolean;\r\n queryString?: Record;\r\n maxTop?: number;\r\n orderBy?: string;\r\n groupBy?: string;\r\n}\r\nexport interface autocompleteLoadDataResult {\r\n value: TEntity[];\r\n more: boolean;\r\n limit?: number;\r\n}\r\nexport const getAutoCompleteLoadDataFn =\r\n ({\r\n url,\r\n idPropertyName = 'Id',\r\n DisplaynamePropertyName = 'Name',\r\n select = [idPropertyName, DisplaynamePropertyName],\r\n predicates: basePredicates = [],\r\n globalServiceGroupFilter = [],\r\n isOptionalServiceGroup = undefined,\r\n expand = undefined,\r\n transformModel = undefined,\r\n useSearchOrPredicate = undefined,\r\n queryString,\r\n maxTop,\r\n orderBy,\r\n groupBy,\r\n }: loadDataParams) =>\r\n async (\r\n searchTerm: string | null,\r\n dynamicPredicates?: (string | Condition)[],\r\n ) => {\r\n const params = {\r\n ...queryString,\r\n ...{\r\n $orderby: orderBy ?? `${String(DisplaynamePropertyName)} asc`,\r\n $select: uniq(select).join(','),\r\n $top: (maxTop ?? MAX_TOP) + 1,\r\n $filter:\r\n useSearchOrPredicate && searchTerm !== null\r\n ? `(${String(DisplaynamePropertyName)} eq ${\r\n \"'\" + escapeODataValue(searchTerm) + \"'\"\r\n })`\r\n : new ODataFilterBuilder({\r\n predicates: dynamicPredicates\r\n ? [...(dynamicPredicates ?? [])]\r\n : basePredicates,\r\n stringColumns: [DisplaynamePropertyName],\r\n stringSearch: searchTerm ?? undefined,\r\n globalServiceGroupFilter: globalServiceGroupFilter,\r\n isOptionalServiceGroup: isOptionalServiceGroup,\r\n }).toString(),\r\n $apply: groupBy\r\n ? `groupby((${groupBy}),aggregate(${idPropertyName} with countdistinct as CountDistinct)))`\r\n : undefined,\r\n $expand: undefinedIfIsEmpty(expand),\r\n },\r\n };\r\n\r\n const response = await httpClient.get(url, params);\r\n const value = !!transformModel\r\n ? (response.value as TEntity[]).map(f => transformModel(f))\r\n : (response.value as TEntity[]);\r\n\r\n return {\r\n value: value.slice(0, maxTop ?? MAX_TOP),\r\n more: value.length > (maxTop ?? MAX_TOP),\r\n limit: maxTop ?? MAX_TOP,\r\n };\r\n };\r\nexport const extractDataFromResponse = (\r\n response: T[] | autocompleteLoadDataResult,\r\n) => {\r\n if (Array.isArray(response)) {\r\n return { value: response, more: false };\r\n } else {\r\n return response as autocompleteLoadDataResult;\r\n }\r\n};\r\n\r\nexport const loadDataAndPrepareOptions = ({\r\n t,\r\n response,\r\n additionalItem,\r\n}: {\r\n t: TFunction;\r\n response: autocompleteLoadDataResult;\r\n additionalItem?: T | null;\r\n}) => {\r\n const value = response.value;\r\n if (additionalItem !== null && additionalItem !== undefined) {\r\n value.unshift(additionalItem);\r\n }\r\n const nonSelectableOptions: NonSelectableOption[] = response.more\r\n ? [\r\n {\r\n disabled: true,\r\n Name: t(translations.ShowingFirstXRecords, {\r\n maxRecordsLimit: response.limit ?? MAX_TOP,\r\n }),\r\n },\r\n ]\r\n : [];\r\n return [...value, ...nonSelectableOptions];\r\n};\r\n\r\nexport const addActionToOptions = (\r\n response: T[],\r\n action?: React.ReactNode,\r\n): T[] => {\r\n if (!action) return response;\r\n const addOption = {\r\n Id: -1,\r\n Name: '',\r\n action,\r\n type: 'action',\r\n } as IAction;\r\n response.push(addOption as unknown as T);\r\n return response;\r\n};\r\n\r\nexport interface IDisableable {\r\n disabled: boolean;\r\n}\r\nexport interface IRemoveable {\r\n noremoved: boolean;\r\n}\r\nexport interface IInfoOption {\r\n titleInfo?: string;\r\n}\r\nexport interface IColored {\r\n Color?: string;\r\n}\r\n\r\nexport interface IAction extends EntityType {\r\n action: React.ReactNode;\r\n type: 'action';\r\n}\r\n\r\nexport function isAction(entity): entity is IAction {\r\n return entity?.['type'] === 'action';\r\n}\r\n\r\nexport type NonSelectableOption = INamedEntity & IDisableable;\r\nexport type NonRemoveableOption = INamedEntity & IRemoveable;\r\nexport type InfoOption = INamedEntity & IInfoOption;\r\nexport type ColoredOption = INamedEntity &\r\n NonSelectableOption &\r\n NonRemoveableOption &\r\n InfoOption &\r\n IColored;\r\nexport type OptionType =\r\n | T\r\n | NonSelectableOption\r\n | NonRemoveableOption\r\n | InfoOption\r\n | ColoredOption;\r\n","import { SidePanelRenderer } from 'app/Layout/FrontendLayout/components/SidePanel/SidePanelRenderer';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport {\r\n selectConfirmApproved,\r\n selectConfirmRejected,\r\n selectContinueState,\r\n selectContinueToLink,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n PageTypeProps,\r\n RenderPageType,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport * as React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nexport interface SidePanelOpenState {\r\n renderPageType?: RenderPageType;\r\n renderPageProps?: PageTypeProps;\r\n useSidePanel?: boolean;\r\n isCover?: boolean;\r\n expanded?: boolean;\r\n}\r\nexport interface SidePanelCloseState {\r\n useSidePanel?: boolean;\r\n isCover?: boolean;\r\n onClose?: () => void;\r\n showConfirm?: boolean;\r\n}\r\n\r\nfunction useSidePanelState(\r\n onConfirm?: () => boolean,\r\n onReject?: () => void,\r\n isCover?: boolean,\r\n useSidePanel?: boolean,\r\n onClose?: () => void,\r\n) {\r\n const dispatch = useDispatch();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n const confirmRejected = useSelector(selectConfirmRejected);\r\n const confirmApproved = useSelector(selectConfirmApproved);\r\n const continueToOther = useSelector(selectContinueState);\r\n const continueLink = useSelector(selectContinueToLink);\r\n const [cover, setCover] = React.useState(\r\n undefined,\r\n );\r\n const [coverClosed, setCoverClosed] = React.useState(\r\n undefined,\r\n );\r\n const closeCover = () => {\r\n setCover(undefined);\r\n };\r\n const onCloseCover = React.useCallback(() => {\r\n return closeCover();\r\n }, []);\r\n const closePanel = React.useCallback(\r\n (state: SidePanelCloseState) => {\r\n if (state.showConfirm) {\r\n dispatch(layoutActions.setConfirmOpen(true));\r\n } else {\r\n if (state.isCover) {\r\n setCover(undefined);\r\n setCoverClosed(true);\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (!!state.onClose) {\r\n state.onClose();\r\n }\r\n }\r\n },\r\n [dispatch, layoutActions],\r\n );\r\n const openPanel = React.useCallback(\r\n (state: SidePanelOpenState) => {\r\n state.useSidePanel || state.isCover\r\n ? setCover(\r\n ,\r\n )\r\n : dispatch(\r\n layoutActions.openSidePanel({\r\n type: state.renderPageType,\r\n props: Object.assign({}, state.renderPageProps, {\r\n useSidePanel: true,\r\n }),\r\n expanded: state.expanded,\r\n }),\r\n );\r\n },\r\n [dispatch, layoutActions],\r\n );\r\n React.useEffect(() => {\r\n if (confirmApproved) {\r\n if (!!onConfirm) {\r\n let confirmed = onConfirm();\r\n if (confirmed) {\r\n if (continueToOther.continueOnApprove) {\r\n if (isCover) {\r\n setCover(undefined);\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (!!onClose) {\r\n onClose();\r\n }\r\n setTimeout(() => {\r\n useSidePanel || isCover\r\n ? setCover(\r\n ,\r\n )\r\n : dispatch(\r\n layoutActions.openSidePanel({\r\n type: continueToOther.pageType,\r\n props: continueToOther.pageProps,\r\n expanded: continueToOther.expanded,\r\n }),\r\n );\r\n dispatch(layoutActions.resetContinueState());\r\n }, 100);\r\n } else if (continueLink !== undefined) {\r\n dispatch(appSettingsActions.navigate(continueLink));\r\n if (isCover) {\r\n setCover(undefined);\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (!!onClose) {\r\n onClose();\r\n }\r\n } else {\r\n if (isCover) {\r\n setCover(undefined);\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (!!onClose) {\r\n onClose();\r\n }\r\n }\r\n } else {\r\n dispatch(layoutActions.resetConfirmState());\r\n }\r\n } else {\r\n if (continueToOther.continueOnApprove) {\r\n if (isCover) {\r\n setCover(undefined);\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (!!onClose) {\r\n onClose();\r\n }\r\n setTimeout(() => {\r\n useSidePanel || isCover\r\n ? setCover(\r\n ,\r\n )\r\n : dispatch(\r\n layoutActions.openSidePanel({\r\n type: continueToOther.pageType,\r\n props: continueToOther.pageProps,\r\n expanded: continueToOther.expanded,\r\n }),\r\n );\r\n dispatch(layoutActions.resetContinueState());\r\n }, 100);\r\n } else if (continueLink !== undefined) {\r\n dispatch(appSettingsActions.navigate(continueLink));\r\n if (isCover) {\r\n setCover(undefined);\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (!!onClose) {\r\n onClose();\r\n }\r\n } else {\r\n if (isCover) {\r\n setCover(undefined);\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (!!onClose) {\r\n onClose();\r\n }\r\n }\r\n }\r\n dispatch(layoutActions.resetConfirmState());\r\n }\r\n if (confirmRejected) {\r\n dispatch(layoutActions.resetConfirmState());\r\n if (!!onReject) {\r\n onReject();\r\n }\r\n }\r\n\r\n return () => undefined;\r\n }, [\r\n appSettingsActions,\r\n confirmApproved,\r\n confirmRejected,\r\n continueLink,\r\n continueToOther.continueOnApprove,\r\n continueToOther.expanded,\r\n continueToOther.pageProps,\r\n continueToOther.pageType,\r\n dispatch,\r\n isCover,\r\n layoutActions,\r\n onClose,\r\n onConfirm,\r\n onReject,\r\n useSidePanel,\r\n ]);\r\n\r\n return { cover, openPanel, closePanel, coverClosed, onCloseCover };\r\n}\r\nexport default useSidePanelState;\r\n","import { List, ListProps, Popper, PopperProps, Theme } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport { box_shadow_s } from 'styles/shadows/bookitShadow';\r\n\r\nexport const AssetQuickSearchForm = styled.form<{ showInSideBar?: boolean }>`\r\n width: ${props => (props.showInSideBar ? '100%' : 'initial')};\r\n`;\r\nexport const SearchContainer = styled.div<{ theme: Theme }>`\r\n &.search-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n border-radius: ${({ theme }) => theme.shape.borderRadius};\r\n margin-left: 0;\r\n padding-top: 2px;\r\n padding-bottom: 2px;\r\n gap: 8px;\r\n\r\n ${({ theme }) => theme.breakpoints.up('sm')} {\r\n width: 355px;\r\n }\r\n\r\n ${({ theme }) => theme.breakpoints.up('lg')} {\r\n width: 463px;\r\n }\r\n }\r\n`;\r\nexport const AssetQuickSearchPopper = styled(\r\n ({\r\n theme,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n } & PopperProps) => ,\r\n)`\r\n &.asset-quick-search-popper {\r\n z-index: ${({ theme }) => theme.zIndex.drawer + 2};\r\n\r\n &.popper-mobile {\r\n z-index: ${({ theme }) => theme.zIndex.modal + 2};\r\n height: calc(100% - 92px);\r\n }\r\n\r\n ${({ theme }) => theme.breakpoints.up('lg')} {\r\n width: 700px;\r\n }\r\n\r\n ${({ theme }) => theme.breakpoints.down('lg')} {\r\n width: 600px;\r\n }\r\n\r\n ${({ theme }) => theme.breakpoints.down('sm')} {\r\n width: 100%;\r\n }\r\n }\r\n`;\r\nexport const AssetQuickSearchPaper = styled.div`\r\n &.asset-quick-search-paper {\r\n display: flex;\r\n width: 672px;\r\n padding: 16px 12px;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 24px;\r\n border-radius: 12px;\r\n border: 1px solid ${bookitColors.grayscale.graySelection};\r\n background: ${bookitColors.base.white};\r\n box-shadow: ${box_shadow_s};\r\n\r\n &.paper-mobile {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n`;\r\nexport const SearchList = styled((props: ListProps<'div'>) => (\r\n \r\n))`\r\n &.search-list {\r\n width: 100%;\r\n max-height: 85vh;\r\n overflow-y: auto;\r\n }\r\n`;\r\nexport const RecentList = styled((props: ListProps) => )`\r\n &.recent-list {\r\n width: 100%;\r\n overflow-y: auto;\r\n & .recent-item {\r\n width: 100%;\r\n }\r\n }\r\n`;\r\nexport const Div100 = styled.div`\r\n width: 100%;\r\n`;\r\nexport const Div50 = styled.div`\r\n width: 50%;\r\n`;\r\n\r\nexport const QuickSearchSection = styled('div')`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 8px;\r\n align-self: stretch;\r\n width: 100%;\r\n`;\r\nexport const QuickSearchSectionTitle = styled('div')`\r\n display: flex;\r\n padding: 0px 8px;\r\n align-items: center;\r\n gap: 10px;\r\n align-self: stretch;\r\n`;\r\nexport const QuickSearchSearchesItems = styled('div')`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n align-self: stretch;\r\n`;\r\nexport const QuickSearchRecentItems = styled('div')`\r\n display: flex;\r\n padding: 4px 0px;\r\n flex-direction: column;\r\n align-items: stretch;\r\n gap: 4px;\r\n align-self: stretch;\r\n width: 100%;\r\n`;\r\nexport const QuickSearchEmptySection = styled('div')`\r\n display: flex;\r\n width: 100%;\r\n height: 260px;\r\n padding: 0px 16px 16px 16px;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n flex-shrink: 0;\r\n`;\r\nexport const QuickSearchEmptyContent = styled('div')`\r\n &.empty-search-content {\r\n display: flex;\r\n padding: 0px 8px;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 8px;\r\n align-self: stretch;\r\n & .empty-search-content-wrap {\r\n align-self: stretch;\r\n & .empty-search-content-text {\r\n text-align: center;\r\n }\r\n }\r\n }\r\n`;\r\nexport const QuickSearchEmptyBody = styled.span`\r\n &.empty-search-body {\r\n align-self: stretch;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 4px;\r\n & .empty-search-body-text {\r\n text-align: center;\r\n }\r\n & .empty-search-last-text {\r\n text-align: center;\r\n }\r\n }\r\n`;\r\nexport const QuickSearchSeeAll = styled('div')`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n align-self: stretch;\r\n`;\r\nexport const QuickSearchMainTitleSection = styled('div')`\r\n &.quick-search-title {\r\n display: flex;\r\n padding: 0px 8px;\r\n align-items: center;\r\n gap: 10px;\r\n align-self: stretch;\r\n & .quick-search-title-text {\r\n flex: 1 0 0;\r\n }\r\n }\r\n`;\r\nexport const QuickSearchAllInstrumentsSection = styled('div')`\r\n display: flex;\r\n padding: 0px 8px;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 10px;\r\n align-self: stretch;\r\n`;\r\nexport const MenuSearchEmptyContent = styled('div')`\r\n display: flex;\r\n width: 100%;\r\n padding: 0px 16px 16px 16px;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n flex-shrink: 0;\r\n`;\r\nexport const SecondaryContent = styled('div')`\r\n display: flex;\r\n flex-direction: row;\r\n`;\r\nexport const ApprovalRequiredContent = styled('div')`\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 8px;\r\n`;\r\n","import i18next, { TFunction } from 'i18next';\r\nimport { defaultNS } from 'locales/i18n';\r\nimport { Entity, INamedEntity } from 'types/common';\r\n\r\nconst isNumber = (x: string | number): x is number => !isNaN(+x);\r\nconst onlyNumbersReducer = (nums: number[], x: string | number): number[] =>\r\n isNumber(x) ? [...nums, x] : nums;\r\nconst onlyStringReducer = (nums: string[], x: string | number): string[] =>\r\n isNumber(x) ? nums : [...nums, x];\r\n\r\ntype Descripted = {\r\n [K in keyof T]: {\r\n readonly id: T[K];\r\n readonly description: string;\r\n };\r\n}[keyof T];\r\n\r\ntype NonFunctional = T extends Function ? never : T;\r\nexport interface EnumEntity extends Entity {\r\n OriginalName: string;\r\n}\r\n/**\r\n * Helper function to map with a TypeScript enum\r\n * This returns an array of numbers (e.g. [0,1,2,...])\r\n * corresponding to the enum, so you can create arrays that the enum can index.\r\n * @param keys TypeScript enum\r\n */\r\nexport const enumKeys = (keys: unknown): number[] =>\r\n Object.keys(keys as string[]).reduce(onlyNumbersReducer, []);\r\n\r\nexport const enumStringKeys = (keys: unknown): string[] =>\r\n Object.keys(keys as string[]).reduce(onlyStringReducer, []);\r\n\r\n/**\r\n * Helper to produce an array of enum descriptors.\r\n * @param enumeration Enumeration object.\r\n * @param separatorRegex Regex that would catch the separator in your enum key.\r\n */\r\nexport function enumToDescriptedArray(\r\n enumeration: T,\r\n): Descripted[] {\r\n return (Object.keys(enumeration) as Array)\r\n .filter(key => isNaN(Number(key)))\r\n .filter(\r\n key =>\r\n typeof enumeration[key] === 'number' ||\r\n typeof enumeration[key] === 'string',\r\n )\r\n .map(key => ({\r\n id: enumeration[key],\r\n description: String(key),\r\n }));\r\n}\r\n\r\n/**\r\n * TFunction may throw an error if called before i18next has been initialized.\r\n * There's really good point to try and use localization before it's been localized but it's used this way in a couple of places already\r\n * @param key localizaiton key\r\n * @param t TFunction\r\n * @returns localized value or null\r\n */\r\nfunction tryGetName(key: string, t?: TFunction): string {\r\n try {\r\n const tFunction = t ?? GetTFunction();\r\n return tFunction?.(key) ?? key;\r\n } catch (error) {\r\n return key;\r\n }\r\n}\r\n/**\r\n * Gets TFunction from i18next instance\r\n * @returns TFunction\r\n */\r\nconst GetTFunction: () => TFunction | undefined = () => {\r\n const i18n = i18next;\r\n if (i18n.isInitialized) {\r\n return i18n.getFixedT(\r\n null,\r\n i18n.options.ns ?? i18n.options.defaultNS ?? defaultNS,\r\n );\r\n }\r\n return undefined;\r\n};\r\nexport function toEntityEnumArray(\r\n enumeration: T,\r\n t?: TFunction,\r\n prefixKey?: string,\r\n): EnumEntity[] {\r\n return Object.keys(enumeration)\r\n .filter(key => isNaN(Number(key)))\r\n .filter(\r\n key =>\r\n typeof enumeration[key] === 'number' ||\r\n typeof enumeration[key] === 'string',\r\n )\r\n .map(key => {\r\n return {\r\n Id: enumeration[key],\r\n Name: !!prefixKey\r\n ? tryGetName(prefixKey + String(key), t)\r\n : tryGetName(String(key), t),\r\n OriginalName: String(key),\r\n };\r\n });\r\n}\r\nexport function enumToEntityArray(\r\n enumeration: T,\r\n t?: TFunction,\r\n prefixKey?: string,\r\n): Entity[] {\r\n return Object.keys(enumeration)\r\n .filter(key => isNaN(Number(key)))\r\n .filter(\r\n key =>\r\n typeof enumeration[key] === 'number' ||\r\n typeof enumeration[key] === 'string',\r\n )\r\n .map(key => {\r\n return {\r\n Id: enumeration[key],\r\n Name: !!prefixKey\r\n ? tryGetName(prefixKey + String(key), t)\r\n : tryGetName(String(key), t),\r\n };\r\n });\r\n}\r\nexport function getSingleEnumEntityById(\r\n Id: number,\r\n enumeration: T,\r\n t?: TFunction,\r\n prefixKey?: string,\r\n): Entity | null {\r\n let result = enumToEntityArray(enumeration, t, prefixKey).filter(\r\n f => f.Id === Id,\r\n );\r\n return result.length > 0 ? result[0] : null;\r\n}\r\nexport function getSingleEnumEntityByName(\r\n name: string,\r\n enumeration: T,\r\n t?: TFunction,\r\n prefixKey?: string,\r\n): Entity | null {\r\n let result = enumToEntityArray(enumeration, t, prefixKey).filter(\r\n f => f.Name === name,\r\n );\r\n return result.length > 0 ? result[0] : null;\r\n}\r\nexport function GetOptionsFilterFunction(\r\n items: Array,\r\n customSearch?: (value: TItem, search: string) => boolean,\r\n) {\r\n return (searchTerm: string | null) => {\r\n if (searchTerm !== null && searchTerm !== '' && searchTerm !== undefined) {\r\n return items.filter(\r\n f =>\r\n f.Name.toLowerCase().startsWith(searchTerm.toLowerCase()) ||\r\n f.Name.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1 ||\r\n (!!customSearch && customSearch(f, searchTerm)),\r\n );\r\n }\r\n return items;\r\n };\r\n}\r\n\r\n/**\r\n * Helper to produce an array of enum values.\r\n * @param enumeration Enumeration object.\r\n */\r\nexport function enumToArray(\r\n enumeration: T,\r\n): NonFunctional[] {\r\n return Object.keys(enumeration)\r\n .filter(key => isNaN(Number(key)))\r\n .map(key => enumeration[key])\r\n .filter(val => typeof val === 'number' || typeof val === 'string');\r\n}\r\n\r\nexport class EnumHelpers {\r\n static getNamesAndValues(e: any) {\r\n return EnumHelpers.getNames(e).map(n => ({ name: n, value: e[n] as T }));\r\n }\r\n\r\n static getNames(e: any) {\r\n return EnumHelpers.getObjValues(e).filter(\r\n v => typeof v === 'string',\r\n ) as string[];\r\n }\r\n\r\n static getValues(e: any) {\r\n return EnumHelpers.getObjValues(e).filter(\r\n v => typeof v === 'number',\r\n ) as T[];\r\n }\r\n\r\n static getSelectList(\r\n e: any,\r\n stringConverter: (arg: U) => string,\r\n ) {\r\n const selectList = new Map();\r\n this.getValues(e).forEach(val =>\r\n selectList.set(val as T, stringConverter(val as unknown as U)),\r\n );\r\n return selectList;\r\n }\r\n\r\n static getSelectListAsArray(\r\n e: any,\r\n stringConverter: (arg: U) => string,\r\n ) {\r\n return Array.from(this.getSelectList(e, stringConverter), value => ({\r\n value: value[0] as T,\r\n presentation: value[1],\r\n }));\r\n }\r\n\r\n private static getObjValues(e: any): (number | string)[] {\r\n return Object.keys(e).map(k => e[k]);\r\n }\r\n}\r\n","import { Dialog } from '@material-ui/core';\r\nimport { ReactNode } from 'react';\r\nimport clsx from 'clsx';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { selectIsCoverExpanded } from '../../slice/selectors';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { useLayoutSlice } from '../../slice';\r\nimport styled from 'styled-components';\r\n\r\nexport interface CoverWrapperProps {\r\n children: ReactNode;\r\n open: boolean;\r\n onClose?: (e: any) => void;\r\n}\r\nconst CoverRoot = styled.div`\r\n &.cover {\r\n height: auto;\r\n }\r\n`;\r\nexport const CoverWrapper = ({\r\n children,\r\n open,\r\n onClose,\r\n}: CoverWrapperProps) => {\r\n const isMobile = DetectIsMobile();\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const coverExpanded = useSelector(selectIsCoverExpanded);\r\n useEffectOnMount(() => {\r\n dispatch(actions.setIsCoverOpen(open));\r\n });\r\n return (\r\n e.stopPropagation()}>\r\n {\r\n // console.log('cover backdrop click', e);\r\n // !!onClose && onClose(e);\r\n // }}\r\n >\r\n {children}\r\n \r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * LinearProgress\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n LinearProgress as MuiLinearProgress,\r\n LinearProgressProps as MuiLinearProgressProps,\r\n} from '@material-ui/core';\r\nimport styled from 'styled-components';\r\n\r\nexport interface LinearProgressProps\r\n extends MuiLinearProgressProps,\r\n AdditionalProps {}\r\ninterface AdditionalProps {\r\n /**\r\n * Show/hide the progress bar preventing layout shift.\r\n */\r\n visible: boolean | undefined;\r\n}\r\n\r\nfunction LinearProgress1({ visible = false, ...props }: LinearProgressProps) {\r\n return ;\r\n}\r\n\r\n/**\r\n * MUI's LinearProgress extension that helps to prevent layout shift when component is added/removed from the tree.\r\n */\r\nexport const LinearProgress = styled(LinearProgress1)`\r\n visibility: ${props => (props.visible === true ? 'visible' : 'hidden')};\r\n`;\r\n","import * as React from 'react';\r\nimport { LinearProgress } from 'app/components/LinearProgress';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Body } from 'app/components/Typography';\r\nimport { TitlePage } from './TitlePage';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport { ActionRenderer } from '../PageActions/ActionRender';\r\nimport {\r\n SwitchActions,\r\n SwitchActionsProps,\r\n} from '../PageActions/SwitchActions';\r\nimport { SkeletonIfLoading } from './SkeletonIfLoading';\r\nimport { useTheme } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\nimport clsx from 'clsx';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\n\r\nexport interface HeadProps {\r\n closable: boolean | undefined;\r\n useSidePanel: boolean;\r\n closePanel: () => void;\r\n pageName: React.ReactNode;\r\n titlePage: string | undefined;\r\n titlePageLoading?: boolean;\r\n pageLink: string | undefined;\r\n toPageLink?: string;\r\n titleTooltip: string | undefined;\r\n isMobile: boolean;\r\n disableExpandToggle: boolean | undefined;\r\n expandPanel: () => void;\r\n subTitlePage?: React.ReactNode;\r\n leftTopActions?: ActionRenderer[];\r\n rightTopActions?: ActionRenderer[];\r\n onSubmit?: () => void;\r\n switchState?: SwitchActionsProps;\r\n useSwithActions?: boolean;\r\n showProcessing?: boolean;\r\n loading: boolean;\r\n isCover?: boolean;\r\n rightTopActionsLength?: number;\r\n rightActionsLoading?: boolean;\r\n}\r\nconst TitleRoot = styled('div')(({ theme }) => ({\r\n '&.page-wrapper-title-root': {\r\n paddingTop: '24px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n width: '100%',\r\n gap: '24px',\r\n '.topIcons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-end',\r\n alignItems: 'center',\r\n alignSelf: 'end',\r\n padding: 0,\r\n gap: theme.spacing(1.25),\r\n '.topRightIcons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n position: 'absolute',\r\n padding: 0,\r\n gap: '12px',\r\n top: theme.spacing(2),\r\n },\r\n },\r\n '.titleContainer': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n //justifyContent: 'space-between',\r\n //alignItems: 'flex-end',\r\n alignItems: 'center',\r\n gap: '24px',\r\n padding: '0px 32px',\r\n width: '100%',\r\n alignSelf: 'stretch',\r\n //gap: theme.spacing(4.5),\r\n '.titleSubtitle': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n flex: '1 0 0',\r\n // flexDirection: 'column',\r\n // alignItems: 'flex-start',\r\n // padding: 0,\r\n '& .titleAndDescription': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n gap: '4px',\r\n flex: '1 0 0',\r\n '& .titleContent': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'flex-start',\r\n gap: '8px',\r\n alignSelf: 'stretch',\r\n '& .iconAdjustment': {\r\n display: 'flex',\r\n paddingTop: '2px',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n '& .textButton': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n },\r\n },\r\n '& .pageDescription': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n },\r\n '& .subPageDescription': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n gap: '4px',\r\n flex: '1 0 0',\r\n },\r\n },\r\n },\r\n },\r\n '.rightControls': {\r\n display: 'flex',\r\n //flexDirection: 'row',\r\n alignItems: 'center',\r\n //padding: 0,\r\n gap: '8px',\r\n '& .skeleton': {\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n },\r\n },\r\n },\r\n },\r\n}));\r\nexport function Head(props: HeadProps) {\r\n const { t } = useTranslation();\r\n const theme = useTheme();\r\n const {\r\n closable,\r\n useSidePanel,\r\n closePanel,\r\n pageName,\r\n titlePage,\r\n titlePageLoading,\r\n pageLink,\r\n titleTooltip,\r\n isMobile,\r\n disableExpandToggle,\r\n expandPanel,\r\n subTitlePage,\r\n leftTopActions,\r\n rightTopActions,\r\n onSubmit,\r\n showProcessing,\r\n loading,\r\n useSwithActions,\r\n switchState,\r\n isCover,\r\n rightTopActionsLength,\r\n rightActionsLoading,\r\n } = props;\r\n const actionsLength = React.useMemo(() => {\r\n if (rightTopActions !== undefined && rightTopActions.length > 0) {\r\n let res = rightTopActionsLength !== undefined ? rightTopActionsLength : 1;\r\n if (res > rightTopActions.length) {\r\n res = rightTopActions.length;\r\n }\r\n return res;\r\n } else return 0;\r\n }, [rightTopActions, rightTopActionsLength]);\r\n return (\r\n \r\n \r\n

\r\n
\r\n
\r\n
\r\n {pageName && (\r\n
\r\n
\r\n \r\n ) : undefined\r\n }\r\n onClick={() =>\r\n !isMobile &&\r\n useSidePanel &&\r\n !disableExpandToggle &&\r\n expandPanel()\r\n }\r\n >\r\n {pageName}\r\n \r\n {/* \r\n {pageName}\r\n */}\r\n
\r\n
\r\n )}\r\n {(titlePageLoading || titlePage) && (\r\n
\r\n {titlePage && (\r\n \r\n )}\r\n {titlePageLoading && (\r\n \r\n )}\r\n
\r\n )}\r\n\r\n {subTitlePage && (\r\n
\r\n {subTitlePage}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n <>\r\n {!!leftTopActions &&\r\n leftTopActions?.length > 0 &&\r\n leftTopActions?.map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n {rightActionsLoading &&\r\n (!rightTopActions ||\r\n (!!rightTopActions && rightTopActions?.length === 0)) && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!!rightTopActions && rightTopActions?.length > 0 && (\r\n \r\n {rightTopActions\r\n .filter((t, index) => index < actionsLength)\r\n .map(f => (\r\n {f(onSubmit)}\r\n ))}\r\n ind >= actionsLength)\r\n .map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n keepOpen={false}\r\n >\r\n \r\n )}\r\n {useSwithActions && switchState && (\r\n \r\n \r\n \r\n )}\r\n {closable && useSidePanel && (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n
\r\n {showProcessing && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { TitlePage } from './TitlePage';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport { ActionRenderer } from '../PageActions/ActionRender';\r\nimport {\r\n SwitchActions,\r\n SwitchActionsProps,\r\n} from '../PageActions/SwitchActions';\r\nimport styled from 'styled-components';\r\nimport { useTheme } from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport { LinearProgress } from 'app/components/LinearProgress';\r\nimport { useAbsolute } from 'utils/url-utils';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\n\r\nexport interface ShortHeadProps {\r\n closable: boolean | undefined;\r\n useSidePanel: boolean;\r\n closePanel: () => void;\r\n pageName: React.ReactNode;\r\n titlePage: string | undefined;\r\n pageLink: string | undefined;\r\n toPageLink?: string;\r\n titleTooltip: string | undefined;\r\n isMobile: boolean;\r\n disableExpandToggle: boolean | undefined;\r\n expandPanel: () => void;\r\n subTitlePage?: React.ReactNode;\r\n leftTopActions?: ActionRenderer[];\r\n rightTopActions?: ActionRenderer[];\r\n rightTopActionsAsMenu?: boolean;\r\n switchState?: SwitchActionsProps;\r\n useSwithActions?: boolean;\r\n onSubmit?: () => void;\r\n showProcessing?: boolean;\r\n loading: boolean;\r\n isCover?: boolean;\r\n useShortView?: boolean;\r\n hideMenu?: boolean;\r\n}\r\nconst ShortTitleRoot = styled('div')(({ theme }) => ({\r\n '&.page-wrapper-short-title-root': {\r\n padding: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n gap: theme.spacing(1.25),\r\n '.shortTitleContainer': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n padding: theme.spacing(2, 2, 1.5),\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n gap: theme.spacing(0.5),\r\n '.iconAndTitle': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: 0,\r\n width: '100%',\r\n gap: theme.spacing(1.5),\r\n alignSelf: 'center',\r\n },\r\n '.shortRightIcons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n padding: 0,\r\n gap: '8px',\r\n },\r\n },\r\n '.shortSwithContainer': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n alignSelf: 'stretch',\r\n width: '100%',\r\n gap: 10,\r\n padding: theme.spacing(1, 3, 2),\r\n // '.shortSwithButtons': {\r\n // display: 'flex',\r\n // flexDirection: 'row',\r\n // alignItems: 'center',\r\n // width: '100%',\r\n // height: '32px',\r\n // border: `1px solid ${bookitColors.grayscale.graySelection}`,\r\n // background: bookitColors.base.white,\r\n // borderRadius: '6px',\r\n // //padding: theme.spacing(0.25, 0.25),\r\n // //gap: '12px',\r\n // justifyContent: 'stretch',\r\n // },\r\n },\r\n },\r\n}));\r\nexport function ShortHead(props: ShortHeadProps) {\r\n const { t } = useTranslation();\r\n const {\r\n closable,\r\n useSidePanel,\r\n closePanel,\r\n titlePage,\r\n pageLink,\r\n toPageLink,\r\n titleTooltip,\r\n isMobile,\r\n disableExpandToggle,\r\n expandPanel,\r\n rightTopActions,\r\n rightTopActionsAsMenu,\r\n onSubmit,\r\n useSwithActions,\r\n switchState,\r\n showProcessing,\r\n loading,\r\n isCover,\r\n useShortView,\r\n hideMenu,\r\n } = props;\r\n const theme = useTheme();\r\n const topIconsLength = React.useMemo(() => {\r\n return (\r\n (!isMobile && useSidePanel && !disableExpandToggle ? 1 : 0) +\r\n (closable && useSidePanel ? 1 : 0) +\r\n (rightTopActions !== undefined && rightTopActions.length > 0\r\n ? rightTopActions.length === 1 && !rightTopActionsAsMenu\r\n ? 1\r\n : rightTopActions.length === 2 && !rightTopActionsAsMenu\r\n ? 2\r\n : 1\r\n : 0)\r\n );\r\n }, [\r\n closable,\r\n disableExpandToggle,\r\n isMobile,\r\n rightTopActions,\r\n rightTopActionsAsMenu,\r\n useSidePanel,\r\n ]);\r\n const absolutePageLink = useAbsolute(pageLink, toPageLink);\r\n return (\r\n \r\n
\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n {titlePage && (\r\n \r\n )}\r\n \r\n )}\r\n
\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n {rightTopActions !== undefined && rightTopActions.length > 0 && (\r\n <>\r\n {rightTopActions.length === 1 && !rightTopActionsAsMenu ? (\r\n {rightTopActions[0](onSubmit)}\r\n ) : rightTopActions.length === 2 && !rightTopActionsAsMenu ? (\r\n \r\n {rightTopActions[0](onSubmit)}\r\n {rightTopActions[1](onSubmit)}\r\n \r\n ) : (\r\n (\r\n {item(onSubmit)}\r\n )),\r\n ].filter(v => !!v) as JSX.Element[]\r\n }\r\n >\r\n )}\r\n \r\n )}\r\n \r\n {!isMobile &&\r\n absolutePageLink !== undefined &&\r\n (useSidePanel || isCover) &&\r\n !disableExpandToggle && (\r\n {\r\n if (isCover) {\r\n if (!!absolutePageLink) {\r\n window.open(absolutePageLink, '_blank');\r\n }\r\n } else {\r\n expandPanel();\r\n }\r\n }}\r\n >\r\n \r\n \r\n )}\r\n {closable && useSidePanel && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )}\r\n
\r\n
\r\n {useSwithActions && switchState && !loading && (\r\n
\r\n \r\n
\r\n )}\r\n {showProcessing && (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const TopButtonsContainer = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n '.leftButtons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n width: 'auto',\r\n gap: theme.spacing(1),\r\n },\r\n '.rightButtons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n width: 'auto',\r\n gap: theme.spacing(1),\r\n },\r\n}));\r\n","import * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport { ActionRenderer } from '../PageActions/ActionRender';\r\nimport { Body } from 'app/components/Typography';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { useTheme } from '@material-ui/core';\r\nimport { TopButtonsContainer } from '../styled';\r\n\r\nexport interface ButtonsPanelProps {\r\n leftActions?: ActionRenderer[];\r\n rightActions?: ActionRenderer[];\r\n isMobile: boolean;\r\n sidePanelExpanded: boolean;\r\n disableExpandToggle: boolean | undefined;\r\n useSidePanel: boolean;\r\n onSubmit?: () => void;\r\n expandPanel: () => void;\r\n leftActionsMaxLength?: number;\r\n}\r\n\r\nexport function ButtonsPanel(props: ButtonsPanelProps) {\r\n const { t } = useTranslation();\r\n const {\r\n leftActions,\r\n rightActions,\r\n isMobile,\r\n sidePanelExpanded,\r\n disableExpandToggle,\r\n useSidePanel,\r\n onSubmit,\r\n expandPanel,\r\n leftActionsMaxLength = 1,\r\n } = props;\r\n const theme = useTheme();\r\n return (\r\n \r\n
\r\n \r\n {!!leftActions && leftActions?.length > 0 && (\r\n \r\n {leftActions.length > leftActionsMaxLength ? (\r\n \r\n {[...Array(leftActionsMaxLength).keys()].map(x => (\r\n {leftActions[x](onSubmit)}\r\n ))}\r\n {!isMobile && useSidePanel && !disableExpandToggle && (\r\n \r\n \r\n {sidePanelExpanded\r\n ? t(translations.ShowLess)\r\n : t(translations.MoreOptionsMobile)}\r\n \r\n \r\n )}\r\n index > leftActionsMaxLength - 1)\r\n .filter(item => item !== undefined)\r\n .map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n >\r\n \r\n ) : (\r\n \r\n {leftActions?.map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n {!isMobile && useSidePanel && !disableExpandToggle && (\r\n \r\n \r\n {sidePanelExpanded\r\n ? t(translations.ShowLess)\r\n : t(translations.MoreOptionsMobile)}\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n \r\n
\r\n
\r\n <>\r\n {!!rightActions &&\r\n rightActions?.length > 0 &&\r\n rightActions?.map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { useTheme } from '@material-ui/core';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport { ActionRenderer } from '../PageActions/ActionRender';\r\nimport styled from 'styled-components';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport interface TopButtonsPanelProps {\r\n rightTopActions?: ActionRenderer[];\r\n leftTopActions?: ActionRenderer[];\r\n maxLeftTopButtonsLength?: number;\r\n showShortView: boolean;\r\n onSubmit?: () => void;\r\n expandPanel: () => void;\r\n leftActionsLoading?: boolean;\r\n}\r\n\r\nconst TopButtonsContainer = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n paddingInline: theme.spacing(2, 0),\r\n '.leftButtons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n width: 'auto',\r\n gap: theme.spacing(1),\r\n '& .skeleton': {\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n },\r\n },\r\n}));\r\nexport function TopButtonsPanel(props: TopButtonsPanelProps) {\r\n const {\r\n leftTopActions,\r\n showShortView,\r\n onSubmit,\r\n maxLeftTopButtonsLength = 2,\r\n leftActionsLoading,\r\n } = props;\r\n const theme = useTheme();\r\n return (\r\n \r\n
\r\n \r\n {leftActionsLoading &&\r\n (!leftTopActions ||\r\n (!!leftTopActions && leftTopActions?.length === 0)) && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!!leftTopActions && leftTopActions?.length > 0 && (\r\n \r\n {showShortView ? (\r\n \r\n {leftTopActions.length > maxLeftTopButtonsLength ? (\r\n \r\n {leftTopActions\r\n .filter((f, i) => i < maxLeftTopButtonsLength)\r\n .map((f, i) => (\r\n {f(onSubmit)}\r\n ))}\r\n {/* {leftTopActions[0](onSubmit)}\r\n {leftTopActions[1](onSubmit)} */}\r\n index >= maxLeftTopButtonsLength,\r\n )\r\n .map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n >\r\n \r\n ) : (\r\n \r\n {leftTopActions?.map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n {leftTopActions?.map((item, index) => (\r\n {item(onSubmit)}\r\n ))}\r\n \r\n )}\r\n \r\n )}\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import { useTheme } from '@material-ui/core';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport {\r\n FormLeftSection,\r\n FormRightSection,\r\n StyledFormFieldsContainer,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { TopButtonsContainer } from '../styled';\r\n\r\nexport interface FormSkeletonProps {\r\n fullPage: boolean;\r\n}\r\nconst thingsCount = 15;\r\nconst getRandomWidth = () => {\r\n return (Math.random() * 40 + 50).toFixed(0).toString() + '%';\r\n};\r\nexport const ButtonsSkeleton = () => {\r\n const theme = useTheme();\r\n return (\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\nexport const FormSkeleton = (props: FormSkeletonProps) => {\r\n return (\r\n \r\n \r\n {[...Array(thingsCount).keys()].map(i => (\r\n 0.5 ? 'h1' : 'p'}\r\n />\r\n ))}\r\n \r\n \r\n {props.fullPage &&\r\n [...Array(thingsCount).keys()].map(i => (\r\n 0.5 ? 'h1' : 'p'}\r\n />\r\n ))}\r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { ActionRenderer } from './PageActions/ActionRender';\r\nimport { useLayoutSlice } from '../../slice';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectHideNavigation,\r\n selectIsCoverExpanded,\r\n selectIsCoverOpen,\r\n} from '../../slice/selectors';\r\nimport clsx from 'clsx';\r\nimport { CoverWrapper } from '../CoverWrapper';\r\nimport { Head } from './components/Head';\r\nimport { ShortHead } from './components/ShortHead';\r\nimport { ButtonsPanel } from './components/ButtonsPanel';\r\nimport { TopButtonsPanel } from './components/TopButtonsPanel';\r\nimport { SwitchActionsProps } from './PageActions/SwitchActions';\r\nimport { ButtonsSkeleton, FormSkeleton } from './components/FormSkeleton';\r\nimport styled from 'styled-components';\r\nimport { useTheme } from '@material-ui/styles';\r\nimport { bookitShadows } from 'styles/shadows/bookitShadow';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport {\r\n selectIsSubBarCollapsed,\r\n selectShowGlobalServiceGroupFilter,\r\n} from 'app/slice/selectors';\r\nexport type PageContentRenderer = () => React.ReactNode;\r\n\r\nexport interface PageWrapperProps extends CoverProps {\r\n children: React.ReactNode;\r\n pageName?: React.ReactNode;\r\n titlePage?: string;\r\n subTitlePage?: React.ReactNode;\r\n leftActions?: ActionRenderer[];\r\n rightActions?: ActionRenderer[];\r\n rightTopActions?: ActionRenderer[];\r\n leftTopActions?: ActionRenderer[];\r\n onSubmit?: () => void;\r\n onClose?: () => void;\r\n closeSidePanel?: () => void;\r\n closable?: boolean;\r\n useSidePanel: boolean;\r\n loading?: boolean;\r\n confirm?: JSX.Element;\r\n pageLink?: string;\r\n toPageLink?: string;\r\n cover?: React.ReactNode;\r\n disableExpandToggle?: boolean;\r\n titleTooltip?: string;\r\n switchState?: SwitchActionsProps;\r\n useSwitchActions?: boolean;\r\n topProcessing?: boolean;\r\n maxLeftTopButtonsLength?: number;\r\n rightTopActionsAsMenu?: boolean;\r\n hideTitleBar?: boolean;\r\n leftActionsMaxLength?: number;\r\n rightTopActionsLength?: number;\r\n leftActionsLoading?: boolean;\r\n rightActionsLoading?: boolean;\r\n useShortView?: boolean;\r\n hideMenu?: boolean;\r\n id?: string;\r\n}\r\n\r\nexport interface CoverProps {\r\n isCover?: boolean;\r\n closeCover?: () => void;\r\n coverClosed?: boolean;\r\n}\r\n\r\nconst PageWrapperRoot = styled('div')(({ theme }) => ({\r\n '&.page-wrapper-root': {\r\n background: bookitColors.grayscale.grayBackground,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: 0,\r\n borderRadius: 'inherit',\r\n //minWidth: '360px',\r\n gap: 8,\r\n '.sidePanelRoot &': {\r\n background: bookitColors.base.white,\r\n },\r\n '&.covered': {\r\n filter: 'brightness(30%)',\r\n },\r\n '&.cover:not(.covered)': {\r\n // height: '95vh',\r\n height: 'calc(100dvh - 50px)',\r\n //height: '100vh',\r\n '& [class*=\"tableButtonsRootShort\"]': {\r\n maxWidth: '320px',\r\n },\r\n },\r\n '&.baseNavigationHeight': {\r\n height: '97dvh',\r\n },\r\n '&.baseRootUsePanelHeight': {\r\n height: '99.9dvh',\r\n },\r\n '&.baseRootUsePanelShortHeight': {\r\n // height: '97vh',\r\n height: 'calc(100dvh - 50px)',\r\n minWidth: 'unset',\r\n },\r\n '&.baseRootHeight': {\r\n height: '91dvh',\r\n '&.subBarExpanded': {\r\n height: '85dvh',\r\n },\r\n },\r\n '& .content': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n //padding: '8px 0 0',\r\n '&.contentRoot': {\r\n justifyContent: 'space-between',\r\n height: '100%',\r\n overflow: 'hidden',\r\n },\r\n '&.contentMobRoot': {\r\n justifyContent: 'space-between',\r\n padding: theme.spacing(1, 0, 0, 0),\r\n height: '100%',\r\n //height: '90%',\r\n //gap: theme.spacing(2),\r\n flex: '0 1 calc(100% - 50px)',\r\n overflow: 'hidden',\r\n '&.hideTitleBar': {\r\n padding: '0px',\r\n flex: '0 1 100%',\r\n },\r\n },\r\n '&.hideTitleBar': {\r\n padding: '0px',\r\n },\r\n '& .contentContainer': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: 0,\r\n width: '100%',\r\n height: '100%',\r\n position: 'relative',\r\n overflowY: 'auto',\r\n gap: '32px',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n // '&&': {\r\n // background: 'yelow',\r\n // },\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${theme.palette.common.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: theme.palette.common.grayBorders,\r\n },\r\n '&.showShortView': {\r\n gap: '16px',\r\n marginBottom: '16px',\r\n },\r\n },\r\n //TO DO: find a way to add a box-shadow to bottom toolbar in case when content is scrollable so it match to the Figma.\r\n '.bottomToolbar': {\r\n position: 'static',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n background: bookitColors.base.white,\r\n borderRadius: 'unset',\r\n padding: theme.spacing(2, 3, 2, 3),\r\n boxShadow: bookitShadows.shadowBorderTop,\r\n marginBottom: 'env(safe-area-inset-bottom, 50px)',\r\n flexShrink: 0,\r\n flexGrow: 0,\r\n '&.showShortView': {\r\n gap: '8px',\r\n boxShadow: bookitShadows.shadowBorderTop,\r\n },\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const PageWrapper = React.memo(function PageWrapper(\r\n props: PageWrapperProps,\r\n) {\r\n const {\r\n pageName,\r\n titlePage,\r\n subTitlePage,\r\n children,\r\n leftActions,\r\n rightActions,\r\n rightTopActions,\r\n leftTopActions,\r\n loading,\r\n onSubmit,\r\n onClose,\r\n closeSidePanel,\r\n closable,\r\n useSidePanel,\r\n confirm,\r\n pageLink,\r\n toPageLink,\r\n cover,\r\n closeCover,\r\n disableExpandToggle,\r\n titleTooltip,\r\n isCover,\r\n switchState,\r\n useSwitchActions: useSwithActions,\r\n topProcessing,\r\n maxLeftTopButtonsLength,\r\n rightTopActionsAsMenu,\r\n hideTitleBar,\r\n leftActionsMaxLength,\r\n rightTopActionsLength,\r\n leftActionsLoading,\r\n rightActionsLoading,\r\n useShortView,\r\n coverClosed,\r\n hideMenu,\r\n id,\r\n } = props;\r\n // const { t } = useTranslation();\r\n const isMobile = DetectIsMobile();\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const coverExpanded = useSelector(selectIsCoverExpanded);\r\n const hideNavigation = useSelector(selectHideNavigation);\r\n const isCoverOpen = useSelector(selectIsCoverOpen);\r\n const collapsedBar = useSelector(selectIsSubBarCollapsed);\r\n const showGroups = useSelector(selectShowGlobalServiceGroupFilter);\r\n const isCovered = !!cover;\r\n const [isCoverClosed, setIsCoverClosed] = React.useState(\r\n coverClosed,\r\n );\r\n const showShortView = React.useMemo(() => {\r\n return (\r\n isMobile ||\r\n (useSidePanel && !sidePanelExpanded) ||\r\n (isCover && !coverExpanded) ||\r\n useShortView\r\n );\r\n }, [\r\n coverExpanded,\r\n isCover,\r\n isMobile,\r\n sidePanelExpanded,\r\n useShortView,\r\n useSidePanel,\r\n ]);\r\n\r\n const closePanel = () => {\r\n if (isCover) {\r\n closeCover?.();\r\n dispatch(actions.setIsCoverOpen(false));\r\n return;\r\n }\r\n if (closeSidePanel) {\r\n closeSidePanel();\r\n } else {\r\n dispatch(actions.resetSidePanel());\r\n }\r\n if (onClose) {\r\n onClose();\r\n }\r\n };\r\n const expandPanel = () => {\r\n if (isCover) {\r\n dispatch(actions.setIsCoverExpanded(!coverExpanded));\r\n } else {\r\n dispatch(actions.setExpanded(!sidePanelExpanded));\r\n }\r\n };\r\n const onCoveredClick = event => {\r\n if (\r\n isCovered &&\r\n isCoverOpen &&\r\n !!event.target.id &&\r\n event.target.id.indexOf('page-wrapper-root') > -1\r\n ) {\r\n closeCover?.();\r\n dispatch(actions.setIsCoverOpen(false));\r\n }\r\n };\r\n const theme = useTheme();\r\n React.useEffect(() => {\r\n setIsCoverClosed(coverClosed);\r\n }, [coverClosed]);\r\n React.useEffect(() => {\r\n if (isCoverOpen && isCover && isCoverClosed) {\r\n closeCover?.();\r\n dispatch(actions.setIsCoverOpen(false));\r\n setIsCoverClosed(undefined);\r\n }\r\n }, [actions, closeCover, isCoverClosed, dispatch, isCover, isCoverOpen]);\r\n return (\r\n \r\n \r\n {!hideTitleBar && (\r\n \r\n {showShortView ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n {showShortView &&\r\n ((leftTopActions && leftTopActions.length > 0) ||\r\n leftActionsLoading) && (\r\n \r\n )}\r\n {children}\r\n \r\n )}\r\n \r\n \r\n {confirm}\r\n {leftActions && leftActions?.length > 0 && (\r\n \r\n {/* {showShortView &&\r\n !isMobile &&\r\n useSidePanel &&\r\n !disableExpandToggle &&\r\n leftActions &&\r\n leftActions?.length > 1 && (\r\n \r\n {loading ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n \r\n \r\n {sidePanelExpanded\r\n ? t(translations.ShowLess)\r\n : t(translations.ShowMore)}\r\n \r\n \r\n
\r\n )}\r\n
\r\n )} */}\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n
\r\n
\r\n \r\n {useSidePanel && !!cover && (\r\n \r\n {cover}\r\n \r\n )}\r\n \r\n
\r\n );\r\n});\r\n","export enum AssetAttributes {\r\n NotActive,\r\n AssetAccessories,\r\n AssetCat,\r\n AssetCatGroup,\r\n AccountingId,\r\n NickName,\r\n OtherNames,\r\n Type2Counter,\r\n Brand,\r\n Model,\r\n ModelID,\r\n ModelNumber,\r\n Building,\r\n Room,\r\n Experts,\r\n Contacts,\r\n Public,\r\n Raac,\r\n MainSpecRange,\r\n FunctionalCharacteristics,\r\n ElectricalSpecs,\r\n WebLink,\r\n Tags,\r\n Suppliers,\r\n BrandCode,\r\n InternalCode,\r\n POnumber,\r\n Campus,\r\n LifeDate,\r\n ExtraText0,\r\n ExtraText1,\r\n ExtraText2,\r\n ExtraText3,\r\n ExtraText4,\r\n ExtraText5,\r\n ExtraText6,\r\n ExtraText7,\r\n ExtraText8,\r\n ExtraText9,\r\n ExtraText10,\r\n ExtraText11,\r\n ExtraText12,\r\n ExtraText13,\r\n ExtraText14,\r\n ExtraText15,\r\n ExtraInt0,\r\n ExtraInt1,\r\n ExtraInt2,\r\n ExtraInt3,\r\n ExtraInt4,\r\n ExtraDec0,\r\n ExtraDec1,\r\n ExtraDec2,\r\n ExtraDec3,\r\n ExtraDec4,\r\n ExtraBool0,\r\n ExtraBool1,\r\n ExtraBool2,\r\n ExtraBool3,\r\n ExtraBool4,\r\n ExtraUrl0,\r\n ExtraUrl1,\r\n ExtraUrl2,\r\n ExtraUrl3,\r\n ExtraUrl4,\r\n ExtraRichText0,\r\n ExtraRichText1,\r\n ExtraRichText2,\r\n ExtraRichText3,\r\n ExtraRichText4,\r\n ExtraDDL0,\r\n ExtraDDL1,\r\n ExtraDDL2,\r\n ExtraDDL3,\r\n ExtraDDL4,\r\n ExtraDDL5,\r\n ExtraDDL6,\r\n ExtraDDL7,\r\n ExtraDDL8,\r\n ExtraDDL9,\r\n ExtraDDL10,\r\n ExtraDDL11,\r\n ExtraDDL12,\r\n ExtraDDL13,\r\n ExtraDDL14,\r\n ExtraDDL15,\r\n ExtraDate0,\r\n ExtraDate1,\r\n ExtraDate2,\r\n ExtraDate3,\r\n ExtraDate4,\r\n ExtraDate5,\r\n ExtraDate6,\r\n ExtraDate7,\r\n ExtraDate8,\r\n ExtraDate9,\r\n UnderOriginalWarranty,\r\n WarrantyEndDate,\r\n ServiceContract,\r\n GasSource,\r\n ImageName,\r\n Description,\r\n ShortDescription,\r\n // not present on asset search results\r\n LocationsList,\r\n // not present on asset search results\r\n Range,\r\n ExportLicense,\r\n ForceTutoring,\r\n SubLocationsList,\r\n Details,\r\n Classification,\r\n Location,\r\n SectionContacts,\r\n Identifiers,\r\n AdditionalInfo,\r\n SectionLabel7,\r\n SectionLabel8,\r\n SectionLabel9,\r\n SectionLabel10,\r\n Status,\r\n ServiceGroup,\r\n Division,\r\n AvailabilityType,\r\n DOI,\r\n InternalId,\r\n}\r\n","import {\r\n BookitTypographyVariant,\r\n FontStyleOptions,\r\n TypographyStyleOptions,\r\n Variant,\r\n} from '@material-ui/core/styles/createTypography';\r\nimport { CSSProperties } from '@material-ui/styles';\r\nexport const h1: CSSProperties = {\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '40px',\r\n fontStyle: 'normal',\r\n fontWeight: 700,\r\n lineHeight: '141%',\r\n letterSpacing: '-0.4px' /* 56.4px */,\r\n};\r\nexport const h2: CSSProperties = {\r\n //styleName: Bkt/Header 2;\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '32px',\r\n fontStyle: 'normal',\r\n fontWeight: 700,\r\n lineHeight: '146%', ///* 46.72px */\r\n letterSpacing: '-0.4px',\r\n};\r\nexport const h3: CSSProperties = {\r\n //styleName: Bkt/Header 3;\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '24px',\r\n fontStyle: 'normal',\r\n fontWeight: 700,\r\n lineHeight: '160%' /* 38.4px */,\r\n letterSpacing: '-0.2px',\r\n};\r\nexport const h4: CSSProperties = {\r\n //styleName: Bkt/Header 4:\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '20px',\r\n fontStyle: 'normal',\r\n fontWeight: 700,\r\n lineHeight: '160%' /* 32px */,\r\n letterSpacing: '-0.1px',\r\n};\r\nexport const subtitle1: CSSProperties = {\r\n /* Bkt/Subtitle 1 */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '24px',\r\n fontStyle: 'normal',\r\n lineHeight: '160%' /* 38.4px */,\r\n fontWeight: 400,\r\n};\r\nexport const subtitle2: CSSProperties = {\r\n /* Bkt/Subtitle 2 */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '20px',\r\n fontStyle: 'normal',\r\n lineHeight: '160%' /* 32px */,\r\n fontWeight: 400,\r\n};\r\nexport const boldL: CSSProperties = {\r\n /* Bkt/Bold L */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '18px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 25.38px */,\r\n fontWeight: 700,\r\n letterSpacing: '0px',\r\n};\r\nexport const boldM: CSSProperties = {\r\n /* Bkt/Bold M */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '16px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 25.38px */,\r\n fontWeight: 700,\r\n letterSpacing: '0px',\r\n};\r\nexport const boldS: CSSProperties = {\r\n /* Bkt/Bold S */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '14px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 19.74px */,\r\n fontWeight: 700,\r\n letterSpacing: '0.1px',\r\n};\r\nexport const bodyL: CSSProperties = {\r\n /* Bkt/Body L */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '18px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 22.56px */,\r\n fontWeight: 400,\r\n letterSpacing: '0px',\r\n};\r\nexport const bodyM: CSSProperties = {\r\n /* Bkt/Body M */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '16px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 22.56px */,\r\n fontWeight: 400,\r\n letterSpacing: '0px',\r\n};\r\nexport const bodyS: CSSProperties = {\r\n /* Bkt/Body S */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '14px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 19.74px */,\r\n fontWeight: 400,\r\n letterSpacing: '0.1px',\r\n};\r\n\r\nexport const captionBold: CSSProperties = {\r\n /* Bkt/Caption Bold */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '12px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 16.92px */,\r\n fontWeight: 700,\r\n letterSpacing: '0.2px',\r\n};\r\nexport const captionRegular: CSSProperties = {\r\n /* Bkt/Caption */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '12px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 16.92px */,\r\n fontWeight: 400,\r\n letterSpacing: '0.2px',\r\n};\r\nexport const uppercase: CSSProperties = {\r\n /* Bkt/UPPERCASE */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '12px',\r\n fontStyle: 'normal',\r\n lineHeight: '160%' /* 19.2px */,\r\n fontWeight: 400,\r\n letterSpacing: '0.1px',\r\n textTransform: 'uppercase',\r\n};\r\nexport const tipsBold: CSSProperties = {\r\n /* Bkt/Tips Bold */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '10px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 19.2px */,\r\n fontWeight: 700,\r\n letterSpacing: '0.2px',\r\n};\r\nexport const tipsRegular: CSSProperties = {\r\n /* Bkt/Tips Regular */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '10px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 19.2px */,\r\n fontWeight: 400,\r\n letterSpacing: '0.2px',\r\n};\r\n\r\nexport const inputLabelM: CSSProperties = {\r\n /* Components Styles/Input Label - M */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '16px',\r\n fontStyle: 'normal',\r\n lineHeight: '20px' /* 125% */,\r\n fontWeight: 400,\r\n letterSpacing: '0px',\r\n};\r\nexport const inputLabelXS: CSSProperties = {\r\n /* Components Styles/Input Label - XS */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '12px',\r\n fontStyle: 'normal',\r\n lineHeight: '16px' /* 133.333% */,\r\n fontWeight: 400,\r\n letterSpacing: '0px',\r\n};\r\nexport const inputValueM: CSSProperties = {\r\n /* Components Styles/Input - Value M */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '16px',\r\n fontStyle: 'normal',\r\n lineHeight: '20px' /* 125% */,\r\n fontWeight: 400,\r\n letterSpacing: '0.2px',\r\n};\r\nexport const inputValueS: CSSProperties = {\r\n /* Components Styles/Input - Value S */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '14px',\r\n fontStyle: 'normal',\r\n lineHeight: '20px' /* 142.857% */,\r\n fontWeight: 400,\r\n letterSpacing: '0.2px',\r\n};\r\nexport const buttonM: CSSProperties = {\r\n /* Components Styles/Button - M */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '16px',\r\n fontStyle: 'normal',\r\n lineHeight: '20px' /* 125% */,\r\n fontWeight: 600,\r\n letterSpacing: '0.2px',\r\n};\r\nexport const buttonS: CSSProperties = {\r\n /* Components Styles/Button - S */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '14px',\r\n fontStyle: 'normal',\r\n lineHeight: '20px' /* 142.857% */,\r\n fontWeight: 600,\r\n letterSpacing: '0.2px',\r\n};\r\n\r\nexport const bookitTypography: BookitTypographyOptions = {\r\n h1: h1,\r\n h2: h2,\r\n h3: h3,\r\n h4: h4,\r\n subtitle1: subtitle1,\r\n subtitle2: subtitle2,\r\n boldL: boldL,\r\n boldM: boldM,\r\n boldS: boldS,\r\n bodyL: bodyL,\r\n bodyM: bodyM,\r\n bodyS: bodyS,\r\n captionBold: captionBold,\r\n captionRegular: captionRegular,\r\n uppercase: uppercase,\r\n tipsBold: tipsBold,\r\n tipsRegular: tipsRegular,\r\n inputLabelM: inputLabelM,\r\n inputLabelXS: inputLabelXS,\r\n inputValueM: inputValueM,\r\n inputValueS: inputValueS,\r\n buttonM: buttonM,\r\n buttonS: buttonS,\r\n};\r\n\r\nexport const defaultVariantMapping: Partial> = {\r\n h1: 'h1',\r\n h2: 'h2',\r\n h3: 'h3',\r\n h4: 'h4',\r\n h5: 'h5',\r\n h6: 'h6',\r\n subtitle1: 'h6',\r\n subtitle2: 'h6',\r\n body1: 'p',\r\n body2: 'p',\r\n button: 'label',\r\n caption: 'label',\r\n overline: 'label',\r\n};\r\nexport const typographyComponentMapping: Partial<\r\n Record\r\n> = {\r\n h1: 'h1',\r\n h2: 'h2',\r\n h3: 'h3',\r\n h4: 'h4',\r\n bodyL: 'p',\r\n bodyM: 'p',\r\n bodyS: 'p',\r\n boldL: 'p',\r\n boldM: 'p',\r\n boldS: 'p',\r\n buttonM: 'label',\r\n buttonS: 'label',\r\n captionRegular: 'label',\r\n captionBold: 'label',\r\n inputLabelM: 'label',\r\n inputLabelXS: 'label',\r\n inputValueM: 'span',\r\n inputValueS: 'span',\r\n subtitle1: 'p',\r\n subtitle2: 'p',\r\n tipsBold: 'label',\r\n tipsRegular: 'label',\r\n uppercase: 'p',\r\n};\r\nexport const typographyNameMapping: Partial<\r\n Record\r\n> = {\r\n h1: 'Header 1',\r\n h2: 'Header 2',\r\n h3: 'Header 3',\r\n h4: 'Header 4',\r\n bodyL: 'Body L',\r\n bodyM: 'Body M',\r\n bodyS: 'Body S',\r\n boldL: 'Bold L',\r\n boldM: 'Bold M',\r\n boldS: 'Bold S',\r\n buttonM: 'Button M',\r\n buttonS: 'Button S',\r\n captionRegular: 'Caption Regular',\r\n captionBold: 'Caption Bold',\r\n inputLabelM: 'Input Label M',\r\n inputLabelXS: 'Input Label XS',\r\n inputValueM: 'Input Value M',\r\n inputValueS: 'Input Value S',\r\n subtitle1: 'Subtitle 1',\r\n subtitle2: 'Subtitle 2',\r\n tipsBold: 'Tips Bold',\r\n tipsRegular: 'Tips Regular',\r\n uppercase: 'UPPERCASE',\r\n};\r\n\r\nexport interface TypographyOptionMeta {\r\n Name: string;\r\n variant: BookitTypographyVariant;\r\n style: CSSProperties;\r\n}\r\nexport const getTypographyMeta = (): TypographyOptionMeta[] => {\r\n const data: TypographyOptionMeta[] = Object.entries(bookitTypography).map(\r\n ent => {\r\n return {\r\n Name: typographyNameMapping[ent[0]] as string,\r\n style: ent[1] as CSSProperties,\r\n variant: ent[0] as BookitTypographyVariant,\r\n };\r\n },\r\n );\r\n return data;\r\n};\r\nexport interface BookitTypographyOptions\r\n extends Partial<\r\n Record & FontStyleOptions\r\n > {}\r\n","import * as React from 'react';\r\nexport const useEffectOnMount = (effect: React.EffectCallback) => {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n React.useEffect(effect, []);\r\n};\r\nexport const useLayoutEffectOnMount = (effect: React.EffectCallback) => {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n React.useLayoutEffect(effect, []);\r\n};\r\n","/**\r\n *\r\n * auto generated interface for Default.ReservationStatus\r\n *\r\n */\r\n\r\nexport enum ReservationStatus {\r\n Approved = 1,\r\n Pending = 2,\r\n Cancelled = 3,\r\n AllStatus = 4,\r\n CancelledByAdmin = 5,\r\n Done = 6,\r\n NotDone = 7,\r\n DoneWOBooking = 8,\r\n ApprovedOnce = 9,\r\n PendingCoord = 10,\r\n Tentative = 11,\r\n Draft = 12,\r\n NA = 13,\r\n}\r\nexport type ReservationStatusUnion = keyof typeof ReservationStatus;\r\nexport const ReservationStatusUnionArray: Array = [\r\n 'Approved',\r\n 'Pending',\r\n 'Cancelled',\r\n 'AllStatus',\r\n 'CancelledByAdmin',\r\n 'Done',\r\n 'NotDone',\r\n 'DoneWOBooking',\r\n 'ApprovedOnce',\r\n 'PendingCoord',\r\n 'Tentative',\r\n 'Draft',\r\n 'NA',\r\n];\r\n","import { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { CheckEntity } from 'app/components/CheckBoxGroup';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { IRelatedRefernceTypeDto } from 'types/IRelatedRefernceTypeDto';\r\nimport * as Yup from 'yup';\r\n\r\nexport const EntityNumberSchema: Yup.SchemaOf> = Yup.object({\r\n Id: Yup.number().required(),\r\n Name: Yup.string().ensure(),\r\n});\r\nexport const EntityStringSchema: Yup.SchemaOf> = Yup.object({\r\n Id: Yup.string().required(),\r\n Name: Yup.string().ensure(),\r\n});\r\nexport const IdentifiableNumberSchema: Yup.SchemaOf> =\r\n Yup.object({\r\n Id: Yup.number().required(),\r\n });\r\nexport const IdentifiableStringSchema: Yup.SchemaOf> =\r\n Yup.object({\r\n Id: Yup.string().required(),\r\n });\r\nexport const CheckEntityShema: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().defined(),\r\n Name: Yup.string().ensure(),\r\n checked: Yup.boolean().default(false),\r\n disabled: Yup.boolean().default(undefined),\r\n});\r\nconst referencesSchema = Yup.array().of(\r\n Yup.mixed() as Yup.SchemaOf,\r\n);\r\nconst inventoryBatchesSchema = Yup.array().of(\r\n Yup.mixed() as Yup.SchemaOf,\r\n);\r\nexport const OfflineServiceTypeShema: Yup.SchemaOf =\r\n Yup.object({\r\n Id: Yup.number().defined(),\r\n Name: Yup.string().ensure(),\r\n ServiceGroupId: Yup.number().defined(),\r\n ServiceTypeId: Yup.number().defined().default(2),\r\n Active: Yup.boolean().default(true),\r\n HideProjects: Yup.boolean().default(false),\r\n IntQuantityOnly: Yup.boolean().default(false),\r\n UnitTypeID: Yup.number().nullable().default(null),\r\n UnitTypeName: Yup.string().ensure(),\r\n AllowToUser: Yup.boolean().default(false),\r\n Inventory: Yup.number().defined().default(1),\r\n DefaultQuantity: Yup.number().nullable().notRequired().default(null),\r\n ReservationOverlappingInventory: Yup.number()\r\n .nullable()\r\n .notRequired()\r\n .default(null),\r\n IsAdmin: Yup.boolean().default(false),\r\n AllowedBudgets: Yup.array().of(Yup.number().required()),\r\n StaffOnly: Yup.boolean().default(false),\r\n BudgetsTurnedOn: Yup.boolean().default(false),\r\n NotLessThanZero: Yup.boolean().default(false),\r\n TrackInventory: Yup.boolean().default(false),\r\n InventoryBatchesEnabled: Yup.boolean().default(false),\r\n InventoryBatches: inventoryBatchesSchema,\r\n RelatedReferences: referencesSchema,\r\n });\r\nexport const ServiceGroupEntitySchema = EntityNumberSchema;\r\nexport const BudgetEntitySechema = EntityNumberSchema;\r\nexport const BudgetExperimentEntitySechema = EntityNumberSchema;\r\nexport const InstituteProjectEntitySechema = EntityNumberSchema;\r\nexport const PaymentMethodEntitySchema = EntityNumberSchema;\r\nexport const UserEntitySchema = EntityStringSchema;\r\nexport const OnlineServiceEntitySchema = EntityNumberSchema;\r\nexport const OfflineServiceTypeEntitySchema = EntityNumberSchema;\r\nexport const FeeTypeEntitySchema = EntityNumberSchema;\r\nexport const UserGroupEntitySchema = EntityStringSchema;\r\nexport const ServiceTypeSchema = EntityNumberSchema;\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { TextFieldProps } from '../TextField';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport BaseTextField from '../BasicInputs/BaseTextField';\r\nimport clsx from 'clsx';\r\n\r\nexport const FormTextField = ({\r\n label,\r\n onChange,\r\n onBlur,\r\n value,\r\n name,\r\n error,\r\n helperText,\r\n ...props\r\n}: FieldHookConfig &\r\n Omit &\r\n IFieldProps & {\r\n minInputWidth?: 'xs' | 'small' | 'medium' | 'large' | 'default';\r\n textBoxWidth?: 'xs' | 'small' | 'medium' | 'large' | 'xl' | 'default';\r\n }) => {\r\n const [field, meta] = useField({ name, ...props });\r\n const handleChange = e => {\r\n if (onChange !== undefined) {\r\n onChange(e);\r\n }\r\n field.onChange(e);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n {props.info ? : null}\r\n {props.InputProps?.endAdornment}\r\n \r\n ),\r\n }}\r\n className={clsx({\r\n 'text-box-width-xs': props.textBoxWidth === 'xs',\r\n 'text-box-width-small': props.textBoxWidth === 'small',\r\n 'text-box-width-medium': props.textBoxWidth === 'medium',\r\n 'text-box-width-large': props.textBoxWidth === 'large',\r\n 'text-box-width-default': props.textBoxWidth === 'default',\r\n 'text-box-width-xl': props.textBoxWidth === 'xl',\r\n 'number-field': props.type === 'number',\r\n })}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { RootStateKeyType } from '../types/injector-typings';\r\nimport {\r\n createSlice as createSliceOriginal,\r\n SliceCaseReducers,\r\n CreateSliceOptions,\r\n} from '@reduxjs/toolkit';\r\n\r\n/* Wrap createSlice with stricter Name options */\r\n\r\n/* istanbul ignore next */\r\nexport const createSlice = <\r\n State,\r\n CaseReducers extends SliceCaseReducers,\r\n Name extends RootStateKeyType,\r\n>(\r\n options: CreateSliceOptions,\r\n) => {\r\n return createSliceOriginal(options);\r\n};\r\n","import { useState, useMemo, SetStateAction } from 'react';\r\nimport { getLogger } from 'utils/logLevel';\r\n\r\nexport type AsyncSetState = (\r\n nextState: SetStateAction | Promise>,\r\n cancelToken?: { mounted: boolean },\r\n) => void;\r\n\r\nexport type AsyncExtendState = (\r\n partialState:\r\n | SetStateAction>\r\n | Promise>>,\r\n) => void;\r\n\r\n/**\r\n * A hook similar to React's `useState` which allows you to also pass promises which resolve to the next state.\r\n *\r\n * Also returns an extra method which extends the current state, synchronously and/or asynchronously.\r\n * For the current state to be extended, it must first be a non-null value.\r\n *\r\n * Example:\r\n * ```ts\r\n * interface State {\r\n * foo: string\r\n * bar: string\r\n * }\r\n *\r\n * const [ state, setState, extendState ] = useAsyncExtendedState({\r\n * foo: 'foo',\r\n * bar: 'bar'\r\n * })\r\n *\r\n * // This works as usual.\r\n * setState({ foo: 'Hello', bar: 'World!' })\r\n * setState(state => ({ foo: 'Hello', bar: 'World!' }))\r\n *\r\n * // This also works.\r\n * const fetchState = () => API.client.get('data').then(response => {\r\n * return response.data\r\n *\r\n * // or return (state: State) => {\r\n * // return response.data\r\n * // }\r\n * })\r\n *\r\n * // The state will eventually be set to the asynchronously resolved value.\r\n * setState(fetchState())\r\n *\r\n * // Or extend the state immediately.\r\n * extendState({ foo: 'Hello' })\r\n * extendState(state => ({ bar: 'World!' }))\r\n *\r\n * // Or extend the state asynchronously.\r\n * const fetchPartialState = () => API.client.get>('data').then(response => {\r\n * return response.data\r\n *\r\n * // or return (state: State) => {\r\n * // return response.data\r\n * // }\r\n * })\r\n *\r\n * // The state will eventually be extended by the asynchronously resolved value.\r\n * extendState(fetchPartialState())\r\n * ```\r\n */\r\nexport const useAsyncExtendedState = (\r\n initialState: State,\r\n): [State, AsyncSetState, AsyncExtendState] => {\r\n const [state, setState] = useState(initialState);\r\n\r\n const asyncSetState: AsyncSetState = useMemo(\r\n () => async (nextState, cancelToken) => {\r\n const initialNextState = nextState;\r\n\r\n try {\r\n if (nextState instanceof Promise) {\r\n nextState = await nextState;\r\n\r\n if (nextState === initialNextState) {\r\n // there was an error but it was caught by something else - i.e., nextState.catch()\r\n throw new Error(`Uncatchable error.`);\r\n }\r\n }\r\n if (cancelToken && !cancelToken.mounted) return;\r\n\r\n setState(state => {\r\n if (typeof nextState === `function`) {\r\n nextState = (nextState as (state: State) => State)(state);\r\n }\r\n\r\n log.debug('asyncSetState', nextState);\r\n return nextState as State;\r\n });\r\n } catch (error) {}\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [],\r\n );\r\n\r\n const asyncExtendState: AsyncExtendState = useMemo(\r\n () => async partialState => {\r\n const initialExtendState = partialState;\r\n\r\n try {\r\n if (partialState instanceof Promise) {\r\n partialState = await partialState;\r\n\r\n if (partialState === initialExtendState) {\r\n // there was an error but it was caught by something else - i.e., partialState.catch()\r\n throw new Error(`Uncatchable error.`);\r\n }\r\n }\r\n\r\n setState(state => {\r\n if (typeof partialState === `function`) {\r\n partialState = (partialState as (state: State) => Partial)(\r\n state,\r\n );\r\n }\r\n\r\n const nextState = { ...state, ...partialState } as State;\r\n log.debug('asyncExtendState', partialState, nextState);\r\n return nextState;\r\n });\r\n } catch (err) {}\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [],\r\n );\r\n\r\n return [state, asyncSetState, asyncExtendState];\r\n};\r\n\r\nconst log = getLogger('useAsyncExtendedState');\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) =>\r\n state.offlineServiceState || initialState;\r\n\r\nexport const selectProcessing = createSelector(\r\n [selectSlice],\r\n state => state.processing,\r\n);\r\nexport const selectInitConsumablesProcessing = createSelector(\r\n [selectSlice],\r\n state => state.consumablesProcessing,\r\n);\r\nexport const selectService = createSelector(\r\n [selectSlice],\r\n state => state.detailsState,\r\n);\r\nexport const selectServiceProcessing = createSelector(\r\n [selectService],\r\n state => state.processing,\r\n);\r\nexport const selectServicenError = createSelector(\r\n [selectService],\r\n state => state.error,\r\n);\r\nexport const selectServiceHasError = createSelector(\r\n [selectService],\r\n state => state.hasErrors,\r\n);\r\nexport const selectServiceCompleted = createSelector(\r\n [selectService],\r\n state => state.completed,\r\n);\r\nexport const selectServiceData = createSelector(\r\n [selectService],\r\n state => state.data,\r\n);\r\nexport const selectConnectedInitState = createSelector(\r\n [selectSlice],\r\n state => state.connectedDataState,\r\n);\r\nexport const selectServiceChangeState = createSelector(\r\n [selectSlice],\r\n state => state.serviceChangeResultState,\r\n);\r\nexport const selectServiceChangeStateLoading = createSelector(\r\n [selectSlice],\r\n state => state.serviceChangeStateLoading,\r\n);\r\n\r\nexport const selectFieldHandler = createSelector(\r\n [selectSlice],\r\n state => state.valueHandler,\r\n);\r\nexport const selectCreditState = createSelector(\r\n [selectSlice],\r\n state => state.creditState,\r\n);\r\nexport const selectCredit = createSelector(\r\n [selectCreditState],\r\n state => state.data,\r\n);\r\nexport const selectCreditProcessing = createSelector(\r\n [selectCreditState],\r\n state => state.processing,\r\n);\r\nexport const selectCreditCompleted = createSelector(\r\n [selectCreditState],\r\n state => state.completed,\r\n);\r\nexport const selectHasCharges = createSelector(\r\n [selectSlice],\r\n state => state.hasCharges,\r\n);\r\nexport const selectConsumablesState = createSelector(\r\n [selectSlice],\r\n state => state.consumablesState,\r\n);\r\nexport const selectSavedReservationService = createSelector(\r\n [selectSlice],\r\n state => state.savedReservationService,\r\n);\r\nexport const selectConsumablesProcessing = createSelector(\r\n [selectConsumablesState],\r\n state => state.processing,\r\n);\r\nexport const selectConsumablesData = createSelector(\r\n [selectConsumablesState],\r\n state => state.data,\r\n);\r\nexport const selectConsumablesError = createSelector(\r\n [selectConsumablesState],\r\n state => state.error,\r\n);\r\nexport const selectConsumablesHasErrors = createSelector(\r\n [selectConsumablesState],\r\n state => state.hasErrors,\r\n);\r\nexport const selectConsumablesCompleted = createSelector(\r\n [selectConsumablesState],\r\n state => state.completed,\r\n);\r\nexport const selectConsumablesValueHandler = createSelector(\r\n [selectSlice],\r\n state => state.consumablesValueHandler,\r\n);\r\nexport const selectSelectedServiceType = createSelector(\r\n [selectSlice],\r\n state => state.selectedServiceTypes,\r\n);\r\nexport const selectEditCreatableService = createSelector(\r\n [selectSlice],\r\n state => state.editCreatableService,\r\n);\r\nexport const selectBarcodeScanned = createSelector(\r\n [selectSlice],\r\n state => state.barcodeScanned,\r\n);\r\nexport const selectRefreshConsumableServices = createSelector(\r\n [selectSlice],\r\n state => state.refeshOfflineServices,\r\n);\r\nexport const selectStockRenewalsState = createSelector(\r\n [selectSlice],\r\n state => state.stockRenewalState,\r\n);\r\nexport const selectStockRenewalProcessing = createSelector(\r\n [selectStockRenewalsState],\r\n state => state.processing,\r\n);\r\nexport const selectStockRenewalData = createSelector(\r\n [selectStockRenewalsState],\r\n state => state.data,\r\n);\r\nexport const selectStockRenewalError = createSelector(\r\n [selectStockRenewalsState],\r\n state => state.error,\r\n);\r\nexport const selectStockRenewalHasErrors = createSelector(\r\n [selectStockRenewalsState],\r\n state => state.hasErrors,\r\n);\r\nexport const selectStockRenewalCompleted = createSelector(\r\n [selectStockRenewalsState],\r\n state => state.completed,\r\n);\r\nexport const selectStockRenewalValueHandler = createSelector(\r\n [selectSlice],\r\n state => state.stockRenewalValueHandler,\r\n);\r\nexport const selectRenewStockState = createSelector(\r\n [selectSlice],\r\n state => state.renewStockState,\r\n);\r\nexport const selectRenewStockProcessing = createSelector(\r\n [selectRenewStockState],\r\n state => state.processing,\r\n);\r\nexport const selectRenewStockData = createSelector(\r\n [selectRenewStockState],\r\n state => state.data,\r\n);\r\nexport const selectRenewStockError = createSelector(\r\n [selectRenewStockState],\r\n state => state.error,\r\n);\r\nexport const selectRenewStockHasErrors = createSelector(\r\n [selectRenewStockState],\r\n state => state.hasErrors,\r\n);\r\nexport const selectRenewStockCompleted = createSelector(\r\n [selectRenewStockState],\r\n state => state.completed,\r\n);\r\nexport const selectRenewStockValueHandler = createSelector(\r\n [selectSlice],\r\n state => state.renewStockValueHandler,\r\n);\r\nexport const selectIsEdit = createSelector(\r\n [selectSlice],\r\n state => state.isEdit,\r\n);\r\n\r\nexport const selectInventoryBatchState = createSelector(\r\n [selectSlice],\r\n state => state.inventoryBatchState,\r\n);\r\nexport const selectInventoryBatchProcessing = createSelector(\r\n [selectInventoryBatchState],\r\n state => state.processing,\r\n);\r\nexport const selectInventoryBatchData = createSelector(\r\n [selectInventoryBatchState],\r\n state => state.data,\r\n);\r\nexport const selectInventoryBatchError = createSelector(\r\n [selectInventoryBatchState],\r\n state => state.error,\r\n);\r\nexport const selectInventoryBatchHasErrors = createSelector(\r\n [selectInventoryBatchState],\r\n state => state.hasErrors,\r\n);\r\nexport const selectInventoryBatchCompleted = createSelector(\r\n [selectInventoryBatchState],\r\n state => state.completed,\r\n);\r\nexport const selectInventoryBatchValueHandler = createSelector(\r\n [selectSlice],\r\n state => state.inventoryBatchValueHandler,\r\n);\r\nexport const selectInventoryBatchIsEdit = createSelector(\r\n [selectSlice],\r\n state => state.batchIsEdit,\r\n);\r\nexport const selectInventoryBatchEditable = createSelector(\r\n [selectSlice],\r\n state => state.inventoryBatchEditable,\r\n);\r\nexport const selectCreatableService = createSelector(\r\n [selectSlice],\r\n state => state.getCreatableService,\r\n);\r\nexport const selectChargableServices = createSelector(\r\n [selectSlice],\r\n state => state.chargableServices,\r\n);\r\n","import {\r\n DownloadFileProps,\r\n ListMessagesProps,\r\n OpenDetailsProps,\r\n} from './Actions';\r\n\r\nexport enum SnackBarActionType {\r\n refreshTable = 1,\r\n}\r\nexport enum SnackBarMessageType {\r\n openSidepanelDetails = 1,\r\n showLinkMessage = 2,\r\n HTML = 3,\r\n messageList = 4,\r\n fileDownload = 5,\r\n}\r\nexport type SnackBarMessageProps =\r\n | OpenDetailsProps\r\n | ListMessagesProps\r\n | DownloadFileProps;\r\n","/**\r\n * \"Allowed\" entries from .net's global::GlobalDbSettings.GlobalStringNames enum\r\n */\r\nexport enum AllowedSettings {\r\n 'DefaultQuickAssetSearchAction',\r\n 'UserFormatResult',\r\n 'InstrumentOptionsInCalender',\r\n 'CalendarPublicIntegrationFeed',\r\n 'AllowUsersToOpt_Out',\r\n 'InternalUserIdFieldLength',\r\n 'InternalUserId2FieldLength',\r\n 'ServiceGroupAdminsCanManageUsers',\r\n 'EnableServiceGroupAffilationManagment',\r\n 'FavIconImg',\r\n 'FavIconTitle',\r\n 'TopMenuBorder',\r\n 'TopCustomerLogo',\r\n 'TopCustomerLogoLink',\r\n 'DeleteEmailNotficationsMonth',\r\n 'AssetCatEnabled',\r\n 'TrainingActivationAllowedBySGAOnly',\r\n 'TrainingCreatedAsNotActiveByDefault',\r\n 'HideInstrumentRestrictions',\r\n 'EnableReservationSidePanel',\r\n 'PriceSheetBy',\r\n 'SGACreateProjects',\r\n 'UGFCreateProjects',\r\n 'HideRoomFloorTextBoxes',\r\n 'EnableInvoicePartialEvents',\r\n 'ISOCurrencySymbol',\r\n 'AccumulateNewChargesToExistingInvoice',\r\n 'CreateInovicesBy',\r\n 'CreateInvoiceSyncLimit',\r\n 'AllowMultiServiceGroupInvoices',\r\n 'ReservationUserGroupGroupByBudgetUserGroup',\r\n 'AllowedFeeTypes',\r\n 'InvoiceFromBatchScreenOnly',\r\n 'AllowExternalFundingInvoiceFinExport',\r\n 'AllowExternalFundingInvoicePdfExport',\r\n 'EnableFinAccountManagment',\r\n 'AllowUsersToViewCharges',\r\n 'GlobalInvoiceVAT',\r\n 'NamePrefixMandatory',\r\n 'AssetCatGroupEnabled',\r\n 'FinSystemInvoicesEnviroment',\r\n 'HideDymoPrinterMenu',\r\n 'WarnDefaultBudgetEnabled',\r\n 'DymoPrinterSupported',\r\n 'ZebraPrinterSupported',\r\n 'ShowDefaultBudgetOnUserProfile',\r\n 'BudgetLimited_ByUsers',\r\n 'AllowPartialMultipleProjectCharges',\r\n 'AllowPartialSingleProjectCharges',\r\n 'HideTrainingSessionsSettings',\r\n 'HideAssistedReservationsSettings',\r\n 'HideCalcPriceOnOfflineService',\r\n 'CrossInstrumentTraining',\r\n 'HideReferenceFieldInReservationDetails',\r\n 'MultipleInstrumentReservations',\r\n 'InstrumentAvailabilityDropDown',\r\n 'MinBarcodeLength',\r\n 'ShowDashboardAnnouncement',\r\n 'DashboardAnnouncement',\r\n 'RoomUserRoleEnabled',\r\n 'GlobalPriceSheetPeriods',\r\n 'AdvancedAssetSearchFilterAttributes',\r\n 'AdvancedAssetPublicSearchFilterAttributes',\r\n 'WarrantyEndDateVisibleAllUsers',\r\n 'OnlyAdminCanImportAssets',\r\n 'Help_Dashboard',\r\n 'AllowWorkflowBooking',\r\n 'ProjectsAreOptional',\r\n 'MultipleTentativeReservationsUnderWorkflowBooking',\r\n 'CalendarTimelineEmptySlotClickSettings',\r\n 'NoDashboardRedirectOnCoreSelection',\r\n 'HideTopServiceGroupFilter',\r\n 'TerminateReservation',\r\n 'CalendarServicesPickerCapacity',\r\n 'MaximumTimelineRowsLimit',\r\n 'IntervalRefreshingCalendar',\r\n 'ShouldAllowCustomDashboards',\r\n 'EnableLegacyScheduler',\r\n 'EnableTwoDaysTimelineButton',\r\n 'AutomaticAssetNamings',\r\n 'EnableCustomDaysTimelineButton',\r\n 'DefaultCustomDaysTimelineValue',\r\n 'SkipCoreSelectionScreen',\r\n 'SchedulerReservationBodyTemplate',\r\n 'SchedulerReservationTooltipTemplate',\r\n 'IncludeCustomFormInSchedulerReservationTooltip',\r\n 'AllowToRemoveFromMultipleReservation',\r\n 'DraftReservationsEnabled',\r\n 'UserReservationsRestricted',\r\n 'UsageKioskRoleEnabled',\r\n 'RequestMilestones',\r\n 'MandatoryOfflineServicesOnTrainingSignUps',\r\n 'NewUsersSignupForm',\r\n 'PurchaseOrderLengthSetting',\r\n 'HideLinkToRegistrationForm',\r\n 'SessionTimeout_Persistent',\r\n 'Help_Login',\r\n 'HideReservationCollaborators',\r\n 'LoginScreenCompanyLogo',\r\n 'LoginScreenCompanyLogoLink',\r\n 'LoginScreenCompanyLogoHeight',\r\n 'ShowForgotPassword',\r\n 'BrowseByUnit',\r\n 'MaxRecordsAllowedAssetImport',\r\n 'DoNotAllowReservationUserChangeByStaff',\r\n 'AssetImageSizeType',\r\n 'AllowToSwitchToOtherSites',\r\n 'ExternalSwitchTitle1',\r\n 'ExternalSwitchUrl1',\r\n 'ExternalSwitchTitle2',\r\n 'ExternalSwitchUrl2',\r\n 'ExternalSitesIcon',\r\n 'RequireSupplierExternalId',\r\n 'MaximumImagesPerOneUpload',\r\n 'MaxLoadedAssetImageMbSize',\r\n 'ModifyReservationNameForUsers',\r\n 'HideCommentSharingForAllUsers',\r\n 'AllowLargeFilesUpload',\r\n 'AssetInventoryDaysWithoutVerification',\r\n 'QRCodeBaseLength', // Asset Related\r\n 'SideBarQuickActions',\r\n 'LimitServiceGroupLicenses',\r\n 'Help_ReservationHistory',\r\n 'Help_UsageHistory',\r\n 'Help_OtherServices',\r\n 'Help_Training',\r\n 'Help_Incidents',\r\n 'Help_ServiceGroupRegistration',\r\n 'BudgetLimited_ByUsers_UserAmountCap',\r\n 'BudgetLimited_ByUsers_UserWorkPackage',\r\n 'SSOuserFirstLogin',\r\n 'SSOuserFirstLoginWithOrWithoutUG',\r\n 'BudgetLimited_ByUsers_UserCostCenter',\r\n 'ServiceRequestReservations',\r\n 'NotifyUpcomingReservations',\r\n 'EmailUpcomingReservationsDailyDigest',\r\n 'UpcomingReservationsSpecificInstrumentAllowed',\r\n 'AddUsersFromAD',\r\n 'ShowDefaultUserGroupOnUserProfile',\r\n 'UserServiceGroupComments',\r\n 'ConfirmPricing',\r\n 'UserLabTechComments',\r\n 'DisplayEditUserDetails',\r\n 'OpenUserProfileOnSidePanel',\r\n 'ReservationTimeout',\r\n 'HideDashboardSubMenu',\r\n 'OpenAssetsInSidePanel',\r\n 'StaffRetroDaysPerServiceGroup',\r\n 'DisablePublicationsModule',\r\n 'OnlineBudgetsStatusByServiceGroups',\r\n 'TwilioToken',\r\n 'TwilioAccountSid',\r\n 'ShowIncomeAccountSettings',\r\n 'ShowUsersToServiceGroupAdmins',\r\n 'ShowBudgetsScreenFromUsers',\r\n 'EnableServiceGroupRegistration',\r\n 'EnablePartialCancellationFees',\r\n 'EnableForbiddenOverlaps',\r\n 'AllowManualChargesOutsideInvoice',\r\n 'ManualChargesShouldAutomaticallyGenerateInvoices',\r\n 'MaximumEmailRecipients',\r\n 'UserAccessToBudgets',\r\n 'HideRepetitiveReservations',\r\n}\r\n","/**\r\n * Formats string similar to .net string.Format\r\n * @param s format string\r\n * @param params interpolated values\r\n */\r\nexport function stringFormat(s, ...args: any) {\r\n return s.replace(/{(\\d+)}/g, function (match, number) {\r\n return typeof args[number] != 'undefined' ? args[number] : match;\r\n });\r\n}\r\n\r\n/**\r\n * Removes html tags and leaves only the text\r\n * @param value html text\r\n * @returns plain text without tags\r\n */\r\nexport function removeHtml(value: string) {\r\n return value.replace(/<[^>]+>/g, '');\r\n}\r\n\r\nexport function tryParseWithoutNaN(parse: (value: string) => number) {\r\n return (value: string) => {\r\n const x = parse(value);\r\n if (isNaN(x)) {\r\n return undefined;\r\n } else {\r\n return x;\r\n }\r\n };\r\n}\r\n\r\nexport function tryParse(\r\n parse: (value: string) => TResult,\r\n): (value: string | null | undefined) => TResult | undefined {\r\n return (value: string | null | undefined) => {\r\n if (value === null) {\r\n return undefined;\r\n }\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n try {\r\n const x = parse(value);\r\n return x;\r\n } catch {\r\n return undefined;\r\n }\r\n };\r\n}\r\nexport function stringSplit(value: string, separator?: string) {\r\n if (separator === undefined) {\r\n separator = ',';\r\n let result = value.split(separator);\r\n if (result.length <= 1) {\r\n separator = '|';\r\n return value.split(separator);\r\n } else {\r\n return result;\r\n }\r\n }\r\n\r\n return value.split(separator);\r\n}\r\n/**\r\n * Tries to parse string-like value.\r\n * Usefull to reduce bloat when an integer value needs to be converted to number without resorting to null/undefined checks.\r\n * @param value string/null/undefined\r\n * @returns number if it's int-like or undefined otherwise\r\n */\r\nexport function tryParseInt(value: string | null | undefined) {\r\n return tryParse(tryParseWithoutNaN(parseInt))(value);\r\n}\r\n\r\nexport function tryParseFloat(value: string | null | undefined) {\r\n return tryParse(tryParseWithoutNaN(parseFloat))(value);\r\n}\r\nexport function tryParsePositiveFloat(value: string | null | undefined) {\r\n return tryParse(value => {\r\n const x = parseFloat(value);\r\n if (x > 0) {\r\n return x;\r\n }\r\n })(value);\r\n}\r\n\r\nexport function tryParseBool(value: string | null | undefined) {\r\n return tryParse(value => value.toLowerCase() === 'true')(value);\r\n}\r\nexport function isNumericPositive(value: string): boolean {\r\n let res = /^\\d+$/.test(value);\r\n return res === true;\r\n}\r\n\r\nexport function parseFirstLastName(input: string) {\r\n var fullName = input || '';\r\n var result = {\r\n name: '',\r\n lastName: '',\r\n secondLastName: '',\r\n };\r\n\r\n if (fullName.length > 0) {\r\n var nameTokens =\r\n fullName.match(\r\n /[A-ZÁ-ÚÑÜ][a-zá-úñü]+|([aeodlsz]+\\s+)+[A-ZÁ-ÚÑÜ][a-zá-úñü]+/g,\r\n ) || [];\r\n\r\n if (nameTokens.length > 3) {\r\n result.name = nameTokens.slice(0, 2).join(' ');\r\n } else {\r\n result.name = nameTokens.slice(0, 1).join(' ');\r\n }\r\n\r\n if (nameTokens.length > 2) {\r\n result.lastName = nameTokens.slice(-2, -1).join(' ');\r\n result.secondLastName = nameTokens.slice(-1).join(' ');\r\n } else {\r\n result.lastName = nameTokens.slice(-1).join(' ');\r\n result.secondLastName = '';\r\n }\r\n }\r\n return result;\r\n}\r\n","import { IconProp } from 'app/AllIcons';\r\nimport * as React from 'react';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { ActionButton } from '../ActionButton';\r\nimport { ActionIconButton } from '../ActionIconButton';\r\nimport { ButtonsVariant } from '../Button';\r\n\r\nexport interface TopActionButtonProps {\r\n onClick?: React.MouseEventHandler;\r\n disabled?: boolean;\r\n startIcon?: IconProp;\r\n endIcon?: IconProp;\r\n icon: IconProp;\r\n text: string;\r\n title?: string;\r\n variant?: ButtonsVariant;\r\n size?: 'large' | 'medium' | 'small' | 'xs';\r\n shape?: 'circle' | 'square';\r\n customIcon?: React.ReactNode;\r\n href?: string | IPathAndQuery;\r\n to?: string;\r\n noChangeOnMobile?: boolean;\r\n target?: string;\r\n id?: string;\r\n fullWidth?: boolean;\r\n isIconButton?: boolean;\r\n processing?: boolean;\r\n}\r\n\r\nexport function TopActionButton(props: TopActionButtonProps) {\r\n const {\r\n onClick,\r\n disabled,\r\n startIcon,\r\n endIcon,\r\n icon,\r\n text,\r\n title,\r\n variant,\r\n size,\r\n shape,\r\n customIcon,\r\n noChangeOnMobile,\r\n id,\r\n isIconButton,\r\n fullWidth,\r\n processing,\r\n ...other\r\n } = props;\r\n const isMobile = DetectIsMobile();\r\n const action =\r\n (isMobile || isIconButton) && !noChangeOnMobile ? (\r\n \r\n ) : (\r\n \r\n );\r\n return action;\r\n}\r\n","import { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport * as React from 'react';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport clsx from 'clsx';\r\nimport { TFunctionResult } from 'i18next';\r\n\r\nexport interface InfoIconProps {\r\n title: NonNullable | TFunctionResult;\r\n className?: string;\r\n error?: boolean;\r\n}\r\n\r\nexport const InfoIcon = (props: InfoIconProps) => {\r\n const { title, className, error } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IServiceRequestDto } from 'api/odata/generated/entities/IServiceRequestDto';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { TableState } from 'react-table';\r\nimport { Entity, IAsyncValue, Identifiable } from 'types/common';\r\nimport { PartialRecord } from 'types/PartialRecord';\r\nimport { RunTypesUnion } from '../../components/RunTypePicker';\r\nimport { IServiceRequestMilestoneDto } from 'api/odata/generated/entities/IServiceRequestMilestoneDto';\r\nimport { Timestamp } from 'types/Timestamp';\r\nimport { ServiceRequestMilestoneChargeType } from '../../components/ServiceRequestMilestoneChargeDetails';\r\nimport { IUserBaseDto } from 'api/odata/generated/entities/IUserBaseDto';\r\nimport { ServiceRequestMilestoneStatusesUnion } from 'api/odata/generated/enums/ServiceRequestMilestoneStatuses';\r\nimport { IOpenSidePanelPayload } from 'app/Layout/FrontendLayout/slice';\r\nimport { IConsumableServiceDto } from 'api/odata/generated/entities/IConsumableServiceDto';\r\nimport { PromiseStatus } from 'app/hooks/usePromise';\r\nimport { IServiceRequestRowDto } from 'api/odata/generated/entities/IServiceRequestRowDto';\r\nimport { IServiceRequestRowValueDto } from 'api/odata/generated/entities/IServiceRequestRowValueDto';\r\nimport { Dictionary } from 'lodash';\r\nimport { CustomFormValueType } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { IFormFieldOptionDto } from 'api/odata/generated/entities/IFormFieldOptionDto';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { SpecialColumnTypesUnion } from 'api/odata/generated/enums/SpecialColumnTypes';\r\nimport { IServiceRequestRowStatusDto } from 'api/odata/generated/entities/IServiceRequestRowStatusDto';\r\n\r\n/* --- STATE --- */\r\nexport type ISampleListTableState = Partial<\r\n TableState & {\r\n searchColumns?: Array;\r\n customFilters: Array<\r\n Pick, 'fieldName' | 'operator' | 'value'>\r\n >;\r\n }\r\n>;\r\nexport type IFieldState = {\r\n status: PromiseStatus;\r\n};\r\n\r\nexport type ControlledTableState = Partial<\r\n TableState & {\r\n searchColumns?: Array;\r\n }\r\n>;\r\nexport type ServiceRequestRowsTableState =\r\n ControlledTableState;\r\nexport interface RowsWithTotalCount {\r\n rows: TRow[];\r\n dataLength: number;\r\n}\r\nexport interface IControlledTableState {\r\n tableState: ControlledTableState;\r\n selectedRows: Array;\r\n data: IAsyncValue>;\r\n}\r\nexport interface IServiceRequestRowsTableState {}\r\nexport interface IRequestDetailsModel\r\n extends Omit,\r\n IServiceRequestDetailsFormModel {}\r\n/**\r\n * Represents interface to service request form data values.\r\n */\r\nexport interface IServiceRequestDetailsFormModel {\r\n Rows?: Array;\r\n FormValues?: Record;\r\n}\r\nexport interface IRequestSamplesState {\r\n RequestSamples: IAsyncValue<{ data: ISample[]; dataLength: number }>;\r\n RequestDetails: IAsyncValue;\r\n ServiceRequestStatuses: IAsyncValue>;\r\n ServiceRequestRowStatuses?: Array;\r\n SamplesTableState: ISampleListTableState;\r\n SamplesSelected: any[];\r\n ServiceRequestRows: IAsyncValue;\r\n serviceRequestId?: number;\r\n ImportState: {\r\n open: boolean;\r\n processing: boolean;\r\n };\r\n fieldsState: PartialRecord;\r\n milestoneProcessing?: boolean;\r\n milestoneChargeProcessing?: boolean;\r\n milestonesLoading?: boolean;\r\n submitting?: boolean;\r\n SidePanel?: IOpenSidePanelPayload;\r\n createServiceRequestRowStatus?: PromiseStatus;\r\n lastInsertedMilestoneId?: number;\r\n}\r\n\r\nexport interface ISample extends Record {\r\n Id: number;\r\n ServiceRequestId: number;\r\n BudgetName: string | null;\r\n BudgetId: number | null;\r\n SourceRunIds: Array | null;\r\n TargetRunIds: Array | null;\r\n Status: number;\r\n StatusName: string | null;\r\n AnalyticalSampleId: string | null;\r\n BiologicalSampleId: string | null;\r\n TMT_Type: string | null;\r\n TMT_Label: string | null;\r\n TMT_Set: string | null;\r\n SubjectId: string | null;\r\n Concentration: number | null;\r\n Volume: number | null;\r\n SamplePlateId: string | null;\r\n Position: string | null;\r\n SampleType: string | null;\r\n TaxaId: string | null;\r\n}\r\n\r\nexport interface ITableState {\r\n pageIndex: number;\r\n pageSize: number;\r\n columnOrder: any;\r\n filters: any;\r\n globalFilter: any;\r\n}\r\n\r\nexport interface ISampleRun\r\n extends Record,\r\n ISampleTarget,\r\n ISample {\r\n Id: number;\r\n ServiceRequestId: number;\r\n Status: number;\r\n BudgetName: string | null;\r\n AnalyticalSampleId: string | null;\r\n RunId: number | null;\r\n\r\n TMT_Type: string | null;\r\n TMT_Label: string | null;\r\n TMT_Set: string | null;\r\n\r\n Concentration: number | null;\r\n Volume: number | null;\r\n SamplePlateId: string | null;\r\n Position: string | null;\r\n\r\n TargetConcentration: number | null;\r\n TargetVolume: number | null;\r\n TargetPlateId: string | null;\r\n TargetPosition: string | null;\r\n TargetTubeLabel: string | null;\r\n TargetSampleType: string | null;\r\n}\r\n\r\nexport interface IRunDetails {\r\n Id?: number;\r\n RunType: RunTypesUnion;\r\n Samples: ISampleTarget[];\r\n}\r\n\r\nexport interface ISampleTarget extends ISample {\r\n TargetConcentration: number | null;\r\n TargetVolume: number | null;\r\n TargetPlateId: string | null;\r\n TargetPosition: string | null;\r\n TargetTubeLabel: string | null;\r\n TargetSampleType: string | null;\r\n}\r\n\r\nexport interface ISamplesFilter {\r\n ServiceRequestId?: number;\r\n}\r\n\r\nexport interface IResultData {\r\n StatusCode: number; // Assuming HttpStatusCode is a number, you might need to adjust this type\r\n errorMessages: string[];\r\n updates: Record; // Adjust the types as needed\r\n}\r\n\r\nexport type IServiceRequestUpdateStatusAction = PayloadAction<\r\n Pick & IReason\r\n>;\r\nexport type IServiceRequestUpdateBudgetAction = PayloadAction<\r\n Pick\r\n>;\r\nexport type IServiceRequestUpdateFundingTypeAction = PayloadAction<\r\n Pick\r\n>;\r\nexport type IServiceRequestUpdatePurchaseOrderAction = PayloadAction<\r\n Pick\r\n>;\r\nexport type IServiceRequestUpdateExternalInternalNumberAction = PayloadAction<\r\n Pick\r\n>;\r\nexport type IServiceRequestPatchAction = PayloadAction<\r\n Pick & Partial>\r\n>;\r\nexport type IServiceRequestUpdateGradientAction = PayloadAction<\r\n Pick\r\n>;\r\nexport type IServiceRequestUpdateOverheadAction = PayloadAction<\r\n Pick\r\n>;\r\nexport type ILoadServiceRequestMilestonesAction = PayloadAction<\r\n Identifiable\r\n>;\r\nexport type ILoadServiceRequestMilestonesSuccessAction = PayloadAction<\r\n Array\r\n>;\r\nexport type ILoadServiceRequestRowsAction = PayloadAction<{\r\n serviceRequestId: number;\r\n state: Partial>;\r\n}>;\r\nexport type ICancelServiceRequestPayloadAction = PayloadAction<\r\n {\r\n serviceRequestId: number;\r\n } & IReason\r\n>;\r\nexport type UpdateServiceRequestRowValueAction = PayloadAction<{\r\n serviceRequestId: number;\r\n serviceRequestValue: Pick<\r\n IServiceRequestRowValueDto,\r\n 'ColumnId' | 'RowId' | 'Value' | 'DisplayValue'\r\n >;\r\n}>;\r\n\r\nexport interface IRequestMilestoneManualChargeUserModel {\r\n Id: string;\r\n Title: string;\r\n display: string;\r\n}\r\n\r\nexport interface IRequestMilestoneManualChargeModel {\r\n OfflineServiceType: IConsumableServiceDto | null;\r\n Unit: Entity | null;\r\n Id: number;\r\n Name: string | null;\r\n Quantity: number | null;\r\n Rate: number | null;\r\n Remarks: string | null;\r\n Date: Timestamp | null;\r\n UpdatedBy: IRequestMilestoneManualChargeUserModel | null;\r\n}\r\n\r\nexport type InsertServiceRequestMilestoneChargeAction = PayloadAction<\r\n Partial & {\r\n ServiceRequestId: number;\r\n ServiceRequestMilestoneId: number;\r\n }\r\n>;\r\nexport type InsertServiceRequestMilestoneChargesAction = PayloadAction<\r\n Array<\r\n Partial & {\r\n ServiceRequestId: number;\r\n ServiceRequestMilestoneId: number;\r\n action?: 'insert' | 'update' | 'delete';\r\n }\r\n >\r\n>;\r\nexport type UpdateServiceRequestMilestoneChargeAction = PayloadAction<\r\n Pick &\r\n Partial & {\r\n ServiceRequestId: number;\r\n ServiceRequestMilestoneId: number;\r\n }\r\n>;\r\nexport interface IServiceRequestMilestoneChargeForm {\r\n Id?: number;\r\n Type?: ServiceRequestMilestoneChargeType;\r\n Name?: string;\r\n Service?: IConsumableServiceDto;\r\n Rate?: number;\r\n Date?: Date | null;\r\n Unit?: Entity;\r\n Quantity?: number;\r\n Remarks?: string;\r\n}\r\nexport interface IServiceRequestMilestoneForm {\r\n Id?: number;\r\n Name?: string;\r\n Assignees?: IUserBaseDto[];\r\n CompletionDate?: Date | null;\r\n TargetDate?: Date | null;\r\n Description?: string;\r\n Status?: ServiceRequestMilestoneStatusesUnion;\r\n}\r\n/** WebApi interface */\r\nexport interface ServiceRequestMilestoneInsertModel {\r\n Id?: number;\r\n ServiceRequestId: number;\r\n\r\n Name: string | null;\r\n Assignees: string | null;\r\n CompletionDate: Timestamp | null;\r\n TargetDate: Timestamp | null;\r\n Description: string | null;\r\n StatusId: number | null;\r\n}\r\n/** WebApi interface */\r\nexport type RequestMilestoneModel = Pick<\r\n ServiceRequestMilestoneInsertModel,\r\n 'CompletionDate' | 'StatusId'\r\n>;\r\nexport interface IReason {\r\n Reason?: string;\r\n}\r\n\r\n/**\r\n * UI column obj\r\n */\r\nexport interface IServiceRequestTableColumnModel\r\n extends Pick<\r\n IFormFieldDto,\r\n | 'Id'\r\n | 'Label'\r\n //| 'ColumnType'\r\n | 'Index'\r\n // | 'Options'\r\n // | 'OptionsSourceType'\r\n | 'Required'\r\n | 'ParentId'\r\n | 'SizeLimit'\r\n // | 'Active'\r\n | 'Description'\r\n | 'DisplayType'\r\n | 'IsMultiple'\r\n | 'CopyPrevValues'\r\n | 'CustomRoles'\r\n | 'UserSelectionType'\r\n | 'FixedRoles'\r\n > {\r\n IsColumn: true;\r\n Options?: IFormFieldOptionDto[];\r\n ColumnType: CustomFormColumnTypes;\r\n isRequired: boolean;\r\n}\r\n/**\r\n * UI interface of the service request row value\r\n * CustomFormValueType narrowed to include types supported on the custom form table\r\n */\r\nexport type IServiceRequestTableRowValueModel = Extract<\r\n CustomFormValueType,\r\n string | Date | number | boolean | Entity\r\n>;\r\n\r\n/**\r\n * UI interface of the service request table model\r\n */\r\nexport interface IServiceRequestTableRowModel\r\n extends Omit {\r\n Values: Dictionary;\r\n}\r\n\r\n// case 'Disclaimer':\r\n// case 'Dictionary':\r\n// case 'Index1':\r\n// case 'Index2':\r\n// case 'Label':\r\n// case 'Lane':\r\n// case 'Plate':\r\n// case 'PlateCell':\r\n// case 'RunLane':\r\n// case 'SequencingModes':\r\n// case 'Name':\r\n// case 'SourceAndLabel':\r\n// case 'Source':\r\n// case 'UserSelection':\r\n\r\ntype Extends = U;\r\n\r\n/**\r\n * List of the column types (SpecialColumnTypes) currently supported on the custom form table\r\n */\r\nexport type CustomFormColumnTypes = Extends<\r\n SpecialColumnTypesUnion,\r\n | 'CheckBox'\r\n | 'Date'\r\n | 'DropDownList'\r\n | 'ShortText'\r\n | 'Serial'\r\n | 'Email'\r\n | 'PositiveInteger'\r\n | 'Number'\r\n | 'PositiveDecimal'\r\n | 'UserSelection'\r\n>;\r\nexport const ColumnTypesArray: Array = [\r\n 'CheckBox',\r\n 'Date',\r\n 'DropDownList',\r\n 'ShortText',\r\n 'Serial',\r\n 'Email',\r\n 'PositiveInteger',\r\n 'Number',\r\n 'PositiveDecimal',\r\n 'UserSelection',\r\n];\r\n","import { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { IFormFieldOptionDto } from 'api/odata/generated/entities/IFormFieldOptionDto';\r\nimport { DisplayTypesUnion } from 'api/odata/generated/enums/DisplayTypes';\r\nimport { UserSelectionTypeUnion } from 'api/odata/generated/enums/UserSelectionType';\r\nimport { createOptions } from 'app/components/CustomForm/CustomFormFields/CustomFormDropDown';\r\nimport { Dictionary, keyBy, orderBy } from 'lodash';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport {\r\n ColumnTypesArray,\r\n CustomFormColumnTypes,\r\n IServiceRequestTableColumnModel,\r\n} from '../types';\r\n\r\nexport class ServiceRequestTableColumn\r\n implements IServiceRequestTableColumnModel\r\n{\r\n AssignParent(result: Dictionary): void {\r\n const parentFieldName = this.getParentFieldName();\r\n if (parentFieldName !== null) {\r\n const parent = result[parentFieldName];\r\n if (parent !== undefined) {\r\n this.Parent = parent;\r\n (parent.Children = parent.Children ?? []).push(this);\r\n }\r\n }\r\n }\r\n\r\n IsColumn: true = true;\r\n Options?: IFormFieldOptionDto[] | undefined;\r\n ColumnType: CustomFormColumnTypes;\r\n isRequired: boolean;\r\n Id: number;\r\n Label: string;\r\n Index: number;\r\n Required: 'Optional' | 'User' | 'Admin' | 'Conditional';\r\n ParentId: number | null;\r\n SizeLimit: number;\r\n Description: string | null;\r\n DisplayType: DisplayTypesUnion;\r\n IsMultiple: boolean;\r\n CopyPrevValues: boolean;\r\n CustomRoles: string | null;\r\n UserSelectionType: UserSelectionTypeUnion | null;\r\n FixedRoles: string | null;\r\n\r\n Parent: ServiceRequestTableColumn | null = null;\r\n Children: Array | null = null;\r\n\r\n constructor(columnDto: IFormFieldDto, isAdmin?: boolean) {\r\n this.Id = columnDto.Id;\r\n // see null check above in filter\r\n this.ColumnType = (columnDto.ColumnType as CustomFormColumnTypes)!;\r\n this.Description = columnDto.Description;\r\n this.DisplayType = columnDto.DisplayType;\r\n this.Index = columnDto.Index;\r\n this.IsColumn = true;\r\n this.IsMultiple = columnDto.IsMultiple;\r\n this.Label = columnDto.Label;\r\n this.ParentId = columnDto.ParentId;\r\n this.Required = columnDto.Required;\r\n this.SizeLimit = columnDto.SizeLimit;\r\n this.Options =\r\n columnDto.ColumnType === 'DropDownList'\r\n ? createOptions(columnDto)\r\n : undefined;\r\n this.isRequired = this.isColumnRequired({\r\n Required: columnDto.Required,\r\n isAdmin: isAdmin ?? false,\r\n });\r\n this.CopyPrevValues = columnDto.CopyPrevValues;\r\n this.CustomRoles = columnDto.CustomRoles;\r\n this.UserSelectionType = columnDto.UserSelectionType;\r\n this.FixedRoles = columnDto.FixedRoles;\r\n }\r\n\r\n static getFieldName(columnId: number) {\r\n return `column_${String(columnId)}`;\r\n }\r\n getFieldName() {\r\n return ServiceRequestTableColumn.getFieldName(this.Id);\r\n }\r\n getParentFieldName() {\r\n if (this.ParentId === null) {\r\n return null;\r\n }\r\n return ServiceRequestTableColumn.getFieldName(this.ParentId);\r\n }\r\n\r\n private isColumnRequired = (\r\n props: Pick & { isAdmin: boolean },\r\n ) => {\r\n switch (props.Required) {\r\n case 'Optional': //optional\r\n return false;\r\n case 'User': //required for user (all users)\r\n return true;\r\n case 'Admin': //required for admin\r\n return props.isAdmin;\r\n case 'Conditional':\r\n // not supported on columns/table\r\n return false;\r\n default:\r\n assertExhaustive(props.Required);\r\n }\r\n };\r\n}\r\n\r\nexport class ServiceRequestTableColumnsCollection {\r\n columnsObj: Dictionary;\r\n constructor(\r\n columnsData,\r\n isAdmin: boolean,\r\n VisibleToAdminOnly?: boolean,\r\n lanesEnabled?: boolean,\r\n ) {\r\n if ((VisibleToAdminOnly === true && isAdmin !== true) || !lanesEnabled) {\r\n this.columnsObj = {};\r\n return;\r\n }\r\n const columns =\r\n columnsData\r\n ?.filter(f => f.Active === true)\r\n ?.filter(\r\n column =>\r\n column.IsColumn === true &&\r\n column.ColumnType !== null &&\r\n (ColumnTypesArray as string[]).includes(column.ColumnType),\r\n )\r\n ?.map(columnDto => new ServiceRequestTableColumn(columnDto, isAdmin)) ??\r\n [];\r\n const result = keyBy(\r\n orderBy(columns, f => f.Index),\r\n column => column.getFieldName(),\r\n );\r\n columns.forEach(column => column.AssignParent(result));\r\n this.columnsObj = result;\r\n }\r\n\r\n getArray() {\r\n return Object.values(this.columnsObj);\r\n }\r\n get(columnId: number) {\r\n return this.columnsObj[ServiceRequestTableColumn.getFieldName(columnId)];\r\n }\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectKnownModule,\r\n} from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\nimport { InternalServiceRequestStatusesUnion } from 'enums/InternalServiceRequestStatuses';\r\nimport { IServiceRequestDto } from 'api/odata/generated/entities/IServiceRequestDto';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { SpecialColumnTypesUnion } from 'api/odata/generated/enums/SpecialColumnTypes';\r\nimport { tryParseBool, tryParseFloat, tryParseInt } from 'utils/string-utils';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport {\r\n isEmptyOrWhitespace,\r\n toUndefinedIfEmptyOrWhitespace,\r\n} from 'utils/typeUtils';\r\nimport { ServiceRequestTableColumnsCollection } from './utils/ServiceRequestTableColumn';\r\nimport { IServiceRequestDetailsFormModel } from './types';\r\nimport { KnownModules } from 'types/KnownModules';\r\n\r\nconst selectSlice = (state: RootState) => state.requestSamples || initialState;\r\n\r\nexport const selectRequestSamples = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\nexport const selectServiceRequestStatuses = createSelector(\r\n [selectSlice],\r\n state => state.ServiceRequestStatuses,\r\n);\r\nexport const selectServiceRequestRowStatues = createSelector(\r\n [selectSlice],\r\n state => state.ServiceRequestRowStatuses,\r\n);\r\nexport const selectSubmitting = createSelector(\r\n [selectSlice],\r\n state => state.submitting,\r\n);\r\n\r\nexport const selectServiceRequestStatusesByInternalId = createSelector(\r\n [\r\n selectServiceRequestStatuses,\r\n (\r\n state,\r\n serviceRequestInternalStatus: InternalServiceRequestStatusesUnion,\r\n ) => serviceRequestInternalStatus,\r\n ],\r\n (state, serviceRequestInternalStatus: InternalServiceRequestStatusesUnion) =>\r\n state.value?.filter(\r\n status => status.InternalStatusId === serviceRequestInternalStatus,\r\n ),\r\n);\r\nexport const selectServiceRequestId = createSelector(\r\n [selectRequestSamples],\r\n state => state.serviceRequestId,\r\n);\r\nexport const selectRequestDetails = createSelector(\r\n [selectRequestSamples],\r\n state => state.RequestDetails,\r\n);\r\nexport const selectCommentIsInternal = createSelector(\r\n [selectRequestDetails],\r\n state => state.value?.CommentIsInternal,\r\n);\r\nexport const selectRequestDetailsData = createSelector(\r\n [selectRequestSamples],\r\n state => state.RequestDetails?.value,\r\n);\r\nexport const selectServiceRequestCustomForm = createSelector(\r\n [selectRequestDetailsData],\r\n state => state?.FormValues,\r\n);\r\nexport const selectServiceRequestCustomTable = createSelector(\r\n [selectRequestDetailsData],\r\n state => state?.Rows,\r\n);\r\nexport const selectServiceRequestFormData = createSelector(\r\n [selectServiceRequestCustomForm, selectServiceRequestCustomTable],\r\n (formValues, rows) => {\r\n const result: IServiceRequestDetailsFormModel = {\r\n FormValues: formValues,\r\n Rows: rows,\r\n };\r\n return result;\r\n },\r\n);\r\nexport const selectRequestDetailsFieldsState = createSelector(\r\n [selectRequestSamples],\r\n state => state.fieldsState,\r\n);\r\nexport const selectServiceRequestDetailsFieldState = createSelector(\r\n [\r\n selectRequestDetailsFieldsState,\r\n (state, fieldName: keyof IServiceRequestDto) => fieldName,\r\n ],\r\n (state, fieldName) => state[fieldName],\r\n);\r\nconst selectService = createSelector([selectRequestDetailsData], state => {\r\n return state?.Service;\r\n});\r\nconst selectCreatedFor = createSelector([selectRequestDetailsData], state => {\r\n return state?.CreatedFor;\r\n});\r\nexport const selectIsServiceRequestAdmin = createSelector(\r\n [\r\n selectService,\r\n selectCreatedFor,\r\n selectRequestDetails,\r\n selectAuthenticatedUser,\r\n ],\r\n (Service, CreatedFor, serviceRequestDetails, authenticatedUser) => {\r\n const isInvoiced = serviceRequestDetails?.value?.InvoiceId !== null;\r\n const none = { isAdmin: false, isOwner: false, isEditable: false };\r\n if (Service === undefined) {\r\n return none;\r\n }\r\n if (authenticatedUser === undefined) {\r\n return none;\r\n }\r\n\r\n if (authenticatedUser.Roles.includes(Roles.Administrators)) {\r\n return {\r\n isAdmin: true,\r\n isOwner: false,\r\n isEditable:\r\n Service.MilestonesAddonsType === 'Milestones' ? !isInvoiced : true,\r\n };\r\n }\r\n\r\n const isAdmin = authenticatedUser.IsAdminOf({\r\n ServiceGroupId: Service.ServiceGroup.Id,\r\n ServiceId: Service.Id,\r\n ServiceTypeId: ServiceType.Sample,\r\n });\r\n\r\n const isOwner = CreatedFor?.Id === authenticatedUser?.Id;\r\n const userEditableStatuses: Array = [\r\n 'Draft',\r\n 'ReturnedToUser',\r\n 'QuoteSendToUser',\r\n ];\r\n const internalStatusId =\r\n serviceRequestDetails?.value?.Status?.InternalStatusId;\r\n // todo: check equipment administrator permissions\r\n const isEditable =\r\n Service.MilestonesAddonsType === 'Milestones'\r\n ? !isInvoiced\r\n : isAdmin ||\r\n (isOwner &&\r\n internalStatusId !== undefined &&\r\n userEditableStatuses.includes(internalStatusId));\r\n return { isAdmin, isOwner, isEditable };\r\n },\r\n);\r\nexport const selectSamplesTableState = createSelector(\r\n [selectSlice],\r\n state => state.SamplesTableState,\r\n);\r\nexport const selectSamplesData = createSelector(\r\n [selectRequestSamples],\r\n state => state.RequestSamples,\r\n);\r\nexport const selectImportState = createSelector(\r\n [selectRequestSamples],\r\n state => state.ImportState,\r\n);\r\nexport const selectSelectedSamples = createSelector(\r\n [selectRequestSamples],\r\n state => state.SamplesSelected,\r\n);\r\nconst selectCustomForm = createSelector(\r\n [selectService],\r\n state => state?.CustomForm,\r\n);\r\nconst selectCustomFormFields = createSelector(\r\n [selectRequestDetailsData],\r\n state => state?.Service.CustomForm.FormFields,\r\n);\r\nexport const selectServiceRequestCustomFormColumns = createSelector(\r\n [\r\n selectCustomForm,\r\n selectCustomFormFields,\r\n selectIsServiceRequestAdmin,\r\n state => selectKnownModule(state, KnownModules.SampleManagementTables),\r\n ],\r\n (customForm, state, isAdmin, SampleManagementTables) => {\r\n return new ServiceRequestTableColumnsCollection(\r\n state,\r\n isAdmin.isAdmin,\r\n customForm?.VisibleToAdminOnly,\r\n customForm?.LanesEnabled || SampleManagementTables,\r\n );\r\n },\r\n);\r\n\r\nexport const selectServiceRequestCustomFormFields = createSelector(\r\n [selectRequestDetails],\r\n state =>\r\n state.value?.Service?.CustomForm?.FormFields?.filter(\r\n f => f.Active === true,\r\n )?.filter(column => column.IsColumn === false) ?? [],\r\n);\r\n\r\nexport const selectServiceRequestMilestones = createSelector(\r\n [selectRequestDetails],\r\n state => state.value?.Milestones,\r\n);\r\nexport const selectServiceRequestMilestoneProcessing = createSelector(\r\n [selectSlice],\r\n state => state.milestoneProcessing,\r\n);\r\nexport const selectServiceRequestMilestonesLoading = createSelector(\r\n [selectSlice],\r\n state => state.milestonesLoading,\r\n);\r\nexport const selectLastInsertedMilestoneId = createSelector(\r\n [selectSlice],\r\n state => state.lastInsertedMilestoneId,\r\n);\r\n\r\nexport const selectServiceRequestSidePanel = createSelector(\r\n [selectSlice],\r\n state => state.SidePanel,\r\n);\r\n\r\nexport const selectServiceRequestRows = createSelector(\r\n [selectSlice],\r\n state => state.ServiceRequestRows,\r\n);\r\n\r\nexport function fromDtoValue(\r\n type: SpecialColumnTypesUnion,\r\n formValueDto:\r\n | Pick\r\n | null\r\n | undefined,\r\n) {\r\n if (formValueDto === null) {\r\n return null;\r\n }\r\n if (formValueDto === undefined) {\r\n return undefined;\r\n }\r\n switch (type) {\r\n case 'CheckBox':\r\n return tryParseBool(formValueDto.Value);\r\n case 'Date':\r\n return dateUtils.tryFormatIso(dateUtils.tryParse(formValueDto.Value));\r\n case 'Disclaimer':\r\n case 'Dictionary':\r\n case 'Index1':\r\n case 'Index2':\r\n case 'Label':\r\n case 'Lane':\r\n case 'Plate':\r\n case 'PlateCell':\r\n case 'RunLane':\r\n case 'SequencingModes':\r\n case 'Name':\r\n case 'SourceAndLabel':\r\n case 'Source':\r\n return undefined;\r\n case 'UserSelection':\r\n case 'DropDownList':\r\n if (isEmptyOrWhitespace(formValueDto.Value)) {\r\n return undefined;\r\n } else {\r\n return {\r\n Id: formValueDto.Value,\r\n Name:\r\n toUndefinedIfEmptyOrWhitespace(formValueDto.DisplayValue) ??\r\n formValueDto.Value,\r\n };\r\n }\r\n case 'ShortText':\r\n case 'Serial':\r\n case 'Email':\r\n return formValueDto.Value;\r\n case 'PositiveInteger':\r\n return tryParseInt(formValueDto.Value);\r\n case 'Number':\r\n case 'PositiveDecimal':\r\n return tryParseFloat(formValueDto.Value);\r\n\r\n default:\r\n assertExhaustive(type);\r\n }\r\n}\r\n\r\nexport const selectServiceRequestRowsForm = createSelector(\r\n [selectSlice],\r\n state => state.ServiceRequestRows?.value,\r\n);\r\n\r\nexport const selectServiceRequestRowInsertStatus = createSelector(\r\n [selectSlice],\r\n state => state.createServiceRequestRowStatus,\r\n);\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.reservation || initialState;\r\n\r\nexport const selectReservationState = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\nexport const selectProcessing = createSelector(\r\n [selectReservationState],\r\n state => state.processing,\r\n);\r\nexport const selectReservation = createSelector(\r\n [selectReservationState],\r\n state => state.detailsState,\r\n);\r\nexport const selectReservationProcessing = createSelector(\r\n [selectReservation],\r\n state => state.processing,\r\n);\r\nexport const selectReservationError = createSelector(\r\n [selectReservation],\r\n state => state.error,\r\n);\r\nexport const selectReservationHasError = createSelector(\r\n [selectReservation],\r\n state => state.hasErrors,\r\n);\r\nexport const selectReservationCompleted = createSelector(\r\n [selectReservation],\r\n state => state.completed,\r\n);\r\nexport const selectReservationData = createSelector(\r\n [selectReservation],\r\n state => state.data,\r\n);\r\nexport const selectReservationSettings = createSelector(\r\n [selectReservationState],\r\n state => state.reservationSettingsState,\r\n);\r\nexport const selectEquipmentsSettings = createSelector(\r\n [selectReservationState],\r\n state => state.equipmentsSettingsState,\r\n);\r\nexport const selectConfirmAssistedReservations = createSelector(\r\n [selectReservationState],\r\n state => state.confirmAssistedReservations,\r\n);\r\nexport const selectUserTrainingData = createSelector(\r\n [selectReservationState],\r\n state => state.trainingsData,\r\n);\r\nexport const selectFieldHandler = createSelector(\r\n [selectReservationState],\r\n state => state.valueHandler,\r\n);\r\nexport const selectRequestedValueFor = createSelector(\r\n [selectReservationState],\r\n state => state.requestedValueFor,\r\n);\r\nexport const selectRequestedValue = createSelector(\r\n [selectReservationState],\r\n state => state.requestedValue,\r\n);\r\nexport const selectEquipmentChangeState = createSelector(\r\n [selectReservationState],\r\n state => state.equipmentChangeResultState,\r\n);\r\nexport const selectEquipmentChangeCompleted = createSelector(\r\n [selectReservationState],\r\n state => state.isChangeCompleted,\r\n);\r\nexport const selectAsyncChangeLoading = createSelector(\r\n [selectReservationState],\r\n state => state.asyncChangeLoading,\r\n);\r\n\r\nexport const selectTransferState = createSelector(\r\n [selectReservationState],\r\n state => state.transferState,\r\n);\r\nexport const selectTransferProcessing = createSelector(\r\n [selectTransferState],\r\n state => state.transferProcessing,\r\n);\r\nexport const selectTransferStepCompleted = createSelector(\r\n [selectTransferState],\r\n state => state.transferStepCompleted,\r\n);\r\nexport const selectTransferToUser = createSelector(\r\n [selectTransferState],\r\n state => state.User,\r\n);\r\nexport const selectTransferReservation = createSelector(\r\n [selectTransferState],\r\n state => state.ReservtionId,\r\n);\r\nexport const selectTransferWaitingApproval = createSelector(\r\n [selectTransferState],\r\n state => state.WaitingTransferApproval,\r\n);\r\nexport const selectCalculateCreditState = createSelector(\r\n [selectSlice],\r\n state => state.caluclateCreditState,\r\n);\r\nexport const selectСalculateCredit = createSelector(\r\n [selectCalculateCreditState],\r\n state => state.data,\r\n);\r\nexport const selectCalculateCreditProcessing = createSelector(\r\n [selectCalculateCreditState],\r\n state => state.processing,\r\n);\r\nexport const selectCalculateCreditCompleted = createSelector(\r\n [selectCalculateCreditState],\r\n state => state.completed,\r\n);\r\nexport const selectShowConfirmPricing = createSelector(\r\n [selectSlice],\r\n state => state.showConfirmPricing ?? false,\r\n);\r\nexport const selectHasCharges = createSelector(\r\n [selectSlice],\r\n state => state.hasCharges,\r\n);\r\nexport const selectSavedOfflineServices = createSelector(\r\n [selectSlice],\r\n state => state.savedOfflineServices,\r\n);\r\nexport const selectRemovedOfflineServices = createSelector(\r\n [selectSlice],\r\n state => state.removedOfflineServices,\r\n);\r\nexport const selectRefreshOfflineServices = createSelector(\r\n [selectSlice],\r\n state => state.refeshOfflineService,\r\n);\r\nexport const selectTerminateState = createSelector(\r\n [selectSlice],\r\n state => state.terminationState,\r\n);\r\nexport const selectTerminateProcessing = createSelector(\r\n [selectTerminateState],\r\n state => state.terminatProcessing,\r\n);\r\nexport const selectTerminateCompleted = createSelector(\r\n [selectTerminateState],\r\n state => state.terminateCompleted,\r\n);\r\nexport const selectCloneReservations = createSelector(\r\n [selectSlice],\r\n state => state.cloneReservation,\r\n);\r\nexport const selectReservationDtoState = createSelector(\r\n [selectSlice],\r\n state => state.reservationDtoState,\r\n);\r\nexport const selectIsEdit = createSelector(\r\n [selectSlice],\r\n state => state.isEdit,\r\n);\r\nexport const selectSavedForLater = createSelector(\r\n [selectReservationSettings],\r\n state => state?.SaveForLater,\r\n);\r\nexport const selectSubmitCalculateCredit = createSelector(\r\n [selectSlice],\r\n state => state.submitCalculateCredit,\r\n);\r\nexport const selectByApprovalErrors = createSelector(\r\n [selectSlice],\r\n state => state.ByApprovalErrors,\r\n);\r\nexport const selectUserCanRequestApproval = createSelector(\r\n [selectSlice],\r\n state => state.userCanRequestApproval,\r\n);\r\nexport const selectMaxReservationComplexityValidationResult = createSelector(\r\n [selectSlice],\r\n state => state.MaxReservationComplexityValidationResult,\r\n);\r\nexport const selectRefreshWorkOrderLink = createSelector(\r\n [selectSlice],\r\n state => state.refreshWorkOrderLink,\r\n);\r\nexport const selectMultipleProcessing = createSelector(\r\n [selectSlice],\r\n state => state.multipleProcessing,\r\n);\r\nexport const selectMultiPanelClosed = createSelector(\r\n [selectSlice],\r\n state => state.multiPanelClosed,\r\n);\r\nexport const selectReservationNotFound = createSelector(\r\n [selectSlice],\r\n state => state.notFound,\r\n);\r\nexport const selectUserRequestedBackground = createSelector(\r\n [selectSlice],\r\n state => state.userRequestedBackground,\r\n);\r\n","import React from 'react';\r\n\r\nexport interface ISystemDate {\r\n /**\r\n * Returns current date and time in the current user's timezone\r\n */\r\n newDate: () => Date;\r\n}\r\n\r\nexport const useSystemDate = (): ISystemDate => {\r\n const newDate = React.useCallback(() => {\r\n return new Date();\r\n }, []);\r\n\r\n return {\r\n newDate,\r\n };\r\n};\r\n","/**\r\n *\r\n * ExternalLink\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n Link as MuiLink,\r\n LinkBaseProps as MuiLinkProps,\r\n} from '@material-ui/core';\r\nimport { IPathAndQuery, toQueryString, toRootedURL } from 'utils/url-utils';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Tooltip } from '../BasicTooltips/Tooltip';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { publicNS } from 'locales/i18n';\r\n\r\nexport interface ExternalLinkProps extends Omit {\r\n href: string | IPathAndQuery;\r\n /**\r\n * Show external URL icon with copy url functionality\r\n */\r\n showIcon?: boolean;\r\n /**\r\n * used in case when need to use URL without adding root of the installation so to avoid toRootedURL() method.\r\n */\r\n useInlineUrl?: boolean;\r\n to?: string | IPathAndQuery;\r\n}\r\n\r\n/**\r\n * External link - opens in a new tab/window\r\n * This should be used for all external links and should be clear that it leads to a resource outside of the system\r\n * @param props\r\n * @returns\r\n */\r\nexport const ExternalLink = React.forwardRef(function ExternalLink(\r\n props: ExternalLinkProps,\r\n ref,\r\n) {\r\n return ;\r\n});\r\n\r\n/**\r\n * Link to a resource inside the larger system but external to the React app\r\n * Renders ;\r\n}\r\n\r\nconst ExternalLinkRoot = styled.span`\r\n &.external-link-root {\r\n white-space: nowrap;\r\n }\r\n`;\r\n/**\r\n * Link that can accept forwarded ref prop. Usefull in the \"override component\" in the material ui\r\n * Usage example: (\r\n function LinkBehavior(props, ref) {\r\n const { href, to, useInlineUrl, ...rest } = props;\r\n const history = useHistory();\r\n const emptyLink = href === '';\r\n const absolutePath =\r\n typeof href === 'string'\r\n ? useInlineUrl === true\r\n ? href\r\n : toRootedURL(href)\r\n : toRootedURL(\r\n (href as IPathAndQuery).path,\r\n (href as IPathAndQuery).search,\r\n );\r\n const localPath =\r\n to !== undefined\r\n ? typeof to === 'string'\r\n ? to\r\n : (to as IPathAndQuery).path +\r\n '?' +\r\n toQueryString((to as IPathAndQuery).search)\r\n : to;\r\n const { t } = useTranslation(publicNS);\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const handleLocalPathClick = React.useCallback(() => {\r\n if (localPath !== undefined) {\r\n history.push('');\r\n history.replace(localPath);\r\n }\r\n }, [history, localPath]);\r\n const handleIconClick = () => {\r\n clipboardWrite(absolutePath).then(() =>\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'success',\r\n message: `${t(translations.URLCopied)} - ${absolutePath}`,\r\n }),\r\n ),\r\n );\r\n };\r\n if (props.showIcon === true) {\r\n return (\r\n \r\n {\r\n if (to !== undefined) {\r\n handleLocalPathClick();\r\n }\r\n if (!!props.onClick) {\r\n props.onClick(event);\r\n }\r\n }}\r\n {...rest}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n {\r\n if (to !== undefined) {\r\n handleLocalPathClick();\r\n }\r\n if (!!props.onClick) {\r\n props.onClick(event);\r\n }\r\n }}\r\n {...rest}\r\n />\r\n );\r\n }\r\n },\r\n);\r\n\r\nconst permissionName = 'clipboard-write' as PermissionName;\r\nconst clipboardWriteEnabled = async () => {\r\n const result = await navigator.permissions.query({ name: permissionName });\r\n return result.state === 'granted' || result.state === 'prompt';\r\n};\r\nconst clipboardWrite = async (text: string) => {\r\n const enabled = await clipboardWriteEnabled();\r\n if (enabled) {\r\n const copyResult = await navigator.clipboard.writeText(text);\r\n return copyResult;\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { FormValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { FieldHookConfig, useFormikContext } from 'formik';\r\nimport { useDispatch } from 'react-redux';\r\nimport { FormFieldsSection, FormRow } from '../FormsLayout';\r\nimport {\r\n FormListenerProps,\r\n IFieldProps,\r\n IFormFieldSetting,\r\n} from './IFormFieldSetting';\r\nexport type IFieldRender = (item: JSX.Element) => React.ReactNode;\r\nexport type IFieldSectionRender = () => React.ReactNode;\r\nexport interface FieldsRendererProps {\r\n fields: FormFieldProps[];\r\n row?: T;\r\n}\r\nexport interface FormFieldProps extends IFormFieldSetting {\r\n component: React.FC & IFieldProps & any>;\r\n order: number;\r\n}\r\nexport interface IFieldRendererProps {\r\n fieldRow: React.FC>;\r\n row?: T;\r\n}\r\nexport interface IFieldSection {\r\n title?: string;\r\n fields: (FormFieldProps | JSX.Element)[];\r\n order: number;\r\n avoidRenderSection?: boolean;\r\n item: T;\r\n}\r\n\r\nexport function FormikField(props: FormFieldProps) {\r\n //const { component } = props;\r\n // const Field = React.memo(function Field(props: FormFieldProps) => {\r\n // return React.createElement(component, props);\r\n // });\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\nexport function FormikSection(props: IFieldSection) {\r\n const { title, fields, order, avoidRenderSection } = props;\r\n\r\n return fields.length > 0 ? (\r\n \r\n {avoidRenderSection ? (\r\n \r\n {fields.map((field, index) => (\r\n \r\n {'component' in field ? (\r\n \r\n ) : (\r\n field\r\n )}\r\n \r\n ))}\r\n \r\n ) : (\r\n \r\n {fields.map((field, index) => (\r\n \r\n {'component' in field ? (\r\n \r\n ) : (\r\n field\r\n )}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n );\r\n}\r\nexport function FormListener({\r\n onFormChange,\r\n fields,\r\n}: FormListenerProps) {\r\n const {\r\n values,\r\n setFieldValue,\r\n isValid,\r\n dirty,\r\n setFieldTouched,\r\n validateField,\r\n setFieldError,\r\n validate,\r\n } = useFormikContext();\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n React.useEffect(() => {\r\n onFormChange(\r\n values,\r\n isValid,\r\n dirty,\r\n setFieldValue,\r\n setFieldTouched,\r\n validateField,\r\n setFieldError,\r\n validate,\r\n );\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n ...fields.map(field => values[field]),\r\n isValid,\r\n dirty,\r\n ]);\r\n\r\n React.useEffect(() => {\r\n dispatch(actions.setNotSavedChanges(dirty));\r\n }, [actions, dirty, dispatch]);\r\n\r\n return null;\r\n}\r\nexport interface FieldChangeHandlerProps {\r\n key?: keyof T;\r\n value: any;\r\n shouldValidate?: boolean;\r\n}\r\nexport interface FieldHandlerProps {\r\n run?: boolean;\r\n fieldKey?: keyof T;\r\n fieldValue?: any;\r\n shouldValidate?: boolean;\r\n resetFieldState?: () => void;\r\n additionalFunc?: (value: any) => void;\r\n}\r\nexport function useFieldChangeHandler() {\r\n const { setFieldValue } = useFormikContext();\r\n const changeField = React.useCallback(\r\n (key, value, shouldValidate) => {\r\n if (key !== undefined) {\r\n setFieldValue(key.toString(), value, shouldValidate);\r\n }\r\n },\r\n [setFieldValue],\r\n );\r\n return [changeField];\r\n}\r\nexport function SubmittingHandler({\r\n value,\r\n resetSubmitting,\r\n}: {\r\n value: boolean;\r\n resetSubmitting: () => void;\r\n}) {\r\n const { setSubmitting } = useFormikContext();\r\n React.useEffect(() => {\r\n if (value) {\r\n setSubmitting(!value);\r\n resetSubmitting();\r\n }\r\n\r\n return () => {};\r\n }, [resetSubmitting, setSubmitting, value]);\r\n return null;\r\n}\r\ntype useFooProps = {\r\n value: T;\r\n sync: (value: T) => void;\r\n};\r\n\r\nexport function useFoo({ value, sync }: useFooProps) {\r\n React.useEffect(() => {\r\n sync(value);\r\n }, [value, sync]);\r\n}\r\nexport function FooListender(props: useFooProps) {\r\n useFoo(props);\r\n return null;\r\n}\r\nexport function FieldHandler({\r\n run,\r\n fieldKey,\r\n fieldValue,\r\n shouldValidate,\r\n resetFieldState,\r\n additionalFunc,\r\n}: FieldHandlerProps) {\r\n const [changeField] = useFieldChangeHandler();\r\n //const [doChange, setDoChange] = React.useState(run);\r\n React.useEffect(() => {\r\n if (run && fieldKey !== undefined) {\r\n changeField(fieldKey, fieldValue, shouldValidate);\r\n if (!!additionalFunc) additionalFunc({ [fieldKey]: fieldValue });\r\n if (!!resetFieldState) resetFieldState();\r\n //setDoChange(undefined);\r\n }\r\n return () => {};\r\n }, [\r\n changeField,\r\n run,\r\n fieldKey,\r\n shouldValidate,\r\n fieldValue,\r\n resetFieldState,\r\n additionalFunc,\r\n ]);\r\n return null;\r\n}\r\nexport interface SetValueProps {\r\n setValue?: (value: any) => void;\r\n resetValueKey?: () => void;\r\n fieldKey?: keyof T;\r\n}\r\nexport function FieldValue({\r\n setValue,\r\n resetValueKey,\r\n fieldKey,\r\n}: SetValueProps) {\r\n const { getFieldMeta } = useFormikContext();\r\n\r\n React.useEffect(() => {\r\n if (fieldKey !== undefined) {\r\n const meta = getFieldMeta(fieldKey.toString());\r\n if (!!setValue) setValue(meta.value);\r\n if (!!resetValueKey) resetValueKey();\r\n }\r\n return () => {};\r\n }, [fieldKey, getFieldMeta, setValue, resetValueKey]);\r\n return null;\r\n}\r\n","import * as React from 'react';\r\nimport { EntityType } from 'types/common';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from '../AutocompletePicker';\r\nimport { createFilterOptions } from '@material-ui/lab';\r\nimport { TFunction } from 'i18next';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport interface BaseOptionsPickerProps\r\n extends Omit, 'loadData'> {\r\n getOptions: (searchTerm: string | null, t?: TFunction) => T[];\r\n}\r\n\r\nexport function BaseOptionsPicker(\r\n props: BaseOptionsPickerProps,\r\n) {\r\n const { getOptions, filterSelectedOptions, variant, ...other } = props;\r\n const { t } = useTranslation();\r\n const loadData = async (searchTerm: string | null): Promise =>\r\n new Promise(resolve => {\r\n const opts = getOptions(searchTerm, t);\r\n resolve(opts);\r\n });\r\n return (\r\n option.Name,\r\n trim: true,\r\n })\r\n }\r\n variant={variant}\r\n {...other}\r\n />\r\n );\r\n}\r\n","/**\r\n *\r\n * DialogConfirm\r\n *\r\n */\r\nimport { DialogProps } from '@material-ui/core';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ActionButton } from '../BasicButtons/ActionButton';\r\nimport { BasicDialog } from '../BasicDialog';\r\nimport { DialogActionsRenderer } from '../BasicDialog/DialogActionsRender';\r\n\r\nexport interface DialogConfirmProps\r\n extends Omit {\r\n title?: string | React.ReactNode;\r\n subtitle?: React.ReactNode;\r\n body: React.ReactNode;\r\n confirmButtonLabel?: string;\r\n cancelButtonLabel?: string;\r\n onConfirm?: React.MouseEventHandler;\r\n onCancel?: React.MouseEventHandler;\r\n onClose?: React.MouseEventHandler;\r\n processing?: boolean;\r\n disabled?: boolean;\r\n isOpen: boolean;\r\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\r\n actions?: DialogActionsRenderer[];\r\n confirmTitle?: string;\r\n managedState?: boolean;\r\n rtl?: boolean;\r\n paperClassName?: string;\r\n}\r\n\r\nexport function DialogConfirm({\r\n title,\r\n body,\r\n confirmButtonLabel,\r\n cancelButtonLabel,\r\n onConfirm,\r\n onCancel,\r\n processing,\r\n isOpen,\r\n maxWidth,\r\n subtitle,\r\n disabled,\r\n actions,\r\n onClose,\r\n confirmTitle,\r\n managedState,\r\n rtl,\r\n paperClassName,\r\n ...props\r\n}: DialogConfirmProps) {\r\n const { t } = useTranslation();\r\n const [open, setOpen] = React.useState(isOpen);\r\n\r\n React.useEffect(() => {\r\n setOpen(isOpen);\r\n }, [isOpen]);\r\n\r\n const handleClose: React.MouseEventHandler = e => {\r\n onCancel?.(e);\r\n onClose?.(e);\r\n if (!managedState) {\r\n setOpen(false);\r\n }\r\n };\r\n const handleConfirm = event => {\r\n if (!!onConfirm) {\r\n onConfirm(event);\r\n }\r\n };\r\n const btnActions: DialogActionsRenderer[] = [];\r\n if (actions && actions.length > 0) {\r\n actions.forEach(a => btnActions.push(a));\r\n }\r\n if (!!onConfirm) {\r\n btnActions.push(() => (\r\n \r\n ));\r\n }\r\n if (!!onCancel) {\r\n btnActions.push(() => (\r\n \r\n ));\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n","export enum ConfigurableTypes {\r\n ColumnScreenConfig = 1,\r\n ColumnExportConfig = 2,\r\n ColumnFinExportConfig = 3,\r\n}\r\nexport enum ExportTypes {\r\n CSV = 1,\r\n XLS = 2,\r\n XLSX = 3,\r\n}\r\nexport enum ScreensId {\r\n // \"~/UsageHistory.aspx\"\r\n UsageHistory = 1,\r\n // \"~/History.aspx\"\r\n ReservationHistory = 2,\r\n // \"~/UsagePaymentReport.aspx\"\r\n UsagePaymentReport = 3,\r\n // \"~/Budgets.aspx\"\r\n Budgets = 4,\r\n // \"~/ServiceRequests.aspx\"\r\n ServiceRequests = 5,\r\n // \"~/UserTraining.aspx\"\r\n UserTraining = 6,\r\n // \"~/Alerts/default.aspx\"\r\n Alerts = 7,\r\n // \"~/Invoices/Default.aspx\"\r\n Invoices = 8,\r\n // \"~/Invoices/Default.aspx\"\r\n InvoicesList = 9,\r\n // \"~/ProjectPlanningReport.aspx\"\r\n ProjectPlanningReport = 10,\r\n // \"~/Assets/Default.aspx\"\r\n AssetSearch = 11,\r\n // \"~/Admin/Assets/Default.aspx\"\r\n AssetsList = 12,\r\n // \"~/Invoices/Create.aspx\"\r\n EstimatedInvoices = 13,\r\n // \"~/Alerts/UserTickets.aspx\"\r\n AlertsTickets = 14,\r\n // \"~/Alerts/AssignedToMe.aspx\"\r\n AlertsAssignedTo = 15,\r\n // \"~/Alerts/MyAssets.aspx\"\r\n MyAssets = 16,\r\n // \"~/TrainingProgramsList.aspx\"\r\n UpcomingTrainingSessions = 17,\r\n // \"~/CoresDirectory.aspx\"\r\n CoresDirectory = 18,\r\n // \"~/Maps/Buildings.aspx\"\r\n Buildings = 19,\r\n // \"~/Maps/Rooms.aspx\"\r\n Rooms = 20,\r\n // \"~/Reports/Default.aspx\"\r\n AdHocReports = 21,\r\n // \"~/Documents.aspx\"\r\n Documents = 22,\r\n // \"~/Messages.aspx\"\r\n CalendarMessages = 23,\r\n // \"~/TrainingWaitingList\"\r\n TrainingWaitingList = 24,\r\n // \"~/Users\"\r\n Users = 25,\r\n //~/EmailNotifications\r\n Email = 26,\r\n //~/Experiments/experimenttemplates\r\n ExperimentTemplate = 27,\r\n //~/UsersHistory\r\n UsersHistory = 28,\r\n // ~/Assets/Details.aspx?id=\r\n ShortAssetsList = 29,\r\n //~/Quizzes\r\n Quizzes = 30,\r\n //~/Submissions\r\n Submissions = 31,\r\n //~/UserTrainingHistory\r\n UserTrainingHistory = 32,\r\n //~/OtherServices\r\n OtherServices = 33,\r\n //~/Invoices/InvoiceLetterTemplates.aspx\r\n InvoiceLetters = 34,\r\n //~/Charges\r\n Charges = 35,\r\n //~/Locations\r\n Locations = 36,\r\n //~/Locations/Building\r\n BuildingRooms = 37,\r\n //~/Campuses.aspx\r\n Campuses = 38,\r\n //~/Areas.aspx\r\n Areas = 39,\r\n //~/LocationList.aspx\r\n LocationList = 40,\r\n //~/Categories.aspx\r\n Categories = 41,\r\n //~/CategoryGroups.aspx\r\n CategoryGroups = 42,\r\n //~/SendEmailToUsers\r\n SendEmailToUsers = 43,\r\n //~/OnlineBudgetsStatus\r\n OnlineBudgetsStatus = 366659,\r\n //~/InvoiceBatches\r\n InvoiceBatches = 44,\r\n //\"~/Invoices/Details\"\r\n InvoiceCharges = 45,\r\n //~/BillingActions\r\n BillingActions = 46,\r\n //~/LocationTypes\r\n LocationTypes = 47,\r\n //~/mylists\r\n SavedViews = 48,\r\n SubLocationList = 49,\r\n SubLocationTypes = 50,\r\n Schedule = 51,\r\n PricePeriod = 52,\r\n InvoiceTemplates = 53,\r\n Articles = 54,\r\n Expenses = 55,\r\n UserAttributes = 56,\r\n SampleRunsDetails = 57,\r\n SamplesList = 58,\r\n SampleRequests = 59,\r\n OfflineServiceTypes = 60,\r\n SampelsRunsList = 61,\r\n SamplesPlates = 62,\r\n SamplesModifications = 63,\r\n PublicAssets = 64,\r\n //~/Assets/Inventory/Log\r\n BarcodeScanLog = 65,\r\n ServiceRequestAuditTrailHistory = 66,\r\n // \"~/Maps/Areas/Default.aspx\"\r\n Floors = 67,\r\n // ~/Invoices/SubscriptionTypes/Default.aspx\r\n SubscriptionTypes = 68,\r\n // \"~/Experiments/Default.aspx\"\r\n BudgetExperiments = 69,\r\n // \"~/Invoices/Subscriptions/Default.aspx\"\r\n Subscribers = 70,\r\n // \"~/ProjectMembers\"\r\n ProjectMembers = 71,\r\n ReservationWaitingList = 72,\r\n // \"~/IncidentAssetsTracking.aspx\"\r\n PlannedWorkOrders = 73,\r\n Regions = 74,\r\n SuperGroup = 75,\r\n AssemblySnapshots = 76,\r\n AssetSearchHistory = 77,\r\n SystemSettingsAuditTrail = 78,\r\n // \"~/CostCenters\"\r\n CostCenters = 79,\r\n ServiceRelatedRefs = 80,\r\n ServiceRequestTypes = 81,\r\n}\r\n","import { useTranslation } from 'react-i18next';\r\nimport { dateUtils, WeekStartsOn } from 'utils/date-utils';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\nimport { WorkWeekDays } from './WorkWeekDays';\r\n\r\nexport enum RepetitiveOptions {\r\n DoNotRepeat,\r\n RepeatDaily,\r\n RepeatWeeklyOn,\r\n RepeatMonthlyOn,\r\n RepeatEveryWeekDay,\r\n RepeatCustom,\r\n}\r\nexport enum RepeatPeriod {\r\n Days = 1,\r\n Weeks = 2,\r\n Months = 3,\r\n}\r\nexport enum RepeatMonthlyBy {\r\n RepeatsBy_DayOfMonth = 1,\r\n RepeatsBy_DayOfWeek = 2,\r\n}\r\nexport function GetRepetitiveOptions(\r\n startDate: Date | null,\r\n firstDayOfWeek: number,\r\n) {\r\n let items = enumToEntityArray(RepetitiveOptions);\r\n let date = dateUtils.dateOrStringToDate(startDate ?? new Date());\r\n let dayName = dateUtils.getDayText(date);\r\n\r\n const { t } = useTranslation();\r\n let weekName = enumToEntityArray(WorkWeekDays, t).filter(\r\n f =>\r\n dateUtils.getWeekNumberOfMonth(date, firstDayOfWeek as WeekStartsOn) ===\r\n f.Id,\r\n )[0].Name;\r\n\r\n let weekDays = `${dateUtils.getLongDaysArray()[firstDayOfWeek]} - ${\r\n dateUtils.getLongDaysArray()[dateUtils.getLongDaysArray().length - 2]\r\n }`;\r\n\r\n items.forEach(item => {\r\n if (item.Id === RepetitiveOptions.RepeatWeeklyOn) {\r\n item.Name = item.Name.replace('{0}', dayName);\r\n }\r\n if (item.Id === RepetitiveOptions.RepeatMonthlyOn) {\r\n item.Name = item.Name.replace('{0}', weekName).replace('{1}', dayName);\r\n }\r\n if (item.Id === RepetitiveOptions.RepeatEveryWeekDay) {\r\n item.Name = item.Name.replace('{0}', weekDays);\r\n }\r\n });\r\n return items;\r\n}\r\n","import { Entity } from 'types/common';\r\n\r\n/**\r\n * Combines Id & Name into an object that represents an entity\r\n * @param id Entity Id\r\n * @param name Entity Name\r\n * @param otherData additional Data\r\n * @returns Entity with Id & Name populated\r\n */\r\nexport function toEntity(\r\n id: T | null | undefined,\r\n name?: string | null,\r\n otherData?: Record,\r\n): Entity | null {\r\n if (id == null || id === undefined || name == null || name === undefined) {\r\n return null;\r\n } else {\r\n return !!otherData\r\n ? Object.assign({}, { Id: id, Name: name ?? id }, otherData)\r\n : { Id: id, Name: name ?? id };\r\n }\r\n}\r\n","/**\r\n *\r\n * auto generated interface for Bookit.Data.RequiredTypes\r\n *\r\n */\r\n\r\nexport enum RequiredTypes {\r\n Optional = 0,\r\n User = 1,\r\n Admin = 2,\r\n Conditional = 3,\r\n}\r\nexport type RequiredTypesUnion = keyof typeof RequiredTypes;\r\nexport const RequiredTypesUnionArray: Array = [\r\n 'Optional',\r\n 'User',\r\n 'Admin',\r\n 'Conditional',\r\n];\r\n","/**\r\n *\r\n * auto generated interface for Bookit.Data.DisplayTypes\r\n *\r\n */\r\n\r\nexport enum DisplayTypes {\r\n AlwaysVisible = 0,\r\n VisibleToAdminOnly = 1,\r\n VisibleToUserOnDoneRequest = 2,\r\n}\r\nexport type DisplayTypesUnion = keyof typeof DisplayTypes;\r\nexport const DisplayTypesUnionArray: Array = [\r\n 'AlwaysVisible',\r\n 'VisibleToAdminOnly',\r\n 'VisibleToUserOnDoneRequest',\r\n];\r\n","import { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport {\r\n createOptions,\r\n getDropDownInitValue,\r\n} from './CustomFormFields/CustomFormDropDown';\r\nimport * as Yup from 'yup';\r\nimport * as React from 'react';\r\nimport { ObjectShape } from 'yup/lib/object';\r\nimport { RequiredTypes } from 'api/odata/generated/enums/RequiredTypes';\r\nimport { Entity } from 'types/common';\r\nimport { DisplayTypes } from 'api/odata/generated/enums/DisplayTypes';\r\nimport { isEmptyOrWhitespace, isNullOrUndefined } from 'utils/typeUtils';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectForbiddenFileExtensions,\r\n selectUploadFileSizeLimit,\r\n} from 'app/slice/selectors';\r\nimport { differenceWith, last } from 'lodash';\r\nimport {\r\n IServiceRequestTableColumnModel,\r\n IServiceRequestTableRowValueModel,\r\n} from 'app/pages/Samples/RequestSamplesPage/slice/types';\r\nimport { IFormFieldOptionDto } from 'api/odata/generated/entities/IFormFieldOptionDto';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport parse from 'html-react-parser';\r\n\r\nexport interface IFormFileValue {\r\n Id: number;\r\n Value: string | null;\r\n DisplayValue?: string | null;\r\n Size: number | null;\r\n PostedFile: File | null;\r\n}\r\nexport function instanceOfIFormValueType(\r\n objects: any,\r\n): objects is IFormFileValue[] {\r\n const members = ['Id', 'Value', 'DisplayValue', 'Size', 'PostedFile'];\r\n return (\r\n Array.isArray(objects) &&\r\n objects.every(object => members.every(member => member in object))\r\n );\r\n}\r\nexport const formFileSchema: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().default(-1),\r\n Value: Yup.string().nullable().default(null),\r\n DisplayValue: Yup.string().nullable(),\r\n Size: Yup.number().nullable(true).default(0),\r\n PostedFile: Yup.mixed().nullable(true).default(null),\r\n});\r\nexport const formValueSchema: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().default(-1),\r\n Value: Yup.string().default('').nullable(),\r\n DisplayValue: Yup.string().nullable().default(null),\r\n FormFieldId: Yup.number().default(-1),\r\n Readonly: Yup.boolean().default(false),\r\n SourceValueId: Yup.number().nullable(true).notRequired().default(null),\r\n AlertId: Yup.number().nullable(true).notRequired().default(null),\r\n AlertTypeId: Yup.number().nullable(true).notRequired().default(null),\r\n CustomFormId: Yup.number().nullable().default(null),\r\n CustomFormName: Yup.string().nullable().default(null),\r\n RequestId: Yup.number().nullable().default(null),\r\n ReservationId: Yup.number().nullable().default(null),\r\n ExperimentItemId: Yup.number().nullable().default(null),\r\n BudgetExperimentId: Yup.number().nullable().default(null),\r\n ServiceGroupUserId: Yup.number().nullable().default(null),\r\n ServiceGroupId: Yup.number().nullable().default(null),\r\n});\r\n\r\nexport const ParseFormFieldEnums = (formFields: IFormFieldDto[]) =>\r\n formFields.forEach(ff => {\r\n ff.Required = RequiredTypes[ff.Required.toString()];\r\n });\r\nexport const DeserializeValue = (\r\n formField: IFormFieldDto,\r\n formValue: IFormValueDto | null,\r\n) => {\r\n switch (formField.Type) {\r\n case 'ShortText':\r\n case 'Email':\r\n case 'Number':\r\n case 'PositiveNumber':\r\n case 'RichText':\r\n case 'MultipleAnswersQuestion':\r\n case 'RadioButtons':\r\n if (\r\n formValue &&\r\n formValue.Value &&\r\n !isEmptyOrWhitespace(formValue.Value)\r\n ) {\r\n return formValue.Value;\r\n }\r\n return null;\r\n case 'Date':\r\n if (\r\n formValue &&\r\n formValue.Value &&\r\n !isEmptyOrWhitespace(formValue.Value)\r\n ) {\r\n return dateUtils.tryParse(formValue.Value);\r\n }\r\n return null;\r\n // case 'AlphanumericWithDashes':\r\n // return getAlphaNumericValue(formValue);\r\n case 'CheckBox':\r\n case 'Disclaimer':\r\n if (\r\n formValue &&\r\n formValue.Value &&\r\n !isEmptyOrWhitespace(formValue.Value)\r\n ) {\r\n return formValue.Value.toLowerCase() === 'true';\r\n }\r\n return false;\r\n case 'DropDownList':\r\n case 'UserSelection':\r\n if (\r\n formValue &&\r\n formValue.Value &&\r\n !isEmptyOrWhitespace(formValue.Value)\r\n ) {\r\n const options = createOptions(formField);\r\n let ddlValue = getDropDownInitValue(\r\n formValue.Value ?? undefined,\r\n formField.IsMultiple,\r\n options,\r\n );\r\n return formField.IsMultiple ? ddlValue : ddlValue[0];\r\n } else {\r\n return formField.IsMultiple ? [] : null;\r\n }\r\n case 'FormSection':\r\n return null;\r\n default:\r\n return null;\r\n }\r\n};\r\nexport type CustomFormValueType =\r\n | string\r\n | Date\r\n | number\r\n | boolean\r\n | IFormFileValue\r\n | Entity\r\n | Array>;\r\nexport const SerializeValue = (\r\n formField: IFormFieldDto,\r\n formValue: CustomFormValueType,\r\n): string | null => {\r\n if (formValue === null || formValue === undefined) {\r\n return null;\r\n }\r\n switch (formField.Type) {\r\n case 'CheckBox':\r\n case 'Disclaimer':\r\n return (formValue as boolean).toString();\r\n case 'Date':\r\n return (\r\n dateUtils.tryFormatIso(formValue, {\r\n format: 'basic',\r\n representation: 'date',\r\n }) ?? null\r\n );\r\n\r\n case 'Email':\r\n case 'Number':\r\n case 'PositiveNumber':\r\n case 'RichText':\r\n case 'ShortText':\r\n case 'MultipleAnswersQuestion':\r\n case 'RadioButtons':\r\n return typeof formValue === 'string' && isEmptyOrWhitespace(formValue)\r\n ? ''\r\n : formValue.toString();\r\n case 'File':\r\n if (instanceOfIFormValueType(formValue)) {\r\n let fileValue = formValue as IFormFileValue[];\r\n if (fileValue.length > 0) {\r\n return formField.IsMultiple\r\n ? fileValue\r\n .filter(f => f.Value !== null)\r\n .map(v => v.Value)\r\n .join(',')\r\n : fileValue[0].Value ?? '';\r\n } else {\r\n return '';\r\n }\r\n }\r\n break;\r\n case 'FormSection':\r\n return '';\r\n case 'DropDownList':\r\n case 'UserSelection':\r\n if (formValue === null || formValue === undefined) {\r\n return '';\r\n } else {\r\n if (Array.isArray(formValue)) {\r\n return (formValue as Entity[]).map(f => f.Id).join(',');\r\n } else {\r\n return (formValue as Entity).Id.toString();\r\n }\r\n }\r\n default:\r\n return '';\r\n }\r\n return null;\r\n};\r\nexport const getSerializableIsRequired = (\r\n formField: IFormFieldDto,\r\n formValue: CustomFormValueType,\r\n) => {\r\n const val = SerializeValue(formField, formValue);\r\n return (\r\n val === null ||\r\n val === undefined ||\r\n isEmptyOrWhitespace(val) ||\r\n val === 'false'\r\n );\r\n};\r\n\r\nexport function getFieldSchema(\r\n formField: IFormFieldDto,\r\n isAdmin: boolean,\r\n fileSize: number,\r\n notAllowedExt: string[],\r\n values: Record | undefined,\r\n) {\r\n let parentDepValue = null;\r\n let parentReqValue = null;\r\n if (formField.DependencyFieldId !== null) {\r\n if (!!values && Object.keys(values).length > 0) {\r\n parentDepValue = values[String(formField.DependencyFieldId)];\r\n }\r\n }\r\n if (formField.RequiredFieldToCompare !== null) {\r\n if (!!values && Object.keys(values).length > 0) {\r\n parentReqValue = values[String(formField.RequiredFieldToCompare)];\r\n }\r\n }\r\n switch (formField.Type) {\r\n case 'MultipleAnswersQuestion':\r\n let result = Yup.string()\r\n .nullable()\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.string()\r\n\r\n .required(`${formField.Label} answer is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: 'required',\r\n message: `${formField.Label} answer is required.`,\r\n test: (value, context) => {\r\n if (isEmptyOrWhitespace(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n return result;\r\n case 'RadioButtons':\r\n let radioButtons = Yup.string()\r\n .nullable()\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.string()\r\n\r\n .required(`${formField.Label} radio is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: 'required',\r\n message: `${formField.Label} radio is required.`,\r\n test: (value, context) => {\r\n if (isEmptyOrWhitespace(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n return radioButtons;\r\n case 'File':\r\n let resultFile = Yup.array()\r\n .nullable()\r\n .of(formFileSchema)\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.array()\r\n .of(formFileSchema)\r\n .required(`${formField.Label} file is required.`)\r\n .min(1, `${formField.Label} file is required.`),\r\n },\r\n )\r\n .test({\r\n name: 'required',\r\n message: `${formField.Label} file is required.`,\r\n test: (value, context) => {\r\n if (value === undefined || value === null || value.length === 0) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: true,\r\n })\r\n .test({\r\n name: 'size',\r\n message: `${formField.Label} file is to large.`,\r\n test: (value, context) => {\r\n if (value !== undefined && value !== null && value.length > 0) {\r\n let files = value as IFormFileValue[];\r\n if (files.length > 0) {\r\n return files.every(f => f.Size == null || f.Size <= fileSize);\r\n }\r\n }\r\n return true;\r\n },\r\n exclusive: true,\r\n })\r\n .test({\r\n name: 'type',\r\n message: `${formField.Label} file type is forbidden.`,\r\n test: async (value, context) => {\r\n try {\r\n const { lookup, extension } = await import('mime-types');\r\n if (value !== undefined && value !== null && value.length > 0) {\r\n let files = value as IFormFileValue[];\r\n if (files.length > 0) {\r\n let blockedTypes = notAllowedExt.map(f => lookup(f));\r\n let allowedTypes =\r\n formField.Options === null\r\n ? []\r\n : formField.Options.split(',')\r\n .map(f => lookup(f))\r\n .filter(f => f !== false);\r\n let allowedExt =\r\n formField.Options === null\r\n ? []\r\n : formField.Options.split(',');\r\n return files.every(f => {\r\n if (f.PostedFile !== null) {\r\n return (\r\n !blockedTypes.includes(f.PostedFile.type) &&\r\n (allowedExt.length === 0 ||\r\n allowedTypes.includes(f.PostedFile.type) ||\r\n allowedExt.includes(\r\n extension(f.PostedFile.name) as string,\r\n ) ||\r\n (!!f.PostedFile.name &&\r\n allowedExt.includes(\r\n last(f.PostedFile.name.split('.')) || '',\r\n )))\r\n );\r\n } else {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n return true;\r\n } catch (error) {\r\n return false;\r\n }\r\n },\r\n exclusive: true,\r\n });\r\n return resultFile;\r\n case 'Date':\r\n let resultDate = getCustomFormDateSchema(\r\n formField,\r\n isAdmin,\r\n parentDepValue,\r\n parentReqValue,\r\n );\r\n return resultDate;\r\n case 'Email':\r\n let resultEmail = Yup.string()\r\n .nullable()\r\n .email(`${formField.Label} - Email format is not valid`)\r\n .max(\r\n formField.SizeLimit,\r\n `Maximum length of this field is ${formField.SizeLimit}`,\r\n )\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.string()\r\n .max(\r\n formField.SizeLimit,\r\n `Maximum length of this field is ${formField.SizeLimit}`,\r\n )\r\n .required(`${formField.Label} email is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} email is required.`,\r\n test: (value, context) => {\r\n if (isEmptyOrWhitespace(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n return resultEmail;\r\n case 'ShortText':\r\n let resultText = Yup.string()\r\n .nullable()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be ${formField.SizeLimit} characters long.`,\r\n )\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.string()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be ${formField.SizeLimit} characters long.`,\r\n )\r\n .required(`${formField.Label} text is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} text is required.`,\r\n test: (value, context) => {\r\n if (isEmptyOrWhitespace(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n // if (formField.Required === 'Conditional') {\r\n // if (formField.RequiredFieldToCompare !== null) {\r\n // resultText.when((formField.RequiredFieldToCompare ?? formField.DependencyFieldId ?? 'N/A').toString(), {\r\n // is: value => isRequired(formField, isAdmin, groupAdmin, value),\r\n // then: Yup.string()\r\n // .max(\r\n // formField.SizeLimit,\r\n // `${formField.Label} must be ${formField.SizeLimit} characters long.`,\r\n // )\r\n // .required(`${formField.Label} text is required.`),\r\n // });\r\n // }\r\n // } else if (isRequired(formField, isAdmin, groupAdmin, null)) {\r\n // resultText = resultText.required(\r\n // `${formField.Label} text is required.`,\r\n // );\r\n // } else if (\r\n // formField.DependencyFieldId !== null &&\r\n // formField.DependencyValue !== null\r\n // ) {\r\n // resultText.when(formField.DependencyFieldId.toString(), {\r\n // is: value => requiredByDependency(formField, value),\r\n // then: Yup.string()\r\n // .max(\r\n // formField.SizeLimit,\r\n // `${formField.Label} must be ${formField.SizeLimit} characters long.`,\r\n // )\r\n // .required(`${formField.Label} text is required.`),\r\n // otherwise: Yup.string()\r\n // .nullable()\r\n // .max(\r\n // formField.SizeLimit,\r\n // `${formField.Label} must be ${formField.SizeLimit} characters long.`,\r\n // ),\r\n // });\r\n // } else {\r\n // resultText = resultText.notRequired();\r\n // }\r\n return resultText;\r\n case 'RichText':\r\n let resultRichText = Yup.string()\r\n .nullable()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be ${formField.SizeLimit} characters long.`,\r\n )\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.string()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be ${formField.SizeLimit} characters long.`,\r\n )\r\n .required(`${formField.Label} rich text is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} rich text is required.`,\r\n test: (value, context) => {\r\n if (isEmptyOrWhitespace(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n return resultRichText;\r\n case 'Number':\r\n let resultNumber = Yup.number()\r\n .nullable()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be less than ${formField.SizeLimit} .`,\r\n )\r\n .min(\r\n -formField.SizeLimit,\r\n `${formField.Label} must be greater than ${formField.SizeLimit} .`,\r\n )\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.number()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be less than ${formField.SizeLimit} .`,\r\n )\r\n .min(\r\n -formField.SizeLimit,\r\n `${formField.Label} must be greater than ${formField.SizeLimit} .`,\r\n )\r\n .required(`${formField.Label} number is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} number is required.`,\r\n test: (value, context) => {\r\n if (isNullOrUndefined(value) || isNaN(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n return resultNumber;\r\n case 'PositiveNumber':\r\n let resultPosNumber = Yup.number()\r\n .nullable()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be less than ${formField.SizeLimit} .`,\r\n )\r\n .min(\r\n 0,\r\n `${formField.Label} must be greater than ${formField.SizeLimit} .`,\r\n )\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.number()\r\n .max(\r\n formField.SizeLimit,\r\n `${formField.Label} must be less than ${formField.SizeLimit} .`,\r\n )\r\n .min(\r\n 0,\r\n `${formField.Label} must be greater than ${formField.SizeLimit} .`,\r\n )\r\n .required(`${formField.Label} number is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} number is required.`,\r\n test: (value, context) => {\r\n if (isNullOrUndefined(value) || isNaN(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n return resultPosNumber;\r\n case 'Disclaimer':\r\n let resultDesc = Yup.boolean()\r\n .default(false)\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} check is required`,\r\n test: (value, context) => value === true,\r\n exclusive: true,\r\n });\r\n return resultDesc;\r\n case 'CheckBox':\r\n let resultCheck = Yup.boolean()\r\n .default(false)\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.boolean()\r\n .default(false)\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} check is required`,\r\n test: (value, context) => value === true,\r\n exclusive: true,\r\n }),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} rich text is required.`,\r\n test: (value, context) => {\r\n if (isNullOrUndefined(value) || value === false) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n return resultCheck;\r\n case 'DropDownList':\r\n case 'UserSelection':\r\n let singleResult = Yup.mixed()\r\n .nullable()\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.mixed()\r\n .required(`${formField.Label} select option is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} select option is required.`,\r\n test: (value, context) => {\r\n if (isNullOrUndefined(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n let multipleResult = Yup.array()\r\n .of(Yup.mixed())\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(\r\n formField,\r\n isAdmin,\r\n value,\r\n parentDepValue,\r\n parentReqValue,\r\n ),\r\n then: Yup.array()\r\n .of(Yup.mixed())\r\n .min(1)\r\n .required(`${formField.Label} select option is required.`),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} select option is required.`,\r\n test: (value, context) => {\r\n if (isNullOrUndefined(value) || value.length === 0) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n // if (formField.Required === 'Conditional') {\r\n // if (formField.RequiredFieldToCompare !== null) {\r\n // if (formField.IsMultiple) {\r\n // multipleResult.when(formField.RequiredFieldToCompare.toString(), {\r\n // is: value =>\r\n // value !== null &&\r\n // value !== undefined &&\r\n // (value as Entity[]).some(\r\n // f => f.Id === formField.RequiredValueToCompare ?? '',\r\n // ),\r\n // then: Yup.array()\r\n // .of(Yup.mixed())\r\n // .required(`${formField.Label} select option is required.`),\r\n // otherwise: Yup.array()\r\n // .of(Yup.mixed())\r\n // .nullable(true)\r\n // .notRequired(),\r\n // });\r\n // } else {\r\n // singleResult.when(formField.RequiredFieldToCompare.toString(), {\r\n // is: value =>\r\n // value !== null &&\r\n // value !== undefined &&\r\n // ((value as Entity).Id ===\r\n // formField.RequiredValueToCompare ??\r\n // ''),\r\n // then: Yup.mixed().required(\r\n // `${formField.Label} select option is required.`,\r\n // ),\r\n // otherwise: Yup.mixed().nullable(true).notRequired(),\r\n // });\r\n // }\r\n // }\r\n // } else if (isRequired(formField, isAdmin, null)) {\r\n // if (formField.IsMultiple) {\r\n // multipleResult = multipleResult.required(\r\n // `${formField.Label} select option is required.`,\r\n // );\r\n // } else {\r\n // singleResult = singleResult.required(\r\n // `${formField.Label} select option is required.`,\r\n // );\r\n // }\r\n // } else if (\r\n // formField.DependencyFieldId !== null &&\r\n // formField.DependencyValue !== null\r\n // ) {\r\n // if (formField.IsMultiple) {\r\n // multipleResult.when(formField.DependencyFieldId.toString(), {\r\n // is: value => isDependencyVisible(formField, value),\r\n // then: Yup.array()\r\n // .of(Yup.mixed())\r\n // .required(`${formField.Label} select option is required.`),\r\n // otherwise: Yup.array().of(Yup.mixed()).nullable(true).notRequired(),\r\n // });\r\n // } else {\r\n // singleResult.when(formField.DependencyFieldId.toString(), {\r\n // is: value => isDependencyVisible(formField, value),\r\n // then: Yup.mixed().required(\r\n // `${formField.Label} select option is required.`,\r\n // ),\r\n // otherwise: Yup.mixed().nullable(true).notRequired(),\r\n // });\r\n // }\r\n // } else {\r\n // if (formField.IsMultiple) {\r\n // multipleResult = multipleResult.nullable(true).notRequired();\r\n // } else {\r\n // singleResult = singleResult.nullable(true).notRequired();\r\n // }\r\n // }\r\n if (formField.IsMultiple) {\r\n return multipleResult;\r\n } else {\r\n return singleResult;\r\n }\r\n }\r\n let def = Yup.string().nullable().default(null);\r\n return def;\r\n}\r\n\r\nfunction getCustomFormDateSchema(\r\n formField: Pick<\r\n IFormFieldDto,\r\n | 'Id'\r\n | 'Label'\r\n | 'Required'\r\n | 'DependencyFieldId'\r\n | 'DependencyValue'\r\n | 'DependencyMultiple'\r\n | 'DependencyVisibility'\r\n | 'RequiredFieldToCompare'\r\n | 'RequiredValueToCompare'\r\n >,\r\n isAdmin: boolean,\r\n parentDepVal: any,\r\n parentReqVal: any,\r\n) {\r\n return Yup.date()\r\n .nullable()\r\n .when(\r\n [\r\n (formField.RequiredFieldToCompare ?? 'NA').toString(),\r\n (formField.DependencyFieldId ?? 'NA').toString(),\r\n ],\r\n {\r\n is: value =>\r\n isRequired(formField, isAdmin, value, parentDepVal, parentReqVal),\r\n then: Yup.date()\r\n .required(`${formField.Label} date is required.`)\r\n .nullable(),\r\n },\r\n )\r\n .test({\r\n name: formField.Id.toString(),\r\n message: `${formField.Label} date is required.`,\r\n test: (value, context) => {\r\n if (isNullOrUndefined(value)) {\r\n let pDepVal =\r\n formField.DependencyFieldId !== null\r\n ? context.parent[String(formField.DependencyFieldId)]\r\n : null;\r\n let pReqVal =\r\n formField.RequiredFieldToCompare !== null\r\n ? context.parent[String(formField.RequiredFieldToCompare)]\r\n : null;\r\n return (\r\n isRequired(formField, isAdmin, null, pDepVal, pReqVal) === false\r\n );\r\n }\r\n return true;\r\n },\r\n exclusive: false,\r\n });\r\n}\r\n\r\nexport function isRequired(\r\n formField: Pick<\r\n IFormFieldDto,\r\n | 'Required'\r\n | 'DependencyFieldId'\r\n | 'DependencyValue'\r\n | 'DependencyMultiple'\r\n | 'DependencyVisibility'\r\n | 'RequiredFieldToCompare'\r\n | 'RequiredValueToCompare'\r\n >,\r\n isAdmin: boolean,\r\n value: any,\r\n depValue: any,\r\n reqValue: any,\r\n): boolean {\r\n let required = false;\r\n let requiredType =\r\n typeof formField.Required === 'number'\r\n ? RequiredTypes[formField.Required].toString()\r\n : formField.Required;\r\n switch (requiredType) {\r\n case 'Optional':\r\n required = false;\r\n break;\r\n case 'User':\r\n required = true;\r\n break;\r\n case 'Admin':\r\n required = isAdmin;\r\n break;\r\n case 'Conditional':\r\n if (\r\n formField.RequiredFieldToCompare !== null &&\r\n formField.RequiredValueToCompare !== null\r\n ) {\r\n let comparedValue = getParentValue(reqValue);\r\n return formField.RequiredValueToCompare === comparedValue;\r\n }\r\n break;\r\n default:\r\n required = false;\r\n break;\r\n }\r\n if (required && formField.DependencyFieldId !== null) {\r\n required = isDependencyVisible(formField, depValue);\r\n }\r\n return required;\r\n}\r\nexport function isVisible(\r\n formField: IFormFieldDto,\r\n isAdmin: boolean,\r\n visibleOnComletion?: () => boolean,\r\n) {\r\n let visible = true;\r\n let displayType =\r\n typeof formField.DisplayType === 'number'\r\n ? DisplayTypes[formField.DisplayType].toString()\r\n : formField.DisplayType;\r\n switch (displayType) {\r\n case 'AlwaysVisible':\r\n visible = true;\r\n break;\r\n case 'VisibleToAdminOnly':\r\n visible = isAdmin;\r\n break;\r\n case 'VisibleToUserOnDoneRequest':\r\n if (visibleOnComletion) {\r\n visible = visibleOnComletion();\r\n }\r\n break;\r\n default:\r\n visible = true;\r\n }\r\n return visible;\r\n}\r\nexport function isDependencyVisible(\r\n formField: Pick<\r\n IFormFieldDto,\r\n | 'DependencyFieldId'\r\n | 'DependencyValue'\r\n | 'DependencyMultiple'\r\n | 'DependencyVisibility'\r\n | 'RequiredFieldToCompare'\r\n | 'RequiredValueToCompare'\r\n >,\r\n value: any,\r\n): boolean {\r\n if (\r\n formField.DependencyFieldId === null ||\r\n formField.DependencyValue === null\r\n ) {\r\n return true;\r\n }\r\n let valueTocompare = formField.DependencyValue;\r\n let parentValue = getParentValue(value);\r\n if (formField.DependencyMultiple) {\r\n if (parentValue === null) {\r\n return !(formField.DependencyVisibility === true);\r\n }\r\n let vp = valueTocompare.split(',');\r\n let pv = parentValue.split(',');\r\n let comparedRes = vp.filter(f => pv.filter(vf => vf === f).length > 0);\r\n let valid = comparedRes.length === vp.length;\r\n if (valid) {\r\n return formField.DependencyVisibility === true;\r\n } else {\r\n return !(formField.DependencyVisibility === true);\r\n }\r\n } else {\r\n if (valueTocompare === parentValue) {\r\n return formField.DependencyVisibility === true;\r\n } else {\r\n return !(formField.DependencyVisibility === true);\r\n }\r\n }\r\n}\r\nexport function getParentValue(value: any): string | null {\r\n if (\r\n value === null ||\r\n value === undefined ||\r\n value === '' ||\r\n (Array.isArray(value) && value.length === 0)\r\n ) {\r\n return null;\r\n } else if (typeof value === 'string') {\r\n return value;\r\n } else if (Array.isArray(value)) {\r\n return (value as Entity[]).map(f => f.Id).join(',');\r\n } else if (value.hasOwnProperty('Id')) {\r\n return (value as Entity).Id;\r\n } else {\r\n return value.toString();\r\n }\r\n}\r\nexport const getFieldsVisibilities = (\r\n formFields: IFormFieldDto[],\r\n isAdmin: boolean,\r\n values: Record | undefined,\r\n visibleOnCompletion?: () => boolean,\r\n): Record | undefined => {\r\n if (values) {\r\n const visibilities: Record = {};\r\n formFields.forEach(field => {\r\n if (field.Active) {\r\n visibilities[field.Id] =\r\n isVisible(field, isAdmin, visibleOnCompletion) &&\r\n (field.DependencyFieldId === null ||\r\n (field.DependencyFieldId !== null &&\r\n isDependencyVisible(\r\n field,\r\n values[field.DependencyFieldId.toString()],\r\n )));\r\n }\r\n });\r\n return visibilities;\r\n }\r\n return undefined;\r\n};\r\nexport const useCustomFormSchema = (\r\n formFields: IFormFieldDto[],\r\n isAdmin: boolean,\r\n values: Record | undefined,\r\n): Yup.SchemaOf => {\r\n const ForbiddenFileExtensions = useSelector(selectForbiddenFileExtensions);\r\n const UploadFileSizeLimit = useSelector(selectUploadFileSizeLimit);\r\n return React.useMemo(() => {\r\n const shape: ObjectShape = {};\r\n formFields.forEach(field => {\r\n if (field.Active) {\r\n shape[field.Id] = getFieldSchema(\r\n field,\r\n isAdmin,\r\n UploadFileSizeLimit,\r\n ForbiddenFileExtensions,\r\n values,\r\n );\r\n }\r\n });\r\n return Yup.object(shape);\r\n }, [\r\n ForbiddenFileExtensions,\r\n UploadFileSizeLimit,\r\n formFields,\r\n isAdmin,\r\n values,\r\n ]);\r\n};\r\nexport const convertFormValueToFileValue = (\r\n formValue: IFormValueDto,\r\n): IFormFileValue => {\r\n return {\r\n Id: formValue.Id,\r\n Size: null,\r\n Value: formValue.Value,\r\n DisplayValue: formValue.DisplayValue,\r\n PostedFile: null,\r\n };\r\n};\r\n\r\nexport const getCustomFormInitialValues = (\r\n formFields: IFormFieldDto[],\r\n formValues?: IFormValueDto[],\r\n startQuiz?: boolean,\r\n): Record | undefined => {\r\n if (\r\n formValues === undefined &&\r\n (startQuiz === undefined || startQuiz === false)\r\n ) {\r\n return undefined;\r\n }\r\n const xx = formFields\r\n .map(formField => ({\r\n formField: formField,\r\n formValue: formValues?.find(\r\n formValue => formValue.FormFieldId === formField.Id,\r\n ),\r\n }))\r\n .map(item => ({\r\n formField: item.formField,\r\n value:\r\n item.formField.Type === 'File'\r\n ? item.formValue === null || item.formValue === undefined\r\n ? null\r\n : [convertFormValueToFileValue(item.formValue)]\r\n : DeserializeValue(item.formField, item.formValue ?? null),\r\n }));\r\n\r\n const result =\r\n xx.reduce((initialValues, item) => {\r\n initialValues[item.formField.Id.toString()] = item.value ?? null;\r\n\r\n return initialValues;\r\n }, {}) ?? {};\r\n return result;\r\n};\r\nexport const orderFields = (item: IFormFieldDto, next: IFormFieldDto) => {\r\n return item.Index! - next.Index!;\r\n};\r\nexport const serializeValues = (\r\n formFields: IFormFieldDto[],\r\n value: Record,\r\n) => {\r\n const serialized: Record = {};\r\n let files: IFormFileValue[] = [];\r\n formFields.forEach(field => {\r\n if (field.Active) {\r\n serialized[field.Id] = SerializeValue(\r\n field,\r\n value[field.Id] as CustomFormValueType,\r\n );\r\n\r\n if (field.Type === 'File') {\r\n files = [...files, ...(value[field.Id] as IFormFileValue[])];\r\n }\r\n }\r\n });\r\n return { serialized, files };\r\n};\r\nexport const toFormValuesArray = (\r\n serialized: Record,\r\n formValues: IFormValueDto[],\r\n formFields: IFormFieldDto[],\r\n): IFormValueDto[] => {\r\n const ffs = RecordToFormValuesArray(formFields, formValues, serialized);\r\n const diff = differenceWith(\r\n ffs,\r\n formValues,\r\n (a, b) => a.FormFieldId === b.FormFieldId && a.Value === b.Value,\r\n ).filter(f => !(f.Value === null && f.Id === 0));\r\n return diff;\r\n};\r\nfunction RecordToFormValuesArray(\r\n formFields: IFormFieldDto[],\r\n formValues: IFormValueDto[],\r\n serialized: Record,\r\n): IFormValueDto[] {\r\n return formFields.map(formField => {\r\n const result = formValues.find(\r\n formValue => formValue.FormFieldId === formField.Id,\r\n ) ?? {\r\n Id: 0,\r\n FormFieldId: formField.Id,\r\n Value: null,\r\n DisplayValue: null,\r\n RequestId: null,\r\n ReservationId: null,\r\n ExperimentItemId: null,\r\n SourceValueId: null,\r\n Readonly: false,\r\n BudgetExperimentId: null,\r\n AlertId: null,\r\n AlertTypeId: null,\r\n ServiceGroupUserId: null,\r\n ServiceGroupId: null,\r\n CustomFormId: null,\r\n CustomFormName: null,\r\n };\r\n return { ...result, ...{ Value: serialized[formField.Id.toString()] } };\r\n });\r\n}\r\n\r\nexport function serializeCustomFormRowValue(\r\n value: IServiceRequestTableRowValueModel,\r\n): Pick {\r\n if (value == null) {\r\n return { Value: null, DisplayValue: null };\r\n } else if (typeof value === 'string') {\r\n return { Value: value, DisplayValue: null };\r\n } else if (typeof value === 'number') {\r\n return { Value: value.toString(), DisplayValue: null };\r\n } else if (typeof value === 'boolean') {\r\n return { Value: value.toString(), DisplayValue: null };\r\n } else if (value instanceof Date) {\r\n return {\r\n Value:\r\n dateUtils.tryFormatIso(value, {\r\n format: 'basic',\r\n representation: 'date',\r\n }) ?? null,\r\n DisplayValue: null,\r\n };\r\n } else {\r\n return {\r\n Value: value.Id,\r\n DisplayValue: value.Name,\r\n };\r\n }\r\n}\r\n\r\nexport function getCustomFormRowDisplay(\r\n value: IServiceRequestTableRowValueModel,\r\n) {\r\n if (value == null) {\r\n return '';\r\n } else if (typeof value === 'string') {\r\n return value;\r\n } else if (typeof value === 'number') {\r\n return value.toString();\r\n } else if (typeof value === 'boolean') {\r\n return value.toString();\r\n } else if (value instanceof Date) {\r\n return dateUtils.shortDateFormat(value);\r\n } else {\r\n return value.Name;\r\n }\r\n}\r\nexport function getCustomFormDisplayValue(value: CustomFormValueType) {\r\n if (value === null || value === undefined) {\r\n return '';\r\n } else if (typeof value === 'string') {\r\n return parse(value);\r\n } else if (typeof value === 'number') {\r\n return value.toString();\r\n } else if (typeof value === 'boolean') {\r\n return value.toString();\r\n } else if (value instanceof Date) {\r\n return dateUtils.shortDateFormat(value);\r\n } else {\r\n if (Array.isArray(value)) {\r\n return (value as Entity[]).map(f => f.Name).join(',');\r\n } else {\r\n return (value as Entity).Name;\r\n }\r\n }\r\n}\r\nexport function getCustomFormColumnSchema(\r\n props: Pick<\r\n IServiceRequestTableColumnModel,\r\n 'Label' | 'ColumnType' | 'isRequired' | 'Options' | 'SizeLimit'\r\n >,\r\n) {\r\n const baseSchema = getCustomFormColumnBaseSchema(props).label(props.Label);\r\n const result = props.isRequired ? baseSchema.required() : baseSchema;\r\n return result;\r\n}\r\nfunction getCustomFormColumnBaseSchema(\r\n props: Pick<\r\n IServiceRequestTableColumnModel,\r\n 'Label' | 'ColumnType' | 'Options' | 'SizeLimit'\r\n >,\r\n) {\r\n switch (props.ColumnType) {\r\n case 'CheckBox':\r\n return Yup.boolean().label(props.Label);\r\n case 'Date':\r\n return Yup.date().label(props.Label);\r\n case 'DropDownList':\r\n //TODO: validate selected option is present in the column options\r\n return Yup.mixed().label(props.Label);\r\n case 'UserSelection':\r\n return Yup.mixed>().label(props.Label);\r\n case 'Email':\r\n return Yup.string()\r\n .label(props.Label)\r\n .email()\r\n .nullable()\r\n .max(\r\n props.SizeLimit,\r\n `${props.Label} must be ${props.SizeLimit} characters long.`,\r\n );\r\n case 'Number':\r\n return Yup.number()\r\n .label(props.Label)\r\n .min(\r\n -props.SizeLimit,\r\n `${props.Label} must be greater than ${props.SizeLimit} .`,\r\n )\r\n .max(\r\n props.SizeLimit,\r\n `${props.Label} must be less than ${props.SizeLimit} .`,\r\n );\r\n case 'PositiveDecimal':\r\n return Yup.number()\r\n .label(props.Label)\r\n .min(0, `${props.Label} must be greater than ${0} .`)\r\n .max(\r\n props.SizeLimit,\r\n `${props.Label} must be less than ${props.SizeLimit} .`,\r\n );\r\n case 'PositiveInteger':\r\n return Yup.number()\r\n .integer()\r\n .label(props.Label)\r\n .min(0, `${props.Label} must be greater than ${0} .`)\r\n .max(\r\n props.SizeLimit,\r\n `${props.Label} must be less than ${props.SizeLimit} .`,\r\n );\r\n case 'ShortText':\r\n return Yup.string()\r\n .label(props.Label)\r\n .nullable()\r\n .max(\r\n props.SizeLimit,\r\n `${props.Label} must be ${props.SizeLimit} characters long.`,\r\n );\r\n case 'Serial':\r\n return Yup.string();\r\n\r\n default:\r\n assertExhaustive(props.ColumnType);\r\n }\r\n}\r\n","/**\r\n *\r\n * DatePeriods\r\n *\r\n */\r\nimport { Select, MenuItem, FormControl } from '@material-ui/core';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport StandardInput from '../BasicInputs/BaseInputs/StandardInput';\r\nimport { getPeriods } from '../pickers/DatePeriodsPicker';\r\n\r\n/**\r\n * The order of the values in this array does matter for backwards compatibility since there periods type picker used Integer Ids stored in a duplicate array and these might be saved in the saved query string filters for some users.\r\n *\r\n */\r\nexport const ALL_PERIOD_TYPES = [\r\n 'CustomDate',\r\n 'Today',\r\n 'TodayTomorrow',\r\n 'ThisWeek',\r\n 'NextWeek',\r\n 'ThisMonth',\r\n 'NextMonth',\r\n 'ThisQuarter',\r\n 'NextQuarter',\r\n 'ThisYear',\r\n 'NextYear',\r\n 'LastWeek',\r\n 'LastMonth',\r\n 'LastQuarter',\r\n 'LastYear',\r\n 'Tomorrow',\r\n 'Yesterday',\r\n] as const;\r\ntype PeriodTypesTyple = typeof ALL_PERIOD_TYPES;\r\nexport type PeriodTypes = PeriodTypesTyple[number];\r\nexport interface PeriodTypesEntity extends Entity {}\r\nexport const getPeriodTypesEntity = (\r\n valueType: PeriodTypes,\r\n): PeriodTypesEntity => {\r\n return getPeriods()\r\n .map(item => {\r\n return {\r\n Id: item.Id,\r\n Name: translations[item.Name],\r\n type: item.Name as PeriodTypes,\r\n };\r\n })\r\n .filter(value => {\r\n return value.type === valueType;\r\n })[0];\r\n};\r\nexport const getPeriodTypesEntityById = (\r\n id: PeriodTypes | number | undefined,\r\n): PeriodTypesEntity | undefined => {\r\n if (id === undefined) {\r\n return undefined;\r\n }\r\n const periodType: PeriodTypes | undefined =\r\n typeof id === 'number' ? ALL_PERIOD_TYPES[id] : id;\r\n\r\n return getPeriods()\r\n .map(item => {\r\n return {\r\n Id: item.Id,\r\n Name: translations[item.Name],\r\n type: item.Name as PeriodTypes,\r\n };\r\n })\r\n .filter(value => {\r\n return value.Id === periodType;\r\n })[0];\r\n};\r\nexport interface DatePeriodsProps {\r\n value: PeriodTypes;\r\n onChange: (value: PeriodTypes) => void;\r\n size?: 'medium' | 'small' | undefined;\r\n}\r\n\r\nexport function DatePeriods(props: DatePeriodsProps) {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n }\r\n value={props.value}\r\n onChange={e => props.onChange(e.target.value as PeriodTypes)}\r\n >\r\n {ALL_PERIOD_TYPES.map(key => (\r\n \r\n {t(key)}\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * UserPicker\r\n *\r\n */\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport {\r\n Condition,\r\n ODataOperators,\r\n quoteODataValue,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\n\r\nexport type UserUrl =\r\n | 'restricted'\r\n | 'full'\r\n | 'admin'\r\n | 'relevant'\r\n | 'budgetExperiments';\r\nexport interface UserPickerProps\r\n extends Omit, 'loadData'> {\r\n inputProps?: InputBaseComponentProps;\r\n selectArray?: Array;\r\n urlType?: UserUrl;\r\n withGroupFilter?: boolean;\r\n serviceGroups?: Identifiable[];\r\n}\r\n\r\nconst noExpandURlTypes: (UserUrl | undefined)[] = [\r\n 'budgetExperiments',\r\n 'relevant',\r\n];\r\n\r\nconst url = '/api/odata/v4/UserFilter';\r\nconst fullActiveUrl = '/api/odata/v4/UserFilter/GetUserSelections';\r\nconst adminsUrl = '/api/odata/v4/UserFilter/GetAdminUsers';\r\nexport const relevantUrl = '/api/odata/v4/UserFilter/GetRelevantUsers';\r\nconst budgetExperimentsUrl =\r\n '/api/odata/v4/UserFilter/GetBudgetExperimentsUsers';\r\nexport const initUserData = (id: string, urlType?: UserUrl) => {\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: new Condition('Id', ODataOperators.Equals, id).toString(),\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n urlType === 'full'\r\n ? fullActiveUrl\r\n : urlType === 'admin'\r\n ? adminsUrl\r\n : urlType === 'budgetExperiments'\r\n ? budgetExperimentsUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\n\r\nexport function UserPicker(props: UserPickerProps) {\r\n const { t } = useTranslation();\r\n const servicegroups = useSelector(selectGlobalServiceGroupFilter);\r\n const serviceGroups = props.serviceGroups ?? servicegroups;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const loadData = React.useCallback(\r\n getAutoCompleteLoadDataFn({\r\n url:\r\n props.urlType === 'full'\r\n ? fullActiveUrl\r\n : props.urlType === 'admin'\r\n ? adminsUrl\r\n : props.urlType === 'relevant'\r\n ? relevantUrl\r\n : props.urlType === 'budgetExperiments'\r\n ? budgetExperimentsUrl\r\n : url,\r\n predicates: props.predicates,\r\n globalServiceGroupFilter:\r\n !props.withGroupFilter || !serviceGroups?.length\r\n ? undefined\r\n : [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n serviceGroups,\r\n 'Id',\r\n ),\r\n ],\r\n select: props.selectArray ?? [\r\n 'Id',\r\n 'Name',\r\n 'UserGroupId',\r\n 'UserGroupName',\r\n 'UserGroups',\r\n 'Budgets',\r\n 'IsAdminPanel',\r\n 'IsEquipmentAdmin',\r\n 'IsGroupAdmin',\r\n 'IsLabTech',\r\n 'ServiceGroupIds',\r\n 'Services',\r\n 'CustomRoles',\r\n 'UserGroupId',\r\n 'UserGroupName',\r\n 'UserRoles',\r\n 'StaffEquipmentId',\r\n 'DefaultBudgetId',\r\n ],\r\n expand: noExpandURlTypes.includes(props.urlType)\r\n ? ''\r\n : 'Services,UserGroups',\r\n }),\r\n [serviceGroups, props.withGroupFilter],\r\n );\r\n return (\r\n \r\n );\r\n}\r\nexport function ServicesFilter(\r\n services: IServiceTypeFilterDto[],\r\n budgetExperimentEnabled: boolean,\r\n userGroupId?: string,\r\n budgetId?: number,\r\n defaultBudgetEnabled?: boolean,\r\n isDefaultSelected?: boolean,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (userGroupId !== undefined) {\r\n predicates.push(\r\n `(${new Condition(\r\n 'UserGroups',\r\n ODataOperators.Any,\r\n userGroupId,\r\n 'Id',\r\n )} or ${new Condition(\r\n 'UserGroupId',\r\n ODataOperators.Equals,\r\n userGroupId,\r\n )})`,\r\n );\r\n }\r\n if (budgetId !== undefined && !isDefaultSelected) {\r\n if (defaultBudgetEnabled) {\r\n predicates.push(\r\n `(${new Condition(\r\n 'Budgets',\r\n ODataOperators.Any,\r\n budgetId,\r\n ).toString()} or ${new Condition(\r\n 'DefaultBudgetId',\r\n ODataOperators.Equals,\r\n budgetId,\r\n ).toString()})`,\r\n );\r\n } else {\r\n predicates.push(\r\n new Condition('Budgets', ODataOperators.Any, budgetId),\r\n );\r\n }\r\n }\r\n if (\r\n services.length > 0 &&\r\n budgetExperimentEnabled &&\r\n !services.some(f => f.HideProject)\r\n ) {\r\n //TODO: add filter by selected services\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\nexport function AdminServicesFilter(\r\n serviceItems: IServiceFilterDto[],\r\n): (string | Condition)[] {\r\n if (!serviceItems.length || serviceItems.length < 1) {\r\n return [];\r\n }\r\n let groups = [...new Set(serviceItems.map(f => f.ServiceGroupId))];\r\n let groupIds = groups.map(item => {\r\n return { Id: item };\r\n }) as Identifiable[];\r\n let services = serviceItems\r\n .map(f => {\r\n return {\r\n ServiceId: f.Id ?? 0,\r\n ServiceTypeId: f.ServiceTypeId ?? 0,\r\n };\r\n })\r\n .filter(f => f.ServiceId !== 0 && f.ServiceTypeId !== 0);\r\n let groupsF = `(${new Condition(\r\n 'ServiceGroupIds',\r\n ODataOperators.AnyIn,\r\n groupIds,\r\n ).toString()})`;\r\n // let groupsF = `(${groups\r\n // .map(a => new Condition('ServiceGroupIds', ODataOperators.AnyIn, groupIds).toString())\r\n // .join(' and ')})`;\r\n let servF = `(Services/any(s: s/Id in ${quoteODataValue(\r\n services.map(f => f.ServiceId),\r\n )}))`;\r\n\r\n return [`${groupsF} or ${servF}`];\r\n}\r\nexport const initAssigneeAdminUsers = (\r\n type: IWorkOrderTypeDto,\r\n serviceItems: IServiceFilterDto[],\r\n) => {\r\n const predicates: (string | Condition)[] = [];\r\n if (type.AssignedToCoreAdmin) {\r\n predicates.push(\r\n new Condition(\r\n 'IsGroupAdmin',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n }\r\n if (type.AssignedToInstrumentAdmin) {\r\n predicates.push(\r\n new Condition(\r\n 'IsEquipmentAdmin',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n }\r\n if (type.AssignedToLabTech) {\r\n predicates.push(\r\n new Condition('IsLabTech', ODataOperators.Equals, true),\r\n );\r\n }\r\n if (serviceItems.length < 1 || predicates.length < 1) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: `${AdminServicesFilter(serviceItems)[0]} and (${predicates\r\n .map(f => f.toString())\r\n .join(' or ')})`,\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n","import { FormControl, FormLabel, styled } from '@material-ui/core';\r\nimport { FieldHookConfig } from 'formik';\r\nimport * as React from 'react';\r\nimport { Body } from '../Typography';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport interface FormLabelTextProps {\r\n text?: React.ReactNode;\r\n id?: string;\r\n}\r\nexport function FormLabelText({\r\n label,\r\n text,\r\n html,\r\n info,\r\n fullWidth = true,\r\n ...props\r\n}: FieldHookConfig & IFieldProps & FormLabelTextProps) {\r\n const StyledInfo = styled(InfoIcon)(({ theme }) => ({\r\n marginLeft: theme.spacing(1),\r\n }));\r\n return (\r\n \r\n {label && (\r\n \r\n <>\r\n {label} {info && }\r\n \r\n \r\n )}\r\n {text && (\r\n \r\n {text}\r\n \r\n )}\r\n {html}\r\n \r\n );\r\n}\r\n","/**\r\n * Compile time guard on Union Type switch\r\n * Usage example:\r\n * ```\r\n * type Union = 'apple' | 'banana' | 'orange';\r\n * function test(arg: Union) {\r\n * switch (arg) {\r\n * case 'apple':\r\n * ...\r\n * case 'banana':\r\n * ...\r\n * default:\r\n * // this will generate a comiple warning since 'orange' is not handled in the switch\r\n * assertExhaustive(arg);\r\n * }\r\n * }\r\n */\r\nexport function assertExhaustive(value: never, message?: string): never {\r\n throw new Error(\r\n message ?? `Reached unexpected case in exhaustive switch: ${value}`,\r\n );\r\n}\r\n","/**\r\n *\r\n * FundingTypeIdPicker\r\n *\r\n */\r\n\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { InvoiceFundingType } from 'enums/InvoiceFundingType';\r\nimport { Entity } from 'types/common';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface FundingTypePickerProps\r\n extends Omit>, 'getOptions'> {}\r\n\r\nexport const getSingleInvoiceFundingType = (val: number): Entity => {\r\n return enumToEntityArray(InvoiceFundingType).filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\n\r\nexport const initFundingTypeData = (\r\n initval: string | undefined,\r\n): Promise[]> => {\r\n const val = parseInt(initval ?? '');\r\n if (initval === undefined || isNaN(val)) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([getSingleInvoiceFundingType(val)]);\r\n });\r\n }\r\n};\r\n\r\nconst getOptions = (searchTerm: string | null) => {\r\n let items = enumToEntityArray(InvoiceFundingType);\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\n\r\nexport function FundingTypeIdPicker(props: FundingTypePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { CircularProgress, CircularProgressProps } from '@material-ui/core';\r\n\r\nexport interface ProgressProps extends CircularProgressProps {\r\n inProgress: boolean;\r\n}\r\nexport function Progress({ inProgress, size, ...props }: ProgressProps) {\r\n return (\r\n \r\n {inProgress ? (\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n","/**\r\n * Represents Date with representation info - e.g. representation: 'complete' | 'date' | 'time'\r\n */\r\nexport class CustomDate extends Date {\r\n representation: DateType = 'date';\r\n constructor(value?: number | string | Date, type?: DateType) {\r\n super(value ?? new Date());\r\n this.representation = type ?? 'complete';\r\n }\r\n}\r\n\r\nexport type DateType = 'complete' | 'date' | 'time';\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { useState, useMemo, useEffect, useRef } from 'react';\r\n\r\nexport type PromiseStatus = `pending` | `resolved` | `rejected`;\r\nexport type CancelPromise = (message?: string) => void;\r\nexport type ResetPromiseState = (\r\n keys?: keyof PromiseState | Array>,\r\n) => void;\r\n\r\nexport interface PromiseState {\r\n status?: PromiseStatus;\r\n promise?: Promise;\r\n value?: T;\r\n error?: Error;\r\n cancel?: CancelPromise;\r\n}\r\n\r\nexport type PromiseStateWithReset = PromiseState & {\r\n reset: ResetPromiseState;\r\n};\r\n\r\n/**\r\n * A hook which accepts an asynchronous function (i.e., a function which returns a promise).\r\n *\r\n * Returns a new asynchronous function wrapping the original to be called as necessary,\r\n * along with the state of the promise as `status`, `promise`, `value`, `error`, `cancel()`,\r\n * and a `reset()` method to reset the state.\r\n *\r\n * Pairs well with the {@link hooks.useAsyncExtendedState | `useAsyncExtendedState`} hook.\r\n *\r\n * Example:\r\n * ```ts\r\n * interface State {\r\n * foo: string\r\n * bar: string\r\n * }\r\n *\r\n * const [ state, setState, extendState ] = useAsyncExtendedState({\r\n * foo: 'foo',\r\n * bar: 'bar'\r\n * })\r\n *\r\n * const read = (id: string) => API.client.get>(`things/${id}`).then(response => {\r\n * return response.data\r\n * })\r\n *\r\n * const [ readThingRequest, readThing ] = usePromise(read)\r\n *\r\n * const isPending = readThingRequest.status === 'pending'\r\n *\r\n * return (\r\n * <>\r\n *
\r\n * foo: {state.foo}\r\n *
\r\n *\r\n *
\r\n * bar: {state.bar}\r\n *
\r\n *\r\n * extendState(readThing('someId'))} disabled={isPending}>\r\n * \r\n * {isPending\r\n * ? 'Reading thing...'\r\n * : 'Read thing'\r\n * }\r\n * \r\n * \r\n *\r\n * \r\n * {readThingRequest.error}\r\n * \r\n * \r\n * )\r\n * ```\r\n */\r\nexport const usePromise = any>(\r\n asyncFunction: T,\r\n initialState?: PromiseState>,\r\n): [\r\n PromiseStateWithReset>,\r\n (...asyncFuncArgs: Parameters) => ReturnType,\r\n] => {\r\n const [state, setState] = useState>>(\r\n initialState || {},\r\n );\r\n const isCancelled = useRef(false);\r\n const isUnmounted = useRef(false);\r\n\r\n const callAsyncFunction = useMemo(\r\n () =>\r\n (...args: Parameters): ReturnType => {\r\n const promise = asyncFunction(...args);\r\n const cancel: CancelPromise = message => {\r\n isCancelled.current = true;\r\n\r\n if (!isUnmounted.current) {\r\n setState(({ value }) => ({\r\n status: `rejected`,\r\n value,\r\n error: message ? new Error(message) : undefined,\r\n }));\r\n }\r\n };\r\n\r\n isCancelled.current = false;\r\n\r\n if (promise instanceof Promise) {\r\n return new Promise(resolve => {\r\n const fulfillPromise = async () => {\r\n try {\r\n const value: ReturnType = await promise;\r\n\r\n if (!isCancelled.current && !isUnmounted.current) {\r\n setState({ status: `resolved`, value });\r\n resolve(value);\r\n }\r\n } catch (error) {\r\n if (!isCancelled.current && !isUnmounted.current) {\r\n setState(({ value }) => ({\r\n status: `rejected`,\r\n value,\r\n error:\r\n error instanceof Error\r\n ? error\r\n : new Error(error as string),\r\n }));\r\n }\r\n }\r\n };\r\n\r\n setState(({ value }) => ({\r\n status: `pending`,\r\n value,\r\n promise,\r\n cancel,\r\n }));\r\n fulfillPromise();\r\n }) as ReturnType;\r\n } else {\r\n setState({ status: `resolved`, value: promise });\r\n return promise;\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [asyncFunction],\r\n );\r\n\r\n const reset: ResetPromiseState = useMemo(\r\n () => keys =>\r\n setState(state => {\r\n if (!keys) {\r\n return {};\r\n }\r\n\r\n const nextState = { ...state };\r\n\r\n if (Array.isArray(keys)) {\r\n for (const key of keys) {\r\n delete nextState[key];\r\n }\r\n } else {\r\n delete nextState[keys];\r\n }\r\n\r\n return nextState;\r\n }),\r\n [],\r\n );\r\n\r\n const stateWithReset: PromiseStateWithReset> = useMemo(\r\n () => ({ ...state, reset }),\r\n [state, reset],\r\n );\r\n\r\n useEffect(() => {\r\n return () => {\r\n isCancelled.current = true;\r\n isUnmounted.current = true;\r\n };\r\n }, []);\r\n\r\n return [stateWithReset, callAsyncFunction];\r\n};\r\n","import {\r\n getPeriodTypesEntity,\r\n PeriodTypes,\r\n PeriodTypesEntity,\r\n} from 'app/components/DatePeriods';\r\nimport { IPresetDatesRange } from './IPresetDatesRange';\r\nimport { DatesRange } from './DatesRange';\r\nimport { translations } from 'locales/translations';\r\nimport { TFunction } from 'i18next';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\nexport class PresetDatesRange extends DatesRange implements IPresetDatesRange {\r\n constructor(t?: IPresetDatesRange) {\r\n super(t as IPresetDatesRange);\r\n this.type = (t as IPresetDatesRange)?.type ?? {\r\n Id: 'CustomDate',\r\n Name: `${translations.CustomDate}`,\r\n type: 'CustomDate',\r\n };\r\n }\r\n type: PeriodTypesEntity = {\r\n Id: 'CustomDate',\r\n Name: `${translations.CustomDate}`,\r\n };\r\n\r\n GetPresetDatesRangeDisplayString(t: TFunction): string {\r\n switch (this.type?.Id) {\r\n default:\r\n return t(this.type.Id);\r\n case 'CustomDate':\r\n return `${\r\n this.start === null\r\n ? t(translations.NA)\r\n : dateUtils.shortDateTimeFormat(this.start)\r\n } - ${\r\n this.end === null\r\n ? t(translations.NA)\r\n : dateUtils.shortDateTimeFormat(this.end)\r\n }`;\r\n }\r\n }\r\n static fromPreset(t: PeriodTypesEntity) {\r\n return new PresetDatesRange({\r\n type: t,\r\n ...DatesRange.fromPreset(t, null, null),\r\n });\r\n }\r\n static fromInitPreset(\r\n t: PeriodTypesEntity,\r\n start: Date | null,\r\n end: Date | null,\r\n ) {\r\n return new PresetDatesRange({\r\n type: t,\r\n ...DatesRange.fromPreset(t, start, end),\r\n });\r\n }\r\n static fromType(t: PeriodTypes, st: Date | null, et: Date | null) {\r\n const x = getPeriodTypesEntity(t);\r\n const y = DatesRange.fromPreset(x as PeriodTypesEntity, st, et);\r\n const z: IPresetDatesRange = {\r\n type: x,\r\n start: y.start,\r\n end: y.end,\r\n };\r\n return new PresetDatesRange(z);\r\n }\r\n\r\n static Custom(\r\n start: Date | undefined | null,\r\n end: Date | undefined | null,\r\n ): PresetDatesRange | undefined {\r\n return new PresetDatesRange({\r\n type: getPeriodTypesEntity('CustomDate'),\r\n start: start ?? null,\r\n end: end ?? null,\r\n });\r\n }\r\n}\r\n","import { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { translations } from 'locales/translations';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport {\r\n AssetIdentifier,\r\n AssetIdIdentifier,\r\n AssetServiceIdentifier,\r\n} from 'app/pages/AssetPopUp/components/Utils';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { PrimaryActionDynamic } from 'app/components/BasicTable/components/TableCard/PrimaryAction';\r\nimport { ServiceTypeUnion } from 'api/odata/generated/enums/ServiceType';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectglobalSettings, selectPublicUrl } from 'app/slice/selectors';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { Row } from 'react-table';\r\nimport { AssetPopUpProps } from 'app/pages/AssetPopUp/index';\r\nimport { pick } from 'lodash';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\ninterface AssetLinkIdentifierProps {\r\n id?: number;\r\n serviceId?: number;\r\n serviceType?: ServiceTypeUnion;\r\n}\r\nexport type AssetLinkProps = AssetIdentifier & {\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n openOnNewTab?: boolean;\r\n expanded?: boolean;\r\n};\r\n\r\nexport const AssetLink = (props: AssetLinkProps) => {\r\n const { t } = useTranslation();\r\n const openAsset = useOpenAssetPopUp();\r\n\r\n const getUrl = useAssetLinkUrl();\r\n const link = getUrl({\r\n id: (props as AssetIdIdentifier).id,\r\n serviceId: (props as AssetServiceIdentifier).serviceId,\r\n serviceType: (props as AssetServiceIdentifier).serviceType,\r\n });\r\n const open = () => {\r\n openAsset(\r\n {\r\n useSidePanel: props.useSidePanel,\r\n expanded: props.expanded,\r\n ...(pick(props, 'id', 'serviceId', 'serviceType') as AssetIdentifier),\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport type UseOpenAssetPopUpProps = AssetIdentifier & {\r\n useSidePanel?: boolean;\r\n expanded?: boolean;\r\n};\r\nexport const useOpenAssetPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n const globalSettings = useSelector(selectglobalSettings);\r\n const OpenAssetsInSidePanel = globalSettings?.GetBoolean(\r\n AllowedSettings[AllowedSettings.OpenAssetsInSidePanel],\r\n );\r\n\r\n return React.useCallback(\r\n (\r\n props: UseOpenAssetPopUpProps,\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n const identifier = props;\r\n if (identifier !== undefined) {\r\n const assetPopupProps: AssetPopUpProps = {\r\n identifier: identifier,\r\n useSidePanel: props.useSidePanel ?? false,\r\n };\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover({\r\n renderPageType: RenderPageType.AssetDetails,\r\n renderPageProps: assetPopupProps,\r\n expanded: !OpenAssetsInSidePanel,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n });\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.AssetDetails,\r\n renderPageProps: assetPopupProps,\r\n expanded:\r\n props.expanded !== undefined\r\n ? props.expanded\r\n : !OpenAssetsInSidePanel,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n }\r\n },\r\n [OpenAssetsInSidePanel, openPanel],\r\n );\r\n};\r\nexport const useAssetLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n return React.useCallback(\r\n (params: {\r\n id?: number;\r\n serviceId?: number;\r\n serviceType?: ServiceTypeUnion;\r\n }) => {\r\n return buildURL(`${publicUrl}Assets/Details`, params);\r\n },\r\n [publicUrl],\r\n );\r\n};\r\ninterface PrimaryActionDynamicRow extends IRow {\r\n Id?: number;\r\n serviceId?: number;\r\n serviceType?: ServiceTypeUnion;\r\n}\r\n\r\n//used for Dashboard tadles\r\nexport const OpenAssetPrimaryAction: PrimaryActionDynamic<\r\n PrimaryActionDynamicRow\r\n> = (openPanel, row, toggle, user, useSidePanel) => {\r\n const identifier = getAssetIdentifier(row);\r\n if (identifier === undefined) {\r\n console.error('no asset identifier found for row ', row);\r\n } else {\r\n const props: AssetPopUpProps = {\r\n identifier: identifier,\r\n useSidePanel: useSidePanel ?? false,\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.AssetDetails,\r\n renderPageProps: props,\r\n useSidePanel: useSidePanel,\r\n expanded: false,\r\n isCover: useSidePanel,\r\n });\r\n }\r\n};\r\nfunction getAssetIdentifier(\r\n row: Row,\r\n): AssetIdentifier | undefined {\r\n return getAssetLinkIdentifier({\r\n id: row.original.Id,\r\n serviceId: row.original.serviceId,\r\n serviceType: row.original.serviceType,\r\n });\r\n}\r\n\r\nfunction getAssetLinkIdentifier(\r\n row: AssetLinkIdentifierProps,\r\n): AssetIdentifier | undefined {\r\n if (row.id !== undefined) {\r\n return {\r\n id: row.id,\r\n };\r\n } else if (row.serviceId !== undefined && row.serviceType !== undefined) {\r\n return {\r\n serviceId: row.serviceId,\r\n serviceType: row.serviceType,\r\n };\r\n }\r\n}\r\n","import {\r\n call,\r\n put,\r\n select,\r\n debounce,\r\n takeLeading,\r\n takeLatest,\r\n takeEvery,\r\n} from 'redux-saga/effects';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { requestSamplesActions as actions } from '.';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { PayloadAction } from '@reduxjs/toolkit';\r\nimport {\r\n InsertServiceRequestMilestoneChargeAction,\r\n ILoadServiceRequestMilestonesAction,\r\n IRequestMilestoneManualChargeModel,\r\n ISample,\r\n IServiceRequestPatchAction,\r\n IServiceRequestUpdateBudgetAction,\r\n IServiceRequestUpdateStatusAction,\r\n UpdateServiceRequestMilestoneChargeAction,\r\n ServiceRequestMilestoneInsertModel,\r\n UpdateServiceRequestRowValueAction,\r\n IServiceRequestTableRowModel,\r\n IRequestDetailsModel,\r\n IServiceRequestUpdatePurchaseOrderAction,\r\n IServiceRequestUpdateFundingTypeAction,\r\n IServiceRequestUpdateExternalInternalNumberAction,\r\n IServiceRequestUpdateGradientAction,\r\n IServiceRequestUpdateOverheadAction,\r\n ILoadServiceRequestRowsAction,\r\n InsertServiceRequestMilestoneChargesAction,\r\n} from './types';\r\nimport { TableState } from 'react-table';\r\nimport { IRow } from 'app/components/BasicTable';\r\nimport { TableFilterBuilder } from 'app/components/BasicTable/TableFilterBuilder';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport {\r\n selectRequestDetailsData,\r\n selectSamplesTableState,\r\n selectServiceRequestCustomFormColumns,\r\n selectServiceRequestCustomFormFields,\r\n selectServiceRequestId,\r\n} from './selectors';\r\nimport { AxiosError, AxiosResponse } from 'axios';\r\nimport fileDownload from 'js-file-download';\r\nimport { deleteSamples, IDeleteSamplesResult } from 'api/SamplesApi';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { IServiceRequestDto } from 'api/odata/generated/entities/IServiceRequestDto';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { Entity } from 'types/common';\r\nimport { takeLatestByKey } from 'utils/redux-saga';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectGlobalSettingBool,\r\n selectKnownModule,\r\n} from 'app/slice/selectors';\r\nimport { IServiceRequestMilestoneDto } from 'api/odata/generated/entities/IServiceRequestMilestoneDto';\r\nimport { IServiceRequestMilestoneChargeDto } from 'api/odata/generated/entities/IServiceRequestMilestoneChargeDto';\r\nimport { IConsumableServiceDto } from 'api/odata/generated/entities/IConsumableServiceDto';\r\nimport {\r\n ServiceRequestMilestoneStatuses,\r\n ServiceRequestMilestoneStatusesUnion,\r\n} from 'api/odata/generated/enums/ServiceRequestMilestoneStatuses';\r\nimport {\r\n IOpenSidePanelPayload,\r\n layoutActions,\r\n} from 'app/Layout/FrontendLayout/slice';\r\nimport { IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { selectSidePanelState } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n RenderPageType,\r\n SidePanelState,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport { IServiceRequestRowDto } from 'api/odata/generated/entities/IServiceRequestRowDto';\r\nimport { getLogger } from 'utils/logLevel';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { IServiceRequestRowStatusDto } from 'api/odata/generated/entities/IServiceRequestRowStatusDto';\r\nimport {\r\n prepareServiceRequestRowModel,\r\n serviceRequestModelToDto,\r\n} from './prepareServiceRequestRowModel';\r\nimport { omit } from 'lodash';\r\nimport { getCustomFormInitialValues } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\nimport { ServiceRequestDetailsProps } from '..';\r\nimport { push } from 'connected-react-router';\r\nimport { GetServiceRequestDetailsPath } from './path';\r\nimport { IResponseTypeWithId } from 'types/ResponseType';\r\nimport { getServiceRequestBlockedByInvoicedMessage } from '../components/ServiceRequestBlockedByInvoice/getServiceRequestBlockedByInvoicedMessage';\r\n\r\nconst log = getLogger('ServiceRequestDetails');\r\n\r\nfunction* doInit(action: PayloadAction) {\r\n try {\r\n const statuses: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n '/api/odata/v4/ServiceRequestStatusFilter',\r\n );\r\n yield put(actions.initServiceRequestStatuses_Success(statuses.value));\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n yield* doLoadServiceRequestRowStatuses();\r\n}\r\nfunction* doLoadRequestDetails(action: PayloadAction) {\r\n try {\r\n const SampleManagementTablesEnabled = yield select(state =>\r\n selectKnownModule(state, KnownModules.SampleManagementTables),\r\n );\r\n const requestDetails: IServiceRequestDto = yield call(\r\n httpClient.get,\r\n `api/odata/v4/ServiceRequests/${action.payload}`,\r\n {\r\n $expand: [\r\n 'Status',\r\n 'Service($expand=ServiceGroup,CustomForm)',\r\n 'CreatedBy($select=Id,Name)',\r\n 'CreatedFor($expand=UserGroup)',\r\n 'UpdatedBy($select=Id,Name)',\r\n 'SubmittedBy($select=Id,Name)',\r\n 'UserGroup($select=Id,Name)',\r\n 'Budget($select=Id,Name,FundingTypeId,PurchaseOrderOptionId)',\r\n 'UnitType($select=Id,Name)',\r\n 'Gradient($select=Id,Name,ServiceGroupId,EstimatedRuntimeMinutes)',\r\n 'ConsumableServices',\r\n ].join(','),\r\n },\r\n );\r\n yield put(\r\n actions.loadRequestDetails_Success(\r\n omit(requestDetails, 'Rows', 'FormValues'),\r\n ),\r\n );\r\n\r\n if (\r\n requestDetails.Service.CustomForm.FormFields.some(\r\n f => f.Active && f.IsColumn === false,\r\n )\r\n ) {\r\n yield put(actions.loadFormValues(action.payload));\r\n }\r\n\r\n if (\r\n requestDetails.Service.CustomForm.FormFields.some(\r\n f => f.Active && f.IsColumn === true,\r\n ) ||\r\n SampleManagementTablesEnabled\r\n ) {\r\n yield* doLoadServiceRequestRows({\r\n type: action.type,\r\n payload: {\r\n serviceRequestId: requestDetails.Id,\r\n state: {\r\n pageIndex: 0,\r\n pageSize: 10,\r\n },\r\n },\r\n });\r\n }\r\n\r\n // trigger loading the milestones if the request milestones are enabled both in the global settings and on the service settings\r\n const requestMilestones: boolean = yield select(state =>\r\n selectGlobalSettingBool(state, AllowedSettings.RequestMilestones),\r\n );\r\n if (requestDetails.Service.MilestonesAddonsType !== 'NA') {\r\n if (requestMilestones === true) {\r\n yield put(actions.loadMilestones({ Id: action.payload }));\r\n }\r\n }\r\n if (requestDetails.InvoiceId !== null) {\r\n const { variant, messageKey } =\r\n getServiceRequestBlockedByInvoicedMessage(requestDetails);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: variant,\r\n message: i18next.t(messageKey),\r\n }),\r\n );\r\n }\r\n } catch (error) {\r\n log.error(error);\r\n yield put(\r\n actions.loadRequestDetails_Error({\r\n response: {\r\n status: (error as AxiosError)?.response?.status,\r\n },\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doRefreshRequestDetails(action: PayloadAction) {\r\n try {\r\n const requestDetails = yield call(\r\n httpClient.get,\r\n `api/odata/v4/ServiceRequests/${action.payload}`,\r\n {\r\n $expand: [\r\n 'Status',\r\n 'Service($expand=ServiceGroup,CustomForm)',\r\n 'CreatedBy($select=Id,Name)',\r\n 'CreatedFor($expand=UserGroup)',\r\n 'UpdatedBy($select=Id,Name)',\r\n 'SubmittedBy($select=Id,Name)',\r\n 'UserGroup($select=Id,Name)',\r\n 'Budget($select=Id,Name,FundingTypeId,PurchaseOrderOptionId)',\r\n 'UnitType($select=Id,Name)',\r\n 'Gradient($select=Id,Name,ServiceGroupId,EstimatedRuntimeMinutes)',\r\n 'ConsumableServices',\r\n ].join(','),\r\n },\r\n );\r\n yield put(actions.refreshRequestDetails_Success(requestDetails));\r\n if (\r\n requestDetails.Service.CustomForm.FormFields.some(\r\n f => f.Active && f.IsColumn === false,\r\n )\r\n ) {\r\n yield put(actions.loadFormValues(action.payload));\r\n }\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n}\r\nfunction* doLoadFormValues(action: PayloadAction) {\r\n const url = `api/odata/v4/ServiceRequests(${action.payload})/FormValues`;\r\n const data: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n url,\r\n );\r\n\r\n const formFields = yield select(selectServiceRequestCustomFormFields);\r\n const valuesObject = getCustomFormInitialValues(formFields, data.value);\r\n if (valuesObject !== undefined) {\r\n yield put(actions.loadFormValues_Success(valuesObject));\r\n }\r\n}\r\nfunction* doSaveFormValue(\r\n action: PayloadAction<\r\n Pick &\r\n Pick & { Value: any }\r\n >,\r\n) {\r\n if (action.payload.RequestId === null) {\r\n log.warn('doSaveFormValue: requestId is empty');\r\n }\r\n try {\r\n if (action.payload.Type === 'File' && action.payload.Value?.length === 0) {\r\n action.payload.Value = null;\r\n }\r\n if (action.payload.Type === 'File' && action.payload.Value !== null) {\r\n const formData = new FormData();\r\n formData.append(\r\n 'file',\r\n action.payload.Value[0].PostedFile,\r\n action.payload.Value[0].DisplayName,\r\n );\r\n yield call(\r\n httpClient.post,\r\n `/api/requests/${action.payload.RequestId}/formvalues/${action.payload.FormFieldId}/file`,\r\n formData,\r\n {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n Accept: 'application/json',\r\n },\r\n },\r\n );\r\n } else {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.RequestId})/FormValues`;\r\n const payload = action.payload;\r\n yield call(httpClient.post, url, omit(payload, 'Type'));\r\n }\r\n } catch (error) {\r\n const err = error as AxiosError;\r\n if (err.isAxiosError && !!err.response?.data?.Message) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: err.response?.data?.Message,\r\n }),\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction* doLoadSamples(\r\n action: PayloadAction<\r\n Partial<\r\n Partial<\r\n TableState & {\r\n customFilters: IFilterSettings[];\r\n searchColumns: string[];\r\n }\r\n >\r\n >\r\n >,\r\n) {\r\n // todo: switch to odata v4: const url = `/api/odata/v4/ServiceRequests(${id})`;\r\n\r\n const serviceRequestId = yield select(selectServiceRequestId);\r\n //const url = '/api/odata/v4/samples';\r\n const url = `api/odata/v4/ServiceRequests(${serviceRequestId})/Samples`;\r\n\r\n const currentTableState = yield select(selectSamplesTableState);\r\n const filters = ['(not SourceRunIds/any())'];\r\n\r\n // new Condition(\r\n // 'ServiceRequestId',\r\n // ODataOperators.Equals,\r\n // serviceRequestId,\r\n // ),\r\n const params = {\r\n $count: true,\r\n $top: currentTableState.pageSize,\r\n $skip:\r\n (currentTableState.pageIndex ?? 0) * (currentTableState.pageSize ?? 5),\r\n $orderby:\r\n currentTableState.sortBy\r\n ?.map(f => `${f.id} ${f.desc ?? false ? 'desc' : 'asc'}`)\r\n .join(',') || undefined,\r\n\r\n $filter: TableFilterBuilder(\r\n currentTableState.customFilters,\r\n currentTableState.globalFilter,\r\n undefined,\r\n currentTableState.searchColumns,\r\n filters,\r\n ),\r\n };\r\n try {\r\n const data = yield call(httpClient.get, url, params);\r\n yield put(actions.loadSamples_Success(data));\r\n } catch (error) {\r\n yield put(\r\n actions.loadSamples_Error(i18next.t(translations.AnErrorOccurred)),\r\n );\r\n const forbidden = (error as AxiosError)?.response?.status === 403;\r\n if (forbidden) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.Forbidden),\r\n }),\r\n );\r\n }\r\n }\r\n}\r\n// function* doLoadServiceRequestRows(\r\n// id: number,\r\n// lanesEnabled?: boolean,\r\n// visibleToAdminOnly?: boolean,\r\n// ) {\r\n// const url = `api/odata/v4/ServiceRequests(${id})/Rows`;\r\n// const data: IODataQueryResponse = yield call(\r\n// httpClient.get,\r\n// url,\r\n// //TODO: bring back server side paging?\r\n// //params,\r\n// );\r\n// const columns = yield select(selectServiceRequestCustomFormColumns);\r\n// const isAdmin = yield select(selectIsServiceRequestAdmin);\r\n// const rowsDisabled =\r\n// !lanesEnabled || (visibleToAdminOnly && !isAdmin?.isAdmin);\r\n// const model = prepareServiceRequestRowModel(\r\n// rowsDisabled ? [] : data.value,\r\n// columns,\r\n// );\r\n// yield put(actions.loadServiceRequestRows_Success(model));\r\n// }\r\nfunction* doLoadServiceRequestRows(action: ILoadServiceRequestRowsAction) {\r\n const url = `api/odata/v4/ServiceRequests(${action.payload.serviceRequestId})/Rows`;\r\n const data: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n url,\r\n //TODO: bring back server side paging?\r\n //params,\r\n );\r\n const columns = yield select(selectServiceRequestCustomFormColumns);\r\n const model = prepareServiceRequestRowModel(data.value, columns);\r\n console.debug('rows model', model);\r\n yield put(actions.loadServiceRequestRows_Success(model));\r\n}\r\nfunction* doLoadMilestones(action: ILoadServiceRequestMilestonesAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/Milestones`;\r\n const params = {\r\n $expand: [\r\n 'Assignees($select=Id,Name)',\r\n `ServiceRequestMilestoneCharges($expand=${[\r\n 'Service($select=Id,Name,Rate;$expand=UnitType($select=Id,Name))',\r\n 'UpdatedBy($select=Id,Name)',\r\n 'UnitType($select=Id,Name)',\r\n ].join(',')})`,\r\n ].join(','),\r\n };\r\n const data: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n url,\r\n params,\r\n );\r\n yield put(actions.loadMilestones_Success(data.value));\r\n}\r\nfunction* doCreateSample(action: PayloadAction) {\r\n try {\r\n const url = `/api/odata/v4/samples`;\r\n const response = yield call(httpClient.post, url, action.payload);\r\n yield put(actions.createSample_Success(response));\r\n } catch (error) {\r\n log.error('doCreateSample', error);\r\n yield put(actions.createSample_Error());\r\n const forbidden = (error as AxiosError)?.response?.status === 403;\r\n if (forbidden) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.Forbidden),\r\n }),\r\n );\r\n }\r\n }\r\n}\r\nfunction* doUpdateServiceRequestSampleField(\r\n action: PayloadAction>,\r\n) {\r\n const url = `/api/odata/v4/samples(${action.payload.Id})`;\r\n const payload: Omit, 'Id'> = action.payload;\r\n try {\r\n yield call(httpClient.patch, url, payload);\r\n yield put(actions.updateServiceRequestSampleField_Success());\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updateServiceRequestSampleField_Error());\r\n const forbidden = (error as AxiosError)?.response?.status === 403;\r\n if (forbidden) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.Forbidden),\r\n }),\r\n );\r\n return;\r\n }\r\n const msg = (error as AxiosError)?.response?.data?.error?.innererror\r\n ?.message;\r\n if (msg !== undefined) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'SamplesListPage.saga.updateField',\r\n variant: 'error',\r\n message: msg,\r\n }),\r\n );\r\n }\r\n yield put(actions.updateServiceRequestSampleField_Error());\r\n }\r\n}\r\n\r\nfunction* doUpdateServiceRequestRowValue(\r\n action: UpdateServiceRequestRowValueAction,\r\n) {\r\n // TODO: migrate value updates to the new api\r\n // const url = `/api/odata/v4/ServiceRequests(${action.payload.serviceRequestId})/Rows(${action.payload.serviceRequestValue.RowId})/Values`;\r\n const url = `/api/requests/${action.payload.serviceRequestId}/tabledata/${action.payload.serviceRequestValue.RowId}/${action.payload.serviceRequestValue.ColumnId}`;\r\n const payload =\r\n action.payload.serviceRequestValue.DisplayValue === null\r\n ? action.payload.serviceRequestValue.Value\r\n : {\r\n id: action.payload.serviceRequestValue.Value,\r\n text: action.payload.serviceRequestValue.DisplayValue,\r\n };\r\n\r\n try {\r\n const results = yield call(httpClient.post, url, JSON.stringify(payload), {\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (!!results.errorMessages && results.errorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: results.errorMessages[0],\r\n }),\r\n );\r\n yield put(actions.updateServiceRequestRowValue_Error());\r\n return;\r\n }\r\n yield put(actions.updateServiceRequestRowValue_Success());\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updateServiceRequestRowValue_Error());\r\n const forbidden = (error as AxiosError)?.response?.status === 403;\r\n if (forbidden) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.Forbidden),\r\n }),\r\n );\r\n return;\r\n }\r\n const msg = (error as AxiosError)?.response?.data?.error?.innererror\r\n ?.message;\r\n if (msg !== undefined) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'SamplesListPage.saga.updateField',\r\n variant: 'error',\r\n message: msg,\r\n }),\r\n );\r\n }\r\n yield put(actions.updateServiceRequestSampleField_Error());\r\n }\r\n}\r\n\r\nfunction* doImport(action: PayloadAction) {\r\n const file = action.payload.file;\r\n const serviceRequestId = action.payload.serviceRequestId;\r\n const url = `/api/SamplesImport/import?serviceRequestId=${serviceRequestId}`;\r\n try {\r\n const response = yield call(httpClient.uploadFile, url, file);\r\n const allRowsImportedSuccessfully = response.data?.size === 0;\r\n if (allRowsImportedSuccessfully) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.AllRowsImportedSuccessfully),\r\n }),\r\n );\r\n } else {\r\n yield call(fileDownload, response.data, 'import-result.xlsx');\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'warning',\r\n message: i18next.t(\r\n translations.OneOrMoreErrorOccurredDuringImportPleaseReviewOutputFile,\r\n ),\r\n }),\r\n );\r\n }\r\n yield put(actions.import_Success());\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.import_Error());\r\n const forbidden = (error as AxiosError)?.response?.status === 403;\r\n if (forbidden) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.Forbidden),\r\n }),\r\n );\r\n return;\r\n }\r\n }\r\n}\r\n\r\nfunction* doDeleteSamples(action: PayloadAction) {\r\n let r: IDeleteSamplesResult = yield call(deleteSamples, action.payload);\r\n\r\n for (const error of r.errors) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: error.message,\r\n }),\r\n );\r\n }\r\n if (r.successCount > 0) {\r\n // reload table data\r\n const tableState = yield select(selectSamplesTableState);\r\n yield put(actions.loadSamples(tableState));\r\n\r\n // post success notification of deleted records\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.XRecordsWereBeDeleted, {\r\n x: r.successCount,\r\n }),\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doPatchRequestDetails(action: IServiceRequestPatchAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})`;\r\n const payload = action.payload;\r\n try {\r\n const response = yield call(httpClient.patch, url, payload);\r\n yield put(actions.patch_Success({ ...response, ...action.payload }));\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.patch_Error(action.payload));\r\n const axiosError = error as AxiosError;\r\n const reason =\r\n axiosError?.response?.data?.error?.innererror?.message ??\r\n axiosError?.response?.data?.error?.message ??\r\n axiosError?.response?.data?.statusText ??\r\n i18next.t(translations.NA);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: reason,\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doUpdateStatus(action: IServiceRequestUpdateStatusAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/Status`;\r\n const payload = action.payload;\r\n try {\r\n const response = yield call(httpClient.post, url, {\r\n ...payload.Status,\r\n ...{ Reason: action.payload.Reason },\r\n });\r\n yield put(\r\n actions.updateStatus_Success({\r\n ...response,\r\n // old API returns Status in old format, override it here with IServiceRequestStatusDto\r\n Status: action.payload.Status,\r\n }),\r\n );\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: i18next.t(translations.StatusUpdatedTo, action.payload.Status),\r\n variant: 'success',\r\n }),\r\n );\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updateStatus_Error(action.payload));\r\n const message = (error as any)?.response?.data?.error?.innererror?.message;\r\n if (message !== undefined) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n }\r\n const axiosError = error as AxiosError;\r\n const reason =\r\n axiosError?.response?.data?.error?.innererror?.message ??\r\n axiosError?.response?.data?.error?.message ??\r\n axiosError?.response?.data?.statusText ??\r\n i18next.t(translations.NA);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.ServiceRequestStatusUpdate_Error, {\r\n reason: reason,\r\n }),\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doUpdateServiceRequestRowStatus(\r\n action: PayloadAction<{\r\n serviceRequestId: number;\r\n serviceRequestRowId: number;\r\n status: IServiceRequestRowStatusDto | null;\r\n }>,\r\n) {\r\n try {\r\n yield call(\r\n httpClient.post,\r\n `api/requests/${action.payload.serviceRequestId}/tabledata/rows/${action.payload.serviceRequestRowId}/Status`,\r\n JSON.stringify(action.payload.status?.Id),\r\n {\r\n headers: { 'Content-Type': 'application/json' },\r\n },\r\n );\r\n yield put(actions.updateServiceRequestRowStatus_Success(action.payload));\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n}\r\n\r\nfunction* doUpdateBudget(action: IServiceRequestUpdateBudgetAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/Budget`;\r\n const payload = action.payload;\r\n try {\r\n const response: IServiceRequestDto = yield call(\r\n httpClient.post,\r\n url,\r\n payload.Budget,\r\n );\r\n yield put(actions.updateBudget_Success(response));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: i18next.t(translations.BudgetUpdatedTo, {\r\n Name: action.payload.Budget?.Name,\r\n }),\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(actions.refreshRequestDetails(action.payload.Id));\r\n } catch (error) {\r\n const message = (error as any)?.response?.data?.error?.innererror?.message;\r\n if (message !== undefined) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n }\r\n yield put(actions.updateBudget_Error(action.payload));\r\n }\r\n}\r\nfunction* doUpdateGradient(action: IServiceRequestUpdateGradientAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/Gradient`;\r\n const payload = action.payload;\r\n try {\r\n yield call(httpClient.post, url, payload.Gradient);\r\n yield put(actions.updateGradient_Success(action.payload));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: i18next.t(translations.GradientUpdatedTo, {\r\n Name: action.payload.Gradient?.Name,\r\n }),\r\n variant: 'success',\r\n }),\r\n );\r\n //yield put(actions.refreshRequestDetails(action.payload.Id));\r\n console.debug(payload);\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updateGradient_Error(action.payload));\r\n }\r\n}\r\nfunction* doUpdateOverheadMinutes(action: IServiceRequestUpdateOverheadAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/OverheadMinutes`;\r\n const payload = action.payload;\r\n try {\r\n const response: IServiceRequestDto = yield call(\r\n httpClient.post,\r\n url,\r\n payload.OverheadMinutes,\r\n );\r\n yield put(actions.updateOverheadMinutes_Success(response));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: i18next.t(translations.OverheadTimeUpdatedTo, {\r\n Name: action.payload.OverheadMinutes,\r\n }),\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(actions.refreshRequestDetails(action.payload.Id));\r\n console.debug(payload);\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updateOverheadMinutes_Error(action.payload));\r\n }\r\n}\r\nfunction* doUpdatePurchaseOrder(\r\n action: IServiceRequestUpdatePurchaseOrderAction,\r\n) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/PurchaseOrder`;\r\n const payload = action.payload;\r\n try {\r\n const response: IServiceRequestDto = yield call(\r\n httpClient.post,\r\n url,\r\n payload.PurchaseOrder,\r\n );\r\n yield put(actions.updatePurchaseOrder_Success(response));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: i18next.t(translations.PurchaseOrderUpdatedTo, {\r\n Name: action.payload.PurchaseOrder,\r\n }),\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(actions.refreshRequestDetails(action.payload.Id));\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updatePurchaseOrder_Error(action.payload));\r\n }\r\n}\r\n\r\nfunction* doUpdateExternalInternalNumber(\r\n action: IServiceRequestUpdateExternalInternalNumberAction,\r\n) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/ExternalInternalNumber`;\r\n const payload = action.payload;\r\n try {\r\n const response: IServiceRequestDto = yield call(\r\n httpClient.post,\r\n url,\r\n payload.ExternalInternalNumber,\r\n );\r\n yield put(actions.updateExternalInternalNumber_Success(response));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: i18next.t(translations.ExternalInternalNumberUpdatedTo, {\r\n Name: action.payload.ExternalInternalNumber,\r\n }),\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(actions.refreshRequestDetails(action.payload.Id));\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updateExternalInternalNumber_Error(action.payload));\r\n }\r\n}\r\n\r\nfunction* doUpdateFundingType(action: IServiceRequestUpdateFundingTypeAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/FundingType`;\r\n const payload = action.payload;\r\n try {\r\n const response: IServiceRequestDto = yield call(\r\n httpClient.post,\r\n url,\r\n payload.FundingTypeId,\r\n );\r\n yield put(actions.updateFundingType_Success(response));\r\n if (action.payload.FundingTypeId !== null) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: i18next.t(translations.FundingTypeUpdatedTo, {\r\n Name: getSingleInvoiceFundingType(action.payload.FundingTypeId)\r\n .Name,\r\n }),\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n yield put(actions.refreshRequestDetails(action.payload.Id));\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.updateFundingType_Error(action.payload));\r\n }\r\n}\r\nfunction* doSubmit(action: PayloadAction) {\r\n const url = `api/ServiceRequests/${action.payload.Id}/SubmitStep`;\r\n try {\r\n yield call(httpClient.post, url);\r\n yield put(actions.submitStep_success(action.payload));\r\n yield put(actions.refreshRequestDetails(action.payload.Id));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'submitStep',\r\n message: i18next.t(translations.StepHasBeenSubmitted),\r\n variant: 'success',\r\n }),\r\n );\r\n } catch (error) {\r\n log.error(error);\r\n const errorMessages = getErrorMessages(error);\r\n yield* putErrorMessages(errorMessages);\r\n yield put(actions.submitStep_Error());\r\n }\r\n}\r\n\r\nfunction* putErrorMessages(errorMessages: Array | undefined) {\r\n if (errorMessages !== undefined) {\r\n for (const message of errorMessages) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: message,\r\n }),\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction getErrorMessages(error: unknown): Array | undefined {\r\n const axiosError = error as AxiosError;\r\n const isAxiosError = axiosError.isAxiosError;\r\n if (isAxiosError) {\r\n const dataErrorMessages = axiosError.response?.data?.ErrorMessages;\r\n if (\r\n Array.isArray(dataErrorMessages) &&\r\n dataErrorMessages.length > 0 &&\r\n typeof dataErrorMessages[0] === 'string'\r\n ) {\r\n return dataErrorMessages as Array;\r\n }\r\n }\r\n}\r\n\r\nfunction* doCancelServiceRequest(action: IServiceRequestUpdateStatusAction) {\r\n const url = `/api/odata/v4/ServiceRequests(${action.payload.Id})/Status`;\r\n const payload = action.payload;\r\n try {\r\n yield call(httpClient.post, url, {\r\n ...payload.Status,\r\n ...{ Reason: action.payload.Reason },\r\n });\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.RequestCancelled),\r\n }),\r\n );\r\n yield put(actions.refreshRequestDetails(action.payload.Id));\r\n } catch (error) {\r\n log.error(error);\r\n //yield put(actions.updateStatus_Error(action.payload));\r\n const axiosError = error as AxiosError;\r\n const reason =\r\n axiosError?.response?.data?.error?.innererror?.message ??\r\n axiosError?.response?.data?.error?.message ??\r\n axiosError?.response?.data?.statusText ??\r\n i18next.t(translations.NA);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.ServiceRequestStatusUpdate_Error, {\r\n reason: reason,\r\n }),\r\n }),\r\n );\r\n }\r\n}\r\n\r\nfunction* doInsertMilestoneCharge(\r\n action: InsertServiceRequestMilestoneChargeAction,\r\n) {\r\n const serviceRequest: IServiceRequestDto = yield select(\r\n selectRequestDetailsData,\r\n );\r\n if (serviceRequest === undefined) {\r\n return;\r\n }\r\n try {\r\n const url = `/api/requests/${action.payload.ServiceRequestId}/ServiceRequestMilestone/${action.payload.ServiceRequestMilestoneId}/ServiceRequestMilestoneCharge`;\r\n\r\n const result: IRequestMilestoneManualChargeModel = yield call(\r\n httpClient.post,\r\n url,\r\n action.payload,\r\n );\r\n\r\n const charge: IServiceRequestMilestoneChargeDto = {\r\n Date: result.Date,\r\n Id: result.Id,\r\n Amount:\r\n (result.Rate ?? action.payload.OfflineServiceType?.Rate ?? 0) *\r\n (result.Quantity ?? 0),\r\n InvoiceId: null,\r\n Name: result.Name,\r\n //OfflineServiceTypeId: result.OfflineServiceType?.Id,\r\n Quantity: result.Quantity,\r\n OfflineServiceTypeId: result.OfflineServiceType?.Id ?? null,\r\n Rate: Number(result.Rate),\r\n Remarks: result.Remarks,\r\n ServiceRequestMilestoneId: action.payload.ServiceRequestMilestoneId,\r\n Service:\r\n (action.payload.OfflineServiceType as IConsumableServiceDto) ?? null,\r\n UnitTypeId: null,\r\n\r\n UpdatedBy:\r\n result.UpdatedBy === null\r\n ? null\r\n : {\r\n Id: result.UpdatedBy?.Id,\r\n Name: result.UpdatedBy?.Title,\r\n },\r\n UnitType:\r\n (result.Unit as Entity) ??\r\n action.payload.OfflineServiceType?.UnitType ??\r\n null,\r\n };\r\n yield put(actions.insertMilestoneCharge_Success(charge));\r\n yield put(actions.closeSidePanel());\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'chargeInserted',\r\n variant: 'success',\r\n message: i18next.t(translations.InsertSuccess),\r\n }),\r\n );\r\n } catch (error) {\r\n log.error(error);\r\n yield put(actions.insertMilestoneCharge_Error());\r\n }\r\n}\r\nfunction* doInsertMilestoneCharges(\r\n action: InsertServiceRequestMilestoneChargesAction,\r\n) {\r\n const serviceRequest: IServiceRequestDto = yield select(\r\n selectRequestDetailsData,\r\n );\r\n if (serviceRequest === undefined) {\r\n return;\r\n }\r\n try {\r\n const url = `/api/requests/${action.payload[0].ServiceRequestId}/ServiceRequestMilestone/${action.payload[0].ServiceRequestMilestoneId}/ServiceRequestMilestoneCharge`;\r\n\r\n let insertUpdate = action.payload.filter(\r\n charge => charge.action !== 'delete',\r\n );\r\n let deleted = action.payload.filter(charge => charge.action === 'delete');\r\n if (deleted.length > 0) {\r\n for (let idx = 0; idx < deleted.length; idx++) {\r\n let deleteUrl = `api/requests/${deleted[idx].ServiceRequestId}/ServiceRequestMilestone/${deleted[idx].ServiceRequestMilestoneId}/ServiceRequestMilestoneCharge/${deleted[idx].Id}`;\r\n yield call(httpClient.delete, deleteUrl);\r\n }\r\n yield put(actions.deleteMilestoneCharges_Success(deleted));\r\n }\r\n let responses: IRequestMilestoneManualChargeModel[] = [];\r\n for (let idx = 0; idx < insertUpdate.length; idx++) {\r\n let charge = insertUpdate[idx];\r\n if (charge.action === 'update') {\r\n let updateUrl = `/api/requests/${charge.ServiceRequestId}/ServiceRequestMilestone/${charge.ServiceRequestMilestoneId}/ServiceRequestMilestoneCharge`;\r\n let updtResult = yield call(httpClient.put, updateUrl, charge);\r\n responses.push(updtResult);\r\n } else {\r\n const result = yield call(httpClient.post, url, charge);\r\n responses.push(result);\r\n }\r\n }\r\n let hasUpdates =\r\n deleted.length > 0 || insertUpdate.some(c => c.action === 'update');\r\n const charges: IServiceRequestMilestoneChargeDto[] = responses.map(\r\n (result, indx) => ({\r\n Date: result.Date,\r\n Id: result.Id,\r\n Amount: (result.Rate ?? 0) * (result.Quantity ?? 0),\r\n InvoiceId: null,\r\n Name: result.Name,\r\n Quantity: Number(result.Quantity),\r\n OfflineServiceTypeId: result.OfflineServiceType?.Id ?? null,\r\n Rate: Number(result.Rate),\r\n Remarks: result.Remarks,\r\n ServiceRequestMilestoneId:\r\n action.payload[indx].ServiceRequestMilestoneId,\r\n Service:\r\n (action.payload[indx].OfflineServiceType as IConsumableServiceDto) ??\r\n null,\r\n UnitTypeId: null,\r\n UpdatedBy:\r\n result.UpdatedBy === null\r\n ? null\r\n : {\r\n Id: result.UpdatedBy?.Id,\r\n Name: result.UpdatedBy?.Title,\r\n },\r\n UnitType:\r\n (result.Unit as Entity) ??\r\n action.payload[indx].OfflineServiceType?.UnitType ??\r\n null,\r\n }),\r\n );\r\n\r\n yield put(actions.insertMilestoneCharges_Success(charges));\r\n yield put(actions.closeSidePanel());\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'chargesInserted',\r\n variant: 'success',\r\n message: hasUpdates\r\n ? i18next.t(translations.UpdateSuccess)\r\n : i18next.t(translations.InsertSuccess),\r\n }),\r\n );\r\n } catch (error) {\r\n log.error(error);\r\n const axiosError = error as AxiosError;\r\n const messages = getv2ControllerErrorMessages(axiosError?.response);\r\n if (messages !== undefined && messages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'insertMilstoneChargesKeyError',\r\n variant: 'error',\r\n message: messages[0],\r\n }),\r\n );\r\n }\r\n yield put(actions.insertMilestoneCharges_Error());\r\n }\r\n}\r\nfunction* doDeleteServiceRequestMilestoneCharge(\r\n action: PayloadAction,\r\n) {\r\n const serviceRequest: IServiceRequestDto = yield select(\r\n selectRequestDetailsData,\r\n );\r\n if (serviceRequest === undefined) {\r\n return;\r\n }\r\n try {\r\n const url = `api/requests/${serviceRequest.Id}/ServiceRequestMilestone/${action.payload.ServiceRequestMilestoneId}/ServiceRequestMilestoneCharge/${action.payload.Id}`;\r\n yield call(httpClient.delete, url);\r\n yield put(actions.deleteMilestoneCharge_Success(action.payload));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.DeleteSuccess),\r\n }),\r\n );\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n}\r\nfunction* doUpdateMilestoneCharge(\r\n action: UpdateServiceRequestMilestoneChargeAction,\r\n) {\r\n const serviceRequest: IServiceRequestDto = yield select(\r\n selectRequestDetailsData,\r\n );\r\n if (serviceRequest === undefined) {\r\n return;\r\n }\r\n try {\r\n const url = `/api/requests/${action.payload.ServiceRequestId}/ServiceRequestMilestone/${action.payload.ServiceRequestMilestoneId}/ServiceRequestMilestoneCharge`;\r\n const authenticatedUser: IAuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n\r\n const result: IRequestMilestoneManualChargeModel = yield call(\r\n httpClient.put,\r\n url,\r\n action.payload,\r\n );\r\n\r\n const charge: IServiceRequestMilestoneChargeDto = {\r\n Date: result.Date,\r\n Id: result.Id,\r\n Amount:\r\n (result.Rate ?? action.payload.OfflineServiceType?.Rate ?? 0) *\r\n (result.Quantity ?? 0),\r\n InvoiceId: null,\r\n Name: result.Name,\r\n //OfflineServiceTypeId: result.OfflineServiceType?.Id,\r\n Quantity: result.Quantity,\r\n OfflineServiceTypeId: result.OfflineServiceType?.Id ?? null,\r\n Rate: result.Rate,\r\n Remarks: result.Remarks,\r\n ServiceRequestMilestoneId: action.payload.ServiceRequestMilestoneId,\r\n Service:\r\n result.OfflineServiceType === null\r\n ? null\r\n : ({\r\n Id: result.OfflineServiceType.Id,\r\n Name: result.OfflineServiceType.Name,\r\n Rate: result.OfflineServiceType.Rate ?? 0,\r\n } as IConsumableServiceDto),\r\n UnitTypeId: action.payload.Unit?.Id ?? null,\r\n UpdatedBy:\r\n action.payload.UpdatedBy === null ||\r\n action.payload.UpdatedBy === undefined\r\n ? result.UpdatedBy\r\n ? {\r\n Id: result.UpdatedBy.Id,\r\n Name: result.UpdatedBy.Title,\r\n }\r\n : authenticatedUser\r\n : {\r\n Id: action.payload.UpdatedBy.Id,\r\n Name: action.payload.UpdatedBy.Title,\r\n } ?? authenticatedUser,\r\n UnitType:\r\n (result.Unit as Entity) ??\r\n action.payload.OfflineServiceType?.UnitType ??\r\n null,\r\n };\r\n yield put(actions.updateMilestoneCharge_Success(charge));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.UpdateSuccess),\r\n }),\r\n );\r\n yield put(actions.closeSidePanel());\r\n } catch (error) {\r\n log.error(error);\r\n const axiosError = error as AxiosError;\r\n const messages = getv2ControllerErrorMessages(axiosError?.response);\r\n if (messages !== undefined && messages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'updateMilstoneChargeKeyError',\r\n variant: 'error',\r\n message: messages[0],\r\n }),\r\n );\r\n }\r\n yield put(actions.updateMilestoneCharge_Error());\r\n }\r\n}\r\nfunction* doInsertMilestone(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n var url = `api/requests/${action.payload.ServiceRequestId}/ServiceRequestMilestones`;\r\n var data: Partial = {\r\n Name: action.payload.Name,\r\n CompletionDate: action.payload.CompletionDate,\r\n Assignees: action.payload.Assignees?.map(function (u) {\r\n return u.Id;\r\n }).join(','),\r\n };\r\n const response = yield call(httpClient.post, url, data);\r\n\r\n const p: IServiceRequestMilestoneDto = {\r\n Assignees: action.payload.Assignees,\r\n Charged: false,\r\n Id: response.Id,\r\n ServiceRequestMilestoneCharges: [],\r\n CompletionDate: response.CompletionDate,\r\n Name: response.Name,\r\n Description: response.Description,\r\n InvoiceId: null,\r\n ServiceRequestId: action.payload.ServiceRequestId,\r\n Status: action.payload.Status,\r\n TargetDate: response.TargetDate,\r\n };\r\n yield put(actions.insertMilestone_Success(p));\r\n yield put(actions.loadMilestones({ Id: action.payload.ServiceRequestId }));\r\n yield put(actions.closeSidePanel());\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'inserMilestoneSuccess',\r\n variant: 'success',\r\n message: i18next.t(translations.InsertSuccess),\r\n }),\r\n );\r\n } catch (error) {\r\n const axiosError = error as AxiosError;\r\n const messages = getv2ControllerErrorMessages(axiosError?.response);\r\n if (messages !== undefined && messages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n messages.map((message, idx) => ({\r\n variant: 'error',\r\n message: message,\r\n key: `inserMilestoneError${idx}`,\r\n })),\r\n ),\r\n );\r\n }\r\n yield put(actions.insertMilestone_Error());\r\n }\r\n}\r\nfunction* doDeleteMilestone(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n var url = `/api/requests/${action.payload.ServiceRequestId}/ServiceRequestMilestones/${action.payload.Id}`;\r\n yield call(httpClient.delete, url);\r\n yield put(actions.deleteMilestone_Success(action.payload));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.DeleteSuccess),\r\n }),\r\n );\r\n } catch (error) {\r\n //todo\r\n log.error(error);\r\n }\r\n}\r\nfunction* doUpdateMilestone(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n var url = `/api/requests/${action.payload.ServiceRequestId}/ServiceRequestMilestones/${action.payload.Id}`;\r\n const requestPayload: ServiceRequestMilestoneInsertModel = {\r\n Assignees: action.payload.Assignees?.map(f => f.Id).join(','),\r\n\r\n Id: action.payload.Id,\r\n\r\n CompletionDate: action.payload.CompletionDate,\r\n Name: action.payload.Name,\r\n Description: action.payload.Description,\r\n ServiceRequestId: action.payload.ServiceRequestId,\r\n StatusId:\r\n ServiceRequestMilestoneStatuses[action.payload.Status ?? 'NotStarted'],\r\n TargetDate: action.payload.TargetDate,\r\n };\r\n const response: ServiceRequestMilestoneInsertModel = yield call(\r\n httpClient.put,\r\n url,\r\n requestPayload,\r\n );\r\n yield put(\r\n actions.updateMilestone_Success({\r\n ...action.payload,\r\n ...{\r\n Status:\r\n (response.StatusId === null\r\n ? undefined\r\n : (ServiceRequestMilestoneStatuses[\r\n response.StatusId\r\n ] as ServiceRequestMilestoneStatusesUnion)) ?? 'NotStarted',\r\n CompletionDate: response.CompletionDate,\r\n },\r\n }),\r\n );\r\n yield put(actions.loadMilestones({ Id: action.payload.ServiceRequestId }));\r\n yield put(actions.closeSidePanel());\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'updateMilstoneKeySuccess',\r\n variant: 'success',\r\n message: i18next.t(translations.UpdateSuccess),\r\n }),\r\n );\r\n } catch (error) {\r\n yield put(actions.updateMilestone_Error());\r\n //todo\r\n log.error(error);\r\n const axiosError = error as AxiosError;\r\n const messages = getv2ControllerErrorMessages(axiosError?.response);\r\n if (messages !== undefined && messages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'updateMilstoneKeyError',\r\n variant: 'error',\r\n message: messages[0],\r\n }),\r\n );\r\n }\r\n }\r\n}\r\nfunction* doOpenSidePanel(action: PayloadAction) {\r\n const sidePanelState: SidePanelState = yield select(selectSidePanelState);\r\n const isSidePanelOpen =\r\n sidePanelState.sidePanelOpen &&\r\n sidePanelState.pageType === RenderPageType.ServiceRequestDetails;\r\n if (!isSidePanelOpen) {\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: action.payload.type,\r\n props: Object.assign({}, action.payload.props, {\r\n useSidePanel: true,\r\n }),\r\n expanded: action.payload.expanded,\r\n }),\r\n );\r\n } else {\r\n yield put(\r\n actions.setCover({\r\n type: action.payload.type,\r\n props: Object.assign({}, action.payload.props, {\r\n isCover: true,\r\n useSidePanel: true,\r\n }),\r\n }),\r\n );\r\n if (action.payload.expanded) {\r\n yield put(layoutActions.setIsCoverExpanded(true));\r\n }\r\n }\r\n}\r\nfunction* doCloseSidePanel(action: PayloadAction) {\r\n const sidePanelState: SidePanelState = yield select(selectSidePanelState);\r\n const isSidePanelOpen =\r\n sidePanelState.sidePanelOpen &&\r\n sidePanelState.pageType === RenderPageType.ServiceRequestDetails;\r\n if (isSidePanelOpen) {\r\n yield put(actions.setCover(undefined));\r\n yield put(layoutActions.setIsCoverExpanded(false));\r\n } else {\r\n yield put(layoutActions.resetSidePanel());\r\n yield put(actions.resetRequestDetails);\r\n }\r\n}\r\nfunction* doCloneServiceRequest(action: PayloadAction) {\r\n try {\r\n const sidePanelState: SidePanelState = yield select(selectSidePanelState);\r\n const isSidePanelOpen =\r\n sidePanelState.sidePanelOpen &&\r\n sidePanelState.pageType === RenderPageType.ServiceRequestDetails;\r\n const url = `/api/odata/v4/ServiceRequestList/CloneRequest`;\r\n const response: IResponseTypeWithId = yield call(httpClient.post, url, {\r\n id: action.payload,\r\n });\r\n if (response.ErrorMessages && response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map((message, idx) => ({\r\n variant: 'error',\r\n message: message,\r\n key: `cloneServiceRequestError${idx}`,\r\n })),\r\n ),\r\n );\r\n return;\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: response.SuccessMessages[0],\r\n key: 'cloneServiceRequestSuccess',\r\n }),\r\n );\r\n const openRequestProps: IOpenSidePanelPayload = {\r\n type: RenderPageType.ServiceRequestDetails,\r\n props: {\r\n id: response.Id,\r\n useSidePanel: true,\r\n } as ServiceRequestDetailsProps,\r\n expanded: true,\r\n };\r\n if (isSidePanelOpen) {\r\n yield put(actions.resetRequestDetails());\r\n yield put(layoutActions.resetSidePanel());\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: openRequestProps.type,\r\n props: openRequestProps.props,\r\n expanded: openRequestProps.expanded,\r\n }),\r\n );\r\n } else {\r\n yield put(push(GetServiceRequestDetailsPath(response.Id ?? -1)));\r\n }\r\n }\r\n } catch (error) {\r\n log.error(error);\r\n const axiosError = error as AxiosError;\r\n const messages = getv2ControllerErrorMessages(axiosError?.response);\r\n if (messages !== undefined && messages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n messages.map(message => ({\r\n variant: 'error',\r\n message: message,\r\n })),\r\n ),\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction* doCreateServiceRequestRow(\r\n action: PayloadAction>,\r\n) {\r\n const messageKey = 'doCreateServiceRequestRow';\r\n try {\r\n if (action.payload.ServiceRequestId === undefined) {\r\n log.error(\r\n 'doCreateServiceRequestRow - ServiceRequestId is required',\r\n action.payload,\r\n );\r\n return;\r\n }\r\n const url = `api/odata/v4/ServiceRequests(${action.payload.ServiceRequestId})/Rows`;\r\n const columns = yield select(selectServiceRequestCustomFormColumns);\r\n const dto = serviceRequestModelToDto(action.payload, columns);\r\n const response: IServiceRequestRowDto = yield call(\r\n httpClient.post,\r\n url,\r\n dto,\r\n );\r\n yield put(\r\n actions.createServiceRequestRow_Success(\r\n prepareServiceRequestRowModel([response], columns),\r\n ),\r\n );\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n key: messageKey,\r\n message: i18next.t(\r\n translations.ServiceRequestRow_InsertSuccess,\r\n response,\r\n ),\r\n }),\r\n );\r\n } catch (error) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n key: messageKey,\r\n message: i18next.t(translations.ServiceRequestRow_InsertError),\r\n }),\r\n );\r\n const axiosError = error as AxiosError;\r\n const messages = getv2ControllerErrorMessages(axiosError?.response);\r\n if (messages !== undefined && messages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n messages.map((message, idx) => ({\r\n variant: 'error',\r\n message: message,\r\n key: `inserRequestRowError${idx}`,\r\n })),\r\n ),\r\n );\r\n }\r\n yield put(actions.createServiceRequestRow_Error());\r\n }\r\n}\r\n\r\nconst getv2ControllerErrorMessages = (\r\n response?: AxiosResponse,\r\n): string[] | undefined => {\r\n if (response === undefined) {\r\n return undefined;\r\n }\r\n const message: string[] = [];\r\n\r\n if (typeof response.data == 'string') {\r\n message.push(response.data);\r\n } else if (response.data.ExceptionMessage !== undefined) {\r\n message.push(response.data.ExceptionMessage);\r\n } else if (response.data.Message !== undefined) {\r\n message.push(response.data.Message);\r\n } else if (response.data.message !== undefined) {\r\n message.push(response.data.message);\r\n } else if (response.data.ErrorMessages) {\r\n for (var i = 0; i < response.data.ErrorMessages.length; i++) {\r\n message.push(response.data.ErrorMessages[i] as string);\r\n }\r\n }\r\n\r\n return message;\r\n};\r\n\r\nfunction* doLoadServiceRequestRowStatuses() {\r\n try {\r\n const SampleManagementTablesEnabled = yield select(state =>\r\n selectKnownModule(state, KnownModules.SampleManagementTables),\r\n );\r\n if (SampleManagementTablesEnabled) {\r\n const data: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n '/api/odata/v4/ServiceRequestRowStatuses',\r\n );\r\n yield put(actions.loadServiceRequestRowStatuses_Success(data.value));\r\n }\r\n } catch (error) {\r\n log.error('Error loading service request row statuses');\r\n }\r\n}\r\n\r\nexport function* requestSamplesSaga() {\r\n yield takeLeading(actions.init.type, doInit);\r\n yield takeLatest(actions.loadRequestDetails.type, doLoadRequestDetails);\r\n yield takeLatest(actions.refreshRequestDetails.type, doRefreshRequestDetails);\r\n yield takeLatest(actions.loadFormValues.type, doLoadFormValues);\r\n yield takeLatest(actions.loadMilestones.type, doLoadMilestones);\r\n yield takeLatest(actions.insertMilestoneCharge.type, doInsertMilestoneCharge);\r\n yield takeLatest(\r\n actions.insertMilestoneCharges.type,\r\n doInsertMilestoneCharges,\r\n );\r\n\r\n yield takeLatest(actions.updateMilestoneCharge.type, doUpdateMilestoneCharge);\r\n yield takeLatest(\r\n actions.deleteMilestoneCharge.type,\r\n doDeleteServiceRequestMilestoneCharge,\r\n );\r\n yield takeLatest(actions.openSidePanel.type, doOpenSidePanel);\r\n yield takeLatest(actions.closeSidePanel.type, doCloseSidePanel);\r\n\r\n yield takeLatest(actions.insertMilestone.type, doInsertMilestone);\r\n yield takeLatest(actions.updateMilestone.type, doUpdateMilestone);\r\n yield takeLatest(actions.deleteMilestone.type, doDeleteMilestone);\r\n\r\n yield takeLatest(actions.loadSamples.type, doLoadSamples);\r\n yield takeLatest(actions.patch.type, doPatchRequestDetails);\r\n yield takeLatest(actions.updateStatus.type, doUpdateStatus);\r\n yield takeLatest(\r\n actions.updateServiceRequestRowStatus.type,\r\n doUpdateServiceRequestRowStatus,\r\n );\r\n yield takeLatest(actions.updateBudget.type, doUpdateBudget);\r\n yield takeLatest(actions.updatePurchaseOrder.type, doUpdatePurchaseOrder);\r\n yield takeLatest(\r\n actions.updateExternalInternalNumber.type,\r\n doUpdateExternalInternalNumber,\r\n );\r\n yield takeLatest(actions.updateFundingType.type, doUpdateFundingType);\r\n yield takeLatest(actions.updateGradient.type, doUpdateGradient);\r\n yield takeLatest(actions.updateOverheadMinutes.type, doUpdateOverheadMinutes);\r\n yield takeLatest(actions.submitStep.type, doSubmit);\r\n yield takeLatest(actions.cancelServiceRequest.type, doCancelServiceRequest);\r\n yield takeLatest(actions.createSample.type, doCreateSample);\r\n yield debounce(\r\n 100,\r\n actions.updateServiceRequestSampleField.type,\r\n doUpdateServiceRequestSampleField,\r\n );\r\n yield debounce(\r\n 100,\r\n actions.updateServiceRequestRowValue.type,\r\n doUpdateServiceRequestRowValue,\r\n );\r\n yield takeLatest(actions.import.type, doImport);\r\n yield takeLatest(actions.import_Success.type, doLoadSamples);\r\n yield takeLeading(actions.deleteSamples.type, doDeleteSamples);\r\n yield takeLeading(actions.cloneServiceRequest, doCloneServiceRequest);\r\n\r\n yield takeEvery(\r\n actions.createServiceRequestRow.type,\r\n doCreateServiceRequestRow,\r\n );\r\n\r\n yield takeLatest(\r\n actions.loadServiceRequestRows.type,\r\n doLoadServiceRequestRows,\r\n );\r\n\r\n yield takeLatestByKey(\r\n actions.saveFormValues.type,\r\n f => f?.FormFieldId,\r\n doSaveFormValue,\r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { IServiceRequestDto } from 'api/odata/generated/entities/IServiceRequestDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { requestSamplesSaga } from './saga';\r\nimport {\r\n ISample,\r\n ISampleListTableState,\r\n IRequestSamplesState,\r\n IServiceRequestPatchAction,\r\n IServiceRequestUpdateStatusAction,\r\n IServiceRequestUpdateBudgetAction,\r\n ILoadServiceRequestMilestonesAction,\r\n ILoadServiceRequestMilestonesSuccessAction,\r\n InsertServiceRequestMilestoneChargeAction,\r\n UpdateServiceRequestMilestoneChargeAction,\r\n UpdateServiceRequestRowValueAction,\r\n IServiceRequestTableRowModel,\r\n IRequestDetailsModel,\r\n IServiceRequestDetailsFormModel,\r\n IServiceRequestUpdatePurchaseOrderAction,\r\n IServiceRequestUpdateFundingTypeAction,\r\n IServiceRequestUpdateExternalInternalNumberAction,\r\n IServiceRequestUpdateGradientAction,\r\n IServiceRequestUpdateOverheadAction,\r\n ILoadServiceRequestRowsAction,\r\n InsertServiceRequestMilestoneChargesAction,\r\n IRequestMilestoneManualChargeModel,\r\n} from './types';\r\nimport { IServiceRequestMilestoneChargeDto } from 'api/odata/generated/entities/IServiceRequestMilestoneChargeDto';\r\nimport { merge, remove } from 'lodash';\r\nimport { IServiceRequestMilestoneDto } from 'api/odata/generated/entities/IServiceRequestMilestoneDto';\r\nimport { IOpenSidePanelPayload } from 'app/Layout/FrontendLayout/slice';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport { IServiceRequestRowDto } from 'api/odata/generated/entities/IServiceRequestRowDto';\r\nimport { IServiceRequestRowStatusDto } from 'api/odata/generated/entities/IServiceRequestRowStatusDto';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\n\r\nexport const initialState: IRequestSamplesState = {\r\n RequestSamples: {},\r\n ServiceRequestStatuses: {},\r\n ServiceRequestRows: {},\r\n fieldsState: {},\r\n SamplesTableState: {\r\n pageSize: 10,\r\n pageIndex: 0,\r\n sortBy: [{ id: 'Id', desc: true }],\r\n customFilters: [],\r\n globalFilter: '',\r\n },\r\n SamplesSelected: [],\r\n RequestDetails: {},\r\n ImportState: {\r\n open: false,\r\n processing: false,\r\n },\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'requestSamples',\r\n initialState,\r\n reducers: {\r\n init(state, action: PayloadAction) {},\r\n initServiceRequestStatuses_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.ServiceRequestStatuses = {\r\n status: 'resolved',\r\n value: action.payload,\r\n };\r\n },\r\n initServiceRequestStatuses_Error(state, action: PayloadAction) {\r\n state.ServiceRequestStatuses = {\r\n status: 'rejected',\r\n };\r\n },\r\n loadServiceRequestRowStatuses_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.ServiceRequestRowStatuses = action.payload;\r\n },\r\n loadRequestDetails(state, action: PayloadAction) {\r\n state.RequestDetails = { status: 'pending' };\r\n state.serviceRequestId = action.payload;\r\n },\r\n loadRequestDetails_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.RequestDetails = {\r\n status: 'resolved',\r\n value: action.payload,\r\n };\r\n },\r\n loadRequestDetails_Error(state, action: PayloadAction) {\r\n state.RequestDetails = {\r\n status: 'rejected',\r\n error: action.payload,\r\n };\r\n },\r\n resetRequestDetails(state, action: PayloadAction) {\r\n state.RequestSamples = {};\r\n state.ServiceRequestStatuses = {};\r\n state.ServiceRequestRows = {};\r\n state.fieldsState = {};\r\n state.SamplesTableState = {\r\n pageSize: 10,\r\n pageIndex: 0,\r\n sortBy: [{ id: 'Id', desc: true }],\r\n customFilters: [],\r\n globalFilter: '',\r\n };\r\n state.SamplesSelected = [];\r\n state.RequestDetails = {};\r\n state.ImportState = {\r\n open: false,\r\n processing: false,\r\n };\r\n state.ServiceRequestRowStatuses = [];\r\n state.serviceRequestId = undefined;\r\n state.SidePanel = undefined;\r\n state.createServiceRequestRowStatus = undefined;\r\n state.milestoneProcessing = undefined;\r\n state.milestoneChargeProcessing = undefined;\r\n state.submitting = undefined;\r\n state.milestonesLoading = undefined;\r\n },\r\n refreshRequestDetails(state, action: PayloadAction) {\r\n state.RequestDetails.status = 'pending';\r\n },\r\n refreshRequestDetails_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n if (state.RequestDetails.value !== undefined) {\r\n state.RequestDetails.value = {\r\n ...state.RequestDetails.value,\r\n ...action.payload,\r\n };\r\n }\r\n state.RequestDetails.status = 'resolved';\r\n },\r\n\r\n loadFormValues(state, action: PayloadAction) {},\r\n loadFormValues_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n state.RequestDetails.value.FormValues = action.payload;\r\n },\r\n\r\n updateStatus(state, action: IServiceRequestUpdateStatusAction) {\r\n state.fieldsState.Status = { status: 'pending' };\r\n },\r\n updateStatus_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n merge(state.RequestDetails.value, action.payload);\r\n if (state.fieldsState.Status !== undefined) {\r\n state.fieldsState.Status.status = 'resolved';\r\n }\r\n },\r\n updateStatus_Error(state, action: IServiceRequestUpdateStatusAction) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n state.RequestDetails.value.Status = {\r\n ...state.RequestDetails.value.Status,\r\n };\r\n delete state.fieldsState.Status;\r\n },\r\n\r\n updateBudget(state, action: IServiceRequestUpdateBudgetAction) {\r\n state.fieldsState.Budget = { status: 'pending' };\r\n },\r\n updateBudget_Success(state, action: IServiceRequestUpdateBudgetAction) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n delete state.fieldsState.Budget;\r\n },\r\n updateBudget_Error(state, action: IServiceRequestUpdateBudgetAction) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n if (state.RequestDetails.value.Budget !== null) {\r\n state.RequestDetails.value.Budget = {\r\n ...state.RequestDetails.value.Budget,\r\n };\r\n }\r\n delete state.fieldsState.Budget;\r\n },\r\n updateGradient(state, action: IServiceRequestUpdateGradientAction) {\r\n state.fieldsState.Gradient = { status: 'pending' };\r\n },\r\n updateGradient_Success(state, action: IServiceRequestUpdateGradientAction) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n delete state.fieldsState.Gradient;\r\n },\r\n updateGradient_Error(state, action: IServiceRequestUpdateGradientAction) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n if (state.RequestDetails.value.Gradient !== null) {\r\n state.RequestDetails.value.Gradient = {\r\n ...state.RequestDetails.value.Gradient,\r\n };\r\n }\r\n\r\n delete state.fieldsState.Gradient;\r\n },\r\n updateOverheadMinutes(state, action: IServiceRequestUpdateOverheadAction) {\r\n state.fieldsState.OverheadMinutes = { status: 'pending' };\r\n },\r\n updateOverheadMinutes_Success(\r\n state,\r\n action: IServiceRequestUpdateOverheadAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n delete state.fieldsState.OverheadMinutes;\r\n },\r\n updateOverheadMinutes_Error(\r\n state,\r\n action: IServiceRequestUpdateOverheadAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n delete state.fieldsState.OverheadMinutes;\r\n },\r\n updatePurchaseOrder(\r\n state,\r\n action: IServiceRequestUpdatePurchaseOrderAction,\r\n ) {\r\n state.fieldsState.PurchaseOrder = { status: 'pending' };\r\n },\r\n updatePurchaseOrder_Success(\r\n state,\r\n action: IServiceRequestUpdatePurchaseOrderAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n delete state.fieldsState.PurchaseOrder;\r\n },\r\n updatePurchaseOrder_Error(\r\n state,\r\n action: IServiceRequestUpdatePurchaseOrderAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n delete state.fieldsState.PurchaseOrder;\r\n },\r\n updateFundingType(state, action: IServiceRequestUpdateFundingTypeAction) {\r\n state.fieldsState.FundingTypeId = { status: 'pending' };\r\n },\r\n updateFundingType_Success(\r\n state,\r\n action: IServiceRequestUpdateFundingTypeAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n delete state.fieldsState.FundingTypeId;\r\n },\r\n updateFundingType_Error(\r\n state,\r\n action: IServiceRequestUpdateFundingTypeAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n // state.RequestDetails.value.FundingTypeId = {\r\n // ...state.RequestDetails.value.FundingTypeId,\r\n // };\r\n delete state.fieldsState.FundingTypeId;\r\n },\r\n updateExternalInternalNumber(\r\n state,\r\n action: IServiceRequestUpdateExternalInternalNumberAction,\r\n ) {\r\n state.fieldsState.ExternalInternalNumber = { status: 'pending' };\r\n },\r\n updateExternalInternalNumber_Success(\r\n state,\r\n action: IServiceRequestUpdateExternalInternalNumberAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n delete state.fieldsState.ExternalInternalNumber;\r\n },\r\n updateExternalInternalNumber_Error(\r\n state,\r\n action: IServiceRequestUpdateExternalInternalNumberAction,\r\n ) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n delete state.fieldsState.ExternalInternalNumber;\r\n },\r\n submitStep(state, action: PayloadAction) {\r\n state.submitting = true;\r\n },\r\n submitStep_success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.submitting = false;\r\n if (state.RequestDetails.value !== undefined) {\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n }\r\n },\r\n submitStep_Error(state, action: PayloadAction) {\r\n state.submitting = false;\r\n },\r\n cancelServiceRequest(state, action: IServiceRequestUpdateStatusAction) {},\r\n\r\n patch(state, action: IServiceRequestPatchAction) {\r\n // update state to processing of each field being updated\r\n const fields = (\r\n Object.keys(action.payload) as Array\r\n )\r\n .filter(f => f !== 'Id')\r\n .reduce((prev, current) => {\r\n prev[current] = { processing: true };\r\n return prev;\r\n }, {});\r\n Object.assign(state.fieldsState, fields);\r\n },\r\n patch_Success(state, action: IServiceRequestPatchAction) {\r\n if (state.RequestDetails.value === undefined) {\r\n return;\r\n }\r\n // release fields that were being processes\r\n Object.keys(action.payload).forEach(f => delete state.fieldsState[f]);\r\n //merge(state.RequestDetails.value, action.payload);\r\n Object.assign(state.RequestDetails.value, action.payload);\r\n },\r\n patch_Error(state, action: IServiceRequestPatchAction) {\r\n // release fields that were being processes\r\n Object.keys(action.payload).forEach(f => delete state.fieldsState[f]);\r\n },\r\n\r\n saveFormValues(\r\n state,\r\n action: PayloadAction<\r\n Pick &\r\n Pick & { Value: any }\r\n >,\r\n ) {},\r\n loadSamples(state, action: PayloadAction) {\r\n state.RequestSamples.status = 'pending';\r\n state.RequestSamples.value = undefined;\r\n state.SamplesTableState = {\r\n pageSize: action.payload.pageSize,\r\n pageIndex: action.payload.pageIndex,\r\n sortBy: action.payload.sortBy,\r\n globalFilter: action.payload.globalFilter,\r\n searchColumns: action.payload.searchColumns,\r\n customFilters: action.payload.customFilters?.map(filter => ({\r\n fieldName: filter.fieldName,\r\n operator: filter.operator,\r\n value: filter.value,\r\n })),\r\n };\r\n },\r\n loadSamples_Success(state, action: PayloadAction) {\r\n state.RequestSamples = {\r\n status: 'resolved',\r\n value: {\r\n data: action.payload.value as ISample[],\r\n dataLength: action.payload['@odata.count'],\r\n },\r\n };\r\n },\r\n loadSamples_Error(state, action: PayloadAction) {\r\n state.RequestSamples.status = 'rejected';\r\n state.RequestSamples.error = action.payload;\r\n },\r\n\r\n loadServiceRequestRows(state, action: ILoadServiceRequestRowsAction) {\r\n state.ServiceRequestRows.status = 'pending';\r\n },\r\n loadServiceRequestRows_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.ServiceRequestRows = {\r\n value: action.payload,\r\n\r\n status: 'resolved',\r\n };\r\n\r\n Object.assign(state.RequestDetails.value, { Rows: action.payload });\r\n },\r\n loadServiceRequestRows_Error(state, error: PayloadAction) {\r\n state.ServiceRequestRows = { error: true };\r\n },\r\n\r\n deleteServiceRequestRows(\r\n state,\r\n action: PayloadAction>,\r\n ) {},\r\n deleteServiceRequestRows_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n const id = action.payload.map(item => item.Id);\r\n state.ServiceRequestRows.value = state.ServiceRequestRows.value?.filter(\r\n item => !id.includes(item.Id),\r\n );\r\n },\r\n\r\n createServiceRequestRow(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n //state.RequestServiceRequestRows.processing = true;\r\n state.createServiceRequestRowStatus = 'pending';\r\n },\r\n createServiceRequestRow_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.ServiceRequestRows.value?.push(...action.payload);\r\n state.createServiceRequestRowStatus = 'resolved';\r\n },\r\n createServiceRequestRow_Error(state, action: PayloadAction) {\r\n state.createServiceRequestRowStatus = 'rejected';\r\n },\r\n\r\n loadMilestones(state, action: ILoadServiceRequestMilestonesAction) {\r\n state.milestonesLoading = true;\r\n },\r\n loadMilestones_Success(\r\n state,\r\n action: ILoadServiceRequestMilestonesSuccessAction,\r\n ) {\r\n if (state.RequestDetails.value !== undefined) {\r\n state.RequestDetails.value.Milestones = action.payload;\r\n }\r\n state.milestonesLoading = false;\r\n },\r\n\r\n insertMilestone(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.milestoneProcessing = true;\r\n state.lastInsertedMilestoneId = undefined;\r\n },\r\n insertMilestone_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n const serviceRequest = state.RequestDetails.value;\r\n if (serviceRequest !== undefined) {\r\n serviceRequest.Milestones.push(action.payload);\r\n state.lastInsertedMilestoneId = action.payload.Id;\r\n }\r\n state.milestoneProcessing = false;\r\n },\r\n insertMilestone_Error(state, action: PayloadAction) {\r\n state.milestoneProcessing = false;\r\n state.lastInsertedMilestoneId = undefined;\r\n },\r\n updateMilestone(\r\n state,\r\n action: PayloadAction>>,\r\n ) {\r\n state.milestoneProcessing = true;\r\n },\r\n updateMilestone_Success(\r\n state,\r\n action: PayloadAction<\r\n Partial & Pick\r\n >,\r\n ) {\r\n const serviceRequest = state.RequestDetails.value;\r\n if (serviceRequest !== undefined) {\r\n const milestone = serviceRequest.Milestones.find(\r\n f => f.Id === action.payload.Id,\r\n );\r\n if (milestone !== undefined) {\r\n Object.assign(milestone, action.payload);\r\n }\r\n }\r\n state.milestoneProcessing = false;\r\n },\r\n updateMilestone_Error(state, action: PayloadAction) {\r\n state.milestoneProcessing = false;\r\n },\r\n deleteMilestone(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n deleteMilestone_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n const serviceRequest = state.RequestDetails.value;\r\n if (serviceRequest !== undefined) {\r\n remove(serviceRequest.Milestones, f => f.Id === action.payload.Id);\r\n }\r\n },\r\n\r\n insertMilestoneCharge(\r\n state,\r\n action: InsertServiceRequestMilestoneChargeAction,\r\n ) {\r\n state.milestoneChargeProcessing = true;\r\n },\r\n insertMilestoneCharge_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n if (state.RequestDetails.value !== undefined) {\r\n const milestone = state.RequestDetails.value.Milestones.find(\r\n f => f.Id === action.payload.ServiceRequestMilestoneId,\r\n );\r\n if (milestone !== undefined) {\r\n milestone.ServiceRequestMilestoneCharges.push(action.payload);\r\n }\r\n }\r\n state.milestoneChargeProcessing = false;\r\n },\r\n insertMilestoneCharge_Error(state, action: PayloadAction) {\r\n state.milestoneChargeProcessing = false;\r\n },\r\n insertMilestoneCharges(\r\n state,\r\n action: InsertServiceRequestMilestoneChargesAction,\r\n ) {\r\n state.milestoneChargeProcessing = true;\r\n },\r\n insertMilestoneCharges_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n if (state.RequestDetails.value !== undefined) {\r\n const milestone = state.RequestDetails.value.Milestones.find(\r\n f => f.Id === action.payload[0].ServiceRequestMilestoneId,\r\n );\r\n if (milestone !== undefined) {\r\n action.payload.forEach(charge => {\r\n const updCharge = milestone.ServiceRequestMilestoneCharges.find(\r\n f => f.Id === charge.Id,\r\n );\r\n if (updCharge !== undefined) {\r\n Object.assign(updCharge, charge);\r\n } else {\r\n milestone.ServiceRequestMilestoneCharges.push(charge);\r\n }\r\n });\r\n }\r\n }\r\n state.milestoneChargeProcessing = false;\r\n },\r\n insertMilestoneCharges_Error(state, action: PayloadAction) {\r\n state.milestoneChargeProcessing = false;\r\n },\r\n openSidePanel(state, action: PayloadAction) {},\r\n closeSidePanel(state, action: PayloadAction) {},\r\n setCover(state, action: PayloadAction) {\r\n state.SidePanel = action.payload;\r\n },\r\n updateMilestoneCharge(\r\n state,\r\n action: UpdateServiceRequestMilestoneChargeAction,\r\n ) {\r\n state.milestoneChargeProcessing = true;\r\n },\r\n updateMilestoneCharge_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n if (state.RequestDetails.value !== undefined) {\r\n const milestone = state.RequestDetails.value.Milestones.find(\r\n f => f.Id === action.payload.ServiceRequestMilestoneId,\r\n );\r\n if (milestone !== undefined) {\r\n const charge = milestone.ServiceRequestMilestoneCharges.find(\r\n f => f.Id === action.payload.Id,\r\n );\r\n if (charge !== undefined) {\r\n Object.assign(charge, action.payload);\r\n }\r\n }\r\n }\r\n state.milestoneChargeProcessing = false;\r\n },\r\n updateMilestoneCharge_Error(state, action: PayloadAction) {\r\n state.milestoneChargeProcessing = false;\r\n },\r\n deleteMilestoneCharge(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n deleteMilestoneCharge_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n if (state.RequestDetails.value !== undefined) {\r\n const milestone = state.RequestDetails.value.Milestones.find(\r\n f => f.Id === action.payload.ServiceRequestMilestoneId,\r\n );\r\n if (milestone !== undefined) {\r\n remove(\r\n milestone.ServiceRequestMilestoneCharges,\r\n f => f.Id === action.payload.Id,\r\n );\r\n }\r\n }\r\n },\r\n deleteMilestoneCharges_Success(\r\n state,\r\n action: PayloadAction<\r\n Array<\r\n Partial & {\r\n ServiceRequestId: number;\r\n ServiceRequestMilestoneId: number;\r\n action?: 'insert' | 'update' | 'delete';\r\n }\r\n >\r\n >,\r\n ) {\r\n if (state.RequestDetails.value !== undefined) {\r\n const milestone = state.RequestDetails.value.Milestones.find(\r\n f => f.Id === action.payload[0].ServiceRequestMilestoneId,\r\n );\r\n if (milestone !== undefined) {\r\n action.payload.forEach(charge => {\r\n remove(\r\n milestone.ServiceRequestMilestoneCharges,\r\n f => f.Id === charge.Id,\r\n );\r\n });\r\n }\r\n }\r\n state.milestoneChargeProcessing = false;\r\n },\r\n setSelected(state, action: PayloadAction) {\r\n state.SamplesSelected = action.payload;\r\n },\r\n\r\n createSample(state, action: PayloadAction) {\r\n state.RequestSamples = Object.assign(state.RequestSamples, {\r\n status: 'pending',\r\n });\r\n },\r\n createSample_Success(state, action: PayloadAction) {\r\n state.RequestSamples.value?.data?.push(action.payload);\r\n state.RequestSamples.status = 'resolved';\r\n if (state.RequestSamples.value !== undefined) {\r\n state.RequestSamples.value.dataLength =\r\n (state.RequestSamples.value.dataLength ?? 0) + 1;\r\n }\r\n },\r\n createSample_Error(state, action: PayloadAction) {\r\n state.RequestSamples.status = 'rejected';\r\n },\r\n\r\n updateServiceRequestSampleField(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n // update row in samples list\r\n const item = state.RequestSamples?.value?.data?.find(\r\n s => s.Id === action.payload.Id,\r\n );\r\n if (item !== undefined) {\r\n Object.assign(item, action.payload);\r\n }\r\n },\r\n updateServiceRequestSampleField_Success(state, action: PayloadAction) {},\r\n updateServiceRequestSampleField_Error(state, action: PayloadAction) {},\r\n\r\n updateServiceRequestRowValue(\r\n state,\r\n action: UpdateServiceRequestRowValueAction,\r\n ) {},\r\n updateServiceRequestRowValue_Success(state, action: PayloadAction) {\r\n // TODO: update internal state\r\n },\r\n updateServiceRequestRowValue_Error(state, action: PayloadAction) {\r\n // TODO: ??\r\n },\r\n\r\n updateServiceRequestRowStatus(\r\n state,\r\n action: PayloadAction<{\r\n serviceRequestId: number;\r\n serviceRequestRowId: number;\r\n status: IServiceRequestRowStatusDto | null;\r\n }>,\r\n ) {},\r\n updateServiceRequestRowStatus_Success(\r\n state,\r\n action: PayloadAction<{\r\n serviceRequestId: number;\r\n serviceRequestRowId: number;\r\n status: IServiceRequestRowStatusDto | null;\r\n }>,\r\n ) {\r\n if (action.payload.status !== null) {\r\n const row = state.ServiceRequestRows.value?.find(\r\n f => f.Id === action.payload.serviceRequestRowId,\r\n );\r\n if (row !== undefined) {\r\n row.Status = action.payload.status;\r\n row.StatusId = action.payload.status?.Id;\r\n }\r\n }\r\n },\r\n\r\n toggleImport(state, action: PayloadAction) {\r\n state.ImportState.open = action.payload;\r\n },\r\n\r\n import(state, action: PayloadAction) {\r\n state.ImportState.processing = true;\r\n },\r\n import_Success(state, action: PayloadAction) {\r\n state.ImportState.processing = false;\r\n state.ImportState.open = false;\r\n },\r\n import_Error(state, action: PayloadAction) {\r\n state.ImportState.processing = false;\r\n },\r\n\r\n setHasFiles(state, action: PayloadAction) {\r\n if (state.RequestDetails.value !== undefined) {\r\n state.RequestDetails.value.HasFiles = action.payload;\r\n }\r\n },\r\n\r\n deleteSamples(state, action: PayloadAction) {},\r\n cloneServiceRequest(state, action: PayloadAction) {},\r\n },\r\n});\r\n\r\nexport const { actions: requestSamplesActions } = slice;\r\n\r\nexport const useRequestSamplesSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: requestSamplesSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import {\r\n FormControl,\r\n FormHelperText,\r\n FormLabel,\r\n InputLabel,\r\n} from '@material-ui/core';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { RichTextEditor, RichTextEditorProps } from '../RichTextEditor';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { FormControlProps } from './FormControls/FormControl';\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nexport const FormRichTextField = ({\r\n onChange,\r\n onBlur,\r\n value,\r\n hasMentions,\r\n onChangeMentions,\r\n autoFocus,\r\n additionalButtons,\r\n isInvoiceTemplateEditor,\r\n extendedMode,\r\n labelOnTop,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps &\r\n Omit) => {\r\n const [field, meta, helpers] = useField({ ...props });\r\n const handleChange = (value: string | undefined | null) => {\r\n // formik is not happy with neither undefined nor null\r\n const formikValue = value ?? '';\r\n field.onChange(formikValue);\r\n helpers.setValue(formikValue, true);\r\n onChange?.(value);\r\n };\r\n return (\r\n \r\n );\r\n};\r\nexport interface RichTextFieldProps\r\n extends RichTextEditorProps,\r\n Pick {\r\n error?: string;\r\n label?: string;\r\n info?: string;\r\n required?: boolean;\r\n helperText?: string;\r\n}\r\nexport function RichTextField({\r\n className,\r\n error,\r\n fullWidth,\r\n disabled,\r\n label,\r\n info,\r\n variant = 'outlined',\r\n helperText,\r\n labelOnTop,\r\n required,\r\n ...props\r\n}: RichTextFieldProps) {\r\n const [controlsVisible, setControlsVisible] = React.useState(false);\r\n return (\r\n <>\r\n \r\n {label && (\r\n <>\r\n {labelOnTop ? (\r\n \r\n {label}\r\n \r\n ) : (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n )}\r\n\r\n \r\n\r\n {((!!error && error !== '') || (!!helperText && helperText !== '')) && (\r\n \r\n {error || helperText}\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AssetsPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport {\r\n AutocompleteMultiPickerEx,\r\n AutocompleteMultiPickerExProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPickerEx';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { AvailabilityTypes } from 'api/odata/generated/enums/AvailabilityTypes';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\n\r\nexport type avTypes =\r\n | 'bookable'\r\n | 'serviceRelated'\r\n | 'serviceGroup'\r\n | 'bookableAndnotbookable'\r\n | 'workOrderRelated'\r\n | 'all';\r\n\r\nexport interface AssetsPickerProps\r\n extends Omit, 'loadData'> {\r\n inputProps?: InputBaseComponentProps;\r\n restrictByAvType?: avTypes;\r\n /**\r\n * Option to filter admin permissions. If set to true will return only the assets authenticated user is an admin of\r\n */\r\n admin?: boolean;\r\n /**\r\n * Fetches only Active assets/instruments if this property is set to true\r\n */\r\n showOnlyActiveAssets?: boolean;\r\n withoutServiceGroups?: boolean;\r\n}\r\nexport const bookable: Identifiable[] = [\r\n //{ Id: AvailabilityTypes.ApprovalRequiredBillable as number },\r\n { Id: AvailabilityTypes.BookableWApproval as number },\r\n { Id: AvailabilityTypes.FreelyBookable as number },\r\n //{ Id: AvailabilityTypes.FreelyBookableBillable as number },\r\n { Id: AvailabilityTypes.LectureRoom as number },\r\n { Id: AvailabilityTypes.LoanableEquipment as number },\r\n { Id: AvailabilityTypes.TrainingProgram as number },\r\n];\r\nexport const bookableAndnotbookable: Identifiable[] = bookable.concat([\r\n { Id: AvailabilityTypes.AvailableNotBookable as number },\r\n]);\r\nexport const servicesRelated: Identifiable[] = [\r\n //{ Id: AvailabilityTypes.ApprovalRequiredBillable as number },\r\n { Id: AvailabilityTypes.BookableWApproval as number },\r\n { Id: AvailabilityTypes.FreelyBookable as number },\r\n //{ Id: AvailabilityTypes.FreelyBookableBillable as number },\r\n { Id: AvailabilityTypes.LectureRoom as number },\r\n { Id: AvailabilityTypes.LoanableEquipment as number },\r\n { Id: AvailabilityTypes.TrainingProgram as number },\r\n { Id: AvailabilityTypes.AvailableNotBookable as number },\r\n { Id: AvailabilityTypes.NotAvailable as number },\r\n { Id: AvailabilityTypes.RequestRelated as number },\r\n { Id: AvailabilityTypes.ServiceRelated as number },\r\n];\r\nexport const initAssetsData = (\r\n initval: string | undefined,\r\n byService?: boolean,\r\n serviceTypes?: Identifiable[],\r\n admin?: boolean,\r\n) => {\r\n const url =\r\n admin === true\r\n ? '/api/odata/v4/AssetNames/AdminAssets'\r\n : '/api/odata/v4/AssetNames';\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n let ids = (\r\n initval.indexOf(',') !== -1\r\n ? initval.split(',')\r\n : initval.indexOf('|') !== -1\r\n ? initval.split('|')\r\n : [initval]\r\n ).map(item => {\r\n return { Id: parseInt(item) };\r\n }) as Identifiable[];\r\n let filters: string | undefined = undefined;\r\n if (ids.length > 0) {\r\n const predicates: string | Condition[] = [];\r\n\r\n if (byService) {\r\n predicates.push(\r\n new Condition('ServiceId', ODataOperators.Includes, ids),\r\n );\r\n let types =\r\n !!serviceTypes && serviceTypes.length > 0\r\n ? serviceTypes\r\n : [{ Id: 1 }];\r\n\r\n predicates.push(\r\n new Condition('ServiceTypeId', ODataOperators.Includes, types),\r\n );\r\n } else {\r\n predicates.push(new Condition('Id', ODataOperators.Includes, ids));\r\n }\r\n filters = predicates.map(f => f.toString()).join(' and ');\r\n }\r\n\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: filters,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nexport function AssetsFilterForWorkOrder(\r\n orederType: IWorkOrderTypeDto | undefined,\r\n): Condition[] {\r\n const predicates: Condition[] = [];\r\n if (orederType !== undefined) {\r\n if (orederType.Groups && orederType.Groups.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n orederType.Groups.map(f => f.Id),\r\n ),\r\n );\r\n }\r\n if (orederType.AssetCats && orederType.AssetCats.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'AssetCatId',\r\n ODataOperators.Includes,\r\n orederType.AssetCats.map(f => f.Id),\r\n ),\r\n );\r\n }\r\n }\r\n\r\n predicates.push(\r\n new Condition('ServiceTypeId', ODataOperators.Includes, [\r\n { Id: 1 },\r\n { Id: 2 },\r\n // { Id: 3 },\r\n ]),\r\n );\r\n if (predicates.length > 0) {\r\n return predicates;\r\n } else {\r\n return [];\r\n }\r\n}\r\nexport function AssetsFilterForCalibrationWorkOrder(\r\n orederType: IWorkOrderTypeDto | undefined,\r\n selectedIds: number[],\r\n): Condition[] {\r\n const predicates: Condition[] = [];\r\n if (orederType !== undefined) {\r\n if (orederType.Groups && orederType.Groups.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n orederType.Groups,\r\n ),\r\n );\r\n }\r\n if (orederType.AssetCats && orederType.AssetCats.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'AssetCatId',\r\n ODataOperators.Includes,\r\n orederType.AssetCats,\r\n ),\r\n );\r\n }\r\n }\r\n if (selectedIds.length > 0) {\r\n predicates.push(\r\n new Condition('Id', ODataOperators.Excludes, selectedIds),\r\n );\r\n }\r\n\r\n predicates.push(\r\n new Condition('ServiceTypeId', ODataOperators.Includes, [\r\n { Id: 1 },\r\n { Id: 2 },\r\n { Id: 3 },\r\n ]),\r\n );\r\n if (predicates.length > 0) {\r\n return predicates;\r\n } else {\r\n return [];\r\n }\r\n}\r\nexport function AssetsFilterForSavedView(\r\n topServiceGroups: Entity[] | undefined,\r\n): Condition[] {\r\n const predicates: Condition[] = [];\r\n if (topServiceGroups !== undefined) {\r\n if (topServiceGroups.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n topServiceGroups,\r\n ),\r\n );\r\n }\r\n }\r\n predicates.push(\r\n new Condition('ServiceTypeId', ODataOperators.Includes, [\r\n { Id: 1 },\r\n //{ Id: 2 },\r\n //{ Id: 3 },\r\n ]),\r\n );\r\n if (predicates.length > 0) {\r\n return predicates;\r\n } else {\r\n return [];\r\n }\r\n}\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n admin?: boolean,\r\n withoutServiceGroups?: boolean,\r\n) => {\r\n const url =\r\n admin === true\r\n ? '/api/odata/v4/AssetNames/AdminAssets'\r\n : '/api/odata/v4/AssetNames';\r\n return getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'AssetCatId',\r\n 'Availability',\r\n // BookableAsset is not mapped (AssetNamesController)\r\n // 'BookableAsset',\r\n 'Image',\r\n 'ServiceGroupId',\r\n 'ServiceId',\r\n 'ServiceTypeId',\r\n 'ServiceGroupName',\r\n 'ServiceGroupAssetId',\r\n 'Color',\r\n ],\r\n globalServiceGroupFilter:\r\n (withoutServiceGroups === undefined || withoutServiceGroups === false) &&\r\n !!globalServiceGroupFilter &&\r\n globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\nexport function AssetsPicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n restrictByAvType,\r\n showOnlyActiveAssets,\r\n admin,\r\n withoutServiceGroups,\r\n ...props\r\n}: AssetsPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n\r\n let avFilter =\r\n restrictByAvType === undefined ? undefined : getAvFilter(restrictByAvType);\r\n\r\n let filters =\r\n avFilter !== undefined\r\n ? predicates !== undefined\r\n ? [...predicates, avFilter]\r\n : [avFilter]\r\n : predicates;\r\n if (showOnlyActiveAssets === true) {\r\n filters?.push(\r\n new Condition('Active', ODataOperators.Equals, true),\r\n );\r\n }\r\n const innerLoadData = loadData(\r\n filters,\r\n globalServiceGroupFilter || [],\r\n admin,\r\n withoutServiceGroups,\r\n );\r\n\r\n return (\r\n \r\n );\r\n}\r\nexport function ServiceGroupAssetsPicker(\r\n props: Omit,\r\n) {\r\n return ;\r\n}\r\nexport function InstrumentAssetsPicker(\r\n props: Omit,\r\n) {\r\n return ;\r\n}\r\nexport function getAvFilter(restrictByAvType: avTypes) {\r\n switch (restrictByAvType) {\r\n case 'bookable':\r\n return `(${new Condition(\r\n 'Availability/Id',\r\n ODataOperators.Includes,\r\n bookable,\r\n ).toString()})`;\r\n case 'bookableAndnotbookable':\r\n return `(${new Condition(\r\n 'Availability/Id',\r\n ODataOperators.Includes,\r\n bookableAndnotbookable,\r\n ).toString()})`;\r\n case 'serviceRelated':\r\n return `(${new Condition(\r\n 'Availability/Id',\r\n ODataOperators.Includes,\r\n servicesRelated,\r\n ).toString()})`;\r\n case 'workOrderRelated':\r\n return `(${new Condition(\r\n 'Availability/Id',\r\n ODataOperators.Includes,\r\n servicesRelated.filter(\r\n f => f.Id !== (AvailabilityTypes.RequestRelated as number),\r\n ),\r\n ).toString()})`;\r\n case 'serviceGroup':\r\n return `(${new Condition(\r\n 'Availability/Id',\r\n ODataOperators.Equals,\r\n AvailabilityTypes.ServiceGroup,\r\n ).toString()})`;\r\n case 'all':\r\n return undefined;\r\n default:\r\n assertExhaustive(restrictByAvType);\r\n }\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.usageState || initialState;\r\n\r\nexport const selectUsageState = createSelector([selectSlice], state => state);\r\n\r\nexport const selectUsageStateProcessing = createSelector(\r\n [selectUsageState],\r\n state => state.processing,\r\n);\r\nexport const selectUsageDtoState = createSelector(\r\n [selectUsageState],\r\n state => state.usageDtoState,\r\n);\r\nexport const selectUsageDetailsState = createSelector(\r\n [selectUsageState],\r\n state => state.detailsState,\r\n);\r\nexport const selectUsageStateError = createSelector(\r\n [selectUsageDetailsState],\r\n state => state.error,\r\n);\r\nexport const selectUsageHasError = createSelector(\r\n [selectUsageDetailsState],\r\n state => state.hasErrors,\r\n);\r\nexport const selectUsageStateData = createSelector(\r\n [selectUsageDetailsState],\r\n state => state?.data,\r\n);\r\nexport const selectUsageProcessing = createSelector(\r\n [selectUsageDetailsState],\r\n state => state.processing,\r\n);\r\nexport const selectUsageCompleted = createSelector(\r\n [selectUsageDetailsState],\r\n state => state.completed,\r\n);\r\nexport const selectUsageSettings = createSelector(\r\n [selectUsageState],\r\n state => state.usageSettingsState,\r\n);\r\nexport const selectSavedOfflineServices = createSelector(\r\n [selectUsageState],\r\n state => state.savedOfflineServices,\r\n);\r\nexport const selectIsEdit = createSelector(\r\n [selectUsageState],\r\n state => state.isEdit,\r\n);\r\nexport const selectCreditState = createSelector(\r\n [selectUsageState],\r\n state => state.creditState,\r\n);\r\nexport const selectCredit = createSelector(\r\n [selectCreditState],\r\n state => state.data,\r\n);\r\nexport const selectCreditProcessing = createSelector(\r\n [selectCreditState],\r\n state => state.processing,\r\n);\r\nexport const selectCreditCompleted = createSelector(\r\n [selectCreditState],\r\n state => state.completed,\r\n);\r\nexport const selectHasCharges = createSelector(\r\n [selectUsageState],\r\n state => state.hasCharges,\r\n);\r\nexport const selectUsageNotFound = createSelector(\r\n [selectUsageState],\r\n state => state.notFound,\r\n);\r\nexport const selectFieldHandler = createSelector(\r\n [selectUsageState],\r\n state => state.valueHandler,\r\n);\r\nexport const selectRequestedValueFor = createSelector(\r\n [selectUsageState],\r\n state => state.requestedValueFor,\r\n);\r\nexport const selectUsageChangesState = createSelector(\r\n [selectUsageState],\r\n state => state.usageChangesState,\r\n);\r\nexport const selectAsyncChangeLoading = createSelector(\r\n [selectUsageState],\r\n state => state.asyncChangeLoading,\r\n);\r\nexport const selectStopUsageProcessing = createSelector(\r\n [selectUsageState],\r\n state => state.stopUsageProcessing,\r\n);\r\nexport const selectShowEndUsageDialog = createSelector(\r\n [selectUsageState],\r\n state => state.showEndUsageDialog,\r\n);\r\nexport const selectCreateManually = createSelector(\r\n [selectUsageState],\r\n state => state.createManully,\r\n);\r\nexport const selectUsageStarted = createSelector(\r\n [selectUsageState],\r\n state => state.usageStarted,\r\n);\r\n\r\n// export const selectCurrentCommand = createSelector(\r\n// [selectUsageState],\r\n// state => state.currentCommand,\r\n// );\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport BaseTextField from '../BasicInputs/BaseTextField';\r\nimport { BaseFieldProps } from '../BasicInputs/BaseTextField/BaseFieldDefinition';\r\nimport clsx from 'clsx';\r\nimport { InputAdornment } from '@material-ui/core';\r\n\r\nexport const FormNumberField = ({\r\n label,\r\n onChange,\r\n onBlur,\r\n value,\r\n name,\r\n helperText,\r\n noWarnOnNuN,\r\n ...props\r\n}: FieldHookConfig &\r\n BaseFieldProps &\r\n Omit & {\r\n noWarnOnNuN?: boolean;\r\n minInputWidth?: 'xs' | 'small' | 'medium' | 'large' | 'default';\r\n textBoxWidth?: 'xs' | 'small' | 'medium' | 'large' | 'default';\r\n }) => {\r\n const [field, meta, helper] = useField({ name, ...props });\r\n // const handleChange = e => {\r\n // var number = parseFloat(e.target.value);\r\n // if (isNaN(number)) {\r\n // if (noWarnOnNuN) {\r\n // onChange?.(e);\r\n // field.onChange(e);\r\n // } else {\r\n // console.warn(\r\n // `NaN value (\"${e.target.value}\") encountered in FormNumberField`,\r\n // );\r\n // }\r\n // } else {\r\n // onChange?.(e);\r\n // field.onChange(e);\r\n // }\r\n // };\r\n const handleChange: React.ChangeEventHandler<\r\n HTMLInputElement | HTMLTextAreaElement\r\n > = e => {\r\n if (onChange !== undefined) {\r\n onChange(e);\r\n }\r\n if (e.target.value !== '') field.onChange(e);\r\n else helper.setValue(null, true);\r\n };\r\n return (\r\n \r\n {props.info ? : null}\r\n {props.InputProps?.endAdornment}\r\n {!!props.endLabel && (\r\n \r\n {props.endLabel}\r\n \r\n )}\r\n \r\n ),\r\n }}\r\n variant=\"filled\"\r\n fullWidth\r\n autoFocus={props.autoFocus}\r\n inputProps={{\r\n ...props.inputProps,\r\n className: props.minInputWidth\r\n ? `min-width-${props.minInputWidth}`\r\n : undefined,\r\n type: 'number',\r\n min: 0,\r\n 'aria-label': `${label ? undefined : 'number input'}`,\r\n }}\r\n value={field.value || ''}\r\n onChange={handleChange}\r\n onBlur={field?.onBlur}\r\n id={props.id || 'numberfieldId'}\r\n label={label}\r\n name={name}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error ?? helperText}\r\n className={clsx(props.className, {\r\n 'text-box-width-xs': props.textBoxWidth === 'xs',\r\n 'text-box-width-small': props.textBoxWidth === 'small',\r\n 'text-box-width-medium': props.textBoxWidth === 'medium',\r\n 'text-box-width-large': props.textBoxWidth === 'large',\r\n 'text-box-width-default': props.textBoxWidth === 'default',\r\n 'number-field': true,\r\n })}\r\n {...props}\r\n />\r\n );\r\n};\r\n","export enum PurchaseOrderOptions {\r\n Hidden = 0,\r\n Optional = 1,\r\n Mandatory = 2,\r\n}\r\n","import { IBudgetExperimentsFilterDto } from 'api/odata/generated/entities/IBudgetExperimentsFilterDto';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { FieldHandlerProps } from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { AsyncDataState, Entity } from 'types/common';\r\nimport { IConnectedFiltersDto } from 'types/IConnectedFiltersDto';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { toEntity } from 'utils/entity-utils';\r\nimport { PricingState } from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport { IRequestMilestoneManualChargeModel } from 'app/pages/Samples/RequestSamplesPage/slice/types';\r\nimport { isEmptyOrWhitespace, isNullOrUndefined } from 'utils/typeUtils';\r\nimport { IConsumableServiceDto } from 'api/odata/generated/entities/IConsumableServiceDto';\r\n\r\n/* --- STATE --- */\r\n\r\nexport interface OfflineServiceState {\r\n detailsState: AsyncDataState;\r\n connectedDataState: IConnectedFiltersDto;\r\n processing: boolean;\r\n consumablesProcessing?: boolean;\r\n valueHandler?: FieldHandlerProps;\r\n serviceChangeResultState?: OfflineServiceTypeChangeResult;\r\n serviceChangeStateLoading?: boolean;\r\n creditState: AsyncDataState;\r\n hasCharges?: boolean;\r\n savedReservationService?: IOtherServices;\r\n consumablesState: AsyncDataState;\r\n consumablesValueHandler?: FieldHandlerProps;\r\n selectedServiceTypes: Array;\r\n editCreatableService?: IOtherServices;\r\n barcodeScanned?: boolean;\r\n refeshOfflineServices?: boolean;\r\n stockRenewalState: AsyncDataState;\r\n stockRenewalValueHandler?: FieldHandlerProps;\r\n renewStockState: AsyncDataState;\r\n renewStockValueHandler?: FieldHandlerProps;\r\n inventoryBatchState: AsyncDataState;\r\n inventoryBatchValueHandler?: FieldHandlerProps;\r\n inventoryBatchEditable?: IInventoryBatchDto;\r\n isEdit?: boolean;\r\n batchIsEdit?: boolean;\r\n getCreatableService?: IOtherServices;\r\n chargableServices?: IOtherServices[];\r\n}\r\nexport interface OfflineServiceQueryStringParameters {\r\n id?: string;\r\n ipid?: string;\r\n user?: string;\r\n bid?: string;\r\n be?: string;\r\n ecid?: string;\r\n po?: string;\r\n reference?: string;\r\n remarks?: string;\r\n factor?: string;\r\n amount?: string;\r\n adg?: string;\r\n stid?: string;\r\n ReservationId?: string;\r\n UsageId?: string;\r\n servicedate?: string;\r\n batchId?: string;\r\n}\r\nexport interface StockRenewalParams {\r\n stid?: string;\r\n servicedate?: string;\r\n}\r\nexport interface RenewStockParams {\r\n id?: string;\r\n stid?: string;\r\n servicedate?: string;\r\n remarks?: string;\r\n amount?: string;\r\n batchId?: string;\r\n}\r\nexport interface InventoryBatchParams {\r\n id?: string;\r\n name?: string;\r\n stid?: string;\r\n purchasedate?: string;\r\n lot?: string;\r\n inventory?: string;\r\n}\r\nexport interface OtherServiceDetailsState {\r\n Id: number;\r\n ServiceType: IOfflineServiceFilterDto | null;\r\n DiscountFactor?: number | null;\r\n Quantity?: number | null;\r\n ReservationId?: number | null;\r\n UsageId?: number | null;\r\n Remarks?: string | null;\r\n SyncReservation?: boolean | null;\r\n SyncUsage?: boolean | null;\r\n InventoryBatch?: IInventoryBatchDto | null;\r\n\r\n // ServiceDate: Date | string;\r\n // BookedBy: Entity | null;\r\n // UserGroup: Entity | null;\r\n // Budget: Entity | null;\r\n // InstituteProject: Entity | null;\r\n // ExternalCustomer?: Entity | null;\r\n // FundingType?: Entity | null;\r\n // PurchaseOrder?: string | null;\r\n // Reference?: string | null;\r\n // BudgetExperiment?: Entity | null;\r\n}\r\nexport interface ReportConsumablesState {\r\n Services: IOtherServices[];\r\n}\r\nexport interface RenewStockState {\r\n Id: number;\r\n ServiceType: IOfflineServiceFilterDto | null;\r\n DateReceived: Date | string;\r\n InventoryBatch?: IInventoryBatchDto | null;\r\n Quantity?: number | null;\r\n Remarks?: string | null;\r\n}\r\nexport interface InventoryBatchState {\r\n Id: number;\r\n Name: string;\r\n ServiceType: IOfflineServiceFilterDto | null;\r\n PurchaseDate?: Date | string | null;\r\n ExpirationDate?: Date | string | null;\r\n Inventory: number;\r\n Lot?: string | null;\r\n PurchasePricePerUnit: number | null;\r\n}\r\nexport interface StockRenewalState {\r\n Services: IOtherServices[];\r\n DateReceived: Date | string;\r\n AutoGenerateNewBatches?: boolean | null;\r\n}\r\nexport interface OfflineServicesResponse extends IResponseType {\r\n Id: number | null;\r\n data: IOtherServices | null;\r\n serviceType: Entity;\r\n IsValid: boolean;\r\n}\r\nexport interface InventoryBatchResponse extends IResponseType {\r\n Id: number | null;\r\n data: IInventoryBatchDto | null;\r\n serviceType: Entity;\r\n IsValid: boolean;\r\n}\r\nexport interface ConsumableServicesResponse extends IResponseType {\r\n Id: number[];\r\n data: IOtherServices[];\r\n IsValid: boolean;\r\n consumableInitData?: ConsumableInitData;\r\n}\r\n\r\nexport interface ServiceChangeStateParameters {\r\n ServiceTypes: number[];\r\n ReservationId: number | null;\r\n UsageId: number | null;\r\n Start: Date | string;\r\n BookedBy: string | null;\r\n ADGroup: string | null;\r\n BudgetId: number | null;\r\n FundingTypeId: number | null;\r\n}\r\nexport interface ErrorServices {\r\n id: number;\r\n error?: string;\r\n}\r\nexport interface OfflineServiceTypeChangeResult {\r\n ErrorMessages: string[];\r\n DefaultBudget: IBudgetFilterDto | null;\r\n DefaultExperiment: IBudgetExperimentsFilterDto | null;\r\n}\r\nexport type ReportedFrom = 'milestone' | 'reservation' | 'other';\r\nexport interface ConsumableMilestoneData {\r\n serviceRequestId: number;\r\n serviceRequestMilestoneId: number;\r\n}\r\n\r\nexport interface ConsumableInitData {\r\n StartTime: Date | string;\r\n UserName?: string;\r\n DisplayName?: string;\r\n UserGroupName?: string;\r\n UserGroup?: string;\r\n BudgetId?: number;\r\n BudgetExperimentId?: number;\r\n BudgetName?: string;\r\n BudgetExperimentName?: string;\r\n FundingTypeId?: number;\r\n PurchaseOrder?: string;\r\n Reference?: string;\r\n}\r\nexport const ConvertDtoToModel = (\r\n service: IOtherServices,\r\n serviceType: IOfflineServiceFilterDto | null,\r\n): OtherServiceDetailsState => {\r\n let model = {\r\n Id: service.Id,\r\n ServiceType: serviceType,\r\n ServiceTypeId: ServiceType.Offline,\r\n DiscountFactor: service.DiscountFactor,\r\n Quantity: service.Quantity ?? service.DefaultQuantity,\r\n Remarks: service.Remarks,\r\n ReservationId: service.ReservationId,\r\n UsageId: service.UsageId,\r\n InventoryBatch:\r\n service.InventoryBatchId === null\r\n ? null\r\n : ({\r\n Id: service.InventoryBatchId,\r\n Name: service.InventoryBatchName,\r\n Inventory: service.InventoryBatchAmount,\r\n } as IInventoryBatchDto),\r\n } as OtherServiceDetailsState;\r\n return model;\r\n};\r\nexport const ConvertConsumablesToModel = (\r\n services: IOtherServices[],\r\n): ReportConsumablesState => {\r\n return {\r\n Services: services,\r\n DiscountFactor: 1,\r\n Remarks: null,\r\n } as ReportConsumablesState;\r\n};\r\nexport const ConvertConsumablesToRenewalModel = (\r\n services: IOtherServices[],\r\n date: Date | string,\r\n): StockRenewalState => {\r\n return {\r\n Services: services,\r\n DateReceived: dateUtils.formatISO(dateUtils.dateOrStringToDate(date)),\r\n AutoGenerateNewBatches: true,\r\n } as StockRenewalState;\r\n};\r\nexport const ConvertRenewStockToModel = (\r\n service: IOtherServices,\r\n serviceType: IOfflineServiceFilterDto | null,\r\n): RenewStockState => {\r\n let model = {\r\n Id: service.Id,\r\n ServiceType: serviceType,\r\n // service.ServiceTypeID > 0\r\n // ? ({\r\n // Id: service.ServiceTypeID,\r\n // Name: service.ServiceType,\r\n // Active: true,\r\n // AllowToUser: service.AllowToUser,\r\n // DefaultQuantity: service.DefaultQuantity,\r\n // HideProjects: service.HideProjects,\r\n // IntQuantityOnly: service.IntQuantityOnly,\r\n // Inventory: service.Inventory,\r\n // ReservationOverlappingInventory:\r\n // service.ReservationOverlappingInventory,\r\n // ServiceGroupId: service.ServiceGroupId,\r\n // ServiceTypeId: 2,\r\n // StaffOnly: service.StaffOnly,\r\n // UnitTypeID: service.UnitTypeId,\r\n // UnitTypeName: service.Units,\r\n // NotLessThanZero: service.NotLessThanZero,\r\n // TrackInventory: service.TrackInventory,\r\n // InventoryBatchesEnabled: service.InventoryBatchesEnabled,\r\n // } as IOfflineServiceFilterDto)\r\n // : null,\r\n Quantity: service.Quantity ?? service.DefaultQuantity,\r\n Remarks: service.Remarks,\r\n InventoryBatch:\r\n service.InventoryBatchId === null\r\n ? null\r\n : ({\r\n Id: service.InventoryBatchId,\r\n Name: service.InventoryBatchName,\r\n Inventory: service.InventoryBatchAmount,\r\n } as IInventoryBatchDto),\r\n DateReceived: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(service.ServiceDate),\r\n ),\r\n } as RenewStockState;\r\n return model;\r\n};\r\nexport const ConvertInventoryBatchToModel = (\r\n batch: IInventoryBatchDto,\r\n serviceType: IOfflineServiceFilterDto | null,\r\n newDate: Date | string,\r\n): InventoryBatchState => {\r\n let model = {\r\n Id: batch.Id,\r\n ServiceType: serviceType,\r\n Inventory: batch.Inventory,\r\n Name: batch.Name,\r\n PurchasePricePerUnit: batch.PurchasePricePerUnit,\r\n ExpirationDate: batch.ExpirationDate,\r\n Lot: batch.Lot,\r\n PurchaseDate: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(batch.PurchaseDate || newDate),\r\n ),\r\n } as InventoryBatchState;\r\n return model;\r\n};\r\nexport const ConvertDtoToConnectedModel = (\r\n service: IOtherServices,\r\n): IConnectedFiltersDto => {\r\n let model = {\r\n User: toEntity(service.BookedBy, service.UserDisplayName),\r\n UserGroup: toEntity(service.UserGroup, service.UserGroupName),\r\n Budget: toEntity(service.BudgetID, service.Budget),\r\n InstituteProject: toEntity(\r\n service.InstituteProjectId,\r\n service.InstituteProjectName,\r\n ),\r\n StartTime: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(service.ServiceDate),\r\n ),\r\n BudgetExperiment: toEntity(\r\n service.BudgetExperimentId,\r\n service.BudgetExperimentName,\r\n ),\r\n ExternalCustomer: toEntity(\r\n service.ExternalCustomerId,\r\n service.ExternalCustomerName,\r\n ),\r\n FundingType:\r\n service.FundingType !== null\r\n ? getSingleInvoiceFundingType(service.FundingType ?? 0)\r\n : null,\r\n PurchaseOrder: service.PurchaseOrder,\r\n Reference: service.Reference,\r\n } as IConnectedFiltersDto;\r\n return model;\r\n};\r\nexport const ConvertInitDataToConnectedModel = (\r\n data: ConsumableInitData,\r\n): IConnectedFiltersDto => {\r\n let model = {\r\n User: toEntity(data.UserName, data.DisplayName),\r\n UserGroup: toEntity(data.UserGroup, data.UserGroupName),\r\n Budget: toEntity(data.BudgetId, data.BudgetName),\r\n InstituteProject: null,\r\n StartTime: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(data.StartTime),\r\n ),\r\n BudgetExperiment: toEntity(\r\n data.BudgetExperimentId,\r\n data.BudgetExperimentName,\r\n ),\r\n ExternalCustomer: null,\r\n FundingType:\r\n data.FundingTypeId !== null && data.FundingTypeId !== undefined\r\n ? getSingleInvoiceFundingType(data.FundingTypeId ?? 0)\r\n : null,\r\n PurchaseOrder: data.PurchaseOrder,\r\n Reference: data.Reference,\r\n } as IConnectedFiltersDto;\r\n return model;\r\n};\r\nexport const ConvertModelToInsertEntity = (\r\n model: OtherServiceDetailsState,\r\n connectedModel: IConnectedFiltersDto,\r\n) => {\r\n let data = {\r\n Id: model.Id,\r\n BudgetID: connectedModel.Budget?.Id || null,\r\n Budget: connectedModel.Budget?.Name,\r\n UserGroup: connectedModel.UserGroup?.Id || null,\r\n UserGroupName: connectedModel.UserGroup?.Name,\r\n BookedBy: connectedModel.User?.Id,\r\n UserDisplayName: connectedModel.User?.Name,\r\n ServiceTypeID: model.ServiceType?.Id,\r\n ServiceType: model.ServiceType?.Name,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(connectedModel.StartTime),\r\n ),\r\n Quantity: Number(model.Quantity),\r\n DiscountFactor: Number(model.DiscountFactor ?? 1),\r\n Remarks: model.Remarks,\r\n FundingType: connectedModel.FundingType?.Id,\r\n BudgetExperimentId: connectedModel.BudgetExperiment?.Id,\r\n BudgetExperimentName: connectedModel.BudgetExperiment?.Name,\r\n ReservationId: model.ReservationId,\r\n UsageId: model.UsageId,\r\n ExternalCustomerId: connectedModel.ExternalCustomer?.Id,\r\n ExternalCustomerName: connectedModel.ExternalCustomer?.Name,\r\n SyncReservation: false,\r\n SyncUsage: false,\r\n StaffOnly: model.ServiceType?.StaffOnly || false,\r\n InstituteProjectId: connectedModel.InstituteProject?.Id,\r\n InstituteProjectName: connectedModel.InstituteProject?.Name,\r\n PurchaseOrder: connectedModel.PurchaseOrder,\r\n Reference: connectedModel.Reference,\r\n BudgetsTurnedOn: model.ServiceType?.BudgetsTurnedOn,\r\n DefaultQuantity: model.ServiceType?.DefaultQuantity,\r\n HideProjects: model.ServiceType?.HideProjects,\r\n IntQuantityOnly: model.ServiceType?.IntQuantityOnly,\r\n ServiceGroupId: model.ServiceType?.ServiceGroupId,\r\n AllowToUser: model.ServiceType?.AllowToUser,\r\n UnitTypeId: model.ServiceType?.UnitTypeID,\r\n Units: model.ServiceType?.UnitTypeName,\r\n TrackInventory: model.ServiceType?.TrackInventory,\r\n InventoryBatchesEnabled: model.ServiceType?.InventoryBatchesEnabled,\r\n InventoryBatchId: model.InventoryBatch?.Id,\r\n InventoryBatchName: model.InventoryBatch?.Name,\r\n InventoryBatchAmount: model.InventoryBatch?.Inventory,\r\n NotLessThanZero: model.ServiceType?.NotLessThanZero,\r\n } as IOtherServices;\r\n return data;\r\n};\r\nexport const ConvertModelToUpdateEntity = (\r\n model: OtherServiceDetailsState,\r\n original: OtherServiceDetailsState,\r\n connectedModel: IConnectedFiltersDto,\r\n) => {\r\n let data = {\r\n Id: original.Id,\r\n BudgetID: connectedModel.Budget?.Id || null,\r\n Budget: connectedModel.Budget?.Name,\r\n UserGroup: connectedModel.UserGroup?.Id || null,\r\n UserGroupName: connectedModel.UserGroup?.Name,\r\n BookedBy: connectedModel.User?.Id,\r\n UserDisplayName: connectedModel.User?.Name,\r\n ServiceTypeID: model.ServiceType?.Id,\r\n ServiceType: model.ServiceType?.Name,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(connectedModel.StartTime),\r\n ),\r\n Quantity: Number(model.Quantity),\r\n DiscountFactor: Number(model.DiscountFactor ?? 1),\r\n Remarks: model.Remarks,\r\n FundingType: connectedModel.FundingType?.Id,\r\n BudgetExperimentId: connectedModel.BudgetExperiment?.Id,\r\n BudgetExperimentName: connectedModel.BudgetExperiment?.Name,\r\n ReservationId: model.ReservationId,\r\n UsageId: model.UsageId,\r\n ExternalCustomerId: connectedModel.ExternalCustomer?.Id,\r\n ExternalCustomerName: connectedModel.ExternalCustomer?.Name,\r\n SyncReservation: false,\r\n SyncUsage: false,\r\n StaffOnly: model.ServiceType?.StaffOnly || false,\r\n InstituteProjectId: connectedModel.InstituteProject?.Id,\r\n InstituteProjectName: connectedModel.InstituteProject?.Name,\r\n PurchaseOrder: connectedModel.PurchaseOrder,\r\n Reference: connectedModel.Reference,\r\n BudgetsTurnedOn: model.ServiceType?.BudgetsTurnedOn,\r\n DefaultQuantity: model.ServiceType?.DefaultQuantity,\r\n HideProjects: model.ServiceType?.HideProjects,\r\n IntQuantityOnly: model.ServiceType?.IntQuantityOnly,\r\n ServiceGroupId: model.ServiceType?.ServiceGroupId,\r\n AllowToUser: model.ServiceType?.AllowToUser,\r\n UnitTypeId: model.ServiceType?.UnitTypeID,\r\n Units: model.ServiceType?.UnitTypeName,\r\n TrackInventory: model.ServiceType?.TrackInventory,\r\n InventoryBatchesEnabled: model.ServiceType?.InventoryBatchesEnabled,\r\n InventoryBatchId: model.InventoryBatch?.Id,\r\n InventoryBatchName: model.InventoryBatch?.Name,\r\n InventoryBatchAmount: model.InventoryBatch?.Inventory,\r\n NotLessThanZero: model.ServiceType?.NotLessThanZero,\r\n } as IOtherServices;\r\n return data;\r\n};\r\nexport const ConvertModelToUpdateRenewStockEntity = (\r\n model: RenewStockState,\r\n original: RenewStockState,\r\n autoGenerateBatch?: boolean,\r\n) => {\r\n let data = {\r\n Id: original.Id,\r\n ServiceTypeID: model.ServiceType?.Id,\r\n ServiceType: model.ServiceType?.Name,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(model.DateReceived),\r\n ),\r\n Quantity: Number(model.Quantity),\r\n Remarks: model.Remarks,\r\n DefaultQuantity: model.ServiceType?.DefaultQuantity,\r\n IntQuantityOnly: model.ServiceType?.IntQuantityOnly,\r\n ServiceGroupId: model.ServiceType?.ServiceGroupId,\r\n InventoryBatchId: model.InventoryBatch?.Id,\r\n InventoryBatchName: model.InventoryBatch?.Name,\r\n InventoryBatchesEnabled: model.ServiceType?.InventoryBatchesEnabled,\r\n RenewStockInventory: true,\r\n TrackInventory: model.ServiceType?.TrackInventory,\r\n NotLessThanZero: model.ServiceType?.NotLessThanZero,\r\n AutoGenerateNewBatches: autoGenerateBatch,\r\n } as IOtherServices;\r\n return data;\r\n};\r\nexport const getDefaultService = (\r\n user: AuthenticatedUser | undefined,\r\n date: Date | string,\r\n) => {\r\n return {\r\n Id: 0,\r\n BookedBy: user?.Id,\r\n UserDisplayName: user?.Name,\r\n BudgetID: null,\r\n Budget: null,\r\n BudgetExperimentId: null,\r\n BudgetExperimentName: null,\r\n AllowToUser: true,\r\n DiscountFactor: 1,\r\n Quantity: null,\r\n DefaultQuantity: null,\r\n ExternalCustomerId: null,\r\n ExternalCustomerName: null,\r\n FundingType: null,\r\n HideProjects: false,\r\n InstituteProjectId: null,\r\n InstituteProjectName: null,\r\n IntQuantityOnly: true,\r\n Mandatory: false,\r\n Remarks: null,\r\n ReservationId: null,\r\n ServiceDate: date,\r\n ServiceTypeID: 0,\r\n ServiceType: null,\r\n ServiceGroupId: 0,\r\n Units: null,\r\n UnitTypeId: null,\r\n UserGroup: null,\r\n UserGroupName: null,\r\n StaffOnly: false,\r\n Reference: null,\r\n PurchaseOrder: null,\r\n UsageId: null,\r\n HasCharges: false,\r\n TrackInventory: false,\r\n InventoryBatchesEnabled: false,\r\n NotLessThanZero: true,\r\n ReservationOverlappingInventory: null,\r\n BudgetsTurnedOn: false,\r\n InventoryBatchId: null,\r\n InventoryBatchName: null,\r\n ServiceGroup: null,\r\n } as IOtherServices;\r\n};\r\nexport const getDefaultBatch = (date: Date | string) => {\r\n return {\r\n Id: 0,\r\n Name: dateUtils.shortDateFormat(date) ?? '',\r\n ExpirationDate: null,\r\n Inventory: 0,\r\n Lot: null,\r\n OfflineServiceTypeId: 0,\r\n OfflineServiceTypeName: '',\r\n PurchaseDate: date,\r\n PurchasePricePerUnit: null,\r\n } as IInventoryBatchDto;\r\n};\r\nexport const ConvertConsumablesToInsertEntity = (\r\n services: IOtherServices[],\r\n connectedModel: IConnectedFiltersDto,\r\n discountFactor?: number | null,\r\n remarks?: string | null,\r\n) => {\r\n return services.map(f => {\r\n let savedData: IOtherServices = {\r\n Id: f.Id,\r\n BudgetID: connectedModel.Budget?.Id || null,\r\n Budget: connectedModel.Budget?.Name ?? null,\r\n UserGroup: connectedModel.UserGroup?.Id || null,\r\n UserGroupName: connectedModel.UserGroup?.Name ?? null,\r\n BookedBy: connectedModel.User?.Id ?? null,\r\n UserDisplayName: connectedModel.User?.Name ?? null,\r\n ServiceTypeID: f.ServiceTypeID,\r\n ServiceType: f.ServiceType,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(connectedModel.StartTime),\r\n ),\r\n Quantity: Number(f.Quantity),\r\n DiscountFactor: Number(f.DiscountFactor),\r\n Remarks: f.Remarks,\r\n FundingType: connectedModel.FundingType?.Id ?? null,\r\n BudgetExperimentId: connectedModel.BudgetExperiment?.Id ?? null,\r\n BudgetExperimentName: connectedModel.BudgetExperiment?.Name ?? null,\r\n ReservationId: f.ReservationId,\r\n UsageId: f.UsageId,\r\n ExternalCustomerId: connectedModel.ExternalCustomer?.Id ?? null,\r\n ExternalCustomerName: connectedModel.ExternalCustomer?.Name ?? null,\r\n SyncReservation: false,\r\n SyncUsage: false,\r\n StaffOnly: f.StaffOnly || false,\r\n InstituteProjectId: connectedModel.InstituteProject?.Id ?? null,\r\n InstituteProjectName: connectedModel.InstituteProject?.Name ?? null,\r\n PurchaseOrder: connectedModel.PurchaseOrder ?? null,\r\n Reference: connectedModel.Reference ?? null,\r\n BudgetsTurnedOn: f.BudgetsTurnedOn,\r\n DefaultQuantity: f.DefaultQuantity,\r\n HideProjects: f.HideProjects,\r\n IntQuantityOnly: f.IntQuantityOnly,\r\n ServiceGroupId: f.ServiceGroupId,\r\n AllowToUser: f.AllowToUser,\r\n UnitTypeId: f.UnitTypeId,\r\n Units: f.Units,\r\n TrackInventory: f.TrackInventory,\r\n InventoryBatchesEnabled: f.InventoryBatchesEnabled,\r\n InventoryBatchId: f.InventoryBatchId,\r\n InventoryBatchName: f.InventoryBatchName,\r\n InventoryBatchAmount: f.InventoryBatchAmount,\r\n NotLessThanZero: f.NotLessThanZero,\r\n AutoGenerateNewBatches: false,\r\n InsertedAt: null,\r\n ServiceGroup: null,\r\n ServiceRate: 0,\r\n DepartmentId: null,\r\n HasCharges: false,\r\n InsertedBy: null,\r\n Institute: null,\r\n InstituteId: null,\r\n InstituteTypeId: null,\r\n Inventory: -1,\r\n Mandatory: false,\r\n RenewStockInventory: false,\r\n ReservationOverlappingInventory: null,\r\n };\r\n if (!isNullOrUndefined(discountFactor)) {\r\n let globalFactor = Number(discountFactor);\r\n let serviceFactor = Number(f.DiscountFactor);\r\n if (globalFactor !== serviceFactor) {\r\n if (serviceFactor === 0 || serviceFactor === 1) {\r\n savedData.DiscountFactor = globalFactor;\r\n }\r\n }\r\n }\r\n if (!isEmptyOrWhitespace(remarks)) {\r\n if (isEmptyOrWhitespace(f.Remarks)) {\r\n savedData.Remarks = remarks ?? null;\r\n }\r\n }\r\n\r\n return savedData;\r\n });\r\n};\r\nexport const ConvertConsumablesToMilestoneCharge = (\r\n services: IOtherServices[],\r\n chargedOriginals: IOtherServices[],\r\n connectedModel: IConnectedFiltersDto,\r\n milestoneData: ConsumableMilestoneData,\r\n remarks?: string | null,\r\n) => {\r\n let results = services.map(f => {\r\n let updated = false;\r\n if (chargedOriginals.length > 0) {\r\n updated =\r\n chargedOriginals.find(s => s.ServiceTypeID === f.ServiceTypeID) !==\r\n undefined;\r\n }\r\n return {\r\n ServiceRequestId: milestoneData.serviceRequestId,\r\n ServiceRequestMilestoneId: milestoneData.serviceRequestMilestoneId,\r\n OfflineServiceType: {\r\n Id: f.ServiceTypeID,\r\n Name: f.ServiceType,\r\n },\r\n Quantity: Number(f.Quantity),\r\n Remarks: isEmptyOrWhitespace(f.Remarks) ? remarks : f.Remarks,\r\n Date: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(connectedModel.StartTime),\r\n ),\r\n Id: updated\r\n ? chargedOriginals.find(s => s.ServiceTypeID === f.ServiceTypeID)\r\n ?.ChargeId\r\n : 0,\r\n action: updated ? 'update' : 'insert',\r\n };\r\n }) as Array<\r\n Partial & {\r\n ServiceRequestId: number;\r\n ServiceRequestMilestoneId: number;\r\n action?: 'insert' | 'update' | 'delete';\r\n }\r\n >;\r\n chargedOriginals.forEach(f => {\r\n let deleted =\r\n services.find(s => s.ServiceTypeID === f.ServiceTypeID) === undefined;\r\n if (deleted) {\r\n results.push({\r\n ServiceRequestId: milestoneData.serviceRequestId,\r\n ServiceRequestMilestoneId: milestoneData.serviceRequestMilestoneId,\r\n OfflineServiceType: {\r\n Id: f.ServiceTypeID,\r\n Name: f.ServiceType ?? '',\r\n } as IConsumableServiceDto,\r\n Quantity: f.Quantity,\r\n Remarks: '',\r\n Date: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(connectedModel.StartTime),\r\n ),\r\n Id: f.ChargeId,\r\n action: 'delete',\r\n });\r\n }\r\n });\r\n return results;\r\n};\r\nexport const ConvertRenewStockToInsertEntity = (\r\n model: RenewStockState,\r\n autoGenerateBatch?: boolean,\r\n) => {\r\n let data = {\r\n Id: model.Id,\r\n ServiceTypeID: model.ServiceType?.Id,\r\n ServiceType: model.ServiceType?.Name,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(model.DateReceived),\r\n ),\r\n Quantity: Number(model.Quantity),\r\n Remarks: model.Remarks,\r\n InventoryBatchesEnabled: model.ServiceType?.InventoryBatchesEnabled,\r\n InventoryBatchId: model.InventoryBatch?.Id,\r\n InventoryBatchName: model.InventoryBatch?.Name,\r\n DefaultQuantity: model.ServiceType?.DefaultQuantity,\r\n IntQuantityOnly: model.ServiceType?.IntQuantityOnly,\r\n ServiceGroupId: model.ServiceType?.ServiceGroupId,\r\n TrackInventory: model.ServiceType?.TrackInventory,\r\n NotLessThanZero: model.ServiceType?.NotLessThanZero,\r\n AutoGenerateNewBatches: autoGenerateBatch,\r\n RenewStockInventory: true,\r\n } as IOtherServices;\r\n return data;\r\n};\r\nexport const ConvertInventoryBatchToEntity = (model: InventoryBatchState) => {\r\n let data = {\r\n Id: model.Id,\r\n Name: model.Name,\r\n OfflineServiceTypeId: model.ServiceType?.Id,\r\n OfflineServiceTypeName: model.ServiceType?.Name,\r\n PurchaseDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(model.PurchaseDate ?? new Date()),\r\n ),\r\n ExpirationDate:\r\n model.ExpirationDate === null || model.ExpirationDate === undefined\r\n ? null\r\n : dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(model.ExpirationDate),\r\n ),\r\n Inventory: 0, // model.Inventory,\r\n Lot: model.Lot,\r\n PurchasePricePerUnit: !!model.PurchasePricePerUnit\r\n ? Number(model.PurchasePricePerUnit)\r\n : null,\r\n } as IInventoryBatchDto;\r\n return data;\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { offlineServiceStateActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { OtherServicesApi as api } from 'api/OtherServicesApi';\r\nimport {\r\n ConsumableInitData,\r\n ConsumableMilestoneData,\r\n ConsumableServicesResponse,\r\n ConvertConsumablesToInsertEntity,\r\n ConvertConsumablesToMilestoneCharge,\r\n ConvertDtoToConnectedModel,\r\n ConvertInitDataToConnectedModel,\r\n ConvertInventoryBatchToEntity,\r\n ConvertModelToInsertEntity,\r\n ConvertModelToUpdateEntity,\r\n ConvertModelToUpdateRenewStockEntity,\r\n ConvertRenewStockToInsertEntity,\r\n getDefaultBatch,\r\n getDefaultService,\r\n InventoryBatchParams,\r\n InventoryBatchResponse,\r\n InventoryBatchState,\r\n OfflineServiceQueryStringParameters,\r\n OfflineServicesResponse,\r\n OfflineServiceTypeChangeResult,\r\n OtherServiceDetailsState,\r\n RenewStockParams,\r\n RenewStockState,\r\n ReportConsumablesState,\r\n ReportedFrom,\r\n ServiceChangeStateParameters,\r\n StockRenewalParams,\r\n StockRenewalState,\r\n} from './types';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { OtherServiceDetailsProps } from '..';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { AxiosError } from 'axios';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport {\r\n ConnectedFiltersInit,\r\n IConnectedFiltersDto,\r\n} from 'types/IConnectedFiltersDto';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { connectedFiltersActions } from 'app/components/Forms/FormConnectedFilters/slice';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { selectConnectedFiltersData } from 'app/components/Forms/FormConnectedFilters/slice/selectors';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectBarcodeScanTarget,\r\n selectGlobalSetting,\r\n selectOffsetDate,\r\n} from 'app/slice/selectors';\r\nimport { toEntity } from 'utils/entity-utils';\r\nimport { MultiDetailsProps } from 'app/Layout/FrontendLayout/components/Snackbar/Actions';\r\nimport { BARCODE_SCANNED } from 'react-usb-barcode-scanner';\r\nimport { parseBarcode, ScanTarget } from 'app/slice/types';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { IMyAssetsRow } from 'app/pages/MyAssetsPage/IMyAssetsRow';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { InventoryBatchProps } from '../../InventoryBatch';\r\nimport { RenewStockProps } from '../../RenewStock';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { requestSamplesActions } from 'app/pages/Samples/RequestSamplesPage/slice';\r\nimport { getModelStateErrors } from 'api/utils';\r\nimport { selectChargableServices } from './selectors';\r\n\r\nfunction* doInitDetails(\r\n action: PayloadAction<{\r\n query: OfflineServiceQueryStringParameters;\r\n service?: IOtherServices;\r\n globalSettings: GlobalSettingsType;\r\n editCreatable?: boolean;\r\n }>,\r\n) {\r\n try {\r\n let data: IOtherServices | null = action.payload.service || null;\r\n const date = yield select(state => selectOffsetDate(state, new Date()));\r\n let hasError: boolean = false;\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n let serviceType: IOfflineServiceFilterDto | null = null;\r\n if (data === null) {\r\n const result = yield call(api.initOfflineService, action.payload.query);\r\n console.debug('service result: ', result);\r\n let response = result as OfflineServicesResponse;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: `initOfflineErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `initOfflineWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: `initOfflineSucc_${uuid()}`,\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n data =\r\n response.data ??\r\n getDefaultService(\r\n user,\r\n dateUtils.formatISO(dateUtils.dateOrStringToDate(date)),\r\n );\r\n hasError = !response.IsValid;\r\n serviceType = response.serviceType as IOfflineServiceFilterDto;\r\n }\r\n if (serviceType === null && data.ServiceTypeID > 0) {\r\n serviceType = yield call(\r\n api.getServiceType,\r\n data.ServiceTypeID,\r\n 'publicActiveAndInactiveUrl',\r\n );\r\n }\r\n yield put(\r\n connectedFiltersActions.extendSettingsState({\r\n services:\r\n data.ServiceTypeID > 0\r\n ? [\r\n {\r\n Id: data.ServiceTypeID,\r\n Name: data.ServiceType,\r\n ServiceGroupId: data.ServiceGroupId,\r\n ServiceTypeId: ServiceType.Offline,\r\n Active: true,\r\n BudgetsTurnedOn: data.BudgetsTurnedOn,\r\n HideProject: data.HideProjects,\r\n } as IServiceTypeFilterDto,\r\n ]\r\n : [],\r\n globalSettings: action.payload.globalSettings,\r\n isEdit: (tryParseInt(action.payload.query.id) ?? 0) > 0,\r\n settings: {},\r\n data: ConvertDtoToConnectedModel(data),\r\n }),\r\n );\r\n yield put(\r\n connectedFiltersActions.saveState(ConvertDtoToConnectedModel(data)),\r\n );\r\n yield put(\r\n actions.initDetails_Success({\r\n hasErrors: hasError,\r\n hasCharges: data.HasCharges,\r\n data: data,\r\n isEdit: (tryParseInt(action.payload.query.id) ?? 0) > 0,\r\n serviceType: serviceType,\r\n }),\r\n );\r\n if (\r\n data.ServiceTypeID > 0 &&\r\n !(data.Id > 0) &&\r\n !action.payload.editCreatable\r\n ) {\r\n const parameters = {\r\n ServiceTypes: [data.ServiceTypeID],\r\n ReservationId: data.ReservationId,\r\n UsageId: data.UsageId,\r\n BookedBy: data.BookedBy,\r\n ADGroup: data.UserGroup,\r\n Start: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(data.ServiceDate),\r\n ),\r\n BudgetId: data.BudgetID,\r\n FundingTypeId: data.FundingType,\r\n } as ServiceChangeStateParameters;\r\n yield put(actions.initServiceChangeStateData(parameters));\r\n }\r\n } catch (error: unknown) {\r\n yield put(actions.initDetails_Error(error));\r\n }\r\n}\r\nfunction* doInitServiceChangeStateData(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n let res = yield call(api.getServiceChangeState, action.payload);\r\n let response = res as OfflineServiceTypeChangeResult;\r\n\r\n yield put(actions.initServiceChangeStateData_Success(response));\r\n } catch (error: unknown) {\r\n yield put(actions.initServiceChangeStateData_Error());\r\n }\r\n}\r\nfunction* doCreate(\r\n action: PayloadAction<{\r\n model: OtherServiceDetailsState;\r\n saveCreatable?: boolean;\r\n }>,\r\n) {\r\n const connectedModel: IConnectedFiltersDto = yield select(\r\n selectConnectedFiltersData,\r\n );\r\n const httpPayloads: IOtherServices = ConvertModelToInsertEntity(\r\n action.payload.model,\r\n connectedModel,\r\n );\r\n try {\r\n const result = yield call(api.insertOtherService, httpPayloads);\r\n let response = result as OfflineServicesResponse;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: `serviceInsertError_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceInsertSuccess_${uuid()}`,\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: true,\r\n itemName: i18next.t(translations.OfflineService),\r\n detailsType: RenderPageType.OtherServiceDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n initialService: response.data,\r\n } as OtherServiceDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: `serviceInsertWarning_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n if (action.payload.saveCreatable === true && !hasErrors) {\r\n yield put(actions.setReservationService(response.data ?? undefined));\r\n }\r\n yield put(\r\n actions.createService_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceInsert_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createService_Error(Error));\r\n }\r\n}\r\nfunction* doUpdate(\r\n action: PayloadAction<{\r\n current: OtherServiceDetailsState;\r\n original: OtherServiceDetailsState;\r\n saveCreatable?: boolean;\r\n }>,\r\n) {\r\n const connectedModel: IConnectedFiltersDto = yield select(\r\n selectConnectedFiltersData,\r\n );\r\n let updatedService = ConvertModelToUpdateEntity(\r\n action.payload.current,\r\n action.payload.original,\r\n connectedModel,\r\n );\r\n let hasErrors = false;\r\n try {\r\n if (action.payload.saveCreatable) {\r\n yield put(actions.setReservationService(updatedService));\r\n } else {\r\n const results = yield call(\r\n api.updateOtherService,\r\n updatedService,\r\n action.payload.current.Id,\r\n );\r\n let response = results as OfflineServicesResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: `serviceUpdateErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceUpdateSuccess_${uuid()}`,\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.OfflineService),\r\n detailsType: RenderPageType.OtherServiceDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n initialService: response.data,\r\n } as OtherServiceDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `serviceUpdateWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n hasErrors = response.ErrorMessages.length > 0;\r\n }\r\n yield put(\r\n actions.updateService_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const modelState = getModelStateErrors(error);\r\n\r\n if (modelState !== undefined) {\r\n const messages = Object.values(modelState).flat();\r\n for (const message of messages) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: message,\r\n }),\r\n );\r\n }\r\n } else {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceUpdateErr_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n }\r\n yield put(actions.updateService_Error(Error));\r\n }\r\n}\r\nfunction* doSetAnyValue(\r\n action: PayloadAction<{\r\n fieldKey: keyof OtherServiceDetailsState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setAnyValueSuccess(action.payload));\r\n}\r\nfunction* doSetConsumableValue(\r\n action: PayloadAction<{\r\n fieldKey: keyof ReportConsumablesState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setConsumableValueSuccess(action.payload));\r\n}\r\nfunction* doSetRenewalValue(\r\n action: PayloadAction<{\r\n fieldKey: keyof StockRenewalState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setStockRenewalValueSuccess(action.payload));\r\n}\r\nfunction* doGetCredit(action: PayloadAction) {\r\n const connectedModel: IConnectedFiltersDto = yield select(\r\n selectConnectedFiltersData,\r\n );\r\n const httpPayloads: IOtherServices = ConvertModelToInsertEntity(\r\n action.payload,\r\n connectedModel,\r\n );\r\n try {\r\n const result = yield call(api.calculateCredit, httpPayloads);\r\n yield put(\r\n actions.getCredit_Success({\r\n credit: result.TotalCost,\r\n balance: result.Balance,\r\n }),\r\n );\r\n } catch {\r\n yield put(actions.getCredit_Success({ credit: 0, balance: null }));\r\n }\r\n}\r\nfunction* doGetTotalCredit(action: PayloadAction) {\r\n const connectedModel: IConnectedFiltersDto = yield select(\r\n selectConnectedFiltersData,\r\n );\r\n const httpPayloads: IOtherServices[] = ConvertConsumablesToInsertEntity(\r\n action.payload,\r\n connectedModel,\r\n );\r\n try {\r\n const result = yield call(api.calculateTotalCredit, httpPayloads);\r\n yield put(\r\n actions.getTotalCredit_Success({\r\n credit: result.TotalCost,\r\n balance: result.Balance,\r\n }),\r\n );\r\n } catch {\r\n yield put(actions.getTotalCredit_Success({ credit: 0, balance: null }));\r\n }\r\n}\r\nfunction* doInitConsumables(\r\n action: PayloadAction<{\r\n query: OfflineServiceQueryStringParameters;\r\n globalSettings: GlobalSettingsType;\r\n services?: IOtherServices[];\r\n reportFrom?: ReportedFrom;\r\n }>,\r\n) {\r\n try {\r\n let data: IOtherServices[] = !!action.payload.services\r\n ? action.payload.services\r\n : [];\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n let initData: ConsumableInitData | undefined = undefined;\r\n if (data.length < 1) {\r\n const result = yield call(\r\n api.initConsumableServices,\r\n action.payload.query,\r\n );\r\n let response = result as ConsumableServicesResponse;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: `initOfflineErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `initOfflineWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: `initOfflineSucc_${uuid()}`,\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n data = response.data;\r\n initData = response.consumableInitData;\r\n }\r\n const connectedData =\r\n data.length > 0\r\n ? ConvertDtoToConnectedModel(data[0])\r\n : !!initData\r\n ? ConvertInitDataToConnectedModel(initData)\r\n : ConnectedFiltersInit(\r\n undefined,\r\n undefined,\r\n toEntity(user?.Id, user?.Name),\r\n action.payload.globalSettings\r\n .reservationUserGroupGroupByBudgetUserGroup\r\n ? undefined\r\n : toEntity(\r\n user?.ActiveUserGroup?.Id,\r\n user?.ActiveUserGroup?.Name,\r\n ),\r\n undefined,\r\n undefined,\r\n undefined,\r\n null,\r\n undefined,\r\n undefined,\r\n undefined,\r\n );\r\n yield put(\r\n connectedFiltersActions.extendSettingsState({\r\n services:\r\n data.length > 0\r\n ? data.map(f => {\r\n return {\r\n Id: f.ServiceTypeID,\r\n Name: f.ServiceType,\r\n ServiceGroupId: f.ServiceGroupId,\r\n ServiceTypeId: ServiceType.Offline,\r\n Active: true,\r\n BudgetsTurnedOn: f.BudgetsTurnedOn,\r\n HideProject: f.HideProjects,\r\n } as IServiceTypeFilterDto;\r\n })\r\n : [],\r\n globalSettings: action.payload.globalSettings,\r\n isEdit: false,\r\n settings: {},\r\n data: connectedData,\r\n reportFrom: action.payload.reportFrom,\r\n }),\r\n );\r\n yield put(connectedFiltersActions.saveState(connectedData));\r\n yield put(\r\n actions.initConsumables_Success({\r\n data: data, //action.payload.reportFrom === 'milestone' ? [] : data,\r\n connectedData: connectedData,\r\n }),\r\n );\r\n if (data.length > 0 && action.payload.reportFrom !== 'milestone') {\r\n const parameters = {\r\n ServiceTypes: data.map(f => f.ServiceTypeID),\r\n ReservationId: null,\r\n UsageId: null,\r\n BookedBy: data[0].BookedBy,\r\n ADGroup: data[0].UserGroup,\r\n Start: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(data[0].ServiceDate),\r\n ),\r\n BudgetId: data[0].BudgetID,\r\n FundingTypeId: data[0].FundingType,\r\n } as ServiceChangeStateParameters;\r\n yield put(actions.initServiceChangeStateData(parameters));\r\n }\r\n } catch (error: unknown) {\r\n yield put(actions.initConsumables_Error(error));\r\n }\r\n}\r\nfunction* doCreateConsumables(\r\n action: PayloadAction<{\r\n Services: IOtherServices[];\r\n DiscountFactor?: number | null;\r\n Remarks?: string | null;\r\n reportFrom?: ReportedFrom;\r\n milestoneData?: ConsumableMilestoneData;\r\n }>,\r\n) {\r\n const connectedModel: IConnectedFiltersDto = yield select(\r\n selectConnectedFiltersData,\r\n );\r\n const httpPayloads: IOtherServices[] = ConvertConsumablesToInsertEntity(\r\n action.payload.Services,\r\n connectedModel,\r\n action.payload.DiscountFactor,\r\n action.payload.Remarks,\r\n );\r\n if (\r\n action.payload.reportFrom === 'milestone' &&\r\n action.payload.milestoneData !== undefined\r\n ) {\r\n const chargedOriginals = yield select(selectChargableServices);\r\n const charges = ConvertConsumablesToMilestoneCharge(\r\n action.payload.Services,\r\n chargedOriginals ?? [],\r\n connectedModel,\r\n action.payload.milestoneData,\r\n action.payload.Remarks,\r\n );\r\n if (action.payload.Services.some(f => Number(f.Quantity) === 0)) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n action.payload.Services.filter(f => Number(f.Quantity) === 0).map(\r\n item => {\r\n return {\r\n key: `serviceInsertError_${uuid()}`,\r\n message: `${item.ServiceType} ${\r\n i18next.t(translations.err_Quantity_required) as string\r\n }`,\r\n variant: 'error',\r\n };\r\n },\r\n ),\r\n ),\r\n );\r\n yield put(actions.createConsumables_Error(Error));\r\n return;\r\n }\r\n yield put(requestSamplesActions.insertMilestoneCharges(charges));\r\n yield put(\r\n actions.createConsumables_Success({\r\n hasErrors: false,\r\n }),\r\n );\r\n } else {\r\n try {\r\n const result = yield call(api.insertConsumableServices, httpPayloads);\r\n let response = result as ConsumableServicesResponse;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: `serviceInsertError_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceInsertSuccess_${uuid()}`,\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: undefined,\r\n created: true,\r\n multiple: true,\r\n itemName: i18next.t(translations.OfflineService),\r\n itemEndName: 'logged',\r\n multiDetails: response.data.map(f => {\r\n return {\r\n Id: f.Id,\r\n detailsType: RenderPageType.OtherServiceDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(f.Id) ?? -1),\r\n },\r\n initialService: f,\r\n } as OtherServiceDetailsProps,\r\n } as MultiDetailsProps;\r\n }),\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: `serviceInsertWarning_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n yield put(\r\n actions.createConsumables_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceInsert_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createConsumables_Error(Error));\r\n }\r\n }\r\n}\r\nasync function getAssetByInternalCode(barcode: string) {\r\n try {\r\n var response: IODataQueryResponse = await httpClient.get(\r\n '/api/odata/v4/MyAssets',\r\n {\r\n $top: 1,\r\n $select: 'ServiceId',\r\n $filter: `${new Condition(\r\n 'InternalCode',\r\n ODataOperators.Equals,\r\n barcode,\r\n ).toString()} and ${new Condition(\r\n 'ServiceTypeId',\r\n ODataOperators.Equals,\r\n 2,\r\n ).toString()}`,\r\n },\r\n );\r\n var serviceTypeId = response.value[0]?.ServiceId;\r\n return serviceTypeId;\r\n } catch (error) {}\r\n}\r\nfunction* doBarcodeScan(action: PayloadAction<{ data: string }>) {\r\n const MIN_LENGTH_DEFAULT = 6;\r\n const minBarcodeLengthString: string | undefined = yield select(state =>\r\n selectGlobalSetting(state, AllowedSettings.MinBarcodeLength),\r\n );\r\n const MinBarcodeLength =\r\n tryParseInt(minBarcodeLengthString) ?? MIN_LENGTH_DEFAULT;\r\n // prevent accidental barcode detection on fast user input\r\n if (action.payload.data.length < MinBarcodeLength) {\r\n return;\r\n }\r\n const scannTarget: ScanTarget | undefined = yield select(\r\n selectBarcodeScanTarget,\r\n );\r\n if (scannTarget === undefined || scannTarget !== ScanTarget.Consumables) {\r\n return;\r\n }\r\n const appSettings: AppSettings = yield select(selectAppSettings);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'info',\r\n message:\r\n i18next.t(translations.BarcodeScanModalBody) +\r\n ' ' +\r\n action.payload.data,\r\n }),\r\n );\r\n try {\r\n // in case and the barcode is a valid internal url - get InternalCode\r\n let scanedBarcode = parseBarcode(action.payload.data, appSettings);\r\n\r\n let internalId = action.payload.data;\r\n if (scanedBarcode !== undefined) {\r\n internalId = scanedBarcode.InternalCode ?? action.payload.data;\r\n }\r\n if (internalId === undefined || internalId === null) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.BarcodeNotFoundEx),\r\n }),\r\n );\r\n } else {\r\n const serviceId = yield call(getAssetByInternalCode, internalId);\r\n if (serviceId !== undefined) {\r\n yield put(actions.setSelectedServiceType([serviceId]));\r\n yield put(actions.setBarcodeScanned(true));\r\n\r\n return;\r\n }\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.BarcodeNotFoundEx),\r\n }),\r\n );\r\n }\r\n } catch (error) {\r\n console.error(`${action.type}`, action.payload, error);\r\n }\r\n}\r\nfunction* doSetIsBarcodeScanned(action: PayloadAction) {\r\n yield put(actions.setBarcodeScanned_Success(action.payload));\r\n}\r\nfunction* doInitStockRenewal(\r\n action: PayloadAction<{\r\n query: StockRenewalParams;\r\n services?: IOtherServices[];\r\n }>,\r\n) {\r\n try {\r\n let data: IOtherServices[] = !!action.payload.services\r\n ? action.payload.services\r\n : [];\r\n const date = yield select(state => selectOffsetDate(state, new Date()));\r\n if (data.length < 1) {\r\n const result = yield call(\r\n api.initStockRenewalServices,\r\n action.payload.query,\r\n );\r\n let response = result as ConsumableServicesResponse;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: `initOfflineErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `initOfflineWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: `initOfflineSucc_${uuid()}`,\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n data = response.data;\r\n }\r\n yield put(\r\n actions.initStockRenewal_Success({\r\n data: data,\r\n date: dateUtils.formatISO(dateUtils.dateOrStringToDate(date)),\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n yield put(actions.initStockRenewal_Error(error));\r\n }\r\n}\r\nfunction* doCreateStockRenewals(action: PayloadAction) {\r\n const httpPayloads: IOtherServices[] = action.payload.Services;\r\n try {\r\n const result = yield call(api.insertStockRenewalServices, httpPayloads);\r\n let response = result as ConsumableServicesResponse;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: `stockrenewalInsertError_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `stockrenewalInsertSuccess_${uuid()}`,\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: undefined,\r\n created: true,\r\n multiple: true,\r\n itemName: i18next.t(translations.RenewStock),\r\n multiDetails: response.data.map(f => {\r\n return {\r\n Id: f.Id,\r\n detailsType: RenderPageType.RenewStock,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(f.Id) ?? -1),\r\n },\r\n initialService: f,\r\n } as RenewStockProps,\r\n } as MultiDetailsProps;\r\n }),\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: `stockrenewalInsertWarning_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n yield put(\r\n actions.createStockRenewals_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `stockrenewalInsert_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createStockRenewals_Error(Error));\r\n }\r\n}\r\nfunction* doInitRenewStock(\r\n action: PayloadAction<{\r\n query: RenewStockParams;\r\n service?: IOtherServices;\r\n }>,\r\n) {\r\n try {\r\n let data: IOtherServices | null = action.payload.service || null;\r\n let hasError: boolean = false;\r\n const date = yield select(state => selectOffsetDate(state, new Date()));\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n let serviceType: IOfflineServiceFilterDto | null = null;\r\n if (data === null) {\r\n const result = yield call(\r\n api.initRenewStockService,\r\n action.payload.query,\r\n );\r\n console.debug('service result: ', result);\r\n let response = result as OfflineServicesResponse;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: `initOfflineErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `initOfflineWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: `initOfflineSucc_${uuid()}`,\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n data =\r\n response.data ??\r\n getDefaultService(\r\n user,\r\n dateUtils.formatISO(dateUtils.dateOrStringToDate(date)),\r\n );\r\n hasError = !response.IsValid;\r\n serviceType = response.serviceType as IOfflineServiceFilterDto;\r\n }\r\n if (serviceType === null && data.ServiceTypeID > 0) {\r\n serviceType = yield call(api.getServiceType, data.ServiceTypeID);\r\n }\r\n yield put(\r\n actions.initRenewStock_Success({\r\n hasErrors: hasError,\r\n data: data,\r\n isEdit: (tryParseInt(action.payload.query.id) ?? 0) > 0,\r\n serviceType: serviceType,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n yield put(actions.initRenewStock_Error(error));\r\n }\r\n}\r\nfunction* doCreateRenewStock(\r\n action: PayloadAction<{\r\n model: RenewStockState;\r\n editCreatable: boolean;\r\n preventRefreshTable?: boolean;\r\n autoGenerateBatch?: boolean;\r\n saveCreatable?: boolean;\r\n }>,\r\n) {\r\n const httpPayloads: IOtherServices = ConvertRenewStockToInsertEntity(\r\n action.payload.model,\r\n action.payload.autoGenerateBatch,\r\n );\r\n if (action.payload.editCreatable) {\r\n yield put(actions.setEditCreatableService(httpPayloads));\r\n yield put(\r\n actions.createRenewStock_Success({\r\n hasErrors: false,\r\n }),\r\n );\r\n } else {\r\n try {\r\n const result = yield call(api.insertOtherService, httpPayloads);\r\n let response = result as OfflineServicesResponse;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: `RenewStockInsertError_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `RenewStockInsertSuccess_${uuid()}`,\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: true,\r\n itemName: i18next.t(translations.RenewStock),\r\n detailsType: RenderPageType.RenewStock,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n initialService: response.data,\r\n } as RenewStockProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: `RenewStockInsertWarning_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (!action.payload.preventRefreshTable) {\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n yield put(\r\n actions.createRenewStock_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n if (action.payload.saveCreatable) {\r\n yield put(actions.getCreatableService(response.data ?? undefined));\r\n }\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `RenewStockInsert_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createRenewStock_Error(Error));\r\n }\r\n }\r\n}\r\nfunction* doUpdateRenewStock(\r\n action: PayloadAction<{\r\n current: RenewStockState;\r\n original: RenewStockState;\r\n editCreatable: boolean;\r\n autoGenerateBatch?: boolean;\r\n }>,\r\n) {\r\n let updatedService = ConvertModelToUpdateRenewStockEntity(\r\n action.payload.current,\r\n action.payload.original,\r\n action.payload.autoGenerateBatch,\r\n );\r\n if (action.payload.editCreatable) {\r\n yield put(actions.setEditCreatableService(updatedService));\r\n yield put(\r\n actions.updateRenewStock_Success({\r\n hasErrors: false,\r\n }),\r\n );\r\n } else {\r\n try {\r\n const results = yield call(\r\n api.updateOtherService,\r\n updatedService,\r\n action.payload.current.Id,\r\n );\r\n let response = results as OfflineServicesResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: `serviceUpdateErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceUpdateSuccess_${uuid()}`,\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.RenewStock),\r\n detailsType: RenderPageType.RenewStock,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n initialService: response.data,\r\n } as RenewStockProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `serviceUpdateWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateRenewStock_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceUpdateErr_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateRenewStock_Error(Error));\r\n }\r\n }\r\n}\r\nfunction* doInitInventoryBatch(\r\n action: PayloadAction<{\r\n query: InventoryBatchParams;\r\n batch?: IInventoryBatchDto;\r\n }>,\r\n) {\r\n try {\r\n let data: IInventoryBatchDto | null = action.payload.batch || null;\r\n let hasError: boolean = false;\r\n const newDate = yield select(state => selectOffsetDate(state, new Date()));\r\n let serviceType: IOfflineServiceFilterDto | null = null;\r\n if (data === null) {\r\n const result = yield call(api.initInventoryBatch, action.payload.query);\r\n let response = result as InventoryBatchResponse;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: `initBatchErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `initBatchWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: `initBatchSucc_${uuid()}`,\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n data =\r\n response.data ??\r\n getDefaultBatch(\r\n dateUtils.formatISO(dateUtils.dateOrStringToDate(newDate)),\r\n );\r\n hasError = !response.IsValid;\r\n serviceType = response.serviceType as IOfflineServiceFilterDto;\r\n }\r\n if (serviceType === null && data.OfflineServiceTypeId > 0) {\r\n serviceType = yield call(api.getServiceType, data.OfflineServiceTypeId);\r\n }\r\n yield put(\r\n actions.initInventoryBatch_Success({\r\n hasErrors: hasError,\r\n data: data,\r\n isEdit: (tryParseInt(action.payload.query.id) ?? 0) > 0,\r\n serviceType: serviceType,\r\n newDate: dateUtils.formatISO(dateUtils.dateOrStringToDate(newDate)),\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n yield put(actions.initInventoryBatch_Error(error));\r\n }\r\n}\r\nfunction* doCreateInventoryBatch(\r\n action: PayloadAction<{\r\n model: InventoryBatchState;\r\n saveCreatable?: boolean;\r\n preventRefreshTable?: boolean;\r\n }>,\r\n) {\r\n const httpPayloads: IInventoryBatchDto = ConvertInventoryBatchToEntity(\r\n action.payload.model,\r\n );\r\n\r\n try {\r\n const result = yield call(api.insertInventoryBatch, httpPayloads);\r\n let response = result as InventoryBatchResponse;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: `batchInsertError_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `batchInsertSuccess_${uuid()}`,\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: true,\r\n itemName: i18next.t(translations.InventoryBatch),\r\n detailsType: RenderPageType.InventoryBatch,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n initialBatch: response.data,\r\n } as InventoryBatchProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: `batchInsertWarning_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n if (action.payload.saveCreatable === true) {\r\n yield put(actions.setInventoryBatchEditable(response.data ?? undefined));\r\n } else {\r\n if (!action.payload.preventRefreshTable) {\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n }\r\n yield put(\r\n actions.createInventoryBatch_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `batchInsert_err_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createInventoryBatch_Error(Error));\r\n }\r\n}\r\nfunction* doUpdateInventoryBatch(\r\n action: PayloadAction<{\r\n current: InventoryBatchState;\r\n original: InventoryBatchState;\r\n saveCreatable?: boolean;\r\n preventRefreshTable?: boolean;\r\n }>,\r\n) {\r\n let updatedService = ConvertInventoryBatchToEntity(action.payload.current);\r\n\r\n try {\r\n const results = yield call(\r\n api.updateInventoryBatch,\r\n updatedService,\r\n action.payload.current.Id,\r\n );\r\n let response = results as InventoryBatchResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: `batchUpdateErr_${uuid()}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `batchUpdateSuccess_${uuid()}`,\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.InventoryBatch),\r\n detailsType: RenderPageType.InventoryBatch,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n initialBatch: response.data,\r\n } as InventoryBatchProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: `batchUpdateWarn_${uuid()}`,\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n //yield put(layoutActions.setRefreshTable(true));\r\n }\r\n if (action.payload.saveCreatable === true) {\r\n yield put(actions.setInventoryBatchEditable(response.data ?? undefined));\r\n } else {\r\n if (!action.payload.preventRefreshTable) {\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateInventoryBatch_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `serviceUpdateErr_${uuid()}`,\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateInventoryBatch_Error(Error));\r\n }\r\n}\r\nfunction* doSetRenewStockValue(\r\n action: PayloadAction<{\r\n fieldKey: keyof RenewStockState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setRenewStockValueSuccess(action.payload));\r\n}\r\nfunction* doSetInventoryBatchValue(\r\n action: PayloadAction<{\r\n fieldKey: keyof InventoryBatchState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setInventoryBatchValueSuccess(action.payload));\r\n}\r\nexport function* offlineServiceStateSaga() {\r\n yield takeLatest(actions.initDetails.type, doInitDetails);\r\n yield takeLatest(actions.createService.type, doCreate);\r\n yield takeLatest(actions.updateService.type, doUpdate);\r\n yield takeLatest(actions.setAnyValue.type, doSetAnyValue);\r\n yield takeLatest(actions.setConsumableValue.type, doSetConsumableValue);\r\n yield takeLatest(actions.createConsumables.type, doCreateConsumables);\r\n yield takeLatest(actions.getCredit.type, doGetCredit);\r\n yield takeLatest(actions.getTotalCredit.type, doGetTotalCredit);\r\n yield takeLatest(\r\n actions.initServiceChangeStateData.type,\r\n doInitServiceChangeStateData,\r\n );\r\n yield takeLatest(actions.initConsumables.type, doInitConsumables);\r\n yield takeLatest(actions.setStockRenewalValue.type, doSetRenewalValue);\r\n yield takeLatest(actions.setRenewStockValue.type, doSetRenewStockValue);\r\n yield takeLatest(\r\n actions.setInventoryBatchValue.type,\r\n doSetInventoryBatchValue,\r\n );\r\n yield takeLatest(actions.initStockRenewal.type, doInitStockRenewal);\r\n yield takeLatest(actions.createStockRenewals.type, doCreateStockRenewals);\r\n yield takeLatest(actions.initRenewStock.type, doInitRenewStock);\r\n yield takeLatest(actions.createRenewStock.type, doCreateRenewStock);\r\n yield takeLatest(actions.updateRenewStock.type, doUpdateRenewStock);\r\n yield takeLatest(actions.initInventoryBatch.type, doInitInventoryBatch);\r\n yield takeLatest(actions.createInventoryBatch.type, doCreateInventoryBatch);\r\n yield takeLatest(actions.updateInventoryBatch.type, doUpdateInventoryBatch);\r\n yield takeLatest(BARCODE_SCANNED, doBarcodeScan);\r\n yield takeLatest(actions.setBarcodeScanned.type, doSetIsBarcodeScanned);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { PricingState } from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport {\r\n ConnectedFiltersInit,\r\n IConnectedFiltersDto,\r\n} from 'types/IConnectedFiltersDto';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { offlineServiceStateSaga } from './saga';\r\nimport {\r\n ConvertConsumablesToRenewalModel,\r\n ConvertConsumablesToModel,\r\n ConvertDtoToConnectedModel,\r\n ConvertDtoToModel,\r\n OfflineServiceQueryStringParameters,\r\n OfflineServiceState,\r\n OfflineServiceTypeChangeResult,\r\n OtherServiceDetailsState,\r\n ReportConsumablesState,\r\n ServiceChangeStateParameters,\r\n StockRenewalState,\r\n StockRenewalParams,\r\n RenewStockState,\r\n RenewStockParams,\r\n ConvertRenewStockToModel,\r\n InventoryBatchState,\r\n InventoryBatchParams,\r\n ConvertInventoryBatchToModel,\r\n ReportedFrom,\r\n ConsumableMilestoneData,\r\n} from './types';\r\n\r\nexport const initialState: OfflineServiceState = {\r\n detailsState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n },\r\n processing: false,\r\n consumablesProcessing: undefined,\r\n valueHandler: undefined,\r\n connectedDataState: ConnectedFiltersInit(),\r\n serviceChangeResultState: undefined,\r\n creditState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n },\r\n hasCharges: undefined,\r\n savedReservationService: undefined,\r\n consumablesState: {\r\n data: {\r\n Services: [],\r\n },\r\n completed: undefined,\r\n dataLength: undefined,\r\n error: undefined,\r\n hasErrors: undefined,\r\n processing: undefined,\r\n },\r\n consumablesValueHandler: undefined,\r\n selectedServiceTypes: [],\r\n editCreatableService: undefined,\r\n barcodeScanned: undefined,\r\n refeshOfflineServices: undefined,\r\n stockRenewalState: {\r\n data: undefined,\r\n completed: undefined,\r\n dataLength: undefined,\r\n error: undefined,\r\n hasErrors: undefined,\r\n processing: undefined,\r\n },\r\n stockRenewalValueHandler: undefined,\r\n renewStockState: {\r\n data: undefined,\r\n completed: undefined,\r\n dataLength: undefined,\r\n error: undefined,\r\n hasErrors: undefined,\r\n processing: undefined,\r\n },\r\n renewStockValueHandler: undefined,\r\n inventoryBatchState: {\r\n data: undefined,\r\n completed: undefined,\r\n dataLength: undefined,\r\n error: undefined,\r\n hasErrors: undefined,\r\n processing: undefined,\r\n },\r\n inventoryBatchValueHandler: undefined,\r\n isEdit: undefined,\r\n batchIsEdit: undefined,\r\n inventoryBatchEditable: undefined,\r\n getCreatableService: undefined,\r\n chargableServices: [],\r\n};\r\nconst slice = createSlice({\r\n name: 'offlineServiceState',\r\n initialState,\r\n reducers: {\r\n initDetails(\r\n state,\r\n action: PayloadAction<{\r\n query: OfflineServiceQueryStringParameters;\r\n globalSettings: GlobalSettingsType;\r\n service?: IOtherServices;\r\n editCreatable?: boolean;\r\n }>,\r\n ) {\r\n state.processing = true;\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.valueHandler = undefined;\r\n if (!action.payload.editCreatable) {\r\n state.connectedDataState = ConnectedFiltersInit();\r\n }\r\n state.serviceChangeResultState = undefined;\r\n },\r\n initDetails_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n hasCharges: boolean;\r\n data: IOtherServices;\r\n isEdit: boolean;\r\n serviceType: IOfflineServiceFilterDto | null;\r\n }>,\r\n ) {\r\n state.processing = false;\r\n state.detailsState.data = ConvertDtoToModel(\r\n action.payload.data,\r\n action.payload.serviceType,\r\n );\r\n state.connectedDataState = ConvertDtoToConnectedModel(\r\n action.payload.data,\r\n );\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.hasCharges = action.payload.hasCharges;\r\n state.isEdit = action.payload.isEdit;\r\n },\r\n initDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n resetDetailsState(state, action: PayloadAction) {\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.processing = false;\r\n state.valueHandler = undefined;\r\n if (action.payload !== true) {\r\n state.connectedDataState = ConnectedFiltersInit();\r\n state.serviceChangeResultState = undefined;\r\n }\r\n state.isEdit = undefined;\r\n },\r\n createService(\r\n state,\r\n action: PayloadAction<{\r\n model: OtherServiceDetailsState;\r\n saveCreatable?: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n createService_Success(\r\n state,\r\n action: PayloadAction<{ hasErrors: boolean }>,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n },\r\n createService_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n updateService(\r\n state,\r\n action: PayloadAction<{\r\n current: OtherServiceDetailsState;\r\n original: OtherServiceDetailsState;\r\n saveCreatable?: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n updateService_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n },\r\n updateService_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n setAnyValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof OtherServiceDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setAnyValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof OtherServiceDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.valueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetValueHandler(state, action: PayloadAction) {\r\n state.valueHandler = undefined;\r\n },\r\n initServiceChangeStateData(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.serviceChangeStateLoading = true;\r\n },\r\n initServiceChangeStateData_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.serviceChangeResultState = action.payload;\r\n state.serviceChangeStateLoading = false;\r\n },\r\n initServiceChangeStateData_Error(state, action: PayloadAction) {\r\n state.serviceChangeResultState = undefined;\r\n state.serviceChangeStateLoading = false;\r\n },\r\n resetServiceChangeState(state, action: PayloadAction) {\r\n state.serviceChangeResultState = undefined;\r\n state.serviceChangeStateLoading = undefined;\r\n },\r\n getCredit(state, action: PayloadAction) {\r\n state.creditState.processing = true;\r\n state.creditState.completed = undefined;\r\n state.creditState.hasErrors = undefined;\r\n },\r\n getCredit_Success(state, action: PayloadAction) {\r\n state.creditState.processing = false;\r\n state.creditState.completed = true;\r\n state.creditState.data = action.payload;\r\n },\r\n getCredit_Error(state, action: PayloadAction) {\r\n state.creditState.processing = false;\r\n state.creditState.completed = true;\r\n state.creditState.data = undefined;\r\n },\r\n resetCreditState(state, action: PayloadAction) {\r\n state.creditState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n getTotalCredit(state, action: PayloadAction) {\r\n state.creditState.processing = true;\r\n state.creditState.completed = undefined;\r\n state.creditState.hasErrors = undefined;\r\n },\r\n getTotalCredit_Success(state, action: PayloadAction) {\r\n state.creditState.processing = false;\r\n state.creditState.completed = true;\r\n state.creditState.data = action.payload;\r\n },\r\n getTotalCredit_Error(state, action: PayloadAction) {\r\n state.creditState.processing = false;\r\n state.creditState.completed = true;\r\n state.creditState.data = undefined;\r\n },\r\n resetTotalCreditState(state, action: PayloadAction) {\r\n state.creditState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n setReservationService(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.savedReservationService = action.payload;\r\n },\r\n setConsumableValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof ReportConsumablesState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setConsumableValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof ReportConsumablesState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.consumablesValueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetConsumableValueHandler(state, action: PayloadAction) {\r\n state.consumablesValueHandler = undefined;\r\n },\r\n initConsumables(\r\n state,\r\n action: PayloadAction<{\r\n query: OfflineServiceQueryStringParameters;\r\n globalSettings: GlobalSettingsType;\r\n services?: IOtherServices[];\r\n reportFrom?: ReportedFrom;\r\n }>,\r\n ) {\r\n state.consumablesProcessing = true;\r\n state.consumablesState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.consumablesValueHandler = undefined;\r\n },\r\n initConsumables_Success(\r\n state,\r\n action: PayloadAction<{\r\n data: IOtherServices[];\r\n connectedData: IConnectedFiltersDto;\r\n }>,\r\n ) {\r\n state.consumablesProcessing = false;\r\n state.consumablesState.data = ConvertConsumablesToModel(\r\n action.payload.data,\r\n );\r\n state.connectedDataState = action.payload.connectedData;\r\n if (\r\n action.payload.data.some(\r\n f => f.ChargeId !== null && f.ChargeId !== undefined,\r\n )\r\n ) {\r\n state.chargableServices = action.payload.data.filter(\r\n f => f.ChargeId !== null && f.ChargeId !== undefined,\r\n );\r\n }\r\n },\r\n initConsumables_Error(state, action: PayloadAction) {\r\n state.consumablesProcessing = false;\r\n },\r\n updateChargableServices(state, action: PayloadAction) {\r\n state.chargableServices = action.payload;\r\n },\r\n extendConsumablesData(state, action: PayloadAction) {\r\n state.consumablesState.data = { Services: action.payload };\r\n },\r\n createConsumables(\r\n state,\r\n action: PayloadAction<{\r\n Services: IOtherServices[];\r\n DiscountFactor?: number | null;\r\n Remarks?: string | null;\r\n reportFrom?: ReportedFrom;\r\n milestoneData?: ConsumableMilestoneData;\r\n }>,\r\n ) {\r\n state.consumablesState.processing = true;\r\n state.consumablesState.completed = undefined;\r\n state.consumablesState.hasErrors = undefined;\r\n },\r\n createConsumables_Success(\r\n state,\r\n action: PayloadAction<{ hasErrors: boolean }>,\r\n ) {\r\n state.consumablesState.processing = false;\r\n state.consumablesState.hasErrors = action.payload.hasErrors;\r\n state.consumablesState.completed = true;\r\n },\r\n createConsumables_Error(state, action: PayloadAction) {\r\n state.consumablesState.processing = false;\r\n state.consumablesState.completed = true;\r\n state.consumablesState.hasErrors = true;\r\n },\r\n resetConsumablesState(state, action: PayloadAction) {\r\n state.consumablesState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n dataLength: undefined,\r\n };\r\n state.consumablesProcessing = false;\r\n state.consumablesValueHandler = undefined;\r\n state.connectedDataState = ConnectedFiltersInit();\r\n state.serviceChangeResultState = undefined;\r\n state.selectedServiceTypes = [];\r\n state.barcodeScanned = undefined;\r\n state.refeshOfflineServices = undefined;\r\n state.chargableServices = [];\r\n },\r\n resetSelectedServiceType(state, action: PayloadAction) {\r\n state.selectedServiceTypes = [];\r\n },\r\n setSelectedServiceType(state, action: PayloadAction>) {\r\n state.selectedServiceTypes = action.payload;\r\n },\r\n setEditCreatableService(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.editCreatableService = action.payload;\r\n },\r\n getCreatableService(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.getCreatableService = action.payload;\r\n },\r\n setBarcodeScanned(state, action: PayloadAction) {},\r\n setBarcodeScanned_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.barcodeScanned = action.payload;\r\n },\r\n setRefreshConsumableOfflineServices(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.refeshOfflineServices = action.payload;\r\n },\r\n\r\n setStockRenewalValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof StockRenewalState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setStockRenewalValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof StockRenewalState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.stockRenewalValueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetStockRenewalValueHandler(state, action: PayloadAction) {\r\n state.stockRenewalValueHandler = undefined;\r\n },\r\n initStockRenewal(\r\n state,\r\n action: PayloadAction<{\r\n query: StockRenewalParams;\r\n services?: IOtherServices[];\r\n }>,\r\n ) {\r\n state.stockRenewalState = {\r\n data: undefined,\r\n processing: true,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.stockRenewalValueHandler = undefined;\r\n },\r\n initStockRenewal_Success(\r\n state,\r\n action: PayloadAction<{\r\n data: IOtherServices[];\r\n date: Date | string;\r\n }>,\r\n ) {\r\n state.stockRenewalState.processing = false;\r\n state.stockRenewalState.data = ConvertConsumablesToRenewalModel(\r\n action.payload.data,\r\n action.payload.date,\r\n );\r\n },\r\n initStockRenewal_Error(state, action: PayloadAction) {\r\n state.stockRenewalState.processing = false;\r\n },\r\n createStockRenewals(state, action: PayloadAction) {\r\n state.stockRenewalState.processing = true;\r\n state.stockRenewalState.completed = undefined;\r\n state.stockRenewalState.hasErrors = undefined;\r\n },\r\n createStockRenewals_Success(\r\n state,\r\n action: PayloadAction<{ hasErrors: boolean }>,\r\n ) {\r\n state.stockRenewalState.processing = false;\r\n state.stockRenewalState.hasErrors = action.payload.hasErrors;\r\n state.stockRenewalState.completed = true;\r\n },\r\n createStockRenewals_Error(state, action: PayloadAction) {\r\n state.stockRenewalState.processing = false;\r\n state.stockRenewalState.completed = true;\r\n state.stockRenewalState.hasErrors = true;\r\n },\r\n resetStockRenewalState(state, action: PayloadAction) {\r\n state.stockRenewalState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n dataLength: undefined,\r\n };\r\n state.processing = false;\r\n state.stockRenewalValueHandler = undefined;\r\n state.selectedServiceTypes = [];\r\n state.barcodeScanned = undefined;\r\n state.refeshOfflineServices = undefined;\r\n },\r\n\r\n setRenewStockValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof RenewStockState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setRenewStockValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof RenewStockState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.renewStockValueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetRenewStockValueHandler(state, action: PayloadAction) {\r\n state.renewStockValueHandler = undefined;\r\n },\r\n initRenewStock(\r\n state,\r\n action: PayloadAction<{\r\n query: RenewStockParams;\r\n service?: IOtherServices;\r\n }>,\r\n ) {\r\n state.renewStockState = {\r\n data: undefined,\r\n processing: true,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n };\r\n state.renewStockValueHandler = undefined;\r\n },\r\n initRenewStock_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n data: IOtherServices;\r\n isEdit: boolean;\r\n serviceType: IOfflineServiceFilterDto | null;\r\n }>,\r\n ) {\r\n state.renewStockState.processing = false;\r\n state.renewStockState.data = ConvertRenewStockToModel(\r\n action.payload.data,\r\n action.payload.serviceType,\r\n );\r\n state.isEdit = action.payload.isEdit;\r\n },\r\n initRenewStock_Error(state, action: PayloadAction) {\r\n state.renewStockState.processing = false;\r\n },\r\n createRenewStock(\r\n state,\r\n action: PayloadAction<{\r\n model: RenewStockState;\r\n editCreatable: boolean;\r\n preventRefreshTable?: boolean;\r\n autoGenerateBatch?: boolean;\r\n saveCreatable?: boolean;\r\n }>,\r\n ) {\r\n state.renewStockState.processing = true;\r\n state.renewStockState.completed = undefined;\r\n state.renewStockState.hasErrors = undefined;\r\n },\r\n createRenewStock_Success(\r\n state,\r\n action: PayloadAction<{ hasErrors: boolean }>,\r\n ) {\r\n state.renewStockState.processing = false;\r\n state.renewStockState.hasErrors = action.payload.hasErrors;\r\n state.renewStockState.completed = true;\r\n },\r\n createRenewStock_Error(state, action: PayloadAction) {\r\n state.renewStockState.processing = false;\r\n state.renewStockState.completed = true;\r\n state.renewStockState.hasErrors = true;\r\n },\r\n updateRenewStock(\r\n state,\r\n action: PayloadAction<{\r\n current: OtherServiceDetailsState;\r\n original: OtherServiceDetailsState;\r\n editCreatable: boolean;\r\n autoGenerateBatch?: boolean;\r\n }>,\r\n ) {\r\n state.renewStockState.processing = true;\r\n state.renewStockState.completed = undefined;\r\n state.renewStockState.hasErrors = undefined;\r\n },\r\n updateRenewStock_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.renewStockState.processing = false;\r\n state.renewStockState.hasErrors = action.payload.hasErrors;\r\n state.renewStockState.completed = true;\r\n },\r\n updateRenewStock_Error(state, action: PayloadAction) {\r\n state.renewStockState.processing = false;\r\n state.renewStockState.completed = true;\r\n state.renewStockState.hasErrors = true;\r\n },\r\n resetRenewStockState(state, action: PayloadAction) {\r\n state.renewStockState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n dataLength: undefined,\r\n };\r\n state.processing = false;\r\n state.renewStockValueHandler = undefined;\r\n state.isEdit = undefined;\r\n },\r\n setInventoryBatchValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof InventoryBatchState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setInventoryBatchValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof InventoryBatchState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.inventoryBatchValueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetInventoryBatchValueHandler(state, action: PayloadAction) {\r\n state.inventoryBatchValueHandler = undefined;\r\n },\r\n initInventoryBatch(\r\n state,\r\n action: PayloadAction<{\r\n query: InventoryBatchParams;\r\n batch?: IInventoryBatchDto;\r\n }>,\r\n ) {\r\n state.inventoryBatchState = {\r\n data: undefined,\r\n processing: true,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n };\r\n state.inventoryBatchValueHandler = undefined;\r\n },\r\n initInventoryBatch_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n data: IInventoryBatchDto;\r\n isEdit: boolean;\r\n serviceType: IOfflineServiceFilterDto | null;\r\n newDate: Date | string;\r\n }>,\r\n ) {\r\n state.inventoryBatchState.processing = false;\r\n state.inventoryBatchState.data = ConvertInventoryBatchToModel(\r\n action.payload.data,\r\n action.payload.serviceType,\r\n action.payload.newDate,\r\n );\r\n state.batchIsEdit = action.payload.isEdit;\r\n },\r\n initInventoryBatch_Error(state, action: PayloadAction) {\r\n state.inventoryBatchState.processing = false;\r\n },\r\n createInventoryBatch(\r\n state,\r\n action: PayloadAction<{\r\n model: InventoryBatchState;\r\n saveCreatable?: boolean;\r\n preventRefreshTable?: boolean;\r\n }>,\r\n ) {\r\n state.inventoryBatchState.processing = true;\r\n state.inventoryBatchState.completed = undefined;\r\n state.inventoryBatchState.hasErrors = undefined;\r\n },\r\n createInventoryBatch_Success(\r\n state,\r\n action: PayloadAction<{ hasErrors: boolean }>,\r\n ) {\r\n state.inventoryBatchState.processing = false;\r\n state.inventoryBatchState.hasErrors = action.payload.hasErrors;\r\n state.inventoryBatchState.completed = true;\r\n },\r\n createInventoryBatch_Error(state, action: PayloadAction) {\r\n state.inventoryBatchState.processing = false;\r\n state.inventoryBatchState.completed = true;\r\n state.inventoryBatchState.hasErrors = true;\r\n },\r\n updateInventoryBatch(\r\n state,\r\n action: PayloadAction<{\r\n current: InventoryBatchState;\r\n original: InventoryBatchState;\r\n saveCreatable?: boolean;\r\n preventRefreshTable?: boolean;\r\n }>,\r\n ) {\r\n state.inventoryBatchState.processing = true;\r\n state.inventoryBatchState.completed = undefined;\r\n state.inventoryBatchState.hasErrors = undefined;\r\n },\r\n updateInventoryBatch_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.inventoryBatchState.processing = false;\r\n state.inventoryBatchState.hasErrors = action.payload.hasErrors;\r\n state.inventoryBatchState.completed = true;\r\n },\r\n updateInventoryBatch_Error(state, action: PayloadAction) {\r\n state.inventoryBatchState.processing = false;\r\n state.inventoryBatchState.completed = true;\r\n state.inventoryBatchState.hasErrors = true;\r\n },\r\n resetInventoryBatchState(state, action: PayloadAction) {\r\n state.inventoryBatchState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n dataLength: undefined,\r\n };\r\n state.processing = false;\r\n state.inventoryBatchValueHandler = undefined;\r\n state.batchIsEdit = undefined;\r\n },\r\n setInventoryBatchEditable(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.inventoryBatchEditable = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: offlineServiceStateActions } = slice;\r\n\r\nexport const useOfflineServiceStateSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: offlineServiceStateSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useOfflineServiceStateSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { LoginTypes } from 'app/slice/types';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { intersection } from 'lodash';\r\nimport { enumToArray, enumToDescriptedArray } from 'utils/enumKeys';\r\nimport { Entity } from './common';\r\n\r\nexport interface IAuthenticatedUser extends Entity {\r\n LocaleId?: string | null;\r\n TimeZoneId?: string | null;\r\n Roles: number[];\r\n LoginType: LoginTypes;\r\n UserGroups: Entity[];\r\n ActiveUserGroup?: Entity;\r\n DisplayName?: string;\r\n AdminEquipments?: AuthServiceDto[];\r\n AdminServiceGroups?: AuthServiceGroupDto[];\r\n InstrumentEventsGroups?: AuthServiceGroupDto[];\r\n CreatableGroups?: Entity[];\r\n HasRegisterableServiceGroups?: boolean;\r\n FormatedName?: string;\r\n HasNotifications?: boolean;\r\n HasOptOutCoreSelection: boolean;\r\n CalendarType: number;\r\n RequireUserGroupCoordApproval: boolean;\r\n HasSignedTermsOfUse: boolean;\r\n IsActiveDirectory: boolean;\r\n JoinStatus?: number;\r\n CustomRoleUrls?: CustomRoleData;\r\n}\r\nexport interface AuthServiceDto extends Entity {\r\n Id: number;\r\n Name: string;\r\n ServiceTypeId: number;\r\n ServiceGroupId: number;\r\n IsLabTech: boolean;\r\n}\r\nexport interface AuthServiceGroupDto extends Entity {\r\n Id: number;\r\n Name: string;\r\n IsLabTech: boolean;\r\n}\r\nexport interface IIsAdminOfParams {\r\n ServiceTypeId: ServiceType;\r\n ServiceId: number;\r\n ServiceGroupId: number;\r\n}\r\nexport interface IIsAdminOrOwnerOfParams extends IIsAdminOfParams {\r\n UserId: string | null;\r\n}\r\nexport enum CustomRolePermissionLevel {\r\n AdminWriteLevel = 0,\r\n ReadOnlyLevel = 1,\r\n}\r\nexport type CustomRoleData = {\r\n [key: string]: CustomRolePermissionLevel;\r\n};\r\n\r\nexport enum CustomRoleAllowePages {\r\n Users = '/Users.aspx?module=main',\r\n UsersList = '/Users.aspx?list=',\r\n AddUser = '/NewUser.aspx',\r\n EditUser = '/NewUser.aspx?un=',\r\n UsersHistory = '/UsersHistory',\r\n UsersImport = '/UsersImport.aspx',\r\n UserGroups = '/AllowedAdGroups.aspx',\r\n AddUserGroup = '/AllowedAdGroup.aspx',\r\n EditUserGroup = '/AllowedAdGroup.aspx?ID=',\r\n Departments = '/Departments.aspx',\r\n Institutes = '/Institutes.aspx',\r\n InstituteTypes = '/InstituteTypes.aspx',\r\n AddInsituteType = '/InstituteType.aspx',\r\n EditInstituteType = '/InstituteType.aspx?ID=',\r\n Disciplines = '/Disciplines.aspx',\r\n BillingPreview = '/Invoices/Create.aspx',\r\n InvoiceBatches = '/Invoices/Batches.aspx',\r\n Invoices = '/Invoices/Default.aspx',\r\n InvoiceDetails = '/Invoices/Details.aspx',\r\n InvoicePayments = '/Invoices/InvoicePayments.aspx',\r\n Charges = '/Invoices/InvoiceUserRows.aspx',\r\n SubscriptionTypes = '/Invoices/SubscriptionTypes/Default.aspx',\r\n SubscriptionTypesList = '/Invoices/SubscriptionTypes/Default.aspx?list=',\r\n AddSubscriptionType = '/Invoices/SubscriptionTypes/AddNew.aspx',\r\n EditSubscriptionType = '/Invoices/SubscriptionTypes/Edit.aspx',\r\n Subscriptions = '/Invoices/Subscriptions/Default.aspx',\r\n SubscriptionsList = '/Invoices/Subscriptions/Default.aspx?list=',\r\n AddSubscription = '/Invoices/Subscriptions/Create.aspx',\r\n EditSubscription = '/Invoices/Subscriptions/Edit.aspx',\r\n}\r\nexport class AuthenticatedUser implements IAuthenticatedUser {\r\n // Entity members\r\n Id: string;\r\n Name: string;\r\n // IAuthenticatedUser members\r\n LocaleId?: string;\r\n TimeZoneId?: string;\r\n Roles: number[];\r\n LoginType: LoginTypes;\r\n UserGroups: Entity[];\r\n ActiveUserGroup?: Entity;\r\n DisplayName?: string;\r\n AdminEquipments: AuthServiceDto[];\r\n AdminServiceGroups: AuthServiceGroupDto[];\r\n InstrumentEventsGroups: AuthServiceGroupDto[];\r\n CreatableGroups: Entity[];\r\n HasRegisterableServiceGroups?: boolean;\r\n FormatedName?: string;\r\n HasNotifications?: boolean;\r\n HasOptOutCoreSelection: boolean;\r\n CalendarType: number;\r\n RequireUserGroupCoordApproval: boolean;\r\n HasSignedTermsOfUse: boolean;\r\n IsActiveDirectory: boolean;\r\n JoinStatus?: number;\r\n CustomRoleUrls?: CustomRoleData;\r\n\r\n //constructor\r\n constructor(data: IAuthenticatedUser) {\r\n this.Id = data.Id;\r\n this.Name = data.Name;\r\n this.LocaleId = data.LocaleId ?? undefined;\r\n this.TimeZoneId = data.TimeZoneId ?? undefined;\r\n this.Roles = data.Roles;\r\n this.LoginType = data.LoginType;\r\n this.UserGroups = data.UserGroups;\r\n this.ActiveUserGroup = data.ActiveUserGroup;\r\n this.DisplayName = data.DisplayName;\r\n this.AdminEquipments = data.AdminEquipments ?? [];\r\n this.AdminServiceGroups = data.AdminServiceGroups ?? [];\r\n this.InstrumentEventsGroups = data.InstrumentEventsGroups ?? [];\r\n this.CreatableGroups = data.CreatableGroups ?? [];\r\n this.HasRegisterableServiceGroups = data.HasRegisterableServiceGroups;\r\n this.FormatedName = data.FormatedName;\r\n this.HasNotifications = data.HasNotifications;\r\n this.HasOptOutCoreSelection = data.HasOptOutCoreSelection;\r\n this.CalendarType = data.CalendarType;\r\n this.RequireUserGroupCoordApproval = data.RequireUserGroupCoordApproval;\r\n this.HasSignedTermsOfUse = data.HasSignedTermsOfUse;\r\n this.IsActiveDirectory = data.IsActiveDirectory;\r\n this.JoinStatus = data.JoinStatus;\r\n this.CustomRoleUrls = data.CustomRoleUrls;\r\n }\r\n /**\r\n * Generic permissions check on a partial DTO:\r\n * either it is a user created object\r\n * @param row Dto partial object\r\n * @returns true if current user has permissions\r\n */\r\n public IsAdminOf(row: IIsAdminOfParams) {\r\n return (\r\n this.HasAdminGroupPermissions(row?.ServiceGroupId) ||\r\n this.HasLabTechGroupPermissions(row?.ServiceGroupId) ||\r\n this.HasAdminServicePermissions(row.ServiceTypeId, row.ServiceId) ||\r\n this.HasLabTechServicePermissions(row.ServiceTypeId, row.ServiceId)\r\n );\r\n }\r\n /**\r\n * Determines if current user is an Admin or Owner of an object\r\n * @param row some partial DTO\r\n * @returns\r\n */\r\n public IsAdminOrOwnerOf(row: IIsAdminOrOwnerOfParams) {\r\n const result = this.IsAdminOf(row) || row.UserId === this.Id;\r\n return result;\r\n }\r\n\r\n public HasCustomRolesPermission(\r\n pages: CustomRoleAllowePages[],\r\n level?: CustomRolePermissionLevel,\r\n ): boolean {\r\n if (this.Roles.includes(Roles.CustomRole)) {\r\n if (this.CustomRoleUrls !== undefined) {\r\n let result = false;\r\n let rootedPages = pages.map(\r\n page => process.env.PUBLIC_URL.toLowerCase() + page.toLowerCase(),\r\n );\r\n rootedPages.forEach(page => {\r\n if (\r\n Object.entries(this.CustomRoleUrls ?? {}).some(\r\n item =>\r\n item[0].toLowerCase() === page && (!level || level === item[1]),\r\n )\r\n ) {\r\n result = true;\r\n return;\r\n }\r\n });\r\n return result;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n public HasCustomRolePermission(\r\n page: CustomRoleAllowePages,\r\n level?: CustomRolePermissionLevel,\r\n ): boolean {\r\n if (this.Roles.includes(Roles.CustomRole)) {\r\n if (this.CustomRoleUrls !== undefined) {\r\n let rootedPage =\r\n process.env.PUBLIC_URL.toLowerCase() + page.toLowerCase();\r\n if (\r\n Object.entries(this.CustomRoleUrls ?? {}).some(\r\n item =>\r\n item[0].toLowerCase() === rootedPage &&\r\n (!level || level === item[1]),\r\n )\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n public HasCustomRoleUrlPermission(\r\n url: string,\r\n level?: CustomRolePermissionLevel,\r\n ): boolean {\r\n if (this.Roles.includes(Roles.CustomRole)) {\r\n if (this.CustomRoleUrls !== undefined) {\r\n let rootedPage = url.toLowerCase();\r\n if (\r\n Object.entries(this.CustomRoleUrls ?? {}).some(\r\n item =>\r\n (item[0].toLowerCase() === rootedPage ||\r\n (item[0].toLowerCase().indexOf('?list=') > 0 &&\r\n item[0].toLowerCase().indexOf(rootedPage) >= 0)) &&\r\n (!level || level === item[1]),\r\n )\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n public HasAdminGroupPermissions(serviceGroupId?: number): boolean {\r\n if (serviceGroupId === undefined) {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n if (this.Roles.includes(Roles.Administrators)) {\r\n return true;\r\n }\r\n if (this.Roles.includes(Roles.GroupAdministrators)) {\r\n return this.AdminServiceGroups.some(\r\n f => f.Id === serviceGroupId && f.IsLabTech === false,\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n public isAdmin(): boolean {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n\r\n public isGroupAdmin(): boolean {\r\n return this.isAdmin() || this.Roles.includes(Roles.GroupAdministrators);\r\n }\r\n\r\n public isRepAdmin(): boolean {\r\n return this.isAdmin() || this.Roles.includes(Roles.RepAdmin);\r\n }\r\n\r\n public isLabTech(): boolean {\r\n return this.isAdmin() || this.Roles.includes(Roles.LabTech);\r\n }\r\n public isLoanDesk(): boolean {\r\n return this.Roles.includes(Roles.LoanDeskManager);\r\n }\r\n public isRoomAdmin(): boolean {\r\n return this.Roles.includes(Roles.RoomOnly);\r\n }\r\n public isHeadOfLab(): boolean {\r\n return this.Roles.includes(Roles.HeadOfLab);\r\n }\r\n public isFinAdmin(): boolean {\r\n return this.Roles.includes(Roles.FinAdmin);\r\n }\r\n public isInvoiceAdmin(): boolean {\r\n return this.Roles.includes(Roles.InvoicesReader);\r\n }\r\n public HasAdminServicePermissions(\r\n serviceTypeId: number,\r\n serviceId?: number,\r\n ): boolean {\r\n if (serviceId === undefined) {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n if (this.Roles.includes(Roles.Administrators)) {\r\n return true;\r\n }\r\n if (\r\n this.Roles.includes(Roles.GroupAdministrators) ||\r\n this.Roles.includes(Roles.EquipmentAdministrator)\r\n ) {\r\n return this.AdminEquipments.some(\r\n item =>\r\n item.Id === serviceId &&\r\n item.ServiceTypeId === serviceTypeId &&\r\n item.IsLabTech === false,\r\n );\r\n }\r\n return false;\r\n }\r\n public HasCreateAdminGroupPermissions(serviceGroupId?: number): boolean {\r\n if (serviceGroupId === undefined) {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n if (this.Roles.includes(Roles.Administrators)) {\r\n return true;\r\n }\r\n if (this.Roles.includes(Roles.CreateNewAssetsAdmin)) {\r\n return this.CreatableGroups.map(item => item.Id).includes(serviceGroupId);\r\n }\r\n return false;\r\n }\r\n public HasAdminGroupOnlyPermissions(serviceGroupId?: number): boolean {\r\n if (serviceGroupId === undefined) {\r\n return false;\r\n }\r\n if (this.Roles.includes(Roles.GroupAdministrators)) {\r\n return this.AdminServiceGroups.some(\r\n f => f.Id === serviceGroupId && f.IsLabTech === false,\r\n );\r\n }\r\n return false;\r\n }\r\n public HasAdminServiceOnlyPermissions(\r\n serviceTypeId: number,\r\n serviceId?: number,\r\n ): boolean {\r\n if (serviceId === undefined) {\r\n return false;\r\n }\r\n if (\r\n this.Roles.includes(Roles.GroupAdministrators) ||\r\n this.Roles.includes(Roles.EquipmentAdministrator)\r\n ) {\r\n return this.AdminEquipments.some(\r\n item =>\r\n item.Id === serviceId &&\r\n item.ServiceTypeId === serviceTypeId &&\r\n item.IsLabTech === false,\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n public HasLabTechGroupPermissions(serviceGroupId?: number): boolean {\r\n if (serviceGroupId === undefined) {\r\n return false;\r\n }\r\n if (!this.Roles.includes(Roles.LabTech)) {\r\n return false;\r\n } else {\r\n return this.AdminServiceGroups.some(\r\n f => f.Id === serviceGroupId && f.IsLabTech === true,\r\n );\r\n }\r\n }\r\n public HasLabTechServicePermissions(\r\n serviceTypeId: number,\r\n serviceId?: number,\r\n ): boolean {\r\n if (serviceId === undefined) {\r\n return false;\r\n }\r\n if (!this.Roles.includes(Roles.LabTech)) {\r\n return false;\r\n } else {\r\n return this.AdminEquipments.some(\r\n item =>\r\n item.Id === serviceId &&\r\n item.ServiceTypeId === serviceTypeId &&\r\n item.IsLabTech === true,\r\n );\r\n }\r\n }\r\n public HasInstrumentEventsGroupPermissions(serviceGroupId?: number): boolean {\r\n if (serviceGroupId === undefined) {\r\n return false;\r\n }\r\n if (!this.Roles.includes(Roles.InventoryAdmin)) {\r\n return false;\r\n } else {\r\n return this.InstrumentEventsGroups.some(f => f.Id === serviceGroupId);\r\n }\r\n }\r\n public IsAllAdminGroupPermissions(serviceGroups?: number[]): boolean {\r\n if (serviceGroups === undefined || serviceGroups.length < 1) {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n if (this.Roles.includes(Roles.Administrators)) {\r\n return true;\r\n }\r\n if (this.Roles.includes(Roles.GroupAdministrators)) {\r\n return serviceGroups.every(f =>\r\n this.AdminServiceGroups.some(g => g.Id === f && g.IsLabTech === false),\r\n );\r\n }\r\n return false;\r\n }\r\n public IsAllServicesAdmin(services?: IServiceTypeFilterDto[]): boolean {\r\n if (services === undefined || services.length < 1) {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n if (this.Roles.includes(Roles.Administrators)) {\r\n return true;\r\n }\r\n if (\r\n this.Roles.includes(Roles.GroupAdministrators) ||\r\n this.Roles.includes(Roles.EquipmentAdministrator)\r\n ) {\r\n return services.every(f =>\r\n this.AdminEquipments.some(\r\n s =>\r\n s.Id === f.Id &&\r\n s.ServiceTypeId === f.ServiceTypeId &&\r\n s.IsLabTech === false,\r\n ),\r\n );\r\n }\r\n return false;\r\n }\r\n public HasSomeAdminGroupPermissions(serviceGroups?: number[]): boolean {\r\n if (serviceGroups === undefined || serviceGroups.length < 1) {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n if (this.Roles.includes(Roles.Administrators)) {\r\n return true;\r\n }\r\n if (this.Roles.includes(Roles.GroupAdministrators)) {\r\n return serviceGroups.some(f =>\r\n this.AdminServiceGroups.some(g => g.Id === f && g.IsLabTech === false),\r\n );\r\n }\r\n return false;\r\n }\r\n public HasSomeAdminServicesPermissions(\r\n services?: IServiceTypeFilterDto[],\r\n ): boolean {\r\n if (services === undefined || services.length < 1) {\r\n return this.Roles.includes(Roles.Administrators);\r\n }\r\n if (this.Roles.includes(Roles.Administrators)) {\r\n return true;\r\n }\r\n if (\r\n this.Roles.includes(Roles.GroupAdministrators) ||\r\n this.Roles.includes(Roles.EquipmentAdministrator)\r\n ) {\r\n return services.some(f =>\r\n this.AdminEquipments.some(\r\n s =>\r\n s.Id === f.Id &&\r\n s.ServiceTypeId === f.ServiceTypeId &&\r\n s.IsLabTech === false,\r\n ),\r\n );\r\n }\r\n return false;\r\n }\r\n public HasSomeLabTechGroupPermissions(serviceGroups?: number[]): boolean {\r\n if (serviceGroups === undefined || serviceGroups.length < 1) {\r\n return false;\r\n }\r\n if (this.Roles.includes(Roles.LabTech)) {\r\n return serviceGroups.some(f =>\r\n this.AdminServiceGroups.some(g => g.Id === f && g.IsLabTech === true),\r\n );\r\n }\r\n return false;\r\n }\r\n public HasSomeLabTechServicesPermissions(\r\n services?: IServiceTypeFilterDto[],\r\n ): boolean {\r\n if (services === undefined || services.length < 1) {\r\n return false;\r\n }\r\n if (this.Roles.includes(Roles.LabTech)) {\r\n return services.some(f =>\r\n this.AdminEquipments.some(\r\n s =>\r\n s.Id === f.Id &&\r\n s.ServiceTypeId === f.ServiceTypeId &&\r\n s.IsLabTech === true,\r\n ),\r\n );\r\n }\r\n return false;\r\n }\r\n public IsAllLabTechGroupPermissions(serviceGroups?: number[]): boolean {\r\n if (serviceGroups === undefined || serviceGroups.length < 1) {\r\n return false;\r\n }\r\n if (this.Roles.includes(Roles.LabTech)) {\r\n return serviceGroups.every(f =>\r\n this.AdminServiceGroups.some(g => g.Id === f && g.IsLabTech === true),\r\n );\r\n }\r\n return false;\r\n }\r\n public IsAllServicesLabTech(services?: IServiceTypeFilterDto[]): boolean {\r\n if (services === undefined || services.length < 1) {\r\n return false;\r\n }\r\n if (this.Roles.includes(Roles.LabTech)) {\r\n return services.every(f =>\r\n this.AdminEquipments.some(\r\n s =>\r\n s.Id === f.Id &&\r\n s.ServiceTypeId === f.ServiceTypeId &&\r\n s.IsLabTech === true,\r\n ),\r\n );\r\n }\r\n return false;\r\n }\r\n public IsAllGroupOrLabTechAdmin(\r\n serviceGroups?: number[],\r\n services?: IServiceTypeFilterDto[],\r\n ): boolean {\r\n return (\r\n this.IsAllAdminGroupPermissions(serviceGroups) ||\r\n this.IsAllServicesAdmin(services) ||\r\n this.IsAllLabTechGroupPermissions(serviceGroups) ||\r\n this.IsAllServicesLabTech(services)\r\n );\r\n }\r\n public IsAllInstrumentEventsGroupPermissions(\r\n serviceGroups?: number[],\r\n ): boolean {\r\n if (serviceGroups === undefined || serviceGroups.length < 1) {\r\n return false;\r\n }\r\n\r\n if (this.Roles.includes(Roles.InventoryAdmin)) {\r\n return serviceGroups.every(f =>\r\n this.InstrumentEventsGroups.some(g => g.Id === f),\r\n );\r\n }\r\n return false;\r\n }\r\n public HasAdminRoles(): boolean {\r\n return (\r\n this.Roles.includes(Roles.GroupAdministrators) ||\r\n this.Roles.includes(Roles.EquipmentAdministrator) ||\r\n this.Roles.includes(Roles.LabTech) ||\r\n this.Roles.includes(Roles.Administrators)\r\n );\r\n }\r\n public IsReadOnlyUser(): boolean {\r\n return (\r\n this.Roles.includes(Roles.Readonly) ||\r\n this.Roles.includes(Roles.CalendarOnly)\r\n );\r\n }\r\n public IsKioskAdminUser(): boolean {\r\n return this.Roles.includes(Roles.KioskAdmin);\r\n }\r\n}\r\n\r\nexport function isInRole(\r\n user: IAuthenticatedUser | undefined,\r\n role: string | Roles,\r\n): boolean {\r\n if (user && user.Roles.length > 0) {\r\n let baseRoles = enumToArray(Roles);\r\n let odjRoles = enumToDescriptedArray(Roles);\r\n if (intersection(user.Roles, baseRoles).length > 0) {\r\n if (typeof role === 'string') {\r\n return (\r\n odjRoles.filter(\r\n item =>\r\n item.description.toLowerCase() === (role as string).toLowerCase(),\r\n ).length > 0\r\n );\r\n } else {\r\n return user.Roles.includes(role as Roles);\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n// export function isServiseGroupAdmin(\r\n// user: IAuthenticatedUser | undefined,\r\n// ServiceGroups: Identifiable[] | undefined,\r\n// ): boolean {\r\n// if (\r\n// user &&\r\n// ServiceGroups &&\r\n// ServiceGroups.length > 0 &&\r\n// user.Roles.indexOf(Roles.GroupAdministrators) >= 0\r\n// ) {\r\n// const sg = user.AdminServiceGroups;\r\n// if (sg) {\r\n// for (var i = 0; i < sg.length; i++) {\r\n// const Id = sg[i].Id;\r\n// if (ServiceGroups.some(item => item.Id === Id)) {\r\n// return true;\r\n// }\r\n// }\r\n// return false;\r\n// } else {\r\n// return false;\r\n// }\r\n// } else {\r\n// return false;\r\n// }\r\n// }\r\n// export function isAllServiseGroupAdmin(\r\n// user: IAuthenticatedUser | undefined,\r\n// ServiceGroups: Entity[] | undefined,\r\n// ): boolean {\r\n// if (\r\n// user &&\r\n// ServiceGroups &&\r\n// ServiceGroups.length > 0 &&\r\n// user.Roles.indexOf(Roles.GroupAdministrators) >= 0\r\n// ) {\r\n// const sg = user.AdminServiceGroups;\r\n// if (sg) {\r\n// if (ServiceGroups.every(item => sg.some(g => g.Id === item.Id))) {\r\n// return true;\r\n// }\r\n// return false;\r\n// } else {\r\n// return false;\r\n// }\r\n// } else {\r\n// return false;\r\n// }\r\n// }\r\n// export function isServiceGroupOrLabTechAdmin(\r\n// user: IAuthenticatedUser | undefined,\r\n// Services: number[] | undefined,\r\n// ServiceGroups: number[] | undefined,\r\n// ): boolean {\r\n// let result = false;\r\n// if (user !== undefined) {\r\n// if (\r\n// ServiceGroups !== undefined &&\r\n// user.Roles.includes(Roles.GroupAdministrators)\r\n// ) {\r\n// const sg = user.AdminServiceGroups;\r\n// if (\r\n// sg !== undefined &&\r\n// ServiceGroups.every(item => sg.some(g => g.Id === item))\r\n// ) {\r\n// result = true;\r\n// }\r\n// } else if (user.Roles.includes(Roles.LabTech)) {\r\n// const sg = user.AdminServiceGroups;\r\n// const eqs = user.AdminEquipments;\r\n// let isLabAdmin = false;\r\n// let isEqAdmin = false;\r\n// if (ServiceGroups !== undefined) {\r\n// if (\r\n// sg !== undefined &&\r\n// ServiceGroups.every(item => sg.some(g => g.Id === item))\r\n// ) {\r\n// isLabAdmin = true;\r\n// }\r\n// }\r\n// if (Services !== undefined) {\r\n// if (\r\n// eqs !== undefined &&\r\n// Services.every(item => eqs.some(eq => eq === item))\r\n// ) {\r\n// isEqAdmin = true;\r\n// }\r\n// }\r\n// result = isLabAdmin || isEqAdmin;\r\n// } else if (user.Roles.includes(Roles.EquipmentAdministrator)) {\r\n// if (Services !== undefined) {\r\n// const eqs = user.AdminEquipments;\r\n// if (\r\n// eqs !== undefined &&\r\n// Services.every(item => eqs.some(eq => eq === item))\r\n// ) {\r\n// result = true;\r\n// }\r\n// }\r\n// }\r\n// }\r\n// return result;\r\n// }\r\n// export function isOnlineServicesAdmin(\r\n// user: IAuthenticatedUser | undefined,\r\n// Services: Entity[] | undefined,\r\n// ): boolean {\r\n// if (\r\n// user &&\r\n// Services &&\r\n// Services.length > 0 &&\r\n// (user.Roles.indexOf(Roles.Administrators) >= 0 ||\r\n// user.Roles.indexOf(Roles.GroupAdministrators) >= 0 ||\r\n// user.Roles.indexOf(Roles.LabTech) >= 0 ||\r\n// user.Roles.indexOf(Roles.EquipmentAdministrator) >= 0)\r\n// ) {\r\n// const eqs: IServiceTypeFilterDto[] | undefined = user.AllAdminEquipments;\r\n// if (!!eqs && eqs.length > 0) {\r\n// let result = eqs\r\n// .filter(f => f.ServiceTypeId === 1)\r\n// .filter(f => Services.some(item => item.Id === f.Id));\r\n// return result.length > 0;\r\n// } else {\r\n// return false;\r\n// }\r\n// } else {\r\n// return false;\r\n// }\r\n// }\r\n// export function isServiceAdmin(\r\n// user: IAuthenticatedUser | undefined,\r\n// Service: number | undefined,\r\n// ServiceTypeId: ServiceType,\r\n// ): boolean {\r\n// if (\r\n// user &&\r\n// Service &&\r\n// (user.Roles.indexOf(Roles.Administrators) >= 0 ||\r\n// user.Roles.indexOf(Roles.GroupAdministrators) >= 0 ||\r\n// user.Roles.indexOf(Roles.LabTech) >= 0 ||\r\n// user.Roles.indexOf(Roles.EquipmentAdministrator) >= 0)\r\n// ) {\r\n// if (\r\n// user.AllAdminEquipments?.some(\r\n// item => item.Id === Service && item.ServiceTypeId === ServiceTypeId,\r\n// )\r\n// ) {\r\n// return true;\r\n// }\r\n// return false;\r\n// } else {\r\n// return false;\r\n// }\r\n// }\r\n// export function isAllServiceAdmin(\r\n// user: IAuthenticatedUser | undefined,\r\n// Services: IServiceTypeFilterDto[],\r\n// ): boolean {\r\n// if (\r\n// user &&\r\n// Services.length > 0 &&\r\n// (user.Roles.indexOf(Roles.Administrators) >= 0 ||\r\n// user.Roles.indexOf(Roles.GroupAdministrators) >= 0 ||\r\n// user.Roles.indexOf(Roles.LabTech) >= 0 ||\r\n// user.Roles.indexOf(Roles.EquipmentAdministrator) >= 0)\r\n// ) {\r\n// if (\r\n// user.AllAdminEquipments?.some(item =>\r\n// Services.some(\r\n// f => f.Id === item.Id && f.ServiceTypeId === item.ServiceTypeId,\r\n// ),\r\n// )\r\n// ) {\r\n// return true;\r\n// }\r\n// return false;\r\n// } else {\r\n// return false;\r\n// }\r\n// }\r\n","import * as React from 'react';\r\nimport { StandardInput } from '../BaseInputs/StandardInput';\r\nimport clsx from 'clsx';\r\nimport {\r\n FormControl,\r\n FormHelperText,\r\n InputLabel,\r\n Select,\r\n} from '@material-ui/core';\r\nimport { BaseFieldProps } from './BaseFieldDefinition';\r\nimport FilledInput from '../BaseInputs/FilledInput';\r\nimport { capitalize } from 'lodash';\r\n\r\nconst variantComponent = {\r\n standard: StandardInput,\r\n filled: FilledInput,\r\n outlined: StandardInput,\r\n};\r\nexport const BaseTextField = React.forwardRef<\r\n any,\r\n BaseFieldProps & { disableUnderline?: boolean }\r\n>(function (props, ref) {\r\n const {\r\n autoComplete,\r\n autoFocus = false,\r\n children,\r\n classes,\r\n className,\r\n color = 'primary',\r\n defaultValue,\r\n disabled = false,\r\n error = false,\r\n FormHelperTextProps,\r\n fullWidth = false,\r\n helperText,\r\n hiddenLabel,\r\n id,\r\n InputLabelProps,\r\n inputProps,\r\n InputProps,\r\n inputRef,\r\n focused,\r\n label,\r\n multiline = false,\r\n name,\r\n onBlur,\r\n onChange,\r\n onFocus,\r\n placeholder,\r\n required = false,\r\n rows,\r\n rowsMax,\r\n rowsMin,\r\n select = false,\r\n SelectProps,\r\n type,\r\n value,\r\n variant = 'filled',\r\n info,\r\n size = 'large',\r\n disableUnderline,\r\n ...other\r\n } = props;\r\n\r\n let inputMore: any = {};\r\n if (variant === 'outlined') {\r\n if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\r\n inputMore.notched = InputLabelProps.shrink;\r\n }\r\n if (label) {\r\n const displayRequired = InputLabelProps?.required ?? required;\r\n inputMore.label = (\r\n \r\n {label}\r\n {displayRequired && '\\u00a0*'}\r\n \r\n );\r\n }\r\n }\r\n // if (info) {\r\n // InputProps?.endAdornment = ;\r\n // }\r\n if (select) {\r\n // unset defaults from textbox inputs\r\n if (!SelectProps || !SelectProps.native) {\r\n inputMore.id = undefined;\r\n }\r\n inputMore['aria-describedby'] = undefined;\r\n }\r\n const requiredPlaseholder = placeholder !== undefined && required && !label;\r\n const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\r\n const inputLabelId = label && id ? `${id}-label` : undefined;\r\n const InputComponent = variantComponent[variant];\r\n const sizeClass = `inputSize${capitalize(size ?? 'large')}`;\r\n const InputElement = (\r\n \r\n );\r\n const LabelElement = (\r\n \r\n {label}\r\n \r\n );\r\n return (\r\n \r\n {label && LabelElement}\r\n\r\n {select ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n InputElement\r\n )}\r\n\r\n {helperText && (\r\n \r\n {typeof helperText === 'string'\r\n ? helperText\r\n : JSON.stringify(helperText, null, 2)}\r\n \r\n )}\r\n \r\n );\r\n});\r\nexport default BaseTextField;\r\n//export default function BaseField(props: BaseFieldProps): JSX.Element;\r\n","/**\r\n * Defines what the comment is referencing.\r\n * Keep synchronized with enum in backend when changing.\r\n */\r\nexport enum CommentReferenceTypes {\r\n Alerts = 1,\r\n Invoice = 2,\r\n UserTraining = 3,\r\n Budget = 4,\r\n ServiceRequest = 5,\r\n ServiceRequestTicket = 6,\r\n ServiceRequestRow = 7,\r\n batches = 8,\r\n Article = 9,\r\n Assets = 10,\r\n SampleRun = 11,\r\n UserServiceGroup = 12,\r\n}\r\n","import {\r\n OfflineServiceTypeUrl,\r\n loadOfflineServiceData,\r\n} from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport {\r\n InventoryBatchParams,\r\n InventoryBatchResponse,\r\n OfflineServiceQueryStringParameters,\r\n OfflineServicesResponse,\r\n RenewStockParams,\r\n ServiceChangeStateParameters,\r\n StockRenewalParams,\r\n} from 'app/pages/OtherServiceDetails/Details/slice/types';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\nimport { IInventoryBatchDto } from './odata/generated/entities/IInventoryBatchDto';\r\nimport { quoteODataValue } from './odata/ODataFilter';\r\n\r\nexport const OtherServicesApi = {\r\n initOfflineService: (payload: OfflineServiceQueryStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/OtherServices/InitService`;\r\n return httpClient.post(url, data);\r\n },\r\n insertOtherService: (otherService: IOtherServices) => {\r\n const url = '/api/odata/v4/OtherServices';\r\n return httpClient.post(url, otherService);\r\n },\r\n insertConsumableServices: (otherServices: IOtherServices[]) => {\r\n const url = '/api/odata/v4/OtherServices/CreateConsumables';\r\n const data = {\r\n params: otherServices,\r\n };\r\n return httpClient.post(url, data);\r\n },\r\n insertStockRenewalServices: (otherServices: IOtherServices[]) => {\r\n const url = '/api/odata/v4/OtherServices/CreateStockRenewals';\r\n const data = {\r\n params: otherServices,\r\n };\r\n return httpClient.post(url, data);\r\n },\r\n updateOtherService: (otherService: IOtherServices, rowId: number) => {\r\n const url = '/api/odata/v4/OtherServices';\r\n return httpClient.put(\r\n url + '(' + rowId + ')',\r\n otherService,\r\n );\r\n },\r\n deleteService: (Id: number) => {\r\n const url = `/api/odata/v4/OtherServices/${Id}`;\r\n return httpClient.deleteCustom(url);\r\n },\r\n deleteReservationServices: (payload: {\r\n serviceTypes: number[];\r\n reservationIds: number[];\r\n }): Promise => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/OtherServices/DeleteReservationOtherServices';\r\n return httpClient.post(url, data);\r\n },\r\n calculateCredit: (calculateCreditModel: IOtherServices) => {\r\n const url = '/api/odata/v4/OtherServices/CalculateCredit';\r\n const data = {\r\n params: calculateCreditModel,\r\n };\r\n return httpClient.post(url, data);\r\n },\r\n calculateTotalCredit: (calculateCreditModel: IOtherServices[]) => {\r\n const url = '/api/odata/v4/OtherServices/CalculateTotalCredit';\r\n const data = {\r\n params: calculateCreditModel,\r\n };\r\n return httpClient.post(url, data);\r\n },\r\n getServiceChangeState: (payload: ServiceChangeStateParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/OtherServices/GetServiceChangeState`;\r\n return httpClient.post(url, data);\r\n },\r\n getReservationOfflineServices: (reservationId: number, repeat?: boolean) => {\r\n const url =\r\n repeat === true\r\n ? `/api/odata/v4/OtherServices/ReservationOfflineServicesWithParts(key=${reservationId})`\r\n : `/api/odata/v4/OtherServices/ReservationOfflineServices(key=${reservationId})`;\r\n return httpClient.get(url);\r\n },\r\n getUsageOfflineServices: (usageId: number) => {\r\n const url = `/api/odata/v4/OtherServices/UsageOfflineServices(key=${usageId})`;\r\n return httpClient.get(url);\r\n },\r\n initConsumableServices: (payload: OfflineServiceQueryStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/OtherServices/InitConsumableServices`;\r\n return httpClient.post(url, data);\r\n },\r\n initStockRenewalServices: (payload: StockRenewalParams) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/OtherServices/InitStockRenewalServices`;\r\n return httpClient.post(url, data);\r\n },\r\n initRenewStockService: (payload: RenewStockParams) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/OtherServices/InitRenewStock`;\r\n return httpClient.post(url, data);\r\n },\r\n initInventoryBatch: (payload: InventoryBatchParams) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/InventoryBatches/InitInventoryBatch`;\r\n return httpClient.post(url, data);\r\n },\r\n insertInventoryBatch: (batch: IInventoryBatchDto) => {\r\n const url = '/api/odata/v4/InventoryBatches';\r\n return httpClient.post(url, batch);\r\n },\r\n updateInventoryBatch: (batch: IInventoryBatchDto, rowId: number) => {\r\n const url = '/api/odata/v4/InventoryBatches';\r\n return httpClient.put(url + '(' + rowId + ')', batch);\r\n },\r\n deleteInventoryBatch: (batch: IInventoryBatchDto) => {\r\n const url = `/api/odata/v4/InventoryBatches/${batch.Id}`;\r\n return httpClient.deleteCustom(url);\r\n },\r\n getServiceType: (\r\n payload: number | null,\r\n urlType?: OfflineServiceTypeUrl,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n if (payload === null || payload < 1) {\r\n resolve(null);\r\n } else {\r\n try {\r\n const data = await loadOfflineServiceData(\r\n [`Id eq ${quoteODataValue(payload)}`],\r\n 'publicActiveAndInactiveUrl',\r\n [],\r\n undefined,\r\n 'InventoryBatches',\r\n )(null, undefined);\r\n resolve(data.value[0] || null);\r\n } catch (error) {\r\n resolve(null);\r\n }\r\n }\r\n });\r\n },\r\n};\r\n","import {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectglobalSettings,\r\n selectUserProfileSettings,\r\n} from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { BudgetFields } from 'enums/BudgetFields';\r\nimport { UserReservationsRestricted } from 'enums/enums';\r\nimport { MultipleInstrumentReservations } from 'enums/MultipleInstrumentReservations';\r\nimport { ServiceGroupAdminsManageUsersEnum } from 'enums/ServiceGroupAdminsManageUsersEnum';\r\nimport { intersection } from 'lodash';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { IsBudgetFieldEnabled, IsModuleEnabled } from 'types/AppSettings';\r\nimport { isInRole } from 'types/AuthenticatedUser';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { AllowedSettings } from 'utils/globalSettings/AllowedSettings';\r\nexport interface GlobalSettingsType {\r\n loadCompleted: boolean;\r\n reservationRestricted: boolean;\r\n reservationUserGroupGroupByBudgetUserGroup: boolean;\r\n userGroupReservationRestricted: boolean;\r\n onlyOwnUserGroupsAllowed: boolean;\r\n userDefaultBudgetEnabled: boolean;\r\n defaultBudgetEnabled: boolean;\r\n hideNonDefaultBudgets: boolean;\r\n isBudgetsWithoutUserGroup: boolean;\r\n budgetModuleEnabled: boolean;\r\n priceSheetPricing: boolean;\r\n billingModuleEnabled: boolean;\r\n budgetLimitedByUsers: boolean;\r\n budgetExperimentModuleEnabled: boolean;\r\n fundingTypeBudgetEnabled: boolean;\r\n purchaseOrderBudgetEnabled: boolean;\r\n purchaseOrderLengthSetting: number | undefined;\r\n allowPartialProjectCharges: boolean;\r\n allowPartialSingleProjectCharges: boolean;\r\n trainingSessionEnabled: boolean;\r\n assistedReservationsEnabled: boolean;\r\n resCustomFormEnabled: boolean;\r\n resMultipleFormsEnabled: boolean;\r\n multipleInstrumentsEnabled: boolean;\r\n reservationTerminationEnabled: boolean;\r\n crossInstrumentTrainingEnabled: boolean;\r\n userAndGroupPermissionsEnabled: boolean;\r\n tutoringModulesEnabled: boolean;\r\n tutoringEnabled: boolean;\r\n offlineServiceWithReservation: boolean;\r\n userIsMainAdmin: boolean;\r\n instituteProjectsEnabled: boolean;\r\n projectsAreOptional: boolean;\r\n showReferenceFieldInReservationDetails: boolean;\r\n accServicesEnabled: boolean;\r\n showCalcPriceOnOfflineService: boolean;\r\n allowUsersToViewTheirCharges: boolean;\r\n allowOngoingReservationModificationEnabled: boolean;\r\n showCalculatePrice: boolean;\r\n allowAddRemoveOnEditReservation: boolean;\r\n allowToRemoveFromMultipleReservation: boolean;\r\n draftReservationsEnabled: boolean;\r\n hideReservationCollaborators: boolean;\r\n MandatoryOfflineServicesOnTrainingSignUps: boolean;\r\n DoNotAllowReservationUserChangeByStaff: boolean;\r\n AssemblyPartsEnabled: boolean;\r\n confidentialBudgetsEnabled: boolean;\r\n AllowWorkflowBooking: boolean;\r\n ModifyReservationNameForUsers: boolean;\r\n ShowDefaultUserGroupOnUserProfileEnabled: boolean;\r\n ServiceRequestReservationEnabled: boolean;\r\n LoanDeskEnabled: boolean;\r\n ServiceGroupAdminsCanManageAllUsers: boolean;\r\n ServiceGroupAdminsCanManageAdUsers: boolean;\r\n EnableCoreAffilationManagment: boolean;\r\n UserServiceGroupCommentsEnabled: boolean;\r\n UserLabTechCommentsEnabled: boolean;\r\n DisplayEditUserDetails: boolean;\r\n MultipleAdGroupsEnabled: boolean;\r\n OpenUserProfileOnSidePanel: boolean;\r\n maximumEmailRecipients: number;\r\n hideRepetitiveReservations?: boolean;\r\n}\r\n\r\nfunction useGlobalSettingsHook(): GlobalSettingsType {\r\n const adminRoles = React.useMemo(\r\n () => [\r\n Roles.Administrators,\r\n Roles.EquipmentAdministrator,\r\n Roles.GroupAdministrators,\r\n Roles.LabTech,\r\n Roles.InstituteCoord,\r\n ],\r\n [],\r\n );\r\n const privateBudgetsRoles = React.useMemo(\r\n () => [Roles.Administrators, Roles.HeadOfLab],\r\n [],\r\n );\r\n const User = useSelector(selectAuthenticatedUser);\r\n const userRoles: number[] | undefined = User?.Roles;\r\n const appSettings = useSelector(selectAppSettings);\r\n const settings = useSelector(selectglobalSettings);\r\n const [reservationRestricted, setReservationRestricted] =\r\n React.useState(false);\r\n const [budgetModuleEnabled, setBudgetModuleEnabled] =\r\n React.useState(false);\r\n const [priceSheetPricing, setPriceSheetPricing] =\r\n React.useState(false);\r\n const [purchaseOrderLengthSetting, setPurchaseOrderLengthSetting] =\r\n React.useState();\r\n const [hideRepetitiveReservations, setHideRepetitiveReservations] =\r\n React.useState();\r\n const [billingEnabled, setBillingEnabled] = React.useState(false);\r\n const [userIsMainAdmin, setUserIsMainAdmin] = React.useState(false);\r\n const userSettings = useSelector(selectUserProfileSettings);\r\n const [userServiceGroupCommentsEnabled, setUserServiceGroupCommentsEnabled] =\r\n React.useState(false);\r\n const [userLabTechCommentsEnabled, setUserLabTechCommentsEnabled] =\r\n React.useState(false);\r\n const [\r\n allowOngoingReservationModificationEnabled,\r\n setAllowOngoingReservationModificationEnabled,\r\n ] = React.useState(false);\r\n const [\r\n doNotAllowReservationUserChangeByStaff,\r\n setDoNotAllowReservationUserChangeByStaff,\r\n ] = React.useState(false);\r\n const [instituteProjectsEnabled, setInstituteProjectsEnabled] =\r\n React.useState(false);\r\n const [reservationTerminationEnabled, setReservationTerminationEnabled] =\r\n React.useState(false);\r\n const [displayEditUserDetails, setDisplayEditUserDetails] =\r\n React.useState(false);\r\n const [multipleAdGroupsEnabled, setMultipleAdGroupsEnabled] =\r\n React.useState(false);\r\n const [draftReservationsEnabled, setDraftReservationsEnabled] =\r\n React.useState(false);\r\n const [\r\n MandatoryOfflineServicesOnTrainingSignUps,\r\n setMandatoryOfflineServicesOnTrainingSignUps,\r\n ] = React.useState(false);\r\n const [crossInstrumentTrainingEnabled, setCrossInstrumentTrainingEnabled] =\r\n React.useState(false);\r\n const [userAndGroupPermissionsEnabled, setUserAndGroupPermissionsEnabled] =\r\n React.useState(false);\r\n const [\r\n serviceGroupAdminsCanManageAdUsers,\r\n setServiceGroupAdminsCanManageAdUsers,\r\n ] = React.useState(false);\r\n const [openUserProfileOnSidePanel, setOpenUserProfileOnSidePanel] =\r\n React.useState(false);\r\n\r\n const [\r\n serviceGroupAdminsCanManageAllUsers,\r\n setServiceGroupAdminsCanManageAllUsers,\r\n ] = React.useState(false);\r\n const [tutoringModulesEnabled, setTutoringModulesEnabled] =\r\n React.useState(false);\r\n const [tutoringEnabled, setTutoringEnabled] = React.useState(false);\r\n const [accServicesEnabled, setAccServicesEnabled] =\r\n React.useState(false);\r\n const [allowUsersToViewTheirCharges, setAllowUsersToViewTheirCharges] =\r\n React.useState(false);\r\n\r\n const [\r\n showReferenceFieldInReservationDetails,\r\n setShowReferenceFieldInReservationDetails,\r\n ] = React.useState(false);\r\n\r\n const [offlineServiceWithReservation, setOfflineServiceWithReservation] =\r\n React.useState(false);\r\n const [multipleInstrumentsEnabled, setMultipleInstrumentsEnabled] =\r\n React.useState(false);\r\n const [trainingSessionEnabled, setTrainingSessionEnabled] =\r\n React.useState(false);\r\n const [reservationFormEnabled, setReservationFormEnabled] =\r\n React.useState(false);\r\n const [resMultipleFormsEnabled, setResMultipleFormsEnabled] =\r\n React.useState(false);\r\n const [assistedReservationsEnabled, setAssistedReservationsEnabled] =\r\n React.useState(false);\r\n const [showCalcPriceOnOfflineService, setShowCalcPriceOnOfflineService] =\r\n React.useState(false);\r\n const [showCalculatePrice, setShowCalculatePrice] =\r\n React.useState(false);\r\n const [allowPartialProjectCharges, setAllowPartialProjectCharges] =\r\n React.useState(false);\r\n const [\r\n allowPartialSingleProjectCharges,\r\n setAllowPartialSingleProjectCharges,\r\n ] = React.useState(false);\r\n\r\n const [budgetExperimentModuleEnabled, setBudgetExperimentModuleEnabled] =\r\n React.useState(false);\r\n const [fundingTypeBudgetEnabled, setFundingTypeBudgetEnabled] =\r\n React.useState(false);\r\n const [purchaseOrderBudgetEnabled, setPurchaseOrderBudgetEnabled] =\r\n React.useState(false);\r\n const [isBudgetsWithoutUserGroup, setIsBudgetsWithoutUserGroup] =\r\n React.useState(false);\r\n const [requestReservationEnabled, setRequestReservationEnabled] =\r\n React.useState(false);\r\n const [budgetLimitedByUsers, setIsBudgetLimitedByUsers] =\r\n React.useState(false);\r\n const [hideNonDefaultBudgets, setHideNonDefaultBudgets] =\r\n React.useState(false);\r\n const [assemblyPartsEnabled, setAssemblyPartsEnabled] =\r\n React.useState(false);\r\n const [userDefaultBudgetEnabled, setUserDefaultBudgetEnabled] =\r\n React.useState(false);\r\n const [\r\n showDefaultUserGroupOnUserProfileEnabled,\r\n setShowDefaultUserGroupOnUserProfileEnabled,\r\n ] = React.useState(false);\r\n const [defaultBudgetEnabled, setDefaultBudgetEnabled] =\r\n React.useState(false);\r\n const [userGroupReservationRestricted, setUserGroupReservationRestricted] =\r\n React.useState(false);\r\n const [\r\n reservationUserGroupGroupByBudgetUserGroup,\r\n setReservationUserGroupGroupByBudgetUserGroup,\r\n ] = React.useState(false);\r\n const [onlyOwnUserGroupsAllowed, setOnlyOwnUserGroupsAllowed] =\r\n React.useState(false);\r\n const [allowAddRemoveOnEditReservation, setAllowAddRemoveOnEditReservation] =\r\n React.useState(false);\r\n const [\r\n allowToRemoveFromMultipleReservation,\r\n setAllowToRemoveFromMultipleReservation,\r\n ] = React.useState(false);\r\n const [hideReservationCollaborators, setHideReservationCollaborators] =\r\n React.useState(false);\r\n const [isConfidentialBudgetsEnabled, setIsConfidentialBudgetsEnabled] =\r\n React.useState(false);\r\n const [allowWorkflowBookingEnabled, setAllowWorkflowBookingEnabled] =\r\n React.useState(false);\r\n const [modifyReservationNameForUsers, setModifyReservationNameForUsers] =\r\n React.useState(false);\r\n const [loanDeskEnabled, setLoanDeskEnabled] = React.useState(false);\r\n const [enableCoreAffilationManagment, setEnableCoreAffilationManagment] =\r\n React.useState(false);\r\n const [loadCompleted, setLoadCompleted] = React.useState(false);\r\n const [maximumEmailRecipients, setMaximumEmailRecipients] =\r\n React.useState(50);\r\n const [projectsAreOptional, setProjectsAreOptional] =\r\n React.useState(false);\r\n React.useEffect(() => {\r\n setIsBudgetsWithoutUserGroup(() => {\r\n return !IsBudgetFieldEnabled(appSettings, BudgetFields.UserGroup);\r\n });\r\n setIsConfidentialBudgetsEnabled(() => {\r\n return IsBudgetFieldEnabled(appSettings, BudgetFields.Confidential);\r\n });\r\n setUserIsMainAdmin(() => {\r\n return isInRole(User, Roles.Administrators);\r\n });\r\n setAllowAddRemoveOnEditReservation(() => {\r\n return IsModuleEnabled(\r\n appSettings,\r\n KnownModules.MultipleInstruments_AddRemoveOnEditReservation,\r\n );\r\n });\r\n setAllowToRemoveFromMultipleReservation(() => {\r\n return (\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.AllowToRemoveFromMultipleReservation],\r\n ) === true\r\n );\r\n });\r\n setTrainingSessionEnabled(() => {\r\n return (\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideTrainingSessionsSettings],\r\n ) === false\r\n );\r\n });\r\n setAllowWorkflowBookingEnabled(() => {\r\n return (\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.AllowWorkflowBooking],\r\n ) === true\r\n );\r\n });\r\n setModifyReservationNameForUsers(() => {\r\n return (\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.ModifyReservationNameForUsers],\r\n ) === true\r\n );\r\n });\r\n setInstituteProjectsEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.InstituteProjects);\r\n });\r\n setProjectsAreOptional(\r\n settings.GetBooleanByKey(AllowedSettings.ProjectsAreOptional),\r\n );\r\n setMultipleInstrumentsEnabled(() => {\r\n const multipleInstrumentsSetting: string | null =\r\n settings.GetNullableByKey(\r\n AllowedSettings.MultipleInstrumentReservations,\r\n );\r\n return (\r\n multipleInstrumentsSetting !== null &&\r\n MultipleInstrumentReservations[multipleInstrumentsSetting] !==\r\n MultipleInstrumentReservations.NotAllowed\r\n );\r\n });\r\n setReservationTerminationEnabled(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.TerminateReservation],\r\n );\r\n });\r\n setAccServicesEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.AccServices);\r\n });\r\n setAllowOngoingReservationModificationEnabled(() => {\r\n return IsModuleEnabled(\r\n appSettings,\r\n KnownModules.AllowOngoingReservationModification,\r\n );\r\n });\r\n setDoNotAllowReservationUserChangeByStaff(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.DoNotAllowReservationUserChangeByStaff],\r\n );\r\n });\r\n setUserServiceGroupCommentsEnabled(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.UserServiceGroupComments],\r\n );\r\n });\r\n setUserLabTechCommentsEnabled(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.UserLabTechComments],\r\n );\r\n });\r\n setShowReferenceFieldInReservationDetails(() => {\r\n return !settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideReferenceFieldInReservationDetails],\r\n );\r\n });\r\n setAllowUsersToViewTheirCharges(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.AllowUsersToViewCharges],\r\n );\r\n });\r\n setAssistedReservationsEnabled(() => {\r\n return !settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideAssistedReservationsSettings],\r\n );\r\n });\r\n setIsBudgetLimitedByUsers(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.BudgetLimited_ByUsers],\r\n );\r\n });\r\n setBudgetModuleEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.Budgets);\r\n });\r\n setPriceSheetPricing(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.PriceSheetPricing);\r\n });\r\n setBillingEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.Billing);\r\n });\r\n setPurchaseOrderLengthSetting(() => {\r\n const stringValue = settings.TryGet(\r\n AllowedSettings[AllowedSettings.PurchaseOrderLengthSetting],\r\n );\r\n if (stringValue === null) {\r\n return undefined;\r\n }\r\n const intValue = parseInt(stringValue);\r\n if (isNaN(intValue)) {\r\n return undefined;\r\n }\r\n return intValue;\r\n });\r\n\r\n setDraftReservationsEnabled(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.DraftReservationsEnabled],\r\n );\r\n });\r\n setMandatoryOfflineServicesOnTrainingSignUps(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[\r\n AllowedSettings.MandatoryOfflineServicesOnTrainingSignUps\r\n ],\r\n );\r\n });\r\n setOfflineServiceWithReservation(() => {\r\n return IsModuleEnabled(\r\n appSettings,\r\n KnownModules.OfflineServiceWithReservation,\r\n );\r\n });\r\n setReservationRestricted(() => {\r\n const resRestrictedSetting: string | null = settings.GetNullableByKey(\r\n AllowedSettings.UserReservationsRestricted,\r\n );\r\n return (\r\n resRestrictedSetting !== null &&\r\n UserReservationsRestricted[resRestrictedSetting] ===\r\n UserReservationsRestricted.UserOwnRestricted\r\n );\r\n });\r\n setUserGroupReservationRestricted(() => {\r\n const resUserGroupRestrictedSetting: string | null =\r\n settings.GetNullableByKey(AllowedSettings.UserReservationsRestricted);\r\n return (\r\n resUserGroupRestrictedSetting !== null &&\r\n UserReservationsRestricted[resUserGroupRestrictedSetting] ===\r\n UserReservationsRestricted.UserGroupRestricted\r\n );\r\n });\r\n setUserAndGroupPermissionsEnabled(() => {\r\n return (\r\n IsModuleEnabled(appSettings, KnownModules.UserPermission) ||\r\n IsModuleEnabled(appSettings, KnownModules.GroupPermissions)\r\n );\r\n });\r\n\r\n setServiceGroupAdminsCanManageAdUsers(\r\n () =>\r\n settings.GetString(AllowedSettings.ServiceGroupAdminsCanManageUsers) ===\r\n ServiceGroupAdminsManageUsersEnum[\r\n ServiceGroupAdminsManageUsersEnum\r\n .ServiceGroupAdminsCanManageUsers_CanAssignOnlySSOusers\r\n ],\r\n );\r\n setServiceGroupAdminsCanManageAllUsers(\r\n () =>\r\n settings.GetString(AllowedSettings.ServiceGroupAdminsCanManageUsers) ===\r\n ServiceGroupAdminsManageUsersEnum[\r\n ServiceGroupAdminsManageUsersEnum\r\n .ServiceGroupAdminsCanManageUsers_CanAssignAnyUser\r\n ],\r\n );\r\n setEnableCoreAffilationManagment(() =>\r\n settings.GetBooleanByKey(\r\n AllowedSettings.EnableServiceGroupAffilationManagment,\r\n ),\r\n );\r\n setReservationUserGroupGroupByBudgetUserGroup(() =>\r\n settings.GetBoolean(\r\n AllowedSettings[\r\n AllowedSettings.ReservationUserGroupGroupByBudgetUserGroup\r\n ],\r\n ),\r\n );\r\n setCrossInstrumentTrainingEnabled(() =>\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.CrossInstrumentTraining],\r\n ),\r\n );\r\n\r\n setOnlyOwnUserGroupsAllowed(() => {\r\n return !(intersection(userRoles, adminRoles).length > 0);\r\n });\r\n setUserDefaultBudgetEnabled(() =>\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.ShowDefaultBudgetOnUserProfile],\r\n ),\r\n );\r\n setShowDefaultUserGroupOnUserProfileEnabled(() =>\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.ShowDefaultUserGroupOnUserProfile],\r\n ),\r\n );\r\n setDisplayEditUserDetails(() =>\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.DisplayEditUserDetails],\r\n ),\r\n );\r\n setOpenUserProfileOnSidePanel(() =>\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.OpenUserProfileOnSidePanel],\r\n ),\r\n );\r\n setShowCalcPriceOnOfflineService(\r\n () =>\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideCalcPriceOnOfflineService],\r\n ) !== true,\r\n );\r\n setShowCalculatePrice(\r\n () =>\r\n IsModuleEnabled(appSettings, KnownModules.Billing) ||\r\n (IsModuleEnabled(appSettings, KnownModules.Invoices) &&\r\n IsModuleEnabled(appSettings, KnownModules.PriceSheetPricing)),\r\n );\r\n setDefaultBudgetEnabled(() => {\r\n return IsBudgetFieldEnabled(appSettings, BudgetFields.Default);\r\n });\r\n setFundingTypeBudgetEnabled(() => {\r\n return IsBudgetFieldEnabled(appSettings, BudgetFields.FundingType);\r\n });\r\n setPurchaseOrderBudgetEnabled(() => {\r\n return IsBudgetFieldEnabled(\r\n appSettings,\r\n BudgetFields.PurchaseOrderOption,\r\n );\r\n });\r\n\r\n setTutoringModulesEnabled(() => {\r\n return (\r\n IsModuleEnabled(appSettings, KnownModules.Tutoring) ||\r\n IsModuleEnabled(appSettings, KnownModules.TutoringHours)\r\n );\r\n });\r\n setTutoringEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.Tutoring);\r\n });\r\n setAssemblyPartsEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.EquipmentAssemblies);\r\n });\r\n setHideNonDefaultBudgets(() => {\r\n return (\r\n IsModuleEnabled(appSettings, KnownModules.HideNonDefaultBudgets) &&\r\n !(\r\n intersection(userRoles, privateBudgetsRoles).length > 0 ||\r\n (isInRole(User, Roles.GroupAdministrators) &&\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.SGACreateProjects],\r\n ))\r\n )\r\n );\r\n });\r\n setBudgetExperimentModuleEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.BudgetExperiments);\r\n });\r\n\r\n setAllowPartialProjectCharges(() => {\r\n return (\r\n IsModuleEnabled(appSettings, KnownModules.Invoices) &&\r\n IsModuleEnabled(appSettings, KnownModules.DisableBillingEvents) &&\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.AllowPartialMultipleProjectCharges],\r\n ) &&\r\n budgetModuleEnabled\r\n );\r\n });\r\n setAllowPartialSingleProjectCharges(() => {\r\n return (\r\n IsModuleEnabled(appSettings, KnownModules.Invoices) &&\r\n IsModuleEnabled(appSettings, KnownModules.DisableBillingEvents) &&\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.AllowPartialSingleProjectCharges],\r\n ) &&\r\n budgetModuleEnabled\r\n );\r\n });\r\n setReservationFormEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.ReservationsCustomForm);\r\n });\r\n setResMultipleFormsEnabled(() => {\r\n return (\r\n reservationFormEnabled &&\r\n IsModuleEnabled(appSettings, KnownModules.MultipleCustomForms)\r\n );\r\n });\r\n setHideReservationCollaborators(\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideReservationCollaborators],\r\n ),\r\n );\r\n setRequestReservationEnabled(\r\n settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.ServiceRequestReservations],\r\n ),\r\n );\r\n setLoanDeskEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.LoanDesk);\r\n });\r\n setMultipleAdGroupsEnabled(() => {\r\n return IsModuleEnabled(appSettings, KnownModules.MultipleAdGroups);\r\n });\r\n setMaximumEmailRecipients(() => {\r\n const stringValue = settings.TryGet(\r\n AllowedSettings[AllowedSettings.MaximumEmailRecipients],\r\n );\r\n if (stringValue === null) {\r\n return 50;\r\n }\r\n const intValue = parseInt(stringValue);\r\n if (isNaN(intValue)) {\r\n return 50;\r\n }\r\n return intValue;\r\n });\r\n setHideRepetitiveReservations(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideRepetitiveReservations],\r\n );\r\n });\r\n\r\n console.debug('Global Settings Called');\r\n setLoadCompleted(() => true);\r\n }, [\r\n User,\r\n adminRoles,\r\n appSettings,\r\n budgetModuleEnabled,\r\n privateBudgetsRoles,\r\n reservationFormEnabled,\r\n reservationRestricted,\r\n settings,\r\n userGroupReservationRestricted,\r\n userRoles,\r\n userSettings,\r\n ]);\r\n\r\n const r: GlobalSettingsType = {\r\n loadCompleted,\r\n reservationRestricted,\r\n reservationUserGroupGroupByBudgetUserGroup,\r\n userGroupReservationRestricted,\r\n onlyOwnUserGroupsAllowed,\r\n projectsAreOptional,\r\n userDefaultBudgetEnabled,\r\n defaultBudgetEnabled,\r\n hideNonDefaultBudgets,\r\n isBudgetsWithoutUserGroup,\r\n budgetModuleEnabled,\r\n priceSheetPricing,\r\n billingModuleEnabled: billingEnabled,\r\n purchaseOrderLengthSetting,\r\n budgetLimitedByUsers,\r\n budgetExperimentModuleEnabled: budgetExperimentModuleEnabled,\r\n fundingTypeBudgetEnabled,\r\n purchaseOrderBudgetEnabled,\r\n allowPartialProjectCharges,\r\n allowPartialSingleProjectCharges,\r\n trainingSessionEnabled,\r\n assistedReservationsEnabled,\r\n resCustomFormEnabled: reservationFormEnabled,\r\n resMultipleFormsEnabled,\r\n multipleInstrumentsEnabled,\r\n reservationTerminationEnabled,\r\n crossInstrumentTrainingEnabled,\r\n userAndGroupPermissionsEnabled: userAndGroupPermissionsEnabled,\r\n tutoringModulesEnabled,\r\n tutoringEnabled,\r\n offlineServiceWithReservation,\r\n userIsMainAdmin,\r\n instituteProjectsEnabled,\r\n showReferenceFieldInReservationDetails,\r\n accServicesEnabled,\r\n showCalcPriceOnOfflineService,\r\n allowUsersToViewTheirCharges,\r\n allowOngoingReservationModificationEnabled,\r\n showCalculatePrice,\r\n allowAddRemoveOnEditReservation,\r\n allowToRemoveFromMultipleReservation,\r\n draftReservationsEnabled,\r\n hideReservationCollaborators,\r\n MandatoryOfflineServicesOnTrainingSignUps,\r\n DoNotAllowReservationUserChangeByStaff:\r\n doNotAllowReservationUserChangeByStaff,\r\n AssemblyPartsEnabled: assemblyPartsEnabled,\r\n confidentialBudgetsEnabled: isConfidentialBudgetsEnabled,\r\n AllowWorkflowBooking: allowWorkflowBookingEnabled,\r\n ModifyReservationNameForUsers: modifyReservationNameForUsers,\r\n ShowDefaultUserGroupOnUserProfileEnabled:\r\n showDefaultUserGroupOnUserProfileEnabled,\r\n ServiceRequestReservationEnabled: requestReservationEnabled,\r\n LoanDeskEnabled: loanDeskEnabled,\r\n ServiceGroupAdminsCanManageAdUsers: serviceGroupAdminsCanManageAdUsers,\r\n ServiceGroupAdminsCanManageAllUsers: serviceGroupAdminsCanManageAllUsers,\r\n EnableCoreAffilationManagment: enableCoreAffilationManagment,\r\n UserServiceGroupCommentsEnabled: userServiceGroupCommentsEnabled,\r\n UserLabTechCommentsEnabled: userLabTechCommentsEnabled,\r\n DisplayEditUserDetails: displayEditUserDetails,\r\n MultipleAdGroupsEnabled: multipleAdGroupsEnabled,\r\n OpenUserProfileOnSidePanel: openUserProfileOnSidePanel,\r\n maximumEmailRecipients,\r\n hideRepetitiveReservations,\r\n };\r\n return r;\r\n}\r\n\r\nexport default useGlobalSettingsHook;\r\n","import { InputAdornment, InputBaseComponentProps } from '@material-ui/core';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { omit } from 'lodash';\r\nimport * as React from 'react';\r\nimport BaseTextField from '../BaseTextField';\r\nimport { BaseInputFieldProps } from '../BaseTextField/BaseFieldDefinition';\r\nimport clsx from 'clsx';\r\n\r\nexport interface TextControlFieldProps extends BaseInputFieldProps {\r\n info?: string;\r\n onBlur?: React.FocusEventHandler;\r\n onChange?: React.ChangeEventHandler;\r\n onFocus?: React.FocusEventHandler;\r\n startIcon?: React.ReactNode;\r\n endIcon?: React.ReactNode;\r\n autoFocus?: boolean;\r\n variant?: 'standard' | 'outlined' | 'filled';\r\n type?: React.InputHTMLAttributes['type'];\r\n min?: number;\r\n max?: number;\r\n className?: string;\r\n inputProps?: InputBaseComponentProps;\r\n minInputWidth?: 'xs' | 'small' | 'medium' | 'large' | 'default';\r\n textBoxWidth?: 'xs' | 'small' | 'medium' | 'large' | 'xl' | 'default';\r\n}\r\n\r\nexport function TextControlField({\r\n info,\r\n startIcon,\r\n endIcon,\r\n onBlur,\r\n onChange,\r\n onFocus,\r\n autoFocus,\r\n variant,\r\n type,\r\n inputProps,\r\n className,\r\n minInputWidth,\r\n textBoxWidth,\r\n ...props\r\n}: TextControlFieldProps) {\r\n const startIconComponent = startIcon && (\r\n {startIcon}\r\n );\r\n\r\n const endIconComponent = (\r\n {endIcon}\r\n );\r\n return (\r\n ) || (endIcon && endIconComponent),\r\n }}\r\n className={clsx(className, {\r\n startIcon: !!startIcon,\r\n endIcon: !!endIcon,\r\n 'text-box-width-xs': textBoxWidth === 'xs',\r\n 'text-box-width-small': textBoxWidth === 'small',\r\n 'text-box-width-medium': textBoxWidth === 'medium',\r\n 'text-box-width-large': textBoxWidth === 'large',\r\n 'text-box-width-default': textBoxWidth === 'default',\r\n 'text-box-width-xl': textBoxWidth === 'xl',\r\n 'number-field': type === 'number',\r\n })}\r\n {...omit(props, 'DialogProps')}\r\n >\r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { BasicTableRefreshEventHandler } from 'app/components/BasicTable/ControlledTable/ControlledTableProps';\r\nimport { Identifiable } from 'types/common';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { RunTypesUnion } from '../../components/RunTypePicker';\r\nimport { RUN_TYPES } from '../../components/RunTypePicker';\r\nimport { ISampleCreateBase } from '../../SamplePlatesPage/slice/types';\r\nimport { samplesListSaga } from './saga';\r\nimport {\r\n IRunDetails,\r\n ISample,\r\n ISampleListTableState,\r\n ISampleRun,\r\n ISampleRunUpdate,\r\n ISampleRunUpdateResponse,\r\n ISamplesListState,\r\n ISampleTarget,\r\n} from './types';\r\n\r\nexport const initialState: ISamplesListState = {\r\n SamplesList: {\r\n processing: false,\r\n },\r\n SamplesListTableState: {\r\n pageSize: 10,\r\n pageIndex: 0,\r\n sortBy: [{ id: 'Id', desc: true }],\r\n customFilters: [],\r\n globalFilter: '',\r\n },\r\n EditMode: false,\r\n SamplesSelected: [],\r\n ShowRunDialog: false,\r\n ImportStarted: false,\r\n ImportFinished: false,\r\n Completion: false,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'samplesList',\r\n initialState,\r\n reducers: {\r\n loadSamplesList(state, action: PayloadAction) {\r\n state.SamplesList.processing = true;\r\n state.SamplesListTableState = {\r\n pageSize: action.payload.pageSize,\r\n pageIndex: action.payload.pageIndex,\r\n sortBy: action.payload.sortBy,\r\n globalFilter: action.payload.globalFilter,\r\n searchColumns: action.payload.searchColumns,\r\n customFilters: action.payload.customFilters?.map(filter => ({\r\n fieldName: filter.fieldName,\r\n operator: filter.operator,\r\n value: filter.value,\r\n })),\r\n serviceGroups:\r\n action.payload.serviceGroups?.length !== 0\r\n ? action.payload.serviceGroups\r\n : undefined,\r\n };\r\n },\r\n export(state, action: PayloadAction) {},\r\n loadSamplesList_Success(state, action: PayloadAction) {\r\n state.SamplesList.processing = false;\r\n state.SamplesList.error = undefined;\r\n state.SamplesList.data = action.payload.value as ISample[];\r\n state.SamplesList.dataLength = action.payload['@odata.count'];\r\n },\r\n loadSamplesList_Error(state, action: PayloadAction) {\r\n state.SamplesList.processing = false;\r\n state.SamplesList.error = action.payload;\r\n },\r\n setSelectedSamples(state, action: PayloadAction) {\r\n state.SamplesSelected = action.payload;\r\n },\r\n loadAllFilteredSamples(state, action: PayloadAction) {},\r\n loadAllFilteredSamples_Success(state, action: PayloadAction) {},\r\n\r\n deleteSamples(\r\n state,\r\n action: PayloadAction<{\r\n selectedRows: ISample[];\r\n refresh: BasicTableRefreshEventHandler | undefined;\r\n toggleAllRowsSelected: (f: boolean) => void;\r\n }>,\r\n ) {},\r\n\r\n updateField(state, action: PayloadAction>) {\r\n // update row in samples list\r\n const item = state.SamplesList?.data?.find(\r\n s => s.Id === action.payload.Id,\r\n );\r\n if (item !== undefined) {\r\n Object.assign(item, action.payload);\r\n }\r\n },\r\n updateField_Success(state, action: PayloadAction) {},\r\n updateField_Error(state, action: PayloadAction) {},\r\n\r\n loadRunDetqails(\r\n state,\r\n action: PayloadAction<{\r\n id: number;\r\n columns: Array | undefined;\r\n }>,\r\n ) {},\r\n loadRunDetqails_Success(state, action: PayloadAction) {\r\n state.RunDetails = action.payload;\r\n },\r\n\r\n runSelectedSamples(\r\n state,\r\n action: PayloadAction<{\r\n runType?: RunTypesUnion;\r\n samples: ISample[] | undefined;\r\n }>,\r\n ) {\r\n state.SelectedRunType = action.payload.runType;\r\n },\r\n runSelectedSamples_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n updateRunSampleValue(state, action: PayloadAction>) {\r\n const item = state.RunDetails?.Samples?.find(\r\n s => s.Id === action.payload.Id,\r\n );\r\n if (item !== undefined) {\r\n // set updated properties on original row\r\n Object.assign(item, action.payload);\r\n\r\n // in case of the Labeling run all of the Target* properties should be the same\r\n // for all of the samples with the same ServiceRequest and same TMT_Set\r\n // as these are combined into a singel sample upon run completionc\r\n const rt = Object.keys(RUN_TYPES).find(k => k === 'Labeling');\r\n if (state.RunDetails?.RunType === rt) {\r\n const props: (keyof ISampleTarget)[] = [\r\n 'TargetConcentration',\r\n 'TargetPlateId',\r\n 'TargetPosition',\r\n 'TargetVolume',\r\n 'TargetTubeLabel',\r\n 'TargetSampleType',\r\n ];\r\n props.forEach(prop => {\r\n if (action.payload[prop] !== undefined) {\r\n const payloadWithoutId = {};\r\n payloadWithoutId[prop] = item[prop];\r\n state.RunDetails?.Samples?.filter(\r\n s =>\r\n s.TMT_Set === item.TMT_Set &&\r\n s.ServiceRequestId === item.ServiceRequestId,\r\n ).forEach(s => Object.assign(s, payloadWithoutId));\r\n }\r\n });\r\n }\r\n }\r\n },\r\n\r\n setShowRunDialog(state, action: PayloadAction) {\r\n state.ShowRunDialog = action.payload;\r\n },\r\n setRunType(state, action: PayloadAction) {\r\n state.SelectedRunType = action.payload;\r\n if (action.payload === undefined) {\r\n return;\r\n }\r\n const runType = RUN_TYPES[action.payload];\r\n switch (runType) {\r\n case RUN_TYPES.StandardRun:\r\n break;\r\n case RUN_TYPES.MassSpec:\r\n break;\r\n case RUN_TYPES.Labeling:\r\n break;\r\n }\r\n },\r\n setShowImportDialog(state, action: PayloadAction) {\r\n state.ImportStarted = action.payload;\r\n state.ImportFinished = false;\r\n },\r\n readImportFile(\r\n state,\r\n action: PayloadAction<{ file: File; plate: ISampleCreateBase | null }>,\r\n ) {},\r\n readImportFile_Success(\r\n state,\r\n action: PayloadAction & ISampleTarget>>,\r\n ) {\r\n action.payload.forEach(record => {\r\n const sample = state.RunDetails?.Samples?.find(\r\n sample => sample.Id === record.Id,\r\n );\r\n if (sample !== undefined) {\r\n sample.TargetPosition = record.TargetPosition;\r\n sample.TargetPlateId = record.TargetPlateId;\r\n\r\n sample.TargetTubeLabel = record.TargetTubeLabel;\r\n sample.TargetSampleType = record.TargetSampleType;\r\n\r\n sample.TargetConcentration = record.TargetConcentration;\r\n sample.TargetVolume = record.TargetVolume;\r\n }\r\n });\r\n state.ImportStarted = false;\r\n state.ImportFinished = true;\r\n },\r\n\r\n completeRun(state, aciton: PayloadAction>) {\r\n state.Completion = true;\r\n },\r\n completeRun_Success(state, aciton: PayloadAction) {\r\n state.Completion = false;\r\n },\r\n completeRun_Error(state, aciton: PayloadAction) {\r\n state.Completion = false;\r\n },\r\n updateRun(state, aciton: PayloadAction) {},\r\n updateRun_Success(\r\n state,\r\n aciton: PayloadAction,\r\n ) {\r\n if (state.RunDetails !== undefined && aciton.payload !== undefined) {\r\n state.RunDetails.Gradient = aciton.payload.Gradient;\r\n state.RunDetails.Instrument = aciton.payload.Instrument;\r\n state.RunDetails.SecondaryInstrument =\r\n aciton.payload.SecondaryInstrument;\r\n state.RunDetails.ACQUISITION_TYPE = aciton.payload.ACQUISITION_TYPE;\r\n }\r\n },\r\n updateRun_Error(state, aciton: PayloadAction) {},\r\n\r\n exportRun(\r\n state,\r\n action: PayloadAction<{ Id: number | undefined; data: ISampleRun[] }>,\r\n ) {},\r\n toggleEditMode(state, action: PayloadAction) {\r\n state.EditMode = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: samplesListActions } = slice;\r\n\r\nexport const useSamplesListSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: samplesListSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useSamplesListSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { Column } from 'react-table';\r\nimport { IRow } from '../IRow';\r\n\r\nexport type ColumnWithDep = Column & {\r\n deps?: (keyof TRow)[];\r\n notShowTitle?: boolean;\r\n};\r\n\r\nexport const hasDeps = (\r\n column: Column,\r\n): column is ColumnWithDep => {\r\n return column['deps'] !== undefined && Array.isArray(column['deps']);\r\n};\r\n","import { Column, SortingRule } from 'react-table';\r\nimport { Entity } from 'types/common';\r\nimport { IRow } from '..';\r\n\r\nexport function SortByComparer(\r\n prev: readonly [SortingRule[] | undefined],\r\n next: readonly [SortingRule[] | undefined],\r\n) {\r\n if (prev[0] === undefined && next[0] === undefined) {\r\n return true;\r\n } else if (prev[0] === undefined && next[0] !== undefined) {\r\n return false;\r\n } else if (next[0] === undefined && prev[0] !== undefined) {\r\n return false;\r\n } else {\r\n if (prev[0]?.length === next[0]?.length) {\r\n if (prev[0]?.length === 0 && next[0]?.length === 0) {\r\n return true;\r\n } else {\r\n if (\r\n prev[0]?.some(\r\n f => !next[0]?.some(n => n.id === f.id && n.desc === f.desc),\r\n )\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\nexport function ServiceGroupsComparer(\r\n prev: readonly [Entity[]],\r\n next: readonly [Entity[]],\r\n) {\r\n if (!!prev[0]) {\r\n if (prev[0].length === next[0].length) {\r\n if (prev[0].length === 0 && next[0].length === 0) {\r\n return true;\r\n } else {\r\n if (prev[0].some(f => !next[0].some(n => n.Id === f.Id))) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function columnsComparer(\r\n prev: readonly [Column[]],\r\n next: readonly [Column[]],\r\n) {\r\n if (!!prev[0]) {\r\n if (prev[0].length === next[0].length) {\r\n if (prev[0].length === 0 && next[0].length === 0) {\r\n return true;\r\n } else {\r\n if (prev[0].some(f => !next[0].some(n => n.accessor === f.accessor))) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function ColumnAccesorsComparer(\r\n prev: readonly [(keyof TRow)[] | undefined],\r\n next: readonly [(keyof TRow)[] | undefined],\r\n) {\r\n if (prev[0] === undefined && next[0] === undefined) {\r\n return true;\r\n } else if (prev[0] === undefined && next[0] !== undefined) {\r\n return false;\r\n } else if (next[0] === undefined && prev[0] !== undefined) {\r\n return false;\r\n } else {\r\n if (prev[0]?.length === next[0]?.length) {\r\n if (prev[0]?.length === 0 && next[0]?.length === 0) {\r\n return true;\r\n } else {\r\n if (prev[0]?.some(f => !next[0]?.some(n => n === f))) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\n","/**\r\n *\r\n * BasicTable\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n UseSortByState,\r\n UsePaginationState,\r\n SortingRule,\r\n TableState,\r\n UseGroupByState,\r\n Column,\r\n UseRowSelectState,\r\n UseGlobalFiltersState,\r\n} from 'react-table';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { CancelToken } from 'axios';\r\nimport { BasicTableProps } from './BasicTableProps';\r\nimport { IRow } from './IRow';\r\nimport { IFilterSettings } from './BasicFilter/IFilterSettings';\r\nimport {\r\n getExportParameters,\r\n buildURL,\r\n openExportLink,\r\n IPathAndQuery,\r\n getExportForImportParameters,\r\n} from 'utils/url-utils';\r\nimport { Entity } from 'types/common';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n//import { Progress } from '../LoadingIndicator';\r\nimport { buildParams } from 'api/odata/ODataParamsBuilder';\r\nimport { useConfigurableColumns } from './useConfigurableColumns';\r\nimport { ControlledTable } from './ControlledTable';\r\nimport { useMemoFilters } from './useMemoFilters';\r\nimport { selectDoRefreshTable } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { TableSkeleton } from './components/TableSkeleton';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { hasDeps } from './types/ColumnWithDeps';\r\nimport { notUndefined } from 'utils/typeUtils';\r\nimport { Condition, quoteODataValue } from 'api/odata/ODataFilter';\r\nimport { TryGetExportColumns } from './ConfigurableColumns';\r\nimport { BasicTableRefreshEventHandler } from './ControlledTable/ControlledTableProps';\r\nimport { useCustomCompareMemo } from 'use-custom-compare';\r\nimport { ServiceGroupsComparer, SortByComparer } from './Comparers';\r\nimport { ScreensId } from 'enums/ConfigurableTypes';\r\nimport { selectAppTimeZone } from 'app/slice/selectors';\r\n\r\nexport type { IRow };\r\nexport type { BasicTableProps };\r\n\r\ntype IPartialTableState = Partial<\r\n UseSortByState &\r\n UsePaginationState &\r\n UseGroupByState &\r\n UseRowSelectState &\r\n UseGlobalFiltersState\r\n>;\r\n\r\nconst REQUEST_CANCELLED_MESSAGE = 'Request cancelled (race condition)';\r\n/**\r\n * Interface to the (initial) table state\r\n */\r\nexport interface IBasicTableState\r\n extends IPartialTableState {}\r\n\r\ninterface IDataState {\r\n data?: TRow[];\r\n dataLength?: number;\r\n controlledPageCount?: number;\r\n loading?: boolean;\r\n initComplete: boolean;\r\n}\r\n\r\nconst defaultRowIdAccessor = (row: TRow): string =>\r\n row.Id?.toString();\r\n/**\r\n * Server side driven Table component that will be reused in most of the pages\r\n * @param param0\r\n * @returns\r\n */\r\nexport function BasicTable({\r\n id,\r\n columns,\r\n initialState,\r\n api,\r\n additionalColumns,\r\n getRowId = defaultRowIdAccessor,\r\n searchColumns,\r\n useExport = true,\r\n rowActions,\r\n inlineRowActions,\r\n pageActions,\r\n screenName,\r\n selectedRowsActions,\r\n filterOpen = false,\r\n screenId,\r\n serviceGroups = [],\r\n customParams,\r\n useImportLink,\r\n importLink,\r\n importHandler,\r\n needRefresh,\r\n ServiceGroupsOptional,\r\n topAlertMessage,\r\n expandedColumns,\r\n onPageSizeChanged,\r\n onPageIndexChanged,\r\n savedListSettings,\r\n floatingTabSettings,\r\n useExportForImport,\r\n customEmptyTableSettings,\r\n exportForImportFilterKey,\r\n printing,\r\n onTableCountChange,\r\n useCustomSearch,\r\n ns,\r\n descriptionKey,\r\n ...props\r\n}: BasicTableProps) {\r\n const isMobile = DetectIsMobile();\r\n\r\n // data received from the server and displayed on the table\r\n const [dataState, setDataState, extendDataState] = useAsyncExtendedState<\r\n IDataState\r\n >({ initComplete: false });\r\n // reference to the show/hide filters button\r\n // data length - total number of the records\r\n //const [dataLength, setDataLength] = React.useState(0);\r\n // page count derived from total number of the records\r\n // this is passed to the react-table hook\r\n //const [controlledPageCount, setControlledPageCount] = React.useState(0);\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const dispatch = useDispatch();\r\n const doRefresh = useSelector(selectDoRefreshTable);\r\n const tz = useSelector(selectAppTimeZone);\r\n const [tableState, setTableState] = React.useState>>(\r\n {\r\n pageIndex: initialState?.pageIndex ?? 0,\r\n pageSize:\r\n printing !== undefined && printing.printing === true\r\n ? 10000\r\n : initialState?.pageSize ?? 10,\r\n //sortBy, which is set to undefined, is subsequently changed to [], causing re-rendering.\r\n //Assigning sortBy a value equal to [] is preventing re-rendering.\r\n sortBy: initialState?.sortBy !== undefined ? initialState?.sortBy : [],\r\n globalFilter: initialState?.globalFilter,\r\n },\r\n );\r\n const handleChangeState = React.useCallback(state => {\r\n setTableState(state);\r\n }, []);\r\n // custom useMemo Hook with deps comparision, the service groups array is changed even their contant is the same;\r\n // to do: make a generic comparer.\r\n const serviceGroupsCompared = useCustomCompareMemo(\r\n () => {\r\n return serviceGroups;\r\n },\r\n [serviceGroups],\r\n ServiceGroupsComparer,\r\n );\r\n // const additionalColumnsCompared = useCustomCompareMemo(\r\n // () => {\r\n // return additionalColumns;\r\n // },\r\n // [additionalColumns],\r\n // ColumnAccesorsComparer,\r\n // );\r\n const columnsCompared = columns;\r\n\r\n // take care of configurable columns\r\n const {\r\n configurableColumns,\r\n handleConfigurableColumns,\r\n configCompleted,\r\n refreshConfigurableColumns,\r\n } = useConfigurableColumns({\r\n screenId: screenId,\r\n columns: columnsCompared,\r\n ns: ns,\r\n });\r\n\r\n const getDisplayColumns = React.useCallback(\r\n ({\r\n screenId,\r\n configurableColumns,\r\n completed,\r\n basecolumns,\r\n }): Column[] | undefined => {\r\n if (screenId === undefined) {\r\n return basecolumns;\r\n } else if (completed) {\r\n return configurableColumns;\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n [],\r\n );\r\n\r\n //columnAccessors is changed several times on load Effect, so transformed to a function to control their content changed.\r\n // const columnAccessors = React.useMemo(() => {\r\n // if (!configCompleted) {\r\n // return undefined;\r\n // }\r\n // const columnAccessors = getDisplayColumns({\r\n // screenId,\r\n // configurableColumns,\r\n // configCompleted,\r\n // columns,\r\n // });\r\n // const result =\r\n // columnAccessors === undefined\r\n // ? undefined\r\n // : getColumnAccessors(columnAccessors);\r\n // return result;\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [configCompleted, screenId, configurableColumns, columns]);\r\n const calculateColumnAccessors = React.useCallback(\r\n (\r\n //columns: Column[],\r\n completed?: boolean,\r\n screenId?: ScreensId,\r\n configurableColumns?: Column[],\r\n ) => {\r\n if (!completed) {\r\n return undefined;\r\n }\r\n const columnAccessors = getDisplayColumns({\r\n screenId,\r\n configurableColumns,\r\n completed,\r\n basecolumns: columnsCompared,\r\n });\r\n const result =\r\n columnAccessors === undefined\r\n ? undefined\r\n : columnAccessors\r\n .filter(c => typeof c.accessor === 'string')\r\n .filter(c => c.accessor !== undefined)\r\n .map(c => c.accessor as keyof TRow);\r\n return result;\r\n },\r\n [columnsCompared, getDisplayColumns],\r\n );\r\n const getAllAdditionalColumns = React.useCallback(\r\n (\r\n //columns: Column[],\r\n additionalColumns?: (keyof TRow)[],\r\n completed?: boolean,\r\n screenId?: ScreensId,\r\n configurableColumns?: Column[],\r\n ) => {\r\n if (!completed) {\r\n return undefined;\r\n }\r\n const res = getDisplayColumns({\r\n screenId,\r\n configurableColumns,\r\n completed,\r\n basecolumns: columnsCompared,\r\n })\r\n ?.filter(hasDeps)\r\n .flatMap(c => c.deps)\r\n .filter(notUndefined);\r\n return (res?.length ?? 0) > 0\r\n ? [...(additionalColumns ?? []), ...(res ?? [])]\r\n : additionalColumns ?? [];\r\n },\r\n [columnsCompared, getDisplayColumns],\r\n );\r\n //allAdditionalColumns is changed several times on load Effect, so transformed to a function to control their content changed.\r\n // const allAdditionalColumns = React.useMemo(() => {\r\n // // early return in case and the config is not ready yet to prevent unnecessary fires of effects below that depend on this\r\n // if (!configCompleted) {\r\n // return undefined;\r\n // }\r\n // const res = getDisplayColumns({\r\n // screenId,\r\n // configurableColumns,\r\n // configCompleted,\r\n // columns,\r\n // })\r\n // ?.filter(hasDeps)\r\n // .flatMap(c => c.deps)\r\n // .filter(notUndefined);\r\n // return [...(additionalColumns ?? []), ...(res ?? [])];\r\n // }, [\r\n // additionalColumns,\r\n // columns,\r\n // configCompleted,\r\n // configurableColumns,\r\n // getDisplayColumns,\r\n // screenId,\r\n // ]);\r\n\r\n // memo cleaned up filters without the Name which is loaded independently of the filter value and only affects appearance of the filter\r\n const customFilter = useMemoFilters({ appliedFilters: props.appliedFilters });\r\n\r\n const handleFilterChange = React.useCallback(\r\n items => {\r\n if (props.onFilterChange !== undefined) {\r\n props.onFilterChange(items);\r\n }\r\n },\r\n [props],\r\n );\r\n\r\n /**\r\n * Fetch data method that retrieves the data according to the current table state\r\n */\r\n const fetchData = React.useCallback(\r\n async (\r\n state: {\r\n api: string | IPathAndQuery;\r\n predicates: Array | string>;\r\n pageSize: number;\r\n pageIndex: number;\r\n sortBy?: SortingRule[] | null;\r\n globalFilterValue?: string;\r\n customFilter: IFilterSettings[];\r\n serviceGroups: Entity[];\r\n isOptionalServiceGroup: boolean;\r\n columns: Array;\r\n additionalColumns: Array;\r\n useCustomSearch?: boolean;\r\n },\r\n cancelToken: CancelToken,\r\n ) => {\r\n extendDataState({ loading: true });\r\n try {\r\n // todo: add support for object notation accessors like 'foo.bar'\r\n // todo: add support for accessor of type Function(originalRow, rowIndex) => any\r\n const oDataParams = buildParams(\r\n {\r\n ...state,\r\n select: state.columns,\r\n serviceGroups: state.serviceGroups,\r\n expandedColumns: expandedColumns,\r\n },\r\n searchColumns,\r\n customParams,\r\n );\r\n var { url, params } = getUrlAndParams(\r\n state.api,\r\n oDataParams,\r\n useCustomSearch,\r\n state.globalFilterValue,\r\n );\r\n const response = await httpClient.get(url, params, cancelToken);\r\n\r\n const newState: IDataState = {\r\n loading: false,\r\n initComplete: true,\r\n data: response.value,\r\n dataLength: response['@odata.count'],\r\n controlledPageCount: Math.ceil(\r\n response['@odata.count'] / state.pageSize,\r\n ),\r\n };\r\n setDataState(newState);\r\n if (!!onTableCountChange) {\r\n onTableCountChange(response['@odata.count']);\r\n }\r\n } catch (error: unknown) {\r\n // todo: show error message\r\n const requestCancelled =\r\n (error as any)?.message === REQUEST_CANCELLED_MESSAGE;\r\n if (!requestCancelled) {\r\n // console.error(error);\r\n extendDataState({ loading: false, initComplete: true });\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [httpClient],\r\n );\r\n\r\n const pageIndex = React.useMemo(() => {\r\n return tableState.pageIndex!;\r\n }, [tableState.pageIndex]);\r\n const pageSize = React.useMemo(() => {\r\n return tableState.pageSize!;\r\n }, [tableState.pageSize]);\r\n // const sortBy = React.useMemo(() => {\r\n // return tableState.sortBy!;\r\n // }, [tableState.sortBy]);\r\n const sortBy = useCustomCompareMemo(\r\n () => {\r\n return tableState.sortBy!;\r\n },\r\n [tableState.sortBy],\r\n SortByComparer,\r\n );\r\n const globalFilter = React.useMemo(() => {\r\n return tableState.globalFilter;\r\n }, [tableState.globalFilter]);\r\n const titleKey = React.useMemo(() => {\r\n const columnAccessors = calculateColumnAccessors(\r\n //columnsCompared,\r\n configCompleted,\r\n screenId,\r\n configurableColumns,\r\n );\r\n return props.titleKey ?? columnAccessors?.[0] ?? '';\r\n }, [\r\n calculateColumnAccessors,\r\n //columnsCompared,\r\n configCompleted,\r\n configurableColumns,\r\n props.titleKey,\r\n screenId,\r\n ]);\r\n const allAdditionalColumnsTable = React.useMemo(() => {\r\n return getAllAdditionalColumns(\r\n //columnsCompared,\r\n additionalColumns,\r\n configCompleted,\r\n screenId,\r\n configurableColumns,\r\n )?.join('|');\r\n }, [\r\n additionalColumns,\r\n configCompleted,\r\n configurableColumns,\r\n getAllAdditionalColumns,\r\n screenId,\r\n ]);\r\n const columnAccessorsTable = React.useMemo(() => {\r\n return calculateColumnAccessors(\r\n //columnsCompared,\r\n configCompleted,\r\n screenId,\r\n configurableColumns,\r\n )?.join('|');\r\n }, [\r\n calculateColumnAccessors,\r\n configCompleted,\r\n configurableColumns,\r\n screenId,\r\n ]);\r\n // connect table state changes to server data fetch side effect\r\n\r\n React.useEffect(() => {\r\n const cancelTokenSource = httpClient.cancelToken.source();\r\n const columnsConfig = isFetchReady(\r\n columnAccessorsTable,\r\n allAdditionalColumnsTable,\r\n configCompleted,\r\n );\r\n if (columnsConfig === false) {\r\n return;\r\n }\r\n try {\r\n fetchData(\r\n {\r\n api,\r\n predicates: props.predicates ?? [],\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilterValue: globalFilter as string,\r\n customFilter: customFilter ?? [],\r\n serviceGroups: serviceGroupsCompared,\r\n isOptionalServiceGroup: ServiceGroupsOptional || false,\r\n useCustomSearch: useCustomSearch,\r\n ...columnsConfig,\r\n },\r\n cancelTokenSource.token,\r\n );\r\n } catch (error) {\r\n } finally {\r\n }\r\n return () => {\r\n cancelTokenSource.cancel(REQUEST_CANCELLED_MESSAGE);\r\n };\r\n }, [\r\n ServiceGroupsOptional,\r\n allAdditionalColumnsTable,\r\n api,\r\n columnAccessorsTable,\r\n configCompleted,\r\n customFilter,\r\n fetchData,\r\n globalFilter,\r\n pageIndex,\r\n pageSize,\r\n props.predicates,\r\n serviceGroupsCompared,\r\n sortBy,\r\n useCustomSearch,\r\n ]);\r\n const handleExportClick = async () => {\r\n try {\r\n /**\r\n * export configurable columns should have been preloaded at this point and available immediately\r\n * otherwise this could take a bit of the time to refetch columns data from the server\r\n * */\r\n const exportColumnAccessors = await TryGetExportColumns(\r\n screenId,\r\n columnsCompared,\r\n // isAuthenticated,\r\n );\r\n\r\n const { $top, $skip, ...tableParams } = buildParams(\r\n {\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilterValue: globalFilter as string,\r\n customFilter: customFilter ?? [],\r\n select: exportColumnAccessors ?? [],\r\n additionalColumns: additionalColumns,\r\n serviceGroups: serviceGroupsCompared,\r\n isOptionalServiceGroup: ServiceGroupsOptional || false,\r\n expandedColumns: expandedColumns,\r\n predicates: props.predicates ?? [],\r\n useCustomSearch: useCustomSearch,\r\n },\r\n undefined,\r\n undefined,\r\n true,\r\n );\r\n\r\n //BKT-7579\r\n if (tableParams.$filter?.startsWith('() and ')) {\r\n tableParams.$filter = tableParams.$filter.replace('() and ', '');\r\n }\r\n var oDataParams = getExportParameters(tableParams);\r\n var { url, params } = getUrlAndParams(\r\n api,\r\n oDataParams,\r\n useCustomSearch,\r\n globalFilter as string,\r\n );\r\n if (screenId === undefined) {\r\n params['unConfigured'] = true;\r\n }\r\n const exporturl = buildURL(url, params);\r\n await openExportLink(exporturl, undefined, tz);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n const getAllFilteredRows = async (prop: keyof TRow) => {\r\n return new Promise((resolve, reject) => {\r\n const { $top, $skip, ...tableParams } = buildParams(\r\n {\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilterValue: globalFilter as string,\r\n customFilter: customFilter ?? [],\r\n select: [prop],\r\n additionalColumns: additionalColumns,\r\n serviceGroups: serviceGroupsCompared,\r\n isOptionalServiceGroup: ServiceGroupsOptional || false,\r\n expandedColumns: undefined,\r\n predicates: props.predicates ?? [],\r\n useCustomSearch: useCustomSearch,\r\n },\r\n undefined,\r\n undefined,\r\n true,\r\n );\r\n if (tableParams.$filter?.startsWith('() and ')) {\r\n tableParams.$filter = tableParams.$filter.replace('() and ', '');\r\n }\r\n\r\n var oDataParams = getExportForImportParameters(tableParams);\r\n var { url, params } = getUrlAndParams(\r\n api,\r\n oDataParams,\r\n useCustomSearch,\r\n globalFilter as string,\r\n );\r\n httpClient.get(url, params).then(response => {\r\n resolve(response.value);\r\n });\r\n // try {\r\n // const response = await httpClient.get(url, params);\r\n // const rows: TRow[] = response.value;\r\n // resolve(rows.map(f => f.Id as number));\r\n // } catch (error: unknown) {\r\n // resolve([]);\r\n // }\r\n });\r\n };\r\n\r\n const [allRowsSelected, setAllRowsSelected] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const toggleAllRowsSelected = React.useCallback((value?: boolean) => {\r\n setAllRowsSelected(value);\r\n\r\n //resets to undefined if false so that the useEffect will notice a change when next changed to false\r\n // if (!value) {\r\n // setAllRowsSelected(undefined);\r\n // }\r\n }, []);\r\n\r\n /**\r\n * Reloads the table and unselects all rows\r\n */\r\n const handleRefresh = React.useCallback(\r\n event => {\r\n const allAdditionalColumns = getAllAdditionalColumns(\r\n //columnsCompared,\r\n additionalColumns,\r\n configCompleted,\r\n screenId,\r\n configurableColumns,\r\n )?.join('|');\r\n const columnAccessors = calculateColumnAccessors(\r\n //columnsCompared,\r\n configCompleted,\r\n screenId,\r\n configurableColumns,\r\n )?.join('|');\r\n const columnsConfig = isFetchReady(\r\n columnAccessors,\r\n allAdditionalColumns,\r\n configCompleted,\r\n );\r\n if (columnsConfig === false) {\r\n return;\r\n }\r\n if (event?.reloadConfigurableColumns === true && screenId !== undefined) {\r\n refreshConfigurableColumns();\r\n //return;\r\n }\r\n if (props.useRowSelect && !initialState?.selectedRowIds) {\r\n toggleAllRowsSelected(false);\r\n }\r\n fetchData(\r\n {\r\n api,\r\n predicates: props.predicates ?? [],\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilterValue: globalFilter as string,\r\n customFilter: customFilter ?? [],\r\n serviceGroups: serviceGroupsCompared,\r\n isOptionalServiceGroup: ServiceGroupsOptional || false,\r\n useCustomSearch: useCustomSearch,\r\n ...columnsConfig,\r\n },\r\n httpClient.cancelToken.source().token,\r\n );\r\n },\r\n [\r\n ServiceGroupsOptional,\r\n additionalColumns,\r\n api,\r\n calculateColumnAccessors,\r\n configCompleted,\r\n configurableColumns,\r\n customFilter,\r\n fetchData,\r\n getAllAdditionalColumns,\r\n globalFilter,\r\n initialState?.selectedRowIds,\r\n pageIndex,\r\n pageSize,\r\n props.predicates,\r\n props.useRowSelect,\r\n refreshConfigurableColumns,\r\n screenId,\r\n serviceGroupsCompared,\r\n sortBy,\r\n toggleAllRowsSelected,\r\n useCustomSearch,\r\n ],\r\n );\r\n\r\n const refreshFromState = React.useCallback(() => {\r\n dispatch(layoutActions.setRefreshTable(false));\r\n const event = { reloadConfigurableColumns: true };\r\n handleRefresh(event);\r\n }, [dispatch, layoutActions, handleRefresh]);\r\n\r\n React.useEffect(() => {\r\n if (needRefresh !== undefined && needRefresh === true) {\r\n handleRefresh();\r\n }\r\n if (doRefresh === true) {\r\n refreshFromState();\r\n }\r\n }, [doRefresh, needRefresh, handleRefresh, refreshFromState]);\r\n\r\n React.useEffect(() => {\r\n onPageSizeChanged?.(pageSize);\r\n }, [onPageSizeChanged, pageSize]);\r\n\r\n React.useEffect(() => {\r\n onPageIndexChanged?.(pageIndex);\r\n }, [onPageIndexChanged, pageIndex]);\r\n\r\n const loading = dataState?.loading ?? true;\r\n\r\n if (dataState.initComplete !== true) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n}\r\nfunction getUrlAndParams(\r\n api: string | IPathAndQuery,\r\n oDataParams: {\r\n $skip?: number;\r\n $top?: number;\r\n $count?: boolean;\r\n $select?: string;\r\n $orderby?: string | undefined;\r\n $filter?: string | undefined;\r\n $format?: string;\r\n $expand?: string;\r\n },\r\n useCustomSearch?: boolean,\r\n searchText?: string,\r\n) {\r\n var url = typeof api === 'string' ? api : (api as IPathAndQuery).path;\r\n var search = (api as IPathAndQuery).search;\r\n if (useCustomSearch) {\r\n search = { ...search, q: quoteODataValue(searchText || '') };\r\n }\r\n const params = { ...oDataParams, ...search };\r\n return { url, params };\r\n}\r\n\r\n/**\r\n * Determines if fetchData function is ready to be called\r\n * @param configCompleted configCompleted - sourced from the configurable columns\r\n * @param columnAccessors column accessors used to fetch data\r\n * @param allAdditionalColumns additional column accessors used to fetch data\r\n * @returns returns either false in the case and configurable columns will return a bit later, or non-undefined accessors that can be used in the fetchData function\r\n */\r\nfunction isFetchReady(\r\n columnAccessorsString: string | undefined,\r\n allAdditionalColumnsString: string | undefined,\r\n configCompleted: boolean,\r\n):\r\n | false\r\n | {\r\n columns: Array;\r\n additionalColumns: Array;\r\n } {\r\n if (!configCompleted) {\r\n return false;\r\n } else if (columnAccessorsString === undefined) {\r\n return false;\r\n } else if (allAdditionalColumnsString === undefined) {\r\n return false;\r\n } else {\r\n return {\r\n columns: columnAccessorsString?.split('|') as Array,\r\n additionalColumns: allAdditionalColumnsString?.split('|') as Array<\r\n keyof TRow\r\n >,\r\n };\r\n }\r\n}\r\n","import { DependencyList, useEffect, useState } from 'react';\r\n\r\nexport const useAsyncGetWithEffect = (\r\n load: () => Promise,\r\n defaultVal: T,\r\n deps?: DependencyList,\r\n setBusy?: (busy: boolean) => void,\r\n) => {\r\n const [val, setVal] = useState(defaultVal);\r\n useEffect(() => {\r\n let mounted = true;\r\n setBusy?.(true);\r\n (async () => {\r\n try {\r\n const res = await load();\r\n if (mounted) {\r\n setVal(() => res);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n if (mounted) {\r\n setBusy?.(false);\r\n }\r\n } finally {\r\n if (mounted) {\r\n setBusy?.(false);\r\n }\r\n }\r\n })();\r\n return () => {\r\n mounted = false;\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n return val;\r\n};\r\n","import * as log from 'loglevel';\r\nimport * as prefix from 'loglevel-plugin-prefix';\r\n\r\nlog.enableAll();\r\n\r\nprefix.apply(log, {\r\n template: '[%t] %l (%n):',\r\n levelFormatter(level) {\r\n return level.toUpperCase();\r\n },\r\n nameFormatter(name) {\r\n return name || 'global';\r\n },\r\n timestampFormatter(date) {\r\n return date.toISOString();\r\n },\r\n});\r\n\r\nlog.setDefaultLevel(process.env.NODE_ENV === 'development' ? 'DEBUG' : 'INFO');\r\nlog.info('%s prefix', 'template');\r\n\r\nglobalThis.logLevel = log;\r\n\r\nexport const getLogger = log.getLogger;\r\n","import * as React from 'react';\r\n\r\nexport interface BooleanRenderProps {\r\n value?: boolean | null;\r\n}\r\n\r\nexport const BooleanRender = (props: BooleanRenderProps) => {\r\n return {props.value === true ? 'Yes' : 'No'};\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { PUBLIC_ASSETS_PATH } from 'app/pages/PublicAssets/PUBLIC_ASSETS_PATH';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { Entity } from 'types/common';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { Notification } from 'types/Notification';\r\nimport { SiteMapSettings } from 'types/SiteMapSettings';\r\nimport { UserProfileSettings } from 'types/UserProfileSettings';\r\nimport { ISettingModel } from 'api/odata/generated/entities/ISettingModel';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { calendarPageDefaultPath } from 'app/pages/CalendarPage/calendarPageDefaultPath';\r\n/* --- STATE --- */\r\n\r\n/**\r\n * AppSettings state interface\r\n * TODO: auto generate based on bkt_webApp.Api.V4.Models.SettingsModel\r\n */\r\nexport interface AppSettingsState {\r\n error: string | null;\r\n loadingAppSettings: boolean;\r\n appSettings: AppSettings | null;\r\n loadingAuthenticatedUser: boolean;\r\n loadingSiteMapSettings: boolean;\r\n authenticatedUser?: IAuthenticatedUser;\r\n currentLocaleId?: string;\r\n notifications: Notification[];\r\n siteMapSettings: SiteMapSettings | null;\r\n //siteMapProvider: SiteMapProvider | null;\r\n eventsCount: number;\r\n loadingEventsCount: boolean;\r\n userProfileSettings: UserProfileSettings[];\r\n loadingUserProfileSettings: boolean;\r\n updatedUserProfileSettings: boolean;\r\n isExpanded: boolean;\r\n systemSettings: ISettingModel[];\r\n loadingSystemSettings: boolean;\r\n isAuthenticated?: boolean;\r\n /**\r\n * List of Service Groups selected by the user in the global service group filter aka Top Sg filter\r\n */\r\n globalServiceGroupFilter: Entity[] | undefined;\r\n specificServiceGroupFilter: Entity[] | undefined;\r\n showGlobalServiceGroupFilter: boolean;\r\n allServiceGroupsSelectable?: Entity[] | undefined;\r\n isFullScreen: boolean;\r\n barcodeScanTarget?: ScanTarget;\r\n showAllCores?: boolean;\r\n subBarCollapsed?: boolean;\r\n updatedExpandState?: boolean;\r\n skipLocationChanged?: boolean;\r\n manualScanProcessing?: boolean;\r\n}\r\n\r\nexport type ContainerState = AppSettingsState;\r\n\r\nexport enum LoginTypes {\r\n Password,\r\n InternalId,\r\n}\r\nexport type ISaveUserProfileSettingPayload = Pick<\r\n UserProfileSettings,\r\n 'Key' | 'Value' | 'UserName' | 'Enabled'\r\n>;\r\nexport type SaveUserProfileSettingAction =\r\n PayloadAction;\r\nexport interface NoAuthSettings {\r\n defaultUserGroup?: Entity;\r\n registrationEnabled?: boolean;\r\n requiredUserProps: string[];\r\n hiddenUserProps: string[];\r\n}\r\nexport const anonimusUrls = [\r\n 'registeraccount',\r\n PUBLIC_ASSETS_PATH,\r\n calendarPageDefaultPath,\r\n 'assets/details',\r\n 'ssoerrors',\r\n];\r\nexport enum ScanTarget {\r\n All,\r\n Consumables = 1,\r\n Asset = 2,\r\n Inventory = 3,\r\n Login = 4,\r\n}\r\nexport interface BarcodeData {\r\n data: string;\r\n key: ScanTarget;\r\n}\r\nexport interface LoginSettingsModel {\r\n Modules?: KnownModules[];\r\n settings?: ISettingModel[];\r\n LoginScreenCompanyLogoLink?: string;\r\n LoginScreenCompanyLogo?: string;\r\n LoginScreenCompanyLogoHeight?: string;\r\n ShowForgotPassword?: boolean;\r\n Help_Login?: string;\r\n WebVersion?: string;\r\n LastCodeUpdate?: Date;\r\n}\r\nexport enum ScanTemplateResult {\r\n Asset,\r\n Room,\r\n Location,\r\n SubLocation,\r\n Plate,\r\n External,\r\n Internal,\r\n}\r\nexport interface BarcodeScanResult {\r\n url: string;\r\n type: ScanTemplateResult;\r\n InternalCode?: string;\r\n RoomId?: string;\r\n LocationId?: string;\r\n SubLocationId?: string;\r\n PlateId?: string;\r\n external?: boolean;\r\n}\r\nexport function parseAssetUrl(\r\n data: string,\r\n appSettings: AppSettings,\r\n): BarcodeScanResult | undefined {\r\n try {\r\n // const publicBaseURL = new URL(appSettings.PublicBaseUrl);\r\n const template =\r\n appSettings.AssetBarcodeRelativeUrlTemplate.indexOf('?') >= 0\r\n ? appSettings.AssetBarcodeRelativeUrlTemplate.split('?').join('/')\r\n : appSettings.AssetBarcodeRelativeUrlTemplate;\r\n\r\n const regExpTemplate = template.replace(/:([^\\\\}]+)/g, '(?<$1>\\\\d+)');\r\n\r\n var url = new URL(data);\r\n const path = url.pathname + url.search;\r\n let toCompareUrl =\r\n path.indexOf('?') >= 0 ? path.split('?').join('/') : path;\r\n let internalCode: string | undefined = undefined;\r\n let regObject = new RegExp(regExpTemplate).exec(toCompareUrl);\r\n if (regObject !== null) {\r\n let groups = regObject.groups;\r\n if (groups !== undefined) {\r\n internalCode = groups['internalCode'];\r\n }\r\n }\r\n if (internalCode !== undefined) {\r\n let resUrl = buildURL(`${appSettings.PublicBaseUrl}Assets/Details.aspx`, {\r\n InternalCode: internalCode,\r\n });\r\n return {\r\n type: ScanTemplateResult.Asset,\r\n url: resUrl,\r\n InternalCode: internalCode,\r\n } as BarcodeScanResult;\r\n }\r\n return undefined;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n}\r\nfunction parseRoomUrl(\r\n data: string,\r\n appSettings: AppSettings,\r\n): BarcodeScanResult | undefined {\r\n try {\r\n // const publicBaseURL = new URL(appSettings.PublicBaseUrl);\r\n const template =\r\n appSettings.RoomBarcodeRelativeUrlTemplate.indexOf('?') >= 0\r\n ? appSettings.RoomBarcodeRelativeUrlTemplate.split('?').join('/')\r\n : appSettings.RoomBarcodeRelativeUrlTemplate;\r\n\r\n const regExpTemplate = template.replace(\r\n /\\{\\{([^\\\\}]+)\\}\\}/g,\r\n '(?<$1>\\\\d+)',\r\n );\r\n\r\n var url = new URL(data);\r\n let toCompareUrl =\r\n url.pathname.indexOf('?') >= 0\r\n ? url.pathname.split('?').join('/')\r\n : url.pathname;\r\n let roomId: string | undefined = undefined;\r\n let regObject = new RegExp(regExpTemplate).exec(toCompareUrl);\r\n if (regObject !== null) {\r\n let groups = regObject.groups;\r\n if (groups !== undefined) {\r\n roomId = groups['Id'];\r\n }\r\n }\r\n if (roomId !== undefined) {\r\n let resUrl = buildURL(`${appSettings.PublicBaseUrl}Assets/Public`, {\r\n RoomId: roomId,\r\n });\r\n return {\r\n type: ScanTemplateResult.Room,\r\n url: resUrl,\r\n RoomId: roomId,\r\n } as BarcodeScanResult;\r\n }\r\n return undefined;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n}\r\nexport function parseLocationUrl(\r\n data: string,\r\n appSettings: AppSettings,\r\n): BarcodeScanResult | undefined {\r\n try {\r\n // const publicBaseURL = new URL(appSettings.PublicBaseUrl);\r\n const template =\r\n appSettings.LocationBarcodeRelativeUrlTemplate.indexOf('?') >= 0\r\n ? appSettings.LocationBarcodeRelativeUrlTemplate.split('?').join('/')\r\n : appSettings.LocationBarcodeRelativeUrlTemplate;\r\n\r\n const regExpTemplate = template.replace(\r\n /\\{\\{([^\\\\}]+)\\}\\}/g,\r\n '(?<$1>\\\\d+)',\r\n );\r\n\r\n var url = new URL(data);\r\n let toCompareUrl =\r\n url.pathname.indexOf('?') >= 0\r\n ? url.pathname.split('?').join('/')\r\n : url.pathname;\r\n let locationId: string | undefined = undefined;\r\n let roomId: string | undefined = undefined;\r\n let regObject = new RegExp(regExpTemplate).exec(toCompareUrl);\r\n if (regObject !== null) {\r\n let groups = regObject.groups;\r\n if (groups !== undefined) {\r\n locationId = groups['Id'];\r\n roomId = groups['RoomId'];\r\n }\r\n }\r\n if (locationId !== undefined && roomId !== undefined) {\r\n let resUrl = buildURL(`${appSettings.PublicBaseUrl}Assets/Public`, {\r\n RoomId: roomId,\r\n locationid: locationId,\r\n });\r\n return {\r\n type: ScanTemplateResult.Location,\r\n url: resUrl,\r\n RoomId: roomId,\r\n LocationId: locationId,\r\n } as BarcodeScanResult;\r\n }\r\n return undefined;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n}\r\nexport function parseSubLocationUrl(\r\n data: string,\r\n appSettings: AppSettings,\r\n): BarcodeScanResult | undefined {\r\n try {\r\n // const publicBaseURL = new URL(appSettings.PublicBaseUrl);\r\n const template =\r\n appSettings.SubLocationBarcodeRelativeUrlTemplate.indexOf('?') >= 0\r\n ? appSettings.SubLocationBarcodeRelativeUrlTemplate.split('?').join('/')\r\n : appSettings.SubLocationBarcodeRelativeUrlTemplate;\r\n\r\n const regExpTemplate = template.replace(\r\n /\\{\\{([^\\\\}]+)\\}\\}/g,\r\n '(?<$1>\\\\d+)',\r\n );\r\n\r\n var url = new URL(data);\r\n let toCompareUrl =\r\n url.pathname.indexOf('?') >= 0\r\n ? url.pathname.split('?').join('/')\r\n : url.pathname;\r\n let subLocationId: string | undefined = undefined;\r\n let locationId: string | undefined = undefined;\r\n let roomId: string | undefined = undefined;\r\n let regObject = new RegExp(regExpTemplate).exec(toCompareUrl);\r\n if (regObject !== null) {\r\n let groups = regObject.groups;\r\n if (groups !== undefined) {\r\n subLocationId = groups['Id'];\r\n locationId = groups['LocationListId'];\r\n roomId = groups['RoomId'];\r\n }\r\n }\r\n if (\r\n subLocationId !== undefined &&\r\n locationId !== undefined &&\r\n roomId !== undefined\r\n ) {\r\n let resUrl = buildURL(`${appSettings.PublicBaseUrl}Assets/Public`, {\r\n RoomId: roomId,\r\n locationid: locationId,\r\n sublocationid: subLocationId,\r\n });\r\n return {\r\n type: ScanTemplateResult.SubLocation,\r\n url: resUrl,\r\n RoomId: roomId,\r\n LocationId: locationId,\r\n SubLocationId: subLocationId,\r\n } as BarcodeScanResult;\r\n }\r\n return undefined;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function parseBarcodeURL(\r\n data: string,\r\n appSettings: AppSettings,\r\n): BarcodeScanResult | undefined {\r\n try {\r\n data = data.replace(/=/g, '='); // for backward compatibility\r\n let assetScanned = parseAssetUrl(data, appSettings);\r\n let subLocationScanned = parseSubLocationUrl(data, appSettings);\r\n let locationScanned = parseLocationUrl(data, appSettings);\r\n let roomScanned = parseRoomUrl(data, appSettings);\r\n if (!!assetScanned) {\r\n return assetScanned;\r\n }\r\n if (!!subLocationScanned) {\r\n return subLocationScanned;\r\n }\r\n if (!!locationScanned) {\r\n return locationScanned;\r\n }\r\n if (!!roomScanned) {\r\n return roomScanned;\r\n }\r\n return undefined;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n}\r\nexport function parseBarcode(\r\n data: string,\r\n appSettings: AppSettings,\r\n): BarcodeScanResult | undefined {\r\n try {\r\n // in case when barcode come as URL, try to create url...\r\n var url = new URL(data);\r\n var isLocal = url\r\n .toString()\r\n .toLowerCase()\r\n .startsWith(appSettings.PublicBaseUrl.toLowerCase());\r\n if (!isLocal) {\r\n return {\r\n url: url.toString(),\r\n type: ScanTemplateResult.External,\r\n InternalCode: data,\r\n external: true,\r\n };\r\n } else {\r\n return parseBarcodeURL(data, appSettings);\r\n }\r\n } catch (error) {\r\n return {\r\n url: buildURL(`${appSettings.PublicBaseUrl}Assets/Details.aspx`, {\r\n InternalCode: data,\r\n }),\r\n type: ScanTemplateResult.Internal,\r\n InternalCode: data,\r\n } as BarcodeScanResult;\r\n }\r\n}\r\nexport type LocaleIdentifier = {\r\n language: string;\r\n region: string;\r\n};\r\n","export enum OnlineServiceType {\r\n Software = 0,\r\n Relay = 1,\r\n IpRelay = 2,\r\n UsageForm = 3,\r\n DoorAccess = 4,\r\n WebRelayTm = 5,\r\n NiDAQmx = 7,\r\n LoanDesk = 6,\r\n Room = 10,\r\n KmTronicRelay = 11,\r\n WebRelayX600m = 12,\r\n RaspberryPi = 13,\r\n}\r\n","import { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { translations } from 'locales/translations';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { PrimaryActionDynamic } from 'app/components/BasicTable/components/TableCard/PrimaryAction';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectglobalSettings, selectPublicUrl } from 'app/slice/selectors';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { UserDetailsProps } from '../Details';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport styled from 'styled-components';\r\nimport { useUserPermissions } from 'app/permissions/Users/useUserPermissions';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nexport type UserProfileLinkProps = {\r\n userName?: string;\r\n displayName?: string;\r\n children?: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n openOnNewTab?: boolean;\r\n twoRows?: boolean;\r\n};\r\nexport interface UserNameFormattedProps {\r\n UserId?: string;\r\n DisplayName?: string;\r\n twoRows?: boolean;\r\n}\r\nexport const UserNameFormatted = React.forwardRef(\r\n function UserProfileName(props, ref) {\r\n const { UserId, DisplayName, twoRows = true, ...rest } = props;\r\n const settings = useSelector(selectglobalSettings);\r\n const format = React.useMemo(() => {\r\n return settings.GetString(AllowedSettings.UserFormatResult);\r\n }, [settings]);\r\n\r\n return (\r\n \r\n {!!DisplayName && DisplayName}\r\n {format === 'DisplayNameUserName' && !!UserId ? (\r\n <>\r\n {twoRows &&
}\r\n {` (${UserId}) `}\r\n \r\n ) : (\r\n <>{!DisplayName && !!UserId && UserId}\r\n )}\r\n
\r\n );\r\n },\r\n);\r\nexport const UserProfileLink = (props: UserProfileLinkProps) => {\r\n const { t } = useTranslation();\r\n const openProfile = useOpenUserProfilePopUp();\r\n\r\n const getUrl = useUserProfileLinkUrl();\r\n const link = getUrl({\r\n un: props.userName,\r\n });\r\n const open = () => {\r\n openProfile(\r\n {\r\n useSidePanel: props.useSidePanel,\r\n un: props.userName,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n const { allowedToView } = useUserPermissions();\r\n return allowedToView({ Name: props.userName ?? '' }) ? (\r\n \r\n \r\n \r\n\r\n {!!props.children ? (\r\n <>{props.children}\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n ) : (\r\n \r\n {!!props.children ? (\r\n <>{props.children}\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport type UseOpenUserProfilePopUpProps = {\r\n un?: string;\r\n useSidePanel?: boolean;\r\n};\r\nexport const useOpenUserProfilePopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n const settings = useSelector(selectglobalSettings);\r\n const openAsSidePanel = React.useMemo(() => {\r\n return settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.OpenUserProfileOnSidePanel],\r\n );\r\n }, [settings]);\r\n return React.useCallback(\r\n (\r\n props: UseOpenUserProfilePopUpProps,\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n const userName = props.un;\r\n if (userName !== undefined && userName !== '') {\r\n const userPopupProps: UserDetailsProps = {\r\n userName: userName,\r\n useSidePanel: props.useSidePanel ?? false,\r\n };\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover({\r\n renderPageType: RenderPageType.UserProfile,\r\n renderPageProps: userPopupProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n });\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.UserProfile,\r\n renderPageProps: userPopupProps,\r\n expanded: !openAsSidePanel,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n }\r\n },\r\n [openAsSidePanel, openPanel],\r\n );\r\n};\r\nexport const useUserProfileLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n return React.useCallback(\r\n (params: { un?: string }) => {\r\n return buildURL(`${publicUrl}User/Profile`, params);\r\n },\r\n [publicUrl],\r\n );\r\n};\r\n\r\ninterface PrimaryActionDynamicRow extends IRow {\r\n Name?: string;\r\n}\r\n\r\n//used for Dashboard tadles\r\nexport const OpenUserProfilePrimaryAction: PrimaryActionDynamic<\r\n PrimaryActionDynamicRow\r\n> = (openPanel, row, toggle, user, useSidePanel) => {\r\n const userName = row.original.Name;\r\n if (userName === undefined) {\r\n console.error('no user name found for row ', row);\r\n } else {\r\n const props: UserDetailsProps = {\r\n userName: userName,\r\n useSidePanel: useSidePanel ?? false,\r\n screenType: 'UserProfile',\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.UserProfile,\r\n renderPageProps: props,\r\n useSidePanel: useSidePanel,\r\n expanded: false,\r\n isCover: useSidePanel,\r\n });\r\n }\r\n};\r\nconst UserNameFormated = styled.span`\r\n &.user-formated {\r\n margin-left: 8px;\r\n }\r\n`;\r\n","import { TFunctionResult } from 'i18next';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\n\r\nimport { Link as MuiLink } from '@material-ui/core';\r\nimport React from 'react';\r\n\r\nexport interface AccessibleMuiLinkProps {\r\n title: React.ReactNode | TFunctionResult;\r\n children: React.ReactNode;\r\n link?: string;\r\n onLinkClick?: () => void;\r\n linkId?: string;\r\n}\r\n\r\nexport function AccessibleMuiLink(props: AccessibleMuiLinkProps) {\r\n const { link, title, children, onLinkClick, linkId } = props;\r\n const [tooltipOpen, setTooltipOpen] = React.useState(false);\r\n\r\n const handleFocus = () => {\r\n setTooltipOpen(true);\r\n };\r\n\r\n const handleBlur = () => {\r\n setTooltipOpen(false);\r\n };\r\n\r\n const handleClick = () => {\r\n setTooltipOpen(false); // Hide the tooltip when the link is clicked\r\n };\r\n return (\r\n \r\n {\r\n if (!!link) {\r\n if (!event.ctrlKey) {\r\n event.preventDefault();\r\n onLinkClick?.();\r\n }\r\n } else {\r\n onLinkClick?.();\r\n }\r\n handleClick();\r\n }}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n onKeyDown={event => {\r\n if (event.key === 'Enter') {\r\n handleClick();\r\n }\r\n }}\r\n onMouseEnter={handleFocus}\r\n onMouseLeave={handleBlur}\r\n color=\"textPrimary\"\r\n href={link}\r\n >\r\n {children}\r\n \r\n \r\n );\r\n}\r\n","export const DRAWER_WIDTH: number = 240;\r\nexport const DRAWER_WIDTH_SHORT: number = 60;\r\nexport const DRAWER_MOBILE_WIDTH: number = 350;\r\nexport const SIDE_PANEL_WIDTH: number = 370;\r\nexport const COVER_WIDTH: number = 360;\r\nexport const MAX_POPER_WIDTH: number = 2700;\r\nexport const MAX_COVER_EXPANDED_WIDTH: number = 1400;\r\n","export enum ArticleStatus {\r\n AwaitingApproval,\r\n Approved,\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) =>\r\n state.connectedFilters || initialState;\r\n\r\nexport const selectConnectedFilters = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\n\r\nexport const selectConnectedFiltersProcessing = createSelector(\r\n [selectConnectedFilters],\r\n state => state.processing,\r\n);\r\n\r\nexport const selectConnectedFiltersError = createSelector(\r\n [selectConnectedFilters],\r\n state => state.error,\r\n);\r\n\r\nexport const selectConnectedFiltersData = createSelector(\r\n [selectConnectedFilters],\r\n state => state.data,\r\n);\r\nexport const selectConnectedFieldHandler = createSelector(\r\n [selectConnectedFilters],\r\n state => state.connectedValueHandler,\r\n);\r\nexport const selectConnectedSettings = createSelector(\r\n [selectConnectedFilters],\r\n state => state.connectedSettings,\r\n);\r\n","/**\r\n *\r\n * BudgetPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport {\r\n IBudgetFilterDto,\r\n IBudgetMembersDto,\r\n} from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport {\r\n Condition,\r\n ODataOperators,\r\n quoteODataValue,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport { BudgetsUrl } from '../BudgetMultiPicker';\r\n\r\nexport interface BudgetPickerProps\r\n extends Omit, 'loadData'> {\r\n name?: string;\r\n placeholder?: string;\r\n onBlur?: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n useSearchOrPredicate?: boolean;\r\n urlType?: BudgetsUrl;\r\n}\r\n\r\nconst url = '/api/odata/v4/Budgets';\r\nconst allBudgetsUrl = '/api/odata/v4/Budgets/AllBudgets';\r\n\r\nexport const initBudgetData = (\r\n initval: string | undefined,\r\n sourceUrl?: BudgetsUrl,\r\n select?: (keyof IBudgetFilterDto)[],\r\n expand?: (keyof Pick<\r\n IBudgetFilterDto,\r\n | 'AllowedServices'\r\n | 'AdGroupUsers'\r\n | 'ApprovedUsers'\r\n | 'DefaultBudgetsUsers'\r\n | 'ServiceGroupIds'\r\n >)[],\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n $select: string;\r\n $expand?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $skip: 0,\r\n $top: 1,\r\n $select: !!select\r\n ? select.join(',')\r\n : [\r\n 'Id',\r\n 'Name',\r\n 'UserGroupId',\r\n 'UserGroupName',\r\n 'Active',\r\n 'IsDefault',\r\n 'HideExperiments',\r\n 'FundingTypeId',\r\n 'PurchaseOrderOptionId',\r\n 'ServiceGroupServicesAllowed',\r\n 'UserGroupBudgetMembersAllowed',\r\n 'StartDate',\r\n 'EndDate',\r\n 'Type',\r\n 'ApprovedUsers',\r\n 'DefaultBudgetsUsers',\r\n 'ServiceGroupIds',\r\n 'AllowedServices',\r\n 'AdGroupUsers',\r\n 'Confidential',\r\n ].join(','),\r\n $expand: !!expand ? expand.join(',') : 'AllowedServices,ApprovedUsers',\r\n };\r\n let initUrl = sourceUrl === 'full' ? allBudgetsUrl : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n queryUrl: BudgetsUrl,\r\n predicates: (string | Condition)[] | undefined,\r\n useSearchOrPredicate?: boolean,\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url: queryUrl === 'full' ? allBudgetsUrl : url,\r\n predicates: predicates,\r\n maxTop: 20,\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'UserGroupId',\r\n 'UserGroupName',\r\n 'Active',\r\n 'IsDefault',\r\n 'HideExperiments',\r\n 'FundingTypeId',\r\n 'PurchaseOrderOptionId',\r\n 'ServiceGroupServicesAllowed',\r\n 'UserGroupBudgetMembersAllowed',\r\n 'StartDate',\r\n 'EndDate',\r\n 'Type',\r\n 'ApprovedUsers',\r\n 'DefaultBudgetsUsers',\r\n 'ServiceGroupIds',\r\n 'AllowedServices',\r\n 'AdGroupUsers',\r\n 'Confidential',\r\n ],\r\n expand: 'AllowedServices,ApprovedUsers',\r\n useSearchOrPredicate: useSearchOrPredicate,\r\n });\r\nexport function BudgetPicker(props: BudgetPickerProps) {\r\n const { urlType, predicates, useSearchOrPredicate } = props;\r\n const innerLoadData = loadData(\r\n urlType ?? 'base',\r\n !!predicates ? ['Active eq true', ...predicates] : ['Active eq true'],\r\n useSearchOrPredicate,\r\n );\r\n\r\n return (\r\n \r\n );\r\n}\r\nexport const BudgetByUserGroupFilter = (value: FilterValueType) => {\r\n if (value !== undefined && value !== null) {\r\n return [\r\n `${new Condition(\r\n 'UserGroupId',\r\n ODataOperators.Equals,\r\n null,\r\n ).toString()} or ${new Condition(\r\n 'UserGroupId',\r\n ODataOperators.Equals,\r\n (value as Entity).Id,\r\n ).toString()}`,\r\n ];\r\n }\r\n return [];\r\n};\r\nconst memberTimeFilter = (start?: Date, end?: Date): string => {\r\n let query = '';\r\n if (start === undefined && end === undefined) {\r\n return query;\r\n } else {\r\n if (start !== undefined) {\r\n query += ` and (u/${new Condition(\r\n 'ExpairedDate',\r\n ODataOperators.Equals,\r\n null,\r\n )} or u/${new Condition(\r\n 'ExpairedDate',\r\n ODataOperators.GreaterThanEqual,\r\n new CustomDate(new Date(start), 'date'),\r\n )})`;\r\n }\r\n if (end !== undefined) {\r\n query += ` and (u/${new Condition(\r\n 'ExpairedDate',\r\n ODataOperators.Equals,\r\n null,\r\n )} or u/${new Condition(\r\n 'ExpairedDate',\r\n ODataOperators.GreaterThanEqual,\r\n new CustomDate(new Date(end), 'date'),\r\n )})`;\r\n }\r\n }\r\n return query;\r\n};\r\nexport const loadBudgets = loadData;\r\nexport interface restrictedBudgetFilterProps {\r\n budgetLimitedByUsers: boolean;\r\n isBudgetsWithoutUserGroup: boolean;\r\n userGroupId?: string;\r\n serviceGroupId?: number;\r\n services?: IServiceTypeFilterDto[];\r\n startTime?: Date;\r\n endTime?: Date;\r\n user?: string;\r\n defaultBudgetEnabled?: boolean;\r\n userDefaultBudgetEnabled?: boolean;\r\n hideNonDefaultBudgets?: boolean;\r\n fundingType?: Entity | null;\r\n}\r\nexport function restrictedBudgetFilter({\r\n budgetLimitedByUsers,\r\n isBudgetsWithoutUserGroup,\r\n userGroupId,\r\n serviceGroupId,\r\n services,\r\n startTime,\r\n endTime,\r\n user,\r\n defaultBudgetEnabled,\r\n userDefaultBudgetEnabled,\r\n hideNonDefaultBudgets,\r\n fundingType,\r\n}: restrictedBudgetFilterProps): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (!!budgetLimitedByUsers && user !== undefined) {\r\n /**\r\n * when UserGroupBudgetMembersAllowed, it should give a pass for:\r\n * - all users in case and budget/usergroup field is turned off\r\n * - budgets/s user group users if the field is turned on and populated, all users otherwise\r\n * */\r\n\r\n let UserGroupBudgetMembersAllowed = new Condition(\r\n 'UserGroupBudgetMembersAllowed',\r\n ODataOperators.Equals,\r\n true,\r\n ).toString();\r\n\r\n const budgetUserGroupMembers = isBudgetsWithoutUserGroup\r\n ? undefined\r\n : `(${new Condition(\r\n 'UserGroupId',\r\n ODataOperators.Equals,\r\n null,\r\n )} or ${new Condition(\r\n 'AdGroupUsers',\r\n ODataOperators.Any,\r\n user,\r\n )})`;\r\n const u = [UserGroupBudgetMembersAllowed, budgetUserGroupMembers]\r\n .filter(f => f !== undefined)\r\n .join(' and ');\r\n\r\n let usrFilter = `((${u}) or (ApprovedUsers/any(u: u/UserName eq ${quoteODataValue(\r\n user,\r\n )} ${memberTimeFilter(startTime, endTime)})))`;\r\n predicates.push(usrFilter);\r\n }\r\n if (!isBudgetsWithoutUserGroup) {\r\n if (userGroupId !== undefined) {\r\n predicates.push(\r\n new Condition(\r\n 'UserGroupId',\r\n ODataOperators.Equals,\r\n userGroupId,\r\n ),\r\n );\r\n } else {\r\n predicates.push(\r\n new Condition(\r\n 'UserGroupId',\r\n ODataOperators.NotEquals,\r\n null,\r\n ),\r\n );\r\n }\r\n }\r\n const fundingTypeId = fundingType?.Id ?? undefined;\r\n if (fundingTypeId !== undefined) {\r\n predicates.push(\r\n new Condition(\r\n 'FundingTypeId',\r\n ODataOperators.Equals,\r\n fundingTypeId,\r\n ),\r\n );\r\n }\r\n\r\n if (startTime !== undefined || (endTime !== undefined && false)) {\r\n let startFilter = start =>\r\n `(${new Condition(\r\n 'StartDate',\r\n ODataOperators.Equals,\r\n null,\r\n )} or ${new Condition(\r\n 'StartDate',\r\n ODataOperators.LessThanEqual,\r\n start,\r\n )}) and (${new Condition(\r\n 'EndDate',\r\n ODataOperators.Equals,\r\n null,\r\n )} or ${new Condition(\r\n 'EndDate',\r\n ODataOperators.GreaterThanEqual,\r\n start,\r\n )})`;\r\n let endFilter = end =>\r\n `(${new Condition(\r\n 'StartDate',\r\n ODataOperators.Equals,\r\n null,\r\n )} or ${new Condition(\r\n 'StartDate',\r\n ODataOperators.LessThanEqual,\r\n end,\r\n )}) and (${new Condition(\r\n 'EndDate',\r\n ODataOperators.Equals,\r\n null,\r\n )} or ${new Condition(\r\n 'EndDate',\r\n ODataOperators.GreaterThanEqual,\r\n end,\r\n )})`;\r\n if (!!startTime && endTime === undefined) {\r\n predicates.push(startFilter(new CustomDate(new Date(startTime), 'date')));\r\n } else if (!!endTime && startTime === undefined) {\r\n predicates.push(endFilter(new CustomDate(new Date(endTime), 'date')));\r\n } else if (!!startTime && !!endTime) {\r\n predicates.push(\r\n `(${startFilter(\r\n new CustomDate(new Date(startTime), 'date'),\r\n )} and ${endFilter(new CustomDate(new Date(endTime), 'date'))})`,\r\n );\r\n }\r\n }\r\n if (serviceGroupId !== undefined) {\r\n let groupFilter = `${new Condition(\r\n 'ServiceGroupServicesAllowed',\r\n ODataOperators.Equals,\r\n true,\r\n ).toString()} or ${new Condition(\r\n 'ServiceGroupIds',\r\n ODataOperators.Any,\r\n serviceGroupId,\r\n ).toString()}`;\r\n predicates.push(groupFilter);\r\n }\r\n if (services !== undefined && services.length > 0) {\r\n let list = services\r\n .map(f => {\r\n return `(AllowedServices/any(s: s/Id eq ${quoteODataValue(\r\n f.Id,\r\n )} and s/ServiceTypeId eq ${\r\n f.ServiceTypeId\r\n }) or ServiceGroupIds/any(g: g eq ${quoteODataValue(\r\n f.ServiceGroupId,\r\n )}))`;\r\n })\r\n .join(' and ');\r\n let servFilter = `(${new Condition(\r\n 'ServiceGroupServicesAllowed',\r\n ODataOperators.Equals,\r\n true,\r\n ).toString()} or (${list}))`;\r\n predicates.push(servFilter);\r\n }\r\n // if (isDefault) {\r\n // predicates.push(\r\n // new Condition('IsDefault', ODataOperators.Equals, true),\r\n // );\r\n // }\r\n if (hideNonDefaultBudgets) {\r\n let deffFilter: (string | Condition)[] = [];\r\n if (defaultBudgetEnabled) {\r\n deffFilter.push(\r\n new Condition(\r\n 'IsDefault',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n }\r\n if (userDefaultBudgetEnabled && user !== undefined) {\r\n deffFilter.push(\r\n new Condition(\r\n 'DefaultBudgetsUsers',\r\n ODataOperators.Any,\r\n user,\r\n ),\r\n );\r\n }\r\n if (deffFilter.length > 0) {\r\n predicates.push(deffFilter.map(f => f.toString()).join(' or '));\r\n }\r\n }\r\n predicates.push(\r\n new Condition('Active', ODataOperators.Equals, true),\r\n );\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n","import { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { AvailabilityTypes } from 'api/odata/generated/enums/AvailabilityTypes';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\n\r\nexport enum RenderTypes {\r\n AddToList = 0,\r\n AddWorkOrder,\r\n DownWorkOrder,\r\n BringBackUp,\r\n OpenCalendar,\r\n OpenTimeline,\r\n OpenWorkOrder,\r\n OpenWorkOrders,\r\n NewReservation,\r\n CloneEquipments,\r\n DownloadImages,\r\n ExportQRCodes,\r\n PrintAssetLabels,\r\n ExportForImport,\r\n UpgradeLocalApp,\r\n}\r\n\r\nexport const AllowedToRender = (\r\n user: AuthenticatedUser | undefined,\r\n renderType: RenderTypes,\r\n asset: Pick<\r\n IAssetDto,\r\n 'ServiceGroupId' | 'ServiceTypeId' | 'ServiceId' | 'Availability'\r\n >,\r\n) => {\r\n return (\r\n AllowedByRolePermissions(user, renderType, asset) &&\r\n AvailableByServiceType(asset.ServiceTypeId ?? -1, renderType) &&\r\n AvailableByAvailabilityType(\r\n asset.Availability !== undefined ? asset.Availability.Id : -1,\r\n renderType,\r\n )\r\n );\r\n};\r\nexport const AllowedByRolePermissions = (\r\n user: AuthenticatedUser | undefined,\r\n renderType: RenderTypes,\r\n asset: Pick<\r\n IAssetDto,\r\n 'ServiceGroupId' | 'ServiceTypeId' | 'ServiceId' | 'Availability'\r\n >,\r\n) => {\r\n switch (renderType) {\r\n case RenderTypes.AddToList:\r\n case RenderTypes.AddWorkOrder:\r\n case RenderTypes.OpenCalendar:\r\n case RenderTypes.OpenTimeline:\r\n case RenderTypes.OpenWorkOrder:\r\n case RenderTypes.OpenWorkOrders:\r\n case RenderTypes.NewReservation:\r\n return user?.IsReadOnlyUser() === false;\r\n case RenderTypes.DownWorkOrder:\r\n case RenderTypes.BringBackUp:\r\n case RenderTypes.ExportQRCodes:\r\n case RenderTypes.PrintAssetLabels:\r\n case RenderTypes.UpgradeLocalApp:\r\n if (!user) {\r\n return false;\r\n }\r\n return (\r\n user.HasAdminGroupPermissions(asset.ServiceGroupId ?? undefined) ||\r\n user.HasAdminServicePermissions(\r\n asset.ServiceTypeId ?? 0,\r\n asset.ServiceId ?? undefined,\r\n ) ||\r\n user.HasLabTechGroupPermissions(asset.ServiceGroupId ?? undefined)\r\n );\r\n case RenderTypes.CloneEquipments:\r\n case RenderTypes.DownloadImages:\r\n case RenderTypes.ExportForImport:\r\n if (!user) {\r\n return false;\r\n }\r\n return (\r\n user.HasAdminGroupPermissions(asset.ServiceGroupId ?? undefined) ||\r\n user.HasAdminServicePermissions(\r\n asset.ServiceTypeId ?? 0,\r\n asset.ServiceId ?? 0,\r\n )\r\n );\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\nexport const AvailableByServiceType = (\r\n serviceType: number,\r\n renderType: RenderTypes,\r\n) => {\r\n if (serviceType === -1) {\r\n return false;\r\n }\r\n let serType = serviceType as ServiceType;\r\n switch (renderType) {\r\n case RenderTypes.AddToList:\r\n case RenderTypes.AddWorkOrder:\r\n case RenderTypes.BringBackUp:\r\n case RenderTypes.OpenCalendar:\r\n case RenderTypes.OpenTimeline:\r\n case RenderTypes.OpenWorkOrder:\r\n case RenderTypes.OpenWorkOrders:\r\n case RenderTypes.DownWorkOrder:\r\n case RenderTypes.NewReservation:\r\n case RenderTypes.CloneEquipments:\r\n return serType === ServiceType.Online;\r\n case RenderTypes.DownloadImages:\r\n case RenderTypes.ExportForImport:\r\n return (\r\n serType === ServiceType.Online ||\r\n serType === ServiceType.Offline ||\r\n serType === ServiceType.Sample\r\n );\r\n case RenderTypes.ExportQRCodes:\r\n case RenderTypes.PrintAssetLabels:\r\n return serType === ServiceType.Online || serType === ServiceType.Offline;\r\n default:\r\n return false;\r\n }\r\n};\r\nexport const AvailableByAvailabilityType = (\r\n availabilityType: number,\r\n renderType: RenderTypes,\r\n) => {\r\n if (availabilityType === -1) {\r\n return false;\r\n }\r\n let avType = availabilityType as AvailabilityTypes;\r\n switch (renderType) {\r\n case RenderTypes.AddToList:\r\n case RenderTypes.AddWorkOrder:\r\n case RenderTypes.BringBackUp:\r\n case RenderTypes.OpenWorkOrder:\r\n case RenderTypes.OpenWorkOrders:\r\n case RenderTypes.DownWorkOrder:\r\n case RenderTypes.ExportQRCodes:\r\n case RenderTypes.PrintAssetLabels:\r\n return [\r\n //AvailabilityTypes.FreelyBookableBillable,\r\n //AvailabilityTypes.ApprovalRequiredBillable,\r\n AvailabilityTypes.FreelyBookable,\r\n AvailabilityTypes.BookableWApproval,\r\n AvailabilityTypes.TrainingProgram,\r\n AvailabilityTypes.LoanableEquipment,\r\n AvailabilityTypes.LectureRoom,\r\n AvailabilityTypes.AvailableNotBookable,\r\n AvailabilityTypes.NotAvailable,\r\n ].includes(avType);\r\n case RenderTypes.OpenCalendar:\r\n case RenderTypes.OpenTimeline:\r\n case RenderTypes.NewReservation:\r\n case RenderTypes.CloneEquipments:\r\n return [\r\n //AvailabilityTypes.FreelyBookableBillable,\r\n //AvailabilityTypes.ApprovalRequiredBillable,\r\n AvailabilityTypes.FreelyBookable,\r\n AvailabilityTypes.BookableWApproval,\r\n AvailabilityTypes.TrainingProgram,\r\n AvailabilityTypes.LoanableEquipment,\r\n AvailabilityTypes.LectureRoom,\r\n ].includes(avType);\r\n case RenderTypes.DownloadImages:\r\n return true;\r\n case RenderTypes.ExportForImport:\r\n return [\r\n //AvailabilityTypes.FreelyBookableBillable,\r\n //AvailabilityTypes.ApprovalRequiredBillable,\r\n AvailabilityTypes.FreelyBookable,\r\n AvailabilityTypes.BookableWApproval,\r\n AvailabilityTypes.TrainingProgram,\r\n AvailabilityTypes.LoanableEquipment,\r\n AvailabilityTypes.LectureRoom,\r\n AvailabilityTypes.AvailableNotBookable,\r\n AvailabilityTypes.NotAvailable,\r\n AvailabilityTypes.ServiceRelated,\r\n AvailabilityTypes.RequestRelated,\r\n ].includes(avType);\r\n default:\r\n return false;\r\n }\r\n};\r\n","import styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport const SpanPaddingInline8 = styled.span`\r\n padding-inline: 8px;\r\n`;\r\nexport const FlexColumn = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1 0 0;\r\n align-self: stretch;\r\n`;\r\nexport const FlexColumn16 = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n`;\r\nexport const FlexRow = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n &.wrap {\r\n flex-wrap: wrap;\r\n }\r\n`;\r\nexport const FlexRow8 = styled(FlexRow)`\r\n gap: 8px;\r\n`;\r\n\r\nexport const StyledStatusLabel = styled.span<{\r\n variant?: 'success' | 'info' | 'warning' | 'error';\r\n size?: 'small' | 'medium' | 'large';\r\n}>`\r\n &.status-label {\r\n background-color: ${props =>\r\n props.variant === 'success'\r\n ? bookitColors.success.background\r\n : props.variant === 'info'\r\n ? bookitColors.primary.background\r\n : props.variant === 'warning'\r\n ? bookitColors.warning.background\r\n : props.variant === 'error'\r\n ? bookitColors.danger.background\r\n : bookitColors.base.white};\r\n color: ${props =>\r\n props.variant === 'success'\r\n ? bookitColors.success.dark\r\n : props.variant === 'info'\r\n ? bookitColors.primary.dark\r\n : props.variant === 'warning'\r\n ? bookitColors.warning.dark\r\n : props.variant === 'error'\r\n ? bookitColors.danger.dark\r\n : bookitColors.grayscale.blackRegular};\r\n border-radius: 8px;\r\n cursor: pointer;\r\n padding: ${props =>\r\n props.size === 'small' ? 4 : props.size === 'large' ? 10 : 6}px;\r\n }\r\n`;\r\nexport const StyledLimitLabel = styled.span`\r\n &.limit-label {\r\n display: inline-flex;\r\n align-items: center;\r\n & .infinity-icon {\r\n font-size: 24px;\r\n }\r\n }\r\n`;\r\nexport const ErrorsPageWrapper = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n flex-direction: column;\r\n gap: 16px;\r\n padding: 16px;\r\n @media (min-width: 600px) {\r\n flex-direction: row;\r\n gap: 64px;\r\n }\r\n & .icon-section {\r\n font-size: 200px;\r\n @media (min-width: 600px) {\r\n font-size: 400px;\r\n padding-right: 32px;\r\n }\r\n }\r\n & .content-section {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n max-width: 360px;\r\n @media (min-width: 600px) {\r\n max-width: 560px;\r\n }\r\n }\r\n`;\r\nexport const ReadOnlyDetailsRoot = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n grid-gap: 4px;\r\n padding: 0;\r\n width: 100%;\r\n`;\r\nexport const ReadOnlyDetailsColumns = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n grid-gap: 16px;\r\n padding: 16px 0px;\r\n width: 100%;\r\n`;\r\nexport const ReadOnlyDetailsRow = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 0;\r\n width: inherit;\r\n`;\r\n","import { Menu, MenuProps } from '@material-ui/core';\r\nimport { ReactNode, useState } from 'react';\r\nimport { Button, ButtonProps } from '../BasicButtons/Button';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nexport interface DropDownProps extends ButtonProps {\r\n menuChildren: (onClose: () => void) => ReactNode | ReactNode[];\r\n addChevron?: boolean;\r\n menuProps?: Omit;\r\n id?: string;\r\n onOpen?: () => void;\r\n onHandleClose?: () => void;\r\n iconButton?: boolean;\r\n disablePortal?: boolean;\r\n}\r\n\r\nconst IconsContainer = styled.div`\r\n &.icons-container {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const DropDown = ({\r\n onClick,\r\n onMouseDown,\r\n children,\r\n menuChildren,\r\n menuProps,\r\n addChevron,\r\n id,\r\n title,\r\n onOpen,\r\n onHandleClose,\r\n iconButton,\r\n disablePortal,\r\n endIcon,\r\n ...other\r\n}: DropDownProps) => {\r\n const [open, setOpen] = useState(false);\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const { marginThreshold, anchorOrigin, onClose, ...rest } = menuProps ?? {};\r\n const handleOpen = e => {\r\n setAnchorEl(e.currentTarget);\r\n setOpen(!open);\r\n if (!!onOpen) {\r\n onOpen();\r\n }\r\n };\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n setOpen(false);\r\n if (onHandleClose) {\r\n onHandleClose();\r\n }\r\n };\r\n return (\r\n <>\r\n \r\n {iconButton ? (\r\n {\r\n handleOpen(e);\r\n onClick?.(e);\r\n }}\r\n onMouseDown={e => {\r\n handleOpen(e);\r\n onMouseDown?.(e);\r\n }}\r\n aria-haspopup=\"true\"\r\n {...other}\r\n >\r\n {children}\r\n \r\n ) : (\r\n {\r\n handleOpen(e);\r\n onClick?.(e);\r\n }}\r\n onMouseDown={e => {\r\n handleOpen(e);\r\n onMouseDown?.(e);\r\n }}\r\n aria-haspopup=\"true\"\r\n endIcon={\r\n \r\n {addChevron && !!endIcon ? (\r\n \r\n \r\n {endIcon}\r\n \r\n ) : (\r\n \r\n {addChevron && (\r\n \r\n )}\r\n {!!endIcon && endIcon}\r\n \r\n )}\r\n \r\n }\r\n {...other}\r\n >\r\n {children}\r\n \r\n )}\r\n \r\n\r\n {\r\n handleClose();\r\n onClose && onClose(e, r);\r\n }}\r\n anchorOrigin={\r\n anchorOrigin ?? {\r\n vertical: 'bottom',\r\n horizontal: 'right',\r\n }\r\n }\r\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\r\n {...rest}\r\n >\r\n {open && menuChildren(handleClose)}\r\n \r\n \r\n );\r\n};\r\n","import { toRootedURL } from 'utils/url-utils';\r\nimport { DemSize } from '../BasicCards';\r\nexport type ImageSize =\r\n | 'full'\r\n | 'fullLarge'\r\n | 'thumb'\r\n | 'thumbSmall'\r\n | 'thumbLarge'\r\n | 'horizontal'\r\n | 'horizontalLarge'\r\n | 'vertical'\r\n | 'verticalLarge'\r\n | 'Large';\r\n\r\nexport function getAssetImageThumbSrc(\r\n imageName: string | null,\r\n imageSize?: ImageSize,\r\n imageExist?: boolean,\r\n defaultImage?: string,\r\n): string | undefined {\r\n if (imageName === null || imageExist === false) {\r\n return toRootedURL(defaultImage ?? getDefaultImage(imageSize));\r\n }\r\n switch (imageSize) {\r\n case 'full':\r\n case 'fullLarge':\r\n return toRootedURL(`/uploads/assets/${imageName}`);\r\n case 'horizontal':\r\n return toRootedURL(`/uploads/assets/cardhorizontal/${imageName}`);\r\n case 'horizontalLarge':\r\n return toRootedURL(`/uploads/assets/cardhorizontallarge/${imageName}`);\r\n case 'vertical':\r\n return toRootedURL(`/uploads/assets/cardvertical/${imageName}`);\r\n case 'verticalLarge':\r\n return toRootedURL(`/uploads/assets/cardverticallarge/${imageName}`);\r\n case 'thumbSmall':\r\n return toRootedURL(`/uploads/assets/thumbsSmall/${imageName}`);\r\n case 'thumbLarge':\r\n return toRootedURL(`/uploads/assets/thumbsLarge/${imageName}`);\r\n case 'Large':\r\n return toRootedURL(`/uploads/assets/large/${imageName}`);\r\n case 'thumb':\r\n default:\r\n return toRootedURL(`/uploads/assets/thumbs/${imageName}`);\r\n }\r\n}\r\nexport function getDefaultImage(size?: ImageSize) {\r\n switch (size) {\r\n case 'full':\r\n return `/images/200x150.png`;\r\n case 'fullLarge':\r\n return `/images/400x300.png`;\r\n case 'thumb':\r\n return `/images/64x64.png`;\r\n case 'thumbSmall':\r\n return `/images/64x38.png`;\r\n case 'thumbLarge':\r\n return `/images/80x80.png`;\r\n case 'vertical':\r\n return `/images/278x174.png`;\r\n case 'verticalLarge':\r\n return `/images/457x240.png`;\r\n case 'horizontal':\r\n return `/images/180x201.png`;\r\n case 'horizontalLarge':\r\n return `/images/207x201.png`;\r\n case 'Large':\r\n return `/images/1200x800.png`;\r\n case undefined:\r\n default:\r\n return `/images/64x64.png`;\r\n }\r\n}\r\nexport const getDefaultImgSize = (size?: ImageSize): DemSize => {\r\n switch (size) {\r\n case 'full':\r\n return { height: 150, width: 200 };\r\n case 'fullLarge':\r\n return { height: 300, width: 400 };\r\n case 'thumb':\r\n return { height: 64, width: 64 };\r\n case 'thumbSmall':\r\n return { height: 64, width: 38 };\r\n case 'thumbLarge':\r\n return { height: 80, width: 80 };\r\n case 'vertical':\r\n return { height: 278, width: 174 };\r\n case 'verticalLarge':\r\n return { height: 457, width: 240 };\r\n case 'horizontal':\r\n return { height: 180, width: 201 };\r\n case 'horizontalLarge':\r\n return { height: 207, width: 201 };\r\n case 'Large':\r\n return { height: 800, width: 1200 };\r\n case undefined:\r\n default:\r\n return { height: 64, width: 64 };\r\n }\r\n};\r\nexport function getAssetImageSrc(\r\n imageName: string | null,\r\n imageExist?: boolean,\r\n defaultImage?: string,\r\n): string | undefined {\r\n if (imageName === null || imageExist === false) {\r\n return toRootedURL(defaultImage ?? `/images/200x150.png`);\r\n }\r\n return toRootedURL(`/uploads/assets/${imageName}`);\r\n}\r\n","import {\r\n EquipmentsChangeStateParameters,\r\n EquipmentSlotParameters,\r\n ReservationInsertModel,\r\n ReservationModel,\r\n ReservationMultiEvent,\r\n ReservationQueryStringParameters,\r\n TransferToReservation,\r\n} from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport { IStatusReservations } from 'app/pages/ReservationHistoryPage/IStatusReservations';\r\nimport { ITrainingReservations } from 'app/pages/ReservationHistoryPage/ITrainingReservations';\r\nimport { GroupedEquipments } from 'types/Equipments/types';\r\nimport { httpClient } from './HttpClient';\r\n\r\nimport { ISharedReservations } from 'app/pages/ReservationHistoryPage/ISharedReservations';\r\nimport { EndUsageData } from 'app/components/EndUsageConfirm';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { CancelTokenSource } from 'axios';\r\n\r\nexport const ReservationsApi = {\r\n initReservation: (payload: ReservationQueryStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/InitReservation`;\r\n return httpClient.post(url, data, {\r\n timeout: undefined,\r\n });\r\n },\r\n insertReservation: (\r\n payload: ReservationInsertModel,\r\n cancelTokenSource?: CancelTokenSource,\r\n ) => {\r\n const url = `/api/odata/v4/Reservations`;\r\n return httpClient.post(url, payload, {\r\n cancelToken: cancelTokenSource?.token,\r\n });\r\n },\r\n updateReservation: (payload: ReservationModel) => {\r\n const url = `/api/odata/v4/Reservations(${payload.Id})`;\r\n return httpClient.put(url, payload);\r\n },\r\n getReservation: (id: number, params: object) => {\r\n const url = `/api/odata/v4/reservations/${id}`;\r\n return httpClient.get(url, params);\r\n },\r\n getReservationUserTrainingEquipments: (id: number, params?: object) => {\r\n const url = `/api/odata/v4/reservations/${id}/UserTrainingEquipments`;\r\n return httpClient.get(url, params);\r\n },\r\n hasAnyFirstReservations: (\r\n ids: string,\r\n user: string,\r\n reservationId: number,\r\n ) => {\r\n const url = `/api/odata/v4/Reservations/HasAnyFirstReservation`;\r\n return httpClient.post(url, { ids: ids, user: user, id: reservationId });\r\n },\r\n getEquipmentsChangeState: (payload: EquipmentsChangeStateParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/Reservations/GetEquipmentsChangeState';\r\n return httpClient.post(url, data);\r\n },\r\n getReservationValidationState: (payload: EquipmentsChangeStateParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/GetReservationValidationState`;\r\n return httpClient.post(url, data);\r\n },\r\n getReservationSlots: (payload: EquipmentSlotParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/GetReservationSlots`;\r\n return httpClient.post(url, data);\r\n },\r\n validateDuration: (payload: EquipmentsChangeStateParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/ValidateDuration`;\r\n return httpClient.post(url, data);\r\n },\r\n validatePrerequisite: (payload: EquipmentsChangeStateParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/ValidatePrerequisite`;\r\n return httpClient.post(url, data);\r\n },\r\n validatePermissions: (payload: EquipmentsChangeStateParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/ValidatePermissions`;\r\n return httpClient.post(url, data);\r\n },\r\n changeStatus: (payload: EquipmentsChangeStateParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/ChangeStatus`;\r\n return httpClient.post(url, data);\r\n },\r\n getEquipmentsData: (payload: {\r\n q?: string;\r\n value?: string;\r\n ids?: string;\r\n sgid?: string;\r\n avaEqu: boolean;\r\n resStart?: string;\r\n resEnd?: string;\r\n budgetId?: number;\r\n budgetExperimentId?: number;\r\n mandatoryIds?: string;\r\n init?: boolean;\r\n }) => {\r\n const url = '/api/scheduler/reservationEquipments';\r\n return httpClient.get(url, payload);\r\n },\r\n createTraining: (payload: ITrainingReservations[]) => {\r\n const data = {\r\n reservations: payload,\r\n };\r\n const url = '/api/odata/v4/ReservationHistory/CreateTraining';\r\n return httpClient.post(url, data);\r\n },\r\n updateStatus: (payload: IStatusReservations[]) => {\r\n const data = {\r\n reservations: payload,\r\n };\r\n const url = '/api/odata/v4/ReservationHistory/UpdateStatus';\r\n return httpClient.post(url, data);\r\n },\r\n HasFutureReservationsHttp: (equipmentNames: ISharedReservations[]) => {\r\n const data = {\r\n reservations: equipmentNames,\r\n };\r\n // '/api/odata/v4/ReservationHistory/HasEquipmentFutureReservations'\r\n // /api/ICalController/HasFutureReservations\r\n const url = '/api/odata/v4/ReservationHistory/HasFutureReservations';\r\n return httpClient.get(url, data);\r\n },\r\n transferReservation: (payload: TransferToReservation) => {\r\n const data = {\r\n params: {\r\n User: payload.User.Id,\r\n ReservationId: payload.ReservtionId,\r\n },\r\n };\r\n const url = `/api/odata/v4/Reservations/TransferReservation`;\r\n return httpClient.post(url, data);\r\n },\r\n sendTransferNotification: (payload: TransferToReservation) => {\r\n const data = {\r\n params: {\r\n User: payload.User.Id,\r\n ReservationId: payload.ReservtionId,\r\n },\r\n };\r\n const url = `/api/odata/v4/Reservations/SendTranserNotification`;\r\n return httpClient.post(url, data);\r\n },\r\n sendCancelTransferNotification: (payload: TransferToReservation) => {\r\n const data = {\r\n params: {\r\n User: payload.User.Id,\r\n ReservationId: payload.ReservtionId,\r\n },\r\n };\r\n const url = `/api/odata/v4/Reservations/SendCancelTranserNotification`;\r\n return httpClient.post(url, data);\r\n },\r\n cancelTransferReservation: (payload: number) => {\r\n const url = `/api/odata/v4/Reservations/CancelTranser`;\r\n return httpClient.post(url, { id: payload });\r\n },\r\n sendTerminateNotification: (payload: number[]) => {\r\n const data = {\r\n ReservationIds: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/SendTerminateNotification`;\r\n return httpClient.post(url, data);\r\n },\r\n hasUsage: (payload: { resId: number; eqId: number }) => {\r\n const url = `/api/odata/v4/Reservations/HasUsage`;\r\n return httpClient.post(url, { id: payload.resId, eqid: payload.eqId });\r\n },\r\n endUsage: (id: number, data: EndUsageData): Promise => {\r\n const url = `/api/odata/v4/Reservations/EndReservationUsage`;\r\n const params = {\r\n id: id,\r\n remarks: data.remarks ?? '',\r\n sids:\r\n data.services.map(s => s.service?.Id + ':' + s.quantity).join(',') ??\r\n '',\r\n };\r\n return httpClient.post(url, params);\r\n },\r\n userCanBookEquipment: (payload: number) => {\r\n const data = {\r\n equipmentid: payload,\r\n };\r\n const url = `/api/odata/v4/Reservations/UserCanBookEquipment`;\r\n return httpClient.post(url, data);\r\n },\r\n updateMultiReservations: (payload: ReservationMultiEvent) => {\r\n const url = `/api/odata/v4/Reservations/UpdateMultiReservations`;\r\n const data = {\r\n params: payload,\r\n };\r\n return httpClient.post(url, data);\r\n },\r\n // calculateCredit: (payload: ReservationCreditModel) => {\r\n // const url = `/api/odata/v4/Reservations/CalculateReservationCredit`;\r\n // // const data = {\r\n // // Id: payload.Id,\r\n // // Services: payload.Services,\r\n // // //AccServices: payload.AccServices,\r\n // // Username: payload.Username,\r\n // // UserGroupId: payload.UserGroupId,\r\n // // BudgetId: payload.BudgetId,\r\n // // Tutoring: payload.Tutoring,\r\n // // TrainingSignUp: payload.TrainingSignUp,\r\n // // BudgetPercent: payload.BudgetPercent,\r\n // // };\r\n // return httpClient.post(url, payload);\r\n // },\r\n};\r\n","import { TextControlField } from 'app/components/BasicInputs/TextControlField';\r\nimport {\r\n initUnitTypeData,\r\n UnitType,\r\n UnitTypePicker,\r\n} from 'app/components/pickers/AutocompletePickers/UnitTypePicker';\r\nimport { IMyAssetsRow } from 'app/pages/MyAssetsPage/IMyAssetsRow';\r\nimport { translations } from 'locales/translations';\r\nimport { debounce } from 'lodash';\r\nimport { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { valOrNull } from 'utils/typeUtils';\r\nimport { FilterValueType } from '../../BasicFilter/FilterValueType';\r\nimport { IFilterSettings } from '../../BasicFilter/IFilterSettings';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport interface AssetRangeType {\r\n value: number | null;\r\n unitType: UnitType | null;\r\n}\r\n\r\nexport function isAssetRangeType(\r\n entity: FilterValueType | undefined,\r\n): entity is AssetRangeType {\r\n if (valOrNull(entity) === null) return false;\r\n return (\r\n valOrNull((entity as AssetRangeType).value) !== null &&\r\n valOrNull((entity as AssetRangeType).unitType) !== null\r\n );\r\n}\r\n\r\nexport const initAssetRangeData = async (item: FilterValueType) => {\r\n if (!isAssetRangeType(item) || valOrNull(item.unitType) === null) {\r\n return Promise.resolve(item);\r\n }\r\n const id = item.unitType?.Id;\r\n const val = item.value;\r\n try {\r\n const data = await initUnitTypeData(id?.toString());\r\n return {\r\n value: val,\r\n unitType: data.length > 0 ? data[0] : null,\r\n } as AssetRangeType;\r\n } catch (error) {\r\n return { value: val, unitType: null } as AssetRangeType;\r\n }\r\n};\r\n\r\nexport const assetRangeCustomFilter = (\r\n value: FilterValueType,\r\n settings: IFilterSettings,\r\n) => {\r\n if (!isAssetRangeType(value)) return '';\r\n const name = settings.fieldName;\r\n const val = value.value ?? 1;\r\n let predicates: string[] = [];\r\n let filterBySelectedUnit = `${name}/any(g: g/UnitTypeId eq ${\r\n value.unitType!.Id\r\n } and g/MinValue le ${val} and g/MaxValue ge ${val})`;\r\n predicates.push(filterBySelectedUnit);\r\n if (value.unitType!.SourceUnits.length > 0) {\r\n let sourceFilter = `${name}/any(g: ${value\r\n .unitType!.SourceUnits.map(unit => {\r\n const rate =\r\n val / (unit.ConversionRate === 0 ? 1 : unit.ConversionRate);\r\n return `(g/UnitTypeId eq ${unit.TargetId} and g/MinValue le ${rate} and g/MaxValue ge ${rate})`;\r\n })\r\n .join(' or ')})`;\r\n predicates.push(sourceFilter);\r\n }\r\n if (value.unitType!.TargetUnits.length > 0) {\r\n let targetFilter = `${name}/any(g: ${value\r\n .unitType!.TargetUnits.map(unit => {\r\n const rate =\r\n val * (unit.ConversionRate === 0 ? 1 : unit.ConversionRate);\r\n return `(g/UnitTypeId eq ${unit.TargetId} and g/MinValue le ${rate} and g/MaxValue ge ${rate})`;\r\n })\r\n .join(' or ')})`;\r\n predicates.push(targetFilter);\r\n }\r\n // if (value.unitType!.SourceUnits.length === 0) {\r\n // res = `${name}/any(g: g/UnitTypeId eq ${\r\n // value.unitType!.Id\r\n // } and g/MinValue le ${val} and g/MaxValue ge ${val})`;\r\n // } else {\r\n // const sourceConvert1 = value.unitType!.SourceUnits[0];\r\n // const unitId1 = sourceConvert1.TargetId;\r\n // const convert1 = sourceConvert1.ConversionRate || 1;\r\n // const sourceConvert2 = value.unitType!.SourceUnits[1] ?? sourceConvert1;\r\n // const unitId2 = sourceConvert2.TargetId;\r\n // const convert2 = sourceConvert2.ConversionRate || 1;\r\n // res = `${name}/any(g: (g/UnitTypeId eq ${\r\n // value.unitType!.Id\r\n // } and g/MinValue le ${val} and g/MaxValue ge ${val}) or (g/UnitTypeId eq ${unitId1} and g/MinValue le ${\r\n // val / convert1\r\n // } and g/MaxValue ge ${\r\n // val / convert1\r\n // }) or (g/UnitTypeId eq ${unitId2} and g/MinValue le ${\r\n // val / convert2\r\n // } and g/MaxValue ge ${val * convert2}))`;\r\n // }\r\n\r\n // res += ') or (';\r\n\r\n // if (value.unitType!.TargetUnits.length === 0) {\r\n // res += `${name}/any(g: g/UnitTypeId eq ${\r\n // value.unitType!.Id\r\n // } and g/MinValue le ${val} and g/MaxValue ge ${val})`;\r\n // } else {\r\n // const targetConvert1 = value.unitType!.TargetUnits[0];\r\n // const unitId1 = targetConvert1.TargetId;\r\n // const convert1 = targetConvert1.ConversionRate || 1;\r\n // const sourceConvert2 = value.unitType!.TargetUnits[1] ?? targetConvert1;\r\n // const unitId2 = sourceConvert2.TargetId;\r\n // const convert2 = sourceConvert2.ConversionRate || 1;\r\n // res += `${name}/any(g: (g/UnitTypeId eq ${\r\n // value.unitType!.Id\r\n // } and g/MinValue le ${val} and g/MaxValue ge ${val}) or (g/UnitTypeId eq ${unitId1} and g/MinValue le ${\r\n // val * convert1\r\n // } and g/MaxValue ge ${\r\n // val * convert1\r\n // }) or (g/UnitTypeId eq ${unitId2} and g/MinValue le ${\r\n // val * convert2\r\n // } and g/MaxValue ge ${val * convert2}))`;\r\n // }\r\n\r\n return '(' + predicates.join(' or ') + ')';\r\n};\r\n\r\nexport const assetRangeDisplay = (val: FilterValueType | undefined) => {\r\n if (!isAssetRangeType(val)) return null;\r\n return `${val.value} ${val.unitType?.Name}`;\r\n};\r\n\r\n/**\r\n * must recieve CustomData as number else wont work\r\n */\r\nexport const AssetRangeFilter = ({\r\n value,\r\n onChange,\r\n customData,\r\n ...props\r\n}: IFilterComponentProps) => {\r\n const { t } = useTranslation();\r\n const [stateValue, setValue] = useState(value);\r\n const handleValChange: React.ChangeEventHandler<\r\n HTMLTextAreaElement | HTMLInputElement\r\n > = event => {\r\n const newState = {\r\n unitType: stateValue?.unitType ?? null,\r\n value: +event.target.value ?? null,\r\n };\r\n setValue(newState);\r\n if (\r\n valOrNull(newState.unitType) !== null &&\r\n valOrNull(newState.value) !== null\r\n ) {\r\n handleOnChange(newState);\r\n }\r\n // setValue(oldValue => {\r\n // const newState = {\r\n // unitType: oldValue?.unitType ?? null,\r\n // value: +event.target.value ?? null,\r\n // };\r\n // handleOnChange(newState);\r\n // return newState;\r\n // });\r\n };\r\n const handleTypeChange = (val: UnitType | null) => {\r\n const newState = {\r\n unitType: val,\r\n value: stateValue?.value ?? null,\r\n };\r\n setValue(newState);\r\n if (\r\n valOrNull(newState.unitType) !== null &&\r\n valOrNull(newState.value) !== null\r\n ) {\r\n handleOnChange(newState);\r\n }\r\n // setValue(oldVal => {\r\n // const newState = {\r\n // unitType: val,\r\n // value: stateValue?.value ?? null,\r\n // };\r\n // handleOnChange(newState);\r\n // return newState;\r\n // });\r\n };\r\n const handleOnChange = debounce(onChange, 250);\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { ISamplePlateDto } from 'api/odata/generated/entities/ISamplePlateDto';\r\nimport { Entity } from 'types/common';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { toEntity } from 'utils/entity-utils';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { samplePlatesSaga } from './saga';\r\nimport {\r\n IBulkSamplePlateCreate,\r\n //ISamplePlateCreate,\r\n SamplePlatesState,\r\n SamplePlatesTableState,\r\n} from './types';\r\n\r\nexport const initialState: SamplePlatesState = {\r\n data: { processing: false },\r\n create: { processing: false },\r\n bulckCreate: { processing: false },\r\n update: { processing: false },\r\n delete: { processing: false },\r\n tableState: {\r\n pageSize: 10,\r\n pageIndex: 0,\r\n sortBy: [{ id: 'Id', desc: true }],\r\n customFilters: [],\r\n globalFilter: '',\r\n },\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'samplePlates',\r\n initialState,\r\n reducers: {\r\n get(state, action: PayloadAction) {\r\n state.data.processing = true;\r\n state.tableState = {\r\n pageSize: action.payload.pageSize,\r\n pageIndex: action.payload.pageIndex,\r\n sortBy: action.payload.sortBy,\r\n globalFilter: action.payload.globalFilter,\r\n serviceGroups:\r\n action.payload.serviceGroups?.length !== 0\r\n ? action.payload.serviceGroups\r\n : undefined,\r\n visibleColumns: action.payload.visibleColumns,\r\n additionalColumns: action.payload.additionalColumns,\r\n customFilters: action.payload.customFilters?.map(filter => ({\r\n fieldName: filter.fieldName,\r\n operator: filter.operator,\r\n value: filter.value,\r\n })),\r\n };\r\n },\r\n get_Success(state, action: PayloadAction) {\r\n state.data.processing = false;\r\n state.data.error = undefined;\r\n state.data.data = action.payload.value;\r\n state.data.dataLength = action.payload['@odata.count'];\r\n },\r\n get_Error(state, action: PayloadAction) {},\r\n\r\n export(state, action: PayloadAction) {},\r\n\r\n getPlateTypes_Success(state, action: PayloadAction[]>) {\r\n state.plateTypes = action.payload;\r\n },\r\n\r\n /* showCreate(\r\n state,\r\n action: PayloadAction<{ serviceGroups: Entity[] }>,\r\n ) {\r\n state.create.open = true;\r\n state.create.initialValues = {\r\n IsRack: false,\r\n ServiceGroup:\r\n action.payload.serviceGroups.length === 1\r\n ? action.payload.serviceGroups[0]\r\n : undefined,\r\n SamplePlateType: state.plateTypes?.[0],\r\n Active: true,\r\n };\r\n }, */\r\n showBulkCreate(\r\n state,\r\n action: PayloadAction<{ serviceGroups: Entity[] }>,\r\n ) {\r\n state.bulckCreate.open = true;\r\n state.bulckCreate.initialValues = {\r\n IsRack: false,\r\n ServiceGroup:\r\n action.payload.serviceGroups.length === 1\r\n ? action.payload.serviceGroups[0]\r\n : undefined,\r\n SamplePlateType: state.plateTypes?.[0],\r\n Active: true,\r\n };\r\n },\r\n /* hideCreate(state, action: PayloadAction) {\r\n state.create.processing = false;\r\n state.create.open = false;\r\n }, */\r\n hideBulkCreate(state, action: PayloadAction) {\r\n state.bulckCreate.processing = false;\r\n state.bulckCreate.open = false;\r\n },\r\n /* create(state, action: PayloadAction) {\r\n state.create.processing = true;\r\n }, */\r\n bulkCreate(state, action: PayloadAction) {\r\n state.bulckCreate.processing = true;\r\n },\r\n bulkCreate_SetProgress(state, action: PayloadAction) {\r\n state.bulckCreate.progress = action.payload;\r\n },\r\n /* create_Success(state, action: PayloadAction) {\r\n state.create.processing = false;\r\n state.create.open = false;\r\n }, */\r\n bulkCreate_Success(state, action: PayloadAction) {\r\n state.bulckCreate.processing = false;\r\n state.bulckCreate.open = false;\r\n },\r\n create_Error(state, action: PayloadAction) {\r\n state.create.processing = false;\r\n },\r\n bulkCreate_Error(state, action: PayloadAction) {},\r\n\r\n /* hideUpdate(state, action: PayloadAction) {\r\n state.update.processing = false;\r\n state.update.open = false;\r\n }, */\r\n edit(state, action: PayloadAction) {\r\n state.update.processing = false;\r\n state.update.open = true;\r\n state.update.initialValues = {\r\n Id: action.payload.Id,\r\n Location: toEntity(\r\n action.payload.LocationId,\r\n action.payload.LocationName,\r\n ),\r\n Room: toEntity(action.payload.RoomId, action.payload.RoomName),\r\n SamplePlateType: toEntity(\r\n action.payload.SamplePlateTypeId,\r\n action.payload.SamplePlateTypeName,\r\n ),\r\n ServiceGroup: toEntity(\r\n action.payload.ServiceGroupId,\r\n action.payload.ServiceGroupName,\r\n ),\r\n IsRack: action.payload.IsRack,\r\n Active: action.payload.Active,\r\n };\r\n },\r\n /* update(\r\n state,\r\n action: PayloadAction<{\r\n original: ISamplePlateCreate;\r\n current: Partial;\r\n }>,\r\n ) {\r\n state.update.processing = true;\r\n }, */\r\n /* update_Success(state, action: PayloadAction>) {\r\n state.update.processing = false;\r\n state.update.open = false;\r\n state.update.initialValues = undefined;\r\n }, */\r\n /* update_Error(state, action: PayloadAction) {\r\n state.update.processing = false;\r\n }, */\r\n\r\n delete(state, action: PayloadAction) {\r\n state.delete.processing = true;\r\n },\r\n delete_Success(state, action: PayloadAction) {},\r\n delete_Error(state, action: PayloadAction) {},\r\n\r\n deactivatePlates(state, action: PayloadAction) {},\r\n deactivatePlates_Success(state, action: PayloadAction) {},\r\n deactivatePlates_Error(state, action: PayloadAction) {},\r\n\r\n deletePlates(state, action: PayloadAction) {},\r\n deletePlates_Success(state, action: PayloadAction) {},\r\n deletePlates_Error(state, action: PayloadAction) {},\r\n },\r\n});\r\n\r\nexport const { actions: samplePlatesActions } = slice;\r\n\r\nexport const useSamplePlatesSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: samplePlatesSaga });\r\n return { actionsSamplePlates: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useSamplePlatesSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","/**\r\n *\r\n * SelectedRowsActionIconButton\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { useState } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { ActionIconButton } from '../../../BasicButtons/ActionIconButton';\r\nimport { DialogConfirm } from '../../../DialogConfirm';\r\nimport { ActionButton } from 'app/components/BasicButtons/ActionButton';\r\nimport { DialogTypeVariants } from 'app/components/DialogComponents/DialogTypes';\r\nimport { IResponseType, IResponseTypeWithLink } from 'types/ResponseType';\r\nimport { Notification } from 'types/Notification';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport { IconProp } from 'app/AllIcons';\r\nimport { ICanRaiseBasicTableRefreshEvent } from '../../ControlledTable/ControlledTableProps';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport interface IRowsActionComponent {\r\n rows: TRow[];\r\n}\r\nexport interface SelectedRowsActionIconButtonProps\r\n extends IRowsActionComponent,\r\n ICanRaiseBasicTableRefreshEvent {\r\n icon?: IconProp;\r\n title: string;\r\n subtitle?: React.ReactNode;\r\n text?: string;\r\n action: () => Promise;\r\n snackBarMessageType?: SnackBarMessageType;\r\n confirm?: boolean;\r\n update?: boolean;\r\n confirmTitle?: string | React.ReactNode;\r\n confirmBody?: React.ReactNode;\r\n confirmButtonLabel?: string;\r\n cancelButtonLabel?: string;\r\n variantButton?: 'button' | 'icon';\r\n updateDialogVariant?: DialogTypeVariants;\r\n validConfirm?: boolean;\r\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\r\n onHandleClose?: () => void;\r\n disabled?: boolean;\r\n toggleAllRowsSelected?: (value?: boolean) => void;\r\n}\r\n\r\nexport function SelectedRowsActionIconButton({\r\n rows,\r\n title,\r\n action,\r\n snackBarMessageType,\r\n onRefresh,\r\n confirm,\r\n confirmTitle,\r\n confirmBody,\r\n confirmButtonLabel,\r\n cancelButtonLabel,\r\n variantButton,\r\n icon,\r\n text,\r\n updateDialogVariant,\r\n subtitle,\r\n validConfirm,\r\n maxWidth,\r\n onHandleClose,\r\n disabled,\r\n toggleAllRowsSelected,\r\n ...rest\r\n}: SelectedRowsActionIconButtonProps) {\r\n const { t } = useTranslation();\r\n const [busy, setBusy] = useState(false);\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const [showConfirm, setShowConfirm] = React.useState(false);\r\n\r\n const handleAction = async () => {\r\n setBusy(true);\r\n try {\r\n const response = await action();\r\n setShowConfirm(false);\r\n if (onHandleClose !== undefined) {\r\n onHandleClose();\r\n }\r\n if (response?.Id !== undefined && response.link !== undefined) {\r\n let resp = response as IResponseTypeWithLink;\r\n const key = response.link;\r\n var Notification = {\r\n key: key,\r\n persist: true,\r\n variant:\r\n resp.ErrorMessages.length > 0\r\n ? 'error'\r\n : resp.WarningMessages.length > 0\r\n ? 'warning'\r\n : resp.SuccessMessages.length > 0\r\n ? 'success'\r\n : 'default',\r\n message:\r\n resp.ErrorMessages.length > 0\r\n ? resp.ErrorMessages[0]\r\n : resp.WarningMessages.length > 0\r\n ? resp.WarningMessages[0]\r\n : resp.SuccessMessages.length > 0\r\n ? resp.SuccessMessages[0]\r\n : '',\r\n messageType: SnackBarMessageType.showLinkMessage,\r\n messageTypeProps: {\r\n Id: 0,\r\n created: true,\r\n itemName:\r\n resp.ErrorMessages.length > 0\r\n ? resp.ErrorMessages[0]\r\n : resp.WarningMessages.length > 0\r\n ? resp.WarningMessages[0]\r\n : resp.SuccessMessages.length > 0\r\n ? resp.SuccessMessages[0]\r\n : '',\r\n linkUrl: resp.link,\r\n linkText: resp.Id?.toString(),\r\n detailsType: undefined,\r\n detailsTypeProps: undefined,\r\n },\r\n } as Notification;\r\n if (key !== undefined) {\r\n Notification = Object.assign(Notification, { key: key });\r\n }\r\n dispatch(actions.addNotification(Notification));\r\n } else {\r\n let respm = response as IResponseType;\r\n if (respm.ErrorMessages.length > 0) {\r\n respm.ErrorMessages.forEach(errmsg =>\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: errmsg,\r\n messageType: snackBarMessageType,\r\n }),\r\n ),\r\n );\r\n }\r\n if (respm.SuccessMessages.length > 0) {\r\n respm.SuccessMessages.forEach(sccmsg =>\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'success',\r\n message: sccmsg,\r\n messageType: snackBarMessageType,\r\n }),\r\n ),\r\n );\r\n }\r\n if (respm.WarningMessages.length > 0) {\r\n respm.WarningMessages.forEach(wrnmsg =>\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'warning',\r\n message: wrnmsg,\r\n messageType: snackBarMessageType,\r\n }),\r\n ),\r\n );\r\n }\r\n }\r\n setBusy(false);\r\n toggleAllRowsSelected?.(false);\r\n onRefresh?.();\r\n } catch (error) {\r\n setShowConfirm(false);\r\n if (onHandleClose !== undefined) {\r\n onHandleClose();\r\n }\r\n\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message:\r\n typeof error === 'string' ? error : t(translations.AnErrorOccurred),\r\n }),\r\n );\r\n\r\n setBusy(false);\r\n }\r\n };\r\n const handleClick = () => {\r\n if (confirm) {\r\n setShowConfirm(() => true);\r\n } else {\r\n handleAction();\r\n }\r\n };\r\n const handleConfirmClick = () => {\r\n handleAction();\r\n };\r\n const handleCloseClick = () => {\r\n setShowConfirm(false);\r\n if (onHandleClose !== undefined) {\r\n onHandleClose();\r\n }\r\n };\r\n\r\n return (\r\n \r\n {showConfirm && (\r\n {'Are you sure?'}\r\n }\r\n confirmButtonLabel={confirmButtonLabel || 'Ok'}\r\n cancelButtonLabel={cancelButtonLabel || 'Cancel'}\r\n onConfirm={handleConfirmClick}\r\n onCancel={handleCloseClick}\r\n isOpen={showConfirm}\r\n processing={busy}\r\n disabled={busy || !validConfirm}\r\n />\r\n )}\r\n {variantButton === 'icon' && icon ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { isMobile, useMobileOrientation } from 'react-device-detect';\r\nimport { Theme, useTheme } from '@material-ui/core';\r\nexport interface IMobileDetector {\r\n checkIsMobile: () => boolean;\r\n orientation: 'portrait' | 'landscape';\r\n isLandscape: boolean;\r\n isPortrait: boolean;\r\n isMobile: boolean;\r\n currentPoint: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n pointWidth: number;\r\n}\r\nexport const useIsMobile = (): IMobileDetector => {\r\n const theme: Theme = useTheme();\r\n const { orientation, isLandscape, isPortrait } = useMobileOrientation();\r\n //const [mobile, setMobile] = React.useState(false);\r\n\r\n const checkIsMobile = React.useCallback((): boolean => {\r\n return (\r\n (isMobile && window.innerWidth < theme.breakpoints.values.md) ||\r\n window.innerWidth < theme.breakpoints.values.md\r\n );\r\n }, [theme.breakpoints.values.md]);\r\n const point = React.useMemo(() => {\r\n if (window.innerWidth < theme.breakpoints.values.sm) {\r\n return 'xs';\r\n } else if (window.innerWidth < theme.breakpoints.values.md) {\r\n return 'sm';\r\n } else if (window.innerWidth < theme.breakpoints.values.lg) {\r\n return 'md';\r\n } else if (window.innerWidth < theme.breakpoints.values.xl) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [window.innerWidth]);\r\n\r\n // React.useEffect(() => {\r\n // console.log('deviceDetect: ', data);\r\n // setMobile(() => {\r\n // return (\r\n // (isMobile && window.innerWidth < theme.breakpoints.values.sm) ||\r\n // window.innerWidth < theme.breakpoints.values.sm\r\n // );\r\n // });\r\n // }, [data, theme.breakpoints.values.sm]);\r\n return {\r\n checkIsMobile,\r\n orientation,\r\n isLandscape,\r\n isPortrait,\r\n isMobile,\r\n currentPoint: point,\r\n pointWidth: theme.breakpoints.values[point],\r\n };\r\n};\r\n","import { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport {\r\n EquipmentsChangeStateParameters,\r\n IReservationEquipmentDto,\r\n ReservationDetailsState,\r\n StatusChangeResult,\r\n} from '../slice/types';\r\nimport { ReservationsApi } from 'api/ReservationsApi';\r\nimport * as Yup from 'yup';\r\nimport { debounce } from 'lodash';\r\nimport { Entity } from 'types/common';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { TFunction } from 'i18next';\r\nimport { PrintPDFItem } from 'app/components/PrintToPDF/slice/types';\r\nimport { translations } from 'locales/translations';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\n\r\nexport const updateFormValues = (\r\n original: IFormValueDto[],\r\n coming: IFormValueDto[],\r\n) => {\r\n const result = coming.map(v => {\r\n let orn = original.find(o => o.FormFieldId === v.FormFieldId);\r\n if (!!orn) {\r\n return Object.assign({}, orn, {\r\n Value: v.Value,\r\n });\r\n } else {\r\n return v;\r\n }\r\n });\r\n return result;\r\n};\r\nexport const getEnd = (\r\n start: Date,\r\n equipments: IReservationEquipmentDto[],\r\n): Date => {\r\n const ForceFullDayReservations = equipments.some(\r\n f => f.ForceFullDayReservations,\r\n );\r\n if (ForceFullDayReservations) {\r\n return dateUtils.addDays(dateUtils.startOfDay(start), 1);\r\n }\r\n let defEnd = dateUtils.addHours(\r\n start,\r\n equipments\r\n .map(f => f.DefaultReservationDuration)\r\n .sort((a, b) => a - b)[0] || 1,\r\n );\r\n let minEnd = dateUtils.addHours(\r\n start,\r\n equipments.map(f => f.MinOrderHours).sort((a, b) => a - b)[\r\n equipments.length - 1\r\n ] || 1,\r\n );\r\n return defEnd < minEnd ? minEnd : defEnd;\r\n};\r\nexport const getReservationValidationState = async (\r\n parameters: EquipmentsChangeStateParameters,\r\n) => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let results = await ReservationsApi.getReservationValidationState(\r\n parameters,\r\n );\r\n resolve(results);\r\n } catch (e) {\r\n resolve(undefined);\r\n }\r\n });\r\n};\r\nexport const validateDuration = async (\r\n value: Date | undefined,\r\n context: Yup.TestContext,\r\n) => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let parent = context.parent as ReservationDetailsState;\r\n let results = await ReservationsApi.validateDuration({\r\n Equipments: parent.EquipmentsData.map(f => f.Id),\r\n AccServices: parent.AccServices.map(f => f.Id),\r\n ReservationId: parent.Id > 0 ? parent.Id : null,\r\n Start: parent.StartTime,\r\n End: parent.EndTime,\r\n Status: parent.Status?.Id || 1,\r\n TrainingSignUp: parent.TrainingSignUp,\r\n Tutoring: parent.Tutoring,\r\n FullDayReservation: parent.FullDayReservation,\r\n ADGroup: parent.ADGroup?.Id || null,\r\n BookedBy: parent.BookedBy?.Id || null,\r\n FundingTypeId: isNullOrUndefined(parent.FundingType)\r\n ? null\r\n : parent.FundingType?.Id,\r\n CheckStatus: false,\r\n TrainingSessionId: parent.TrainingSession?.Id || null,\r\n Remarks: parent.Remarks || null,\r\n BudgetId: parent.Budget?.Id || null,\r\n CheckSession: false,\r\n PurchaseOrder: parent.PurchaseOrder || null,\r\n });\r\n resolve(results.value);\r\n } catch (e) {\r\n resolve([]);\r\n }\r\n });\r\n};\r\nexport const validateYupPermissions = async (\r\n value: Entity | null,\r\n context: Yup.TestContext,\r\n) => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let parent = context.parent as ReservationDetailsState;\r\n let results = await ReservationsApi.validatePermissions({\r\n Equipments: parent.EquipmentsData.map(f => f.Id),\r\n AccServices: parent.AccServices.map(f => f.Id),\r\n ReservationId: parent.Id > 0 ? parent.Id : null,\r\n Start: parent.StartTime,\r\n End: parent.EndTime,\r\n Status: parent.Status?.Id || 1,\r\n TrainingSignUp: parent.TrainingSignUp,\r\n Tutoring: parent.Tutoring,\r\n FullDayReservation: parent.FullDayReservation,\r\n ADGroup: parent.ADGroup?.Id || null,\r\n BookedBy: parent.BookedBy?.Id || null,\r\n FundingTypeId: isNullOrUndefined(parent.FundingType)\r\n ? null\r\n : parent.FundingType?.Id,\r\n CheckStatus: false,\r\n TrainingSessionId: parent.TrainingSession?.Id || null,\r\n Remarks: parent.Remarks || null,\r\n BudgetId: parent.Budget?.Id || null,\r\n CheckSession: false,\r\n PurchaseOrder: parent.PurchaseOrder || null,\r\n });\r\n resolve(results);\r\n } catch (e) {\r\n resolve([]);\r\n }\r\n });\r\n};\r\nexport const validatePermissions = async (values: ReservationDetailsState) => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let parent = values;\r\n let results = await ReservationsApi.validatePermissions({\r\n Equipments: parent.EquipmentsData.map(f => f.Id),\r\n AccServices: parent.AccServices.map(f => f.Id),\r\n ReservationId: parent.Id > 0 ? parent.Id : null,\r\n Start: parent.StartTime,\r\n End: parent.EndTime,\r\n Status: parent.Status?.Id || 1,\r\n TrainingSignUp: parent.TrainingSignUp,\r\n Tutoring: parent.Tutoring,\r\n FullDayReservation: parent.FullDayReservation,\r\n ADGroup: parent.ADGroup?.Id || null,\r\n BookedBy: parent.BookedBy?.Id || null,\r\n FundingTypeId: isNullOrUndefined(parent.FundingType)\r\n ? null\r\n : parent.FundingType?.Id,\r\n CheckStatus: false,\r\n TrainingSessionId: parent.TrainingSession?.Id || null,\r\n Remarks: parent.Remarks || null,\r\n BudgetId: parent.Budget?.Id || null,\r\n CheckSession: false,\r\n PurchaseOrder: parent.PurchaseOrder || null,\r\n });\r\n resolve(results.value);\r\n } catch (e) {\r\n resolve(false);\r\n }\r\n });\r\n};\r\nexport const validateMinEnd = async (\r\n value: any,\r\n context: Yup.TestContext,\r\n) => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let val = value as Date;\r\n if (!!val) {\r\n resolve(context.parent.StartTime < val);\r\n } else {\r\n resolve(true);\r\n }\r\n } catch (e) {\r\n resolve(true);\r\n }\r\n });\r\n};\r\nexport const validatePrerequisite = async (values: ReservationDetailsState) => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let parent = values;\r\n let results = await ReservationsApi.validatePrerequisite({\r\n Equipments: parent.EquipmentsData.map(f => f.Id),\r\n AccServices: parent.AccServices.map(f => f.Id),\r\n ReservationId: parent.Id > 0 ? parent.Id : null,\r\n Start: parent.StartTime,\r\n End: parent.EndTime,\r\n Status: parent.Status?.Id || 1,\r\n TrainingSignUp: parent.TrainingSignUp,\r\n Tutoring: parent.Tutoring,\r\n FullDayReservation: parent.FullDayReservation,\r\n ADGroup: parent.ADGroup?.Id || null,\r\n BookedBy: parent.BookedBy?.Id || null,\r\n FundingTypeId: isNullOrUndefined(parent.FundingType)\r\n ? null\r\n : parent.FundingType?.Id,\r\n CheckStatus: false,\r\n TrainingSessionId: parent.TrainingSession?.Id || null,\r\n Remarks: parent.Remarks || null,\r\n BudgetId: parent.Budget?.Id || null,\r\n CheckSession: false,\r\n PurchaseOrder: parent.PurchaseOrder || null,\r\n });\r\n resolve(results);\r\n } catch (e) {\r\n resolve(false);\r\n }\r\n });\r\n};\r\n\r\nexport const validateAccServices = (\r\n allEquipments: IReservationEquipmentDto[],\r\n): string[] => {\r\n let allAcc = allEquipments.reduce((acc, next) => {\r\n let services: IEquipmentAccServicesDto[] = [];\r\n acc.forEach(c => {\r\n if (next.AccServices.some(n => n.Id === c.Id)) {\r\n services.push(c);\r\n }\r\n });\r\n return services;\r\n }, allEquipments.filter(f => f.AccServices.length > 0)[0].AccServices);\r\n if (\r\n allEquipments.some(f => f.AccServices.length > 0) &&\r\n allEquipments.some(f => f.AccServices.length < 1)\r\n ) {\r\n return allEquipments.filter(f => f.AccServices.length > 0).map(f => f.Name);\r\n } else if (allAcc.length !== allEquipments.length) {\r\n let wrongEqs = allEquipments.filter(\r\n f =>\r\n !allAcc.some(\r\n a => a.EquipmentId === f.Id || f.AccServices.some(g => g.Id === a.Id),\r\n ),\r\n );\r\n return wrongEqs.map(f => f.Name);\r\n } else {\r\n return [];\r\n }\r\n};\r\nexport const getStatus = async (\r\n values: ReservationDetailsState,\r\n trainingSessionOnly: boolean,\r\n): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n if (trainingSessionOnly) {\r\n let status = {\r\n Status: (values.EquipmentsData as IReservationEquipmentDto[])[0]\r\n .TrainingSignUpApproval,\r\n Tutoring: false,\r\n } as StatusChangeResult;\r\n resolve(status);\r\n } else {\r\n try {\r\n let parent = values;\r\n let result = await ReservationsApi.changeStatus({\r\n Equipments: parent.EquipmentsData.map(f => f.Id),\r\n AccServices: parent.AccServices.map(f => f.Id),\r\n ReservationId: parent.Id > 0 ? parent.Id : null,\r\n Start: parent.StartTime,\r\n End: parent.EndTime,\r\n Status: parent.Status?.Id || 1,\r\n TrainingSignUp: parent.TrainingSignUp,\r\n Tutoring: parent.Tutoring,\r\n FullDayReservation: parent.FullDayReservation,\r\n ADGroup: parent.ADGroup?.Id || null,\r\n BookedBy: parent.BookedBy?.Id || null,\r\n FundingTypeId: isNullOrUndefined(parent.FundingType)\r\n ? null\r\n : parent.FundingType?.Id,\r\n CheckStatus: false,\r\n TrainingSessionId: parent.TrainingSession?.Id || null,\r\n Remarks: parent.Remarks || null,\r\n BudgetId: parent.Budget?.Id || null,\r\n CheckSession: false,\r\n PurchaseOrder: parent.PurchaseOrder || null,\r\n });\r\n resolve(result);\r\n } catch (e) {\r\n resolve({\r\n Status: values.Status?.Id || 1,\r\n Tutoring: values.Tutoring,\r\n } as StatusChangeResult);\r\n }\r\n }\r\n });\r\n};\r\nexport const formatedToString = (date: Date | string) => {\r\n return dateUtils.formatISO(dateUtils.dateOrStringToDate(date));\r\n};\r\nexport const toDate = (date: Date | string) => {\r\n return dateUtils.dateOrStringToDate(date);\r\n};\r\nexport const newDate = (date: Date | string | undefined | null) => {\r\n if (!date) {\r\n return new CustomDate(new Date(), 'complete');\r\n } else {\r\n return new CustomDate(toDate(date), 'complete');\r\n }\r\n};\r\nexport const greaterThanDate = (\r\n compared: Date | string,\r\n toCompare: Date | string,\r\n) => {\r\n let first = newDate(compared);\r\n let second = newDate(toCompare);\r\n if (first.getTime() > second.getTime()) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nexport const lessThanDate = (\r\n compared: Date | string,\r\n toCompare: Date | string,\r\n) => {\r\n let first = newDate(compared);\r\n let second = newDate(toCompare);\r\n if (first.getTime() < second.getTime()) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nexport const getWorkFlowName = (userName: string) => {\r\n return {\r\n Id: -1,\r\n Name: `${userName} ${dateUtils.shortDateTimeFormat(newDate(undefined))}`,\r\n } as Entity;\r\n};\r\nexport const debounceValidateMinEnd = debounce(validateMinEnd, 300);\r\nexport function getPrintPDFDefaultSections(\r\n t: TFunction,\r\n serviceRequestEnabled: boolean,\r\n hasCustomForm?: boolean,\r\n): PrintPDFItem[] {\r\n let sections = [\r\n {\r\n id: 'ReservationDetails',\r\n label: t(translations.ReservationDetails),\r\n checked: true,\r\n },\r\n {\r\n id: 'OfflineServicesDetails',\r\n label: t(translations.ReservationConsumables),\r\n checked: false,\r\n },\r\n ];\r\n if (hasCustomForm) {\r\n sections.push({\r\n id: 'CustomFormDetails',\r\n label: t(translations.CustomFormDetails),\r\n checked: true,\r\n });\r\n }\r\n if (serviceRequestEnabled) {\r\n sections.push({\r\n id: 'ServiceRequest',\r\n label: t(translations.AssociatedServiceRequestDetails),\r\n checked: false,\r\n });\r\n }\r\n return sections;\r\n}\r\n","import * as React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { AuthenticatedUser, IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectglobalSettings,\r\n selectSkipLocationChanged,\r\n selectUserProfileSettings,\r\n} from 'app/slice/selectors';\r\nimport {\r\n BasicTableProps,\r\n IBasicTableState,\r\n IRow,\r\n} from 'app/components/BasicTable';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { routerActions } from 'connected-react-router';\r\nimport { useMemo } from 'react';\r\nimport { isEmptyOrWhitespace } from 'utils/typeUtils';\r\nimport {\r\n defaultSerializer,\r\n findIsfilterInversed,\r\n setisInversedForUrl,\r\n URLSearchParamsCI,\r\n} from 'app/components/BasicTable/types/FilterParam';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { GetPageFilters } from './BasicFilter/GetPageFilters';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { parseInt, trimEnd, trimStart } from 'lodash';\r\nimport { SavedViewSelected } from 'app/pages/SavedViewsPage/SavedViewPage/slice/types';\r\nimport { FilterValueType } from './BasicFilter/FilterValueType';\r\nimport { getDependencyFilters } from './BasicFilter';\r\nimport { ScreensId } from 'enums/ConfigurableTypes';\r\nimport { TableSavedListSettings } from './BasicTableProps';\r\nimport { useProfileSetting } from './useProfileSetting';\r\nimport { parseProfileUrl } from './useProfileSetting/parseProfileUrl';\r\nimport { getNextFilter } from './getNextFilter';\r\nimport { getFilterValue } from './getFilterValue';\r\nimport { SAVEDVIEW_SEARCH_KEY } from './BasicFilter/SavedListsDropDown';\r\nimport { useSavedViewSlice } from 'app/pages/SavedViewsPage/SavedViewPage/slice';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { initFilterData } from './initFilterData';\r\n\r\nexport function toURLSearchParams(\r\n items: Array<\r\n Pick<\r\n IFilterSettings,\r\n 'queryStringSerializer' | 'value' | 'isInversed'\r\n >\r\n >,\r\n withEmptyValues?: boolean,\r\n) {\r\n const result = new URLSearchParamsCI();\r\n const serializableItems = items.filter(\r\n element => element.queryStringSerializer !== undefined,\r\n );\r\n\r\n serializableItems.forEach(({ value, queryStringSerializer, isInversed }) => {\r\n if (value !== undefined || withEmptyValues) {\r\n const serializer =\r\n typeof queryStringSerializer === 'string'\r\n ? defaultSerializer(queryStringSerializer)\r\n : queryStringSerializer;\r\n const stringValue = serializer?.(value);\r\n\r\n if (stringValue instanceof URLSearchParams) {\r\n stringValue.forEach((v, n) =>\r\n result.set(n, setisInversedForUrl(v, !!isInversed)),\r\n );\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n/**\r\n *\r\n * @param savedFilterKey a key to save/load \"saved filters\" by\r\n * @param GetFiltersDefinition filters settings provider\r\n * @param getDefaultFilter default filters settlings\r\n * @param reservedQueryStringParameterNames query string parameter names to ignore\r\n * @param getRequiredFilter required filter settings provider\r\n * @param getSelectedViewFilter ??? something to do with ListId,AssetId\r\n * @param enableSavedLists adds a dropdown with \"saved list\" of instruments\r\n * @param useSyncSearch controls syncing of the filters state into the url's search parameter\r\n * @returns\r\n */\r\nexport function useFilters(\r\n savedFilterKey: string,\r\n GetFiltersDefinition: GetPageFilters,\r\n getDefaultFilter?: (user: IAuthenticatedUser) => URLSearchParams,\r\n reservedQueryStringParameterNames?: string[],\r\n getRequiredFilter?: (\r\n search: string,\r\n appSettings?: AppSettings | null,\r\n user?: AuthenticatedUser,\r\n ) => string | undefined,\r\n getSelectedViewFilter?: (\r\n search: string,\r\n view: SavedViewSelected,\r\n ) => string | undefined,\r\n enableSavedLists?: boolean,\r\n savedListSettings?: TableSavedListSettings,\r\n useCardsByDefault?: boolean,\r\n /**\r\n * Indicates wether filters should return partial results or only return fully loaded filters.\r\n * By default this will first return Identifiable e.g. {Id:1} and after that the full entity e.g. {Id:1,Name:'Name'} when it'll be ready\r\n */\r\n getPartialResults?: boolean,\r\n useSyncSearch: boolean = true,\r\n) {\r\n const dispatch = useDispatch();\r\n const { actions: savedViewActions } = useSavedViewSlice();\r\n const { actions: appActions } = useAppSettingsSlice();\r\n const { t } = useTranslation();\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const skipLocationChanged = useSelector(selectSkipLocationChanged);\r\n const location = useLocation();\r\n const showFiltersFn = React.useCallback(visibleFiltersFilter, []);\r\n const rowsKey = savedFilterKey + '_rows';\r\n const useCardsKey = savedFilterKey + '_useCardsMode';\r\n const { savedValue: savedUrl, updateValue: updateSavedFilterValue } =\r\n useProfileSetting({\r\n profileSettingKey: (savedFilterKey ?? location.pathname).toLowerCase(),\r\n });\r\n const { search: savedFilterValue } = parseProfileUrl(savedUrl);\r\n const [filterChange, setFilterChange] = React.useState(false);\r\n React.useEffect(\r\n () => {\r\n if (authenticatedUser === undefined) {\r\n return;\r\n }\r\n if (filterChange) {\r\n setFilterChange(false);\r\n return;\r\n }\r\n //this variable used to prevent filters reinitialization when location changed,\r\n //for a case when location changed by the query string that not related to filters\r\n if (skipLocationChanged) {\r\n dispatch(appActions.setSkipLocationChanged(undefined));\r\n return;\r\n }\r\n const defaultSearch = getPresetFilter(\r\n savedFilterValue,\r\n authenticatedUser,\r\n );\r\n const isDefault =\r\n defaultSearch === undefined || (savedFilterValue ?? '') === '';\r\n\r\n let search = isEmptyOrWhitespace(location.search)\r\n ? defaultSearch ?? ''\r\n : location.search;\r\n const requiredSearch =\r\n getRequiredFilter !== null && getRequiredFilter !== undefined\r\n ? getRequiredFilter(search, appSettings, authenticatedUser)\r\n : undefined;\r\n search = requiredSearch === undefined ? search : requiredSearch ?? '';\r\n\r\n const savedViewId = tryParseInt(\r\n new URLSearchParamsCI(search).get(SAVEDVIEW_SEARCH_KEY),\r\n );\r\n dispatch(savedViewActions.selectSavedView(savedViewId));\r\n\r\n // get the filters\r\n const localizedFilters = getLocalizedFilters(search);\r\n let visibleFilters = localizedFilters\r\n ?.map(f =>\r\n isDefault\r\n ? mapDefaultFilters({\r\n ...f,\r\n isInversed: findIsfilterInversed(\r\n search,\r\n f.urlKey ??\r\n (typeof f.queryStringSerializer === 'string'\r\n ? f.queryStringSerializer\r\n : undefined),\r\n ),\r\n })\r\n : {\r\n ...f,\r\n isInversed: findIsfilterInversed(\r\n search,\r\n f.urlKey ??\r\n (typeof f.queryStringSerializer === 'string'\r\n ? f.queryStringSerializer\r\n : undefined),\r\n ),\r\n },\r\n )\r\n .filter(showFiltersFn);\r\n let depFilters = getDependencyFilters(visibleFilters);\r\n if (getPartialResults !== true) {\r\n setAppliedFilters(depFilters);\r\n }\r\n setAppliedFilters(initFilterData(depFilters, globalServiceGroupFilter));\r\n /**\r\n * location.search and search can only differ by the leading quotation mark for whatever reason. Such changes differences are useless, therefore the trimStart is used in comparison\r\n */\r\n if (\r\n !isEmptyOrWhitespace(search) &&\r\n trimStart(search, '?') !== trimStart(location.search, '?')\r\n ) {\r\n dispatch(appActions.setSkipLocationChanged(true));\r\n dispatch(\r\n routerActions.replace({\r\n pathname: trimEnd(location.pathname, '?'),\r\n search: search,\r\n }),\r\n );\r\n }\r\n\r\n const defaultRows = parseInt(\r\n userProfileSettings.GetSettingByKeyOrDefault(rowsKey).Value ?? '',\r\n );\r\n setPageSize(isNaN(defaultRows) ? 10 : defaultRows);\r\n if (useCardsByDefault !== undefined) {\r\n const defaultCardsMode =\r\n userProfileSettings.GetSettingByKeyOrDefault(useCardsKey).Value ?? '';\r\n setCardsMode(\r\n defaultCardsMode === ''\r\n ? !!useCardsByDefault\r\n : defaultCardsMode === true.toString(),\r\n );\r\n }\r\n },\r\n // globalServiceGroupFilter dependency has been added to reload the filters after globalServiceGroupFilter change. This is needed to remove/add service group related filter items from already loaded filters. e.g. a service that does not belong to newly selected service group/s\r\n // other dependencies are excluded for backwards compatibility (this was previously executed in useEffectOnMount). This should probably changed some time later when there's no prod release around the corner\r\n // location.pathname, location.search are needed to react for their changes\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [globalServiceGroupFilter, location.pathname, location.search],\r\n );\r\n\r\n const userProfileSettings = useSelector(selectUserProfileSettings);\r\n\r\n const removeEmptyFilters = (\r\n filter: string | undefined,\r\n ): string | undefined => {\r\n if (filter === undefined && filter === null) {\r\n return undefined;\r\n } else {\r\n const params = new URLSearchParams(filter);\r\n let newParams = new URLSearchParams();\r\n for (const [name, value] of params) {\r\n if (value !== undefined) {\r\n newParams.append(name, value);\r\n }\r\n }\r\n return newParams.toString();\r\n }\r\n };\r\n function getPresetFilter(\r\n savedFilter: string | undefined | null,\r\n user: IAuthenticatedUser,\r\n ): string | undefined {\r\n const result =\r\n savedFilter !== undefined && savedFilter !== null\r\n ? removeEmptyFilters(savedFilter)\r\n : getDefaultFilter !== undefined && getDefaultFilter !== null\r\n ? getDefaultFilter(user)?.toString()\r\n : undefined;\r\n return result;\r\n }\r\n\r\n const appSettings = useSelector(selectAppSettings);\r\n const settings = useSelector(selectglobalSettings);\r\n const getLocalizedFilters = useMemo(() => {\r\n const result = GetFiltersDefinition(\r\n t,\r\n appSettings,\r\n authenticatedUser ?? null,\r\n settings,\r\n );\r\n return result;\r\n }, [GetFiltersDefinition, appSettings, authenticatedUser, settings, t]);\r\n\r\n const allFilters = useMemo(() => {\r\n var result = isEmptyOrWhitespace(location.search)\r\n ? getLocalizedFilters('')\r\n : getLocalizedFilters(location.search);\r\n return result;\r\n }, [getLocalizedFilters, location.search]);\r\n\r\n const [appliedFilters, setAppliedFilters] = useAsyncExtendedState<\r\n IFilterSettings[] | undefined\r\n >(undefined);\r\n\r\n const [pageSize, setPageSize] = React.useState();\r\n const [pageIndex, setPageIndex] = React.useState();\r\n\r\n const [cardsMode, setCardsMode] = React.useState(\r\n !!useCardsByDefault,\r\n );\r\n\r\n const syncSearch = React.useCallback(\r\n (newState: Array>) => {\r\n const currentSearch = getNextFilter(\r\n newState,\r\n location.search,\r\n reservedQueryStringParameterNames,\r\n );\r\n const originalSearch = new URLSearchParamsCI(location.search);\r\n\r\n // clear saved view selection when instrument selection changes\r\n if (enableSavedLists && savedListSettings !== undefined) {\r\n if (savedListSettings?.savedListSerializedKey !== undefined) {\r\n const currentInstrumentSelection = currentSearch.get(\r\n savedListSettings?.savedListSerializedKey,\r\n );\r\n const originalInstrumentSelection = originalSearch.get(\r\n savedListSettings?.savedListSerializedKey,\r\n );\r\n if (currentInstrumentSelection !== originalInstrumentSelection) {\r\n // remove the selection from the search\r\n currentSearch.delete(SAVEDVIEW_SEARCH_KEY);\r\n // clear redux state\r\n dispatch(savedViewActions.selectMyList());\r\n }\r\n }\r\n }\r\n\r\n // push current filter state to the URL search if it's not equivalent\r\n if (!originalSearch.equals(currentSearch)) {\r\n const currentSearchString = currentSearch.toString();\r\n // trim the question mark in case and for any reason the double question marks ended up saved in the \"saved filter\"\r\n // in this case the search part will be OK, but the pathname will end with the question mark\r\n // e.g. /reservations??eid=2 => pathName = \"/reservations?\"\r\n const pathName = trimEnd(location.pathname, '?');\r\n const url = pathName + '?' + currentSearchString;\r\n updateSavedFilterValue(url);\r\n dispatch(\r\n routerActions.push({\r\n pathname: location.pathname,\r\n search: currentSearchString,\r\n }),\r\n );\r\n }\r\n },\r\n [\r\n dispatch,\r\n enableSavedLists,\r\n location.pathname,\r\n location.search,\r\n reservedQueryStringParameterNames,\r\n savedListSettings,\r\n savedViewActions,\r\n updateSavedFilterValue,\r\n ],\r\n );\r\n\r\n const handleFilterChange: (items: IFilterSettings[]) => void =\r\n React.useCallback(\r\n items => {\r\n const newState = [...items.filter(showFiltersFn)];\r\n\r\n setAppliedFilters(getDependencyFilters(newState));\r\n if (useSyncSearch) {\r\n syncSearch(newState);\r\n }\r\n setFilterChange(true);\r\n },\r\n [setAppliedFilters, showFiltersFn, syncSearch, useSyncSearch],\r\n );\r\n const setFilterValueCallback = React.useCallback(\r\n (id: string, value: FilterValueType) => {\r\n if (allFilters === undefined) {\r\n return;\r\n }\r\n const filter = allFilters?.find(f => f.id === id);\r\n // in cases when applied filter is not defined call to setAppliedFilters will just only mutate appliedFilters array and cause duplicate/unnecessary invocation of hooks that have appliedFilters as a dependency\r\n if (filter !== undefined) {\r\n filter.value = value;\r\n const x = allFilters\r\n .map(f => (f === filter ? { ...filter, ...{ value: value } } : f))\r\n .filter(showFiltersFn);\r\n handleFilterChange(x);\r\n }\r\n },\r\n [allFilters, handleFilterChange, showFiltersFn],\r\n );\r\n const getFilterValueCallback = React.useCallback(\r\n (id: string) => {\r\n const f = getFilterValue(appliedFilters, id);\r\n return f;\r\n },\r\n [appliedFilters],\r\n );\r\n\r\n const handelPageSizeChange = (size: number) => {\r\n if (!isNaN(size) && pageSize !== size && size > 0) {\r\n setPageSize(size);\r\n dispatch(appActions.savePageSize({ key: rowsKey, value: size }));\r\n }\r\n };\r\n const handelPageIndexChange = (index: number) => {\r\n if (!isNaN(index) && pageIndex !== index && index >= 0) {\r\n setPageIndex(index);\r\n }\r\n };\r\n\r\n const handleCardsModeChange = (isCardsMode: boolean) => {\r\n if (cardsMode !== isCardsMode) {\r\n setCardsMode(isCardsMode);\r\n dispatch(\r\n appActions.saveCardsMode({ key: useCardsKey, value: isCardsMode }),\r\n );\r\n }\r\n };\r\n const [defaultFilters, setDefaultFilters] = useAsyncExtendedState<\r\n IFilterSettings[]\r\n >([]);\r\n React.useEffect(() => {\r\n const defaults = getDependencyFilters(\r\n getLocalizedFilters(\r\n getDefaultFilter?.(\r\n authenticatedUser as IAuthenticatedUser,\r\n )?.toString() ?? '',\r\n )\r\n .map(mapDefaultFilters)\r\n .filter(showFiltersFn),\r\n );\r\n setDefaultFilters(defaults);\r\n setDefaultFilters(initFilterData(defaults, globalServiceGroupFilter));\r\n }, [\r\n authenticatedUser,\r\n getDefaultFilter,\r\n getLocalizedFilters,\r\n globalServiceGroupFilter,\r\n setDefaultFilters,\r\n showFiltersFn,\r\n ]);\r\n const getSavedDefaultFilters = React.useCallback(() => {\r\n return defaultFilters;\r\n }, [defaultFilters]);\r\n\r\n return {\r\n allfilters: allFilters,\r\n appliedFilters,\r\n handleFilterChange,\r\n handelPageSizeChange,\r\n pageSize,\r\n handelPageIndexChange,\r\n pageIndex,\r\n getFilterValue: getFilterValueCallback,\r\n setFilterValue: setFilterValueCallback,\r\n cardsMode,\r\n onModeChange: handleCardsModeChange,\r\n getSavedDefaultFilters,\r\n } as const;\r\n}\r\n/**\r\n * Filter function to determine if the filter is needs to be shown\r\n * @param item\r\n * @returns\r\n */\r\nexport function visibleFiltersFilter(item: IFilterSettings) {\r\n return item.value !== undefined || item.notNullable; //|| item.visible === true,\r\n}\r\n\r\nexport function mapDefaultFilters(\r\n item: IFilterSettings,\r\n): IFilterSettings {\r\n return { ...item, value: !item.notDefault ? item.value ?? null : item.value };\r\n}\r\nexport interface IWithSavedHistoryComponentProps {\r\n /**\r\n * Innitial State of the filters container (close / open)\r\n */\r\n filterOpen?: boolean;\r\n /**\r\n * List of applicable filters\r\n */\r\n availableFilters?: IFilterSettings[];\r\n\r\n /**\r\n * List of applicable filters\r\n */\r\n appliedFilters?: IFilterSettings[];\r\n /**\r\n * Enables data export. On by default.\r\n */\r\n onFilterChange?: (items: IFilterSettings[]) => void;\r\n\r\n /**\r\n * Initial table state. Part of the react-table API\r\n * Example: \r\n * {\r\n sortBy: [{ id: 'Name', desc: false }],\r\n }\r\n */\r\n initialState?: IBasicTableState;\r\n /**\r\n * Id of the screen that table related to. Required!\r\n */\r\n screenId?: ScreensId;\r\n /**\r\n * Saved List settings\r\n */\r\n savedListSettings?: TableSavedListSettings;\r\n /**\r\n * Retrieves curent value set in a filter\r\n */\r\n getFilterValue?: (id: string) => FilterValueType | undefined;\r\n /**\r\n * Updates the value of a filter\r\n */\r\n setFilterValue?: (id: string, value: FilterValueType) => void;\r\n /**\r\n * should use cards mode by default\r\n */\r\n useCardsByDefault?: boolean;\r\n /**\r\n * updates the card mode\r\n */\r\n onModeChange?: (isCardsMode: boolean) => void;\r\n /**\r\n * gets this pages default filters\r\n */\r\n getSavedDefaultFilters?: () => IFilterSettings[];\r\n}\r\n/**\r\n *\r\n * @param Component\r\n * @param savedFilterKey\r\n * @returns\r\n */\r\nexport function withSavedHistoryT<\r\n TRow extends IRow,\r\n TProps extends IWithSavedHistoryComponentProps = BasicTableProps,\r\n>(\r\n Component: React.FC,\r\n savedFilterKey: string,\r\n GetFiltersDefinition: GetPageFilters,\r\n getDefaultFilter?: (user: IAuthenticatedUser) => URLSearchParams,\r\n reservedQueryStringParameterNames?: string[],\r\n getRequiredFilter?: (\r\n search: string,\r\n appSettings?: AppSettings | null,\r\n user?: AuthenticatedUser,\r\n ) => string | undefined,\r\n getSelectedViewFilter?: (\r\n search: string,\r\n view: SavedViewSelected,\r\n ) => string | undefined,\r\n enableSavedLists?: boolean,\r\n useCardsByDefault?: boolean,\r\n): React.FC {\r\n return ({\r\n onFilterChange,\r\n availableFilters,\r\n initialState,\r\n ...props\r\n }: TProps) => {\r\n const {\r\n allfilters,\r\n appliedFilters,\r\n handleFilterChange,\r\n handelPageSizeChange,\r\n pageSize,\r\n handelPageIndexChange,\r\n pageIndex,\r\n getFilterValue,\r\n setFilterValue,\r\n cardsMode,\r\n onModeChange,\r\n getSavedDefaultFilters,\r\n } = useFilters(\r\n savedFilterKey,\r\n GetFiltersDefinition,\r\n getDefaultFilter,\r\n reservedQueryStringParameterNames,\r\n getRequiredFilter,\r\n getSelectedViewFilter,\r\n enableSavedLists,\r\n props.savedListSettings,\r\n useCardsByDefault,\r\n );\r\n return (\r\n <>\r\n {appliedFilters !== undefined && (\r\n \r\n )}\r\n \r\n );\r\n };\r\n}\r\n\r\nexport function getIgnoredSearch(search: string, ignore: string[]) {\r\n var p = new URLSearchParams(search);\r\n [...p.keys()].forEach(key => {\r\n if (!ignore.includes(key)) {\r\n p.delete(key);\r\n }\r\n });\r\n\r\n return p;\r\n}\r\nexport function combineSearch(search: string, other?: string) {\r\n if (other === undefined) {\r\n return search;\r\n } else {\r\n let p = new URLSearchParams(search);\r\n let o = new URLSearchParams(other);\r\n for (const key of o.keys()) {\r\n if (!p.has(key)) {\r\n const val = o.get(key);\r\n if (val !== null) {\r\n p.set(key, val);\r\n }\r\n }\r\n }\r\n return p.toString();\r\n }\r\n}\r\n","import { MenuItem, MenuItemProps } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\nimport * as React from 'react';\r\n\r\n// export const StyledMenuItem = withStyles({\r\n// root: {\r\n// '&:hover': {\r\n// backgroundColor: 'transparent',\r\n// },\r\n// },\r\n// })(MenuItem);\r\n// export const StyledMenuItem = styled(\r\n// ({\r\n// button,\r\n// theme,\r\n// children,\r\n// ...other\r\n// }: {\r\n// button: true | false;\r\n// theme: Theme;\r\n// children: React.ReactNode;\r\n// } & MenuItemProps) => (\r\n// \r\n// {children}\r\n// \r\n// ),\r\n// )`\r\n// &:hover {\r\n// background-color: 'transparent';\r\n// }\r\n// &.hidden-if-empty:empty {\r\n// display: none;\r\n// }\r\n// `;\r\n\r\nconst CustMenuItem = styled(MenuItem)`\r\n &:hover {\r\n background-color: transparent;\r\n }\r\n &.hidden-if-empty:empty {\r\n display: none;\r\n }\r\n`;\r\nexport const StyledMenuItem = React.forwardRef<\r\n any,\r\n Omit\r\n>(function StyledMenuItem(props, ref) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\nconst StyledRoot = styled.div`\r\n &.clickable-actions-root {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n &.hover-actions-root {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\n\r\nexport const ActionsRoot = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes\r\n>(function ActionRoot(props, ref) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport {\r\n bindHover,\r\n bindMenu,\r\n usePopupState,\r\n anchorRef,\r\n} from 'material-ui-popup-state/hooks';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport HoverMenu from 'material-ui-popup-state/HoverMenu';\r\nimport { ReactActionsProps } from '.';\r\nimport { StyledMenuItem, ActionsRoot } from './StyledMenuItem';\r\n\r\nexport const HoverActions = React.forwardRef(\r\n function HoverActions(props, ref) {\r\n const { id, items, size, iconVariant } = props;\r\n const popupState = usePopupState({\r\n variant: 'popover',\r\n popupId: id,\r\n });\r\n const buttons = items.filter(a => a !== undefined);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {buttons.map((item, index) => {\r\n return (\r\n popupState.close()}\r\n {...props}\r\n >\r\n {item}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n","import {\r\n bindMenu,\r\n usePopupState,\r\n //bindTrigger,\r\n bindFocus,\r\n anchorRef,\r\n} from 'material-ui-popup-state/hooks';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport * as React from 'react';\r\nimport { Menu } from '@material-ui/core';\r\nimport { StyledMenuItem, ActionsRoot } from './StyledMenuItem';\r\nimport { ReactActionsProps } from './index';\r\n\r\nexport const ClickableActions = React.forwardRef(\r\n function ClickableActions(props, ref) {\r\n const { id, items, size, iconVariant, icon } = props;\r\n const popupState = usePopupState({\r\n variant: 'popper',\r\n popupId: id,\r\n });\r\n const buttons = React.useMemo(() => {\r\n return items.filter(\r\n f =>\r\n f !== null &&\r\n f !== false &&\r\n f !== undefined &&\r\n f !== true &&\r\n f !== '',\r\n );\r\n }, [items]);\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n popupState.close()}\r\n >\r\n {buttons.map((item, index) => {\r\n return !!item ? (\r\n {\r\n if (!keepOpen) {\r\n popupState.close();\r\n }\r\n }} */\r\n >\r\n {item}\r\n \r\n ) : (\r\n <>\r\n );\r\n })}\r\n \r\n \r\n );\r\n },\r\n);\r\n","import * as React from 'react';\r\nimport { ButtonsVariant } from '../BasicButtons/Button';\r\nimport { HoverActions } from './HoverActions';\r\nimport { ClickableActions } from './ClickableActions';\r\nimport { IconProp } from 'app/AllIcons';\r\n\r\nexport interface ReactActionsProps {\r\n id: string;\r\n items: Array;\r\n size?: 'large' | 'medium' | 'small' | 'xs';\r\n iconVariant?: ButtonsVariant;\r\n hoverMenu?: boolean;\r\n icon?: IconProp;\r\n /**\r\n * Keeps menu open after clicking the menu item.\r\n */\r\n keepOpen?: boolean;\r\n /**\r\n * Disables ripple on all menu items. Useful for menu items containing more advanced components like drop down.\r\n */\r\n disableRipple?: boolean;\r\n}\r\nexport function ReactActions(props: ReactActionsProps) {\r\n const { hoverMenu, items } = props;\r\n // filter items that will render something\r\n const nonEmptyItems = React.useMemo(() => {\r\n return items.filter(\r\n f =>\r\n f !== null && f !== false && f !== undefined && f !== true && f !== '',\r\n );\r\n }, [items]);\r\n // if there's nothing to show in the menu then there's no point to show the menu itself\r\n if (nonEmptyItems.length === 0) {\r\n return <>;\r\n }\r\n return (\r\n \r\n {hoverMenu ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","export enum PriceSheetBy {\r\n InstrumentsAndServices = 1,\r\n InstrumentCategoryAndProjectCategory = 2,\r\n}\r\n\r\nexport enum BudgetType {\r\n Regular = 1,\r\n Expanses = 2,\r\n}\r\nexport enum UserRegistersToSpecificCoresType {\r\n UserRegistersToSpecificCores_NA = 1,\r\n UserRegistersToSpecificCores_Optional = 2,\r\n UserRegistersToSpecificCores_Mandatory = 3,\r\n}\r\n\r\nexport enum AutomaticAssetNamings {\r\n No,\r\n Cat,\r\n Nick,\r\n}\r\nexport enum UserReservationsRestricted {\r\n NotRestricted = 0,\r\n UserGroupRestricted = 1,\r\n UserOwnRestricted = 2,\r\n}\r\nexport enum SideBarQuickActionsEnum {\r\n NA = 0,\r\n CreateReservation = 1,\r\n CreateWorkOrder = 2,\r\n}\r\nexport enum RowStatusVisibility {\r\n AlwaysVisible = 0,\r\n VisibleToAdminOnly = 1,\r\n VisibleToUserOnRequestStepDone = 2,\r\n Hidden = 3,\r\n}\r\nexport enum RowStatusEditablity {\r\n UsersAndAdmins = 0,\r\n AdminsOnly = 1,\r\n}\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n BookitDatePicker,\r\n BookitDatePickerProps,\r\n} from 'app/components/BookitDatePicker';\r\nimport { IFieldProps } from '../FormRender/IFormFieldSetting';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\n/**\r\n * TODO:\r\n * A non-serializable value was detected in an action, in the path: `payload.ReceivedAt`. Value: \r\nDate Sun May 02 2021 14:58:00 GMT+0300 (Israel Daylight Time)\r\n \r\nTake a look at the logic that dispatched this action: \r\nObject { type: \"animals/insertItem\", payload: {…} }\r\n \r\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string…t-least-serializable-why-should-my-action-types-be-constants) \r\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\r\n * */\r\n\r\nexport const FormBookitDatePicker = ({\r\n label,\r\n disableFuture,\r\n disablePast,\r\n disableClearable,\r\n ...props\r\n}: FieldHookConfig &\r\n Pick<\r\n BookitDatePickerProps,\r\n | 'endTime'\r\n | 'truncateTime'\r\n | 'minDate'\r\n | 'maxDate'\r\n | 'labelFunc'\r\n | 'clearable'\r\n | 'fullScreen'\r\n > &\r\n IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n fullWidth={true}\r\n helperText={meta.error}\r\n labelFunc={props.labelFunc}\r\n info={props.info}\r\n disabled={props.disabled}\r\n clearable={props.clearable}\r\n fullScreen={props.fullScreen}\r\n endTime={props.endTime}\r\n truncateTime={props.truncateTime}\r\n onError={(err, value) => {\r\n if (err !== '') {\r\n let d = dateUtils.getParsableDate(value);\r\n if (d === null) {\r\n helpers.setError(d);\r\n helpers.setValue(null, true);\r\n }\r\n }\r\n }}\r\n variant=\"date\"\r\n autoFocus={props.autoFocus}\r\n minDate={props.minDate}\r\n maxDate={props.maxDate}\r\n disableClearable={disableClearable}\r\n required={props.required}\r\n />\r\n );\r\n};\r\n","import { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\n\r\nexport type OfflineServiceTypeUrl =\r\n | 'base'\r\n | 'public'\r\n | 'publicActiveAndInactiveUrl'\r\n | 'relatedServices';\r\nexport interface OfflineServiceTypePickerProps\r\n extends Omit, 'loadData'> {\r\n urlType: OfflineServiceTypeUrl;\r\n}\r\n\r\nconst url = '/api/odata/v4/OfflineServiceFilter';\r\nconst publicActiveAndInactiveUrl =\r\n '/api/odata/v4/OfflineServiceFilter/AllOfflineServicesActiveAndInactive';\r\nconst publicUrl = '/api/odata/v4/OfflineServiceFilter/AllOfflineServices';\r\nconst relatedUrl = '/api/odata/v4/OfflineServiceFilter/RelatedOfflineServices';\r\n\r\nexport const loadOfflineServiceData = (\r\n predicates: (string | Condition)[] | undefined,\r\n urlType: OfflineServiceTypeUrl,\r\n globalServiceGroupFilter: Entity[],\r\n select?: (keyof IOfflineServiceFilterDto)[],\r\n expand?: string,\r\n) => {\r\n const sourceUrl =\r\n urlType === 'public'\r\n ? publicUrl\r\n : urlType === 'publicActiveAndInactiveUrl'\r\n ? publicActiveAndInactiveUrl\r\n : urlType === 'relatedServices'\r\n ? relatedUrl\r\n : url;\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // TODO: narrow down used properties list\r\n select:\r\n !!select && select.length > 0\r\n ? select\r\n : [\r\n 'Id',\r\n 'Name',\r\n 'ServiceGroupId',\r\n 'ServiceTypeId',\r\n 'Active',\r\n 'IntQuantityOnly',\r\n 'HideProjects',\r\n 'UnitTypeID',\r\n 'UnitTypeName',\r\n 'AllowToUser',\r\n 'Inventory',\r\n 'DefaultQuantity',\r\n 'ReservationOverlappingInventory',\r\n 'BudgetsTurnedOn',\r\n 'IsAdmin',\r\n 'StaffOnly',\r\n 'NotLessThanZero',\r\n 'TrackInventory',\r\n 'InventoryBatchesEnabled',\r\n 'RelatedReferences',\r\n ],\r\n expand: expand,\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function OfflineServiceTypePicker(props: OfflineServiceTypePickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadOfflineServiceData(\r\n props.predicates,\r\n props.urlType,\r\n globalServiceGroupFilter || [],\r\n undefined,\r\n props.expandedColumns,\r\n );\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport function UsageRelatedFilter(\r\n Ids: number[],\r\n excludedIds: number[],\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (Ids.length > 0) {\r\n let ids = Ids.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (excludedIds.length > 0) {\r\n let ids = excludedIds.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Excludes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n // predicates.push(\r\n // new Condition(\r\n // 'AllowToUser',\r\n // ODataOperators.Equals,\r\n // true,\r\n // ),\r\n // );\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n\r\nexport function ReservationsRelatedFilter(\r\n equipmentGroups: number[],\r\n optionalServiceTypes: Array>,\r\n hideProject?: boolean,\r\n allServicesAllowed?: boolean,\r\n budgetId?: number,\r\n budgetServiceGroupServicesAllowed?: boolean,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(\r\n new Condition(\r\n 'Active',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n if (equipmentGroups.length > 0) {\r\n let ids = equipmentGroups.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (!!hideProject) {\r\n predicates.push(\r\n new Condition(\r\n 'HideProjects',\r\n ODataOperators.Equals,\r\n hideProject,\r\n ),\r\n );\r\n }\r\n let byAdmin = new Condition(\r\n 'IsAdmin',\r\n ODataOperators.Equals,\r\n true,\r\n );\r\n let byUser = new Condition(\r\n 'StaffOnly',\r\n ODataOperators.Equals,\r\n false,\r\n );\r\n predicates.push(`(${byAdmin} or ${byUser})`);\r\n if (!!budgetId && budgetId > 0 && !budgetServiceGroupServicesAllowed) {\r\n predicates.push(\r\n new Condition(\r\n 'AllowedBudgets',\r\n ODataOperators.Any,\r\n budgetId,\r\n ),\r\n );\r\n }\r\n if (!allServicesAllowed) {\r\n if (optionalServiceTypes.length > 0) {\r\n let ids = optionalServiceTypes.map(f => {\r\n return { Id: f.Id } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\nexport function UsageDetailsRelatedFilter(\r\n equipmentGroupId: number,\r\n optionalServiceTypes: Array>,\r\n hideProject?: boolean,\r\n budgetId?: number,\r\n budgetServiceGroupServicesAllowed?: boolean,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(\r\n new Condition(\r\n 'Active',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n if (equipmentGroupId > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Equals,\r\n equipmentGroupId,\r\n ),\r\n );\r\n }\r\n if (!!hideProject) {\r\n predicates.push(\r\n new Condition(\r\n 'HideProjects',\r\n ODataOperators.Equals,\r\n hideProject,\r\n ),\r\n );\r\n }\r\n let byAdmin = new Condition(\r\n 'IsAdmin',\r\n ODataOperators.Equals,\r\n true,\r\n );\r\n let byUser = new Condition(\r\n 'StaffOnly',\r\n ODataOperators.Equals,\r\n false,\r\n );\r\n predicates.push(`(${byAdmin} or ${byUser})`);\r\n if (!!budgetId && budgetId > 0 && !budgetServiceGroupServicesAllowed) {\r\n predicates.push(\r\n new Condition(\r\n 'AllowedBudgets',\r\n ODataOperators.Any,\r\n budgetId,\r\n ),\r\n );\r\n }\r\n\r\n if (optionalServiceTypes.length > 0) {\r\n let ids = optionalServiceTypes.map(f => {\r\n return { Id: f.Id } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\nexport function OfflineServiceRelatedFilter(\r\n relatedGroups: number[],\r\n hideProject?: boolean,\r\n budgetId?: number,\r\n budgetServiceGroupServicesAllowed?: boolean,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(\r\n new Condition(\r\n 'Active',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'ServiceTypeId',\r\n ODataOperators.Equals,\r\n 2,\r\n ),\r\n );\r\n if (relatedGroups.length > 0) {\r\n let ids = relatedGroups.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (!!hideProject) {\r\n predicates.push(\r\n new Condition(\r\n 'HideProjects',\r\n ODataOperators.Equals,\r\n hideProject,\r\n ),\r\n );\r\n }\r\n let byAdmin = new Condition(\r\n 'IsAdmin',\r\n ODataOperators.Equals,\r\n true,\r\n );\r\n let byUser = `(${new Condition(\r\n 'StaffOnly',\r\n ODataOperators.Equals,\r\n false,\r\n )} and ${new Condition(\r\n 'AllowToUser',\r\n ODataOperators.Equals,\r\n true,\r\n )})`;\r\n predicates.push(`(${byAdmin} or ${byUser})`);\r\n if (!!budgetId && budgetId > 0 && !budgetServiceGroupServicesAllowed) {\r\n predicates.push(\r\n new Condition(\r\n 'AllowedBudgets',\r\n ODataOperators.Any,\r\n budgetId,\r\n ),\r\n );\r\n }\r\n\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n\r\nexport function RenewStockRelatedFilter(): (\r\n | string\r\n | Condition\r\n)[] {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(\r\n new Condition(\r\n 'Active',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'ServiceTypeId',\r\n ODataOperators.Equals,\r\n 2,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'TrackInventory',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n\r\nexport function InventoryBatchRelatedFilter(): (\r\n | string\r\n | Condition\r\n)[] {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(\r\n new Condition(\r\n 'Active',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'ServiceTypeId',\r\n ODataOperators.Equals,\r\n 2,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'TrackInventory',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'InventoryBatchesEnabled',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\nimport { Dto, ISection } from './types';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\n\r\nconst selectSlice = (state: RootState) =>\r\n state.serviceRequestsKanban || initialState;\r\n\r\nexport const selectServiceRequestsKanban = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\n\r\nexport const selectServiceRequestsKanbanProcessingUpdate = createSelector(\r\n [selectSlice],\r\n state => state.processingUpdate,\r\n);\r\nexport const selectServiceRequestsKanbanProcessingInsert = createSelector(\r\n [selectSlice],\r\n state => state.processingInsert,\r\n);\r\n\r\nexport const selectServiceRequestsKanbanTickets = createSelector(\r\n [selectServiceRequestsKanban],\r\n state => state.data,\r\n);\r\nexport const selectServiceRequestsKanbanSelectedStatuses = createSelector(\r\n [selectSlice],\r\n state => state.selectedStatuses,\r\n);\r\nexport const selectServiceRequestsKanbanData = createSelector(\r\n [\r\n selectServiceRequestsKanbanSelectedStatuses,\r\n selectServiceRequestsKanbanTickets,\r\n ],\r\n (selectedStatuses, tickets) => {\r\n if (selectedStatuses !== undefined) {\r\n if (selectedStatuses.some(f => f.Name !== undefined)) {\r\n return selectedStatuses.map(status => {\r\n const dataList = tickets[status.Id.toString()];\r\n const b: ISection = {\r\n id: status.Id,\r\n section: status,\r\n data: dataList,\r\n };\r\n return b;\r\n });\r\n }\r\n }\r\n },\r\n);\r\n\r\nexport const selectGlobalFilter = createSelector(\r\n [selectSlice],\r\n state => state.globalFilter,\r\n);\r\n\r\nexport const selectFilter = createSelector(\r\n [selectSlice],\r\n state => state.filterString,\r\n);\r\n\r\nexport const selectTicketIds = createSelector(\r\n [selectSlice],\r\n state => state.selectedStatusIds,\r\n);\r\n\r\nexport const selectShowAddSubTicket = createSelector(\r\n [selectSlice],\r\n state => state.showAddSubTicket,\r\n);\r\nexport const selectParentTicket = createSelector(\r\n [selectSlice],\r\n state => state.parentTicket,\r\n);\r\nexport const selectEdit = createSelector([selectSlice], state => state.ticket);\r\nexport const selectSectionOrders = createSelector(\r\n [selectSlice],\r\n state => state.selectedStatusOrders,\r\n);\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.workOrder || initialState;\r\n\r\nexport const selectWorkOrder = createSelector([selectSlice], state => state);\r\n\r\nexport const selectWorkOrderProcessing = createSelector(\r\n [selectWorkOrder],\r\n state => state.processing,\r\n);\r\nexport const selectCreateWorkOrderProcessing = createSelector(\r\n [selectWorkOrder],\r\n state => state.createState.processing,\r\n);\r\nexport const selectUpdateWorkOrderProcessing = createSelector(\r\n [selectWorkOrder],\r\n state => state.updateState.processing,\r\n);\r\n\r\nexport const selectCreateWorkOrder = createSelector(\r\n [selectWorkOrder],\r\n state => state.createState.data,\r\n);\r\nexport const selectUpdateWorkOrder = createSelector(\r\n [selectWorkOrder],\r\n state => state.updateState.data,\r\n);\r\nexport const selectCreateWorkOrderCompleted = createSelector(\r\n [selectWorkOrder],\r\n state => state.createState.completed,\r\n);\r\nexport const selectUpdateWorkOrderCompleted = createSelector(\r\n [selectWorkOrder],\r\n state => state.updateState.completed,\r\n);\r\nexport const selectCreateWorkOrderHasError = createSelector(\r\n [selectWorkOrder],\r\n state => state.createState.hasErrors,\r\n);\r\nexport const selectUpdateWorkOrderHasError = createSelector(\r\n [selectWorkOrder],\r\n state => state.updateState.hasErrors,\r\n);\r\nexport const selectSendEmailOnResOffline = createSelector(\r\n [selectWorkOrder],\r\n state => state.sendEmailOnOffline,\r\n);\r\nexport const selectReservationOffline = createSelector(\r\n [selectWorkOrder],\r\n state => state.reservationOffline,\r\n);\r\nexport const selectFieldHandler = createSelector(\r\n [selectWorkOrder],\r\n state => state.valueHandler,\r\n);\r\nexport const selectReservationOfflineData = createSelector(\r\n [selectReservationOffline],\r\n state => state.data,\r\n);\r\nexport const selectReservationOfflineProcessing = createSelector(\r\n [selectReservationOffline],\r\n state => state.processing,\r\n);\r\nexport const selectReservationOfflineCompleted = createSelector(\r\n [selectReservationOffline],\r\n state => state.completed,\r\n);\r\nexport const selectReservationOfflineHasErrors = createSelector(\r\n [selectReservationOffline],\r\n state => state.hasErrors,\r\n);\r\nexport const selectReadonlyWorkOrder = createSelector(\r\n [selectWorkOrder],\r\n state => state.readonlyState,\r\n);\r\nexport const selectUpdateAllRecurrent = createSelector(\r\n [selectWorkOrder],\r\n state => state.updateAllRecurrent,\r\n);\r\nexport const selectOfflineEventStart = createSelector(\r\n [selectWorkOrder],\r\n state => state.OfflineEventStart,\r\n);\r\nexport const selectOfflineEventEnd = createSelector(\r\n [selectWorkOrder],\r\n state => state.OfflineEventEnd,\r\n);\r\nexport const selectSaveNewComments = createSelector(\r\n [selectWorkOrder],\r\n state => state.doSaveNewComments,\r\n);\r\nexport const selectCreatedOrders = createSelector(\r\n [selectWorkOrder],\r\n state => state.createdOrders,\r\n);\r\nexport const selectSavedLinkedOrders = createSelector(\r\n [selectWorkOrder],\r\n state => state.savedLinkedOrders,\r\n);\r\n\r\nexport const selectCalibrationsChanged = createSelector(\r\n [selectWorkOrder],\r\n state => state.calibrationsChanged,\r\n);\r\nexport const selectLinksProcessing = createSelector(\r\n [selectWorkOrder],\r\n state => state.linksProcessing,\r\n);\r\nexport const selectDowntimeOverlaps = createSelector(\r\n [selectWorkOrder],\r\n state => state.downtimeOverlaps,\r\n);\r\n","/**\r\n * This function has two roles:\r\n * 1) If the `id` is empty it assings something so does i18next doesn't throw error. Typescript should prevent this anyway\r\n * 2) It has a hand-picked name `_t` (to be short) and should only be used while using objects instead of strings for translation keys\r\n * `internals/extractMessages/stringfyTranslations.js` script converts this to `t('a.b.c')` style before `i18next-scanner` scans the file contents\r\n * so that our json objects can also be recognized by the scanner.\r\n */\r\nexport const _t = (id: string, ...rest: any[]): [string, ...any[]] => {\r\n if (!id) {\r\n id = '_NOT_TRANSLATED_';\r\n }\r\n return [id, ...rest];\r\n};\r\n","import * as React from 'react';\r\nimport { MenuItem } from '@material-ui/core';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { IFilterSettings } from './IFilterSettings';\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\nimport { FilterValueType } from './FilterValueType';\r\n//hide for now all the expressions between the field name and its value (mainly “is”) ? We will go back to these once we implement additional expressions and not just one per each filter\r\n//import { operatorToString } from 'api/odata/ODataFilter';\r\nimport { ButtonLabel } from 'app/components/Typography';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Entity, EntityType } from 'types/common';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { isArray } from 'lodash';\r\nimport {\r\n Directions,\r\n FilterBox,\r\n} from 'app/components/BasicTable/BasicFilter/FilterBox';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport { DropDown } from 'app/components/DropDown';\r\nimport { useIsMobile } from 'app/hooks/useIsMobile';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { BasicTypography } from 'app/components/Typography/BasicTypography';\r\nimport clsx from 'clsx';\r\n\r\nexport interface AppliedFilterComponentProps {\r\n item: IFilterSettings;\r\n onRemove: (item: IFilterSettings) => void;\r\n onApply: (item: IFilterSettings) => void;\r\n direction: Directions;\r\n}\r\n\r\nexport function IsEntity(\r\n entity: FilterValueType | undefined,\r\n): entity is Entity {\r\n if (entity === undefined || entity === null) {\r\n return false;\r\n }\r\n if ((entity as Entity).Id !== undefined) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsEntityType(\r\n entity: FilterValueType | undefined,\r\n): entity is EntityType {\r\n if (entity === undefined || entity === null) {\r\n return false;\r\n }\r\n return (entity as EntityType).Id !== undefined;\r\n}\r\n\r\nexport function IsEntityArray(entity: FilterValueType | undefined) {\r\n if (entity === undefined || entity === null) {\r\n return false;\r\n }\r\n if (!isArray(entity)) {\r\n return false;\r\n }\r\n if ((entity as Entity[])?.some(f => f.Id !== undefined)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsEntityString(\r\n entity: FilterValueType | undefined,\r\n): entity is Entity {\r\n if (entity === undefined || entity === null) {\r\n return false;\r\n }\r\n if ((entity as Entity).Id !== undefined) {\r\n return typeof (entity as Entity).Id == 'string';\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsEmptyArray(entity: FilterValueType | undefined): boolean {\r\n return Array.isArray(entity) && !entity.length;\r\n}\r\n\r\nexport function IsNotEmptyArray(\r\n entity: FilterValueType | undefined,\r\n): entity is Extract {\r\n return Array.isArray(entity) && !!entity.length;\r\n}\r\n\r\nfunction PureAppliedFilterComponent({\r\n item,\r\n onRemove,\r\n onApply,\r\n direction = 'vertical',\r\n}: AppliedFilterComponentProps) {\r\n //PROPS\r\n const { checkIsMobile, isLandscape } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const showShortView = React.useMemo(() => {\r\n return isMobile || (sidePanelOpen && !sidePanelExpanded);\r\n }, [isMobile, sidePanelExpanded, sidePanelOpen]);\r\n const { t } = useTranslation();\r\n\r\n const canHaveInversed = React.useMemo(() => {\r\n return !item.customFilter && !item.inversionDisabled;\r\n }, [item.customFilter, item.inversionDisabled]);\r\n\r\n /* const canHaveGreaterLower = React.useMemo(() => {\r\n return (\r\n !item.customFilter &&\r\n !item.isGreaterLowerDisabled &&\r\n (item.component.name === 'DatePickerFilter' ||\r\n item.component.name === 'NumberFieldFilter')\r\n );\r\n }, [item.component.name, item.customFilter, item.isGreaterLowerDisabled]); */\r\n //item.component.name === 'DatesRangeFilter' ||\r\n //item.component.name === 'DatesPeriodFilter' ||\r\n //item.component.name === 'NumbersRangeFilter'\r\n\r\n //STATES\r\n const [open, setOpen] = React.useState(item.open);\r\n const [predict, setPredict] = React.useState<(string | Condition)[]>(\r\n !!item.filterData && item.filterData.length > 0 && !!item.filterPredicates\r\n ? item.filterData.map(f =>\r\n !!item.filterPredicates\r\n ? item.filterPredicates(f.depValue, f.depKey)[0]\r\n : '',\r\n )\r\n : [],\r\n );\r\n const [value, setValue] = React.useState(\r\n item.value,\r\n );\r\n\r\n //USE EFFECT\r\n React.useEffect(() => {\r\n setValue(item.value);\r\n }, [item.value]);\r\n\r\n //FUNCTIONS\r\n const onOpen = () => {\r\n setPredict(() =>\r\n !!item.filterData && item.filterData.length > 0 && !!item.filterPredicates\r\n ? item.filterData.map(f =>\r\n !!item.filterPredicates\r\n ? item.filterPredicates(f.depValue, f.depKey)[0]\r\n : '',\r\n )\r\n : [],\r\n );\r\n };\r\n\r\n const applyItem = value => {\r\n setOpen(false);\r\n onApply({\r\n ...item,\r\n ...{ value: value },\r\n ...{ open: false },\r\n });\r\n };\r\n\r\n const handleChange = value => {\r\n setValue(value);\r\n applyItem(value);\r\n };\r\n\r\n const handleRemoveClick = () => {\r\n onRemove(item);\r\n };\r\n //const handleClickAway = () => {};\r\n\r\n const labelFunc =\r\n value instanceof PresetDatesRange\r\n ? (date: MaterialUiPickersDate, invalidLabel: string) => {\r\n const res = dateUtils.shortDateTimeFormat(date);\r\n return res === null ? invalidLabel : res;\r\n }\r\n : undefined;\r\n\r\n const toggleInversed = React.useCallback(\r\n (isInversed: boolean) => {\r\n if (!!item.isInversed === isInversed) return;\r\n onApply({ ...item, isInversed: !item.isInversed });\r\n },\r\n [item, onApply],\r\n );\r\n\r\n /* const toggleGreater = React.useCallback(\r\n (isGreater: boolean) => {\r\n if (!!item.isGreater === isGreater) return;\r\n onApply({ ...item, isGreater: !item.isGreater });\r\n },\r\n [item, onApply],\r\n ); */\r\n\r\n //RENDER\r\n return (isMobile || showShortView) && !isLandscape ? (\r\n \r\n \r\n
\r\n \r\n {t(item.displayNameKey)}\r\n \r\n [\r\n {\r\n toggleInversed(false);\r\n close();\r\n }}\r\n selected={!item.isInversed}\r\n >\r\n {'Is'}\r\n ,\r\n {\r\n toggleInversed(true);\r\n close();\r\n }}\r\n selected={!!item.isInversed}\r\n >\r\n {'Is not'}\r\n ,\r\n ]}\r\n >\r\n {item.isInversed ? 'Is not' : 'Is'}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n ) : (\r\n \r\n {/* */}\r\n \r\n \r\n {t(item.displayNameKey)}\r\n \r\n {\r\n const conditionMenuItems = [\r\n {\r\n toggleInversed(false);\r\n close();\r\n }}\r\n selected={!item.isInversed}\r\n >\r\n {'Is'}\r\n ,\r\n {\r\n toggleInversed(true);\r\n close();\r\n }}\r\n selected={!!item.isInversed}\r\n >\r\n {'Is not'}\r\n ,\r\n ];\r\n /* if (canHaveGreaterLower) {\r\n conditionMenuItems.push(\r\n {\r\n toggleGreater(true);\r\n close();\r\n }}\r\n selected={!!item.isGreater}\r\n >\r\n {'Greater than'}\r\n ,\r\n );\r\n } */\r\n return conditionMenuItems;\r\n }}\r\n >\r\n {/* {item.isGreater === true\r\n ? 'Greater than'\r\n : item.isInversed === true\r\n ? 'Is not'\r\n : 'Is'} */}\r\n {item.isInversed ? 'Is not' : 'Is'}\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n {/*
*/}\r\n
\r\n );\r\n}\r\n\r\nexport const AppliedFilterComponent = React.memo(\r\n PureAppliedFilterComponent,\r\n (prevProps, nextProps) => {\r\n const x = props =>\r\n JSON.stringify({\r\n fieldName: props.item.fieldName,\r\n fieldName1: props.item.fieldName1,\r\n value: props.item.value,\r\n predicates: props.item.predicetes,\r\n isInversed: props.item.isInversed,\r\n });\r\n var result = x(prevProps) === x(nextProps);\r\n\r\n return result;\r\n },\r\n) as typeof PureAppliedFilterComponent;\r\n","export enum DraftReservationTypes {\r\n DraftReservationTypes_SaveForLater = 0,\r\n DraftReservationTypes_ApprovalRequired = 1,\r\n DraftReservationTypes_AllUser = 2,\r\n}\r\n","/**\r\n *\r\n * auto generated interface for Bookit.Data.Enums.AllowReservationCollaboratorsTypes\r\n *\r\n */\r\n\r\nexport enum AllowReservationCollaboratorsTypes {\r\n None = 1,\r\n NotAllowedToStartUsage = 0,\r\n AllowedToStartUsage = 2,\r\n}\r\nexport const AllowReservationCollaboratorsTypesArray = [\r\n 'None',\r\n 'NotAllowedToStartUsage',\r\n 'AllowedToStartUsage',\r\n];\r\nexport type AllowReservationCollaboratorsTypesUnion =\r\n keyof typeof AllowReservationCollaboratorsTypes;\r\n","import { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { DraftReservationTypes } from 'enums/DraftReservationTypes';\r\nimport { GlobalSettingsType } from '../components/useGlobalSettingsHook';\r\nimport {\r\n IMandatoryEquipmentsDto,\r\n IReservationEquipmentDto,\r\n ServiceSettingsState,\r\n} from './types';\r\nimport { combineOfflineServiceTypes } from './combineOfflineServiceTypes';\r\nimport { AllowReservationCollaboratorsTypes } from 'api/odata/generated/enums/AllowReservationCollaboratorsTypes';\r\nimport { getBudgetVisible } from './getBudgetVisible';\r\nimport { groupBy, values } from 'lodash';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\n\r\nexport function mapSettingsFromServices(\r\n equipments: IReservationEquipmentDto[],\r\n accServices: IEquipmentAccServicesDto[],\r\n globalSettings: GlobalSettingsType,\r\n authenticatedUser: AuthenticatedUser,\r\n settings?: ServiceSettingsState,\r\n): ServiceSettingsState {\r\n const p: Partial = {\r\n HasHideProjects: equipments.every(f => f.HideProjects),\r\n HasConflictProjects:\r\n equipments.some(f => f.HideProjects === true) &&\r\n equipments.some(f => f.HideProjects === false),\r\n HasMultipleProjects:\r\n globalSettings.allowPartialProjectCharges &&\r\n equipments.every(f => f.AllowPartialProjectCharges === true),\r\n HasPartialSingleProject:\r\n globalSettings.allowPartialSingleProjectCharges &&\r\n equipments.every(f => f.AllowPartialSingleProjectCharges === true),\r\n AllOffServicesAllowed: equipments.every(\r\n f => f.ReservationOfflineServicesEnabled === null,\r\n ),\r\n OfflineServicesVisible: equipments.every(\r\n f =>\r\n f.ReservationOfflineServicesEnabled === true ||\r\n f.ReservationOfflineServicesEnabled === null,\r\n ),\r\n AllowReservationCollaborators:\r\n globalSettings.hideReservationCollaborators !== true &&\r\n equipments.every(f =>\r\n [\r\n AllowReservationCollaboratorsTypes.AllowedToStartUsage,\r\n AllowReservationCollaboratorsTypes.NotAllowedToStartUsage,\r\n ].includes(f.AllowReservationCollaborators),\r\n ),\r\n budgetExperimentVisible:\r\n globalSettings.budgetExperimentModuleEnabled &&\r\n equipments.some(f => f.BudgetExperimentSettings),\r\n TrainingSignUpApproval:\r\n equipments.length === 1\r\n ? equipments[0].TrainingSignUpApproval ?? 1\r\n : undefined,\r\n HideTrainingSession: equipments.every(f => f.HideTrainingSession === true),\r\n HasAttendance: equipments.every(f => f.HasAttendance === true),\r\n ForceTutoring: equipments.some(\r\n f =>\r\n f.ForceTutoring === true &&\r\n authenticatedUser.IsAdminOf({\r\n ServiceGroupId: f.ServiceGroupId,\r\n ServiceId: f.Id,\r\n ServiceTypeId: ServiceType.Online,\r\n }) === false,\r\n ),\r\n ForceFullDayReservations: equipments.some(f => f.ForceFullDayReservations),\r\n IsEquipmentTutoring: equipments.some(f => f.IsEquipmentTutoring === true),\r\n NotAllowReservations: equipments.some(f => f.NotAllowReservations === true),\r\n AllowOneAccSerOnly: equipments.some(f => f.AllowOneAccSerOnly === true),\r\n IsAllAdmin: equipments.every(\r\n f =>\r\n authenticatedUser.IsAdminOf({\r\n ServiceGroupId: f.ServiceGroupId,\r\n ServiceId: f.Id,\r\n ServiceTypeId: ServiceType.Online,\r\n }) === true,\r\n ),\r\n RestrictReservationToTimeSlots: equipments.every(\r\n f => f.RestrictReservationToTimeSlots === true,\r\n ),\r\n DefaultReservationDuration:\r\n equipments.length > 0\r\n ? equipments\r\n .map(f => f.DefaultReservationDuration)\r\n .sort((a, b) => a - b)[0]\r\n : 1,\r\n MinOrderHours:\r\n equipments.length > 0\r\n ? equipments.map(f => f.MinOrderHours).sort((a, b) => a - b)[\r\n equipments.length - 1\r\n ]\r\n : 1,\r\n MaxOrderHours:\r\n equipments.length > 0\r\n ? accServices.length > 0 &&\r\n accServices.some(f => f.MaxOrderDuration !== null)\r\n ? accServices\r\n .map(f => f.MaxOrderDuration ?? 0)\r\n .sort((a, b) => a - b)[0]\r\n : equipments.map(f => f.MaxOrderHours).sort((a, b) => a - b)[0]\r\n : equipments.map(f => f.MaxOrderHours).sort((a, b) => a - b)[0],\r\n\r\n MinOrderGap:\r\n equipments.length > 0\r\n ? accServices.length > 0 &&\r\n accServices.some(f => f.MinOrderGap !== null)\r\n ? accServices.map(f => f.MinOrderGap ?? 0).sort((a, b) => a - b)[0]\r\n : equipments.map(f => f.MinOrderGap).sort((a, b) => a - b)[0]\r\n : equipments.map(f => f.MinOrderGap).sort((a, b) => a - b)[0],\r\n RestrictDurationUnitsAmount:\r\n equipments.length > 0\r\n ? equipments\r\n .map(f => f.RestrictDurationUnitsAmount ?? 0)\r\n .filter(f => f !== 0)\r\n .sort((a, b) => a - b)[equipments.length - 1]\r\n : null,\r\n RestrictDurationUnitType:\r\n equipments.length > 0\r\n ? equipments\r\n .map(f => f.RestrictDurationUnitType ?? 0)\r\n .filter(f => f !== 0)\r\n .sort((a, b) => a - b)[equipments.length - 1]\r\n : null,\r\n DefaultAccServiceId:\r\n equipments.length > 0\r\n ? equipments.every(\r\n f =>\r\n f.DefaultAccServiceId === equipments[0].DefaultAccServiceId ?? -1,\r\n )\r\n ? equipments[0].DefaultAccServiceId || null\r\n : null\r\n : null,\r\n BudgetsTurnedOn: equipments.some(f => f.BudgetsTurnedOn === true),\r\n Billable: equipments.some(f => f.Billable === true),\r\n IsLoanDesc: equipments.some(f => f.LoanTypeId === 1),\r\n AllowModification: globalSettings.allowOngoingReservationModificationEnabled\r\n ? equipments\r\n .filter(f => f.NotAllowReservations === false)\r\n .every(f => f.AllowModification === true)\r\n : false,\r\n AllowExtendReservation:\r\n globalSettings.allowOngoingReservationModificationEnabled\r\n ? equipments\r\n .filter(f => f.NotAllowReservations === false)\r\n .every(f => f.AllowExtendReservation === true)\r\n : false,\r\n AllowUsersToShortenReservations: equipments.every(\r\n f => f.AllowUsersToShortenReservations === true,\r\n ),\r\n AllowedToTransfer: equipments.every(f => f.AllowedToTransfer === true),\r\n AllowedToTransferAll: equipments.every(\r\n f => f.AllowedToTransferAll === true,\r\n ),\r\n EnforceReservationRestrictions: equipments.every(\r\n f => f.EnforceReservationRestrictions === true,\r\n ),\r\n LimitlessReservationAllowed: equipments.every(\r\n f => f.LimitlessReservationAllowed === true,\r\n ),\r\n BudgetVisible: getBudgetVisible(\r\n globalSettings,\r\n equipments.map(service => ({\r\n Billable: service.Billable,\r\n BudgetsTurnedOn: service.BudgetsTurnedOn,\r\n HideProjects: service.HideProjects,\r\n ServiceTypeId: ServiceType.Online,\r\n })),\r\n ),\r\n OfflineServiceTypes: combineOfflineServiceTypes(equipments),\r\n\r\n Groups:\r\n equipments.length > 0\r\n ? equipments\r\n .filter((item, index, arr) => {\r\n return (\r\n arr.findIndex(t => t.ServiceGroupId === item.ServiceGroupId) ===\r\n index\r\n );\r\n })\r\n .map(f => f.ServiceGroupId)\r\n : [],\r\n HasAccServices:\r\n equipments.length > 0 && equipments.some(f => f.AccServices?.length > 0),\r\n StaffUserVisibleAllways:\r\n equipments.length > 0 &&\r\n equipments.some(f => f.StaffUserSelectionVisible === true),\r\n StaffUserVisibleOnPending:\r\n equipments.length > 0 &&\r\n equipments.some(f => f.StaffUserSelectionVisible === false),\r\n StaffUserRequiredAlwais:\r\n equipments.length > 0 &&\r\n equipments.some(f => f.StaffUserSelectionRequired === true),\r\n StaffUserRequiredOnPending:\r\n equipments.length > 0 &&\r\n equipments.some(f => f.StaffUserSelectionRequired === false),\r\n StaffUserSelection:\r\n equipments.length > 0 &&\r\n equipments.some(f => f.StaffUserSelection?.length > 0)\r\n ? equipments\r\n .filter(d => d.StaffUserSelection?.length > 0)\r\n .reduce((acc, next) => {\r\n return acc.concat(\r\n next.StaffUserSelection?.filter(\r\n f => !acc.some(c => c.Id === f.Id),\r\n ),\r\n );\r\n }, equipments.filter(d => d.StaffUserSelection?.length > 0)[0].StaffUserSelection)\r\n : [],\r\n RequireUserGroupCoordApproval:\r\n equipments.length > 0 &&\r\n equipments.some(f => f.RequireUserGroupCoordApproval === true),\r\n DraftForAll:\r\n equipments.length > 0 &&\r\n equipments.every(\r\n f =>\r\n f.DraftReservationsTypeId ===\r\n DraftReservationTypes.DraftReservationTypes_AllUser,\r\n ),\r\n DraftApprovalRequred:\r\n equipments.length > 0 &&\r\n equipments.every(\r\n f =>\r\n f.DraftReservationsTypeId ===\r\n DraftReservationTypes.DraftReservationTypes_ApprovalRequired,\r\n ),\r\n DraftSaveForLater:\r\n equipments.length > 0 &&\r\n equipments.every(\r\n f =>\r\n f.DraftReservationsTypeId ===\r\n DraftReservationTypes.DraftReservationTypes_SaveForLater,\r\n ),\r\n };\r\n const result = Object.assign({}, settings, p);\r\n return result;\r\n}\r\nexport function combineOptionalEquipments(\r\n services: IMandatoryEquipmentsDto[] | undefined,\r\n): IMandatoryEquipmentsDto[] | undefined {\r\n if (services === undefined) {\r\n return undefined;\r\n }\r\n return values(groupBy(services, f => f.Id)).map(f => {\r\n return f[0];\r\n });\r\n}\r\n","import { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { ReservationStatus } from 'api/odata/generated/enums/ReservationStatus';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport {\r\n ReservationDetailsState,\r\n ReservationSettingsState,\r\n ReservationEquipment,\r\n CustomFormValueModel,\r\n ReservationUpdateModel,\r\n OfflineservicesModel,\r\n} from './types';\r\n\r\nexport function ConvertModelToUpdateEntity(\r\n original: ReservationDetailsState,\r\n current: ReservationDetailsState,\r\n settings: ReservationSettingsState | undefined,\r\n offlineServices: IOtherServices[],\r\n user: AuthenticatedUser | undefined,\r\n terminate?: boolean,\r\n) {\r\n let entity = {\r\n Id: original.Id,\r\n Services: current.EquipmentsData.map(item => {\r\n return {\r\n EquipmentId: item.Id,\r\n EquipmentName: item.Name,\r\n AccServiceIds:\r\n current.AccServices.length > 0\r\n ? current.AccServices.filter(\r\n a => (a as IEquipmentAccServicesDto).EquipmentId === item.Id,\r\n ).map(a => a.Id)\r\n : [],\r\n AssemblyId: null,\r\n ReservationId: original.Id,\r\n } as ReservationEquipment;\r\n }),\r\n StartTime: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(current.StartTime),\r\n ),\r\n EndTime: dateUtils.formatISO(dateUtils.dateOrStringToDate(current.EndTime)),\r\n Remarks: current.Remarks || null,\r\n SampleRunId: current.SampleRunId,\r\n SampleIds: current.SampleIds,\r\n BudgetId: current.Budget?.Id,\r\n BudgetExperimentId: current.BudgetExperiment?.Id,\r\n Collaborators: current.CollaboratedUsers.map(f => f.Id),\r\n ExternalCustomerId: current.ExternalCustomer?.Id,\r\n FundingType: isNullOrUndefined(current.FundingType)\r\n ? null\r\n : current.FundingType?.Id,\r\n InstituteProjectId: current.InstituteProject?.Id,\r\n Name: current.DisplayName,\r\n PartialAttendance: current.PartialAttendance,\r\n PartialAttendanceStart: current.PartialAttendanceStart || null,\r\n PartialAttendanceEnd: current.PartialAttendanceEnd || null,\r\n Tutoring: current.Tutoring,\r\n FullDayReservation: current.FullDayReservation,\r\n Username: current.BookedBy?.Id,\r\n StaffUser: current.StaffUser?.Id,\r\n UserGroupId: current.ADGroup?.Id,\r\n TrainingSignUp: current.TrainingSignUp,\r\n TrainingSessionId: current.TrainingSession?.Id,\r\n PurchaseOrder: current.PurchaseOrder,\r\n Reference: current.Reference,\r\n Status: current.Status?.Id,\r\n TransferFromId: current.TransferFromId,\r\n UserRequestedByApproval: settings?.UserRequestedByApproval,\r\n UserRequestedBackground: false,\r\n TransferredTo: current.TransferredTo?.Id,\r\n WorkflowBooking: current.WorkflowBooking || null,\r\n RecurringUpdateOption: settings?.RecurringUpdateOption || 1,\r\n AllStartTimes: [],\r\n BudgetIds: [],\r\n OfflineServices: offlineServices.map(f => {\r\n return {\r\n OfflineServiceTypeId: f.ServiceTypeID,\r\n ServiceTypeName: f.ServiceType,\r\n UnitsName: f.Units,\r\n Factor: f.DiscountFactor,\r\n Quantity: f.Quantity,\r\n Remarks: f.Remarks,\r\n InventoryBatchId: f.InventoryBatchId,\r\n BudgetId: f.BudgetID,\r\n BudgetExperimentId: f.BudgetExperimentId,\r\n UserGroup: f.UserGroup,\r\n } as OfflineservicesModel;\r\n }),\r\n TransferInProgress: settings?.TransferInProgress,\r\n WaitingTransferApproval: current.WaitingTransferApproval,\r\n InsertedAt: settings?.Entered,\r\n InsertedBy: settings?.RecordDate,\r\n UpdatedAt: new Date(),\r\n UpdatedBy: user?.Id,\r\n CancelledAt: settings?.Cancelled,\r\n CustomFormValues: current.FormValues.map(f => {\r\n return {\r\n FieldId: f.FormFieldId,\r\n Value: f.Value,\r\n DisplayValue: f.DisplayValue,\r\n } as CustomFormValueModel;\r\n }),\r\n Parts: [],\r\n TutorName: settings?.TutorName,\r\n Terminated: terminate ?? false,\r\n TotalCost: settings?.TotalCost ?? 0,\r\n SavedForLater:\r\n settings?.SaveForLater || current.Status?.Id === ReservationStatus.Draft,\r\n } as ReservationUpdateModel;\r\n return entity;\r\n}\r\n","import { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { ITrainingSessionDto } from 'api/odata/generated/entities/ITrainingSessionDto';\r\nimport { ReservationStatus } from 'api/odata/generated/enums/ReservationStatus';\r\nimport { RepetitiveOptions } from 'enums/RepetitiveOptions';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport {\r\n ReservationGlobalState,\r\n ReservationEquipment,\r\n RecurringReservationUpdateOptions,\r\n ReservationBudgetModel,\r\n CustomFormValueModel,\r\n OfflineservicesModel,\r\n ReservationRepeatModel,\r\n ReservationInsertModel,\r\n} from './types';\r\n\r\nexport function ConvertModelToInsertEntity(\r\n state: ReservationGlobalState,\r\n user?: AuthenticatedUser,\r\n) {\r\n const entity = {\r\n Id: state.details.Id,\r\n Services: state.details.EquipmentsData.map(item => {\r\n return {\r\n EquipmentId: item.Id,\r\n EquipmentName: item.Name,\r\n AccServiceIds:\r\n state.details.AccServices.length > 0\r\n ? state.details.AccServices.filter(\r\n a => (a as IEquipmentAccServicesDto).EquipmentId === item.Id,\r\n ).map(a => a.Id)\r\n : [],\r\n AssemblyId: null,\r\n ReservationId: state.details.Id,\r\n } as ReservationEquipment;\r\n }),\r\n StartTime: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(\r\n state.details.TrainingSession !== null\r\n ? (state.details.TrainingSession as ITrainingSessionDto).StartDate ??\r\n state.details.StartTime\r\n : state.details.StartTime,\r\n ),\r\n ),\r\n EndTime: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(\r\n state.details.TrainingSession !== null\r\n ? (state.details.TrainingSession as ITrainingSessionDto).EndDate ??\r\n state.details.EndTime\r\n : state.details.EndTime,\r\n ),\r\n ),\r\n Remarks: state.details.Remarks || null,\r\n SampleRunId: state.details.SampleRunId,\r\n BudgetId: state.details.Budget?.Id,\r\n BudgetExperimentId: state.details.BudgetExperiment?.Id,\r\n Collaborators: state.details.CollaboratedUsers.map(f => f.Id),\r\n ExternalCustomerId: state.details.ExternalCustomer?.Id,\r\n FundingType: isNullOrUndefined(state.details.FundingType)\r\n ? null\r\n : state.details.FundingType?.Id,\r\n InstituteProjectId: state.details.InstituteProject?.Id,\r\n Name: state.details.DisplayName,\r\n PartialAttendance: state.details.PartialAttendance,\r\n PartialAttendanceStart: state.details.PartialAttendanceStart || null,\r\n PartialAttendanceEnd: state.details.PartialAttendanceEnd || null,\r\n Tutoring: state.details.Tutoring,\r\n FullDayReservation: state.details.FullDayReservation,\r\n Username: state.details.BookedBy?.Id,\r\n StaffUser: state.details.StaffUser?.Id,\r\n UserGroupId: state.details.ADGroup?.Id,\r\n TrainingSignUp: state.details.TrainingSignUp,\r\n TrainingSessionId: state.details.TrainingSession?.Id,\r\n PurchaseOrder: state.details.PurchaseOrder,\r\n Reference: state.details.Reference,\r\n Status: (state.details.Status?.Id || 1) as ReservationStatus,\r\n TransferFromId: state.details.TransferFromId,\r\n UserRequestedByApproval: state.settings.UserRequestedByApproval,\r\n UserRequestedBackground: false,\r\n TransferredTo: state.details.TransferredTo?.Id,\r\n WorkflowBooking: state.details.WorkflowBooking || null,\r\n RecurringUpdateOption: (state.settings.RecurringUpdateOption ||\r\n 1) as RecurringReservationUpdateOptions,\r\n AllStartTimes: [],\r\n BudgetIds:\r\n !!state.settings.PartReservations &&\r\n state.settings.PartReservations.length > 0\r\n ? state.settings.PartReservations.map(f => {\r\n return {\r\n id: f.BudgetID,\r\n text: f.BudgetName,\r\n ReservationId: f.Id,\r\n } as ReservationBudgetModel;\r\n })\r\n : [],\r\n TransferInProgress: false,\r\n WaitingTransferApproval: state.details.WaitingTransferApproval,\r\n InsertedAt: dateUtils.formatISO(new Date()),\r\n InsertedBy: user?.Id,\r\n UpdatedAt: dateUtils.formatISO(new Date()),\r\n UpdatedBy: user?.Id,\r\n CancelledAt: null,\r\n CustomFormValues: state.details.FormValues.map(f => {\r\n return {\r\n FieldId: f.FormFieldId,\r\n Value: f.Value,\r\n DisplayValue: f.DisplayValue,\r\n } as CustomFormValueModel;\r\n }),\r\n Parts: [],\r\n OfflineServices: state.offlineServices.map(f => {\r\n return {\r\n OfflineServiceTypeId: f.ServiceTypeID,\r\n ServiceTypeName: f.ServiceType,\r\n UnitsName: f.Units,\r\n Factor: f.DiscountFactor,\r\n Quantity: f.Quantity,\r\n Remarks: f.Remarks,\r\n InventoryBatchId: f.InventoryBatchId,\r\n BudgetId: f.BudgetID,\r\n BudgetExperimentId: f.BudgetExperimentId,\r\n UserGroup: f.UserGroup,\r\n } as OfflineservicesModel;\r\n }),\r\n TutorName: state.settings.TutorName,\r\n AssignToServiceRequestId: state.settings.AssignToServiceRequestId,\r\n AssignToServiceRequestRowIds: state.settings.AssignToServiceRequestRowIds,\r\n AssignToServiceRequestSampleIds:\r\n state.settings.AssignToServiceRequestSampleIds,\r\n Repeat:\r\n state?.RepetitiveOptions?.RecurringEvents?.Id &&\r\n state?.RepetitiveOptions?.RecurringEvents?.Id !==\r\n (RepetitiveOptions.DoNotRepeat as number)\r\n ? ({\r\n RepeatsEveryType: state.RepetitiveOptions?.RepeatsEveryPeriod?.Id,\r\n RepeatsEveryNum: state.RepetitiveOptions?.RepeatsEveryDay?.Id,\r\n RepeatEndTime: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(\r\n state.RepetitiveOptions?.RecurringEndDate ??\r\n dateUtils.addDays(new Date(), 7),\r\n ),\r\n ),\r\n RepeatOption: state.RepetitiveOptions?.RecurringEvents?.Id || 0,\r\n Repeat_Period: state.settings.Repeat_Period,\r\n RepeatsBy: state.RepetitiveOptions?.RepeatsMonthlyBy?.Id,\r\n RepeatsOn: state.RepetitiveOptions?.RepeatsOnDays.filter(\r\n d => d.checked === true,\r\n ).map(f => f.Id),\r\n } as ReservationRepeatModel)\r\n : null,\r\n Terminated: false,\r\n TotalCost: state.settings.TotalCost ?? 0,\r\n SavedForLater: state.settings.SaveForLater,\r\n } as ReservationInsertModel;\r\n if (\r\n !!state.settings.MandatoriesEquipments &&\r\n state.settings.MandatoriesEquipments.length > 0\r\n ) {\r\n entity.Services = [\r\n ...entity.Services,\r\n ...state.settings.MandatoriesEquipments.map(item => {\r\n return {\r\n EquipmentId: item.Id,\r\n EquipmentName: item.Name,\r\n AccServiceIds:\r\n state.details.AccServices.length > 0\r\n ? state.details.AccServices.filter(\r\n a => (a as IEquipmentAccServicesDto).EquipmentId === item.Id,\r\n ).map(a => a.Id)\r\n : [],\r\n } as ReservationEquipment;\r\n }),\r\n ];\r\n }\r\n if ((state.details.OptionalsEquipments?.length ?? 0) > 0) {\r\n if (state.details.OptionalsEquipments.some(f => f.checked === true)) {\r\n entity.Services = [\r\n ...entity.Services,\r\n ...state.details.OptionalsEquipments.filter(\r\n f => f.checked === true,\r\n ).map(item => {\r\n return {\r\n EquipmentId: item.Id,\r\n EquipmentName: item.Name,\r\n AccServiceIds:\r\n state.details.AccServices.length > 0\r\n ? state.details.AccServices.filter(\r\n a =>\r\n (a as IEquipmentAccServicesDto).EquipmentId === item.Id,\r\n ).map(a => a.Id)\r\n : [],\r\n } as ReservationEquipment;\r\n }),\r\n ];\r\n }\r\n }\r\n return entity;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport {\r\n fork,\r\n call,\r\n put,\r\n take,\r\n select,\r\n takeLatest,\r\n takeLeading,\r\n} from 'redux-saga/effects';\r\nimport { reservationActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { ReservationsApi as api } from 'api/ReservationsApi';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport {\r\n EquipmentsChangeStateParameters,\r\n IMandatoryEquipmentsDto,\r\n IReservationDto,\r\n IReservationEquipmentDto,\r\n MultiReservationResponseModel,\r\n ReservationDetailsResponseModel,\r\n ReservationDetailsState,\r\n ReservationEquipmentsChangeResult,\r\n ReservationInsertModel,\r\n ReservationMultiEvent,\r\n ReservationQueryStringParameters,\r\n ReservationSettingsState,\r\n ReservationUpdateModel,\r\n ServiceSettingsState,\r\n TransferToReservation,\r\n UserTrainingReservationData,\r\n} from './types';\r\nimport { mapSettingsFromServices } from './mapSettingsFromServices';\r\nimport { ConvertModelToUpdateEntity } from './ConvertModelToUpdateEntity';\r\nimport { ConvertModelToInsertEntity } from './ConvertModelToInsertEntity';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectGlobalSettingBool,\r\n selectOffsetDate,\r\n selectKnownModule,\r\n} from 'app/slice/selectors';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport i18next from 'i18next';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { translations } from 'locales/translations';\r\nimport { ReservationDetailsProps } from '..';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { AxiosError } from 'axios';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\nimport { CustomFormTypeEnum } from 'enums/CustomFormType';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { FileStoreApi } from 'api/fileStoreApi';\r\nimport { getFilesModel, UpdateFilesModel } from 'utils/fileStoreHelper';\r\nimport { GlobalSettingsType } from '../components/useGlobalSettingsHook';\r\nimport { Entity } from 'types/common';\r\nimport { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport {\r\n selectCloneReservations,\r\n selectRemovedOfflineServices,\r\n selectReservationDtoState,\r\n selectUserRequestedBackground,\r\n} from './selectors';\r\nimport { OtherServicesApi } from 'api/OtherServicesApi';\r\nimport { ConsumableServicesResponse } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\nimport { tryParseBool, tryParseInt } from 'utils/string-utils';\r\nimport { repetitiveActions } from 'app/components/Forms/FormRepetitive/slice';\r\nimport { newDate } from '../components/utils';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { isEmpty } from 'lodash';\r\nimport { addModelError, getErrorMessages } from 'utils/modelStateUtils';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { CreateReservationActionPayloadType } from './CreateReservationActionPayloadType';\r\nimport { UpdateReservationActionPayloadType } from './UpdateReservationActionPayloadType';\r\nimport { GetIsNotBillable } from './getBudgetVisible';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\n\r\nfunction* doInitReservation(\r\n action: PayloadAction<{\r\n query: ReservationQueryStringParameters;\r\n globalSettings: GlobalSettingsType;\r\n prevState?: ReservationDetailsState;\r\n }>,\r\n) {\r\n try {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n if (action.payload.query.id !== undefined) {\r\n yield* doInitReservationEdit({\r\n type: action.type,\r\n payload: {\r\n id: parseInt(action.payload.query.id),\r\n globalSettings: action.payload.globalSettings,\r\n UpdateToNow: tryParseBool(action.payload.query.UpdateToNow) ?? false,\r\n Start: action.payload.query.Start,\r\n End: action.payload.query.End,\r\n },\r\n });\r\n return;\r\n }\r\n\r\n const result = yield call(api.initReservation, action.payload.query);\r\n console.debug('reseration result: ', result);\r\n let isChange = action.payload.query.resourceChanged === 'true';\r\n let response = result as ReservationDetailsResponseModel;\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: 'initReservationSucc',\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n let equipments =\r\n response.model.EquipmentsData.length > 0\r\n ? response.model.EquipmentsData\r\n : !!response.model.BaseEquipment\r\n ? [response.model.BaseEquipment]\r\n : [];\r\n if (equipments.length > 0) {\r\n yield put(\r\n actions.extendEquipmentSettingsState({\r\n equipments: equipments,\r\n mandatories: response.model.MandatoriesEquipments,\r\n accServices: response.model.AccServices,\r\n globalSettings: action.payload.globalSettings,\r\n settings: {} as ServiceSettingsState,\r\n }),\r\n );\r\n }\r\n if (!isChange) {\r\n if (action.payload.query.Start !== undefined) {\r\n response.model.StartTime = dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(action.payload.query.Start),\r\n );\r\n }\r\n if (action.payload.query.End !== undefined) {\r\n response.model.EndTime = dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(action.payload.query.End),\r\n );\r\n // dateUtils.formatQueryStringDate(\r\n // dateUtils.parseISO(action.payload.query.End),\r\n // );\r\n }\r\n // copy query options to the model\r\n if (action.payload.query.id === undefined) {\r\n // set reservation's sample run id to requested value so that it will be later sent to the server during reservation insert\r\n const sampleRunId = tryParseInt(action.payload.query.sampleRunId);\r\n if (sampleRunId !== undefined) {\r\n response.model.SampleRunId = sampleRunId;\r\n }\r\n }\r\n }\r\n\r\n yield put(\r\n actions.initReservation_Success({\r\n hasErrors: !isEmpty(response.ErrorMessages),\r\n model: response.model,\r\n isChanged: isChange,\r\n isEdit: response.model.Id > 0,\r\n globalSettings: action.payload.globalSettings,\r\n userTrainigData: response.userTrainingsApprovalData,\r\n }),\r\n );\r\n if (equipments.length > 0 && !(response.model.Id > 0)) {\r\n let allEquipments = [\r\n ...response.model.EquipmentsData,\r\n ...(response.model\r\n .MandatoriesEquipments as Entity[] as IReservationEquipmentDto[]),\r\n ];\r\n const parameters: EquipmentsChangeStateParameters = {\r\n AccServices:\r\n response.model.AccServices.length > 0\r\n ? response.model.AccServices.map(f => f.Id)\r\n : [],\r\n Equipments: allEquipments.map(f => f.Id),\r\n ReservationId: (response.model.Id ?? 0) > 0 ? response.model.Id : null,\r\n Start:\r\n // preserve requested start time\r\n dateUtils.tryFormatIso(action.payload.query.Start) ??\r\n // use the server value if time was not requested\r\n dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(response.model.StartTime),\r\n ),\r\n End:\r\n // preserve requested end time\r\n dateUtils.tryFormatIso(action.payload.query.End) ??\r\n // use the server value if time was not requested\r\n dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(response.model.EndTime),\r\n ),\r\n BookedBy: response.model.BookedBy?.Id || user?.Id || null,\r\n Status: response.model.StatusId,\r\n TrainingSignUp: response.model.TrainingSignUp,\r\n Tutoring: response.model.Tutoring,\r\n ADGroup:\r\n response.model.ADGroup?.Id || user?.ActiveUserGroup?.Id || null,\r\n FundingTypeId: isNullOrUndefined(response.model.FundingTypeId)\r\n ? null\r\n : response.model.FundingTypeId,\r\n CheckStatus: false,\r\n TrainingSessionId: response.model.TrainingSession?.Id || null,\r\n Remarks: response.model.Remarks || null,\r\n BudgetId:\r\n response.model.Budget?.Id ||\r\n (isChange &&\r\n !!action.payload.prevState &&\r\n !!action.payload.prevState.Budget)\r\n ? action.payload?.prevState?.Budget?.Id ?? null\r\n : action.payload.query.bid ?? null,\r\n CheckSession: false,\r\n FullDayReservation: response.model.FullDayReservation,\r\n PurchaseOrder: response.model.PurchaseOrder || null,\r\n } as EquipmentsChangeStateParameters;\r\n yield put(\r\n actions.initValidationData({\r\n parameters: parameters,\r\n warnings: response.WarningMessages,\r\n errors: getErrorMessages(response.ErrorMessages),\r\n }),\r\n );\r\n }\r\n } catch (error: unknown) {\r\n console.error(error);\r\n yield put(actions.initReservation_Error(error));\r\n }\r\n}\r\nfunction* doInitReservationEdit(\r\n action: PayloadAction<{\r\n id: number;\r\n globalSettings: GlobalSettingsType;\r\n UpdateToNow: boolean;\r\n Start?: string;\r\n End?: string;\r\n }>,\r\n) {\r\n try {\r\n var s: AppSettings = yield select(selectAppSettings);\r\n\r\n const AllowWorkflowBooking = yield select(state =>\r\n selectGlobalSettingBool(state, AllowedSettings.AllowWorkflowBooking),\r\n );\r\n const expand: Array = [\r\n action.payload.globalSettings.budgetModuleEnabled && 'Budget',\r\n action.payload.globalSettings.trainingSessionEnabled && 'TrainingSession',\r\n 'StaffUser',\r\n 'BookedBy',\r\n 'ADGroup',\r\n action.payload.globalSettings.instituteProjectsEnabled &&\r\n 'InstituteProject',\r\n // 'WorkflowBooking',\r\n //ExternalCustomer\r\n action.payload.globalSettings.budgetExperimentModuleEnabled &&\r\n 'BudgetExperiment',\r\n 'TransferredTo',\r\n !action.payload.globalSettings.hideReservationCollaborators &&\r\n 'CollaboratedUsers',\r\n 'LastUpdateAdmin',\r\n 'FormValues',\r\n action.payload.globalSettings.accServicesEnabled && 'AccServices',\r\n //'BaseEquipment',\r\n `EquipmentsData($expand=${[\r\n action.payload.globalSettings.accServicesEnabled && 'AccServices',\r\n 'OfflineServices',\r\n 'CustomForms',\r\n 'StaffUserSelection',\r\n ]\r\n .filter(f => typeof f === 'string')\r\n .join(',')})`,\r\n AllowWorkflowBooking && 'WorkflowBooking',\r\n ];\r\n // todo: add $select parameter to fetch the non navigation reservation properties\r\n // s.Modules.includes(KnownModules.SamplesAutomation) && 'SampleIds\r\n const result: IReservationDto = yield call(\r\n api.getReservation,\r\n action.payload.id,\r\n {\r\n $expand: expand.filter(f => typeof f === 'string').join(','),\r\n },\r\n );\r\n console.debug('reseration result: ', result);\r\n\r\n result.TerminateReservation = action.payload.UpdateToNow;\r\n if (result.TerminateReservation) {\r\n result.EndTime = dateUtils.formatISO(newDate(null));\r\n }\r\n\r\n result.OfflineMandatory = [];\r\n if (action.payload.Start !== undefined) {\r\n result.StartTime = dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(action.payload.Start),\r\n );\r\n }\r\n if (action.payload.End !== undefined) {\r\n result.EndTime = dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(action.payload.End),\r\n );\r\n }\r\n yield put(\r\n actions.initReservation_Success({\r\n hasErrors: false,\r\n model: result,\r\n isChanged: false,\r\n isEdit: true,\r\n globalSettings: action.payload.globalSettings,\r\n userTrainigData: null,\r\n }),\r\n );\r\n\r\n const equipments: IReservationEquipmentDto[] =\r\n result.EquipmentsData.length > 0\r\n ? result.EquipmentsData\r\n : !!result.BaseEquipment\r\n ? [result.BaseEquipment]\r\n : [];\r\n if (equipments.length > 0) {\r\n yield put(\r\n actions.extendEquipmentSettingsState({\r\n equipments: equipments,\r\n mandatories: result.MandatoriesEquipments ?? [],\r\n accServices: result.AccServices ?? [],\r\n globalSettings: action.payload.globalSettings,\r\n settings: {} as ServiceSettingsState,\r\n }),\r\n );\r\n }\r\n\r\n // if (\r\n // action.payload.globalSettings.accServicesEnabled &&\r\n // (result.AccServiceId !== null ||\r\n // !isEmptyOrWhitespace(result.AccServiceId))\r\n // ) {\r\n // try {\r\n // var AccServices: Array = yield call(\r\n // getReservationProperty,\r\n // result.Id,\r\n // 'AccServices',\r\n // );\r\n // if (AccServices.length > 0) {\r\n // yield put(\r\n // actions.setAnyValue({\r\n // fieldKey: 'AccServices',\r\n // fieldValue: AccServices,\r\n // }),\r\n // );\r\n // yield put(\r\n // actions.extendEquipmentSettingsState({\r\n // equipments: equipments,\r\n // mandatories: result.MandatoriesEquipments ?? [],\r\n // accServices: result.AccServices ?? [],\r\n // globalSettings: action.payload.globalSettings,\r\n // settings: {} as ServiceSettingsState,\r\n // }),\r\n // );\r\n // }\r\n // } catch (error) {\r\n // console.error(error);\r\n // }\r\n // }\r\n try {\r\n if (result.BookedBy !== null) {\r\n const userTrainingEquipments = yield call(\r\n api.getReservationUserTrainingEquipments,\r\n result.Id,\r\n );\r\n const trainingsData: UserTrainingReservationData = {\r\n StartTime: result.StartTime,\r\n EndTime: result.EndTime,\r\n FatherId: result.FatherId,\r\n ReservationId: result.Id,\r\n Tutoring: result.Tutoring,\r\n UserName: result.BookedBy.Id,\r\n Equipments: userTrainingEquipments.value,\r\n };\r\n yield put(actions.setTrainingsData(trainingsData));\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n if (s.Modules.includes(KnownModules.OfflineServices)) {\r\n yield fork(doInitReservationEdit_Load_OfflineMandatory, result);\r\n }\r\n } catch (error: unknown) {\r\n console.error(error);\r\n if ((error as AxiosError)?.response?.status === 404) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'reservationInit',\r\n message: 'Reservation Not Found',\r\n variant: 'error',\r\n }),\r\n );\r\n }\r\n yield put(actions.initReservation_Error(error));\r\n }\r\n}\r\nfunction* doInitReservationEdit_Load_OfflineMandatory(result: IReservationDto) {\r\n try {\r\n var OfflineMandatory = yield call(\r\n getReservationProperty,\r\n result.Id,\r\n 'OfflineMandatory',\r\n );\r\n yield put(\r\n actions.extendReservationSettings({\r\n OfflineMandatory: OfflineMandatory,\r\n }),\r\n );\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\nfunction* getReservationProperty(\r\n result: number,\r\n fieldName: keyof IReservationDto,\r\n) {\r\n return yield call(\r\n httpClient.get,\r\n `/api/odata/v4/reservations/${result}/${fieldName}`,\r\n );\r\n}\r\nfunction* selectConfirmPricingEnabled(\r\n action: PayloadAction,\r\n) {\r\n const confirmPricingEnabled = yield select(state =>\r\n selectGlobalSettingBool(state, AllowedSettings.ConfirmPricing),\r\n );\r\n const budgetModuleEnabled = yield select(state =>\r\n selectKnownModule(state, KnownModules.Budgets),\r\n );\r\n const priceSheetPricing = yield select(state =>\r\n selectKnownModule(state, KnownModules.PriceSheetPricing),\r\n );\r\n const billingModuleEnabled = yield select(state =>\r\n selectKnownModule(state, KnownModules.Billing),\r\n );\r\n const x = (\r\n action.payload.state.details.EquipmentsData as IReservationEquipmentDto[]\r\n )?.map((f: IReservationEquipmentDto) => ({\r\n HideProjects: f.HideProjects,\r\n BudgetsTurnedOn: f.BudgetsTurnedOn,\r\n Billable: f.Billable,\r\n ServiceTypeId: ServiceType.Online,\r\n }));\r\n var result =\r\n GetIsNotBillable(\r\n {\r\n billingModuleEnabled: billingModuleEnabled,\r\n priceSheetPricing: priceSheetPricing,\r\n budgetModuleEnabled: budgetModuleEnabled,\r\n },\r\n x,\r\n ) ?? confirmPricingEnabled;\r\n return result;\r\n}\r\n/**\r\n * Handles create reservation request. \"CalculateCredit\" also bundled inside.\r\n * @param action\r\n * @returns\r\n */\r\nfunction* doCreateReservation(\r\n action: PayloadAction,\r\n) {\r\n // caluclate credit requests also go through here\r\n if (action.payload.calcCredit !== true) {\r\n const confirmPricingEnabled = yield selectConfirmPricingEnabled(action);\r\n if (confirmPricingEnabled) {\r\n yield put(actions.showConfirmPricing(true));\r\n yield put(\r\n actions.createReservationInternal({\r\n ...action.payload,\r\n calcCredit: true,\r\n }),\r\n );\r\n\r\n const confirmAction = yield take(actions.сonfirmPricing.type);\r\n const confirm = confirmAction.payload === true;\r\n if (confirm !== true) {\r\n return;\r\n }\r\n }\r\n }\r\n yield put(actions.createReservationInternal(action.payload));\r\n yield take([\r\n actions.createReservation_Success,\r\n actions.createReservation_Error,\r\n actions.initReservation,\r\n ]);\r\n yield put(actions.showConfirmPricing(false));\r\n}\r\n\r\nconst insertReservationNoficiationMessageKey = 'reservationInsertError';\r\nfunction* doCreateReservationInternal(\r\n action: PayloadAction,\r\n) {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const newDate = yield select(state => selectOffsetDate(state, new Date()));\r\n const isCloned = yield select(selectCloneReservations);\r\n const httpPayloads: ReservationInsertModel = ConvertModelToInsertEntity(\r\n action.payload.state,\r\n user,\r\n );\r\n\r\n if (action.payload.calcCredit === true) {\r\n httpPayloads.Remarks = 'CalculateCredit';\r\n }\r\n const customFormFiles = action.payload.state.customFormFiles;\r\n\r\n yield* processUserRequestedInBackround(httpPayloads);\r\n try {\r\n yield put(\r\n appSettingsActions.removeNotification(\r\n insertReservationNoficiationMessageKey,\r\n ),\r\n );\r\n const result = yield call(api.insertReservation, httpPayloads);\r\n let response = result as ReservationDetailsResponseModel;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (isEmpty(responseErrors) && !action.payload.calcCredit) {\r\n if (customFormFiles.length > 0) {\r\n let data = getFilesModel(\r\n [],\r\n customFormFiles,\r\n FileTypes.ReservationFile,\r\n response.Id || -1,\r\n CustomFormTypeEnum.Reservation,\r\n httpPayloads.RecurringUpdateOption,\r\n null,\r\n null,\r\n null,\r\n );\r\n const fileRes = yield call(FileStoreApi.saveFormFiles, data);\r\n let fileResponse = fileRes as IResponseType;\r\n if (fileResponse.ErrorMessages.length > 0) {\r\n fileResponse.ErrorMessages.forEach(errorMessage =>\r\n addModelError(responseErrors, errorMessage),\r\n );\r\n }\r\n }\r\n }\r\n const errorMessages = getErrorMessages(responseErrors);\r\n if (errorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n errorMessages\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .map(item => {\r\n return {\r\n key: insertReservationNoficiationMessageKey,\r\n message: item,\r\n variant: 'error',\r\n autoHideDuration: AUTO_HIDE_DURATION,\r\n closable: true,\r\n };\r\n }),\r\n ),\r\n );\r\n if (isCloned) {\r\n yield put(actions.setCloneReservation(false));\r\n }\r\n if (action.payload.calcCredit) {\r\n yield put(\r\n actions.caluclateCredit_Success({ credit: 0, balance: null }),\r\n );\r\n }\r\n } else {\r\n if (action.payload.calcCredit) {\r\n yield put(\r\n actions.caluclateCredit_Success({\r\n credit: response.credit ?? 0,\r\n balance: response.balance,\r\n }),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: responseSuccess[0],\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'reservationInsertSuccess',\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: true,\r\n itemName: i18next.t(translations.ReservationDetails),\r\n detailsType: RenderPageType.ReservationDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: '' + response.Id ?? -1,\r\n },\r\n } as ReservationDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: 'reservationInsertWarning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.warnOnTrainingSession) {\r\n let linkUrl = `/trainingsessions?eqid=${response.FirstEquipmentId}&nextonly=true`;\r\n let linkText = i18next.t(translations.ClickHere) as string;\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'warnOnTrainingSession',\r\n persist: true,\r\n message: '',\r\n messageType: SnackBarMessageType.showLinkMessage,\r\n messageTypeProps: {\r\n Id: 0,\r\n created: true,\r\n itemName: i18next.t(translations.UpcomingTrainingSessions),\r\n linkUrl: linkUrl,\r\n linkText: linkText,\r\n afterLinkText: i18next.t(\r\n translations.res_futureTrainingSession_LinkTitle,\r\n ),\r\n detailsType: undefined,\r\n detailsTypeProps: undefined,\r\n },\r\n variant: 'warning',\r\n }),\r\n );\r\n }\r\n yield put(\r\n repetitiveActions.resetState(\r\n dateUtils.formatISO(dateUtils.dateOrStringToDate(newDate)),\r\n ),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n }\r\n if (!action.payload.calcCredit) {\r\n const errorMessages = getErrorMessages(responseErrors);\r\n let hasErrors = errorMessages.length > 0;\r\n if (!isCloned) {\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n }\r\n\r\n yield put(\r\n actions.createReservation_Success({\r\n hasErrors: hasErrors,\r\n reservationIds: response.ReservationIds,\r\n insertModel: response.insertedModel,\r\n MaxReservationComplexityValidationResult:\r\n response.MaxReservationComplexityValidationResult,\r\n }),\r\n );\r\n }\r\n } catch (error: unknown) {\r\n console.error(error);\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'reservationInsert',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createReservation_Error(Error));\r\n }\r\n}\r\n\r\nconst AUTO_HIDE_DURATION = 30000;\r\nconst updateReservationNotificationMessageKey = 'reservationUpdateErr';\r\nfunction* doUpdateReservation(\r\n action: PayloadAction,\r\n) {\r\n yield put(\r\n appSettingsActions.removeNotification(\r\n updateReservationNotificationMessageKey,\r\n ),\r\n );\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const isCloned = yield select(selectCloneReservations);\r\n const reservationDto = yield select(selectReservationDtoState);\r\n const reccurentUpdateOption =\r\n action.payload.settings?.RecurringUpdateOption || 1;\r\n const httpPayloads: ReservationUpdateModel = ConvertModelToUpdateEntity(\r\n action.payload.original,\r\n action.payload.current,\r\n action.payload.settings,\r\n action.payload.offlineServices,\r\n user,\r\n action.payload.terminate,\r\n );\r\n let filesData: UpdateFilesModel[] = [];\r\n if (\r\n action.payload.originalCustomFormFiles.length > 0 ||\r\n action.payload.currentCustomFormFiles.length > 0\r\n ) {\r\n filesData = getFilesModel(\r\n action.payload.originalCustomFormFiles,\r\n action.payload.currentCustomFormFiles,\r\n FileTypes.ReservationFile,\r\n action.payload.current.Id,\r\n CustomFormTypeEnum.Reservation,\r\n reccurentUpdateOption,\r\n null,\r\n null,\r\n null,\r\n );\r\n }\r\n try {\r\n yield* processUserRequestedInBackround(httpPayloads);\r\n const results = yield call(api.updateReservation, httpPayloads);\r\n let response = results as ReservationDetailsResponseModel;\r\n let respErrors = response.ErrorMessages;\r\n if (isEmpty(respErrors.length)) {\r\n if (filesData.length > 0) {\r\n let fileRes = yield call(FileStoreApi.updateFormFiles, filesData);\r\n let fileResponses = fileRes as IResponseType;\r\n if (fileResponses.ErrorMessages.length > 0) {\r\n fileResponses.ErrorMessages.forEach(errorMessage =>\r\n addModelError(respErrors, errorMessage),\r\n );\r\n }\r\n }\r\n }\r\n const errorMessages = getErrorMessages(respErrors);\r\n if (errorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n errorMessages.map(item => {\r\n return {\r\n key: updateReservationNotificationMessageKey,\r\n message: item,\r\n variant: 'error',\r\n autoHideDuration: AUTO_HIDE_DURATION,\r\n closable: true,\r\n };\r\n }),\r\n ),\r\n );\r\n if (isCloned) {\r\n yield put(actions.setCloneReservation(false));\r\n }\r\n if (action.payload.terminate) {\r\n yield put(actions.terminateReservation_error());\r\n }\r\n } else {\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'reservationUpdateSuccess',\r\n message:\r\n action.payload.terminate === true\r\n ? i18next.t(translations.Succes_ReservationTerminated)\r\n : response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.ReservationDetails),\r\n detailsType: RenderPageType.ReservationDetails,\r\n itemEndName: action.payload.terminate\r\n ? ' end time updated'\r\n : undefined,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: '' + response.Id,\r\n },\r\n } as ReservationDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n if (action.payload.terminate === true) {\r\n yield call(api.sendTerminateNotification, response.ReservationIds);\r\n yield put(actions.terminateReservation_success());\r\n }\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'reservationUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.userTrainingsApprovalData === null) {\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n // insert offline services\r\n if (\r\n action.payload.offlineServices.length > 0 &&\r\n action.payload.offlineServices.some(f => f.Id < 1)\r\n ) {\r\n let services: IOtherServices[] = action.payload.offlineServices.filter(\r\n f => f.Id < 1,\r\n );\r\n let reccurentServices: IOtherServices[] = [];\r\n let resIds: number[] = [];\r\n if (reccurentUpdateOption !== 1) {\r\n //following reservations\r\n if (reccurentUpdateOption === 2) {\r\n resIds = response.ReservationIds.filter(\r\n f => f >= (response.Id ?? action.payload.original.Id),\r\n );\r\n } else {\r\n //all reservations\r\n resIds = response.ReservationIds;\r\n }\r\n\r\n resIds.forEach(f => {\r\n services.forEach(s => {\r\n reccurentServices.push({\r\n ...s,\r\n ReservationId: f,\r\n });\r\n });\r\n });\r\n }\r\n const offRes = yield call(\r\n OtherServicesApi.insertConsumableServices,\r\n reccurentServices.length > 0 ? reccurentServices : services,\r\n );\r\n let offResponse = offRes as ConsumableServicesResponse;\r\n let offErrors = offResponse.ErrorMessages;\r\n let offWarnings = offResponse.WarningMessages;\r\n if (offErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n offErrors.map(item => {\r\n return {\r\n key: 'serviceInsertError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (offWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n offWarnings.map(item => {\r\n return {\r\n key: 'serviceInsertWarning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n //delete offline services\r\n const removedOfflineServices = yield select(selectRemovedOfflineServices);\r\n if (removedOfflineServices.length > 0) {\r\n let removedServiceType = removedOfflineServices.map(\r\n f => f.ServiceTypeID,\r\n );\r\n let remResIds: number[] = [];\r\n if (reccurentUpdateOption !== 1) {\r\n //following reservations\r\n if (reccurentUpdateOption === 2) {\r\n remResIds = response.ReservationIds.filter(\r\n f => f >= (response.Id ?? action.payload.original.Id),\r\n );\r\n } else {\r\n //all reservations\r\n remResIds = response.ReservationIds;\r\n }\r\n } else {\r\n remResIds.push(response.Id ?? action.payload.original.Id);\r\n }\r\n const delData = {\r\n serviceTypes: removedServiceType,\r\n reservationIds: remResIds,\r\n };\r\n if (\r\n delData.serviceTypes.length > 0 &&\r\n delData.reservationIds.length > 0\r\n ) {\r\n const delRes: IResponseType = yield call(\r\n OtherServicesApi.deleteReservationServices,\r\n delData,\r\n );\r\n if (delRes.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n delRes.ErrorMessages.map((item, indx) => {\r\n return {\r\n key: `serviceDeleteError-${indx}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'serviceDeleteSuccess',\r\n message: 'Offline Services deleted successfully',\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n }\r\n let hasErrors = !isEmpty(response.ErrorMessages);\r\n\r\n if (isCloned) {\r\n yield put(\r\n actions.initClonedReservation_Success({\r\n model: reservationDto,\r\n reservation: action.payload.current,\r\n settings: action.payload.settings,\r\n }),\r\n );\r\n }\r\n yield put(\r\n actions.updateReservation_Success({\r\n hasErrors: hasErrors,\r\n userTrainigData: response.userTrainingsApprovalData,\r\n insertModel: response.insertedModel,\r\n MaxReservationComplexityValidationResult:\r\n response.MaxReservationComplexityValidationResult,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n console.error(error);\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'reservationUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateReservation_Error(Error));\r\n if (action.payload.terminate) {\r\n yield put(actions.terminateReservation_error());\r\n }\r\n }\r\n}\r\nfunction* processUserRequestedInBackround(\r\n httpPayloads: ReservationUpdateModel,\r\n) {\r\n httpPayloads.UserRequestedBackground = yield select(\r\n selectUserRequestedBackground,\r\n );\r\n // reset the complexity confirmation flag\r\n yield put(actions.setUserRequestedBackground(false));\r\n}\r\n\r\nfunction* doUpdateSettigs(action: PayloadAction) {\r\n yield put(actions.updateReservationSettings(action.payload));\r\n}\r\nfunction* doUpdateEquipmentSettigs(\r\n action: PayloadAction<{\r\n equipments: IReservationEquipmentDto[];\r\n mandatories: IMandatoryEquipmentsDto[];\r\n accServices: IEquipmentAccServicesDto[];\r\n globalSettings: GlobalSettingsType;\r\n settings?: ServiceSettingsState;\r\n }>,\r\n) {\r\n try {\r\n let allEquipments = [\r\n ...action.payload.equipments,\r\n ...(action.payload\r\n .mandatories as Entity[] as IReservationEquipmentDto[]),\r\n ];\r\n const authenticatedUser = yield select(selectAuthenticatedUser);\r\n let newSettings = mapSettingsFromServices(\r\n allEquipments,\r\n action.payload.accServices,\r\n action.payload.globalSettings,\r\n authenticatedUser,\r\n action.payload.settings,\r\n );\r\n yield put(actions.updateEquipmentSettingsState(newSettings));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\nfunction* doLoadValidationData(\r\n action: PayloadAction<{\r\n parameters: EquipmentsChangeStateParameters;\r\n warnings: string[];\r\n errors: string[];\r\n }>,\r\n) {\r\n try {\r\n let res = yield call(\r\n api.getEquipmentsChangeState,\r\n action.payload.parameters,\r\n );\r\n let response = res as ReservationEquipmentsChangeResult;\r\n if (!!response?.CustomForms) {\r\n if (response?.CustomForms?.IsValid) {\r\n yield put(\r\n actions.extendReservationSettings({\r\n CustomForms: response.CustomForms.CustomForms || [],\r\n }),\r\n );\r\n }\r\n }\r\n if (!!response.StatusChange && response.StatusChange !== null) {\r\n yield put(\r\n actions.extendReservationSettings({\r\n IsForceTutoring: response.StatusChange.IsForceTutoring,\r\n }),\r\n );\r\n }\r\n response.WarningMessages = [\r\n ...response.WarningMessages,\r\n ...action.payload.warnings,\r\n ];\r\n response.ErrorMessages = [\r\n ...response.ErrorMessages,\r\n ...action.payload.errors,\r\n ];\r\n yield put(actions.initValidationData_Success(response));\r\n } catch (error: unknown) {\r\n console.error(error);\r\n yield put(actions.initValidationData_Error());\r\n }\r\n}\r\nfunction* doSetStart(action: PayloadAction) {\r\n yield put(\r\n actions.setStartSuccess(\r\n dateUtils.formatISO(dateUtils.dateOrStringToDate(action.payload)),\r\n ),\r\n );\r\n}\r\nfunction* doSetEnd(action: PayloadAction) {\r\n yield put(\r\n actions.setEndSuccess(\r\n dateUtils.formatISO(dateUtils.dateOrStringToDate(action.payload)),\r\n ),\r\n );\r\n}\r\nfunction* doSetAny(\r\n action: PayloadAction<{\r\n fieldKey: keyof ReservationDetailsState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setAnyValueSuccess(action.payload));\r\n}\r\nfunction* doTransferReservation(action: PayloadAction) {\r\n try {\r\n let res = yield call(api.transferReservation, action.payload);\r\n let response = res as IResponseType;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: 'transferError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n yield put(actions.transferReservation_Error(response.ErrorMessages[0]));\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'transferSuccess',\r\n message: response.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n yield* doSetAny({\r\n payload: {\r\n fieldKey: 'WaitingTransferApproval',\r\n fieldValue: true,\r\n },\r\n type: action.type,\r\n });\r\n yield* doSetAny({\r\n payload: {\r\n fieldKey: 'TransferredTo',\r\n fieldValue: action.payload.User,\r\n },\r\n type: action.type,\r\n });\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n yield put(actions.transferReservation_Success(action.payload));\r\n yield call(api.sendTransferNotification, action.payload);\r\n }\r\n } catch (error: unknown) {\r\n console.error(error);\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'transferError',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.transferReservation_Error(Error));\r\n }\r\n}\r\nfunction* doCancelTransferReservation(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n let res = yield call(\r\n api.cancelTransferReservation,\r\n action.payload.ReservtionId,\r\n );\r\n let response = res as IResponseType;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: 'transferError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n yield put(actions.cancelTransfer_Error(response.ErrorMessages[0]));\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'transferSuccess',\r\n message: response.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n yield* doSetAny({\r\n payload: {\r\n fieldKey: 'WaitingTransferApproval',\r\n fieldValue: false,\r\n },\r\n type: action.type,\r\n });\r\n yield* doSetAny({\r\n payload: {\r\n fieldKey: 'TransferredTo',\r\n fieldValue: null,\r\n },\r\n type: action.type,\r\n });\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n yield put(actions.cancelTransfer_Success());\r\n yield call(api.sendCancelTransferNotification, action.payload);\r\n }\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'transferError',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.cancelTransfer_Error(Error));\r\n }\r\n}\r\nfunction* doTerminateReservation(\r\n action: PayloadAction<{\r\n current: ReservationDetailsState;\r\n original: ReservationDetailsState;\r\n currentCustomFormFiles: IFormFileValue[];\r\n originalCustomFormFiles: IFormFileValue[];\r\n settings: ReservationSettingsState | undefined;\r\n }>,\r\n) {\r\n yield* doUpdateReservation({\r\n payload: {\r\n current: action.payload.current,\r\n original: action.payload.original,\r\n currentCustomFormFiles: action.payload.currentCustomFormFiles,\r\n originalCustomFormFiles: action.payload.originalCustomFormFiles,\r\n offlineServices: [],\r\n settings: action.payload.settings,\r\n terminate: true,\r\n },\r\n type: action.type,\r\n });\r\n}\r\nfunction* doUpdateMultiReservations(\r\n action: PayloadAction<{\r\n reservations: ReservationMultiEvent[];\r\n }>,\r\n) {\r\n for (let idx = 0; idx < action.payload.reservations.length; idx++) {\r\n const results = yield call(\r\n api.updateMultiReservations,\r\n action.payload.reservations[idx],\r\n );\r\n let response = results as MultiReservationResponseModel;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: `reservationUpdateErr_${response.Model.Id}`,\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `reservationUpdateWarn_${response.Model.Id}`,\r\n message: response.WarningMessages[0],\r\n variant: 'warning',\r\n }),\r\n );\r\n }\r\n if (response.SuccessMessages.length) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `reservationUpdateSucc_${response.Model.Id}`,\r\n message: response.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n }\r\n yield put(actions.updateMultiReservations_completed());\r\n}\r\n\r\nfunction* doOpenSidePanel(action: PayloadAction) {\r\n yield put(\r\n appSettingsActions.removeNotification(\r\n updateReservationNotificationMessageKey,\r\n ),\r\n );\r\n yield put(\r\n appSettingsActions.removeNotification(\r\n insertReservationNoficiationMessageKey,\r\n ),\r\n );\r\n}\r\n\r\nexport function* reservationSaga() {\r\n yield takeLeading(actions.initReservation.type, doInitReservation);\r\n yield takeLatest(actions.createReservation.type, doCreateReservation);\r\n yield takeLatest(\r\n actions.createReservationInternal.type,\r\n doCreateReservationInternal,\r\n );\r\n yield takeLatest(actions.updateReservation.type, doUpdateReservation);\r\n yield takeLatest(actions.extendReservationSettings.type, doUpdateSettigs);\r\n yield takeLatest(\r\n actions.extendEquipmentSettingsState.type,\r\n doUpdateEquipmentSettigs,\r\n );\r\n yield takeLatest(actions.initValidationData.type, doLoadValidationData);\r\n yield takeLatest(actions.setStartDate.type, doSetStart);\r\n yield takeLatest(actions.setEndDate.type, doSetEnd);\r\n yield takeLatest(actions.setAnyValue.type, doSetAny);\r\n yield takeLatest(actions.transferReservation.type, doTransferReservation);\r\n yield takeLatest(actions.cancelTransfer.type, doCancelTransferReservation);\r\n yield takeLatest(actions.terminateReservation.type, doTerminateReservation);\r\n yield takeLatest(\r\n actions.updateMultiReservations.type,\r\n doUpdateMultiReservations,\r\n );\r\n yield takeLeading(layoutActions.openSidePanel.type, doOpenSidePanel);\r\n yield takeLeading(layoutActions.resetSidePanel.type, doOpenSidePanel);\r\n yield takeLeading(layoutActions.closeSidePanel.type, doOpenSidePanel);\r\n}\r\n","import { IReservationEquipmentDto } from './types';\r\n\r\nexport function TryDisableRemoveableEquipments(\r\n equipments: IReservationEquipmentDto[],\r\n condition: (item: IReservationEquipmentDto) => boolean,\r\n title?: string,\r\n): IReservationEquipmentDto[] {\r\n let disabled = equipments\r\n .filter(f => condition(f) === true)\r\n .map(f =>\r\n Object.assign({}, f, {\r\n noremoved: true,\r\n titleInfo: title,\r\n }),\r\n );\r\n let other = equipments.filter(f => condition(f) === false);\r\n return [...disabled, ...other];\r\n}\r\n","import { CheckEntity } from 'app/components/CheckBoxGroup';\r\nimport { generateTrainingSessionName } from 'app/components/pickers/AutocompletePickers/TrainingSessionPicker';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\nimport { Entity } from 'types/common';\r\nimport { GlobalSettingsType } from '../components/useGlobalSettingsHook';\r\nimport { combineOptionalEquipments } from './mapSettingsFromServices';\r\nimport { TryDisableRemoveableEquipments } from './TryDisableRemoveableEquipments';\r\nimport {\r\n IReservationDto,\r\n getSingleReservationStatus,\r\n ReservationDetailsState,\r\n} from './types';\r\n\r\nexport function ConvertDtoToModel(\r\n dto: IReservationDto,\r\n globalSettings?: GlobalSettingsType,\r\n) {\r\n let equipments =\r\n dto.EquipmentsData.length > 0\r\n ? dto.EquipmentsData\r\n : dto.BaseEquipment === null\r\n ? []\r\n : [dto.BaseEquipment];\r\n if (dto.Id > 0) {\r\n if (\r\n dto.StaffMandatoryEquipment !== null &&\r\n dto.StaffMandatoryEquipment !== undefined\r\n ) {\r\n equipments = TryDisableRemoveableEquipments(\r\n equipments,\r\n f => f.Id === dto.StaffMandatoryEquipment?.Id,\r\n `Mandatory instrument for ${dto.StaffUser?.Name}`,\r\n );\r\n }\r\n if (!globalSettings?.allowToRemoveFromMultipleReservation) {\r\n equipments = TryDisableRemoveableEquipments(\r\n equipments,\r\n f => f.Id > 0,\r\n `Not removeable service`,\r\n );\r\n }\r\n }\r\n let model: ReservationDetailsState = {\r\n Id: dto.Id,\r\n FatherId: dto.FatherId,\r\n BookedBy: (dto.BookedBy as Entity) || null,\r\n AccServices: dto.AccServices || [],\r\n Budget: (dto.Budget as Entity) || null,\r\n CollaboratedUsers: (dto.CollaboratedUsers as Entity[]) || [],\r\n EndTime: dto.EndTime,\r\n EquipmentsData: equipments as Entity[],\r\n FormValues: dto.FormValues,\r\n InstituteProject: (dto.InstituteProject as Entity) || null,\r\n PartialAttendance: dto.PartialAttendance,\r\n SampleIds: dto.SampleIds,\r\n StaffUser: (dto.StaffUser as Entity) || null,\r\n StartTime: dto.StartTime,\r\n TrainingSession:\r\n dto.TrainingSession === null || dto.TrainingSession === undefined\r\n ? null\r\n : generateTrainingSessionName(dto.TrainingSession),\r\n TrainingSignUp: dto.TrainingSignUp,\r\n TransferredTo: (dto.TransferredTo as Entity) || null,\r\n WaitingTransferApproval: dto.WaitingTransferApproval,\r\n TransferFromId: dto.TransferFromId,\r\n Tutoring: dto.Tutoring,\r\n FullDayReservation: dto.FullDayReservation,\r\n ADGroup: (dto.ADGroup as Entity) || null,\r\n BudgetExperiment: (dto.BudgetExperiment as Entity) || null,\r\n DisplayName: dto.DisplayName,\r\n ExternalCustomer: (dto.ExternalCustomer as Entity) || null,\r\n FundingType:\r\n dto.FundingTypeId !== null\r\n ? getSingleInvoiceFundingType(dto.FundingTypeId)\r\n : null,\r\n PartialAttendanceEnd: dto.PartialAttendanceEnd,\r\n PartialAttendanceStart: dto.PartialAttendanceStart,\r\n PurchaseOrder: dto.PurchaseOrder,\r\n Reference: dto.Reference,\r\n Remarks: dto.Remarks,\r\n SampleRunId: dto.SampleRunId,\r\n Status: getSingleReservationStatus(dto.StatusId),\r\n WorkflowBooking: (dto.WorkflowBooking as Entity) || null,\r\n OptionalsEquipments: (\r\n combineOptionalEquipments(dto.OptionalsEquipments) ?? []\r\n ).map(op => {\r\n if (dto.EquipmentsData.some(f => f.Id === op.Id)) {\r\n return Object.assign({}, op, { disabled: true, checked: false });\r\n } else {\r\n return Object.assign({}, op, { disabled: false, checked: false });\r\n }\r\n }) as CheckEntity[],\r\n AssemblyParts: dto.AssemblyParts,\r\n };\r\n return model;\r\n}\r\n","import {\r\n IReservationDto,\r\n RecurringReservationUpdateOptions,\r\n ReservationSettingsState,\r\n} from './types';\r\n\r\nexport function getReservationSettings(dto: IReservationDto) {\r\n let settings: ReservationSettingsState = {\r\n BaseEquipment: dto.BaseEquipment,\r\n FatherId: dto.FatherId,\r\n Repeat_Period: dto.Repeat_Period,\r\n TrainingSessionOnly: dto.TrainingSessionOnly,\r\n SessionId: dto.SessionId,\r\n RecordDate: dto.RecordDate,\r\n LastUpdateDate: dto.LastUpdateDate,\r\n Entered: dto.Entered,\r\n Cancelled: dto.Cancelled,\r\n LastUpdateAdmin: dto.LastUpdateAdmin,\r\n RepeatEndTime: dto.RepeatEndTime,\r\n Repeat: dto.Repeat,\r\n HasCharges: dto.HasCharges,\r\n FundingTypeId: dto.FundingTypeId,\r\n ParentAssemblyReservationId: dto.ParentAssemblyReservationId,\r\n TopAssemblyReservationId: dto.TopAssemblyReservationId,\r\n TransferInProgress: dto.TransferInProgress,\r\n HasOfflineServices: dto.HasOfflineServices,\r\n HasTrainingSession: dto.HasTrainingSession,\r\n NextReservationTime: dto.NextReservationTime,\r\n PartReservations: dto.PartReservations,\r\n AssignToServiceRequestId: dto.AssignToServiceRequestId,\r\n AssignToServiceRequestRowIds: dto.AssignToServiceRequestRowIds,\r\n AssignToServiceRequestSampleIds: dto.AssignToServiceRequestSampleIds,\r\n TutorName: dto.TutorName,\r\n UserRequestedByApproval: false,\r\n RecurringUpdateOption: RecurringReservationUpdateOptions.CurrentReservation,\r\n CustomForms: [],\r\n MandatoriesEquipments: dto.MandatoriesEquipments,\r\n OptionalsEquipments: dto.OptionalsEquipments,\r\n TerminateReservation: dto.TerminateReservation,\r\n FirstInitEquipments: dto.FirstInitEquipments,\r\n OfflineMandatory: dto.OfflineMandatory,\r\n IsForceTutoring: dto.IsForceTutoring,\r\n ForceFullDayReservations: dto.ForceFullDayReservations,\r\n FutureReservation: dto.IsFuture,\r\n Ongoing: dto.IsOngoing,\r\n PastReservation: dto.IsPast,\r\n StaffMandatoryEquipment: dto.StaffMandatoryEquipment,\r\n OfflineOptional: [],\r\n SaveForLater: false,\r\n TotalCost: undefined,\r\n };\r\n\r\n return settings;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { GlobalSettingsType } from '../components/useGlobalSettingsHook';\r\nimport { reservationSaga } from './saga';\r\nimport {\r\n createReservation_Success_Payload,\r\n EquipmentsChangeStateParameters,\r\n IMandatoryEquipmentsDto,\r\n IReservationDto,\r\n IReservationEquipmentDto,\r\n PricingState,\r\n ReservationDetailsState,\r\n ReservationEquipmentsChangeResult,\r\n ReservationGlobalState,\r\n ReservationMultiEvent,\r\n ReservationQueryStringParameters,\r\n ReservationSettingsState,\r\n ReservationState,\r\n ServiceSettingsState,\r\n TransferToReservation,\r\n updateReservation_SuccessPayload,\r\n UserTrainingReservationData,\r\n} from './types';\r\nimport { ConvertDtoToModel } from './ConvertDtoToModel';\r\nimport { getReservationSettings } from './getReservationSettings';\r\nimport { AxiosError } from 'axios';\r\nimport { CreateReservationActionPayloadType } from './CreateReservationActionPayloadType';\r\nimport { UpdateReservationActionPayloadType } from './UpdateReservationActionPayloadType';\r\n\r\nexport const initialState: ReservationState = {\r\n detailsState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n isEdit: false,\r\n confirmAssistedReservations: undefined,\r\n processing: false,\r\n reservationSettingsState: undefined,\r\n equipmentsSettingsState: undefined,\r\n trainingsData: null,\r\n valueHandler: undefined,\r\n requestedValueFor: undefined,\r\n requestedValue: undefined,\r\n equipmentChangeResultState: undefined,\r\n isChangeCompleted: undefined,\r\n transferState: {\r\n User: null,\r\n ReservtionId: undefined,\r\n WaitingTransferApproval: undefined,\r\n transferProcessing: undefined,\r\n transferStepCompleted: undefined,\r\n },\r\n caluclateCreditState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n },\r\n hasCharges: undefined,\r\n savedOfflineServices: [],\r\n removedOfflineServices: [],\r\n refeshOfflineService: undefined,\r\n terminationState: {\r\n terminatProcessing: undefined,\r\n terminateCompleted: undefined,\r\n },\r\n cloneReservation: undefined,\r\n reservationDtoState: undefined,\r\n asyncChangeLoading: undefined,\r\n\r\n showConfirmPricing: false,\r\n refreshWorkOrderLink: undefined,\r\n notFound: undefined,\r\n multipleProcessing: undefined,\r\n multiPanelClosed: undefined,\r\n userRequestedBackground: false,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'reservation',\r\n initialState,\r\n reducers: {\r\n /**\r\n * Resets reservation details to it's initial state\r\n * @param state\r\n * @param action\r\n */\r\n reset(state, action: PayloadAction) {\r\n Object.assign(state, initialState);\r\n },\r\n initReservation(\r\n state,\r\n action: PayloadAction<{\r\n query: ReservationQueryStringParameters;\r\n globalSettings: GlobalSettingsType;\r\n prevState?: ReservationDetailsState;\r\n }>,\r\n ) {\r\n let isChange = action.payload.query.resourceChanged === 'true';\r\n state.processing = isChange ? false : true;\r\n if (isChange) {\r\n state.detailsState = Object.assign(state.detailsState, {\r\n processing: true,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n });\r\n state.isChangeCompleted = false;\r\n } else {\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.equipmentsSettingsState = undefined;\r\n state.userRequestedBackground = false;\r\n }\r\n state.confirmAssistedReservations = undefined;\r\n state.reservationSettingsState = undefined;\r\n state.reservationDtoState = undefined;\r\n state.isEdit = false;\r\n state.savedOfflineServices = [];\r\n state.removedOfflineServices = [];\r\n state.trainingsData = null;\r\n },\r\n initReservation_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n model: IReservationDto;\r\n isChanged: boolean;\r\n isEdit: boolean;\r\n globalSettings: GlobalSettingsType;\r\n userTrainigData: UserTrainingReservationData | null;\r\n }>,\r\n ) {\r\n state.processing = false;\r\n state.detailsState.data = ConvertDtoToModel(\r\n action.payload.model,\r\n action.payload.globalSettings,\r\n );\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.reservationSettingsState = getReservationSettings(\r\n action.payload.model,\r\n );\r\n state.isChangeCompleted =\r\n action.payload.isChanged === true ? true : undefined;\r\n state.transferState.WaitingTransferApproval =\r\n action.payload.model.WaitingTransferApproval;\r\n state.transferState.ReservtionId = action.payload.model.Id;\r\n state.transferState.User = action.payload.model.TransferredTo;\r\n state.reservationDtoState = action.payload.model;\r\n state.isEdit = action.payload.isEdit;\r\n state.trainingsData = action.payload.userTrainigData;\r\n if (action.payload.isEdit) {\r\n state.savedOfflineServices = [];\r\n state.removedOfflineServices = [];\r\n }\r\n },\r\n setTrainingsData(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.trainingsData = action.payload;\r\n },\r\n initClonedReservation_Success(\r\n state,\r\n action: PayloadAction<{\r\n model: IReservationDto;\r\n reservation: ReservationDetailsState;\r\n settings?: ReservationSettingsState;\r\n }>,\r\n ) {\r\n state.processing = false;\r\n state.detailsState.data = ConvertDtoToModel(action.payload.model); //action.payload.reservation;\r\n state.detailsState.processing = false;\r\n state.reservationSettingsState = getReservationSettings(\r\n action.payload.model,\r\n );\r\n state.isEdit = false;\r\n state.refeshOfflineService = true;\r\n },\r\n initReservation_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n state.isChangeCompleted = undefined;\r\n if ((action.payload as AxiosError)?.response?.status === 404) {\r\n state.detailsState.hasErrors = true;\r\n state.notFound = true;\r\n }\r\n },\r\n initValidationData(\r\n state,\r\n action: PayloadAction<{\r\n parameters: EquipmentsChangeStateParameters;\r\n warnings: string[];\r\n errors: string[];\r\n }>,\r\n ) {\r\n state.asyncChangeLoading = true;\r\n },\r\n initValidationData_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.equipmentChangeResultState = action.payload;\r\n state.asyncChangeLoading = undefined;\r\n },\r\n initValidationData_Error(state, action: PayloadAction) {\r\n state.equipmentChangeResultState = undefined;\r\n state.asyncChangeLoading = undefined;\r\n },\r\n resetDetailsState(state, action: PayloadAction) {\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.reservationSettingsState = undefined;\r\n state.confirmAssistedReservations = undefined;\r\n state.equipmentsSettingsState = undefined;\r\n state.trainingsData = null;\r\n state.transferState = {\r\n User: null,\r\n ReservtionId: undefined,\r\n WaitingTransferApproval: undefined,\r\n transferProcessing: undefined,\r\n };\r\n state.reservationDtoState = undefined;\r\n state.savedOfflineServices = [];\r\n state.submitCalculateCredit = undefined;\r\n state.removedOfflineServices = [];\r\n delete state.showConfirmPricing;\r\n state.ByApprovalErrors = undefined;\r\n state.MaxReservationComplexityValidationResult = undefined;\r\n state.userCanRequestApproval = undefined;\r\n state.refreshWorkOrderLink = undefined;\r\n state.notFound = undefined;\r\n },\r\n resetDetailsErrorsState(state, action: PayloadAction) {\r\n state.detailsState.hasErrors = false;\r\n state.detailsState.completed = false;\r\n },\r\n createReservationInternal(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n createReservation(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n if (action.payload.calcCredit === true) {\r\n state.caluclateCreditState.processing = true;\r\n state.caluclateCreditState.completed = undefined;\r\n state.caluclateCreditState.hasErrors = undefined;\r\n } else {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = false;\r\n state.detailsState.hasErrors = false;\r\n }\r\n },\r\n createReservation_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.MaxReservationComplexityValidationResult =\r\n action.payload.MaxReservationComplexityValidationResult;\r\n state.detailsState.completed = true;\r\n if (!action.payload.hasErrors) {\r\n state.savedOfflineServices = [];\r\n }\r\n },\r\n createReservation_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n state.cloneReservation = false;\r\n },\r\n updateReservation(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n updateReservation_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n state.confirmAssistedReservations =\r\n action.payload.userTrainigData !== null;\r\n state.trainingsData = action.payload.userTrainigData;\r\n state.MaxReservationComplexityValidationResult =\r\n action.payload.MaxReservationComplexityValidationResult;\r\n if (!action.payload.hasErrors) {\r\n state.savedOfflineServices = [];\r\n state.removedOfflineServices = [];\r\n }\r\n },\r\n updateReservation_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n extendReservationSettings(\r\n state,\r\n action: PayloadAction>,\r\n ) {},\r\n updateReservationSettings(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.reservationSettingsState = Object.assign(\r\n {},\r\n state.reservationSettingsState,\r\n action.payload,\r\n );\r\n },\r\n extendEquipmentSettingsState(\r\n state,\r\n action: PayloadAction<{\r\n equipments: IReservationEquipmentDto[];\r\n mandatories: IMandatoryEquipmentsDto[];\r\n accServices: IEquipmentAccServicesDto[];\r\n globalSettings: GlobalSettingsType;\r\n settings?: ServiceSettingsState;\r\n }>,\r\n ) {\r\n state.asyncChangeLoading = true;\r\n },\r\n updateEquipmentSettingsState(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.equipmentsSettingsState = action.payload;\r\n state.asyncChangeLoading = undefined;\r\n },\r\n resetAssisteTrainingData(state, action: PayloadAction) {\r\n state.confirmAssistedReservations = undefined;\r\n state.trainingsData = null;\r\n },\r\n resetEquipmentChangeState(state, action: PayloadAction) {\r\n state.equipmentChangeResultState = undefined;\r\n },\r\n setStartDate(state, action: PayloadAction) {},\r\n setStartSuccess(state, action: PayloadAction) {\r\n state.valueHandler = {\r\n run: true,\r\n fieldKey: 'StartTime',\r\n fieldValue: action.payload,\r\n shouldValidate: true,\r\n };\r\n },\r\n setEndDate(state, action: PayloadAction) {},\r\n setEndSuccess(state, action: PayloadAction) {\r\n state.valueHandler = {\r\n run: true,\r\n fieldKey: 'EndTime',\r\n fieldValue: action.payload,\r\n shouldValidate: true,\r\n };\r\n },\r\n setAnyValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof ReservationDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setAnyValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof ReservationDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.valueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetValueHandler(state, action: PayloadAction) {\r\n state.valueHandler = undefined;\r\n },\r\n getAnyValue(state, action: PayloadAction) {\r\n state.requestedValueFor = action.payload;\r\n },\r\n getAnyValueSuccess(state, action: PayloadAction) {\r\n state.requestedValue = action.payload;\r\n },\r\n resetRequestedFor(state, action: PayloadAction) {\r\n state.requestedValueFor = undefined;\r\n },\r\n transferReservation(state, action: PayloadAction) {\r\n state.transferState.transferProcessing = true;\r\n state.transferState.transferStepCompleted = undefined;\r\n },\r\n transferReservation_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.transferState.transferProcessing = false;\r\n state.transferState.User = action.payload.User;\r\n state.transferState.ReservtionId = action.payload.ReservtionId;\r\n state.transferState.WaitingTransferApproval = true;\r\n state.transferState.transferStepCompleted = true;\r\n },\r\n transferReservation_Error(state, action: PayloadAction) {\r\n state.transferState.transferProcessing = false;\r\n state.transferState.transferStepCompleted = false;\r\n },\r\n resetTransferState(state, action: PayloadAction) {\r\n state.transferState.transferProcessing = undefined;\r\n state.transferState.User = null;\r\n state.transferState.ReservtionId = undefined;\r\n state.transferState.WaitingTransferApproval = undefined;\r\n state.transferState.transferStepCompleted = undefined;\r\n },\r\n cancelTransfer(state, action: PayloadAction) {\r\n state.transferState.transferProcessing = true;\r\n state.transferState.transferStepCompleted = undefined;\r\n },\r\n cancelTransfer_Success(state, action: PayloadAction) {\r\n state.transferState.transferProcessing = false;\r\n state.transferState.User = null;\r\n state.transferState.WaitingTransferApproval = false;\r\n state.transferState.ReservtionId = undefined;\r\n state.transferState.transferStepCompleted = true;\r\n },\r\n cancelTransfer_Error(state, action: PayloadAction) {\r\n state.transferState.transferProcessing = false;\r\n state.transferState.transferStepCompleted = false;\r\n },\r\n calculateCredit(state, action: PayloadAction) {\r\n state.caluclateCreditState = {\r\n processing: true,\r\n };\r\n },\r\n caluclateCredit_Success(state, action: PayloadAction) {\r\n state.caluclateCreditState = {\r\n data: action.payload,\r\n completed: true,\r\n processing: false,\r\n };\r\n },\r\n calculateCredit_Error(state, action: PayloadAction) {\r\n state.caluclateCreditState = {\r\n completed: true,\r\n processing: false,\r\n };\r\n },\r\n setSubmitCalculateCredit(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.submitCalculateCredit = action.payload;\r\n },\r\n resetCreditState(state, action: PayloadAction) {\r\n state.caluclateCreditState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.submitCalculateCredit = undefined;\r\n },\r\n showConfirmPricing(state, action: PayloadAction) {\r\n state.showConfirmPricing = action.payload;\r\n state.detailsState.processing = action.payload;\r\n },\r\n сonfirmPricing(state, action: PayloadAction) {\r\n if (action.payload === false) {\r\n state.caluclateCreditState = {};\r\n state.detailsState.processing = action.payload;\r\n }\r\n state.showConfirmPricing = false;\r\n },\r\n setSavedOfflineServices(state, action: PayloadAction) {\r\n state.savedOfflineServices = action.payload;\r\n },\r\n setRemovedOfflineServices(state, action: PayloadAction) {\r\n state.removedOfflineServices = action.payload;\r\n },\r\n setRefreshOfflineServices(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.refeshOfflineService = action.payload;\r\n },\r\n terminateReservation(\r\n state,\r\n action: PayloadAction<{\r\n current: ReservationDetailsState;\r\n original: ReservationDetailsState;\r\n currentCustomFormFiles: IFormFileValue[];\r\n originalCustomFormFiles: IFormFileValue[];\r\n settings: ReservationSettingsState | undefined;\r\n }>,\r\n ) {\r\n state.terminationState.terminatProcessing = true;\r\n state.terminationState.terminateCompleted = undefined;\r\n },\r\n terminateReservation_success(state, action: PayloadAction) {\r\n state.terminationState.terminatProcessing = false;\r\n state.terminationState.terminateCompleted = true;\r\n },\r\n terminateReservation_error(state, action: PayloadAction) {\r\n state.terminationState.terminatProcessing = false;\r\n state.terminationState.terminateCompleted = true;\r\n },\r\n resetTerminateState(state, action: PayloadAction) {\r\n state.terminationState = {\r\n terminatProcessing: undefined,\r\n terminateCompleted: undefined,\r\n };\r\n },\r\n setCloneReservation(state, action: PayloadAction) {\r\n state.cloneReservation = action.payload;\r\n },\r\n setAsyncChangeLoading(state, action: PayloadAction) {\r\n state.asyncChangeLoading = action.payload;\r\n },\r\n\r\n setByApprovalErrors(\r\n state,\r\n action: PayloadAction | undefined>,\r\n ) {\r\n state.ByApprovalErrors = action.payload;\r\n },\r\n setUserCanRequestApproval(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.userCanRequestApproval = action.payload;\r\n },\r\n setMaxReservationComplexityValidationResult(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.MaxReservationComplexityValidationResult = action.payload;\r\n },\r\n setRefreshWorkOrderLink(state, action: PayloadAction) {\r\n state.refreshWorkOrderLink = action.payload;\r\n },\r\n updateMultiReservations(\r\n state,\r\n action: PayloadAction<{\r\n reservations: ReservationMultiEvent[];\r\n }>,\r\n ) {\r\n state.multipleProcessing = true;\r\n },\r\n updateMultiReservations_completed(state, action: PayloadAction) {\r\n state.multipleProcessing = false;\r\n },\r\n setMultipleProcessing(state, action: PayloadAction) {\r\n state.multipleProcessing = action.payload;\r\n },\r\n setMultipleClosed(state, action: PayloadAction) {\r\n state.multiPanelClosed = action.payload;\r\n },\r\n setUserRequestedBackground(state, action: PayloadAction) {\r\n state.userRequestedBackground = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: reservationActions } = slice;\r\n\r\nexport const useReservationSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: reservationSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useReservationSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { httpClient } from 'api/HttpClient';\r\n\r\nimport { IAssetDetails2Dto } from 'api/odata/generated/entities/IAssetDetails2Dto';\r\nimport {\r\n AvailabilityTypes,\r\n AvailabilityTypesUnion,\r\n} from 'api/odata/generated/enums/AvailabilityTypes';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { AutoMode } from 'enums/GlobalEnums';\r\nimport { ServiceTypeUnion } from 'api/odata/generated/enums/ServiceType';\r\nimport { IAsset } from '../IAsset';\r\nimport { AssetRowState, IAssetRow } from '../IAssetRow';\r\nimport {\r\n AssetDetailsAdditionalData,\r\n RawSection,\r\n Section,\r\n Sections,\r\n} from './types';\r\n\r\nexport const isBookable = (availabilityType?: AvailabilityTypesUnion) => {\r\n if (availabilityType === undefined) {\r\n return false;\r\n }\r\n const bookable: AvailabilityTypesUnion[] = [\r\n 'FreelyBookable',\r\n 'LectureRoom',\r\n 'LoanableEquipment',\r\n 'TrainingProgram',\r\n ];\r\n return bookable.includes(availabilityType);\r\n};\r\nexport const isOnlineService = (availabilityType?: AvailabilityTypesUnion) => {\r\n if (availabilityType === undefined) {\r\n return false;\r\n }\r\n const notOnline: AvailabilityTypesUnion[] = [\r\n 'ServiceGroup',\r\n 'ServiceRelated',\r\n 'RequestRelated',\r\n 'SuperGroup',\r\n ];\r\n return !notOnline.includes(availabilityType);\r\n};\r\nexport function removeArrayItem(target, id: string) {\r\n const ri = target.findIndex(v => v.Id === id);\r\n if (ri >= 0) {\r\n const rows = target.splice(ri, 1);\r\n return rows[0];\r\n } else return null;\r\n}\r\nexport function moveArrayItem(target, id: string, pos: number) {\r\n const ri = target.findIndex(v => v.Id === id);\r\n if (pos < target.length && ri >= 0 && pos !== ri) {\r\n const row = target.splice(ri, 1);\r\n target.splice(pos, 0, row[0]);\r\n }\r\n}\r\nexport function moveArrayItemToEnd(target, id: string) {\r\n const ri = target.findIndex(v => v.Id === id);\r\n if (ri >= 0) {\r\n const row = target.splice(ri, 1);\r\n target.splice(target.length, 0, row[0]);\r\n }\r\n}\r\nexport function moveArrayItemByName(target, id: string, name: string) {\r\n if (id !== name) {\r\n const ri = target.findIndex(v => v.Id === id);\r\n if (ri >= 0) {\r\n const rn = target.findIndex(v => v.Id === name);\r\n if (rn >= 0) {\r\n const row = target.splice(ri, 1);\r\n if (rn < ri) {\r\n target.splice(rn + 1, 0, row[0]);\r\n } else {\r\n target.splice(rn, 0, row[0]);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nexport function addArrayItemByName(target, id: string, name: string) {\r\n const ri = target.findIndex(v => v.Id === id);\r\n if (ri < 0) {\r\n const rn = target.findIndex(v => v.Id === name);\r\n if (rn > 0) {\r\n target.splice(rn + 1, 0, {\r\n Id: id,\r\n Visible: true,\r\n });\r\n } else {\r\n target.unshift({\r\n Id: id,\r\n Visible: true,\r\n });\r\n }\r\n }\r\n}\r\nexport function moveArrayItemByKey(target, key: string, pos: number) {\r\n const ri = target.findIndex(v => v.key === key);\r\n if (pos < target.length && ri >= 0 && pos !== ri) {\r\n const row = target.splice(ri, 1);\r\n target.splice(pos, 0, row[0]);\r\n }\r\n}\r\nexport function GetIsBookable(availabilityType: AvailabilityTypes) {\r\n let bookable: boolean = false;\r\n switch (availabilityType) {\r\n case AvailabilityTypes.FreelyBookable:\r\n case AvailabilityTypes.BookableWApproval:\r\n case AvailabilityTypes.LoanableEquipment:\r\n case AvailabilityTypes.LectureRoom:\r\n case AvailabilityTypes.TrainingProgram:\r\n bookable = true;\r\n break;\r\n default:\r\n bookable = false;\r\n break;\r\n }\r\n return bookable;\r\n}\r\nexport function GetReservationEnabled(\r\n availabilityType: AvailabilityTypes,\r\n active: boolean,\r\n notAllowReservations: boolean,\r\n) {\r\n let reservationEnabled: boolean = false;\r\n switch (availabilityType) {\r\n case AvailabilityTypes.FreelyBookable:\r\n case AvailabilityTypes.BookableWApproval:\r\n case AvailabilityTypes.LoanableEquipment:\r\n case AvailabilityTypes.LectureRoom:\r\n reservationEnabled = notAllowReservations === false && active === true;\r\n break;\r\n case AvailabilityTypes.TrainingProgram:\r\n reservationEnabled = active === true;\r\n break;\r\n case AvailabilityTypes.ServiceRelated:\r\n case AvailabilityTypes.ServiceGroup:\r\n case AvailabilityTypes.SuperGroup:\r\n case AvailabilityTypes.NotAvailable:\r\n case AvailabilityTypes.AvailableNotBookable:\r\n default:\r\n reservationEnabled = false;\r\n break;\r\n }\r\n return reservationEnabled;\r\n}\r\n\r\nexport function GetUsageEnabled(\r\n availabilityType: AvailabilityTypes,\r\n active: boolean,\r\n autoMode?: number,\r\n) {\r\n var result: boolean = autoMode === AutoMode?.LocalAppEnabled;\r\n switch (availabilityType) {\r\n case AvailabilityTypes.FreelyBookable:\r\n case AvailabilityTypes.BookableWApproval:\r\n case AvailabilityTypes.TrainingProgram:\r\n case AvailabilityTypes.LoanableEquipment:\r\n case AvailabilityTypes.LectureRoom:\r\n result = result && active === true;\r\n break;\r\n case AvailabilityTypes.ServiceRelated:\r\n case AvailabilityTypes.ServiceGroup:\r\n case AvailabilityTypes.SuperGroup:\r\n case AvailabilityTypes.NotAvailable:\r\n case AvailabilityTypes.AvailableNotBookable:\r\n default:\r\n result = result && false;\r\n break;\r\n }\r\n return result;\r\n}\r\n\r\nexport function GetAlertsEnabled(\r\n availabilityType: AvailabilityTypes,\r\n active: boolean,\r\n) {\r\n let alertsEnabled: boolean = false;\r\n switch (availabilityType) {\r\n case AvailabilityTypes.FreelyBookable:\r\n case AvailabilityTypes.BookableWApproval:\r\n case AvailabilityTypes.LoanableEquipment:\r\n case AvailabilityTypes.LectureRoom:\r\n case AvailabilityTypes.TrainingProgram:\r\n case AvailabilityTypes.NotAvailable:\r\n case AvailabilityTypes.AvailableNotBookable:\r\n alertsEnabled = active === true;\r\n break;\r\n case AvailabilityTypes.ServiceGroup:\r\n case AvailabilityTypes.SuperGroup:\r\n case AvailabilityTypes.ServiceRelated:\r\n case AvailabilityTypes.RequestRelated:\r\n default:\r\n alertsEnabled = false;\r\n break;\r\n }\r\n return alertsEnabled;\r\n}\r\nexport function GetNotificationAvailable(availabilityType: AvailabilityTypes) {\r\n let available: boolean = false;\r\n if (\r\n (availabilityType as number) === 7 ||\r\n availabilityType === (8 as number)\r\n ) {\r\n return true;\r\n } else {\r\n switch (availabilityType) {\r\n case AvailabilityTypes.FreelyBookable:\r\n case AvailabilityTypes.BookableWApproval:\r\n case AvailabilityTypes.LoanableEquipment:\r\n case AvailabilityTypes.LectureRoom:\r\n case AvailabilityTypes.TrainingProgram:\r\n available = true;\r\n break;\r\n default:\r\n available = false;\r\n break;\r\n }\r\n }\r\n return available;\r\n}\r\n\r\nexport const isValid = (row: IAssetRow, data: IAsset) => {\r\n if (\r\n row.State === AssetRowState.SectionName ||\r\n row.State === AssetRowState.Mandatory\r\n ) {\r\n return true;\r\n }\r\n const value = data![row.PropName ?? row.Id];\r\n const valid =\r\n row.validToRender !== undefined &&\r\n row.validToRender({ value: data![row.PropName ?? row.Id], original: data });\r\n if ((value !== null && value !== undefined && value !== '') || valid) {\r\n if (Array.isArray(value)) {\r\n return value.length > 0;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n};\r\nexport function GetValidRos(rows: IAssetRow[], data: IAsset): IAssetRow[] {\r\n return rows.filter(row => isValid(row, data));\r\n}\r\nexport function RemoveLastEmptySections(rows: IAssetRow[]) {\r\n if (rows.length > 0) {\r\n if (rows[rows.length - 1].State === AssetRowState.SectionName) {\r\n do {\r\n rows.pop();\r\n } while (\r\n rows.length > 0 &&\r\n rows[rows.length - 1].State === AssetRowState.SectionName\r\n );\r\n }\r\n }\r\n return rows;\r\n}\r\n\r\nexport function GetRawSections(rows: IAssetRow[]): RawSection[] {\r\n const sections: RawSection[] = rows\r\n .map((r, index) => {\r\n return {\r\n Id: r.Id,\r\n Index: index,\r\n SectionName: r.State === AssetRowState.SectionName,\r\n remove: false,\r\n };\r\n })\r\n .filter(f => f.SectionName);\r\n return sections;\r\n}\r\nexport function CheckEmptyRawSections(sections: RawSection[]) {\r\n if (sections.length > 1) {\r\n for (let i = 0; i < sections.length - 1; i++) {\r\n const s = sections[i];\r\n const s1 = sections[i + 1];\r\n if (s1.Index - s.Index === 1) {\r\n s.remove = true;\r\n }\r\n }\r\n }\r\n}\r\nexport function RemoveEmptySections(sections: RawSection[], rows: IAssetRow[]) {\r\n for (let i = 0; i < sections.length - 1; i++) {\r\n const s = sections[i];\r\n if (s.remove) {\r\n const ri = rows.findIndex(v => v.Id === s.Id);\r\n rows.splice(ri, 1);\r\n }\r\n }\r\n}\r\n\r\nexport function GetSections(rows: IAssetRow[]): Section[] {\r\n const noNameSection: Section = { Id: '', row: {} as IAssetRow, rows: [] };\r\n const sections: Section[] = [];\r\n let section: number = -1;\r\n for (let r of rows) {\r\n if (r.State === AssetRowState.SectionName) {\r\n section++;\r\n sections.push({\r\n Id: r.Id,\r\n Index: -1,\r\n row: r,\r\n rows: [],\r\n } as Section);\r\n } else {\r\n if (section >= 0) {\r\n sections[section].rows.push(r);\r\n } else {\r\n noNameSection.rows.push(r);\r\n }\r\n }\r\n }\r\n if (noNameSection.rows.length > 0) {\r\n sections.unshift(noNameSection);\r\n }\r\n return sections;\r\n}\r\nexport function RowsToSections(rows: IAssetRow[]): Section[] {\r\n const sections: Section[] = [];\r\n for (let r of rows) {\r\n sections.push({\r\n Id: r.Id,\r\n Index: -1,\r\n row: r,\r\n rows: [r],\r\n } as Section);\r\n }\r\n return sections;\r\n}\r\nexport function RowToSections(rows: IAssetRow[], id: string): Section | null {\r\n const row = removeArrayItem(rows, id);\r\n if (row !== null) {\r\n const section = {\r\n Id: row.Id,\r\n Index: -1,\r\n row: row,\r\n rows: [row],\r\n } as Section;\r\n return section;\r\n } else return null;\r\n}\r\nexport function GetRowsWithSections(\r\n rows: IAssetRow[],\r\n data: IAsset,\r\n): IAssetRow[] {\r\n let res: IAssetRow[] = GetValidRos(rows, data);\r\n res = RemoveLastEmptySections(res);\r\n const sections = GetRawSections(res);\r\n CheckEmptyRawSections(sections);\r\n RemoveEmptySections(sections, res);\r\n return res;\r\n}\r\nexport function GetRowsSections(\r\n rows: IAssetRow[],\r\n data: IAsset,\r\n isMobile?: boolean,\r\n): Sections {\r\n let leftRes: IAssetRow[] = [];\r\n let rightRes: IAssetRow[] = [];\r\n const checkSection = (row: IAssetRow) => {\r\n return isMobile\r\n ? ['Comments', 'AssetAssemblyStructure'].includes(row.Id) === false\r\n : ['ImageName', 'Comments', 'AssetAssemblyStructure'].includes(row.Id) ===\r\n false;\r\n };\r\n for (const row of rows) {\r\n if (isValid(row, data)) {\r\n if (checkSection(row)) {\r\n leftRes.push(row);\r\n } else {\r\n rightRes.push(row);\r\n }\r\n }\r\n }\r\n leftRes = RemoveLastEmptySections(leftRes);\r\n const sections = GetRawSections(leftRes);\r\n CheckEmptyRawSections(sections);\r\n RemoveEmptySections(sections, leftRes);\r\n if (isMobile) {\r\n if (rightRes.length > 0) {\r\n moveArrayItem(rightRes, 'AssetAssemblyStructure', 0);\r\n moveArrayItem(rightRes, 'Comments', 1);\r\n }\r\n } else {\r\n if (rightRes.length > 0) {\r\n moveArrayItem(rightRes, 'ImageName', 0);\r\n moveArrayItem(rightRes, 'AssetAssemblyStructure', 1);\r\n moveArrayItem(rightRes, 'Comments', 2);\r\n }\r\n }\r\n\r\n leftRes = leftRes.filter(getSectionsFilter(data));\r\n rightRes = rightRes.filter(getSectionsFilter(data));\r\n const resSections: Sections = {} as Sections;\r\n if (isMobile) {\r\n const imageSection = RowToSections(leftRes, 'ImageName');\r\n resSections.leftSections = GetSections(leftRes);\r\n if (imageSection !== null) {\r\n resSections.leftSections.unshift(imageSection);\r\n }\r\n } else {\r\n resSections.leftSections = GetSections(leftRes);\r\n }\r\n resSections.rightSections = RowsToSections(rightRes);\r\n return resSections;\r\n}\r\n\r\nconst getSectionsFilter = (data: IAssetDetails2Dto) => (row: IAssetRow) => {\r\n return (\r\n row.validToRender === undefined ||\r\n row.validToRender({\r\n value: data![row.PropName ?? row.Id],\r\n original: data,\r\n })\r\n );\r\n};\r\n/**\r\n * Main asset identifier based on primary key\r\n */\r\nexport interface AssetIdIdentifier {\r\n id: number;\r\n}\r\n/**\r\n * Service/ServiceType identification. In this case both properties must be supplied in order to prevent potential conflicts between different service types.\r\n */\r\nexport interface AssetServiceIdentifier {\r\n serviceType: ServiceTypeUnion;\r\n serviceId: number;\r\n}\r\n/**\r\n * Internal code based identifier.\r\n */\r\nexport interface AssetInternalCodeIdentifier {\r\n internalCode: string;\r\n}\r\n\r\n/**\r\n * Combined interface that uniquely identifies asset by one of the unioned interfaces\r\n */\r\nexport type AssetIdentifier =\r\n | AssetIdIdentifier\r\n | AssetServiceIdentifier\r\n | AssetInternalCodeIdentifier\r\n | {};\r\n\r\nexport async function fetchAssetBy(props: {\r\n id: AssetIdentifier;\r\n params: Record;\r\n isAuth?: boolean;\r\n}) {\r\n const res = await fetchAssetByInternal(props);\r\n if (res !== undefined) {\r\n res.Division = res.ServiceGroup?.DivisionName;\r\n res.Status = ' ';\r\n res.AlertsEnabled =\r\n props.isAuth === true\r\n ? GetAlertsEnabled(\r\n AvailabilityTypes[res.AvailabilityType.Id],\r\n res.Active,\r\n )\r\n : false;\r\n }\r\n return res;\r\n}\r\nasync function fetchAssetByInternal(props: {\r\n id: AssetIdentifier;\r\n params: Record;\r\n isAuth?: boolean;\r\n}) {\r\n const url = props.isAuth\r\n ? `/api/odata/v4/AssetDetails2`\r\n : `/api/odata/v4/PublicAsset`;\r\n if ((props.id as AssetIdIdentifier).id !== undefined) {\r\n const res: IAssetDetails2Dto = await httpClient.get(\r\n `${url}/${(props.id as AssetIdIdentifier).id}`,\r\n props.params,\r\n );\r\n return res;\r\n } else if (\r\n (props.id as AssetServiceIdentifier).serviceId !== undefined &&\r\n (props.id as AssetServiceIdentifier).serviceType !== undefined\r\n ) {\r\n const res: IODataQueryResponse = await httpClient.get(\r\n url,\r\n {\r\n ...props.params,\r\n $filter: `ServiceType eq '${\r\n (props.id as AssetServiceIdentifier).serviceType\r\n }' and ServiceId eq ${(props.id as AssetServiceIdentifier).serviceId}`,\r\n },\r\n );\r\n return res.value[0];\r\n } else if (\r\n (props.id as AssetInternalCodeIdentifier).internalCode !== undefined\r\n ) {\r\n const res: IODataQueryResponse = await httpClient.get(\r\n `${url}`,\r\n {\r\n ...props.params,\r\n $filter: new Condition(\r\n 'InternalCode',\r\n ODataOperators.Equals,\r\n (props.id as AssetInternalCodeIdentifier).internalCode,\r\n ).toString(),\r\n },\r\n );\r\n return res.value[0];\r\n }\r\n}\r\nexport async function fetchAssetAdditionalData(props: {\r\n Id: number;\r\n typeId: number;\r\n isAuth?: boolean;\r\n buttonsData?: boolean;\r\n}) {\r\n try {\r\n const res = await httpClient.post(\r\n props.isAuth\r\n ? `/api/odata/v4/AssetDetails2/GetAdditionalDetails`\r\n : `/api/odata/v4/PublicAsset/GetAdditionalDetails`,\r\n { key: props.Id, buttonsData: props.buttonsData, typeId: props.typeId },\r\n );\r\n return res;\r\n } catch {}\r\n}\r\n\r\nexport async function fetchAssetButtonsData(\r\n Id: number,\r\n): Promise {\r\n const res = await httpClient.post(\r\n `/api/odata/v4/AssetDetails2/GetButtonsData`,\r\n { key: Id },\r\n );\r\n return { ...{ Id: Id }, ...res };\r\n}\r\n","/**\r\n *\r\n * DatesRangeFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IFilterComponentProps } from 'app/components/BasicTable/Filters/IFilterComponentProps';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\nimport {\r\n getPeriodTypesEntity,\r\n PeriodTypes,\r\n PeriodTypesEntity,\r\n} from 'app/components/DatePeriods';\r\nimport { DatesRange } from 'types/DatesRange';\r\nimport { DatePeriodsPicker } from 'app/components/pickers/DatePeriodsPicker';\r\nimport { BookitDateTimePicker } from 'app/components/BookitDatePicker/BookitDateTimePicker';\r\nimport styled from 'styled-components';\r\n\r\n/**\r\n * Date picker to be used as a BasicTable filter component\r\n */\r\nconst allPeriods: Array = [\r\n 'CustomDate',\r\n 'Today',\r\n 'TodayTomorrow',\r\n 'ThisWeek',\r\n 'NextWeek',\r\n 'ThisMonth',\r\n 'NextMonth',\r\n 'ThisQuarter',\r\n 'NextQuarter',\r\n 'ThisYear',\r\n 'NextYear',\r\n 'LastWeek',\r\n 'LastMonth',\r\n 'LastQuarter',\r\n 'LastYear',\r\n];\r\nconst noFuturePeriods: Array = [\r\n 'CustomDate',\r\n 'ThisWeek',\r\n 'ThisMonth',\r\n 'ThisQuarter',\r\n 'ThisYear',\r\n 'LastWeek',\r\n 'LastMonth',\r\n 'LastQuarter',\r\n 'LastYear',\r\n];\r\nconst DatesRangeWrapper = styled.div`\r\n&.date-range-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 8px;\r\n width: 400px;\r\n`;\r\nexport interface DatesRangeFilterProps extends IFilterComponentProps {\r\n noFuturePeriods?: boolean;\r\n disableClearable?: boolean;\r\n}\r\nexport const DatesRangeFilter = ({\r\n disableClearable = true,\r\n ...props\r\n}: DatesRangeFilterProps) => {\r\n const { t } = useTranslation();\r\n const [value, setValue] = React.useState(\r\n props.value !== undefined ? props.value : new PresetDatesRange(),\r\n );\r\n const handleStartOnChange = (date: MaterialUiPickersDate) => {\r\n const changedValue = Object.assign(new PresetDatesRange(), value, {\r\n start: date,\r\n });\r\n setValue(changedValue);\r\n if (props.onChange !== undefined) {\r\n props.onChange(changedValue);\r\n }\r\n };\r\n const handleEndOnChange = (date: MaterialUiPickersDate) => {\r\n const changedValue = Object.assign(new PresetDatesRange(), value, {\r\n end: date,\r\n });\r\n setValue(changedValue);\r\n if (props.onChange !== undefined) {\r\n props.onChange(changedValue);\r\n }\r\n };\r\n\r\n const handleTypeChange = (periodValue: PeriodTypesEntity | null) => {\r\n let changedValue;\r\n if (disableClearable !== false || periodValue !== null) {\r\n changedValue = Object.assign(\r\n new PresetDatesRange(),\r\n {\r\n type:\r\n (periodValue as PeriodTypesEntity) ??\r\n (getPeriodTypesEntity('CustomDate') as PeriodTypesEntity),\r\n },\r\n DatesRange.fromPreset(\r\n (periodValue as PeriodTypesEntity) ??\r\n (getPeriodTypesEntity('CustomDate') as PeriodTypesEntity),\r\n null,\r\n null,\r\n ),\r\n );\r\n }\r\n setValue(state => changedValue);\r\n props.onChange(changedValue);\r\n };\r\n return (\r\n <>\r\n {(value !== undefined || disableClearable === false) && (\r\n \r\n \r\n {/* */}\r\n {value !== undefined &&\r\n value !== null &&\r\n value?.type !== undefined &&\r\n value.type.Id === 'CustomDate' && (\r\n <>\r\n \r\n\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default DatesRangeFilter;\r\n","/**\r\n *\r\n * BooleanPickerFilter\r\n *\r\n */\r\nimport { BooleanPicker } from 'app/components/BooleanPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport function BooleanPickerFilter(\r\n props: IFilterComponentProps & {\r\n trueName?: string;\r\n falseName?: string;\r\n info?: string;\r\n },\r\n) {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n}\r\nexport default BooleanPickerFilter;\r\n","/**\r\n *\r\n * ActionButton\r\n *\r\n */\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport * as React from 'react';\r\nimport { Button, ButtonsVariant } from '../Button';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { IconProp } from 'app/AllIcons';\r\nimport { PropTypes } from '@material-ui/core';\r\n\r\nexport interface ActionButtonProps {\r\n onClick?: React.MouseEventHandler;\r\n disabled?: boolean;\r\n starticon?: IconProp;\r\n endicon?: IconProp;\r\n text: string;\r\n title?: string;\r\n variant?: ButtonsVariant;\r\n size?: 'large' | 'medium' | 'small';\r\n autoFocus?: boolean;\r\n processing?: boolean;\r\n type?: 'button' | 'submit' | 'reset';\r\n target?: string;\r\n id?: string;\r\n href?: string | IPathAndQuery;\r\n color?: PropTypes.Color;\r\n fullWidth?: boolean;\r\n}\r\nexport function ActionButton({\r\n disabled,\r\n onClick,\r\n title,\r\n starticon,\r\n endicon,\r\n text,\r\n variant,\r\n size,\r\n processing,\r\n fullWidth,\r\n id,\r\n ...other\r\n}: ActionButtonProps) {\r\n return (\r\n }\r\n endIcon={endicon && }\r\n id={id}\r\n fullWidth={fullWidth}\r\n processing={processing}\r\n title={title}\r\n {...other}\r\n >\r\n <>{text}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * FormUserPicker\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { UserPicker, UserUrl } from '../pickers/AutocompletePickers/UserPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\n\r\nexport const FormUserPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig & {\r\n selectArray?: Array;\r\n urlType?: UserUrl;\r\n} & IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n variant=\"filled\"\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n disabled={props.disabled}\r\n predicates={props.predicates}\r\n selectArray={props.selectArray}\r\n urlType={props.urlType}\r\n />\r\n \r\n );\r\n};\r\n","import { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { CellProps, Renderer } from 'react-table';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\nexport const DateRenderer: Renderer>> = ({\r\n value,\r\n}) => {\r\n const { t } = useTranslation();\r\n return value === null || value === undefined ? (\r\n <>{t(translations.NA)}\r\n ) : (\r\n <>{dateUtils.shortDateFormat(value)}\r\n );\r\n};\r\nexport default DateRenderer;\r\n","export enum OfflineReferenceTypeEnum {\r\n Offline_Reservation = 1,\r\n Offline_Usage = 2,\r\n Offline_ServiceRequest = 3,\r\n}\r\nexport type OfflineReferenceTypeUnion = keyof typeof OfflineReferenceTypeEnum;\r\nexport const OfflineReferenceTypeUnionArray: Array =\r\n ['Offline_Reservation', 'Offline_Usage', 'Offline_ServiceRequest'];\r\n","import { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { ICustomFormDto } from 'api/odata/generated/entities/ICustomFormDto';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { ITrainingSessionDto } from 'api/odata/generated/entities/ITrainingSessionDto';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { SqlDayOfWeek } from 'api/odata/generated/enums/SqlDayOfWeek';\r\nimport { CheckEntity } from 'app/components/CheckBoxGroup';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { FieldHandlerProps } from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { RepetitiveOptions } from 'enums/RepetitiveOptions';\r\nimport { AsyncDataState, Entity } from 'types/common';\r\nimport { IRepetitiveDto } from 'types/IRepetitiveDto';\r\nimport { IResponseType, IResponseTypeBase } from 'types/ResponseType';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\nimport { IReservationAssemblyPartDto } from 'api/odata/generated/entities/IReservationAssemblyPartDto';\r\nimport { ReservationStatus } from 'api/odata/generated/enums/ReservationStatus';\r\nimport { IModelStateDictionary } from 'types/Modelstate';\r\n\r\n/* --- STATE --- */\r\nexport interface ReservationState {\r\n detailsState: AsyncDataState;\r\n reservationSettingsState?: ReservationSettingsState;\r\n equipmentsSettingsState?: ServiceSettingsState;\r\n confirmAssistedReservations?: boolean;\r\n trainingsData: UserTrainingReservationData | null;\r\n processing: boolean;\r\n valueHandler?: FieldHandlerProps;\r\n requestedValueFor?: keyof ReservationDetailsState;\r\n requestedValue?: any;\r\n equipmentChangeResultState?: ReservationEquipmentsChangeResult;\r\n isChangeCompleted?: boolean;\r\n transferState: TransferState;\r\n caluclateCreditState: AsyncDataState;\r\n hasCharges?: boolean;\r\n savedOfflineServices: IOtherServices[];\r\n removedOfflineServices: IOtherServices[];\r\n refeshOfflineService?: boolean;\r\n terminationState: TerminationState;\r\n cloneReservation?: boolean;\r\n reservationDtoState?: IReservationDto;\r\n isEdit: boolean;\r\n asyncChangeLoading?: boolean;\r\n submitCalculateCredit?: boolean;\r\n ByApprovalErrors?: Array | null;\r\n MaxReservationComplexityValidationResult?: string | null;\r\n showConfirmPricing?: boolean;\r\n userCanRequestApproval?: boolean;\r\n refreshWorkOrderLink?: boolean;\r\n notFound?: boolean;\r\n multipleProcessing?: boolean;\r\n multiPanelClosed?: boolean;\r\n userRequestedBackground: boolean;\r\n}\r\nexport interface ReservationQueryStringParameters {\r\n uid?: string;\r\n id?: string;\r\n selectedIds?: string;\r\n Start?: string;\r\n End?: string;\r\n proj?: string;\r\n tsid?: string;\r\n remarks?: string;\r\n accid?: string;\r\n singleClick?: string;\r\n duration?: string;\r\n ug?: string;\r\n un?: string;\r\n ft?: string;\r\n /**\r\n * Service Request ID\r\n */\r\n srid?: string;\r\n /**\r\n * ServiceRequest row ID\r\n */\r\n srrid?: string;\r\n /**\r\n * Service request sample IDs (comma separated)\r\n */\r\n srsid?: string;\r\n /**\r\n * Service request samples run ID\r\n */\r\n sampleRunId?: string;\r\n Edit?: string;\r\n defaultMulti?: string;\r\n resIdTransferredFrom?: string;\r\n source?: string;\r\n UpdateToNow?: string;\r\n terminated?: string;\r\n Shrink?: string;\r\n resourceChanged?: string;\r\n staffEquipmentId?: string;\r\n staffUser?: string;\r\n bid?: string;\r\n}\r\n// Model to Save Reservation - mutch Server Model\r\nexport interface ReservationEquipment {\r\n EquipmentId: number;\r\n EquipmentName: string;\r\n AccServiceIds: number[];\r\n AssemblyId: number | null;\r\n\r\n ReservationId: number | null;\r\n}\r\nexport interface ReservationBudgetModel {\r\n id: number;\r\n text: string;\r\n percent: number | null;\r\n ReservationId: number | null;\r\n}\r\nexport interface CustomFormValueModel {\r\n FieldId: number;\r\n Value?: string;\r\n DisplayValue?: string;\r\n}\r\nexport interface ReservationPartModel {\r\n StarTime: Date | string;\r\n EquipmentId: number;\r\n Id: number;\r\n BudgetId: number | null;\r\n}\r\nexport enum FundingTypes {\r\n Internal = 0,\r\n External = 1,\r\n}\r\nexport enum RecurringReservationUpdateOptions {\r\n CurrentReservation = 1,\r\n Following = 2,\r\n All = 3,\r\n}\r\nexport enum ReservationRepeatPeriods {\r\n Daily = 1,\r\n Weekly = 2,\r\n Monthly = 3,\r\n}\r\nexport enum ReservationRepeatMonthlyTypes {\r\n SameDate = 1,\r\n SameWeekDay = 2,\r\n}\r\nexport interface ReservationRepeatModel {\r\n RepeatsEveryNum: number | null;\r\n RepeatsEveryType: ReservationRepeatPeriods | null;\r\n RepeatsOn: SqlDayOfWeek[];\r\n RepeatsBy: ReservationRepeatMonthlyTypes;\r\n RepeatOption: RepetitiveOptions;\r\n RepeatEndTime: Date | string;\r\n Repeat_Period: number | null;\r\n}\r\n\r\nexport interface ReservationModel {\r\n Id: number;\r\n Services: ReservationEquipment[];\r\n StartTime: Date | string;\r\n EndTime: Date | string;\r\n Username: string;\r\n UserGroupId: string;\r\n Collaborators: string[];\r\n BudgetId: number | null;\r\n BudgetExperimentId: number | null;\r\n InstituteProjectId: number | null;\r\n WorkflowBooking: Entity | null;\r\n ExternalCustomerId: number | null;\r\n FundingType: FundingTypes | null;\r\n StaffUser: string | null;\r\n PurchaseOrder: string | null;\r\n Reference: string | null;\r\n Tutoring: boolean;\r\n TrainingSignUp: boolean;\r\n TrainingSessionId: number | null;\r\n Status: ReservationStatus;\r\n AllStartTimes: (Date | string)[];\r\n InsertedAt: Date | string | null;\r\n InsertedBy: string | null;\r\n UpdatedAt: Date | string | null;\r\n UpdatedBy: string | null;\r\n CancelledAt: Date | string | null;\r\n UserRequestedByApproval: boolean;\r\n UserRequestedBackground: boolean;\r\n Remarks: string | null;\r\n TutorName: string | null;\r\n PartialAttendance: boolean;\r\n PartialAttendanceStart: number | null;\r\n PartialAttendanceEnd: number | null;\r\n CustomFormValues: CustomFormValueModel[];\r\n Name: string;\r\n TransferFromId: number | null;\r\n TransferInProgress: boolean;\r\n TransferredTo: string | null;\r\n WaitingTransferApproval: boolean;\r\n Parts: ReservationPartModel[];\r\n RecurringUpdateOption: RecurringReservationUpdateOptions;\r\n BudgetIds: ReservationBudgetModel[];\r\n OfflineServices: OfflineservicesModel[];\r\n Terminated: boolean;\r\n TotalCost: number;\r\n SavedForLater: boolean;\r\n FullDayReservation: boolean;\r\n SampleRunId: number | null;\r\n}\r\nexport interface ReservationInsertModel extends ReservationModel {\r\n Repeat: ReservationRepeatModel | null;\r\n AssignToServiceRequestId: number | null;\r\n AssignToServiceRequestRowIds: number[];\r\n AssignToServiceRequestSampleIds: number[];\r\n}\r\nexport interface ReservationUpdateModel extends ReservationModel {}\r\nexport interface OfflineservicesModel {\r\n ServiceTypeName: string;\r\n Quantity: number;\r\n UnitsName: string;\r\n Remarks: string;\r\n Factor: number;\r\n OfflineServiceTypeId: number;\r\n InventoryBatchId: number | null;\r\n BudgetId: number | null;\r\n BudgetExperimentId: number | null;\r\n UserGroup: string | null;\r\n}\r\n// react side Model\r\n\r\nexport interface IMandatoryEquipmentsDto extends CheckEntity {\r\n Id: number;\r\n ParentName: string;\r\n Name: string;\r\n AssetId: number | null;\r\n AccServices: IEquipmentAccServicesDto[];\r\n AssemblyId: number | null;\r\n HasAssemblyParts: boolean;\r\n HideProjects: boolean;\r\n AllowPartialProjectCharges: boolean;\r\n AllowPartialSingleProjectCharges: boolean;\r\n TrainingSignUpApproval: number;\r\n HideTrainingSession: boolean;\r\n HasAttendance: boolean;\r\n ForceTutoring: boolean;\r\n IsEquipmentTutoring: boolean;\r\n NotAllowReservations: boolean;\r\n AllowOneAccSerOnly: boolean;\r\n AllowReservationCollaborators: number;\r\n ForceFullDayReservations: boolean;\r\n IsAdmin: boolean;\r\n Color: string;\r\n ServiceGroupId: number;\r\n ServiceGroupName: string;\r\n ReservationOfflineServicesEnabled: boolean | null;\r\n RestrictReservationToTimeSlots: boolean;\r\n MinOrderHours: number;\r\n DefaultReservationDuration: number;\r\n DefaultAccServiceId: number | null;\r\n BudgetsTurnedOn: boolean;\r\n Billable: boolean;\r\n OfflineServices: IEquipmentOfflineServiceTypeDto[];\r\n FirstCustomFormId: number | null;\r\n CustomFormId: number | null;\r\n CustomForms: ICustomFormDto[];\r\n LoanTypeId: number;\r\n AllowModification: boolean;\r\n AllowExtendReservation: boolean;\r\n AllowUsersToShortenReservations: boolean;\r\n AllowedToTransfer: boolean;\r\n AllowedToTransferAll: boolean;\r\n EnforceReservationRestrictions: boolean;\r\n LimitlessReservationAllowed: boolean | null;\r\n checked: boolean;\r\n disabled: boolean;\r\n MaxOrderHours: number;\r\n MinOrderGap: number;\r\n RestrictDurationUnitsAmount: number | null;\r\n RestrictDurationUnitType: number | null;\r\n StaffUserSelectionVisible: boolean | null;\r\n StaffUserSelectionRequired: boolean | null;\r\n StaffUserSelection: IUserFilterDto[];\r\n RequireUserGroupCoordApproval: boolean;\r\n DraftReservationsTypeId: number;\r\n}\r\nexport interface IReservationEquipmentDto extends Entity {\r\n Id: number;\r\n Name: string;\r\n AssetId: number | null;\r\n AccServices: IEquipmentAccServicesDto[];\r\n AssemblyId: number | null;\r\n HasAssemblyParts: boolean;\r\n ReservationId?: number;\r\n HideProjects: boolean;\r\n AllowPartialProjectCharges: boolean;\r\n AllowPartialSingleProjectCharges: boolean;\r\n TrainingSignUpApproval: number;\r\n HideTrainingSession: boolean;\r\n HasAttendance: boolean;\r\n ForceTutoring: boolean;\r\n IsEquipmentTutoring: boolean;\r\n NotAllowReservations: boolean;\r\n AllowOneAccSerOnly: boolean;\r\n AllowReservationCollaborators: number;\r\n ForceFullDayReservations: boolean;\r\n BudgetExperimentSettings: boolean;\r\n Color: string;\r\n ServiceGroupId: number;\r\n ServiceGroupName: string;\r\n ReservationOfflineServicesEnabled: boolean | null;\r\n RestrictReservationToTimeSlots: boolean;\r\n MinOrderHours: number;\r\n DefaultReservationDuration: number;\r\n DefaultAccServiceId: number | null;\r\n BudgetsTurnedOn: boolean;\r\n Billable: boolean;\r\n MandatoriesEquipments: IMandatoryEquipmentsDto[];\r\n OptionalsEquipments: IMandatoryEquipmentsDto[];\r\n OfflineServices: IEquipmentOfflineServiceTypeDto[];\r\n FirstCustomFormId: number | null;\r\n CustomFormId: number | null;\r\n CustomForms: ICustomFormDto[];\r\n LoanTypeId: number;\r\n AllowModification: boolean;\r\n AllowExtendReservation: boolean;\r\n AllowUsersToShortenReservations: boolean;\r\n AllowedToTransfer: boolean;\r\n AllowedToTransferAll: boolean;\r\n EnforceReservationRestrictions: boolean;\r\n LimitlessReservationAllowed: boolean | null;\r\n MaxOrderHours: number;\r\n MinOrderGap: number;\r\n RestrictDurationUnitsAmount: number | null;\r\n RestrictDurationUnitType: number | null;\r\n StaffUserSelectionVisible: boolean | null;\r\n StaffUserSelectionRequired: boolean | null;\r\n StaffUserSelection: IUserFilterDto[];\r\n RequireUserGroupCoordApproval: boolean;\r\n DraftReservationsTypeId: number;\r\n AutoMode: number;\r\n}\r\nexport interface IEquipmentOfflineServiceTypeDto extends Entity {\r\n Id: number;\r\n Name: string;\r\n EquipmentId: number;\r\n Mandatory: boolean;\r\n HideProject: boolean;\r\n}\r\n/**\r\n * Represents an entity connected to a budget (e.g. Reservation)\r\n */\r\nexport interface IWithBudget {\r\n Budget: Entity | null; //IBudgetFilterDto | null;\r\n}\r\nexport interface ReservationDetailsState extends IWithBudget {\r\n Id: number;\r\n EquipmentsData: Entity[];\r\n FatherId?: number | null;\r\n TrainingSession: ITrainingSessionDto | null;\r\n StaffUser: Entity | null; //IUserFilterDto | null;\r\n BookedBy: Entity | null; //IUserFilterDto | null;\r\n Remarks?: string | null;\r\n StartTime: Date | string;\r\n EndTime: Date | string;\r\n Tutoring: boolean;\r\n Status?: Entity | null;\r\n TrainingSignUp: boolean;\r\n ADGroup?: Entity | null;\r\n DisplayName?: string | null;\r\n InstituteProject: Entity | null;\r\n WorkflowBooking?: Entity | null;\r\n ExternalCustomer?: Entity | null;\r\n FundingType?: Entity | null;\r\n PurchaseOrder?: string | null;\r\n Reference?: string | null;\r\n BudgetExperiment?: Entity | null;\r\n SampleIds: number[];\r\n PartialAttendance: boolean;\r\n PartialAttendanceStart?: number | null;\r\n PartialAttendanceEnd?: number | null;\r\n TransferredTo: Entity | null;\r\n WaitingTransferApproval: boolean;\r\n TransferFromId: number | null;\r\n SampleRunId?: number | null;\r\n AccServices: IEquipmentAccServicesDto[];\r\n FormValues: IFormValueDto[];\r\n CollaboratedUsers: Entity[]; //IUserFilterDto[];\r\n OptionalsEquipments: CheckEntity[];\r\n FullDayReservation: boolean;\r\n AssemblyParts?: IReservationAssemblyPartDto[] | null;\r\n}\r\nexport interface ReservationSettingsState {\r\n BaseEquipment: IReservationEquipmentDto | null;\r\n FatherId: number | null;\r\n Repeat_Period: number | null;\r\n TrainingSessionOnly: boolean;\r\n SessionId: number | null;\r\n RecordDate: Date | string | null;\r\n LastUpdateDate: Date | string | null;\r\n Entered: Date | string | null;\r\n Cancelled: Date | string | null;\r\n LastUpdateAdmin: Entity | null;\r\n RepeatEndTime: Date | string | null;\r\n Repeat: boolean;\r\n HasCharges: boolean;\r\n FundingTypeId: number | null;\r\n ParentAssemblyReservationId: number | null;\r\n TopAssemblyReservationId: number | null;\r\n TransferInProgress: boolean;\r\n HasOfflineServices: boolean;\r\n HasTrainingSession: boolean;\r\n NextReservationTime: string | null;\r\n PartReservations: IReservationPartDto[];\r\n AssignToServiceRequestId: number | null;\r\n AssignToServiceRequestRowIds: number[];\r\n AssignToServiceRequestSampleIds: number[];\r\n TutorName?: string | null;\r\n CustomForms: ICustomFormDto[];\r\n MandatoriesEquipments: IMandatoryEquipmentsDto[];\r\n OptionalsEquipments: IMandatoryEquipmentsDto[];\r\n FirstInitEquipments: number[];\r\n OfflineMandatory: IOtherServices[];\r\n OfflineOptional: IOtherServices[];\r\n //localSettings\r\n UserRequestedByApproval: boolean;\r\n RecurringUpdateOption: number | null;\r\n TerminateReservation: boolean;\r\n Ongoing: boolean;\r\n FutureReservation: boolean;\r\n PastReservation: boolean;\r\n IsForceTutoring: boolean;\r\n ForceFullDayReservations: boolean;\r\n StaffMandatoryEquipment: IReservationEquipmentDto | null;\r\n TotalCost?: number;\r\n SaveForLater: boolean;\r\n}\r\nexport interface IReservationDto {\r\n Id: number;\r\n EquipmentsData: IReservationEquipmentDto[];\r\n Budget: IBudgetFilterDto | null; //IBudgetFilterDto | null;\r\n TrainingSession: ITrainingSessionDto | null; //ITrainingSessionDto | null;\r\n StaffUser: IUserFilterDto | null; //IUserFilterDto | null;\r\n BookedBy: IUserFilterDto | null; //IUserFilterDto | null;\r\n Remarks?: string | null;\r\n StartTime: Date | string;\r\n EndTime: Date | string;\r\n Tutoring: boolean;\r\n FullDayReservation: boolean;\r\n TutorName?: string | null;\r\n StatusId: number;\r\n TrainingSignUp: boolean;\r\n ADGroup?: Entity | null;\r\n DisplayName?: string | null;\r\n InstituteProject: Entity | null;\r\n WorkflowBooking?: Entity | null;\r\n ExternalCustomer?: Entity | null;\r\n PurchaseOrder?: string | null;\r\n Reference?: string | null;\r\n BudgetExperiment?: Entity | null;\r\n TransferFromId: number | null;\r\n PartialAttendance: boolean;\r\n PartialAttendanceStart?: number | null;\r\n PartialAttendanceEnd?: number | null;\r\n TransferredTo: Entity | null;\r\n SampleRunId?: number | null;\r\n AccServiceId: number | null;\r\n AccSerIds: string | null;\r\n AccServices: IEquipmentAccServicesDto[]; //IAccServiceDto[];\r\n FormValues: IFormValueDto[];\r\n CollaboratedUsers: IUserFilterDto[]; //IUserFilterDto[];\r\n SampleIds: number[];\r\n PartReservations: IReservationPartDto[];\r\n BaseEquipment: IReservationEquipmentDto | null;\r\n FatherId: number | null;\r\n Repeat_Period: number | null;\r\n TrainingSessionOnly: boolean;\r\n SessionId: number | null;\r\n RecordDate: Date | string | null;\r\n LastUpdateDate: Date | string | null;\r\n Entered: Date | string | null;\r\n Cancelled: Date | string | null;\r\n LastUpdateAdmin: IUserFilterDto | null;\r\n RepeatEndTime: Date | string | null;\r\n Repeat: boolean;\r\n HasCharges: boolean;\r\n\r\n /**\r\n * This property is used to read the funding type from the server (initReservation)\r\n */\r\n FundingTypeId: number | null;\r\n ParentAssemblyReservationId: number | null;\r\n TopAssemblyReservationId: number | null;\r\n WaitingTransferApproval: boolean;\r\n TransferInProgress: boolean;\r\n HasOfflineServices: boolean;\r\n HasTrainingSession: boolean;\r\n NextReservationTime: string | null;\r\n AssignToServiceRequestId: number | null;\r\n AssignToServiceRequestRowIds: number[];\r\n AssignToServiceRequestSampleIds: number[];\r\n MandatoriesEquipments: IMandatoryEquipmentsDto[];\r\n OptionalsEquipments: IMandatoryEquipmentsDto[];\r\n TerminateReservation: boolean;\r\n FirstInitEquipments: number[];\r\n OfflineMandatory: IOtherServices[];\r\n IsForceTutoring: boolean;\r\n ForceFullDayReservations: boolean;\r\n ForceReservationSettingsState: boolean;\r\n IsFuture: boolean;\r\n IsPast: boolean;\r\n IsOngoing: boolean;\r\n StaffMandatoryEquipment: IReservationEquipmentDto | null;\r\n AssemblyParts: IReservationAssemblyPartDto[] | null;\r\n}\r\nexport interface IReservationPartDto {\r\n Id: number;\r\n Equipment: IReservationEquipmentDto;\r\n BudgetID: number | null;\r\n BudgetName: string | null;\r\n StartTime: Date | string;\r\n ParentAssemblyReservationId: number | null;\r\n TopAssemblyReservationId: number | null;\r\n AccServiceId: number | null;\r\n AccSerIds: string | null;\r\n Repeat_Period: number | null;\r\n}\r\nexport interface ReservationDetailsResponseModel extends IResponseTypeBase {\r\n Id: number | null;\r\n IsValid: boolean;\r\n model: IReservationDto;\r\n insertedModel: ReservationInsertModel;\r\n warnOnTrainingSession: boolean;\r\n ReservationIds: number[];\r\n FirstEquipmentId: number;\r\n userTrainingsApprovalData: UserTrainingReservationData | null;\r\n EquipmentChangeResult: ReservationEquipmentsChangeResult | null;\r\n credit: number | null;\r\n balance: number | null;\r\n MaxReservationComplexityValidationResult?: string | null;\r\n ErrorMessages: IModelStateDictionary;\r\n}\r\nexport interface MultiReservationResponseModel extends IResponseType {\r\n Model: ReservationMultiEvent;\r\n IsValid: boolean;\r\n Recurrent: boolean;\r\n RecurrentCount: number;\r\n}\r\nexport interface ReservationGlobalState {\r\n details: ReservationDetailsState;\r\n settings: ReservationSettingsState;\r\n customFormFiles: IFormFileValue[];\r\n RepetitiveOptions: IRepetitiveDto | null;\r\n offlineServices: IOtherServices[];\r\n}\r\nexport interface ServiceSettingsState {\r\n HasHideProjects: boolean;\r\n HasConflictProjects: boolean;\r\n HasMultipleProjects: boolean;\r\n HasPartialSingleProject: boolean;\r\n TrainingSignUpApproval?: number;\r\n HideTrainingSession: boolean;\r\n HasAttendance: boolean;\r\n ForceTutoring: boolean;\r\n ForceFullDayReservations: boolean;\r\n IsEquipmentTutoring: boolean;\r\n NotAllowReservations: boolean;\r\n AllowOneAccSerOnly: boolean;\r\n AllowReservationCollaborators: boolean;\r\n IsAllAdmin: boolean;\r\n AllOffServicesAllowed: boolean | null;\r\n\r\n RestrictReservationToTimeSlots: boolean;\r\n MinOrderHours: number;\r\n DefaultReservationDuration: number;\r\n DefaultAccServiceId: number | null;\r\n BudgetsTurnedOn: boolean;\r\n Billable: boolean;\r\n CustomForms: ICustomFormDto[];\r\n IsLoanDesc: boolean;\r\n AllowModification: boolean;\r\n AllowExtendReservation: boolean;\r\n AllowUsersToShortenReservations: boolean;\r\n AllowedToTransfer: boolean;\r\n AllowedToTransferAll: boolean;\r\n StartSlots: Date | string | null;\r\n EndSlots: Date | string | null;\r\n BudgetVisible: boolean;\r\n OfflineServicesVisible: boolean;\r\n Groups: number[];\r\n HasAccServices: boolean;\r\n MaxOrderHours: number;\r\n MinOrderGap: number;\r\n RestrictDurationUnitsAmount: number | null;\r\n RestrictDurationUnitType: number | null;\r\n StaffUserVisibleAllways: boolean;\r\n StaffUserVisibleOnPending: boolean;\r\n StaffUserRequiredAlwais: boolean;\r\n StaffUserRequiredOnPending: boolean;\r\n StaffUserSelection: IUserFilterDto[];\r\n RequireUserGroupCoordApproval: boolean;\r\n DraftForAll: boolean;\r\n DraftApprovalRequred: boolean;\r\n DraftSaveForLater: boolean;\r\n budgetExperimentVisible: boolean;\r\n EnforceReservationRestrictions: boolean;\r\n LimitlessReservationAllowed: boolean;\r\n OfflineServiceTypes: IEquipmentOfflineServiceTypeDto[];\r\n}\r\nexport interface EquipmentsChangeStateParameters {\r\n Equipments: number[];\r\n AccServices: number[];\r\n ReservationId: number | null;\r\n Start: Date | string;\r\n End: Date | string;\r\n BookedBy: string | null;\r\n ADGroup: string | null;\r\n Tutoring: boolean;\r\n FullDayReservation: boolean;\r\n Status: number;\r\n TrainingSignUp: boolean;\r\n FundingTypeId: number | null;\r\n TrainingSessionId: number | null;\r\n BudgetId: number | null;\r\n Remarks: string | null;\r\n CheckStatus: boolean;\r\n CheckSession: boolean;\r\n PurchaseOrder: string | null;\r\n}\r\nexport interface EquipmentSlotParameters {\r\n EquipmentId: number;\r\n Start: Date | string;\r\n End: Date | string;\r\n}\r\n\r\nexport interface ReservationEquipmentsChangeResult {\r\n CustomForms?: CustomFormsResult;\r\n ErrorMessages: string[];\r\n WarningMessages: string[];\r\n DefaultBudget: IBudgetFilterDto | null;\r\n StatusChange: StatusChangeResult | null;\r\n TrainingSessionData: TrainingSessionResult | null;\r\n}\r\nexport interface ReservationValidationResult {\r\n ErrorMessages: IModelStateDictionary;\r\n WarningMessages: string[];\r\n PermissionErrors: IModelStateDictionary;\r\n PrerequisiteTrainings?: PrerequisitsResult;\r\n UserCanRequestApproval?: boolean;\r\n}\r\nexport interface AsyncEquipmentsChangeResult {\r\n StartSlots: Date | string | null;\r\n EndSlots: Date | string | null;\r\n}\r\nexport interface StatusChangeResult {\r\n Status: number;\r\n Tutoring: boolean;\r\n IsForceTutoring: boolean;\r\n ForceFullDayReservations: boolean;\r\n FullDayReservation: boolean;\r\n}\r\nexport interface TrainingSessionResult {\r\n TrainingSessionId: number | null;\r\n Start: Date | string;\r\n End: Date | string;\r\n HasTrainingSession: boolean;\r\n StaffUser: string | null;\r\n}\r\nexport interface PrerequisitsResult {\r\n PrerequisiteTrainings: Entity[];\r\n ErrorMessage: string;\r\n IsValid: boolean;\r\n}\r\nexport interface CustomFormsResult {\r\n CustomForms: ICustomFormDto[];\r\n ErrorMessages: string[];\r\n IsValid: boolean;\r\n}\r\nexport interface UserTrainingEquipments {\r\n ReservationId: number | null;\r\n EquipmentId: number;\r\n EquipmentName: string;\r\n TrainingRecordId: number | null;\r\n RequiresAdminApproval: boolean;\r\n NotShowPopup: boolean;\r\n}\r\nexport interface UserTrainingReservationData {\r\n UserName: string;\r\n StartTime: Date | string;\r\n EndTime: Date | string;\r\n Equipments: UserTrainingEquipments[];\r\n FatherId: number | null;\r\n ReservationId: number | null;\r\n Tutoring: boolean;\r\n}\r\nexport interface HasUsageEndRresult {\r\n HasUsage: boolean;\r\n OfflineServiceTypeIds: number[];\r\n}\r\nexport interface TransferToReservation {\r\n User: Entity;\r\n ReservtionId: number;\r\n}\r\nexport interface TransferState {\r\n User: Entity | null;\r\n ReservtionId?: number;\r\n WaitingTransferApproval?: boolean;\r\n transferProcessing?: boolean;\r\n transferStepCompleted?: boolean;\r\n}\r\nexport interface RequestReservations {\r\n RequestId: number | null;\r\n TotalRowsCount: number | null;\r\n AssociatedRowsCount: number | null;\r\n}\r\nexport interface TerminationState {\r\n terminatProcessing?: boolean;\r\n terminateCompleted?: boolean;\r\n}\r\nexport interface ReservationMultiEvent {\r\n Id: number;\r\n EquipmentId: number;\r\n StartTime: Date | string;\r\n EndTime: Date | string;\r\n EquipmentChanged: boolean;\r\n BookedBy: string;\r\n BookedById: string;\r\n}\r\nexport const getSingleReservationStatus = (val: number): Entity => {\r\n return enumToEntityArray(ReservationStatus).filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\nexport type createReservation_Success_Payload = {\r\n hasErrors: boolean;\r\n reservationIds: number[];\r\n insertModel?: ReservationInsertModel;\r\n} & Pick<\r\n ReservationDetailsResponseModel,\r\n 'MaxReservationComplexityValidationResult'\r\n>;\r\nexport interface updateReservationPayload {\r\n current: ReservationDetailsState;\r\n original: ReservationDetailsState;\r\n currentCustomFormFiles: IFormFileValue[];\r\n originalCustomFormFiles: IFormFileValue[];\r\n offlineServices: IOtherServices[];\r\n settings: ReservationSettingsState | undefined;\r\n terminate?: boolean;\r\n}\r\n\r\nexport interface updateReservation_SuccessPayload\r\n extends Pick<\r\n ReservationDetailsResponseModel,\r\n 'MaxReservationComplexityValidationResult'\r\n > {\r\n hasErrors: boolean;\r\n userTrainigData: UserTrainingReservationData | null;\r\n insertModel: ReservationInsertModel;\r\n}\r\nexport interface PricingState {\r\n credit: number;\r\n balance: number | null;\r\n}\r\n","/**\r\n *\r\n * EditableCell\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Row } from 'react-table';\r\nimport { IRow } from 'app/components/BasicTable';\r\nimport { FieldProps } from 'formik';\r\n\r\nexport interface EditableCellProps {\r\n value: TValue;\r\n row: Row;\r\n column: TColumn;\r\n updateMyData: any; // This is a custom function that we supplied to our table instance\r\n}\r\n\r\nexport interface BaseInputProps {\r\n onChange: (value: TValue) => void;\r\n name?: string;\r\n value: TValue;\r\n onBlur: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n}\r\n\r\nexport function withPPP(\r\n Component: React.FunctionComponent>,\r\n) {\r\n return ({\r\n field,\r\n form,\r\n meta,\r\n ...props\r\n }: React.PropsWithChildren & FieldProps>) => {\r\n const {\r\n onChange: formikOnChange,\r\n multiple,\r\n checked,\r\n ...fieldProps\r\n } = field;\r\n const { onChange: componentOnChange, ...compProps } = props;\r\n const handleChange = value => {\r\n componentOnChange?.(value);\r\n formikOnChange?.({\r\n target: {\r\n name: field.name,\r\n value: value,\r\n },\r\n });\r\n };\r\n return ;\r\n };\r\n}\r\n\r\nexport interface EditorProps {\r\n value: TValue;\r\n onChange: (value: TValue) => void;\r\n onBlur: (event: React.FocusEvent) => void;\r\n id?: string;\r\n label?: string;\r\n name: string;\r\n error?: boolean;\r\n helperText?: string;\r\n parentValue?: any;\r\n info?: string;\r\n autoFocus?: boolean;\r\n}\r\n\r\nexport function EditableCell(\r\n WrappedComponent: React.FunctionComponent>,\r\n) {\r\n return function Comp({\r\n value: initialValue,\r\n row,\r\n column: { id },\r\n updateMyData, // This is a custom function that we supplied to our table instance\r\n ...props\r\n }: EditableCellProps) {\r\n const [value, setValue] = React.useState(initialValue);\r\n const onChange = value => {\r\n //const value = event.target.value;\r\n setValue(value);\r\n const payload = { Id: row.original.Id };\r\n payload[id] = value;\r\n updateMyData(payload);\r\n };\r\n\r\n // We'll only update the external data when the input is blurred\r\n const onBlur = React.useCallback(() => {\r\n if (value !== initialValue) {\r\n const payload = { Id: row.original.Id };\r\n payload[id] = value;\r\n // updateMyData(payload);\r\n }\r\n }, [id, initialValue, row.original.Id, value]);\r\n // If the initialValue is changed external, sync it up with our state\r\n React.useEffect(() => {\r\n setValue(initialValue);\r\n }, [initialValue]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n };\r\n}\r\n","/**\r\n *\r\n * MultiSelectBasicPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Entity, EntityType } from 'types/common';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from '../AutocompletePicker';\r\n\r\nexport interface BaseURLPickerProps\r\n extends Omit, 'loadData'> {\r\n url: string;\r\n queryfilter?: string | undefined;\r\n customParams?: Record;\r\n}\r\n\r\nexport function BaseURLPicker(\r\n props: BaseURLPickerProps,\r\n) {\r\n const { url, queryfilter, customParams, ...other } = props;\r\n const loadData = async (searchTerm: string | null) => {\r\n const params: { $orderby: string; $top: number; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n $top: 100,\r\n };\r\n const predicates: string[] = [];\r\n if (queryfilter !== undefined && queryfilter !== '') {\r\n predicates.push(queryfilter);\r\n }\r\n if (searchTerm !== null || predicates.length > 0) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: predicates,\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm ?? undefined,\r\n }).toString();\r\n }\r\n const response = await httpClient.get(url, { ...params, ...customParams });\r\n return response.value;\r\n };\r\n return ;\r\n}\r\n","import useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { ReservationDetailsProps } from 'app/pages/ReservationDetails/Details';\r\nimport { ReservationQueryStringParameters } from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nexport const ReservationLink = (props: {\r\n id: number;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const openDetails = useOpenReservationPopUp();\r\n const getLink = useReservationLinkUrl();\r\n const User = useSelector(selectAuthenticatedUser);\r\n const link = getLink({ id: String(props.id), un: User?.Id });\r\n const open = React.useCallback(() => {\r\n openDetails(\r\n {\r\n id: props.id,\r\n useSidePanel: props.useSidePanel,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n }, [openDetails, props.id, props.openPanelWithCover, props.useSidePanel]);\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const useOpenReservationPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n const User = useSelector(selectAuthenticatedUser);\r\n return React.useCallback(\r\n (\r\n props: { id: number; useSidePanel?: boolean; useSwitchButtons?: boolean },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n const params = {\r\n id: String(props.id),\r\n un: User?.Id,\r\n } as ReservationQueryStringParameters;\r\n let resProps = {\r\n queryParams: params,\r\n useSidePanel: true,\r\n useSwitchButtons: props.useSwitchButtons,\r\n } as ReservationDetailsProps;\r\n\r\n const panelState = {\r\n renderPageType: RenderPageType.ReservationDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.ReservationDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [User?.Id, openPanel],\r\n );\r\n};\r\nexport const useReservationLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n\r\n return React.useCallback(\r\n (params: ReservationQueryStringParameters) => {\r\n return buildURL(publicUrl + 'reservations/details', params);\r\n },\r\n [publicUrl],\r\n );\r\n};\r\n","import { DateTimeLabel } from 'app/components/DateTimeLabel';\r\nimport { CellProps, Renderer } from 'react-table';\r\n\r\nconst DateTimeRenderer: Renderer>> = ({\r\n value,\r\n}) => ;\r\nexport default DateTimeRenderer;\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { SwitchProps } from '@material-ui/core';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { BasicToggle } from '../BasicToggle';\r\n\r\nexport interface FormSwitchProps extends SwitchProps {\r\n label?: string;\r\n helperText?: string;\r\n boldLebel?: boolean;\r\n maxLabelWidth?: string | number;\r\n boxed?: boolean;\r\n inputProps?: any;\r\n inputName?: string;\r\n inputId?: string;\r\n shortView?: boolean;\r\n inputMode?:\r\n | 'none'\r\n | 'text'\r\n | 'tel'\r\n | 'url'\r\n | 'email'\r\n | 'numeric'\r\n | 'decimal'\r\n | 'search';\r\n useInputField?: boolean;\r\n inputAfterLabel?: React.ReactNode;\r\n onInputFocus?: React.FocusEventHandler<\r\n HTMLInputElement | HTMLTextAreaElement\r\n >;\r\n}\r\nexport const FormSwitch = ({\r\n label,\r\n name,\r\n onBlur,\r\n onChange,\r\n boldLebel,\r\n maxLabelWidth,\r\n useInputField,\r\n inputProps,\r\n inputName,\r\n inputId,\r\n inputMode,\r\n inputAfterLabel,\r\n onInputFocus,\r\n ...props\r\n}: FormSwitchProps & FieldHookConfig & IFieldProps) => {\r\n const [field, meta] = useField({ name, ...props });\r\n const handleChange = (value, event) => {\r\n if (onChange !== undefined) {\r\n onChange(event);\r\n }\r\n field.onChange(event);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","import {\r\n IComment,\r\n NewComment,\r\n} from 'app/components/CommentsContainer/IComment';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\nconst url = '/api/odata/v4/Comments';\r\nexport const CommentsApi = {\r\n GetComments: (\r\n type: number,\r\n reference: number,\r\n Id?: number,\r\n referenceString?: string,\r\n ) => {\r\n return httpClient\r\n .get(url, {\r\n reference,\r\n type,\r\n referenceString: referenceString ?? '',\r\n $filter: Id !== undefined ? 'Id eq ' + Id?.toString() : undefined,\r\n $expand: ['Files', 'CreatedBy'].join(','),\r\n $orderBy: 'CreatedAt desc',\r\n })\r\n .then(v => v.value as IComment[]);\r\n },\r\n SendComment: (\r\n typeId: number,\r\n referenceId: number,\r\n { Files, Text, IsInternal }: Omit,\r\n refernceString?: string,\r\n commentId?: number,\r\n fileTypeId?: number,\r\n ) => {\r\n const form = new FormData();\r\n for (let i = 0; !!Files && i < Files?.length; i++) {\r\n let item = Files?.item(i);\r\n if (!!item) {\r\n form.append('file' + i, item);\r\n }\r\n }\r\n form.append('TypeId', typeId as any);\r\n form.append('ReferenceId', referenceId as any);\r\n form.append('ReferenceStringId', (refernceString || null) as any);\r\n form.append('Text', Text ?? '');\r\n form.append('IsInternal', !!IsInternal as any);\r\n form.append('CommentId', commentId as any);\r\n form.append('FileTypeId', fileTypeId as any);\r\n\r\n return httpClient.post(url, form);\r\n },\r\n removeFile: (id: string) => {\r\n const delteUrl = `/odata.svc/Files(guid'${id}')`;\r\n return httpClient.delete(delteUrl);\r\n },\r\n DeleteComment: (id: number): Promise => {\r\n const delteUrl = `/api/odata/v4/Comments(${id})`;\r\n return httpClient.delete(delteUrl);\r\n },\r\n};\r\n","import { FormLabel } from '@material-ui/core';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport FormControl from 'app/components/Forms/FormControls/FormControl';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport clsx from 'clsx';\r\n\r\nexport interface GhostInputProps {\r\n label?: React.ReactNode;\r\n valueHtml?: React.ReactNode;\r\n valueText?: React.ReactNode;\r\n id?: string;\r\n fullWidth?: boolean;\r\n info?: string;\r\n labelBolder?: boolean;\r\n}\r\nexport function GhostInput(props: GhostInputProps) {\r\n const {\r\n label,\r\n valueHtml,\r\n valueText,\r\n info,\r\n labelBolder,\r\n fullWidth = true,\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {label && (\r\n \r\n {label} {info && }\r\n \r\n )}\r\n {valueText && (\r\n \r\n {valueText}\r\n \r\n )}\r\n {valueHtml}\r\n \r\n \r\n );\r\n}\r\n","import { useDispatch } from 'react-redux';\r\nimport { useLargeFilesUploadSlice } from '../slice';\r\nimport { useCallback } from 'react';\r\nimport { Identifiable } from 'types/common';\r\n\r\nexport const useUploadToNewComment = () => {\r\n const dispatch = useDispatch();\r\n const { actions: largeFileActions } = useLargeFilesUploadSlice();\r\n const onCommentAdded = useCallback(\r\n (comment: Identifiable) => {\r\n dispatch(largeFileActions.setCanUpload(comment.Id));\r\n },\r\n [dispatch, largeFileActions],\r\n );\r\n return { onCommentAdded };\r\n};\r\n","import { IUtils } from '@date-io/core/IUtils';\r\nimport { validate } from '@material-ui/pickers';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { DateDropDownValidationProps } from 'app/components/BookitDatePicker/DateDropDown';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\nexport const validateError = (\r\n date: MaterialUiPickersDate | ParsableDate,\r\n propss: any,\r\n utils: IUtils,\r\n) => {\r\n let error = validate(date, utils, propss);\r\n if (error === '') {\r\n return undefined;\r\n }\r\n return error;\r\n};\r\nexport const validateDate = (\r\n day: number,\r\n month: number,\r\n year: number,\r\n props: DateDropDownValidationProps,\r\n utils: IUtils,\r\n currentDate?: Date | string | null,\r\n): React.ReactNode | undefined => {\r\n if (currentDate !== null && currentDate !== undefined) {\r\n let date = dateUtils.truncateTime(\r\n dateUtils.dateOrStringToDate(currentDate),\r\n );\r\n let opDate = dateUtils.set(date, {\r\n year: year,\r\n month: month,\r\n });\r\n let maxMonthDays = dateUtils.getDaysInMonth(opDate);\r\n if (day > maxMonthDays) {\r\n return `Invalid Date: The day can not be longer than ${maxMonthDays}.`;\r\n } else {\r\n let finalDate = dateUtils.set(opDate, { date: day });\r\n return validateError(\r\n finalDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n );\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n};\r\nexport const validateTime = (\r\n hours: number,\r\n minutes: number,\r\n props: DateDropDownValidationProps,\r\n utils: IUtils,\r\n currentDate?: Date | string | null,\r\n ampm?: boolean,\r\n): React.ReactNode | undefined => {\r\n if (currentDate !== null && currentDate !== undefined) {\r\n let date = dateUtils.dateOrStringToDate(currentDate);\r\n let opDate = dateUtils.set(date, {\r\n hours: hours,\r\n minutes: minutes,\r\n });\r\n let finalDate = dateUtils.convertToMeridiem(\r\n opDate,\r\n dateUtils.getMeridiem(date),\r\n ampm ?? false,\r\n );\r\n return validateError(\r\n finalDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n );\r\n } else {\r\n return undefined;\r\n }\r\n};\r\nexport const checkDateInput = (\r\n dateStart: 'day' | 'month' | 'year',\r\n val?: string | null,\r\n) => {\r\n if (val === null || val === undefined) {\r\n return true;\r\n }\r\n //eslint-disable-next-line\r\n const regexDDMMYYYY = RegExp(\r\n //eslint-disable-next-line\r\n '^(((0[1-9]|[12][0-9]|30)[-/]?(0[13-9]|1[012])|31[-/]?(0[13578]|1[02])|(0[1-9]|1[0-9]|2[0-8])[-/]?02)[-/]?[0-9]{4}|29[-/]?02[-/]?([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$',\r\n );\r\n const regexYYYYMMdd = RegExp(\r\n //eslint-disable-next-line\r\n '^([0-9]{4}[-/]?((0[13-9]|1[012])[-/]?(0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]?31|02[-/]?(0[1-9]|1[0-9]|2[0-8]))|([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00)[-/]?02[-/]?29)$',\r\n );\r\n const regexMMDDYYYY = RegExp(\r\n //eslint-disable-next-line\r\n `^(((0[13-9]|1[012])[-/]?(0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]?31|02[-/]?(0[1-9]|1[0-9]|2[0-8]))[-/]?[0-9]{4}|02[-/]?29[-/]?([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$`,\r\n );\r\n let res =\r\n dateStart === 'day'\r\n ? regexDDMMYYYY.test(val)\r\n : dateStart === 'month'\r\n ? regexMMDDYYYY.test(val)\r\n : regexYYYYMMdd.test(val);\r\n return res;\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport { AvailabilityTypes } from 'api/odata/generated/enums/AvailabilityTypes';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.articles || initialState;\r\n\r\nexport const selectArticles = createSelector([selectSlice], state => state);\r\n\r\nexport const selectArticlesExternalSearchResults = createSelector(\r\n [selectArticles],\r\n state => state.externalSearchResults,\r\n);\r\n\r\nexport const selectArticlesExternalSearchForm = createSelector(\r\n [selectArticles],\r\n state => state.externalSearchFormDetails,\r\n);\r\nexport const selectArticlesExternalSearchPageIndex = createSelector(\r\n [selectArticles],\r\n state => state.externalSearchPageIndex,\r\n);\r\nexport const selectArticlesExternalSearchPageSize = createSelector(\r\n [selectArticles],\r\n state => state.externalSearchPageSize,\r\n);\r\nexport const selectArticlesExternalSearchPageData = createSelector(\r\n [selectArticlesExternalSearchResults, selectArticlesExternalSearchPageIndex],\r\n (results, page) => results.data?.[page],\r\n);\r\nexport const selectArticleDetails = createSelector(\r\n [selectArticles],\r\n state => state.articleDetails,\r\n);\r\nexport const selectRefreshEditArticleAssociation = createSelector(\r\n [selectArticles],\r\n state => state.refreshEditArticleAssociation,\r\n);\r\nexport const selectArticleDetailsBusy = createSelector(\r\n [selectArticles],\r\n state => state.articleDetailsBusy,\r\n);\r\nexport const selectEditArticleAssociationBusy = createSelector(\r\n [selectArticles],\r\n state => state.editArticleAssociationBusy,\r\n);\r\n\r\nexport const selectArticleDetailsForm = createSelector(\r\n [selectArticleDetails],\r\n state => ({\r\n ...state,\r\n ...{\r\n ServiceGroupAssets:\r\n state?.Assets?.filter(\r\n f => f.Availability?.Id === AvailabilityTypes.ServiceGroup,\r\n ) ?? [],\r\n InstrumentAssets:\r\n state?.Assets?.filter(f => f.ServiceTypeId === ServiceType.Online) ??\r\n [],\r\n },\r\n }),\r\n);\r\n","import { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { ReservationsApi } from 'api/ReservationsApi';\r\nimport { initEquipmentsData } from 'app/components/pickers/MultiSelectPickers/EquipmentReservationPicker';\r\nimport { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport {\r\n IMandatoryEquipmentsDto,\r\n IReservationEquipmentDto,\r\n PrerequisitsResult,\r\n ReservationDetailsState,\r\n ReservationSettingsState,\r\n TrainingSessionResult,\r\n} from '../slice/types';\r\nimport { IndexNode } from 'app/components/Forms/FormsLayout/StyledForm';\r\nimport { Link as MuiLink } from '@material-ui/core';\r\nimport { Caption } from 'app/components/Typography';\r\nimport { Body } from 'app/components/Typography';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { BulletedList } from 'app/components/BasicList/StyledList';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport styled from 'styled-components';\r\nimport { parse } from 'app/components/CommentsContainer/commentParser';\r\n\r\nexport const staffUserChangeHandler = (\r\n values: ReservationDetailsState,\r\n isEdit: boolean,\r\n setValue: (\r\n field: string,\r\n value: any,\r\n shouldValidate?: boolean | undefined,\r\n ) => void,\r\n equipmentsChangeHandler: (\r\n values: ReservationDetailsState,\r\n changeStatus?: boolean | undefined,\r\n selectedEqs?: IReservationEquipmentDto[],\r\n ) => void,\r\n extendStaffMandatoryEquipment: (\r\n staff: IReservationEquipmentDto | null,\r\n ) => void,\r\n extendMandatoryEquipments: (mandatories: IMandatoryEquipmentsDto[]) => void,\r\n initStaffReservation: (\r\n staffEquipmentId: number,\r\n values: ReservationDetailsState,\r\n ) => void,\r\n setStaffEquipmentRestricted: (staffUser: string) => void,\r\n reservationSettings?: ReservationSettingsState,\r\n) => {\r\n let staffEquipmentId =\r\n values.StaffUser !== null\r\n ? (values.StaffUser as IUserFilterDto).StaffEquipmentId\r\n : null;\r\n if (staffEquipmentId !== null) {\r\n let allEquipments = [\r\n ...(values.EquipmentsData as IReservationEquipmentDto[]),\r\n ...((reservationSettings?.MandatoriesEquipments ||\r\n []) as Entity[] as IReservationEquipmentDto[]),\r\n ...(values.OptionalsEquipments.filter(\r\n f => f.checked === true,\r\n ) as Entity[] as IReservationEquipmentDto[]),\r\n ];\r\n if (!allEquipments.some(f => f.Id === staffEquipmentId)) {\r\n if (isEdit) {\r\n (async () => {\r\n try {\r\n let setEquipments: Entity[] = [];\r\n let data = await initEquipmentsData(\r\n staffEquipmentId.toString(),\r\n 'AccServices,OfflineServices,StaffUserSelection,MandatoriesEquipments,OptionalsEquipments',\r\n );\r\n if (data.length > 0) {\r\n let staffEquipment = data[0];\r\n if (\r\n !!reservationSettings &&\r\n reservationSettings.StaffMandatoryEquipment !== null\r\n ) {\r\n setEquipments = [\r\n ...values.EquipmentsData.filter(\r\n f =>\r\n f.Id !== reservationSettings.StaffMandatoryEquipment?.Id,\r\n ),\r\n Object.assign({}, staffEquipment, {\r\n noremoved: true,\r\n titleInfo: `Mandatory instrument for ${values.StaffUser?.Name}`,\r\n }),\r\n ];\r\n } else {\r\n setEquipments = [\r\n ...values.EquipmentsData,\r\n Object.assign({}, staffEquipment, {\r\n noremoved: true,\r\n titleInfo: `Mandatory instrument for ${values.StaffUser?.Name}`,\r\n }),\r\n ];\r\n }\r\n setValue('EquipmentsData', setEquipments);\r\n extendStaffMandatoryEquipment(\r\n staffEquipment as IReservationEquipmentDto,\r\n );\r\n equipmentsChangeHandler(\r\n Object.assign({}, values, {\r\n EquipmentsData: setEquipments,\r\n }),\r\n true,\r\n );\r\n } else {\r\n setStaffEquipmentRestricted(values.StaffUser?.Name ?? '');\r\n setValue('StaffUser', null);\r\n }\r\n } catch {}\r\n })();\r\n } else {\r\n (async () => {\r\n try {\r\n let notRestricted = await ReservationsApi.userCanBookEquipment(\r\n staffEquipmentId,\r\n );\r\n\r\n if (notRestricted.value === true) {\r\n initStaffReservation(staffEquipmentId, values);\r\n } else {\r\n setStaffEquipmentRestricted(values.StaffUser?.Name ?? '');\r\n setValue('StaffUser', null);\r\n }\r\n } catch {}\r\n })();\r\n }\r\n }\r\n } else {\r\n if (\r\n !!reservationSettings &&\r\n reservationSettings.StaffMandatoryEquipment !== null\r\n ) {\r\n if (isEdit) {\r\n let setEquipments = values.EquipmentsData.filter(\r\n f => f.Id !== reservationSettings.StaffMandatoryEquipment?.Id,\r\n );\r\n setValue('EquipmentsData', setEquipments);\r\n equipmentsChangeHandler(\r\n Object.assign({}, values, { EquipmentsData: setEquipments }),\r\n true,\r\n );\r\n } else {\r\n if (reservationSettings.MandatoriesEquipments.length > 0) {\r\n let mand = reservationSettings.MandatoriesEquipments.filter(\r\n f => f.Id !== reservationSettings.StaffMandatoryEquipment?.Id,\r\n );\r\n let alleqs = [\r\n ...(values.EquipmentsData as IReservationEquipmentDto[]),\r\n ...(mand as Entity[] as IReservationEquipmentDto[]),\r\n ...(values.OptionalsEquipments.filter(\r\n f => f.checked === true,\r\n ) as Entity[] as IReservationEquipmentDto[]),\r\n ];\r\n extendMandatoryEquipments(mand);\r\n equipmentsChangeHandler(values, true, alleqs);\r\n }\r\n }\r\n extendStaffMandatoryEquipment(null);\r\n }\r\n }\r\n};\r\nexport const NodeColumn = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n`;\r\nexport const NodeRow = styled.div`\r\n display: flex;\r\n gap: 8px;\r\n`;\r\nexport const prerquisitErrorsHandler = (\r\n data: PrerequisitsResult,\r\n equipments: Entity[],\r\n setPrerequisitErrors: (items: IndexNode[]) => void,\r\n onEquipmentClicked?: (equipment: Entity) => void,\r\n onRestrictionsClick?: (equipment: Entity) => void,\r\n) => {\r\n setPrerequisitErrors(\r\n data.PrerequisiteTrainings.length > 0\r\n ? [\r\n {\r\n index: 'prerequisiteIndex',\r\n node: (\r\n \r\n {data.ErrorMessage}\r\n {data.PrerequisiteTrainings.map(pre => (\r\n \r\n {' '}\r\n \r\n !!onEquipmentClicked && onEquipmentClicked(pre)\r\n }\r\n >\r\n {pre.Name}\r\n \r\n \r\n ))}\r\n {equipments.length === 1 ? (\r\n \r\n \r\n !!onRestrictionsClick &&\r\n onRestrictionsClick(equipments[0])\r\n }\r\n >\r\n {i18next.t(translations.AllRestrictions)}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {i18next.t(translations.AllRestrictions)}\r\n \r\n {\r\n return {\r\n key: per.Id,\r\n node: (\r\n \r\n \r\n !!onRestrictionsClick &&\r\n onRestrictionsClick(per)\r\n }\r\n >\r\n {per.Name}\r\n \r\n \r\n ),\r\n };\r\n })}\r\n />\r\n \r\n )}\r\n \r\n ),\r\n },\r\n ]\r\n : [\r\n {\r\n index: 'pErrorIndex',\r\n node: {data.ErrorMessage},\r\n },\r\n ],\r\n );\r\n};\r\nexport const trainingSessionChangeHandler = (\r\n data: TrainingSessionResult | null,\r\n setMessage: (items: IndexNode[]) => void,\r\n initTrainingSession: (\r\n data: TrainingSessionResult,\r\n values: ReservationDetailsState,\r\n ) => void,\r\n values: ReservationDetailsState,\r\n) => {\r\n if (data !== null && data.HasTrainingSession === true) {\r\n setMessage([\r\n {\r\n index: 'trainingSessionWarning',\r\n node: (\r\n \r\n \r\n {(i18next.t(translations.warn_TrainingSessionsTimeSlot) as string)\r\n .replace('{0}', dateUtils.shortDateTimeFormat(data.Start) ?? '')\r\n .replace('{1}', dateUtils.shortDateTimeFormat(data.End) ?? '')}\r\n \r\n initTrainingSession(data, values)}\r\n >\r\n {i18next.t(translations.SignUp) as string}\r\n \r\n \r\n ),\r\n },\r\n ]);\r\n }\r\n};\r\nexport const durationErrorsHandler = (\r\n data: string[],\r\n equipments: Entity[],\r\n setDurationErrors: (items: IndexNode[]) => void,\r\n onRestrictionsClick?: (equipment: Entity) => void,\r\n) => {\r\n setDurationErrors([\r\n {\r\n index: 'durationErrors',\r\n node: (\r\n \r\n {data.map(dur => (\r\n {dur}\r\n ))}\r\n {equipments.length === 1 ? (\r\n \r\n \r\n !!onRestrictionsClick && onRestrictionsClick(equipments[0])\r\n }\r\n >\r\n {i18next.t(translations.AllRestrictions)}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {i18next.t(translations.AllRestrictions)}\r\n \r\n {\r\n return {\r\n key: per.Id,\r\n node: (\r\n \r\n \r\n !!onRestrictionsClick && onRestrictionsClick(per)\r\n }\r\n >\r\n {per.Name}\r\n \r\n \r\n ),\r\n };\r\n })}\r\n />\r\n \r\n )}\r\n \r\n ),\r\n },\r\n ]);\r\n};\r\nexport const otheMessagesHandler = (\r\n data: string[],\r\n type: 'warning' | 'error' | 'info' | 'success',\r\n setMessage: (items: IndexNode[]) => void,\r\n) => {\r\n let index = `other_${type}_${data.length}`;\r\n let message = [\r\n {\r\n index: index,\r\n node: (\r\n \r\n {data.map(msg => (\r\n \r\n {parse(msg)}\r\n \r\n ))}\r\n \r\n ),\r\n },\r\n ];\r\n setMessage(message);\r\n};\r\nexport const customFormErrorsHandler = (\r\n data: string[],\r\n setMessage: (items: IndexNode[]) => void,\r\n) => {\r\n setMessage([\r\n {\r\n index: 'cutFErrors',\r\n node: (\r\n \r\n {data.map(dur => (\r\n \r\n {dur}\r\n \r\n ))}\r\n \r\n ),\r\n },\r\n ]);\r\n};\r\nexport const permissionsErrorsHandler = (\r\n data: string[],\r\n equipments: Entity[],\r\n setMessage: (items: IndexNode[]) => void,\r\n onRestrictionsClick?: (equipment: Entity) => void,\r\n) => {\r\n setMessage([\r\n {\r\n index: 'permIndex',\r\n node: (\r\n \r\n {data.map((t, index) => (\r\n {t}\r\n ))}\r\n {equipments.length === 1 ? (\r\n \r\n \r\n !!onRestrictionsClick && onRestrictionsClick(equipments[0])\r\n }\r\n >\r\n {i18next.t(translations.AllRestrictions)}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {i18next.t(translations.AllRestrictions)}\r\n \r\n {\r\n return {\r\n key: per.Id,\r\n node: (\r\n \r\n \r\n !!onRestrictionsClick && onRestrictionsClick(per)\r\n }\r\n >\r\n {per.Name}\r\n \r\n \r\n ),\r\n };\r\n })}\r\n />\r\n \r\n )}\r\n \r\n ),\r\n },\r\n ]);\r\n};\r\n","import { CircularProgress } from '@material-ui/core';\r\nimport {\r\n Autocomplete,\r\n AutocompleteGetTagProps,\r\n AutocompleteProps,\r\n AutocompleteRenderOptionState,\r\n} from '@material-ui/lab';\r\nimport { BookitChip, BookitChipWithInfo } from 'app/components/BasicChip';\r\nimport BaseTextField from 'app/components/BasicInputs/BaseTextField';\r\nimport React, { useEffect } from 'react';\r\nimport { CSSProperties } from 'styled-components';\r\nimport { EntityType } from 'types/common';\r\nimport clsx from 'clsx';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport {\r\n ColoredOption,\r\n extractDataFromResponse,\r\n IDisableable,\r\n InfoOption,\r\n loadDataAndPrepareOptions,\r\n NonRemoveableOption,\r\n NonSelectableOption,\r\n OptionType,\r\n} from '../Utils/autoCompletePickerUtils';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { undefinedIfIsEmpty } from 'app/components/BasicTable/useProfileSetting/parseProfileUrl';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { capitalize, omit } from 'lodash';\r\n\r\nexport interface AutocompleteMultiPickerExProps\r\n extends Omit<\r\n AutocompleteProps, true, boolean | undefined, false>,\r\n | 'multiple'\r\n | 'loading'\r\n | 'open'\r\n | 'options'\r\n | 'renderInput'\r\n | 'onChange'\r\n | 'classes'\r\n | 'renderTags'\r\n | 'renderOptionLabel'\r\n | 'renderOptions'\r\n | 'size'\r\n > {\r\n value?: TEntity[];\r\n label?: string;\r\n loadData: (\r\n searchTerm: string | null,\r\n predicates?: (string | Condition)[],\r\n expandedColumns?: string,\r\n ) => Promise;\r\n size?: 'small' | 'medium' | 'large' | 'xl';\r\n listSize?: 'small' | 'medium' | 'large';\r\n mini?: boolean;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n isOpen?: boolean;\r\n style?: CSSProperties;\r\n name?: string;\r\n placeholder?: string;\r\n error?: boolean;\r\n helperText?: string;\r\n onChange?: (value: TEntity[]) => void;\r\n required?: boolean;\r\n info?: string;\r\n id?: string;\r\n renderTags?: (\r\n value: TEntity[],\r\n getTagProps: AutocompleteGetTagProps,\r\n ) => React.ReactNode | undefined;\r\n renderOptionLabel?: (value: TEntity) => string | undefined;\r\n renderOptions?: (\r\n option: TEntity,\r\n state: AutocompleteRenderOptionState,\r\n ) => React.ReactNode | undefined;\r\n onBlur?: React.FocusEventHandler;\r\n onChipClick?: (chip: TEntity) => void;\r\n ariaLabel?: string;\r\n predicates?: (string | Condition)[];\r\n additionalItem?: TEntity | null;\r\n expandedColumns?: string;\r\n onPickerOpen?: () => void;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * A copy of AutocompleteMultiPicker with addition of limiting the length of options shown\r\n * TODO: merge with AutocompleteMultiPicker + apply to BaseURLMultiPicker\r\n */\r\nexport function AutocompleteMultiPickerEx({\r\n isOpen,\r\n size = 'large',\r\n listSize = 'small',\r\n mini,\r\n onOpen,\r\n onClose,\r\n label,\r\n fullWidth,\r\n variant = 'standard',\r\n name,\r\n placeholder,\r\n error,\r\n helperText,\r\n required,\r\n renderTags,\r\n loadData,\r\n disableClearable,\r\n onChange,\r\n onInputChange,\r\n getOptionSelected,\r\n getOptionLabel,\r\n renderOptionLabel,\r\n renderOptions,\r\n onBlur,\r\n value,\r\n defaultValue,\r\n info,\r\n id,\r\n onChipClick,\r\n ariaLabel,\r\n predicates,\r\n additionalItem,\r\n expandedColumns,\r\n onPickerOpen,\r\n className,\r\n ...props\r\n}: AutocompleteMultiPickerExProps) {\r\n const { t } = useTranslation();\r\n // const classes = autocompleteStyles();\r\n let firstOpen = isOpen;\r\n const [open, setOpen] = React.useState(firstOpen);\r\n const [options, setOptions] = React.useState[] | null>(\r\n null,\r\n );\r\n const [searchTerm, setSearchTerm] = React.useState(null);\r\n const [hasSelected, setSelected] = React.useState(\r\n defaultValue && defaultValue.length > 0,\r\n );\r\n const isMobile = DetectIsMobile();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const showShortView = isMobile || (sidePanelOpen && !sidePanelExpanded);\r\n const loading = open && options === null;\r\n useEffect(() => {\r\n setSelected((value || []).length > 0);\r\n }, [value]);\r\n React.useEffect(() => {\r\n let active = true;\r\n if (!loading) return undefined;\r\n\r\n (async () => {\r\n try {\r\n const rawResponse = await loadData(\r\n searchTerm,\r\n predicates,\r\n expandedColumns,\r\n );\r\n const response = extractDataFromResponse(rawResponse);\r\n const optionsData = loadDataAndPrepareOptions({\r\n response,\r\n additionalItem,\r\n t,\r\n });\r\n active && setOptions(optionsData);\r\n } catch {}\r\n })();\r\n\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n loading,\r\n loadData,\r\n searchTerm,\r\n t,\r\n predicates,\r\n additionalItem,\r\n expandedColumns,\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (!open) setOptions(null);\r\n }, [open]);\r\n\r\n const handleRenderTags = (\r\n value: OptionType[],\r\n getTagProps: AutocompleteGetTagProps,\r\n ) => {\r\n const selectable = value.filter(\r\n option => (option as NonSelectableOption)?.disabled !== true,\r\n );\r\n if (renderTags === undefined) {\r\n return selectable.map((option: OptionType, index: number) =>\r\n !!(option as InfoOption).titleInfo ? (\r\n onChipClick?.(option as TEntity)}\r\n variant=\"default\"\r\n size=\"small\"\r\n label={option.Name}\r\n custombgcolor={\r\n undefinedIfIsEmpty((option as ColoredOption)?.Color) ?? undefined\r\n }\r\n info={(option as InfoOption).titleInfo}\r\n notremoved={(option as NonRemoveableOption)?.noremoved}\r\n {...getTagProps({ index })}\r\n />\r\n ) : (\r\n onChipClick?.(option as TEntity)}\r\n variant=\"default\"\r\n size=\"small\"\r\n label={option.Name}\r\n custombgcolor={\r\n undefinedIfIsEmpty((option as ColoredOption)?.Color) ?? undefined\r\n }\r\n notremoved={(option as NonRemoveableOption)?.noremoved}\r\n {...getTagProps({ index })}\r\n />\r\n ),\r\n );\r\n } else {\r\n return renderTags(selectable as TEntity[], getTagProps);\r\n }\r\n };\r\n const handleRenderOptionLabel = (option: OptionType) => {\r\n return renderOptionLabel === undefined\r\n ? option.Name\r\n : (renderOptionLabel(option as TEntity) as string);\r\n };\r\n // const extClasses = autocompleteExtendStyles();\r\n const getIsOptionSelected_Internal = (\r\n option: OptionType,\r\n value: OptionType,\r\n ) => {\r\n if ((option as NonSelectableOption).disabled !== undefined) {\r\n return false;\r\n }\r\n var id = (option as TEntity)?.Id;\r\n var selectable = id !== undefined;\r\n\r\n if (!selectable) {\r\n return false;\r\n } else if (getOptionSelected !== undefined) {\r\n return getOptionSelected(option as TEntity, value as TEntity);\r\n } else {\r\n return id === (value as TEntity)?.Id;\r\n }\r\n };\r\n const getOptionDisabled = (option: OptionType) =>\r\n (option as IDisableable)?.disabled ?? false;\r\n\r\n return (\r\n []) ?? []}\r\n open={open || false}\r\n onOpen={e => {\r\n //onOpen && onOpen(e);\r\n !disableClearable && setOptions(null);\r\n setSearchTerm(null);\r\n setOpen(true);\r\n !!onPickerOpen && onPickerOpen();\r\n }}\r\n onClose={(e, r) => {\r\n //onClose && onClose(e, r);\r\n setSearchTerm(null);\r\n setOpen(false);\r\n }}\r\n onChange={(e, v, r, d) => {\r\n setSearchTerm(null);\r\n setSelected(v.length > 0);\r\n if (onChange) {\r\n onChange(v as TEntity[]);\r\n }\r\n }}\r\n onInputChange={(event, newValue, reason) => {\r\n setOptions(null);\r\n if (reason === 'input') setSearchTerm(newValue);\r\n //onInputChange && onInputChange(event, newValue, reason);\r\n }}\r\n getOptionSelected={getIsOptionSelected_Internal}\r\n getOptionDisabled={getOptionDisabled}\r\n getOptionLabel={handleRenderOptionLabel}\r\n renderTags={handleRenderTags}\r\n size={size === 'small' ? 'small' : 'medium'}\r\n fullWidth={fullWidth}\r\n disableClearable={disableClearable}\r\n value={value || undefined}\r\n popupIcon={}\r\n closeIcon={}\r\n selectOnFocus={isMobile ? false : true}\r\n ListboxProps={{\r\n className: clsx('autocompleteList', `listSize${capitalize(listSize)}`),\r\n ...props.ListboxProps,\r\n }}\r\n renderInput={params => (\r\n \r\n {loading ? (\r\n \r\n ) : info ? (\r\n \r\n ) : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ),\r\n startAdornment: params.InputProps.startAdornment,\r\n }}\r\n />\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n","import i18next, { InterpolationOptions, TFunction } from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport Backend from 'i18next-http-backend';\r\nimport { chain } from 'lodash';\r\nimport { LOCALE_COOKIE_NAME } from 'utils/cookies';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { dateUtils, parseLocale } from 'utils/date-utils';\r\nimport { getLogger } from 'utils/logLevel';\r\n\r\n// // Create the 'translations' object to provide full intellisense support for the static json files.\r\n// convertLanguageJsonToObject(en);\r\nconst log = getLogger('i18next');\r\nexport const defaultNS = 'GRes';\r\nexport const publicNS = 'Public';\r\nconst debug: boolean | undefined =\r\n process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test';\r\n// https://github.com/i18next/i18next-http-backend\r\nconst backendOptions = {\r\n // path where resources get loaded from, or a function\r\n // returning a path:\r\n // function(lngs, namespaces) { return customPath; }\r\n // the returned path will interpolate lng, ns if provided like giving a static path\r\n //\r\n // If allowMultiLoading is false, lngs and namespaces will have only one element each,\r\n // If allowMultiLoading is true, lngs and namespaces can have multiple elements\r\n loadPath: function (lngs, namespaces) {\r\n //[ODataRoute(\"ResourceTypes/{keyResourceType}/Locales/{keyLocaleId}\")]\r\n return (\r\n process.env.PUBLIC_URL +\r\n '/api/odata/v4/' +\r\n 'ResourceTypes/{{ns}}/Locales/{{lng}}/Resources?$select=Key,Value'\r\n );\r\n },\r\n // parse data after it has been fetched\r\n // i18next expects a dictionary while the path provides odata api endpoint\r\n parse: function (s: string): Record {\r\n var data: IODataQueryResponse = JSON.parse(s);\r\n const result = chain(data.value)\r\n .keyBy(f => f.Key)\r\n .mapValues(f => f.Value)\r\n .value();\r\n\r\n return result;\r\n },\r\n};\r\n\r\n//#bkt_webApp.Api.V3.ResourceDto\r\ninterface ResourceDto {\r\n Key: string;\r\n Value: string;\r\n}\r\n\r\n// supported locales list should be pushed here from the server\r\n// sets the defaults for debug purposes since this setting is populated on .net side and is not available on debug server\r\nif (debug) {\r\n if (globalThis.supportedLocales === undefined) {\r\n globalThis.supportedLocales = ['en-US', 'en-GB', 'he-IL'];\r\n }\r\n}\r\n\r\nconst detectionOptions = {\r\n lookupCookie: LOCALE_COOKIE_NAME,\r\n supportedLngs: globalThis.supportedLocales,\r\n convertDetectedLanguage: lng => {\r\n const { language } = parseLocale(lng);\r\n return language;\r\n },\r\n};\r\nconst formatOptions: InterpolationOptions = {\r\n format: (value, format, lng) => {\r\n if (format === 'datetime') {\r\n return dateUtils.fullDateTimeFormat(value);\r\n }\r\n return value;\r\n },\r\n};\r\nexport const i18n = i18next\r\n // use i18next-http-backend to fetch localization files from the server\r\n .use(Backend)\r\n // pass the i18n instance to react-i18next.\r\n .use(initReactI18next)\r\n // detect user language\r\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\r\n .use(LanguageDetector)\r\n // init i18next\r\n // for all options read: https://www.i18next.com/overview/configuration-options\r\n .init(\r\n {\r\n // The whole Animals Kiosk must be localized to he\r\n // TODO: use the system/app setting to set initial locale here\r\n ...detectionOptions,\r\n detection: detectionOptions,\r\n fallbackLng: detectionOptions.supportedLngs?.[0],\r\n defaultNS: defaultNS,\r\n fallbackNS: defaultNS,\r\n load: 'currentOnly',\r\n ns: [publicNS],\r\n debug: debug,\r\n\r\n appendNamespaceToMissingKey: false,\r\n interpolation: {\r\n escapeValue: false, // not needed for react as it escapes by default\r\n ...formatOptions,\r\n },\r\n backend: backendOptions,\r\n },\r\n (error: any, t: TFunction) => {\r\n console.error(error);\r\n },\r\n );\r\n\r\n// set the dateFns locale as soon as the language is detected by the i18n to prevent\r\n// otherwise uninitialized dateFns can get undefined locale which can cause runtime error\r\ni18next.on('languageChanged', function (lng) {\r\n log.debug('languageChanged', lng);\r\n dateUtils.setLocale(lng);\r\n});\r\n\r\n//https://www.i18next.com/overview/api#oninitialized\r\ni18next.on('initialized', function (options) {\r\n log.debug('initialized', options);\r\n});\r\n\r\n/**\r\n * https://www.i18next.com/overview/api#onloaded\r\n */\r\ni18next.on('loaded', function (loaded) {\r\n log.debug('loaded', loaded);\r\n});\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\n\r\nexport interface FormSectionTitleProps {\r\n title: React.ReactNode;\r\n link?: React.ReactNode;\r\n}\r\nconst SectionTitle = styled('div')`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0px;\r\n gap: 16px;\r\n`;\r\nexport function FormSectionTitle(props: FormSectionTitleProps) {\r\n return (\r\n \r\n \r\n {props.title}\r\n \r\n {props.link !== undefined && props.link}\r\n \r\n );\r\n}\r\n","import { IsEmptyArray } from 'app/components/BasicTable/BasicFilter/AppliedFilterComponent';\r\nimport { GetPageFilters } from 'app/components/BasicTable/BasicFilter/GetPageFilters';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport {\r\n findIsfilterInversed,\r\n URLSearchParamsCI,\r\n} from 'app/components/BasicTable/types/FilterParam';\r\nimport { toURLSearchParams } from 'app/components/BasicTable/withSavedHistory';\r\nimport { initFilterData } from 'app/components/BasicTable/initFilterData';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { savedViewActions } from 'app/pages/SavedViewsPage/SavedViewPage/slice';\r\nimport { SavedViewSelected } from 'app/pages/SavedViewsPage/SavedViewPage/slice/types';\r\nimport {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectglobalSettings,\r\n} from 'app/slice/selectors';\r\nimport { routerActions } from 'connected-react-router';\r\nimport { useEffect, useMemo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { isEmptyOrWhitespace } from 'utils/typeUtils';\r\nimport { SAVEDVIEW_SEARCH_KEY } from '../BasicFilter/SavedListsDropDown';\r\nimport { getDependencyFilters } from '../BasicFilter';\r\nimport { BasicTableProps, IRow } from './UnconfigurableTable';\r\nimport React from 'react';\r\n\r\nfunction visibleFiltersFilter(item: IFilterSettings) {\r\n return (\r\n (item.value !== undefined && !IsEmptyArray(item.value)) || item.notNullable\r\n );\r\n}\r\n\r\nexport function filterHandler(\r\n Component: React.ComponentType<\r\n BasicTableProps & { exportNotConfigurable?: boolean }\r\n >,\r\n GetFiltersDefinition: GetPageFilters,\r\n other?: {\r\n getDefaultFilter?: (user: IAuthenticatedUser) => URLSearchParams;\r\n reservedQueryStringParameterNames?: string[];\r\n isSidePanel?: boolean;\r\n setFilters?: (appliedFilters: IFilterSettings[] | undefined) => void;\r\n getRequiredFilter?: (\r\n search: string,\r\n appSettings?: AppSettings | null,\r\n ) => string | undefined;\r\n getSelectedViewFilter?: (\r\n search: string,\r\n view: SavedViewSelected,\r\n ) => string | undefined;\r\n enableSavedLists?: boolean;\r\n anyDefinition?: boolean;\r\n },\r\n): React.FC

& { exportNotConfigurable?: boolean }> {\r\n return ({\r\n onFilterChange,\r\n availableFilters,\r\n savedListSettings,\r\n ...props\r\n }: BasicTableProps & { exportNotConfigurable?: boolean }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const showFiltersFn = React.useCallback(visibleFiltersFilter, []);\r\n const {\r\n isSidePanel,\r\n getDefaultFilter,\r\n setFilters,\r\n reservedQueryStringParameterNames,\r\n getRequiredFilter,\r\n // getSelectedViewFilter,\r\n enableSavedLists,\r\n anyDefinition,\r\n } = useMemo(() => other ?? {}, []);\r\n if (authenticatedUser === undefined) {\r\n return <>not authenticated;\r\n }\r\n\r\n useEffectOnMount(() => {\r\n const cancelToken = { mounted: true };\r\n const preset = getPresetFilter(\r\n isSidePanel\r\n ? undefined\r\n : withoutReserved(location.search, reservedQueryStringParameterNames),\r\n authenticatedUser,\r\n );\r\n const defaultSearch =\r\n getDefaultFilter !== undefined && getDefaultFilter !== null\r\n ? getDefaultFilter(authenticatedUser)?.toString()\r\n : undefined;\r\n let search =\r\n isSidePanel || isEmptyOrWhitespace(preset)\r\n ? defaultSearch ?? ''\r\n : location.search;\r\n const requiredSearch =\r\n getRequiredFilter !== null && getRequiredFilter !== undefined\r\n ? getRequiredFilter(search, appSettings)\r\n : undefined;\r\n search = requiredSearch === undefined ? search : requiredSearch ?? '';\r\n\r\n const savedViewId = tryParseInt(\r\n new URLSearchParamsCI(search).get(SAVEDVIEW_SEARCH_KEY),\r\n );\r\n dispatch(savedViewActions.selectSavedView(savedViewId));\r\n // const savedViewSearch = !!getSelectedViewFilter ? getSelectedViewFilter()\r\n\r\n const localizedFilters = getLocalizedFilters(search);\r\n // let fooFilters = foo?.filter(\r\n // item => item.value !== undefined && !IsEmptyArray(item.value),\r\n // );\r\n // let depFilters = getDependencyFilters(fooFilters);\r\n let visibleFilters = localizedFilters\r\n ?.map(f => {\r\n return {\r\n ...f,\r\n isInversed: findIsfilterInversed(\r\n search,\r\n f.urlKey ??\r\n (typeof f.queryStringSerializer === 'string'\r\n ? f.queryStringSerializer\r\n : undefined),\r\n ),\r\n };\r\n })\r\n .filter(showFiltersFn);\r\n let depFilters = getDependencyFilters(visibleFilters);\r\n\r\n setAppliedFilters(depFilters);\r\n setAppliedFilters(initFilterData(depFilters), cancelToken);\r\n if (!isSidePanel) {\r\n if (\r\n isEmptyOrWhitespace(\r\n withoutReserved(location.search, reservedQueryStringParameterNames),\r\n )\r\n ) {\r\n if (defaultSearch !== undefined) {\r\n const withReserved = addReserved(\r\n new URLSearchParams(defaultSearch),\r\n location.search,\r\n reservedQueryStringParameterNames,\r\n ).toString();\r\n dispatch(\r\n routerActions.replace({\r\n pathname: location.pathname,\r\n search: withReserved,\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n return () => {\r\n cancelToken.mounted = false;\r\n };\r\n });\r\n\r\n const location = useLocation();\r\n const removeEmptyFilters = (\r\n filter: string | undefined,\r\n ): string | undefined => {\r\n if (filter === undefined || filter === null) {\r\n return undefined;\r\n } else {\r\n const params = new URLSearchParams(filter);\r\n let newParams = new URLSearchParams();\r\n for (const [name, value] of params) {\r\n if (value !== undefined && value !== null && value !== '') {\r\n newParams.append(name, value);\r\n }\r\n }\r\n return newParams.toString();\r\n }\r\n };\r\n\r\n function getPresetFilter(\r\n savedFilter: string | undefined | null,\r\n user: IAuthenticatedUser,\r\n ): string | undefined {\r\n const saved =\r\n savedFilter !== undefined &&\r\n savedFilter !== null &&\r\n !isEmptyOrWhitespace(savedFilter)\r\n ? removeEmptyFilters(savedFilter)\r\n : undefined;\r\n const result = saved === undefined || saved === '' ? undefined : saved;\r\n\r\n return result;\r\n }\r\n\r\n const appSettings = useSelector(selectAppSettings);\r\n const settings = useSelector(selectglobalSettings);\r\n const getLocalizedFilters = useMemo(() => {\r\n const result = GetFiltersDefinition(\r\n t,\r\n appSettings,\r\n authenticatedUser,\r\n settings,\r\n authenticatedUser === undefined,\r\n anyDefinition,\r\n );\r\n return result;\r\n }, [anyDefinition, appSettings, authenticatedUser, settings, t]);\r\n const [appliedFilters, setAppliedFilters] = useAsyncExtendedState<\r\n IFilterSettings[] | undefined\r\n >(undefined);\r\n\r\n const allfilters = useMemo(() => {\r\n var result = !appliedFilters\r\n ? getLocalizedFilters('')\r\n : getLocalizedFilters(\r\n toURLSearchParams(appliedFilters).toString(),\r\n );\r\n return result;\r\n }, [getLocalizedFilters, appliedFilters]);\r\n\r\n useEffect(() => {\r\n setFilters?.(appliedFilters);\r\n }, [appliedFilters, setFilters]);\r\n\r\n const handleFilterChange: (\r\n items: IFilterSettings[],\r\n ) => void = items => {\r\n const currentSearch = toURLSearchParams(appliedFilters ?? []);\r\n if (!isSidePanel && reservedQueryStringParameterNames) {\r\n const p = new URLSearchParams(location.search);\r\n [...p.keys()].forEach(key => {\r\n if (reservedQueryStringParameterNames.includes(key)) {\r\n const val = p.get(key);\r\n if (val !== null) {\r\n currentSearch.set(key, val);\r\n }\r\n }\r\n });\r\n }\r\n const filterSearch = toURLSearchParams(items);\r\n for (const key of filterSearch.keys()) {\r\n const filterValue = filterSearch.get(key);\r\n if (filterValue !== null) {\r\n currentSearch.set(key, filterValue);\r\n }\r\n }\r\n const originalSearch = new URLSearchParamsCI(location.search);\r\n\r\n // clear saved view selection when instrument selection changes\r\n if (enableSavedLists && savedListSettings !== undefined) {\r\n if (savedListSettings?.savedListSerializedKey !== undefined) {\r\n const currentInstrumentSelection = currentSearch.get(\r\n savedListSettings?.savedListSerializedKey,\r\n );\r\n const originalInstrumentSelection = originalSearch.get(\r\n savedListSettings?.savedListSerializedKey,\r\n );\r\n if (currentInstrumentSelection !== originalInstrumentSelection) {\r\n // remove the selection from the search\r\n currentSearch.delete(SAVEDVIEW_SEARCH_KEY);\r\n // clear redux state\r\n dispatch(savedViewActions.selectMyList());\r\n }\r\n }\r\n }\r\n\r\n setAppliedFilters(getDependencyFilters([...items]));\r\n // push current filter state to the URL search if it's not equivalent\r\n if (!originalSearch.equals(currentSearch) && !isSidePanel) {\r\n dispatch(\r\n routerActions.replace({\r\n pathname: location.pathname,\r\n search: currentSearch.toString(),\r\n }),\r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {appliedFilters !== undefined && (\r\n & {\r\n exportNotConfigurable?: boolean;\r\n })}\r\n />\r\n )}\r\n \r\n );\r\n };\r\n}\r\n\r\nconst withoutReserved = (\r\n search: string,\r\n reserved: string[] | undefined,\r\n): string => {\r\n if (reserved === undefined || reserved.length === 0) return search;\r\n const originalSearch = new URLSearchParamsCI(search);\r\n reserved.forEach(f => originalSearch.delete(f));\r\n return originalSearch.toString();\r\n};\r\n\r\nconst addReserved = (\r\n current: URLSearchParams,\r\n search: string,\r\n reserved: string[] | undefined,\r\n) => {\r\n if (reserved === undefined || reserved.length === 0) return current;\r\n const p = new URLSearchParams(search);\r\n [...p.keys()].forEach(key => {\r\n if (reserved.includes(key)) {\r\n const val = p.get(key);\r\n if (val !== null) {\r\n current.set(key, val);\r\n }\r\n }\r\n });\r\n return current;\r\n};\r\n\r\n// function getIgnoredSearch(search: string, ignore: string[]) {\r\n// var p = new URLSearchParams(search);\r\n// [...p.keys()].forEach(key => {\r\n// if (!ignore.includes(key)) {\r\n// p.delete(key);\r\n// }\r\n// });\r\n\r\n// return p;\r\n// }\r\n","export function* largeFilesUploadSaga() {}\r\n","import { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { LargeFilesUploadState } from './types';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { largeFilesUploadSaga } from './saga';\r\nimport { PayloadAction } from '@reduxjs/toolkit';\r\nimport { CommentReferenceTypes } from 'enums/commentReferenceTypes';\r\n\r\nexport const initialState: LargeFilesUploadState = {\r\n selectedFiles: 0,\r\n canUpload: false,\r\n uploading: false,\r\n targetId: 0,\r\n startedToUpload: false,\r\n files: [],\r\n currentNumberOfUploadedFiles: 0,\r\n numberOfUploadedFiles: 0,\r\n commentType: undefined,\r\n referenceId: undefined,\r\n refernceStringId: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'largeFilesUpload',\r\n initialState,\r\n reducers: {\r\n setSeletedFiles(state, action: PayloadAction) {\r\n state.selectedFiles = action.payload;\r\n },\r\n setCommentProperties(\r\n state,\r\n action: PayloadAction<{\r\n commentType: CommentReferenceTypes;\r\n referenceId: number;\r\n refernceStringId?: string;\r\n }>,\r\n ) {\r\n state.commentType = action.payload.commentType;\r\n state.referenceId = action.payload.referenceId;\r\n state.refernceStringId = action.payload.refernceStringId;\r\n },\r\n setCanUpload(state, action: PayloadAction) {\r\n if (action.payload > 0) {\r\n state.targetId = action.payload;\r\n state.canUpload = true;\r\n state.startedToUpload = false;\r\n state.uploading = false;\r\n state.currentNumberOfUploadedFiles = 0;\r\n state.numberOfUploadedFiles = 0;\r\n } else {\r\n state.canUpload = false;\r\n state.startedToUpload = false;\r\n state.uploading = false;\r\n state.targetId = 0;\r\n state.files = [];\r\n state.currentNumberOfUploadedFiles = 0;\r\n state.numberOfUploadedFiles = 0;\r\n }\r\n },\r\n addFile(state, action: PayloadAction) {\r\n state.files.push(action.payload);\r\n if (state.canUpload && state.files.length === 1) {\r\n state.startedToUpload = true;\r\n state.currentNumberOfUploadedFiles = 0;\r\n state.numberOfUploadedFiles = 0;\r\n state.selectedFiles = 0;\r\n }\r\n state.uploading = state.canUpload && state.files.length > 0;\r\n },\r\n removeFile(state, action: PayloadAction) {\r\n const index = state.files.findIndex(item => item === action.payload);\r\n if (index >= 0) {\r\n state.files.splice(index, 1);\r\n state.currentNumberOfUploadedFiles++;\r\n }\r\n if (state.files.length === 0 && state.uploading) {\r\n state.numberOfUploadedFiles = state.currentNumberOfUploadedFiles;\r\n state.currentNumberOfUploadedFiles = 0;\r\n state.uploading = false;\r\n }\r\n },\r\n resetNumberOfUploadedFiles(state) {\r\n state.selectedFiles = 0;\r\n state.numberOfUploadedFiles = 0;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: largeFilesUploadActions } = slice;\r\n\r\nexport const useLargeFilesUploadSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: largeFilesUploadSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { BookitDatePickerProps } from 'app/components/BookitDatePicker';\r\nimport { IFieldProps } from '../FormRender/IFormFieldSetting';\r\nimport { BookitDateTimePicker } from 'app/components/BookitDatePicker/BookitDateTimePicker';\r\n\r\n/**\r\n * TODO:\r\n * A non-serializable value was detected in an action, in the path: `payload.ReceivedAt`. Value: \r\nDate Sun May 02 2021 14:58:00 GMT+0300 (Israel Daylight Time)\r\n \r\nTake a look at the logic that dispatched this action: \r\nObject { type: \"animals/insertItem\", payload: {…} }\r\n \r\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string…t-least-serializable-why-should-my-action-types-be-constants) \r\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\r\n * */\r\n\r\nexport const FormBookitDateTimePicker = ({\r\n label,\r\n disableFuture,\r\n disablePast,\r\n ...props\r\n}: FieldHookConfig &\r\n Pick<\r\n BookitDatePickerProps,\r\n | 'endTime'\r\n | 'truncateTime'\r\n | 'minDate'\r\n | 'maxDate'\r\n | 'labelFunc'\r\n | 'clearable'\r\n | 'fullScreen'\r\n | 'minutesStep'\r\n | 'dateLabel'\r\n | 'timeLabel'\r\n | 'maskIfEmpty'\r\n | 'saveOnSelect'\r\n > & { labelInline?: boolean } & IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n fullWidth={true}\r\n helperText={meta.error}\r\n dateLabel={props.dateLabel}\r\n timeLabel={props.timeLabel}\r\n labelFunc={props.labelFunc}\r\n info={props.info}\r\n disabled={props.disabled}\r\n clearable={props.clearable}\r\n fullScreen={props.fullScreen}\r\n endTime={props.endTime}\r\n truncateTime={props.truncateTime}\r\n autoFocus={props.autoFocus}\r\n minDate={props.minDate}\r\n maxDate={props.maxDate}\r\n minutesStep={props.minutesStep || 15}\r\n />\r\n );\r\n};\r\n","export enum MandatoryOfflineTypeEnum {\r\n Mandatory_Optional = 0,\r\n Mandatory_Default = 1,\r\n Mandatory_Users = 2,\r\n Mandatory_OnCompletion = 3,\r\n}\r\n\r\nexport type MandatoryOfflineTypeUnion = keyof typeof MandatoryOfflineTypeEnum;\r\nexport const MandatoryOfflineTypeUnionArray: Array =\r\n [\r\n 'Mandatory_Optional',\r\n 'Mandatory_Default',\r\n 'Mandatory_Users',\r\n 'Mandatory_OnCompletion',\r\n ];\r\n","import {\r\n SendEmailOnOffline,\r\n WorkOrderQueryStringParameters,\r\n} from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/types';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport { httpClient } from './HttpClient';\r\nimport { IWorkOrderDetailsDto } from './odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { Condition, ODataOperators } from './odata/ODataFilter';\r\nimport { odataUrlPrefix } from 'utils/url-utils';\r\n\r\nexport const WorkOrderApi = {\r\n initCreateData: (payload: WorkOrderQueryStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/workorders/InitWorkOrder`;\r\n return httpClient.post(url, data);\r\n },\r\n initUpdateData: (payload: WorkOrderQueryStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/workorders/InitWorkOrder`;\r\n return httpClient.post(url, data);\r\n },\r\n insertWorkOrder: (payload: IWorkOrderDetailsDto) => {\r\n const url = `/api/odata/v4/workorders`;\r\n return httpClient.post(url, payload);\r\n },\r\n updateWorkOrder: (payload: IWorkOrderDetailsDto) => {\r\n const url = `/api/odata/v4/workorders(${payload.Id})`;\r\n return httpClient.put(url, payload);\r\n },\r\n sendEmailOnOffline: (payload: SendEmailOnOffline) => {\r\n const data = {\r\n offData: payload,\r\n };\r\n console.debug('offlinedata', payload);\r\n const url = `/api/odata/v4/workorders/SendEmailOnResOffline`;\r\n return httpClient.post(url, data);\r\n },\r\n getNewWorkOrderStatus: (payload: number) => {\r\n const url = '/api/odata/v4/WorkOrderStatus';\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Order asc',\r\n $filter: `(WorkOrderTypeId eq ${payload} and New eq true)`,\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient.get(url, params).then(response => response.value);\r\n },\r\n deleteOrders: (payload: { Id: number; all: boolean | null }) => {\r\n const url = '/api/odata/v4/WorkOrders/DeleteWorkOrder';\r\n return httpClient.post(url, payload);\r\n },\r\n deleteTempComments: (commentIds: number[] | undefined) => {\r\n if (!commentIds?.length) return;\r\n const url = odataUrlPrefix + 'WorkOrders/DeleteTempComments';\r\n return httpClient.post(url, { commentIds }).catch(e => console.error(e));\r\n },\r\n DowntimeOrders: (payload: number[]) => {\r\n const filters = (assetIds: number[]) => {\r\n const predicates: string | Condition[] = [];\r\n let foo: string | undefined = undefined;\r\n if (assetIds.length > 0) {\r\n let ids = assetIds.map(item => {\r\n return { Id: item };\r\n }) as Identifiable[];\r\n let nowDate = new CustomDate(new Date(), 'complete');\r\n predicates.push(new Condition('AssetId', ODataOperators.Includes, ids));\r\n predicates.push(\r\n new Condition('OfflineEventStart', ODataOperators.LessThan, nowDate),\r\n );\r\n predicates.push(\r\n new Condition('OfflineEventEnd', ODataOperators.GreaterThan, nowDate),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'DoneDate',\r\n ODataOperators.Equals,\r\n null,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'WorkingHoursId',\r\n ODataOperators.NotEquals,\r\n null,\r\n ),\r\n );\r\n predicates.push(\r\n new Condition(\r\n 'IsClosed',\r\n ODataOperators.Equals,\r\n false,\r\n ),\r\n );\r\n foo = predicates.map(f => f.toString()).join(' and ');\r\n }\r\n return foo;\r\n };\r\n const url = '/api/odata/v4/WorkOrders';\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n } = {\r\n $orderby: 'Id asc',\r\n $filter: filters(payload),\r\n };\r\n return httpClient.get(url, params).then(response => response.value);\r\n },\r\n removefromLinks: (id: number) => {\r\n const url = '/api/odata/v4/workorders/RemoveFromLinks';\r\n const params = { linkedId: id };\r\n return httpClient.post(url, params).then(v => v.value);\r\n },\r\n addToLinked: (data: { id: number; link: number }) => {\r\n const params = { params: { Id: data.id, Link: data.link } };\r\n const url = '/api/odata/v4/workorders/AddToLinked';\r\n return httpClient.post(url, params);\r\n },\r\n removeLinkedCalibration: (data: { id: number; link: number }) => {\r\n const url = '/api/odata/v4/workorders/RemoveLinkedCalibr';\r\n const params = { params: { Id: data.id, Link: data.link } };\r\n return httpClient.post(url, params);\r\n },\r\n addLinkedToCalibration: (data: { id: number; link: number }) => {\r\n const params = { params: { Id: data.id, Link: data.link } };\r\n const url = '/api/odata/v4/workorders/AddLinkedCalibr';\r\n return httpClient.post(url, params);\r\n },\r\n getLinkedToCalibration: (id: number) => {\r\n const params = { key: id };\r\n const url = '/api/odata/v4/workorders/InitLinkedCalibrations';\r\n return httpClient.post(url, params);\r\n },\r\n getOverlappingDowntimes: (id: number) => {\r\n const params = { id: id };\r\n const url = '/api/odata/v4/workorders/GetOverlappingDowntimes';\r\n return httpClient.post(url, params);\r\n },\r\n updateWorkOrdersStatus: (\r\n rows: IWorkOrderDetailsDto[],\r\n workOrderStatus: Entity | null,\r\n ) => {\r\n const workOrdersIds: number[] = rows.map(item => item.Id);\r\n const statusId: number = !!workOrderStatus ? workOrderStatus?.Id : 0;\r\n const data = { workOrdersIds, statusId };\r\n const url = '/api/odata/v4/WorkOrderStatus/UpdateWorkOrdersStatus';\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { InputLabel, InputValue } from 'app/components/Typography';\r\nimport { FlexColumn } from 'app/components/StyledComponents';\r\n\r\nexport function ReadonlyField(props: {\r\n title: string;\r\n value?: React.ReactNode;\r\n}) {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n \r\n {props.title}\r\n \r\n {props.value ?? t(translations.NA)}\r\n \r\n );\r\n}\r\n","/**\r\n * A copy of local\\Bookit.Data\\Enums\\BudgetFields.cs\r\n * replace attributes: ^ *\\[[^\\]]+\\]\\n\r\n */\r\nexport enum BudgetFields {\r\n Active = 1,\r\n\r\n Number = 2,\r\n\r\n BudgetManager = 3,\r\n\r\n UserGroup = 4,\r\n\r\n BudgetCat = 5,\r\n\r\n HideExperiments = 6,\r\n\r\n StartDate = 7,\r\n\r\n EndDate = 8,\r\n\r\n Confidential = 9,\r\n\r\n FundingType = 10,\r\n\r\n AllowJoinRequests = 11,\r\n\r\n DefaultExperimentTemplate = 12,\r\n\r\n Default = 13,\r\n\r\n BudgetIsOnline = 14,\r\n\r\n BudgetFund = 15,\r\n\r\n FacilityProject = 16,\r\n\r\n BudgetInternalId = 17,\r\n\r\n BudgetStatus = 18,\r\n\r\n ExternalEndDate = 19,\r\n\r\n ExternalUpdatedAt = 20,\r\n\r\n BudgetLeader = 21,\r\n\r\n BudgetInitialCost = 22,\r\n\r\n BudgetBudget = 23,\r\n\r\n BudgetOwner = 24,\r\n\r\n BdmUsername = 25,\r\n\r\n SubsidyProfit = 26,\r\n\r\n SubsProfProjectNumber = 27,\r\n\r\n SubsProfCostCenter = 28,\r\n SubsProfActivity = 29,\r\n\r\n SubsProfAccountNumber = 30,\r\n SubsidyFinAccountType = 31,\r\n BudgetRemarks = 32,\r\n\r\n Company = 33,\r\n\r\n BudgetManagerCanApproveExperiment = 34,\r\n\r\n BudgetAmount = 35,\r\n\r\n HardLimit = 36,\r\n\r\n SoftLimit = 37,\r\n\r\n BudgetLimitsNotificationSettings = 38,\r\n\r\n BudgetExtraTextField1 = 39,\r\n\r\n BudgetExtraTextField2 = 40,\r\n\r\n BudgetExtraTextField3 = 41,\r\n\r\n BudgetExtraTextField4 = 42,\r\n\r\n BudgetExtraTextField5 = 43,\r\n\r\n BudgetExtraBoolField1 = 44,\r\n\r\n BudgetExtraBoolField2 = 45,\r\n\r\n BudgetExtraBoolField3 = 46,\r\n\r\n BudgetExtraBoolField4 = 47,\r\n\r\n BudgetExtraBoolField5 = 48,\r\n\r\n BudgetExtraDateField1 = 49,\r\n\r\n BudgetExtraDateField2 = 50,\r\n\r\n BudgetExtraDateField3 = 51,\r\n\r\n BudgetExtraDateField4 = 52,\r\n\r\n BudgetExtraDateField5 = 53,\r\n\r\n BudgetExtraNumField1 = 54,\r\n\r\n BudgetExtraNumField2 = 55,\r\n\r\n BudgetExtraNumField3 = 56,\r\n\r\n BudgetExtraNumField4 = 57,\r\n\r\n BudgetExtraNumField5 = 58,\r\n\r\n InvoicingRemarks = 59,\r\n ProjectBilingEmail = 60,\r\n PendingProjectAmount = 61,\r\n SecondaryCoordinators = 62,\r\n PurchaseOrderOption = 63,\r\n}\r\n","export enum CustomFormTypeEnum {\r\n Reservation = 0,\r\n Request = 1,\r\n Experiment = 2,\r\n Alert = 3,\r\n AlertType = 4,\r\n ServiceGroup = 5,\r\n Quiz = 6,\r\n}\r\n","import { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { PurchaseOrderOptions } from 'api/odata/generated/enums/PurchaseOrderOptions';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { FundingTypes } from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { AsyncDataState } from 'types/common';\r\nimport { IConnectedFiltersDto } from 'types/IConnectedFiltersDto';\r\nimport { FieldHandlerProps } from '../../FormRender/FormRenderer';\r\nimport { ReportedFrom } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\n\r\n/* --- STATE --- */\r\nexport interface ConnectedFiltersState\r\n extends AsyncDataState {\r\n connectedValueHandler?: FieldHandlerProps;\r\n connectedSettings: ConnectedFiltersSettings;\r\n}\r\nexport interface ConnectedFiltersSettings {\r\n startTimeVisible?: boolean;\r\n endTimeVisible?: boolean;\r\n budgetVisible?: boolean;\r\n userVisible?: boolean;\r\n userGroupVisible?: boolean;\r\n fundingTypeVisible?: boolean;\r\n budgetExpirementVisible?: boolean;\r\n instProjVisible?: boolean;\r\n extCustomerVisible?: boolean;\r\n purchaseOrderVisible?: boolean;\r\n referenceVisible?: boolean;\r\n onlyOwnUserGroupsAllowed?: boolean;\r\n ReservationUserGroupGroupByBudgetUserGroup?: boolean;\r\n budgetLimitedByUsers?: boolean;\r\n isBudgetsWithoutUserGroup?: boolean;\r\n budgetInputDisabled?: boolean;\r\n isServiceAdmin?: boolean;\r\n isUserGroupCoordinator?: boolean;\r\n chargesViewAllowed?: boolean;\r\n hasConflictProjects?: boolean;\r\n}\r\nexport function mapSettings(\r\n services: IServiceTypeFilterDto[],\r\n globalSettings: GlobalSettingsType,\r\n settings: ConnectedFiltersSettings,\r\n isEditMode: boolean,\r\n user: AuthenticatedUser | undefined,\r\n data?: IConnectedFiltersDto,\r\n reportFrom?: ReportedFrom,\r\n): ConnectedFiltersSettings {\r\n let budgetEnabled = getOfflineBudgetVisible(globalSettings, services);\r\n let isForMilestone = reportFrom === 'milestone';\r\n let resUGEnabled =\r\n services.length > 0\r\n ? globalSettings.reservationUserGroupGroupByBudgetUserGroup &&\r\n budgetEnabled\r\n : globalSettings.reservationUserGroupGroupByBudgetUserGroup;\r\n let isServiceAdmin = user?.IsAllGroupOrLabTechAdmin(\r\n services.map(f => f.ServiceGroupId ?? 0),\r\n services,\r\n );\r\n let isRoleAdmin =\r\n user?.Roles.includes(Roles.Administrators) ||\r\n user?.Roles.includes(Roles.GroupAdministrators) ||\r\n user?.Roles.includes(Roles.LabTech);\r\n let isUserGroupCoordinator =\r\n user &&\r\n user.Roles.includes(Roles.UserGroupCoord) &&\r\n (isEditMode ? !!data && data.UserGroup?.Id === user.ActiveUserGroup : true);\r\n let btExpEnabled =\r\n globalSettings.budgetExperimentModuleEnabled && budgetEnabled;\r\n let chargesViewAllowed =\r\n (user && user.Roles.includes(Roles.FinAdmin)) ||\r\n isServiceAdmin ||\r\n (user &&\r\n user.Roles.includes(Roles.InvoicesReader) &&\r\n user.ActiveUserGroup?.Id === data?.UserGroup?.Id);\r\n const result = Object.assign({}, settings, {\r\n hideProject:\r\n services.length > 0 ? services.every(f => f.HideProject) : undefined,\r\n isUserGroupCoordinator: isUserGroupCoordinator,\r\n hasConflictProjects:\r\n services.some(f => f.HideProject === true) &&\r\n services.some(f => f.HideProject === false),\r\n budgetVisible: budgetEnabled && !isForMilestone,\r\n fundingTypeVisible:\r\n globalSettings.fundingTypeBudgetEnabled &&\r\n budgetEnabled &&\r\n // funding type is not needed unless the PurchaseOrder is also enabled\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n !isForMilestone,\r\n ReservationUserGroupGroupByBudgetUserGroup: resUGEnabled,\r\n userGroupVisible:\r\n (isServiceAdmin || isRoleAdmin) &&\r\n !isEditMode &&\r\n !isUserGroupCoordinator &&\r\n !resUGEnabled &&\r\n !isForMilestone,\r\n userVisible:\r\n !isForMilestone &&\r\n (isServiceAdmin ||\r\n isUserGroupCoordinator ||\r\n (!isEditMode && isRoleAdmin)),\r\n budgetExpirementVisible: btExpEnabled && !isForMilestone,\r\n instProjVisible: globalSettings.instituteProjectsEnabled && !isForMilestone,\r\n // looks like the external customers are being deprecated\r\n extCustomerVisible: false,\r\n purchaseOrderVisible:\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n !isForMilestone &&\r\n ((data?.Budget as IBudgetFilterDto)?.PurchaseOrderOptionId ??\r\n PurchaseOrderOptions.Hidden) !== PurchaseOrderOptions.Hidden,\r\n referenceVisible:\r\n globalSettings.showReferenceFieldInReservationDetails &&\r\n !isForMilestone &&\r\n !!data\r\n ? data.FundingType?.Id === FundingTypes.External\r\n : false,\r\n onlyOwnUserGroupsAllowed: globalSettings.onlyOwnUserGroupsAllowed,\r\n projectsAreOptional: globalSettings.projectsAreOptional,\r\n budgetLimitedByUsers: globalSettings.budgetLimitedByUsers,\r\n isBudgetsWithoutUserGroup: globalSettings.isBudgetsWithoutUserGroup,\r\n isServiceAdmin: isServiceAdmin,\r\n endTimeVisible: false,\r\n startTimeVisible: true,\r\n chargesViewAllowed:\r\n !isForMilestone &&\r\n (globalSettings.allowUsersToViewTheirCharges || chargesViewAllowed),\r\n });\r\n return result;\r\n}\r\nexport function getOfflineBudgetVisible(\r\n globalSettings: Pick<\r\n GlobalSettingsType,\r\n | 'billingModuleEnabled'\r\n | 'budgetModuleEnabled'\r\n | 'priceSheetPricing'\r\n | 'projectsAreOptional'\r\n >,\r\n equipments: Array<\r\n Pick\r\n >,\r\n): boolean {\r\n if (!globalSettings.budgetModuleEnabled) {\r\n return false;\r\n }\r\n\r\n if (globalSettings.billingModuleEnabled) {\r\n // budgets turned off on service group level\r\n if (equipments.every(f => f.BudgetsTurnedOn === false)) {\r\n return false;\r\n }\r\n }\r\n\r\n // HideProjects is enabled only when ProjectsAreOptional is turned on in the system settings\r\n if (globalSettings.projectsAreOptional) {\r\n if (equipments.every(f => f.HideProject)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { put, select, takeLatest } from 'redux-saga/effects';\r\nimport { connectedFiltersActions as actions } from '.';\r\nimport { IConnectedFiltersDto } from 'types/IConnectedFiltersDto';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { ConnectedFiltersSettings, mapSettings } from './types';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { selectConnectedFiltersData } from './selectors';\r\nimport { ReportedFrom } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\n\r\nfunction* doSetConnectedValue(\r\n action: PayloadAction<{\r\n fieldKey: keyof IConnectedFiltersDto;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setConnectedValueSuccess(action.payload));\r\n}\r\nfunction* doUpdateEquipmentSettigs(\r\n action: PayloadAction<{\r\n services: IServiceTypeFilterDto[];\r\n globalSettings: GlobalSettingsType;\r\n settings: ConnectedFiltersSettings;\r\n isEdit: boolean;\r\n data?: IConnectedFiltersDto;\r\n reportFrom?: ReportedFrom;\r\n }>,\r\n) {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const currentData: IConnectedFiltersDto = yield select(\r\n selectConnectedFiltersData,\r\n );\r\n let newSettings = mapSettings(\r\n action.payload.services,\r\n action.payload.globalSettings,\r\n action.payload.settings,\r\n action.payload.isEdit,\r\n user,\r\n action.payload.data || currentData,\r\n action.payload.reportFrom,\r\n );\r\n\r\n yield put(actions.updateSettingsState(newSettings));\r\n}\r\nfunction* doResetState(action: PayloadAction) {\r\n yield put(actions.resetConnectedState_success());\r\n}\r\nexport function* connectedFiltersSaga() {\r\n yield takeLatest(actions.setConnectedValue.type, doSetConnectedValue);\r\n yield takeLatest(actions.extendSettingsState.type, doUpdateEquipmentSettigs);\r\n yield takeLatest(actions.resetConnectedState.type, doResetState);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport {\r\n ConnectedFiltersInit,\r\n IConnectedFiltersDto,\r\n} from 'types/IConnectedFiltersDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { connectedFiltersSaga } from './saga';\r\nimport { ConnectedFiltersSettings, ConnectedFiltersState } from './types';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { ReportedFrom } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\n\r\nexport const initialState: ConnectedFiltersState = {\r\n processing: false,\r\n data: {\r\n StartTime: dateUtils.formatISO(new CustomDate(new Date())),\r\n EndTime: undefined,\r\n User: null,\r\n UserGroup: null,\r\n Budget: null,\r\n BudgetExperiment: null,\r\n InstituteProject: null,\r\n ExternalCustomer: null,\r\n FundingType: null,\r\n PurchaseOrder: undefined,\r\n Reference: undefined,\r\n },\r\n connectedValueHandler: undefined,\r\n connectedSettings: {\r\n budgetExpirementVisible: undefined,\r\n budgetLimitedByUsers: undefined,\r\n budgetVisible: undefined,\r\n endTimeVisible: undefined,\r\n extCustomerVisible: undefined,\r\n fundingTypeVisible: undefined,\r\n budgetInputDisabled: undefined,\r\n instProjVisible: undefined,\r\n isBudgetsWithoutUserGroup: undefined,\r\n isServiceAdmin: undefined,\r\n onlyOwnUserGroupsAllowed: undefined,\r\n purchaseOrderVisible: undefined,\r\n referenceVisible: undefined,\r\n ReservationUserGroupGroupByBudgetUserGroup: undefined,\r\n startTimeVisible: undefined,\r\n userGroupVisible: undefined,\r\n userVisible: undefined,\r\n isUserGroupCoordinator: undefined,\r\n chargesViewAllowed: undefined,\r\n },\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'connectedFilters',\r\n initialState,\r\n reducers: {\r\n resetState(state, action: PayloadAction) {\r\n state.data = ConnectedFiltersInit();\r\n },\r\n saveState(state, action: PayloadAction) {\r\n state.data = {\r\n StartTime: action.payload.StartTime,\r\n EndTime: action.payload.EndTime,\r\n User: action.payload.User,\r\n UserGroup: action.payload.UserGroup,\r\n Budget: action.payload.Budget,\r\n BudgetExperiment: action.payload.BudgetExperiment,\r\n InstituteProject: action.payload.InstituteProject,\r\n ExternalCustomer: action.payload.ExternalCustomer,\r\n FundingType: action.payload.FundingType,\r\n PurchaseOrder: action.payload.PurchaseOrder,\r\n Reference: action.payload.PurchaseOrder,\r\n };\r\n },\r\n setSubmit(state, action: PayloadAction) {\r\n state.processing = action.payload;\r\n },\r\n resetConnectedState(state, action: PayloadAction) {},\r\n resetConnectedState_success(state, action: PayloadAction) {\r\n state.connectedSettings = {\r\n budgetExpirementVisible: undefined,\r\n budgetLimitedByUsers: undefined,\r\n budgetVisible: undefined,\r\n endTimeVisible: undefined,\r\n extCustomerVisible: undefined,\r\n fundingTypeVisible: undefined,\r\n budgetInputDisabled: undefined,\r\n instProjVisible: undefined,\r\n isBudgetsWithoutUserGroup: undefined,\r\n isServiceAdmin: undefined,\r\n onlyOwnUserGroupsAllowed: undefined,\r\n purchaseOrderVisible: undefined,\r\n referenceVisible: undefined,\r\n ReservationUserGroupGroupByBudgetUserGroup: undefined,\r\n startTimeVisible: undefined,\r\n userGroupVisible: undefined,\r\n userVisible: undefined,\r\n isUserGroupCoordinator: undefined,\r\n chargesViewAllowed: undefined,\r\n };\r\n state.data = {\r\n StartTime: dateUtils.formatISO(new CustomDate(new Date())),\r\n EndTime: undefined,\r\n User: null,\r\n UserGroup: null,\r\n Budget: null,\r\n BudgetExperiment: null,\r\n InstituteProject: null,\r\n ExternalCustomer: null,\r\n FundingType: null,\r\n PurchaseOrder: undefined,\r\n Reference: undefined,\r\n };\r\n state.connectedValueHandler = undefined;\r\n state.completed = undefined;\r\n state.processing = undefined;\r\n state.hasErrors = undefined;\r\n },\r\n setConnectedValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof IConnectedFiltersDto;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setConnectedValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof IConnectedFiltersDto;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.connectedValueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetConnectedHandler(state, action: PayloadAction) {\r\n state.connectedValueHandler = undefined;\r\n },\r\n extendSettingsState(\r\n state,\r\n action: PayloadAction<{\r\n services: IServiceTypeFilterDto[];\r\n globalSettings: GlobalSettingsType;\r\n settings: ConnectedFiltersSettings;\r\n isEdit: boolean;\r\n data?: IConnectedFiltersDto;\r\n reportFrom?: ReportedFrom;\r\n }>,\r\n ) {},\r\n updateSettingsState(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.connectedSettings = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: connectedFiltersActions } = slice;\r\n\r\nexport const useConnectedFiltersSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: connectedFiltersSaga });\r\n return { actions: slice.actions };\r\n};\r\n","export enum FileTypes {\r\n Undefined = -1,\r\n ServiceFile = 0,\r\n ServiceRequestFile = 1,\r\n ServiceRequestComment = 2,\r\n ServiceRequestRowFile = 3,\r\n ServiceRequestRowComment = 4,\r\n ExperimentFile = 5,\r\n ExperimentComment = 6,\r\n AssetFile = 7,\r\n SrpFile = 8,\r\n SrpComment = 9,\r\n AlertFile = 10,\r\n BudgetExperimentFile = 11,\r\n Expense = 12,\r\n ReservationFile = 13,\r\n AlertComment = 14,\r\n AlertTypeFile = 15,\r\n ServiceGroupFile = 16,\r\n InvoiceTemplate = 17,\r\n ArticleComment = 18,\r\n AssetImage = 19,\r\n AssetComment = 20,\r\n}\r\n","/**\r\n *\r\n * ExtraDDLPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IExtraDDLDto } from 'api/odata/generated/entities/IExtraDDLDto';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport * as React from 'react';\r\nexport type CatUrl = 'base' | 'assetBase' | 'public';\r\nexport interface ExtraDDLPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType?: any;\r\n}\r\n\r\nconst url = '/api/odata/v4/ExtraDDL';\r\nexport const initExtraDDLData = (\r\n initval: string | undefined,\r\n sourceUrl?: string,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IExtraDDLDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,Active,ExtraDdlId',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl = `${url}?key=${sourceUrl ?? ''}`;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as IExtraDDLDto[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n urlType?: string,\r\n) => {\r\n const sourceUrl = `${url}?key=${urlType ?? ''}`;\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: ['Id', 'Name', 'Active', 'ExtraDdlId'],\r\n globalServiceGroupFilter: [],\r\n });\r\n};\r\n\r\nexport function ExtraDDLPicker(props: ExtraDDLPickerProps) {\r\n const { predicates, urlType, ...other } = props;\r\n\r\n const innerLoadData = loadData(predicates, urlType);\r\n return (\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { Entity } from 'types/common';\r\nimport { IAsset } from './IAsset';\r\n\r\nexport interface IAssetRow extends Entity {\r\n Cell?: (value: AttributeValue) => React.ReactNode | undefined;\r\n PropName?: keyof IAsset;\r\n NoHeader?: boolean;\r\n Header?: (value: AttributeValue) => React.ReactNode;\r\n dependencies?: string[];\r\n validToRender?: (value: AttributeValue) => boolean;\r\n State?: AssetRowState;\r\n}\r\n\r\nexport interface AttributeValue {\r\n original: T;\r\n value: any;\r\n shortView?: boolean;\r\n}\r\n\r\nexport enum AssetRowState {\r\n SectionName,\r\n Mandatory,\r\n}\r\n","import { CircularProgress } from '@material-ui/core';\r\nimport {\r\n Autocomplete,\r\n AutocompleteGetTagProps,\r\n AutocompleteProps,\r\n AutocompleteRenderOptionState,\r\n} from '@material-ui/lab';\r\nimport { BookitChip } from 'app/components/BasicChip';\r\nimport BaseTextField from 'app/components/BasicInputs/BaseTextField';\r\nimport React from 'react';\r\nimport { CSSProperties } from 'styled-components';\r\nimport { Entity } from 'types/common';\r\nimport clsx from 'clsx';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { capitalize, omit } from 'lodash';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { addActionToOptions, isAction } from '../Utils/autoCompletePickerUtils';\r\n\r\nexport interface AutocompleteMultiPickerProps<\r\n TKey,\r\n TValue extends Entity = Entity,\r\n> extends Omit<\r\n AutocompleteProps,\r\n | 'multiple'\r\n | 'loading'\r\n | 'open'\r\n | 'options'\r\n | 'renderInput'\r\n | 'onChange'\r\n | 'classes'\r\n | 'renderTags'\r\n | 'renderOptionLabel'\r\n | 'renderOptions'\r\n | 'size'\r\n > {\r\n value?: TValue[];\r\n label?: string;\r\n loadData: (searchTerm: string | null) => Promise;\r\n size?: 'small' | 'medium' | 'large' | 'xl';\r\n listSize?: 'small' | 'medium' | 'large';\r\n mini?: boolean;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n isOpen?: boolean;\r\n style?: CSSProperties;\r\n name?: string;\r\n placeholder?: string;\r\n error?: boolean;\r\n helperText?: string;\r\n onChange: (value: TValue[]) => void;\r\n required?: boolean;\r\n info?: string;\r\n id?: string;\r\n renderTags?: (\r\n value: TValue[],\r\n getTagProps: AutocompleteGetTagProps,\r\n ) => React.ReactNode | undefined;\r\n renderOptionLabel?: (value: TValue) => string | undefined;\r\n renderOptions?: (\r\n option: TValue,\r\n state: AutocompleteRenderOptionState,\r\n ) => React.ReactNode | undefined;\r\n onBlur?: React.FocusEventHandler;\r\n onChipClick?: (chip: TValue) => void;\r\n ariaLabel?: string;\r\n /**\r\n * Controls width of selected option chips. If true, every selected option will occupy full width of the picker, otherwise width will depend on option text content length\r\n */\r\n fullWdithOptions?: boolean;\r\n onPickerOpen?: () => void;\r\n className?: string;\r\n additionalAction?: React.ReactNode;\r\n}\r\n\r\nexport function AutocompleteMultiPicker<\r\n TKey,\r\n TValue extends Entity = Entity,\r\n>({\r\n isOpen,\r\n size = 'large',\r\n listSize = 'small',\r\n mini,\r\n onOpen,\r\n onClose,\r\n label,\r\n fullWidth,\r\n fullWdithOptions,\r\n variant = 'standard',\r\n name,\r\n placeholder,\r\n error,\r\n helperText,\r\n required,\r\n renderTags,\r\n loadData,\r\n disableClearable,\r\n onChange,\r\n onInputChange,\r\n getOptionSelected,\r\n getOptionLabel,\r\n renderOptionLabel,\r\n renderOptions,\r\n onBlur,\r\n value,\r\n defaultValue,\r\n info,\r\n id,\r\n onChipClick,\r\n ariaLabel,\r\n inputValue,\r\n onPickerOpen,\r\n className,\r\n additionalAction,\r\n ...props\r\n}: AutocompleteMultiPickerProps) {\r\n let firstOpen = isOpen;\r\n const [open, setOpen] = React.useState(firstOpen);\r\n const [options, setOptions] = React.useState(null);\r\n const [searchTerm, setSearchTerm] = React.useState(null);\r\n const [hasSelected, setSelected] = React.useState(\r\n (defaultValue || []).length > 0 || (value || []).length > 0,\r\n );\r\n const [newInputValue, setInputValue] = React.useState(inputValue || '');\r\n const isMobile = DetectIsMobile();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const showShortView = isMobile || (sidePanelOpen && !sidePanelExpanded);\r\n const loading = open && options === null;\r\n React.useEffect(() => {\r\n setSelected((value || []).length > 0);\r\n }, [value]);\r\n React.useEffect(() => {\r\n let active = true;\r\n if (!loading) return undefined;\r\n\r\n (async () => {\r\n try {\r\n const data = await loadData(searchTerm);\r\n const res = addActionToOptions(data, additionalAction);\r\n active && setOptions(res as TValue[]);\r\n } catch {}\r\n })();\r\n\r\n return () => {\r\n active = false;\r\n };\r\n }, [loading, loadData, searchTerm, additionalAction]);\r\n\r\n React.useEffect(() => {\r\n if (!open) setOptions(null);\r\n }, [open]);\r\n\r\n const handleRenderTags = (\r\n value: TValue[],\r\n getTagProps: AutocompleteGetTagProps,\r\n ) => {\r\n if (renderTags === undefined) {\r\n return value.map((option: TValue, index: number) => {\r\n const color = (option as unknown as IServiceFilterDto).Color;\r\n return (\r\n onChipClick?.(option)}\r\n variant=\"default\"\r\n size=\"small\"\r\n label={option.Name}\r\n custombgcolor={color ?? undefined}\r\n fullwidth={fullWdithOptions}\r\n {...getTagProps({ index })}\r\n />\r\n );\r\n });\r\n } else {\r\n return renderTags(value, getTagProps);\r\n }\r\n };\r\n const handleRenderOptionLabel = (option: TValue) => {\r\n return renderOptionLabel === undefined\r\n ? option.Name\r\n : (renderOptionLabel(option) as string);\r\n };\r\n return (\r\n {\r\n //onOpen && onOpen(e);\r\n !disableClearable && setOptions(null);\r\n setSearchTerm(null);\r\n setOpen(true);\r\n !!onPickerOpen && onPickerOpen();\r\n }}\r\n onClose={(e, r) => {\r\n //onClose && onClose(e, r);\r\n setSearchTerm(null);\r\n setOpen(false);\r\n }}\r\n onChange={(e, v, r, d) => {\r\n if (isAction(d?.option)) return;\r\n setSearchTerm(null);\r\n setInputValue('');\r\n setSelected(v.length > 0);\r\n onChange(v);\r\n }}\r\n onInputChange={(event, newValue, reason) => {\r\n if (reason === 'reset') return;\r\n setOptions(null);\r\n setInputValue(newValue);\r\n if (reason === 'input') setSearchTerm(newValue);\r\n //onInputChange && onInputChange(event, newValue, reason);\r\n }}\r\n getOptionSelected={\r\n getOptionSelected ?? ((option, value) => option.Id === value.Id)\r\n }\r\n getOptionLabel={handleRenderOptionLabel}\r\n renderOption={option => {\r\n if (isAction(option)) {\r\n return option.action;\r\n }\r\n return <>{handleRenderOptionLabel(option)};\r\n }}\r\n renderTags={handleRenderTags}\r\n size={size === 'small' ? 'small' : 'medium'}\r\n fullWidth={fullWidth}\r\n disableClearable={disableClearable}\r\n value={value ?? []}\r\n inputValue={newInputValue}\r\n popupIcon={}\r\n closeIcon={}\r\n selectOnFocus={isMobile ? false : true}\r\n ListboxProps={{\r\n className: clsx('autocompleteList', `listSize${capitalize(listSize)}`),\r\n ...props.ListboxProps,\r\n }}\r\n renderInput={params => (\r\n \r\n {loading ? (\r\n \r\n ) : info ? (\r\n \r\n ) : // \r\n // \r\n // \r\n // \r\n // \r\n null}\r\n {params.InputProps.endAdornment}\r\n \r\n ),\r\n startAdornment: params.InputProps.startAdornment,\r\n }}\r\n />\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n","/**\r\n *\r\n * OnlineServiceComboPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport {\r\n AutocompleteMultiPickerEx,\r\n AutocompleteMultiPickerExProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPickerEx';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { AutocompletePicker } from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { splitFilterValue } from 'app/components/BasicTable/types/FilterParam';\r\nexport type ServiceUrl = 'base' | 'admin' | 'reserved';\r\nexport interface OnlineServiceComboPickerProps\r\n extends Omit, 'loadData'> {\r\n inputProps?: InputBaseComponentProps;\r\n urlType?: ServiceUrl;\r\n}\r\n\r\nconst url = '/api/odata/v4/ServiceFilter';\r\nconst adminUrl = '/api/odata/v4/ServiceFilter/AdminEquipments';\r\nconst reservableUrl = '/api/odata/v4/ServiceFilter/ReservableEquipments';\r\nexport const initOnlineServicesData = (\r\n initval: string | undefined,\r\n sourceurl?: ServiceUrl,\r\n separator?: string,\r\n serviceGroups?: Identifiable[],\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n let ids = splitFilterValue(initval).map(item => {\r\n return { Id: parseInt(item) };\r\n }) as Identifiable[];\r\n\r\n let foo: string | undefined = undefined;\r\n const predicates: string | Condition[] = [];\r\n if (ids.length > 0) {\r\n predicates.push(new Condition('Id', ODataOperators.Includes, ids));\r\n }\r\n // apply only global service group filter related items filter\r\n // items not related to one of the selected cores are discarded\r\n if (serviceGroups !== undefined && serviceGroups?.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n serviceGroups.map(f => f.Id),\r\n ),\r\n );\r\n }\r\n foo = predicates.map(f => f.toString()).join(' and ');\r\n\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n $expand: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: foo,\r\n $skip: 0,\r\n $top: 10,\r\n $expand: 'WorkingHours',\r\n };\r\n let initUrl =\r\n sourceurl === undefined\r\n ? url\r\n : sourceurl === 'reserved'\r\n ? reservableUrl\r\n : sourceurl === 'admin'\r\n ? adminUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n urlType: ServiceUrl | undefined,\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url:\r\n urlType === 'reserved'\r\n ? reservableUrl\r\n : urlType === 'admin'\r\n ? adminUrl\r\n : url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'ServiceGroupId',\r\n 'ServiceTypeId',\r\n 'UseServiceGroupTrainingLevels',\r\n 'Color',\r\n 'ImageName',\r\n 'ServiceGroupName',\r\n 'RestrictDurationUnitsAmount',\r\n 'RestrictDurationUnitType',\r\n 'DefaultDuration',\r\n 'ForceFullDayReservations',\r\n 'AssemblyId',\r\n 'TopAssemblyId',\r\n 'AssetCatId',\r\n 'AssetCatName',\r\n 'RestrictReservationToTimeSlots',\r\n 'MinOrderHours',\r\n 'WorkingHours',\r\n ],\r\n expand: 'WorkingHours',\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n\r\nexport function OnlineServiceMultiPicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n urlType,\r\n ...props\r\n}: OnlineServiceComboPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(\r\n predicates,\r\n globalServiceGroupFilter || [],\r\n urlType,\r\n );\r\n return (\r\n \r\n );\r\n}\r\nexport function OnlineServiceSinglePicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n urlType,\r\n ...props\r\n}: OnlineServiceComboPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(\r\n predicates,\r\n globalServiceGroupFilter || [],\r\n urlType,\r\n );\r\n return (\r\n {\r\n if (!!onChange) {\r\n if (value !== null) {\r\n return onChange([value]);\r\n } else {\r\n return onChange([]);\r\n }\r\n }\r\n }}\r\n disabled={disabled}\r\n info={info}\r\n id={id || 'online-service-single-filter'}\r\n helperText={helperText}\r\n required={required}\r\n className={className}\r\n onBlur={props.onBlur}\r\n placeholder={placeholder}\r\n defaultValue={\r\n !!defaultValue\r\n ? defaultValue.length > 0\r\n ? (defaultValue[0] as IServiceFilterDto | undefined | null)\r\n : undefined\r\n : undefined\r\n }\r\n label={label}\r\n value={\r\n !!value\r\n ? value.length > 0\r\n ? (value[0] as IServiceFilterDto | undefined | null)\r\n : undefined\r\n : undefined\r\n }\r\n ariaLabel={'Equipment search'}\r\n {...props}\r\n error={props.error}\r\n />\r\n );\r\n}\r\n\r\nexport function RestrictedByAdminFilter(\r\n admin?: IUserFilterDto,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (!!admin) {\r\n if (!!admin.ServiceGroupIds && admin.ServiceGroupIds.length > 0) {\r\n let ids = admin.ServiceGroupIds.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (!!admin.Services && admin.Services.length > 0) {\r\n let ids = admin.Services.filter(\r\n f => f.ServiceTypeId === (ServiceType.Online as number),\r\n ).map(f => {\r\n return { Id: f.Id } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition('Id', ODataOperators.Includes, ids),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n return [predicates.map(f => f.toString()).join(' or ')];\r\n } else {\r\n if (admin.IsAdminPanel) {\r\n return [];\r\n } else {\r\n return [\r\n new Condition('Id', ODataOperators.Equals, 0),\r\n ];\r\n }\r\n }\r\n } else {\r\n return [];\r\n }\r\n}\r\nexport function ServiceGroupFilter(\r\n serviceGroupId?: number,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (!!serviceGroupId) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Equals,\r\n serviceGroupId,\r\n ),\r\n );\r\n return predicates;\r\n } else {\r\n return [];\r\n }\r\n}\r\n","import { Checkbox, CheckboxProps } from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport { capitalize } from 'lodash';\r\nimport React from 'react';\r\n\r\nexport type CheckColor = 'primary';\r\n\r\nexport interface CheckProps extends Omit {\r\n color?: CheckColor;\r\n checkicon?: React.ReactNode;\r\n uncheckicon?: React.ReactNode;\r\n indetermicon?: React.ReactNode;\r\n withPadding?: boolean;\r\n danger?: boolean;\r\n label?: string;\r\n}\r\n\r\nexport function Check(props: CheckProps) {\r\n const {\r\n color,\r\n checkicon,\r\n uncheckicon,\r\n indetermicon,\r\n label,\r\n withPadding = true,\r\n danger,\r\n size = 'medium',\r\n ...other\r\n } = props;\r\n const checkSizeClass = React.useMemo(() => {\r\n return `checkSize${capitalize(size)}`;\r\n }, [size]);\r\n return (\r\n \r\n )\r\n }\r\n icon={\r\n !!uncheckicon ? (\r\n uncheckicon\r\n ) : (\r\n \r\n )\r\n }\r\n indeterminateIcon={\r\n !!indetermicon ? (\r\n indetermicon\r\n ) : (\r\n \r\n )\r\n }\r\n inputProps={{ 'aria-label': !!label ? label : 'decorative checkbox' }}\r\n size={size}\r\n color={'default'}\r\n />\r\n );\r\n}\r\n","import * as Handlebar from 'handlebars';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport sanitizeHtml from 'sanitize-html';\r\n\r\nHandlebar.registerHelper('formatDate', (date, format) => {\r\n try {\r\n return dateUtils.format(date, format);\r\n } catch (error) {\r\n return error;\r\n }\r\n});\r\nHandlebar.registerHelper('sanitize', value => {\r\n try {\r\n return sanitizeHtml(value);\r\n } catch (error) {\r\n return error;\r\n }\r\n});\r\n\r\nconst customFormAst = Handlebar.parse(\r\n '{{#each CustomForm}}

{{Id}}: {{Value}}

{{/each}}',\r\n);\r\nexport const parse = (template: string | undefined) =>\r\n Handlebar.parse(template ?? '');\r\n/**\r\n * Compiles Handlebars template to be used in scheduler text templates.\r\n * * adds formatDate support\r\n * * adds support for {{CustomForm}} - by replacing it with the custom form - specific template\r\n * @param template user-input template text\r\n * @returns\r\n */\r\nexport const compileHandlebarsTemplate = (template?: string) => {\r\n if (template === undefined) {\r\n return undefined;\r\n }\r\n\r\n // first parse the template\r\n const ast = Handlebar.parse(template);\r\n\r\n // mutate - replace the CustomForm placeholder by expanding it using another AST\r\n new ReplaceMutatingVisitor('CustomForm', customFormAst).accept(ast);\r\n\r\n // finally compile the resulting AST\r\n const result = Handlebar.compile(ast);\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Mutates AST tree by replacing a given node.\r\n */\r\nclass ReplaceMutatingVisitor extends Handlebar.Visitor {\r\n _replacementStatement = null;\r\n _path = null;\r\n mutating = true;\r\n /**\r\n * Initializes the Visitor\r\n * @param path original Path name to replace the node at\r\n * @param replacementStatement replacement expression\r\n */\r\n constructor(path, replacementStatement) {\r\n super();\r\n this._path = path;\r\n this._replacementStatement = replacementStatement;\r\n }\r\n MustacheStatement(mustache: hbs.AST.MustacheStatement) {\r\n if ((mustache.path as hbs.AST.PathExpression)?.original === this._path) {\r\n return this._replacementStatement;\r\n }\r\n }\r\n}\r\n","import * as Handlebar from 'handlebars';\r\n\r\n/**\r\n * Extracts paths used in handlebars ast\r\n */\r\nexport class ExtractPathsVisitor extends Handlebar.Visitor {\r\n paths: string[] = [];\r\n MustacheStatement(mustache: hbs.AST.MustacheStatement) {\r\n // for our purpose the path can be either a direct property path or a handlebars helper function with property as a parameter\r\n const isHelperPath = mustache.params.length > 0;\r\n if (isHelperPath) {\r\n // extract all parameters that are PathExpression only (e.g. ignore LiteralExpression, etc.)\r\n const paths = mustache.params\r\n .filter(f => f.type === 'PathExpression')\r\n .map(f => (f as hbs.AST.PathExpression)?.original);\r\n this.paths.push(...paths);\r\n } else {\r\n this.paths.push((mustache.path as hbs.AST.PathExpression)?.original);\r\n }\r\n }\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport { allowedToViewAlert } from 'app/permissions/WorkOrders/workOrdersPermissionUtils';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectGlobalServiceGroupFilter,\r\n selectglobalSettings,\r\n selectKnownModule,\r\n selectUserProfileSettings,\r\n} from 'app/slice/selectors';\r\nimport { RootState } from 'types';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { initialState } from '.';\r\nimport { getViewEndDate, getViewStartDate } from '../utils';\r\nimport { EventType, SchedulerState } from './types';\r\nimport { selectGlobalSetting } from 'app/slice/selectors';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { MultipleInstrumentReservations } from 'enums/MultipleInstrumentReservations';\r\nimport { selectSelectedSavedView } from 'app/pages/SavedViewsPage/SavedViewPage/slice/selectors';\r\nimport { selectIsMobileView } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n compileHandlebarsTemplate,\r\n parse,\r\n} from '../components/event_text/handlebars';\r\nimport { ExtractPathsVisitor } from '../components/event_text/ExtractPathsVisitor';\r\nimport { ICalendarReservationDto } from 'api/odata/generated/entities/ICalendarReservationDto';\r\nimport { union } from 'lodash';\r\nimport { Identifiable } from 'types/common';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { canEditReservation } from 'app/permissions/Reservations/reservationPermissions';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IWorkingHoursDto } from 'api/odata/generated/entities/IWorkingHoursDto';\r\nimport { mapEvents } from '../utils/syncSchedulerEvents';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { tryParseBool } from 'utils/string-utils';\r\n\r\nconst selectSlice = (state: RootState) =>\r\n (state.scheduler || initialState) as SchedulerState;\r\n\r\nexport const selectScheduler = createSelector([selectSlice], state => state);\r\n\r\nconst selectEvents = createSelector([selectScheduler], state => state.events);\r\n\r\nexport const selectSchedulerEvents = createSelector([selectScheduler], state =>\r\n state.viewState?.date === undefined\r\n ? undefined\r\n : state.events[state.viewState?.date],\r\n);\r\n\r\nexport const selectSchedulerOfflineHours = createSelector(\r\n [selectScheduler],\r\n state => state.offlineHours,\r\n);\r\nexport const selectTrainingSessions = createSelector(\r\n [selectScheduler],\r\n state => state.trainingSessions,\r\n);\r\n\r\nexport const selectSchedulerViewState = createSelector(\r\n [selectSlice],\r\n state => state.viewState,\r\n);\r\nexport const selectSchedulerDateTs = createSelector(\r\n [selectSchedulerViewState],\r\n state => state?.date,\r\n);\r\nexport const selectSchedulerViewType = createSelector(\r\n [selectSchedulerViewState],\r\n state => state?.viewType,\r\n);\r\n\r\nexport const selectSchedulerDate = createSelector(\r\n [selectSchedulerDateTs],\r\n state => (state === undefined ? undefined : dateUtils.parseISO(state)),\r\n);\r\n\r\nexport const selectNonWorkingHours = createSelector(\r\n [selectScheduler],\r\n state => state.nonWorkingHours,\r\n);\r\nexport const selectTutoringHours = createSelector(\r\n [selectScheduler],\r\n state => state.tutoringWorkingHours,\r\n);\r\nexport const selectSchedulerTempEvents = createSelector(\r\n [selectSlice],\r\n state => state.tempReservations,\r\n);\r\nexport const selectSelectedReservationEvents = createSelector(\r\n [selectSlice],\r\n state => state.selectedReservationEvents,\r\n);\r\nexport const selectLoadedServices = createSelector(\r\n [selectScheduler],\r\n state => state.selectedServices,\r\n);\r\nexport const selectSchedulerServicesLimit = createSelector(\r\n [selectLoadedServices, selectglobalSettings, selectSchedulerViewState],\r\n (services, globalSettings, viewState) => {\r\n const limitKey =\r\n viewState?.viewType === 'calendar'\r\n ? 'CalendarServicesPickerCapacity'\r\n : viewState?.viewType === 'timeline'\r\n ? 'MaximumTimelineRowsLimit'\r\n : undefined;\r\n const limitString =\r\n limitKey === undefined ? undefined : globalSettings.TryGet(limitKey);\r\n const limitNumber =\r\n limitString === undefined || limitString === null\r\n ? undefined\r\n : parseInt(limitString);\r\n return limitNumber;\r\n },\r\n);\r\nexport const selectSchedulerFilters = createSelector(\r\n [selectSlice],\r\n state => state.filters,\r\n);\r\nexport const selectWithReservationsOnly = createSelector(\r\n [selectSchedulerFilters],\r\n state =>\r\n (state?.['WithReservationsOnly']?.value as Identifiable)?.Id,\r\n);\r\nexport const selectSchedulerServicesLimitReached = createSelector(\r\n [selectLoadedServices, selectSchedulerServicesLimit],\r\n (services, limitNumber) =>\r\n services !== undefined &&\r\n limitNumber !== undefined &&\r\n services?.length > limitNumber,\r\n);\r\nexport const selectSchedulerSelectedServices = createSelector(\r\n [selectLoadedServices, selectSchedulerServicesLimit],\r\n (services, limitNumber) => {\r\n if (services === undefined) {\r\n return undefined;\r\n }\r\n if (limitNumber !== undefined && !isNaN(limitNumber)) {\r\n return services.slice(0, limitNumber);\r\n } else {\r\n return services;\r\n }\r\n },\r\n);\r\nexport const selectSchedulerDerivedServices = createSelector(\r\n [selectScheduler],\r\n state => state.derivedServices,\r\n);\r\n/**\r\n * map reservations in scheduler prasable format\r\n */\r\nconst selectMappedReservations = createSelector(\r\n [selectEvents, selectSchedulerDateTs],\r\n (items, date) =>\r\n date === undefined\r\n ? undefined\r\n : mapEvents('reservation', items[date], f => ({\r\n id: String(f.Id),\r\n reservation_id: f.Id,\r\n start_date: f.StartTime,\r\n end_date: f.EndTime,\r\n color: f.EquipmentColor ?? undefined,\r\n service_id: f.EquipmentId,\r\n service_name: f.EquipmentName,\r\n })),\r\n);\r\n/**\r\n * map offline hours in scheduler prasable format\r\n */\r\nconst selectMappedOfflineHours = createSelector(\r\n [selectSchedulerOfflineHours, selectSchedulerDateTs],\r\n (items, date) =>\r\n date === undefined\r\n ? undefined\r\n : mapEvents('offline', items[date], offline => ({\r\n id: `offline_${offline.Id}`,\r\n alert_id: offline.AlertId ?? undefined,\r\n\r\n start_date: offline.StartTime,\r\n end_date: offline.EndTime,\r\n service_id: offline.EquipmentId,\r\n service_name: offline.EquipmentName,\r\n offline_id: offline.Id,\r\n })),\r\n);\r\n/**\r\n * map training session in scheduler prasable format\r\n */\r\nconst selectMappedTrainingSessions = createSelector(\r\n [selectTrainingSessions, selectSchedulerDateTs],\r\n (items, date) =>\r\n date === undefined\r\n ? undefined\r\n : mapEvents('trainingsession', items[date], item => {\r\n const x = {\r\n id: `trainingsession_${item.Id}`,\r\n reservation_id: item.ReservationId ?? undefined,\r\n start_date: item.StartTime,\r\n end_date: item.EndTime,\r\n service_id: item.EquipmentId,\r\n service_name: item.EquipmentName,\r\n color: item.EquipmentColor ?? undefined,\r\n trainingsession_id: item.Id,\r\n };\r\n return x;\r\n }),\r\n);\r\n/**\r\n * combine all items shown as events\r\n */\r\nconst selectMapped = createSelector(\r\n [\r\n selectMappedReservations,\r\n selectMappedOfflineHours,\r\n selectMappedTrainingSessions,\r\n ],\r\n (a, b, c) =>\r\n a === undefined && b === undefined && c === undefined\r\n ? undefined\r\n : [...(a ?? []), ...(b ?? []), ...(c ?? [])],\r\n);\r\n/**\r\n * Selects combined reservations, training sessions & offline hours used to be parsed by the dhtmlx scheduler\r\n */\r\nexport const selectSchedulerParseEvents = createSelector(\r\n [\r\n selectMapped,\r\n selectAuthenticatedUser,\r\n selectSchedulerViewType,\r\n selectSelectedReservationEvents,\r\n ],\r\n (mappedEvents, authenticatedUser, viewType, selectedReservationEvents) => {\r\n var items =\r\n viewType === 'calendar'\r\n ? mappedEvents?.filter(\r\n f =>\r\n !(\r\n f.type === 'reservation' &&\r\n (f.original as ICalendarReservationDto).TrainingSignUp === true\r\n ),\r\n )\r\n : mappedEvents;\r\n return items?.map(item => {\r\n const viewType = item.type;\r\n\r\n let readonly = true;\r\n let notClickable = false;\r\n let selectable = false;\r\n switch (viewType) {\r\n case 'reservation':\r\n readonly =\r\n !canEditReservation(authenticatedUser, {\r\n ServiceId: item.original.EquipmentId ?? 0,\r\n ServiceTypeId: ServiceType.Online,\r\n ServiceGroupId: item.original.ServiceGroupId ?? 0,\r\n UserId: (item.original as ICalendarReservationDto).BookedById,\r\n }) ||\r\n (item.original as ICalendarReservationDto).Restricted === true ||\r\n (item.original as ICalendarReservationDto).TrainingSignUp === true;\r\n notClickable =\r\n !canEditReservation(authenticatedUser, {\r\n ServiceId: item.original.EquipmentId ?? 0,\r\n ServiceTypeId: ServiceType.Online,\r\n ServiceGroupId: item.original.ServiceGroupId ?? 0,\r\n UserId: (item.original as ICalendarReservationDto).BookedById,\r\n }) ||\r\n (item.original as ICalendarReservationDto).Restricted === true;\r\n selectable =\r\n selectedReservationEvents.length > 0 &&\r\n !notClickable &&\r\n !readonly &&\r\n item.original.EquipmentId ===\r\n selectedReservationEvents[0].original.EquipmentId;\r\n break;\r\n case 'offline':\r\n readonly = notClickable = !allowedToViewAlert(authenticatedUser, {\r\n ReportedBy: (item.original as IWorkingHoursDto).BookedById,\r\n ServiceGroupId: (item.original as IWorkingHoursDto).ServiceGroupId,\r\n ServiceId: item.original.EquipmentId ?? 0,\r\n ServiceTypeId: ServiceType.Online,\r\n });\r\n }\r\n\r\n return {\r\n ...item,\r\n readonly: readonly,\r\n notClickable: notClickable,\r\n selectable: selectable,\r\n // disables start event resize on timeline view\r\n _no_resize_end: readonly,\r\n // disabled end event drag on timelene view\r\n _no_resize_start: readonly,\r\n // disables drag on matrix view\r\n _no_drag_move: readonly,\r\n };\r\n });\r\n },\r\n);\r\nexport const selectSchedulerServices = createSelector(\r\n [\r\n selectSchedulerSelectedServices,\r\n selectSchedulerDerivedServices,\r\n selectGlobalServiceGroupFilter,\r\n selectWithReservationsOnly,\r\n\r\n selectMapped,\r\n ],\r\n (\r\n selectedServices,\r\n derivedServices,\r\n serviceGroups,\r\n WithReservationsOnly,\r\n events,\r\n ) => {\r\n // use selectedServices if case a service have been selected\r\n // if no service was selected use the services of reservations returned by the filter\r\n const services =\r\n (selectedServices ?? []).length > 0 ? selectedServices : derivedServices;\r\n\r\n // show only services of the selected top service group filter if it has been applied\r\n const intermediate1 = filterServicesByServiceGroups(\r\n serviceGroups,\r\n services,\r\n );\r\n\r\n // applies WithReservationsOnly filter to the services\r\n const intermediate2 = filterServicesByEvents(\r\n events,\r\n intermediate1,\r\n WithReservationsOnly,\r\n );\r\n\r\n return intermediate2;\r\n },\r\n);\r\nexport const selectSchedulerPreviousViewState = createSelector(\r\n [selectSlice],\r\n state => state.previousViewState,\r\n);\r\nconst instrumentMultipleEnabled = state =>\r\n selectGlobalSetting(state, AllowedSettings.MultipleInstrumentReservations);\r\n\r\nexport const selectMultipleModeState = createSelector(\r\n [\r\n instrumentMultipleEnabled,\r\n selectSelectedSavedView,\r\n selectUserProfileSettings,\r\n ],\r\n (multipleInstrumentsSetting, currentSelected, userProfile) => {\r\n if (\r\n multipleInstrumentsSetting !== undefined &&\r\n MultipleInstrumentReservations[multipleInstrumentsSetting] !==\r\n MultipleInstrumentReservations.NotAllowed\r\n ) {\r\n // todo:\r\n\r\n const instrumentMultipleEnabled =\r\n userProfile.GetSettingValueBy(\r\n (f: { Key: string }) =>\r\n f.Key.toLowerCase() === 'BookMultipleInstruments'.toLowerCase(),\r\n )?.IsMultiple ?? undefined;\r\n if (!!currentSelected) {\r\n return currentSelected.Multiple;\r\n } else if (instrumentMultipleEnabled !== undefined) {\r\n return instrumentMultipleEnabled;\r\n } else {\r\n return (\r\n MultipleInstrumentReservations[multipleInstrumentsSetting] ===\r\n MultipleInstrumentReservations.AllowedDefaultMultiple\r\n );\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n);\r\n\r\nexport const selectSchedulerViewStartDate = createSelector(\r\n [selectSchedulerViewState],\r\n state =>\r\n state === undefined\r\n ? undefined\r\n : getViewStartDate(state.viewLength, state.date, state.customStart),\r\n);\r\nexport const selectDefaultCustomDaysTimelineValue = createSelector(\r\n [selectglobalSettings],\r\n globalSettings => {\r\n const daysString = globalSettings.TryGet('DefaultCustomDaysTimelineValue');\r\n const daysNumber =\r\n daysString === undefined || daysString === null\r\n ? undefined\r\n : parseInt(daysString);\r\n return daysNumber;\r\n },\r\n);\r\n\r\nexport const selectSchedulerViewEndDate = createSelector(\r\n [selectSchedulerViewState, selectDefaultCustomDaysTimelineValue],\r\n (state, customDays) =>\r\n state === undefined\r\n ? undefined\r\n : getViewEndDate(\r\n state.viewLength,\r\n state.date,\r\n state.customDays === undefined ? customDays : state.customDays,\r\n state.customStart,\r\n ),\r\n);\r\nexport const selectSchedulerViewCustomDays = createSelector(\r\n [selectSchedulerViewState],\r\n state => state?.customDays,\r\n);\r\nexport const selectSchedulerViewCustomStart = createSelector(\r\n [selectSchedulerViewState],\r\n state => state?.customStart,\r\n);\r\nexport const selectNotUseLocation = createSelector(\r\n [selectSlice],\r\n state => state.notUseLocation,\r\n);\r\nexport const selectEmptySlotAdminClick = createSelector(\r\n [selectScheduler],\r\n state => state.emptySlotAdminClick,\r\n);\r\nexport const selectSchedulerNewEventServices = createSelector(\r\n [\r\n selectSchedulerViewState,\r\n selectSchedulerTempEvents,\r\n selectSchedulerSelectedServices,\r\n selectSchedulerDerivedServices,\r\n selectIsMobileView,\r\n ],\r\n (\r\n viewState,\r\n tempReservation,\r\n selectedServices,\r\n derivedServices,\r\n isMobileView,\r\n ) => {\r\n // timeline + daily calendar (unit) has separate row/column for each service\r\n // so in this state new event is placed directly on an instrument\r\n const singleServiceEvent =\r\n viewState?.viewType === 'timeline' ||\r\n (viewState?.viewType === 'calendar' &&\r\n viewState.viewLength === 'day' &&\r\n !isMobileView);\r\n\r\n const getSingleServiceEventServices = () => {\r\n // try looking up both directly selected services and services derived from the events shown on the calendar when no service is directly selected\r\n const s =\r\n selectedServices?.find(f => f.Id === tempReservation?.service_id) ??\r\n derivedServices?.find(f => f.Id === tempReservation?.service_id);\r\n if (s === undefined) {\r\n return [];\r\n } else {\r\n return [s];\r\n }\r\n };\r\n const services =\r\n (singleServiceEvent\r\n ? getSingleServiceEventServices()\r\n : selectedServices) ?? [];\r\n\r\n return services;\r\n },\r\n);\r\nexport const selectTwoDaysTimelineButtonEnabled = createSelector(\r\n [selectglobalSettings],\r\n globalSettings => {\r\n return globalSettings.GetBoolean('EnableTwoDaysTimelineButton');\r\n },\r\n);\r\nexport const selectCustomDaysTimelineButtonEnabled = createSelector(\r\n [selectglobalSettings],\r\n globalSettings => {\r\n return globalSettings.GetBoolean('EnableCustomDaysTimelineButton');\r\n },\r\n);\r\n\r\nexport const selectIncludeCustomFormInSchedulerReservationTooltip =\r\n createSelector(\r\n [\r\n (state: RootState) =>\r\n selectGlobalSetting(\r\n state,\r\n AllowedSettings.IncludeCustomFormInSchedulerReservationTooltip,\r\n ),\r\n ],\r\n f => tryParseBool(f),\r\n );\r\n\r\nexport const selectSchedulerReservationBodyTemplate = createSelector(\r\n [\r\n (state: RootState) =>\r\n selectGlobalSetting(\r\n state,\r\n AllowedSettings.SchedulerReservationBodyTemplate,\r\n ),\r\n ],\r\n f => compileHandlebarsTemplate(f),\r\n);\r\n\r\nexport const selectSchedulerReservationTooltipTemplate = createSelector(\r\n [\r\n (state: RootState) =>\r\n selectGlobalSetting(\r\n state,\r\n AllowedSettings.SchedulerReservationTooltipTemplate,\r\n ),\r\n ],\r\n f => compileHandlebarsTemplate(f),\r\n);\r\n\r\nexport const selectCalendarReservationColumns = createSelector(\r\n [\r\n (state: RootState) =>\r\n selectGlobalSetting(\r\n state,\r\n AllowedSettings.SchedulerReservationBodyTemplate,\r\n ),\r\n\r\n (state: RootState) =>\r\n selectGlobalSetting(\r\n state,\r\n AllowedSettings.SchedulerReservationTooltipTemplate,\r\n ),\r\n (state: RootState) =>\r\n selectKnownModule(state, KnownModules.EquipmentAssemblies),\r\n (state: RootState) =>\r\n selectGlobalSetting(state, AllowedSettings.AllowWorkflowBooking),\r\n selectIncludeCustomFormInSchedulerReservationTooltip,\r\n ],\r\n (\r\n schedulerReservationBodyTemplate,\r\n schedulerReservationTooltipTemplate,\r\n equipmentAssemblies,\r\n allowWorkflowBooking,\r\n includeCustomFormInSchedulerReservationTooltip,\r\n ) => {\r\n const pathExtractor = new ExtractPathsVisitor();\r\n pathExtractor.accept(parse(schedulerReservationBodyTemplate));\r\n pathExtractor.accept(parse(schedulerReservationTooltipTemplate));\r\n const reservationHistorySelectArray: Array =\r\n [\r\n 'Id',\r\n 'StartTime',\r\n 'EndTime',\r\n 'EquipmentId',\r\n 'EquipmentName',\r\n 'ServiceGroupId',\r\n 'EquipmentColor',\r\n 'BookedBy',\r\n 'BookedById',\r\n 'StatusId',\r\n 'Tutoring',\r\n 'Restricted',\r\n 'TrainingSignUp',\r\n 'FullDayReservation',\r\n ];\r\n if (equipmentAssemblies) {\r\n reservationHistorySelectArray.push('TopAssemblyReservationId');\r\n }\r\n if (allowWorkflowBooking) {\r\n reservationHistorySelectArray.push('WorkFlowBookingName');\r\n }\r\n if (includeCustomFormInSchedulerReservationTooltip === true) {\r\n reservationHistorySelectArray.push('CustomForm');\r\n }\r\n const p = union(reservationHistorySelectArray, pathExtractor.paths);\r\n return p;\r\n },\r\n);\r\nfunction filterServicesByServiceGroups(\r\n serviceGroups?: Identifiable[],\r\n services?: IServiceFilterDto[],\r\n) {\r\n const serviceGroupIds = (serviceGroups ?? [])?.map(f => f.Id);\r\n return serviceGroupIds.length === 0\r\n ? services\r\n : services?.filter(\r\n service =>\r\n service.ServiceGroupId === undefined ||\r\n serviceGroupIds.includes(service.ServiceGroupId),\r\n );\r\n}\r\n\r\nfunction filterServicesByEvents(\r\n events: Array<{ type: EventType; service_id: number }> | undefined,\r\n services: IServiceFilterDto[] | undefined,\r\n WithReservationsOnly: boolean | undefined,\r\n) {\r\n if (WithReservationsOnly === true) {\r\n const servicesWithEvents = new Set(\r\n events\r\n ?.filter(f => f.type === 'reservation' || f.type === 'trainingsession')\r\n .map(f => f.service_id),\r\n );\r\n\r\n const xx = services?.filter(service => servicesWithEvents.has(service.Id));\r\n return xx;\r\n } else {\r\n return services;\r\n }\r\n}\r\n\r\nexport const selectSchedulerLoadingEvents = createSelector(\r\n [selectSlice],\r\n state => state.loadingEvents,\r\n);\r\n\r\nexport const selectTimelineGroupBy = createSelector(\r\n [selectSchedulerViewState],\r\n state => state?.groupBy,\r\n);\r\n\r\nexport const selectExportToPDF = createSelector(\r\n [selectSlice],\r\n state => state.exportToPDF,\r\n);\r\n","import { ISavedViewDto } from 'api/odata/generated/entities/ISavedViewDto';\r\nimport { AsyncDataState, Entity } from 'types/common';\r\nimport { IResponseType } from 'types/ResponseType';\r\n\r\n/* --- STATE --- */\r\nexport interface SavedViewState {\r\n createState: AsyncDataState;\r\n updateState: AsyncDataState;\r\n processing: boolean;\r\n selectedSavedView?: ISavedViewDto;\r\n savedViewUserName?: string;\r\n SavedViewExtraData?: SavedViewExtraData;\r\n}\r\nexport interface SavedViewSelected {\r\n listId: number | undefined;\r\n ids: string | undefined;\r\n assetIds: string | undefined;\r\n multiple: boolean;\r\n}\r\nexport interface SavedViewResponse extends IResponseType {\r\n Id?: number;\r\n}\r\nexport interface SavedViewDetailsState {\r\n Id: number;\r\n Name: string;\r\n Assets: Entity[];\r\n Shared?: boolean;\r\n Multiple?: boolean;\r\n // SharedTo: Entity | null;\r\n // SharedUsers: Entity[];\r\n // SharedCores: Entity[];\r\n}\r\nexport function ConvertEntityToModel(\r\n entity: ISavedViewDto,\r\n): SavedViewDetailsState | undefined {\r\n if (!entity) {\r\n return undefined;\r\n } else {\r\n return {\r\n Id: entity.Id,\r\n Name: entity.Name,\r\n Assets: entity.Assets,\r\n Shared: entity.Shared,\r\n Multiple: entity.Multiple,\r\n // SharedTo: getSingleSharedTo(entity.SharedTo),\r\n // SharedUsers: entity.SharedUsers,\r\n // SharedCores: entity.SharedCores,\r\n } as SavedViewDetailsState;\r\n }\r\n}\r\nexport function ConvertModelToEntity(\r\n model: SavedViewDetailsState,\r\n original: SavedViewDetailsState | undefined,\r\n): ISavedViewDto {\r\n let entity = {\r\n Id: original?.Id === undefined ? model.Id : original.Id,\r\n Name: model.Name,\r\n Shared: model.Shared,\r\n Multiple: model.Multiple,\r\n Assets: model.Assets,\r\n // SharedTo: model.SharedTo?.Id ?? 0,\r\n // SharedUsers: model.SharedUsers as IUserFilterDto[],\r\n // SharedCores: model.SharedCores as IServiceGroupDto[],\r\n } as ISavedViewDto;\r\n return entity;\r\n}\r\n\r\nexport function GetExtraData(model: ISavedViewDto): SavedViewExtraData {\r\n return {\r\n userName: model.UserNameDisplay,\r\n createdAt: model.CreatedAt,\r\n usages: model.UsageCount,\r\n };\r\n}\r\n\r\nexport interface SavedViewExtraData {\r\n userName: string;\r\n createdAt: Date | null;\r\n usages: number;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, takeLatest, select } from 'redux-saga/effects';\r\nimport { savedViewActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { translations } from 'locales/translations';\r\nimport i18next from 'i18next';\r\nimport {\r\n ConvertModelToEntity,\r\n SavedViewDetailsState,\r\n SavedViewResponse,\r\n} from './types';\r\nimport { savedViewsApi as api, savedViewsApi } from 'api/savedViewsApi';\r\nimport { ISavedViewDto } from 'api/odata/generated/entities/ISavedViewDto';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { SavedViewDetailsProps } from '../Details';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { AxiosError } from 'axios';\r\nimport { Entity } from 'types/common';\r\nimport { initAssetsData } from 'app/components/pickers/MultiSelectPickers/AssetsPicker';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\n\r\nconst loadNew = async (eid?: string): Promise => {\r\n if (!!eid && eid !== '') {\r\n return initAssetsData(eid, true).then(data => {\r\n return {\r\n Id: -1,\r\n Name: '',\r\n Assets: data,\r\n Shared: false,\r\n Multiple: false,\r\n // SharedTo: null,\r\n // SharedUsers: [] as Entity[],\r\n // SharedCores: [] as Entity[],\r\n } as SavedViewDetailsState;\r\n });\r\n } else {\r\n return new Promise(resolve => {\r\n resolve({\r\n Id: -1,\r\n Name: '',\r\n Assets: [] as Entity[],\r\n Shared: false,\r\n Multiple: false,\r\n // SharedTo: null,\r\n // SharedUsers: [] as Entity[],\r\n // SharedCores: [] as Entity[],\r\n } as SavedViewDetailsState);\r\n });\r\n }\r\n};\r\n\r\nfunction* doInitNewDetails(action: PayloadAction) {\r\n try {\r\n const data = yield call(loadNew, action.payload);\r\n yield put(actions.initNewDetails_Success(data));\r\n } catch (error: unknown) {\r\n yield put(actions.initNewDetails_Error(Error));\r\n }\r\n}\r\nfunction* doInitDetails(action: PayloadAction) {\r\n try {\r\n const data = yield call(api.initUpdateData, action.payload);\r\n console.log(data);\r\n yield put(actions.initDetails_Success(data));\r\n } catch (error: unknown) {\r\n yield put(actions.initDetails_Error(Error));\r\n }\r\n}\r\nfunction* doCreate(action: PayloadAction) {\r\n const httpPayload: ISavedViewDto = ConvertModelToEntity(\r\n action.payload,\r\n undefined,\r\n );\r\n try {\r\n let responses: SavedViewResponse[] = [];\r\n const result = yield call(api.createSavedView, httpPayload);\r\n responses.push(result);\r\n\r\n let responseErrors = responses\r\n .filter(err => err.ErrorMessages.length > 0)\r\n .flatMap(f => f.ErrorMessages);\r\n\r\n let responseWarnings = responses\r\n .filter(err => err.WarningMessages.length > 0)\r\n .flatMap(f => f.WarningMessages);\r\n let responseSuccess = responses\r\n .filter(err => err.SuccessMessages.length > 0)\r\n .flatMap(f => f.SuccessMessages);\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: 'savedViewInsert',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: 'savedViewInsert',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (responseSuccess.length > 0) {\r\n let res = responses[0];\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'savedViewInsert',\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: res.Id,\r\n created: true,\r\n itemName: i18next.t(translations.MyInstrumentList),\r\n detailsType: RenderPageType.SavedViewDetails,\r\n detailsTypeProps: {\r\n id: '' + res.Id,\r\n useSidePanel: true,\r\n } as SavedViewDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors =\r\n responses.filter(f => f.ErrorMessages.length > 0).length > 0;\r\n yield put(\r\n actions.createView_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'savedViewInsert',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createView_Error(Error));\r\n }\r\n}\r\nfunction* doUpdate(\r\n action: PayloadAction<{\r\n current: SavedViewDetailsState;\r\n original: SavedViewDetailsState | undefined;\r\n }>,\r\n) {\r\n const httpPayload: ISavedViewDto = ConvertModelToEntity(\r\n action.payload.current,\r\n action.payload.original,\r\n );\r\n // const currentSelected = yield select(selectMyListSelected);\r\n // const userProfileSettings = yield select(selectUserProfileSettings);\r\n // let listViewSelected = currentSelected;\r\n // if (!listViewSelected) {\r\n // let proffSettings = userProfileSettings.GetSettingValueBy(\r\n // f => f.Key.toLowerCase() === 'myListSelected'.toLowerCase(),\r\n // );\r\n // listViewSelected = !!proffSettings\r\n // ? {\r\n // listId:\r\n // proffSettings.Name === null\r\n // ? undefined\r\n // : parseInt(proffSettings.Name),\r\n // ids: proffSettings.Value ?? undefined,\r\n // assetIds: proffSettings.DefaultGroups ?? undefined,\r\n // }\r\n // : undefined;\r\n // }\r\n try {\r\n const results = yield call(api.updateSavedView, httpPayload);\r\n let response = results as SavedViewResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'savedViewUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'savedViewUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'savedViewUpdate',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id,\r\n created: false,\r\n itemName: i18next.t(translations.MyInstrumentList),\r\n detailsType: RenderPageType.SavedViewDetails,\r\n detailsTypeProps: {\r\n id: '' + response.Id,\r\n useSidePanel: true,\r\n } as SavedViewDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n // if (!!listViewSelected && !!listViewSelected.listId) {\r\n // if (listViewSelected.listId === action.payload.original?.Id) {\r\n // yield call(doSelectView, {\r\n // payload: httpPayload,\r\n // type: actions.selectMyList.type,\r\n // });\r\n // }\r\n // }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateView_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'savedViewUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateView_Error(Error));\r\n }\r\n}\r\nfunction* doUpdateViewAssets(\r\n action: PayloadAction<{ assets: Entity[]; view: ISavedViewDto }>,\r\n) {\r\n const newAssets: Entity[] = [];\r\n // const currentSelected = yield select(selectMyListSelected);\r\n // const userProfileSettings = yield select(selectUserProfileSettings);\r\n // let listViewSelected = currentSelected;\r\n // if (!listViewSelected) {\r\n // let proffSettings = userProfileSettings.GetSettingValueBy(\r\n // f => f.Key.toLowerCase() === 'myListSelected'.toLowerCase(),\r\n // );\r\n // listViewSelected = !!proffSettings\r\n // ? {\r\n // listId:\r\n // proffSettings.Name === null\r\n // ? undefined\r\n // : parseInt(proffSettings.Name),\r\n // ids: proffSettings.Value ?? undefined,\r\n // assetIds: proffSettings.DefaultGroups ?? undefined,\r\n // }\r\n // : undefined;\r\n // }\r\n action.payload.assets.forEach(el => {\r\n let a = action.payload.view.Assets.find(a => a.Id === el.Id);\r\n if (a === undefined) {\r\n newAssets.push(el);\r\n }\r\n });\r\n let groupId = (newAssets[0] as IAssetDto).ServiceGroupId;\r\n const shared =\r\n action.payload.view.Shared === true\r\n ? !newAssets.some(f => (f as IAssetDto).ServiceGroupId !== groupId)\r\n : false;\r\n const httpPayload: ISavedViewDto = Object.assign({}, action.payload.view, {\r\n Assets: newAssets.concat(action.payload.view.Assets),\r\n Shared: shared,\r\n });\r\n\r\n try {\r\n const results = yield call(api.updateSavedView, httpPayload);\r\n let response = results as SavedViewResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'savedViewUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'savedViewUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'savedViewUpdate',\r\n message: response.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n // if (!!listViewSelected && !!listViewSelected.listId) {\r\n // if (listViewSelected.listId === action.payload.view.Id) {\r\n // yield call(doSelectView, {\r\n // payload: httpPayload,\r\n // type: actions.selectMyList.type,\r\n // });\r\n // }\r\n // }\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateViewAssets_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'savedViewUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateViewAssets_Error(Error));\r\n }\r\n}\r\nfunction* doSelectSavedView(action: PayloadAction) {\r\n try {\r\n if (action.payload === undefined) {\r\n yield put(actions.selectSavedView_Success());\r\n return;\r\n }\r\n\r\n const x: ISavedViewDto = yield call(\r\n savedViewsApi.initUpdateData,\r\n action.payload,\r\n );\r\n // check if the saved view belongs to current service groups selection\r\n const serviceGroups: Array> | undefined = yield select(\r\n selectGlobalServiceGroupFilter,\r\n );\r\n const serviceGroupIds = serviceGroups?.map(f => f.Id);\r\n const belongsToServiceGroupsSelection =\r\n serviceGroups === undefined ||\r\n serviceGroups?.length === 0 ||\r\n x.Assets.every(\r\n asset => serviceGroupIds?.includes(asset.ServiceGroupId ?? 0) === true,\r\n );\r\n if (belongsToServiceGroupsSelection) {\r\n yield put(actions.selectSavedView_Success(x));\r\n } else {\r\n yield put(actions.selectSavedView_Success());\r\n }\r\n } catch (error) {\r\n yield put(actions.selectSavedView_Success());\r\n }\r\n}\r\nfunction* doPatch(action: PayloadAction>) {\r\n try {\r\n yield call(savedViewsApi.patch, action.payload);\r\n yield put(actions.patch_success(action.payload));\r\n } catch (error) {\r\n //noop\r\n console.log(error);\r\n }\r\n}\r\n\r\nfunction* doUseSavedView(action: PayloadAction) {\r\n try {\r\n const res = yield call(api.useSavedView, action.payload);\r\n if (!res) return;\r\n yield put(actions.useSavedView_success(res.value));\r\n } catch (error) {}\r\n}\r\n\r\nexport function* savedViewSaga() {\r\n yield takeLatest(actions.initNewDetails.type, doInitNewDetails);\r\n yield takeLatest(actions.initDetails.type, doInitDetails);\r\n yield takeLatest(actions.createView.type, doCreate);\r\n yield takeLatest(actions.updateView.type, doUpdate);\r\n yield takeLatest(actions.updateViewAssets.type, doUpdateViewAssets);\r\n yield takeLatest(actions.selectSavedView.type, doSelectSavedView);\r\n yield takeLatest(actions.patch.type, doPatch);\r\n yield takeLatest(actions.useSavedView.type, doUseSavedView);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { ISavedViewDto } from 'api/odata/generated/entities/ISavedViewDto';\r\nimport { Entity } from 'types/common';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { savedViewSaga } from './saga';\r\nimport {\r\n ConvertEntityToModel,\r\n GetExtraData,\r\n SavedViewDetailsState,\r\n SavedViewState,\r\n} from './types';\r\n\r\nexport const initialState: SavedViewState = {\r\n processing: false,\r\n createState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n updateState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'savedView',\r\n initialState,\r\n reducers: {\r\n initNewDetails(state, action: PayloadAction) {\r\n state.processing = true;\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initNewDetails_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = false;\r\n state.createState.data = action.payload;\r\n },\r\n initNewDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n state.createState.data = {\r\n Id: -1,\r\n Name: '',\r\n Assets: [] as Entity[],\r\n Shared: false,\r\n Multiple: false,\r\n // SharedTo: null,\r\n // SharedUsers: [] as Entity[],\r\n // SharedCores: [] as Entity[],\r\n } as SavedViewDetailsState;\r\n },\r\n initDetails(state, action: PayloadAction) {\r\n state.processing = true;\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initDetails_Success(state, action: PayloadAction) {\r\n state.processing = false;\r\n state.updateState.data = ConvertEntityToModel(action.payload);\r\n state.savedViewUserName = action.payload?.UserName;\r\n state.SavedViewExtraData = GetExtraData(action.payload);\r\n },\r\n initDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n createView(state, action: PayloadAction) {\r\n state.createState.processing = true;\r\n state.createState.completed = undefined;\r\n state.createState.hasErrors = undefined;\r\n },\r\n createView_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.createState.processing = false;\r\n state.createState.hasErrors = action.payload.hasErrors;\r\n state.createState.completed = true;\r\n },\r\n createView_Error(state, action: PayloadAction) {\r\n state.createState.processing = false;\r\n state.createState.completed = true;\r\n state.createState.hasErrors = true;\r\n },\r\n updateView(\r\n state,\r\n action: PayloadAction<{\r\n current: SavedViewDetailsState;\r\n original: SavedViewDetailsState | undefined;\r\n }>,\r\n ) {\r\n state.updateState.processing = true;\r\n state.updateState.completed = undefined;\r\n state.updateState.hasErrors = undefined;\r\n },\r\n updateView_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.updateState.processing = false;\r\n state.updateState.hasErrors = action.payload.hasErrors;\r\n state.updateState.completed = true;\r\n },\r\n updateView_Error(state, action: PayloadAction) {\r\n state.updateState.processing = false;\r\n state.updateState.completed = true;\r\n state.updateState.hasErrors = true;\r\n },\r\n updateViewAssets(\r\n state,\r\n action: PayloadAction<{ assets: Entity[]; view: ISavedViewDto }>,\r\n ) {\r\n state.updateState.processing = true;\r\n state.updateState.completed = undefined;\r\n state.updateState.hasErrors = undefined;\r\n },\r\n updateViewAssets_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.updateState.processing = false;\r\n state.updateState.hasErrors = action.payload.hasErrors;\r\n state.updateState.completed = true;\r\n },\r\n updateViewAssets_Error(state, action: PayloadAction) {\r\n state.updateState.processing = false;\r\n state.updateState.completed = true;\r\n state.updateState.hasErrors = true;\r\n },\r\n resetCreateSavedViewState(state, action: PayloadAction) {\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n resetUpdateSavedViewState(state, action: PayloadAction) {\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n selectMyList(state, action: PayloadAction) {},\r\n\r\n selectSavedView(state, action: PayloadAction) {\r\n state.selectedSavedView = undefined;\r\n },\r\n selectSavedView_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.selectedSavedView = action.payload;\r\n },\r\n selectSavedView_Error(state, action: PayloadAction) {\r\n state.selectedSavedView = undefined;\r\n },\r\n patch(state, action: PayloadAction>) {},\r\n patch_success(state, action: PayloadAction>) {\r\n state.selectedSavedView = Object.assign(\r\n state.selectedSavedView,\r\n action.payload,\r\n );\r\n },\r\n useSavedView(state, action: PayloadAction) {},\r\n useSavedView_success(state, action: PayloadAction) {\r\n if (state.SavedViewExtraData?.usages !== undefined) {\r\n state.SavedViewExtraData.usages = action.payload;\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: savedViewActions } = slice;\r\n\r\nexport const useSavedViewSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: savedViewSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useSavedViewSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { Collapse } from '@material-ui/core';\r\nimport { Alert } from '@material-ui/lab';\r\nimport * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { Caption } from '../Typography';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport clsx from 'clsx';\r\n\r\nexport type AlertVariant = 'success' | 'info' | 'warning' | 'error';\r\nexport type AlertContentType = {\r\n message?: string;\r\n type: AlertVariant;\r\n closable: boolean;\r\n children?: React.ReactNode;\r\n variant?: 'outlined' | 'filled' | 'standard';\r\n};\r\n\r\nexport interface BasicAlertProps {\r\n content: AlertContentType;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n className?: string;\r\n showMore?: boolean;\r\n collapsedMinHeight?: number;\r\n onClose?: (event: React.SyntheticEvent) => void;\r\n}\r\n\r\nconst MessageText = styled.div`\r\n ${(props: { showMore: boolean; minHeight: number }) => {\r\n return css`\r\n display: block;\r\n overflow: ${props.showMore ? 'auto' : 'hidden'};\r\n text-overflow: ellipsis;\r\n white-space: normal;\r\n word-wrap: normal;\r\n -webkit-box-orient: horizontal;\r\n max-height: ${props.showMore ? '300px' : props.minHeight + 'px'};\r\n `;\r\n }}\r\n`;\r\nconst defaultIconMapping = {\r\n success: ,\r\n warning: (\r\n \r\n ),\r\n error: (\r\n \r\n ),\r\n info: (\r\n \r\n ),\r\n};\r\nexport function BasicAlert(props: BasicAlertProps) {\r\n const { content, variant, className, showMore, collapsedMinHeight, onClose } =\r\n props;\r\n const [isShowMore, setIsShowMore] = React.useState(false);\r\n const toggleReadMore = () => setIsShowMore(show => !show);\r\n const [open, setOpen] = React.useState(true);\r\n return (\r\n \r\n \r\n {content.closable && (\r\n {\r\n setOpen(false);\r\n }}\r\n >\r\n \r\n \r\n )}\r\n {showMore && (\r\n {\r\n toggleReadMore();\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n }\r\n >\r\n {showMore ? (\r\n \r\n {!!content.message && {content.message}}\r\n {!!content.children && (\r\n {content.children}\r\n )}\r\n \r\n ) : (\r\n \r\n {!!content.message && {content.message}}\r\n {!!content.children && (\r\n {content.children}\r\n )}\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","import { Entity } from 'types/common';\r\n\r\nexport enum MessageTypeEnum {\r\n Announcment,\r\n reservationStarted,\r\n usageReservation,\r\n loadDesk,\r\n removableAnnouncment,\r\n calendar,\r\n}\r\nexport interface ClosableMessageProps {\r\n close: () => void;\r\n}\r\nexport interface StartedReservation {\r\n Id: number;\r\n Asset: Entity;\r\n AllowModification: boolean;\r\n AllowExtendReservation: boolean;\r\n AllowUsersToShortenReservations: boolean;\r\n Tutoring: boolean;\r\n AllUsagesEnded: boolean;\r\n}\r\n\r\nexport interface LoanDesk {\r\n Id: number;\r\n AssetDetails: Entity;\r\n}\r\n\r\nexport interface UsageReservation extends Entity {}\r\n\r\nexport interface CalendarMessageProps {\r\n Id: number;\r\n ServiceGroupId: number | null;\r\n EquipmentId: number | null;\r\n Title: string | null;\r\n Body: string | null;\r\n StartDate: Date | null;\r\n EndDate: Date | null;\r\n DisplaySeconds: number | null;\r\n}\r\n\r\ntype MessageProps =\r\n | StartedReservation\r\n | UsageReservation\r\n | LoanDesk\r\n | string\r\n | CalendarMessageProps;\r\n\r\nexport interface Message {\r\n type: MessageTypeEnum;\r\n props?: MessageProps;\r\n key: string;\r\n}\r\n\r\nexport interface MessagesState {\r\n messages: Message[];\r\n initialized: number;\r\n processing?: boolean;\r\n}\r\n\r\nexport const getDuration = (entity: MessageProps | undefined) => {\r\n const displaySeconds = entity?.['DisplaySeconds'];\r\n if (typeof displaySeconds !== 'number' || !displaySeconds) return null;\r\n return displaySeconds * 1000;\r\n};\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { BasicCheckBox, BasicCheckBoxProps } from '../BasicCheckBox';\r\n\r\nexport interface FormCheckboxProps extends BasicCheckBoxProps {\r\n label?: string;\r\n helperText?: string;\r\n}\r\nexport const FormCheckbox = ({\r\n label,\r\n onChange,\r\n onBlur,\r\n value,\r\n name,\r\n color,\r\n helperText,\r\n required,\r\n fullWidth,\r\n ...props\r\n}: FormCheckboxProps & FieldHookConfig & IFieldProps) => {\r\n const [field, meta] = useField({ name, ...props });\r\n const handleChange = (value, event) => {\r\n if (onChange !== undefined) {\r\n onChange(value, event);\r\n }\r\n field.onChange(event);\r\n };\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n","import {\r\n Chip,\r\n ChipProps,\r\n darken,\r\n fade,\r\n Theme,\r\n withStyles,\r\n} from '@material-ui/core';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { WithStylesOptions } from '@material-ui/styles';\r\nimport { inputLabelM, inputLabelXS } from 'styles/typography/bookitTypography';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { Check } from '../BasicInputs/Check';\r\n\r\nexport interface BookitChipProps extends ChipProps {\r\n customcolor?: string;\r\n custombgcolor?: string;\r\n customiconcolor?: string;\r\n fullwidth?: boolean;\r\n customwidth?: number | string;\r\n shape?: 'squar' | 'circle';\r\n customsize?: 'xs' | 'small' | 'medium';\r\n notremoved?: boolean;\r\n}\r\nexport interface BookitChipWithInfoProps extends BookitChipProps {\r\n info?: React.ReactNode;\r\n}\r\nconst StyledChip = withStyles<\r\n | 'root'\r\n | 'disabled'\r\n | 'label'\r\n | 'labelSmall'\r\n | 'clickable'\r\n | 'sizeSmall'\r\n | 'deleteIcon',\r\n WithStylesOptions,\r\n {\r\n shape?: 'squar' | 'circle';\r\n custombgcolor?: string;\r\n customsize?: 'xs' | 'small' | 'medium';\r\n customcolor?: string;\r\n customiconcolor?: string;\r\n fullwidth?: boolean;\r\n customwidth?: number | string;\r\n notremoved?: boolean;\r\n size?: 'small' | 'medium';\r\n disabled?: boolean;\r\n }\r\n>((theme: Theme) => ({\r\n root: {\r\n justifyContent: 'space-around',\r\n borderRadius: props =>\r\n props.shape === 'squar' ? 4 : props.shape === 'circle' ? 50 : 4,\r\n backgroundColor: props => props.custombgcolor ?? theme.palette.primary.main,\r\n height: props =>\r\n props.customsize === 'xs'\r\n ? 20\r\n : props.customsize === 'small'\r\n ? 24\r\n : props.customsize === 'medium'\r\n ? 32\r\n : 24,\r\n color: props => props.customcolor ?? theme.palette.common.white,\r\n gap: 4,\r\n paddingInline: props =>\r\n props.customsize === 'xs'\r\n ? '4px'\r\n : props.customsize === 'small'\r\n ? '6px'\r\n : props.customsize === 'medium'\r\n ? '8px'\r\n : '4px',\r\n '&$disabled': {\r\n opacity: 1,\r\n backgroundColor: theme.palette.common.grayComponents,\r\n color: theme.palette.common.white,\r\n pointerEvents: 'visible',\r\n },\r\n '&:hover, &:focus': {\r\n backgroundColor: props =>\r\n props.custombgcolor === undefined\r\n ? theme.palette.primary.dark\r\n : darken(props.custombgcolor, 0.2),\r\n color: props =>\r\n props.customcolor === undefined\r\n ? theme.palette.common.white\r\n : props.customcolor,\r\n },\r\n width: props =>\r\n props.fullwidth\r\n ? '100%'\r\n : props.customwidth\r\n ? props.customwidth\r\n : undefined,\r\n maxWidth: props => (props.notremoved ? '100%' : 'calc(100% - 6px)'),\r\n },\r\n disabled: {\r\n backgroundColor: theme.palette.common.grayComponents,\r\n color: theme.palette.common.white,\r\n },\r\n label: inputLabelM,\r\n labelSmall: inputLabelXS,\r\n clickable: {\r\n backgroundColor: props => props.custombgcolor ?? theme.palette.primary.main,\r\n color: props => props.customcolor ?? theme.palette.common.white,\r\n },\r\n sizeSmall: {\r\n height: 20,\r\n },\r\n deleteIcon: {\r\n color: props =>\r\n props.customiconcolor === undefined\r\n ? theme.palette.primary.contrastText\r\n : props.customiconcolor,\r\n height: 16,\r\n width: 16,\r\n margin: props =>\r\n props.size === 'small' ? '0 4px 0 -4px' : '0 12px 0 -12px',\r\n display: props => (props.notremoved ? 'none' : 'inline-block'),\r\n '&:hover': {\r\n color: props =>\r\n props.customiconcolor === undefined\r\n ? fade(theme.palette.primary.contrastText, 0.8)\r\n : fade(props.customiconcolor, 0.8),\r\n },\r\n pointerEvents: props => (props.disabled ? 'none' : 'auto'),\r\n },\r\n}))(Chip);\r\n\r\nexport const BookitChip = (props: BookitChipProps) => {\r\n const {\r\n deleteIcon,\r\n notremoved,\r\n fullwidth,\r\n disabled,\r\n customcolor,\r\n custombgcolor,\r\n customiconcolor,\r\n customwidth,\r\n shape,\r\n customsize,\r\n icon,\r\n ...other\r\n } = props;\r\n return (\r\n \r\n )\r\n }\r\n onDelete={event => {\r\n notremoved\r\n ? event.preventDefault()\r\n : !!props.onDelete && props.onDelete(event);\r\n }}\r\n fullwidth={fullwidth}\r\n custombgcolor={custombgcolor}\r\n customiconcolor={customiconcolor}\r\n shape={shape}\r\n customsize={customsize}\r\n customwidth={customwidth}\r\n customcolor={customcolor}\r\n disabled={disabled}\r\n notremoved={notremoved}\r\n icon={icon}\r\n {...other}\r\n />\r\n );\r\n};\r\nexport interface BookitChipWithCheckProps extends BookitChipProps {\r\n onChange?: (event: React.ChangeEvent) => void;\r\n color?: 'primary' | 'secondary' | 'default';\r\n checked?: boolean;\r\n checkid?: string;\r\n checkname?: string;\r\n label?: string;\r\n info?: string;\r\n}\r\nexport const BookitChipWithCheck = (props: BookitChipWithCheckProps) => {\r\n return (\r\n \r\n }\r\n label={props.label}\r\n fullwidth={props.fullwidth}\r\n info={props.info}\r\n notremoved={props.notremoved}\r\n custombgcolor={props.custombgcolor}\r\n customcolor={props.customcolor}\r\n customiconcolor={props.customiconcolor}\r\n customsize={props.customsize}\r\n customwidth={props.customwidth}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\nexport const BookitChipWithInfo = (props: BookitChipWithInfoProps) => {\r\n const {\r\n info,\r\n fullwidth,\r\n customcolor,\r\n custombgcolor,\r\n customiconcolor,\r\n customwidth,\r\n shape,\r\n customsize,\r\n notremoved,\r\n ...other\r\n } = props;\r\n return info ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n }\r\n fullwidth={fullwidth}\r\n customcolor={customcolor}\r\n custombgcolor={custombgcolor}\r\n customiconcolor={customiconcolor}\r\n customwidth={customwidth}\r\n shape={shape}\r\n customsize={customsize}\r\n notremoved={notremoved}\r\n {...other}\r\n />\r\n );\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => {\r\n return state.InvoiceDetails || initialState;\r\n};\r\n\r\nexport const selectLoading = createSelector(\r\n [selectSlice],\r\n state => state.loading,\r\n);\r\nexport const selectNotFound = createSelector(\r\n [selectSlice],\r\n state => state.notFound,\r\n);\r\nexport const selectActiveFilters = createSelector(\r\n [selectSlice],\r\n state => state.filters,\r\n);\r\nexport const selectInvoice = createSelector(\r\n [selectSlice],\r\n state => state.invoice,\r\n);\r\n","import styled from 'styled-components';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n MenuList,\r\n MenuListProps,\r\n Paper,\r\n PaperProps,\r\n Theme,\r\n} from '@material-ui/core';\r\nimport React from 'react';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport const StyledFiltersContainer = styled.div<{ theme: Theme }>`\r\n &.filters-container {\r\n max-height: ${props => props.theme.spacing(54)}px;\r\n height: auto;\r\n overflow-y: auto;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n padding: 0;\r\n gap: 12px;\r\n width: 100%;\r\n\r\n &.horizontal {\r\n max-height: ${props => props.theme.spacing(21)};\r\n height: calc(100% - 48px);\r\n }\r\n\r\n &.mobileRoot {\r\n justify-content: flex-start;\r\n max-height: 100%;\r\n height: 100%;\r\n gap: 0px;\r\n & > :not(:last-child) {\r\n //margin-right: ${props => props.theme.spacing(1.5)}px;\r\n\r\n margin-bottom: ${props => props.theme.spacing(1.5)}px;\r\n }\r\n }\r\n\r\n &.mobileHorizontalRoot {\r\n justify-content: flex-start;\r\n max-height: 100%;\r\n height: 100%;\r\n gap: 0px;\r\n & > :not(:last-child) {\r\n //margin-right: ${props => props.theme.spacing(1.5)}px;\r\n\r\n margin-bottom: ${props => props.theme.spacing(1.5)}px;\r\n }\r\n }\r\n }\r\n`;\r\nexport const ButtonsContainer = styled.div`\r\n &.buttons-container {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 8px 0px 0px;\r\n width: 100%;\r\n gap: 8px;\r\n }\r\n`;\r\nconst StyledFilterBoxRoot = styled.div`\r\n &.filter-box-root {\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: nowrap;\r\n flex-direction: row;\r\n gap: 8px;\r\n position: relative;\r\n\r\n &.filter-box-mobile {\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n width: inherit;\r\n gap: 0px;\r\n & > :not(:last-child) {\r\n margin-right: 8px;\r\n margin-bottom: 8px;\r\n }\r\n }\r\n &.filter-box-mobile-horizontal {\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n width: inherit;\r\n gap: 0px;\r\n & > :not(:last-child) {\r\n margin-right: 8px;\r\n\r\n //margin-bottom: 8px;\r\n }\r\n }\r\n &.horizontal {\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n }\r\n & .filter-box-header {\r\n display: flex;\r\n align-items: center;\r\n gap: 0px;\r\n width: 100%;\r\n\r\n // & > :not(:last-child) {\r\n // margin-right: 16px;\r\n // }\r\n & .filter-box-header-text {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 20ch;\r\n color: initial;\r\n flex-shrink: 0;\r\n margin-right: auto;\r\n &.filter-box-header-text-open {\r\n color: ${bookitColors.primary.regular};\r\n }\r\n }\r\n }\r\n & .filter-box-content {\r\n display: flex;\r\n align-items: center;\r\n gap: 0px;\r\n width: 100%;\r\n\r\n & > :not(:last-child) {\r\n margin-right: 16px;\r\n }\r\n }\r\n & .saved-list-label-mobile {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 10ch;\r\n }\r\n & .saved-list-content {\r\n max-width: 400px;\r\n min-width: 300px;\r\n width: 100%;\r\n }\r\n & .filter-label {\r\n flex-shrink: 0;\r\n color: initial;\r\n &.filter-label-open {\r\n color: ${bookitColors.primary.regular};\r\n }\r\n }\r\n & .filter-box-component {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n justify-content: flex-start;\r\n }\r\n }\r\n`;\r\nexport const FilterBoxRoot = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes\r\n>(function FilterBoxRoot(props, ref) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\nexport const AddFilterBoxRoot = styled.div`\r\n &.add-filter-box-root {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0;\r\n gap: 8px;\r\n\r\n &.add-filter-box-mobile {\r\n flex-direction: column;\r\n align-items: flex-start;\r\n }\r\n }\r\n`;\r\nexport const StyledMenuList = styled(\r\n ({\r\n children,\r\n ...other\r\n }: {\r\n children: React.ReactNode;\r\n } & MenuListProps) => {children},\r\n)`\r\n &.add-filter-select {\r\n margin-top: 16px;\r\n box-shadow: inset 0px 1px 0px #e0e5ec;\r\n overflow: auto;\r\n max-height: 385px;\r\n\r\n &.mobHorizontal {\r\n max-height: calc(100% - 96px);\r\n }\r\n &.mobVertical {\r\n max-height: calc(100% - 96px);\r\n }\r\n }\r\n`;\r\nexport const FilterRoot = styled.div`\r\n&.filter-root {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n padding: 0;\r\n gap: 16px;\r\n height: 100%;\r\n overflow: hidden;\r\n max-width: 700px;\r\n height: 100%;\r\n`;\r\nexport const StyledPaper = styled(\r\n ({\r\n children,\r\n ...other\r\n }: {\r\n children: React.ReactNode;\r\n } & PaperProps) => {children},\r\n)`\r\n border-top-left-radius: 8px;\r\n border-top-right-radius: 8px;\r\n margin: 0;\r\n`;\r\n// export const StyledDialog = styled(Dialog)<{ compact?: boolean }>`\r\n// align-items: ${props => (props.compact ? 'flex-start' : 'center')};\r\n// justify-content: ${props => (props.compact ? 'flex-end' : 'center')};\r\n// padding-top: ${props => (props.compact ? '0' : '40px')};\r\n// `;\r\nexport const StyledDialog = styled(({ compact, ...rest }) => (\r\n \r\n))`\r\n /* Your styles here */\r\n align-items: center;\r\n justify-content: center;\r\n padding-top: 40px;\r\n ${props =>\r\n props.compact &&\r\n `\r\n align-items: flex-start;\r\n justify-content: flex-end;\r\n padding-top: 0px;\r\n `}\r\n`;\r\n\r\nexport const StyledDialogTitle = styled(DialogTitle)`\r\n position: relative;\r\n`;\r\n\r\nexport const StyledIconButton = styled(IconButton)`\r\n position: absolute;\r\n right: 4px;\r\n top: 4px;\r\n`;\r\n\r\n// export const StyledDialogContent = styled(DialogContent)<{ isMobile: boolean }>`\r\n// overflow: ${props => (props.isMobile ? 'hidden' : 'visible')};\r\n// padding: ${props => (props.isMobile ? '8px 16px' : 'unset')};\r\n// `;\r\nexport const StyledDialogContent = styled(({ isMobile, ...rest }) => (\r\n \r\n))`\r\n /* Your styles here */\r\n ${props =>\r\n props.compact &&\r\n `\r\n overflow: hidden;\r\n padding: 8px 16px;\r\n `}\r\n`;\r\nexport const StyledContentWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n height: 100%;\r\n width: 100%;\r\n`;\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.savedView || initialState;\r\n\r\nexport const selectSavedView = createSelector([selectSlice], state => state);\r\n\r\nexport const selectSavedViewProcessing = createSelector(\r\n [selectSavedView],\r\n state => state.processing,\r\n);\r\nexport const selectCreateSavedViewProcessing = createSelector(\r\n [selectSavedView],\r\n state => state.createState.processing,\r\n);\r\nexport const selectUpdateSavedViewProcessing = createSelector(\r\n [selectSavedView],\r\n state => state.updateState.processing,\r\n);\r\nexport const selectCreateSavedView = createSelector(\r\n [selectSavedView],\r\n state => state.createState.data,\r\n);\r\nexport const selectUpdateSavedView = createSelector(\r\n [selectSavedView],\r\n state => state.updateState.data,\r\n);\r\nexport const selectUpdateUserName = createSelector(\r\n [selectSavedView],\r\n state => state.savedViewUserName,\r\n);\r\nexport const selectExtraData = createSelector(\r\n [selectSavedView],\r\n state => state.SavedViewExtraData,\r\n);\r\nexport const selectCreateSavedViewCompleted = createSelector(\r\n [selectSavedView],\r\n state => state.createState.completed,\r\n);\r\nexport const selectUpdateSavedViewCompleted = createSelector(\r\n [selectSavedView],\r\n state => state.updateState.completed,\r\n);\r\nexport const selectCreateSavedViewHasError = createSelector(\r\n [selectSavedView],\r\n state => state.createState.hasErrors,\r\n);\r\nexport const selectUpdateSavedViewHasError = createSelector(\r\n [selectSavedView],\r\n state => state.updateState.hasErrors,\r\n);\r\nexport const selectSelectedSavedView = createSelector(\r\n [selectSavedView],\r\n state => state.selectedSavedView,\r\n);\r\n","/**\r\n *\r\n * ExtraDDLFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { ExtraDDLPicker } from 'app/components/pickers/AutocompletePickers/ExtraddlPicker';\r\n\r\nexport const ExtraDDLFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\nexport default ExtraDDLFilter;\r\n","/**\r\n * Bookit.Data.CatRate.CatRateTypes\r\n */\r\nexport enum CatRateTypes {\r\n Usage = 1,\r\n\r\n FixedUsage = 2,\r\n\r\n Reservation = 3,\r\n\r\n FixedReservation = 4,\r\n\r\n TutoringUsage = 5,\r\n\r\n FixedTutoringUsage = 6,\r\n\r\n TutoringReservation = 7,\r\n\r\n FixedTutoringReservation = 8,\r\n\r\n ReservationCancelation = 9,\r\n\r\n OfflineService = 10,\r\n\r\n ServiceRequestLine = 11,\r\n\r\n ServiceRequest = 12,\r\n\r\n Other = 13,\r\n\r\n UsageExceededReservation = 16,\r\n\r\n /// \r\n /// This Fee Type is used for display purposes in the invoice rows to differentiate offlin services from service requests\r\n /// \r\n\r\n ServiceRequestServices = 17,\r\n /// \r\n /// This Fee Type is used for setup Milistones Requests in the Price Sheet screen\r\n /// \r\n\r\n ServiceRequestMilestones = 18,\r\n\r\n TrainingSessions = 19,\r\n\r\n FixedTrainingSessions = 20,\r\n\r\n Subscription = 21,\r\n\r\n PartialReservationCancellation = 22,\r\n\r\n Refund = 23,\r\n System = 24,\r\n Discount = 25,\r\n}\r\n","import styled from 'styled-components';\r\nimport {\r\n CircularProgress,\r\n ListItemIcon,\r\n ListItemText,\r\n Menu,\r\n MenuItem,\r\n MenuItemProps,\r\n} from '@material-ui/core';\r\nimport { IconProp } from 'app/AllIcons';\r\nimport { TFunctionResult } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport {\r\n bindMenu,\r\n usePopupState,\r\n bindTrigger,\r\n} from 'material-ui-popup-state/hooks';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { PluginHook } from 'react-table';\r\nimport { IPathAndQuery, toRootedURL } from 'utils/url-utils';\r\nimport { IRow } from '.';\r\nimport { RouterLink } from '../BasicLinks/RouterLink';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { Tooltip } from '../BasicTooltips/Tooltip';\r\nimport { CellRenderer } from './BasicTableProps';\r\nimport { ButtonsVariant } from '../BasicButtons/Button';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\n\r\nexport interface RowActionsProps {\r\n href?: string | IPathAndQuery;\r\n to?: string;\r\n text: string;\r\n icon: IconProp;\r\n title?: string;\r\n target?: string;\r\n renderAsTitle?: boolean;\r\n onClick?: () => Promise;\r\n withLoading?: boolean;\r\n}\r\nexport interface RowActionsMenuProps {\r\n id: string;\r\n items: RowActionsProps[];\r\n icon?: IconProp;\r\n tooltip?: React.ReactNode | TFunctionResult;\r\n variant?: ButtonsVariant;\r\n onClick?: (event: React.MouseEvent) => void;\r\n getIsOpen?: () => boolean;\r\n}\r\n\r\nconst StyledItemIcon = styled(ListItemIcon)`\r\n min-width: unset;\r\n min-height: unset;\r\n`;\r\nconst ActionsRoot = styled.div`\r\n &.actions-wrapper {\r\n display: inline-flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\nconst RowMenuActions = React.forwardRef(\r\n function RowMenuActions(\r\n { id, items, variant, icon, tooltip, ...props },\r\n ref,\r\n ) {\r\n const { t } = useTranslation();\r\n\r\n const popupState = usePopupState({\r\n variant: 'popper',\r\n popupId: id,\r\n });\r\n\r\n const { onClick, ...popupProps } = {\r\n ...bindTrigger(popupState),\r\n };\r\n const handleClick = event => {\r\n onClick(event);\r\n props.onClick?.(event);\r\n };\r\n\r\n return (\r\n // TODO: ActionsRoot gets out of alignment in ListItemSecondaryAction. why is it needed here?\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {items.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nexport interface RowActionMenuItemProps\r\n extends Pick {\r\n item: RowActionsProps;\r\n}\r\nexport const RowActionMenuItem = React.forwardRef<\r\n HTMLLIElement,\r\n RowActionMenuItemProps\r\n>(function RowActionMenuItem(\r\n { item, onClick, ...props }: RowActionMenuItemProps,\r\n ref,\r\n) {\r\n const toAbsolutePath = (href: string | IPathAndQuery) => {\r\n return typeof href === 'string'\r\n ? toRootedURL(href)\r\n : toRootedURL(\r\n (href as IPathAndQuery).path,\r\n (href as IPathAndQuery).search,\r\n );\r\n };\r\n const [loading, setLoading] = React.useState(false);\r\n const setProcessing = React.useCallback(\r\n (processing: boolean) => {\r\n if (!item.withLoading) return;\r\n setLoading(processing);\r\n },\r\n [item.withLoading],\r\n );\r\n return item.renderAsTitle ? (\r\n \r\n {item.text}\r\n \r\n ) : item.href ? (\r\n {\r\n if (item.href !== undefined) {\r\n let url = toAbsolutePath(item.href);\r\n window.open(url, '_blank');\r\n }\r\n onClick?.(e);\r\n }}\r\n >\r\n \r\n \r\n \r\n {item.text}\r\n \r\n ) : item.to ? (\r\n \r\n \r\n \r\n \r\n {item.text}\r\n \r\n ) : (\r\n {\r\n if (!item.withLoading) onClick?.(e);\r\n if (item.onClick) {\r\n setProcessing(true);\r\n await item.onClick();\r\n setProcessing(false);\r\n if (item.withLoading) onClick?.(e);\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n {item.text}\r\n {loading && }\r\n \r\n );\r\n});\r\nexport function RowActionsMenu(props: RowActionsMenuProps) {\r\n return ;\r\n}\r\nexport function useRowActionsColumn(\r\n rowActions: CellRenderer[] | undefined,\r\n tablePlugins: PluginHook[],\r\n) {\r\n const { t } = useTranslation();\r\n if (rowActions !== undefined) {\r\n if (rowActions.length > 0) {\r\n const actionColumns = rowActions?.map((column, index) => ({\r\n id: `ActionColumn_${index}`,\r\n Header: t(translations.Action),\r\n disableSortBy: true,\r\n Cell: column,\r\n }));\r\n tablePlugins.push(hooks => {\r\n hooks.visibleColumns.push(columns => [...columns, ...actionColumns]);\r\n });\r\n }\r\n }\r\n}\r\nexport function useInlineRowActionsColumn(\r\n inlineRowActions: CellRenderer[] | undefined,\r\n tablePlugins: PluginHook[],\r\n) {\r\n const { t } = useTranslation();\r\n if (inlineRowActions !== undefined) {\r\n if (inlineRowActions.length > 0) {\r\n const actionColumns = inlineRowActions?.map((column, index) => ({\r\n id: `InlineActionColumn_${index}`,\r\n Header: t(translations.Action),\r\n disableSortBy: true,\r\n Cell: column,\r\n }));\r\n tablePlugins.push(hooks => {\r\n hooks.visibleColumns.push(columns => [...columns, ...actionColumns]);\r\n });\r\n }\r\n }\r\n}\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Identifiable } from 'types/common';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { IServiceGroupDto } from 'api/odata/generated/entities/IServiceGroupDto';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\n\r\nexport type GroupUrl =\r\n | 'base'\r\n | 'admin'\r\n | 'regpublic'\r\n | 'public'\r\n | 'billableAdminUrl';\r\n\r\nexport interface ServiceGroupPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType: GroupUrl;\r\n useGlobalFilter?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/servicegroups';\r\nconst adminUrl = '/api/odata/v4/servicegroups/GetAdminServiceGroups';\r\nconst publicUrl = '/api/odata/v4/servicegroups/GetPublicServiceGroups';\r\nconst regPublicUrl = '/api/odata/v4/servicegroups/GetRegistrationServiceGroups';\r\nconst billableAdminUrl =\r\n '/api/odata/v4/servicegroups/GetBillableAdminServiceGroups';\r\n\r\nexport const initServiceGroupsData = (\r\n initval: string | undefined,\r\n urlType: GroupUrl | undefined,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IServiceGroupDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,DivisionId,DivisionName',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n urlType === undefined\r\n ? url\r\n : urlType === 'public'\r\n ? publicUrl\r\n : urlType === 'regpublic'\r\n ? regPublicUrl\r\n : urlType === 'admin'\r\n ? adminUrl\r\n : urlType === 'billableAdminUrl'\r\n ? billableAdminUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as IServiceGroupDto[]);\r\n }\r\n};\r\n\r\nexport function ServiceGroupPicker(props: ServiceGroupPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const urlt =\r\n props.urlType === 'public'\r\n ? publicUrl\r\n : props.urlType === 'regpublic'\r\n ? regPublicUrl\r\n : props.urlType === 'admin'\r\n ? adminUrl\r\n : props.urlType === 'billableAdminUrl'\r\n ? billableAdminUrl\r\n : url;\r\n let filters: (string | Condition)[] = [];\r\n if (urlt === url) {\r\n if (!!props.predicates && props.predicates.length > 0) {\r\n filters = [...props.predicates, ...['Active eq true']];\r\n } else {\r\n filters = ['Active eq true'];\r\n }\r\n }\r\n const loadData = getAutoCompleteLoadDataFn({\r\n url:\r\n props.urlType === 'public'\r\n ? publicUrl\r\n : props.urlType === 'regpublic'\r\n ? regPublicUrl\r\n : props.urlType === 'admin'\r\n ? adminUrl\r\n : props.urlType === 'billableAdminUrl'\r\n ? billableAdminUrl\r\n : url,\r\n select: ['Id', 'Name', 'DivisionId', 'DivisionName'],\r\n predicates: filters,\r\n globalServiceGroupFilter:\r\n props.useGlobalFilter &&\r\n !!globalServiceGroupFilter &&\r\n globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const ServiceGroupByDivisionFilter = (value: FilterValueType) => {\r\n if (value !== undefined && value !== null) {\r\n return [\r\n `${new Condition(\r\n 'DivisionId',\r\n ODataOperators.Equals,\r\n (value as Identifiable).Id,\r\n ).toString()}`,\r\n ];\r\n }\r\n return [];\r\n};\r\n\r\nexport const serviceGroupFilterUrl = url;\r\n","import { Roles } from 'api/odata/generated/enums/Roles';\r\n\r\nexport const allowedroles = [\r\n Roles.Administrators,\r\n Roles.InstrumentEventsAdmin,\r\n Roles.GroupAdministrators,\r\n Roles.LabTech,\r\n];\r\n","import * as React from 'react';\r\nimport { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { intersection } from 'lodash';\r\nimport { useSelector } from 'react-redux';\r\nimport { allowedroles } from './allowedroles';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\n\r\nexport function useWorkOrdersPermissions() {\r\n const user = useSelector(selectAuthenticatedUser);\r\n const roles: number[] | undefined = user?.Roles;\r\n\r\n const callback = React.useCallback(\r\n (row: IAlertPermissionCheckRecord): boolean =>\r\n allowedToViewAlert(user, row),\r\n [user],\r\n );\r\n\r\n const hasPermissions: boolean = intersection(roles, allowedroles).length > 0;\r\n const isMainOrInstrumentEventsAdmin: boolean =\r\n (user?.Roles.includes(Roles.Administrators) ?? false) ||\r\n (user?.Roles.includes(Roles.InstrumentEventsAdmin) ?? false);\r\n return {\r\n hasPermissions,\r\n allowedToView: callback,\r\n isMainOrInstrumentEventsAdmin,\r\n };\r\n}\r\n\r\nexport type IAlertPermissionCheckRecord = Pick<\r\n IWorkOrderDetailsDto,\r\n 'ServiceGroupId' | 'ReportedBy' | 'ServiceId' | 'ServiceTypeId'\r\n>;\r\nexport const allowedToViewAlert = (\r\n user: AuthenticatedUser | undefined,\r\n row: IAlertPermissionCheckRecord,\r\n) => {\r\n if (!user) return false;\r\n return (\r\n user.HasAdminGroupOnlyPermissions(row.ServiceGroupId ?? undefined) ||\r\n user.HasAdminServiceOnlyPermissions(\r\n row.ServiceTypeId ?? 1,\r\n row.ServiceId ?? undefined,\r\n ) ||\r\n user.HasLabTechGroupPermissions(row.ServiceGroupId ?? undefined) ||\r\n user.HasLabTechServicePermissions(\r\n row.ServiceTypeId ?? 1,\r\n row.ServiceId ?? undefined,\r\n ) ||\r\n (user.Roles.includes(Roles.InventoryAdmin) &&\r\n user.HasInstrumentEventsGroupPermissions(\r\n row.ServiceGroupId ?? undefined,\r\n )) ||\r\n user.Roles.includes(Roles.InstrumentEventsAdmin) ||\r\n user.Id === (row.ReportedBy ?? '')\r\n );\r\n};\r\n\r\nexport const IsReadOnlyUser = (user: AuthenticatedUser | undefined) => {\r\n if (!user) return true;\r\n return (\r\n user.Roles.includes(Roles.Readonly) ||\r\n user.Roles.includes(Roles.CalendarOnly)\r\n );\r\n};\r\n","import { generatePath } from 'react-router';\r\n\r\nexport const ServiceRequestDetailsPath = '/requests/:id';\r\nexport const GetServiceRequestDetailsPath = (serviceRequestId: number) =>\r\n generatePath(ServiceRequestDetailsPath, {\r\n id: serviceRequestId,\r\n });\r\n","import {\r\n FormControlProps as MuiFormControlProps,\r\n FormControl as MuiFormControl,\r\n} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport * as React from 'react';\r\nexport interface FormControlProps extends MuiFormControlProps {\r\n boxed?: boolean;\r\n}\r\nconst FormControl = (props: FormControlProps) => {\r\n const { boxed, className, ...other } = props;\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormControl;\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport { buildParams } from 'api/odata/ODataParamsBuilder';\r\nimport { IRow } from 'app/components/BasicTable';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { Entity } from 'types/common';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\n\r\nfunction getUrlAndParams(\r\n api: string | IPathAndQuery,\r\n oDataParams: {\r\n $count?: boolean;\r\n $select?: string;\r\n $filter?: string | undefined;\r\n },\r\n) {\r\n var url = typeof api === 'string' ? api : (api as IPathAndQuery).path;\r\n var search = (api as IPathAndQuery).search;\r\n const params = { ...oDataParams, ...search };\r\n return { url, params };\r\n}\r\nexport async function GettableCount(state: {\r\n api: string;\r\n predicates: Array | string>;\r\n columns: Array;\r\n globalFilterValue?: string;\r\n customFilter: IFilterSettings[];\r\n serviceGroups: Entity[];\r\n isOptionalServiceGroup: boolean;\r\n}) {\r\n const oDataParams = buildParams({\r\n ...state,\r\n select: state.columns,\r\n serviceGroups: state.serviceGroups,\r\n pageSize: 1,\r\n pageIndex: 0,\r\n });\r\n var { url, params } = getUrlAndParams(state.api, oDataParams);\r\n const response = await httpClient.get(url, params /*, cancelToken*/);\r\n const dataLength = response['@odata.count'];\r\n return dataLength;\r\n}\r\n","export const PUBLIC_ASSETS_PATH = '/Assets/Public';\r\n","export const box_shadow_xs: React.CSSProperties['boxShadow'] =\r\n '0px 1px 2px 0px rgba(16, 24, 40, 0.10), 0px 1px 3px 0px rgba(16, 24, 40, 0.10)';\r\nexport const box_shadow_s: React.CSSProperties['boxShadow'] =\r\n '0px 2px 4px -2px rgba(16, 24, 40, 0.06), 0px 4px 8px -2px rgba(16, 24, 40, 0.10)';\r\nexport const box_shadow_m: React.CSSProperties['boxShadow'] =\r\n '0px 4px 4px -2px rgba(16, 24, 40, 0.03), 0px 12px 16px -4px rgba(16, 24, 40, 0.08)';\r\nexport const box_shadow_l: React.CSSProperties['boxShadow'] =\r\n '0px 8px 8px -4px rgba(16, 24, 40, 0.03), 0px 20px 24px -4px rgba(16, 24, 40, 0.08)';\r\nexport const box_shadow_xl: React.CSSProperties['boxShadow'] =\r\n '0px 24px 48px -12px rgba(16, 24, 40, 0.18)';\r\nexport const box_shadow_border_top: React.CSSProperties['boxShadow'] =\r\n '0px 1px 0px 0px #E3E8EF inset';\r\n\r\nexport const bookitShadows = {\r\n shadowXS: box_shadow_xs,\r\n shadowS: box_shadow_s,\r\n shadowM: box_shadow_m,\r\n shadowL: box_shadow_l,\r\n shadowXL: box_shadow_xl,\r\n shadowBorderTop: box_shadow_border_top,\r\n};\r\n","import { InputAdornment } from '@material-ui/core';\r\nimport { TextField as BasicTextField } from 'app/components/TextField';\r\nimport * as React from 'react';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { EditorProps } from '../../EditableCell';\r\n\r\n// 'ShortText':\r\n\r\nexport function TextField({\r\n parentValue,\r\n error,\r\n helperText,\r\n info,\r\n autoFocus,\r\n ...props\r\n}: EditorProps) {\r\n const handleChange: React.ChangeEventHandler<\r\n HTMLInputElement | HTMLTextAreaElement\r\n > = e => {\r\n props.onChange(e.target.value);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {!!info && info !== '' && }\r\n {error && helperText && (\r\n \r\n )}\r\n \r\n ),\r\n }}\r\n variant=\"standard\"\r\n fullWidth\r\n error={error}\r\n inputProps={{\r\n type: 'text',\r\n }}\r\n value={props.value || ''}\r\n onChange={handleChange}\r\n onBlur={props.onBlur}\r\n id={props.id}\r\n label={props.label}\r\n autoFocus={autoFocus}\r\n name={props.name}\r\n />\r\n {/* */}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * UserFilter\r\n *\r\n */\r\nimport { UserPicker } from 'app/components/pickers/AutocompletePickers/UserPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const UserFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default UserFilter;\r\n","/**\r\n *\r\n * DateTimeLabel\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\nexport interface DateTimeLabelProps {\r\n value: Date | string | null;\r\n}\r\n\r\nexport function DateTimeLabel(props: DateTimeLabelProps) {\r\n return <>{dateUtils.shortDateTimeFormat(props.value)};\r\n}\r\n","/**\r\n *\r\n * DescriptionCell\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Description, DescriptionProps } from 'app/components/Description';\r\n\r\nexport interface DescriptonCellProps\r\n extends Pick<\r\n DescriptionProps,\r\n 'width' | 'interactive' | 'leaveDelay' | 'leaveTouchDelay'\r\n > {}\r\n/**\r\n * Renders a long text Cell - truncates long text with a popup\r\n * @param c react-table renderprop params - see https://react-table.tanstack.com/docs/api/useTable\r\n * @returns\r\n */\r\nexport const DescriptionCell =\r\n (p?: DescriptonCellProps) => (c: { value: string | null }) => {\r\n // if (p?.width === 'auto') {\r\n // return String(c.value);\r\n // }\r\n return (\r\n \r\n );\r\n };\r\n","import { IViewState, ViewTypes } from './Scheduler/slice/types';\r\nimport { generatePath } from 'react-router';\r\nimport { calendarPageFullPath } from './calendarPageDefaultPath';\r\nimport { toQueryString } from 'utils/url-utils';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\n/**\r\n * Generates path of the scheduler (calendar/timeline) page\r\n * @param params\r\n * @returns\r\n */\r\nexport const GetCalendarPagePath = (params: IViewState) =>\r\n GetSchedulerPagePath(params.viewType);\r\n\r\nexport const GetSchedulerPagePath = (viewType: ViewTypes) =>\r\n generatePath(calendarPageFullPath, {\r\n type: viewType,\r\n });\r\n\r\ntype useCalendarLinkProps = {\r\n equipments?: Array;\r\n start?: string | Date;\r\n openToBook?: boolean;\r\n viewType: ViewTypes;\r\n defaultMulti?: boolean;\r\n};\r\n\r\nexport const useCalendarLink = (props?: useCalendarLinkProps): string => {\r\n const EnableLegacyScheduler = false;\r\n return getCalendarLink({\r\n EnableLegacyScheduler,\r\n viewType: 'calendar',\r\n ...props,\r\n });\r\n};\r\nexport function getCalendarLink({\r\n EnableLegacyScheduler,\r\n ...props\r\n}: {\r\n EnableLegacyScheduler: boolean;\r\n} & useCalendarLinkProps) {\r\n if (EnableLegacyScheduler) {\r\n switch (props?.viewType) {\r\n case 'calendar':\r\n const params = {\r\n id: props?.equipments\r\n ?.filter(f => f !== undefined)\r\n ?.map(r => `os${r}`)\r\n ?.join(','),\r\n Start:\r\n props?.start === undefined\r\n ? undefined\r\n : dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(props?.start),\r\n ),\r\n openToBook: props?.openToBook,\r\n };\r\n\r\n return `/Weekly.aspx?${toQueryString(params)}`;\r\n case 'timeline':\r\n return `/Timeline.aspx?${toQueryString({\r\n services: props?.equipments?.filter(f => f !== undefined)?.join(','),\r\n Start:\r\n props?.start === undefined\r\n ? undefined\r\n : dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(props?.start),\r\n ),\r\n openToBook: props?.openToBook,\r\n })}`;\r\n }\r\n }\r\n const path = GetSchedulerPagePath(props.viewType ?? 'calendar');\r\n const query = {\r\n eid: props?.equipments\r\n ?.filter(f => f !== undefined)\r\n ?.map(r => `${r}`)\r\n ?.join(','),\r\n Start:\r\n props?.start === undefined\r\n ? undefined\r\n : dateUtils.formatQueryStringDate(dateUtils.parseISO(props?.start)),\r\n openToBook: props?.openToBook,\r\n defaultMulti: props?.defaultMulti,\r\n };\r\n\r\n return `${path}?${toQueryString(query)}`;\r\n}\r\n","/**\r\n *\r\n * Comments\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { CommentsApi } from 'api/CommentsApi';\r\nimport {\r\n CommentsContainer,\r\n EmailRelated,\r\n} from 'app/components/CommentsContainer';\r\nimport {\r\n IComment,\r\n NewComment,\r\n} from 'app/components/CommentsContainer/IComment';\r\nimport { useAsyncGetWithEffect } from 'app/hooks/useAsyncGetOnMount';\r\nimport { CommentReferenceTypes } from 'enums/commentReferenceTypes';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAbsolute } from 'utils/url-utils';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useLargeFilesUploadSlice } from '../LargeFilesUpload/slice';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { Identifiable } from 'types/common';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface CommentsProps\r\n extends Omit {\r\n /**\r\n * Type of the comments, e.g. Invoice, UserTraining, etc.\r\n */\r\n commentType: CommentReferenceTypes;\r\n /**\r\n * Controls permissions related functionality like internal comments available to admins only\r\n */\r\n isAdmin: boolean;\r\n /**\r\n * Entity identifier to attach comments to\r\n */\r\n referenceId: number;\r\n /**\r\n * Optional link that will be shown inside of comments\r\n */\r\n link?: string;\r\n /**\r\n * default initial value for added comment\r\n */\r\n defaultComment?: Partial;\r\n /**\r\n * set to true if user can not add comments\r\n */\r\n cannotComment?: boolean;\r\n /**\r\n * Entity string identifier e.g. UserName to attach comments to\r\n */\r\n referenseStringId?: string;\r\n /**\r\n * Event fired after a comment has been added successfully\r\n */\r\n onCommentAdded?: (comment: IComment) => void;\r\n\r\n onEditComment?: (comment: IComment, newComment: NewComment) => void;\r\n onDeleteComment?: (comment: IComment) => void;\r\n noTitle?: boolean;\r\n disableFileUpload?: boolean;\r\n serviceGroups?: Identifiable[];\r\n referenceName?: string;\r\n additionalActions?: (comments: IComment[]) => React.ReactNode;\r\n checkPermissions?: (comment: IComment) => boolean;\r\n checkEditPermissions?: (comment: IComment) => boolean;\r\n deletable?: boolean;\r\n fileType?: FileTypes;\r\n print?: boolean;\r\n}\r\n\r\n/**\r\n * Reusable comments component.\r\n * For example:\r\n * \r\n * @param param\r\n * @returns\r\n */\r\nexport const Comments = ({\r\n commentType,\r\n referenceId,\r\n isAdmin,\r\n link,\r\n defaultComment,\r\n cannotComment,\r\n pageName,\r\n emailType,\r\n disableFileUpload,\r\n referenceName,\r\n referenseStringId,\r\n additionalActions,\r\n checkEditPermissions,\r\n checkPermissions,\r\n deletable,\r\n print,\r\n fileType = FileTypes.Undefined,\r\n ...props\r\n}: CommentsProps) => {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions: largeFileActions } = useLargeFilesUploadSlice();\r\n const { actions: globalActions } = useAppSettingsSlice();\r\n const [changed, setChanged] = React.useState(false);\r\n\r\n const comments = useAsyncGetWithEffect(\r\n () =>\r\n CommentsApi.GetComments(\r\n commentType,\r\n referenceId,\r\n undefined,\r\n referenseStringId,\r\n ),\r\n [],\r\n [changed],\r\n );\r\n\r\n React.useEffect(() => {\r\n dispatch(\r\n largeFileActions.setCommentProperties({\r\n commentType: commentType,\r\n referenceId: referenceId,\r\n refernceStringId: referenseStringId,\r\n }),\r\n );\r\n }, [commentType, dispatch, largeFileActions, referenceId, referenseStringId]);\r\n const editComment = React.useCallback(\r\n (comment: IComment, newComment: NewComment) => {\r\n if (props.onEditComment) {\r\n props.onEditComment(comment, newComment);\r\n } else {\r\n if (checkEditPermissions && checkEditPermissions(comment)) {\r\n CommentsApi.SendComment(\r\n commentType,\r\n comment.ReferenceId ?? 0,\r\n newComment,\r\n referenseStringId,\r\n comment.Id,\r\n fileType,\r\n )\r\n .then(res => props.onCommentAdded?.(res))\r\n .catch(e => console.error(e))\r\n .finally(() => setChanged(prev => !prev));\r\n }\r\n }\r\n },\r\n [checkEditPermissions, commentType, fileType, props, referenseStringId],\r\n );\r\n const deleteComment = React.useCallback(\r\n (comment: IComment) => {\r\n if (props.onDeleteComment) {\r\n props.onDeleteComment(comment);\r\n } else {\r\n if (checkEditPermissions && checkEditPermissions(comment)) {\r\n CommentsApi.DeleteComment(comment.Id)\r\n .then(response => {\r\n if (response.ErrorMessages.length > 0) {\r\n dispatch(\r\n globalActions.addNotification({\r\n key: 'deleteCommentError',\r\n message: response.ErrorMessages[0],\r\n variant: 'error',\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n globalActions.addNotification({\r\n key: 'deleteCommentSuccess',\r\n message: response.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n setChanged(prev => !prev);\r\n })\r\n .catch(e => console.error(e));\r\n }\r\n }\r\n },\r\n [checkEditPermissions, dispatch, globalActions, props],\r\n );\r\n return (\r\n {\r\n CommentsApi.SendComment(\r\n commentType,\r\n referenceId,\r\n c,\r\n referenseStringId,\r\n undefined,\r\n fileType,\r\n )\r\n .then(res => props.onCommentAdded?.(res))\r\n .catch(e => console.error(e))\r\n .finally(() => setChanged(prev => !prev));\r\n }}\r\n isAdmin={isAdmin}\r\n withMentions\r\n pageName={pageName ?? t(translations.Invoice)}\r\n referenceName={\r\n referenceName ?? referenseStringId ?? referenceId.toString()\r\n }\r\n linkUrl={useAbsolute(link)}\r\n emailType={emailType ?? 'Invoice'}\r\n defaultComment={defaultComment}\r\n cannotComment={cannotComment || print}\r\n disableFileUpload={disableFileUpload}\r\n additionalActions={additionalActions}\r\n checkEditPermissions={checkEditPermissions}\r\n checkPermissions={checkPermissions}\r\n onEditComment={editComment}\r\n onDeleteComment={deleteComment}\r\n deletable={deletable}\r\n fileTypeId={fileType}\r\n {...props}\r\n />\r\n );\r\n};\r\n","/**\r\n *\r\n * FormFundingTypePicker\r\n *\r\n */\r\n\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { FundingTypeIdPicker } from '../pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\n\r\nexport const FormFundingTypePicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & IFieldProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n info={props.info}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n};\r\n","export enum EmptySlotAdminClick {\r\n WhatToAdd = 0,\r\n ReservationsOnly = 1,\r\n DownTimeOnly = 2,\r\n}\r\n","export * from './CampusPickerFilter';\r\nexport * from './DatePickerFilter';\r\nexport * from './TextFieldFilter';\r\nexport * from './IFilterComponentProps';\r\n","import React from 'react';\r\nimport clsx from 'clsx';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport interface BulletedListItem {\r\n key: React.Key | null | undefined;\r\n node: React.ReactNode;\r\n}\r\nexport interface BulletedListProps {\r\n items: BulletedListItem[];\r\n showBullet?: boolean;\r\n}\r\nconst StyledUlList = styled('ul')`\r\n &.ul-root {\r\n & {\r\n list-style: none;\r\n padding-inline-start: 20px;\r\n margin: 0;\r\n }\r\n & li:before {\r\n content: '•';\r\n color: ${bookitColors.primary.regular};\r\n font-weight: bold;\r\n display: inline-block;\r\n width: 1em;\r\n margin-left: -1em;\r\n }\r\n & li {\r\n margin-bottom: 4px;\r\n }\r\n }\r\n`;\r\nconst StyledSimpleList = styled('ul')`\r\n &.simple-root {\r\n & {\r\n list-style: none;\r\n }\r\n }\r\n`;\r\nconst StyledBulletList = styled('ul')`\r\n &.bullet-root {\r\n list-style: none;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n padding: 0;\r\n margin: 0;\r\n gap: 8px;\r\n flex-grow: 1;\r\n overflow-y: auto;\r\n overflow-x: clip;\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n &::-webkit-scrollbar-thumb {\r\n box-shadow: inset 0 0 2px ${bookitColors.grayscale.grayBorders};\r\n border-radius: 6px;\r\n background-color: ${bookitColors.grayscale.grayBorders};\r\n }\r\n height: auto;\r\n max-height: 200px;\r\n & .bullet-row {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0;\r\n gap: 8px;\r\n height: 25px;\r\n }\r\n & .bullet-row-over-rule {\r\n display: flex;\r\n width: 100%;\r\n white-space: pre;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 23ch;\r\n }\r\n }\r\n`;\r\nexport const UlList = ({\r\n children,\r\n className,\r\n}: React.PropsWithChildren<{\r\n className?: string;\r\n}>) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport const SimpleList = ({\r\n children,\r\n className,\r\n}: React.PropsWithChildren<{\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}>) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport const BulletedList = (props: BulletedListProps) => {\r\n const { items, showBullet = true } = props;\r\n return (\r\n \r\n {items.map(c => {\r\n return (\r\n
  • \r\n {showBullet && (\r\n \r\n )}\r\n {c.node}\r\n
  • \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { MenuItem } from '@material-ui/core';\r\nimport { IFilterSettings } from './IFilterSettings';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { TextControlField } from 'app/components/BasicInputs/TextControlField';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Popper } from 'app/components/Popper';\r\nimport { useIsMobile } from 'app/hooks/useIsMobile';\r\nimport clsx from 'clsx';\r\nimport { AddFilterBoxRoot, StyledMenuList } from './styled';\r\n\r\nexport interface AddFilterButtonProps {\r\n availableFilters: IFilterSettings[];\r\n onChange: (value: IFilterSettings) => void;\r\n filtersSelectionOpen: boolean;\r\n title: string;\r\n disabled?: boolean;\r\n disabledTitle?: string;\r\n}\r\n\r\nexport function AddFilterButton({\r\n filtersSelectionOpen,\r\n ...props\r\n}: AddFilterButtonProps) {\r\n const [open, setOpen] = React.useState(filtersSelectionOpen);\r\n const { checkIsMobile, isLandscape } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n React.useEffect(() => setOpen(filtersSelectionOpen), [filtersSelectionOpen]);\r\n\r\n const anchorRef = React.useRef(null);\r\n const [anchorEl, setAnchorEl] = React.useState<\r\n EventTarget & HTMLDivElement\r\n >();\r\n React.useEffect(() => {\r\n setAnchorEl(anchorRef.current ?? undefined);\r\n }, [anchorRef]);\r\n const handleAddFilterClick = e => {\r\n setOpen(c => !c);\r\n setAnchorEl(e.currentTarget);\r\n };\r\n const { t } = useTranslation();\r\n // close popover on click anywhere outside the menu\r\n\r\n // control field search text value\r\n const [input, setInnput] = React.useState();\r\n\r\n // manually filter the items and take first 10\r\n const options = props.availableFilters.filter((item, index) =>\r\n t(item.displayNameKey)\r\n .toLowerCase()\r\n .includes((input || '').toLowerCase()),\r\n );\r\n\r\n // handle selected filter event\r\n const handleFilterSelect = item => {\r\n props.onChange(item);\r\n setOpen(false);\r\n setInnput(undefined);\r\n };\r\n\r\n return (\r\n \r\n {/* TODO: user localization on button */}\r\n }\r\n disabled={props.disabled}\r\n title={props.disabled ? props.disabledTitle : undefined}\r\n >\r\n {props.title}\r\n \r\n {anchorEl !== undefined && (\r\n <>\r\n setOpen(false)}\r\n title={t(translations.SelectFieldToFilterBy)}\r\n minWidth=\"auto\"\r\n >\r\n \r\n }\r\n value={input || ''}\r\n aria-label={t(translations.SearchFilter)}\r\n inputProps={{ 'aria-label': t(translations.SearchFilter) }}\r\n onChange={e => setInnput(e.target.value)}\r\n autoFocus\r\n fullWidth\r\n />\r\n \r\n {options.map((item, index) => (\r\n handleFilterSelect(item)}\r\n >\r\n {t(item.displayNameKey)}\r\n \r\n ))}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AppliedFiltersContainer\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Directions } from '../FilterBox';\r\nimport { useIsMobile } from 'app/hooks/useIsMobile';\r\nimport clsx from 'clsx';\r\nimport { useTheme } from '@material-ui/core';\r\nimport { StyledFiltersContainer } from '../styled';\r\n\r\nexport interface AppliedFiltersContainerProps {\r\n direction: Directions;\r\n}\r\n\r\nexport function AppliedFiltersContainer({\r\n children,\r\n direction,\r\n}: React.PropsWithChildren) {\r\n const { checkIsMobile, isLandscape } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n const theme = useTheme();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { AddFilterButton } from './AddFilterButton';\r\nimport { FilterDependencyData, IFilterSettings } from './IFilterSettings';\r\nimport { AppliedFilterComponent } from './AppliedFilterComponent';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\n\r\nimport { areSameFilter } from './utils';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { Directions } from 'app/components/BasicTable/BasicFilter/FilterBox';\r\nimport { AppliedFiltersContainer } from 'app/components/BasicTable/BasicFilter/AppliedFiltersContainer';\r\nimport { SavedListsDropDown } from './SavedListsDropDown';\r\nimport { TableSavedListSettings } from '../BasicTableProps';\r\nimport { FilterValueType } from './FilterValueType';\r\nimport { ButtonsContainer } from './styled';\r\n\r\nexport interface SingleFilterProps {}\r\n\r\nexport interface IBasicFilterGroupProps {\r\n availableFilters: IFilterSettings[];\r\n appliedFilters: IFilterSettings[];\r\n appliedFiltersDirection?: Directions;\r\n onClose: () => void;\r\n onChange: (items: IFilterSettings[]) => void;\r\n getSavedDefaultFilters?: () => IFilterSettings[];\r\n autoOpenAddFilter: boolean;\r\n showAddResetButtons: boolean;\r\n savedListSettings?: TableSavedListSettings;\r\n filterDefaultOpen?: boolean;\r\n}\r\nexport function updateDepValues(\r\n filterValues: FilterDependencyData[],\r\n depKey: keyof TRow,\r\n depValue?: FilterValueType,\r\n) {\r\n if (depValue === null || depValue === undefined) {\r\n if (\r\n filterValues.length > 0 &&\r\n filterValues.some(f => f.depKey === depKey)\r\n ) {\r\n return filterValues.filter(f => f.depKey !== depKey);\r\n } else return filterValues;\r\n } else {\r\n if (\r\n filterValues.length > 0 &&\r\n filterValues.some(f => f.depKey === depKey)\r\n ) {\r\n return filterValues.map(f => {\r\n if (f.depKey === depKey) {\r\n let item = {\r\n depKey: f.depKey,\r\n depValue: depValue,\r\n };\r\n return Object.assign({}, f, item);\r\n } else {\r\n return f;\r\n }\r\n });\r\n } else {\r\n let item = {\r\n depKey: depKey,\r\n depValue: depValue,\r\n };\r\n return [...filterValues, item];\r\n }\r\n }\r\n}\r\nexport function getDependencyFilters(\r\n filters: IFilterSettings[],\r\n): IFilterSettings[] {\r\n if (filters.length > 0) {\r\n if (\r\n filters.some(\r\n f =>\r\n !!f.dependencyProp &&\r\n f.dependencyProp.length > 0 &&\r\n !!f.filterPredicates,\r\n )\r\n ) {\r\n let depFilters = filters.filter(\r\n f =>\r\n !!f.dependencyProp &&\r\n f.dependencyProp.length > 0 &&\r\n !!f.filterPredicates,\r\n );\r\n depFilters.forEach(item => {\r\n let depFiltered = filters.filter(f =>\r\n item.dependencyProp?.includes(f.fieldName),\r\n );\r\n if (depFiltered.length > 0) {\r\n depFiltered.forEach(filt => {\r\n let depValue = filt?.value ?? filt?.defaultValue;\r\n item.filterData = updateDepValues(\r\n item.filterData ?? [],\r\n filt.fieldName,\r\n depValue,\r\n );\r\n });\r\n }\r\n });\r\n return filters.map(item => {\r\n if (depFilters.some(d => d.fieldName === item.fieldName)) {\r\n return depFilters.filter(d => d.fieldName === item.fieldName)[0];\r\n } else {\r\n return item;\r\n }\r\n });\r\n }\r\n }\r\n return filters;\r\n}\r\nexport function BasicFilterGroup({\r\n onChange,\r\n onClose,\r\n appliedFiltersDirection = 'vertical',\r\n savedListSettings,\r\n getSavedDefaultFilters,\r\n filterDefaultOpen,\r\n showAddResetButtons = true,\r\n ...props\r\n}: IBasicFilterGroupProps) {\r\n const { t } = useTranslation();\r\n // save provided applied filters to be used in change callbacks\r\n const [visibleFilters, setVisibleFilters] = React.useState<\r\n IFilterSettings[]\r\n >(props.appliedFilters);\r\n\r\n // refresh applied filters if they were changed from outside\r\n React.useEffect(() => {\r\n setVisibleFilters(props.appliedFilters);\r\n }, [props.appliedFilters]);\r\n\r\n // handle addition of a new filter\r\n const handleAddFilter = (item: IFilterSettings) => {\r\n item.value = null;\r\n setVisibleFilters(currentState => {\r\n const newState = [\r\n ...currentState,\r\n { ...item, ...{ open: filterDefaultOpen ?? true } },\r\n ];\r\n onChange(newState);\r\n return newState;\r\n });\r\n };\r\n const handleAddFilterWithValue = (item: IFilterSettings) => {\r\n setVisibleFilters(currentState => {\r\n const newState = [\r\n ...currentState,\r\n { ...item, ...{ open: filterDefaultOpen ?? true } },\r\n ];\r\n onChange(newState);\r\n return newState;\r\n });\r\n };\r\n const handleClearClick = () => {\r\n setVisibleFilters(currentState => {\r\n const newState =\r\n getSavedDefaultFilters?.() ??\r\n currentState.map(f => ({\r\n ...f,\r\n ...{ value: null, open: false },\r\n }));\r\n onChange([...newState]);\r\n return newState;\r\n });\r\n };\r\n\r\n // handle apply (change) of the applied filter\r\n const handleApply = item => {\r\n if (item.value === undefined) {\r\n item.value = null;\r\n }\r\n item.visible = true;\r\n item.open = false;\r\n setVisibleFilters(currentState => {\r\n const newState = currentState.map(f =>\r\n areSameFilter({ f, item }) ? item : f,\r\n );\r\n onChange(newState);\r\n return newState;\r\n });\r\n };\r\n\r\n // handle removal of applied filter\r\n const handleRemoveFitler = (item: IFilterSettings) => {\r\n setVisibleFilters(currentState => {\r\n const newState = currentState.filter(f => !areSameFilter({ f, item }));\r\n onChange(newState);\r\n return newState;\r\n });\r\n };\r\n\r\n /**\r\n * Filters available in \"Add filter\" - to be added to the displayed fitlers list\r\n */\r\n const availableFilters = props.availableFilters.filter(available => {\r\n const unavailable = visibleFilters;\r\n const isApplied = unavailable.some(applied =>\r\n areSameFilter({ f: available, item: applied }),\r\n );\r\n return !isApplied;\r\n });\r\n\r\n const appliedFitltersCount = visibleFilters.length;\r\n const [open, setOpen] = React.useState(props.autoOpenAddFilter ?? false);\r\n useEffectOnMount(() =>\r\n props.autoOpenAddFilter ? setOpen(appliedFitltersCount === 0) : void 0,\r\n );\r\n\r\n return (\r\n <>\r\n {visibleFilters.length > 0 && (\r\n \r\n {visibleFilters.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n {savedListSettings && savedListSettings.enableSavedLists && (\r\n \r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n ).length === 1\r\n ? visibleFilters.filter(\r\n f =>\r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n )[0]\r\n : props.availableFilters.filter(\r\n f =>\r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n )[0]\r\n }\r\n hasInVisibleFilters={\r\n visibleFilters.filter(\r\n f =>\r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n ).length === 1\r\n }\r\n onApply={handleApply}\r\n onRemove={handleRemoveFitler}\r\n addFilter={handleAddFilterWithValue}\r\n serializedKey={savedListSettings.savedListSerializedKey || 'eid'}\r\n listViewbyAsset={savedListSettings.listViewbyAsset}\r\n />\r\n )}\r\n \r\n )}\r\n\r\n {savedListSettings &&\r\n savedListSettings.enableSavedLists &&\r\n visibleFilters.length < 1 && (\r\n \r\n \r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n ).length === 1\r\n ? visibleFilters.filter(\r\n f =>\r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n )[0]\r\n : props.availableFilters.filter(\r\n f =>\r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n )[0]\r\n }\r\n hasInVisibleFilters={\r\n visibleFilters.filter(\r\n f =>\r\n f.fieldName ===\r\n savedListSettings.savedListRelatedPickerName,\r\n ).length === 1\r\n }\r\n onApply={handleApply}\r\n onRemove={handleRemoveFitler}\r\n addFilter={handleAddFilterWithValue}\r\n serializedKey={savedListSettings.savedListSerializedKey || 'eid'}\r\n listViewbyAsset={savedListSettings.listViewbyAsset}\r\n />\r\n \r\n )}\r\n \r\n \r\n {showAddResetButtons && (\r\n \r\n onClose()}\r\n >\r\n {t(translations.apply)}\r\n \r\n\r\n \r\n {t(translations.ResetFilters)}\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","export function roundTwoPlacesAfterDecimalPoint(value: any) {\r\n return (Math.round((Number(value) ?? 0) * 100) / 100).toFixed(2);\r\n}\r\n","import { BaseTextFieldProps, InputAdornment } from '@material-ui/core';\r\nimport { PureDateInputProps } from '@material-ui/pickers/_shared/PureDateInput';\r\nimport React from 'react';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport BaseTextField from '../BasicInputs/BaseTextField';\r\nimport { DatePopupVariants } from './utils/types';\r\n\r\nexport interface DateInputProps\r\n extends PureDateInputProps,\r\n Pick<\r\n BaseTextFieldProps,\r\n | 'autoFocus'\r\n | 'fullWidth'\r\n | 'helperText'\r\n | 'placeholder'\r\n | 'required'\r\n | 'disabled'\r\n | 'name'\r\n | 'id'\r\n | 'label'\r\n | 'margin'\r\n > {\r\n info?: string;\r\n ariaLabel?: string;\r\n startIcon?: React.ReactNode;\r\n endIcon?: React.ReactNode;\r\n togglePicker: () => void;\r\n variant?: DatePopupVariants;\r\n}\r\n\r\nexport function DateInput(props: DateInputProps) {\r\n const {\r\n inputValue,\r\n openPicker,\r\n InputProps,\r\n TextFieldComponent,\r\n inputProps,\r\n onBlur,\r\n onFocus,\r\n validationError,\r\n inputVariant,\r\n togglePicker,\r\n info,\r\n ariaLabel,\r\n startIcon,\r\n endIcon,\r\n variant,\r\n ...other\r\n } = props;\r\n const TextComponent = !!TextFieldComponent\r\n ? TextFieldComponent\r\n : BaseTextField;\r\n const innerInputProps = React.useMemo(() => {\r\n return Object.assign({}, InputProps, { readOnly: true });\r\n }, [InputProps]);\r\n return (\r\n \r\n // \r\n // \r\n // ),\r\n endAdornment: (\r\n <>\r\n {(info && ) ||\r\n (endIcon && (\r\n {endIcon}\r\n ))}\r\n \r\n togglePicker()}\r\n disabled={props.disabled}\r\n size=\"xs\"\r\n >\r\n \r\n \r\n \r\n \r\n ),\r\n style: { minWidth: 80 },\r\n }}\r\n InputLabelProps={{\r\n shrink:\r\n props.inputVariant === 'filled'\r\n ? !isNullOrUndefined(inputValue)\r\n ? true\r\n : false\r\n : undefined,\r\n }}\r\n helperText={validationError || props.helperText}\r\n onClick={ev => {\r\n const target = ev.target as HTMLInputElement;\r\n if (!!target && target.nodeName === 'INPUT') openPicker();\r\n }}\r\n value={inputValue}\r\n variant={inputVariant}\r\n onKeyDown={(event: React.KeyboardEvent) => {\r\n if (event.key === 'Enter') {\r\n event.stopPropagation();\r\n openPicker();\r\n }\r\n }}\r\n onBlur={onBlur}\r\n onFocus={onFocus}\r\n {...other}\r\n />\r\n );\r\n}\r\n","function dateLongFormatter(pattern, formatLong) {\r\n switch (pattern) {\r\n case 'P':\r\n return formatLong.date({\r\n width: 'short',\r\n });\r\n\r\n case 'PP':\r\n return formatLong.date({\r\n width: 'medium',\r\n });\r\n\r\n case 'PPP':\r\n return formatLong.date({\r\n width: 'long',\r\n });\r\n\r\n case 'PPPP':\r\n default:\r\n return formatLong.date({\r\n width: 'full',\r\n });\r\n }\r\n}\r\n\r\nfunction timeLongFormatter(pattern, formatLong) {\r\n switch (pattern) {\r\n case 'p':\r\n return formatLong.time({\r\n width: 'short',\r\n });\r\n\r\n case 'pp':\r\n return formatLong.time({\r\n width: 'medium',\r\n });\r\n\r\n case 'ppp':\r\n return formatLong.time({\r\n width: 'long',\r\n });\r\n\r\n case 'pppp':\r\n default:\r\n return formatLong.time({\r\n width: 'full',\r\n });\r\n }\r\n}\r\n\r\nfunction dateTimeLongFormatter(pattern, formatLong) {\r\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\r\n var datePattern = matchResult[1];\r\n var timePattern = matchResult[2];\r\n\r\n if (!timePattern) {\r\n return dateLongFormatter(pattern, formatLong);\r\n }\r\n\r\n var dateTimeFormat;\r\n\r\n switch (datePattern) {\r\n case 'P':\r\n dateTimeFormat = formatLong.dateTime({\r\n width: 'short',\r\n });\r\n break;\r\n\r\n case 'PP':\r\n dateTimeFormat = formatLong.dateTime({\r\n width: 'medium',\r\n });\r\n break;\r\n\r\n case 'PPP':\r\n dateTimeFormat = formatLong.dateTime({\r\n width: 'long',\r\n });\r\n break;\r\n\r\n case 'PPPP':\r\n default:\r\n dateTimeFormat = formatLong.dateTime({\r\n width: 'full',\r\n });\r\n break;\r\n }\r\n\r\n return dateTimeFormat\r\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong))\r\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong));\r\n}\r\n\r\nvar longFormatters = {\r\n p: timeLongFormatter,\r\n P: dateTimeLongFormatter,\r\n};\r\nexport default longFormatters;\r\n","// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\r\n// (one of the certain letters followed by `o`)\r\n// - (\\w)\\1* matches any sequences of the same letter\r\n// - '' matches two quote characters in a row\r\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\r\n// except a single quote symbol, which ends the sequence.\r\n// Two quote characters do not end the sequence.\r\n// If there is no matching single quote\r\n// then the sequence will continue until the end of the string.\r\n// - . matches any single character unmatched by previous parts of the RegExps\r\n// This RegExp catches symbols escaped by quotes, and also\r\n\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport longFormatters from './longFormatters';\r\n\r\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\r\nconst formattingTokensRegExp =\r\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\r\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\r\n// const escapedStringRegExp = /^'([^]*?)'?$/;\r\n// const doubleQuoteRegExp = /''/g;\r\n// const notWhitespaceRegExp = /\\S/;\r\n// const unescapedLatinCharacterRegExp = /[a-zA-Z]/;\r\n//returns RegExpMatchArray\r\nexport default function getFormatTokens(formatString: string): string[] | null {\r\n // if(formatString === null ) return null;\r\n let tokens = formatString\r\n .match(longFormattingTokensRegExp)\r\n ?.map(function (substring) {\r\n var firstCharacter = substring[0];\r\n\r\n if (firstCharacter === 'p' || firstCharacter === 'P') {\r\n var longFormatter = longFormatters[firstCharacter];\r\n return longFormatter(\r\n substring,\r\n dateUtils.dateFnsUtils.locale.formatLong,\r\n // dateUtils.subFnOptions(),\r\n );\r\n }\r\n\r\n return substring;\r\n })\r\n .join('')\r\n .match(formattingTokensRegExp);\r\n if (tokens === undefined || tokens === null) {\r\n return null;\r\n }\r\n return tokens;\r\n}\r\n","import { IUtils } from '@date-io/core/IUtils';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { BaseKeyboardPickerProps } from '@material-ui/pickers/_shared/hooks/useKeyboardPickerState';\r\nimport { toEndDateDisplayValue } from 'app/components/DatePicker/utils/toEndDateDisplayValue';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport getFormatTokens from 'utils/DateFormattingUtils/getFormatTokens';\r\n\r\nexport type DateStartWith = 'day' | 'month' | 'year';\r\nexport type DatePopupVariants = 'date' | 'datetime' | 'time' | 'separated';\r\nexport interface DateTimeMask {\r\n day: string;\r\n month: string;\r\n year: string;\r\n hour: string;\r\n minute: string;\r\n meridiem: string;\r\n dateSeparator: string;\r\n dateStartFrom: DateStartWith;\r\n}\r\nexport interface FormatedResult {\r\n value: string;\r\n stayOnSelection: boolean;\r\n zeroPress: boolean;\r\n}\r\nexport const getInputViewDate = (\r\n variant: DatePopupVariants,\r\n value?: Date | string | null,\r\n endTime?: boolean,\r\n truncateTime?: boolean,\r\n): string | undefined => {\r\n if (variant === 'date') {\r\n return (\r\n dateUtils.shortDateFormat(\r\n toEndDateDisplayValue({\r\n value,\r\n endTime,\r\n truncateTime,\r\n direction: 'toDisplay',\r\n }),\r\n ) ?? undefined\r\n );\r\n } else if (variant === 'time') {\r\n return dateUtils.timeFormat(value) ?? undefined;\r\n } else if (variant === 'datetime') {\r\n return dateUtils.shortDateTimeFormat(value) ?? undefined;\r\n } else {\r\n return dateUtils.shortDateTimeFormat(value) ?? undefined;\r\n }\r\n};\r\nexport const setInputViewDate = (\r\n variant: DatePopupVariants,\r\n value?: Date | string | null,\r\n endTime?: boolean,\r\n truncateTime?: boolean,\r\n): MaterialUiPickersDate | null => {\r\n if (value === null) {\r\n return null;\r\n }\r\n if (value === undefined) {\r\n return null;\r\n } else if (variant === 'date') {\r\n let ddd =\r\n toEndDateDisplayValue({\r\n value,\r\n endTime,\r\n truncateTime,\r\n direction: 'fromDisplay',\r\n }) ?? value;\r\n return new CustomDate(ddd, 'date');\r\n } else if (variant === 'time') {\r\n return new CustomDate(value, 'time');\r\n } else if (variant === 'datetime') {\r\n return new CustomDate(value, 'complete');\r\n } else {\r\n return new CustomDate(value, 'complete');\r\n }\r\n};\r\nexport const getValueDateOrTruncat = (\r\n variant: DatePopupVariants,\r\n value?: Date | string | null,\r\n endTime?: boolean,\r\n truncateTime?: boolean,\r\n): Date | string | null | undefined => {\r\n if (value === null || value === undefined) {\r\n return value;\r\n }\r\n\r\n if (variant === 'date') {\r\n return toEndDateDisplayValue({\r\n value,\r\n endTime,\r\n truncateTime,\r\n direction: 'toDisplay',\r\n });\r\n } else {\r\n return value;\r\n }\r\n};\r\nexport const maskFormats = {\r\n date: '__/__/____',\r\n time: '__:__',\r\n timeMeridiem: '__:__ _M',\r\n dateTime: '__/__/____ __:__',\r\n dateTimeMeridiem: '__/__/____ __:__ _M',\r\n};\r\nexport const defaultDateTimeMask = (\r\n format: string,\r\n variant?: 'date' | 'time',\r\n): DateTimeMask => {\r\n const tokens = getFormatTokens(format);\r\n if (tokens === null) {\r\n let defTokens = getFormatTokens(dateUtils.DateIOFormats.keyboardDateTime); //full fate time\r\n if (defTokens === null) {\r\n return {\r\n day: 'dd',\r\n month: 'MM',\r\n year: 'yyyy',\r\n hour: 'HH',\r\n minute: 'mm',\r\n meridiem: 'a',\r\n dateSeparator: '/',\r\n dateStartFrom: 'day',\r\n };\r\n } else {\r\n let first = defTokens[0].toLowerCase();\r\n let dateStartWith = first.startsWith('d')\r\n ? 'day'\r\n : first.startsWith('m')\r\n ? 'month'\r\n : 'year';\r\n return {\r\n day:\r\n dateStartWith === 'day'\r\n ? defTokens[0]\r\n : dateStartWith === 'month'\r\n ? defTokens[2]\r\n : defTokens[4],\r\n month:\r\n dateStartWith === 'day'\r\n ? defTokens[2]\r\n : dateStartWith === 'month'\r\n ? defTokens[0]\r\n : defTokens[4],\r\n year:\r\n dateStartWith === 'day'\r\n ? defTokens[4]\r\n : dateStartWith === 'month'\r\n ? defTokens[4]\r\n : defTokens[0],\r\n hour: defTokens[6],\r\n minute: defTokens[8],\r\n meridiem: defTokens.length > 8 ? defTokens[10] : 'aa',\r\n dateSeparator: defTokens[1],\r\n dateStartFrom:\r\n dateStartWith === 'day'\r\n ? 'day'\r\n : dateStartWith === 'month'\r\n ? 'month'\r\n : 'year',\r\n };\r\n }\r\n } else {\r\n if (variant === undefined) {\r\n if (tokens[0].toLowerCase().startsWith('h')) {\r\n //time\r\n let dateTokens = getFormatTokens(\r\n dateUtils.DateIOFormats.keyboardDate,\r\n ) ?? ['dd', '/', 'MM', '/', 'yyyy']; //full date\r\n let first = dateTokens[0].toLowerCase();\r\n let dateStartWith = first.startsWith('d')\r\n ? 'day'\r\n : first.startsWith('m')\r\n ? 'month'\r\n : 'year';\r\n return {\r\n day:\r\n dateStartWith === 'day'\r\n ? dateTokens[0]\r\n : dateStartWith === 'month'\r\n ? dateTokens[2]\r\n : dateTokens[4],\r\n month:\r\n dateStartWith === 'day'\r\n ? dateTokens[2]\r\n : dateStartWith === 'month'\r\n ? dateTokens[0]\r\n : dateTokens[4],\r\n year:\r\n dateStartWith === 'day'\r\n ? dateTokens[4]\r\n : dateStartWith === 'month'\r\n ? dateTokens[4]\r\n : dateTokens[0],\r\n hour: tokens[0],\r\n minute: tokens[2],\r\n meridiem: tokens.length > 2 ? tokens[4] : 'aa',\r\n dateSeparator: dateTokens[1],\r\n dateStartFrom:\r\n dateStartWith === 'day'\r\n ? 'day'\r\n : dateStartWith === 'month'\r\n ? 'month'\r\n : 'year',\r\n };\r\n } else {\r\n //date\r\n let first = tokens[0].toLowerCase();\r\n let dateStartWith = first.startsWith('d')\r\n ? 'day'\r\n : first.startsWith('m')\r\n ? 'month'\r\n : 'year';\r\n let timeTokens = getFormatTokens(dateUtils.DateIOFormats.fullTime) ?? [\r\n 'HH',\r\n ':',\r\n 'mm',\r\n ];\r\n return {\r\n day:\r\n dateStartWith === 'day'\r\n ? tokens[0]\r\n : dateStartWith === 'month'\r\n ? tokens[2]\r\n : tokens[4],\r\n month:\r\n dateStartWith === 'day'\r\n ? tokens[2]\r\n : dateStartWith === 'month'\r\n ? tokens[0]\r\n : tokens[4],\r\n year:\r\n dateStartWith === 'day'\r\n ? tokens[4]\r\n : dateStartWith === 'month'\r\n ? tokens[4]\r\n : tokens[0],\r\n hour: timeTokens[0],\r\n minute: timeTokens[2],\r\n meridiem: timeTokens.length > 2 ? timeTokens[4] : 'a',\r\n dateSeparator: tokens[1],\r\n dateStartFrom:\r\n dateStartWith === 'day'\r\n ? 'day'\r\n : dateStartWith === 'month'\r\n ? 'month'\r\n : 'year',\r\n };\r\n }\r\n } else {\r\n if (variant === 'time') {\r\n let dateTokens = getFormatTokens(\r\n dateUtils.DateIOFormats.keyboardDate,\r\n ) ?? ['dd', '/', 'MM', '/', 'yyyy']; //full date\r\n let first = dateTokens[0].toLowerCase();\r\n let dateStartWith = first.startsWith('d')\r\n ? 'day'\r\n : first.startsWith('m')\r\n ? 'month'\r\n : 'year';\r\n return {\r\n day:\r\n dateStartWith === 'day'\r\n ? dateTokens[0]\r\n : dateStartWith === 'month'\r\n ? dateTokens[2]\r\n : dateTokens[4],\r\n month:\r\n dateStartWith === 'day'\r\n ? dateTokens[2]\r\n : dateStartWith === 'month'\r\n ? dateTokens[0]\r\n : dateTokens[4],\r\n year:\r\n dateStartWith === 'day'\r\n ? dateTokens[4]\r\n : dateStartWith === 'month'\r\n ? dateTokens[4]\r\n : dateTokens[0],\r\n hour: tokens[0],\r\n minute: tokens[2],\r\n meridiem: tokens.length > 2 ? tokens[4] : 'a',\r\n dateSeparator: dateTokens[1],\r\n dateStartFrom:\r\n dateStartWith === 'day'\r\n ? 'day'\r\n : dateStartWith === 'month'\r\n ? 'month'\r\n : 'year',\r\n };\r\n } else {\r\n let first = tokens[0].toLowerCase();\r\n let dateStartWith = first.startsWith('d')\r\n ? 'day'\r\n : first.startsWith('m')\r\n ? 'month'\r\n : 'year';\r\n let timeTokens = getFormatTokens(dateUtils.DateIOFormats.fullTime) ?? [\r\n 'HH',\r\n ':',\r\n 'mm',\r\n ];\r\n return {\r\n day:\r\n dateStartWith === 'day'\r\n ? tokens[0]\r\n : dateStartWith === 'month'\r\n ? tokens[2]\r\n : tokens[4],\r\n month:\r\n dateStartWith === 'day'\r\n ? tokens[2]\r\n : dateStartWith === 'month'\r\n ? tokens[0]\r\n : tokens[4],\r\n year:\r\n dateStartWith === 'day'\r\n ? tokens[4]\r\n : dateStartWith === 'month'\r\n ? tokens[4]\r\n : tokens[0],\r\n hour: timeTokens[0],\r\n minute: timeTokens[2],\r\n meridiem: timeTokens.length > 2 ? timeTokens[4] : 'a',\r\n dateSeparator: tokens[1],\r\n dateStartFrom:\r\n dateStartWith === 'day'\r\n ? 'day'\r\n : dateStartWith === 'month'\r\n ? 'month'\r\n : 'year',\r\n };\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const maskFormat = (\r\n dateVariant: Omit,\r\n ampm: boolean,\r\n): string => {\r\n switch (dateVariant) {\r\n case 'date':\r\n return maskFormats.date;\r\n case 'time':\r\n return ampm ? maskFormats.timeMeridiem : maskFormats.time;\r\n case 'datetime':\r\n return ampm ? maskFormats.dateTimeMeridiem : maskFormats.dateTime;\r\n default:\r\n return maskFormats.date;\r\n }\r\n};\r\nexport function makeMaskFromFormat(format, numberMaskChar) {\r\n return format.replace(/[a-z]/gi, numberMaskChar);\r\n}\r\n//MUI-4 dateFormatter\r\nexport const maskedDateFormatter = function (mask, numberMaskChar, refuse) {\r\n return function (value) {\r\n var result = '';\r\n var parsed = value.replace(refuse, '');\r\n if (parsed === '') {\r\n return parsed;\r\n }\r\n var i = 0;\r\n var n = 0;\r\n while (i < mask.length) {\r\n var maskChar = mask[i];\r\n if (maskChar === numberMaskChar && n < parsed.length) {\r\n var parsedChar = parsed[n];\r\n result += parsedChar;\r\n n += 1;\r\n } else {\r\n result += maskChar;\r\n }\r\n i += 1;\r\n }\r\n return result;\r\n };\r\n};\r\n\r\nexport const parseDigits = (input: string) =>\r\n (input.match(/\\d+/g) || []).join('');\r\n\r\nexport const formatDate = (input: string) => {\r\n const digits = parseDigits(input);\r\n const chars = digits.split('');\r\n let res = chars\r\n .reduce((r, v, index) => {\r\n return index === 2 || index === 4 ? `${r}/${v}` : `${r}${v}`;\r\n }, '')\r\n .substr(0, 10);\r\n return res;\r\n};\r\n\r\nexport const formatDateWithAppend = (input: string) => {\r\n const res = formatDate(input);\r\n\r\n if (input.endsWith('/')) {\r\n if (res.length === 2) {\r\n return `${res}/`;\r\n }\r\n\r\n if (res.length === 5) {\r\n return `${res}/`;\r\n }\r\n }\r\n return res;\r\n};\r\n\r\nexport const appendHyphen = v =>\r\n v.length === 2 || v.length === 5 ? `${v}/` : v;\r\nexport const addMask = string => {\r\n const digits = parseDigits(string);\r\n const days = digits.slice(0, 2).padEnd(2, '_');\r\n const months = digits.slice(2, 4).padEnd(2, '_');\r\n const years = digits.slice(4, 8).padEnd(4, '_');\r\n return `${days}-${months}-${years}`;\r\n};\r\n\r\nexport const dateStart: DateStartWith = dateUtils.dateFnsUtils.dateFormat\r\n .toLowerCase()\r\n .startsWith('m')\r\n ? 'month'\r\n : dateUtils.dateFnsUtils.dateFormat.toLowerCase().startsWith('d')\r\n ? 'day'\r\n : dateUtils.dateFnsUtils.dateFormat.toLowerCase().startsWith('y')\r\n ? 'year'\r\n : 'day';\r\n\r\nexport const dateSelection = (\r\n event: React.MouseEvent,\r\n maskFormats: DateTimeMask,\r\n) => {\r\n const target = event.target as HTMLInputElement;\r\n let dateStartFrom = maskFormats.dateStartFrom;\r\n // let selectionDirection = target.selectionDirection;\r\n let selectionStart = target.selectionStart;\r\n let selectionEnd = target.selectionEnd;\r\n if (!!target.value && target.value !== '') {\r\n if (dateStartFrom === 'year') {\r\n if (selectionEnd !== null) {\r\n if (selectionEnd <= 4) {\r\n if (selectionStart === 0 && selectionEnd === 4) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(0, 4);\r\n } else if (selectionEnd <= 7) {\r\n if (selectionStart === 5 && selectionEnd === 7) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(5, 7);\r\n } else {\r\n if (selectionStart === 8 && selectionEnd === 10) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(8, 10);\r\n }\r\n // target.setRangeText(target.value.substring(0, 2));\r\n }\r\n } else {\r\n if (selectionEnd !== null) {\r\n if (selectionEnd <= 2) {\r\n if (selectionStart === 0 && selectionEnd === 2) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(0, 2);\r\n } else if (selectionEnd <= 5) {\r\n if (selectionStart === 3 && selectionEnd === 5) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(3, 5);\r\n } else {\r\n if (selectionStart === 6 && selectionEnd === 10) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(6, 10);\r\n }\r\n // target.setRangeText(target.value.substring(0, 2));\r\n }\r\n }\r\n }\r\n};\r\nexport const timeSelection = (\r\n event: React.MouseEvent,\r\n maskFormats: DateTimeMask,\r\n) => {\r\n const target = event.target as HTMLInputElement;\r\n // let selectionDirection = target.selectionDirection;\r\n let selectionStart = target.selectionStart ?? 0;\r\n let selectionEnd = target.selectionEnd ?? 0;\r\n let oneLetterHour =\r\n maskFormats.hour.length === 1 && target.value.split(':')[0].length === 1;\r\n\r\n if (!!target.value && target.value !== '') {\r\n if (selectionEnd <= (oneLetterHour ? 1 : 2)) {\r\n if (selectionStart === 0 && selectionEnd === (oneLetterHour ? 1 : 2)) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(0, oneLetterHour ? 1 : 2);\r\n } else if (selectionEnd <= (oneLetterHour ? 4 : 5)) {\r\n if (\r\n selectionStart > (oneLetterHour ? 1 : 2) &&\r\n selectionEnd === (oneLetterHour ? 4 : 5)\r\n ) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(oneLetterHour ? 2 : 3, oneLetterHour ? 4 : 5);\r\n } else {\r\n if (target.value.length > (oneLetterHour ? 4 : 5)) {\r\n if (\r\n selectionStart === (oneLetterHour ? 5 : 6) &&\r\n selectionEnd === (oneLetterHour ? 7 : 8)\r\n ) {\r\n event.preventDefault();\r\n }\r\n target.setSelectionRange(oneLetterHour ? 5 : 6, oneLetterHour ? 7 : 8);\r\n } else {\r\n target.setSelectionRange(3, 5);\r\n }\r\n }\r\n }\r\n};\r\nexport const dateArrowSelection = (\r\n event: React.KeyboardEvent,\r\n arrows: 'left' | 'right',\r\n variant: 'date' | 'time',\r\n maskFormats: DateTimeMask,\r\n) => {\r\n const target = event.target as HTMLInputElement;\r\n let selectionStart = target.selectionStart ?? 0;\r\n let selectionEnd = target.selectionEnd ?? 0;\r\n let oneLetterHour =\r\n variant === 'time' &&\r\n maskFormats.hour.length === 1 &&\r\n target.value.split(':')[0].length === 1;\r\n let dateStartFrom = maskFormats.dateStartFrom;\r\n if (arrows === 'left') {\r\n if (!!target.value && target.value !== '') {\r\n if (variant === 'time') {\r\n if (selectionStart <= (oneLetterHour ? 2 : 3)) {\r\n target.setSelectionRange(0, oneLetterHour ? 1 : 2);\r\n } else if (\r\n selectionStart <= (oneLetterHour ? 5 : 6) &&\r\n selectionStart > (oneLetterHour ? 2 : 3)\r\n ) {\r\n target.setSelectionRange(\r\n oneLetterHour ? 2 : 3,\r\n oneLetterHour ? 4 : 5,\r\n );\r\n } else {\r\n if (target.value.length > (oneLetterHour ? 4 : 5)) {\r\n target.setSelectionRange(\r\n oneLetterHour ? 5 : 6,\r\n oneLetterHour ? 7 : 8,\r\n );\r\n } else {\r\n target.setSelectionRange(3, 5);\r\n }\r\n }\r\n } else {\r\n if (dateStartFrom === 'year') {\r\n if (selectionStart <= 6 && selectionStart > 4) {\r\n target.setSelectionRange(0, 4);\r\n } else if (selectionStart <= 8 && selectionStart > 5) {\r\n target.setSelectionRange(5, 7);\r\n } else {\r\n target.setSelectionRange(8, 10);\r\n }\r\n } else {\r\n if (selectionStart <= 3) {\r\n target.setSelectionRange(0, 2);\r\n } else if (selectionStart <= 6 && selectionStart > 3) {\r\n target.setSelectionRange(3, 5);\r\n } else {\r\n target.setSelectionRange(6, 10);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (arrows === 'right') {\r\n if (!!target.value && target.value !== '') {\r\n if (variant === 'time') {\r\n if (\r\n selectionEnd >= (oneLetterHour ? 1 : 2) &&\r\n selectionEnd < (oneLetterHour ? 4 : 5)\r\n ) {\r\n target.setSelectionRange(\r\n oneLetterHour ? 2 : 3,\r\n oneLetterHour ? 4 : 5,\r\n );\r\n } else if (selectionEnd >= (oneLetterHour ? 4 : 5)) {\r\n if (target.value.length > (oneLetterHour ? 4 : 5)) {\r\n target.setSelectionRange(\r\n oneLetterHour ? 5 : 6,\r\n oneLetterHour ? 7 : 8,\r\n );\r\n } else {\r\n target.setSelectionRange(3, 5);\r\n }\r\n } else {\r\n target.setSelectionRange(0, oneLetterHour ? 1 : 2);\r\n }\r\n } else {\r\n if (dateStartFrom === 'year') {\r\n if (selectionEnd >= 4 && selectionEnd < 7) {\r\n target.setSelectionRange(5, 7);\r\n } else if (selectionEnd >= 7) {\r\n target.setSelectionRange(8, 10);\r\n } else {\r\n target.setSelectionRange(0, 2);\r\n }\r\n } else {\r\n if (selectionEnd >= 2 && selectionEnd < 5) {\r\n target.setSelectionRange(3, 5);\r\n } else if (selectionEnd >= 5) {\r\n target.setSelectionRange(6, 10);\r\n } else {\r\n target.setSelectionRange(0, 2);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport const getMaskedDateValue = (mask: DateTimeMask, value?: string) => {\r\n let singleValue = !!value && value.length === 1 ? value : undefined;\r\n return mask.dateStartFrom === 'day'\r\n ? `${!!singleValue ? singleValue : mask.day}${mask.dateSeparator}${\r\n mask.month\r\n }${mask.dateSeparator}${mask.year}`\r\n : mask.dateStartFrom === 'month'\r\n ? `${!!singleValue ? singleValue : mask.month}${mask.dateSeparator}${\r\n mask.day\r\n }${mask.dateSeparator}${mask.year}`\r\n : `${!!singleValue ? singleValue : mask.year}${mask.dateSeparator}${\r\n mask.month\r\n }${mask.dateSeparator}${mask.day}`;\r\n};\r\nexport const getMaskedTimeValue = (\r\n mask: DateTimeMask,\r\n ampm?: boolean,\r\n value?: string,\r\n) => {\r\n let separator = ':';\r\n // value only used when is a single character\r\n let hour = !!value && value.length === 1 ? value : undefined;\r\n return ampm\r\n ? `${!!hour ? hour : mask.hour}${separator}${mask.minute} ${mask.meridiem}`\r\n : `${!!hour ? hour : mask.hour}${separator}${mask.minute}`;\r\n};\r\nexport const formatingDate = (\r\n text: string,\r\n partChanged: 'day' | 'month' | 'year',\r\n maskFormat: DateTimeMask,\r\n prevValue: string,\r\n increment?: 'increase' | 'decrease',\r\n isPrevZero?: boolean,\r\n isSelectionChanged?: boolean,\r\n): FormatedResult => {\r\n let result = {\r\n value: prevValue,\r\n stayOnSelection: false,\r\n zeroPress: false,\r\n };\r\n let stayOnSelection = false;\r\n let newDate = prevValue;\r\n let separator = maskFormat.dateSeparator;\r\n let startedFrom = maskFormat.dateStartFrom;\r\n let zeroPress = false;\r\n if (text === '') {\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${maskFormat.day}${separator}${maskFormat.month}${separator}${maskFormat.year}`\r\n : maskFormat.dateStartFrom === 'month'\r\n ? `${maskFormat.month}${separator}${maskFormat.day}${separator}${maskFormat.year}`\r\n : `${maskFormat.year}${separator}${maskFormat.month}${separator}${maskFormat.day}`;\r\n } else {\r\n let parts = text.split(separator);\r\n let prevParts = prevValue.split(separator);\r\n if (partChanged === 'day') {\r\n let dayVal =\r\n startedFrom === 'day'\r\n ? parts[0]\r\n : startedFrom === 'month'\r\n ? parts[1]\r\n : parts[2];\r\n let prevDayVal =\r\n startedFrom === 'day'\r\n ? prevParts[0]\r\n : startedFrom === 'month'\r\n ? prevParts[1]\r\n : prevParts[2];\r\n if (dayVal === '') {\r\n stayOnSelection = true;\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${maskFormat.day}${separator}${parts[1]}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${maskFormat.day}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${parts[1]}${separator}${maskFormat.day}`;\r\n } else {\r\n if (\r\n dayVal.match(/[^\\d]+/gi) ||\r\n (dayVal === '0' &&\r\n !isNaN(parseInt(prevDayVal)) &&\r\n (parseInt(prevDayVal) > 3 || isSelectionChanged)) ||\r\n isNaN(parseInt(dayVal))\r\n ) {\r\n stayOnSelection = true;\r\n zeroPress = dayVal === '0';\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${prevDayVal}${separator}${parts[1]}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${prevDayVal}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${parts[1]}${separator}${prevDayVal}`;\r\n } else {\r\n let newVal = '';\r\n let dayInt = parseInt(dayVal);\r\n if (!!increment) {\r\n stayOnSelection = true;\r\n dayInt = increment === 'increase' ? dayInt + 1 : dayInt - 1;\r\n dayVal = dayInt.toString();\r\n if (dayInt <= 0) {\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${'31'}${separator}${parts[1]}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${'31'}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${parts[1]}${separator}${'31'}`;\r\n } else if (dayInt > 31) {\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${'01'}${separator}${parts[1]}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${'01'}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${parts[1]}${separator}${'01'}`;\r\n } else {\r\n newVal = dayInt < 10 ? `0${dayVal}` : dayVal;\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${newVal}${separator}${parts[1]}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${newVal}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${parts[1]}${separator}${newVal}`;\r\n }\r\n } else {\r\n if (prevDayVal === '' || prevDayVal === maskFormat.day) {\r\n newVal = `0${dayVal}`;\r\n stayOnSelection = dayInt <= 3;\r\n } else {\r\n let prevInt = parseInt(isPrevZero ? '0' : prevDayVal);\r\n if (prevInt.toString().length > 1) {\r\n newVal = `0${dayVal}`;\r\n stayOnSelection = dayInt <= 3;\r\n } else {\r\n if (prevInt > 3) {\r\n newVal = `0${dayVal}`;\r\n stayOnSelection = dayInt <= 3;\r\n } else {\r\n let comb = `${prevInt}${dayInt}`;\r\n if (parseInt(comb) > 31) {\r\n newVal = `0${dayVal}`;\r\n stayOnSelection = dayInt <= 3;\r\n } else {\r\n newVal = comb;\r\n }\r\n }\r\n }\r\n }\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${newVal}${separator}${parts[1]}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${newVal}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${parts[1]}${separator}${newVal}`;\r\n }\r\n }\r\n }\r\n return {\r\n value: newDate,\r\n stayOnSelection: stayOnSelection,\r\n zeroPress: zeroPress,\r\n };\r\n } else if (partChanged === 'month') {\r\n let monthVal =\r\n startedFrom === 'day'\r\n ? parts[1]\r\n : startedFrom === 'month'\r\n ? parts[0]\r\n : parts[1];\r\n let prevMonthVal =\r\n startedFrom === 'day'\r\n ? prevParts[1]\r\n : startedFrom === 'month'\r\n ? prevParts[0]\r\n : prevParts[1];\r\n\r\n // let monthArray = monthEntityArray;\r\n if (monthVal === '') {\r\n stayOnSelection = true;\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${maskFormat.month}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${maskFormat.month}${separator}${parts[1]}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${maskFormat.month}${separator}${parts[2]}`;\r\n } else {\r\n if (\r\n monthVal.match(/[^\\d]+/gi) ||\r\n (monthVal === '0' &&\r\n !isNaN(parseInt(prevMonthVal)) &&\r\n (parseInt(prevMonthVal) > 1 || isSelectionChanged)) ||\r\n isNaN(parseInt(monthVal))\r\n ) {\r\n stayOnSelection = true;\r\n zeroPress = monthVal === '0';\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${prevMonthVal}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${prevMonthVal}${separator}${parts[1]}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${prevMonthVal}${separator}${parts[2]}`;\r\n } else {\r\n let newVal = '';\r\n let monthInt = parseInt(monthVal);\r\n if (!!increment) {\r\n stayOnSelection = true;\r\n monthInt = increment === 'increase' ? monthInt + 1 : monthInt - 1;\r\n monthVal = monthInt.toString();\r\n\r\n if (monthInt <= 0) {\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${'12'}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${'12'}${separator}${parts[1]}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${'12'}${separator}${parts[2]}`;\r\n } else if (monthInt > 12) {\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${'01'}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${'01'}${separator}${parts[1]}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${'01'}${separator}${parts[2]}`;\r\n } else {\r\n newVal = monthInt < 10 ? `0${monthVal}` : monthVal;\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${newVal}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${newVal}${separator}${parts[1]}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${newVal}${separator}${parts[2]}`;\r\n }\r\n } else {\r\n if (prevMonthVal === '' || prevMonthVal === maskFormat.month) {\r\n newVal = `0${monthVal}`;\r\n stayOnSelection = monthInt <= 1;\r\n } else {\r\n let prevMonthInt = parseInt(isPrevZero ? '0' : prevMonthVal);\r\n if (prevMonthInt.toString().length > 1) {\r\n newVal = `0${monthVal}`;\r\n stayOnSelection = monthInt <= 1;\r\n } else {\r\n let comb = `${prevMonthInt}${monthInt}`;\r\n if (parseInt(comb) > 12) {\r\n newVal = `0${monthVal}`;\r\n stayOnSelection = monthInt <= 1;\r\n } else {\r\n newVal = comb;\r\n }\r\n // if (prevMonthInt === 1) {\r\n // let comb = `${prevMonthInt}${monthInt}`;\r\n // if (parseInt(comb) > 12) {\r\n // newVal = `0${monthVal}`;\r\n // stayOnSelection = monthInt <= 1;\r\n // } else {\r\n // newVal = comb;\r\n // }\r\n // } else {\r\n // newVal = `0${monthVal}`;\r\n // stayOnSelection = monthInt <= 1;\r\n // }\r\n }\r\n }\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${newVal}${separator}${parts[2]}`\r\n : startedFrom === 'month'\r\n ? `${newVal}${separator}${parts[1]}${separator}${parts[2]}`\r\n : `${parts[0]}${separator}${newVal}${separator}${parts[2]}`;\r\n }\r\n }\r\n }\r\n return {\r\n value: newDate,\r\n stayOnSelection: stayOnSelection,\r\n zeroPress: zeroPress,\r\n };\r\n } else if (partChanged === 'year') {\r\n let yearVal =\r\n startedFrom === 'day'\r\n ? parts[2]\r\n : startedFrom === 'month'\r\n ? parts[2]\r\n : parts[0];\r\n let prevYearVal =\r\n startedFrom === 'day'\r\n ? prevParts[2]\r\n : startedFrom === 'month'\r\n ? prevParts[2]\r\n : prevParts[0];\r\n if (yearVal === '') {\r\n stayOnSelection = true;\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${maskFormat.year}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${maskFormat.year}`\r\n : `${maskFormat.year}${separator}${parts[1]}${separator}${parts[2]}`;\r\n } else {\r\n if (\r\n yearVal.match(/[^\\d]+/gi) ||\r\n // yearVal === '0' ||\r\n isNaN(parseInt(yearVal))\r\n ) {\r\n stayOnSelection = true;\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${prevYearVal}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${prevYearVal}`\r\n : `${prevYearVal}${separator}${parts[1]}${separator}${parts[2]}`;\r\n } else {\r\n let newVal = '';\r\n let yearInt = parseInt(yearVal);\r\n if (!!increment) {\r\n stayOnSelection = true;\r\n yearInt = increment === 'increase' ? yearInt + 1 : yearInt - 1;\r\n yearVal = yearInt.toString();\r\n if (yearInt < 0) {\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${'9999'}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${'9999'}`\r\n : `${'9999'}${separator}${parts[1]}${separator}${parts[2]}`;\r\n } else if (yearInt > 9999) {\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${'0000'}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${'0000'}`\r\n : `${'0000'}${separator}${parts[1]}${separator}${parts[2]}`;\r\n } else {\r\n newVal =\r\n yearInt > 1000\r\n ? yearVal\r\n : yearInt > 100\r\n ? `0${yearVal}`\r\n : yearInt > 10\r\n ? `00${yearVal}`\r\n : `000${yearVal}`;\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${newVal}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${newVal}`\r\n : `${newVal}${separator}${parts[1]}${separator}${parts[2]}`;\r\n }\r\n } else {\r\n if (prevYearVal === undefined) {\r\n newVal =\r\n yearVal.length === 4\r\n ? yearVal\r\n : yearVal.length === 3\r\n ? `0${yearVal}`\r\n : yearVal.length === 2\r\n ? `00${yearVal}`\r\n : `000${yearVal}`;\r\n } else if (prevYearVal === '' || prevYearVal === maskFormat.year) {\r\n newVal = `000${yearVal}`;\r\n } else if (prevYearVal.startsWith('0')) {\r\n newVal = prevYearVal.padEnd(5, yearVal).slice(1, 5);\r\n } else {\r\n newVal = `000${yearVal}`;\r\n }\r\n newDate =\r\n startedFrom === 'day'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${newVal}`\r\n : startedFrom === 'month'\r\n ? `${parts[0]}${separator}${parts[1]}${separator}${newVal}`\r\n : `${newVal}${separator}${parts[1]}${separator}${parts[2]}`;\r\n }\r\n }\r\n }\r\n return {\r\n value: newDate,\r\n stayOnSelection: true,\r\n zeroPress: false,\r\n };\r\n } else {\r\n return result;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\nexport const formatingTime = (\r\n text: string,\r\n partChanged: 'hour' | 'minute' | 'meridiem',\r\n maskFormat: DateTimeMask,\r\n prevValue: string,\r\n increment?: 'increase' | 'decrease',\r\n ampm?: boolean,\r\n) => {\r\n let result = {\r\n value: prevValue,\r\n stayOnSelection: false,\r\n };\r\n let stayOnSelection = false;\r\n let newTime = prevValue;\r\n let separator = ':';\r\n if (text === '') {\r\n newTime = ampm\r\n ? `${maskFormat.hour}${separator}${maskFormat.minute} ${maskFormat.meridiem}`\r\n : `${maskFormat.hour}${separator}${maskFormat.minute}`;\r\n } else {\r\n let parts = text.split(separator);\r\n let hour = parts[0];\r\n let minute = ampm ? parts[1].split(' ')[0] : parts[1];\r\n let meridiem = ampm ? parts[1].split(' ')[1] : '';\r\n let prevParts = prevValue.split(separator);\r\n let prevHour = prevParts[0];\r\n let prevMinute = ampm ? prevParts[1].split(' ')[0] : prevParts[1];\r\n let prevMeridiem = ampm ? prevParts[1].split(' ')[1] : '';\r\n if (partChanged === 'hour') {\r\n if (hour === '') {\r\n stayOnSelection = true;\r\n newTime = ampm\r\n ? `${maskFormat.hour}${separator}${minute} ${meridiem}`\r\n : `${maskFormat.hour}${separator}${minute}`;\r\n } else {\r\n if (\r\n hour.match(/[^\\d]+/gi) ||\r\n (ampm &&\r\n ((hour === '0' &&\r\n !isNaN(parseInt(prevHour)) &&\r\n parseInt(prevHour) > 1) ||\r\n isNaN(parseInt(hour))))\r\n ) {\r\n stayOnSelection = true;\r\n newTime = ampm\r\n ? `${prevHour}${separator}${minute} ${meridiem}`\r\n : `${prevHour}${separator}${minute}`;\r\n } else {\r\n let newVal = '';\r\n let hourInt = parseInt(hour);\r\n if (!!increment) {\r\n stayOnSelection = true;\r\n hourInt = increment === 'increase' ? hourInt + 1 : hourInt - 1;\r\n hour = hourInt.toString();\r\n\r\n if (hourInt < 0 || (ampm && hourInt === 0)) {\r\n newTime = ampm\r\n ? `${'12'}${separator}${minute} ${meridiem}`\r\n : `${'23'}${separator}${minute}`;\r\n } else if (hourInt > (ampm ? 12 : 23)) {\r\n newTime = ampm\r\n ? `${\r\n maskFormat.hour.length === 1 ? '1' : '01'\r\n }${separator}${minute} ${meridiem}`\r\n : `${'00'}${separator}${minute}`;\r\n } else {\r\n newVal =\r\n hourInt < 10\r\n ? ampm\r\n ? maskFormat.hour.length === 1\r\n ? hour\r\n : `0${hour}`\r\n : `0${hour}`\r\n : hour;\r\n newTime = ampm\r\n ? `${newVal}${separator}${minute} ${meridiem}`\r\n : `${newVal}${separator}${minute}`;\r\n }\r\n } else {\r\n if (prevHour === '' || prevHour === maskFormat.hour) {\r\n newVal = ampm\r\n ? maskFormat.hour.length === 1\r\n ? `${hour}`\r\n : `0${hour}`\r\n : `0${hour}`;\r\n stayOnSelection = ampm ? hourInt <= 1 : hourInt <= 2;\r\n } else {\r\n let prevHourInt = parseInt(prevHour);\r\n if (prevHourInt.toString().length > 1) {\r\n newVal = ampm\r\n ? maskFormat.hour.length === 1\r\n ? `${hour}`\r\n : `0${hour}`\r\n : `0${hour}`;\r\n stayOnSelection = ampm ? hourInt <= 1 : hourInt <= 2;\r\n } else {\r\n if (\r\n (ampm && prevHourInt === 1) ||\r\n (!ampm && prevHourInt <= 2)\r\n ) {\r\n let comb = `${prevHourInt}${hourInt}`;\r\n if (ampm && parseInt(comb) > 12) {\r\n newVal =\r\n maskFormat.hour.length === 1 ? `${hour}` : `0${hour}`;\r\n stayOnSelection = hourInt <= 1;\r\n } else if (!ampm && parseInt(comb) > 23) {\r\n newVal = `0${hour}`;\r\n stayOnSelection = hourInt <= 2;\r\n } else {\r\n newVal = comb;\r\n }\r\n } else {\r\n newVal = ampm\r\n ? maskFormat.hour.length === 1\r\n ? `${hour}`\r\n : `0${hour}`\r\n : `0${hour}`;\r\n stayOnSelection = ampm ? hourInt <= 1 : hourInt <= 2;\r\n }\r\n }\r\n }\r\n newTime = ampm\r\n ? `${newVal}${separator}${minute} ${meridiem}`\r\n : `${newVal}${separator}${minute}`;\r\n }\r\n }\r\n }\r\n return {\r\n value: newTime,\r\n stayOnSelection: stayOnSelection,\r\n };\r\n }\r\n if (partChanged === 'minute') {\r\n if (minute === '') {\r\n stayOnSelection = true;\r\n newTime = ampm\r\n ? `${hour}${separator}${maskFormat.minute} ${meridiem}`\r\n : `${hour}${separator}${maskFormat.minute}`;\r\n } else {\r\n if (minute.match(/[^\\d]+/gi)) {\r\n stayOnSelection = true;\r\n newTime = ampm\r\n ? `${hour}${separator}${prevMinute} ${meridiem}`\r\n : `${hour}${separator}${prevMinute}`;\r\n } else {\r\n let newVal = '';\r\n let minuteInt = parseInt(minute);\r\n if (!!increment) {\r\n stayOnSelection = true;\r\n minuteInt =\r\n increment === 'increase' ? minuteInt + 1 : minuteInt - 1;\r\n minute = minuteInt.toString();\r\n\r\n if (minuteInt < 0) {\r\n newTime = ampm\r\n ? `${hour}${separator}${'59'} ${meridiem}`\r\n : `${hour}${separator}${'59'}`;\r\n } else if (minuteInt > 59) {\r\n newTime = ampm\r\n ? `${hour}${separator}${'00'} ${meridiem}`\r\n : `${hour}${separator}${'00'}`;\r\n } else {\r\n newVal = minuteInt < 10 ? `0${minute}` : minute;\r\n newTime = ampm\r\n ? `${hour}${separator}${newVal} ${meridiem}`\r\n : `${hour}${separator}${newVal}`;\r\n }\r\n } else {\r\n if (prevMinute === '' || prevMinute === maskFormat.minute) {\r\n newVal = `0${minute}`;\r\n stayOnSelection = minuteInt <= 5;\r\n } else {\r\n let prevMinuteInt = parseInt(prevMinute);\r\n if (prevMinuteInt.toString().length > 1) {\r\n newVal = `0${minute}`;\r\n stayOnSelection = minuteInt <= 5;\r\n } else {\r\n if (prevMinuteInt <= 5) {\r\n let comb = `${prevMinuteInt}${minuteInt}`;\r\n if (parseInt(comb) > 59) {\r\n newVal = `0${minute}`;\r\n stayOnSelection = minuteInt <= 5;\r\n } else {\r\n newVal = comb;\r\n }\r\n } else {\r\n newVal = `0${minute}`;\r\n stayOnSelection = minuteInt <= 5;\r\n }\r\n }\r\n }\r\n newTime = ampm\r\n ? `${hour}${separator}${newVal} ${meridiem}`\r\n : `${hour}${separator}${newVal}`;\r\n }\r\n }\r\n }\r\n return {\r\n value: newTime,\r\n stayOnSelection: stayOnSelection,\r\n };\r\n }\r\n if (ampm && partChanged === 'meridiem') {\r\n if (meridiem === '') {\r\n stayOnSelection = true;\r\n newTime = `${hour}${separator}${minute} ${maskFormat.meridiem}`;\r\n } else {\r\n if (meridiem.match(/[\\dap]+/gi) === null) {\r\n stayOnSelection = true;\r\n newTime = `${hour}${separator}${minute} ${prevMeridiem}`;\r\n } else {\r\n let newVal = '';\r\n if (!!increment) {\r\n stayOnSelection = true;\r\n newVal = prevMeridiem.toLowerCase().startsWith('p') ? 'AM' : 'PM';\r\n newTime = `${hour}${separator}${minute} ${newVal}`;\r\n } else {\r\n stayOnSelection = true;\r\n newVal = meridiem.toLowerCase().startsWith('p') ? 'PM' : 'AM';\r\n newTime = `${hour}${separator}${minute} ${newVal}`;\r\n }\r\n }\r\n }\r\n return {\r\n value: newTime,\r\n stayOnSelection: stayOnSelection,\r\n };\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport const getDisplayDate = (\r\n value: ParsableDate,\r\n format: string,\r\n utils: IUtils,\r\n isEmpty: boolean,\r\n props: Pick<\r\n BaseKeyboardPickerProps,\r\n 'invalidLabel' | 'emptyLabel' | 'labelFunc'\r\n >,\r\n) => {\r\n const { invalidLabel, emptyLabel, labelFunc } = props;\r\n var date =\r\n value === null || value === undefined\r\n ? ''\r\n : typeof value === 'object'\r\n ? new Date(value as Date)\r\n : typeof value === 'number'\r\n ? new Date(value)\r\n : dateUtils.dateOrStringToDate(value);\r\n let t = dateUtils.dateOrStringToDate(date);\r\n if (labelFunc) {\r\n return labelFunc(isEmpty ? null : t, invalidLabel || '');\r\n }\r\n if (isEmpty) {\r\n return emptyLabel || '';\r\n }\r\n return utils.isValid(date) ? utils.format(t, format) : invalidLabel;\r\n};\r\nexport const getParsableDate = (date: ParsableDate): Date | null => {\r\n var resDate =\r\n date === null || date === undefined\r\n ? null\r\n : typeof date === 'object'\r\n ? new Date(date as Date)\r\n : typeof date === 'number'\r\n ? new Date(date)\r\n : dateUtils.dateOrStringToDate(date);\r\n return resDate;\r\n};\r\n","import { PopperProps, Theme, Popper } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\n// import { bookitColors } from 'styles/colors/bookitColors';\r\nimport { bookitShadows } from 'styles/shadows/bookitShadow';\r\n\r\nexport const StyledPicker = styled('div')(({ theme }) => ({\r\n '&.picker-root': {\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .picker-date-input': {},\r\n // '& .picker-popper': {\r\n // zIndex: 1300,\r\n // '& .picker-paper': {\r\n // padding: '16px',\r\n // maxWidth: '360px',\r\n // borderRadius: '12px',\r\n // boxShadow: bookitShadows.shadowXL,\r\n // // background: bookitColors.grayscale.grayBackground,\r\n // '& .picker-header': {\r\n // // minHeight: '20px',\r\n // '& .picker-header-title': {},\r\n // },\r\n // '& .picker-content': {\r\n // display: 'flex',\r\n // flexDirection: 'column',\r\n // alignItems: 'center',\r\n // gap: '8px',\r\n // '& .picker-content-date': {\r\n // height: '56px',\r\n // width: '100%',\r\n // // padding: '12px',\r\n // },\r\n // '& .picker-buttons': {\r\n // display: 'flex',\r\n // flexDirection: 'row',\r\n // alignItems: 'center',\r\n // alignSelf: 'flex-start',\r\n // gap: '16px',\r\n // // paddingTop: '16px',\r\n // },\r\n // },\r\n // },\r\n // },\r\n },\r\n}));\r\n\r\nexport const PickerPopper = styled(\r\n ({\r\n theme,\r\n children,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n children: React.ReactNode;\r\n } & PopperProps) => {children},\r\n)({\r\n '&.picker-popper': {\r\n zIndex: 1300,\r\n '& .picker-paper': {\r\n padding: '16px',\r\n maxWidth: '360px',\r\n borderRadius: '12px',\r\n boxShadow: bookitShadows.shadowXL,\r\n // background: bookitColors.grayscale.grayBackground,\r\n '& .picker-header': {\r\n // minHeight: '20px',\r\n '& .picker-header-title': {},\r\n },\r\n '& .picker-content': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n gap: '8px',\r\n '& .picker-content-date': {\r\n height: '56px',\r\n width: '100%',\r\n // padding: '12px',\r\n },\r\n '& .picker-buttons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n alignSelf: 'flex-start',\r\n gap: '16px',\r\n // paddingTop: '16px',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\n// `\r\n// z-index: ${props => props.theme.zIndex.modal};\r\n// height: 100vh;\r\n// border-left: 1px solid ${bookitColors.grayscale.grayBorders};\r\n// &.rootopen {\r\n// width: 100%;\r\n// transform: unset;\r\n// &.mobileroot {\r\n// padding-top: 0px;\r\n// }\r\n// }\r\n// &.rootclose {\r\n// width: 100vw;\r\n// &.mobileroot {\r\n// inset-block: 50px auto;\r\n// height: calc(100% - 50px);\r\n// padding-top: 0px;\r\n// }\r\n// }\r\n// @media (max-width: ${props => props.theme.breakpoints.values.md}px) {\r\n// &.rootclose {\r\n// width: 100%;\r\n// min-width: 600px;\r\n// }\r\n// }\r\n// @media (max-width: ${props => props.theme.breakpoints.values.sm}px) {\r\n// &.rootclose {\r\n// width: 100%;\r\n// min-width: 370px;\r\n// }\r\n// }\r\n// @media (min-width: ${props => props.theme.breakpoints.values.md}px) {\r\n// &.rootclose {\r\n// width: ${props => props.sidePanelWidth}px;\r\n// }\r\n// }\r\n// & .paper {\r\n// background: ${props => props.theme.palette.common.background};\r\n// border-radius: 0;\r\n// max-height: 100vh;\r\n// height: auto;\r\n// margin: 0;\r\n// box-shadow: unset;\r\n// }\r\n// @media (max-width: ${props => props.theme.breakpoints.values.sm}px) {\r\n// & .paper {\r\n// max-width: 100%;\r\n// }\r\n// }\r\n// `;\r\n","/**\r\n *\r\n * DaysByMonthPicker\r\n *\r\n */\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport React from 'react';\r\n\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\n\r\nexport interface DaysByMonthPickerProps\r\n extends Omit>, 'getOptions'> {\r\n month?: number | null;\r\n date?: Date | string | null;\r\n}\r\nexport const daysEntityArray = Array.from({ length: 31 }, (_, i) => {\r\n const x = i + 1;\r\n return {\r\n Id: x,\r\n Name: x.toString(),\r\n } as Entity;\r\n});\r\n\r\nexport const defaultDayValue =\r\n daysEntityArray.find(f => f.Id === dateUtils.getDate(new Date())) ??\r\n ({\r\n Id: dateUtils.getDate(new Date()),\r\n Name: dateUtils.getDate(new Date()).toString(),\r\n } as Entity);\r\nexport const getDayEntityFromDate = (date?: Date | string | null) => {\r\n if (date === null || date === undefined) {\r\n return daysEntityArray[0];\r\n } else {\r\n let toDate = dateUtils.dateOrStringToDate(date);\r\n return (\r\n daysEntityArray.find(f => f.Id === toDate.getDate()) ?? daysEntityArray[0]\r\n );\r\n }\r\n};\r\n\r\nexport const initDaysData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n daysEntityArray.filter(item => {\r\n return item.Id.toString() === initval.toString();\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nexport function DaysByMonthPicker(props: DaysByMonthPickerProps) {\r\n const getOptions = React.useMemo(() => {\r\n let maxDay = 31;\r\n if (props.month !== null && props.month !== undefined) {\r\n let monthDate = dateUtils.setMonth(new Date(), props.month);\r\n maxDay = dateUtils.lastDayOfMonth(monthDate).getDate();\r\n } else if (props.date !== null && props.date !== undefined) {\r\n let monthDate = dateUtils.dateOrStringToDate(props.date);\r\n maxDay = dateUtils.lastDayOfMonth(monthDate).getDate();\r\n }\r\n let items = daysEntityArray.filter(f => f.Id <= maxDay);\r\n return GetOptionsFilterFunction(items);\r\n }, [props.date, props.month]);\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * MonthOfYearPicker\r\n *\r\n */\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport React from 'react';\r\n\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\n\r\nexport interface MonthEntity extends Entity {\r\n FullName: string;\r\n MonthId: number;\r\n}\r\nexport interface MonthOfYearPickerProps\r\n extends Omit>, 'getOptions'> {\r\n date?: Date | string | null;\r\n}\r\nexport const monthEntityArray = Array.from({ length: 12 }, (_, i) => {\r\n const x = i;\r\n return {\r\n Id: x,\r\n Name: dateUtils.format(\r\n dateUtils.setMonth(new Date(), x),\r\n dateUtils.DateIOFormats.monthShort,\r\n ),\r\n FullName: dateUtils.format(\r\n dateUtils.setMonth(new Date(), x),\r\n dateUtils.DateIOFormats.month,\r\n ),\r\n MonthId: x + 1,\r\n } as Entity;\r\n});\r\n\r\nexport const defaultMonthValue =\r\n monthEntityArray.find(f => f.Id === dateUtils.getMonth(new Date())) ??\r\n ({\r\n Id: dateUtils.getMonth(new Date()),\r\n Name: dateUtils.format(new Date(), dateUtils.DateIOFormats.monthShort),\r\n FullName: dateUtils.format(new Date(), dateUtils.DateIOFormats.month),\r\n MonthId: dateUtils.getMonth(new Date()) + 1,\r\n } as Entity);\r\nexport const getMonthEntityFromDate = (date?: Date | string | null) => {\r\n if (date === null || date === undefined) {\r\n return defaultMonthValue;\r\n } else {\r\n let toDate = dateUtils.dateOrStringToDate(date);\r\n return (\r\n monthEntityArray.find(f => f.Id === toDate.getMonth()) ??\r\n defaultMonthValue\r\n );\r\n }\r\n};\r\nexport const initMonthData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n monthEntityArray.filter(item => {\r\n return item.Id.toString() === initval.toString();\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nexport function MonthOfYearPicker(props: MonthOfYearPickerProps) {\r\n const getOptions = React.useMemo(() => {\r\n let items = monthEntityArray;\r\n\r\n return GetOptionsFilterFunction(items, (f, search) =>\r\n (f as MonthEntity).MonthId.toString()\r\n .toLowerCase()\r\n .startsWith(search.toLowerCase()),\r\n );\r\n }, []);\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * YearsPicker\r\n *\r\n */\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport React from 'react';\r\n\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\n\r\nexport interface YearsPickerProps\r\n extends Omit>, 'getOptions'> {\r\n date?: Date | string | null;\r\n}\r\nexport const MIN_YEAR: number = 2001;\r\nexport const MAX_YEAR: number = dateUtils.getYear(\r\n dateUtils.addYears(new Date(), 10),\r\n);\r\nexport const yearsEntityArray = Array.from(\r\n { length: MAX_YEAR - MIN_YEAR },\r\n (_, i) => {\r\n const x = MIN_YEAR + i;\r\n return {\r\n Id: x,\r\n Name: x.toString(),\r\n } as Entity;\r\n },\r\n);\r\n\r\nexport const initYearsData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n yearsEntityArray.filter(item => {\r\n return item.Id.toString() === initval.toString();\r\n }),\r\n );\r\n });\r\n }\r\n};\r\nexport const defaultYearValue =\r\n yearsEntityArray.find(f => f.Id === dateUtils.getYear(new Date())) ??\r\n ({\r\n Id: dateUtils.getYear(new Date()),\r\n Name: dateUtils.getYear(new Date()).toString(),\r\n } as Entity);\r\nexport const getYearEntityFromDate = (date?: Date | string | null) => {\r\n if (date === null || date === undefined) {\r\n return defaultYearValue;\r\n } else {\r\n let toDate = dateUtils.dateOrStringToDate(date);\r\n return (\r\n yearsEntityArray.find(f => f.Id === dateUtils.getYear(toDate)) ??\r\n defaultYearValue\r\n );\r\n }\r\n};\r\nexport function YearsPicker(props: YearsPickerProps) {\r\n const getOptions = React.useMemo(() => {\r\n let items = yearsEntityArray;\r\n return GetOptionsFilterFunction(items);\r\n }, []);\r\n return (\r\n \r\n );\r\n}\r\n","import { BaseTextFieldProps, capitalize } from '@material-ui/core';\r\nimport { BaseDatePickerProps, useUtils } from '@material-ui/pickers';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport FormControl from 'app/components/Forms/FormControls/FormControl';\r\nimport FormHelperText from 'app/components/Forms/FormControls/FormHelperText';\r\nimport { InputLabel } from '@material-ui/core';\r\nimport {\r\n DaysByMonthPicker,\r\n defaultDayValue,\r\n getDayEntityFromDate,\r\n} from 'app/components/pickers/StaticOptionsPickers/DaysByMonthPicker';\r\nimport {\r\n defaultMonthValue,\r\n getMonthEntityFromDate,\r\n MonthOfYearPicker,\r\n} from 'app/components/pickers/StaticOptionsPickers/MonthOfYearPicker';\r\nimport {\r\n defaultYearValue,\r\n getYearEntityFromDate,\r\n YearsPicker,\r\n} from 'app/components/pickers/StaticOptionsPickers/YearsPicker';\r\nimport * as React from 'react';\r\n\r\nimport clsx from 'clsx';\r\nimport { Entity } from 'types/common';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { DateValidationProps } from '@material-ui/pickers/_helpers/text-field-helper';\r\nimport { validateDate } from 'app/components/DatePicker/utils/pickerDateValidate';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\n\r\nexport interface DateDropDownValidationProps\r\n extends DateValidationProps,\r\n Pick<\r\n BaseDatePickerProps,\r\n | 'minDate'\r\n | 'maxDate'\r\n | 'disablePast'\r\n | 'disableFuture'\r\n | 'strictCompareDates'\r\n > {}\r\nexport interface DateDropDownProps\r\n extends DateDropDownValidationProps,\r\n Pick<\r\n BaseTextFieldProps,\r\n | 'fullWidth'\r\n | 'helperText'\r\n | 'required'\r\n | 'disabled'\r\n | 'name'\r\n | 'id'\r\n | 'label'\r\n | 'error'\r\n | 'size'\r\n > {\r\n value?: Date | string | null;\r\n onChange: (\r\n date: MaterialUiPickersDate | null,\r\n withCompletion?: boolean,\r\n ) => void;\r\n inputVariant?: 'filled' | 'standard' | 'outlined';\r\n info?: string;\r\n className?: string;\r\n dayDisabled?: boolean;\r\n monthDisabled?: boolean;\r\n yearDisabled?: boolean;\r\n onError?: (\r\n error: React.ReactNode,\r\n value: MaterialUiPickersDate | ParsableDate,\r\n ) => void;\r\n}\r\n\r\nexport function DateDropDown(props: DateDropDownProps) {\r\n const {\r\n value,\r\n onChange,\r\n inputVariant,\r\n id,\r\n name,\r\n fullWidth,\r\n helperText,\r\n disabled,\r\n label,\r\n error,\r\n size,\r\n dayDisabled,\r\n monthDisabled,\r\n yearDisabled,\r\n onError,\r\n } = props;\r\n const { newDate } = useSystemDate();\r\n const utils = useUtils();\r\n const inputLabelId = label && id ? `${id}-label` : undefined;\r\n const helperTextId = id ? `${id}-helper-text` : undefined;\r\n const sizeClass = `inputSize${capitalize(size ?? 'large')}`;\r\n const dateTimeValue = React.useMemo(() => {\r\n return value;\r\n }, [value]);\r\n const [dateSelected, setDateSelected] = React.useState<\r\n Date | string | null | undefined\r\n >(value);\r\n const [daySelected, setDaySelected] = React.useState(\r\n getDayEntityFromDate(dateTimeValue),\r\n );\r\n const [monthSelected, setMonthSelected] = React.useState(\r\n getMonthEntityFromDate(dateTimeValue),\r\n );\r\n const [yearSelected, setYearSelected] = React.useState(\r\n getYearEntityFromDate(dateTimeValue),\r\n );\r\n const [innerError, setInnerError] = React.useState<\r\n React.ReactNode | undefined\r\n >(undefined);\r\n const [isYearOpen, setIsYearOpen] = React.useState(false);\r\n const [isMonthOpen, setIsMonthOpen] = React.useState(false);\r\n const [isDayOpen, setIsDayOpen] = React.useState(false);\r\n const someOpen = React.useMemo(() => {\r\n return isYearOpen || isMonthOpen || isDayOpen;\r\n }, [isDayOpen, isMonthOpen, isYearOpen]);\r\n // const dateStart = React.useMemo(() => {\r\n // return utils.dateFormat.toLowerCase().startsWith('m')\r\n // ? 'fromMonth'\r\n // : utils.dateFormat.toLowerCase().startsWith('d')\r\n // ? 'fromDay'\r\n // : utils.dateFormat.toLowerCase().startsWith('y')\r\n // ? 'fromYear'\r\n // : 'fromDay';\r\n // }, [utils.dateFormat]);\r\n React.useEffect(() => {\r\n setDaySelected(() => getDayEntityFromDate(dateTimeValue));\r\n setMonthSelected(() => getMonthEntityFromDate(dateTimeValue));\r\n setYearSelected(() => getYearEntityFromDate(dateTimeValue));\r\n }, [dateTimeValue]);\r\n\r\n React.useEffect(() => {\r\n if (dateSelected !== null && dateSelected !== undefined) {\r\n let error = validateDate(\r\n daySelected.Id,\r\n monthSelected.Id,\r\n yearSelected.Id,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n dateSelected,\r\n );\r\n if (!!error) {\r\n setInnerError(error);\r\n if (onError) {\r\n onError(error, dateSelected);\r\n }\r\n } else {\r\n setInnerError('');\r\n if (onError) {\r\n onError('', dateSelected);\r\n }\r\n }\r\n } else {\r\n setInnerError('');\r\n if (onError) {\r\n onError('', null);\r\n }\r\n }\r\n }, [\r\n dateSelected,\r\n daySelected.Id,\r\n monthSelected.Id,\r\n onError,\r\n props.disableFuture,\r\n props.disablePast,\r\n props.invalidDateMessage,\r\n props.maxDate,\r\n props.maxDateMessage,\r\n props.minDate,\r\n props.minDateMessage,\r\n props.strictCompareDates,\r\n utils,\r\n yearSelected.Id,\r\n ]);\r\n const handleChange = React.useCallback(\r\n (day: number, month: number, year: number, withCompletion?: boolean) => {\r\n if (dateSelected !== null && dateSelected !== undefined) {\r\n let date = dateUtils.dateOrStringToDate(dateSelected);\r\n let finalDate = dateUtils.set(date, {\r\n year: year,\r\n month: month,\r\n date: day,\r\n });\r\n let hasError = validateDate(\r\n day,\r\n month,\r\n year,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n finalDate,\r\n );\r\n if (!hasError) {\r\n onChange(finalDate, withCompletion);\r\n }\r\n } else {\r\n let finalDate = dateUtils.set(newDate(), {\r\n year: year,\r\n month: month,\r\n date: day,\r\n });\r\n setDateSelected(finalDate);\r\n let hasError = validateDate(\r\n day,\r\n month,\r\n year,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n finalDate,\r\n );\r\n if (!hasError) {\r\n onChange(finalDate, withCompletion);\r\n }\r\n }\r\n },\r\n [\r\n dateSelected,\r\n newDate,\r\n onChange,\r\n props.disableFuture,\r\n props.disablePast,\r\n props.invalidDateMessage,\r\n props.maxDate,\r\n props.maxDateMessage,\r\n props.minDate,\r\n props.minDateMessage,\r\n props.strictCompareDates,\r\n utils,\r\n ],\r\n );\r\n const handleDayChange = React.useCallback(\r\n (val: Entity) => {\r\n setDaySelected(val);\r\n handleChange(val.Id, monthSelected.Id, yearSelected.Id);\r\n },\r\n [handleChange, monthSelected.Id, yearSelected.Id],\r\n );\r\n const handleMonthChange = React.useCallback(\r\n (val: Entity) => {\r\n setMonthSelected(val);\r\n handleChange(daySelected.Id, val.Id, yearSelected.Id);\r\n },\r\n [daySelected.Id, handleChange, yearSelected.Id],\r\n );\r\n const handleYearChange = React.useCallback(\r\n (val: Entity) => {\r\n setYearSelected(val);\r\n handleChange(daySelected.Id, monthSelected.Id, val.Id);\r\n },\r\n [daySelected.Id, handleChange, monthSelected.Id],\r\n );\r\n return (\r\n \r\n ) => {\r\n const target = event.target as any; // as HTMLInputElement;\r\n\r\n if (event.key === 'Enter') {\r\n if (!!target && target.nodeName === 'INPUT') {\r\n if (!someOpen && !innerError) {\r\n handleChange(\r\n daySelected.Id,\r\n monthSelected.Id,\r\n yearSelected.Id,\r\n true,\r\n );\r\n }\r\n }\r\n }\r\n }}\r\n >\r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n
    \r\n handleDayChange(day ?? defaultDayValue)}\r\n id={`${id ?? 'dayId'}_day`}\r\n name={`${name ?? 'dayName'}_day`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || dayDisabled}\r\n ariaLabel={`${label ?? 'day'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n autoFocus={true}\r\n setSomeOpen={setIsDayOpen}\r\n />\r\n handleMonthChange(month ?? defaultMonthValue)}\r\n id={`${id ?? 'monthId'}_month`}\r\n name={`${name ?? 'monthName'}_month`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || monthDisabled}\r\n ariaLabel={`${label ?? 'month'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n setSomeOpen={setIsMonthOpen}\r\n //autoFocus={dateStart === 'fromMonth'}\r\n />\r\n handleYearChange(year ?? defaultYearValue)}\r\n id={`${id ?? 'yearId'}_year`}\r\n name={`${name ?? 'yearName'}_year`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || yearDisabled}\r\n ariaLabel={`${label ?? 'year'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n setSomeOpen={setIsYearOpen}\r\n //autoFocus={dateStart === 'fromYear'}\r\n />\r\n
    \r\n {/*
    \r\n {dateStart === 'fromYear' ? (\r\n \r\n handleYearChange(year ?? defaultYearValue)}\r\n id={`${id ?? 'yearId'}_year`}\r\n name={`${name ?? 'yearName'}_year`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || yearDisabled}\r\n ariaLabel={`${label ?? 'year'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n autoFocus={true}\r\n />\r\n \r\n handleMonthChange(month ?? defaultMonthValue)\r\n }\r\n id={`${id ?? 'monthId'}_month`}\r\n name={`${name ?? 'monthName'}_month`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || monthDisabled}\r\n ariaLabel={`${label ?? 'month'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n />\r\n handleDayChange(day ?? defaultDayValue)}\r\n id={`${id ?? 'dayId'}_day`}\r\n name={`${name ?? 'dayName'}_day`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || dayDisabled}\r\n ariaLabel={`${label ?? 'day'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n />\r\n \r\n ) : dateStart === 'fromMonth' ? (\r\n \r\n \r\n handleMonthChange(month ?? defaultMonthValue)\r\n }\r\n id={`${id ?? 'monthId'}_month`}\r\n name={`${name ?? 'monthName'}_month`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || monthDisabled}\r\n ariaLabel={`${label ?? 'month'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n autoFocus={true}\r\n />\r\n handleDayChange(day ?? defaultDayValue)}\r\n id={`${id ?? 'dayId'}_day`}\r\n name={`${name ?? 'dayName'}_day`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || dayDisabled}\r\n ariaLabel={`${label ?? 'day'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n />\r\n handleYearChange(year ?? defaultYearValue)}\r\n id={`${id ?? 'yearId'}_year`}\r\n name={`${name ?? 'yearName'}_year`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || yearDisabled}\r\n ariaLabel={`${label ?? 'year'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n />\r\n \r\n ) : (\r\n \r\n handleDayChange(day ?? defaultDayValue)}\r\n id={`${id ?? 'dayId'}_day`}\r\n name={`${name ?? 'dayName'}_day`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || dayDisabled}\r\n ariaLabel={`${label ?? 'day'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n autoFocus={true}\r\n />\r\n \r\n handleMonthChange(month ?? defaultMonthValue)\r\n }\r\n id={`${id ?? 'monthId'}_month`}\r\n name={`${name ?? 'monthName'}_month`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || monthDisabled}\r\n ariaLabel={`${label ?? 'month'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n />\r\n handleYearChange(year ?? defaultYearValue)}\r\n id={`${id ?? 'yearId'}_year`}\r\n name={`${name ?? 'yearName'}_year`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || yearDisabled}\r\n ariaLabel={`${label ?? 'year'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n />\r\n \r\n )}\r\n
    */}\r\n {(!!helperText || Boolean(innerError)) && (\r\n \r\n {helperText || innerError}\r\n \r\n )}\r\n \r\n
    \r\n );\r\n}\r\n","/**\r\n *\r\n * HoursPicker\r\n *\r\n */\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport React from 'react';\r\n\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\n\r\nexport interface HoursPickerProps\r\n extends Omit>, 'getOptions'> {\r\n useAmPm?: boolean;\r\n}\r\nexport const hoursEntityArray12 = Array.from({ length: 12 }, (_, i) => {\r\n const x = i + 1;\r\n return {\r\n Id: x,\r\n Name: x.toString(),\r\n } as Entity;\r\n});\r\nexport const hoursEntityArray24 = Array.from({ length: 24 }, (_, i) => {\r\n const x = i;\r\n return {\r\n Id: x,\r\n Name: x.toString(),\r\n } as Entity;\r\n});\r\n\r\nexport const defaultHourValue12 =\r\n hoursEntityArray12.find(\r\n f => f.Id === dateUtils.getMeridiemHours(new Date()),\r\n ) ??\r\n ({\r\n Id: dateUtils.getMeridiemHours(new Date()),\r\n Name: dateUtils.getMeridiemHours(new Date()).toString(),\r\n } as Entity);\r\nexport const defaultHourValue24 =\r\n hoursEntityArray24.find(f => f.Id === dateUtils.getHours(new Date())) ??\r\n ({\r\n Id: dateUtils.getHours(new Date()),\r\n Name: dateUtils.getHours(new Date()).toString(),\r\n } as Entity);\r\nexport const getHoursEntityFromDate = (\r\n ampm: boolean,\r\n date?: Date | string | null,\r\n) => {\r\n if (date === null || date === undefined) {\r\n return ampm ? defaultHourValue12 : defaultHourValue24;\r\n } else {\r\n let toDate = dateUtils.dateOrStringToDate(date);\r\n return ampm\r\n ? hoursEntityArray12.find(\r\n f => f.Id === dateUtils.getMeridiemHours(toDate),\r\n ) ?? defaultHourValue12\r\n : hoursEntityArray24.find(f => f.Id === toDate.getHours()) ??\r\n defaultHourValue24;\r\n }\r\n};\r\nexport const initHoursData = (\r\n initval: number | string | undefined,\r\n ampm?: boolean,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n ampm\r\n ? hoursEntityArray12.filter(item => {\r\n return item.Id.toString() === initval.toString();\r\n })\r\n : hoursEntityArray24.filter(item => {\r\n return item.Id.toString() === initval.toString();\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nexport function HoursPicker(props: HoursPickerProps) {\r\n const getOptions = React.useMemo(() => {\r\n let items = props.useAmPm ? hoursEntityArray12 : hoursEntityArray24;\r\n return GetOptionsFilterFunction(items);\r\n }, [props.useAmPm]);\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * MinutesPicker\r\n *\r\n */\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport React from 'react';\r\n\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\n\r\nexport interface MinutesPickerProps\r\n extends Omit>, 'getOptions'> {\r\n minutesStep?: number;\r\n}\r\nexport const minutesEntityArray = Array.from({ length: 60 }, (_, i) => {\r\n const x = i;\r\n return {\r\n Id: x,\r\n Name: x.toString(),\r\n } as Entity;\r\n});\r\n\r\nexport const defaultMinutes =\r\n minutesEntityArray.find(f => f.Id === dateUtils.getMinutes(new Date())) ??\r\n ({\r\n Id: dateUtils.getMinutes(new Date()),\r\n Name: dateUtils.getMinutes(new Date()).toString(),\r\n } as Entity);\r\n\r\nexport const getMinutesEntityFromDate = (\r\n date?: Date | string | null,\r\n minutesStep?: number,\r\n) => {\r\n if (date === null || date === undefined) {\r\n return defaultMinutes;\r\n } else {\r\n let toDate = dateUtils.dateOrStringToDate(date);\r\n return (\r\n minutesEntityArray.find(f => f.Id === toDate.getMinutes()) ??\r\n defaultMinutes\r\n );\r\n }\r\n};\r\nexport const initMinutesData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n minutesEntityArray.filter(item => {\r\n return item.Id.toString() === initval.toString();\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nexport function MinutesPicker(props: MinutesPickerProps) {\r\n const { minutesStep, mini, size, id, value, ...other } = props;\r\n const getOptions = React.useMemo(() => {\r\n let items =\r\n !!minutesStep && minutesStep > 0 && minutesStep <= 30\r\n ? minutesEntityArray.filter(f => f.Id % minutesStep === 0)\r\n : minutesEntityArray;\r\n return GetOptionsFilterFunction(items);\r\n }, [minutesStep]);\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AmPmPicker\r\n *\r\n */\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport React from 'react';\r\n\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\n\r\nexport interface AmPmPickerProps\r\n extends Omit>, 'getOptions'> {}\r\nexport const AmPmEntityArray = [\r\n {\r\n Id: 'am',\r\n Name: 'AM',\r\n },\r\n {\r\n Id: 'pm',\r\n Name: 'PM',\r\n },\r\n] as Entity[];\r\n\r\nexport const defaultAmPm = AmPmEntityArray[0];\r\n// AmPmEntityArray.find(f => f.Id === dateUtils.getMinutes(new Date())) ??\r\n// ({\r\n// Id: dateUtils.getMinutes(new Date()),\r\n// Name: dateUtils.getMinutes(new Date()).toString(),\r\n// } as Entity);\r\n\r\nexport const getAmPmEntityFromDate = (date?: Date | string | null) => {\r\n if (date === null || date === undefined) {\r\n return AmPmEntityArray[0];\r\n } else {\r\n let meridiem = dateUtils.getMeridiem(date);\r\n return AmPmEntityArray.find(f => f.Id === meridiem) ?? AmPmEntityArray[0];\r\n }\r\n};\r\nexport const initAmPmData = (\r\n initval: string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n AmPmEntityArray.filter(item => {\r\n return item.Id.toString() === initval.toString();\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nexport function AmPmPicker(props: AmPmPickerProps) {\r\n const getOptions = React.useMemo(() => {\r\n let items = AmPmEntityArray;\r\n return GetOptionsFilterFunction(items);\r\n }, []);\r\n return (\r\n \r\n );\r\n}\r\n","import { BaseTextFieldProps, capitalize } from '@material-ui/core';\r\nimport { BaseTimePickerProps, useUtils } from '@material-ui/pickers';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport FormControl from 'app/components/Forms/FormControls/FormControl';\r\nimport FormHelperText from 'app/components/Forms/FormControls/FormHelperText';\r\nimport { InputLabel } from '@material-ui/core';\r\nimport * as React from 'react';\r\n\r\nimport clsx from 'clsx';\r\nimport { Entity } from 'types/common';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { validateError } from 'app/components/DatePicker/utils/pickerDateValidate';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\nimport { DateDropDownValidationProps } from '../DateDropDown';\r\nimport {\r\n defaultHourValue12,\r\n defaultHourValue24,\r\n getHoursEntityFromDate,\r\n HoursPicker,\r\n} from 'app/components/pickers/StaticOptionsPickers/HoursPicker';\r\nimport {\r\n defaultMinutes,\r\n getMinutesEntityFromDate,\r\n MinutesPicker,\r\n} from 'app/components/pickers/StaticOptionsPickers/MinutesPicker';\r\nimport {\r\n AmPmPicker,\r\n defaultAmPm,\r\n getAmPmEntityFromDate,\r\n} from 'app/components/pickers/StaticOptionsPickers/AmPmPicker';\r\n\r\nexport interface TimeDropDownProps\r\n extends DateDropDownValidationProps,\r\n BaseTimePickerProps,\r\n Pick<\r\n BaseTextFieldProps,\r\n | 'fullWidth'\r\n | 'helperText'\r\n | 'required'\r\n | 'disabled'\r\n | 'name'\r\n | 'id'\r\n | 'label'\r\n | 'error'\r\n | 'size'\r\n > {\r\n value?: Date | string | null;\r\n onChange: (\r\n date: MaterialUiPickersDate | null,\r\n withCompletion?: boolean,\r\n ) => void;\r\n inputVariant?: 'filled' | 'standard' | 'outlined';\r\n info?: string;\r\n className?: string;\r\n hoursDisabled?: boolean;\r\n minutesDisabled?: boolean;\r\n onError?: (\r\n error: React.ReactNode,\r\n value: MaterialUiPickersDate | ParsableDate,\r\n ) => void;\r\n}\r\n\r\nexport function TimeDropDown(props: TimeDropDownProps) {\r\n const {\r\n value,\r\n onChange,\r\n inputVariant,\r\n id,\r\n name,\r\n fullWidth,\r\n helperText,\r\n disabled,\r\n label,\r\n error,\r\n size,\r\n hoursDisabled,\r\n minutesDisabled,\r\n ampm,\r\n minutesStep,\r\n onError,\r\n } = props;\r\n const { newDate } = useSystemDate();\r\n const utils = useUtils();\r\n const inputLabelId = label && id ? `${id}-label` : undefined;\r\n const helperTextId = id ? `${id}-helper-text` : undefined;\r\n const sizeClass = `inputSize${capitalize(size ?? 'large')}`;\r\n const dateTimeValue = React.useMemo(() => {\r\n return value;\r\n }, [value]);\r\n const [dateSelected, setDateSelected] = React.useState<\r\n Date | string | null | undefined\r\n >(value);\r\n const [hoursSelected, setHoursSelected] = React.useState(\r\n getHoursEntityFromDate(ampm ?? false, dateTimeValue),\r\n );\r\n const [minutesSelected, setMinutesSelected] = React.useState(\r\n getMinutesEntityFromDate(dateTimeValue),\r\n );\r\n const [ampmSelected, setAmpmSelected] = React.useState(\r\n getAmPmEntityFromDate(dateTimeValue),\r\n );\r\n const [isHourOpen, setIsHourOpen] = React.useState(false);\r\n const [isMinuteOpen, setIsMinuteOpen] = React.useState(false);\r\n const [isAmPmOpen, setIsAmPmOpen] = React.useState(false);\r\n const someOpen = React.useMemo(() => {\r\n return isHourOpen || isMinuteOpen || isAmPmOpen;\r\n }, [isHourOpen, isMinuteOpen, isAmPmOpen]);\r\n const [innerError, setInnerError] = React.useState<\r\n React.ReactNode | undefined\r\n >(undefined);\r\n\r\n React.useEffect(() => {\r\n setHoursSelected(() =>\r\n getHoursEntityFromDate(ampm ?? false, dateTimeValue),\r\n );\r\n setMinutesSelected(() => getMinutesEntityFromDate(dateTimeValue));\r\n setAmpmSelected(() => getAmPmEntityFromDate(dateTimeValue));\r\n }, [ampm, dateTimeValue]);\r\n\r\n React.useEffect(() => {\r\n if (dateSelected !== null && dateSelected !== undefined) {\r\n let time = dateUtils.set(dateUtils.dateOrStringToDate(dateSelected), {\r\n hours: hoursSelected.Id,\r\n minutes: minutesSelected.Id,\r\n });\r\n let validateDate = dateUtils.convertToMeridiem(\r\n time,\r\n ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n ampm ?? false,\r\n );\r\n let error = validateError(\r\n validateDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!!error) {\r\n setInnerError(error);\r\n if (onError) {\r\n onError(error, validateDate);\r\n }\r\n } else {\r\n setInnerError('');\r\n if (onError) {\r\n onError('', validateDate);\r\n }\r\n }\r\n } else {\r\n setInnerError('');\r\n if (onError) {\r\n onError('', null);\r\n }\r\n }\r\n }, [\r\n ampm,\r\n ampmSelected.Id,\r\n dateSelected,\r\n hoursSelected.Id,\r\n minutesSelected.Id,\r\n onError,\r\n props.disableFuture,\r\n props.disablePast,\r\n props.invalidDateMessage,\r\n props.maxDate,\r\n props.maxDateMessage,\r\n props.minDate,\r\n props.minDateMessage,\r\n props.strictCompareDates,\r\n utils,\r\n ]);\r\n const handleChange = React.useCallback(\r\n (\r\n hour: number,\r\n minute: number,\r\n ampmValue: 'am' | 'pm',\r\n withCompletion?: boolean,\r\n ) => {\r\n if (dateSelected !== null && dateSelected !== undefined) {\r\n let time = dateUtils.set(dateUtils.dateOrStringToDate(dateSelected), {\r\n hours: hour,\r\n minutes: minute,\r\n });\r\n let finalDate = dateUtils.convertToMeridiem(\r\n time,\r\n ampmValue,\r\n ampm ?? false,\r\n );\r\n let hasError = validateError(\r\n finalDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!hasError || hasError === '') {\r\n onChange(finalDate, withCompletion);\r\n }\r\n } else {\r\n let time = dateUtils.set(newDate(), { hours: hour, minutes: minute });\r\n let finalDate = dateUtils.convertToMeridiem(\r\n time,\r\n ampmValue,\r\n ampm ?? false,\r\n );\r\n setDateSelected(finalDate);\r\n let hasError = validateError(\r\n finalDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!hasError || hasError === '') {\r\n onChange(finalDate, withCompletion);\r\n }\r\n }\r\n },\r\n [\r\n ampm,\r\n dateSelected,\r\n newDate,\r\n onChange,\r\n props.disableFuture,\r\n props.disablePast,\r\n props.invalidDateMessage,\r\n props.maxDate,\r\n props.maxDateMessage,\r\n props.minDate,\r\n props.minDateMessage,\r\n props.strictCompareDates,\r\n utils,\r\n ],\r\n );\r\n const handleHoursChange = React.useCallback(\r\n (val: Entity) => {\r\n setHoursSelected(val);\r\n handleChange(\r\n val.Id,\r\n minutesSelected.Id,\r\n ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n );\r\n },\r\n [ampmSelected.Id, handleChange, minutesSelected.Id],\r\n );\r\n const handleMinutesChange = React.useCallback(\r\n (val: Entity) => {\r\n setMinutesSelected(val);\r\n handleChange(\r\n hoursSelected.Id,\r\n val.Id,\r\n ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n );\r\n },\r\n [ampmSelected.Id, handleChange, hoursSelected.Id],\r\n );\r\n const handleAmPmChange = React.useCallback(\r\n (val: Entity) => {\r\n setAmpmSelected(val);\r\n handleChange(\r\n hoursSelected.Id,\r\n minutesSelected.Id,\r\n val.Id === 'am' ? 'am' : 'pm',\r\n );\r\n },\r\n [handleChange, hoursSelected.Id, minutesSelected.Id],\r\n );\r\n return (\r\n \r\n ) => {\r\n const target = event.target as any; // as HTMLInputElement;\r\n\r\n if (event.key === 'Enter') {\r\n if (!!target && target.nodeName === 'INPUT') {\r\n if (!someOpen && !innerError) {\r\n handleChange(\r\n hoursSelected.Id,\r\n minutesSelected.Id,\r\n ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n true,\r\n );\r\n }\r\n }\r\n }\r\n }}\r\n >\r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n
    \r\n \r\n handleHoursChange(\r\n hour ?? (ampm ? defaultHourValue12 : defaultHourValue24),\r\n )\r\n }\r\n id={`${id ?? 'hourId'}_hour`}\r\n name={`${name ?? 'hourName'}_hour`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || hoursDisabled}\r\n ariaLabel={`${label ?? 'hour'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n disableClearable\r\n autoFocus={true}\r\n placeholder={'HH'}\r\n setSomeOpen={setIsHourOpen}\r\n // disableListWrap\r\n // disableCloseOnSelect\r\n // ListboxProps={{\r\n // style: { maxHeight: '20vh' },\r\n // }}\r\n // isOpen={true}\r\n />\r\n handleMinutesChange(minute ?? defaultMinutes)}\r\n id={`${id ?? 'minuteId'}_minute`}\r\n name={`${name ?? 'minuteName'}_minute`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled || minutesDisabled}\r\n ariaLabel={`${label ?? 'minute'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n minutesStep={minutesStep}\r\n disableClearable\r\n placeholder={'mm'}\r\n setSomeOpen={setIsMinuteOpen}\r\n // disableCloseOnSelect\r\n // ListboxProps={{\r\n // style: { maxHeight: '20vh' },\r\n // }}\r\n // isOpen={true}\r\n />\r\n {ampm && (\r\n handleAmPmChange(ampmVal ?? defaultAmPm)}\r\n id={`${id ?? 'ampmId'}_ampm`}\r\n name={`${name ?? 'ampmName'}_ampm`}\r\n variant={inputVariant ?? 'standard'}\r\n disabled={disabled}\r\n ariaLabel={`${label ?? 'ampm'} select`}\r\n error={error}\r\n size={size || 'small'}\r\n placeholder={'AM/PM'}\r\n disableClearable\r\n setSomeOpen={setIsAmPmOpen}\r\n // disableCloseOnSelect\r\n // ListboxProps={{\r\n // style: { maxHeight: '20vh' },\r\n // }}\r\n // isOpen={true}\r\n />\r\n )}\r\n
    \r\n {(!!helperText || Boolean(innerError)) && (\r\n \r\n {helperText || innerError}\r\n \r\n )}\r\n \r\n
    \r\n );\r\n}\r\n","import { useEffect, useLayoutEffect } from 'react';\r\n\r\nconst useIsomorphicLayoutEffect =\r\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\r\n\r\nexport default useIsomorphicLayoutEffect;\r\n","import { RefObject, useEffect, useRef } from 'react';\r\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\r\n\r\n// Window Event based useEventListener interface\r\nfunction useEventListener(\r\n eventName: K,\r\n handler: (event: WindowEventMap[K]) => void,\r\n element?: undefined,\r\n options?: boolean | AddEventListenerOptions,\r\n): void;\r\n\r\n// Element Event based useEventListener interface\r\nfunction useEventListener<\r\n K extends keyof HTMLElementEventMap,\r\n T extends HTMLElement = HTMLDivElement,\r\n>(\r\n eventName: K,\r\n handler: (event: HTMLElementEventMap[K]) => void,\r\n element: RefObject,\r\n options?: boolean | AddEventListenerOptions,\r\n): void;\r\n\r\n// Document Event based useEventListener interface\r\nfunction useEventListener(\r\n eventName: K,\r\n handler: (event: DocumentEventMap[K]) => void,\r\n element: RefObject,\r\n options?: boolean | AddEventListenerOptions,\r\n): void;\r\n\r\nfunction useEventListener<\r\n KW extends keyof WindowEventMap,\r\n KH extends keyof HTMLElementEventMap,\r\n T extends HTMLElement | void = void,\r\n>(\r\n eventName: KW | KH,\r\n handler: (\r\n event: WindowEventMap[KW] | HTMLElementEventMap[KH] | Event,\r\n ) => void,\r\n element?: RefObject,\r\n options?: boolean | AddEventListenerOptions,\r\n) {\r\n // Create a ref that stores handler\r\n const savedHandler = useRef(handler);\r\n\r\n useIsomorphicLayoutEffect(() => {\r\n savedHandler.current = handler;\r\n }, [handler]);\r\n\r\n useEffect(() => {\r\n // Define the listening target\r\n const targetElement: T | Window = element?.current || window;\r\n if (!(targetElement && targetElement.addEventListener)) {\r\n return;\r\n }\r\n\r\n // Create event listener that calls handler function stored in ref\r\n const eventListener: typeof handler = event => savedHandler.current(event);\r\n\r\n targetElement.addEventListener(eventName, eventListener, options);\r\n\r\n // Remove event listener on cleanup\r\n return () => {\r\n targetElement.removeEventListener(eventName, eventListener);\r\n };\r\n }, [eventName, element, options]);\r\n}\r\n\r\nexport default useEventListener;\r\n","/* @flow */\r\n\r\nimport useIsomorphicLayoutEffect from 'app/hooks/useIsomorphicLayoutEffect';\r\nimport * as React from 'react';\r\nimport {\r\n DateStartWith,\r\n DateTimeMask,\r\n formatingDate,\r\n formatingTime,\r\n getMaskedDateValue,\r\n getMaskedTimeValue,\r\n} from './types';\r\n\r\nexport interface DateChangeProps {\r\n value: string;\r\n onChange: (text: string) => void;\r\n onSelectionChange: () => boolean;\r\n variant: 'date' | 'time';\r\n maskFormats: DateTimeMask;\r\n inputMask: string;\r\n ampm?: boolean;\r\n // format: (str: string) => string;\r\n mask?: boolean;\r\n maskIfEmpty?: boolean;\r\n // replace?: string => string,\r\n // append?: string => string,\r\n // accept?: RegExp,\r\n selectionChanged?: boolean;\r\n}\r\n\r\ntype RenderProps = {\r\n value: string;\r\n onChange: (\r\n evt: React.ChangeEvent,\r\n increment?: 'increase' | 'decrease',\r\n ) => void;\r\n};\r\n\r\nexport type ResolverProps = {\r\n props: DateChangeProps;\r\n children: (props: RenderProps) => React.ReactNode;\r\n};\r\n\r\nexport const useDateTimeChange = (props: DateChangeProps): RenderProps => {\r\n const [, refresh] = React.useReducer(c => c + 1, 0);\r\n const valueRef = React.useRef(null);\r\n\r\n const dateTimeMask = props.maskFormats;\r\n const dateStartOf: DateStartWith = React.useMemo(() => {\r\n return dateTimeMask.dateStartFrom;\r\n }, [dateTimeMask.dateStartFrom]);\r\n // const { replace, append } = props;\r\n // const { variant } = props;\r\n // const userValue = replace\r\n // ? replace(props.format(props.value))\r\n // : props.format(props.value);\r\n const userValue = props.value;\r\n // state of delete button see comments below about inputType support\r\n const isDeleleteButtonDownRef = React.useRef(false);\r\n const wasZeroBefore = React.useRef(false);\r\n const selectionStateChanged = React.useRef(false);\r\n const onChange = (\r\n evt: React.ChangeEvent,\r\n increment?: 'increase' | 'decrease',\r\n ) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (evt.target.type === 'number') {\r\n console.error(\r\n 'Rifm does not support input type=number, use type=tel instead.',\r\n );\r\n return;\r\n }\r\n if (evt.target.type === 'date') {\r\n console.error('Rifm does not support input type=date.');\r\n return;\r\n }\r\n }\r\n\r\n const eventValue = evt.target.value;\r\n const target = evt.target as HTMLInputElement;\r\n const oneLetterHour =\r\n props.variant === 'time' &&\r\n props.ampm &&\r\n dateTimeMask.hour.length === 1 &&\r\n (eventValue === '' || eventValue.split(':')[0].length === 1);\r\n const hasSingleChar =\r\n eventValue.length === 1 && (target.selectionStart ?? 0) <= 1;\r\n const maskedValue = hasSingleChar\r\n ? props.variant === 'time'\r\n ? getMaskedTimeValue(props.maskFormats, props.ampm, eventValue)\r\n : getMaskedDateValue(props.maskFormats, eventValue)\r\n : undefined;\r\n selectionStateChanged.current = props.onSelectionChange();\r\n valueRef.current = [\r\n hasSingleChar ? maskedValue : eventValue, // eventValue\r\n target, // input\r\n // eventValue.length > userValue.length, // isSizeIncreaseOperation\r\n // eventValue.length < userValue.length, // isSizeDecraseOperation\r\n increment, //'increase' | 'decrease' by keyboard\r\n props.variant === 'time' &&\r\n (target.selectionStart ?? 0) <= (oneLetterHour ? 1 : 2), //isHourChanged\r\n props.variant === 'time' &&\r\n (target.selectionStart ?? 0) > (oneLetterHour ? 1 : 2) &&\r\n (target.selectionEnd ?? 0) <= (oneLetterHour ? 4 : 5), //isMinutesChanged\r\n props.variant === 'time' &&\r\n props.ampm &&\r\n (target.selectionStart ?? 0) >= 5, //isAmPmChanged\r\n dateStartOf === 'day'\r\n ? (target.selectionStart ?? 0) <= 2\r\n : dateStartOf === 'month'\r\n ? (target.selectionStart ?? 0) > 2 && (target.selectionEnd ?? 0) <= 5\r\n : (target.selectionStart ?? 0) >= 8, //isDayChanged\r\n dateStartOf === 'day'\r\n ? (target.selectionStart ?? 0) > 2 && (target.selectionEnd ?? 0) <= 5\r\n : dateStartOf === 'month'\r\n ? (target.selectionStart ?? 0) <= 2\r\n : (target.selectionStart ?? 0) > 4 && (target.selectionEnd ?? 0) < 7, //isMonthChanged\r\n\r\n dateStartOf === 'day' || dateStartOf === 'month'\r\n ? (target.selectionStart ?? 0) > 5\r\n : (target.selectionStart ?? 0) <= 4, //isYearChanged\r\n isDeleleteButtonDownRef.current, // isDeleleteButtonDown\r\n props.variant === 'time' ? false : userValue === eventValue, // isNoOperation\r\n selectionStateChanged.current,\r\n ];\r\n // if (process.env.NODE_ENV !== 'production') {\r\n // const formattedEventValue = props.format(eventValue);\r\n // if (\r\n // eventValue !== formattedEventValue &&\r\n // eventValue.toLowerCase() === formattedEventValue.toLowerCase()\r\n // ) {\r\n // console.warn(\r\n // 'Case enforcement does not work with format. Please use replace={value => value.toLowerCase()} instead',\r\n // );\r\n // }\r\n // }\r\n\r\n // The main trick is to update underlying input with non formatted value (= eventValue)\r\n // that allows us to calculate right cursor position after formatting (see getCursorPosition)\r\n // then we format new value and call props.onChange with masked/formatted value\r\n // and finally we are able to set cursor position into right place\r\n refresh();\r\n };\r\n // React prints warn on server in non production mode about useLayoutEffect usage\r\n // in both cases it's noop\r\n useIsomorphicLayoutEffect(() => {\r\n if (valueRef.current == null) return;\r\n\r\n let [\r\n eventValue,\r\n input,\r\n increment,\r\n isHourChanged,\r\n isMinutesChanged,\r\n isAmPmChanged,\r\n isDayChanged,\r\n isMonthChanged,\r\n isYearChanged,\r\n isDeleleteButtonDown,\r\n // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed\r\n isNoOperation,\r\n selectionChanged,\r\n ] = valueRef.current;\r\n valueRef.current = null;\r\n let formattedValue = eventValue;\r\n let moveSelectionForward = true;\r\n if (eventValue === '' || eventValue === undefined) {\r\n formattedValue = props.maskIfEmpty\r\n ? props.variant === 'time'\r\n ? getMaskedTimeValue(dateTimeMask, props.ampm)\r\n : getMaskedDateValue(dateTimeMask)\r\n : '';\r\n } else {\r\n if (!isNoOperation) {\r\n if (props.variant === 'time') {\r\n if (isHourChanged || isMinutesChanged || isAmPmChanged) {\r\n let finalTime = formatingTime(\r\n eventValue,\r\n isHourChanged ? 'hour' : isMinutesChanged ? 'minute' : 'meridiem',\r\n dateTimeMask,\r\n userValue,\r\n increment,\r\n props.ampm,\r\n );\r\n formattedValue = finalTime.value;\r\n moveSelectionForward = !finalTime.stayOnSelection;\r\n }\r\n } else {\r\n if (isDayChanged || isMonthChanged || isYearChanged) {\r\n let finalValue = formatingDate(\r\n eventValue,\r\n isDayChanged ? 'day' : isMonthChanged ? 'month' : 'year',\r\n dateTimeMask,\r\n userValue,\r\n increment,\r\n wasZeroBefore.current,\r\n selectionChanged,\r\n );\r\n formattedValue = finalValue.value;\r\n moveSelectionForward = !finalValue.stayOnSelection;\r\n wasZeroBefore.current = finalValue.zeroPress;\r\n }\r\n }\r\n }\r\n }\r\n if (isDeleleteButtonDown) {\r\n }\r\n if (userValue === formattedValue || isNoOperation) {\r\n // if nothing changed for formatted value, just refresh so userValue will be used at render\r\n refresh();\r\n } else {\r\n props.onChange(formattedValue);\r\n }\r\n // const replacedValue = replace ? replace(formattedValue) : formattedValue;\r\n // const replacedValue = formattedValue;\r\n // if (userValue === formattedValue || isNoOperation) {\r\n // // if nothing changed for formatted value, just refresh so userValue will be used at render\r\n // refresh();\r\n // } else {\r\n // props.onChange(formattedValue);\r\n // }\r\n\r\n return () => {\r\n if (\r\n (eventValue === '' || eventValue === undefined) &&\r\n props.maskIfEmpty\r\n ) {\r\n if (props.variant === 'time') {\r\n if (props.ampm) {\r\n let oneLetterHour = dateTimeMask.hour.length === 1;\r\n input.setSelectionRange(0, oneLetterHour ? 1 : 2);\r\n } else {\r\n input.setSelectionRange(0, 2);\r\n }\r\n } else {\r\n if (dateStartOf === 'year') {\r\n input.setSelectionRange(0, 4);\r\n } else {\r\n input.setSelectionRange(0, 2);\r\n }\r\n }\r\n } else {\r\n if (props.variant === 'time') {\r\n let oneLetterHour =\r\n props.ampm &&\r\n dateTimeMask.hour.length === 1 &&\r\n formattedValue.split(':')[0].length === 1;\r\n if (isHourChanged) {\r\n if (moveSelectionForward) {\r\n input.setSelectionRange(\r\n oneLetterHour ? 2 : 3,\r\n oneLetterHour ? 4 : 5,\r\n );\r\n } else {\r\n input.setSelectionRange(0, oneLetterHour ? 1 : 2);\r\n }\r\n }\r\n if (isMinutesChanged) {\r\n if (props.ampm) {\r\n if (moveSelectionForward) {\r\n input.setSelectionRange(\r\n oneLetterHour ? 5 : 6,\r\n oneLetterHour ? 7 : 8,\r\n );\r\n } else {\r\n input.setSelectionRange(\r\n oneLetterHour ? 2 : 3,\r\n oneLetterHour ? 4 : 5,\r\n );\r\n }\r\n } else {\r\n input.setSelectionRange(3, 5);\r\n }\r\n }\r\n if (isAmPmChanged) {\r\n input.setSelectionRange(\r\n oneLetterHour ? 5 : 6,\r\n oneLetterHour ? 7 : 8,\r\n );\r\n }\r\n } else {\r\n if (isDayChanged) {\r\n if (moveSelectionForward) {\r\n if (dateStartOf === 'year') {\r\n input.setSelectionRange(8, 10);\r\n } else if (dateStartOf === 'month') {\r\n input.setSelectionRange(6, 10);\r\n } else {\r\n input.setSelectionRange(3, 5);\r\n }\r\n } else {\r\n if (dateStartOf === 'year') {\r\n input.setSelectionRange(8, 10);\r\n } else if (dateStartOf === 'month') {\r\n input.setSelectionRange(3, 5);\r\n } else {\r\n input.setSelectionRange(0, 2);\r\n }\r\n }\r\n }\r\n if (isMonthChanged) {\r\n if (moveSelectionForward) {\r\n if (dateStartOf === 'year') {\r\n input.setSelectionRange(8, 10);\r\n } else if (dateStartOf === 'month') {\r\n input.setSelectionRange(3, 5);\r\n } else {\r\n input.setSelectionRange(6, 10);\r\n }\r\n } else {\r\n if (dateStartOf === 'year') {\r\n input.setSelectionRange(3, 5);\r\n } else if (dateStartOf === 'month') {\r\n input.setSelectionRange(0, 2);\r\n } else {\r\n input.setSelectionRange(3, 5);\r\n }\r\n }\r\n }\r\n if (isYearChanged) {\r\n if (moveSelectionForward) {\r\n if (dateStartOf === 'year') {\r\n input.setSelectionRange(5, 7);\r\n } else if (dateStartOf === 'month') {\r\n input.setSelectionRange(6, 10);\r\n } else {\r\n input.setSelectionRange(6, 10);\r\n }\r\n } else {\r\n if (dateStartOf === 'year') {\r\n input.setSelectionRange(0, 4);\r\n } else if (dateStartOf === 'month') {\r\n input.setSelectionRange(6, 10);\r\n } else {\r\n input.setSelectionRange(6, 10);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n selectionStateChanged.current = false;\r\n // let start = getCursorPosition(formattedValue);\r\n // // Visually improves working with masked values,\r\n // // like cursor jumping over refused symbols\r\n // // as an example date mask: was \"5|1-24-3\" then user pressed \"6\"\r\n // // it becomes \"56-|12-43\" with this code, and \"56|-12-43\" without\r\n // if (\r\n // props.mask != null &&\r\n // (isSizeIncreaseOperation ||\r\n // isSizeDecraseOperation ||\r\n // (isDeleleteButtonDown && !deleteWasNoOp))\r\n // ) {\r\n // while (formattedValue[start] && clean(formattedValue[start]) === '') {\r\n // start += 1;\r\n // }\r\n // }\r\n // input.selectionStart = input.selectionEnd =\r\n // start + (deleteWasNoOp ? 1 + charsToSkipAfterDelete : 0);\r\n };\r\n });\r\n\r\n React.useEffect(() => {\r\n // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported\r\n // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)\r\n // there is no way I found to distinguish in onChange\r\n // backspace or delete was called in some situations\r\n // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239\r\n const handleKeyDown = (evt: KeyboardEvent) => {\r\n if (evt.code === 'Delete') {\r\n isDeleleteButtonDownRef.current = true;\r\n }\r\n };\r\n\r\n const handleKeyUp = (evt: KeyboardEvent) => {\r\n if (evt.code === 'Delete') {\r\n isDeleleteButtonDownRef.current = false;\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', handleKeyDown);\r\n document.addEventListener('keyup', handleKeyUp);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown);\r\n document.removeEventListener('keyup', handleKeyUp);\r\n };\r\n }, []);\r\n\r\n return {\r\n value: valueRef.current != null ? valueRef.current[0] : userValue,\r\n onChange,\r\n };\r\n};\r\n\r\nexport const DateTimeResolver = (props: ResolverProps) => {\r\n const renderProps = useDateTimeChange(props.props);\r\n\r\n return props.children(renderProps);\r\n};\r\n","import {\r\n BaseTextFieldProps,\r\n InputAdornment,\r\n InputAdornmentProps,\r\n TextFieldProps,\r\n} from '@material-ui/core';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport BaseTextField from 'app/components/BasicInputs/BaseTextField';\r\nimport React from 'react';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport {\r\n dateArrowSelection,\r\n DatePopupVariants,\r\n dateSelection,\r\n DateTimeMask,\r\n defaultDateTimeMask,\r\n getMaskedDateValue,\r\n getMaskedTimeValue,\r\n timeSelection,\r\n} from '../utils/types';\r\nimport { useDateTimeChange } from '../utils/useDateTimeChange';\r\n\r\nexport interface KeyboardRifmInputProps\r\n extends Pick<\r\n BaseTextFieldProps,\r\n | 'autoFocus'\r\n | 'fullWidth'\r\n | 'helperText'\r\n | 'placeholder'\r\n | 'required'\r\n | 'disabled'\r\n | 'name'\r\n | 'id'\r\n | 'label'\r\n | 'margin'\r\n | 'error'\r\n | 'size'\r\n > {\r\n format: string;\r\n onChange: (value: string | null, withCompletion?: boolean) => void;\r\n openPicker: () => void;\r\n validationError?: React.ReactNode;\r\n inputValue: string;\r\n inputProps?: TextFieldProps['inputProps'];\r\n InputProps?: TextFieldProps['InputProps'];\r\n onBlur?: TextFieldProps['onBlur'];\r\n onFocus?: TextFieldProps['onFocus'];\r\n InputAdornmentProps?: Partial;\r\n /** Override input component */\r\n TextFieldComponent?: React.ComponentType;\r\n /** Icon displaying for open picker button */\r\n keyboardIcon?: React.ReactNode;\r\n /** Pass material-ui text field variant down, bypass internal variant prop */\r\n inputVariant?: TextFieldProps['variant'];\r\n info?: string;\r\n ariaLabel?: string;\r\n startIcon?: React.ReactNode;\r\n endIcon?: React.ReactNode;\r\n togglePicker: () => void;\r\n variant: Omit;\r\n ampm?: boolean;\r\n isPickerOpen?: boolean;\r\n maskIfEmpty?: boolean;\r\n clearable?: boolean;\r\n}\r\n\r\nexport function KeyboardRifmInput({\r\n inputValue,\r\n openPicker,\r\n InputProps,\r\n TextFieldComponent,\r\n inputProps,\r\n inputVariant,\r\n togglePicker,\r\n info,\r\n ariaLabel,\r\n startIcon,\r\n endIcon,\r\n variant,\r\n format,\r\n ampm,\r\n onChange,\r\n isPickerOpen,\r\n maskIfEmpty,\r\n // refuse = /[^\\d]+/gi, //props.ampm ? /[^\\dap]+/gi : /[^\\d]+/gi\r\n // maskChar = '_',\r\n ...props\r\n}: KeyboardRifmInputProps) {\r\n const TextComponent = !!TextFieldComponent\r\n ? TextFieldComponent\r\n : BaseTextField;\r\n\r\n // const keyDownRef = React.useRef({\r\n // selectionStart: 0,\r\n // selectionEnd: 0,\r\n // });\r\n // used to show mask for each part of the Date - e.g. MM, DD, YYYY\r\n const dateTimeMask: DateTimeMask = React.useMemo(() => {\r\n return defaultDateTimeMask(format, variant === 'time' ? 'time' : 'date');\r\n }, [format, variant]);\r\n\r\n // //indicator of start date based on dateUtils dateFrmat definition per local time zone - is date is start form day/month/year;\r\n // const dateStartWith = React.useMemo(() => {\r\n // return dateStartFrom ?? dateStart;\r\n // }, [dateStartFrom]);\r\n\r\n //generated mask for date, so will be replaced when value is null\r\n const inputMask = React.useMemo(() => {\r\n return variant === 'time'\r\n ? getMaskedTimeValue(dateTimeMask, ampm)\r\n : getMaskedDateValue(dateTimeMask);\r\n }, [ampm, dateTimeMask, variant]);\r\n const [hasError, setHasError] = React.useState(\r\n props.error || Boolean(props.validationError),\r\n );\r\n\r\n const [errorMessage, setErrorMessage] = React.useState(\r\n hasError ? props.validationError || props.helperText : undefined,\r\n );\r\n React.useEffect(() => {\r\n setHasError(props.error || Boolean(props.validationError));\r\n setErrorMessage(props.validationError || props.helperText);\r\n }, [props.error, props.helperText, props.validationError]);\r\n const [selectionChanged, setSelectionChanged] = React.useState(false);\r\n const handleChange = (text: string, withCompletion?: boolean) => {\r\n let finalString =\r\n text === '' || text === inputMask\r\n ? maskIfEmpty\r\n ? inputMask\r\n : null\r\n : text;\r\n onChange(finalString, withCompletion);\r\n };\r\n const dateChange = useDateTimeChange({\r\n mask: true,\r\n // format: val => val,\r\n value: inputValue || (maskIfEmpty ? inputMask : ''),\r\n onChange: handleChange,\r\n variant: variant === 'time' ? 'time' : 'date',\r\n maskFormats: dateTimeMask,\r\n ampm: ampm,\r\n inputMask: inputMask,\r\n maskIfEmpty: maskIfEmpty,\r\n onSelectionChange: () => selectionChanged,\r\n });\r\n return (\r\n {\r\n if (variant === 'time') {\r\n timeSelection(event, dateTimeMask);\r\n } else {\r\n dateSelection(event, dateTimeMask);\r\n }\r\n setSelectionChanged(true);\r\n },\r\n onMouseDown: event => {\r\n const target = event.target as HTMLInputElement;\r\n if (!!target.value && target.value !== '') {\r\n target.selectionStart = target.selectionEnd = target.value.length;\r\n }\r\n },\r\n onKeyUp: event => {\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n dateArrowSelection(\r\n event,\r\n event.key === 'ArrowLeft' ? 'left' : 'right',\r\n variant === 'time' ? 'time' : 'date',\r\n dateTimeMask,\r\n );\r\n setSelectionChanged(true);\r\n console.log(event.key, {\r\n selStart: (event.target as any).selectionStart,\r\n selEnd: (event.target as any).selectionEnd,\r\n });\r\n }\r\n if (event.key === 'ArrowUp') {\r\n // keyDownRef.current = {\r\n // selectionStart: (event.target as any).selectionStart,\r\n // selectionEnd: (event.target as any).selectionEnd,\r\n // };\r\n dateChange.onChange(event as any, 'increase');\r\n console.log('ArrowUp', {\r\n selectionStart: (event.target as any).selectionStart,\r\n selectionEnd: (event.target as any).selectionEnd,\r\n });\r\n }\r\n if (event.key === 'ArrowDown') {\r\n dateChange.onChange(event as any, 'decrease');\r\n // keyDownRef.current = {\r\n // selectionStart: (event.target as any).selectionStart,\r\n // selectionEnd: (event.target as any).selectionEnd,\r\n // };\r\n console.log('ArrowUp', {\r\n selStart: (event.target as any).selectionStart,\r\n selEnd: (event.target as any).selectionEnd,\r\n });\r\n }\r\n if (event.key === 'Enter' || event.key === 'Tab') {\r\n handleChange(dateChange.value, true);\r\n }\r\n },\r\n onKeyDown: event => {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n event.nativeEvent.stopImmediatePropagation();\r\n }\r\n },\r\n }}\r\n error={hasError}\r\n onChange={event => {\r\n dateChange.onChange(event);\r\n }}\r\n InputProps={{\r\n ...InputProps,\r\n disableUnderline: inputVariant === 'standard',\r\n autoComplete: 'off',\r\n // startAdornment: (\r\n // \r\n // \r\n // \r\n // ),\r\n endAdornment: (\r\n <>\r\n {(info && ) ||\r\n (endIcon && (\r\n \r\n {endIcon}\r\n \r\n ))}\r\n \r\n togglePicker()}\r\n disabled={props.disabled}\r\n size=\"xs\"\r\n >\r\n \r\n \r\n \r\n {props.clearable &&\r\n Boolean(inputValue || (maskIfEmpty ? inputMask : '')) && (\r\n \r\n handleChange('', true)}\r\n >\r\n \r\n \r\n \r\n )}\r\n \r\n ),\r\n // style: { minWidth: 80 },\r\n }}\r\n InputLabelProps={{\r\n shrink:\r\n inputVariant === 'filled'\r\n ? !isNullOrUndefined(inputValue)\r\n ? true\r\n : false\r\n : undefined,\r\n }}\r\n helperText={errorMessage || props.helperText}\r\n onClick={ev => {\r\n if (!isPickerOpen) {\r\n const target = ev.target as HTMLInputElement;\r\n if (!!target && target.nodeName === 'INPUT') openPicker();\r\n }\r\n }}\r\n onMouseDown={ev => {\r\n if (!isPickerOpen) {\r\n const target = ev.target as HTMLInputElement;\r\n if (!!target && target.nodeName === 'INPUT') openPicker();\r\n }\r\n }}\r\n value={dateChange.value}\r\n variant={inputVariant}\r\n // onKeyUp={(event: React.KeyboardEvent) => {\r\n // if (event.key === 'Enter') {\r\n // event.stopPropagation();\r\n // openPicker();\r\n // }\r\n // }}\r\n autoFocus={props.autoFocus}\r\n size={props.size}\r\n fullWidth={props.fullWidth}\r\n placeholder={props.placeholder}\r\n required={props.required}\r\n disabled={props.disabled}\r\n name={props.name}\r\n id={props.id}\r\n label={props.label}\r\n margin={props.margin}\r\n onBlur={props.onBlur}\r\n onFocus={props.onFocus}\r\n />\r\n );\r\n}\r\n","import { BaseTextFieldProps } from '@material-ui/core';\r\nimport { BaseDatePickerProps, BaseTimePickerProps } from '@material-ui/pickers';\r\nimport { DateValidationProps } from '@material-ui/pickers/_helpers/text-field-helper';\r\nimport { BaseKeyboardPickerProps } from '@material-ui/pickers/_shared/hooks/useKeyboardPickerState';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { KeyboardRifmInput } from './KeyboardRifmInput';\r\nimport * as React from 'react';\r\nimport { IUtils } from '@date-io/core/IUtils';\r\nimport { validateError } from '../DatePicker/utils/pickerDateValidate';\r\nimport { KeyboardDateInputProps } from '@material-ui/pickers/_shared/KeyboardDateInput';\r\nimport { DatePopupVariants, getDisplayDate } from './utils/types';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\n\r\nexport interface KeyboardInputProps\r\n extends DateValidationProps,\r\n Pick,\r\n Pick<\r\n BaseDatePickerProps,\r\n | 'disableFuture'\r\n | 'disablePast'\r\n | 'minDate'\r\n | 'maxDate'\r\n | 'strictCompareDates'\r\n >,\r\n Omit<\r\n KeyboardDateInputProps,\r\n | 'maskChar'\r\n | 'mask'\r\n | 'refuse'\r\n | 'KeyboardButtonProps'\r\n | 'rifmFormatter'\r\n | 'onChange'\r\n | 'format'\r\n >,\r\n Pick<\r\n BaseKeyboardPickerProps,\r\n | 'onChange'\r\n | 'format'\r\n | 'value'\r\n | 'invalidLabel'\r\n | 'emptyLabel'\r\n | 'labelFunc'\r\n | 'onError'\r\n | 'onChange'\r\n >,\r\n Pick<\r\n BaseTextFieldProps,\r\n | 'autoFocus'\r\n | 'fullWidth'\r\n | 'helperText'\r\n | 'placeholder'\r\n | 'required'\r\n | 'disabled'\r\n | 'name'\r\n | 'id'\r\n | 'label'\r\n | 'margin'\r\n > {\r\n info?: string;\r\n ariaLabel?: string;\r\n startIcon?: React.ReactNode;\r\n endIcon?: React.ReactNode;\r\n togglePicker: () => void;\r\n variant: Omit;\r\n isPickerOpen?: boolean;\r\n onChange: (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null,\r\n withCompletion?: boolean,\r\n ) => void;\r\n maskIfEmpty?: boolean;\r\n clearable?: boolean;\r\n}\r\nexport function parseInputString(\r\n value: string,\r\n utils: IUtils,\r\n format: string,\r\n) {\r\n try {\r\n return utils.parse(value, format);\r\n } catch {\r\n return null;\r\n }\r\n}\r\nexport function KeyboardInput({\r\n format = dateUtils.DateIOFormats.keyboardDate,\r\n inputValue,\r\n onChange,\r\n value,\r\n onError,\r\n maxDate,\r\n minDate,\r\n disablePast,\r\n disableFuture,\r\n maxDateMessage,\r\n minDateMessage,\r\n invalidDateMessage,\r\n strictCompareDates,\r\n variant,\r\n size,\r\n maskIfEmpty,\r\n clearable,\r\n ...props\r\n}: KeyboardInputProps) {\r\n const utils = dateUtils.dateFnsUtils;\r\n const displayDate = getDisplayDate(\r\n value,\r\n format,\r\n utils,\r\n value === null || value === '',\r\n {\r\n invalidLabel: props.invalidLabel,\r\n emptyLabel: props.emptyLabel,\r\n labelFunc: props.labelFunc,\r\n },\r\n );\r\n const [innerInputValue, setInnerInputValue] = React.useState(displayDate);\r\n // const dateValue = inputValue\r\n // ? parseInputString(inputValue, utils, format)\r\n // : value;\r\n const changedValueRef = React.useRef(innerInputValue);\r\n React.useEffect(() => {\r\n if (value === null || utils.isValid(value)) {\r\n setInnerInputValue(displayDate);\r\n }\r\n }, [displayDate, setInnerInputValue, utils, value]);\r\n React.useEffect(() => {\r\n let val = innerInputValue;\r\n if (!!val && val !== '') {\r\n let date = val === null ? null : utils.parse(val, format);\r\n\r\n if (!(date?.toString() === 'Invalid Date')) {\r\n if (value !== null || utils.isValid(value)) {\r\n let dateVal = dateUtils.getParsableDate(value);\r\n if (dateVal !== null && date !== null) {\r\n if (variant === 'time') {\r\n date = dateUtils.dateFnsUtils.mergeDateAndTime(dateVal, date);\r\n } else {\r\n date = dateUtils.dateFnsUtils.mergeDateAndTime(date, dateVal);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let error = validateError(\r\n date,\r\n {\r\n maxDate: maxDate,\r\n minDate: minDate,\r\n disablePast: disablePast,\r\n disableFuture: disableFuture,\r\n maxDateMessage: maxDateMessage,\r\n minDateMessage: minDateMessage,\r\n invalidDateMessage: invalidDateMessage,\r\n strictCompareDates: strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!!error) {\r\n setValidationError(error);\r\n if (!!onError) {\r\n onError(error, null);\r\n }\r\n } else {\r\n setValidationError('');\r\n if (!!onError) {\r\n onError('', null);\r\n }\r\n }\r\n } else {\r\n setValidationError('');\r\n if (!!onError) {\r\n onError('', null);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [format, innerInputValue, maxDate, minDate]);\r\n const [innerValidationError, setValidationError] = React.useState<\r\n React.ReactNode | undefined\r\n >(undefined);\r\n const errorMessage = React.useMemo(() => {\r\n return innerValidationError;\r\n }, [innerValidationError]);\r\n // const handleKeyboardChange = React.useCallback(\r\n // (date: MaterialUiPickersDate) => {\r\n // onChange(date, date === null ? null : utils.format(date, format));\r\n // },\r\n // [format, onChange, utils],\r\n // );\r\n\r\n // const inputProps = React.useMemo(\r\n // () => ({\r\n // ...innerInputProps, // reuse validation and open/close logic\r\n // format: format,\r\n // inputValue: inputValue || innerInputValue,\r\n // onChange: (value: string | null) => {\r\n // setInnerInputValue(value || '');\r\n // const date =\r\n // value === null ? null : utils.parse(value, wrapperProps.format);\r\n\r\n // onChange(date, value);\r\n // },\r\n // }),\r\n // [\r\n // innerInputProps,\r\n // innerInputValue,\r\n // inputValue,\r\n // onChange,\r\n // utils,\r\n // wrapperProps.format,\r\n // ],\r\n // );\r\n return (\r\n {\r\n setInnerInputValue(textValue ?? '');\r\n changedValueRef.current = textValue ?? '';\r\n\r\n let date = textValue === null ? null : utils.parse(textValue, format);\r\n\r\n if (!(date?.toString() === 'Invalid Date')) {\r\n if (value !== null || utils.isValid(value)) {\r\n let dateVal = dateUtils.getParsableDate(value);\r\n if (dateVal !== null && date !== null) {\r\n if (variant === 'time') {\r\n date = dateUtils.dateFnsUtils.mergeDateAndTime(dateVal, date);\r\n } else {\r\n date = dateUtils.dateFnsUtils.mergeDateAndTime(date, dateVal);\r\n }\r\n }\r\n }\r\n }\r\n let error = validateError(\r\n date,\r\n {\r\n maxDate: maxDate,\r\n minDate: minDate,\r\n disablePast: disablePast,\r\n disableFuture: disableFuture,\r\n maxDateMessage: maxDateMessage,\r\n minDateMessage: minDateMessage,\r\n invalidDateMessage: invalidDateMessage,\r\n strictCompareDates: strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!!error) {\r\n setValidationError(error);\r\n if (!!onError) {\r\n onError(error, date);\r\n }\r\n } else {\r\n setValidationError('');\r\n if (!!onError) {\r\n onError('', date);\r\n }\r\n // if (!(date?.toString() === 'Invalid Date')) {\r\n // setTimeout(() => {\r\n // if (textValue === changedValueRef.current) {\r\n // onChange(date, textValue);\r\n // }\r\n // }, 1500);\r\n // }\r\n if (!(date?.toString() === 'Invalid Date')) {\r\n onChange(date, textValue, withCompletion);\r\n }\r\n }\r\n }}\r\n isPickerOpen={props.isPickerOpen}\r\n info={props.info}\r\n ariaLabel={props.ariaLabel}\r\n format={format}\r\n validationError={errorMessage || props.validationError}\r\n helperText={errorMessage || props.helperText}\r\n error={Boolean(errorMessage)}\r\n InputProps={props.InputProps}\r\n startIcon={props.startIcon}\r\n endIcon={props.endIcon}\r\n inputVariant={props.inputVariant}\r\n onFocus={props.onFocus}\r\n onBlur={props.onBlur}\r\n ampm={props.ampm}\r\n variant={variant}\r\n size={size}\r\n maskIfEmpty={maskIfEmpty}\r\n clearable={clearable}\r\n {...props}\r\n />\r\n );\r\n}\r\n","import {\r\n BaseTextFieldProps,\r\n capitalize,\r\n Divider,\r\n List,\r\n ListItem,\r\n useTheme,\r\n} from '@material-ui/core';\r\nimport { BaseTimePickerProps, useUtils } from '@material-ui/pickers';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport FormControl from 'app/components/Forms/FormControls/FormControl';\r\nimport FormHelperText from 'app/components/Forms/FormControls/FormHelperText';\r\nimport { InputLabel } from '@material-ui/core';\r\nimport * as React from 'react';\r\n\r\nimport clsx from 'clsx';\r\nimport { Entity } from 'types/common';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { validateError } from 'app/components/DatePicker/utils/pickerDateValidate';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\nimport { DateDropDownValidationProps } from '../DateDropDown';\r\nimport {\r\n getHoursEntityFromDate,\r\n hoursEntityArray12,\r\n hoursEntityArray24,\r\n} from 'app/components/pickers/StaticOptionsPickers/HoursPicker';\r\nimport {\r\n getMinutesEntityFromDate,\r\n minutesEntityArray,\r\n} from 'app/components/pickers/StaticOptionsPickers/MinutesPicker';\r\nimport {\r\n AmPmEntityArray,\r\n getAmPmEntityFromDate,\r\n} from 'app/components/pickers/StaticOptionsPickers/AmPmPicker';\r\nimport styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport interface TimeOptionPickerProps\r\n extends DateDropDownValidationProps,\r\n BaseTimePickerProps,\r\n Pick<\r\n BaseTextFieldProps,\r\n | 'fullWidth'\r\n | 'helperText'\r\n | 'required'\r\n | 'disabled'\r\n | 'name'\r\n | 'id'\r\n | 'label'\r\n | 'error'\r\n | 'size'\r\n > {\r\n value?: Date | string | null;\r\n onChange: (\r\n date: MaterialUiPickersDate | null,\r\n withCompletion?: boolean,\r\n ) => void;\r\n inputVariant?: 'filled' | 'standard' | 'outlined';\r\n info?: string;\r\n className?: string;\r\n hoursDisabled?: boolean;\r\n minutesDisabled?: boolean;\r\n onError?: (\r\n error: React.ReactNode,\r\n value: MaterialUiPickersDate | ParsableDate,\r\n ) => void;\r\n}\r\n\r\nexport function TimeOptionPicker(props: TimeOptionPickerProps) {\r\n const {\r\n value,\r\n onChange,\r\n inputVariant,\r\n id,\r\n fullWidth,\r\n helperText,\r\n disabled,\r\n label,\r\n error,\r\n size,\r\n ampm,\r\n minutesStep,\r\n strictCompareDates = true,\r\n onError,\r\n } = props;\r\n const { newDate } = useSystemDate();\r\n const utils = useUtils();\r\n const theme = useTheme();\r\n const inputLabelId = label && id ? `${id}-label` : undefined;\r\n const helperTextId = id ? `${id}-helper-text` : undefined;\r\n const sizeClass = `inputSize${capitalize(size ?? 'large')}`;\r\n const dateTimeValue = React.useMemo(() => {\r\n return value;\r\n }, [value]);\r\n const [dateSelected, setDateSelected] = React.useState<\r\n Date | string | null | undefined\r\n >(value);\r\n const [hoursSelected, setHoursSelected] = React.useState(\r\n getHoursEntityFromDate(ampm ?? false, dateTimeValue),\r\n );\r\n const [minutesSelected, setMinutesSelected] = React.useState(\r\n getMinutesEntityFromDate(dateTimeValue),\r\n );\r\n const [ampmSelected, setAmpmSelected] = React.useState(\r\n getAmPmEntityFromDate(dateTimeValue),\r\n );\r\n // const [isHourOpen, setIsHourOpen] = React.useState(false);\r\n // const [isMinuteOpen, setIsMinuteOpen] = React.useState(false);\r\n // const [isAmPmOpen, setIsAmPmOpen] = React.useState(false);\r\n // const someOpen = React.useMemo(() => {\r\n // return isHourOpen || isMinuteOpen || isAmPmOpen;\r\n // }, [isHourOpen, isMinuteOpen, isAmPmOpen]);\r\n const [innerError, setInnerError] = React.useState<\r\n React.ReactNode | undefined\r\n >(undefined);\r\n\r\n const hoursItems = React.useMemo(() => {\r\n return ampm ? hoursEntityArray12 : hoursEntityArray24;\r\n }, [ampm]);\r\n const minutesItems = React.useMemo(() => {\r\n return !!minutesStep && minutesStep > 0 && minutesStep <= 30\r\n ? minutesEntityArray.filter(f => f.Id % minutesStep === 0)\r\n : minutesEntityArray;\r\n }, [minutesStep]);\r\n const ampmItems = React.useMemo(() => {\r\n return AmPmEntityArray;\r\n }, []);\r\n const hourRef = React.useRef(null);\r\n const minuteRef = React.useRef(null);\r\n const hourScroll = (selectedId: number, useAmPm?: boolean) => {\r\n if (!!hourRef.current) {\r\n let top = (useAmPm ? selectedId - 1 : selectedId) * 50;\r\n hourRef.current.scrollTo(0, top);\r\n }\r\n };\r\n const minuteScroll = (selectedId: number, step?: number) => {\r\n if (!!minuteRef.current) {\r\n let top = selectedId * 50;\r\n if (step !== undefined) {\r\n top = top / step;\r\n }\r\n minuteRef.current.scrollTo(0, top);\r\n }\r\n };\r\n React.useEffect(() => {\r\n setHoursSelected(() =>\r\n getHoursEntityFromDate(ampm ?? false, dateTimeValue),\r\n );\r\n setMinutesSelected(() => getMinutesEntityFromDate(dateTimeValue));\r\n setAmpmSelected(() => getAmPmEntityFromDate(dateTimeValue));\r\n }, [ampm, dateTimeValue]);\r\n\r\n React.useEffect(() => {\r\n if (!!hourRef.current) {\r\n hourScroll(hoursSelected.Id, ampm);\r\n }\r\n if (!!minuteRef.current) {\r\n minuteScroll(minutesSelected.Id, minutesStep);\r\n }\r\n }, [ampm, hoursSelected.Id, minutesSelected.Id, minutesStep]);\r\n React.useEffect(() => {\r\n if (dateSelected !== null && dateSelected !== undefined) {\r\n let time = dateUtils.set(dateUtils.dateOrStringToDate(dateSelected), {\r\n hours: hoursSelected.Id,\r\n minutes: minutesSelected.Id,\r\n });\r\n let validateDate = dateUtils.convertToMeridiem(\r\n time,\r\n ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n ampm ?? false,\r\n );\r\n let error = validateError(\r\n validateDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!!error) {\r\n setInnerError(error);\r\n if (onError) {\r\n onError(error, validateDate);\r\n }\r\n } else {\r\n setInnerError('');\r\n if (onError) {\r\n onError('', validateDate);\r\n }\r\n }\r\n } else {\r\n setInnerError('');\r\n if (onError) {\r\n onError('', null);\r\n }\r\n }\r\n }, [\r\n ampm,\r\n ampmSelected.Id,\r\n dateSelected,\r\n hoursSelected.Id,\r\n minutesSelected.Id,\r\n onError,\r\n props.disableFuture,\r\n props.disablePast,\r\n props.invalidDateMessage,\r\n props.maxDate,\r\n props.maxDateMessage,\r\n props.minDate,\r\n props.minDateMessage,\r\n strictCompareDates,\r\n utils,\r\n ]);\r\n const handleChange = React.useCallback(\r\n (\r\n hour: number,\r\n minute: number,\r\n ampmValue: 'am' | 'pm',\r\n withCompletion?: boolean,\r\n ) => {\r\n if (dateSelected !== null && dateSelected !== undefined) {\r\n let time = dateUtils.set(dateUtils.dateOrStringToDate(dateSelected), {\r\n hours: hour,\r\n minutes: minute,\r\n });\r\n let finalDate = dateUtils.convertToMeridiem(\r\n time,\r\n ampmValue,\r\n ampm ?? false,\r\n );\r\n let hasError = validateError(\r\n finalDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!hasError || hasError === '') {\r\n onChange(finalDate, withCompletion);\r\n }\r\n } else {\r\n let time = dateUtils.set(newDate(), { hours: hour, minutes: minute });\r\n let finalDate = dateUtils.convertToMeridiem(\r\n time,\r\n ampmValue,\r\n ampm ?? false,\r\n );\r\n setDateSelected(finalDate);\r\n let hasError = validateError(\r\n finalDate,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!hasError || hasError === '') {\r\n onChange(finalDate, withCompletion);\r\n }\r\n }\r\n },\r\n [\r\n ampm,\r\n dateSelected,\r\n newDate,\r\n onChange,\r\n props.disableFuture,\r\n props.disablePast,\r\n props.invalidDateMessage,\r\n props.maxDate,\r\n props.maxDateMessage,\r\n props.minDate,\r\n props.minDateMessage,\r\n strictCompareDates,\r\n utils,\r\n ],\r\n );\r\n const handleHoursChange = React.useCallback(\r\n (val: Entity) => {\r\n setHoursSelected(val);\r\n handleChange(\r\n val.Id,\r\n minutesSelected.Id,\r\n ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n );\r\n },\r\n [ampmSelected.Id, handleChange, minutesSelected.Id],\r\n );\r\n const handleMinutesChange = React.useCallback(\r\n (val: Entity) => {\r\n setMinutesSelected(val);\r\n handleChange(\r\n hoursSelected.Id,\r\n val.Id,\r\n ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n );\r\n },\r\n [ampmSelected.Id, handleChange, hoursSelected.Id],\r\n );\r\n const handleAmPmChange = React.useCallback(\r\n (val: Entity) => {\r\n setAmpmSelected(val);\r\n handleChange(\r\n hoursSelected.Id,\r\n minutesSelected.Id,\r\n val.Id === 'am' ? 'am' : 'pm',\r\n );\r\n },\r\n [handleChange, hoursSelected.Id, minutesSelected.Id],\r\n );\r\n\r\n return (\r\n \r\n ) => {\r\n // const target = event.target as any; // as HTMLInputElement;\r\n\r\n // if (event.key === 'Enter') {\r\n // if (!!target && target.nodeName === 'INPUT') {\r\n // if (!someOpen && !innerError) {\r\n // handleChange(\r\n // hoursSelected.Id,\r\n // minutesSelected.Id,\r\n // ampmSelected.Id === 'am' ? 'am' : 'pm',\r\n // true,\r\n // );\r\n // }\r\n // }\r\n // }\r\n // }}\r\n >\r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n \r\n {hoursItems.map(hour => (\r\n {\r\n handleHoursChange(hour);\r\n }}\r\n onKeyDown={event => {\r\n if (event.key === 'Enter') {\r\n handleHoursChange(hour);\r\n }\r\n }}\r\n selected={hoursSelected.Id === hour.Id}\r\n >\r\n {hour.Name}\r\n \r\n ))}\r\n \r\n \r\n \r\n {minutesItems.map(minute => (\r\n {\r\n handleMinutesChange(minute);\r\n }}\r\n onKeyDown={event => {\r\n if (event.key === 'Enter') {\r\n handleMinutesChange(minute);\r\n }\r\n }}\r\n selected={minutesSelected.Id === minute.Id}\r\n >\r\n {minute.Name}\r\n \r\n ))}\r\n \r\n {ampm && (\r\n \r\n \r\n \r\n {ampmItems.map(ap => (\r\n {\r\n handleAmPmChange(ap);\r\n }}\r\n onKeyDown={event => {\r\n if (event.key === 'Enter') {\r\n handleAmPmChange(ap);\r\n }\r\n }}\r\n selected={ampmSelected.Id === ap.Id}\r\n >\r\n {ap.Name}\r\n \r\n ))}\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n {(!!helperText || Boolean(innerError)) && (\r\n \r\n {helperText || innerError}\r\n \r\n )}\r\n \r\n
    \r\n );\r\n}\r\nconst PickerOptions = styled('div')(({ theme }) => ({\r\n '&.time-options-picker-root': {\r\n display: 'grid',\r\n gridAutoColumns: 'max-content auto max-content',\r\n gridAutoRows: 'max-content auto max-content',\r\n '& .time-options-picker-wrap': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gridColumn: 1,\r\n gridRow: 1,\r\n '& .time-options-picker-section': {\r\n overflow: 'hidden',\r\n maxHeight: '334px',\r\n margin: '0px auto',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n width: '100%',\r\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)',\r\n borderTop: '1px solid rgba(0, 0, 0, 0.12)',\r\n gap: '8px',\r\n padding: '8px 0px',\r\n '& .time-options-picker-list': {\r\n listStyle: 'none',\r\n margin: '0px',\r\n position: 'relative',\r\n maxHeight: '232px',\r\n width: '56px',\r\n padding: '0px',\r\n overflow: 'hidden',\r\n '&.time-options-hours, &.time-options-minutes': {\r\n '&::after': {\r\n display: 'block',\r\n content: '\"\"',\r\n height: 'calc((100% - 40px) - 6px)',\r\n },\r\n '@media (prefers-reduced-motion: no-preference)': {\r\n scrollBehavior: 'auto',\r\n },\r\n '&:hover': {\r\n overflowY: 'auto',\r\n },\r\n '&::-webkit-scrollbar': {\r\n width: '4px',\r\n boxShadow: `inset 0px 0px 1px 1px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '2px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: theme.palette.common.grayBorders,\r\n },\r\n },\r\n '& .time-options-picker-list-item': {\r\n display: 'flex',\r\n minHeight: '48px',\r\n whiteSpace: 'nowrap',\r\n padding: '8px',\r\n margin: '2px 4px',\r\n width: '48px',\r\n borderRadius: '8px',\r\n justifyContent: 'center',\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '16px',\r\n fontStyle: 'normal',\r\n lineHeight: '20px' /* 125% */,\r\n fontWeight: 600,\r\n letterSpacing: '0.2px',\r\n '&.selected': {\r\n backgroundColor: bookitColors.primary.components,\r\n color: bookitColors.base.white,\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.regular,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n },\r\n },\r\n },\r\n '& .time-options-minutes': {\r\n // borderLeft: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n // marginLeft: '12px',\r\n },\r\n '& .time-options-ampm': {\r\n // borderLeft: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n // marginLeft: '12px',\r\n },\r\n '& .time-options-hours': {\r\n // marginRight: '12px',\r\n },\r\n },\r\n },\r\n },\r\n}));\r\n","import { ClickAwayListener, Fade, Paper, useTheme } from '@material-ui/core';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport * as React from 'react';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport clsx from 'clsx';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { DateInput, DateInputProps } from './DateInput';\r\nimport {\r\n DatePopupVariants,\r\n getInputViewDate,\r\n getValueDateOrTruncat,\r\n setInputViewDate,\r\n} from './utils/types';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport {\r\n BaseDatePickerProps,\r\n BaseTimePickerProps,\r\n DatePicker,\r\n KeyboardDatePickerProps,\r\n TimePicker,\r\n useUtils,\r\n} from '@material-ui/pickers';\r\nimport { DatePickerValueProps } from '../DatePicker';\r\nimport { PickerPopper, StyledPicker } from './StyledPicker';\r\nimport { SeparatedPickerProps } from '../KeyBoardDatePicker';\r\nimport { KeyboardDateInputProps } from '@material-ui/pickers/_shared/KeyboardDateInput';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Button } from '../BasicButtons/Button';\r\nimport { BaseKeyboardPickerProps } from '@material-ui/pickers/_shared/hooks/useKeyboardPickerState';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { DateDropDown } from './DateDropDown';\r\nimport { TimeDropDown } from './TimeDropDown';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectDefaultLocaleId } from 'app/slice/selectors';\r\nimport {\r\n validateDate,\r\n validateTime,\r\n} from '../DatePicker/utils/pickerDateValidate';\r\nimport { useKeyUpOutside } from 'app/hooks/useKeyUpOutside';\r\nimport { KeyboardInput } from './KeyboardInput';\r\nimport { TimeOptionPicker } from './TimeOptionPicker';\r\nimport useLocaleUsesAmPm from 'app/hooks/useLocaleUsesAmPm';\r\n\r\nexport interface BookitDatePickerProps\r\n extends BaseDatePickerProps,\r\n Pick,\r\n SeparatedPickerProps,\r\n Pick,\r\n Pick<\r\n KeyboardDateInputProps,\r\n | 'validationError'\r\n | 'keyboardIcon'\r\n | 'mask'\r\n | 'maskChar'\r\n | 'KeyboardButtonProps'\r\n | 'rifmFormatter'\r\n | 'refuse'\r\n >,\r\n Pick<\r\n KeyboardDatePickerProps,\r\n | 'labelFunc'\r\n | 'clearable'\r\n | 'maxDateMessage'\r\n | 'minDateMessage'\r\n | 'invalidDateMessage'\r\n | 'onError'\r\n >,\r\n Pick,\r\n Pick<\r\n DateInputProps,\r\n | 'autoFocus'\r\n | 'fullWidth'\r\n | 'helperText'\r\n | 'placeholder'\r\n | 'error'\r\n | 'required'\r\n | 'disabled'\r\n | 'name'\r\n | 'id'\r\n | 'label'\r\n | 'margin'\r\n | 'inputProps'\r\n | 'InputProps'\r\n | 'TextFieldComponent'\r\n | 'onBlur'\r\n | 'onFocus'\r\n > {\r\n inputVariant?: 'filled' | 'standard' | 'outlined';\r\n closablePicker?: boolean;\r\n closeTitle?: React.ReactNode;\r\n onClose?: () => void;\r\n onOpen?: () => void;\r\n variant?: DatePopupVariants;\r\n info?: string;\r\n ariaLabel?: string;\r\n startIcon?: React.ReactNode;\r\n endIcon?: React.ReactNode;\r\n size?: 'medium' | 'small' | undefined;\r\n className?: string;\r\n fullScreen?: boolean;\r\n readonlyInput?: boolean;\r\n useTimeClockPicker?: boolean;\r\n useTimeDropDowns?: boolean;\r\n useDateDropDowns?: boolean;\r\n useDateCalendarPicker?: boolean;\r\n saveOnSelect?: boolean;\r\n maskIfEmpty?: boolean;\r\n clearable?: boolean;\r\n disableClearable?: boolean;\r\n}\r\n\r\nexport function BookitDatePicker(props: BookitDatePickerProps) {\r\n const isMobile = DetectIsMobile();\r\n const theme = useTheme();\r\n const { t } = useTranslation();\r\n const currentLocaleId = useSelector(selectDefaultLocaleId);\r\n const useAmPm = useLocaleUsesAmPm(\r\n currentLocaleId || Intl.DateTimeFormat().resolvedOptions().locale,\r\n );\r\n //const useAmPm = useSelector(selectUseAmPm);\r\n const utils = useUtils();\r\n const elementRef = React.useRef(null);\r\n const {\r\n inputVariant,\r\n closablePicker = true,\r\n closeTitle = 'Close',\r\n onClose,\r\n onOpen,\r\n value,\r\n endTime,\r\n truncateTime,\r\n variant = 'date',\r\n info,\r\n startIcon,\r\n endIcon,\r\n ariaLabel,\r\n minDateMessage = 'Date should not be before minimal date',\r\n maxDateMessage = 'Date should not be after maximal date',\r\n invalidDateMessage = 'Invalid Date Format',\r\n onChange,\r\n labelFunc,\r\n readonlyInput,\r\n useTimeClockPicker,\r\n useTimeDropDowns,\r\n useDateDropDowns,\r\n saveOnSelect,\r\n maskIfEmpty = true,\r\n clearable,\r\n disableClearable,\r\n ...other\r\n } = props;\r\n\r\n const dateInputProps = React.useMemo(() => {\r\n return {\r\n autoFocus: props.autoFocus,\r\n fullWidth: props.fullWidth,\r\n helperText: props.helperText,\r\n placeholder: props.placeholder,\r\n error: props.error,\r\n required: props.required,\r\n disabled: props.disabled,\r\n name: props.name || 'dateInputName',\r\n id: props.id || 'dateInputId',\r\n label: props.label,\r\n margin: props.margin,\r\n inputProps: props.inputProps,\r\n InputProps: props.InputProps,\r\n TextFieldComponent: props.TextFieldComponent,\r\n onBlur: props.onBlur,\r\n onFocus: props.onFocus,\r\n };\r\n }, [\r\n props.InputProps,\r\n props.TextFieldComponent,\r\n props.autoFocus,\r\n props.disabled,\r\n props.error,\r\n props.fullWidth,\r\n props.helperText,\r\n props.id,\r\n props.inputProps,\r\n props.label,\r\n props.margin,\r\n props.name,\r\n props.onBlur,\r\n props.onFocus,\r\n props.placeholder,\r\n props.required,\r\n ]);\r\n const keyboardInputProps = React.useMemo(() => {\r\n return {\r\n ...dateInputProps,\r\n minDateMessage: minDateMessage,\r\n maxDateMessage: maxDateMessage,\r\n invalidDateMessage: invalidDateMessage,\r\n ariaLabel: ariaLabel,\r\n startIcon: startIcon,\r\n endIcon: endIcon,\r\n info: info,\r\n labelFunc: labelFunc,\r\n minDate: other.minDate,\r\n maxDate: other.maxDate,\r\n disableFuture: other.disableFuture,\r\n disablePast: other.disablePast,\r\n strictCompareDates: other.strictCompareDates,\r\n };\r\n }, [\r\n ariaLabel,\r\n dateInputProps,\r\n endIcon,\r\n info,\r\n invalidDateMessage,\r\n labelFunc,\r\n maxDateMessage,\r\n minDateMessage,\r\n other.disableFuture,\r\n other.disablePast,\r\n other.maxDate,\r\n other.minDate,\r\n other.strictCompareDates,\r\n startIcon,\r\n ]);\r\n const [dateValue, setDateValue] = React.useState<\r\n Date | string | null | undefined\r\n >(getValueDateOrTruncat(variant, value, endTime, truncateTime));\r\n const [open, setOpen] = React.useState(undefined);\r\n const [validationError, setValidationError] = React.useState<\r\n React.ReactNode | undefined\r\n >(undefined);\r\n const dateTimeValue = React.useMemo(() => {\r\n return getValueDateOrTruncat(variant, value, endTime, truncateTime);\r\n }, [endTime, truncateTime, value, variant]);\r\n React.useEffect(() => {\r\n setDateValue(() => {\r\n if (dateTimeValue === null || dateTimeValue === undefined) {\r\n return null;\r\n } else {\r\n return dateUtils.dateOrStringToDate(dateTimeValue);\r\n }\r\n });\r\n }, [dateTimeValue]);\r\n useKeyUpOutside(\r\n elementRef,\r\n () => {\r\n if (open) {\r\n if (!validationError || validationError === '') {\r\n handleSave();\r\n }\r\n handleClose();\r\n }\r\n },\r\n 'keyup',\r\n 'Tab',\r\n );\r\n // useGlobalDOMEvents({\r\n // keyup(ev) {\r\n // if ((ev as KeyboardEvent).key === 'Tab') {\r\n // console.log('tab event target', ev.target);\r\n // console.log('tab event currentTarget', ev.currentTarget);\r\n // }\r\n // },\r\n // });\r\n // manually trigger rerender using a useless usState hook\r\n // this ensures that the popper is rendered only after the div is rendered and have provided the elementRef value to ancor the popper\r\n const countState = React.useState(0);\r\n React.useEffect(() => {\r\n countState[1](c => c + 1);\r\n // setCount (rerender) needs to occur after element elementRef.current value is bound\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [elementRef.current]);\r\n\r\n const handleClickAway = (event: React.MouseEvent) => {\r\n if (open) {\r\n if (!validationError || validationError === '') {\r\n handleSave();\r\n }\r\n handleClose();\r\n }\r\n };\r\n const handleSave = React.useCallback(() => {\r\n onChange(setInputViewDate(variant, dateValue, endTime, truncateTime));\r\n setOpen(false);\r\n onClose?.();\r\n }, [dateValue, endTime, onChange, onClose, truncateTime, variant]);\r\n const handleClose = React.useCallback(() => {\r\n setOpen(false);\r\n onClose?.();\r\n }, [onClose]);\r\n const handleOpen = React.useCallback(() => {\r\n setOpen(true);\r\n onOpen?.();\r\n }, [onOpen]);\r\n const togglePicker = React.useCallback(() => {\r\n if (open) {\r\n if (!validationError || validationError === '') {\r\n handleClose();\r\n }\r\n } else {\r\n handleOpen();\r\n }\r\n }, [handleClose, handleOpen, open, validationError]);\r\n const inputDisplayValue = React.useMemo(() => {\r\n return getInputViewDate(variant, dateValue, endTime, truncateTime);\r\n }, [endTime, truncateTime, dateValue, variant]);\r\n\r\n const onError = React.useCallback(\r\n (error: React.ReactNode, value: MaterialUiPickersDate | ParsableDate) => {\r\n setValidationError(error);\r\n if (!!props.onError) {\r\n props.onError(error, value);\r\n }\r\n },\r\n [props],\r\n );\r\n return (\r\n handleClickAway(event)}\r\n >\r\n \r\n {readonlyInput || isMobile ? (\r\n \r\n ) : (\r\n {\r\n setDateValue(date);\r\n if (withCompletion) {\r\n if (!validationError || validationError === '') {\r\n onChange(\r\n setInputViewDate(variant, date, endTime, truncateTime),\r\n inpValue,\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n // onChange(date, inpValue);\r\n // if (open) {\r\n // setOpen(false);\r\n // onClose?.();\r\n // }\r\n //onChange(setInputViewDate(variant, dateValue, endTime, truncateTime));\r\n }}\r\n onError={(error, date) => {\r\n if (\r\n !!error &&\r\n !!date &&\r\n date !== null &&\r\n dateUtils.dateFnsUtils.isValid(date)\r\n ) {\r\n let setDate = dateUtils.getParsableDate(date);\r\n setDateValue(setDate);\r\n }\r\n\r\n onError(error, date);\r\n }}\r\n ampm={useAmPm}\r\n format={\r\n variant === 'time'\r\n ? dateUtils.DateIOFormats.fullTime\r\n : dateUtils.DateIOFormats.keyboardDate\r\n }\r\n validationError={\r\n keyboardInputProps.error\r\n ? keyboardInputProps.helperText\r\n : undefined\r\n }\r\n {...keyboardInputProps}\r\n />\r\n )}\r\n\r\n ) => {\r\n const target = event.target as any; // as HTMLInputElement;\r\n\r\n if (event.key === 'Enter') {\r\n if (!!target && target.nodeName === 'INPUT') {\r\n // if (!validationError || validationError === '') {\r\n // handleSave();\r\n // }\r\n } else {\r\n if (!validationError || validationError === '') {\r\n handleSave();\r\n } else {\r\n handleClose();\r\n }\r\n }\r\n }\r\n }}\r\n // onBlur={event => {\r\n // console.log('blur event', event.target);\r\n // }}\r\n // modifiers={{\r\n // keepTogether: { enabled: true },\r\n // flip: { enabled: false },\r\n // preventOverflow: {\r\n // enabled: true,\r\n // boundariesElement: 'viewport',\r\n // },\r\n // // offset: {\r\n // // offset: '-15,0',\r\n // // },\r\n // }}\r\n >\r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n {closablePicker && (\r\n {\r\n handleClose();\r\n }}\r\n disabled={!!validationError && validationError !== ''}\r\n className={'absolute-close-button'}\r\n >\r\n {!!closeTitle ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n {variant === 'time' ? (\r\n \r\n {useTimeClockPicker ? (\r\n {\r\n if (timeValue !== null) {\r\n // let validateDate = dateUtils.convertToMeridiem(\r\n // timeValue,\r\n // dateUtils.getMeridiem(timeValue),\r\n // useAmPm ?? false,\r\n // );\r\n let error = validateTime(\r\n timeValue.getHours(),\r\n timeValue.getMinutes(),\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: maxDateMessage,\r\n minDateMessage: minDateMessage,\r\n invalidDateMessage: invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n timeValue,\r\n useAmPm ?? false,\r\n );\r\n if (!!error) {\r\n onError(error, validateDate);\r\n } else {\r\n setDateValue(timeValue);\r\n if (saveOnSelect) {\r\n onChange(\r\n setInputViewDate(\r\n variant,\r\n timeValue,\r\n endTime,\r\n truncateTime,\r\n ),\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n } else {\r\n setDateValue(timeValue);\r\n if (saveOnSelect) {\r\n onChange(\r\n setInputViewDate(\r\n variant,\r\n timeValue,\r\n endTime,\r\n truncateTime,\r\n ),\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n }}\r\n ampm={useAmPm}\r\n />\r\n ) : (\r\n {\r\n setDateValue(val);\r\n if (withCompletion) {\r\n if (!validationError || validationError === '') {\r\n onChange(\r\n setInputViewDate(\r\n variant,\r\n val,\r\n endTime,\r\n truncateTime,\r\n ),\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n }}\r\n onBlur={props.onBlur}\r\n error={props.error}\r\n onError={onError}\r\n fullWidth={props.fullWidth || true}\r\n helperText={props.helperText}\r\n disabled={props.disabled}\r\n placeholder={props.placeholder}\r\n required={props.required}\r\n size={props.size}\r\n maxDateMessage={maxDateMessage}\r\n minDateMessage={minDateMessage}\r\n invalidDateMessage={invalidDateMessage}\r\n strictCompareDates={true}\r\n // dateId={`inner-date-${props.dateId ?? 'dateId'}`}\r\n // timeId={`inner-time-${props.timeId ?? 'timeId'}`}\r\n // dateName={`inner-date-${props.dateName ?? 'dateName'}`}\r\n // timeName={`inner-time-${props.timeName ?? 'timeName'}`}\r\n // dateInputProps={props.dateInputProps}\r\n // timeInputProps={props.timeInputProps}\r\n autoFocus={true}\r\n ampm={useAmPm}\r\n minutesStep={props.minutesStep}\r\n {...other}\r\n />\r\n )}\r\n \r\n ) : (\r\n {\r\n if (dateVal !== null) {\r\n let error = validateDate(\r\n dateVal.getDate(),\r\n dateVal.getMonth(),\r\n dateVal.getFullYear(),\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: maxDateMessage,\r\n minDateMessage: minDateMessage,\r\n invalidDateMessage: invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n dateVal,\r\n );\r\n if (!!error) {\r\n onError(error, dateVal);\r\n } else {\r\n setDateValue(dateVal);\r\n if (saveOnSelect) {\r\n onChange(\r\n setInputViewDate(\r\n variant,\r\n dateVal,\r\n endTime,\r\n truncateTime,\r\n ),\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n } else {\r\n setDateValue(dateVal);\r\n if (saveOnSelect) {\r\n onChange(\r\n setInputViewDate(\r\n variant,\r\n dateVal,\r\n endTime,\r\n truncateTime,\r\n ),\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n }}\r\n />\r\n )}\r\n {((variant === 'time' && useTimeDropDowns) ||\r\n (variant === 'date' && useDateDropDowns)) && (\r\n
    \r\n {variant === 'time' && useTimeDropDowns && (\r\n {\r\n setDateValue(val);\r\n if (withCompletion) {\r\n if (!validationError || validationError === '') {\r\n onChange(\r\n setInputViewDate(\r\n variant,\r\n val,\r\n endTime,\r\n truncateTime,\r\n ),\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n }}\r\n onBlur={props.onBlur}\r\n error={props.error}\r\n onError={onError}\r\n fullWidth={props.fullWidth || true}\r\n helperText={props.helperText}\r\n disabled={props.disabled}\r\n placeholder={props.placeholder}\r\n required={props.required}\r\n size={props.size}\r\n maxDateMessage={maxDateMessage}\r\n minDateMessage={minDateMessage}\r\n invalidDateMessage={invalidDateMessage}\r\n // dateId={`inner-date-${props.dateId ?? 'dateId'}`}\r\n // timeId={`inner-time-${props.timeId ?? 'timeId'}`}\r\n // dateName={`inner-date-${props.dateName ?? 'dateName'}`}\r\n // timeName={`inner-time-${props.timeName ?? 'timeName'}`}\r\n // dateInputProps={props.dateInputProps}\r\n // timeInputProps={props.timeInputProps}\r\n autoFocus={true}\r\n ampm={useAmPm}\r\n minutesStep={props.minutesStep}\r\n {...other}\r\n />\r\n )}\r\n {variant === 'date' && useDateDropDowns && (\r\n {\r\n setDateValue(val);\r\n if (withCompletion) {\r\n if (!validationError || validationError === '') {\r\n onChange(\r\n setInputViewDate(\r\n variant,\r\n val,\r\n endTime,\r\n truncateTime,\r\n ),\r\n );\r\n setOpen(false);\r\n onClose?.();\r\n }\r\n }\r\n }}\r\n onBlur={props.onBlur}\r\n error={props.error}\r\n onError={onError}\r\n fullWidth={props.fullWidth || true}\r\n helperText={props.helperText}\r\n disabled={props.disabled}\r\n placeholder={props.placeholder}\r\n required={props.required}\r\n size={props.size}\r\n maxDateMessage={maxDateMessage}\r\n minDateMessage={minDateMessage}\r\n invalidDateMessage={invalidDateMessage}\r\n // dateId={`inner-date-${props.dateId ?? 'dateId'}`}\r\n // timeId={`inner-time-${props.timeId ?? 'timeId'}`}\r\n // dateName={`inner-date-${props.dateName ?? 'dateName'}`}\r\n // timeName={`inner-time-${props.timeName ?? 'timeName'}`}\r\n // dateInputProps={props.dateInputProps}\r\n // timeInputProps={props.timeInputProps}\r\n autoFocus={true}\r\n {...other}\r\n />\r\n )}\r\n
    \r\n )}\r\n\r\n
    \r\n {\r\n if (!validationError || validationError === '') {\r\n handleSave();\r\n }\r\n }}\r\n >\r\n {t(translations.Save)}\r\n \r\n {\r\n handleClose();\r\n }}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n {(clearable || isMobile || disableClearable) && (\r\n {\r\n setDateValue(null);\r\n onChange(null);\r\n setOpen(false);\r\n onClose?.();\r\n }}\r\n >\r\n {t(translations.Clear)}\r\n \r\n )}\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n \r\n );\r\n}\r\n","import { RefObject } from 'react';\r\nimport useEventListener from './useEventListener';\r\n\r\ntype Handler = (event: KeyboardEvent) => void;\r\n\r\nexport function useKeyUpOutside(\r\n ref: RefObject,\r\n handler: Handler,\r\n keyboardEvent: 'keyup',\r\n key: string,\r\n): void {\r\n useEventListener(keyboardEvent, event => {\r\n if ((event as KeyboardEvent).key === key) {\r\n const el = ref?.current;\r\n\r\n // Do nothing if clicking ref's element or descendent elements\r\n if (!el || el.contains(event.target as Node)) {\r\n return;\r\n }\r\n\r\n handler(event);\r\n }\r\n });\r\n}\r\n","import {\r\n FormControlLabelProps as MuiFormControlLabelProps,\r\n FormControlLabel as MuiFormControlLabel,\r\n} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport * as React from 'react';\r\n\r\nexport interface FormControlLabelProps extends MuiFormControlLabelProps {\r\n boldLabel?: boolean;\r\n withInfo?: boolean;\r\n boxed?: boolean;\r\n boxedChecked?: boolean;\r\n boxedError?: boolean;\r\n withInput?: boolean;\r\n // used for radio component so label description will wrap on 300px for short view screen or side panel\r\n shortLabel?: boolean;\r\n}\r\nconst FormControlLabel = (props: FormControlLabelProps) => {\r\n const {\r\n boldLabel,\r\n withInfo,\r\n boxed,\r\n boxedChecked,\r\n boxedError,\r\n shortLabel,\r\n withInput,\r\n ...other\r\n } = props;\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormControlLabel;\r\n","import {\r\n FormHelperTextProps as MuiFormHelperTextProps,\r\n FormHelperText as MuiFormHelperText,\r\n} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\n\r\nexport interface FormHelperTextProps extends MuiFormHelperTextProps {\r\n boxed?: boolean;\r\n shiftRight?: boolean;\r\n}\r\nconst FormHelperText = (props: FormHelperTextProps) => {\r\n const { shiftRight, boxed, ...other } = props;\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormHelperText;\r\n","import { PeriodTypesEntity } from 'app/components/DatePeriods';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { IDatesRange } from './IDatesRange';\r\n\r\nfunction createPeriod(\r\n now: Date,\r\n startFn: (d: Date) => Date,\r\n endFn: (d: Date) => Date,\r\n addFn: (d: Date, n: number) => Date,\r\n offset: number,\r\n): DatesRange {\r\n const d = addFn(now, offset);\r\n return new DatesRange({ start: startFn(d), end: endFn(d) });\r\n}\r\nexport class DatesRange implements IDatesRange {\r\n public start: Date | null = null;\r\n public end: Date | null = null;\r\n constructor(t?: IDatesRange) {\r\n this.start = t?.start ?? null;\r\n this.end = t?.end ?? null;\r\n }\r\n public static fromPreset(\r\n type: PeriodTypesEntity,\r\n st: Date | null,\r\n et: Date | null,\r\n ): { start: Date | null; end: Date | null } {\r\n const now = new Date();\r\n switch (type.Id) {\r\n case 'CustomDate':\r\n return { start: st, end: et };\r\n case 'ThisMonth':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfMonth,\r\n dateUtils.endOfMonth,\r\n dateUtils.addMonths,\r\n 0,\r\n );\r\n case 'LastMonth':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfMonth,\r\n dateUtils.endOfMonth,\r\n dateUtils.addMonths,\r\n -1,\r\n );\r\n case 'NextMonth':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfMonth,\r\n dateUtils.endOfMonth,\r\n dateUtils.addMonths,\r\n 1,\r\n );\r\n case 'ThisQuarter':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfQuarter,\r\n dateUtils.endOfQuarter,\r\n dateUtils.addQuarters,\r\n 0,\r\n );\r\n case 'LastQuarter':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfQuarter,\r\n dateUtils.endOfQuarter,\r\n dateUtils.addQuarters,\r\n -1,\r\n );\r\n case 'NextQuarter':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfQuarter,\r\n dateUtils.endOfQuarter,\r\n dateUtils.addQuarters,\r\n 1,\r\n );\r\n case 'ThisWeek':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfWeek,\r\n dateUtils.endOfWeek,\r\n dateUtils.addWeeks,\r\n 0,\r\n );\r\n case 'LastWeek':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfWeek,\r\n dateUtils.endOfWeek,\r\n dateUtils.addWeeks,\r\n -1,\r\n );\r\n case 'NextWeek':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfWeek,\r\n dateUtils.endOfWeek,\r\n dateUtils.addWeeks,\r\n 1,\r\n );\r\n case 'ThisYear':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfYear,\r\n dateUtils.endOfYear,\r\n dateUtils.addYears,\r\n 0,\r\n );\r\n case 'LastYear':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfYear,\r\n dateUtils.endOfYear,\r\n dateUtils.addYears,\r\n -1,\r\n );\r\n case 'NextYear':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfYear,\r\n dateUtils.endOfYear,\r\n dateUtils.addYears,\r\n 1,\r\n );\r\n case 'Today':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfDay,\r\n dateUtils.endOfDay,\r\n dateUtils.addDays,\r\n 0,\r\n );\r\n case 'TodayTomorrow':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfDay,\r\n dateUtils.endOfTomorrow,\r\n dateUtils.addDays,\r\n 0,\r\n );\r\n case 'Tomorrow':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfDay,\r\n dateUtils.endOfDay,\r\n dateUtils.addDays,\r\n 1,\r\n );\r\n case 'Yesterday':\r\n return createPeriod(\r\n now,\r\n dateUtils.startOfDay,\r\n dateUtils.endOfDay,\r\n dateUtils.addDays,\r\n -1,\r\n );\r\n default:\r\n assertExhaustive(type.Id);\r\n }\r\n }\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport {\r\n call,\r\n put,\r\n take,\r\n select,\r\n takeLatest,\r\n takeLeading,\r\n takeEvery,\r\n all,\r\n} from 'redux-saga/effects';\r\nimport { serviceRequestsKanbanActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { translations } from 'locales/translations';\r\nimport i18next from 'i18next';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport {\r\n selectFilter,\r\n selectGlobalFilter,\r\n selectSectionOrders,\r\n selectServiceRequestsKanbanData,\r\n selectServiceRequestsKanbanTickets,\r\n selectTicketIds,\r\n} from './selectors';\r\nimport {\r\n Dto,\r\n IDataList,\r\n ISection,\r\n ReorderPayload,\r\n order,\r\n sectionOrders,\r\n} from './types';\r\nimport { omit } from 'lodash';\r\nimport { takeLatestByKey } from 'utils/redux-saga';\r\nimport { PartialExceptId } from 'utils/typeUtils';\r\nimport { extractErrorMessages, getModelStateErrors } from 'api/utils';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { ServiceRequestTicketDetailsProps } from 'app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\n\r\nconst ENTITY_SET_URL = '/api/odata/v4/ServiceRequestTickets';\r\n\r\nconst fetchTicketsByStatusId = async (params: {\r\n statusId: number;\r\n top: number;\r\n skip: number;\r\n globalFilter: string;\r\n filter: string;\r\n order: order | null;\r\n}) => {\r\n const response: IODataQueryResponse =\r\n await httpClient.get(\r\n ENTITY_SET_URL,\r\n fetchTicketsParams({\r\n statusId: params.statusId,\r\n top: params.top + 1,\r\n skip: params.skip,\r\n globalFilter: params.globalFilter,\r\n filter: params.filter,\r\n order: params.order,\r\n }),\r\n );\r\n const count = response['@odata.count'];\r\n const result: IDataList = {\r\n id: params.statusId,\r\n items: response.value.slice(0, params.top),\r\n count: count ?? 0,\r\n more: response.value.length > params.top,\r\n };\r\n return result;\r\n};\r\nconst fetchTicketById = async (params: { Id: number | null }) => {\r\n if (params.Id === null) {\r\n return Promise.resolve(undefined);\r\n } else {\r\n const response = await httpClient.get(\r\n `${ENTITY_SET_URL}(${params.Id})`,\r\n FETCH_SELECT_EXPAND,\r\n );\r\n return response;\r\n }\r\n};\r\n\r\nconst FETCH_SELECT_EXPAND = {\r\n $select: [\r\n 'Id',\r\n 'Index',\r\n 'SubSamplesCount',\r\n 'TotalSamplesCount',\r\n 'SamplesCount',\r\n 'Priority',\r\n 'ParentTicketId',\r\n 'ServiceRequestId',\r\n ].join(','),\r\n $expand: [\r\n 'Status($select=Id,Name)',\r\n //'Service($select=Id,Name)',\r\n //'ServiceRequestStatus($select=Id,Name)',\r\n 'AssignedTo($select=Id,Name)',\r\n 'ServiceRequest($select=CreatedFor,Service;$expand=CreatedFor($select=Id,Name),Service($select=Id,Name;$expand=ServiceGroup($select=Id,Name)),Budget($select=Id,Name))',\r\n ].join(','),\r\n};\r\nfunction fetchTicketsParams(params: {\r\n statusId: number;\r\n top: number;\r\n skip: number;\r\n globalFilter: string;\r\n filter: string;\r\n order: order | null;\r\n}): any {\r\n const $filter = new ODataFilterBuilder({\r\n predicates: [`Status/Id eq ${params.statusId}`, params.filter],\r\n stringSearch: params.globalFilter,\r\n stringColumns: [\r\n 'cast(ServiceRequestId,Edm.String)',\r\n 'cast(Priority,Edm.String)',\r\n 'ServiceRequest/CreatedFor/Name',\r\n 'ServiceRequest/CreatedFor/Id',\r\n ],\r\n }).toString();\r\n return {\r\n ...FETCH_SELECT_EXPAND,\r\n $filter,\r\n $top: params.top,\r\n $skip: params.skip,\r\n $count: true,\r\n $orderBy:\r\n params.order === null\r\n ? 'Index,ServiceRequestId'\r\n : 'ServiceRequestId ' + params.order,\r\n };\r\n}\r\n/**\r\n * Number of initially fetched tickets per each status\r\n */\r\nconst INITIAL_TOP = 10;\r\nconst notificationMessageKey_getItems = 'getItems';\r\nfunction* doGetItems(action: PayloadAction) {\r\n const globalFilter: string = yield select(selectGlobalFilter);\r\n const filter: string = yield select(selectFilter);\r\n const orders: sectionOrders[] = yield select(selectSectionOrders);\r\n try {\r\n const bar: Array> = yield all(\r\n action.payload.map(statusId =>\r\n call(fetchTicketsByStatusId, {\r\n statusId,\r\n top: INITIAL_TOP,\r\n skip: 0,\r\n globalFilter,\r\n filter,\r\n order: orders.find(o => o.sectionId === statusId)?.order ?? null,\r\n }),\r\n ),\r\n );\r\n\r\n yield put(actions.getItems_Success(bar));\r\n } catch (error: unknown) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: notificationMessageKey_getItems,\r\n message: i18next.t(translations.errormessage),\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.getItems_Error(Error));\r\n }\r\n}\r\nfunction* doGetMoreItems(action: PayloadAction) {\r\n const tickets: Record<\r\n string,\r\n IDataList\r\n > = yield select(selectServiceRequestsKanbanTickets);\r\n const globalFilter: string = yield select(selectGlobalFilter);\r\n const filter: string = yield select(selectFilter);\r\n const orders: sectionOrders[] = yield select(selectSectionOrders);\r\n try {\r\n const section = tickets[action.payload.toString()];\r\n const bar: IDataList = yield call(\r\n fetchTicketsByStatusId,\r\n {\r\n statusId: action.payload,\r\n top: INITIAL_TOP,\r\n skip: section.items.length,\r\n globalFilter,\r\n filter,\r\n order: orders.find(o => o.sectionId === action.payload)?.order ?? null,\r\n },\r\n );\r\n\r\n yield put(actions.getMoreItems_Success(bar));\r\n } catch (error: unknown) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: notificationMessageKey_getItems,\r\n message: i18next.t(translations.errormessage),\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.getItems_Error(Error));\r\n }\r\n}\r\n\r\nfunction* doSetSelectedStatuses(\r\n action: PayloadAction,\r\n) {\r\n if (action.payload !== undefined) {\r\n const original: Record = yield select(\r\n selectServiceRequestsKanbanTickets,\r\n );\r\n const loadedIds = Object.keys(original);\r\n const currentStatusIdentifiers = action.payload\r\n .map(f => f.Id)\r\n .filter(statusId => !loadedIds.includes(statusId.toString()));\r\n\r\n if (currentStatusIdentifiers.length > 0) {\r\n yield put(actions.getItems(currentStatusIdentifiers));\r\n }\r\n }\r\n}\r\nfunction* doReorder(action: PayloadAction) {\r\n if (action.payload.destinationSectionId === action.payload.sourceSectionId) {\r\n return;\r\n }\r\n try {\r\n const data: ISection[] =\r\n yield select(selectServiceRequestsKanbanData);\r\n\r\n const indexChanges = data\r\n .flatMap(section => {\r\n return (\r\n section.data?.items?.map((item, index) => {\r\n return {\r\n Id: item.Id,\r\n Index: item.Index === index ? undefined : index,\r\n Status:\r\n item.Status.Id === section.id ? undefined : section.section,\r\n };\r\n }) ?? []\r\n );\r\n })\r\n .filter(item => item.Status !== undefined);\r\n\r\n const payload = {\r\n Id: action.payload.Id,\r\n ServiceRequestStatusId: action.payload.destinationSectionId,\r\n Index: action.payload.destinationIndex,\r\n };\r\n\r\n yield call(\r\n httpClient.patch,\r\n `${ENTITY_SET_URL}(${payload.Id})`,\r\n omit(payload, 'Id'),\r\n );\r\n yield put(actions.reorder_Success(indexChanges));\r\n } catch (error) {\r\n yield put(\r\n actions.reorder_Error({\r\n destinationIndex: action.payload.sourceIndex,\r\n destinationSectionId: action.payload.sourceSectionId,\r\n Id: action.payload.Id,\r\n sourceIndex: action.payload.destinationIndex,\r\n sourceSectionId: action.payload.destinationSectionId,\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doInsert(action: PayloadAction>) {\r\n const url = ENTITY_SET_URL;\r\n const notificationMessageKey = 'serviceRequestTicektsInsert';\r\n try {\r\n const payload: Partial = {\r\n AssignedTo_Id: action.payload.AssignedTo?.Id,\r\n Index: action.payload.Index,\r\n Priority: action.payload.Priority,\r\n SamplesCount: action.payload.SamplesCount,\r\n ServiceRequestId: action.payload.ParentTicket?.ServiceRequestId,\r\n ServiceRequestStatusId: action.payload.Status?.Id,\r\n ParentTicketId: action.payload.ParentTicketId,\r\n };\r\n const response = yield call(httpClient.post, url, payload);\r\n const p: Dto = {\r\n ...action.payload.ParentTicket,\r\n ...response,\r\n ...action.payload,\r\n };\r\n yield put(actions.insert_Success(p));\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: notificationMessageKey,\r\n variant: 'success',\r\n message: i18next.t(translations.GenericInsertSuccessMessage),\r\n }),\r\n );\r\n } catch (error) {\r\n yield put(actions.insert_Error());\r\n const modelState = getModelStateErrors(error);\r\n console.error(error);\r\n if (modelState !== undefined) {\r\n const messages = Object.values(modelState).flat();\r\n for (const message of messages) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: notificationMessageKey,\r\n variant: 'error',\r\n message: message,\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n}\r\nfunction* doUpdate(\r\n action: PayloadAction>,\r\n) {\r\n const url = `${ENTITY_SET_URL}(${action.payload.Id})`;\r\n const notificationMessageKey = 'serviceRequestTicketUpdate';\r\n try {\r\n const payload: Partial = {\r\n AssignedTo_Id: action.payload.AssignedTo?.Id,\r\n Priority: action.payload.Priority,\r\n Index: action.payload.Index,\r\n ServiceRequestStatusId: action.payload.Status?.Id,\r\n SamplesCount: action.payload.SamplesCount,\r\n };\r\n yield call(httpClient.patch, url, payload);\r\n yield put(actions.update_Success(action.payload));\r\n yield put(layoutActions.resetSidePanel());\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: notificationMessageKey,\r\n variant: 'success',\r\n message: i18next.t(translations.GenericUpdateSuccessMessage),\r\n }),\r\n );\r\n //yield put(layoutActions.resetSidePanel());\r\n } catch (error) {\r\n yield put(actions.update_Error());\r\n const messages = extractErrorMessages(error);\r\n if (messages !== undefined) {\r\n for (const message of messages) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: notificationMessageKey,\r\n variant: 'error',\r\n message: message,\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Runs a monitor on a given selector\r\n * @param selector selector to monitor\r\n */\r\nfunction* selectorChangeSaga(selector, pattern) {\r\n let previousValue;\r\n while (true) {\r\n const currentValue = yield* monitorSelector(\r\n selector,\r\n previousValue,\r\n pattern,\r\n );\r\n if (previousValue !== currentValue) {\r\n //yield spawn(loadRowSaga, focusType, focusId);\r\n }\r\n previousValue = currentValue;\r\n }\r\n}\r\n\r\nfunction* monitorSelector(selector, previousValue, takePattern = '*') {\r\n while (true) {\r\n const nextValue = yield select(selector);\r\n if (nextValue !== previousValue) {\r\n return nextValue;\r\n }\r\n yield take(takePattern);\r\n }\r\n}\r\nfunction* doShowEdit(action: PayloadAction) {\r\n // const data = yield select(s)\r\n\r\n const openSidePanelProps: ServiceRequestTicketDetailsProps = {\r\n item: action.payload,\r\n useSidePanel: true,\r\n };\r\n const parent = yield call(fetchTicketById, {\r\n Id: action.payload.ParentTicketId,\r\n });\r\n yield put(\r\n actions.showEdit_Success({\r\n ...action.payload,\r\n ParentTicket: parent,\r\n }),\r\n );\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.ServiceRequestTicketDetails,\r\n props: openSidePanelProps,\r\n }),\r\n );\r\n}\r\nfunction* doShowEditParent(action: PayloadAction) {\r\n try {\r\n const ticket = yield call(fetchTicketById, {\r\n Id: action.payload.ParentTicketId,\r\n });\r\n yield put(actions.showEdit(ticket));\r\n } catch (error) {\r\n yield put(actions.showEdit_Error());\r\n }\r\n}\r\n\r\nfunction* doUpdateitemsForFilter(action: PayloadAction) {\r\n const tickets: number[] = yield select(selectTicketIds);\r\n yield* doGetItems({ payload: tickets, type: action.type });\r\n}\r\n\r\nfunction* doUpdateSecionOrder(action: PayloadAction) {\r\n const globalFilter: string = yield select(selectGlobalFilter);\r\n const filter: string = yield select(selectFilter);\r\n try {\r\n const bar: IDataList = yield call(\r\n fetchTicketsByStatusId,\r\n {\r\n statusId: action.payload.sectionId,\r\n top: INITIAL_TOP,\r\n skip: 0,\r\n globalFilter,\r\n filter,\r\n order: action.payload.order ?? null,\r\n },\r\n );\r\n\r\n yield put(actions.getItems_Success([bar]));\r\n } catch (error: unknown) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: notificationMessageKey_getItems,\r\n message: i18next.t(translations.errormessage),\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.getItems_Error(Error));\r\n }\r\n}\r\n\r\nexport function* serviceRequestsKanbanSaga() {\r\n yield takeLatest(actions.setGlobalFilter.type, doUpdateitemsForFilter);\r\n yield takeLatest(actions.setFilterString.type, doUpdateitemsForFilter);\r\n yield takeLatest(actions.getItems.type, doGetItems);\r\n yield takeLatest(actions.setSectionOrder.type, doUpdateSecionOrder);\r\n yield takeLatestByKey(\r\n actions.getMoreItems.type,\r\n f => f,\r\n doGetMoreItems,\r\n );\r\n yield takeLatest(actions.setSelectedStatuses.type, doSetSelectedStatuses);\r\n yield takeEvery(actions.reorder.type, doReorder);\r\n yield takeLeading(actions.insert.type, doInsert);\r\n yield takeLeading(actions.update.type, doUpdate);\r\n yield takeLeading(actions.showEdit.type, doShowEdit);\r\n yield takeLeading(actions.showEditParent.type, doShowEditParent);\r\n yield selectorChangeSaga(\r\n selectServiceRequestsKanbanTickets,\r\n actions.setSelectedStatuses.type,\r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { serviceRequestsKanbanSaga } from './saga';\r\nimport {\r\n Dto,\r\n IDataList,\r\n ServiceRequestsKanbanState,\r\n ReorderPayload,\r\n sectionOrders,\r\n} from './types';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport { isEqual, orderBy } from 'lodash';\r\nimport { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\nimport { PartialExceptId } from 'utils/typeUtils';\r\n\r\nexport const initialState: ServiceRequestsKanbanState = {\r\n data: {},\r\n selectedStatuses: [],\r\n selectedStatusIds: [],\r\n selectedStatusOrders: [],\r\n fetchCount: 2,\r\n processingUpdate: false,\r\n processingInsert: false,\r\n ticket: {},\r\n globalFilter: '',\r\n filterString: '',\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'serviceRequestsKanban',\r\n initialState,\r\n reducers: {\r\n setSelectedStatuses(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n const ids = orderBy(action.payload?.map(f => f.Id));\r\n const p = orderBy(state.selectedStatuses.map(f => f.Id));\r\n if (!isEqual(ids, p)) {\r\n state.selectedStatusIds = ids;\r\n state.selectedStatusOrders = state.selectedStatusOrders.filter(s =>\r\n ids.includes(s.sectionId),\r\n );\r\n }\r\n state.selectedStatuses = action.payload ?? [];\r\n },\r\n getItems(state, action: PayloadAction) {},\r\n\r\n getItems_Success(state, action: PayloadAction>>) {\r\n action.payload.forEach(item => {\r\n state.data[item.id.toString()] = item;\r\n });\r\n },\r\n getItems_Error(state, action: PayloadAction) {\r\n // state.processing = false;\r\n // state.error = 'ERROR';\r\n },\r\n getMoreItems(state, action: PayloadAction) {},\r\n getMoreItems_Success(state, action: PayloadAction>) {\r\n const section = state.data[action.payload.id.toString()];\r\n section.items.push(...action.payload.items);\r\n section.more = action.payload.more;\r\n },\r\n reorder(state, action: PayloadAction) {\r\n const sourceSection =\r\n state.data[action.payload.sourceSectionId.toString()];\r\n if (sourceSection === undefined) {\r\n return;\r\n }\r\n const destinationSection =\r\n state.data[action.payload.destinationSectionId.toString()];\r\n if (destinationSection === undefined) {\r\n return;\r\n }\r\n const [removed] = sourceSection?.items?.splice(\r\n action.payload.sourceIndex,\r\n 1,\r\n );\r\n\r\n destinationSection?.items?.splice(\r\n action.payload.destinationIndex,\r\n 0,\r\n removed,\r\n );\r\n },\r\n reorder_Success(\r\n state,\r\n action: PayloadAction<\r\n Array & Partial>>\r\n >,\r\n ) {\r\n action.payload.forEach(item => {\r\n Object.values(state.data).forEach(section => {\r\n const { Id, ...props } = item;\r\n const ticket = section.items.find(f => f.Id === Id);\r\n if (ticket !== undefined) {\r\n if (props.Index !== undefined) ticket.Index = props.Index;\r\n if (props.Status !== undefined) ticket.Status = props.Status;\r\n }\r\n });\r\n });\r\n },\r\n //todo reuse update & updateError function bodies\r\n reorder_Error(state, action: PayloadAction) {\r\n const sourceSection =\r\n state.data[action.payload.sourceSectionId.toString()];\r\n if (sourceSection === undefined) {\r\n return;\r\n }\r\n const destinationSection =\r\n state.data[action.payload.destinationSectionId.toString()];\r\n if (destinationSection === undefined) {\r\n return;\r\n }\r\n const [removed] = sourceSection?.items?.splice(\r\n action.payload.sourceIndex,\r\n 1,\r\n );\r\n\r\n destinationSection?.items?.splice(\r\n action.payload.destinationIndex,\r\n 0,\r\n removed,\r\n );\r\n },\r\n\r\n showAddSubTicket(state, action: PayloadAction | undefined>) {\r\n state.showAddSubTicket = action.payload !== undefined;\r\n state.parentTicket = action.payload;\r\n },\r\n showEdit(state, action: PayloadAction) {\r\n state.ticket.status = 'pending';\r\n },\r\n showEditParent(state, action: PayloadAction) {\r\n state.ticket.status = 'pending';\r\n },\r\n showEdit_Success(state, action: PayloadAction) {\r\n state.ticket.status = 'resolved';\r\n state.ticket.value = action.payload;\r\n },\r\n showEdit_Error(state, action: PayloadAction) {\r\n state.ticket.status = 'rejected';\r\n },\r\n insert(state, action: PayloadAction>) {\r\n state.processingInsert = true;\r\n },\r\n insert_Success(state, action: PayloadAction) {\r\n // subtract number of samples from the samples count on the main ticket - for sub tickets only\r\n updateSamplesCount(action.payload, state);\r\n\r\n // insert newly created ticket into corresponding section based on the status\r\n // and push the index on the tickets that come after the newly inserted ticket\r\n const statusId = action.payload.Status?.Id;\r\n if (statusId !== undefined) {\r\n const index = action.payload.Index;\r\n if (index !== undefined) {\r\n const section = state.data[statusId.toString()];\r\n const items = section.items;\r\n if (items !== undefined) {\r\n items.slice(index).forEach(ticket => (ticket.Index += 1));\r\n items.splice(index, 0, action.payload);\r\n }\r\n }\r\n }\r\n state.parentTicket = undefined;\r\n state.showAddSubTicket = false;\r\n state.processingInsert = false;\r\n },\r\n insert_Error(state, action: PayloadAction) {\r\n state.processingInsert = false;\r\n },\r\n\r\n update(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.processingUpdate = true;\r\n },\r\n update_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n Object.keys(state.data).forEach(key => {\r\n const item = Object.values(state.data)\r\n .flatMap(section => section.items)\r\n .find(f => f.Id === action.payload.Id);\r\n if (item !== undefined) {\r\n //item = {...item, ...action.payload};\r\n Object.assign(item, action.payload);\r\n }\r\n });\r\n updateSamplesCount(\r\n action.payload,\r\n state,\r\n state.ticket.value?.SamplesCount ?? undefined,\r\n );\r\n state.processingUpdate = false;\r\n },\r\n update_Error(state, action: PayloadAction) {\r\n state.processingUpdate = false;\r\n },\r\n setGlobalFilter(state, action: PayloadAction) {\r\n state.globalFilter = action.payload;\r\n },\r\n setFilterString(state, action: PayloadAction) {\r\n state.filterString = action.payload;\r\n },\r\n setSectionOrder(state, action: PayloadAction) {\r\n const index = state.selectedStatusOrders.findIndex(\r\n o => o.sectionId === action.payload.sectionId,\r\n );\r\n if (index !== -1) {\r\n state.selectedStatusOrders[index] = action.payload;\r\n } else {\r\n state.selectedStatusOrders.push(action.payload);\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: serviceRequestsKanbanActions } = slice;\r\n\r\nexport const useServiceRequestsKanbanSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: serviceRequestsKanbanSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\nfunction updateSamplesCount(\r\n payload: Partial,\r\n\r\n state,\r\n originalSamplesCount?: number,\r\n) {\r\n if (payload.SamplesCount !== undefined) {\r\n if (payload.ParentTicket !== undefined) {\r\n const parent = state.data[\r\n payload.ParentTicket.Status.Id.toString()\r\n ].items.find(f => f.Id === payload.ParentTicket?.Id);\r\n if (parent !== undefined) {\r\n parent.SamplesCount -=\r\n (payload.SamplesCount ?? 0) - (originalSamplesCount ?? 0);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useServiceRequestsKanbanSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport { CheckEntity } from 'app/components/CheckBoxGroup';\r\nimport {\r\n RepeatMonthlyBy,\r\n RepeatPeriod,\r\n RepetitiveOptions,\r\n} from 'enums/RepetitiveOptions';\r\nimport { WorkWeekDays } from 'enums/WorkWeekDays';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { dateUtils, WeekStartsOn } from 'utils/date-utils';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\nimport { Entity } from './common';\r\nimport { Timestamp } from './Timestamp';\r\n\r\nexport interface IRepetitiveDto {\r\n StartDate?: Date | string;\r\n RecurringEvents?: Entity | null;\r\n RecurringEndDate?: Date | string;\r\n RepeatsEveryDay?: Entity | null;\r\n RepeatsEveryPeriod?: Entity | null;\r\n RepeatsMonthlyBy?: Entity | null;\r\n RepeatsOnDays: CheckEntity[];\r\n}\r\nexport interface RepetitiveIntervals {\r\n start: Date;\r\n end: Date;\r\n}\r\nexport const ShortWeekDays = (): CheckEntity[] => {\r\n return dateUtils.getShortDaysArray().map((day, index) => {\r\n return {\r\n Id: index + 1,\r\n Name: day,\r\n checked: false,\r\n } as CheckEntity;\r\n });\r\n};\r\nexport const LongWeekDays = (): CheckEntity[] => {\r\n return dateUtils.getLongDaysArray().map((day, index) => {\r\n return {\r\n Id: index + 1,\r\n Name: day,\r\n checked: false,\r\n } as CheckEntity;\r\n });\r\n};\r\nexport const RepetitiveInit = (\r\n date?: Date | string,\r\n option?: number,\r\n): IRepetitiveDto => {\r\n const startDate = dateUtils.dateOrStringToDate(date || new Date());\r\n const untilDate = dateUtils.dateFnsUtils.addDays(startDate, 7);\r\n return {\r\n StartDate: dateUtils.formatISO(dateUtils.dateOrStringToDate(startDate)),\r\n RecurringEvents: enumToEntityArray(RepetitiveOptions)[option ?? 0],\r\n RepeatsOnDays: ShortWeekDays().map(f => {\r\n if (f.Id === 1) f.checked = true;\r\n return f;\r\n }),\r\n RecurringEndDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(untilDate),\r\n ),\r\n RepeatsEveryDay: { Id: 1, Name: '1' } as Entity,\r\n RepeatsEveryPeriod: enumToEntityArray(RepeatPeriod)[1],\r\n RepeatsMonthlyBy: enumToEntityArray(RepeatMonthlyBy)[0],\r\n };\r\n};\r\nexport const GetAutoCreateTitle = (\r\n type: IWorkOrderTypeDto,\r\n eventStart: Date | Timestamp | null,\r\n firstDayOfWeek: WeekStartsOn,\r\n): string | undefined => {\r\n let title: string | undefined = undefined;\r\n if (type.AutoCreateEvent && type.AutoCreateFor !== 0) {\r\n if (type.RepetitiveOptions > 0) {\r\n switch (type.RepetitiveOptions) {\r\n case RepetitiveOptions.RepeatCustom:\r\n let periodName = enumToEntityArray(RepeatPeriod).filter(\r\n f => f.Id === type.RepeatsEveryType,\r\n )[0].Name;\r\n if (type.RepeatsEveryType === RepeatPeriod.Days) {\r\n title = `Repeats every ${type.RepeatsEveryNum} - ${periodName}`;\r\n } else if (type.RepeatsEveryType === RepeatPeriod.Weeks) {\r\n title = `Repeats every ${type.RepeatsEveryNum} - ${periodName} on ${\r\n LongWeekDays().filter(f => f.Id.toString() === type.RepeatsOn)[0]\r\n .Name\r\n }`;\r\n } else {\r\n title = `Repeats every ${type.RepeatsEveryNum} - ${periodName} by ${\r\n enumToEntityArray(RepeatMonthlyBy).filter(\r\n f => f.Id === type.RepeatsBy,\r\n )[0].Name\r\n }`;\r\n }\r\n break;\r\n case RepetitiveOptions.RepeatDaily:\r\n title = 'Repeats Daily';\r\n break;\r\n case RepetitiveOptions.RepeatWeeklyOn:\r\n title = `Repeats ${i18next\r\n .t(translations.RepeatWeeklyOn)\r\n .replace(\r\n '{0}',\r\n dateUtils.getDayText(\r\n dateUtils.parseISOOrNull(eventStart) ?? new Date(),\r\n ),\r\n )}`;\r\n break;\r\n case RepetitiveOptions.RepeatMonthlyOn:\r\n let weekName = i18next.t(\r\n enumToEntityArray(WorkWeekDays).filter(\r\n f =>\r\n dateUtils.getWeekNumberOfMonth(\r\n dateUtils.parseISOOrNull(eventStart) ?? new Date(),\r\n firstDayOfWeek,\r\n ) === f.Id,\r\n )[0].Name,\r\n );\r\n title = `Repeats ${i18next\r\n .t(translations.RepeatMonthlyOn)\r\n .replace('{0}', weekName)\r\n .replace(\r\n '{1}',\r\n dateUtils.getDayText(\r\n dateUtils.parseISOOrNull(eventStart) ?? new Date(),\r\n ),\r\n )}`;\r\n break;\r\n case RepetitiveOptions.RepeatEveryWeekDay:\r\n let weekDays = `${\r\n dateUtils.getLongDaysArray()[firstDayOfWeek as number]\r\n } - ${\r\n dateUtils.getLongDaysArray()[\r\n dateUtils.getLongDaysArray().length - 2\r\n ]\r\n }`;\r\n title = `Repeats ${i18next\r\n .t(translations.RepeatEveryWeekDay)\r\n .replace('{0}', weekDays)}`;\r\n break;\r\n }\r\n }\r\n }\r\n return title;\r\n};\r\nexport const GetIntervals = (\r\n start: Date,\r\n data: IRepetitiveDto,\r\n firstDayOfWeek?: number,\r\n): Date[] => {\r\n let dates: Date[] = [];\r\n if (start && data.RecurringEndDate) {\r\n let originStart = dateUtils.dateOrStringToDate(start);\r\n let originalEnd = dateUtils.addDays(\r\n dateUtils.truncateTime(\r\n dateUtils.dateOrStringToDate(data.RecurringEndDate),\r\n ),\r\n 1,\r\n );\r\n if (data.RecurringEvents && data.RecurringEvents !== null) {\r\n if (\r\n data.RecurringEvents.Id !== (RepetitiveOptions.DoNotRepeat as number)\r\n ) {\r\n switch (data.RecurringEvents.Id) {\r\n case RepetitiveOptions.RepeatDaily as number:\r\n let days = dateUtils.differenceInCalendarDays(\r\n originalEnd,\r\n originStart,\r\n );\r\n dates = [...Array(days + 1).keys()].map(i =>\r\n dateUtils.addDays(originStart, i),\r\n );\r\n break;\r\n case RepetitiveOptions.RepeatWeeklyOn as number:\r\n dates.push(originStart);\r\n let nextWeek = dateUtils.addWeeks(originStart, 1);\r\n while (nextWeek < originalEnd) {\r\n dates.push(nextWeek);\r\n nextWeek = dateUtils.addWeeks(nextWeek, 1);\r\n }\r\n break;\r\n case RepetitiveOptions.RepeatMonthlyOn as number:\r\n // let week = dateUtils.getWeekNumberOfMonth(\r\n // originStart,\r\n // firstDayOfWeek,\r\n // );\r\n dates.push(originStart);\r\n let dayWeek = dateUtils.getDay(originStart);\r\n let newMonthDate = dateUtils.addMonths(originStart, 1);\r\n let newDayWeek = dateUtils.getDay(newMonthDate);\r\n let calcDay =\r\n dayWeek >= newDayWeek\r\n ? dayWeek - newDayWeek\r\n : 7 - (newDayWeek - dayWeek);\r\n let checkDate = dateUtils.addDays(newMonthDate, calcDay);\r\n if (checkDate.getMonth() > newMonthDate.getMonth()) {\r\n newMonthDate = dateUtils.addDays(newMonthDate, calcDay - 7);\r\n } else if (checkDate.getMonth() === newMonthDate.getMonth()) {\r\n if (\r\n checkDate.getDate() > newMonthDate.getDate() &&\r\n (dateUtils.addDays(newMonthDate, calcDay - 7).getFullYear() ===\r\n checkDate.getFullYear()\r\n ? !(\r\n dateUtils.addDays(newMonthDate, calcDay - 7).getMonth() <\r\n checkDate.getMonth()\r\n )\r\n : dateUtils.addDays(newMonthDate, calcDay - 7).getMonth() <\r\n checkDate.getMonth())\r\n ) {\r\n newMonthDate = dateUtils.addDays(newMonthDate, calcDay - 7);\r\n } else {\r\n newMonthDate = checkDate;\r\n }\r\n } else {\r\n newMonthDate = checkDate;\r\n }\r\n //newMonth = dateUtils.setWeek(newMonth, week, firstDayOfWeek);\r\n //newMonth = dateUtils.setDay(newMonth, dayWeek, firstDayOfWeek);\r\n let counter = 1;\r\n while (newMonthDate <= originalEnd) {\r\n dates.push(newMonthDate);\r\n counter++;\r\n newMonthDate = dateUtils.addMonths(originStart, counter);\r\n let newDayWeek = dateUtils.getDay(newMonthDate);\r\n let calcDay =\r\n dayWeek >= newDayWeek\r\n ? dayWeek - newDayWeek\r\n : 7 - (newDayWeek - dayWeek);\r\n let checkDate = dateUtils.addDays(newMonthDate, calcDay);\r\n if (checkDate.getMonth() > newMonthDate.getMonth()) {\r\n newMonthDate = dateUtils.addDays(newMonthDate, calcDay - 7);\r\n } else if (checkDate.getMonth() === newMonthDate.getMonth()) {\r\n if (\r\n checkDate.getDate() > newMonthDate.getDate() &&\r\n (dateUtils\r\n .addDays(newMonthDate, calcDay - 7)\r\n .getFullYear() === checkDate.getFullYear()\r\n ? !(\r\n dateUtils\r\n .addDays(newMonthDate, calcDay - 7)\r\n .getMonth() < checkDate.getMonth()\r\n )\r\n : dateUtils.addDays(newMonthDate, calcDay - 7).getMonth() <\r\n checkDate.getMonth())\r\n ) {\r\n newMonthDate = dateUtils.addDays(newMonthDate, calcDay - 7);\r\n } else {\r\n newMonthDate = checkDate;\r\n }\r\n } else {\r\n newMonthDate = checkDate;\r\n }\r\n }\r\n break;\r\n case RepetitiveOptions.RepeatEveryWeekDay as number:\r\n dates.push(originStart);\r\n let theDay = dateUtils.getDay(originStart);\r\n let firstDay = dateUtils.getDay(\r\n dateUtils.startOfWeek(originStart, firstDayOfWeek),\r\n );\r\n let lastDay = firstDay + 4;\r\n\r\n let day =\r\n (theDay > firstDay && theDay < lastDay) || theDay === firstDay\r\n ? 1\r\n : 3;\r\n let newDay = dateUtils.addDays(originStart, day);\r\n while (newDay <= originalEnd) {\r\n dates.push(newDay);\r\n let theDay = dateUtils.getDay(newDay);\r\n let day =\r\n (theDay > firstDay && theDay < lastDay) || theDay === firstDay\r\n ? 1\r\n : 3;\r\n newDay = dateUtils.addDays(newDay, day);\r\n }\r\n break;\r\n case RepetitiveOptions.RepeatCustom as number:\r\n if (\r\n data.RepeatsEveryDay !== null &&\r\n data.RepeatsEveryPeriod !== null\r\n ) {\r\n let period =\r\n (data.RepeatsEveryPeriod?.Id as RepeatPeriod) ||\r\n RepeatPeriod.Weeks;\r\n let everyDayNum = data.RepeatsEveryDay?.Id || 1;\r\n switch (period) {\r\n case RepeatPeriod.Days:\r\n dates.push(originStart);\r\n let newDay = dateUtils.addDays(originStart, everyDayNum);\r\n while (newDay <= originalEnd) {\r\n dates.push(newDay);\r\n newDay = dateUtils.addDays(newDay, everyDayNum);\r\n }\r\n break;\r\n case RepeatPeriod.Weeks:\r\n dates.push(originStart);\r\n let days = data.RepeatsOnDays.filter(f => f.checked === true)\r\n .map(m => m.Id - 1)\r\n .sort((a, b) => a - b);\r\n let theDay = dateUtils.getDay(originStart);\r\n let nextDay =\r\n days.filter(f => f > theDay).length > 0\r\n ? days.filter(f => f > theDay)[0]\r\n : days[0];\r\n let daysToAdd =\r\n nextDay >= theDay\r\n ? nextDay - theDay === 0\r\n ? 7 * everyDayNum\r\n : nextDay - theDay\r\n : 7 * everyDayNum - (theDay - nextDay);\r\n\r\n let newDayDate = dateUtils.addDays(originStart, daysToAdd);\r\n while (newDayDate <= originalEnd) {\r\n dates.push(newDayDate);\r\n let mtheDay = dateUtils.getDay(newDayDate);\r\n let mnextDay =\r\n days.filter(f => f > mtheDay).length > 0\r\n ? days.filter(f => f > mtheDay)[0]\r\n : days[0];\r\n let mdaysToAdd =\r\n mnextDay >= mtheDay\r\n ? mnextDay - mtheDay === 0\r\n ? 7 * everyDayNum\r\n : mnextDay - mtheDay\r\n : 7 * everyDayNum - (mtheDay - mnextDay);\r\n\r\n newDayDate = dateUtils.addDays(newDayDate, mdaysToAdd);\r\n }\r\n break;\r\n case RepeatPeriod.Months:\r\n let monthlyBy =\r\n (data.RepeatsMonthlyBy?.Id as RepeatMonthlyBy) ||\r\n RepeatMonthlyBy.RepeatsBy_DayOfMonth;\r\n switch (monthlyBy) {\r\n case RepeatMonthlyBy.RepeatsBy_DayOfMonth:\r\n dates.push(originStart);\r\n let monthDay = dateUtils.getDate(originStart);\r\n let newMonthDate = dateUtils.addMonths(\r\n originStart,\r\n everyDayNum,\r\n );\r\n dateUtils.setDate(newMonthDate, monthDay);\r\n while (newMonthDate <= originalEnd) {\r\n dates.push(newMonthDate);\r\n newMonthDate = dateUtils.addMonths(\r\n newMonthDate,\r\n everyDayNum,\r\n );\r\n dateUtils.setDate(newMonthDate, monthDay);\r\n }\r\n break;\r\n case RepeatMonthlyBy.RepeatsBy_DayOfWeek:\r\n dates.push(originStart);\r\n let dayWeek = dateUtils.getDay(originStart);\r\n let newMonth = dateUtils.addMonths(\r\n originStart,\r\n everyDayNum,\r\n );\r\n let newDayWeek = dateUtils.getDay(newMonth);\r\n let calcDay =\r\n dayWeek >= newDayWeek\r\n ? dayWeek - newDayWeek\r\n : 7 - (newDayWeek - dayWeek);\r\n let checkDate = dateUtils.addDays(newMonth, calcDay);\r\n if (checkDate.getMonth() > newMonth.getMonth()) {\r\n newMonth = dateUtils.addDays(newMonth, calcDay - 7);\r\n } else if (checkDate.getMonth() === newMonth.getMonth()) {\r\n if (\r\n checkDate.getDate() > newMonth.getDate() &&\r\n (dateUtils\r\n .addDays(newMonth, calcDay - 7)\r\n .getFullYear() === checkDate.getFullYear()\r\n ? !(\r\n dateUtils\r\n .addDays(newMonth, calcDay - 7)\r\n .getMonth() < checkDate.getMonth()\r\n )\r\n : dateUtils\r\n .addDays(newMonth, calcDay - 7)\r\n .getMonth() < checkDate.getMonth())\r\n ) {\r\n newMonth = dateUtils.addDays(newMonth, calcDay - 7);\r\n } else {\r\n newMonth = checkDate;\r\n }\r\n } else {\r\n newMonth = checkDate;\r\n }\r\n let counter = everyDayNum;\r\n while (newMonth <= originalEnd) {\r\n dates.push(newMonth);\r\n counter += everyDayNum;\r\n newMonth = dateUtils.addMonths(originStart, counter);\r\n let newDayWeek = dateUtils.getDay(newMonth);\r\n let calcDay =\r\n dayWeek >= newDayWeek\r\n ? dayWeek - newDayWeek\r\n : 7 - (newDayWeek - dayWeek);\r\n let checkDate = dateUtils.addDays(newMonth, calcDay);\r\n if (checkDate.getMonth() > newMonth.getMonth()) {\r\n newMonth = dateUtils.addDays(newMonth, calcDay - 7);\r\n } else if (\r\n checkDate.getMonth() === newMonth.getMonth()\r\n ) {\r\n if (\r\n checkDate.getDate() > newMonth.getDate() &&\r\n (dateUtils\r\n .addDays(newMonth, calcDay - 7)\r\n .getFullYear() === checkDate.getFullYear()\r\n ? !(\r\n dateUtils\r\n .addDays(newMonth, calcDay - 7)\r\n .getMonth() < checkDate.getMonth()\r\n )\r\n : dateUtils\r\n .addDays(newMonth, calcDay - 7)\r\n .getMonth() < checkDate.getMonth())\r\n ) {\r\n newMonth = dateUtils.addDays(newMonth, calcDay - 7);\r\n } else {\r\n newMonth = checkDate;\r\n }\r\n } else {\r\n newMonth = checkDate;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return dates;\r\n};\r\n","import { omit } from 'lodash';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\nimport { ISavedViewDto } from './odata/generated/entities/ISavedViewDto';\r\nimport { Condition, ODataOperators } from './odata/ODataFilter';\r\nimport { odataUrlPrefix } from 'utils/url-utils';\r\n\r\nexport const savedViewsApi = {\r\n initUpdateData: (payload: number) => {\r\n const url = `/api/odata/v4/savedviews(${payload})`;\r\n return httpClient.get(url);\r\n },\r\n deleteSavedViews: (rows: ISavedViewDto[]): Promise => {\r\n const viewIds: number[] = rows.map(item => item.Id);\r\n const data = { viewIds };\r\n const url = '/api/odata/v4/SavedViews/DeleteViews';\r\n return httpClient.post(url, data);\r\n },\r\n createSavedView: (payload: ISavedViewDto) => {\r\n const url = `/api/odata/v4/savedviews`;\r\n return httpClient.post(url, payload);\r\n },\r\n updateSavedView: (payload: ISavedViewDto) => {\r\n const url = `/api/odata/v4/savedviews(${payload.Id})`;\r\n return httpClient.put(url, payload);\r\n },\r\n patch: (payload: Partial) => {\r\n const url = `/api/odata/v4/savedviews(${payload.Id})`;\r\n return httpClient.patch(url, omit(payload, 'Id'));\r\n },\r\n useSavedView: (id: number | undefined) => {\r\n if (!id) return;\r\n return httpClient.post(odataUrlPrefix + 'savedviews/UseSavedView', { id });\r\n },\r\n getMySavedViews: (payload: {\r\n user: AuthenticatedUser | undefined;\r\n serviceGroups: Entity[] | undefined;\r\n isAdmin: boolean;\r\n onlyMyView: boolean | undefined;\r\n }) => {\r\n const url = '/api/odata/v4/SavedViews';\r\n const filters = mySavedViewFilter(\r\n payload.serviceGroups,\r\n payload.user,\r\n payload.isAdmin,\r\n );\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $expand: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter:\r\n payload.onlyMyView === true\r\n ? new Condition(\r\n 'UserName',\r\n ODataOperators.Equals,\r\n payload.user?.Id || '',\r\n ).toString()\r\n : filters.toString(),\r\n $expand: 'Assets',\r\n $skip: 0,\r\n $top: 100,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as ISavedViewDto[]);\r\n },\r\n};\r\nconst mySavedViewFilter = (\r\n topServiceGroups: Entity[] | undefined,\r\n user: AuthenticatedUser | undefined,\r\n isAdmin: boolean,\r\n): string => {\r\n const predicates: (string | Condition)[] = [];\r\n let result = '';\r\n const byUser: string[] = [];\r\n if (user) {\r\n byUser.push(\r\n new Condition('UserName', ODataOperators.Equals, user.Id).toString() ||\r\n '',\r\n );\r\n // byUser.push(\r\n // '(' +\r\n // (new Condition(\r\n // 'Shared',\r\n // ODataOperators.Equals,\r\n // true,\r\n // ).toString() || '') +\r\n // ' and ' +\r\n // (new Condition(\r\n // 'SharedUsers',\r\n // ODataOperators.Any,\r\n // user.Id,\r\n // 'Name',\r\n // ).toString() || '') +\r\n // ')',\r\n // );\r\n // if (isAdmin && user.AdminServiceGroups.length > 0) {\r\n // let ids = user.AdminServiceGroups.map(item => {\r\n // return { Id: item.Id };\r\n // }) as Identifiable[];\r\n // byUser.push(\r\n // '(' +\r\n // (new Condition(\r\n // 'Shared',\r\n // ODataOperators.Equals,\r\n // true,\r\n // ).toString() || '') +\r\n // ' and ' +\r\n // '(' +\r\n // new Condition(\r\n // 'Assets',\r\n // ODataOperators.AllIn,\r\n // ids,\r\n // 'ServiceGroupId',\r\n // ).toString() +\r\n // '))',\r\n // );\r\n // }\r\n // if (isAdmin && user.AdminEquipments.length > 0) {\r\n // let ids = user.AdminEquipments.map(item => {\r\n // return { Id: item };\r\n // }) as Identifiable[];\r\n // byUser.push(\r\n // '(' +\r\n // (new Condition(\r\n // 'Shared',\r\n // ODataOperators.Equals,\r\n // true,\r\n // ).toString() || '') +\r\n // ' and ' +\r\n // '(' +\r\n // new Condition(\r\n // 'Assets',\r\n // ODataOperators.AllIn,\r\n // ids,\r\n // 'ServiceId',\r\n // ).toString() +\r\n // '))',\r\n // );\r\n // }\r\n byUser.push(\r\n new Condition(\r\n 'Shared',\r\n ODataOperators.Equals,\r\n true,\r\n ).toString() || '',\r\n );\r\n predicates.push(byUser.filter(f => f !== '').join(' or '));\r\n result = '(' + predicates.map(f => f.toString()).join(' or ') + ')';\r\n if (topServiceGroups !== undefined) {\r\n if (topServiceGroups.length > 0) {\r\n let ids = topServiceGroups.map(item => {\r\n return { Id: item.Id };\r\n }) as Identifiable[];\r\n result +=\r\n ' and (' +\r\n new Condition(\r\n 'Assets',\r\n ODataOperators.AllIn,\r\n ids,\r\n 'ServiceGroupId',\r\n ).toString() +\r\n ')';\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n","/**\r\n *\r\n * WorkOrderTypePicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\n\r\nimport * as React from 'react';\r\n\r\nimport { Entity, Identifiable } from 'types/common';\r\nexport interface IWorkOrderTypeParamsPicker {\r\n assets?: IAssetDto[];\r\n groupIds?: number[];\r\n downtime?: boolean;\r\n}\r\nexport interface WorkOrderTypePickerProps\r\n extends Omit, 'loadData'> {\r\n useSearchOrPredicate?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/WorkOrderType';\r\nexport const initWOTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nexport const initWOTypeDataParams = (\r\n assets: IAssetDto[] | undefined,\r\n groupIds: number[] | undefined,\r\n downtime: boolean | undefined,\r\n) => {\r\n if (assets === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IWorkOrderTypeDto[]);\r\n });\r\n } else {\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n $select?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $skip: 0,\r\n $top: 10,\r\n $select: 'Id,Name,AssetAlertType',\r\n };\r\n const predicates: (string | Condition)[] =\r\n filteredWorkOrderTypes(assets, groupIds, downtime);\r\n params.$filter = new ODataFilterBuilder({\r\n predicates: predicates,\r\n stringColumns: ['Name'],\r\n stringSearch: undefined,\r\n globalServiceGroupFilter: [],\r\n }).toString();\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as IWorkOrderTypeDto[]);\r\n }\r\n};\r\nexport const filteredWorkOrderTypes = (\r\n assets: IAssetDto[] | undefined,\r\n groupIds: number[] | undefined,\r\n downtime: boolean | undefined,\r\n calibration?: boolean,\r\n): (string | Condition)[] => {\r\n const predicates: (string | Condition)[] = [];\r\n let isOfflineServiceType = false;\r\n if (assets !== undefined && assets.length > 0) {\r\n isOfflineServiceType = assets.some(\r\n f => f.ServiceTypeId === ServiceType.Offline,\r\n );\r\n const grp = assets\r\n .map(f => f.ServiceGroupId)\r\n .filter((elem, index, self) => {\r\n return (\r\n elem !== null && elem !== undefined && index === self.indexOf(elem)\r\n );\r\n })\r\n .map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n const cts = assets\r\n .map(f => f.AssetCatId)\r\n .filter((elem, index, self) => {\r\n return (\r\n elem !== null && elem !== undefined && index === self.indexOf(elem)\r\n );\r\n })\r\n .map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n const byGroups: string[] = [];\r\n byGroups.push(\r\n new Condition('Groups', ODataOperators.HasNoAny, 0).toString() || '',\r\n );\r\n byGroups.push(\r\n `(${grp\r\n .map(\r\n g =>\r\n new Condition('Groups', ODataOperators.Any, g.Id).toString() || '',\r\n )\r\n .filter(f => f !== '')\r\n .join(' and ')})`,\r\n );\r\n predicates.push(\r\n '(' + byGroups.filter(f => f !== '' && f !== '()').join(' or ') + ')',\r\n );\r\n const byCats: string[] = [];\r\n byCats.push(\r\n new Condition('AssetCats', ODataOperators.HasNoAny, 0).toString() || '',\r\n );\r\n byCats.push(\r\n `(${cts\r\n .map(\r\n g =>\r\n new Condition('AssetCats', ODataOperators.Any, g.Id).toString() ||\r\n '',\r\n )\r\n .filter(f => f !== '')\r\n .join(' and ')})`,\r\n );\r\n predicates.push(\r\n '(' + byCats.filter(f => f !== '' && f !== '()').join(' or ') + ')',\r\n );\r\n }\r\n if (groupIds !== undefined && groupIds.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'Groups',\r\n ODataOperators.Includes,\r\n groupIds.map(g => {\r\n return { Id: g } as Identifiable;\r\n }),\r\n ).toString() || '',\r\n );\r\n }\r\n if (isOfflineServiceType) {\r\n predicates.push(\r\n new Condition('DowntimeEnabled', ODataOperators.Equals, false),\r\n );\r\n } else if (downtime) {\r\n predicates.push(\r\n new Condition('AssetAlertType', ODataOperators.Equals, true),\r\n );\r\n predicates.push(\r\n new Condition('DowntimeEnabled', ODataOperators.Equals, true),\r\n );\r\n }\r\n if (calibration === true) {\r\n predicates.push(\r\n new Condition('ShowOnCalibrationHistory', ODataOperators.Equals, true),\r\n );\r\n }\r\n predicates.push(new Condition('Statuses', ODataOperators.Any, true, 'New'));\r\n return predicates || [];\r\n};\r\nexport function withParamsFilter(\r\n assets: IAssetDto[] | undefined,\r\n groupIds: number[] | undefined,\r\n downtime: boolean | undefined,\r\n) {\r\n return (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n const predicates: (string | Condition)[] =\r\n filteredWorkOrderTypes(assets, groupIds, downtime);\r\n params.$filter = new ODataFilterBuilder({\r\n predicates: predicates,\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm === null ? undefined : searchTerm,\r\n globalServiceGroupFilter: [],\r\n }).toString();\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n };\r\n}\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n queryUrl?: string,\r\n useSearchOrPredicate?: boolean,\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url: url ?? queryUrl,\r\n predicates: predicates,\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'UserInquiry',\r\n 'AssetAlertType',\r\n 'QuickCreation',\r\n 'ReportSymptoms',\r\n 'UserCreated',\r\n 'NotifySGA',\r\n 'NotifyCreator',\r\n 'NotifyInstrumentAdmin',\r\n 'NotifyLabTech',\r\n 'Active',\r\n 'StaffOnly',\r\n 'AutoCreateEvent',\r\n 'RepairCodesEnabled',\r\n 'AssignedToCoreAdmin',\r\n 'AssignedToInstrumentAdmin',\r\n 'AssignedToLabTech',\r\n 'AssignedToCreator',\r\n 'ShowOnCalibrationHistory',\r\n 'NotifyAdditionalEmails',\r\n 'UserInquiryGuidance',\r\n 'RepeatsOn',\r\n 'DefaultSubject',\r\n 'DefaultCreatedBy',\r\n 'CustomFormId',\r\n 'RepeatsEveryNum',\r\n 'RepeatsEveryType',\r\n 'RepeatsBy',\r\n 'AutoCreateFor',\r\n 'DefaultRemaindBefore',\r\n 'RepetitiveOptions',\r\n 'DowntimeReasonTypeId',\r\n 'DowntimeDuration',\r\n 'CreatedDate',\r\n 'UpdateDate',\r\n 'DefaultEventTime',\r\n 'AssignedUsers',\r\n 'AssetCats',\r\n 'Groups',\r\n 'FormValues',\r\n 'Statuses',\r\n 'NotEditable',\r\n 'TitleEnabled',\r\n 'EventTimeEnabled',\r\n 'DowntimeEnabled',\r\n 'AssigneeEnabled',\r\n ],\r\n useSearchOrPredicate: useSearchOrPredicate,\r\n });\r\nexport function WorkOrderTypePicker(props: WorkOrderTypePickerProps) {\r\n const innerLoadData = (predicates, queryUrl) =>\r\n loadData(props.predicates, queryUrl, props.useSearchOrPredicate);\r\n // const loadData = withParamsFilter(\r\n // props.assets,\r\n // props.groupIds,\r\n // props.downtime,\r\n // );\r\n return (\r\n \r\n );\r\n}\r\nexport const loadWorkOrderTypes = loadData;\r\n","import { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\n\r\nexport interface InventoryBatchPickerProps\r\n extends Omit, 'loadData'> {}\r\nconst url = '/api/odata/v4/InventoryBatches';\r\nexport const generateInventoryBatchName = (\r\n dto: IInventoryBatchDto,\r\n): IInventoryBatchDto => {\r\n let name = `Batch: #${dto?.Id} - ${dto.Name} - ${dto?.Inventory}`;\r\n return Object.assign({}, dto, { Name: name });\r\n};\r\nexport const convertInventoryBatchName = (\r\n Id: number,\r\n Name: string,\r\n Inventory: number,\r\n): string => {\r\n let name = `Batch: #${Id} - ${Name} - ${Inventory}`;\r\n return name;\r\n};\r\nconst loadBaseData = (\r\n predicates: (string | Condition)[] | undefined,\r\n select?: (keyof IInventoryBatchDto)[],\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: predicates,\r\n //transformModel: generateInventoryBatchName,\r\n // TODO: narrow down used properties list\r\n select:\r\n !!select && select.length > 0\r\n ? select\r\n : [\r\n 'Id',\r\n 'Name',\r\n 'OfflineServiceTypeId',\r\n 'OfflineServiceTypeName',\r\n 'Inventory',\r\n 'Lot',\r\n 'CreatedAt',\r\n 'CreatedBy',\r\n 'ExpirationDate',\r\n 'PurchaseDate',\r\n 'PurchasePricePerUnit',\r\n 'InventoryUsed',\r\n 'StokRenewed',\r\n ],\r\n globalServiceGroupFilter: undefined,\r\n });\r\n\r\nexport function InventoryBatchPicker(props: InventoryBatchPickerProps) {\r\n const innerLoadData = loadBaseData(props.predicates);\r\n return (\r\n \r\n convertInventoryBatchName(\r\n (option as IInventoryBatchDto).Id,\r\n (option as IInventoryBatchDto).Name,\r\n (option as IInventoryBatchDto).Inventory,\r\n )\r\n }\r\n renderOptionName={option =>\r\n convertInventoryBatchName(\r\n (option as IInventoryBatchDto).Id,\r\n (option as IInventoryBatchDto).Name,\r\n (option as IInventoryBatchDto).Inventory,\r\n )\r\n }\r\n {...props}\r\n />\r\n );\r\n}\r\nexport const loadInventoryBatchesData = loadBaseData;\r\nexport function BatchesByServiceTypeFilter(\r\n serviceTypeId: number,\r\n withStockRenewed?: boolean,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(\r\n new Condition(\r\n 'OfflineServiceTypeId',\r\n ODataOperators.Equals,\r\n serviceTypeId,\r\n ),\r\n );\r\n if (!!withStockRenewed) {\r\n predicates.push(\r\n new Condition(\r\n 'StokRenewed',\r\n ODataOperators.Equals,\r\n withStockRenewed,\r\n ),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const AlignRight = styled('div')`\r\n text-align: right;\r\n`;\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { workOrderActions as actions } from '.';\r\nimport { WorkOrderApi as api } from 'api/WorkOrderApi';\r\nimport { FileStoreApi } from 'api/fileStoreApi';\r\nimport {\r\n ConvertModelToEntity,\r\n ConvertNewWorkOrdersToModel,\r\n DowntimeOverlaps,\r\n ReservationsOfflineData,\r\n SendEmailOnOffline,\r\n WorkOrderDetailsState,\r\n WorkOrderGlobalState,\r\n WorkOrderQueryStringParameters,\r\n WorkOrderResponse,\r\n} from './types';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport { AxiosError } from 'axios';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { WorkOrderDetailsProps } from '..';\r\nimport { IModelStateResponseType, IResponseType } from 'types/ResponseType';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { selectSavedLinkedOrders, selectUpdateAllRecurrent } from './selectors';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\nimport { CustomFormTypeEnum } from 'enums/CustomFormType';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport {\r\n selectAppTimeZone,\r\n selectAuthenticatedUser,\r\n} from 'app/slice/selectors';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { getFilesModel, UpdateFilesModel } from 'utils/fileStoreHelper';\r\nimport { IsEntity } from 'app/components/BasicTable/BasicFilter/AppliedFilterComponent';\r\nimport { UserProfileSettings } from 'types/UserProfileSettings';\r\nimport { routerActions } from 'connected-react-router';\r\nimport { getErrorMessages } from 'utils/modelStateUtils';\r\nimport { ITimeZone } from 'types/AppSettings';\r\nimport { formatToTimeZoneUTCDate } from 'utils/date-utils-tz';\r\n\r\nfunction* doInitCreate(action: PayloadAction) {\r\n try {\r\n const tz: ITimeZone | undefined = yield select(selectAppTimeZone);\r\n const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n const data = yield call(api.initCreateData, action.payload);\r\n data.OfflineEventStart = formatToTimeZoneUTCDate(\r\n data.OfflineEventStart,\r\n tz?.Iana,\r\n userTimeZone,\r\n );\r\n data.OfflineEventEnd = formatToTimeZoneUTCDate(\r\n data.OfflineEventEnd,\r\n tz?.Iana,\r\n userTimeZone,\r\n );\r\n data.EventStart = formatToTimeZoneUTCDate(\r\n data.EventStart,\r\n tz?.Iana,\r\n userTimeZone,\r\n );\r\n data.AlertStart = formatToTimeZoneUTCDate(\r\n data.AlertStart,\r\n tz?.Iana,\r\n userTimeZone,\r\n );\r\n yield put(actions.initWorkOrder_Success(data));\r\n } catch (error: unknown) {\r\n yield put(actions.initWorkOrder_Error(error));\r\n }\r\n}\r\nfunction* doInitUpdate(action: PayloadAction) {\r\n try {\r\n //const tz: ITimeZone | undefined = yield select(selectAppTimeZone);\r\n const data: IWorkOrderDetailsDto = yield call(\r\n api.initUpdateData,\r\n action.payload,\r\n );\r\n if (!data || data === null) {\r\n yield put(routerActions.push({ pathname: '/notallowed', search: '' }));\r\n } else {\r\n // set the offline event start to value provided through the params\r\n // for example, if an alert is edited from the scheduler, params will have an alert id and new start/end dates\r\n // these dates should override current alert offline event start/end\r\n // the values have to pass through formatQueryStringDate since alert details does not accept ISO properly and will shift the dates otherwise\r\n if (action.payload.offStart !== undefined) {\r\n data.OfflineEventStart = action.payload.offStart;\r\n }\r\n if (action.payload.offEnd !== undefined) {\r\n data.OfflineEventEnd = action.payload.offEnd;\r\n }\r\n\r\n yield put(actions.initUpdateWorkOrder_Success(data));\r\n }\r\n } catch (error: unknown) {\r\n yield put(actions.initUpdateWorkOrder_Error(Error));\r\n }\r\n}\r\nfunction* doCreate(action: PayloadAction) {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const httpPayloads: IWorkOrderDetailsDto[] = ConvertNewWorkOrdersToModel(\r\n action.payload,\r\n user,\r\n );\r\n const submissionFormFiles =\r\n action.payload.workOrderDetails.SubmissionFormFiles;\r\n const savedLinkeCalibrations = yield select(selectSavedLinkedOrders);\r\n try {\r\n let responses: WorkOrderResponse[] = [];\r\n for (let idx = 0; idx < httpPayloads.length; idx++) {\r\n const result = yield call(api.insertWorkOrder, httpPayloads[idx]);\r\n responses.push(result);\r\n }\r\n yield call(api.deleteTempComments, action.payload.commmentIds);\r\n let fileResponses: IResponseType[] = [];\r\n if (submissionFormFiles.length > 0) {\r\n let resp = responses.filter(f => f.Id !== undefined);\r\n for (let i = 0; i < resp.length; i++) {\r\n let data = getFilesModel(\r\n [],\r\n submissionFormFiles,\r\n FileTypes.AlertTypeFile,\r\n resp[i].Id || -1,\r\n CustomFormTypeEnum.AlertType,\r\n 1,\r\n null,\r\n null,\r\n resp[i].WorkOrderTypeId || null,\r\n );\r\n let fileRes = yield call(FileStoreApi.saveFormFiles, data);\r\n fileResponses.push(fileRes);\r\n }\r\n }\r\n\r\n let responseErrors = responses\r\n .filter(err => err.ErrorMessages.length > 0)\r\n .flatMap(f => f.ErrorMessages);\r\n\r\n if (fileResponses.length > 0) {\r\n fileResponses.forEach(f => {\r\n if (f.ErrorMessages.length > 0) {\r\n responseErrors = [...responseErrors, ...f.ErrorMessages];\r\n }\r\n });\r\n }\r\n let responseWarnings = responses\r\n .filter(err => err.WarningMessages.length > 0)\r\n .flatMap(f => f.WarningMessages);\r\n let responseSuccess = responses\r\n .filter(err => err.SuccessMessages.length > 0)\r\n .flatMap(f => f.SuccessMessages);\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: 'workOrderInsertError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: 'workOrderInsertWarning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n if (responseSuccess.length > 0) {\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n yield put(actions.setSaveNewComments(true));\r\n yield put(\r\n actions.setOrderNumbers(\r\n responses.map(f => f.Id ?? 0).filter(f => f !== 0),\r\n ),\r\n );\r\n for (let i = 0; i < responseSuccess.length; i++) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'workOrderInsertSuccess_' + i,\r\n message: responseSuccess[i],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: responses[i].Id,\r\n created: true,\r\n itemName: i18next.t(translations.WorkOrdersPageName),\r\n detailsType: RenderPageType.WorkOrderDetails,\r\n detailsTypeProps: {\r\n queryParams: {\r\n id: '' + responses[i].Id,\r\n } as WorkOrderQueryStringParameters,\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n if (savedLinkeCalibrations.length > 0) {\r\n for (let idx = 0; idx < savedLinkeCalibrations.length; idx++) {\r\n for (let widx = 0; widx < responses.length; widx++) {\r\n yield put(\r\n actions.addLinkedCalibration({\r\n id: responses[widx].Id ?? 0,\r\n link: savedLinkeCalibrations[idx].Id,\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n yield put(\r\n appSettingsActions.updateUserProfileSettings({\r\n key: 'LastUsedDowntimeType',\r\n model: {\r\n UserName: user?.Id,\r\n Key: 'LastUsedDowntimeType',\r\n Value:\r\n action.payload.workOrderDetails.WorkOrderType?.Id?.toString(),\r\n } as UserProfileSettings,\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n //REPLACED WITH THIS^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n //TO SHOW MULTIPLE NOTIFICATIONS FOR EACH CREATED WORK ORDER\r\n /* if (responseSuccess.length > 0) {\r\n let res = responses[0];\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'workOrderInsertSuccess',\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: res.Id,\r\n created: true,\r\n itemName: i18next.t(translations.WorkOrdersPageName),\r\n detailsType: RenderPageType.workOrderDetails,\r\n detailsTypeProps: {\r\n queryParams: {\r\n id: '' + res.Id,\r\n } as WorkOrderQueryStringParameters,\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n } */\r\n let hasErrors =\r\n responses.filter(f => f.ErrorMessages.length > 0).length > 0;\r\n let hasResOffline =\r\n responses.filter(f => f.sendEmailOnOffline === true).length > 0;\r\n let offData = responses\r\n .map(m => {\r\n return isNullOrUndefined(\r\n m.ReservationOffline[0],\r\n )\r\n ? undefined\r\n : {\r\n AlertId: m.ReservationOffline[0]?.AlertId,\r\n offStart: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(m.ReservationOffline[0]?.offStart),\r\n ),\r\n offEnd: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(m.ReservationOffline[0]?.offEnd),\r\n ),\r\n ReasonName: m.ReservationOffline[0].ReasonName,\r\n Remarks: m.ReservationOffline[0].Remarks,\r\n reservationIds: m.ReservationOffline[0].reservationIds,\r\n };\r\n })\r\n .filter(f => f !== undefined) as ReservationsOfflineData[];\r\n yield put(\r\n actions.createWorkOrder_Success({\r\n hasErrors: hasErrors,\r\n sendEmailOnOffline: hasResOffline,\r\n reservationOffline: offData,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'workOrderInsert',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createWorkOrder_Error(Error));\r\n }\r\n}\r\nfunction* doUpdate(\r\n action: PayloadAction<{\r\n current: WorkOrderDetailsState;\r\n original: WorkOrderDetailsState | undefined;\r\n originalSubFormFiles: IFormFileValue[];\r\n originalStaffFormFiles: IFormFileValue[];\r\n }>,\r\n) {\r\n const httpPayloads: IWorkOrderDetailsDto = ConvertModelToEntity(\r\n action.payload.current,\r\n action.payload.original,\r\n );\r\n const submissionFormFiles = action.payload.current.SubmissionFormFiles;\r\n const staffFormFiles = action.payload.current.StaffFormFiles;\r\n const updateAll = yield select(selectUpdateAllRecurrent);\r\n httpPayloads.UpdateAll = updateAll;\r\n let filesData: UpdateFilesModel[] = [];\r\n if (\r\n submissionFormFiles.length > 0 ||\r\n action.payload.originalSubFormFiles.length > 0\r\n ) {\r\n filesData = getFilesModel(\r\n action.payload.originalSubFormFiles,\r\n submissionFormFiles,\r\n FileTypes.AlertTypeFile,\r\n action.payload.current.Id,\r\n CustomFormTypeEnum.AlertType,\r\n updateAll === true ? 3 : 1,\r\n action.payload.current.RecurringAssetId,\r\n action.payload.current.RecurringGroupId,\r\n action.payload.current.WorkOrderType?.Id || null,\r\n );\r\n }\r\n if (\r\n staffFormFiles.length > 0 ||\r\n action.payload.originalStaffFormFiles.length > 0\r\n ) {\r\n filesData = [\r\n ...filesData,\r\n ...getFilesModel(\r\n action.payload.originalStaffFormFiles,\r\n staffFormFiles,\r\n FileTypes.AlertFile,\r\n action.payload.current.Id,\r\n CustomFormTypeEnum.Alert,\r\n updateAll === true ? 3 : 1,\r\n action.payload.current.RecurringAssetId,\r\n action.payload.current.RecurringGroupId,\r\n null,\r\n ),\r\n ];\r\n }\r\n try {\r\n const results = yield call(api.updateWorkOrder, httpPayloads);\r\n let response = results as WorkOrderResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (filesData.length > 0) {\r\n let fileRes = yield call(FileStoreApi.updateFormFiles, filesData);\r\n let fileResponses = fileRes as IResponseType;\r\n if (fileResponses.ErrorMessages.length > 0) {\r\n respErrors = [...respErrors, ...fileResponses.ErrorMessages];\r\n }\r\n }\r\n\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'workOrderUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'workOrderUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'workOrderUpdate',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id,\r\n created: false,\r\n itemName: i18next.t(translations.WorkOrdersPageName),\r\n detailsType: RenderPageType.WorkOrderDetails,\r\n detailsTypeProps: {\r\n queryParams: {\r\n id: '' + response.Id,\r\n } as WorkOrderQueryStringParameters,\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n if (response.AutoCreatedOrders.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: `workOrderUpdateAuto-${response.AutoCreatedOrders[0].AlertId}`,\r\n message: response.SuccessMessages[0],\r\n messageTypeProps: {\r\n Id: response.Id,\r\n created: false,\r\n itemName: 'The following next Work Order',\r\n itemEndName: `has been created and set to start at ${\r\n dateUtils.longDateTimeFormat(\r\n response.AutoCreatedOrders[0].Date,\r\n ) ?? ''\r\n }`,\r\n detailsType: RenderPageType.WorkOrderDetails,\r\n detailsTypeProps: {\r\n queryParams: {\r\n id: '' + response.AutoCreatedOrders[0].AlertId,\r\n } as WorkOrderQueryStringParameters,\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n let hasResOffline = response.sendEmailOnOffline === true;\r\n let offData =\r\n response.ReservationOffline.length > 0\r\n ? response.ReservationOffline.map(m => {\r\n return {\r\n AlertId: m.AlertId,\r\n offStart: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(m.offStart),\r\n ),\r\n offEnd: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(m.offEnd),\r\n ),\r\n ReasonName: m.ReasonName,\r\n Remarks: m.Remarks,\r\n reservationIds: m.reservationIds,\r\n };\r\n })\r\n : ([] as ReservationsOfflineData[]);\r\n yield put(\r\n actions.updateWorkOrder_Success({\r\n hasErrors: hasErrors,\r\n sendEmailOnOffline: hasResOffline,\r\n reservationOffline: offData,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'workOrderUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateWorkOrder_Error(Error));\r\n }\r\n}\r\nfunction* doSendReservationsOfflineEmail(\r\n action: PayloadAction<{\r\n cancel: boolean;\r\n deleted: boolean;\r\n insert: boolean;\r\n doNotNotifyUsers: boolean;\r\n allAffectedUsers: boolean;\r\n reservationOffline: ReservationsOfflineData[];\r\n }>,\r\n) {\r\n try {\r\n const paload = {\r\n cancel: action.payload.cancel,\r\n deleted: action.payload.deleted,\r\n insert: action.payload.insert,\r\n doNotNotifyUsers: action.payload.doNotNotifyUsers,\r\n allAffectedUsers: action.payload.allAffectedUsers,\r\n sendData: action.payload.reservationOffline,\r\n } as SendEmailOnOffline;\r\n const result = yield call(api.sendEmailOnOffline, paload);\r\n let response = result as IModelStateResponseType;\r\n const errorMessages = getErrorMessages(response.ErrorMessages);\r\n if (errorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n errorMessages\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .map(item => {\r\n return {\r\n key: 'sendOfflineEmail',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'sendOfflineEmail',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: 'sendOfflineEmail',\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(\r\n actions.sendReservationsOfflineEmail_Success(errorMessages.length > 0),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'sendOfflineEmail',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.sendReservationsOfflineEmail_Error(Error));\r\n }\r\n}\r\nfunction* doRemoveFromLinked(action: PayloadAction) {\r\n const res = yield call(api.removefromLinks, action.payload);\r\n if (typeof res === 'number') {\r\n yield put(actions.removeFromLinked_success(res));\r\n return;\r\n }\r\n const response = res as IResponseType;\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(r => ({ message: r, variant: 'error' })),\r\n ),\r\n );\r\n}\r\nfunction* doAddToLinked(action: PayloadAction<{ id: number; link: number }>) {\r\n try {\r\n const res = yield call(api.addToLinked, action.payload);\r\n if (IsEntity(res)) {\r\n yield put(actions.addToLink_success(res));\r\n return;\r\n }\r\n const response = res.value as IResponseType;\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(r => ({ message: r, variant: 'error' })),\r\n ),\r\n );\r\n } catch (error) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doRemoveLinkedCalibration(\r\n action: PayloadAction<{ id: number; link: number }>,\r\n) {\r\n const res = yield call(api.removeLinkedCalibration, action.payload);\r\n const response = res as IResponseType;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(r => ({ message: r, variant: 'error' })),\r\n ),\r\n );\r\n }\r\n yield put(actions.removeLinkedCalibration_success());\r\n}\r\nfunction* doaddLinkedCalibration(\r\n action: PayloadAction<{ id: number; link: number }>,\r\n) {\r\n try {\r\n const res = yield call(api.addLinkedToCalibration, action.payload);\r\n const response = res as IResponseType;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(r => ({ message: r, variant: 'error' })),\r\n ),\r\n );\r\n }\r\n yield put(actions.addLinkedCalibration_success());\r\n } catch (error) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doSetAny(\r\n action: PayloadAction<{\r\n fieldKey: keyof WorkOrderDetailsState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setAnyValueSuccess(action.payload));\r\n}\r\nfunction* doSetCreatedOrders(action: PayloadAction) {\r\n yield put(actions.setOrderNumbers_success(action.payload));\r\n}\r\nfunction* doCheckDowntimeOverlaps(action: PayloadAction) {\r\n try {\r\n const res = yield call(api.getOverlappingDowntimes, action.payload);\r\n const response = res as DowntimeOverlaps[];\r\n yield put(actions.checkDowntimeOverlaps_Success(response));\r\n } catch (error) {\r\n yield put(actions.checkDowntimeOverlaps_Success(undefined));\r\n }\r\n}\r\nfunction* doRemoveTempComments(action: PayloadAction) {\r\n yield call(api.deleteTempComments, action.payload);\r\n}\r\n\r\nexport function* workOrderSaga() {\r\n yield takeLatest(actions.initWorkOrder.type, doInitCreate);\r\n yield takeLatest(actions.initUpdateWorkOrder.type, doInitUpdate);\r\n yield takeLatest(actions.createWorkOrder.type, doCreate);\r\n yield takeLatest(actions.updateWorkOrder.type, doUpdate);\r\n yield takeLatest(\r\n actions.sendReservationsOfflineEmail.type,\r\n doSendReservationsOfflineEmail,\r\n );\r\n yield takeLatest(actions.removeFromLinked.type, doRemoveFromLinked);\r\n yield takeLatest(actions.addToLinked.type, doAddToLinked);\r\n yield takeLatest(\r\n actions.removeLinkedCalibration.type,\r\n doRemoveLinkedCalibration,\r\n );\r\n yield takeLatest(actions.addLinkedCalibration.type, doaddLinkedCalibration);\r\n yield takeLatest(actions.setAnyValue.type, doSetAny);\r\n yield takeLatest(actions.setOrderNumbers.type, doSetCreatedOrders);\r\n yield takeLatest(actions.checkDowntimeOverlaps.type, doCheckDowntimeOverlaps);\r\n yield takeLatest(\r\n actions.resetCreateWorkOrderState.type,\r\n doRemoveTempComments,\r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { Entity } from 'types/common';\r\nimport { Timestamp } from 'types/Timestamp';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { workOrderSaga } from './saga';\r\nimport {\r\n ConvertEntityToModel,\r\n DowntimeOverlaps,\r\n ReservationsOfflineData,\r\n WorkOrderDetailsState,\r\n WorkOrderGlobalState,\r\n WorkOrderQueryStringParameters,\r\n WorkOrderReadonlyState,\r\n WorkOrderState,\r\n} from './types';\r\n\r\nexport const initialState: WorkOrderState = {\r\n processing: false,\r\n createState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n updateState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n reservationOffline: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n sendEmailOnOffline: false,\r\n readonlyState: undefined,\r\n updateAllRecurrent: false,\r\n valueHandler: undefined,\r\n doSaveNewComments: undefined,\r\n createdOrders: [],\r\n savedLinkedOrders: [],\r\n calibrationsChanged: undefined,\r\n linksProcessing: undefined,\r\n downtimeOverlaps: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'workOrder',\r\n initialState,\r\n reducers: {\r\n initWorkOrder(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = true;\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.downtimeOverlaps = undefined;\r\n },\r\n initWorkOrder_Success(state, action: PayloadAction) {\r\n state.processing = false;\r\n state.createState.data = ConvertEntityToModel(\r\n action.payload,\r\n action.payload.ToDown,\r\n );\r\n },\r\n initWorkOrder_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n initUpdateWorkOrder(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = true;\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initUpdateWorkOrder_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = false;\r\n state.updateState.data = ConvertEntityToModel(action.payload, undefined);\r\n state.readonlyState = action.payload.data as WorkOrderReadonlyState;\r\n },\r\n initUpdateWorkOrder_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n // state.updateState.data = undefined;\r\n // state.readonlyState = undefined;\r\n },\r\n createWorkOrder(state, action: PayloadAction) {\r\n state.createState.processing = true;\r\n state.createState.completed = undefined;\r\n state.createState.hasErrors = undefined;\r\n },\r\n createWorkOrder_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n sendEmailOnOffline: boolean;\r\n reservationOffline: ReservationsOfflineData[];\r\n }>,\r\n ) {\r\n state.createState.processing = false;\r\n state.createState.hasErrors = action.payload.hasErrors;\r\n state.createState.completed = true;\r\n\r\n state.reservationOffline.data = action.payload.reservationOffline;\r\n state.sendEmailOnOffline = action.payload.sendEmailOnOffline;\r\n },\r\n createWorkOrder_Error(state, action: PayloadAction) {\r\n state.createState.processing = false;\r\n state.createState.completed = true;\r\n state.createState.hasErrors = true;\r\n },\r\n updateWorkOrder(\r\n state,\r\n action: PayloadAction<{\r\n current: WorkOrderDetailsState;\r\n original: WorkOrderDetailsState | undefined;\r\n originalSubFormFiles: IFormFileValue[];\r\n originalStaffFormFiles: IFormFileValue[];\r\n }>,\r\n ) {\r\n state.updateState.processing = true;\r\n state.updateState.completed = undefined;\r\n state.updateState.hasErrors = undefined;\r\n },\r\n updateWorkOrder_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n sendEmailOnOffline: boolean;\r\n reservationOffline: ReservationsOfflineData[];\r\n }>,\r\n ) {\r\n state.updateState.processing = false;\r\n state.updateState.hasErrors = action.payload.hasErrors;\r\n state.updateState.completed = true;\r\n state.reservationOffline.data = action.payload.reservationOffline;\r\n state.sendEmailOnOffline = action.payload.sendEmailOnOffline;\r\n },\r\n updateWorkOrder_Error(state, action: PayloadAction) {\r\n state.updateState.processing = false;\r\n state.updateState.completed = true;\r\n state.updateState.hasErrors = true;\r\n },\r\n resetCreateWorkOrderState(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.OfflineEventStart = undefined;\r\n state.OfflineEventEnd = undefined;\r\n state.savedLinkedOrders = [];\r\n state.downtimeOverlaps = undefined;\r\n },\r\n resetUpdateWorkOrderState(state, action: PayloadAction) {\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.readonlyState = undefined;\r\n state.savedLinkedOrders = [];\r\n state.downtimeOverlaps = undefined;\r\n },\r\n resetReservationsOfflineState(state, action: PayloadAction) {\r\n state.sendEmailOnOffline = false;\r\n state.reservationOffline = {\r\n data: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n processing: false,\r\n };\r\n state.OfflineEventStart = undefined;\r\n state.OfflineEventEnd = undefined;\r\n },\r\n sendReservationsOfflineEmail(\r\n state,\r\n action: PayloadAction<{\r\n cancel: boolean;\r\n deleted: boolean;\r\n insert: boolean;\r\n doNotNotifyUsers: boolean;\r\n allAffectedUsers: boolean;\r\n reservationOffline: ReservationsOfflineData[];\r\n }>,\r\n ) {\r\n state.reservationOffline.processing = true;\r\n state.reservationOffline.completed = undefined;\r\n state.reservationOffline.hasErrors = undefined;\r\n },\r\n sendReservationsOfflineEmail_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.reservationOffline.processing = false;\r\n state.reservationOffline.hasErrors = action.payload;\r\n state.reservationOffline.completed = true;\r\n },\r\n sendReservationsOfflineEmail_Error(state, action: PayloadAction) {\r\n state.reservationOffline.processing = false;\r\n state.reservationOffline.completed = true;\r\n state.reservationOffline.hasErrors = true;\r\n },\r\n setUpdateAllRecurrent(state, action: PayloadAction) {\r\n state.updateAllRecurrent = action.payload;\r\n },\r\n removeFromLinked(state, action: PayloadAction) {\r\n state.processing = true;\r\n },\r\n removeFromLinked_success(state, action: PayloadAction) {\r\n state.processing = false;\r\n if (state.readonlyState === undefined) return;\r\n state.readonlyState.LinkedAlerts =\r\n state.readonlyState.LinkedAlerts.filter(f => f.Id !== action.payload);\r\n },\r\n addToLinked(state, action: PayloadAction<{ id: number; link: number }>) {\r\n state.processing = true;\r\n },\r\n addToLink_success(state, action: PayloadAction>) {\r\n state.processing = false;\r\n if (state.readonlyState === undefined) return;\r\n state.readonlyState.LinkedAlerts.push(action.payload);\r\n },\r\n setAnyValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof WorkOrderDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setAnyValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof WorkOrderDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.valueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetValueHandler(state, action: PayloadAction) {\r\n state.valueHandler = undefined;\r\n },\r\n /**\r\n * Sets the offline event start\r\n * @param state\r\n * @param action\r\n */\r\n setOfflineEventStart(state, action: PayloadAction) {\r\n state.OfflineEventStart = action.payload;\r\n },\r\n /**\r\n * Sets the offline event end\r\n * @param state\r\n * @param action\r\n */\r\n setOfflineEventEnd(state, action: PayloadAction) {\r\n state.OfflineEventEnd = action.payload;\r\n },\r\n setSaveNewComments(state, action: PayloadAction) {\r\n state.doSaveNewComments = action.payload;\r\n },\r\n setOrderNumbers(state, action: PayloadAction) {},\r\n setOrderNumbers_success(state, action: PayloadAction) {\r\n state.createdOrders = action.payload;\r\n },\r\n setSavedLinkedOrders(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.savedLinkedOrders = action.payload;\r\n },\r\n resetSavedLinkedOrders(state, action: PayloadAction) {\r\n state.savedLinkedOrders = [];\r\n },\r\n removeLinkedCalibration(\r\n state,\r\n action: PayloadAction<{ id: number; link: number }>,\r\n ) {\r\n state.linksProcessing = true;\r\n },\r\n removeLinkedCalibration_success(state, action: PayloadAction) {\r\n state.linksProcessing = false;\r\n state.calibrationsChanged = true;\r\n },\r\n addLinkedCalibration(\r\n state,\r\n action: PayloadAction<{ id: number; link: number }>,\r\n ) {\r\n state.linksProcessing = true;\r\n },\r\n addLinkedCalibration_success(state, action: PayloadAction) {\r\n state.linksProcessing = false;\r\n state.calibrationsChanged = true;\r\n },\r\n setCalibrationChanged(state, action: PayloadAction) {\r\n state.calibrationsChanged = action.payload;\r\n },\r\n checkDowntimeOverlaps(state, action: PayloadAction) {},\r\n checkDowntimeOverlaps_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.downtimeOverlaps = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: workOrderActions } = slice;\r\n\r\nexport const useWorkOrderSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: workOrderSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import React from 'react';\r\nimport { useRef } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { selectPrintPDFSections } from './slice/selectors';\r\nimport clsx from 'clsx';\r\n\r\nexport interface PrintPDFSectionProps {\r\n print: boolean;\r\n id: string;\r\n forceChecked?: boolean;\r\n fullWidth?: boolean;\r\n sectionClass?: string;\r\n}\r\nexport function PrintPDFSection(\r\n props: React.PropsWithChildren,\r\n) {\r\n const printPDFSections = useSelector(selectPrintPDFSections);\r\n const componentRef = useRef(null);\r\n const printClasses = React.useMemo(() => {\r\n const classes = ['print-section'];\r\n if (props.fullWidth) {\r\n classes.push('print-section-full-width');\r\n }\r\n let checked = printPDFSections?.some(\r\n f => f.id === props.id && (f.checked === true || props.forceChecked),\r\n );\r\n if (props.print && !checked) {\r\n classes.push('print-section-hidden');\r\n } else {\r\n classes.push('print-section-block');\r\n }\r\n return classes.join(' ');\r\n }, [\r\n printPDFSections,\r\n props.forceChecked,\r\n props.fullWidth,\r\n props.id,\r\n props.print,\r\n ]);\r\n // useEffect(() => {\r\n // if (componentRef.current !== null) {\r\n // if (props.print) {\r\n // const checked = printPDFSections?.some(\r\n // f => f.id === props.id && (f.checked === true || props.forceChecked),\r\n // );\r\n // if (checked) {\r\n // componentRef.current.style.display = 'block';\r\n // } else {\r\n // componentRef.current.style.display = 'none';\r\n // }\r\n // } else {\r\n // componentRef.current.style.display = 'initial';\r\n // }\r\n // }\r\n // }, [printPDFSections, props.forceChecked, props.id, props.print]);\r\n return (\r\n <>\r\n {props.print ? (\r\n \r\n {props.children}\r\n \r\n ) : (\r\n <>{props.children}\r\n )}\r\n \r\n );\r\n}\r\nconst PrintSection = styled.div`\r\n &.print-section {\r\n break-inside: auto;\r\n @media print {\r\n @page {\r\n size: auto;\r\n margin: 20px;\r\n }\r\n & table {\r\n width: 100%;\r\n max-width: 100%;\r\n table-layout: auto;\r\n page-break-inside: auto;\r\n border-collapse: collapse;\r\n }\r\n & table thead {\r\n display: table-header-group;\r\n }\r\n & table tbody {\r\n page-break-inside: auto;\r\n margin-bottom: 10px;\r\n }\r\n\r\n & table tr {\r\n page-break-inside: avoid;\r\n page-break-after: auto;\r\n border-collapse: collapse;\r\n & > th {\r\n padding: 4px 8px;\r\n height: auto;\r\n }\r\n & > td {\r\n padding: 4px 8px;\r\n height: auto;\r\n }\r\n }\r\n }\r\n display: initial;\r\n & > * {\r\n border: none;\r\n padding: 0px;\r\n }\r\n & .rich-editor-header {\r\n display: none;\r\n }\r\n & .rich-text-input-label {\r\n transform: translate(9px, 4px) scale(1);\r\n }\r\n & > .formsection {\r\n //display: block;\r\n & * {\r\n border: none;\r\n }\r\n & svg {\r\n display: none;\r\n }\r\n & .request-section {\r\n border: none;\r\n padding: 0px;\r\n gap: 8px;\r\n & .fields {\r\n gap: 0px;\r\n }\r\n }\r\n & .section-table {\r\n display: block;\r\n & .table-content {\r\n display: block;\r\n overflow: auto;\r\n }\r\n & > * {\r\n padding: 0px;\r\n }\r\n & .table-footer {\r\n display: none;\r\n }\r\n }\r\n & [class*='MuiToolbar-root'] {\r\n min-height: 32px;\r\n padding: 4px 0px;\r\n }\r\n & .services-cell .table-root {\r\n padding-bottom: 12px;\r\n & .table-content {\r\n padding: 0px;\r\n }\r\n }\r\n & .table-root.section-table {\r\n padding-bottom: 0px;\r\n }\r\n }\r\n &.print-section-hidden {\r\n display: none;\r\n }\r\n &.print-section-block {\r\n display: block;\r\n height: 100%;\r\n }\r\n &.print-section-full-width {\r\n width: 100%;\r\n }\r\n &.print-reservation {\r\n & .formsection {\r\n flex-direction: column;\r\n gap: 32px;\r\n & .rightsection {\r\n width: 100%;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","/**\r\n *\r\n * UserGroupPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IUserGroupDto } from 'api/odata/generated/entities/IUserGroupDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface UserGroupPickerProps\r\n extends Omit, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/UserGroupFilter';\r\nconst restrictedUrl = '/api/odata/v4/UserGroupFilter/Restricted';\r\nexport const initUserGroupData = (initval: string) => {\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: new Condition>(\r\n 'Id',\r\n ODataOperators.Equals,\r\n initval,\r\n ).toString(),\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\n\r\nexport function UserGroupPicker(props: UserGroupPickerProps) {\r\n const loadData = getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: props.predicates,\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'DepartmentId',\r\n 'DepartmentName',\r\n 'InstituteId',\r\n 'InstituteName',\r\n 'InstituteTypeId',\r\n 'InstituteTypeName',\r\n 'AffiliatedGroups',\r\n 'IsUserOwneGroup',\r\n ],\r\n });\r\n return (\r\n \r\n );\r\n}\r\nexport function RestrictedUserGroupPicker(props: UserGroupPickerProps) {\r\n const loadData = getAutoCompleteLoadDataFn({\r\n url: restrictedUrl,\r\n predicates: props.predicates,\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'DepartmentId',\r\n 'DepartmentName',\r\n 'InstituteId',\r\n 'InstituteName',\r\n 'InstituteTypeId',\r\n 'InstituteTypeName',\r\n 'AffiliatedGroups',\r\n 'IsUserOwneGroup',\r\n ],\r\n });\r\n return (\r\n \r\n );\r\n}\r\nexport function RestrictedFilter(\r\n departmentId?: number,\r\n instituteId?: number,\r\n instituteTypeId?: number,\r\n restricted?: boolean,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (!!departmentId) {\r\n predicates.push(\r\n new Condition(\r\n 'DepartmentId',\r\n ODataOperators.Equals,\r\n departmentId,\r\n ),\r\n );\r\n }\r\n if (!!instituteId) {\r\n predicates.push(\r\n new Condition(\r\n 'InstituteId',\r\n ODataOperators.Equals,\r\n instituteId,\r\n ),\r\n );\r\n }\r\n if (!!instituteTypeId) {\r\n predicates.push(\r\n new Condition(\r\n 'InstituteTypeId',\r\n ODataOperators.Equals,\r\n instituteTypeId,\r\n ),\r\n );\r\n }\r\n if (restricted) {\r\n predicates.push(\r\n new Condition(\r\n 'IsUserOwneGroup',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n","import { IOfflineServiceTypeDto } from 'api/odata/generated/entities/IOfflineServiceTypeDto';\r\nimport { IAsset } from 'app/pages/AssetPopUp/IAsset';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { intersection } from 'lodash';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { ICoresDirectoryRow } from 'types/ICoresDirectoryRow';\r\n\r\nexport function useAdminPermissions() {\r\n const user = useSelector(selectAuthenticatedUser);\r\n const roles: number[] | undefined = user?.Roles;\r\n\r\n const allowedToEdit = React.useCallback(\r\n (\r\n row: Pick,\r\n ): boolean => {\r\n if (!user) return false;\r\n return (\r\n user.HasAdminGroupPermissions(row.ServiceGroupId ?? undefined) ||\r\n (row.ServiceType !== null &&\r\n row.ServiceId !== null &&\r\n user.HasAdminServicePermissions(\r\n ServiceType[row.ServiceType],\r\n row.ServiceId,\r\n ))\r\n );\r\n },\r\n [user],\r\n );\r\n const allowedToAdd = React.useCallback(\r\n (row: Pick): boolean => {\r\n if (!user) return false;\r\n return (\r\n user.HasCreateAdminGroupPermissions(row.ServiceGroupId ?? undefined) ||\r\n user.HasAdminGroupPermissions(row.ServiceGroupId ?? undefined)\r\n );\r\n },\r\n [user],\r\n );\r\n const allowedToEditOffline = React.useCallback(\r\n (row: Pick): boolean => {\r\n if (!user) return false;\r\n return (\r\n user.HasAdminGroupPermissions(row.ServiceGroupId) ||\r\n user.HasAdminServicePermissions(ServiceType.Offline, row.Id)\r\n );\r\n },\r\n [user],\r\n );\r\n const allowedToAddOffline = React.useCallback(\r\n (row: Pick): boolean => {\r\n if (!user) return false;\r\n return (\r\n user.HasCreateAdminGroupPermissions(row.ServiceGroupId) ||\r\n user.HasAdminGroupPermissions(row.ServiceGroupId)\r\n );\r\n },\r\n [user],\r\n );\r\n const allowedToEditBatch = React.useCallback(\r\n (row: Pick): boolean => {\r\n if (!user) return false;\r\n return (\r\n user.HasAdminGroupPermissions(row.ServiceGroupId) ||\r\n user.HasAdminServicePermissions(ServiceType.Offline, row.Id) ||\r\n user.HasLabTechGroupPermissions(row.ServiceGroupId) ||\r\n user.HasLabTechServicePermissions(ServiceType.Offline, row.Id)\r\n );\r\n },\r\n [user],\r\n );\r\n const allowedToEditGroup = React.useCallback(\r\n (row: Pick): boolean => {\r\n if (!user) return false;\r\n return user.HasAdminGroupOnlyPermissions(row.Id);\r\n },\r\n [user],\r\n );\r\n const allowedRoles = [\r\n Roles.Administrators,\r\n Roles.EquipmentAdministrator,\r\n Roles.GroupAdministrators,\r\n Roles.CreateNewAssetsAdmin,\r\n ];\r\n const hasRolePermissions: boolean =\r\n intersection(roles, allowedRoles).length > 0;\r\n return {\r\n hasRolePermissions,\r\n allowedToEdit,\r\n allowedToAdd,\r\n allowedToEditOffline,\r\n allowedToAddOffline,\r\n allowedToEditBatch,\r\n allowedToEditGroup,\r\n };\r\n}\r\n","/**\r\n * Parses the stored relative HRef without in a way to match how URL is parsed to produce the pathName + search\r\n * Used to save the stored filters/pathnames in the pages with the filters.\r\n * Has to be backward compatible with the aspx filters where only the search without the path was stored (e.g. foo=bar&baz=...)\r\n * @param value stored \"saved url\" value\r\n * @returns pathName + search\r\n */\r\nexport const parseProfileUrl = (\r\n value?: string,\r\n): {\r\n pathName?: string;\r\n search?: string;\r\n} => {\r\n if (value === undefined || value === null) {\r\n return {\r\n pathName: undefined,\r\n search: undefined,\r\n };\r\n }\r\n const i = value.indexOf('?');\r\n if (i < 0) {\r\n return {\r\n pathName: undefined,\r\n search: '?' + value,\r\n };\r\n }\r\n\r\n const part1 = value.slice(0, i);\r\n const part2 = value.slice(i + 1);\r\n\r\n return {\r\n pathName: undefinedIfIsEmpty(part1),\r\n search: undefinedIfIsEmpty(part2),\r\n };\r\n};\r\n\r\nexport const undefinedIfIsEmpty = (\r\n s: string | null | undefined,\r\n): string | undefined => (isEmpty(s) ? undefined : s ?? undefined);\r\n\r\nexport const isEmpty = (s: string | null | undefined): boolean => {\r\n if (s === null || s === undefined) {\r\n return true;\r\n }\r\n if (s.trim() === '') {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const undefinedIfFalsy = (s: T): T | undefined => {\r\n if (!s) return;\r\n return s;\r\n};\r\n","import * as React from 'react';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectUserProfileSettings,\r\n} from 'app/slice/selectors';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nexport interface IUseProfileProps {\r\n profileSettingKey: string;\r\n}\r\nexport const useProfileSetting = (\r\n props: IUseProfileProps,\r\n): {\r\n savedValue: string | undefined;\r\n updateValue: (value: string) => void;\r\n savedEnabled: boolean | undefined;\r\n updateEnabled: (enabled: boolean) => void;\r\n} => {\r\n const { actions } = useAppSettingsSlice();\r\n const dispatch = useDispatch();\r\n const userProfileSettings = useSelector(selectUserProfileSettings);\r\n const key = props.profileSettingKey.toLowerCase();\r\n const userProfileSetting = userProfileSettings.GetSettingValueBy(\r\n f => f.Key.toLowerCase() === key,\r\n );\r\n\r\n const savedValue = userProfileSetting?.Value ?? undefined;\r\n const savedEnabled = userProfileSetting?.Enabled ?? undefined;\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n\r\n const updateValue = React.useCallback(\r\n (value: string) => {\r\n if (authenticatedUser === undefined) {\r\n return;\r\n }\r\n dispatch(\r\n actions.saveUserProfileSetting({\r\n Key: props.profileSettingKey,\r\n Value: value,\r\n UserName: authenticatedUser?.Id,\r\n Enabled: true,\r\n }),\r\n );\r\n },\r\n [actions, authenticatedUser, dispatch, props.profileSettingKey],\r\n );\r\n const updateEnabled = React.useCallback(\r\n (value: boolean) => {\r\n if (authenticatedUser === undefined) {\r\n return;\r\n }\r\n if (value === savedEnabled) {\r\n return;\r\n }\r\n dispatch(\r\n actions.saveUserProfileSetting({\r\n Key: props.profileSettingKey,\r\n Value: savedValue || null,\r\n UserName: authenticatedUser?.Id,\r\n Enabled: value,\r\n }),\r\n );\r\n },\r\n [\r\n actions,\r\n authenticatedUser,\r\n dispatch,\r\n props.profileSettingKey,\r\n savedEnabled,\r\n savedValue,\r\n ],\r\n );\r\n return { savedValue, updateValue, savedEnabled, updateEnabled };\r\n};\r\n","/**\r\n *\r\n * FormOnlineServicesComboPicker - FormOnlineServicesSinglePicker\r\n *\r\n */\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n OnlineServiceMultiPicker,\r\n OnlineServiceComboPickerProps,\r\n OnlineServiceSinglePicker,\r\n} from '../pickers/MultiSelectPickers/OnlineServicesPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport {\r\n OnlineServicePicker,\r\n OnlineServicePickerProps,\r\n} from '../pickers/AutocompletePickers/OnlineServicePicker';\r\n\r\nexport const noTransform = v => v;\r\nexport const FormOnlineServicesComboPicker = ({\r\n label,\r\n transform = noTransform,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps & {\r\n multiple: boolean;\r\n transform?: (val: IServiceFilterDto) => any;\r\n } & OnlineServiceComboPickerProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n if (props.multiple) {\r\n return (\r\n {\r\n const actualValue = value.map(transform);\r\n helpers.setValue(actualValue, true);\r\n if (props.onChange) {\r\n props.onChange(actualValue);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n variant=\"filled\"\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n urlType={props.urlType}\r\n />\r\n );\r\n } else {\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n urlType={props.urlType}\r\n info={props.info}\r\n />\r\n );\r\n }\r\n};\r\nexport const FormOnlineServicesSinglePicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps &\r\n OnlineServicePickerProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n urlType={props.urlType}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n serviceGroups={props.serviceGroups}\r\n />\r\n );\r\n};\r\n","export enum TrainingState {\r\n SignedUp = 1,\r\n UnderMinimum = 2,\r\n Available = 3,\r\n Maximum = 4,\r\n}\r\n\r\nexport type TrainingStateUnion = keyof typeof TrainingState;\r\n","// import { IUserName } from 'app/pages/UsersPage/SelectdRowActions/IUsersRoles';\r\nimport {\r\n IRegisterUserModelDto,\r\n OTPModel,\r\n ResponseAccountModel,\r\n} from 'app/pages/Account/Register/components/utils';\r\nimport { IUsers } from 'app/pages/UsersPage/IUsers';\r\nimport { AxiosRequestConfig } from 'axios';\r\nimport { httpClient } from './HttpClient';\r\n\r\nexport const UsersApi = {\r\n exportForImport: (payload: string) => {\r\n const data = {\r\n users: payload,\r\n };\r\n const config: AxiosRequestConfig = {\r\n headers: {\r\n 'Content-Disposition': 'attachment; filename=template.xls',\r\n 'Content-Type': 'application/vnd.ms-excel',\r\n //'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n },\r\n responseType: 'arraybuffer',\r\n };\r\n const url = `/api/odata/v4/Users/ExportForImport`;\r\n return httpClient.post(url, data, config);\r\n },\r\n sendCode: (payload: OTPModel) => {\r\n const data = {\r\n user: { UserName: payload.UserName, Email: payload.Email, Token: '' },\r\n };\r\n const url = '/api/odata/v4/Users/SendVerificationCode';\r\n return httpClient.post(url, data);\r\n },\r\n verifyCode: (payload: { model: OTPModel; code: string }) => {\r\n const data = {\r\n user: {\r\n UserName: payload.model.UserName,\r\n Email: payload.model.Email,\r\n Token: payload.code,\r\n },\r\n };\r\n const url = '/api/odata/v4/Users/VerifyCode';\r\n return httpClient.post(url, data);\r\n },\r\n createAccount: (payload: IRegisterUserModelDto) => {\r\n const data = {\r\n user: payload,\r\n };\r\n const url = '/api/odata/v4/Users/CreateAccount';\r\n return httpClient.post(url, data);\r\n },\r\n checkCaptcha: (payload: string | null) => {\r\n const BOOKIT_APP_SECRET_KEY = '6LcO4i4UAAAAAPFgGSxt2y3qlQKN5s2iSK-nPtMi';\r\n const reqUrl = `https://www.google.com/recaptcha/api/siteverify?secret=${BOOKIT_APP_SECRET_KEY}&response=${payload}`;\r\n return httpClient.post(reqUrl);\r\n },\r\n checkUserName: (payload: string) => {\r\n const data = {\r\n user: payload,\r\n };\r\n const url = '/api/odata/v4/Users/ValidateUserName';\r\n return httpClient.post(url, data);\r\n },\r\n checkEmail: (payload: string) => {\r\n const data = {\r\n email: payload,\r\n };\r\n const url = '/api/odata/v4/Users/ValidateEmail';\r\n return httpClient.post(url, data);\r\n },\r\n sendRegistrationEmail: (payload: string) => {\r\n const data = {\r\n user: payload,\r\n };\r\n const url = '/api/odata/v4/Users/SendRegistrationEmail';\r\n return httpClient.post(url, data);\r\n },\r\n setActiveAdGroup: (adGroup: string) => {\r\n const url = '/api/odata/v4/ActiveUserGroup/SetActiveAdGroup';\r\n const data = { adGroup: adGroup };\r\n return httpClient.post(url, data);\r\n },\r\n getUser: (userName: string, params: object) => {\r\n //u0040 = @\r\n //u002e = .\r\n let userNameUnicoded: string = userName;\r\n if (userName.includes('@')) {\r\n userNameUnicoded = userNameUnicoded.replaceAll('@', 'u0040');\r\n }\r\n if (userName.includes('.')) {\r\n userNameUnicoded = userNameUnicoded.replaceAll('.', 'u002e');\r\n }\r\n const url = `/api/odata/v4/Users/${userNameUnicoded}`;\r\n return httpClient.get(url, params);\r\n },\r\n updateDefaultUserGroup: (userName: string, userGorup?: string) => {\r\n const data = {\r\n usergroup: {\r\n UserName: userName,\r\n UserGroupId: userGorup,\r\n },\r\n };\r\n const url = `/api/odata/v4/Users/SetDefaultUserGroup`;\r\n return httpClient.post(url, data);\r\n },\r\n updateDefaultBudget: (userName: string, budgetId?: number) => {\r\n const data = {\r\n budget: {\r\n UserName: userName,\r\n BudgetId: budgetId,\r\n },\r\n };\r\n const url = `/api/odata/v4/Users/SetDefaultBudget`;\r\n return httpClient.post(url, data);\r\n },\r\n updateInternalId: (userName: string, internalId?: string) => {\r\n const data = {\r\n internal: {\r\n UserName: userName,\r\n InternalId: internalId,\r\n },\r\n };\r\n const url = `/api/odata/v4/Users/SetInternalId`;\r\n return httpClient.post(url, data);\r\n },\r\n updateDtuCardId: (userName: string) => {\r\n const data = {\r\n username: userName,\r\n };\r\n const url = `/api/odata/v4/Users/DtuRequestCardNumber`;\r\n return httpClient.post(url, data);\r\n },\r\n updateInternalId2: (userName: string, internalId?: string) => {\r\n const data = {\r\n internal: {\r\n UserName: userName,\r\n InternalId: internalId,\r\n },\r\n };\r\n const url = `/api/odata/v4/Users/SetInternalId2`;\r\n return httpClient.post(url, data);\r\n },\r\n syncLdapUser: (userName: string) => {\r\n const data = {\r\n username: userName,\r\n };\r\n const url = `/api/odata/v4/Users/SyncLdapUser`;\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { BudgetPicker } from '../pickers/AutocompletePickers/BudgetPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport const FormBudgetPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps & { useSearchOrPredicate?: boolean }) => {\r\n const [field, meta, helpers] = useField(props);\r\n return (\r\n {\r\n props.onChange?.(value);\r\n helpers.setValue(value, true);\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n variant=\"filled\"\r\n predicates={props.predicates}\r\n useSearchOrPredicate={props.useSearchOrPredicate}\r\n info={props.info}\r\n />\r\n );\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) =>\r\n state.largeFilesUpload || initialState;\r\n\r\nexport const selectLargeFilesUpload = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\nexport const selectLargeFilesCanUpload = createSelector(\r\n [selectLargeFilesUpload],\r\n state => state.canUpload,\r\n);\r\nexport const selectLargeFilesUploading = createSelector(\r\n [selectLargeFilesUpload],\r\n state => state.uploading,\r\n);\r\nexport const selectLargeFilesStartedToUpload = createSelector(\r\n [selectLargeFilesUpload],\r\n state => state.startedToUpload,\r\n);\r\nexport const selectLargeFilesUploadTargetId = createSelector(\r\n [selectLargeFilesUpload],\r\n state => state.targetId,\r\n);\r\nexport const selectLargeFilesUploadFilesNumber = createSelector(\r\n [selectLargeFilesUpload],\r\n state => state.numberOfUploadedFiles,\r\n);\r\nexport const selectLargeFilesUploadSelectedFiles = createSelector(\r\n [selectLargeFilesUpload],\r\n state => state.selectedFiles,\r\n);\r\n","import { EditorProps } from '../../EditableCell';\r\nimport { tryParseFloat } from 'utils/string-utils';\r\nimport { TextField as BasicTextField } from 'app/components/TextField';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { InputAdornment } from '@material-ui/core';\r\n\r\n/* Project Name */\r\n// 'Number':\r\n\r\nexport function NumberField({\r\n value,\r\n onChange,\r\n parentValue,\r\n min,\r\n max,\r\n step,\r\n helperText,\r\n info,\r\n error,\r\n autoFocus,\r\n ...props\r\n}: EditorProps & MinMaxProps) {\r\n return (\r\n // onChange(tryParseFloat(e.target.value) ?? null)}\r\n // {...props}\r\n // />\r\n \r\n {!!info && info !== '' && }\r\n {error && }\r\n \r\n ),\r\n }}\r\n variant=\"standard\"\r\n error={error}\r\n fullWidth\r\n autoFocus={autoFocus}\r\n inputProps={{\r\n type: 'number',\r\n min: min,\r\n max: max,\r\n step: step,\r\n }}\r\n value={value || ''}\r\n onChange={e => onChange(tryParseFloat(e.target.value) ?? null)}\r\n onBlur={props.onBlur}\r\n id={props.id}\r\n label={props.label}\r\n name={props.name}\r\n />\r\n );\r\n}\r\n\r\ninterface MinMaxProps {\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n}\r\n\r\nexport function withMinMax(Component, withProps: MinMaxProps) {\r\n return (props: EditorProps) => (\r\n \r\n );\r\n}\r\n","import { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Entity } from 'types/common';\r\nimport { IReservationWaitingListDto } from '../IReservationWaitingListDto';\r\nimport { ISignUpModel, ISimpleSignUpModel } from './ISignUpModel';\r\n\r\nexport interface SimpleModeResults {\r\n isSimpleMode: boolean;\r\n hoursCount: number;\r\n notificationsLength: number;\r\n}\r\n\r\nexport function getUpcomingReservationsOptions(t: TFunction) {\r\n return [\r\n {\r\n Id: 'false',\r\n Name: t(translations.doNotNotify) as string,\r\n },\r\n {\r\n Id: 'true',\r\n Name: t(translations.UpcomingReservationNotifyMeBefor) as string,\r\n },\r\n ] as Entity[];\r\n}\r\nexport function getNotifyOnResCancelationOptions(t: TFunction) {\r\n return [\r\n {\r\n Id: 'false',\r\n Name: t(translations.doNotNotify) as string,\r\n },\r\n {\r\n Id: 'true',\r\n Name: t(translations.NotifyOnReservationHourseBeforeCancel) as string,\r\n Info: t(\r\n translations.NotifyOnReservationHourseBeforeCancel_info,\r\n ) as string,\r\n },\r\n ];\r\n}\r\nexport function getNotifyOnResTerminationOptions(t: TFunction) {\r\n return [\r\n {\r\n Id: '',\r\n Name: t(translations.doNotNotify) as string,\r\n },\r\n {\r\n Id: 'false',\r\n Name: t(translations.NotifyResTermEvery) as string,\r\n },\r\n {\r\n Id: 'true',\r\n Name: t(translations.NotifyResTermHours) as string,\r\n },\r\n ] as Entity[];\r\n}\r\nexport function getUpcomingTrainingSessionOptions(t: TFunction) {\r\n return [\r\n {\r\n Id: 'false',\r\n Name: t(translations.doNotNotify) as string,\r\n },\r\n {\r\n Id: 'true',\r\n Name: t(translations.UpcomingTrainingSessionNotifyMeBefor) as string,\r\n },\r\n ] as Entity[];\r\n}\r\nexport function getNotifyOnEndUsageOptions(t: TFunction) {\r\n return [\r\n {\r\n Id: '',\r\n Name: t(translations.doNotNotify) as string,\r\n },\r\n {\r\n Id: 'false',\r\n Name: t(translations.NotifyUsageEndEvery) as string,\r\n },\r\n {\r\n Id: 'true',\r\n Name: t(translations.NotifyUsageEndHours) as string,\r\n },\r\n ] as Entity[];\r\n}\r\nfunction optionToBoolean(rawValue: string | undefined) {\r\n if (rawValue === undefined) {\r\n return undefined;\r\n }\r\n if (rawValue === null) {\r\n return undefined;\r\n }\r\n if (rawValue === '') {\r\n return undefined;\r\n }\r\n const value = rawValue.toLowerCase() === 'true';\r\n return value;\r\n}\r\nexport function convertSignUpToModel(\r\n model: ISignUpModel,\r\n edited?: IReservationWaitingListDto,\r\n) {\r\n return {\r\n Id: model.Id,\r\n EquipmentID: model.Equipment?.Id,\r\n EquipmentName: model.Equipment?.Name,\r\n BeforeResCancelHour:\r\n (optionToBoolean(model.NotifyOnResCancelation) ?? false) === false\r\n ? 0\r\n : model.BeforeResCancelHour,\r\n NotifyOnResCancelation:\r\n optionToBoolean(model.NotifyOnResCancelation) ?? false,\r\n NextResTermHours:\r\n optionToBoolean(model.NotifyOnResTermination) === undefined ||\r\n optionToBoolean(model.NotifyOnResTermination) === false\r\n ? 0\r\n : model.NextResTermHours,\r\n NotifyOnResTermination:\r\n optionToBoolean(model.NotifyOnResTermination) === undefined\r\n ? false\r\n : true,\r\n NextReservationHours:\r\n optionToBoolean(model.NotifyOnEndUsage) === undefined ||\r\n optionToBoolean(model.NotifyOnEndUsage) === false\r\n ? 0\r\n : model.NextReservationHours,\r\n NotifyOnEndUsage:\r\n optionToBoolean(model.NotifyOnEndUsage) === undefined ? false : true,\r\n BeforeResStartHour: edited?.BeforeResStartHour ?? 0,\r\n BeforeTrainStartHour: edited?.BeforeTrainStartHour ?? 0,\r\n ServiceGroupId: edited?.ServiceGroupId,\r\n UpcomingReservations: edited?.UpcomingReservations,\r\n UpcomingTrainingSession: edited?.UpcomingTrainingSession,\r\n UserName: model.User?.Id ?? edited?.UserName,\r\n UserDisplayName: model.User?.Name ?? edited?.UserDisplayName,\r\n UserEmail: edited?.UserEmail,\r\n } as IReservationWaitingListDto;\r\n}\r\nexport function convertSimpleSignUpToModel(\r\n model: ISimpleSignUpModel,\r\n edited?: IReservationWaitingListDto,\r\n usageEnabled?: boolean,\r\n) {\r\n return {\r\n Id: model.Id,\r\n EquipmentID: model.Equipment?.Id,\r\n EquipmentName: model.Equipment?.Name,\r\n BeforeResCancelHour: model.WindowHours,\r\n NotifyOnResCancelation: true,\r\n NextResTermHours: model.WindowHours,\r\n NotifyOnResTermination: true,\r\n NextReservationHours: model.WindowHours,\r\n NotifyOnEndUsage: usageEnabled,\r\n BeforeResStartHour: edited?.BeforeResStartHour ?? 0,\r\n BeforeTrainStartHour: edited?.BeforeTrainStartHour ?? 0,\r\n ServiceGroupId: edited?.ServiceGroupId,\r\n UpcomingReservations: edited?.UpcomingReservations,\r\n UpcomingTrainingSession: edited?.UpcomingTrainingSession,\r\n UserName: model.User?.Id ?? edited?.UserName,\r\n UserDisplayName: model.User?.Name ?? edited?.UserDisplayName,\r\n UserEmail: edited?.UserEmail,\r\n } as IReservationWaitingListDto;\r\n}\r\nexport const getIsSimpleMode = (\r\n item: IReservationWaitingListDto,\r\n usageEnabled: boolean,\r\n) => {\r\n const allNotifications = [\r\n {\r\n enabled: item.NotifyOnResTermination,\r\n count: item.NextResTermHours,\r\n },\r\n {\r\n enabled: item.NotifyOnResCancelation,\r\n count: item.BeforeResCancelHour ?? 0,\r\n },\r\n ];\r\n if (usageEnabled) {\r\n allNotifications.push({\r\n enabled: item.NotifyOnEndUsage,\r\n count: item.NextReservationHours,\r\n });\r\n }\r\n const enabledNotifications = allNotifications.filter(f => f.enabled === true);\r\n const firstCount =\r\n enabledNotifications.filter(f => f.count > 0)[0]?.count ?? undefined;\r\n const allTheSame =\r\n enabledNotifications.length === (usageEnabled ? 3 : 2) &&\r\n firstCount !== undefined &&\r\n enabledNotifications.every(f => f.count === firstCount);\r\n return allTheSame;\r\n};\r\nexport const getIsRowSimpleMode = (\r\n item: IReservationWaitingListDto,\r\n usageEnabled: boolean,\r\n): SimpleModeResults => {\r\n const allNotifications = [\r\n {\r\n enabled: item.NotifyOnResTermination,\r\n count: item.NextResTermHours,\r\n },\r\n {\r\n enabled: item.NotifyOnResCancelation,\r\n count: item.BeforeResCancelHour ?? 0,\r\n },\r\n ];\r\n if (usageEnabled) {\r\n allNotifications.push({\r\n enabled: item.NotifyOnEndUsage,\r\n count: item.NextReservationHours,\r\n });\r\n }\r\n const enabledNotifications = allNotifications.filter(f => f.enabled === true);\r\n const firstCount =\r\n enabledNotifications.filter(f => f.count > 0)[0]?.count ?? undefined;\r\n const allTheSame =\r\n enabledNotifications.length === (usageEnabled ? 3 : 2) &&\r\n firstCount !== undefined &&\r\n enabledNotifications.every(f => f.count === firstCount);\r\n return {\r\n isSimpleMode: allTheSame,\r\n hoursCount: firstCount ?? 0,\r\n notificationsLength: enabledNotifications.length,\r\n };\r\n};\r\n","import * as React from 'react';\r\nimport {\r\n UseSortByState,\r\n UsePaginationState,\r\n SortingRule,\r\n TableState,\r\n} from 'react-table';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { CancelToken } from 'axios';\r\nimport { BasicTableProps } from 'app/components/BasicTable/BasicTableProps';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport {\r\n getExportParameters,\r\n buildURL,\r\n openExportLink,\r\n IPathAndQuery,\r\n} from 'utils/url-utils';\r\nimport { Entity } from 'types/common';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n//import { Progress } from '../LoadingIndicator';\r\nimport { buildParams } from 'api/odata/ODataParamsBuilder';\r\nimport { ControlledTable } from 'app/components/BasicTable/ControlledTable';\r\nimport { useMemoFilters } from 'app/components/BasicTable/useMemoFilters';\r\nimport { selectDoRefreshTable } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { BasicTableRefreshEventHandler } from '../ControlledTable/ControlledTableProps';\r\nexport type { IRow };\r\nexport type { BasicTableProps };\r\n\r\ntype IPartialTableState = Partial<\r\n UseSortByState & UsePaginationState\r\n>;\r\n\r\nconst REQUEST_CANCELLED_MESSAGE = 'Request cancelled (race condition)';\r\n/**\r\n * Interface to the (initial) table state\r\n */\r\nexport interface IBasicTableState\r\n extends IPartialTableState {}\r\n\r\nconst defaultRowIdAccessor = (row: TRow): string =>\r\n row.Id?.toString();\r\n/**\r\n * Server side driven Table component that will be reused in most of the pages\r\n * @param param0\r\n * @returns\r\n */\r\nexport function UnconfigurableTable({\r\n columns,\r\n initialState,\r\n api,\r\n additionalColumns,\r\n getRowId = defaultRowIdAccessor,\r\n searchColumns,\r\n useExport = true,\r\n onExportForImport,\r\n rowActions,\r\n pageActions,\r\n screenName,\r\n selectedRowsActions,\r\n filterOpen = false,\r\n serviceGroups,\r\n customParams,\r\n useImportLink,\r\n importLink,\r\n needRefresh,\r\n ServiceGroupsOptional,\r\n topAlertMessage,\r\n printing,\r\n exportNotConfigurable,\r\n ...props\r\n}: Omit, 'screenId'> & {\r\n // If the component has export, then this parameter should\r\n // be passed as true, otherwise the export .xlsx will be empty\r\n // has dependency to:\r\n // \"C:\\bookitlab\\bkt_webApp\\Api\\Infrastructure\\XlsxResultFormatter.cs\"\r\n // \"var unConfigured = !string.IsNullOrEmpty(Request.RequestUri.ParseQueryString()[\"unConfigured\"]);\"\r\n exportNotConfigurable?: boolean;\r\n}) {\r\n const isMobile = DetectIsMobile();\r\n // loading/processing indication\r\n const [loading, setLoading] = React.useState(false);\r\n // data received from the server and displayd on the table\r\n const [data, setData] = React.useState([]);\r\n // reference to the show/hide filters button\r\n // data length - total number of the records\r\n const [dataLength, setDataLength] = React.useState(0);\r\n // page count derrived from total number of the records\r\n // this is passed to the react-table hook\r\n const [controlledPageCount, setControlledPageCount] = React.useState(0);\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const dispatch = useDispatch();\r\n const doRefresh = useSelector(selectDoRefreshTable);\r\n\r\n const [tableState, setTableState] = React.useState>>(\r\n {\r\n pageIndex: initialState?.pageIndex ?? 0,\r\n pageSize:\r\n printing !== undefined && printing.printing === true\r\n ? 10000\r\n : initialState?.pageSize ?? 10,\r\n\r\n sortBy: initialState?.sortBy,\r\n },\r\n );\r\n const handleChangeState = React.useCallback(state => {\r\n setTableState(state);\r\n }, []);\r\n\r\n const configurableColumns = React.useMemo(() => columns, [columns]);\r\n\r\n const columnAccessors = React.useMemo(\r\n () =>\r\n configurableColumns\r\n ?.filter(c => typeof c.accessor === 'string')\r\n ?.filter(c => c.accessor !== undefined)\r\n ?.map(c => c.accessor as keyof TRow),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [configurableColumns],\r\n );\r\n\r\n // memo cleaned up filters without the Name which is loaded independently of the filter value and only affects appearance of the filter\r\n const customFilter = useMemoFilters({ appliedFilters: props.appliedFilters });\r\n // serialize the applied filters to be compatible with shallow comparison of the useEffect readonly array\r\n const serializedCustomFilter = JSON.stringify(customFilter);\r\n const handleFilterChange = React.useCallback(\r\n items => {\r\n if (props.onFilterChange !== undefined) {\r\n props.onFilterChange(items);\r\n }\r\n },\r\n [props],\r\n );\r\n\r\n /**\r\n * Fetch data method that retrieves the data according to the current table state\r\n */\r\n const fetchData = React.useCallback(\r\n async (\r\n state: {\r\n api: string | IPathAndQuery;\r\n pageSize: number;\r\n pageIndex: number;\r\n sortBy?: SortingRule[] | null;\r\n globalFilterValue?: string;\r\n customFilter: IFilterSettings[];\r\n serviceGroups?: Entity[];\r\n isOptionalServiceGroup: boolean;\r\n columns: Array;\r\n },\r\n cancelToken: CancelToken,\r\n ) => {\r\n setLoading(true);\r\n try {\r\n // todo: add support for object notation accessors like 'foo.bar'\r\n // todo: add support for accessor of type Function(originalRow, rowIndex) => any\r\n const oDataParams = buildParams(\r\n {\r\n ...state,\r\n select: state.columns,\r\n additionalColumns: additionalColumns,\r\n serviceGroups: state.serviceGroups ?? [],\r\n },\r\n searchColumns,\r\n customParams,\r\n );\r\n var { url, params } = getUrlAndParams(state.api, oDataParams);\r\n const response = await httpClient.get(url, params, cancelToken);\r\n\r\n setData(response.value);\r\n setDataLength(response['@odata.count']);\r\n setControlledPageCount(\r\n Math.ceil(response['@odata.count'] / state.pageSize),\r\n );\r\n setLoading(false);\r\n } catch (error) {\r\n // todo: show error message\r\n\r\n if (\r\n error instanceof Error &&\r\n error.message === REQUEST_CANCELLED_MESSAGE\r\n ) {\r\n // noop - request was explicitly cancelled after a new one was issues to prevent race conditions between multiple requests\r\n } else {\r\n console.warn(error);\r\n }\r\n }\r\n // finally {\r\n // setLoading(false);\r\n // }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [],\r\n );\r\n\r\n const pageIndex = tableState.pageIndex!;\r\n const pageSize = tableState.pageSize!;\r\n const sortBy = tableState.sortBy!;\r\n const globalFilter = tableState.globalFilter;\r\n\r\n // connect table state changes to server data fetch side effect\r\n React.useEffect(() => {\r\n const cancelTokenSource = httpClient.cancelToken.source();\r\n if (columnAccessors === undefined) {\r\n return;\r\n }\r\n fetchData(\r\n {\r\n api,\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilterValue: globalFilter as string,\r\n customFilter: customFilter ?? [],\r\n serviceGroups: serviceGroups,\r\n isOptionalServiceGroup: ServiceGroupsOptional || false,\r\n columns: columnAccessors,\r\n },\r\n cancelTokenSource.token,\r\n );\r\n return () => {\r\n cancelTokenSource.cancel(REQUEST_CANCELLED_MESSAGE);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n fetchData,\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilter,\r\n serializedCustomFilter,\r\n serviceGroups,\r\n ServiceGroupsOptional,\r\n columnAccessors,\r\n api,\r\n ]);\r\n\r\n const handleExportClick = (): Promise => {\r\n const { $top, $skip, ...tableParams } = buildParams({\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilterValue: globalFilter as string,\r\n customFilter: customFilter ?? [],\r\n select: columnAccessors,\r\n additionalColumns: additionalColumns,\r\n serviceGroups: serviceGroups ?? [],\r\n isOptionalServiceGroup: ServiceGroupsOptional || false,\r\n });\r\n var oDataParams = getExportParameters(tableParams);\r\n var { url, params } = getUrlAndParams(api, oDataParams);\r\n if (exportNotConfigurable === true) {\r\n params['unConfigured'] = true;\r\n }\r\n const exporturl = buildURL(url, params);\r\n return openExportLink(exporturl);\r\n };\r\n\r\n const [allRowsSelected, setAllRowsSelected] = React.useState();\r\n const toggleAllRowsSelected = React.useCallback((value: boolean) => {\r\n setAllRowsSelected(value);\r\n }, []);\r\n\r\n /**\r\n * Reloads the table and unselects all rows\r\n */\r\n const handleRefresh: BasicTableRefreshEventHandler = React.useCallback(\r\n event => {\r\n if (columnAccessors === undefined) {\r\n return;\r\n }\r\n if (toggleAllRowsSelected !== undefined) {\r\n toggleAllRowsSelected(false);\r\n }\r\n fetchData(\r\n {\r\n api,\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilterValue: globalFilter as string,\r\n customFilter: customFilter ?? [],\r\n serviceGroups: serviceGroups,\r\n isOptionalServiceGroup: ServiceGroupsOptional || false,\r\n columns: columnAccessors,\r\n },\r\n httpClient.cancelToken.source().token,\r\n );\r\n },\r\n [\r\n columnAccessors,\r\n toggleAllRowsSelected,\r\n fetchData,\r\n api,\r\n pageIndex,\r\n pageSize,\r\n sortBy,\r\n globalFilter,\r\n customFilter,\r\n serviceGroups,\r\n ServiceGroupsOptional,\r\n ],\r\n );\r\n\r\n const refreshFromState = React.useCallback(() => {\r\n dispatch(layoutActions.setRefreshTable(false));\r\n handleRefresh();\r\n }, [dispatch, layoutActions, handleRefresh]);\r\n\r\n React.useEffect(() => {\r\n if (needRefresh !== undefined && needRefresh) {\r\n handleRefresh();\r\n }\r\n if (doRefresh === true) {\r\n refreshFromState();\r\n }\r\n }, [doRefresh, needRefresh, handleRefresh, refreshFromState]);\r\n const handleSelectedRowsChange = React.useCallback(\r\n (rows: TRow[]) => {\r\n if (props.onSelectedRowsChange !== undefined) {\r\n props.onSelectedRowsChange(rows);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [props.onSelectedRowsChange],\r\n );\r\n return (\r\n \r\n );\r\n}\r\nfunction getUrlAndParams(\r\n api: string | IPathAndQuery,\r\n oDataParams: {\r\n $skip?: number;\r\n $top?: number;\r\n $count?: boolean;\r\n $select?: string;\r\n $orderby?: string | undefined;\r\n $filter?: string | undefined;\r\n $format?: string;\r\n },\r\n) {\r\n var url = typeof api === 'string' ? api : (api as IPathAndQuery).path;\r\n var search = (api as IPathAndQuery).search;\r\n const params = { ...oDataParams, ...search };\r\n return { url, params };\r\n}\r\n","/**\r\n *\r\n * TextField\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n TextField as MatTextField,\r\n TextFieldProps as MatTextFieldProps,\r\n Theme,\r\n withStyles,\r\n} from '@material-ui/core';\r\nimport { omit } from 'lodash';\r\n//import styled from 'styled-components/macro';\r\nexport interface TextFieldProps\r\n extends Omit {\r\n variant?: 'outlined' | 'filled' | 'standard';\r\n color?: 'primary' | 'secondary';\r\n autoComplete?: string;\r\n mini?: string;\r\n}\r\nexport function TextField(props: TextFieldProps) {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n/* only bottom border should have accent when focused according to figma design */\r\n/* TODO: override default theme instead of this mess */\r\nconst StyledTextField = withStyles((theme: Theme) => ({\r\n root: {\r\n margin: theme.spacing(0),\r\n },\r\n}))(MatTextField);\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { GroupUrl, ServiceGroupPicker } from '../pickers/ServiceGroupPicker';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport { IServiceGroupDto } from 'api/odata/generated/entities/IServiceGroupDto';\r\n\r\nexport const FormServiceGroupPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & {\r\n label?: string;\r\n fullWidth?: boolean;\r\n urlType: GroupUrl;\r\n autoFocus?: boolean;\r\n name: string;\r\n placeholder: string;\r\n disabled?: boolean;\r\n predicates?: (string | Condition>)[];\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n entityOnly?: boolean;\r\n info?: string;\r\n}) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n {\r\n const newValue =\r\n value === null\r\n ? null\r\n : props.entityOnly\r\n ? { Id: value.Id, Name: value.Name }\r\n : value;\r\n helpers.setValue(newValue, true);\r\n if (props.onChange) {\r\n props.onChange(props.value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value as IServiceGroupDto}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n predicates={props.predicates}\r\n variant={props.variant === undefined ? 'filled' : props.variant}\r\n info={props.info}\r\n />\r\n );\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { articlesActions as actions } from '.';\r\nimport { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IExternalArticlesSearchResponse } from 'api/odata/generated/entities/IExternalArticlesSearchResponse';\r\nimport { IExternalArticleSearchPayload } from './types';\r\nimport { selectArticlesExternalSearchPageData } from 'app/pages/ArticlesPage/slice/selectors';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { AxiosError } from 'axios';\r\nimport { StatusCodes } from 'http-status-codes';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { ArticleStatus } from 'enums/Article';\r\nimport { omit } from 'lodash';\r\n\r\nfunction* doShowDetails(\r\n action: PayloadAction<{\r\n Id?: number;\r\n externalId?: string;\r\n externalIdSource?: string;\r\n article?: IArticleDto;\r\n }>,\r\n) {\r\n // const props: ArticleDetailsProps = {\r\n // useSidePanel: true,\r\n // value: action.payload,\r\n // };\r\n\r\n try {\r\n const url = '/api/odata/v4/articles';\r\n let params = {};\r\n let articleDetails;\r\n if (!!action.payload.Id && action.payload.Id > 0) {\r\n params = { key: action.payload.Id };\r\n const data: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n url,\r\n params,\r\n );\r\n articleDetails = omit(data, '@odata.context');\r\n } else {\r\n if (\r\n action.payload.externalId !== undefined &&\r\n action.payload.externalIdSource !== undefined\r\n ) {\r\n const filter = new ODataFilterBuilder({\r\n predicates: [\r\n new Condition(\r\n 'ExternalId',\r\n ODataOperators.Equals,\r\n action.payload.externalId,\r\n ),\r\n new Condition(\r\n 'ExternalIdSource',\r\n ODataOperators.Equals,\r\n action.payload.externalIdSource,\r\n ),\r\n ],\r\n stringColumns: [],\r\n });\r\n params = { $filter: filter.toString(), $top: 1 };\r\n const data: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n url,\r\n params,\r\n );\r\n articleDetails = data.value[0];\r\n }\r\n }\r\n yield put(actions.showDetails_Success(articleDetails));\r\n } catch (error) {}\r\n\r\n // yield put(\r\n // layoutActions.openSidePanel({\r\n // type: RenderPageType.Article,\r\n // props: props,\r\n // }),\r\n // );\r\n}\r\n\r\nfunction* doExternalSearch(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n // skip fetching already loaded items\r\n const page = yield select(selectArticlesExternalSearchPageData);\r\n if (page !== undefined) {\r\n yield put(actions.externalSearch_Skip());\r\n return;\r\n }\r\n if (action.payload.searchForm.Source === undefined) {\r\n return;\r\n }\r\n const url = `/api/odata/v4/Articles/ExternalSearch(source='${action.payload.searchForm.Source}')`;\r\n const params = new URLSearchParams(\r\n action.payload.searchForm as Record,\r\n );\r\n params.set(\r\n '$skip',\r\n String(action.payload.pageIndex * action.payload.pageSize),\r\n );\r\n params.set('$top', String(action.payload.pageSize));\r\n const results: IExternalArticlesSearchResponse = yield call(\r\n httpClient.get,\r\n url,\r\n params,\r\n );\r\n yield put(\r\n actions.externalSearch_Success({\r\n count: results.Count,\r\n items: results.Items,\r\n pageIndex: action.payload.pageIndex,\r\n }),\r\n );\r\n } catch (error) {\r\n if ((error as AxiosError).isAxiosError) {\r\n var errorCode = (error as AxiosError).response?.status;\r\n if (errorCode === StatusCodes.TOO_MANY_REQUESTS) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: i18next.t(translations.TooManyRequests),\r\n }),\r\n );\r\n }\r\n }\r\n yield put(actions.externalSearch_Error('Error searching external source'));\r\n }\r\n}\r\nfunction* doSaveArticleAssociation(action: PayloadAction) {\r\n try {\r\n const isNew = (action.payload.Id ?? 0) === 0;\r\n const url = isNew\r\n ? '/api/odata/v4/articles'\r\n : `/api/odata/v4/articles(${action.payload.Id})`;\r\n const fn = isNew ? httpClient.post : httpClient.put;\r\n const result = yield call(fn, url, action.payload);\r\n yield put(layoutActions.setRefreshTable(true));\r\n if (result.Queryable[0].Status === ArticleStatus.AwaitingApproval) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.PublicationAwaitingApproval),\r\n }),\r\n );\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: i18next.t(translations.Success),\r\n }),\r\n );\r\n }\r\n yield put(actions.saveArticleAssociation_Success(result.Queryable[0]));\r\n } catch (error) {\r\n const mes = (error as AxiosError)?.response?.data.error.message;\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message:\r\n mes !== undefined ? mes : i18next.t(translations.AnErrorOccurred),\r\n }),\r\n );\r\n yield put(actions.saveArticleAssociation_Error(action.payload));\r\n }\r\n}\r\n\r\nexport function* articlesSaga() {\r\n yield takeLatest(actions.showDetails.type, doShowDetails);\r\n yield takeLatest(actions.externalSearch.type, doExternalSearch);\r\n yield takeLatest(actions.chnagePage.type, doExternalSearch);\r\n\r\n yield takeLatest(\r\n actions.saveArticleAssociation.type,\r\n doSaveArticleAssociation,\r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { articlesSaga } from './saga';\r\nimport {\r\n ArticlesState,\r\n IExternalArticleSearchPayload,\r\n IExternalArticleSearchSuccessPayload,\r\n} from './types';\r\n\r\nexport const initialState: ArticlesState = {\r\n externalSearchResults: {},\r\n externalSearchPageIndex: 0,\r\n externalSearchPageSize: 10,\r\n refreshEditArticleAssociation: undefined,\r\n articleDetailsBusy: undefined,\r\n editArticleAssociationBusy: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'articles',\r\n initialState,\r\n reducers: {\r\n showDetails(\r\n state,\r\n action: PayloadAction<{\r\n Id?: number;\r\n externalId?: string;\r\n externalIdSource?: string;\r\n article?: IArticleDto;\r\n }>,\r\n ) {\r\n state.articleDetailsBusy = true;\r\n state.editArticleAssociationBusy = undefined;\r\n state.articleDetails = action.payload.article;\r\n },\r\n showDetails_Success(state, action: PayloadAction) {\r\n state.articleDetailsBusy = false;\r\n if (action.payload !== undefined) {\r\n if (state.articleDetails !== undefined) {\r\n state.articleDetails.Id = action.payload.Id;\r\n state.articleDetails.Assets = action.payload.Assets;\r\n }\r\n }\r\n },\r\n refreshEditArticleAssociation(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.refreshEditArticleAssociation = action.payload;\r\n },\r\n saveArticleAssociation(state, action: PayloadAction) {\r\n state.editArticleAssociationBusy = true;\r\n state.refreshEditArticleAssociation = undefined;\r\n },\r\n saveArticleAssociation_Success(state, action: PayloadAction) {\r\n state.articleDetails = action.payload;\r\n state.refreshEditArticleAssociation = true;\r\n state.editArticleAssociationBusy = false;\r\n },\r\n saveArticleAssociation_Error(state, action: PayloadAction) {\r\n state.editArticleAssociationBusy = false;\r\n },\r\n resetArticleAssociationState(state, action: PayloadAction) {\r\n state.editArticleAssociationBusy = undefined;\r\n //delete state.articleDetails;\r\n },\r\n externalSearch(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.externalSearchFormDetails = action.payload.searchForm;\r\n state.externalSearchPageIndex = action.payload.pageIndex;\r\n state.externalSearchPageSize = action.payload.pageSize;\r\n state.externalSearchResults = {\r\n processing: true,\r\n };\r\n },\r\n chnagePage(state, action: PayloadAction) {\r\n state.externalSearchResults.processing = true;\r\n if (state.externalSearchPageSize !== action.payload.pageSize) {\r\n state.externalSearchResults.data = {};\r\n }\r\n state.externalSearchPageIndex = action.payload.pageIndex;\r\n state.externalSearchPageSize = action.payload.pageSize;\r\n },\r\n externalSearch_Skip(state, action: PayloadAction) {\r\n state.externalSearchResults.processing = false;\r\n },\r\n externalSearch_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.externalSearchResults.processing = false;\r\n state.externalSearchResults.dataLength = action.payload.count;\r\n if (state.externalSearchResults.data === undefined) {\r\n state.externalSearchResults.data = {};\r\n }\r\n state.externalSearchResults.data[action.payload.pageIndex] =\r\n action.payload.items;\r\n },\r\n externalSearch_Error(state, action: PayloadAction) {\r\n state.externalSearchResults = { error: action.payload };\r\n },\r\n someAction(state, action: PayloadAction) {},\r\n clearArticleDetails(state) {\r\n state.articleDetails = undefined;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: articlesActions } = slice;\r\n\r\nexport const useArticlesSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: articlesSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useArticlesSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { IModificationDto } from 'api/odata/generated/entities/IModificationDto';\r\nimport { DateTimeLabel } from 'app/components/DateTimeLabel';\r\nimport { CellProps, Renderer } from 'react-table';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\n/**\r\n * Processes the old/new value in modifications tables:\r\n * * For date-ish values - tries to parse the ISO and render in client's tz/locale\r\n * @param param0\r\n * @returns\r\n */\r\nconst ModificationsValueRenderer: Renderer<\r\n CellProps\r\n> = ({ value }: CellProps) => {\r\n if (value === null) {\r\n return null;\r\n }\r\n if (!isNaN(Number(value))) {\r\n return value;\r\n }\r\n const date = dateUtils.parseISO(value);\r\n if (date.toString() !== 'Invalid Date' && date !== null) {\r\n return ;\r\n } else {\r\n return value;\r\n }\r\n};\r\n\r\nexport default ModificationsValueRenderer;\r\n","import styled, { withTheme } from 'styled-components';\r\nimport { Theme, AppBar, AppBarProps, MenuProps, Menu } from '@material-ui/core';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport transitions from '@material-ui/core/styles/transitions';\r\nimport { DRAWER_WIDTH_SHORT } from 'styles/constantVariables';\r\n\r\nexport const StyledTopBar = styled(\r\n ({\r\n theme,\r\n drawerWidth,\r\n sidePanelWidth,\r\n children,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n drawerWidth: number;\r\n sidePanelWidth: number;\r\n children: React.ReactNode;\r\n } & AppBarProps) => {children},\r\n)`\r\n &.appBar {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: flex-start;\r\n align-self: stretch;\r\n background-color: ${bookitColors.base.white};\r\n z-index: ${props => props.theme.zIndex.drawer + 1};\r\n transition: ${props =>\r\n props.theme.transitions.create(['width', 'margin'], {\r\n easing: props.theme.transitions.easing.sharp,\r\n duration: props.theme.transitions.duration.leavingScreen,\r\n })};\r\n border-bottom: 1px solid ${bookitColors.grayscale.grayBorders};\r\n //width: calc(100% - ${60 + 1}px);\r\n &.appBarShiftShort {\r\n margin-left: ${props => DRAWER_WIDTH_SHORT}px;\r\n width: calc(100% - ${DRAWER_WIDTH_SHORT + 1}px);\r\n }\r\n &.appBarShift {\r\n margin-left: ${props => props.drawerWidth}px;\r\n width: calc(100% - ${props => props.drawerWidth}px);\r\n transition: ${props =>\r\n props.theme.transitions.create(['width', 'margin'], {\r\n easing: props.theme.transitions.easing.sharp,\r\n duration: props.theme.transitions.duration.enteringScreen,\r\n })};\r\n position: relative;\r\n align-self: flex-start;\r\n }\r\n &.sidePanelShift {\r\n margin-right: ${props => props.sidePanelWidth}px;\r\n width: calc(100% - ${props => 60 + 1 + props.sidePanelWidth}px);\r\n &.appBarShift {\r\n width: calc(\r\n 100% - ${props => props.drawerWidth + props.sidePanelWidth}px\r\n );\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const SubTopBar = styled.div.attrs(props => ({ props }))<{\r\n theme: Theme;\r\n}>`\r\n &.subBar {\r\n display: flex;\r\n height: 56px;\r\n padding: 4px 16px 4px 32px;\r\n align-items: center;\r\n gap: 24px;\r\n align-self: stretch;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(2)}px;\r\n border-top: 1px solid ${bookitColors.grayscale.grayBorders};\r\n background: ${bookitColors.primary.background};\r\n transition: ${transitions.create('height', {\r\n easing: transitions.easing.easeInOut,\r\n duration: 150,\r\n })};\r\n &.subBarCollapsed {\r\n height: 0;\r\n display: none;\r\n }\r\n & .frame {\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n flex: 1 0 0;\r\n & .controls {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n flex: 1 0 0;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const ProfileSection = styled.div.attrs(props => ({ props }))<{\r\n theme: Theme;\r\n}>`\r\n &.userProfile {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n`;\r\n\r\nexport const StyledUserMenu = withTheme(styled(\r\n ({\r\n theme,\r\n children,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n children: React.ReactNode;\r\n } & MenuProps) => {children},\r\n)`\r\n & li {\r\n & a {\r\n margin-left: ${props => props.theme.spacing(2)}px;\r\n color: ${props => props.theme.palette.text.primary};\r\n }\r\n }\r\n`);\r\n\r\ninterface StyledUserMenuProps {\r\n isMobile: boolean;\r\n}\r\nexport const StyledUserMenuExtended = styled(({ isMobile, ...rest }) => (\r\n \r\n))`\r\n ${props =>\r\n props.isMobile &&\r\n `\r\n width: 100%;\r\n height: 100%;\r\n maxHeight: calc(100% - 32px);\r\n maxWidth: calc(100% - 0px);\r\n `}\r\n`;\r\n","import styled from 'styled-components';\r\nimport { Theme } from '@material-ui/core/styles';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport const Section = styled.div.attrs(props => ({ props }))<{\r\n theme: Theme;\r\n sidePanelWidth: number;\r\n}>`\r\n &.formsection {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n padding: 0px 32px;\r\n // @media (min-width: ${props => props.theme.breakpoints.values.lg}px) {\r\n // padding: 0px 64px;\r\n // }\r\n max-width: 100%;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(17)}px;\r\n &.request-section {\r\n background: ${bookitColors.base.white};\r\n border: 1px solid ${bookitColors.grayscale.grayBorders};\r\n border-radius: 12px;\r\n padding: 20px 24px 24px 24px;\r\n }\r\n &.noPadding {\r\n padding: 0;\r\n }\r\n &.shortView {\r\n flex-direction: column;\r\n padding: 0px 12px;\r\n width: ${props => props.sidePanelWidth}px;\r\n gap: ${props => props.theme.spacing(2)}px;\r\n .sidePanelRoot & {\r\n .baseRootHeight & {\r\n flex-direction: row;\r\n padding: 0px 32px;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(17)}px;\r\n }\r\n &.noPadding {\r\n padding: 0;\r\n }\r\n }\r\n .baseRootHeight & {\r\n flex-direction: row;\r\n padding: 0px 32px;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(17)}px;\r\n }\r\n }\r\n @media (max-width: ${props => props.theme.breakpoints.values.md}px) {\r\n flex-direction: column;\r\n padding: 0px 12px;\r\n width: auto;\r\n gap: 16px;\r\n .baseRootHeight & {\r\n flex-direction: row;\r\n padding: 0px 32px;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(17)}px;\r\n }\r\n &.noPadding {\r\n padding: 0;\r\n }\r\n }\r\n @media (max-width: ${props => props.theme.breakpoints.values.sm}px) {\r\n &.shortView {\r\n width: 100%;\r\n }\r\n }\r\n }\r\n`;\r\nexport const LeftSection = styled.div.attrs(props => ({ props }))<{\r\n theme: Theme;\r\n}>`\r\n &.leftsection {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n flex: 1 0 0;\r\n padding: 0px;\r\n max-width: ${props => props.theme.breakpoints.values.md}px;\r\n margin-right: auto;\r\n margin-left: 0;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(6)}px;\r\n &.custom-section {\r\n max-width: 100%;\r\n }\r\n &.shortView {\r\n gap: ${props => props.theme.spacing(3)}px;\r\n .sidePanelRoot & {\r\n gap: ${props => props.theme.spacing(3)}px;\r\n .baseRootHeight & {\r\n gap: ${props => props.theme.spacing(6)}px;\r\n }\r\n }\r\n .baseRootHeight & {\r\n gap: ${props => props.theme.spacing(6)}px;\r\n }\r\n }\r\n @media (max-width: ${props => props.theme.breakpoints.values.md}px) {\r\n gap: ${props => props.theme.spacing(3)}px;\r\n .baseRootHeight & {\r\n gap: ${props => props.theme.spacing(6)}px;\r\n }\r\n }\r\n }\r\n`;\r\nexport const RightSection = styled.div.attrs(props => ({ props }))<{\r\n theme: Theme;\r\n}>`\r\n &.rightsection {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n flex-grow: 1;\r\n padding: 0px;\r\n width: 100%;\r\n max-width: 384px;\r\n gap: ${props => props.theme.spacing(6)}px;\r\n\r\n &.topSpacing {\r\n margin-top: 32px;\r\n }\r\n &.shortView {\r\n width: 100%;\r\n max-width: 100%;\r\n gap: ${props => props.theme.spacing(2)}px;\r\n margin-top: 0px;\r\n padding-bottom: ${props => props.theme.spacing(3)}px;\r\n .sidePanelRoot & {\r\n .baseRootHeight & {\r\n width: 40%;\r\n gap: ${props => props.theme.spacing(6)}px;\r\n padding-bottom: 0px;\r\n }\r\n }\r\n .baseRootHeight & {\r\n width: 40%;\r\n gap: ${props => props.theme.spacing(6)}px;\r\n padding-bottom: 0px;\r\n max-width: 384px;\r\n }\r\n }\r\n @media (max-width: ${props => props.theme.breakpoints.values.md}px) {\r\n width: 100%;\r\n max-width: 100%;\r\n gap: ${props => props.theme.spacing(2)}px;\r\n margin-top: 0px;\r\n padding-bottom: ${props => props.theme.spacing(3)}px;\r\n .baseRootHeight & {\r\n width: 40%;\r\n gap: ${props => props.theme.spacing(6)}px;\r\n padding-bottom: 0px;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const RowSection = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: '100%',\r\n gap: `${theme.spacing(2)}px`,\r\n flex: '1 1 49%',\r\n '&.hideRow': {\r\n display: 'none',\r\n },\r\n '&.shortView': {\r\n flex: '1 1 100%',\r\n '.baseRootHeight &': {\r\n flex: '1 1 49%',\r\n },\r\n },\r\n '&.fullRow': {\r\n flex: '1 1 100%',\r\n },\r\n '&.minRow': {\r\n flex: '1 1 25%',\r\n [theme.breakpoints.down('md')]: {\r\n flex: '1 1 40%',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n flex: '1 1 40%',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n flex: '1 1 100%',\r\n },\r\n // [theme.breakpoints.down('sm')]: {\r\n // flex: '1 1 100%',\r\n // },\r\n },\r\n '.shortView &': {\r\n flex: '1 1 100%',\r\n gap: '8px',\r\n '.baseRootHeight &': {\r\n flex: '1 1 49%',\r\n gap: `${theme.spacing(2)}px`,\r\n },\r\n },\r\n '&.wrap': {\r\n flexWrap: 'wrap',\r\n },\r\n '&.shrink-1': {\r\n '& > *:first-child': {\r\n flexShrink: 1,\r\n },\r\n },\r\n '&.shrink-2': {\r\n '& > *:first-child': {\r\n flexShrink: 2,\r\n },\r\n },\r\n '&.shrink-3': {\r\n '& > *:first-child': {\r\n flexShrink: 3,\r\n },\r\n },\r\n}));\r\n\r\nexport const FormFieldsBox = styled.div.attrs(props => ({ props }))<{\r\n theme: Theme;\r\n}>`\r\n &.fields-section {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n width: 100%;\r\n padding: 0px;\r\n gap: ${props => props.theme.spacing(1.5)}px;\r\n &.custom-field-section {\r\n & .fields {\r\n & .row {\r\n flex: 1 1 auto;\r\n //width: 33.3%;\r\n max-width: calc(33.3% - 8px);\r\n &.shortView {\r\n width: 100%;\r\n max-width: 100%;\r\n .baseRootHeight & {\r\n max-width: calc(33.3% - 8px);\r\n }\r\n }\r\n @media (max-width: ${props => props.theme.breakpoints.values.sm}px) {\r\n width: 100%;\r\n max-width: 100%;\r\n }\r\n @media (max-width: ${props =>\r\n props.theme.breakpoints.values.md}px) and (min-width: ${props =>\r\n props.theme.breakpoints.values.sm}px) {\r\n width: 50%;\r\n max-width: calc(50% - 10px);\r\n }\r\n @media (max-width: ${props =>\r\n props.theme.breakpoints.values.lg}px) and (min-width: ${props =>\r\n props.theme.breakpoints.values.md}px) {\r\n //width: 33.3%;\r\n max-width: calc(33.3% - 8px);\r\n }\r\n }\r\n & .fullRow {\r\n flex: 1 1 100%;\r\n width: 100%;\r\n max-width: 100%;\r\n }\r\n }\r\n }\r\n &.request-section {\r\n background: ${bookitColors.base.white};\r\n border: 1px solid ${bookitColors.grayscale.grayBorders};\r\n border-radius: 12px;\r\n padding: 20px 24px 24px 24px;\r\n }\r\n &.maxSectionWidthXs {\r\n max-width: ${props => props.theme.breakpoints.values.xs}px;\r\n }\r\n &.maxSectionWidthSm {\r\n max-width: ${props => props.theme.breakpoints.values.sm}px;\r\n }\r\n &.maxSectionWidthMd {\r\n max-width: ${props => props.theme.breakpoints.values.md}px;\r\n }\r\n &.maxSectionWidthLg {\r\n max-width: ${props => props.theme.breakpoints.values.lg}px;\r\n }\r\n &.maxSectionWidthXl {\r\n max-width: ${props => props.theme.breakpoints.values.xl}px;\r\n }\r\n &.centered {\r\n align-self: center;\r\n }\r\n & .sectiontitle {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n // padding: ${props => props.theme.spacing(0, 0, 0.5)};\r\n gap: ${props => props.theme.spacing(2)}px;\r\n }\r\n & .fields {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n padding: 0px;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(1.5)}px;\r\n // Adjusted styles for spacing using margin\r\n // & > .row:not(:last-child) {\r\n // //margin-right: ${props => props.theme.spacing(1.5)}px;\r\n // margin-bottom: ${props => props.theme.spacing(1.5)}px;\r\n // }\r\n }\r\n }\r\n`;\r\nexport const CustomDivider = styled.hr`\r\n &.divider {\r\n width: 100%;\r\n border: none;\r\n height: 1px;\r\n margin: 0;\r\n flex-shrink: 0;\r\n align-self: center;\r\n background-color: rgba(0, 0, 0, 0.12);\r\n .leftsection & {\r\n margin-bottom: -24px;\r\n margin-top: -24px;\r\n .shortView & {\r\n margin-bottom: -8px;\r\n margin-top: -8px;\r\n .baseRootHeight & {\r\n margin-bottom: -24px;\r\n margin-top: -24px;\r\n }\r\n }\r\n }\r\n .rightsection & {\r\n margin-bottom: -24px;\r\n margin-top: -24px;\r\n .shortView & {\r\n margin-bottom: -8px;\r\n margin-top: -8px;\r\n .baseRootHeight & {\r\n margin-bottom: -24px;\r\n margin-top: -24px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","import { useAppSettingsSlice } from 'app/slice';\r\nimport { selectIsExpandedSideBar } from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { UserProfile } from 'utils/userProfileSettings';\r\nimport { useIsMobile } from './useIsMobile';\r\ninterface ExpandedType {\r\n expand: (value: boolean) => void;\r\n expandLocal: (value: boolean) => void;\r\n toggle: () => void;\r\n}\r\nexport function userProfileComparer(\r\n prev: readonly [UserProfile],\r\n next: readonly [UserProfile],\r\n) {\r\n if (!!prev[0] && !!prev[0].savedSettings) {\r\n if (prev[0].savedSettings.length === next[0].savedSettings.length) {\r\n let prevExpanded = prev[0].GetSideBarExpanded('SideBarExpanded');\r\n let nextExpanded = next[0].GetSideBarExpanded('SideBarExpanded');\r\n if (prevExpanded !== nextExpanded) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction useExpandedSideBarState(defaultValue?: boolean): ExpandedType {\r\n const { checkIsMobile } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n const isExpanded = useSelector(state =>\r\n selectIsExpandedSideBar(state, isMobile),\r\n );\r\n //const userProfileSett = useSelector(selectUserProfileSettings);\r\n // const [expanded, setExpanded] = React.useState(\r\n // !!defaultValue ? defaultValue : isExpanded,\r\n // );\r\n // const [lastExpandedTime, setLastExpandedTime] = React.useState<\r\n // number | undefined\r\n // >(undefined);\r\n // const userProfileSettCompared = useCustomCompareMemo(\r\n // () => {\r\n // return userProfileSett;\r\n // },\r\n // [userProfileSett],\r\n // userProfileComparer,\r\n // );\r\n // const userProfExpanded = React.useMemo(() => {\r\n // return userProfileSettCompared?.GetSideBarExpanded('SideBarExpanded');\r\n // }, [userProfileSettCompared]);\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n // useEffectOnMount(() => {\r\n // let defaultval = isMobile\r\n // ? !!defaultValue\r\n // ? defaultValue\r\n // : isExpanded\r\n // : userProfExpanded ?? true;\r\n // dispatch(actions.updateExpandedState_Local(defaultval));\r\n // // if (isMobile) {\r\n // // setExpanded(isExpanded);\r\n // // } else {\r\n // // setExpanded(userProfExpanded ?? true);\r\n // // }\r\n // });\r\n // React.useEffect(() => {\r\n // if (isMobile) {\r\n // setExpanded(isExpanded);\r\n // } else {\r\n // setExpanded(userProfExpanded ?? true);\r\n // }\r\n // }, [isExpanded, isMobile, userProfExpanded]);\r\n\r\n const expand = React.useCallback(\r\n (value: boolean) => {\r\n dispatch(actions.updateExpandedState_Local(value));\r\n if (!isMobile) {\r\n dispatch(actions.updateExpandedState(value));\r\n }\r\n // if (value === true) {\r\n // setLastExpandedTime(new Date().getTime());\r\n // }\r\n },\r\n [actions, dispatch, isMobile],\r\n );\r\n const expandLocal = React.useCallback(\r\n (value: boolean) => {\r\n dispatch(actions.updateExpandedState_Local(value));\r\n // if (value === true) {\r\n // setLastExpandedTime(new Date().getTime());\r\n // }\r\n },\r\n [actions, dispatch],\r\n );\r\n const toggle = React.useCallback(() => {\r\n dispatch(actions.updateExpandedState_Local(!isExpanded));\r\n if (!isMobile) {\r\n dispatch(actions.updateExpandedState(!isExpanded));\r\n }\r\n // if (!lastExpandedTime) {\r\n // dispatch(actions.updateExpandedState_Local(!isExpanded));\r\n // if (!isMobile) {\r\n // dispatch(actions.updateExpandedState(!isExpanded));\r\n // }\r\n // if (isExpanded === true) {\r\n // setLastExpandedTime(new Date().getTime());\r\n // }\r\n // } else {\r\n // if (!!lastExpandedTime && new Date().getTime() - lastExpandedTime > 500) {\r\n // dispatch(actions.updateExpandedState_Local(!isExpanded));\r\n // if (!isMobile) {\r\n // dispatch(actions.updateExpandedState(!isExpanded));\r\n // }\r\n // }\r\n // }\r\n }, [actions, dispatch, isExpanded, isMobile]);\r\n\r\n return { expand, expandLocal, toggle };\r\n}\r\n\r\nexport default useExpandedSideBarState;\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.samplesList || initialState;\r\n\r\nexport const selectSamplesList = createSelector([selectSlice], state => state);\r\n\r\nexport const selectSamplesTableState = createSelector(\r\n [selectSlice],\r\n state => state.SamplesListTableState,\r\n);\r\nexport const selectSamplesData = createSelector(\r\n [selectSamplesList],\r\n state => state.SamplesList,\r\n);\r\nexport const selectSelectedRunType = createSelector(\r\n [selectSlice],\r\n state => state.SelectedRunType,\r\n);\r\nexport const selectRunDetails = createSelector(\r\n [selectSamplesList],\r\n state => state.RunDetails,\r\n);\r\nexport const selectShowRunDialog = createSelector(\r\n [selectSamplesList],\r\n state => state.ShowRunDialog,\r\n);\r\nexport const selectSelectedSamples = createSelector(\r\n [selectSamplesList],\r\n state => state.SamplesSelected,\r\n);\r\nexport const selectSamplesListEditMode = createSelector(\r\n [selectSamplesList],\r\n state => state.EditMode,\r\n);\r\nexport const selectImportingRunDetails = createSelector(\r\n [selectSamplesList],\r\n state => state.ImportStarted,\r\n);\r\nexport const selectImportingRunDetailsFinished = createSelector(\r\n [selectSamplesList],\r\n state => state.ImportFinished,\r\n);\r\nexport const selectRunDetailsInstrument = createSelector(\r\n [selectSamplesList],\r\n state => state.RunDetails?.Instrument?.Name,\r\n);\r\nexport const selectRunDetailsSecondaryInstrument = createSelector(\r\n [selectSamplesList],\r\n state => state.RunDetails?.SecondaryInstrument?.Name,\r\n);\r\nexport const selectRunDetailsGradient = createSelector(\r\n [selectSamplesList],\r\n state => state.RunDetails?.Gradient?.Name,\r\n);\r\nexport const selectRunDetailsCreatedDate = createSelector(\r\n [selectSamplesList],\r\n state => state.RunDetails?.CreateDate,\r\n);\r\nexport const selectRunDetailsAcquision_type = createSelector(\r\n [selectSamplesList],\r\n state => state.RunDetails?.ACQUISITION_TYPE,\r\n);\r\nexport const selectRunDetailsCompletion = createSelector(\r\n [selectSamplesList],\r\n state => state.Completion,\r\n);\r\n","import i18next from 'i18next';\r\nimport { assign, mapValues } from 'lodash';\r\nimport { isDefined } from './isDefined';\r\nimport {\r\n ICustomModelError,\r\n IModelError,\r\n IModelStateDictionary,\r\n} from 'types/Modelstate';\r\n\r\nexport function getErrorMessages(\r\n modelState: IModelStateDictionary,\r\n): Array {\r\n const result = Object.values(modelState)\r\n .flatMap(item => item.Errors)\r\n .map(toErrorMessage)\r\n .filter(isDefined);\r\n return result;\r\n}\r\nfunction toErrorMessage(modelError: IModelError): string | undefined {\r\n if ((modelError as ICustomModelError).Key !== undefined) {\r\n try {\r\n const value: Record = mapValues(\r\n (modelError as ICustomModelError).Value,\r\n /*\r\n date/time values should appear formatted in interpolated string instead of transfer format (ISO)\r\n todo: streamline into i18next formatter in order to avoid unnecessary processing & make it available inother parts of the system\r\n */\r\n propertyValue => propertyValue,\r\n // {\r\n // if (typeof propertyValue === 'string') {\r\n // const parsedDate = dateUtils.tryParseISO(propertyValue);\r\n // if (parsedDate != null) {\r\n // return dateUtils.shortDateTimeFormat(parsedDate);\r\n // }\r\n // }\r\n // return propertyValue;\r\n // },\r\n );\r\n\r\n const key = (modelError as ICustomModelError).Key;\r\n const defaultValue = modelError.ErrorMessage ?? undefined;\r\n const message = i18next.t(key, defaultValue, value);\r\n return message;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n } else if (modelError.ErrorMessage !== null) {\r\n return modelError.ErrorMessage;\r\n } else if (modelError.Exception !== null) {\r\n return modelError.Exception.Message;\r\n }\r\n}\r\n\r\nexport function addModelError(\r\n modelState: IModelStateDictionary,\r\n errormessage: string,\r\n) {\r\n const modelErrors =\r\n modelState['']?.Errors ??\r\n (modelState[''] = {\r\n Value: null,\r\n Errors: [],\r\n });\r\n modelErrors.push({ ErrorMessage: errormessage, Exception: null });\r\n}\r\nexport function addModelStateDictionary(\r\n a: IModelStateDictionary,\r\n b: IModelStateDictionary,\r\n) {\r\n // todo: merge per property errors\r\n assign(a, b);\r\n}\r\n","export function sum(values, aggregatedValues) {\r\n // It's faster to just add the aggregations together instead of\r\n // process leaf nodes individually\r\n return aggregatedValues.reduce(\r\n (sum, next) => sum + (typeof next === 'number' ? next : 0),\r\n 0,\r\n );\r\n}\r\n\r\nexport function min(values) {\r\n let min = values[0] || 0;\r\n\r\n values.forEach(value => {\r\n if (typeof value === 'number') {\r\n min = Math.min(min, value);\r\n }\r\n });\r\n\r\n return min;\r\n}\r\n\r\nexport function max(values) {\r\n let max = values[0] || 0;\r\n\r\n values.forEach(value => {\r\n if (typeof value === 'number') {\r\n max = Math.max(max, value);\r\n }\r\n });\r\n\r\n return max;\r\n}\r\n\r\nexport function minMax(values) {\r\n let min = values[0] || 0;\r\n let max = values[0] || 0;\r\n\r\n values.forEach(value => {\r\n if (typeof value === 'number') {\r\n min = Math.min(min, value);\r\n max = Math.max(max, value);\r\n }\r\n });\r\n\r\n return `${min}..${max}`;\r\n}\r\n\r\nexport function average(values) {\r\n return sum(null, values) / values.length;\r\n}\r\n\r\nexport function median(values) {\r\n if (!values.length) {\r\n return null;\r\n }\r\n\r\n const mid = Math.floor(values.length / 2);\r\n const nums = [...values].sort((a, b) => a - b);\r\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\r\n}\r\n\r\nexport function unique(values) {\r\n return Array.from(new Set(values).values());\r\n}\r\n\r\nexport function uniqueCount(values) {\r\n return new Set(values).size;\r\n}\r\n\r\nexport function count(values) {\r\n return values.length;\r\n}\r\n","import { defaultColumn, emptyRenderer } from 'react-table';\r\n\r\n// Find the depth of the columns\r\nexport function findMaxDepth(columns, depth = 0) {\r\n return columns.reduce((prev, curr) => {\r\n if (curr.columns) {\r\n return Math.max(prev, findMaxDepth(curr.columns, depth + 1));\r\n }\r\n return depth;\r\n }, 0);\r\n}\r\n\r\n// Build the visible columns, headers and flat column list\r\nexport function linkColumnStructure(columns, parent, depth = 0) {\r\n return columns.map(column => {\r\n column = {\r\n ...column,\r\n parent,\r\n depth,\r\n };\r\n\r\n assignColumnAccessor(column);\r\n\r\n if (column.columns) {\r\n column.columns = linkColumnStructure(column.columns, column, depth + 1);\r\n }\r\n return column;\r\n });\r\n}\r\n\r\nexport function flattenColumns(columns) {\r\n return flattenBy(columns, 'columns');\r\n}\r\n\r\nexport function assignColumnAccessor(column) {\r\n // First check for string accessor\r\n let { id, accessor, Header } = column;\r\n\r\n if (typeof accessor === 'string') {\r\n id = id || accessor;\r\n const accessorPath = accessor.split('.');\r\n accessor = row => getBy(row, accessorPath);\r\n }\r\n\r\n if (!id && typeof Header === 'string' && Header) {\r\n id = Header;\r\n }\r\n\r\n if (!id && column.columns) {\r\n console.error(column);\r\n throw new Error('A column ID (or unique \"Header\" value) is required!');\r\n }\r\n\r\n if (!id) {\r\n console.error(column);\r\n throw new Error('A column ID (or string accessor) is required!');\r\n }\r\n\r\n Object.assign(column, {\r\n id,\r\n accessor,\r\n });\r\n\r\n return column;\r\n}\r\n\r\nexport function decorateColumn(column, userDefaultColumn) {\r\n if (!userDefaultColumn) {\r\n throw new Error();\r\n }\r\n Object.assign(column, {\r\n // Make sure there is a fallback header, just in case\r\n Header: emptyRenderer,\r\n Footer: emptyRenderer,\r\n ...defaultColumn,\r\n ...userDefaultColumn,\r\n ...column,\r\n });\r\n\r\n Object.assign(column, {\r\n originalWidth: column.width,\r\n });\r\n\r\n return column;\r\n}\r\n\r\n// Build the header groups from the bottom up\r\nexport function makeHeaderGroups(\r\n allColumns,\r\n defaultColumn,\r\n additionalHeaderProperties = () => ({}),\r\n) {\r\n const headerGroups = [];\r\n\r\n let scanColumns = allColumns;\r\n\r\n let uid = 0;\r\n const getUID = () => uid++;\r\n\r\n while (scanColumns.length) {\r\n // The header group we are creating\r\n const headerGroup = {\r\n headers: [],\r\n };\r\n\r\n // The parent columns we're going to scan next\r\n const parentColumns = [];\r\n\r\n const hasParents = scanColumns.some(d => d.parent);\r\n\r\n // Scan each column for parents\r\n scanColumns.forEach(column => {\r\n // What is the latest (last) parent column?\r\n let latestParentColumn = [...parentColumns].reverse()[0];\r\n\r\n let newParent;\r\n\r\n if (hasParents) {\r\n // If the column has a parent, add it if necessary\r\n if (column.parent) {\r\n newParent = {\r\n ...column.parent,\r\n originalId: column.parent.id,\r\n id: `${column.parent.id}_${getUID()}`,\r\n headers: [column],\r\n ...additionalHeaderProperties(column),\r\n };\r\n } else {\r\n // If other columns have parents, we'll need to add a place holder if necessary\r\n const originalId = `${column.id}_placeholder`;\r\n newParent = decorateColumn(\r\n {\r\n originalId,\r\n id: `${column.id}_placeholder_${getUID()}`,\r\n placeholderOf: column,\r\n headers: [column],\r\n ...additionalHeaderProperties(column),\r\n },\r\n defaultColumn,\r\n );\r\n }\r\n\r\n // If the resulting parent columns are the same, just add\r\n // the column and increment the header span\r\n if (\r\n latestParentColumn &&\r\n latestParentColumn.originalId === newParent.originalId\r\n ) {\r\n latestParentColumn.headers.push(column);\r\n } else {\r\n parentColumns.push(newParent);\r\n }\r\n }\r\n\r\n headerGroup.headers.push(column);\r\n });\r\n\r\n headerGroups.push(headerGroup);\r\n\r\n // Start scanning the parent columns\r\n scanColumns = parentColumns;\r\n }\r\n\r\n return headerGroups.reverse();\r\n}\r\n\r\nconst pathObjCache = new Map();\r\n\r\nexport function getBy(obj, path, def) {\r\n if (!path) {\r\n return obj;\r\n }\r\n const cacheKey = typeof path === 'function' ? path : JSON.stringify(path);\r\n\r\n const pathObj =\r\n pathObjCache.get(cacheKey) ||\r\n (() => {\r\n const pathObj = makePathArray(path);\r\n pathObjCache.set(cacheKey, pathObj);\r\n return pathObj;\r\n })();\r\n\r\n let val;\r\n\r\n try {\r\n val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj);\r\n } catch (e) {\r\n // continue regardless of error\r\n }\r\n return typeof val !== 'undefined' ? val : def;\r\n}\r\n\r\nexport function getFirstDefined(...args) {\r\n for (let i = 0; i < args.length; i += 1) {\r\n if (typeof args[i] !== 'undefined') {\r\n return args[i];\r\n }\r\n }\r\n}\r\n\r\nexport function getElementDimensions(element) {\r\n const rect = element.getBoundingClientRect();\r\n const style = window.getComputedStyle(element);\r\n const margins = {\r\n left: parseInt(style.marginLeft),\r\n right: parseInt(style.marginRight),\r\n };\r\n const padding = {\r\n left: parseInt(style.paddingLeft),\r\n right: parseInt(style.paddingRight),\r\n };\r\n return {\r\n left: Math.ceil(rect.left),\r\n width: Math.ceil(rect.width),\r\n outerWidth: Math.ceil(\r\n rect.width + margins.left + margins.right + padding.left + padding.right,\r\n ),\r\n marginLeft: margins.left,\r\n marginRight: margins.right,\r\n paddingLeft: padding.left,\r\n paddingRight: padding.right,\r\n scrollWidth: element.scrollWidth,\r\n };\r\n}\r\n\r\nexport function isFunction(a) {\r\n if (typeof a === 'function') {\r\n return a;\r\n }\r\n}\r\n\r\nexport function flattenBy(arr, key) {\r\n const flat = [];\r\n\r\n const recurse = arr => {\r\n arr.forEach(d => {\r\n if (!d[key]) {\r\n flat.push(d);\r\n } else {\r\n recurse(d[key]);\r\n }\r\n });\r\n };\r\n\r\n recurse(arr);\r\n\r\n return flat;\r\n}\r\n\r\nexport function expandRows(\r\n rows,\r\n { manualExpandedKey, expanded, expandSubRows = true },\r\n) {\r\n const expandedRows = [];\r\n\r\n const handleRow = (row, addToExpandedRows = true) => {\r\n row.isExpanded =\r\n (row.original && row.original[manualExpandedKey]) || expanded[row.id];\r\n\r\n row.canExpand = row.subRows && !!row.subRows.length;\r\n\r\n if (addToExpandedRows) {\r\n expandedRows.push(row);\r\n }\r\n\r\n if (row.subRows && row.subRows.length && row.isExpanded) {\r\n row.subRows.forEach(row => handleRow(row, expandSubRows));\r\n }\r\n };\r\n\r\n rows.forEach(row => handleRow(row));\r\n\r\n return expandedRows;\r\n}\r\n\r\nexport function getFilterMethod(filter, userFilterTypes, filterTypes) {\r\n return (\r\n isFunction(filter) ||\r\n userFilterTypes[filter] ||\r\n filterTypes[filter] ||\r\n filterTypes.text\r\n );\r\n}\r\n\r\nexport function shouldAutoRemoveFilter(autoRemove, value, column) {\r\n return autoRemove ? autoRemove(value, column) : typeof value === 'undefined';\r\n}\r\n\r\nexport function unpreparedAccessWarning() {\r\n throw new Error(\r\n 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.',\r\n );\r\n}\r\n\r\nlet passiveSupported = null;\r\nexport function passiveEventSupported() {\r\n // memoize support to avoid adding multiple test events\r\n if (typeof passiveSupported === 'boolean') return passiveSupported;\r\n\r\n let supported = false;\r\n try {\r\n const options = {\r\n get passive() {\r\n supported = true;\r\n return false;\r\n },\r\n };\r\n\r\n window.addEventListener('test', null, options);\r\n window.removeEventListener('test', null, options);\r\n } catch (err) {\r\n supported = false;\r\n }\r\n passiveSupported = supported;\r\n return passiveSupported;\r\n}\r\n\r\n//\r\n\r\nconst reOpenBracket = /\\[/g;\r\nconst reCloseBracket = /\\]/g;\r\n\r\nfunction makePathArray(obj) {\r\n return (\r\n flattenDeep(obj)\r\n // remove all periods in parts\r\n .map(d => String(d).replace('.', '_'))\r\n // join parts using period\r\n .join('.')\r\n // replace brackets with periods\r\n .replace(reOpenBracket, '.')\r\n .replace(reCloseBracket, '')\r\n // split it back out on periods\r\n .split('.')\r\n );\r\n}\r\n\r\nfunction flattenDeep(arr, newArr = []) {\r\n if (!Array.isArray(arr)) {\r\n newArr.push(arr);\r\n } else {\r\n for (let i = 0; i < arr.length; i += 1) {\r\n flattenDeep(arr[i], newArr);\r\n }\r\n }\r\n return newArr;\r\n}\r\n","import React from 'react';\r\n\r\nimport * as aggregations from './aggregations';\r\n\r\nimport { getFirstDefined, flattenBy } from './utils';\r\n\r\nimport {\r\n actions,\r\n ensurePluginOrder,\r\n useMountedLayoutEffect,\r\n useGetLatest,\r\n} from 'react-table';\r\n\r\nconst emptyArray = [];\r\nconst emptyObject = {};\r\n\r\n// Actions\r\nactions.resetGroupBy = 'resetGroupBy';\r\nactions.setGroupBy = 'setGroupBy';\r\n\r\nexport const useSummary = hooks => {\r\n hooks.stateReducers.push(reducer);\r\n hooks.visibleColumnsDeps.push((deps, { instance }) => [\r\n ...deps,\r\n instance.state.groupBy,\r\n ]);\r\n hooks.visibleColumns.push(visibleColumns);\r\n hooks.useInstance.push(useInstance);\r\n hooks.prepareRow.push(prepareRow);\r\n};\r\n\r\nuseSummary.pluginName = 'useSummary';\r\n\r\n// Reducer\r\nfunction reducer(state, action, previousState, instance) {\r\n if (action.type === actions.init) {\r\n return {\r\n groupBy: [],\r\n ...state,\r\n };\r\n }\r\n\r\n if (action.type === actions.resetGroupBy) {\r\n return {\r\n ...state,\r\n groupBy: instance.initialState.groupBy || [],\r\n };\r\n }\r\n\r\n if (action.type === actions.setGroupBy) {\r\n const { value } = action;\r\n return {\r\n ...state,\r\n groupBy: value,\r\n };\r\n }\r\n}\r\n\r\nfunction visibleColumns(\r\n columns,\r\n {\r\n instance: {\r\n state: { groupBy },\r\n },\r\n },\r\n) {\r\n // Sort grouped columns to the start of the column list\r\n // before the headers are built\r\n\r\n const groupByColumns = groupBy\r\n .map(g => columns.find(col => col.id === g))\r\n .filter(Boolean);\r\n\r\n const nonGroupByColumns = columns.filter(col => !groupBy.includes(col.id));\r\n\r\n columns = [...groupByColumns, ...nonGroupByColumns];\r\n\r\n columns.forEach(column => {\r\n column.isGrouped = groupBy.includes(column.id);\r\n column.groupedIndex = groupBy.indexOf(column.id);\r\n });\r\n\r\n return columns;\r\n}\r\n\r\nconst defaultUserAggregations = {};\r\n\r\nfunction useInstance(instance) {\r\n const {\r\n data,\r\n rows,\r\n flatRows,\r\n rowsById,\r\n allColumns,\r\n groupByFn = defaultGroupByFn,\r\n manualGroupBy,\r\n aggregations: userAggregations = defaultUserAggregations,\r\n plugins,\r\n state: { groupBy },\r\n dispatch,\r\n autoResetGroupBy = true,\r\n disableGroupBy,\r\n defaultCanGroupBy,\r\n } = instance;\r\n\r\n ensurePluginOrder(plugins, ['useColumnOrder', 'useFilters'], 'useSummary');\r\n\r\n allColumns.forEach(column => {\r\n const {\r\n accessor,\r\n defaultGroupBy: defaultColumnGroupBy,\r\n disableGroupBy: columnDisableGroupBy,\r\n } = column;\r\n\r\n column.canGroupBy = accessor\r\n ? getFirstDefined(\r\n column.canGroupBy,\r\n columnDisableGroupBy === true ? false : undefined,\r\n disableGroupBy === true ? false : undefined,\r\n true,\r\n )\r\n : getFirstDefined(\r\n column.canGroupBy,\r\n defaultColumnGroupBy,\r\n defaultCanGroupBy,\r\n false,\r\n );\r\n\r\n column.Aggregated = column.Aggregated || column.Cell;\r\n });\r\n const setGroupBy = React.useCallback(\r\n value => {\r\n dispatch({ type: actions.setGroupBy, value });\r\n },\r\n [dispatch],\r\n );\r\n\r\n const [\r\n groupedRows,\r\n groupedFlatRows,\r\n groupedRowsById,\r\n onlyGroupedFlatRows,\r\n onlyGroupedRowsById,\r\n nonGroupedFlatRows,\r\n nonGroupedRowsById,\r\n summaryRows,\r\n ] = React.useMemo(() => {\r\n if (manualGroupBy || !groupBy.length) {\r\n return [\r\n rows,\r\n flatRows,\r\n rowsById,\r\n emptyArray,\r\n emptyObject,\r\n flatRows,\r\n rowsById,\r\n ];\r\n }\r\n\r\n // Ensure that the list of filtered columns exist\r\n const existingGroupBy = groupBy.filter(g =>\r\n allColumns.find(col => col.id === g),\r\n );\r\n\r\n // Find the columns that can or are aggregating\r\n // Uses each column to aggregate rows into a single value\r\n const aggregateRowsToValues = (leafRows, groupedRows, depth) => {\r\n const values = {};\r\n\r\n allColumns.forEach(column => {\r\n // Don't aggregate columns that are in the groupBy\r\n if (existingGroupBy.includes(column.id)) {\r\n values[column.id] = groupedRows[0]\r\n ? groupedRows[0].values[column.id]\r\n : null;\r\n return;\r\n }\r\n\r\n // Aggregate the values\r\n let aggregateFn =\r\n typeof column.aggregate === 'function'\r\n ? column.aggregate\r\n : userAggregations[column.aggregate] ||\r\n aggregations[column.aggregate];\r\n\r\n if (aggregateFn) {\r\n // Get the columnValues to aggregate\r\n const groupedValues = groupedRows.map(row => row.values[column.id]);\r\n\r\n // Get the columnValues to aggregate\r\n const leafValues = leafRows.map(row => {\r\n let columnValue = row.values[column.id];\r\n\r\n if (!depth && column.aggregateValue) {\r\n const aggregateValueFn =\r\n typeof column.aggregateValue === 'function'\r\n ? column.aggregateValue\r\n : userAggregations[column.aggregateValue] ||\r\n aggregations[column.aggregateValue];\r\n\r\n if (!aggregateValueFn) {\r\n console.info({ column });\r\n throw new Error(\r\n `React Table: Invalid column.aggregateValue option for column listed above`,\r\n );\r\n }\r\n\r\n columnValue = aggregateValueFn(columnValue, row, column);\r\n }\r\n return columnValue;\r\n });\r\n\r\n values[column.id] = aggregateFn(leafValues, groupedValues);\r\n } else if (column.aggregate) {\r\n console.info({ column });\r\n throw new Error(\r\n `React Table: Invalid column.aggregate option for column listed above`,\r\n );\r\n } else {\r\n values[column.id] = null;\r\n }\r\n });\r\n\r\n return values;\r\n };\r\n\r\n let groupedFlatRows = [];\r\n const groupedRowsById = {};\r\n const onlyGroupedFlatRows = [];\r\n const onlyGroupedRowsById = {};\r\n const nonGroupedFlatRows = [];\r\n const nonGroupedRowsById = {};\r\n\r\n // Recursively group the data\r\n const groupUpRecursively = (rows, depth = 0, parentId) => {\r\n // This is the last level, just return the rows\r\n if (depth === existingGroupBy.length) {\r\n return rows;\r\n }\r\n\r\n const columnId = existingGroupBy[depth];\r\n\r\n // Group the rows together for this level\r\n let rowGroupsMap = groupByFn(rows, columnId);\r\n\r\n // Peform aggregations for each group\r\n const aggregatedGroupedRows = Object.entries(rowGroupsMap).map(\r\n ([groupByVal, groupedRows], index) => {\r\n let id = `${columnId}:${groupByVal}`;\r\n id = parentId ? `${parentId}>${id}` : id;\r\n\r\n // First, Recurse to group sub rows before aggregation\r\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\r\n\r\n // Flatten the leaf rows of the rows in this group\r\n const leafRows = depth\r\n ? flattenBy(groupedRows, 'leafRows')\r\n : groupedRows;\r\n\r\n const values = aggregateRowsToValues(leafRows, groupedRows, depth);\r\n\r\n const row = {\r\n id,\r\n isGrouped: true,\r\n groupByID: columnId,\r\n groupByVal,\r\n values,\r\n subRows,\r\n leafRows,\r\n depth,\r\n index,\r\n };\r\n\r\n subRows.forEach(subRow => {\r\n groupedFlatRows.push(subRow);\r\n groupedRowsById[subRow.id] = subRow;\r\n if (subRow.isGrouped) {\r\n onlyGroupedFlatRows.push(subRow);\r\n onlyGroupedRowsById[subRow.id] = subRow;\r\n } else {\r\n nonGroupedFlatRows.push(subRow);\r\n nonGroupedRowsById[subRow.id] = subRow;\r\n }\r\n });\r\n\r\n return row;\r\n },\r\n );\r\n\r\n return aggregatedGroupedRows;\r\n };\r\n\r\n const groupedRows = groupUpRecursively(rows);\r\n const summaryRows = [\r\n {\r\n id: 'summary',\r\n isGrouped: true,\r\n values: aggregateRowsToValues(rows, rows, 0),\r\n },\r\n ];\r\n groupedRows.forEach(subRow => {\r\n groupedFlatRows.push(subRow);\r\n groupedRowsById[subRow.id] = subRow;\r\n if (subRow.isGrouped) {\r\n onlyGroupedFlatRows.push(subRow);\r\n onlyGroupedRowsById[subRow.id] = subRow;\r\n } else {\r\n nonGroupedFlatRows.push(subRow);\r\n nonGroupedRowsById[subRow.id] = subRow;\r\n }\r\n });\r\n\r\n // Assign the new data\r\n return [\r\n groupedRows,\r\n groupedFlatRows,\r\n groupedRowsById,\r\n onlyGroupedFlatRows,\r\n onlyGroupedRowsById,\r\n nonGroupedFlatRows,\r\n nonGroupedRowsById,\r\n summaryRows,\r\n ];\r\n }, [\r\n manualGroupBy,\r\n groupBy,\r\n rows,\r\n flatRows,\r\n rowsById,\r\n allColumns,\r\n userAggregations,\r\n groupByFn,\r\n ]);\r\n\r\n const getAutoResetGroupBy = useGetLatest(autoResetGroupBy);\r\n\r\n useMountedLayoutEffect(() => {\r\n if (getAutoResetGroupBy()) {\r\n dispatch({ type: actions.resetGroupBy });\r\n }\r\n }, [dispatch, manualGroupBy ? null : data]);\r\n\r\n Object.assign(instance, {\r\n preGroupedRows: rows,\r\n preGroupedFlatRow: flatRows,\r\n preGroupedRowsById: rowsById,\r\n groupedRows,\r\n groupedFlatRows,\r\n groupedRowsById,\r\n onlyGroupedFlatRows,\r\n onlyGroupedRowsById,\r\n nonGroupedFlatRows,\r\n nonGroupedRowsById,\r\n rows: groupedRows,\r\n flatRows: groupedFlatRows,\r\n rowsById: groupedRowsById,\r\n setGroupBy,\r\n summaryRows,\r\n });\r\n}\r\n\r\nfunction prepareRow(row) {\r\n row.allCells.forEach(cell => {\r\n // Grouped cells are in the groupBy and the pivot cell for the row\r\n cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID;\r\n // Placeholder cells are any columns in the groupBy that are not grouped\r\n cell.isPlaceholder = !cell.isGrouped && cell.column.isGrouped;\r\n // Aggregated cells are not grouped, not repeated, but still have subRows\r\n cell.isAggregated =\r\n !cell.isGrouped && !cell.isPlaceholder && row.subRows?.length;\r\n });\r\n}\r\n\r\nexport function defaultGroupByFn(rows, columnId) {\r\n return rows.reduce((prev, row, i) => {\r\n // TODO: Might want to implement a key serializer here so\r\n // irregular column values can still be grouped if needed?\r\n const resKey = `${row.values[columnId]}`;\r\n prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : [];\r\n prev[resKey].push(row);\r\n return prev;\r\n }, {});\r\n}\r\n","import React from 'react';\r\nimport { Row } from 'react-table';\r\nimport { IRow } from '../../IRow';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport {\r\n getAssetImageThumbSrc,\r\n ImageSize,\r\n} from 'app/components/AssetThumbImage/getAssetImageSrc';\r\nimport { BasicCard, CardPosition, CardSize } from 'app/components/BasicCards';\r\nimport { PrimaryAction } from './PrimaryAction';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectAuthenticatedUser, selectImageExist } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport interface TableCardProps {\r\n row: Row;\r\n imageSrcKey?: keyof TRow;\r\n titleKey: keyof TRow;\r\n primaryAction?: PrimaryAction;\r\n someSelected: boolean;\r\n viewCheckBox?: boolean;\r\n useSelect: boolean;\r\n hasAdditionalActions: boolean;\r\n hasInlineRowActions: boolean;\r\n toggleAllRowsSelected?: (value?: boolean) => void;\r\n isRowSelectable: (row: Row) => boolean;\r\n active: boolean;\r\n cardSize?: CardSize;\r\n showTitleCell?: boolean;\r\n preventInnerClicks?: boolean;\r\n compact?: boolean;\r\n contentEditable?: boolean;\r\n cardPosition?: CardPosition;\r\n loading?: boolean;\r\n descriptionKey?: string;\r\n maxContentRowsLength?: number;\r\n}\r\n\r\nexport function TableCard({\r\n row,\r\n imageSrcKey,\r\n titleKey,\r\n primaryAction,\r\n viewCheckBox = true,\r\n useSelect,\r\n hasAdditionalActions,\r\n hasInlineRowActions,\r\n toggleAllRowsSelected,\r\n isRowSelectable,\r\n someSelected,\r\n active,\r\n cardSize = 'small',\r\n showTitleCell,\r\n compact,\r\n contentEditable,\r\n cardPosition,\r\n loading,\r\n descriptionKey,\r\n maxContentRowsLength = 4,\r\n ...props\r\n}: TableCardProps) {\r\n const isMobile = DetectIsMobile() || compact === true;\r\n const user = useSelector(selectAuthenticatedUser);\r\n const { t } = useTranslation();\r\n const useButtons = React.useMemo(() => {\r\n return (\r\n hasInlineRowActions &&\r\n row.cells.filter(c => c.column.id.startsWith('InlineActionColumn'))\r\n .length > 0\r\n );\r\n }, [hasInlineRowActions, row.cells]);\r\n\r\n const sizeOfMobileCard = React.useMemo(() => {\r\n return isMobile ? (cardSize === undefined ? 'small' : cardSize) : undefined;\r\n }, [cardSize, isMobile]);\r\n const position = React.useMemo(() => {\r\n return isMobile\r\n ? 'horizontal'\r\n : cardPosition === undefined\r\n ? 'vertical'\r\n : cardPosition;\r\n }, [cardPosition, isMobile]);\r\n const img = React.useMemo(() => {\r\n return row.original[imageSrcKey ?? ''];\r\n }, [imageSrcKey, row.original]);\r\n const hasImg = React.useMemo(() => {\r\n return (img ?? null) !== null && typeof img === 'string';\r\n }, [img]);\r\n const imageExist = useSelector(state =>\r\n selectImageExist(state, hasImg ? img : null),\r\n );\r\n const imageSize = React.useMemo(() => {\r\n if (position === 'horizontal') {\r\n if (!!sizeOfMobileCard) {\r\n return sizeOfMobileCard === 'medium' ? 'thumbLarge' : 'thumb';\r\n } else {\r\n return cardSize === 'medium' ? 'horizontalLarge' : 'horizontal';\r\n }\r\n } else {\r\n return cardSize === 'medium' ? 'verticalLarge' : 'vertical';\r\n }\r\n }, [cardSize, position, sizeOfMobileCard]);\r\n const imgSrc = React.useMemo(() => {\r\n return getAssetImageThumbSrc(img, imageSize, imageExist);\r\n }, [imageExist, imageSize, img]);\r\n const [showSelect, setShowSelect] = React.useState(\r\n isMobile ? viewCheckBox === true : someSelected || viewCheckBox === true,\r\n );\r\n\r\n React.useEffect(() => {\r\n setShowSelect(\r\n isMobile ? viewCheckBox === true : someSelected || viewCheckBox === true,\r\n );\r\n }, [isMobile, someSelected, viewCheckBox]);\r\n const title = React.useMemo(() => {\r\n return row.cells.find(c => c.column.id === titleKey);\r\n }, [row.cells, titleKey]);\r\n const select = React.useMemo(() => {\r\n return row.cells.find(c => c.column.id === 'selection');\r\n }, [row.cells]);\r\n const isDisabled = React.useMemo(() => {\r\n return !isRowSelectable(row);\r\n }, [isRowSelectable, row]);\r\n const cells = React.useMemo(() => {\r\n return row.cells\r\n .filter(\r\n c =>\r\n c.column.id !== titleKey &&\r\n c.column.id !== imageSrcKey &&\r\n c.column.id !== 'selection',\r\n )\r\n .filter(f => f.value !== null && f.value !== undefined && f.value !== '')\r\n .slice(0, maxContentRowsLength);\r\n }, [imageSrcKey, maxContentRowsLength, row.cells, titleKey]);\r\n\r\n return (\r\n {!!select && select.render('Cell')}\r\n }\r\n showBullet={true}\r\n cardSize={cardSize}\r\n mobileSize={sizeOfMobileCard}\r\n position={position}\r\n primaryAction={() => {\r\n if (!!primaryAction) {\r\n primaryAction(row, toggleAllRowsSelected, user, undefined, isMobile);\r\n } else if (useSelect && !isDisabled) {\r\n row.toggleRowSelected();\r\n }\r\n }}\r\n useSelect={useSelect} //&& viewCheckBox\r\n useButtons={useButtons}\r\n useImage={imageSrcKey !== undefined}\r\n topActions={\r\n hasAdditionalActions\r\n ? row.cells\r\n .filter(c => c.column.id.startsWith('ActionColumn'))\r\n .map(c => {\r\n return {\r\n key: c.column.id,\r\n action: c.render('Cell'),\r\n };\r\n })\r\n : undefined\r\n }\r\n hasTopActions={hasAdditionalActions}\r\n cardContentRows={\r\n cells.length > 0\r\n ? cells\r\n .filter(\r\n f =>\r\n !(\r\n f.column.id.startsWith('ActionColumn') ||\r\n f.column.id.startsWith('InlineActionColumn')\r\n ),\r\n )\r\n .map(c => {\r\n return {\r\n key: c.column.id,\r\n label: c.render('Header'),\r\n text: c.render('Cell'),\r\n };\r\n })\r\n : undefined\r\n }\r\n buttons={\r\n hasInlineRowActions\r\n ? row.cells\r\n .filter(c => c.column.id.startsWith('InlineActionColumn'))\r\n .map(c => {\r\n return {\r\n key: c.column.id,\r\n button: c.render('Cell'),\r\n };\r\n })\r\n : undefined\r\n }\r\n preventInnerClicks={props.preventInnerClicks}\r\n contentEditable={contentEditable}\r\n loading={loading}\r\n />\r\n );\r\n}\r\n","import { Grow, Tabs, useTheme } from '@material-ui/core';\r\nimport { TabsActionRenderer } from './TabsActionRender';\r\nimport * as React from 'react';\r\nimport { IFilterSettings } from '../../BasicFilter/IFilterSettings';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { Row } from 'react-table';\r\nimport { IRow } from '../..';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { ICanRaiseBasicTableRefreshEvent } from '../../ControlledTable/ControlledTableProps';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components';\r\nimport clsx from 'clsx';\r\n\r\nexport interface TabsToolbarProps\r\n extends ICanRaiseBasicTableRefreshEvent {\r\n rowsCount: number;\r\n rows: Row[];\r\n leftTabs?: TabsActionRenderer[];\r\n rightTabActions?: TabsActionRenderer[];\r\n selectedValue?: number;\r\n selectedArray: TRow[];\r\n toggleAllRowsSelected: (value?: boolean) => void;\r\n appliedFilters?: IFilterSettings[];\r\n allRowsSelected?: boolean;\r\n isRowSelectable: (row: Row) => boolean;\r\n getMultiMode?: (mode: boolean) => void;\r\n onAllRowsSelected?: (rows: Row[], selected: boolean) => void;\r\n disableMultiMode?: boolean;\r\n defaultMultiMode?: boolean;\r\n showClear?: boolean;\r\n compact?: boolean;\r\n selectMultiLabel?: string;\r\n}\r\n\r\nexport const TabsToolbar = React.memo(function TabsToolbarFunc(\r\n props: TabsToolbarProps,\r\n) {\r\n const {\r\n leftTabs,\r\n selectedValue,\r\n onRefresh,\r\n selectedArray,\r\n toggleAllRowsSelected,\r\n appliedFilters,\r\n rowsCount,\r\n rows,\r\n allRowsSelected,\r\n isRowSelectable,\r\n getMultiMode,\r\n onAllRowsSelected,\r\n disableMultiMode,\r\n defaultMultiMode = true,\r\n rightTabActions,\r\n //showClear,\r\n compact,\r\n } = props;\r\n const [value, setValue] = React.useState(selectedValue || 0);\r\n const isMobile = DetectIsMobile();\r\n const { t } = useTranslation();\r\n const theme = useTheme();\r\n const [multiMode, setMultiMode] = React.useState(\r\n (selectedArray.length > 0 && !disableMultiMode) ||\r\n defaultMultiMode === true,\r\n );\r\n // const handleChecked = React.useCallback(\r\n // ev => {\r\n // if (!multiMode) {\r\n // setMultiMode(true);\r\n // !!getMultiMode && getMultiMode(true);\r\n // } else {\r\n // let selectable = rows.filter(f => isRowSelectable(f));\r\n // selectable.forEach(f => {\r\n // f.isSelected && f.toggleRowSelected(false);\r\n // });\r\n // if (!!onAllRowsSelected) {\r\n // onAllRowsSelected(selectable, false);\r\n // }\r\n // setMultiMode(false);\r\n // !!getMultiMode && getMultiMode(false);\r\n // }\r\n // },\r\n // [getMultiMode, isRowSelectable, multiMode, onAllRowsSelected, rows],\r\n // );\r\n const handleChange = (event: any, newValue: number) => {\r\n setValue(newValue);\r\n };\r\n React.useEffect(() => {\r\n if (selectedArray.length > 1 || defaultMultiMode === true) {\r\n //!multiMode &&\r\n setMultiMode(true);\r\n } else {\r\n setMultiMode(false);\r\n }\r\n }, [defaultMultiMode, multiMode, selectedArray.length]);\r\n return (\r\n \r\n {!isMobile && !compact && (\r\n
    \r\n {!!leftTabs && leftTabs.length > 0 && (\r\n \r\n ref?.updateIndicator()}\r\n selectionFollowsFocus={false}\r\n indicatorColor=\"primary\"\r\n value={value}\r\n onChange={(ev, value) => handleChange(ev, value)}\r\n aria-label=\"nav tabs example\"\r\n >\r\n {leftTabs.map((tab, index) =>\r\n tab(\r\n rowsCount,\r\n rows,\r\n toggleAllRowsSelected,\r\n selectedArray,\r\n allRowsSelected,\r\n onRefresh,\r\n appliedFilters,\r\n ),\r\n )}\r\n \r\n \r\n )}\r\n
    \r\n )}\r\n \r\n {/* selectedArray.length > 0 && (multiMode || showClear) && */}\r\n {!disableMultiMode && (\r\n }\r\n disabled={!(selectedArray.length > 0)}\r\n onClick={event => {\r\n event.stopPropagation();\r\n let selectable = rows.filter(f => isRowSelectable(f));\r\n selectable.forEach(f => {\r\n f.toggleRowSelected(false);\r\n });\r\n if (!!onAllRowsSelected) {\r\n onAllRowsSelected(selectable, false);\r\n }\r\n let allPagesUnselected = selectedArray.length > selectable.length;\r\n setMultiMode(allPagesUnselected);\r\n !!getMultiMode && getMultiMode(allPagesUnselected);\r\n }}\r\n >\r\n {compact || isMobile\r\n ? t(translations.Unselect)\r\n : t(translations.ClearSelection)}\r\n \r\n )}\r\n {/* (multiMode === true || selectedArray.length > 0) && */}\r\n {!disableMultiMode && (\r\n }\r\n onClick={() => {\r\n setMultiMode(true);\r\n !!getMultiMode && getMultiMode(true);\r\n let selectable = rows.filter(f => isRowSelectable(f));\r\n selectable.forEach(f => {\r\n f.toggleRowSelected(true);\r\n });\r\n if (!!onAllRowsSelected) {\r\n onAllRowsSelected(selectable, true);\r\n }\r\n }}\r\n >\r\n {t(translations.CoreSelectAll)}\r\n \r\n )}\r\n {/* */}\r\n\r\n {/* {tabRightActions\r\n .filter(f => f !== undefined)\r\n .map((tab, index) => (\r\n {tab(rowsCount, rows)}\r\n ))} */}\r\n \r\n {!!rightTabActions && rightTabActions.length > 0 && (\r\n <>\r\n {rightTabActions\r\n .filter(f => f !== undefined)\r\n .map((tab, index) => (\r\n {tab(rowsCount, rows)}\r\n ))}\r\n \r\n )}\r\n \r\n );\r\n});\r\nconst TabsContainer = styled('div')(({ theme }) => ({\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n padding: '8px 32px',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n '&.shortView': {\r\n flexDirection: 'column',\r\n padding: '8px 8px 16px',\r\n alignItems: 'start',\r\n },\r\n '& .tabsContent': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: 16,\r\n },\r\n '& .buttonsContent': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n //flexWrap: isMobile ? 'wrap' : 'nowrap',\r\n gap: 16,\r\n '&.shortView': {\r\n gap: 0,\r\n },\r\n },\r\n}));\r\n","import { useTheme } from '@material-ui/core';\r\nimport { Body } from 'app/components/Typography';\r\nimport { BookitChip } from 'app/components/BasicChip';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport { SelectedRowsActionExtRenderer } from '../SelectedRowsActionButton/SelectedRowsActionRenderer';\r\nimport * as React from 'react';\r\nimport { IdType, Row } from 'react-table';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectHideNavigation } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport clsx from 'clsx';\r\nimport { IRow } from '..';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport { ICanRaiseBasicTableRefreshEvent } from '../ControlledTable/ControlledTableProps';\r\nimport styled from 'styled-components';\r\n\r\nconst genericMemo: (component: T) => T = React.memo;\r\n\r\nexport interface FloatingActionsProps\r\n extends ICanRaiseBasicTableRefreshEvent {\r\n selectedActions: SelectedRowsActionExtRenderer[];\r\n rows: Row[];\r\n useSidePanel?: boolean;\r\n buttonActions?: SelectedRowsActionExtRenderer[];\r\n\r\n selectedArray: TRow[];\r\n toggleAllRowsSelected: (value?: boolean) => void;\r\n toggleRowSelected: (rowId: IdType, set?: boolean | undefined) => void;\r\n totalRows: number;\r\n compact?: boolean;\r\n}\r\n\r\nexport const FloatingContainer = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: 8,\r\n height: 72,\r\n background: '#ffffff',\r\n borderRadius: 8,\r\n boxShadow: '0px 2px 18px rgba(8, 24, 41, 0.16)',\r\n '&.fixedContainer': {\r\n position: 'fixed',\r\n insetBlock: 'auto 38px',\r\n zIndex: 1070,\r\n padding: 16,\r\n width: '55%',\r\n insetInline: 'auto 20%',\r\n '&.fullWidth': {\r\n width: '55%',\r\n insetInline: 'auto 26%',\r\n },\r\n // '&:hover': {\r\n // width: '70%',\r\n // insetInline: 'auto 20%px',\r\n // },\r\n },\r\n '&.fixedContainerMobile': {\r\n //position: 'absolute',\r\n zIndex: 1070, //zIndex: 1500,\r\n width: '100%',\r\n padding: '16px 8px',\r\n //bottom: 'unset',\r\n position: 'fixed',\r\n bottom: '50px',\r\n '&.isPopup': {\r\n position: 'absolute',\r\n bottom: '50px',\r\n },\r\n },\r\n '& .buttonsContent': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: 0,\r\n gap: 8,\r\n width: 'calc(100% - 200px)',\r\n '&.mobile': {\r\n width: 'calc(100% - 115px)',\r\n },\r\n '&.compact': {\r\n width: 'auto',\r\n },\r\n '& .actions': {\r\n display: 'inline-flex',\r\n flex: '1 1 auto',\r\n position: 'relative',\r\n whiteSpace: 'nowrap',\r\n overflow: 'auto hidden',\r\n alignItems: 'center',\r\n gap: 8,\r\n '&.compactActions': {\r\n flex: '0 1 auto',\r\n },\r\n '& .rowsCount': {\r\n display: 'inline-flex',\r\n },\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n height: '6px',\r\n transition: 'width 0.2s, height 0.2s',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: `${bookitColors.grayscale.grayBorders}`,\r\n transition: 'background-color 0.2s',\r\n },\r\n },\r\n },\r\n '& .buttonActions': {\r\n display: 'inline-flex',\r\n flex: '1 1 auto',\r\n position: 'relative',\r\n whiteSpace: 'nowrap',\r\n overflow: 'auto hidden',\r\n gap: 8,\r\n },\r\n}));\r\n\r\nfunction FloatingActionsFunc(props: FloatingActionsProps) {\r\n const {\r\n selectedActions,\r\n onRefresh,\r\n selectedArray,\r\n toggleAllRowsSelected,\r\n totalRows,\r\n buttonActions,\r\n useSidePanel,\r\n toggleRowSelected,\r\n compact,\r\n rows,\r\n } = props;\r\n const isMobile = DetectIsMobile() === true;\r\n const hideNavigation = useSelector(selectHideNavigation);\r\n\r\n const maxButtons = React.useMemo(() => {\r\n return isMobile || compact === true ? 1 : 4;\r\n }, [compact, isMobile]);\r\n const baseActions = React.useMemo(() => {\r\n return selectedActions.length > maxButtons\r\n ? selectedActions.slice(0, maxButtons - 1)\r\n : selectedActions;\r\n }, [selectedActions, maxButtons]);\r\n const sperActions = React.useMemo(() => {\r\n return selectedActions.length > maxButtons\r\n ? selectedActions.slice(maxButtons - 1)\r\n : [];\r\n }, [selectedActions, maxButtons]);\r\n const theme = useTheme();\r\n // const toggleSingleSelected = (\r\n // rowId: IdType,\r\n // set?: boolean | undefined,\r\n // ) => {\r\n // let selectable = rows.filter(f => f.id === rowId).length > 0;\r\n // if (selectable) {\r\n // return toggleRowSelected(rowId, set);\r\n // }\r\n // };\r\n return (\r\n \r\n \r\n \r\n
    \r\n {`${selectedArray.length} of ${totalRows} Items`}\r\n
    \r\n {sperActions.length > 0 ? (\r\n \r\n {baseActions.map((item, index) =>\r\n item(\r\n selectedArray,\r\n rows,\r\n onRefresh,\r\n toggleAllRowsSelected,\r\n toggleRowSelected,\r\n ),\r\n )}\r\n \r\n \r\n ) : (\r\n \r\n {selectedActions.map((item, index) => (\r\n \r\n {item(\r\n selectedArray,\r\n rows,\r\n onRefresh,\r\n toggleAllRowsSelected,\r\n toggleRowSelected,\r\n )}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n {!!buttonActions && buttonActions.length > 0 && (\r\n
    \r\n {buttonActions.map((item, index) => (\r\n \r\n {item(\r\n selectedArray,\r\n rows,\r\n onRefresh,\r\n toggleAllRowsSelected,\r\n toggleRowSelected,\r\n )}\r\n \r\n ))}\r\n
    \r\n )}\r\n \r\n );\r\n}\r\nexport interface SperActionsProps\r\n extends ICanRaiseBasicTableRefreshEvent {\r\n actions: SelectedRowsActionExtRenderer[];\r\n selectedArray: TRow[];\r\n rows: Row[];\r\n toggleAllRowsSelected: (value?: boolean) => void;\r\n toggleRowSelected: (rowId: IdType, set?: boolean | undefined) => void;\r\n isMobile: boolean;\r\n}\r\nfunction SperActionsFunc(props: SperActionsProps) {\r\n const {\r\n actions,\r\n onRefresh,\r\n selectedArray,\r\n rows,\r\n toggleAllRowsSelected,\r\n toggleRowSelected,\r\n isMobile,\r\n } = props;\r\n return (\r\n {}}\r\n deleteIcon={\r\n (\r\n \r\n {item(\r\n selectedArray,\r\n rows,\r\n onRefresh,\r\n toggleAllRowsSelected,\r\n toggleRowSelected,\r\n )}\r\n \r\n )),\r\n ].filter(v => !!v) as JSX.Element[]\r\n }\r\n >\r\n }\r\n variant=\"default\"\r\n customsize=\"medium\"\r\n label={`and ${actions.length} more`}\r\n customwidth={isMobile ? 150 : 180}\r\n custombgcolor={bookitColors.primary.disabled}\r\n customcolor={bookitColors.grayscale.blackComponents}\r\n customiconcolor={bookitColors.primary.regular}\r\n shape=\"circle\"\r\n key={'sper_actions'}\r\n />\r\n );\r\n}\r\nexport const SperActions = genericMemo(SperActionsFunc);\r\nexport const FloatingActions = genericMemo(FloatingActionsFunc);\r\n","/*CustomToolbar*/\r\n\r\nimport * as React from 'react';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport styled from 'styled-components';\r\n\r\n// export interface ICustomToolbar extends Record {\r\n// rowsCount: number;\r\n// rows: Row[];\r\n// }\r\ninterface CustomToolbarProps {\r\n Component: React.ReactNode;\r\n compact?: boolean;\r\n}\r\ninterface CustomRootProps {\r\n isMobile: boolean;\r\n}\r\n\r\nconst CustomRoot = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: ${props => (props.isMobile ? '8px 8px 16px' : '8px 32px')};\r\n`;\r\n\r\nfunction CustomToolbarFunc(props: CustomToolbarProps) {\r\n const { Component, compact } = props;\r\n const isMobile = DetectIsMobile() || compact === true;\r\n return {Component};\r\n}\r\n\r\nexport const CustomToolbar = React.memo(CustomToolbarFunc);\r\n","import * as React from 'react';\r\nimport { TableCell, TableRow } from '@material-ui/core';\r\nimport { Row } from 'react-table';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { ICanRaiseBasicTableRefreshEvent } from './ControlledTableProps';\r\nimport { useTranslation } from 'locales';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport interface RenderRowProps\r\n extends ICanRaiseBasicTableRefreshEvent {\r\n row: Row;\r\n rowIsClickable?: (row: TRow) => boolean;\r\n onRowClicked?: (row: TRow) => void;\r\n children?: (cell) => React.ReactNode;\r\n rowTitle?: string;\r\n cursorBehavior?: 'row-pointer' | 'row-pan';\r\n}\r\nexport function RenderRow({\r\n row,\r\n onRefresh,\r\n onRowClicked,\r\n rowTitle,\r\n rowIsClickable,\r\n cursorBehavior,\r\n children = cell =>\r\n cell.render('Cell', {\r\n onRefresh: onRefresh,\r\n }),\r\n}: RenderRowProps) {\r\n const { t } = useTranslation();\r\n\r\n const canClickRow = React.useMemo(() => {\r\n if (rowIsClickable !== undefined && onRowClicked !== undefined) {\r\n return rowIsClickable(row.original);\r\n } else if (onRowClicked !== undefined) {\r\n return true;\r\n }\r\n return false;\r\n }, [onRowClicked, row.original, rowIsClickable]);\r\n return (\r\n \r\n onRowClicked?.(row.original) : undefined}\r\n className={\r\n canClickRow\r\n ? `row-clickable ${!!cursorBehavior ? cursorBehavior : ''}`\r\n : undefined\r\n }\r\n {...row.getRowProps()}\r\n >\r\n {\r\n // Loop over the rows cells\r\n row.cells.map(cell => {\r\n // Apply the cell props\r\n return (\r\n \r\n {\r\n if (canClickRow) {\r\n e.stopPropagation();\r\n }\r\n }}\r\n >\r\n {\r\n // Render the cell contents\r\n children(cell)\r\n }\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n","import { H3 } from 'app/components/Typography';\r\nimport { H4 } from 'app/components/Typography';\r\nimport React from 'react';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport styled from 'styled-components';\r\n\r\nexport interface CustomEmptyTableProps {\r\n id?: string;\r\n headTitle?: string;\r\n title?: string;\r\n shortView?: boolean;\r\n customContent?: React.ReactNode;\r\n}\r\n\r\nexport function CustomEmptyTable(props: CustomEmptyTableProps) {\r\n const { headTitle, title, customContent } = props;\r\n return (\r\n \r\n
    \r\n {!!customContent ? (\r\n {customContent}\r\n ) : (\r\n \r\n {props.shortView ? (\r\n \r\n {headTitle && (\r\n \r\n {headTitle}\r\n \r\n )}\r\n {title && (\r\n {title}\r\n )}\r\n \r\n ) : (\r\n \r\n {headTitle &&

    {headTitle}

    }\r\n {title &&

    {title}

    }\r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n}\r\nconst EmptyTableWrapper = styled.div`\r\n &.empty-table {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n & .empty-table-content {\r\n text-align: center;\r\n margin-top: 3%;\r\n margin-bottom: 3%;\r\n }\r\n }\r\n`;\r\n","import styled from 'styled-components';\r\n\r\nexport const TableHeaderCellLabel = styled('span')`\r\n white-space: break-spaces;\r\n word-break: normal;\r\n`;\r\n\r\n// export const TableCell = withStyles({\r\n// root: {\r\n// height: '32px',\r\n// },\r\n// head: {},\r\n// body: {\r\n// padding: '10px 12px',\r\n// },\r\n// })(MuiTableCell);\r\n","import * as React from 'react';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { RenderRow, RenderRowProps } from './RenderRow';\r\n\r\nexport interface RenderGroupedRowProps\r\n extends RenderRowProps {}\r\n\r\nexport function RenderGroupedRow({\r\n row,\r\n onRefresh,\r\n onRowClicked,\r\n rowIsClickable,\r\n rowTitle,\r\n cursorBehavior,\r\n children = cell =>\r\n cell.isAggregated\r\n ? // If the cell is aggregated, use the Aggregated\r\n // renderer for cell\r\n cell.render('Aggregated')\r\n : cell.isPlaceholder\r\n ? null // For cells with repeated values, render null\r\n : // Otherwise, just render the regular cell\r\n cell.render('Cell', {\r\n onRefresh: onRefresh,\r\n }),\r\n}: RenderGroupedRowProps) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ImportButton\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Menu } from '@material-ui/core';\r\n\r\nexport interface ImportButtonProps {\r\n onClick: () => void;\r\n importLink?: string;\r\n importHandler?: () => void;\r\n menuItems?: (onClose: () => void) => React.ReactNode[] | undefined;\r\n}\r\n\r\nexport function ImportButton(props: ImportButtonProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n const handleImport = async () => {\r\n handleClose();\r\n props.onClick();\r\n };\r\n const menuItems = React.useMemo(() => {\r\n const result = props.menuItems ? props.menuItems(handleClose) : undefined;\r\n return result;\r\n }, [props]);\r\n const showSingleImportButton =\r\n menuItems === undefined || menuItems.length === 0;\r\n\r\n return (\r\n \r\n }\r\n onClick={showSingleImportButton ? handleImport : handleClick}\r\n >\r\n {t(translations.Import)}\r\n \r\n {!showSingleImportButton && (\r\n <>\r\n \r\n {menuItems}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ControlledTable\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n LinearProgress,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TablePagination,\r\n TableRow,\r\n TableSortLabel,\r\n} from '@material-ui/core';\r\nimport Table from '@material-ui/core/Table';\r\nimport {\r\n useTable,\r\n usePagination,\r\n useSortBy,\r\n UseSortByState,\r\n UseSortByInstanceProps,\r\n UsePaginationState,\r\n PluginHook,\r\n useGlobalFilter,\r\n useExpanded,\r\n Row,\r\n HeaderGroup,\r\n SortingRule,\r\n} from 'react-table';\r\nimport TablePaginationActions from 'app/components/BasicTable/TablePaginationActions';\r\nimport { GlobalFilter } from 'app/components/BasicTable/GlobalFilter';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { BasicFilterGroup } from 'app/components/BasicTable/BasicFilter';\r\nimport { useState } from 'react';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport { Button } from 'app/components//BasicButtons/Button';\r\nimport { TableHeaderIcon } from 'app/components//BasicIcons/SvgIcons';\r\nimport { Icon } from 'app/components//BasicIcons/FontAwesome';\r\nimport { TableToolbar } from 'app/components/BasicTable/BasicFilter/TableToolbar';\r\nimport { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\n//import { Progress } from '../LoadingIndicator';\r\nimport { BasicTableProps } from '..';\r\nimport { ExportButton } from 'app/components/BasicTable/ExportButton';\r\nimport { orderBy, sortedUniq } from 'lodash';\r\nimport { FilterContainer } from '../BasicFilter/FilterContainer';\r\nimport { PageActionRenderer2 } from '../PageActions/PageActionsRenderer';\r\nimport { FilterIconButton } from 'app/components/BasicButtons/FilterIconButton';\r\nimport { TableRowsSkeleton } from '../components/TableSkeleton';\r\nimport { AlertContentType, BasicAlert } from 'app/components/BasicAlert';\r\nimport { ControlledTableProps } from './ControlledTableProps';\r\nimport { SelectedActions } from '../SelectedActions';\r\nimport { FiltersGroupDisplay } from '../BasicFilter/FiltersGroupDisplay';\r\nimport { NoTableData } from '../components/NoTableData';\r\nimport { useMemoFilters } from '../useMemoFilters';\r\nimport { useInlineRowActionsColumn, useRowActionsColumn } from '../RowActions';\r\nimport { useSummary } from '../Hooks/useSummary';\r\nimport { TableError } from '../components/TableError';\r\nimport { FiltersButton } from '../BasicFilter/FiltersButton';\r\nimport { TableCardGrid } from '../components/TableCardGrid';\r\nimport { TableCard } from '../components/TableCard';\r\nimport { ConfigureColumnsButton } from '../components/ConfigureColumnsButton';\r\nimport { TabsToolbar } from '../components/TabsToolbar';\r\nimport { selectActionTableProcessing } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { FloatingActions } from '../components/FloatingActions';\r\nimport clsx from 'clsx';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport { CustomToolbar } from '../components/CustomTableToolbar';\r\nimport { RenderRow } from './RenderRow';\r\nimport { CustomEmptyTable } from '../components/CustomEmptyTable';\r\nimport DefaultRenderer from '../CellRenderers/DefaultRenderer';\r\nimport { ScreensId } from 'enums/ConfigurableTypes';\r\nimport { TableHeaderCellLabel } from './TableCell';\r\nimport { RenderGroupedRow } from './RenderGroupedRow';\r\nimport { selectGlobalSearchOpen } from 'app/pages/PublicAssets/slice/selectors';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { ImportButton } from '../ImportButton';\r\nimport { Notification } from 'types/Notification';\r\nimport { addRowSelect } from './addRowSelect';\r\nimport { TableRoot } from '../styled';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\n\r\nexport type { IRow };\r\nexport type { BasicTableProps };\r\n\r\ntype IPartialTableState = Partial<\r\n UseSortByState & UsePaginationState & UseSortByInstanceProps\r\n>;\r\nexport type TableMode = 'card' | 'table';\r\n/**\r\n * Interface to the (initial) table state\r\n */\r\nexport interface IControlledTableState\r\n extends IPartialTableState {}\r\n\r\n// todo: enable row accessor for rowActions\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst defaultRowIdAccessor = (row: TRow): string =>\r\n row.Id?.toString();\r\n\r\nconst defaultGetSubRows = original =>\r\n original.Rows && original.Rows.length > 1 ? original.Rows : [];\r\nexport const defaultCheckIfRowIsSelectable = (\r\n row: TRow,\r\n): boolean => true;\r\n/**\r\n * Server side driven Table component that will be reused in most of the pages\r\n * @param param0\r\n * @returns\r\n */\r\nexport function ControlledTable({\r\n columns,\r\n initialState,\r\n getRowId = defaultRowIdAccessor,\r\n searchColumns,\r\n useExport = true,\r\n onDownloadTemplate,\r\n rowActions,\r\n inlineRowActions,\r\n pageActions,\r\n screenName,\r\n screenNameVariant = 'H1',\r\n selectedRowsActions,\r\n filterOpen = false,\r\n screenId,\r\n serviceGroups,\r\n customParams,\r\n useImportLink,\r\n importLink,\r\n importHandler,\r\n ServiceGroupsOptional,\r\n topAlertMessage,\r\n onChangeState,\r\n onSelectedRowsChange,\r\n onExport,\r\n compact = true,\r\n updateMyData,\r\n loading,\r\n tableRowsSize = 'small',\r\n getSubRows = defaultGetSubRows,\r\n savedListSettings,\r\n withToolBar = true,\r\n allowCards,\r\n useCardsByDefault,\r\n onModeChange,\r\n viewCardsCheck,\r\n floatingTabSettings,\r\n tabSectionSettings,\r\n isRowSelectable,\r\n onSelectedChange,\r\n hideMenuOnMobile,\r\n useConfigurable = true,\r\n customToolbarSettings,\r\n showTitleCell,\r\n getAllFilteredRowsCallback,\r\n useExportForImport,\r\n exportForImportFilterKey,\r\n customEmptyTableSettings,\r\n manualPagination = true,\r\n manualSorting = true,\r\n enablePagination = true,\r\n onRowClicked,\r\n rowIsClickable,\r\n rowTitle,\r\n cursorBehavior,\r\n printing,\r\n alwaysShowTableHeader,\r\n hideFilters,\r\n baseTableActionsOnToolbar,\r\n baseSortBy,\r\n showGlobalSearchIconOnToolbar,\r\n toggleGlobalSearchIcon,\r\n customExpandMenu,\r\n customScreenName,\r\n getSavedDefaultFilters,\r\n importMenuItems,\r\n isContentEditable,\r\n cardPosition = 'vertical',\r\n tablePaddingVariant = 'regular',\r\n minCardHeight = 'md',\r\n useCustomSearch,\r\n ns,\r\n fitContent,\r\n ...props\r\n}: ControlledTableProps) {\r\n const { t } = useTranslation(ns);\r\n const isMobile = DetectIsMobile();\r\n const dispatch = useDispatch();\r\n const { actions: globalActions } = useAppSettingsSlice();\r\n // collapsed state of the filters\r\n // reference to the show/hide filters button\r\n const [filtersButtonAnchorEl, setFiltersButtonAnchorEl] =\r\n React.useState(null);\r\n // collapsed state of the filters\r\n const [open, setOpen] = React.useState(false);\r\n // data length - total number of the records\r\n const dataLength = React.useMemo(() => {\r\n return props.dataLength ?? 0;\r\n }, [props.dataLength]);\r\n // table Plugins array assembly\r\n const tablePlugins: PluginHook[] = [\r\n useSummary,\r\n useGlobalFilter,\r\n useSortBy,\r\n useExpanded,\r\n ];\r\n if (enablePagination) {\r\n tablePlugins.push(usePagination);\r\n }\r\n if (searchColumns !== undefined && searchColumns?.length > 0) {\r\n tablePlugins.unshift(useGlobalFilter);\r\n }\r\n\r\n if (props.useRowSelect) {\r\n addRowSelect(tablePlugins, isRowSelectable, onSelectedChange);\r\n }\r\n useInlineRowActionsColumn(inlineRowActions, tablePlugins);\r\n useRowActionsColumn(rowActions, tablePlugins);\r\n const columnsDefinition = React.useMemo(() => {\r\n const columnDefaults = {\r\n Cell: DefaultRenderer,\r\n };\r\n return columns.map(column => ({\r\n ...columnDefaults,\r\n ...column,\r\n }));\r\n }, [columns]);\r\n\r\n const {\r\n getTableProps,\r\n getTableBodyProps,\r\n headerGroups,\r\n prepareRow,\r\n rows: reactTableRows,\r\n page: reactTablePage,\r\n gotoPage,\r\n setPageSize,\r\n setGlobalFilter,\r\n // todo: make use of the selectedRowIds\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n state: { pageIndex, pageSize, sortBy, selectedRowIds, globalFilter },\r\n selectedFlatRows,\r\n toggleAllRowsSelected,\r\n toggleRowSelected,\r\n isAllRowsSelected,\r\n summaryRows,\r\n setSortBy,\r\n } = useTable(\r\n {\r\n columns: columnsDefinition,\r\n data: props.data,\r\n updateMyData,\r\n initialState,\r\n // server side controlled pagination\r\n manualPagination: manualPagination,\r\n // server side controlled sorting\r\n manualSortBy: manualSorting,\r\n // server side controlled global filter\r\n manualGlobalFilter: true,\r\n //When true, the selectedRowIds state will automatically reset if any of the following conditions are met:\r\n autoResetSelectedRows: false,\r\n //When true, the paging is always reset to initial pageIndex state.\r\n autoResetPage: false,\r\n // controlled page count (server sided pagination)\r\n pageCount: props.pageCount,\r\n getRowId: getRowId,\r\n getSubRows,\r\n },\r\n ...tablePlugins,\r\n );\r\n const rows = React.useMemo(() => {\r\n return enablePagination ? reactTablePage : reactTableRows;\r\n }, [enablePagination, reactTablePage, reactTableRows]);\r\n\r\n useEffect(() => {\r\n if (baseSortBy !== undefined) {\r\n setSortBy(baseSortBy);\r\n }\r\n }, [baseSortBy, setSortBy]);\r\n\r\n useEffect(() => {\r\n if (initialState?.pageSize !== undefined) {\r\n setPageSize(initialState.pageSize);\r\n }\r\n }, [initialState?.pageSize, setPageSize]);\r\n\r\n useEffect(() => {\r\n if (initialState?.globalFilter !== undefined) {\r\n setGlobalFilter(initialState.globalFilter);\r\n }\r\n }, [initialState?.globalFilter, setGlobalFilter]);\r\n // useEffect(() => {\r\n // if (initialState?.pageIndex !== undefined) {\r\n // gotoPage(initialState.pageIndex);\r\n // }\r\n // }, [gotoPage, initialState?.pageIndex]);\r\n\r\n /**\r\n * Track selected original row values. selectedRowIds only stores the row Ids.\r\n * selectedFlatRows only holds selected rows from the current page.\r\n */\r\n const isSomeSelected = React.useMemo(() => {\r\n return Object.keys(selectedRowIds || {}).length > 0;\r\n }, [selectedRowIds]);\r\n const [selected, setSelected] = useState>({});\r\n useEffect(() => {\r\n setSelected(state =>\r\n Object.keys(selectedRowIds || {}).reduce((accumulator, key) => {\r\n accumulator[key] =\r\n state[key] ??\r\n selectedFlatRows\r\n .filter(isRowSelectable || defaultCheckIfRowIsSelectable)\r\n .find(row => row.id === key)?.original;\r\n return accumulator;\r\n }, {}),\r\n );\r\n }, [selectedRowIds, selectedFlatRows, isRowSelectable]);\r\n const selectedArray = React.useMemo(() => {\r\n return Object.entries(selected).map(value => value[1]);\r\n }, [selected]);\r\n\r\n const appliedFiltersLength = React.useMemo(() => {\r\n return props.appliedFilters && props.appliedFilters.length > 0\r\n ? props.appliedFilters.filter(\r\n f => f.value !== null && f.value !== undefined && f.value !== '',\r\n ).length\r\n : 0;\r\n }, [props.appliedFilters]);\r\n\r\n const handleFilterChange = React.useCallback(\r\n (items: IFilterSettings[]) => {\r\n props.onFilterChange?.(items);\r\n if (items.length !== appliedFiltersLength) {\r\n gotoPage(0);\r\n }\r\n },\r\n [appliedFiltersLength, gotoPage, props],\r\n );\r\n const [alreadySelected, setAlreadySelected] = React.useState[]>(\r\n selectedFlatRows || [],\r\n );\r\n useEffect(() => {\r\n let active =\r\n onSelectedRowsChange !== undefined &&\r\n selectedFlatRows !== undefined &&\r\n selectedFlatRows.length !== alreadySelected.length;\r\n if (active) {\r\n !!onSelectedRowsChange &&\r\n onSelectedRowsChange(\r\n selectedFlatRows\r\n .filter(isRowSelectable || defaultCheckIfRowIsSelectable)\r\n .map(row => row.original),\r\n );\r\n setAlreadySelected(selectedFlatRows);\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n alreadySelected.length,\r\n isRowSelectable,\r\n onSelectedRowsChange,\r\n selectedFlatRows,\r\n ]);\r\n // page change handler\r\n const handlePageChange: (\r\n event: React.MouseEvent | null,\r\n page: number,\r\n ) => void = (e, page) => {\r\n gotoPage(page < 0 ? 0 : page);\r\n };\r\n const handlePageSizeChange = newPageSize => {\r\n // setControlledPageCount(Math.ceil(dataLength / newPageSize));\r\n setPageSize(newPageSize);\r\n };\r\n const filterRef = React.useRef(null);\r\n const handleFilterOpen = React.useCallback(() => {\r\n setFiltersButtonAnchorEl(filterRef.current);\r\n setOpen(!open);\r\n }, [open]);\r\n\r\n const AuthenticatedUser = useSelector(selectAuthenticatedUser);\r\n const customProcesing = useSelector(selectActionTableProcessing);\r\n const globalSearchOpen = useSelector(selectGlobalSearchOpen);\r\n const showGlobalFilter = React.useMemo(() => {\r\n return (\r\n (searchColumns !== undefined &&\r\n searchColumns?.length > 0 &&\r\n !hideFilters) ||\r\n useCustomSearch\r\n );\r\n }, [hideFilters, searchColumns, useCustomSearch]);\r\n\r\n const defaultPageActions: PageActionRenderer2[] = React.useMemo(() => {\r\n const actions: PageActionRenderer2[] = [];\r\n if (compact && props.availableFilters !== undefined && !hideFilters) {\r\n actions.push((dataCount, refresh) => (\r\n \r\n ));\r\n }\r\n if (pageActions !== undefined) {\r\n if (pageActions.length > 0) {\r\n pageActions.forEach(element => {\r\n actions.push(element);\r\n });\r\n }\r\n }\r\n return actions;\r\n }, [\r\n appliedFiltersLength,\r\n compact,\r\n handleFilterOpen,\r\n hideFilters,\r\n pageActions,\r\n props.availableFilters,\r\n ]);\r\n\r\n const handleExportClick = React.useCallback(async () => {\r\n await onExport();\r\n }, [onExport]);\r\n\r\n const rowsPerPageOptions = sortedUniq(\r\n orderBy([5, 10, 25, 100].concat(initialState?.pageSize ?? [])),\r\n );\r\n const handleSortBy = React.useCallback(\r\n (event: any, column: HeaderGroup) => {\r\n const columnId = column.id;\r\n let sortAction = '';\r\n let newSortBy: SortingRule[] = [];\r\n let sortDescFirst = column.sortDescFirst;\r\n let desc = column.isSortedDesc;\r\n const existingSortBy = sortBy.find(d => d.id === columnId);\r\n const existingIndex = sortBy.findIndex(d => d.id === columnId);\r\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null;\r\n if (existingIndex !== sortBy.length - 1 || sortBy.length !== 1) {\r\n sortAction = 'replace';\r\n } else if (existingSortBy) {\r\n sortAction = 'toggle';\r\n } else {\r\n sortAction = 'replace';\r\n }\r\n if (sortAction === 'replace') {\r\n newSortBy = [\r\n {\r\n id: columnId,\r\n desc: hasDescDefined ? desc : sortDescFirst,\r\n },\r\n ];\r\n } else if (sortAction === 'add') {\r\n newSortBy = [\r\n ...sortBy,\r\n {\r\n id: columnId,\r\n desc: hasDescDefined ? desc : sortDescFirst,\r\n },\r\n ];\r\n } else if (sortAction === 'toggle') {\r\n // This flips (or sets) the\r\n newSortBy = sortBy.map(d => {\r\n if (d.id === columnId) {\r\n return {\r\n ...d,\r\n desc: hasDescDefined ? !desc : !existingSortBy?.desc,\r\n };\r\n }\r\n return d;\r\n });\r\n } else if (sortAction === 'remove') {\r\n newSortBy = sortBy.filter(d => d.id !== columnId);\r\n }\r\n // Object.assign({}, sortBy, newSortBy)\r\n setSortBy(newSortBy);\r\n },\r\n [setSortBy, sortBy],\r\n );\r\n React.useEffect(() => {\r\n if (props.allRowsSelected !== undefined) {\r\n toggleAllRowsSelected?.(props.allRowsSelected);\r\n }\r\n }, [props.allRowsSelected, toggleAllRowsSelected]);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const s = React.useMemo(() => searchColumns, []);\r\n const customFilters = useMemoFilters({\r\n appliedFilters: props.appliedFilters,\r\n });\r\n\r\n const sortByActual = React.useMemo(() => JSON.stringify(sortBy), [sortBy]);\r\n React.useEffect(() => {\r\n const state = {\r\n pageIndex,\r\n pageSize,\r\n sortBy: JSON.parse(sortByActual) as SortingRule[],\r\n globalFilter,\r\n customFilters: customFilters,\r\n searchColumns: s,\r\n };\r\n\r\n onChangeState(state);\r\n }, [\r\n onChangeState,\r\n globalFilter,\r\n pageIndex,\r\n pageSize,\r\n\r\n sortByActual,\r\n customFilters,\r\n s,\r\n ]);\r\n\r\n //used to add top message as Alert on the page if needs\r\n const [topMessage, setTopMessage] = React.useState<\r\n AlertContentType | undefined\r\n >(undefined);\r\n const setGlobalMessage = React.useCallback(\r\n (message: Notification) => {\r\n dispatch(globalActions.addNotification(message));\r\n },\r\n [dispatch, globalActions],\r\n );\r\n React.useEffect(() => {\r\n if (ServiceGroupsOptional && !!serviceGroups && serviceGroups.length > 1) {\r\n setGlobalMessage({\r\n key: 'NotRelatedServiceGroups',\r\n message: t(translations.ShowNotRelatedServiceGroups_warning) as string,\r\n variant: 'warning',\r\n autoHideDuration: 30000,\r\n closable: true,\r\n });\r\n } else if (!!topAlertMessage) {\r\n setTopMessage(() => {\r\n return topAlertMessage;\r\n });\r\n }\r\n }, [\r\n ServiceGroupsOptional,\r\n serviceGroups,\r\n setGlobalMessage,\r\n t,\r\n topAlertMessage,\r\n ]);\r\n const [isCards, setIsCards] = useState(\r\n useCardsByDefault || (isMobile && allowCards !== false),\r\n );\r\n useEffect(() => {\r\n setIsCards(useCardsByDefault || (isMobile && allowCards !== false));\r\n }, [allowCards, isMobile, useCardsByDefault]);\r\n useEffect(() => {\r\n if (allowCards) {\r\n onModeChange?.(isCards === true);\r\n }\r\n }, [allowCards, isCards, onModeChange]);\r\n const print = React.useMemo(() => {\r\n return printing !== undefined && printing.printing === true;\r\n }, [printing]);\r\n useEffect(() => {\r\n if (printing !== undefined && print && printing.onLoading !== undefined) {\r\n printing.onLoading(printing.id, loading);\r\n }\r\n }, [loading, print, printing]);\r\n const error = React.useMemo(() => {\r\n return (props.error ?? false) === true;\r\n }, [props.error]);\r\n const baseTableActions: PageActionRenderer2[] = React.useMemo(() => {\r\n const actions: PageActionRenderer2[] = [];\r\n if (screenId && AuthenticatedUser && useConfigurable && !isMobile) {\r\n actions.push(dataCount => (\r\n \r\n ));\r\n }\r\n if (useExport && !isMobile) {\r\n actions.push(dataCount => (\r\n \r\n ));\r\n }\r\n if (\r\n useImportLink &&\r\n !isMobile &&\r\n !compact &&\r\n (importLink || importHandler || importMenuItems)\r\n ) {\r\n actions.push(dataCount => (\r\n {\r\n if (importHandler) {\r\n importHandler();\r\n } else {\r\n if (importLink) {\r\n window.open(toRootedURL(importLink), '_blank');\r\n }\r\n }\r\n }}\r\n />\r\n ));\r\n }\r\n if (allowCards && !isMobile) {\r\n //&& !compact\r\n actions.push(dataCount => (\r\n }\r\n onClick={() => setIsCards(false)}\r\n >\r\n {t(translations.Table)}\r\n \r\n ));\r\n actions.push(dataCount => (\r\n }\r\n onClick={() => setIsCards(true)}\r\n >\r\n {t(translations.Cards)}\r\n \r\n ));\r\n }\r\n return actions;\r\n }, [\r\n AuthenticatedUser,\r\n allowCards,\r\n compact,\r\n exportForImportFilterKey,\r\n getAllFilteredRowsCallback,\r\n handleExportClick,\r\n importHandler,\r\n importLink,\r\n importMenuItems,\r\n isCards,\r\n isMobile,\r\n onDownloadTemplate,\r\n props.onConfigurableColumns,\r\n screenId,\r\n t,\r\n useConfigurable,\r\n useExport,\r\n useExportForImport,\r\n useImportLink,\r\n ]);\r\n const table_id = React.useMemo(\r\n () =>\r\n props.id ??\r\n (screenId === undefined ? undefined : ScreensId[screenId]) ??\r\n 'table',\r\n [props.id, screenId],\r\n );\r\n const tableHead: React.ReactNode = React.useMemo(() => {\r\n let result: React.ReactNode = (\r\n \r\n {\r\n // loop over header groups\r\n headerGroups.map(headerGroup => (\r\n // apply header group props\r\n \r\n {\r\n // loop over headers\r\n headerGroup.headers.map((column, i) => (\r\n // apply header props\r\n // disableSortBy controls the sortability\r\n \r\n !column.disableSortBy &&\r\n column.id !== 'selection' &&\r\n handleSortBy(ev, column)\r\n }\r\n >\r\n \r\n // column.toggleSortBy(\r\n // !column.isSortedDesc,\r\n // undefined,\r\n // )\r\n !column.disableSortBy &&\r\n column.id !== 'selection' &&\r\n handleSortBy(ev, column)\r\n }\r\n // react-table has a unsorted state which is not treated here\r\n direction={column.isSortedDesc ? 'desc' : 'asc'}\r\n >\r\n \r\n {column.render('Header')}\r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n ))\r\n }\r\n \r\n );\r\n return result;\r\n }, [handleSortBy, headerGroups, props.useRowSelect, table_id]);\r\n return (\r\n \r\n \r\n {customProcesing !== undefined &&\r\n customProcesing.processing === true && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n {withToolBar && (\r\n \r\n {print === false &&\r\n defaultPageActions.length > 0 &&\r\n defaultPageActions.map((item, index) => (\r\n \r\n {item(\r\n dataLength,\r\n props.onRefresh,\r\n props.appliedFilters,\r\n selectedArray,\r\n )}\r\n \r\n ))}\r\n {baseTableActionsOnToolbar &&\r\n baseTableActions.length > 0 &&\r\n baseTableActions.map((item, index) => (\r\n \r\n {item(\r\n dataLength,\r\n props.onRefresh,\r\n props.appliedFilters,\r\n selectedArray,\r\n )}\r\n \r\n ))}\r\n \r\n )}\r\n {print === false ? (\r\n <>\r\n {props.subHeader !== undefined && (\r\n
    {props.subHeader}
    \r\n )}\r\n {!isMobile && !compact && topMessage !== undefined && (\r\n
    \r\n \r\n
    \r\n )}\r\n {props.availableFilters !== undefined && !hideFilters && (\r\n setOpen(false)}\r\n onChange={handleFilterChange}\r\n anchorEl={filtersButtonAnchorEl}\r\n appliedFilters={props.appliedFilters ?? []}\r\n compact={compact}\r\n >\r\n setOpen(false)}\r\n autoOpenAddFilter={true}\r\n showAddResetButtons={true} //!isMobile && !compact\r\n savedListSettings={savedListSettings}\r\n />\r\n \r\n )}\r\n {!error &&\r\n (showGlobalFilter || useExport || screenId) &&\r\n !baseTableActionsOnToolbar && (\r\n <>\r\n \r\n 0,\r\n 'table-buttons-left-no-wrap':\r\n (isSomeSelected &&\r\n selectedRowsActions !== undefined &&\r\n selectedRowsActions.length > 0) === false,\r\n })}\r\n >\r\n {isSomeSelected &&\r\n selectedRowsActions !== undefined &&\r\n selectedRowsActions.length > 0 ? (\r\n \r\n ) : (\r\n <>\r\n {(showGlobalSearchIconOnToolbar === true\r\n ? globalSearchOpen\r\n : showGlobalFilter) && (\r\n \r\n )}\r\n {!compact &&\r\n !hideFilters &&\r\n (props.availableFilters ?? []).length > 0 && (\r\n \r\n )}\r\n \r\n )}\r\n {(isMobile || compact) && (\r\n (\r\n \r\n {item(\r\n dataLength,\r\n props.onRefresh,\r\n props.appliedFilters,\r\n selectedArray,\r\n )}\r\n \r\n ))}\r\n >\r\n )}\r\n \r\n {!isMobile && !compact && (\r\n \r\n {!baseTableActionsOnToolbar &&\r\n baseTableActions.length > 0 &&\r\n baseTableActions.map((item, index) => (\r\n \r\n {item(\r\n dataLength,\r\n props.onRefresh,\r\n props.appliedFilters,\r\n selectedArray,\r\n )}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n {!isMobile &&\r\n !compact &&\r\n (props.appliedFilters ?? []).filter(\r\n f => f.value !== undefined,\r\n ).length > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {!!customToolbarSettings &&\r\n customToolbarSettings.useCustomToolbar &&\r\n !!customToolbarSettings.CustomToolbar && (\r\n \r\n )}\r\n\r\n {((!!tabSectionSettings && tabSectionSettings.useTabsSection) ||\r\n (props.useRowSelect && isCards)) && (\r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n {error ? (\r\n \r\n ) : loading ? (\r\n \r\n ) : dataLength === 0 && !loading ? (\r\n \r\n {alwaysShowTableHeader && !isCards && (\r\n
    \r\n \r\n {tableHead}\r\n \r\n \r\n
    \r\n )}\r\n {!!customEmptyTableSettings ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n ) : (\r\n <>\r\n {!isCards ? (\r\n
    \r\n \r\n {tableHead}\r\n \r\n {\r\n // Loop over the table rows\r\n rows.map((row, rowIndex) => {\r\n // Prepare the row for display\r\n\r\n prepareRow(row);\r\n return (\r\n \r\n {row.isGrouped &&\r\n row.subRows?.map(subRow => {\r\n prepareRow(subRow);\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })\r\n }\r\n {summaryRows !== undefined &&\r\n summaryRows.map(summaryRow => {\r\n prepareRow(summaryRow);\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n ) : (\r\n \r\n {rows.map((r, ind) => {\r\n prepareRow(r);\r\n return (\r\n 0\r\n // (!!selectedRowsActions ||\r\n // (!!floatingTabSettings &&\r\n // floatingTabSettings.useFloatingActions ===\r\n // true &&\r\n // !!floatingTabSettings.selectedFloatingActions &&\r\n // floatingTabSettings.selectedFloatingActions\r\n // .length > 0)) &&\r\n // selectedFlatRows.filter(\r\n // isRowSelectable || defaultCheckIfRowIsSelectable,\r\n // ).length > 0\r\n }\r\n viewCheckBox={viewCardsCheck}\r\n useSelect={\r\n !!props.useRowSelect &&\r\n (!!isRowSelectable\r\n ? isRowSelectable(r)\r\n : defaultCheckIfRowIsSelectable(r))\r\n }\r\n primaryAction={props.primaryAction}\r\n row={r}\r\n titleKey={props.titleKey ?? sortBy![0].id}\r\n descriptionKey={props.descriptionKey}\r\n imageSrcKey={props.imageSrcKey}\r\n hasAdditionalActions={\r\n !!rowActions && rowActions.length > 0\r\n }\r\n hasInlineRowActions={\r\n !!inlineRowActions && inlineRowActions.length > 0\r\n }\r\n active={selectedFlatRows?.some(f => f.id === r.id)}\r\n toggleAllRowsSelected={toggleAllRowsSelected}\r\n isRowSelectable={\r\n isRowSelectable || defaultCheckIfRowIsSelectable\r\n }\r\n cardSize={props.cardSize}\r\n cardPosition={cardPosition}\r\n showTitleCell={showTitleCell}\r\n preventInnerClicks={props.preventInnerClicks}\r\n compact={compact}\r\n contentEditable={\r\n !!isContentEditable\r\n ? isContentEditable(r)\r\n : undefined\r\n }\r\n loading={loading}\r\n />\r\n );\r\n })}\r\n \r\n )}\r\n {print === false && enablePagination && (\r\n \r\n \r\n ) : (\r\n <>{t(translations.RowsPerPage)}\r\n )\r\n }\r\n SelectProps={{\r\n label: t(translations.RowsPerPage) as string,\r\n inputProps: {\r\n 'aria-label': `${pageSize || 'pagesize'}`,\r\n },\r\n native: true,\r\n MenuProps: {\r\n variant: 'menu',\r\n anchorOrigin: {\r\n vertical: 'bottom',\r\n horizontal: 'right',\r\n },\r\n getContentAnchorEl: null,\r\n PaperProps: {\r\n style: { width: '160px' },\r\n },\r\n },\r\n 'aria-label': `${pageSize || 'pagesize'}`,\r\n }}\r\n labelDisplayedRows={p =>\r\n t(\r\n isMobile || compact\r\n ? translations.PaginationMobile_Info\r\n : translations.Pagination_Info,\r\n p,\r\n )\r\n }\r\n onChangePage={handlePageChange}\r\n onChangeRowsPerPage={e =>\r\n handlePageSizeChange(Number(e.target.value))\r\n }\r\n ActionsComponent={TablePaginationActions}\r\n />\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n
    \r\n {print === false &&\r\n !!floatingTabSettings &&\r\n floatingTabSettings.useFloatingActions && (\r\n \r\n )}\r\n
    \r\n );\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.printPDF || initialState;\r\n\r\nexport const selectPrintPDF = createSelector([selectSlice], state => state);\r\nexport const selectPrintPDFPrinting = createSelector(\r\n [selectPrintPDF],\r\n state => state.printing,\r\n);\r\nexport const selectPrintPDFSections = createSelector([selectPrintPDF], state =>\r\n state.useSections ? state.Sections : [],\r\n);\r\nexport const selectPrintPDFisLoading = createSelector(\r\n [selectPrintPDF],\r\n state => state.isLoading,\r\n);\r\n","/**\r\n *\r\n * EnumPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { Entity } from 'types/common';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\n\r\nexport interface EnumPickerProps\r\n extends Omit<\r\n BaseOptionsPickerProps>,\r\n 'getOptions' | 'value' | 'onChange'\r\n > {\r\n EnumNamesArray: Array;\r\n value: TKey | null;\r\n onChange: (value: TKey | null) => void;\r\n nameRender?: (value: TKey) => string;\r\n}\r\n\r\nexport function EnumPicker({\r\n value,\r\n onChange,\r\n nameRender,\r\n ...props\r\n}: EnumPickerProps) {\r\n const { t } = useTranslation();\r\n const options = React.useMemo(\r\n () =>\r\n props.EnumNamesArray.map(key => ({\r\n Id: key,\r\n Name: !!nameRender ? nameRender(key) : t(key) ?? key,\r\n })),\r\n [nameRender, props.EnumNamesArray, t],\r\n );\r\n\r\n const getOptions = React.useMemo(\r\n () => GetOptionsFilterFunction(options),\r\n [options],\r\n );\r\n const selectedOption = React.useMemo(\r\n () => options.find(f => f.Id === value) ?? null,\r\n [options, value],\r\n );\r\n const handleChange = (value: Entity | null) => {\r\n onChange?.(value?.Id ?? null);\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\n/**\r\n * Provides a picker with the predefined options based on the array of the enum names\r\n * @param array Array of the Union type enum names\r\n * @returns\r\n */\r\nexport function withEnumOptions(array: Array) {\r\n return (Component: React.ComponentType>) => {\r\n return (props: Omit, 'EnumNamesArray'>) => (\r\n \r\n );\r\n };\r\n}\r\n","import { Entity } from 'types/common';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\n\r\n/**\r\n * Determines user's membership in provided user group.\r\n * Can be used to clear user/usergroup selection in connected selectors (user group)\r\n * @param selectedUser selected user\r\n * @param selectedUserGroup selected user group\r\n * @returns true if the user is a member of the user group\r\n */\r\nexport function isMember(\r\n selectedUser: Entity | null | undefined,\r\n selectedUserGroup: Entity | null | undefined,\r\n) {\r\n const userGroupId = (selectedUser as IUserFilterDto)?.UserGroupId;\r\n const samePrimaryUserGroup = userGroupId === selectedUserGroup?.Id;\r\n const userGroups = (selectedUser as IUserFilterDto)?.UserGroups;\r\n const member = userGroups?.some(ug => ug.Id === selectedUserGroup?.Id);\r\n const result = samePrimaryUserGroup || member;\r\n return result;\r\n}\r\n","import {\r\n InputAdornment,\r\n InputBaseComponentProps,\r\n SelectProps as MuiSelectProps,\r\n} from '@material-ui/core';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport React from 'react';\r\n\r\nimport BaseTextField from '../BaseTextField';\r\n\r\nexport interface SelectProps {\r\n fullWidth?: boolean;\r\n info?: string;\r\n onBlur?: React.FocusEventHandler;\r\n onChange?: React.ChangeEventHandler;\r\n onFocus?: React.FocusEventHandler;\r\n startIcon?: React.ReactNode;\r\n endIcon?: React.ReactNode;\r\n autoFocus?: boolean;\r\n variant?: 'standard' | 'outlined' | 'filled';\r\n label?: React.ReactNode;\r\n SelectProps?: MuiSelectProps;\r\n className?: string;\r\n children?: React.ReactNode;\r\n inputProps?: InputBaseComponentProps;\r\n id?: string;\r\n value?: unknown;\r\n multiple?: boolean;\r\n placeholder?: string;\r\n ariaLabel?: string;\r\n renderValue?: (value: MuiSelectProps['value']) => React.ReactNode;\r\n size?: 'small' | 'medium' | 'large' | 'xl';\r\n}\r\n\r\nexport function Select({\r\n info,\r\n startIcon,\r\n endIcon,\r\n onBlur,\r\n onChange,\r\n onFocus,\r\n autoFocus,\r\n variant,\r\n inputProps,\r\n className,\r\n SelectProps,\r\n children,\r\n id,\r\n placeholder,\r\n ariaLabel,\r\n multiple,\r\n label,\r\n value,\r\n renderValue,\r\n size,\r\n ...props\r\n}: SelectProps) {\r\n const startIconComponent = startIcon && (\r\n {startIcon}\r\n );\r\n const classNames: string[] = [];\r\n if (className) classNames.push(className);\r\n if (startIcon) classNames.push('startIcon');\r\n if (endIcon) classNames.push('endIcon');\r\n\r\n const endIconComponent = (\r\n {endIcon}\r\n );\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n const handleOpen = e => {\r\n setAnchorEl(e.currentTarget);\r\n };\r\n const ITEM_HEIGHT = 56;\r\n const ITEM_PADDING_TOP = 16;\r\n return (\r\n {\r\n if (!Boolean(anchorEl)) {\r\n handleOpen(e);\r\n }\r\n }}\r\n size={size}\r\n SelectProps={{\r\n multiple: multiple,\r\n MenuProps: {\r\n anchorOrigin: {\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n },\r\n transformOrigin: {\r\n vertical: 'top',\r\n horizontal: 'left',\r\n },\r\n autoFocus: false,\r\n getContentAnchorEl: null,\r\n anchorEl: anchorEl,\r\n open: Boolean(anchorEl),\r\n // disablePortal: true,\r\n onClose: (ev, r) => handleClose(),\r\n PaperProps: {\r\n style: {\r\n maxHeight: ITEM_HEIGHT * 5 + ITEM_PADDING_TOP,\r\n },\r\n },\r\n },\r\n displayEmpty: true,\r\n ...SelectProps,\r\n }}\r\n value={value}\r\n onBlur={onBlur}\r\n onChange={onChange}\r\n onFocus={onFocus}\r\n autoFocus={autoFocus}\r\n variant={variant || 'standard'}\r\n placeholder={placeholder}\r\n id={id || 'simple-select'}\r\n inputProps={{\r\n ...inputProps,\r\n 'aria-label': `${\r\n label ? undefined : ariaLabel ? ariaLabel : 'search input'\r\n }`,\r\n }}\r\n InputProps={{\r\n startAdornment: startIcon && startIconComponent,\r\n endAdornment:\r\n (info && ) || (endIcon && endIconComponent),\r\n }}\r\n className={classNames.length > 0 ? classNames.join(' ') : undefined}\r\n {...props}\r\n >\r\n {/* {placeholder && (\r\n \r\n {placeholder}\r\n \r\n )} */}\r\n {children}\r\n \r\n );\r\n\r\n // return (\r\n // \r\n // {/* {props.label && (\r\n // \r\n // {props.label}\r\n // \r\n // )} */}\r\n\r\n // \r\n // ) : (\r\n // \r\n // )\r\n // }\r\n // labelId={props.labelId}\r\n // label={props.label}\r\n // MenuProps={{\r\n // anchorOrigin: {\r\n // vertical: 'bottom',\r\n // horizontal: 'left',\r\n // },\r\n // transformOrigin: {\r\n // vertical: 'top',\r\n // horizontal: 'left',\r\n // },\r\n // getContentAnchorEl: null,\r\n // ...props.MenuProps,\r\n // }}\r\n // {...props}\r\n // >\r\n // {props.children}\r\n // \r\n // \r\n // );\r\n}\r\n","import { ListItem, ListItemText, MenuItem } from '@material-ui/core';\r\nimport { ButtonLabel } from 'app/components/Typography';\r\nimport { useIsMobile } from 'app/hooks/useIsMobile';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectGlobalServiceGroupFilter,\r\n} from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { FilterBox } from '../FilterBox';\r\nimport { savedViewsApi as api } from 'api/savedViewsApi';\r\nimport { ISavedViewDto } from 'api/odata/generated/entities/ISavedViewDto';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { Body } from 'app/components/Typography';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Uppercase } from 'app/components/Typography';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { SavedViewDetailsProps } from 'app/pages/SavedViewsPage/SavedViewPage/Details';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport {\r\n savedViewActions,\r\n useSavedViewSlice,\r\n} from 'app/pages/SavedViewsPage/SavedViewPage/slice';\r\nimport { Select } from 'app/components/BasicInputs/Select';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { routerActions } from 'connected-react-router';\r\nimport { IFilterSettings } from '../IFilterSettings';\r\nimport { Entity } from 'types/common';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { TextControlField } from 'app/components/BasicInputs/TextControlField';\r\nimport { URLSearchParamsCI } from '../../types/FilterParam';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport clsx from 'clsx';\r\n\r\nexport interface SavedListsDropDownProps {\r\n serviceItem: IFilterSettings;\r\n onRemove: (item: IFilterSettings) => void;\r\n onApply: (item: IFilterSettings) => void;\r\n addFilter: (value: IFilterSettings) => void;\r\n hasInVisibleFilters: boolean;\r\n serializedKey: string;\r\n listViewbyAsset?: boolean;\r\n}\r\nexport const SAVEDVIEW_SEARCH_KEY = 'savedview';\r\nfunction SavedLists({\r\n serviceItem,\r\n onRemove,\r\n onApply,\r\n addFilter,\r\n hasInVisibleFilters,\r\n serializedKey,\r\n listViewbyAsset,\r\n}: SavedListsDropDownProps) {\r\n const { checkIsMobile } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n const { t } = useTranslation();\r\n const user = useSelector(selectAuthenticatedUser);\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const savedActions = useSavedViewSlice();\r\n const isAdmin = React.useMemo(() => {\r\n return (\r\n user !== undefined &&\r\n (user.Roles.indexOf(Roles.Administrators) >= 0 ||\r\n user.Roles.indexOf(Roles.GroupAdministrators) >= 0 ||\r\n user.Roles.indexOf(Roles.LabTech) >= 0 ||\r\n user.Roles.indexOf(Roles.EquipmentAdministrator) >= 0)\r\n );\r\n }, [user]);\r\n const selectedServiceGroups = useSelector(selectGlobalServiceGroupFilter);\r\n const location = useLocation();\r\n const fetchView = async (\r\n user: AuthenticatedUser | undefined,\r\n serviceGroups: Entity[] | undefined,\r\n isAdmin: boolean,\r\n ): Promise => {\r\n return api\r\n .getMySavedViews({\r\n user: user,\r\n serviceGroups: selectedServiceGroups,\r\n isAdmin: isAdmin,\r\n onlyMyView: false,\r\n })\r\n .then(data => {\r\n return data;\r\n });\r\n };\r\n const containsText = (text, searchText) =>\r\n text.toLowerCase().includes(searchText.toLowerCase());\r\n\r\n const [myViews, setMyViews] = useAsyncExtendedState([]);\r\n const [fetchViewState, fetchViewPromise] = usePromise(fetchView);\r\n const [input, setInnput] = React.useState('');\r\n const selectedView = React.useMemo(() => {\r\n const search = new URLSearchParamsCI(location.search);\r\n const savedViewId = tryParseInt(search.get(SAVEDVIEW_SEARCH_KEY));\r\n const selectedView = myViews.find(savedView => {\r\n return savedView.Id === savedViewId;\r\n });\r\n return selectedView;\r\n }, [location.search, myViews]);\r\n const displayedOptions = React.useMemo(\r\n () =>\r\n myViews\r\n .filter(option => containsText(option.Name, input))\r\n .sort((a, b) => (a.Name < b.Name ? -1 : a.Name > b.Name ? 1 : 0)),\r\n [input, myViews],\r\n );\r\n const getViewDislpayName = (renderedView: ISavedViewDto): string => {\r\n let groupId = renderedView.Assets[0].ServiceGroupId;\r\n if (renderedView.Assets.some(item => item.ServiceGroupId !== groupId)) {\r\n return renderedView.Name;\r\n } else {\r\n return `${renderedView.Name} (${renderedView.Assets[0].ServiceGroupName})`;\r\n }\r\n };\r\n const selectedChangeLocation = React.useCallback(\r\n (view: ISavedViewDto | undefined) => {\r\n // store selected values for other uses\r\n dispatch(savedViewActions.selectSavedView_Success(view));\r\n\r\n //const originalSearch = new URLSearchParamsCI(location.search);\r\n const currentSearch = new URLSearchParams(location.search);\r\n if (view === undefined) {\r\n currentSearch.delete(SAVEDVIEW_SEARCH_KEY);\r\n } else {\r\n currentSearch.set(SAVEDVIEW_SEARCH_KEY, String(view?.Id));\r\n }\r\n if (!!view && view.Assets.length > 0) {\r\n currentSearch.set(\r\n serializedKey,\r\n view.Assets.map(f => {\r\n if (listViewbyAsset) {\r\n return f.Id;\r\n } else {\r\n return f.ServiceId !== null && f.ServiceId !== undefined\r\n ? f.ServiceId\r\n : undefined;\r\n }\r\n })\r\n .filter(f => f !== undefined)\r\n .join('|'),\r\n );\r\n //addFilter(serviceItem);\r\n if (hasInVisibleFilters) {\r\n onApply({\r\n ...serviceItem,\r\n ...{\r\n value: view.Assets.map(asset => {\r\n return {\r\n Id: listViewbyAsset ? asset.Id : asset.ServiceId || 0,\r\n Name: asset.Name,\r\n Color: asset.Color,\r\n ServiceGroupId: asset.ServiceGroupId,\r\n ServiceTypeId: asset.ServiceTypeId,\r\n } as Entity;\r\n }),\r\n },\r\n ...{ open: false },\r\n });\r\n } else {\r\n addFilter({\r\n ...serviceItem,\r\n ...{\r\n value: view.Assets.map(asset => {\r\n return {\r\n Id: listViewbyAsset ? asset.Id : asset.ServiceId || 0,\r\n Name: asset.Name,\r\n Color: asset.Color,\r\n ServiceGroupId: asset.ServiceGroupId,\r\n ServiceTypeId: asset.ServiceTypeId,\r\n } as Entity;\r\n }),\r\n },\r\n ...{ open: false },\r\n });\r\n }\r\n dispatch(\r\n routerActions.replace({\r\n pathname: location.pathname,\r\n search: currentSearch.toString(),\r\n }),\r\n );\r\n } else {\r\n currentSearch.set(serializedKey, '');\r\n if (hasInVisibleFilters) {\r\n onApply({\r\n ...serviceItem,\r\n ...{\r\n value: undefined,\r\n },\r\n ...{ open: false },\r\n });\r\n }\r\n //onRemove(serviceItem);\r\n dispatch(\r\n routerActions.replace({\r\n pathname: location.pathname,\r\n search: currentSearch.toString(),\r\n }),\r\n );\r\n }\r\n },\r\n [\r\n addFilter,\r\n dispatch,\r\n hasInVisibleFilters,\r\n listViewbyAsset,\r\n location.pathname,\r\n location.search,\r\n onApply,\r\n serializedKey,\r\n serviceItem,\r\n ],\r\n );\r\n React.useEffect(() => {\r\n if (\r\n !fetchViewState.status ||\r\n (fetchViewState.status !== 'pending' &&\r\n fetchViewState.status !== 'resolved')\r\n ) {\r\n setMyViews(fetchViewPromise(user, selectedServiceGroups, isAdmin));\r\n }\r\n\r\n return () => {};\r\n }, [\r\n fetchViewPromise,\r\n fetchViewState,\r\n isAdmin,\r\n selectedServiceGroups,\r\n setMyViews,\r\n user,\r\n ]);\r\n const selectedViewChange = React.useCallback(\r\n e => {\r\n let selected = e.target.value;\r\n if (selected === 'search') {\r\n //e.preventDefault();\r\n //e.stopPropagation();\r\n } else {\r\n if (selected !== 'action') {\r\n let view = myViews.filter(f => f.Id === selected)[0];\r\n dispatch(savedActions.actions.selectMyList(view));\r\n dispatch(savedActions.actions.useSavedView(view?.Id));\r\n //setSelectedView(() => view);\r\n selectedChangeLocation(view);\r\n }\r\n }\r\n },\r\n [myViews, dispatch, savedActions.actions, selectedChangeLocation],\r\n );\r\n const removeSelected = React.useCallback(() => {\r\n dispatch(savedActions.actions.selectMyList(undefined));\r\n //setSelectedView(undefined);\r\n selectedChangeLocation(undefined);\r\n }, [dispatch, savedActions.actions, selectedChangeLocation]);\r\n const openDetailsList = React.useCallback(() => {\r\n let params = {\r\n id: undefined,\r\n useSidePanel: true,\r\n } as SavedViewDetailsProps;\r\n dispatch(\r\n actions.openSidePanel({\r\n type: RenderPageType.SavedViewDetails,\r\n props: params,\r\n }),\r\n );\r\n }, [actions, dispatch]);\r\n return (\r\n \r\n {!isMobile ? (\r\n \r\n {t(translations.InstrumentList)}\r\n \r\n ) : (\r\n
    \r\n \r\n {t(translations.InstrumentList)}\r\n \r\n\r\n {\r\n removeSelected();\r\n }}\r\n aria-label=\"Remove\"\r\n >\r\n \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n {fetchViewState.status === 'resolved' ? (\r\n {\r\n return (\r\n \r\n {displayedOptions.filter(\r\n f => f.Id === (selected as number),\r\n )[0].Name || ''}\r\n \r\n );\r\n }}\r\n >\r\n \r\n {t(translations.PleaseSelectView)}\r\n \r\n \r\n \r\n }\r\n value={input || ''}\r\n size=\"small\"\r\n aria-label={t(translations.SearchFilter)}\r\n inputProps={{ 'aria-label': t(translations.SearchFilter) }}\r\n onChange={e => setInnput(e.target.value)}\r\n autoFocus\r\n fullWidth\r\n />\r\n \r\n \r\n {t(translations.MySavedLists)}\r\n \r\n {displayedOptions\r\n .filter(f => f.UserName === user?.Id)\r\n .map(a => (\r\n \r\n \r\n {getViewDislpayName(a)}\r\n \r\n \r\n ))}\r\n {displayedOptions.filter(\r\n f => f.Shared === true && f.UserName !== user?.Id,\r\n ).length > 0 && (\r\n \r\n {t(translations.SharedLists)}\r\n \r\n )}\r\n\r\n {displayedOptions.filter(\r\n f => f.Shared === true && f.UserName !== user?.Id,\r\n ).length > 0 &&\r\n displayedOptions\r\n .filter(f => f.Shared === true && f.UserName !== user?.Id)\r\n .map(a => (\r\n \r\n \r\n {getViewDislpayName(a)}\r\n \r\n \r\n ))}\r\n {displayedOptions.filter(f => f.UserName === user?.Id).length >\r\n 0 ? (\r\n \r\n }\r\n to={'/myLists'}\r\n >\r\n {t(translations.ManageLists)}\r\n \r\n \r\n ) : (\r\n \r\n }\r\n onClick={() => openDetailsList()}\r\n >\r\n {t(translations.AddSavedView)}\r\n \r\n \r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n {!isMobile && (\r\n {\r\n removeSelected();\r\n }}\r\n aria-label=\"Remove\"\r\n >\r\n \r\n \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport const SavedListsDropDown = React.memo(\r\n SavedLists,\r\n (prevProps, nextProps) => {\r\n const x = props =>\r\n JSON.stringify({\r\n value: props.serviceItem?.value,\r\n });\r\n var result = x(prevProps) === x(nextProps);\r\n\r\n return result;\r\n },\r\n) as typeof SavedLists;\r\n","import styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport clsx from 'clsx';\r\nimport React from 'react';\r\n\r\nexport interface BadgeCounterProps {\r\n count?: number;\r\n customCount?: React.ReactNode;\r\n}\r\nconst Badge = styled('div')(({ theme }) => ({\r\n '&.badgeRoot': {\r\n display: 'flex',\r\n minWidth: '16px',\r\n width: 'auto',\r\n height: '16px',\r\n //padding: '1.5px 0px 2px 0px',\r\n padding: 0,\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n borderRadius: '100px',\r\n background: bookitColors.grayscale.grayComponentsLight,\r\n '&.hasValue': {\r\n background: bookitColors.primary.components,\r\n },\r\n '& .badgeText': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n flex: '1 0 0',\r\n alignSelf: 'stretch',\r\n color: bookitColors.base.white,\r\n textAlign: 'center',\r\n /* Bkt/Tips Regular */\r\n fontFamily: `'Lato', sans-serif`,\r\n fontSize: '10px',\r\n fontStyle: 'normal',\r\n lineHeight: '141%' /* 19.2px */,\r\n fontWeight: 400,\r\n letterSpacing: '0.2px',\r\n paddingInline: '4px',\r\n },\r\n },\r\n}));\r\nexport function BadgeCounter(props: BadgeCounterProps) {\r\n const { count, customCount } = props;\r\n const [value, setValue] = React.useState(count);\r\n React.useEffect(() => {\r\n setValue(count);\r\n }, [count]);\r\n return (\r\n 0) || !!customCount,\r\n })}\r\n >\r\n \r\n {!!customCount ? customCount : value ?? 0}\r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * NumberFieldFilter\r\n *\r\n */\r\nimport { TextControlField } from 'app/components/BasicInputs/TextControlField';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const NumberFieldFilter = (props: IFilterComponentProps) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [value, setValue] = React.useState(null);\r\n const handleChange: React.ChangeEventHandler<\r\n HTMLInputElement | HTMLTextAreaElement\r\n > = event => {\r\n setValue(+event.target.value);\r\n props.onChange(+event.target.value);\r\n };\r\n\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default NumberFieldFilter;\r\n","/**\r\n *\r\n * BuildingPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IBuildingDto } from 'api/odata/generated/entities/IBuildingDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\n\r\nexport type BuildingsUrl = 'base' | 'assetBase' | 'public' | 'locations';\r\nexport interface BuildingPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType?: BuildingsUrl;\r\n withoutServiceGroups?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/Buildings';\r\nconst assetBuildingUrl = '/api/odata/v4/Buildings/BuildingsFilter';\r\nconst publicBuildingUrl = '/api/odata/v4/Buildings/PublicBuildingsFilter';\r\nconst LocationsUrl = '/api/odata/v4/Locations';\r\nexport const initBuildingData = (\r\n initval: string | undefined,\r\n sourceUrl?: BuildingsUrl,\r\n withoutServiceGroups?: boolean,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IBuildingDto[]);\r\n });\r\n } else {\r\n if (sourceUrl === 'locations') {\r\n withoutServiceGroups = true;\r\n }\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select:\r\n withoutServiceGroups === undefined || withoutServiceGroups === false\r\n ? 'Id,Name,ServiceGroups'\r\n : 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n sourceUrl === 'public'\r\n ? publicBuildingUrl\r\n : sourceUrl === 'assetBase'\r\n ? assetBuildingUrl\r\n : sourceUrl === 'locations'\r\n ? LocationsUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as IBuildingDto[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n isAuthenticated?: boolean,\r\n urlType?: BuildingsUrl,\r\n withoutServiceGroups?: boolean,\r\n) => {\r\n if (urlType === 'locations') {\r\n withoutServiceGroups = true;\r\n }\r\n const sourceUrl =\r\n urlType === 'public' || !isAuthenticated\r\n ? publicBuildingUrl\r\n : urlType === 'assetBase'\r\n ? assetBuildingUrl\r\n : urlType === 'locations'\r\n ? LocationsUrl\r\n : url;\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select:\r\n withoutServiceGroups === undefined || withoutServiceGroups === false\r\n ? ['Id', 'Name', 'ServiceGroups']\r\n : ['Id', 'Name'],\r\n globalServiceGroupFilter:\r\n (withoutServiceGroups === undefined || withoutServiceGroups === false) &&\r\n !!globalServiceGroupFilter &&\r\n globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n 'Id',\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function BuildingPicker(props: BuildingPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n isAuth ? globalServiceGroupFilter || [] : [],\r\n isAuth,\r\n props.urlType,\r\n props.withoutServiceGroups,\r\n );\r\n return (\r\n \r\n );\r\n}\r\nexport const BuildingByServiceGroupFilter = (\r\n value: FilterValueType,\r\n fieldName: any,\r\n) => {\r\n if (value !== undefined && value !== null) {\r\n if (fieldName === 'ServiceGroupId') {\r\n return [\r\n `${new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n [(value as Identifiable).Id],\r\n 'Id',\r\n ).toString()}`,\r\n ];\r\n }\r\n }\r\n return [];\r\n};\r\n","/**\r\n *\r\n * CampusPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ICampusDto } from 'api/odata/generated/entities/ICampusDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\n\r\nexport type CampusUrl = 'base' | 'assetBase' | 'public' | 'locations';\r\nexport interface CampusPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType?: CampusUrl;\r\n withoutServiceGroups?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/Campuses';\r\nconst assetCampusUrl = '/api/odata/v4/Campuses/CampusAssetFilter';\r\nconst publicCampusUrl = '/api/odata/v4/Campuses/PublicCampusAssetFilter';\r\nconst locationsUrl = '/api/odata/v4/Campuses';\r\nexport const initCampusData = (\r\n initval: string | undefined,\r\n sourceUrl?: CampusUrl,\r\n withoutServiceGroups?: boolean,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as ICampusDto[]);\r\n });\r\n } else {\r\n if (sourceUrl === 'locations') {\r\n withoutServiceGroups = true;\r\n }\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select:\r\n withoutServiceGroups === undefined || withoutServiceGroups === false\r\n ? 'Id,Name,ServiceGroups'\r\n : 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n sourceUrl === 'public'\r\n ? publicCampusUrl\r\n : sourceUrl === 'assetBase'\r\n ? assetCampusUrl\r\n : sourceUrl === 'locations'\r\n ? locationsUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as ICampusDto[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n isAuthenticated?: boolean,\r\n urlType?: CampusUrl,\r\n withoutServiceGroups?: boolean,\r\n) => {\r\n if (urlType === 'locations') {\r\n withoutServiceGroups = true;\r\n }\r\n const sourceUrl =\r\n urlType === 'public' || !isAuthenticated\r\n ? publicCampusUrl\r\n : urlType === 'assetBase'\r\n ? assetCampusUrl\r\n : urlType === 'locations'\r\n ? locationsUrl\r\n : url;\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select:\r\n withoutServiceGroups === undefined || withoutServiceGroups === false\r\n ? ['Id', 'Name', 'ServiceGroups']\r\n : ['Id', 'Name'],\r\n globalServiceGroupFilter:\r\n (withoutServiceGroups === undefined || withoutServiceGroups === false) &&\r\n !!globalServiceGroupFilter &&\r\n globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function CampusPicker(props: CampusPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n isAuth ? globalServiceGroupFilter || [] : [],\r\n isAuth,\r\n props.urlType,\r\n props.withoutServiceGroups,\r\n );\r\n return (\r\n \r\n );\r\n}\r\nexport const CampusByServiceGroupFilter = (\r\n value: FilterValueType,\r\n fieldName: any,\r\n) => {\r\n if (value !== undefined && value !== null) {\r\n if (fieldName === 'ServiceGroupId') {\r\n return [\r\n `${new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.In,\r\n (value as Identifiable).Id,\r\n ).toString()}`,\r\n ];\r\n }\r\n }\r\n return [];\r\n};\r\n","/**\r\n *\r\n * RoomPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IRoomDto } from 'api/odata/generated/entities/IRoomDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\n\r\nexport type RoomsUrl = 'base' | 'assetBase' | 'public' | 'locations';\r\nexport interface RoomPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType?: RoomsUrl;\r\n selectArray?: Array;\r\n withoutServiceGroups?: boolean;\r\n}\r\nexport const convertRoomWithBuildingName = (\r\n Name: string,\r\n BuildingName: string,\r\n): string => {\r\n let name = BuildingName !== '' ? `${Name} - ${BuildingName}` : Name;\r\n return name;\r\n};\r\nexport const modifyRoomName = (room: IRoomDto | null): IRoomDto | null => {\r\n if (room !== null && room !== undefined) {\r\n return Object.assign(\r\n {},\r\n {\r\n Name: convertRoomWithBuildingName(room.Name, room.BuildingName ?? ''),\r\n },\r\n room,\r\n );\r\n }\r\n return null;\r\n};\r\nconst url = '/api/odata/v4/Rooms/GetRoomsFilter';\r\nconst publicUrl = '/api/odata/v4/Rooms/GetPublicAssetsRoomsFilter';\r\nconst assetRoomUrl = '/api/odata/v4/Rooms/GetAssetsRoomsFilter';\r\nconst LocationsUrl = '/api/odata/v4/LocationsBuilding';\r\nexport const initRoomData = (\r\n initval: string | undefined,\r\n sourceUrl?: RoomsUrl,\r\n withoutServiceGroups?: boolean,\r\n selectArray?: Array,\r\n): Promise => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IRoomDto[]);\r\n });\r\n } else {\r\n if (sourceUrl === 'locations') {\r\n withoutServiceGroups = true;\r\n }\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: !!selectArray\r\n ? selectArray.join(',')\r\n : (withoutServiceGroups === undefined ||\r\n withoutServiceGroups === false) &&\r\n !!sourceUrl &&\r\n sourceUrl !== 'base'\r\n ? 'Id,Name,BuildingId,BuildingName,ServiceGroupsIds'\r\n : 'Id,Name,BuildingId,BuildingName',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n sourceUrl === 'public'\r\n ? publicUrl\r\n : sourceUrl === 'assetBase'\r\n ? assetRoomUrl\r\n : sourceUrl === 'locations'\r\n ? LocationsUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as IRoomDto[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n isAuthenticated?: boolean,\r\n urlType?: RoomsUrl,\r\n withoutServiceGroups?: boolean,\r\n selectArray?: Array,\r\n) => {\r\n if (urlType === 'locations') {\r\n withoutServiceGroups = true;\r\n }\r\n const sourceUrl =\r\n urlType === 'public' || !isAuthenticated\r\n ? publicUrl\r\n : urlType === 'assetBase'\r\n ? assetRoomUrl\r\n : urlType === 'locations'\r\n ? LocationsUrl\r\n : url;\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select:\r\n selectArray ??\r\n ((withoutServiceGroups === undefined || withoutServiceGroups === false) &&\r\n !!urlType &&\r\n urlType !== 'base'\r\n ? ['Id', 'Name', 'BuildingId', 'BuildingName', 'ServiceGroupsIds']\r\n : ['Id', 'Name', 'BuildingId', 'BuildingName']),\r\n maxTop: 100,\r\n globalServiceGroupFilter:\r\n (withoutServiceGroups === undefined || withoutServiceGroups === false) &&\r\n !!globalServiceGroupFilter &&\r\n globalServiceGroupFilter.length > 0 &&\r\n !!urlType &&\r\n urlType !== 'base'\r\n ? [\r\n new Condition(\r\n 'ServiceGroupsIds',\r\n ODataOperators.HasNoAny,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n new Condition(\r\n 'ServiceGroupsIds',\r\n ODataOperators.AnyIn,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n isOptionalServiceGroup: true,\r\n });\r\n};\r\n\r\nexport function RoomPicker(props: RoomPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n isAuth ? globalServiceGroupFilter || [] : [],\r\n isAuth,\r\n props.urlType,\r\n props.withoutServiceGroups,\r\n props.selectArray,\r\n );\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const RoomByBuildingFilter = (\r\n value: FilterValueType,\r\n fieldName: any,\r\n) => {\r\n if (value !== undefined && value !== null) {\r\n if (fieldName === 'BuildingId') {\r\n return [\r\n `${new Condition(\r\n 'BuildingId',\r\n ODataOperators.Equals,\r\n (value as Identifiable).Id,\r\n ).toString()}`,\r\n ];\r\n }\r\n if (fieldName === 'ServiceGroupId') {\r\n return [\r\n `${new Condition(\r\n 'ServiceGroupsIds',\r\n ODataOperators.AnyIn,\r\n (value as Identifiable).Id,\r\n ).toString()}`,\r\n ];\r\n }\r\n }\r\n return [];\r\n};\r\n","import { useAppSettingsSlice } from 'app/slice';\r\nimport { useCallback } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { IResponseType } from 'types/ResponseType';\r\n\r\nexport const useResponseModel = () => {\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const res = useCallback(\r\n (result: IResponseType) => {\r\n if (result.ErrorMessages.length > 0) {\r\n dispatch(\r\n actions.addNotifications(\r\n result.ErrorMessages.map(e => {\r\n return { variant: 'error', message: e };\r\n }),\r\n ),\r\n );\r\n }\r\n if (result.WarningMessages.length > 0) {\r\n dispatch(\r\n actions.addNotifications(\r\n result.WarningMessages.map(e => {\r\n return { variant: 'warning', message: e };\r\n }),\r\n ),\r\n );\r\n }\r\n if (result.SuccessMessages.length > 0) {\r\n dispatch(\r\n actions.addNotifications(\r\n result.SuccessMessages.map(e => {\r\n return { variant: 'success', message: e };\r\n }),\r\n ),\r\n );\r\n }\r\n },\r\n [dispatch, actions],\r\n );\r\n return res;\r\n};\r\n\r\nexport const responseFailed = (res: IResponseType) => {\r\n return res.ErrorMessages.length > 0;\r\n};\r\n","export interface ImportData {\r\n ScreenId: number;\r\n Columns: ImportColumn[];\r\n AddOnly: boolean;\r\n BudgetType?: number;\r\n Iad?: ImportAdditionalData;\r\n ImportAssetImageFiles: boolean;\r\n AutoGenerateAssetNamesBasedOn?: number;\r\n UpdateQRCode: boolean;\r\n EquipmentId: number | null;\r\n AccServiceId: number | null;\r\n CustomFormId: number | null;\r\n}\r\nexport interface ImportReservationData {\r\n EquipmentId: number | null;\r\n AccServiceId: number | null;\r\n CustomFormId: number | null;\r\n}\r\nexport enum ImportAdditionalData {\r\n none,\r\n AssetRanges,\r\n OfflineServiceTypes,\r\n SampleTypes,\r\n}\r\nexport interface ImportColumn {\r\n Include: boolean;\r\n ExcelName: string | undefined;\r\n Name: string | undefined;\r\n}\r\n\r\nexport enum ImportResult {\r\n success,\r\n error,\r\n failed,\r\n default,\r\n}\r\n\r\nexport interface ImportResponseData {\r\n Result: number;\r\n Rows: number;\r\n InsertedRows: number;\r\n UpdatedRows: number;\r\n Errors: number;\r\n}\r\n\r\nexport interface TemplateColumns {\r\n Id: string;\r\n DisplayName: string;\r\n}\r\n","/**\r\n *\r\n * MultiSelectBasicPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n AutocompleteMultiPicker,\r\n AutocompleteMultiPickerProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPicker';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface BaseOptionsMultiPickerProps\r\n extends Omit, 'loadData'> {\r\n getOptions: (searchTerm: string | null) => Entity[];\r\n}\r\n\r\nexport function BaseOptionsMultiPicker(\r\n props: BaseOptionsMultiPickerProps,\r\n) {\r\n const { getOptions, ...other } = props;\r\n const loadData = async (searchTerm: string | null): Promise =>\r\n new Promise(resolve => {\r\n const opts = getOptions(searchTerm);\r\n resolve(opts);\r\n });\r\n return ;\r\n}\r\n","export const calendarPageDefaultPath = '/schedule';\r\nexport const calendarPageFullPath = `${calendarPageDefaultPath}/:type`;\r\nexport const CalendarPagePaths = [\r\n calendarPageFullPath,\r\n calendarPageDefaultPath,\r\n];\r\n","/**\r\n *\r\n * OnlineServicePicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nexport type ServiceUrl = 'base' | 'admin' | 'reserved';\r\nexport interface OnlineServicePickerProps\r\n extends Omit, 'loadData'> {\r\n inputProps?: InputBaseComponentProps;\r\n urlType?: ServiceUrl;\r\n serviceGroups?: Entity[];\r\n}\r\n\r\nconst url = '/api/odata/v4/ServiceFilter';\r\nconst adminUrl = '/api/odata/v4/ServiceFilter/AdminEquipments';\r\nconst reservableUrl = '/api/odata/v4/ServiceFilter/ReservableEquipments';\r\n\r\nexport const initOnlineServiceData = (\r\n initval: string | undefined,\r\n sourceurl?: ServiceUrl,\r\n serviceGroups?: Identifiable[],\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n let foo: string | undefined = undefined;\r\n const id = parseInt(initval);\r\n const predicates: string | Condition[] = [];\r\n if (!isNaN(id)) {\r\n predicates.push(new Condition('Id', ODataOperators.Equals, id));\r\n }\r\n // apply only global service group filter related items filter\r\n // items not related to one of the selected cores are discarded\r\n if (serviceGroups !== undefined && serviceGroups?.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n serviceGroups.map(f => f.Id),\r\n ),\r\n );\r\n }\r\n foo = predicates.map(f => f.toString()).join(' and ');\r\n\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n $expand: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: foo,\r\n $skip: 0,\r\n $top: 10,\r\n $expand: 'WorkingHours',\r\n };\r\n let initUrl =\r\n sourceurl === undefined\r\n ? url\r\n : sourceurl === 'reserved'\r\n ? reservableUrl\r\n : sourceurl === 'admin'\r\n ? adminUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n urlType: ServiceUrl | undefined,\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url:\r\n urlType === 'reserved'\r\n ? reservableUrl\r\n : urlType === 'admin'\r\n ? adminUrl\r\n : url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'ServiceGroupId',\r\n 'ServiceTypeId',\r\n 'UseServiceGroupTrainingLevels',\r\n 'Color',\r\n 'ImageName',\r\n 'ServiceGroupName',\r\n 'RestrictDurationUnitsAmount',\r\n 'RestrictDurationUnitType',\r\n 'DefaultDuration',\r\n 'ForceFullDayReservations',\r\n 'AssemblyId',\r\n 'TopAssemblyId',\r\n 'AssetCatId',\r\n 'AssetCatName',\r\n 'RestrictReservationToTimeSlots',\r\n 'MinOrderHours',\r\n 'WorkingHours',\r\n ],\r\n expand: 'WorkingHours',\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n\r\nexport function OnlineServicePicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n urlType,\r\n serviceGroups,\r\n ...props\r\n}: OnlineServicePickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const groups = serviceGroups?.length\r\n ? serviceGroups\r\n : globalServiceGroupFilter;\r\n const innerLoadData = loadData(predicates, groups || [], urlType);\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AssetPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity } from 'types/common';\r\nimport { avTypes, getAvFilter } from '../../MultiSelectPickers/AssetsPicker';\r\n\r\nexport interface AssetPickerProps\r\n extends Omit, 'loadData'> {\r\n restrictByAvType?: avTypes;\r\n /**\r\n * Option to filter admin permissions. If set to true will return only the assets authenticated user is an admin of\r\n */\r\n admin?: boolean;\r\n /**\r\n * Fetches only Active assets/instruments if this property is set to true\r\n */\r\n showOnlyActiveAssets?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/AssetNames';\r\nexport const initAssetData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n admin?: boolean,\r\n) => {\r\n const url =\r\n admin === true\r\n ? '/api/odata/v4/AssetNames/AdminAssets'\r\n : '/api/odata/v4/AssetNames';\r\n return getAutoCompleteLoadDataFn({\r\n url: url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'AssetCatId',\r\n 'Availability',\r\n // BookableAsset is not mapped (AssetNamesController)\r\n // 'BookableAsset',\r\n 'Image',\r\n 'ServiceGroupId',\r\n 'ServiceId',\r\n 'ServiceTypeId',\r\n 'ServiceGroupName',\r\n 'ServiceGroupAssetId',\r\n ],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function AssetPicker({\r\n predicates,\r\n restrictByAvType,\r\n showOnlyActiveAssets,\r\n admin,\r\n ...props\r\n}: AssetPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n let avFilter =\r\n restrictByAvType === undefined ? undefined : getAvFilter(restrictByAvType);\r\n\r\n let filters =\r\n avFilter !== undefined\r\n ? predicates !== undefined\r\n ? [...predicates, avFilter]\r\n : [avFilter]\r\n : predicates;\r\n if (showOnlyActiveAssets === true) {\r\n filters?.push(\r\n new Condition('Active', ODataOperators.Equals, true),\r\n );\r\n }\r\n const innerLoadData = loadData(\r\n filters,\r\n globalServiceGroupFilter || [],\r\n admin,\r\n );\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import { Switch, SwitchProps } from '@material-ui/core';\r\n\r\nexport interface ToggleProps extends SwitchProps {\r\n danger?: boolean;\r\n label?: string;\r\n}\r\n\r\nexport function Toggle(props: ToggleProps) {\r\n const {\r\n color = 'primary',\r\n label,\r\n danger,\r\n size = 'medium',\r\n className,\r\n ...other\r\n } = props;\r\n return (\r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport FormControl from '../Forms/FormControls/FormControl';\r\nimport FormControlLabel from '../Forms/FormControls/FormControlLabel';\r\nimport FormHelperText from '../Forms/FormControls/FormHelperText';\r\nimport FormGroup from '../Forms/FormControls/FormGroup';\r\nimport { Toggle, ToggleProps } from '../BasicInputs/Toggle';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { capitalize } from 'lodash';\r\nimport { FormNumberField } from '../Forms/FormNumberField';\r\n\r\nexport interface BasicToggleProps\r\n extends Omit {\r\n label?: string;\r\n error?: string;\r\n helperText?: string;\r\n info?: React.ReactNode;\r\n fullWidth?: boolean;\r\n name?: string;\r\n boxed?: boolean;\r\n boldLabel?: boolean;\r\n shortView?: boolean;\r\n maxLabelWidth?: string | number;\r\n onChange?: (\r\n value: boolean,\r\n event: React.ChangeEvent,\r\n ) => void;\r\n inputProps?: any;\r\n inputName?: string;\r\n inputId?: string;\r\n inputMode?:\r\n | 'none'\r\n | 'text'\r\n | 'tel'\r\n | 'url'\r\n | 'email'\r\n | 'numeric'\r\n | 'decimal'\r\n | 'search';\r\n useInputField?: boolean;\r\n inputAfterLabel?: React.ReactNode;\r\n onInputFocus?: React.FocusEventHandler<\r\n HTMLInputElement | HTMLTextAreaElement\r\n >;\r\n}\r\n\r\nexport function BasicToggle(props: BasicToggleProps) {\r\n const {\r\n label,\r\n error,\r\n helperText,\r\n info,\r\n name,\r\n onChange,\r\n boxed,\r\n fullWidth,\r\n boldLabel,\r\n maxLabelWidth = 25,\r\n size,\r\n useInputField,\r\n inputProps,\r\n inputName,\r\n inputId,\r\n inputMode,\r\n inputAfterLabel,\r\n shortView,\r\n onInputFocus,\r\n ...other\r\n } = props;\r\n const [isChecked, setIsChecked] = React.useState(\r\n props.checked ?? false,\r\n );\r\n const sizeClass = `toggleSize${capitalize(size ?? 'medium')}`;\r\n const handleChange = (event: React.ChangeEvent) => {\r\n const value = event.target.checked as boolean;\r\n if (onChange !== undefined) {\r\n onChange(value, event);\r\n }\r\n setIsChecked(value);\r\n };\r\n const withInfoLabel = React.useMemo(() => {\r\n return (\r\n !!label && label.length > maxLabelWidth && !fullWidth && !useInputField\r\n );\r\n }, [fullWidth, label, maxLabelWidth, useInputField]);\r\n const Label = withInfoLabel ? (\r\n {label}}>\r\n {label}\r\n \r\n ) : (\r\n \r\n {label}\r\n {useInputField && (\r\n \r\n \r\n {!!inputAfterLabel && {inputAfterLabel}}\r\n \r\n )}\r\n \r\n );\r\n // const baseLabelStyle: React.CSSProperties = React.useMemo(() => {\r\n // return withInfoLabel\r\n // ? { maxWidth: `${maxLabelWidth}ch`, gap: 12 }\r\n // : { gap: 12 };\r\n // }, [maxLabelWidth, withInfoLabel]);\r\n return (\r\n \r\n \r\n \r\n }\r\n />\r\n {info && }\r\n \r\n {((!!error && error !== '') || (!!helperText && helperText !== '')) && (\r\n \r\n {error || helperText}\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { put, select, takeLatest } from 'redux-saga/effects';\r\nimport { PrintPDFItem } from './types';\r\nimport { printPDFActions as actions } from '.';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { selectPrintPDFSections } from './selectors';\r\n\r\nfunction* doUpdateSections(action: PayloadAction) {}\r\nfunction* doSaveSections(action: PayloadAction) {\r\n const sections: PrintPDFItem[] = yield select(selectPrintPDFSections);\r\n const value = sections.filter(s => s.checked === true).map(f => f.id);\r\n const user = yield select(selectAuthenticatedUser);\r\n yield put(\r\n appSettingsActions.updateUserProfileSettings({\r\n key: '/RequestSamples.pdf',\r\n model: {\r\n UserName: user.Id,\r\n Key: '/RequestSamples.pdf',\r\n Value: value.join(','),\r\n Id: 0,\r\n AdGroup: null,\r\n DefaultGroups: null,\r\n Enabled: true,\r\n IsMultiple: null,\r\n Name: null,\r\n Selected: false,\r\n StaffEnabled: false,\r\n },\r\n }),\r\n );\r\n}\r\nexport function* printPDFSaga() {\r\n yield takeLatest(actions.updateSections.type, doUpdateSections);\r\n yield takeLatest(actions.saveSections.type, doSaveSections);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { printPDFSaga } from './saga';\r\nimport { PrintPDFItem, PrintPDFState } from './types';\r\n\r\nexport const initialState: PrintPDFState = {\r\n printing: false,\r\n isLoading: undefined,\r\n useSections: false,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'printPDF',\r\n initialState,\r\n reducers: {\r\n setPrinting(state, action: PayloadAction) {\r\n state.printing = action.payload;\r\n },\r\n setUseSections(state, action: PayloadAction) {\r\n state.useSections = action.payload;\r\n },\r\n updateSections(state, action: PayloadAction) {\r\n state.Sections = action.payload;\r\n },\r\n updateSection(\r\n state,\r\n action: PayloadAction<{\r\n id: string;\r\n checked: boolean;\r\n }>,\r\n ) {\r\n if (state.Sections !== undefined) {\r\n const section = state.Sections.find(f => f.id === action.payload.id);\r\n if (section !== undefined) {\r\n section.checked = action.payload.checked;\r\n }\r\n }\r\n },\r\n saveSections(state, action: PayloadAction) {},\r\n clearLoading(state, action: PayloadAction) {\r\n state.tables = undefined;\r\n },\r\n setLoading(state, action: PayloadAction<{ id: string; loading: boolean }>) {\r\n if (state.tables === undefined) {\r\n state.tables = [action.payload];\r\n state.isLoading = action.payload.loading;\r\n } else {\r\n const table = state.tables.find(t => t.id === action.payload.id);\r\n if (table !== undefined) {\r\n table.loading = action.payload.loading;\r\n } else {\r\n state.tables.push(action.payload);\r\n }\r\n state.isLoading = state.tables.some(t => t.loading === true);\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: printPDFActions } = slice;\r\n\r\nexport const usePrintPDFSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: printPDFSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import * as React from 'react';\r\nimport { getIn } from 'formik';\r\nimport { useContext, createContext, ReactNode } from 'react';\r\n\r\ninterface IRequiredFields {\r\n requiredFields: Record | undefined;\r\n}\r\nconst RequiredFieldsContext: React.Context =\r\n createContext({\r\n requiredFields: undefined,\r\n });\r\n/**\r\n * Usage example:\r\n * \r\n * \r\n * Form fields/form content\r\n * \r\n * \r\n * @param props Yup schema + children\r\n * @returns Validation schema provider\r\n */\r\nexport const ValidationSchemaProvider = (props: {\r\n schema: any;\r\n children: ReactNode;\r\n skipValidation?: boolean;\r\n}) => {\r\n const { schema, children, skipValidation } = props;\r\n\r\n const requiredFields = {} as Record;\r\n const fields = schema.describe().fields;\r\n for (const key in fields) {\r\n if (fields.hasOwnProperty(key)) {\r\n const fieldValidationSchema = fields ? getIn(fields, key) : false;\r\n const tests =\r\n fieldValidationSchema && !skipValidation\r\n ? fieldValidationSchema.tests\r\n : false;\r\n requiredFields[key] = tests\r\n ? !!tests.find(test => test.name === 'required')\r\n : false;\r\n }\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n/**\r\n * Provides access to required setting of a field in Formik+Yup form\r\n * Usage example:\r\n * const isRequired = useIsRequired('email');\r\n * {\r\n const { requiredFields } = useContext(RequiredFieldsContext);\r\n return requiredFields?.[name];\r\n};\r\nexport const useRequiredFields = () => {\r\n const { requiredFields } = useContext(RequiredFieldsContext);\r\n\r\n return {\r\n requiredFields,\r\n };\r\n};\r\n","/**\r\n * Bookit.Data.ServiceGroupRegistrationStatus\r\n */\r\nexport enum ServiceGroupRegistrationStatus {\r\n Approved = 0,\r\n Rejected = 1,\r\n Pending = 2,\r\n}\r\n","/**\r\n *\r\n * AssetsPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport {\r\n AssetsPicker,\r\n avTypes,\r\n} from '../pickers/MultiSelectPickers/AssetsPicker/index';\r\n\r\nexport const FormAssetsPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig[] | null> &\r\n IFieldProps & {\r\n restrictByAvType?: avTypes;\r\n admin?: boolean;\r\n showOnlyActiveAssets?: boolean;\r\n withoutServiceGroups?: boolean;\r\n }) => {\r\n const [field, meta, helpers] = useField[] | null>(props);\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n restrictByAvType={props.restrictByAvType}\r\n admin={props.admin}\r\n showOnlyActiveAssets={props.showOnlyActiveAssets}\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n required={props.required}\r\n withoutServiceGroups={props.withoutServiceGroups}\r\n />\r\n );\r\n};\r\n","export enum ReferenceType {\r\n AllReferences = 0,\r\n Reservation = 1,\r\n Usage = 2,\r\n OfflineService = 3,\r\n ServiceRequest = 4,\r\n Subscription = 5,\r\n}\r\n","import { TopActionButton } from 'app/components/BasicButtons/TopActionButton';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { GetRawValue } from 'app/components/BasicTable/types/FilterParam';\r\n\r\nimport { AssetsSelectionProps } from 'app/pages/MyAssetsPage/AssetsSelection/AssetsSelection';\r\nimport { PageTopActionsProps } from '../type';\r\n\r\nexport function AddConsumable(\r\n props: PageTopActionsProps & { services: number[] },\r\n) {\r\n const location = useLocation();\r\n //const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const { t } = useTranslation();\r\n const {\r\n size,\r\n text,\r\n variant,\r\n icon,\r\n services,\r\n disabled,\r\n compact = true,\r\n } = props;\r\n\r\n return (\r\n {\r\n let selParams = {\r\n useSidePanel: true,\r\n actionType: 'OfflineService',\r\n offTypeIds:\r\n services.length > 0\r\n ? services.join(',')\r\n : GetRawValue(new URLSearchParams(location.search), 'stid'),\r\n } as AssetsSelectionProps;\r\n dispatch(\r\n actions.openSidePanel({\r\n type: RenderPageType.AssetsSelection,\r\n props: selParams,\r\n expanded: false,\r\n }),\r\n );\r\n }}\r\n />\r\n );\r\n}\r\nexport function AddCoverConsumable(\r\n props: PageTopActionsProps & {\r\n services: number[];\r\n onAddClick: (services: number[]) => void;\r\n },\r\n) {\r\n const { t } = useTranslation();\r\n const {\r\n size,\r\n text,\r\n variant,\r\n icon,\r\n services,\r\n disabled,\r\n onAddClick,\r\n compact = true,\r\n } = props;\r\n\r\n return (\r\n onAddClick(services)}\r\n />\r\n );\r\n}\r\n","import { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { AddCoverConsumable } from 'app/pages/Actions/PageTopActions/AddConsumable';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport {\r\n selectBarcodeScanned,\r\n selectSelectedServiceType,\r\n} from '../slice/selectors';\r\nimport * as React from 'react';\r\nimport { useOfflineServiceStateSlice } from '../slice';\r\nimport { loadOfflineServiceData } from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { ReportedFrom } from '../slice/types';\r\n\r\nexport interface AddServiceFromSelectionProps {\r\n onAddClick: (services: number[]) => void;\r\n getServiceTypes?: (\r\n searchTerm: string | null,\r\n predicates: (string | Condition)[] | undefined,\r\n ) => Promise;\r\n addServices: (serviceType: IOfflineServiceFilterDto[]) => void;\r\n removeServices: (services: IOtherServices[]) => void;\r\n addAndRemoveServices: (\r\n serviceType: IOfflineServiceFilterDto[],\r\n services: IOtherServices[],\r\n ) => void;\r\n selected: IOtherServices[];\r\n reportFrom?: ReportedFrom;\r\n disabled?: boolean;\r\n fullWidth?: boolean;\r\n buttonName?: string;\r\n}\r\nexport function AddServiceFromSelection(props: AddServiceFromSelectionProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n const {\r\n getServiceTypes,\r\n addServices,\r\n selected,\r\n disabled,\r\n onAddClick,\r\n removeServices,\r\n addAndRemoveServices,\r\n buttonName,\r\n fullWidth,\r\n } = props;\r\n const newSelectedServices = useSelector(selectSelectedServiceType);\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const [updated, setUpdated] = React.useState(undefined);\r\n const isBarcodeScanned = useSelector(selectBarcodeScanned);\r\n const fetchServiceTypes = async (): Promise => {\r\n const filter: (string | Condition)[] = [];\r\n if (!!selected && selected.length > 0) {\r\n filter.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Excludes,\r\n selected.map(s => s.ServiceTypeID),\r\n ),\r\n );\r\n }\r\n if (!!newSelectedServices && newSelectedServices.length > 0) {\r\n filter.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n newSelectedServices.map(s => s),\r\n ),\r\n );\r\n }\r\n return new Promise(async (resolve, reject) => {\r\n if (!!getServiceTypes) {\r\n try {\r\n const data = await getServiceTypes(null, filter);\r\n resolve(data);\r\n } catch {\r\n resolve([]);\r\n }\r\n } else {\r\n try {\r\n const data = await loadOfflineServiceData(\r\n filter,\r\n 'relatedServices',\r\n globalServiceGroupFilter || [],\r\n undefined,\r\n 'InventoryBatches,RelatedReferences',\r\n )(null, undefined);\r\n resolve(data.value);\r\n } catch (error) {\r\n resolve([]);\r\n }\r\n }\r\n });\r\n };\r\n const [serviceTypes, setServiceTypes] = useAsyncExtendedState<\r\n IOfflineServiceFilterDto[]\r\n >([]);\r\n const [fetchServiceTypeState, fetchServiceTypePromise] =\r\n usePromise(fetchServiceTypes);\r\n React.useEffect(() => {\r\n if (\r\n newSelectedServices.length > 0 &&\r\n !updated &&\r\n fetchServiceTypeState.status !== 'pending'\r\n ) {\r\n setServiceTypes(fetchServiceTypePromise());\r\n setUpdated(true);\r\n }\r\n }, [\r\n actions,\r\n dispatch,\r\n fetchServiceTypePromise,\r\n fetchServiceTypeState.status,\r\n newSelectedServices,\r\n newSelectedServices.length,\r\n selected,\r\n serviceTypes,\r\n setServiceTypes,\r\n updated,\r\n ]);\r\n React.useEffect(() => {\r\n let added = newSelectedServices.filter(\r\n f => !selected.some(s => s.ServiceTypeID === f),\r\n );\r\n let removed = isBarcodeScanned\r\n ? []\r\n : selected.filter(\r\n f => !newSelectedServices.some(c => c === f.ServiceTypeID),\r\n );\r\n if (\r\n (added.length > 0 || removed.length > 0) &&\r\n updated &&\r\n fetchServiceTypeState.status === 'resolved' &&\r\n serviceTypes.length > 0\r\n ) {\r\n setUpdated(undefined);\r\n dispatch(actions.resetSelectedServiceType());\r\n dispatch(actions.setBarcodeScanned(undefined));\r\n\r\n if (added.length > 0 && removed.length > 0) {\r\n addAndRemoveServices(\r\n serviceTypes.filter(f => added.includes(f.Id)),\r\n removed,\r\n );\r\n } else {\r\n if (added.length > 0) {\r\n addServices(serviceTypes.filter(f => added.includes(f.Id)));\r\n }\r\n if (removed.length > 0) {\r\n removeServices(removed);\r\n }\r\n }\r\n\r\n setServiceTypes([]);\r\n }\r\n }, [\r\n actions,\r\n addAndRemoveServices,\r\n addServices,\r\n dispatch,\r\n fetchServiceTypeState.status,\r\n isBarcodeScanned,\r\n newSelectedServices,\r\n removeServices,\r\n selected,\r\n serviceTypes,\r\n setServiceTypes,\r\n updated,\r\n ]);\r\n return (\r\n f.ServiceTypeID)}\r\n disabled={disabled}\r\n fullWidth={fullWidth}\r\n onAddClick={onAddClick}\r\n />\r\n );\r\n}\r\n","import { DropDown } from 'app/components/DropDown';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { LinearProgress, List, ListItem, MenuItem } from '@material-ui/core';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { translations } from 'locales/translations';\r\nimport { TextControlField } from 'app/components/BasicInputs/TextControlField';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { loadOfflineServiceData } from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport styled from 'styled-components';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { ReportedFrom } from '../slice/types';\r\nimport { AddServiceFromSelection } from './AddServiceFromSelection';\r\n\r\nexport interface AddServiceProps {\r\n getServiceTypes?: (\r\n searchTerm: string | null,\r\n predicates: (string | Condition)[] | undefined,\r\n ) => Promise;\r\n addService: (serviceType: IOfflineServiceFilterDto) => void;\r\n addServices: (serviceType: IOfflineServiceFilterDto[]) => void;\r\n removeServices: (services: IOtherServices[]) => void;\r\n addAndRemoveServices: (\r\n serviceType: IOfflineServiceFilterDto[],\r\n services: IOtherServices[],\r\n ) => void;\r\n onAddClick: (services: number[]) => void;\r\n selected: IOtherServices[];\r\n disabled?: boolean;\r\n reportFrom?: ReportedFrom;\r\n useAssetSelection?: boolean;\r\n offlineTypeFilter?:\r\n | (string | Condition)[]\r\n | undefined;\r\n}\r\n\r\nexport function AddService({\r\n addService,\r\n getServiceTypes,\r\n selected,\r\n disabled,\r\n reportFrom,\r\n useAssetSelection,\r\n addServices,\r\n removeServices,\r\n addAndRemoveServices,\r\n onAddClick,\r\n offlineTypeFilter,\r\n}: AddServiceProps) {\r\n const { t } = useTranslation();\r\n\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n\r\n const [input, setInnput] = React.useState('');\r\n const fetchServiceTypes = async (): Promise => {\r\n const filter: (string | Condition)[] =\r\n !!selected && selected.length > 0\r\n ? [\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Excludes,\r\n selected.map(s => s.ServiceTypeID),\r\n ),\r\n ]\r\n : [];\r\n if (!!offlineTypeFilter && offlineTypeFilter.length > 0) {\r\n offlineTypeFilter.forEach(c => filter?.push(c));\r\n }\r\n return new Promise(async (resolve, reject) => {\r\n if (!!getServiceTypes) {\r\n try {\r\n const data = await getServiceTypes(input || null, filter);\r\n resolve(data);\r\n } catch {\r\n resolve([]);\r\n }\r\n } else {\r\n try {\r\n const data = await loadOfflineServiceData(\r\n filter,\r\n 'relatedServices',\r\n globalServiceGroupFilter || [],\r\n undefined,\r\n 'InventoryBatches,RelatedReferences',\r\n )(input || null, undefined);\r\n resolve(\r\n data.value.filter(\r\n f => !selected.some(s => s.ServiceTypeID === f.Id),\r\n ),\r\n );\r\n } catch (error) {\r\n resolve([]);\r\n }\r\n }\r\n });\r\n };\r\n const [serviceTypes, setServiceTypes] = useAsyncExtendedState<\r\n IOfflineServiceFilterDto[]\r\n >([]);\r\n\r\n const [fetchServiceTypeState, fetchServiceTypePromise] =\r\n usePromise(fetchServiceTypes);\r\n const stopImmediatePropagation = (e: any) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n useEffectOnMount(() => {\r\n setServiceTypes(fetchServiceTypePromise());\r\n });\r\n\r\n return (\r\n {\r\n setServiceTypes([]);\r\n setServiceTypes(fetchServiceTypePromise());\r\n }}\r\n id=\"add-service-ddl\"\r\n onHandleClose={() => {\r\n setInnput('');\r\n setServiceTypes([]);\r\n }}\r\n menuChildren={onClose => [\r\n e.stopPropagation()}\r\n onClickCapture={stopImmediatePropagation}\r\n >\r\n \r\n }\r\n value={input || ''}\r\n id=\"search-service\"\r\n size=\"small\"\r\n aria-label={t(translations.SearchFilter)}\r\n inputProps={{\r\n 'aria-label': t(translations.SearchFilter),\r\n }}\r\n onChange={e => {\r\n setInnput(e.target.value);\r\n setTimeout(() => setServiceTypes(fetchServiceTypePromise()), 200);\r\n }}\r\n autoFocus\r\n fullWidth\r\n />\r\n ,\r\n \r\n \r\n \r\n {fetchServiceTypeState.status === 'pending' && (\r\n \r\n )}\r\n {serviceTypes.length > 0 && (\r\n \r\n {serviceTypes.map(s => (\r\n {\r\n addService(s);\r\n onClose();\r\n }}\r\n >\r\n {s.Name}\r\n \r\n ))}\r\n \r\n )}\r\n {fetchServiceTypeState.status !== 'pending' &&\r\n serviceTypes.length < 1 && (\r\n \r\n {t(translations.NotFound)}\r\n \r\n )}\r\n \r\n \r\n ,\r\n\r\n \r\n {serviceTypes.length > 0 && (\r\n {\r\n onClose();\r\n onAddClick(services);\r\n }}\r\n buttonName={t(translations.AllServices) as string}\r\n />\r\n )}\r\n ,\r\n ]}\r\n menuProps={{\r\n anchorOrigin: {\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n },\r\n transformOrigin: {\r\n vertical: 'top',\r\n horizontal: 'left',\r\n },\r\n getContentAnchorEl: null,\r\n }}\r\n addChevron\r\n >\r\n {reportFrom === 'milestone'\r\n ? (t(translations.SelectAddOnService) as string)\r\n : (t(translations.AddConsumable) as string)}\r\n \r\n );\r\n}\r\nconst ContentWrapper = styled.div`\r\n width: 300px;\r\n height: auto;\r\n min-height: 150px;\r\n max-height: 300px;\r\n max-width: 300px;\r\n overflow-y: auto;\r\n`;\r\n","import { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { BookitChip } from 'app/components/BasicChip';\r\nimport {\r\n BatchesByServiceTypeFilter,\r\n convertInventoryBatchName,\r\n loadInventoryBatchesData,\r\n} from 'app/components/pickers/AutocompletePickers/InventoryBatchesPicker';\r\nimport { useAsyncGetWithEffect } from 'app/hooks/useAsyncGetOnMount';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { InventoryBatchList } from './InventoryBatchList';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n selectCreatableService,\r\n selectInventoryBatchEditable,\r\n} from '../slice/selectors';\r\nimport { useOfflineServiceStateSlice } from '../slice';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport interface InventoryBatchChipProps {\r\n renderService: IOtherServices;\r\n onServiceClick?: (service: IOtherServices) => void;\r\n onAddBatchClick?: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n renewStock?: boolean;\r\n isAdmin?: boolean;\r\n handleServiceChange: (item: IOtherServices) => Promise;\r\n disabled?: boolean;\r\n onRenewStockClick?: (service: IOtherServices) => void;\r\n}\r\nexport const InventoryBatchChip = React.memo(function InventoryBatchChip(\r\n props: InventoryBatchChipProps,\r\n) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n const {\r\n renderService,\r\n onServiceClick,\r\n onAddBatchClick,\r\n renewStock,\r\n isAdmin,\r\n handleServiceChange,\r\n disabled,\r\n onRenewStockClick,\r\n } = props;\r\n const batchRequested = useSelector(selectInventoryBatchEditable);\r\n const savedCreatableRenewal = useSelector(selectCreatableService);\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const handleBatchListOpen = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n const handleBatchListClose = () => {\r\n setAnchorEl(null);\r\n };\r\n const availableBatches = useAsyncGetWithEffect(\r\n async () =>\r\n loadInventoryBatchesData(\r\n BatchesByServiceTypeFilter(\r\n renderService.ServiceTypeID,\r\n renewStock === true ? undefined : true,\r\n ),\r\n )(null, undefined).then(res => res.value),\r\n [],\r\n [renderService, batchRequested, savedCreatableRenewal],\r\n );\r\n const currentBatch = React.useMemo(() => {\r\n return renderService.InventoryBatchesEnabled\r\n ? renderService.InventoryBatchId !== null\r\n ? availableBatches.find(f => f.Id === renderService.InventoryBatchId)\r\n : null\r\n : null;\r\n }, [\r\n availableBatches,\r\n renderService.InventoryBatchId,\r\n renderService.InventoryBatchesEnabled,\r\n ]);\r\n const onChipClick = event => {\r\n if (renewStock && !onAddBatchClick) {\r\n !!onServiceClick && onServiceClick(renderService);\r\n } else {\r\n if (isAdmin && !disabled) {\r\n handleBatchListOpen(event);\r\n }\r\n }\r\n };\r\n const handleChipSelect = React.useCallback(\r\n (batch: IInventoryBatchDto) => {\r\n return new Promise(async resolve => {\r\n try {\r\n handleBatchListClose();\r\n await handleServiceChange(\r\n Object.assign({}, renderService, {\r\n InventoryBatchId: batch.Id,\r\n InventoryBatchName: batch.Name,\r\n InventoryBatchAmount: batch.Inventory,\r\n }),\r\n );\r\n } catch (error) {}\r\n });\r\n },\r\n [handleServiceChange, renderService],\r\n );\r\n React.useEffect(() => {\r\n if (batchRequested !== undefined) {\r\n handleChipSelect(batchRequested);\r\n dispatch(actions.setInventoryBatchEditable(undefined));\r\n }\r\n }, [actions, batchRequested, dispatch, handleChipSelect]);\r\n React.useEffect(() => {\r\n if (savedCreatableRenewal !== undefined) {\r\n handleChipSelect({\r\n Id: savedCreatableRenewal.InventoryBatchId,\r\n Name: savedCreatableRenewal.InventoryBatchName,\r\n Inventory: savedCreatableRenewal.InventoryBatchAmount,\r\n } as IInventoryBatchDto);\r\n dispatch(actions.getCreatableService(undefined));\r\n }\r\n }, [actions, dispatch, handleChipSelect, savedCreatableRenewal]);\r\n return (\r\n \r\n \r\n {(!renewStock || (renewStock && !!onAddBatchClick)) && (\r\n {\r\n !!onAddBatchClick &&\r\n onAddBatchClick(null, renderService.ServiceTypeID);\r\n handleBatchListClose();\r\n }}\r\n isAdmin={isAdmin ?? false}\r\n onClose={handleBatchListClose}\r\n serviceTypeId={renderService.ServiceTypeID}\r\n onBatchClick={handleChipSelect}\r\n selectedBatch={currentBatch ?? undefined}\r\n showRenewStockButtons={!renewStock}\r\n createdRenewal={savedCreatableRenewal}\r\n onRenewStockClick={batchId => {\r\n !!onRenewStockClick &&\r\n onRenewStockClick(\r\n Object.assign({}, renderService, {\r\n InventoryBatchId: batchId ?? null,\r\n }),\r\n );\r\n handleBatchListClose();\r\n }}\r\n batches={[]}\r\n />\r\n )}\r\n \r\n );\r\n});\r\n","import { useTheme, FormHelperText, InputAdornment } from '@material-ui/core';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\n\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport BaseTextField from 'app/components/BasicInputs/BaseTextField';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components';\r\nimport { AuthenticatedUser, IIsAdminOfParams } from 'types/AuthenticatedUser';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { ErrorServices } from '../slice/types';\r\nimport { InventoryBatchChip } from './InventoryBatchChip';\r\n\r\nexport interface QuickServiceItemProps {\r\n service: IOtherServices;\r\n handleRemove: (item: IOtherServices) => Promise;\r\n handleChange: (item: IOtherServices) => Promise;\r\n onServiceClick?: (item: IOtherServices) => void;\r\n mandatory?: boolean;\r\n isEditMode?: boolean;\r\n createdEditable?: boolean;\r\n count: number | null;\r\n minStep: number;\r\n step: number;\r\n maxStep: number;\r\n disabled?: boolean;\r\n renewStock?: boolean;\r\n user?: AuthenticatedUser;\r\n onAddBatchClick?: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n onRenewStockClick?: (service: IOtherServices) => void;\r\n setError?: (error: ErrorServices) => void;\r\n focused?: boolean;\r\n shortView?: boolean;\r\n}\r\nconst QuickItem = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n background: theme.palette.common.white,\r\n boxShadow: 'inset 0px -1px 0px #E3E8EF',\r\n '& .errorsRoot': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n },\r\n '& .textandImageShort': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '8px 12px 0px 12px',\r\n gap: '12px',\r\n width: '100%',\r\n flexGrow: 1,\r\n },\r\n '& .contentRoot': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '12px 12px',\r\n gap: '8px',\r\n '& .textandImage': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0px',\r\n gap: '12px',\r\n width: '100%',\r\n flexGrow: 1,\r\n },\r\n '& .quantity': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0px',\r\n gap: '8px',\r\n flexGrow: 0,\r\n },\r\n '& .adjustment': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n padding: '0px 0px 0px 8px',\r\n gap: '10px',\r\n marginLeft: 'auto',\r\n },\r\n },\r\n '& .bottomRoot': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n justifyContent: 'flex-end',\r\n padding: '0px 8px 8px 8px',\r\n },\r\n}));\r\n\r\nexport const QuickServiceItem = React.memo(function QuickServiceItem(\r\n props: QuickServiceItemProps,\r\n) {\r\n const { t } = useTranslation();\r\n const {\r\n service,\r\n mandatory,\r\n handleChange,\r\n handleRemove,\r\n onServiceClick,\r\n isEditMode,\r\n createdEditable,\r\n count,\r\n minStep,\r\n step,\r\n maxStep,\r\n disabled,\r\n renewStock,\r\n onAddBatchClick,\r\n onRenewStockClick,\r\n user,\r\n setError,\r\n focused,\r\n shortView,\r\n } = props;\r\n const theme = useTheme();\r\n const inputProps = {\r\n step: step,\r\n min: minStep,\r\n max: maxStep,\r\n 'aria-label': 'Counter',\r\n };\r\n const [errorMessage, setErrorMessage] = React.useState(\r\n undefined,\r\n );\r\n const [errorAdded, setErrorAdded] = React.useState(false);\r\n const handleAddError = React.useCallback(\r\n (error: string | undefined) => {\r\n setErrorMessage(error);\r\n if (!!setError) {\r\n setError({\r\n id: service.ServiceTypeID,\r\n error: !!error ? `${service.ServiceType}: ${error}` : undefined,\r\n } as ErrorServices);\r\n }\r\n },\r\n [service.ServiceType, service.ServiceTypeID, setError],\r\n );\r\n const [quantity, setQuantity] = React.useState(count);\r\n React.useEffect(() => {\r\n setQuantity(count);\r\n }, [count]);\r\n React.useEffect(() => {\r\n let quantityInValid =\r\n quantity === null || quantity === undefined || quantity === 0;\r\n if (quantityInValid && !errorAdded) {\r\n if (quantity === 0) {\r\n handleAddError(\r\n (t(translations.err_LowQuantity) as string).replace(\r\n '{0}',\r\n minStep.toString(),\r\n ),\r\n );\r\n } else {\r\n handleAddError(t(translations.err_Quantity_required) as string);\r\n }\r\n setErrorAdded(true);\r\n }\r\n if (!quantityInValid && errorAdded) {\r\n setErrorAdded(false);\r\n }\r\n }, [errorAdded, handleAddError, minStep, quantity, t]);\r\n\r\n // const IsGroupAdmin = React.useMemo(() => {\r\n // return user?.HasAdminGroupPermissions(service?.ServiceGroupId ?? undefined);\r\n // }, [service?.ServiceGroupId, user]);\r\n const IsAdminOfService = React.useMemo(() => {\r\n return user?.IsAdminOf({\r\n ServiceGroupId: service?.ServiceGroupId,\r\n ServiceId: service?.Id,\r\n ServiceTypeId: ServiceType.Offline,\r\n } as IIsAdminOfParams);\r\n }, [service?.Id, service?.ServiceGroupId, user]);\r\n const [counterUpdated, setCounterUpdated] = React.useState(false);\r\n const arrowTitle = React.useMemo(() => {\r\n if (service.TrackInventory && service.RenewStockInventory) {\r\n return t(translations.RenewStockArrow_info) as string;\r\n } else {\r\n return isEditMode && service.Id > 0\r\n ? (t(translations.ReservationOfflineServiceEditArrow_info) as string)\r\n : createdEditable\r\n ? (t(translations.ConsumableCreateArrow_info) as string)\r\n : (t(translations.ReservationOfflineServiceCreateArrow_info) as string);\r\n }\r\n }, [\r\n createdEditable,\r\n isEditMode,\r\n service.Id,\r\n service.RenewStockInventory,\r\n service.TrackInventory,\r\n t,\r\n ]);\r\n const serviceChange = React.useCallback(\r\n (change: number | null, item: IOtherServices, withError?: boolean) => {\r\n return new Promise(async resolve => {\r\n const precision = service.IntQuantityOnly === true ? 0 : 2;\r\n try {\r\n await handleChange(\r\n Object.assign({}, item, {\r\n Quantity: change === null ? null : +change.toFixed(precision),\r\n DefaultQuantity: change === null ? null : item.DefaultQuantity,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(item.ServiceDate),\r\n ),\r\n }),\r\n );\r\n\r\n setQuantity(change === null ? null : +change.toFixed(precision));\r\n setCounterUpdated(false);\r\n if (!withError) {\r\n handleAddError(undefined);\r\n }\r\n } catch (error) {\r\n handleAddError(error as string);\r\n setQuantity(change === null ? null : +change.toFixed(precision));\r\n setCounterUpdated(false);\r\n }\r\n });\r\n },\r\n [handleAddError, handleChange, service.IntQuantityOnly],\r\n );\r\n const remove = (service: IOtherServices) => {\r\n return new Promise(async resolve => {\r\n try {\r\n await handleRemove(service);\r\n resolve(undefined);\r\n setCounterUpdated(false);\r\n handleAddError(undefined);\r\n } catch (error) {\r\n handleAddError(error as string);\r\n setCounterUpdated(false);\r\n }\r\n });\r\n };\r\n const onInputChange = React.useCallback(\r\n event => {\r\n const precision = service.IntQuantityOnly === true ? 0 : 2;\r\n if (event.target.value === '') {\r\n //setCounterUpdated(true);\r\n setQuantity(null);\r\n serviceChange(null, service, true);\r\n handleAddError(\r\n (t(translations.err_LowQuantity) as string).replace(\r\n '{0}',\r\n minStep.toString(),\r\n ),\r\n );\r\n return;\r\n } else {\r\n const value = +(+event.target.value).toFixed(precision);\r\n if (value < minStep) {\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n //setCounterUpdated(true);\r\n serviceChange(value, service, true);\r\n handleAddError(\r\n (t(translations.err_LowQuantity) as string).replace(\r\n '{0}',\r\n minStep.toString(),\r\n ),\r\n );\r\n } else if (value > 0 && value > maxStep) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleAddError(\r\n (t(translations.err_HighQuantity) as string).replace(\r\n '{0}',\r\n maxStep.toString(),\r\n ),\r\n );\r\n } else {\r\n handleAddError(undefined);\r\n // setCounterUpdated(true);\r\n serviceChange(value, service);\r\n }\r\n }\r\n },\r\n [handleAddError, maxStep, minStep, service, serviceChange, t],\r\n );\r\n return (\r\n \r\n {shortView && (\r\n
    \r\n {`${service.ServiceType}`}\r\n
    \r\n )}\r\n
    \r\n {!shortView && (\r\n
    \r\n {`${service.ServiceType}`}\r\n
    \r\n )}\r\n\r\n
    \r\n {\r\n let valid = mandatory\r\n ? (quantity ?? 0) - step > 0\r\n : (quantity ?? 0) - step >= 0;\r\n let validatedQty = (quantity ?? 0) - step;\r\n if (\r\n !mandatory &&\r\n !valid &&\r\n (quantity === null || validatedQty <= 0)\r\n ) {\r\n setCounterUpdated(true);\r\n setQuantity(null);\r\n remove(service);\r\n return;\r\n }\r\n if (valid) {\r\n handleAddError(undefined);\r\n if (!mandatory && (quantity ?? 0) - step === 0) {\r\n setCounterUpdated(true);\r\n remove(service);\r\n } else {\r\n setCounterUpdated(true);\r\n serviceChange((quantity ?? 0) - step, service);\r\n }\r\n } else {\r\n if (mandatory) {\r\n setQuantity(null);\r\n serviceChange(null, service, true);\r\n handleAddError(\r\n (\r\n t(translations.OfflineServiceMandatory_err) as string\r\n ).replace('{0}', minStep.toString()),\r\n );\r\n } else {\r\n setQuantity(null);\r\n serviceChange(null, service, true);\r\n handleAddError(\r\n (t(translations.err_LowQuantity) as string).replace(\r\n '{0}',\r\n minStep.toString(),\r\n ),\r\n );\r\n }\r\n }\r\n }}\r\n >\r\n {(quantity ?? 0) <= step ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n {service.Units}\r\n \r\n \r\n ),\r\n }}\r\n />\r\n {\r\n let valid = (quantity ?? 0) + step < maxStep;\r\n if (valid) {\r\n let minvalid = mandatory\r\n ? (quantity ?? 0) + step > 0\r\n : (quantity ?? 0) + step >= 0;\r\n if (minvalid) {\r\n setCounterUpdated(true);\r\n serviceChange((quantity ?? 0) + step, service);\r\n handleAddError(undefined);\r\n } else {\r\n setCounterUpdated(true);\r\n serviceChange((quantity ?? 0) + step, service, true);\r\n handleAddError(\r\n (t(translations.err_LowQuantity) as string).replace(\r\n '{0}',\r\n minStep.toString(),\r\n ),\r\n );\r\n }\r\n } else {\r\n handleAddError(\r\n (t(translations.err_HighQuantity) as string).replace(\r\n '{0}',\r\n maxStep.toString(),\r\n ),\r\n );\r\n }\r\n }}\r\n >\r\n \r\n \r\n
    \r\n\r\n
    \r\n {counterUpdated ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {!!onServiceClick && (\r\n !!onServiceClick && onServiceClick(service)}\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n
    \r\n
    \r\n\r\n {((service.InventoryBatchesEnabled && IsAdminOfService) ||\r\n !!errorMessage) && (\r\n
    \r\n {!!errorMessage && (\r\n \r\n {errorMessage}\r\n \r\n )}\r\n {service.InventoryBatchesEnabled && IsAdminOfService && (\r\n 0}\r\n onRenewStockClick={onRenewStockClick}\r\n />\r\n )}\r\n
    \r\n )}\r\n
    \r\n );\r\n});\r\nconst StyledBaseTextField = styled(BaseTextField)(({ theme }) => ({\r\n '& input[type=number]': {\r\n '-moz-appearance': 'textfield',\r\n },\r\n '& input[type=number]::-webkit-outer-spin-button': {\r\n '-webkit-appearance': 'none',\r\n margin: 0,\r\n },\r\n '& input[type=number]::-webkit-inner-spin-button': {\r\n '-webkit-appearance': 'none',\r\n margin: 0,\r\n },\r\n //width: '56px',\r\n '& input': {\r\n maxWidth: '4ch',\r\n minWidth: 0,\r\n width: 'auto',\r\n },\r\n}));\r\n","import { useTheme } from '@material-ui/core';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport * as React from 'react';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { AddService } from './AddService';\r\nimport { QuickServiceItem } from './QuickServiceItem';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { selectRefreshOfflineServices } from 'app/pages/ReservationDetails/Details/slice/selectors';\r\nimport { useReservationSlice } from 'app/pages/ReservationDetails/Details/slice';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { AddServiceFromSelection } from './AddServiceFromSelection';\r\nimport { AssetsSelectionProps } from 'app/pages/MyAssetsPage/AssetsSelection/AssetsSelection';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { ScannerView } from 'app/components/ScannerView';\r\nimport { selectRefreshConsumableServices } from '../slice/selectors';\r\nimport { useOfflineServiceStateSlice } from '../slice';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { ErrorServices, ReportedFrom } from '../slice/types';\r\nimport clsx from 'clsx';\r\nimport styled from 'styled-components';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectIsCoverExpanded,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\n\r\nexport interface BookQuickServicesProps {\r\n initServicesFunc: () => Promise;\r\n loadSeviceTypes?: (\r\n searchTerm: string | null,\r\n predicates: (string | Condition)[] | undefined,\r\n ) => Promise;\r\n onServiceUpdate?: (service: IOtherServices) => Promise;\r\n onServiceRemove?: (service: IOtherServices) => Promise;\r\n onServicesRemove?: (service: IOtherServices[]) => Promise;\r\n onServiceClick?: (item: IOtherServices) => void;\r\n onRenewStockClick?: (service: IOtherServices) => void;\r\n onAddBatchClick?: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n createServiceFromServiceType?: (\r\n serviceTypes: IOfflineServiceFilterDto,\r\n ) => Promise;\r\n createServicesFromServiceType?: (\r\n serviceTypes: IOfflineServiceFilterDto[],\r\n ) => Promise;\r\n userName?: string;\r\n isEditMode?: boolean;\r\n disabled?: boolean;\r\n useAssetSelection?: boolean;\r\n useDropDownSelectionFirst?: boolean;\r\n onAddClick?: (services: number[]) => void;\r\n onAddAndRemoveServices?: (\r\n serviceType: IOfflineServiceFilterDto[],\r\n services: IOtherServices[],\r\n ) => Promise;\r\n createdEditable?: boolean;\r\n renewStock?: boolean;\r\n setError?: (errors: ErrorServices) => void;\r\n showScannerView?: boolean;\r\n isCover?: boolean;\r\n reportFrom?: ReportedFrom;\r\n offlineTypeFilter?:\r\n | (string | Condition)[]\r\n | undefined;\r\n}\r\nconst QuickServiceItems = styled('div')(({ theme }) => ({\r\n width: '100%',\r\n '& .addNewSection': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: 0,\r\n gap: '16px',\r\n '&.hasServices': {\r\n padding: '16px 0px 0px',\r\n },\r\n '& .sectionRow': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: '0',\r\n gap: '12px',\r\n '& .sectionItems': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0',\r\n gap: '8px',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const BookQuickServices = React.memo(function BookQuickServices(\r\n props: BookQuickServicesProps,\r\n) {\r\n const user = useSelector(selectAuthenticatedUser);\r\n const refreshServices = useSelector(selectRefreshOfflineServices);\r\n const refreshCosumables = useSelector(selectRefreshConsumableServices);\r\n const dispatch = useDispatch();\r\n const { actions } = useReservationSlice();\r\n const { actions: offlineActions } = useOfflineServiceStateSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const {\r\n initServicesFunc,\r\n onServiceRemove,\r\n onServicesRemove,\r\n onServiceUpdate,\r\n createServiceFromServiceType,\r\n createServicesFromServiceType,\r\n loadSeviceTypes,\r\n onServiceClick,\r\n userName,\r\n isEditMode,\r\n disabled,\r\n useAssetSelection,\r\n onAddClick,\r\n onAddAndRemoveServices,\r\n createdEditable,\r\n renewStock,\r\n onAddBatchClick,\r\n onRenewStockClick,\r\n setError,\r\n showScannerView,\r\n isCover,\r\n reportFrom,\r\n useDropDownSelectionFirst,\r\n offlineTypeFilter,\r\n } = props;\r\n const theme = useTheme();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const coverExpanded = useSelector(selectIsCoverExpanded);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const isMobile = DetectIsMobile();\r\n const showShortView = React.useMemo(() => {\r\n return (\r\n (sidePanelOpen && !sidePanelExpanded) ||\r\n isMobile ||\r\n (isCover && !coverExpanded)\r\n );\r\n }, [coverExpanded, isCover, isMobile, sidePanelExpanded, sidePanelOpen]);\r\n const fetchServices = async (): Promise => {\r\n return new Promise(async resolve => {\r\n try {\r\n let data = await initServicesFunc();\r\n resolve(data);\r\n } catch {\r\n resolve([]);\r\n }\r\n });\r\n };\r\n const { newDate } = useSystemDate();\r\n const currentUser = React.useMemo(() => {\r\n return !!userName ? userName : user?.Id;\r\n }, [user?.Id, userName]);\r\n const [serviceCreated, setServiceCreated] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [services, setServices] = useAsyncExtendedState([]);\r\n const [fetchServicesState, fetchServicesPromise] = usePromise(fetchServices);\r\n React.useEffect(() => {\r\n if (\r\n !fetchServicesState.status ||\r\n (fetchServicesState.status !== 'pending' &&\r\n fetchServicesState.status !== 'resolved')\r\n ) {\r\n setServices(fetchServicesPromise());\r\n }\r\n return () => {};\r\n }, [\r\n fetchServicesPromise,\r\n fetchServicesState.status,\r\n initServicesFunc,\r\n setServices,\r\n ]);\r\n React.useEffect(() => {\r\n let active = refreshServices || refreshCosumables;\r\n if (active === true && fetchServicesState.status !== 'pending') {\r\n dispatch(actions.setRefreshOfflineServices(undefined));\r\n dispatch(offlineActions.setRefreshConsumableOfflineServices(undefined));\r\n setServices(fetchServicesPromise());\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n dispatch,\r\n fetchServicesPromise,\r\n fetchServicesState.status,\r\n initServicesFunc,\r\n offlineActions,\r\n refreshCosumables,\r\n refreshServices,\r\n setServices,\r\n ]);\r\n const handleServiceChange = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n if (!!onServiceUpdate) {\r\n try {\r\n let data = await onServiceUpdate(service);\r\n if (!!data) {\r\n setServices(\r\n services.map(f => {\r\n if (f.ServiceTypeID === service.ServiceTypeID) {\r\n return Object.assign({}, f, service);\r\n } else {\r\n return f;\r\n }\r\n }),\r\n );\r\n resolve(data);\r\n } else {\r\n reject('error occured');\r\n }\r\n } catch (error) {\r\n reject(error);\r\n }\r\n } else {\r\n setServices(\r\n services.map(f => {\r\n if (f.ServiceTypeID === service.ServiceTypeID) {\r\n return Object.assign({}, f, service);\r\n } else {\r\n return f;\r\n }\r\n }),\r\n );\r\n resolve(service);\r\n }\r\n });\r\n };\r\n const handleRemoveService = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n if (!!onServiceRemove) {\r\n try {\r\n let res = await onServiceRemove(service);\r\n setServices(\r\n services.filter(f => {\r\n if (isEditMode) {\r\n return f.Id !== service.Id;\r\n } else {\r\n return f.ServiceTypeID !== service.ServiceTypeID;\r\n }\r\n }),\r\n );\r\n resolve(res);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n } else {\r\n setServices(\r\n services.filter(f => {\r\n return f.ServiceTypeID !== service.ServiceTypeID;\r\n }),\r\n );\r\n resolve(service);\r\n }\r\n });\r\n };\r\n const handleAddService = React.useCallback(\r\n (serviceType: IOfflineServiceFilterDto) => {\r\n setServiceCreated(true);\r\n setServices(\r\n new Promise(async resolve => {\r\n try {\r\n if (!!createServiceFromServiceType) {\r\n let data = await createServiceFromServiceType(serviceType);\r\n if (!!data) {\r\n resolve([...services, data]);\r\n } else {\r\n resolve([...services]);\r\n }\r\n } else {\r\n let batch = serviceType.InventoryBatchesEnabled\r\n ? !!serviceType.InventoryBatches &&\r\n serviceType.InventoryBatches.length > 0\r\n ? serviceType.InventoryBatches.filter(\r\n f =>\r\n (f.ExpirationDate === null ||\r\n f.ExpirationDate > newDate()) &&\r\n (serviceType.NotLessThanZero\r\n ? f.Inventory > 0\r\n : true) &&\r\n (renewStock === true || f.StokRenewed === true),\r\n ).sort((a, b) => b.Id - a.Id)[0]\r\n : null\r\n : null;\r\n resolve([\r\n ...services,\r\n {\r\n Id: 0,\r\n ServiceTypeID: serviceType.Id,\r\n BookedBy: currentUser,\r\n DefaultQuantity: serviceType.DefaultQuantity,\r\n IntQuantityOnly: serviceType.IntQuantityOnly,\r\n Mandatory: false,\r\n Quantity: serviceType.DefaultQuantity,\r\n ServiceDate: newDate(),\r\n ServiceType: serviceType.Name,\r\n Units: serviceType.UnitTypeName,\r\n ServiceGroupId: serviceType.ServiceGroupId,\r\n NotLessThanZero: serviceType.NotLessThanZero,\r\n TrackInventory: serviceType.TrackInventory,\r\n InventoryBatchesEnabled: serviceType.InventoryBatchesEnabled,\r\n InventoryBatchId: batch === null ? null : batch.Id,\r\n InventoryBatchName: batch === null ? null : batch.Name,\r\n InventoryBatchAmount: batch === null ? null : batch.Inventory,\r\n } as IOtherServices,\r\n ]);\r\n }\r\n } catch {\r\n resolve([...services]);\r\n } finally {\r\n setServiceCreated(undefined);\r\n }\r\n }),\r\n );\r\n },\r\n [\r\n createServiceFromServiceType,\r\n currentUser,\r\n newDate,\r\n renewStock,\r\n services,\r\n setServices,\r\n ],\r\n );\r\n const handleAddServices = React.useCallback(\r\n (serviceTypes: IOfflineServiceFilterDto[]) => {\r\n setServiceCreated(true);\r\n setServices(\r\n new Promise(async resolve => {\r\n try {\r\n if (!!createServicesFromServiceType) {\r\n let data = await createServicesFromServiceType(serviceTypes);\r\n if (!!data && data.length > 0) {\r\n resolve([...services, ...data]);\r\n } else {\r\n resolve([...services]);\r\n }\r\n } else {\r\n resolve([\r\n ...services,\r\n ...serviceTypes.map(s => {\r\n let batch = s.InventoryBatchesEnabled\r\n ? !!s.InventoryBatches && s.InventoryBatches.length > 0\r\n ? s.InventoryBatches.filter(\r\n f =>\r\n (f.ExpirationDate === null ||\r\n f.ExpirationDate > newDate()) &&\r\n (s.NotLessThanZero ? f.Inventory > 0 : true) &&\r\n (renewStock === true || f.StokRenewed === true),\r\n ).sort((a, b) => b.Id - a.Id)[0]\r\n : null\r\n : null;\r\n return {\r\n Id: 0,\r\n ServiceTypeID: s.Id,\r\n BookedBy: currentUser,\r\n DefaultQuantity: s.DefaultQuantity,\r\n IntQuantityOnly: s.IntQuantityOnly,\r\n Mandatory: false,\r\n Quantity: s.DefaultQuantity,\r\n ServiceDate: newDate(),\r\n ServiceType: s.Name,\r\n Units: s.UnitTypeName,\r\n UnitTypeId: s.UnitTypeID,\r\n ServiceGroupId: s.ServiceGroupId,\r\n NotLessThanZero: s.NotLessThanZero,\r\n TrackInventory: s.TrackInventory,\r\n InventoryBatchesEnabled: s.InventoryBatchesEnabled,\r\n InventoryBatchId: batch === null ? null : batch.Id,\r\n InventoryBatchName: batch === null ? null : batch.Name,\r\n InventoryBatchAmount:\r\n batch === null ? null : batch.Inventory,\r\n } as IOtherServices;\r\n }),\r\n ]);\r\n }\r\n } catch {\r\n resolve([...services]);\r\n } finally {\r\n setServiceCreated(undefined);\r\n }\r\n }),\r\n );\r\n },\r\n [\r\n createServicesFromServiceType,\r\n currentUser,\r\n newDate,\r\n renewStock,\r\n services,\r\n setServices,\r\n ],\r\n );\r\n const handleRemoveServices = async (items: IOtherServices[]) => {\r\n return new Promise(async (resolve, reject) => {\r\n if (!!onServicesRemove) {\r\n try {\r\n let res = await onServicesRemove(items);\r\n setServices(\r\n services.filter(f => {\r\n if (isEditMode) {\r\n return !items.some(a => a.Id === f.Id);\r\n } else {\r\n return !items.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n }\r\n }),\r\n );\r\n resolve(res);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n } else {\r\n let newServices = services.filter(f => {\r\n return !items.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n });\r\n setServices(newServices);\r\n resolve(newServices);\r\n }\r\n });\r\n };\r\n const handleAddAndRemoveServices = async (\r\n serviceTypes: IOfflineServiceFilterDto[],\r\n removed: IOtherServices[],\r\n ) => {\r\n return new Promise(async (resolve, reject) => {\r\n if (!!onAddAndRemoveServices) {\r\n try {\r\n let res = await onAddAndRemoveServices(serviceTypes, removed);\r\n setServices(res);\r\n resolve(res);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n } else {\r\n let staticServices = serviceTypes.map(s => {\r\n return {\r\n Id: 0,\r\n ServiceTypeID: s.Id,\r\n BookedBy: currentUser,\r\n DefaultQuantity: s.DefaultQuantity,\r\n IntQuantityOnly: s.IntQuantityOnly,\r\n Mandatory: false,\r\n Quantity: s.DefaultQuantity,\r\n ServiceDate: newDate(),\r\n ServiceType: s.Name,\r\n Units: s.UnitTypeName,\r\n ServiceGroupId: s.ServiceGroupId,\r\n } as IOtherServices;\r\n });\r\n let addedServ = staticServices.filter(\r\n f => !services.some(s => s.ServiceTypeID === f.ServiceTypeID),\r\n );\r\n let otherServices = services.filter(f => {\r\n return !removed.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n });\r\n setServices([...otherServices, ...addedServ]);\r\n resolve([...otherServices, ...addedServ]);\r\n }\r\n });\r\n };\r\n const focusedService = React.useMemo(() => {\r\n return services.some(f => f.Quantity === null && f.DefaultQuantity === null)\r\n ? services.filter(\r\n f => f.Quantity === null && f.DefaultQuantity === null,\r\n )[0]\r\n : services[0];\r\n }, [services]);\r\n return (\r\n \r\n {services.map((item, indx) => (\r\n \r\n ))}\r\n 0 })}\r\n >\r\n {(useAssetSelection || showScannerView) && services.length < 1 && (\r\n \r\n )}\r\n\r\n
    \r\n
    \r\n {useAssetSelection && !useDropDownSelectionFirst ? (\r\n \r\n {\r\n let selParams = {\r\n useSidePanel: true,\r\n actionType: 'OfflineService',\r\n offTypeIds: services,\r\n } as AssetsSelectionProps;\r\n dispatch(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.AssetsSelection,\r\n props: selParams,\r\n expanded: false,\r\n }),\r\n );\r\n }\r\n }\r\n />\r\n \r\n ) : (\r\n {\r\n let selParams = {\r\n useSidePanel: true,\r\n actionType: 'OfflineService',\r\n offTypeIds: services,\r\n } as AssetsSelectionProps;\r\n dispatch(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.AssetsSelection,\r\n props: selParams,\r\n expanded: false,\r\n }),\r\n );\r\n }\r\n }\r\n />\r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n});\r\n","import { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { OnlineServiceType } from 'enums/OnlineServiceTypeEnum';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { IUsageDto, UsageSettingsState } from './types';\r\n\r\nexport function getUsageSettings(\r\n dto: IUsageDto,\r\n globalSettings: GlobalSettingsType,\r\n authenticatedUser?: AuthenticatedUser,\r\n) {\r\n let isServiceAdmin =\r\n dto.BaseEquipment !== null &&\r\n dto.BaseEquipment !== undefined &&\r\n !!authenticatedUser\r\n ? authenticatedUser.IsAdminOf({\r\n ServiceGroupId: dto.BaseEquipment.ServiceGroupId,\r\n ServiceId: dto.BaseEquipment.Id,\r\n ServiceTypeId: ServiceType.Online,\r\n })\r\n : authenticatedUser?.HasAdminRoles() ?? false;\r\n\r\n let chargesViewAllowed =\r\n (authenticatedUser && authenticatedUser.Roles.includes(Roles.FinAdmin)) ||\r\n isServiceAdmin ||\r\n (authenticatedUser &&\r\n authenticatedUser.Roles.includes(Roles.InvoicesReader) &&\r\n authenticatedUser.ActiveUserGroup?.Id === dto?.ADGroup?.Id);\r\n let settings: UsageSettingsState = {\r\n BaseEquipment: dto.BaseEquipment,\r\n IdleTimeout: dto.IdleTimeout,\r\n TutorName: dto.TutorName,\r\n UpdatedBy: dto.UpdatedBy,\r\n UpdatedAt: dto.UpdatedAt,\r\n AutoEnd: dto.AutoEnd,\r\n Source: dto.Source,\r\n UpdatedManually: dto.UpdatedManually,\r\n HasCharges: dto.HasCharges,\r\n FundingTypeId: dto.FundingTypeId,\r\n HasOfflineServices: dto.HasOfflineServices,\r\n Reservation: dto.Reservation,\r\n IsGuessLogOffTime: dto.IsGuessLogOffTime,\r\n ReservationId: dto.ReservationId,\r\n OngoingUsage: dto.OngoingUsage,\r\n PastUsage: dto.PastUsage,\r\n Owner: dto.BookedBy?.Id === authenticatedUser?.Id,\r\n budgetExperimentVisible:\r\n globalSettings.budgetExperimentModuleEnabled &&\r\n dto.BaseEquipment?.BudgetExperimentSettings,\r\n AllowOneAccSerOnly: dto.BaseEquipment?.AllowOneAccSerOnly ?? true,\r\n Billable: dto.BaseEquipment?.Billable ?? false,\r\n HasHideProjects: dto.BaseEquipment?.HideProjects ?? false,\r\n IsEquipmentTutoring: dto.BaseEquipment?.IsEquipmentTutoring ?? false,\r\n ForceTutoring:\r\n dto.BaseEquipment?.ForceTutoring === true &&\r\n dto.BaseEquipment !== null &&\r\n dto.BaseEquipment !== undefined &&\r\n isServiceAdmin === false,\r\n BudgetVisible:\r\n globalSettings.budgetModuleEnabled &&\r\n !dto.BaseEquipment?.HideProjects &&\r\n dto.BaseEquipment?.BudgetsTurnedOn === true &&\r\n (globalSettings.priceSheetPricing === true ||\r\n dto.BaseEquipment?.Billable === true),\r\n BudgetsTurnedOn: dto.BaseEquipment?.BudgetsTurnedOn,\r\n NotAllowReservations: dto.BaseEquipment?.NotAllowReservations ?? false,\r\n DefaultAccServiceId: dto.BaseEquipment?.DefaultAccServiceId,\r\n HasAccServices: dto.BaseEquipment?.AccServices?.length > 0,\r\n IsForceTutoring: dto.BaseEquipment?.ForceTutoring,\r\n OfflineServicesVisible:\r\n dto.Id > 0 && dto.BaseEquipment?.TypeId !== OnlineServiceType.Room,\r\n IsLoanDescType: dto.BaseEquipment?.TypeId === OnlineServiceType.LoanDesk,\r\n IsRoomType: dto.BaseEquipment?.TypeId === OnlineServiceType.Room,\r\n OfflineUsageEndServices: dto.BaseEquipment?.OfflineUsageEndServices ?? [],\r\n IsAllAdmin: isServiceAdmin,\r\n AbruptlyEnded: dto.AbruptlyEnded,\r\n IsEditable: dto.IsEditable,\r\n chargesViewAllowed:\r\n globalSettings.allowUsersToViewTheirCharges || chargesViewAllowed,\r\n HasErrors: false,\r\n };\r\n\r\n return settings;\r\n}\r\n","import { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport {\r\n UsageDetailsState,\r\n UsageSettingsState,\r\n IUsageDto,\r\n IUsageEquipmentDto,\r\n} from './types';\r\n\r\nexport function ConvertModelToEntity(\r\n original: IUsageDto,\r\n details: UsageDetailsState,\r\n offlineServices: IOtherServices[],\r\n user: AuthenticatedUser | undefined,\r\n settings?: UsageSettingsState,\r\n manually: boolean = false,\r\n reset?: boolean,\r\n) {\r\n const entity: IUsageDto = {\r\n AbruptlyEnded: original.AbruptlyEnded,\r\n Id: details.Id,\r\n AccSerIds: null,\r\n AccServiceId: null,\r\n AutoEnd: original.AutoEnd,\r\n IsGuessLogOffTime: original.IsGuessLogOffTime,\r\n Reservation: null,\r\n Budget: null,\r\n BudgetExperiment: null,\r\n BookedBy: null,\r\n UpdatedAt: null,\r\n Operator: null,\r\n InstituteProject: null,\r\n UpdatedBy: null,\r\n HasCharges: original.HasCharges,\r\n HasInvoicedCharges: original.HasInvoicedCharges,\r\n HasOfflineServices: original.HasOfflineServices,\r\n IdleTimeout: original.IdleTimeout,\r\n IsEditable: original.IsEditable,\r\n IsForceTutoring: original.IsForceTutoring,\r\n OngoingUsage: original.OngoingUsage,\r\n PastUsage: original.PastUsage,\r\n Source: original.Source,\r\n ADGroup: null,\r\n ExternalCustomer: null,\r\n SavedOfflineServices: offlineServices,\r\n UpdatedManually: manually,\r\n FundingTypeId: isNullOrUndefined(details.FundingType)\r\n ? null\r\n : details.FundingType?.Id,\r\n StartTime: dateUtils.formatISO(\r\n dateUtils.startOfMinute(dateUtils.dateOrStringToDate(details.StartTime)),\r\n { representation: 'complete' },\r\n ),\r\n EndTime:\r\n !!details.EndTime && details.EndTime !== null\r\n ? dateUtils.formatISO(\r\n dateUtils.startOfMinute(\r\n dateUtils.dateOrStringToDate(details.EndTime),\r\n ),\r\n )\r\n : undefined,\r\n BudgetId: details.Budget?.Id ?? null,\r\n BudgetExperimentId: details.BudgetExperiment?.Id ?? null,\r\n UserGroupId: details.ADGroup?.Id ?? '',\r\n UserName: details.BookedBy?.Id ?? user?.Id ?? '',\r\n InstituteProjectId: details.InstituteProject?.Id ?? null,\r\n ExternalCustomerId: details.ExternalCustomer?.Id ?? null,\r\n PurchaseOrder: details.PurchaseOrder,\r\n Reference: details.Reference,\r\n Remarks: details.Remarks,\r\n Tutoring: details.Tutoring,\r\n TutorName: details.Operator?.Id,\r\n AccServices: details.AccServices as IEquipmentAccServicesDto[],\r\n EquipmentID: details.BaseEquipment?.Id ?? 0,\r\n BaseEquipment: details.BaseEquipment as IUsageEquipmentDto,\r\n ReservationId: settings?.ReservationId ?? original.ReservationId,\r\n Reset: reset === true,\r\n };\r\n // {\r\n // Id: details.Id,\r\n // ADGroup: details.ADGroup,\r\n // AccServices: details.AccServices,\r\n // Budget: details.Budget,\r\n // BudgetExperiment: details.BudgetExperiment,\r\n // BaseEquipment: details.BaseEquipment,\r\n // IdleTimeout: details.IdleTimeout,\r\n // StartTime: dateUtils.formatISO(\r\n // dateUtils.dateOrStringToDate(state.details.StartTime),\r\n // ),\r\n // EndTime: dateUtils.formatISO(\r\n // dateUtils.dateOrStringToDate(state.details.EndTime),\r\n // ),\r\n // ReservationId: details.ReservationId,\r\n // Remarks: details.Remarks || null,\r\n // ExternalCustomer: details.ExternalCustomer,\r\n // FundingTypeId: details.FundingType?.Id ?? 0,\r\n // InstituteProject: details.InstituteProject,\r\n // Tutoring: details.Tutoring,\r\n // BookedBy: details.BookedBy,\r\n // PurchaseOrder: details.PurchaseOrder,\r\n // Reference: details.Reference,\r\n // // UpdatedAt: dateUtils.formatISO(new Date()),\r\n // // UpdatedBy: {Id: user?.Id, Name: user?.Name},\r\n // OfflineServices: offlineServices,\r\n // TutorName: settings.TutorName,\r\n // TotalCost: settings.TotalCost ?? 0,\r\n // } as IUsageDto;\r\n\r\n return entity;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { call, put, select, takeLatest, takeLeading } from 'redux-saga/effects';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport {\r\n IUsageDto,\r\n UsageChangesResult,\r\n UsageChangeStateParameters,\r\n UsageCommand,\r\n UsageDetailsResponseModel,\r\n UsageDetailsState,\r\n UsageQueryStringParameters,\r\n UsageSettingsState,\r\n} from './types';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { usageStateActions as actions } from '.';\r\nimport { UsageApi } from 'api/UsageApi';\r\nimport { AxiosError } from 'axios';\r\nimport { selectUsageDtoState, selectUsageSettings } from './selectors';\r\nimport { EndUsageData } from 'app/components/EndUsageConfirm';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { getUsageSettings } from './getUsageSettingsState';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { ConvertModelToEntity } from './ConvertModelToEntity';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { UsageDetailsProps } from '..';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { OtherServicesApi } from 'api/OtherServicesApi';\r\nimport { ConsumableServicesResponse } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\n\r\nfunction* doInitUsage(\r\n action: PayloadAction<{\r\n query: UsageQueryStringParameters;\r\n globalSettings: GlobalSettingsType;\r\n command: UsageCommand;\r\n prevState?: UsageDetailsState;\r\n }>,\r\n) {\r\n try {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n if (action.payload.query.id !== undefined) {\r\n yield* doInitUsageEdit({\r\n type: action.type,\r\n payload: {\r\n id: parseInt(action.payload.query.id),\r\n globalSettings: action.payload.globalSettings,\r\n },\r\n });\r\n return;\r\n }\r\n const result = yield call(UsageApi.initUsage, action.payload.query);\r\n let response = result as UsageDetailsResponseModel;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.filter(\r\n (value, index, self) => self.indexOf(value) === index,\r\n ).map(item => {\r\n return {\r\n key: 'usageInsertError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: 'initUsageSucc',\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'initUsageWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(\r\n actions.initUsage_Success({\r\n hasErrors: response.ErrorMessages.length > 0,\r\n model: response.model,\r\n isEdit: (response.model?.Id ?? 0) > 0,\r\n globalSettings: action.payload.globalSettings,\r\n settings: getUsageSettings(\r\n response.model,\r\n action.payload.globalSettings,\r\n user,\r\n ),\r\n }),\r\n );\r\n if (\r\n (!!response.model.BaseEquipment || !!action.payload.query.sid) &&\r\n response.model.Reservation === null\r\n ) {\r\n const parameters: UsageChangeStateParameters = {\r\n AccServices: response.model.AccServices.map(f => f.Id),\r\n Equipment:\r\n response.model.BaseEquipment?.Id ??\r\n parseInt(action.payload.query.sid ?? '0'),\r\n UsageId: (response.model.Id ?? 0) > 0 ? response.model.Id : null,\r\n ReservationId: response.model.ReservationId || null,\r\n Start: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(response.model.StartTime),\r\n { representation: 'complete' },\r\n ),\r\n End: !!response.model.EndTime\r\n ? dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(response.model.EndTime),\r\n {\r\n representation: 'complete',\r\n },\r\n )\r\n : undefined,\r\n BookedBy: response.model.BookedBy?.Id || null,\r\n Tutoring: response.model.Tutoring,\r\n ADGroup:\r\n response.model.ADGroup?.Id || user?.ActiveUserGroup?.Id || null,\r\n FundingTypeId: isNullOrUndefined(response.model.FundingTypeId)\r\n ? null\r\n : response.model.FundingTypeId,\r\n Remarks: response.model.Remarks || null,\r\n BudgetId: response.model.Budget?.Id || null,\r\n AllowOverlappingUsages:\r\n response.model.BaseEquipment?.AllowOverlappingUsages ?? 1,\r\n IsManual: action.payload.query.manual === 'true',\r\n };\r\n yield put(\r\n actions.changeUsageData({\r\n parameters: parameters,\r\n warnings: [],\r\n errors: [],\r\n loadReservations: true,\r\n }),\r\n );\r\n }\r\n } catch (error: unknown) {\r\n yield put(actions.initUsage_Error(error));\r\n }\r\n}\r\nfunction* doInitUsageEdit(\r\n action: PayloadAction<{\r\n id: number;\r\n globalSettings: GlobalSettingsType;\r\n }>,\r\n) {\r\n try {\r\n // var s: AppSettings = yield select(selectAppSettings);\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const expand: Array = [\r\n action.payload.globalSettings.budgetModuleEnabled && 'Budget',\r\n 'BookedBy',\r\n 'ADGroup',\r\n action.payload.globalSettings.instituteProjectsEnabled &&\r\n 'InstituteProject',\r\n //ExternalCustomer\r\n action.payload.globalSettings.budgetExperimentModuleEnabled &&\r\n 'BudgetExperiment',\r\n 'UpdatedBy',\r\n action.payload.globalSettings.accServicesEnabled && 'AccServices',\r\n `BaseEquipment($expand=${[\r\n action.payload.globalSettings.accServicesEnabled && 'AccServices',\r\n ]\r\n .filter(f => typeof f === 'string')\r\n .join(',')})`,\r\n 'Reservation',\r\n action.payload.globalSettings.tutoringEnabled && 'Operator',\r\n ];\r\n const result: IUsageDto | undefined = yield call(\r\n UsageApi.getUsage,\r\n action.payload.id,\r\n {\r\n $expand: expand.filter(f => typeof f === 'string').join(','),\r\n },\r\n );\r\n console.debug('usage result: ', result);\r\n if (!result) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'usageInit',\r\n message: 'Usage Not Found',\r\n variant: 'error',\r\n }),\r\n );\r\n\r\n yield put(actions.initUsageNotFound_Error());\r\n return;\r\n }\r\n yield put(\r\n actions.initUsage_Success({\r\n hasErrors: false,\r\n model: result,\r\n isEdit: true,\r\n globalSettings: action.payload.globalSettings,\r\n settings: getUsageSettings(result, action.payload.globalSettings, user),\r\n }),\r\n );\r\n if (!!result.BaseEquipment) {\r\n const parameters: UsageChangeStateParameters = {\r\n AccServices: result.AccServices.map(f => f.Id),\r\n Equipment: result.BaseEquipment.Id,\r\n UsageId: result.Id,\r\n ReservationId: result.ReservationId || null,\r\n Start: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(result.StartTime),\r\n { representation: 'complete' },\r\n ),\r\n End: !!result.EndTime\r\n ? dateUtils.formatISO(dateUtils.dateOrStringToDate(result.EndTime), {\r\n representation: 'complete',\r\n })\r\n : undefined,\r\n BookedBy: result.UserName || null,\r\n Tutoring: result.Tutoring,\r\n ADGroup: result.UserGroupId || null,\r\n FundingTypeId: isNullOrUndefined(result.FundingTypeId)\r\n ? null\r\n : result.FundingTypeId,\r\n Remarks: result.Remarks || null,\r\n BudgetId: result.BudgetId || null,\r\n AllowOverlappingUsages: result.BaseEquipment.AllowOverlappingUsages,\r\n IsManual: result.UpdatedManually,\r\n };\r\n yield put(\r\n actions.changeUsageData({\r\n parameters: parameters,\r\n warnings: [],\r\n errors: [],\r\n loadReservations: false,\r\n }),\r\n );\r\n }\r\n } catch (error: unknown) {\r\n console.error(error);\r\n if ((error as AxiosError)?.response?.status === 404) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'usageInit',\r\n message: 'Usage Not Found',\r\n variant: 'error',\r\n }),\r\n );\r\n }\r\n yield put(actions.initUsage_Error(error));\r\n }\r\n}\r\n\r\nfunction* doGetCredit(action: PayloadAction) {\r\n try {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const usageSettings = yield select(selectUsageSettings);\r\n if (action.payload.BaseEquipment?.Id) {\r\n const parameters: UsageChangeStateParameters = {\r\n AccServices: action.payload.AccServices.map(f => f.Id),\r\n Equipment: action.payload.BaseEquipment.Id,\r\n UsageId: action.payload.Id,\r\n ReservationId: usageSettings.ReservationId || null,\r\n Start: dateUtils.formatISO(\r\n dateUtils.startOfMinute(\r\n dateUtils.dateOrStringToDate(action.payload.StartTime),\r\n ),\r\n { representation: 'complete' },\r\n ),\r\n End: !!action.payload.EndTime\r\n ? dateUtils.formatISO(\r\n dateUtils.startOfMinute(\r\n dateUtils.dateOrStringToDate(action.payload.EndTime),\r\n ),\r\n {\r\n representation: 'complete',\r\n },\r\n )\r\n : undefined,\r\n BookedBy: action.payload.BookedBy?.Id || null,\r\n Tutoring: action.payload.Tutoring,\r\n ADGroup:\r\n action.payload.ADGroup?.Id || user?.ActiveUserGroup?.Id || null,\r\n FundingTypeId: isNullOrUndefined(action.payload.FundingType)\r\n ? null\r\n : action.payload.FundingType?.Id,\r\n Remarks: action.payload.Remarks || null,\r\n BudgetId: action.payload.Budget?.Id || null,\r\n AllowOverlappingUsages: 1,\r\n IsManual: false,\r\n };\r\n const result = yield call(UsageApi.calculateCredit, parameters);\r\n yield put(\r\n actions.getCredit_Success({\r\n credit: result.TotalCost,\r\n balance: result.Balance,\r\n }),\r\n );\r\n } else {\r\n yield put(\r\n actions.getCredit_Success({\r\n credit: 0,\r\n balance: 0,\r\n }),\r\n );\r\n }\r\n } catch {\r\n yield put(actions.getCredit_Success({ credit: 0, balance: null }));\r\n }\r\n}\r\nfunction* doSetAny(\r\n action: PayloadAction<{\r\n fieldKey: keyof UsageDetailsState;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setAnyValueSuccess(action.payload));\r\n}\r\n\r\nfunction* doLoadValidationData(\r\n action: PayloadAction<{\r\n parameters: UsageChangeStateParameters;\r\n warnings: string[];\r\n errors: string[];\r\n }>,\r\n) {\r\n try {\r\n let res = yield call(\r\n UsageApi.getValidationState,\r\n action.payload.parameters,\r\n );\r\n let response = res as IResponseType;\r\n response.WarningMessages = [\r\n ...response.WarningMessages,\r\n ...action.payload.warnings,\r\n ];\r\n response.ErrorMessages = [\r\n ...response.ErrorMessages,\r\n ...action.payload.errors,\r\n ];\r\n yield put(actions.validateUsageData_Success(response));\r\n } catch (error: unknown) {\r\n yield put(actions.validateUsageData_Error());\r\n }\r\n}\r\nfunction* doChangeUsageData(\r\n action: PayloadAction<{\r\n parameters: UsageChangeStateParameters;\r\n warnings: string[];\r\n errors: string[];\r\n loadReservations?: boolean;\r\n }>,\r\n) {\r\n try {\r\n let res = yield call(\r\n UsageApi.getUsageChangeState,\r\n action.payload.parameters,\r\n );\r\n let response = res as UsageChangesResult;\r\n response.WarningMessages = [\r\n ...response.WarningMessages,\r\n ...action.payload.warnings,\r\n ];\r\n response.ErrorMessages = [\r\n ...response.ErrorMessages,\r\n ...action.payload.errors,\r\n ];\r\n let updateSettings = action.payload.loadReservations\r\n ? {\r\n HasErrors: response.ErrorMessages.length > 0,\r\n Reservation: response.Reservation,\r\n ReservationId: response.Reservation?.Id ?? null,\r\n }\r\n : { HasErrors: response.ErrorMessages.length > 0 };\r\n yield put(actions.extendUsageSettings(updateSettings));\r\n yield put(actions.changeUsageData_Success(response));\r\n } catch (error: unknown) {\r\n yield put(actions.changeUsageData_Error());\r\n }\r\n}\r\n\r\nfunction* doUpdateSettigs(action: PayloadAction) {\r\n yield put(actions.updateUsageSettings(action.payload));\r\n}\r\nfunction* doCreateOrStartUsage(\r\n action: PayloadAction<{\r\n details: UsageDetailsState;\r\n settings?: UsageSettingsState;\r\n offlineServices: IOtherServices[];\r\n manual?: boolean;\r\n }>,\r\n) {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const dtoState = yield select(selectUsageDtoState);\r\n const httpPayloads: IUsageDto = ConvertModelToEntity(\r\n dtoState,\r\n action.payload.details,\r\n action.payload.offlineServices,\r\n user,\r\n action.payload.settings,\r\n action.payload.manual || false,\r\n );\r\n try {\r\n const result = yield call(UsageApi.startUsage, httpPayloads);\r\n let response = result as UsageDetailsResponseModel;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .map(item => {\r\n return {\r\n key: 'usageInsertError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: responseSuccess[0],\r\n variant: 'success',\r\n }),\r\n );\r\n let prop: UsageDetailsProps = {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n };\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'usageInsertSuccess',\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: true,\r\n itemName: i18next.t(translations.menu_UsageDetails),\r\n detailsType: RenderPageType.UsageDetails,\r\n detailsTypeProps: prop,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: 'usageInsertWarning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (action.payload.manual) {\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n yield put(\r\n actions.startUsage_Success({\r\n hasErrors: hasErrors,\r\n usageId: response.model.Id,\r\n manual: action.payload.manual,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'usageInsert',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.startUsage_Error(Error));\r\n }\r\n}\r\nfunction* doUpdateUsage(\r\n action: PayloadAction<{\r\n current: UsageDetailsState;\r\n offlineServices: IOtherServices[];\r\n settings: UsageSettingsState | undefined;\r\n reset?: boolean;\r\n }>,\r\n) {\r\n const user: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const originalDto: IUsageDto = yield select(selectUsageDtoState);\r\n\r\n const httpPayloads: IUsageDto = ConvertModelToEntity(\r\n originalDto,\r\n action.payload.current,\r\n action.payload.offlineServices,\r\n user,\r\n action.payload.settings,\r\n originalDto.UpdatedManually,\r\n action.payload.reset,\r\n );\r\n try {\r\n const results = yield call(UsageApi.updateUsage, httpPayloads);\r\n let response = results as UsageDetailsResponseModel;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'usageUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (response.SuccessMessages.length > 0) {\r\n let prop: UsageDetailsProps = {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(response.Id) ?? -1),\r\n },\r\n };\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'usageUpdateSuccess',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.menu_UsageDetails),\r\n detailsType: RenderPageType.UsageDetails,\r\n detailsTypeProps: prop,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'usageUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n if (\r\n action.payload.offlineServices.length > 0 &&\r\n action.payload.offlineServices.some(f => f.Id < 1)\r\n ) {\r\n const offRes = yield call(\r\n OtherServicesApi.insertConsumableServices,\r\n action.payload.offlineServices.filter(f => f.Id < 1),\r\n );\r\n let offResponse = offRes as ConsumableServicesResponse;\r\n let offErrors = offResponse.ErrorMessages;\r\n let offWarnings = offResponse.WarningMessages;\r\n if (offErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n offErrors.map(item => {\r\n return {\r\n key: 'serviceInsertError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (offWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n offWarnings.map(item => {\r\n return {\r\n key: 'serviceInsertWarning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateUsage_Success({\r\n hasErrors: hasErrors,\r\n insertModel: response.model,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'reservationUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateUsage_Error(Error));\r\n }\r\n}\r\nfunction* doStopUsage(\r\n action: PayloadAction<{\r\n usage: EndUsageData;\r\n globalSettings: GlobalSettingsType;\r\n isAdmin: boolean;\r\n }>,\r\n) {\r\n // const user: AuthenticatedUser | undefined = yield select(\r\n // selectAuthenticatedUser,\r\n // );\r\n const original = yield select(selectUsageDtoState);\r\n const httpPayloads = {\r\n id: original.Id,\r\n data: action.payload.usage,\r\n };\r\n try {\r\n const result = yield call(UsageApi.stopUsage, httpPayloads);\r\n let response = result as IResponseType;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: 'usage_stop_err',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n yield put(actions.stopUsage_Error());\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n if (action.payload.isAdmin) {\r\n let prop: UsageDetailsProps = {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: String(Number(original.Id) ?? -1),\r\n },\r\n };\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'usageStoppedSuccess',\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: original.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.menu_UsageDetails),\r\n detailsType: RenderPageType.UsageDetails,\r\n detailsTypeProps: prop,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'stop_usage_success',\r\n message: response.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: 'stop_usage_warning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n // yield put(\r\n // actions.initUsage({\r\n // globalSettings: action.payload.globalSettings,\r\n // query: { id: original.Id.toString() },\r\n // prevState: original,\r\n // }),\r\n // );\r\n yield put(\r\n actions.stopUsage_Success({\r\n hasErrors: response.ErrorMessages.length > 0,\r\n }),\r\n );\r\n }\r\n }\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'usage_stop_err',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.stopUsage_Error());\r\n }\r\n}\r\nexport function* usageSaga() {\r\n yield takeLeading(actions.initUsage.type, doInitUsage);\r\n yield takeLeading(actions.calculateCredit.type, doGetCredit);\r\n yield takeLeading(actions.stopUsage.type, doStopUsage);\r\n yield takeLeading(actions.updateUsage.type, doUpdateUsage);\r\n yield takeLeading(actions.startUsage.type, doCreateOrStartUsage);\r\n yield takeLatest(actions.setAnyValue.type, doSetAny);\r\n yield takeLatest(actions.changeUsageData.type, doChangeUsageData);\r\n yield takeLatest(actions.extendUsageSettings.type, doUpdateSettigs);\r\n yield takeLatest(actions.validateUsageData.type, doLoadValidationData);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { EndUsageData } from 'app/components/EndUsageConfirm';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { PricingState } from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport { AxiosError } from 'axios';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { ConvertDtoToModel } from './ConvertDtoToModel';\r\nimport { usageSaga } from './saga';\r\nimport {\r\n IUsageDto,\r\n UsageChangesResult,\r\n UsageChangeStateParameters,\r\n UsageDetailsState,\r\n UsageQueryStringParameters,\r\n UsageSettingsState,\r\n UsageState,\r\n} from './types';\r\n\r\nexport const initialState: UsageState = {\r\n detailsState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n creditState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n },\r\n isEdit: false,\r\n processing: false,\r\n savedOfflineServices: [],\r\n hasCharges: undefined,\r\n refreshOfflineService: undefined,\r\n usageDtoState: undefined,\r\n requestedValue: undefined,\r\n requestedValueFor: undefined,\r\n valueHandler: undefined,\r\n usageSettingsState: undefined,\r\n notFound: undefined,\r\n stopUsageProcessing: undefined,\r\n showEndUsageDialog: undefined,\r\n createManully: undefined,\r\n usageStarted: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'usageState',\r\n initialState,\r\n reducers: {\r\n reset(state, action: PayloadAction) {\r\n Object.assign(state, initialState);\r\n },\r\n initUsage(\r\n state,\r\n action: PayloadAction<{\r\n query: UsageQueryStringParameters;\r\n globalSettings: GlobalSettingsType;\r\n prevState?: UsageDetailsState;\r\n }>,\r\n ) {\r\n state.processing = true;\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.usageDtoState = undefined;\r\n state.isEdit = false;\r\n state.savedOfflineServices = [];\r\n state.createManully = action.payload.query.manual === 'true';\r\n },\r\n initUsage_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n model: IUsageDto;\r\n isEdit: boolean;\r\n globalSettings: GlobalSettingsType;\r\n settings?: UsageSettingsState;\r\n }>,\r\n ) {\r\n state.processing = false;\r\n state.detailsState.data = ConvertDtoToModel(\r\n action.payload.model,\r\n action.payload.globalSettings,\r\n );\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.usageSettingsState = action.payload.settings;\r\n state.usageDtoState = action.payload.model;\r\n state.isEdit = action.payload.isEdit;\r\n if (action.payload.isEdit) {\r\n state.savedOfflineServices = [];\r\n }\r\n },\r\n initUsage_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n if ((action.payload as AxiosError)?.response?.status === 404) {\r\n state.detailsState.hasErrors = true;\r\n state.notFound = true;\r\n }\r\n },\r\n initUsageNotFound_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n state.detailsState.hasErrors = true;\r\n state.notFound = true;\r\n },\r\n resetDetailsState(state, action: PayloadAction) {\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.usageSettingsState = undefined;\r\n state.usageDtoState = undefined;\r\n state.savedOfflineServices = [];\r\n state.notFound = undefined;\r\n state.createManully = undefined;\r\n },\r\n calculateCredit(state, action: PayloadAction) {\r\n state.creditState.processing = true;\r\n state.creditState.completed = undefined;\r\n state.creditState.hasErrors = undefined;\r\n },\r\n getCredit_Success(state, action: PayloadAction) {\r\n state.creditState.processing = false;\r\n state.creditState.completed = true;\r\n state.creditState.data = action.payload;\r\n },\r\n getCredit_Error(state, action: PayloadAction) {\r\n state.creditState.processing = false;\r\n state.creditState.completed = true;\r\n state.creditState.data = undefined;\r\n },\r\n resetCreditState(state, action: PayloadAction) {\r\n state.creditState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n startUsage(\r\n state,\r\n action: PayloadAction<{\r\n details: UsageDetailsState;\r\n settings?: UsageSettingsState;\r\n offlineServices: IOtherServices[];\r\n manual?: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = false;\r\n state.detailsState.hasErrors = false;\r\n },\r\n startUsage_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n usageId: number;\r\n manual?: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n if (!action.payload.hasErrors) {\r\n state.savedOfflineServices = [];\r\n }\r\n if (!action.payload.manual) {\r\n state.usageStarted = true;\r\n }\r\n },\r\n startUsage_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n updateUsage(\r\n state,\r\n action: PayloadAction<{\r\n current: UsageDetailsState;\r\n offlineServices: IOtherServices[];\r\n settings: UsageSettingsState | undefined;\r\n reset?: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n updateUsage_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n insertModel: IUsageDto;\r\n }>,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n // state.confirmAssistedReservations =\r\n // action.payload.userTrainigData !== null;\r\n //state.trainingsData = action.payload.userTrainigData;\r\n if (!action.payload.hasErrors) {\r\n state.savedOfflineServices = [];\r\n }\r\n },\r\n updateUsage_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n setAnyValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof UsageDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setAnyValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof UsageDetailsState;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.valueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetValueHandler(state, action: PayloadAction) {\r\n state.valueHandler = undefined;\r\n },\r\n getAnyValue(state, action: PayloadAction) {\r\n state.requestedValueFor = action.payload;\r\n },\r\n getAnyValueSuccess(state, action: PayloadAction) {\r\n state.requestedValue = action.payload;\r\n },\r\n resetRequestedFor(state, action: PayloadAction) {\r\n state.requestedValueFor = undefined;\r\n },\r\n setSavedOfflineServices(state, action: PayloadAction) {\r\n state.savedOfflineServices = action.payload;\r\n },\r\n setRefreshOfflineServices(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.refreshOfflineService = action.payload;\r\n },\r\n resetUsageChangeState(state, action: PayloadAction) {\r\n state.usageChangesState = undefined;\r\n },\r\n changeUsageData(\r\n state,\r\n action: PayloadAction<{\r\n parameters: UsageChangeStateParameters;\r\n warnings: string[];\r\n errors: string[];\r\n loadReservations?: boolean;\r\n }>,\r\n ) {\r\n state.asyncChangeLoading = true;\r\n },\r\n changeUsageData_Success(state, action: PayloadAction) {\r\n state.usageChangesState = action.payload;\r\n state.asyncChangeLoading = undefined;\r\n },\r\n changeUsageData_Error(state, action: PayloadAction) {\r\n state.usageChangesState = undefined;\r\n state.asyncChangeLoading = undefined;\r\n },\r\n validateUsageData(\r\n state,\r\n action: PayloadAction<{\r\n parameters: UsageChangeStateParameters;\r\n warnings: string[];\r\n errors: string[];\r\n }>,\r\n ) {\r\n state.asyncChangeLoading = true;\r\n },\r\n validateUsageData_Success(state, action: PayloadAction) {\r\n state.usageChangesState = Object.assign({}, state.usageChangesState, {\r\n ErrorMessages: action.payload.ErrorMessages,\r\n WarningMessages: action.payload.WarningMessages,\r\n });\r\n state.asyncChangeLoading = undefined;\r\n },\r\n validateUsageData_Error(state, action: PayloadAction) {\r\n state.usageChangesState = undefined;\r\n state.asyncChangeLoading = undefined;\r\n },\r\n setAsyncChangeLoading(state, action: PayloadAction) {\r\n state.asyncChangeLoading = action.payload;\r\n },\r\n setStopUsageProcessing(state, action: PayloadAction) {\r\n state.stopUsageProcessing = action.payload;\r\n },\r\n setShowEndUsageDialog(state, action: PayloadAction) {\r\n state.showEndUsageDialog = action.payload;\r\n },\r\n extendUsageSettings(\r\n state,\r\n action: PayloadAction>,\r\n ) {},\r\n updateUsageSettings(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.usageSettingsState = Object.assign(\r\n {},\r\n state.usageSettingsState,\r\n action.payload,\r\n );\r\n },\r\n stopUsage(\r\n state,\r\n action: PayloadAction<{\r\n usage: EndUsageData;\r\n globalSettings: GlobalSettingsType;\r\n isAdmin: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n state.stopUsageProcessing = true;\r\n },\r\n stopUsage_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.stopUsageProcessing = false;\r\n state.showEndUsageDialog = false;\r\n if (!action.payload.hasErrors) {\r\n state.savedOfflineServices = [];\r\n }\r\n },\r\n stopUsage_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n state.stopUsageProcessing = false;\r\n state.showEndUsageDialog = false;\r\n },\r\n setCreateManully(state, action: PayloadAction) {\r\n state.createManully = action.payload;\r\n },\r\n setUsageStarted(state, action: PayloadAction) {\r\n state.usageStarted = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: usageStateActions } = slice;\r\n\r\nexport const useUsageStateSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: usageSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useUsageStateSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { Entity } from 'types/common';\r\nimport { IUsageDto, UsageDetailsState } from './types';\r\n\r\nexport function ConvertDtoToModel(\r\n dto: IUsageDto,\r\n globalSettings?: GlobalSettingsType,\r\n) {\r\n let model: UsageDetailsState = {\r\n Id: dto.Id,\r\n BaseEquipment: dto.BaseEquipment as Entity,\r\n BookedBy: dto.BookedBy as Entity,\r\n AccServices: (dto.AccServices as Entity[]) || [],\r\n Budget: dto.Budget as Entity,\r\n EndTime: dto.EndTime,\r\n InstituteProject: (dto.InstituteProject as Entity) || null,\r\n StartTime: dto.StartTime,\r\n Tutoring: dto.Tutoring,\r\n Operator: (dto.Operator as Entity) || null,\r\n ADGroup: (dto.ADGroup as Entity) || null,\r\n BudgetExperiment: (dto.BudgetExperiment as Entity) || null,\r\n ExternalCustomer: (dto.ExternalCustomer as Entity) || null,\r\n FundingType:\r\n dto.FundingTypeId === null\r\n ? null\r\n : getSingleInvoiceFundingType(dto.FundingTypeId),\r\n PurchaseOrder: dto.PurchaseOrder,\r\n Reference: dto.Reference,\r\n Remarks: dto.Remarks,\r\n };\r\n return model;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { put, takeLatest } from 'redux-saga/effects';\r\nimport { repetitiveActions as actions } from '.';\r\nimport { IRepetitiveDto } from 'types/IRepetitiveDto';\r\n\r\nfunction* doSaveState(action: PayloadAction) {\r\n yield put(actions.saveState_success(action.payload));\r\n}\r\nfunction* doSetRepetitiveValue(\r\n action: PayloadAction<{\r\n fieldKey: keyof IRepetitiveDto;\r\n fieldValue: any;\r\n }>,\r\n) {\r\n yield put(actions.setRepetitiveValueSuccess(action.payload));\r\n}\r\nexport function* repetitiveSaga() {\r\n yield takeLatest(actions.saveState.type, doSaveState);\r\n yield takeLatest(actions.setRepetitiveValue.type, doSetRepetitiveValue);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport {\r\n IRepetitiveDto,\r\n RepetitiveInit,\r\n ShortWeekDays,\r\n} from 'types/IRepetitiveDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { repetitiveSaga } from './saga';\r\nimport { RepetitiveState } from './types';\r\n\r\nexport const initialState: RepetitiveState = {\r\n processing: false,\r\n data: {\r\n StartDate: undefined,\r\n RecurringEvents: null,\r\n RepeatsOnDays: ShortWeekDays().map(f => {\r\n if (f.Id === 0) f.checked = true;\r\n return f;\r\n }),\r\n RecurringEndDate: undefined,\r\n RepeatsEveryDay: null,\r\n RepeatsEveryPeriod: null,\r\n RepeatsMonthlyBy: null,\r\n },\r\n repetitiveValueHandler: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'repetitive',\r\n initialState,\r\n reducers: {\r\n resetState(state, action: PayloadAction) {\r\n state.data = RepetitiveInit(action.payload ?? new Date());\r\n },\r\n saveState(state, action: PayloadAction) {},\r\n saveState_success(state, action: PayloadAction) {\r\n state.data = {\r\n StartDate: action.payload.StartDate,\r\n RecurringEvents: action.payload.RecurringEvents,\r\n RepeatsOnDays: action.payload.RepeatsOnDays,\r\n RecurringEndDate: action.payload.RecurringEndDate,\r\n RepeatsEveryDay: action.payload.RepeatsEveryDay,\r\n RepeatsEveryPeriod: action.payload.RepeatsEveryPeriod,\r\n RepeatsMonthlyBy: action.payload.RepeatsMonthlyBy,\r\n };\r\n },\r\n setSubmit(state, action: PayloadAction) {\r\n state.processing = action.payload;\r\n },\r\n setRepetitiveValue(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof IRepetitiveDto;\r\n fieldValue: any;\r\n }>,\r\n ) {},\r\n setRepetitiveValueSuccess(\r\n state,\r\n action: PayloadAction<{\r\n fieldKey: keyof IRepetitiveDto;\r\n fieldValue: any;\r\n }>,\r\n ) {\r\n state.repetitiveValueHandler = {\r\n run: true,\r\n fieldKey: action.payload.fieldKey,\r\n fieldValue: action.payload.fieldValue,\r\n shouldValidate: true,\r\n };\r\n },\r\n resetRepetitiveHandler(state, action: PayloadAction) {\r\n state.repetitiveValueHandler = undefined;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: repetitiveActions } = slice;\r\n\r\nexport const useRepetitiveSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: repetitiveSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useRepetitiveSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { useCalendarLink } from 'app/pages/CalendarPage/GetCalendarPagePath';\r\nimport { ViewTypes } from 'app/pages/CalendarPage/Scheduler/slice/types';\r\nimport { Button, ButtonProps } from '../BasicButtons/Button';\r\n\r\nexport interface CalendarButtonProps extends Omit {\r\n equipments?: Array;\r\n start?: string | Date;\r\n openToBook?: boolean;\r\n viewType?: ViewTypes;\r\n defaultMulti?: boolean;\r\n target?: string;\r\n}\r\n\r\nexport function CalendarButton({\r\n equipments,\r\n start,\r\n openToBook,\r\n viewType = 'calendar',\r\n defaultMulti,\r\n target,\r\n ...props\r\n}: CalendarButtonProps) {\r\n const link = useCalendarLink({\r\n equipments,\r\n openToBook,\r\n start,\r\n viewType,\r\n defaultMulti,\r\n });\r\n return \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * DepartmentPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface DepartmentPickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/DepartmentFilter';\r\nexport const initDepartmentData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function DepartmentPicker(props: DepartmentPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { selectPublicUrl } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { UsageQueryStringParameters } from 'app/pages/UsageDetails/Details/slice/types';\r\nimport { UsageDetailsProps } from 'app/pages/UsageDetails/Details';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nexport const UsageDetailsLink = (props: {\r\n id: number;\r\n rid?: number;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n onClick?: () => void;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const openDetails = useOpenUsageDetailsPopUp();\r\n const getLink = useUsageDetailsLinkUrl();\r\n const link = getLink({\r\n id: String(props.id),\r\n rId: !!props.rid ? String(props.rid) : undefined,\r\n });\r\n const open = () => {\r\n openDetails(\r\n {\r\n id: props.id,\r\n rid: props.rid,\r\n useSidePanel: props.useSidePanel,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\nexport const UsageReportLink = (props: {\r\n sid?: number;\r\n rid?: number;\r\n user?: string;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n manual?: boolean;\r\n onClick?: () => void;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const openDetails = useReportUsageDetailsPopUp();\r\n const getLink = useReportUsageLinkUrl();\r\n const link = getLink({\r\n sid: !!props.sid ? String(props.sid) : undefined,\r\n rId: !!props.rid ? String(props.rid) : undefined,\r\n un: props.user,\r\n manual: props.manual === undefined ? 'true' : String(props.manual),\r\n });\r\n const open = () => {\r\n openDetails(\r\n {\r\n sid: props.sid,\r\n rid: props.rid,\r\n user: props.user,\r\n useSidePanel: props.useSidePanel,\r\n manual: props.manual === undefined ? 'true' : String(props.manual),\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\nexport const useOpenUsageDetailsPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n return React.useCallback(\r\n (\r\n props: { id: number; rid?: number; useSidePanel?: boolean },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n const params: UsageQueryStringParameters = {\r\n id: String(props.id),\r\n rId: !!props.rid ? String(props.rid) : undefined,\r\n };\r\n let resProps: UsageDetailsProps = {\r\n queryParams: params,\r\n useSidePanel: true,\r\n };\r\n\r\n const panelState = {\r\n renderPageType: RenderPageType.UsageDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.UsageDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [openPanel],\r\n );\r\n};\r\nexport const useReportUsageDetailsPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n return React.useCallback(\r\n (\r\n props: {\r\n sid?: number;\r\n user?: string;\r\n rid?: number;\r\n useSidePanel?: boolean;\r\n manual?: string;\r\n },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n const params: UsageQueryStringParameters = {\r\n sid: !!props.sid ? String(props.sid) : undefined,\r\n un: props.user,\r\n rId: !!props.rid ? String(props.rid) : undefined,\r\n manual: props.manual,\r\n };\r\n let resProps: UsageDetailsProps = {\r\n queryParams: params,\r\n useSidePanel: true,\r\n };\r\n\r\n const panelState = {\r\n renderPageType: RenderPageType.UsageDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.UsageDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n });\r\n }\r\n },\r\n [openPanel],\r\n );\r\n};\r\nexport const useUsageDetailsLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n\r\n return React.useCallback(\r\n (params: Pick) => {\r\n return buildURL(publicUrl + 'usage/details', params);\r\n },\r\n [publicUrl],\r\n );\r\n};\r\nexport const useReportUsageLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n\r\n return React.useCallback(\r\n (\r\n params: Pick,\r\n ) => {\r\n return buildURL(publicUrl + 'usage/details', params);\r\n },\r\n [publicUrl],\r\n );\r\n};\r\n","import { StyledStatusLabel } from 'app/components/StyledComponents';\r\n\r\nexport interface StatusLabelProps {\r\n variant?: 'success' | 'info' | 'warning' | 'error';\r\n size?: 'small' | 'medium' | 'large';\r\n children: React.ReactNode;\r\n onClick?: (event: any) => void;\r\n}\r\nexport function StatusLabel(props: StatusLabelProps) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n","import { AssetLink } from 'app/pages/AssetPopUp/OpenAssetDetails';\r\nimport { CellProps, Renderer } from 'react-table';\r\nimport { IAssetRelated } from 'types/IAssetRelated';\r\n\r\n/**\r\n * Renders an Asset Link (Popup/sidepanel)\r\n * Requires for the AssetId property to be present on the row, otherwise the value is rendered without the link\r\n * @param param0\r\n * @returns\r\n */\r\nconst AssetRenderer: Renderer> = ({\r\n row: { original },\r\n value,\r\n}) =>\r\n !!original.AssetId ? (\r\n {value}\r\n ) : (\r\n <>{value}\r\n );\r\nexport default AssetRenderer;\r\n","import {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { Entity } from 'types/common';\r\nimport { IsEmptyArray, IsEntity } from '../BasicFilter/AppliedFilterComponent';\r\n\r\nimport { FilterValueType } from '../BasicFilter/FilterValueType';\r\n\r\nconst extractValuePart = function (\r\n value: FilterValueType | undefined,\r\n): FilterValueType | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n if (value === null) {\r\n return undefined;\r\n }\r\n if (IsEntity(value)) {\r\n return (value as Entity).Id;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport function TableFilterBuilder>(\r\n appliedFilters?: Array>,\r\n globalFilterValue?: string | undefined,\r\n serviceGroups?: Entity[],\r\n searchColumns?: Array,\r\n additionalFilters?: (string | Condition)[],\r\n multipleServiceGroups?: boolean,\r\n) {\r\n return new ODataFilterBuilder({\r\n predicates: (\r\n (appliedFilters || [])\r\n .map(filterSettingToCondition)\r\n .filter(f => f !== null)\r\n .filter(f => f !== undefined) as (string | Condition)[]\r\n ).concat(additionalFilters ?? []),\r\n globalServiceGroupFilter:\r\n serviceGroups === undefined || serviceGroups.length === 0\r\n ? undefined\r\n : [\r\n new Condition(\r\n multipleServiceGroups ? 'ServiceGroups' : 'ServiceGroupId',\r\n multipleServiceGroups\r\n ? ODataOperators.AnyIn\r\n : ODataOperators.Includes,\r\n serviceGroups,\r\n multipleServiceGroups ? 'Id' : undefined,\r\n ),\r\n ],\r\n stringColumns: searchColumns || [],\r\n stringSearch: globalFilterValue,\r\n }).toString();\r\n}\r\n\r\nexport function filterSettingToCondition>(\r\n filter: IFilterSettings,\r\n index: number,\r\n array: Array>,\r\n) {\r\n if (typeof filter === 'string') {\r\n return filter;\r\n }\r\n if (\r\n filter.value === undefined ||\r\n filter.value === null ||\r\n IsEmptyArray(filter.value)\r\n ) {\r\n return undefined;\r\n }\r\n if (filter.customFilter) {\r\n return filter.customFilter(filter.value, filter, array);\r\n }\r\n\r\n var value = extractValuePart(filter.value);\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n\r\n return new Condition(\r\n filter.fieldName,\r\n filter.operator,\r\n value,\r\n filter.fieldName1,\r\n filter.isInversed,\r\n );\r\n}\r\n","import { ToolbarProps as MuiToolbarProps, useTheme } from '@material-ui/core';\r\nimport React from 'react';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport { AlertContentType, BasicAlert } from 'app/components/BasicAlert';\r\nimport useExpandedSideBarState from 'app/hooks/useExpandedSideBarState';\r\nimport { useIsMobile } from 'app/hooks/useIsMobile';\r\nimport clsx from 'clsx';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { ICanRaiseBasicTableRefreshEvent } from '../../ControlledTable/ControlledTableProps';\r\nimport { RefreshIcon } from './RefreshIcon';\r\nimport {\r\n TableToolbarHeader,\r\n TableToolbarHeaderProps,\r\n} from './TableToolbarHeader';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { StyledToolbar } from './styled';\r\n\r\nexport interface TableToolbarProps\r\n extends React.PropsWithChildren,\r\n Omit,\r\n ICanRaiseBasicTableRefreshEvent {\r\n alertContent?: AlertContentType;\r\n showAlert?: boolean;\r\n titleIcon?: React.ReactNode;\r\n showMenu?: boolean;\r\n loading?: boolean;\r\n compact?: boolean;\r\n /**\r\n * Make a title section render content as flex column (in case when need to show additional description under Title)\r\n */\r\n titleAsColumn?: boolean;\r\n customExpandMenu?: () => void;\r\n showGlobalSearchIcon?: boolean;\r\n toggleGlobalFilter?: () => void;\r\n titleExtended?: React.ReactNode;\r\n}\r\n\r\nexport const TableToolbar = React.memo(function TableToolbar({\r\n screenName,\r\n screenNameVariant = 'H1',\r\n alertContent,\r\n showAlert,\r\n titleIcon,\r\n showMenu = true,\r\n variant = 'regular',\r\n onRefresh,\r\n compact,\r\n customExpandMenu,\r\n customScreenName,\r\n showGlobalSearchIcon,\r\n toggleGlobalFilter,\r\n titleAsColumn,\r\n titleExtended,\r\n ...props\r\n}: TableToolbarProps) {\r\n const { t } = useTranslation();\r\n const { checkIsMobile } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n const { toggle } = useExpandedSideBarState();\r\n\r\n const handleSidebarOpen = () => {\r\n if (!!customExpandMenu) {\r\n customExpandMenu();\r\n } else {\r\n toggle();\r\n }\r\n };\r\n const handleRefresh = () => {\r\n const event = { reloadConfigurableColumns: true };\r\n onRefresh?.(event);\r\n };\r\n const theme = useTheme();\r\n return (\r\n \r\n {isMobile && showMenu && (\r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n \r\n\r\n {onRefresh !== undefined && (\r\n \r\n )}\r\n {titleExtended}\r\n
    \r\n {!!titleIcon &&
    {titleIcon}
    }\r\n \r\n {!isMobile && !compact && showAlert === true && alertContent && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n {\r\n \r\n {showGlobalSearchIcon && (\r\n !!toggleGlobalFilter && toggleGlobalFilter()}\r\n >\r\n \r\n \r\n )}\r\n {props.children}\r\n \r\n }\r\n
    \r\n \r\n );\r\n});\r\n","/**\r\n *\r\n * FundingTypePicker\r\n *\r\n */\r\n\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { selectAppSettings, selectglobalSettings } from 'app/slice/selectors';\r\nimport { OnlineServiceType } from 'enums/OnlineServiceTypeEnum';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppSettings, IsModuleEnabled } from 'types/AppSettings';\r\nimport { Entity } from 'types/common';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\n\r\nexport interface OnlineServiceTypePickerProps\r\n extends Omit>, 'getOptions'> {}\r\n\r\nexport const getSingleOnlineServiceType = (val: number): Entity => {\r\n return enumToEntityArray(OnlineServiceType).filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\nexport const GetAvailableOnlineServiceTypes = (\r\n items: Entity[],\r\n appSettings: AppSettings | null,\r\n roomsEnabled: boolean,\r\n) => {\r\n return items.filter(f => {\r\n if (f.Id === OnlineServiceType.Software) {\r\n return IsModuleEnabled(appSettings, KnownModules.LocalApp);\r\n }\r\n if (f.Id === OnlineServiceType.Relay) {\r\n return IsModuleEnabled(appSettings, KnownModules.Relay);\r\n }\r\n if (f.Id === OnlineServiceType.IpRelay) {\r\n return IsModuleEnabled(appSettings, KnownModules.IpRelay);\r\n }\r\n if (f.Id === OnlineServiceType.WebRelayTm) {\r\n return IsModuleEnabled(appSettings, KnownModules.WebRelayTm);\r\n }\r\n if (f.Id === OnlineServiceType.WebRelayX600m) {\r\n return IsModuleEnabled(appSettings, KnownModules.WebRelayX600m);\r\n }\r\n if (f.Id === OnlineServiceType.UsageForm) {\r\n return IsModuleEnabled(appSettings, KnownModules.UsageForm);\r\n }\r\n if (f.Id === OnlineServiceType.LoanDesk) {\r\n return IsModuleEnabled(appSettings, KnownModules.LoanDesk);\r\n }\r\n if (f.Id === OnlineServiceType.DoorAccess) {\r\n return IsModuleEnabled(appSettings, KnownModules.DoorAccess);\r\n }\r\n if (f.Id === OnlineServiceType.Room) {\r\n return roomsEnabled;\r\n }\r\n if (f.Id === OnlineServiceType.NiDAQmx) {\r\n return IsModuleEnabled(appSettings, KnownModules.NiDAQmx);\r\n }\r\n if (f.Id === OnlineServiceType.KmTronicRelay) {\r\n return IsModuleEnabled(appSettings, KnownModules.KmTronicRelay);\r\n }\r\n if (f.Id === OnlineServiceType.RaspberryPi) {\r\n return IsModuleEnabled(appSettings, KnownModules.RaspberryPi);\r\n }\r\n return false;\r\n });\r\n};\r\nexport const initOnlineServiceTypeData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n enumToEntityArray(OnlineServiceType).filter(item => {\r\n return item.Id.toString() === initval;\r\n }),\r\n );\r\n });\r\n }\r\n};\r\nexport const getOnlineServiceTypeAssetFilter = (\r\n appSettings: AppSettings | null,\r\n roomsEnabled: boolean,\r\n): string => {\r\n const enabledTypes = GetAvailableOnlineServiceTypes(\r\n enumToEntityArray(OnlineServiceType),\r\n appSettings,\r\n roomsEnabled,\r\n );\r\n let filter: string[] = [];\r\n const enabledUsageTypes = enabledTypes.filter(\r\n f =>\r\n f.Id === OnlineServiceType.UsageForm ||\r\n f.Id === OnlineServiceType.IpRelay ||\r\n f.Id === OnlineServiceType.WebRelayTm ||\r\n f.Id === OnlineServiceType.WebRelayX600m ||\r\n f.Id === OnlineServiceType.NiDAQmx ||\r\n f.Id === OnlineServiceType.Room ||\r\n f.Id === OnlineServiceType.RaspberryPi,\r\n );\r\n const enabledRemoteTypes = enabledTypes.filter(\r\n f =>\r\n f.Id === OnlineServiceType.Relay || f.Id === OnlineServiceType.Software,\r\n );\r\n if (enabledUsageTypes.length > 0) {\r\n filter.push(\r\n `${new Condition(\r\n 'OperationTypeID',\r\n ODataOperators.Includes,\r\n enabledUsageTypes.map(f => f.Id),\r\n ).toString()}`,\r\n );\r\n }\r\n if (enabledRemoteTypes.length > 0) {\r\n filter.push(\r\n `(${new Condition(\r\n 'RemoteControlEnabled',\r\n ODataOperators.Equals,\r\n true,\r\n ).toString()} and ${new Condition(\r\n 'OperationTypeID',\r\n ODataOperators.Includes,\r\n enabledRemoteTypes.map(f => f.Id),\r\n ).toString()})`,\r\n );\r\n }\r\n return filter.length > 1\r\n ? `(${filter.join(' or ')})`\r\n : filter.length > 0\r\n ? filter[0]\r\n : '';\r\n};\r\nexport function OnlineServiceTypePicker(props: OnlineServiceTypePickerProps) {\r\n const appSettings = useSelector(selectAppSettings);\r\n const settings = useSelector(selectglobalSettings);\r\n const roomsEnabled = settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.RoomUserRoleEnabled],\r\n );\r\n const getOptions = (searchTerm: string | null) => {\r\n let items = GetAvailableOnlineServiceTypes(\r\n enumToEntityArray(OnlineServiceType),\r\n appSettings,\r\n roomsEnabled,\r\n );\r\n\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n };\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ButtonConfirm\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Button, ButtonProps } from 'app/components/BasicButtons/Button';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\n\r\nexport interface ButtonConfirmProps extends Omit {\r\n onClick: React.MouseEventHandler;\r\n confirmationDialogTitle?: string;\r\n confirmationDialogBody?: string;\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * Button with a confirmation dialog\r\n * @param param0 primary click handler\r\n * @returns\r\n */\r\nexport function ButtonConfirm({\r\n onClick,\r\n confirmationDialogTitle,\r\n confirmationDialogBody,\r\n ...props\r\n}: ButtonConfirmProps) {\r\n const { t } = useTranslation();\r\n const [open, setOpen] = React.useState(false);\r\n const title = confirmationDialogTitle ?? t(translations.Confirm);\r\n const body = confirmationDialogBody ?? t(translations.AreYouSure);\r\n const handleConfirmClick = e => {\r\n setOpen(false);\r\n onClick(e);\r\n };\r\n return (\r\n <>\r\n \r\n );\r\n}\r\nexport const WorkOrderLink = (props: {\r\n id: number;\r\n Up?: boolean;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const openOrder = useOpenWorkOrderPopUp();\r\n const getLink = useWorkOrderLinkUrl();\r\n const link = getLink({ id: props.id.toString(), Up: props?.Up?.toString() });\r\n const open = () => {\r\n openOrder(\r\n {\r\n id: props.id,\r\n Up: props.Up,\r\n useSidePanel: props.useSidePanel,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const useOpenWorkOrderPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n return React.useCallback(\r\n (\r\n props: { id: number; Up?: boolean; useSidePanel?: boolean },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n let orderProps = {\r\n queryParams: {\r\n id: props.id.toString(),\r\n Up: (props.Up === true).toString(),\r\n },\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps;\r\n const panelState = {\r\n renderPageType: RenderPageType.WorkOrderDetails,\r\n renderPageProps: orderProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.WorkOrderDetails,\r\n renderPageProps: orderProps,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [openPanel],\r\n );\r\n};\r\nexport const useWorkOrderLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n return React.useCallback(\r\n (params: WorkOrderQueryStringParameters) => {\r\n return buildURL(publicUrl + 'workorders/details', params);\r\n },\r\n [publicUrl],\r\n );\r\n};\r\n","import { useTheme } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { TabPanelWrapper } from '../TabsWrapper';\r\nimport clsx from 'clsx';\r\n\r\nexport interface TabPanelProps {\r\n children?: React.ReactNode;\r\n index: any;\r\n value: any;\r\n tabsId: string;\r\n tabsPanelId: string;\r\n scrollableContent?: boolean;\r\n}\r\n\r\nexport function TabPanel(props: TabPanelProps) {\r\n const {\r\n tabsPanelId,\r\n tabsId,\r\n children,\r\n value,\r\n index,\r\n scrollableContent,\r\n ...other\r\n } = props;\r\n const theme = useTheme();\r\n return (\r\n
    \r\n );\r\n}\r\n\r\nexport const ShowImage = styled('div')(({ theme }) => ({\r\n '& .frame': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n alignSelf: 'stretch',\r\n '& .mediaStyle': {\r\n imageRendering: '-webkit-optimize-contrast',\r\n backgroundSize: 'auto',\r\n width: '100%',\r\n backgroundBlendMode: 'multiply',\r\n minWidth: 'unset',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n },\r\n}));\r\n","import { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { GetPageFilters } from 'app/components/BasicTable/BasicFilter/GetPageFilters';\r\nimport React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { FormSectionTitle } from 'app/components/Forms/FormsLayout/FormSectionTitle';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { PageActionRenderer } from 'app/components/BasicTable/PageActions/PageActionsRenderer';\r\nimport { Column } from 'react-table';\r\nimport { IBasicTableState, IRow } from 'app/components/BasicTable';\r\nimport { SidePanelOpenState } from 'app/hooks/useSidePanelOpen';\r\nimport { PrimaryAction } from 'app/components/BasicTable/components/TableCard/PrimaryAction';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectUsageEnabled,\r\n} from 'app/slice/selectors';\r\nimport { IReservationWaitingListDto } from 'app/pages/ReservationWaitingListPage/IReservationWaitingListDto';\r\nimport { getColumns } from 'app/pages/ReservationWaitingListPage/Columns';\r\nimport { GetActions } from 'app/pages/ReservationWaitingListPage/Actions/GetActions';\r\nimport waitingListPrimaryAction from 'app/pages/ReservationWaitingListPage/PrimaryAction';\r\nimport { ReservationWaitingListTable } from 'app/pages/ReservationWaitingListPage/ReservationWaitingListTable';\r\nimport { BaseFilterValues, useFilters } from './TableFilters';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport { GetFilters } from 'app/pages/ReservationWaitingListPage/Filter';\r\nimport { GettableCount } from 'app/components/BasicTable/components/GetTableCount';\r\n\r\nconst AssetWaitingListColumns: string[] = ['UserDisplayName', 'WhenToNotify'];\r\n\r\nconst url = '/api/odata/v4/ReservationWaitingList';\r\n\r\nconst GetPredicates = (\r\n serviceId: number,\r\n): Array | string> => {\r\n const res: Array | string> = [\r\n new Condition(\r\n 'EquipmentId',\r\n ODataOperators.Equals,\r\n serviceId,\r\n ),\r\n ];\r\n return res;\r\n};\r\nexport async function GetWaitingListTableCount(\r\n serviceId: number,\r\n name: string,\r\n updateCounters: (name: string, count: number) => void,\r\n) {\r\n const res = await GettableCount({\r\n api: url,\r\n predicates: GetPredicates(serviceId) as Array | string>,\r\n columns: ['Id'],\r\n globalFilterValue: '',\r\n customFilter: [],\r\n serviceGroups: [],\r\n isOptionalServiceGroup: true,\r\n });\r\n updateCounters(name, res);\r\n}\r\nexport interface AssetWaitingListProps {\r\n serviceId: number;\r\n assetName: string;\r\n getFiltersDefinition?: GetPageFilters;\r\n isMobile?: boolean;\r\n useSidePanel?: boolean;\r\n openPanel: (state: SidePanelOpenState) => void;\r\n}\r\nclass FilterValues extends BaseFilterValues {\r\n UserName: FilterValueType | null = null;\r\n}\r\nconst filterValues = new FilterValues();\r\nexport function AssetWaitingList(props: AssetWaitingListProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const { actions } = useLayoutSlice();\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const usageEnabled = useSelector(selectUsageEnabled);\r\n const {\r\n allfilters,\r\n appliedFilters,\r\n handleFilterChange,\r\n getFilterValue,\r\n setFilterValue,\r\n } = useFilters(GetFilters, filterValues.GetFilter(), filterValues.SetValue);\r\n const waitingListColumns = React.useMemo(\r\n () =>\r\n getColumns(\r\n t,\r\n undefined,\r\n undefined,\r\n authenticatedUser,\r\n usageEnabled,\r\n props.useSidePanel,\r\n props.openPanel,\r\n ),\r\n [authenticatedUser, props.openPanel, props.useSidePanel, t, usageEnabled],\r\n );\r\n const columns = React.useMemo(() => {\r\n let res: Column[] = [];\r\n for (const c of AssetWaitingListColumns) {\r\n const column = waitingListColumns.find(f => f.accessor === c);\r\n if (column !== undefined) {\r\n res.push(column);\r\n }\r\n }\r\n return res;\r\n }, [waitingListColumns]);\r\n\r\n const PageActions: PageActionRenderer[] = GetActions({\r\n equipmentId: props.serviceId,\r\n useSidePanel: props.useSidePanel,\r\n openPanelWithCover: props.openPanel,\r\n isMobile: props.isMobile,\r\n });\r\n const primaryAction: PrimaryAction =\r\n React.useCallback(\r\n (...args) => {\r\n waitingListPrimaryAction(\r\n props.openPanel,\r\n args[0],\r\n args[1],\r\n args[2],\r\n props.useSidePanel,\r\n );\r\n },\r\n [props.openPanel, props.useSidePanel],\r\n );\r\n const goToWaitingList = React.useCallback(() => {\r\n dispatch(actions.toggleSidePanel(false));\r\n history.push(\r\n '/waitinglist?eqid=' +\r\n props.serviceId +\r\n '&userName=' +\r\n authenticatedUser?.Id ?? '',\r\n );\r\n }, [actions, authenticatedUser?.Id, dispatch, history, props.serviceId]);\r\n\r\n const predicates = React.useMemo(() => {\r\n return GetPredicates(props.serviceId);\r\n }, [props.serviceId]);\r\n const initialState: IBasicTableState =\r\n React.useMemo(\r\n () => ({\r\n sortBy: [{ id: 'Id', desc: true }],\r\n }),\r\n [],\r\n );\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n hideMenuOnMobile={true}\r\n screenNameVariant=\"section\"\r\n tablePaddingVariant={'dense'}\r\n compactTable={props.isMobile}\r\n />\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { useCallback, useEffect, useMemo, useState, Fragment } from 'react';\r\nimport {\r\n selectAppSettings,\r\n selectAssetPopupSettings,\r\n selectAuthenticatedUser,\r\n selectGlobalServiceGroupFilter,\r\n selectGlobalSettingBool,\r\n selectglobalSettings,\r\n selectIsAuthenticated,\r\n selectPublicUrl,\r\n} from 'app/slice/selectors';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\n\r\nimport { IAsset } from './IAsset';\r\nimport { IAssetRow } from './IAssetRow';\r\nimport { getRows } from './Rows';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { translations } from 'locales/translations';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { AvailabilityTypes } from 'api/odata/generated/enums/AvailabilityTypes';\r\nimport { IAssetDetails2Dto } from 'api/odata/generated/entities/IAssetDetails2Dto';\r\nimport { selectExpandedSidePanel } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { AssetDetailsTabContent } from './components/AssetDetailsTabContent';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { AssetBookingRules } from './components/AssetBookingRules';\r\nimport {\r\n AssetTrainingSessions,\r\n GetTrainingSessionsTableCount,\r\n} from './components/AssetTrainingSessions';\r\nimport {\r\n AssetArticlesTable,\r\n GetArticlesTableCount,\r\n} from './components/AssetArcticlesTable';\r\nimport {\r\n AssetWorkOrders,\r\n GetWorkOrdersTableCount,\r\n} from './components/AssetWorkOrders';\r\nimport {\r\n GetAlertsEnabled,\r\n GetReservationEnabled,\r\n addArrayItemByName,\r\n isBookable,\r\n moveArrayItem,\r\n fetchAssetBy,\r\n fetchAssetAdditionalData,\r\n moveArrayItemByName,\r\n isOnlineService,\r\n AssetIdentifier,\r\n AssetIdIdentifier,\r\n AssetServiceIdentifier,\r\n AssetInternalCodeIdentifier,\r\n} from './components/Utils';\r\nimport { TabContent } from 'app/components/BasicTabs/TabContent';\r\nimport { BadgeCounter } from './components/BadgeCounter';\r\nimport { EndUsageConfirm, EndUsageData } from 'app/components/EndUsageConfirm';\r\nimport { AssetDetailsApi } from 'api/AssetDetailsApi';\r\nimport { AssetDetailsTabs } from './components/AssetDetailsTabs';\r\nimport { MismatchCore } from './components/MismatchCoreMessage';\r\nimport {\r\n AssetDetailsAdditionalData,\r\n CountersForTabs,\r\n DefaultAttributes,\r\n DefaultRows,\r\n ExpandableRows,\r\n} from './components/types';\r\nimport {\r\n AssetTypes,\r\n GetAssetTypeFrom,\r\n IsAssetFieldEnabled,\r\n IsAssetFieldIsPublic,\r\n} from 'types/AppSettings';\r\nimport { AssetAttributes } from 'enums/AssetAttributes';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { Messages } from 'app/components/Messages';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { NotFoundPage } from '../NotFoundPage';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { selectUsageStarted } from '../UsageDetails/Details/slice/selectors';\r\nimport { usageStateActions } from '../UsageDetails/Details/slice';\r\nimport { AssetImagePopup } from './AttributeRenderers/ShowImage/AssetImagePopup';\r\nimport { useShowAssetImageSlice } from './AttributeRenderers/ShowImage/slice';\r\nimport {\r\n AssetWaitingList,\r\n GetWaitingListTableCount,\r\n} from './components/AssetWaitingList';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { useAssetActions } from './AssetActions';\r\nimport { useAssetsSelectionSlice } from '../MyAssetsPage/AssetsSelection/slice';\r\nimport { selectLoadingAdditionalData } from '../MyAssetsPage/AssetsSelection/slice/selectors';\r\n\r\nconst maxLeftTopButtonsLength = 2;\r\nconst countersForTabs = new CountersForTabs();\r\n\r\nexport interface AssetPopUpProps extends CoverProps {\r\n identifier: AssetIdentifier;\r\n onClose?: () => void;\r\n showAllCores?: boolean;\r\n useSidePanel: boolean;\r\n useRedirectToDash?: boolean;\r\n addFromCalendar?: boolean;\r\n}\r\n\r\nexport const AssetPopUp = ({\r\n identifier,\r\n onClose,\r\n showAllCores,\r\n useSidePanel = true,\r\n useRedirectToDash,\r\n isCover,\r\n addFromCalendar = true,\r\n\r\n closeCover,\r\n ...props\r\n}: AssetPopUpProps) => {\r\n const { t } = useTranslation();\r\n const globalSettings = useSelector(selectglobalSettings);\r\n const history = useHistory();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const { actions: assetStateActions } = useAssetsSelectionSlice();\r\n const [rows, setRows] = useState([]);\r\n const [selectColumns, setSelectColumns] = useState('');\r\n const [expandColumns, setExpandColumns] = useState('');\r\n const [data, setData] = useState();\r\n const [buttonsData, setButtonsData] = useState<\r\n AssetDetailsAdditionalData | undefined\r\n >();\r\n const [loading, setLoading] = useState(true);\r\n const [idChanged, setIdChanged] = useState(false);\r\n const loadingAdditionalData = useSelector(selectLoadingAdditionalData);\r\n const setLoadingAdditionalData = React.useCallback(\r\n (value: boolean) => {\r\n dispatch(assetStateActions.setLoadingAdditionalData(value));\r\n },\r\n [assetStateActions, dispatch],\r\n );\r\n const [loadingButtonsAdditionalData, setLoadingButtonsAdditionalData] =\r\n useState(undefined);\r\n const [openEndUsage, setOpenEndUsage] = useState(false);\r\n const [endUsageProcessing, setEndUsageProcessing] = useState(false);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const isAuthenticated = useSelector(selectIsAuthenticated);\r\n const {\r\n cover: assetCover,\r\n openPanel,\r\n closePanel,\r\n coverClosed,\r\n onCloseCover,\r\n } = useSidePanelState();\r\n const selectedServiceGroups = useSelector(selectGlobalServiceGroupFilter);\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const usageStarted = useSelector(selectUsageStarted);\r\n const topServiceGroupsIsHidden = useSelector(state =>\r\n selectGlobalSettingBool(state, AllowedSettings.HideTopServiceGroupFilter),\r\n );\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const [counters, setCounters] = useState(countersForTabs);\r\n const location = useLocation();\r\n const isMobile = DetectIsMobile();\r\n const appSettings = useSelector(selectAppSettings);\r\n const assetProps = useSelector(selectAssetPopupSettings);\r\n const { actions: showAssetImageActions } = useShowAssetImageSlice();\r\n const [showAssetImage, setShowAssetImage] = React.useState(false);\r\n const [imagePath, setImagePath] = React.useState();\r\n const shortView = React.useMemo(() => {\r\n return isMobile || (useSidePanel === true && !sidePanelExpanded) || isCover;\r\n }, [isCover, isMobile, sidePanelExpanded, useSidePanel]);\r\n const isAdmin = React.useMemo(() => {\r\n if (data === undefined) {\r\n return false;\r\n }\r\n const serviceGroupId = data?.ServiceGroup?.Id ?? undefined;\r\n const serviceId = data?.ServiceId ?? undefined;\r\n const serviceTypeId =\r\n data?.ServiceType === null\r\n ? undefined\r\n : ServiceType[data.ServiceType] ?? undefined;\r\n const result =\r\n authenticatedUser?.HasAdminGroupOnlyPermissions(serviceGroupId) ||\r\n authenticatedUser?.HasAdminServiceOnlyPermissions(\r\n serviceTypeId !== undefined ? serviceTypeId : 1,\r\n serviceId,\r\n );\r\n return result ?? false;\r\n }, [authenticatedUser, data]);\r\n const readOnlyUser = React.useMemo(() => {\r\n if (!authenticatedUser) return true;\r\n return (\r\n authenticatedUser.Roles.includes(Roles.Readonly) ||\r\n authenticatedUser.Roles.includes(Roles.CalendarOnly)\r\n );\r\n }, [authenticatedUser]);\r\n const isDashboardCore = React.useMemo(() => {\r\n var path = location.pathname;\r\n return path.toLowerCase() === '/dashboards/core/' + data?.ServiceGroup?.Id;\r\n }, [data?.ServiceGroup?.Id, location.pathname]);\r\n\r\n const reservationsEnabled = React.useMemo(() => {\r\n if (data === undefined) {\r\n return false;\r\n }\r\n if (data?.AvailabilityType === undefined) return false;\r\n\r\n return GetReservationEnabled(\r\n AvailabilityTypes[data.AvailabilityType.Id],\r\n data.Active,\r\n data.NotAllowReservations ?? false,\r\n );\r\n }, [data]);\r\n const hideTrainingSessionsSettings = globalSettings?.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideTrainingSessionsSettings],\r\n );\r\n const hidePublications = globalSettings?.GetBoolean(\r\n AllowedSettings[AllowedSettings.DisablePublicationsModule],\r\n );\r\n\r\n const assetFieldEnabled = React.useCallback(\r\n (\r\n AssetField: AssetAttributes,\r\n AssetAvailabilityType?: AssetTypes,\r\n ): boolean => {\r\n if (isAuthenticated) {\r\n return IsAssetFieldEnabled(\r\n appSettings,\r\n AssetField,\r\n AssetAvailabilityType,\r\n );\r\n } else {\r\n return (\r\n IsAssetFieldEnabled(appSettings, AssetField, AssetAvailabilityType) &&\r\n IsAssetFieldIsPublic(appSettings, AssetField, AssetAvailabilityType)\r\n );\r\n }\r\n },\r\n [appSettings, isAuthenticated],\r\n );\r\n const updateCounters = useCallback(\r\n (name: string, count: number) => {\r\n const tempCounters = Object.assign({}, counters);\r\n tempCounters[name].Count = count;\r\n setCounters(tempCounters);\r\n },\r\n [counters],\r\n );\r\n const updateCountersEnable = useCallback(\r\n (name: string, enabled: boolean) => {\r\n const tempCounters = counters;\r\n tempCounters[name].Enabled = enabled;\r\n setCounters(tempCounters);\r\n },\r\n [counters],\r\n );\r\n const clickImage = React.useCallback(\r\n (path?: string) => {\r\n if (!sidePanelExpanded) {\r\n dispatch(layoutActions.setExpanded(true));\r\n } else {\r\n if (path !== undefined) {\r\n dispatch(\r\n showAssetImageActions.setShowImage({ show: true, image: path }),\r\n );\r\n setImagePath(path);\r\n setShowAssetImage(true);\r\n }\r\n }\r\n },\r\n [dispatch, layoutActions, showAssetImageActions, sidePanelExpanded],\r\n );\r\n\r\n const handleImageClose = React.useCallback(() => {\r\n setShowAssetImage(false);\r\n }, []);\r\n const dict: Record = useMemo(() => {\r\n return getRows(\r\n t,\r\n globalSettings,\r\n openPanel,\r\n publicUrl,\r\n isCover,\r\n useSidePanel,\r\n isAdmin,\r\n shortView,\r\n isAuthenticated,\r\n readOnlyUser,\r\n clickImage,\r\n ).reduce((res, current) => {\r\n res[current.Id] = current;\r\n return res;\r\n }, {});\r\n }, [\r\n t,\r\n globalSettings,\r\n openPanel,\r\n publicUrl,\r\n isCover,\r\n useSidePanel,\r\n isAdmin,\r\n shortView,\r\n isAuthenticated,\r\n readOnlyUser,\r\n clickImage,\r\n ]);\r\n\r\n const mismatchCore = useMemo(() => {\r\n return MismatchCore(\r\n data,\r\n isAuthenticated,\r\n topServiceGroupsIsHidden,\r\n selectedServiceGroups,\r\n );\r\n }, [data, isAuthenticated, selectedServiceGroups, topServiceGroupsIsHidden]);\r\n\r\n // PublicationSettings is obtained from additional data\r\n const publicationsEnabled = useCallback(\r\n (data: IAssetDetails2Dto) => {\r\n if (data !== undefined) {\r\n return (\r\n isAuthenticated &&\r\n !readOnlyUser &&\r\n !hidePublications &&\r\n data.AvailabilityType?.Id !== 'RequestRelated' &&\r\n data.PublicationSettings\r\n );\r\n } else {\r\n return false;\r\n }\r\n },\r\n [hidePublications, isAuthenticated, readOnlyUser],\r\n );\r\n // IncidentSettings is obtained from additional data\r\n const calibrationsEnabled = useCallback(\r\n (data: IAssetDetails2Dto) => {\r\n if (data !== undefined) {\r\n return (\r\n isAuthenticated &&\r\n !readOnlyUser &&\r\n data.AvailabilityType?.Id !== 'RequestRelated' &&\r\n data.IncidentSettings\r\n );\r\n } else {\r\n return false;\r\n }\r\n },\r\n [isAuthenticated, readOnlyUser],\r\n );\r\n const loadCounters = useCallback(\r\n (data: IAssetDetails2Dto) => {\r\n if (data.Id !== undefined) {\r\n if (counters.TrainingSessions.Enabled) {\r\n GetTrainingSessionsTableCount(\r\n data.Id,\r\n 'TrainingSessions',\r\n updateCounters,\r\n data.ServiceGroup?.Id,\r\n data.AvailabilityType.Id,\r\n );\r\n }\r\n if (counters.WorkOrders.Enabled) {\r\n GetWorkOrdersTableCount(\r\n data.Id,\r\n false,\r\n 'WorkOrders',\r\n updateCounters,\r\n data.ServiceGroup?.Id,\r\n data.AvailabilityType.Id,\r\n );\r\n }\r\n if (calibrationsEnabled(data)) {\r\n GetWorkOrdersTableCount(\r\n data.Id,\r\n true,\r\n 'Calibrations',\r\n updateCounters,\r\n data.ServiceGroup?.Id,\r\n data.AvailabilityType.Id,\r\n );\r\n }\r\n if (publicationsEnabled(data)) {\r\n GetArticlesTableCount(\r\n data.Id,\r\n data.ServiceGroup?.Id,\r\n 'Publications',\r\n updateCounters,\r\n data.AvailabilityType.Id,\r\n );\r\n }\r\n if (\r\n data.ServiceId !== null &&\r\n (data.ServiceType === 'Online' ||\r\n isOnlineService(data.AvailabilityType?.Id))\r\n ) {\r\n GetWaitingListTableCount(\r\n data.ServiceId,\r\n 'WaitingList',\r\n updateCounters,\r\n );\r\n }\r\n }\r\n },\r\n [\r\n calibrationsEnabled,\r\n counters.TrainingSessions.Enabled,\r\n counters.WorkOrders.Enabled,\r\n publicationsEnabled,\r\n updateCounters,\r\n ],\r\n );\r\n const loadAdditionalData = useCallback(\r\n async (data: IAssetDetails2Dto) => {\r\n const res = Object.assign({}, data);\r\n if (!!res) {\r\n setLoadingAdditionalData(true);\r\n try {\r\n const ad: AssetDetailsAdditionalData | undefined =\r\n await fetchAssetAdditionalData({\r\n Id: res.Id,\r\n typeId: AvailabilityTypes[res.AvailabilityType.Id] as number,\r\n isAuth: isAuthenticated,\r\n buttonsData: false,\r\n });\r\n if (!!ad) {\r\n res.ApprovalRequired = ad.ApprovalRequired;\r\n res.Status = ad.Status;\r\n res.StatusId = ad.StatusId;\r\n res.AssetAssemblyStructure = ad.AssemblyStructure;\r\n res.HideTrainingSession = ad.HideTrainingSession;\r\n res.Range = ad.Range;\r\n res.ForceTutoring = ad.ForceTutoring;\r\n res.Allowed_ByTraining = ad.Allowed_ByTraining;\r\n res.EndUsageIds = ad.EndUsageIds;\r\n if (res.ServiceGroup !== undefined && res.ServiceGroup !== null) {\r\n res.ServiceGroup.CanRequestAccess = ad.CanRequestAccess;\r\n res.ServiceGroup.ApprovalStatusId = ad.ApprovalStatusId;\r\n }\r\n res.CanBeCreatedFromLinkOnly = ad.CanBeCreatedFromLinkOnly;\r\n res.NotAllowReservations = ad.NotAllowReservations;\r\n res.ReservationEnabled = GetReservationEnabled(\r\n AvailabilityTypes[res.AvailabilityType.Id],\r\n res.Active,\r\n res.NotAllowReservations ?? false,\r\n );\r\n res.NotActiveSince = ad.NotActiveSince;\r\n res.AssetImageNames = ad.AssetImageNames;\r\n res.InternalId = ad.InternalId;\r\n res.IncidentSettings = ad.IncidentSettings;\r\n res.PublicationSettings = ad.PublicationSettings;\r\n setData(res);\r\n if (isAuthenticated) {\r\n loadCounters(res);\r\n }\r\n }\r\n } finally {\r\n setLoadingAdditionalData(false);\r\n }\r\n }\r\n },\r\n [isAuthenticated, loadCounters, setLoadingAdditionalData],\r\n );\r\n const loadButtonsAdditionalData = useCallback(\r\n async (data: IAssetDetails2Dto) => {\r\n if (!!data && !loadingButtonsAdditionalData) {\r\n setLoadingButtonsAdditionalData(true);\r\n try {\r\n const ad: AssetDetailsAdditionalData | undefined =\r\n await fetchAssetAdditionalData({\r\n Id: data.Id,\r\n typeId: AvailabilityTypes[data.AvailabilityType.Id] as number,\r\n isAuth: isAuthenticated,\r\n buttonsData: true,\r\n });\r\n setButtonsData(ad);\r\n } finally {\r\n setLoadingButtonsAdditionalData(false);\r\n }\r\n }\r\n },\r\n [isAuthenticated, loadingButtonsAdditionalData],\r\n );\r\n\r\n const enabledAssetProps = React.useMemo(() => {\r\n const id = data?.AvailabilityType?.Id;\r\n if (id !== undefined) {\r\n const res = assetProps.filter(a =>\r\n assetFieldEnabled(\r\n AssetAttributes[a.Id],\r\n GetAssetTypeFrom(AvailabilityTypes[id]),\r\n ),\r\n );\r\n return res;\r\n } else {\r\n return assetProps;\r\n }\r\n }, [assetFieldEnabled, assetProps, data?.AvailabilityType?.Id]);\r\n const columnNamesFilter = React.useCallback((r: IAssetRow) => {\r\n return (\r\n r.State === undefined &&\r\n [\r\n 'AssetAssemblyStructure',\r\n 'Status',\r\n 'Division',\r\n 'AssetCatGroup',\r\n 'Range',\r\n 'InternalId',\r\n ].includes(r.PropName ?? r.Id) === false &&\r\n r.Id !== 'ForceTutoring'\r\n );\r\n }, []);\r\n const setRequestParams = React.useCallback(\r\n (rows: IAssetRow[]) => {\r\n if (rows.length > 0) {\r\n let columns = [\r\n ...rows\r\n .filter(r => columnNamesFilter(r))\r\n .map(v => v.PropName ?? v.Id),\r\n ...DefaultAttributes,\r\n ];\r\n setSelectColumns('Active,' + columns.join(','));\r\n setExpandColumns(\r\n columns\r\n .filter(column => ExpandableRows.includes(column))\r\n //.concat('ServiceGroup')\r\n .join(','),\r\n );\r\n }\r\n },\r\n [columnNamesFilter],\r\n );\r\n useEffect(() => {\r\n if (!!data) {\r\n if ((identifier as AssetIdIdentifier).id !== undefined) {\r\n if (data.Id !== (identifier as AssetIdIdentifier).id) {\r\n setIdChanged(true);\r\n }\r\n } else if (\r\n (identifier as AssetServiceIdentifier).serviceId !== undefined &&\r\n (identifier as AssetServiceIdentifier).serviceType !== undefined\r\n ) {\r\n if (\r\n data.ServiceId !== (identifier as AssetServiceIdentifier).serviceId\r\n ) {\r\n setIdChanged(true);\r\n }\r\n } else if (\r\n (identifier as AssetInternalCodeIdentifier).internalCode !== undefined\r\n ) {\r\n if (\r\n data.InternalCode !==\r\n (identifier as AssetInternalCodeIdentifier).internalCode\r\n ) {\r\n setIdChanged(true);\r\n }\r\n }\r\n }\r\n }, [data, identifier]);\r\n useEffect(() => {\r\n moveArrayItem(enabledAssetProps, 'ImageName', 0);\r\n addArrayItemByName(\r\n enabledAssetProps,\r\n 'AssetAssemblyStructure',\r\n 'ImageName',\r\n );\r\n moveArrayItemByName(enabledAssetProps, 'Status', 'ServiceGroup');\r\n const rs = [\r\n ...DefaultRows.map(r => dict[r]),\r\n ...enabledAssetProps.flatMap(assetProp => {\r\n let val = dict[assetProp.Id];\r\n if (!!val) {\r\n val.Name = assetProp.DisplayName ?? val.Name;\r\n if (val.dependencies && !!val.dependencies.length) {\r\n return [val, ...val.dependencies.map(v => dict[v])];\r\n }\r\n }\r\n return val;\r\n }),\r\n ].filter(v => !!v);\r\n setRequestParams(rs);\r\n setRows(rs);\r\n }, [assetProps, dict, enabledAssetProps, setRequestParams]);\r\n useEffect(() => {\r\n if (rows.length === 0 || (data !== undefined && idChanged === false))\r\n return;\r\n setLoading(true);\r\n\r\n let active = true;\r\n const cancelToken = httpClient.cancelToken.source();\r\n async function fetchData() {\r\n try {\r\n const params = {\r\n $select: selectColumns,\r\n $expand: expandColumns,\r\n };\r\n\r\n const res = await fetchAssetBy({\r\n id: identifier,\r\n params,\r\n isAuth: isAuthenticated,\r\n });\r\n\r\n if (active && res !== undefined) {\r\n res.Division = res.ServiceGroup?.DivisionName;\r\n res.AssetCatGroup =\r\n res.AssetCat !== null &&\r\n !!res.AssetCat &&\r\n res.AssetCat.GroupId &&\r\n res.AssetCat.AssetCatGroupName\r\n ? {\r\n Id: res.AssetCat.GroupId,\r\n Name: res.AssetCat.AssetCatGroupName,\r\n ServiceGroups: [],\r\n }\r\n : null;\r\n res.Status = ' ';\r\n res.AlertsEnabled = isAuthenticated\r\n ? GetAlertsEnabled(\r\n AvailabilityTypes[res.AvailabilityType.Id],\r\n res.Active,\r\n )\r\n : false;\r\n setData(res);\r\n loadButtonsAdditionalData(res);\r\n loadAdditionalData(res);\r\n }\r\n setLoading(false);\r\n setIdChanged(false);\r\n } catch (error) {\r\n console.error(error);\r\n setLoading(false);\r\n }\r\n }\r\n\r\n fetchData();\r\n\r\n return () => {\r\n active = false;\r\n setLoading(false);\r\n cancelToken.cancel('cancelled');\r\n };\r\n }, [\r\n data,\r\n expandColumns,\r\n idChanged,\r\n identifier,\r\n isAuthenticated,\r\n loadAdditionalData,\r\n loadButtonsAdditionalData,\r\n rows.length,\r\n selectColumns,\r\n ]);\r\n useEffect(() => {\r\n if (usageStarted) {\r\n dispatch(usageStateActions.setUsageStarted(false));\r\n if (data !== undefined) {\r\n loadButtonsAdditionalData(data);\r\n }\r\n }\r\n }, [data, dispatch, loadButtonsAdditionalData, usageStarted]);\r\n const handleEndUsage = React.useCallback(\r\n (usageData: EndUsageData) => {\r\n if (buttonsData?.UsageId) {\r\n setEndUsageProcessing(true);\r\n AssetDetailsApi.endUsage(buttonsData?.UsageId, usageData)\r\n .then(response => {\r\n setEndUsageProcessing(false);\r\n\r\n if (response.ErrorMessages.length > 0) {\r\n response.ErrorMessages.forEach(errmsg =>\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: errmsg,\r\n }),\r\n ),\r\n );\r\n } else {\r\n setOpenEndUsage(false);\r\n if (data !== undefined) {\r\n loadButtonsAdditionalData(data);\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n response.SuccessMessages.forEach(msg =>\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'success',\r\n message: msg,\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n response.WarningMessages.forEach(wrnmsg =>\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'warning',\r\n message: wrnmsg,\r\n }),\r\n ),\r\n );\r\n }\r\n }\r\n })\r\n .catch(e => console.error(e))\r\n .finally(() => setEndUsageProcessing(false));\r\n }\r\n },\r\n [actions, buttonsData?.UsageId, data, dispatch, loadButtonsAdditionalData],\r\n );\r\n\r\n const assetActions = useAssetActions({\r\n useSidePanel,\r\n openPanel,\r\n });\r\n const topActions: ActionRenderer[] = useMemo(() => {\r\n let buttonActions = [] as ActionRenderer[];\r\n if (\r\n data !== undefined &&\r\n buttonsData !== undefined &&\r\n data.AvailabilityType !== undefined &&\r\n loading === false &&\r\n loadingButtonsAdditionalData === false\r\n ) {\r\n return assetActions({\r\n Name: data.Name,\r\n assetId: data.Id,\r\n serviceId: data.ServiceId,\r\n serviceTypeId:\r\n data.ServiceType === null ? null : ServiceType[data.ServiceType],\r\n setOpenEndUsage: setOpenEndUsage,\r\n active: data.Active,\r\n allowToUser: data.AllowToUser ?? undefined,\r\n buttonsData: buttonsData,\r\n availabilityId: AvailabilityTypes[data.AvailabilityType.Id] as number,\r\n canBeCreatedFromLinkOnly: data.CanBeCreatedFromLinkOnly,\r\n canRequestAccessToCore: data.ServiceGroup?.CanRequestAccess,\r\n coreApprovalStatusId: data.ServiceGroup?.ApprovalStatusId ?? undefined,\r\n addFromCalendar: addFromCalendar,\r\n authenticatedUser: authenticatedUser,\r\n divisionId: data.ServiceGroup?.DivisionId ?? undefined,\r\n isAuthenticated: isAuthenticated ?? false,\r\n isDashboardCore: isDashboardCore,\r\n mismatchCore: mismatchCore,\r\n saveCore: () => {\r\n dispatch(\r\n actions.saveGlobalServiceGroupFilter([\r\n {\r\n Id: data.ServiceGroup?.Id,\r\n Name: data.ServiceGroup?.Name,\r\n },\r\n ]),\r\n );\r\n dispatch(layoutActions.resetSidePanel());\r\n history.push('/dashboards/core/' + data.ServiceGroup?.Id);\r\n },\r\n serviceGroupId: data.ServiceGroup?.Id,\r\n serviceGroupName: data.ServiceGroup?.Name,\r\n });\r\n }\r\n return buttonActions;\r\n }, [\r\n actions,\r\n addFromCalendar,\r\n assetActions,\r\n authenticatedUser,\r\n buttonsData,\r\n data,\r\n dispatch,\r\n history,\r\n isAuthenticated,\r\n isDashboardCore,\r\n layoutActions,\r\n loading,\r\n loadingButtonsAdditionalData,\r\n mismatchCore,\r\n ]);\r\n\r\n const tabs = useMemo(() => {\r\n if (data !== undefined) {\r\n const res: TabContent[] = [];\r\n res.push({\r\n Name: t(translations.AssetDetailsTab_Details),\r\n Id: 'details',\r\n Content: (\r\n \r\n ),\r\n });\r\n if (\r\n isBookable(data.AvailabilityType?.Id) &&\r\n isAuthenticated &&\r\n !readOnlyUser\r\n ) {\r\n res.push({\r\n Name: t(translations.BookingRules),\r\n Id: 'BookingRules',\r\n Content: (\r\n \r\n ),\r\n });\r\n }\r\n if (\r\n !hideTrainingSessionsSettings &&\r\n isBookable(data.AvailabilityType?.Id) &&\r\n isAuthenticated &&\r\n !readOnlyUser\r\n ) {\r\n if (\r\n data.AvailabilityType?.Id !== 'LectureRoom' ||\r\n (!data.HideTrainingSession && data.Active)\r\n ) {\r\n const serviceType =\r\n data.ServiceType !== null\r\n ? ServiceType[data.ServiceType]\r\n : undefined;\r\n res.push({\r\n Name: t(translations.TrainingSessions),\r\n Id: 'trainingSessions',\r\n Content: (\r\n \r\n ),\r\n endIcon: ,\r\n });\r\n updateCountersEnable('TrainingSessions', true);\r\n } else {\r\n updateCountersEnable('TrainingSessions', false);\r\n }\r\n }\r\n if (\r\n isAuthenticated &&\r\n !readOnlyUser &&\r\n data.AvailabilityType?.Id !== 'RequestRelated' &&\r\n data.IncidentSettings\r\n ) {\r\n res.push({\r\n Name: t(translations.AssetDetailsTab_WorkOrders),\r\n Id: 'workOrders',\r\n Content: (\r\n \r\n ),\r\n endIcon: ,\r\n });\r\n updateCountersEnable('WorkOrders', true);\r\n } else {\r\n updateCountersEnable('WorkOrders', false);\r\n }\r\n if (calibrationsEnabled(data)) {\r\n res.push({\r\n Name: t(translations.Calibrations),\r\n Id: 'calibrations',\r\n Content: (\r\n \r\n ),\r\n endIcon: ,\r\n });\r\n }\r\n if (publicationsEnabled(data)) {\r\n res.push({\r\n Name: t(translations.Publications),\r\n Id: 'publications',\r\n Content: (\r\n \r\n ),\r\n endIcon: ,\r\n });\r\n }\r\n if (\r\n isAuthenticated &&\r\n data.ServiceId !== null &&\r\n (data.ServiceType === 'Online' ||\r\n isOnlineService(data.AvailabilityType?.Id)) &&\r\n !readOnlyUser\r\n ) {\r\n res.push({\r\n Name: t(translations.menu_ReservationWaitingList),\r\n Id: 'waitinglist',\r\n Content: (\r\n \r\n ),\r\n endIcon: ,\r\n });\r\n }\r\n /*res.push({\r\n Name:\r\n t(translations.AssetDetailsTab_MyReservations) +\r\n ` (${counters.Reservations.Count})`,\r\n Id: 'my_reservations',\r\n Content: <>reservations,\r\n });*/\r\n /*res.push({\r\n Name: t(translations.AssetDetailsTab_Schedule),\r\n Id: 'schedule',\r\n Content: <>schedule,\r\n });*/\r\n return res;\r\n } else return [];\r\n }, [\r\n authenticatedUser,\r\n calibrationsEnabled,\r\n counters.Calibrations.Count,\r\n counters.Publications.Count,\r\n counters.TrainingSessions.Count,\r\n counters.WaitingList.Count,\r\n counters.WorkOrders.Count,\r\n data,\r\n hideTrainingSessionsSettings,\r\n isAdmin,\r\n isAuthenticated,\r\n isCover,\r\n loadingAdditionalData,\r\n openPanel,\r\n publicationsEnabled,\r\n readOnlyUser,\r\n rows,\r\n shortView,\r\n t,\r\n updateCountersEnable,\r\n useSidePanel,\r\n ]);\r\n\r\n const handleCloselClick = React.useCallback(() => {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n onClose: () => {\r\n !!onClose && onClose();\r\n },\r\n } as SidePanelCloseState);\r\n }, [closePanel, isCover, onClose, useSidePanel]);\r\n\r\n const pageName = useMemo(() => {\r\n if (data !== undefined && data.AvailabilityType !== undefined) {\r\n if (\r\n AvailabilityTypes[data.AvailabilityType?.Id] ===\r\n AvailabilityTypes.ServiceGroup\r\n ) {\r\n return t(translations.ServiceGroup);\r\n } else {\r\n if (data.ServiceType !== null) {\r\n switch (data.ServiceType) {\r\n case 'Online':\r\n return t(translations.Instrument);\r\n case 'Offline':\r\n return t(translations.ConsumableType);\r\n case 'Sample':\r\n return t(translations.RequestType);\r\n default:\r\n return '';\r\n }\r\n } else {\r\n return t(translations.Instrument);\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n }, [data, t]);\r\n // more direct loading/fetch state indicator will be more appropriate here to determine that fetch operations are finished and no asset details were found\r\n const dataFound = data && tabs !== undefined && tabs.length > 0;\r\n if (!loading && !dataFound && data === undefined) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n {showAssetImage ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n {dataFound ? (\r\n \r\n \r\n {isAuthenticated && buttonsData?.UsageId && (\r\n \r\n setOpenEndUsage(false)}\r\n onConfirm={handleEndUsage}\r\n />\r\n \r\n )}\r\n \r\n \r\n ) : (\r\n <>{t(translations.err_Equipment_NotFound)}\r\n )}\r\n \r\n }\r\n closeSidePanel={handleCloselClick}\r\n rightTopActions={!shortView ? topActions : undefined}\r\n rightActionsLoading={!shortView && loadingButtonsAdditionalData}\r\n leftTopActions={shortView ? topActions : undefined}\r\n leftActionsLoading={shortView && loadingButtonsAdditionalData}\r\n maxLeftTopButtonsLength={\r\n reservationsEnabled ? maxLeftTopButtonsLength : 1\r\n }\r\n rightTopActionsLength={reservationsEnabled ? 2 : 1}\r\n isCover={isCover}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n cover={assetCover}\r\n coverClosed={coverClosed}\r\n />\r\n \r\n );\r\n};\r\n","/**\r\n * Asynchronously loads the component for NotFoundPage\r\n */\r\n\r\nimport { lazyLoad } from 'utils/loadable';\r\n\r\nexport const NotFoundPage = lazyLoad(\r\n () => import('./index'),\r\n module => module.NotFoundPage,\r\n);\r\n","import { BaseToggleButtonGroup } from 'app/components/BasicButtons/BaseToggleButtonGroup';\r\nimport { useProfileSetting } from 'app/components/BasicTable/useProfileSetting';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { ReservationDetailsProps } from 'app/pages/ReservationDetails/Details';\r\nimport { WorkOrderDetailsProps } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details';\r\nimport { EmptySlotAdminClick } from 'enums/EmptySlotAdminClick';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface SwitchActionsProps {\r\n target: SwitchTarget;\r\n getProps: () => ReservationDetailsProps | WorkOrderDetailsProps;\r\n}\r\nexport enum SwitchTarget {\r\n WorkOrder = 1,\r\n Reservation = 2,\r\n}\r\n\r\nexport function SwitchActions(props: SwitchActionsProps) {\r\n const { target, getProps } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const { updateValue: updateX } = useProfileSetting({\r\n profileSettingKey: 'EmptySlotAdminClick',\r\n });\r\n const openReservation = React.useCallback(() => {\r\n let params = getProps() as ReservationDetailsProps;\r\n setTimeout(\r\n () =>\r\n dispatch(\r\n actions.openSidePanel({\r\n type: RenderPageType.ReservationDetails,\r\n props: params,\r\n }),\r\n ),\r\n null,\r\n );\r\n updateX(EmptySlotAdminClick.ReservationsOnly.toString());\r\n }, [actions, dispatch, getProps, updateX]);\r\n const openWorkOrder = React.useCallback(() => {\r\n let params = getProps() as WorkOrderDetailsProps;\r\n setTimeout(\r\n () =>\r\n dispatch(\r\n actions.openSidePanel({\r\n type: RenderPageType.WorkOrderDetails,\r\n props: params,\r\n }),\r\n ),\r\n null,\r\n );\r\n updateX(EmptySlotAdminClick.DownTimeOnly.toString());\r\n }, [actions, dispatch, getProps, updateX]);\r\n const options = [\r\n {\r\n Id: 2,\r\n Name: t(translations.SwitchToReservationTitle),\r\n },\r\n {\r\n Id: 1,\r\n Name: t(translations.SwitchToDowntime),\r\n },\r\n ];\r\n const [selectedOption, setSelectedOption] = React.useState>(\r\n options.filter(f => f.Id !== (target as number))[0],\r\n );\r\n const handleChange = (item: Entity | null) => {\r\n let selected = item === null ? options[0] : item;\r\n if (selected.Id === (target as number)) {\r\n setSelectedOption(selected);\r\n if (selected.Id === (SwitchTarget.WorkOrder as number)) {\r\n openWorkOrder();\r\n } else {\r\n openReservation();\r\n }\r\n }\r\n };\r\n return (\r\n \r\n []}\r\n onChange={handleChange}\r\n fullWidth={true}\r\n value={selectedOption}\r\n orientation={'horizontal'}\r\n variant={'white'}\r\n />\r\n {/* openReservation()}\r\n >\r\n {t(translations.SwitchToReservationTitle)}\r\n \r\n openWorkOrder()}\r\n >\r\n {t(translations.SwitchToDowntime)}\r\n */}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ActionIconButton\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { IconProp } from 'app/AllIcons';\r\nimport { ButtonsVariant } from '../Button';\r\n\r\nexport interface ActionIconButtonProps {\r\n onClick?: React.MouseEventHandler;\r\n disabled?: boolean;\r\n icon: IconProp;\r\n title: string;\r\n variant?: ButtonsVariant;\r\n size?: 'large' | 'medium' | 'small' | 'xs';\r\n autoFocus?: boolean;\r\n shape?: 'circle' | 'square';\r\n customIcon?: React.ReactNode;\r\n to?: string;\r\n href?: string | IPathAndQuery;\r\n id?: string;\r\n target?: string;\r\n}\r\n\r\nexport function ActionIconButton({\r\n disabled,\r\n onClick,\r\n title,\r\n icon,\r\n variant,\r\n size,\r\n autoFocus,\r\n shape,\r\n customIcon,\r\n to,\r\n href,\r\n id,\r\n target,\r\n ...other\r\n}: ActionIconButtonProps) {\r\n return (\r\n \r\n {customIcon ? customIcon : }\r\n \r\n );\r\n}\r\n","import { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { GlobalSettingsType } from '../components/useGlobalSettingsHook';\r\nimport { IReservationEquipmentDto } from './types';\r\n\r\n/**\r\n * This function determines if the budgets are enabled and should be visible for particular online services selection\r\n * @param globalSettings global settings\r\n * @param equipments related online services\r\n * @returns\r\n */\r\n\r\nexport function getBudgetVisible(\r\n globalSettings: Pick<\r\n GlobalSettingsType,\r\n | 'billingModuleEnabled'\r\n | 'budgetModuleEnabled'\r\n | 'priceSheetPricing'\r\n | 'projectsAreOptional'\r\n >,\r\n equipments: Array<\r\n Pick<\r\n IReservationEquipmentDto,\r\n 'HideProjects' | 'BudgetsTurnedOn' | 'Billable'\r\n > & { ServiceTypeId: number }\r\n >,\r\n): boolean {\r\n if (!globalSettings.budgetModuleEnabled) {\r\n return false;\r\n }\r\n\r\n const isNotBillable = GetIsNotBillable(globalSettings, equipments);\r\n if (isNotBillable !== undefined) {\r\n return isNotBillable;\r\n }\r\n\r\n // HideProjects is enabled only when ProjectsAreOptional is turned on in the system settings\r\n if (globalSettings.projectsAreOptional) {\r\n if (equipments.every(f => f.HideProjects)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * Returns false in case the instrument is not billable given it makes any sense (e.g. billing is turned on)\r\n * Otherwise it's undefined\r\n * @param globalSettings\r\n * @param equipments\r\n * @returns\r\n */\r\n\r\nexport function GetIsNotBillable(\r\n globalSettings: Pick<\r\n GlobalSettingsType,\r\n 'billingModuleEnabled' | 'budgetModuleEnabled' | 'priceSheetPricing'\r\n >,\r\n equipments?: Array<\r\n Pick & {\r\n ServiceTypeId: number;\r\n }\r\n >,\r\n) {\r\n if (globalSettings.billingModuleEnabled) {\r\n // Billable is only shown on the instrument details when the PriceSheetPricing is off.\r\n // Otherwise the instruments will with Billable = false, which should be ignored since they are in fact billable\r\n // on reservationEdit Billable might have \"true\" which is different from the actual value in db/model\r\n if (globalSettings.priceSheetPricing === false) {\r\n if (\r\n equipments?.every(\r\n f => f.Billable === false && f.ServiceTypeId === ServiceType.Online,\r\n )\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n // budgets turned off on service group level (BudgetsTurnedOn)\r\n // active only if the budgets are turned on\r\n if (\r\n globalSettings.budgetModuleEnabled === true &&\r\n equipments?.every(f => f.BudgetsTurnedOn === false)\r\n ) {\r\n return false;\r\n }\r\n }\r\n}\r\n","/**\r\n *\r\n * EquipmentReservationPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport {\r\n AutocompleteMultiPickerEx,\r\n AutocompleteMultiPickerExProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPickerEx';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { IReservationEquipmentDto } from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport { AutocompletePicker } from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nexport interface ReservationEquipmentsPickerProps\r\n extends Omit<\r\n AutocompleteMultiPickerExProps,\r\n 'loadData'\r\n > {\r\n inputProps?: InputBaseComponentProps;\r\n}\r\nconst url = '/api/odata/v4/ReservationEquipments';\r\nexport const initEquipmentsData = (\r\n initval: string | undefined,\r\n expand: string | undefined,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n let ids = (\r\n initval.indexOf(',') !== -1 ? initval.split(',') : [initval]\r\n ).map(item => {\r\n return { Id: parseInt(item) };\r\n }) as Identifiable[];\r\n let foo: string | undefined = undefined;\r\n if (ids.length > 0) {\r\n const predicates: string | Condition[] = [];\r\n\r\n predicates.push(new Condition('Id', ODataOperators.Includes, ids));\r\n\r\n foo = predicates.map(f => f.toString()).join(' and ');\r\n }\r\n\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n $expand?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: foo,\r\n $skip: 0,\r\n $top: 10,\r\n $expand: expand,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n expandedColumns?: string,\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'AccServices',\r\n 'AllowOneAccSerOnly',\r\n 'AllowPartialProjectCharges',\r\n 'AllowPartialSingleProjectCharges',\r\n 'AllowReservationCollaborators',\r\n 'ForceFullDayReservations',\r\n 'AssemblyId',\r\n 'HasAssemblyParts',\r\n 'AssetId',\r\n 'Billable',\r\n 'BudgetsTurnedOn',\r\n 'Color',\r\n 'DefaultAccServiceId',\r\n 'DefaultReservationDuration',\r\n 'FirstCustomFormId',\r\n 'ForceTutoring',\r\n 'HasAttendance',\r\n 'HideProjects',\r\n 'HideTrainingSession',\r\n 'IsEquipmentTutoring',\r\n 'MandatoriesEquipments',\r\n 'OfflineServices',\r\n 'MinOrderHours',\r\n 'NotAllowReservations',\r\n 'OptionalsEquipments',\r\n 'ReservationOfflineServicesEnabled',\r\n 'RestrictReservationToTimeSlots',\r\n 'TrainingSignUpApproval',\r\n 'ServiceGroupId',\r\n 'ServiceGroupName',\r\n 'CustomFormId',\r\n 'FirstCustomFormId',\r\n 'CustomForms',\r\n 'AllowModification',\r\n 'AllowExtendReservation',\r\n 'AllowUsersToShortenReservations',\r\n 'AllowedToTransfer',\r\n 'AllowedToTransferAll',\r\n 'EnforceReservationRestrictions',\r\n 'LimitlessReservationAllowed',\r\n 'MaxOrderHours',\r\n 'MinOrderGap',\r\n 'LoanTypeId',\r\n 'StaffUserSelection',\r\n 'StaffUserSelectionRequired',\r\n 'StaffUserSelectionVisible',\r\n 'RequireUserGroupCoordApproval',\r\n 'DraftReservationsTypeId',\r\n 'AutoMode',\r\n ],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n\r\n expand: expandedColumns,\r\n });\r\nexport function ReservationEquipmentsPicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n expandedColumns,\r\n ...props\r\n}: ReservationEquipmentsPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(\r\n predicates,\r\n globalServiceGroupFilter || [],\r\n expandedColumns,\r\n );\r\n return (\r\n \r\n );\r\n}\r\nexport function ReservationSingleEquipmentPicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n expandedColumns,\r\n ...props\r\n}: ReservationEquipmentsPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(\r\n predicates,\r\n globalServiceGroupFilter || [],\r\n expandedColumns,\r\n );\r\n return (\r\n {\r\n if (!!onChange) {\r\n if (value !== null) {\r\n return onChange([value]);\r\n } else {\r\n return onChange([]);\r\n }\r\n }\r\n }}\r\n disabled={disabled}\r\n info={info}\r\n id={id || 'reservation-equip-single-picker'}\r\n helperText={helperText}\r\n required={required}\r\n className={className}\r\n onBlur={props.onBlur}\r\n placeholder={placeholder}\r\n defaultValue={\r\n !!defaultValue\r\n ? defaultValue.length > 0\r\n ? (defaultValue[0] as IReservationEquipmentDto | undefined | null)\r\n : undefined\r\n : undefined\r\n }\r\n label={label}\r\n value={\r\n !!value\r\n ? value.length > 0\r\n ? (value[0] as IReservationEquipmentDto | undefined | null)\r\n : undefined\r\n : undefined\r\n }\r\n ariaLabel={'Equipment search'}\r\n {...props}\r\n error={props.error}\r\n />\r\n );\r\n}\r\nexport function ReservationsEquipmentFilter(\r\n firstInitEquipments: number[],\r\n mandatoryIds: number[],\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [\r\n // assembly parts should not appear in the equipment picker on the reservation side panel\r\n // only regular equipments and those that are at the top of the assembly are bookable directly\r\n new Condition(\r\n 'AssemblyId',\r\n ODataOperators.Equals,\r\n null,\r\n ),\r\n ];\r\n if (firstInitEquipments.length > 0) {\r\n let ids = firstInitEquipments.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (mandatoryIds.length > 0) {\r\n let ids = mandatoryIds.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Excludes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n\r\nexport const loadEquipments = loadData;\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport {\r\n OfflineServiceTypePicker,\r\n OfflineServiceTypePickerProps,\r\n} from '../pickers/AutocompletePickers/OfflineServiceTypePicker';\r\n\r\nexport const FormOfflineServiceTypePicker = (\r\n props: FieldHookConfig &\r\n Omit,\r\n) => {\r\n const [field, meta, helpers] = useField(\r\n props,\r\n );\r\n const handleChange = val => {\r\n props.onChange?.(val);\r\n helpers.setValue(val, true);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","import styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport const CommentsWrapper = styled.div`\r\n &.comments-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n width: 100%;\r\n & .comments-title {\r\n gap: 16px;\r\n display: flex;\r\n padding-bottom: 0px;\r\n align-items: center;\r\n flex-direction: row;\r\n align-self: stretch;\r\n }\r\n & .comment-item {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 24px;\r\n align-self: stretch;\r\n & .add-comment-box {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n align-self: stretch;\r\n }\r\n }\r\n & .comment-root {\r\n gap: 16px;\r\n display: flex;\r\n padding: 16px;\r\n align-items: flex-start;\r\n flex-direction: row;\r\n border: 1px dashed #9aa3b2;\r\n border-radius: 8px;\r\n & .comment-content {\r\n gap: 8px;\r\n display: flex;\r\n padding: 0px;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n & .comment-text {\r\n gap: 8px;\r\n display: flex;\r\n padding: 0px;\r\n align-items: center;\r\n flex-direction: row;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport const CommentSection = styled.div`\r\n &.comment-section {\r\n display: flex;\r\n padding: 16px 0px;\r\n gap: 16px;\r\n align-items: flex-start;\r\n align-self: stretch;\r\n flex-direction: row;\r\n border-bottom: 1px solid ${bookitColors.grayscale.graySelection};\r\n width: 100%;\r\n & .comment-text-files {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 16px;\r\n flex: 1 0 0;\r\n & .comment-text {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n align-self: stretch;\r\n gap: 8px;\r\n & .comment-name-time {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n gap: 4px;\r\n align-self: stretch;\r\n & .comment-name-title-buttons {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n align-self: stretch;\r\n min-height: 32px;\r\n gap: 8px;\r\n & .comment-name-title {\r\n flex: 1 0 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","import axios from 'axios';\r\nimport { CancelTokenSource } from 'axios';\r\nimport { UploadLargeFileApi } from './Api';\r\nimport { CancelToken } from 'axios';\r\nimport { Guid } from 'guid-typescript';\r\n\r\nexport interface AddFileResponse {\r\n Result: boolean;\r\n FileId: Guid | null;\r\n UploadId: string | null;\r\n ETag: string | null;\r\n PartNumber: number | null;\r\n Message: string | null;\r\n NeedCompleteMultipartUpload: boolean;\r\n FileTypeId?: number;\r\n}\r\nexport interface S3DS_UploadRespunse {\r\n ETag: string;\r\n PartNumber: number;\r\n}\r\n// Each part must be at least 5 MB in size, except the last part.\r\n// https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html\r\nexport const minChunkSize = 5 * 1024 * 1024;\r\nexport class UploadLargeFile {\r\n private cancelTokenSource?: CancelTokenSource;\r\n private cancelToken?: any;\r\n private _pause: boolean = false;\r\n private _busy: boolean = false;\r\n public finished: boolean = false;\r\n public fileId: Guid | null = null;\r\n public uploadId: string | null = null;\r\n public NeedCompleteMultipartUpload: boolean = false;\r\n private uploadResponses: S3DS_UploadRespunse[] = [];\r\n public fileTypeId?: number;\r\n public get pause() {\r\n return this._pause;\r\n }\r\n public set pause(value: boolean) {\r\n if (this._pause !== value) {\r\n this._pause = value;\r\n if (value) {\r\n this.cancel();\r\n }\r\n }\r\n }\r\n public get busy() {\r\n return this._busy;\r\n }\r\n public set busy(value: boolean) {\r\n this._busy = value;\r\n }\r\n public cancel() {\r\n this.cancelTokenSource?.cancel();\r\n }\r\n public stopAndCancel() {\r\n this.cancelTokenSource?.cancel();\r\n this.pause = true;\r\n }\r\n conscreateCancelToken() {\r\n this.cancelTokenSource = axios.CancelToken.source();\r\n this.cancelToken = this.cancelTokenSource.token;\r\n }\r\n public async deleteUnfinishedLargeFiles() {\r\n if (!this.finished && this.fileId !== null) {\r\n await DeleteUnfinishedLargeFiles([this.fileId], this.uploadId);\r\n this.fileId = null;\r\n this.uploadId = null;\r\n this.uploadResponses = [];\r\n }\r\n }\r\n private finish() {\r\n this.finished = true;\r\n this.fileId = null;\r\n this.uploadId = null;\r\n }\r\n async upload(\r\n file: File,\r\n chunkSendResult: (\r\n res: boolean,\r\n pos: number,\r\n part: number,\r\n error?: string,\r\n ) => void,\r\n continueFrom: { start: number; part: number } | null,\r\n uploadEnd: () => void,\r\n targetId: number,\r\n CompletionResult: (value: boolean) => void,\r\n ) {\r\n if (this.finished === false && this.busy === false && targetId > 0) {\r\n this.busy = true;\r\n let start = 0;\r\n let part = 0;\r\n this.conscreateCancelToken();\r\n try {\r\n this.pause = false;\r\n if (file !== undefined && file.size > 0) {\r\n const size = Math.floor(file.size / 100);\r\n const chunkSize: number = size < minChunkSize ? minChunkSize : size;\r\n if (continueFrom !== null) {\r\n start = continueFrom.start;\r\n part = continueFrom.part;\r\n } else {\r\n this.fileId = null;\r\n this.uploadResponses = [];\r\n }\r\n while (start < file.size) {\r\n const res = await uploadChunk(\r\n file,\r\n file.slice(start, start + chunkSize),\r\n start,\r\n part,\r\n targetId,\r\n this.fileId,\r\n this.uploadId,\r\n this.cancelToken,\r\n this.fileTypeId,\r\n );\r\n if (res.Result) {\r\n this.fileId = res.FileId;\r\n this.uploadId = res.UploadId;\r\n this.NeedCompleteMultipartUpload =\r\n res.NeedCompleteMultipartUpload;\r\n if (\r\n this.uploadId !== null &&\r\n this.uploadId !== '' &&\r\n res.ETag !== null &&\r\n res.PartNumber !== null &&\r\n res.NeedCompleteMultipartUpload\r\n ) {\r\n this.uploadResponses.push({\r\n ETag: res.ETag,\r\n PartNumber: res.PartNumber,\r\n });\r\n }\r\n start += chunkSize;\r\n part++;\r\n chunkSendResult(true, start, part);\r\n if (this.pause) {\r\n uploadEnd();\r\n return;\r\n }\r\n } else {\r\n chunkSendResult(false, start, part, res.Message ?? undefined);\r\n return;\r\n }\r\n }\r\n }\r\n } finally {\r\n if (start >= file.size) {\r\n if (\r\n this.uploadId !== null &&\r\n this.uploadResponses.length > 0 &&\r\n this.NeedCompleteMultipartUpload\r\n ) {\r\n const res = await CompleteMultipartUpload(\r\n this.fileId,\r\n this.uploadId,\r\n this.uploadResponses,\r\n );\r\n if (res) {\r\n this.finish();\r\n } else {\r\n CompletionResult(false);\r\n }\r\n } else {\r\n this.finish();\r\n }\r\n }\r\n uploadEnd();\r\n this.busy = false;\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst Api = new UploadLargeFileApi();\r\nasync function uploadChunk(\r\n file: File,\r\n chunk: Blob,\r\n pos: number,\r\n part: number,\r\n targetId: number,\r\n fileId: Guid | null,\r\n uploadId: string | null,\r\n cancel?: CancelToken,\r\n fileTypeId?: number,\r\n): Promise {\r\n try {\r\n const res = await Api.uploadChunck(\r\n //'api/LargeFilesUpload/Upload',\r\n '/api/odata/v4/Comments/AddFile',\r\n file.name,\r\n file.size,\r\n chunk,\r\n pos,\r\n part,\r\n targetId,\r\n fileId,\r\n uploadId,\r\n cancel,\r\n fileTypeId,\r\n );\r\n return Promise.resolve(res.data);\r\n } catch (error: unknown) {\r\n return Promise.resolve({\r\n Result: false,\r\n FileId: null,\r\n UploadId: null,\r\n ETag: null,\r\n PartNumber: null,\r\n Message: null,\r\n NeedCompleteMultipartUpload: false,\r\n FileTypeId: undefined,\r\n });\r\n }\r\n}\r\n\r\nexport async function CompleteMultipartUpload(\r\n fileId: Guid | null,\r\n uploadId: string | null,\r\n uploadResponses: S3DS_UploadRespunse[],\r\n): Promise {\r\n const url = '/api/odata/v4/Comments/CompleteMultipartUpload';\r\n try {\r\n await Api.CompleteMultipartUpload(url, fileId, uploadId, uploadResponses);\r\n return Promise.resolve(true);\r\n } catch {\r\n return Promise.resolve(false);\r\n }\r\n}\r\n\r\nexport async function DeleteUnfinishedLargeFiles(\r\n ids: Guid[],\r\n uploadId: string | null,\r\n): Promise {\r\n const url = '/api/odata/v4/Comments/DeleteUnfinishedLargeFileIds';\r\n try {\r\n await Api.DeleteUnfinishedLargeFiles(url, ids, uploadId);\r\n return Promise.resolve(true);\r\n } catch {\r\n return Promise.resolve(false);\r\n }\r\n}\r\n","import axios, { CancelToken } from 'axios';\r\nimport { Guid } from 'guid-typescript';\r\nimport { S3DS_UploadRespunse } from '.';\r\n\r\nexport class UploadLargeFileApi {\r\n uploadChunck = async (\r\n url: string,\r\n fileName: string,\r\n fileSize: number,\r\n chunck: Blob,\r\n pos: number,\r\n part: number,\r\n targetId: number,\r\n fileId: Guid | null,\r\n uploadId: string | null,\r\n cancel?: CancelToken,\r\n fileTypeId?: number,\r\n ) => {\r\n const formData = new FormData();\r\n formData.append('File', chunck);\r\n formData.append('rawFileName', fileName);\r\n formData.append('fileSize', fileSize.toString());\r\n formData.append('pos', pos.toString());\r\n formData.append('part', part.toString());\r\n formData.append('targetId', targetId.toString());\r\n formData.append('uploadId', uploadId ?? '');\r\n formData.append('fileId', fileId !== null ? fileId.toString() : Guid.EMPTY);\r\n formData.append('fileTypeId', fileTypeId?.toString() ?? '');\r\n try {\r\n const response = await axios.post(url, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n cancelToken: cancel,\r\n });\r\n return response;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n };\r\n CompleteMultipartUpload = async (\r\n url: string,\r\n fileId: Guid | null,\r\n uploadId: string | null,\r\n uploadResponses: S3DS_UploadRespunse[],\r\n ) => {\r\n const data = {\r\n fileId: fileId,\r\n uploadId: uploadId,\r\n uploadResponses: uploadResponses,\r\n };\r\n return axios.post(url, data);\r\n };\r\n DeleteUnfinishedLargeFiles = async (\r\n url: string,\r\n ids: Guid[],\r\n uploadId: string | null,\r\n ) => {\r\n const data = { ids: ids, uploadId: uploadId };\r\n return axios.post(url, data);\r\n };\r\n}\r\n","import { Card, CardContent, LinearProgress } from '@material-ui/core';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Body } from 'app/components/Typography';\r\nimport { translations } from 'locales/translations';\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n selectLargeFilesCanUpload,\r\n selectLargeFilesUploadTargetId,\r\n} from '../slice/selectoes';\r\nimport { UploadLargeFile } from '../Upload';\r\nimport { useLargeFilesUploadSlice } from '../slice';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport clsx from 'clsx';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface FileSize {\r\n size: number;\r\n name: string;\r\n}\r\nexport interface FileData {\r\n name: string;\r\n path: string;\r\n size: FileSize;\r\n}\r\nexport interface FileCardProps {\r\n file: File;\r\n remorFile: (name: string) => void;\r\n fileTypeId?: FileTypes;\r\n}\r\nexport const FileCard = ({ file, remorFile, fileTypeId }: FileCardProps) => {\r\n const { t } = useTranslation();\r\n const canUplpoad = useSelector(selectLargeFilesCanUpload);\r\n const targetId = useSelector(selectLargeFilesUploadTargetId);\r\n const [inProgress, setInProgress] = React.useState(false);\r\n const [progress, setProgress] = React.useState(0);\r\n const [part, setPart] = React.useState(0);\r\n const [error, setError] = React.useState(false);\r\n const [show, setShow] = React.useState(true);\r\n const [pause, setPause] = React.useState(false);\r\n const fileSize = getFileSize(file.size);\r\n const dispatch = useDispatch();\r\n const { actions: largeFileActions } = useLargeFilesUploadSlice();\r\n const { actions: notificationActions } = useAppSettingsSlice();\r\n const fileName = React.useMemo(() => file.name, [file.name]);\r\n const uploadLargeFile = React.useMemo(() => new UploadLargeFile(), []);\r\n const closeHandler = useCallback(async () => {\r\n if (!inProgress) {\r\n setShow(false);\r\n await uploadLargeFile.deleteUnfinishedLargeFiles();\r\n remorFile(file.name);\r\n } else {\r\n setPause(true);\r\n uploadLargeFile.pause = true;\r\n }\r\n }, [file.name, inProgress, remorFile, uploadLargeFile]);\r\n const chunkSendResult = useCallback(\r\n (res: boolean, pos: number, part: number, error?: string) => {\r\n if (res) {\r\n setProgress(pos);\r\n setPart(part);\r\n } else {\r\n setProgress(pos);\r\n setPart(part);\r\n setInProgress(false);\r\n if (uploadLargeFile.pause === false) {\r\n setError(true);\r\n }\r\n if (error !== undefined) {\r\n dispatch(\r\n notificationActions.addNotification({\r\n variant: 'error',\r\n message: error,\r\n }),\r\n );\r\n }\r\n }\r\n },\r\n [dispatch, notificationActions, uploadLargeFile.pause],\r\n );\r\n const CompletionResult = useCallback(\r\n (value: boolean) => {\r\n if (!value) {\r\n setError(true);\r\n dispatch(\r\n notificationActions.addNotification({\r\n variant: 'error',\r\n message: 'Upload is failed',\r\n }),\r\n );\r\n }\r\n },\r\n [dispatch, notificationActions],\r\n );\r\n\r\n const uploadEnd = useCallback(() => {\r\n if (pause) {\r\n setInProgress(false);\r\n } else {\r\n setInProgress(false);\r\n dispatch(largeFileActions.removeFile(fileName));\r\n setShow(false);\r\n }\r\n }, [dispatch, fileName, largeFileActions, pause]);\r\n useEffect(() => {\r\n if (canUplpoad) {\r\n setInProgress(true);\r\n dispatch(largeFileActions.addFile(fileName));\r\n uploadLargeFile.fileTypeId = fileTypeId;\r\n uploadLargeFile.upload(\r\n file,\r\n chunkSendResult,\r\n null,\r\n uploadEnd,\r\n targetId,\r\n CompletionResult,\r\n );\r\n }\r\n return () => {\r\n if (!uploadLargeFile.busy) {\r\n uploadLargeFile.stopAndCancel();\r\n uploadLargeFile.deleteUnfinishedLargeFiles();\r\n dispatch(largeFileActions.removeFile(fileName));\r\n }\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [canUplpoad]);\r\n return (\r\n <>\r\n {show === true ? (\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {error === false ? (\r\n <>\r\n \r\n \r\n \r\n {file.name}\r\n \r\n \r\n \r\n {inProgress ? (\r\n 0 ? 'determinate' : 'query'}\r\n value={\r\n progress > 0\r\n ? (progress / file.size) * 100\r\n : undefined\r\n }\r\n />\r\n ) : (\r\n <>\r\n {pause === false && (\r\n {fileSize.size + fileSize.name}\r\n )}\r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n \r\n {file.name}\r\n \r\n \r\n {t(translations.ErrorDueUpload)}\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {(error || pause) && (\r\n
    \r\n }\r\n onClick={() => {\r\n if (uploadLargeFile.busy === false) {\r\n setPause(false);\r\n setInProgress(true);\r\n setError(false);\r\n uploadLargeFile.upload(\r\n file,\r\n chunkSendResult,\r\n {\r\n start: progress,\r\n part: part,\r\n },\r\n uploadEnd,\r\n targetId,\r\n CompletionResult,\r\n );\r\n }\r\n }}\r\n >\r\n {t(translations.ReUploadFile)}\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst getFileSize = (size): FileSize => {\r\n var string;\r\n if (size >= 1024 * 1024 * 1024 * 1024) {\r\n size = size / (1024 * 1024 * 1024 * 1024);\r\n string = 'TiB';\r\n } else if (size >= 1024 * 1024 * 1024) {\r\n size = size / (1024 * 1024 * 1024);\r\n string = 'GiB';\r\n } else if (size >= 1024 * 1024) {\r\n size = size / (1024 * 1024);\r\n string = 'MiB';\r\n } else if (size >= 1024) {\r\n size = size / 1024;\r\n string = 'KiB';\r\n } else {\r\n string = 'b';\r\n }\r\n return { size: Math.round(size), name: string };\r\n};\r\n","import * as React from 'react';\r\nimport { FieldHookConfig } from 'formik';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport { TextFieldProps } from 'app/components/TextField';\r\nimport { FileCard } from './FileCard';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useLargeFilesUploadSlice } from '../slice';\r\nimport clsx from 'clsx';\r\nimport { DropBoxWrapper } from '../styled';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface SelectFileProps {\r\n accept: any;\r\n downloadFileName?: string;\r\n filesPlaceholder: React.ReactNode;\r\n maxFilesCount?: number;\r\n maxSize: number;\r\n disableFileUpload?: boolean;\r\n fileTypeId?: FileTypes;\r\n}\r\n\r\nexport const SelectFile = ({\r\n label,\r\n onBlur,\r\n value,\r\n name,\r\n error,\r\n helperText,\r\n accept,\r\n downloadFileName,\r\n filesPlaceholder,\r\n maxFilesCount,\r\n maxSize,\r\n disableFileUpload,\r\n fileTypeId,\r\n ...props\r\n}: FieldHookConfig & TextFieldProps & SelectFileProps) => {\r\n const dispatch = useDispatch();\r\n const { actions: largeFileActions } = useLargeFilesUploadSlice();\r\n const isMobile = DetectIsMobile();\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const showShortView = isMobile || (sidePanelOpen && !sidePanelExpanded);\r\n const maxFiles =\r\n maxFilesCount === undefined ? 1 : maxFilesCount > 20 ? 20 : maxFilesCount;\r\n const onDrop = React.useCallback(\r\n (acceptedFiles: File[]) => {\r\n dispatch(largeFileActions.setSeletedFiles(acceptedFiles.length));\r\n },\r\n [dispatch, largeFileActions],\r\n );\r\n\r\n const { acceptedFiles, getRootProps, getInputProps } = useDropzone({\r\n onDrop,\r\n maxFiles: maxFiles,\r\n //minSize: minChunkSize,\r\n maxSize: maxSize,\r\n accept: accept,\r\n disabled: disableFileUpload,\r\n });\r\n const remorFile = React.useCallback(\r\n (filename: string) => {\r\n const index = acceptedFiles.findIndex(item => item.name === filename);\r\n acceptedFiles.splice(index, 1);\r\n dispatch(largeFileActions.setSeletedFiles(acceptedFiles.length));\r\n },\r\n [acceptedFiles, dispatch, largeFileActions],\r\n );\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n

    {filesPlaceholder}

    \r\n
    \r\n {acceptedFiles.length > 0 && (\r\n
    \r\n {acceptedFiles.map(file => (\r\n \r\n ))}\r\n
    \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import { useTranslation } from 'react-i18next';\r\nimport { SelectFile } from './Components/SelectFile';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { Body } from '../Typography';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectglobalSettings } from 'app/slice/selectors';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface LargeFilesUpdateProps {\r\n maxFilesCount?: number;\r\n disableFileUpload?: boolean;\r\n fileTypeId?: FileTypes;\r\n}\r\nexport function LargeFilesUpdate({\r\n maxFilesCount,\r\n disableFileUpload,\r\n fileTypeId,\r\n}: LargeFilesUpdateProps) {\r\n const { t } = useTranslation();\r\n const systemSettings = useSelector(selectglobalSettings);\r\n const AllowLargeFilesUpload = systemSettings.GetBooleanByKey(\r\n AllowedSettings.AllowLargeFilesUpload,\r\n );\r\n const fileSizeMessage = React.useMemo(() => {\r\n const res = AllowLargeFilesUpload\r\n ? t(translations.MaxLargeFileSize)\r\n : t(translations.MaxUploadFileSize);\r\n return res.replace('{0}', AllowLargeFilesUpload ? '2' : '20');\r\n }, [AllowLargeFilesUpload, t]);\r\n return (\r\n <>\r\n
    \r\n {t(translations.Attachments)}\r\n \r\n {t(translations.DragTheFilesOrBrowse)}\r\n {fileSizeMessage} \r\n \r\n }\r\n maxFilesCount={maxFilesCount}\r\n maxSize={\r\n AllowLargeFilesUpload ? 2 * 1024 * 1024 * 1024 : 20 * 1024 * 1024\r\n }\r\n disableFileUpload={disableFileUpload}\r\n fileTypeId={fileTypeId}\r\n />\r\n
    \r\n \r\n );\r\n}\r\n","import { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useLargeFilesUploadSlice } from '../LargeFilesUpload/slice';\r\nimport { selectLargeFilesUploadSelectedFiles } from '../LargeFilesUpload/slice/selectoes';\r\nimport { IComment, NewComment } from './IComment';\r\nimport * as Yup from 'yup';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { Formik } from 'formik';\r\nimport { DropDown } from '../DropDown';\r\nimport { MenuItem } from '@material-ui/core';\r\nimport { translations } from 'locales/translations';\r\nimport { Button } from '../BasicButtons/Button';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { FormRichTextField } from '../Forms/FormRichTextField';\r\nimport { FormListener } from '../Forms/FormRender/FormRenderer';\r\nimport { LargeFilesUpdate } from '../LargeFilesUpload';\r\nimport { Div100 } from '../AssetQuickSearch/styled';\r\nimport {\r\n FormRow,\r\n FormLeftSection,\r\n FormFieldsSection,\r\n StyledForm,\r\n} from '../Forms/FormsLayout';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface AddCommentProps {\r\n onSubmit: (comment: NewComment, innerSender?: boolean) => void;\r\n onClose: () => void;\r\n withMentions: boolean;\r\n isAdmin?: boolean;\r\n defaultComment?: Partial;\r\n disabled?: boolean;\r\n bindSubmitComment?: any;\r\n disableFileUpload?: boolean;\r\n serviceGroups?: Identifiable[];\r\n fileTypeId?: FileTypes;\r\n}\r\nexport const AddComment = (props: AddCommentProps) => {\r\n const {\r\n onSubmit,\r\n onClose,\r\n withMentions,\r\n isAdmin,\r\n defaultComment,\r\n disabled,\r\n bindSubmitComment,\r\n disableFileUpload,\r\n serviceGroups,\r\n fileTypeId,\r\n } = props;\r\n const { t } = useTranslation();\r\n const formRef = React.useRef(null);\r\n const dispatch = useDispatch();\r\n const { actions: largeFileActions } = useLargeFilesUploadSlice();\r\n const selectedFiles = useSelector(selectLargeFilesUploadSelectedFiles);\r\n\r\n useEffectOnMount(() => {\r\n formRef.current?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n });\r\n React.useEffect(() => {\r\n dispatch(largeFileActions.setCanUpload(0));\r\n }, [dispatch, largeFileActions]);\r\n const userSchema: Yup.SchemaOf> = Yup.object({\r\n Id: Yup.string().ensure(),\r\n Name: Yup.string().ensure(),\r\n });\r\n\r\n const schema: Yup.SchemaOf = Yup.object({\r\n Users: Yup.array().of(userSchema),\r\n Files: Yup.mixed().notRequired(),\r\n Text: Yup.string()\r\n .notRequired()\r\n .test(val => (val ?? '').length > 0 || selectedFiles > 0),\r\n IsInternal: Yup.boolean().nullable(),\r\n });\r\n\r\n const initial: NewComment = {\r\n Text: defaultComment?.Text,\r\n Users: [],\r\n IsInternal: defaultComment?.IsInternal,\r\n };\r\n\r\n const innerClicked = React.useRef(false);\r\n\r\n const handleSubmit = ({ Files, ...values }: NewComment) => {\r\n const comment: NewComment = {\r\n ...values,\r\n };\r\n onSubmit(comment, innerClicked.current);\r\n innerClicked.current = false;\r\n if (selectedFiles === 0) {\r\n onClose();\r\n }\r\n };\r\n return (\r\n {\r\n handleSubmit(values);\r\n //action.resetForm();\r\n }}\r\n initialValues={initial}\r\n validationSchema={schema}\r\n >\r\n {formik => {\r\n if (bindSubmitComment && formik.isValid) {\r\n bindSubmitComment(formik.submitForm);\r\n }\r\n const additionalButtons = [\r\n (className, key) => {\r\n return isAdmin ? (\r\n [\r\n \r\n }\r\n onClick={() => {\r\n formik.getFieldHelpers('IsInternal').setValue(false);\r\n close();\r\n }}\r\n >\r\n {t(translations.VisibleToUsers)}\r\n \r\n ,\r\n \r\n }\r\n onClick={() => {\r\n formik.getFieldHelpers('IsInternal').setValue(true);\r\n close();\r\n }}\r\n >\r\n {t(translations.StaffOnly)}\r\n \r\n ,\r\n ]}\r\n >\r\n \r\n \r\n ) : (\r\n <>\r\n );\r\n },\r\n ];\r\n return (\r\n {\r\n innerClicked.current = true;\r\n formik.handleSubmit(e);\r\n }}\r\n noPadding={true}\r\n id=\"add_comment_form\"\r\n >\r\n {}} fields={[]} />\r\n \r\n \r\n \r\n \r\n formik.getFieldHelpers('Users').setValue(v, true)\r\n }\r\n additionalButtons={additionalButtons}\r\n serviceGroups={serviceGroups}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(translations.AddComment)}\r\n \r\n \r\n {t(translations.Close)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n );\r\n};\r\n","import { Grid } from '@material-ui/core';\r\nimport { Body, InputLabel } from '../Typography';\r\nimport { CommentFile } from './IComment';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { DialogConfirm } from '../DialogConfirm';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { useCallback, useState } from 'react';\r\nimport { CommentsApi } from 'api/CommentsApi';\r\nimport { useResponseModel } from 'app/hooks/useResponseModel';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { DownloadFileButon } from '../DownloadFileButton';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nconst fileSizeToString = (size: number, dp: number = 1) => {\r\n const thresh = 1000;\r\n if (Math.abs(size) < thresh) {\r\n return size + ' B';\r\n }\r\n const units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n let i = -1;\r\n const r = 10 ** dp;\r\n do {\r\n size /= thresh;\r\n i++;\r\n } while (\r\n Math.round(Math.abs(size) * r) / r >= thresh &&\r\n i < units.length - 1\r\n );\r\n return size.toFixed(dp) + ' ' + units[i];\r\n};\r\n\r\nexport const FileButton = ({\r\n file,\r\n canRemove,\r\n onDeleteFile,\r\n fileTypeId,\r\n}: {\r\n file: CommentFile;\r\n canRemove: Boolean;\r\n onDeleteFile: (id: string) => void;\r\n fileTypeId?: FileTypes;\r\n}) => {\r\n const shortenName = (name: string) => {\r\n const [rawName, suffix] = name.split('.');\r\n if (rawName.length < 25) return name;\r\n return rawName.slice(0, 24) + '...' + suffix;\r\n };\r\n const { t } = useTranslation();\r\n const [openDelete, setOpenDelete] = useState(false);\r\n const sendNotifications = useResponseModel();\r\n const close = () => setOpenDelete(false);\r\n const onDelete = useCallback(() => {\r\n close();\r\n onDeleteFile(file.Id);\r\n sendNotifications({\r\n ErrorMessages: [],\r\n SuccessMessages: [t(translations.msg_DeleteFile)],\r\n WarningMessages: [],\r\n });\r\n }, [file.Id, onDeleteFile, sendNotifications, t]);\r\n return (\r\n \r\n \r\n }\r\n fileTypeId={fileTypeId}\r\n />\r\n \r\n \r\n \r\n \r\n {shortenName(file.Name)}}\r\n fileTypeId={fileTypeId}\r\n />\r\n \r\n \r\n \r\n {file.Size && {fileSizeToString(file.Size)}}\r\n \r\n \r\n {canRemove && (\r\n \r\n setOpenDelete(true)}\r\n />\r\n \r\n CommentsApi.removeFile(file.Id)\r\n .then(onDelete)\r\n .catch(e => {\r\n console.error(e);\r\n sendNotifications({\r\n ErrorMessages: [t(translations.err_DeleteFileFailure)],\r\n SuccessMessages: [],\r\n WarningMessages: [],\r\n });\r\n })\r\n }\r\n onCancel={close}\r\n onClose={close}\r\n body={undefined}\r\n title={t(translations.AreYouSure)}\r\n isOpen={openDelete}\r\n />\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { useState } from 'react';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { CommentFile, IComment, NewComment } from './IComment';\r\nimport { parse } from './commentParser';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Caption } from '../Typography';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { UserAvatar } from '../UserAvatar';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport * as React from 'react';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\nimport { FileButton } from './FileButton';\r\nimport { Tooltip } from '../BasicTooltips/Tooltip';\r\nimport { useLargeFilesUploadSlice } from '../LargeFilesUpload/slice';\r\nimport {\r\n selectLargeFilesStartedToUpload,\r\n selectLargeFilesUpload,\r\n selectLargeFilesUploadFilesNumber,\r\n selectLargeFilesUploadTargetId,\r\n selectLargeFilesUploading,\r\n} from '../LargeFilesUpload/slice/selectoes';\r\nimport { CommentsApi } from 'api/CommentsApi';\r\nimport { CommentSection } from './styled';\r\nimport { AddComment } from './AddComment';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface CommentCellProps {\r\n comment: IComment;\r\n onSubmit: (comment: NewComment, innerSender?: boolean) => void;\r\n onClose: () => void;\r\n withMentions: boolean;\r\n isAdmin?: boolean;\r\n onEditComment?: (comment: IComment, newComment: NewComment) => void;\r\n onDeleteComment?: (comment: IComment) => void;\r\n disabled?: boolean;\r\n bindSubmitComment?: any;\r\n checkPermissions?: (comment: IComment) => boolean;\r\n checkEditPermissions?: (comment: IComment) => boolean;\r\n deletable?: boolean;\r\n disableFileUpload?: boolean;\r\n fileTypeId?: FileTypes;\r\n}\r\n\r\nexport const CommentCell = (props: CommentCellProps) => {\r\n const {\r\n comment,\r\n onClose,\r\n withMentions,\r\n isAdmin,\r\n onEditComment,\r\n onDeleteComment,\r\n disabled,\r\n bindSubmitComment,\r\n checkPermissions,\r\n checkEditPermissions,\r\n deletable,\r\n disableFileUpload,\r\n fileTypeId,\r\n } = props;\r\n const dispatch = useDispatch();\r\n const { actions: largeFileActions } = useLargeFilesUploadSlice();\r\n const [hover, setHover] = useState(false);\r\n const [edit, setEdit] = useState(false);\r\n const { t } = useTranslation();\r\n const { newDate } = useSystemDate();\r\n const [files, setFiles] = useState([]);\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const currentUserComment = authenticatedUser?.Id === comment.CreatedBy.Id;\r\n const uploadedFiles = useSelector(selectLargeFilesUploadFilesNumber);\r\n const commentId = useSelector(selectLargeFilesUploadTargetId);\r\n const startedToUpload = useSelector(selectLargeFilesStartedToUpload);\r\n const uploading = useSelector(selectLargeFilesUploading);\r\n const filesUpload = useSelector(selectLargeFilesUpload);\r\n const isCommentAdmin = React.useMemo(() => {\r\n if (checkPermissions) {\r\n return checkPermissions(comment);\r\n }\r\n return isAdmin;\r\n }, [checkPermissions, comment, isAdmin]);\r\n const hasEditRights = React.useMemo(() => {\r\n if (checkEditPermissions) {\r\n return checkEditPermissions(comment);\r\n }\r\n return false;\r\n }, [checkEditPermissions, comment]);\r\n React.useEffect(() => {\r\n setFiles(comment.Files);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n React.useEffect(() => {\r\n const getComments = async () => {\r\n if (\r\n filesUpload.commentType !== undefined &&\r\n (filesUpload.referenceId !== undefined ||\r\n filesUpload.refernceStringId !== undefined)\r\n ) {\r\n var result = await CommentsApi.GetComments(\r\n filesUpload.commentType,\r\n filesUpload.referenceId ?? 0,\r\n commentId,\r\n filesUpload.refernceStringId,\r\n );\r\n if (result.length > 0) {\r\n setFiles(result[0].Files);\r\n }\r\n }\r\n dispatch(largeFileActions.resetNumberOfUploadedFiles());\r\n };\r\n if (\r\n commentId === comment.Id &&\r\n startedToUpload &&\r\n !uploading &&\r\n uploadedFiles > 0\r\n ) {\r\n getComments();\r\n onClose();\r\n setEdit(false);\r\n }\r\n }, [\r\n commentId,\r\n startedToUpload,\r\n uploading,\r\n uploadedFiles,\r\n dispatch,\r\n largeFileActions,\r\n filesUpload.commentType,\r\n filesUpload.referenceId,\r\n comment.Id,\r\n onClose,\r\n filesUpload.refernceStringId,\r\n ]);\r\n return (\r\n \r\n {onEditComment && hasEditRights && edit ? (\r\n <>\r\n {\r\n onEditComment(comment, newComment);\r\n //setEdit(false);\r\n }}\r\n onClose={() => setEdit(false)}\r\n bindSubmitComment={bindSubmitComment}\r\n disableFileUpload={disableFileUpload}\r\n fileTypeId={fileTypeId}\r\n />\r\n \r\n ) : (\r\n \r\n
    \r\n \r\n
    \r\n setHover(true)}\r\n onMouseLeave={() => setHover(false)}\r\n >\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {comment.CreatedBy.Name}\r\n \r\n
    \r\n {!isCommentAdmin && comment.IsInternal && (\r\n \r\n )}\r\n {withMentions && hover && (\r\n <>\r\n {isCommentAdmin && (\r\n <>\r\n {onEditComment && hasEditRights && (\r\n setEdit(true)}\r\n >\r\n \r\n \r\n )}\r\n {onDeleteComment && hasEditRights && deletable && (\r\n onDeleteComment(comment)}\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n {comment.ServiceGroupName && (\r\n \r\n {comment.ServiceGroupName}\r\n \r\n )}\r\n \r\n \r\n \r\n {Math.abs(\r\n dateUtils.differenceInDays(\r\n dateUtils.dateOrStringToDate(comment.CreatedAt),\r\n newDate(),\r\n ),\r\n ) > 30\r\n ? dateUtils.format(\r\n comment.CreatedAt,\r\n dateUtils.DateIOFormats.keyboardDateTime24h, //'PP hh:mm',\r\n )\r\n : dateUtils.formatDistanceToNow(comment.CreatedAt)}\r\n \r\n \r\n \r\n
    \r\n \r\n {comment.Text.trim() !== '' ? parse(comment.Text) : ''}\r\n \r\n
    \r\n\r\n {files.map(f => {\r\n return (\r\n <>\r\n {\r\n setFiles(prev => prev.filter(file => file.Id !== id));\r\n }}\r\n key={f.Id}\r\n file={f}\r\n fileTypeId={fileTypeId}\r\n />\r\n \r\n );\r\n })}\r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n","import { useMemo, useState } from 'react';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { IComment, NewComment } from './IComment';\r\nimport { parse } from './commentParser';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Identifiable } from 'types/common';\r\nimport { Button } from '../BasicButtons/Button';\r\nimport { IEmail } from 'api/EmailApi';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { useSendMail } from 'app/hooks/useSendMail';\r\nimport { renderToStaticMarkup } from 'react-dom/server';\r\nimport { EmailTypeUnion } from 'api/odata/generated/enums/EmailType';\r\nimport { Alert } from '@material-ui/lab';\r\nimport { Body } from '../Typography';\r\nimport * as React from 'react';\r\nimport { orderBy } from 'lodash';\r\n\r\nimport { CommentsWrapper } from './styled';\r\nimport { AddComment } from './AddComment';\r\nimport { CommentCell } from './CommentCell';\r\nimport BaseTextField from '../BasicInputs/BaseTextField';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface CommentsContainerProps extends EmailRelated {\r\n Comments: IComment[];\r\n onSubmit: (comment: NewComment, innerClick?: boolean) => void;\r\n withMentions?: boolean;\r\n isAdmin?: boolean;\r\n onEditComment?: (comment: IComment, newComment: NewComment) => void;\r\n onDeleteComment?: (comment: IComment) => void;\r\n shouldSendEmail?: boolean;\r\n disabled?: boolean;\r\n bindSubmitComment?: any;\r\n defaultComment?: Partial;\r\n cannotComment?: boolean;\r\n sectionTitle?: React.ReactNode;\r\n noTitle?: boolean;\r\n disableFileUpload?: boolean;\r\n serviceGroups?: Identifiable[];\r\n deletable?: boolean;\r\n additionalActions?: (comments: IComment[]) => React.ReactNode;\r\n checkPermissions?: (comment: IComment) => boolean;\r\n checkEditPermissions?: (comment: IComment) => boolean;\r\n fileTypeId?: FileTypes;\r\n}\r\n\r\nexport interface EmailRelated {\r\n emailBody?: string;\r\n emailSubject?: string;\r\n emailType?: EmailTypeUnion;\r\n pageName?: string;\r\n referenceName?: string;\r\n linkUrl?: string;\r\n}\r\n\r\nexport const CommentsContainer = ({\r\n Comments,\r\n onSubmit,\r\n withMentions,\r\n isAdmin,\r\n onEditComment,\r\n onDeleteComment,\r\n emailBody,\r\n emailSubject,\r\n pageName,\r\n referenceName,\r\n emailType,\r\n linkUrl,\r\n disabled,\r\n shouldSendEmail = true,\r\n bindSubmitComment,\r\n defaultComment,\r\n cannotComment,\r\n sectionTitle,\r\n noTitle,\r\n disableFileUpload,\r\n serviceGroups,\r\n deletable,\r\n additionalActions,\r\n checkPermissions,\r\n checkEditPermissions,\r\n fileTypeId = FileTypes.Undefined,\r\n}: CommentsContainerProps) => {\r\n const [count, setCount] = useState(5);\r\n const sortedComments = useMemo(() => {\r\n return orderBy(\r\n Comments,\r\n c => dateUtils.dateOrStringToDate(c.CreatedAt),\r\n 'desc',\r\n ).filter(c => !c.IsInternal || isAdmin);\r\n }, [Comments, isAdmin]);\r\n const [writeCommentOpen, setWriteCommentOpen] = useState(false);\r\n const { t } = useTranslation();\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const sendMail = useSendMail();\r\n const handleSubmit = (comment: NewComment, innerSender?: boolean) => {\r\n if (shouldSendEmail && withMentions) {\r\n const email = createEmail({\r\n emailBody: emailBody ?? t(translations.DefaultEmailTemplateBody),\r\n emailSubject:\r\n emailSubject ?? t(translations.DefaultEmailTemplateSubject),\r\n pageName: pageName ?? t(translations.DefaultPageName),\r\n referenceName: referenceName ?? t(translations.DefaultReferenceName),\r\n emailType: emailType,\r\n linkUrl: linkUrl ?? '',\r\n userName: authenticatedUser?.Name ?? '',\r\n comment: comment,\r\n });\r\n if (email) {\r\n sendMail(email);\r\n }\r\n }\r\n onSubmit(comment, innerSender);\r\n };\r\n return (\r\n \r\n {!noTitle && (\r\n
    \r\n \r\n {sectionTitle || t(translations.CommentsCount)}\r\n \r\n
    \r\n )}\r\n {sortedComments\r\n .slice(0, count < sortedComments.length ? count : undefined)\r\n .map((c, i) => (\r\n setWriteCommentOpen(false)}\r\n withMentions={!!withMentions}\r\n isAdmin={isAdmin}\r\n onEditComment={onEditComment}\r\n onDeleteComment={onDeleteComment}\r\n bindSubmitComment={bindSubmitComment}\r\n disableFileUpload={disableFileUpload}\r\n checkPermissions={checkPermissions}\r\n checkEditPermissions={checkEditPermissions}\r\n deletable={deletable}\r\n fileTypeId={fileTypeId}\r\n />\r\n ))}\r\n {additionalActions && (\r\n
    \r\n {additionalActions(sortedComments)}\r\n
    \r\n )}\r\n
    \r\n {count < sortedComments.length && (\r\n setCount(prev => prev + 5)}\r\n >\r\n {(('Load more ' + t(translations.CommentsCount)) as string) +\r\n ' (' +\r\n (sortedComments.length - count) +\r\n ')'}\r\n \r\n )}\r\n {!cannotComment && (\r\n
    \r\n {writeCommentOpen ? (\r\n setWriteCommentOpen(false)}\r\n withMentions={!!withMentions}\r\n isAdmin={isAdmin}\r\n bindSubmitComment={bindSubmitComment}\r\n disableFileUpload={disableFileUpload}\r\n serviceGroups={serviceGroups}\r\n fileTypeId={fileTypeId}\r\n />\r\n ) : (\r\n setWriteCommentOpen(true)}\r\n />\r\n )}\r\n
    \r\n )}\r\n {cannotComment && sortedComments.length === 0 && (\r\n {t(translations.Comments_EmptyMessage)}\r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst createEmail = ({\r\n comment,\r\n emailBody,\r\n emailSubject,\r\n pageName,\r\n referenceName,\r\n emailType,\r\n userName,\r\n linkUrl,\r\n}: {\r\n emailBody: string;\r\n emailSubject: string;\r\n emailType?: EmailTypeUnion;\r\n pageName: string;\r\n referenceName: string;\r\n comment: NewComment;\r\n userName: string;\r\n linkUrl: string;\r\n}) => {\r\n if (emailType === undefined || comment.Users.length === 0) return;\r\n const subject = emailSubject\r\n .replaceAll('{@UserName}', userName)\r\n .replaceAll('{@PageName}', pageName)\r\n .replaceAll('{@Reference}', referenceName);\r\n const body = emailBody\r\n .replaceAll('{@UserName}', userName)\r\n .replaceAll('{@PageName}', pageName)\r\n .replaceAll('{@Reference}', referenceName)\r\n .replaceAll('{@Link}', linkUrl)\r\n .replaceAll(\r\n '{@Body}',\r\n renderToStaticMarkup(<>{parse(comment.Text ?? '')}),\r\n );\r\n return {\r\n Subject: subject,\r\n Body: body,\r\n Files: comment.Files,\r\n SaveToLog: true,\r\n To: [],\r\n Cc: [],\r\n Bcc: comment.Users,\r\n Type: emailType,\r\n } as IEmail;\r\n};\r\n","import { selectIsAuthenticated } from 'app/slice/selectors';\r\nimport { useTranslation as I18nUseTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { defaultNS, publicNS } from './i18n';\r\n\r\nexport function useTranslation() {\r\n const isAuthenticated = useSelector(selectIsAuthenticated);\r\n const ns =\r\n isAuthenticated === true\r\n ? defaultNS\r\n : isAuthenticated === false\r\n ? publicNS\r\n : undefined;\r\n return I18nUseTranslation(ns);\r\n}\r\n","import { capitalize } from 'lodash';\r\nimport { BookitDatePicker, BookitDatePickerProps } from '.';\r\nimport * as React from 'react';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport FormControl from '../Forms/FormControls/FormControl';\r\nimport FormHelperText from '../Forms/FormControls/FormHelperText';\r\nimport clsx from 'clsx';\r\nimport { InputLabel } from '@material-ui/core';\r\nimport { ParsableDate } from '@material-ui/pickers/constants/prop-types';\r\nimport { useUtils } from '@material-ui/pickers';\r\nimport { validateError } from '../DatePicker/utils/pickerDateValidate';\r\nimport { v4 as uuid } from 'uuid';\r\n\r\nexport interface BookitDateTimePickerProps extends BookitDatePickerProps {\r\n labelInline?: boolean;\r\n}\r\n\r\nexport function BookitDateTimePicker({\r\n value,\r\n endTime,\r\n onChange,\r\n truncateTime,\r\n label,\r\n helperText,\r\n error,\r\n size,\r\n labelInline = false,\r\n dateLabel,\r\n timeLabel,\r\n maskIfEmpty,\r\n id = 'datetime_picker',\r\n ...props\r\n}: BookitDateTimePickerProps) {\r\n const utils = useUtils();\r\n const inputLabelId = label && id ? `${id}-label` : undefined;\r\n const helperTextId = id ? `${id}-helper-text` : undefined;\r\n const dateId = !!id ? `${id}-date` : uuid();\r\n const timeId = !!id ? `${id}-time` : uuid();\r\n const dateName = !!props.name ? `${props.name}-date` : uuid();\r\n const timeName = !!props.name ? `${props.name}-time` : uuid();\r\n const sizeClass = `inputSize${capitalize(size ?? 'large')}`;\r\n const dateLabelInline = labelInline\r\n ? dateLabel ?? `${label} Date`\r\n : undefined;\r\n const timeLabelInline = labelInline\r\n ? timeLabel ?? `${label} Time`\r\n : undefined;\r\n const dateTimeValue = React.useMemo(() => {\r\n return value;\r\n }, [value]);\r\n const [dateValue, setDateValue] = React.useState<\r\n Date | string | null | undefined\r\n >(() => {\r\n if (dateTimeValue === null || dateTimeValue === undefined) {\r\n return null;\r\n } else {\r\n let parsedValue = dateUtils.dateOrStringToDate(dateTimeValue);\r\n return parsedValue === null ? null : dateUtils.truncateTime(parsedValue);\r\n }\r\n });\r\n const [timeValue, setTimeValue] = React.useState<\r\n Date | string | null | undefined\r\n >(() => {\r\n if (dateTimeValue === null || dateTimeValue === undefined) {\r\n return null;\r\n } else {\r\n return dateUtils.dateOrStringToDate(dateTimeValue);\r\n }\r\n });\r\n React.useEffect(() => {\r\n setTimeValue(() => {\r\n if (dateTimeValue === null || dateTimeValue === undefined) {\r\n return null;\r\n } else {\r\n return dateUtils.dateOrStringToDate(dateTimeValue);\r\n }\r\n });\r\n setDateValue(() => {\r\n if (dateTimeValue === null || dateTimeValue === undefined) {\r\n return null;\r\n } else {\r\n let parsedValue = dateUtils.dateOrStringToDate(dateTimeValue);\r\n return parsedValue === null\r\n ? null\r\n : dateUtils.truncateTime(parsedValue);\r\n }\r\n });\r\n }, [dateTimeValue]);\r\n\r\n const handleChange = React.useCallback(\r\n (date: MaterialUiPickersDate, inpValue?: string | null): void => {\r\n let error = validateError(\r\n date,\r\n {\r\n maxDate: props.maxDate,\r\n minDate: props.minDate,\r\n disablePast: props.disablePast,\r\n disableFuture: props.disableFuture,\r\n maxDateMessage: props.maxDateMessage,\r\n minDateMessage: props.minDateMessage,\r\n invalidDateMessage: props.invalidDateMessage,\r\n strictCompareDates: props.strictCompareDates,\r\n },\r\n utils,\r\n );\r\n if (!!error) {\r\n setDateError(error);\r\n } else {\r\n if (!(date?.toString() === 'Invalid Date')) {\r\n if (props.required && (date === null || date === undefined)) {\r\n setDateError(`${label} is a required field`);\r\n if (!!props.onError) {\r\n props.onError(`${label} is a required field`, date);\r\n }\r\n } else {\r\n onChange(\r\n date === null || date === undefined\r\n ? null\r\n : new CustomDate(date, 'complete'),\r\n inpValue,\r\n );\r\n }\r\n }\r\n }\r\n // onChange(\r\n // date === null || date === undefined\r\n // ? null\r\n // : new CustomDate(date, 'complete'),\r\n // inpValue,\r\n // );\r\n },\r\n [label, onChange, props, utils],\r\n );\r\n const handleDateChange = React.useCallback(\r\n (displayValue: MaterialUiPickersDate): void => {\r\n const finalValue =\r\n displayValue === null\r\n ? null\r\n : displayValue === undefined\r\n ? null\r\n : displayValue;\r\n setDateValue(finalValue);\r\n if (finalValue !== null) {\r\n if (timeValue === null || timeValue === undefined) {\r\n setTimeValue(dateUtils.startOfDay(finalValue));\r\n if (props.saveOnSelect) {\r\n handleChange(dateUtils.startOfDay(finalValue));\r\n }\r\n } else {\r\n let time = dateUtils.dateOrStringToDate(timeValue);\r\n let val = dateUtils.set(dateUtils.truncateTime(finalValue), {\r\n hours: time === null ? 0 : time.getHours(),\r\n minutes: time === null ? 0 : time.getMinutes(),\r\n seconds: time === null ? 0 : time.getSeconds(),\r\n });\r\n handleChange(val);\r\n }\r\n } else {\r\n if (props.saveOnSelect) {\r\n setTimeValue(null);\r\n handleChange(null);\r\n } else {\r\n if (timeValue === null || timeValue === undefined) {\r\n handleChange(null);\r\n }\r\n }\r\n }\r\n },\r\n [handleChange, props.saveOnSelect, timeValue],\r\n );\r\n const handleTimeChange = React.useCallback(\r\n (displayValue: MaterialUiPickersDate): void => {\r\n const finalValue =\r\n displayValue === null\r\n ? null\r\n : displayValue === undefined\r\n ? null\r\n : displayValue;\r\n setTimeValue(finalValue);\r\n if (finalValue !== null) {\r\n if (dateValue !== null && dateValue !== undefined) {\r\n let val = dateUtils.set(dateUtils.truncateTime(dateValue), {\r\n hours: finalValue.getHours(),\r\n minutes: finalValue.getMinutes(),\r\n seconds: finalValue.getSeconds(),\r\n });\r\n handleChange(val);\r\n }\r\n } else {\r\n if (dateValue === null || dateValue === undefined) {\r\n handleChange(null);\r\n }\r\n }\r\n },\r\n [dateValue, handleChange],\r\n );\r\n const [dateError, setDateError] = React.useState(\r\n undefined,\r\n );\r\n const [timeError, setTimeError] = React.useState(\r\n undefined,\r\n );\r\n const validationError = React.useMemo(() => {\r\n return dateError || timeError || undefined;\r\n }, [dateError, timeError]);\r\n const handleOnError = React.useCallback(\r\n (error: React.ReactNode, value: MaterialUiPickersDate | ParsableDate) => {\r\n if (!!props.onError) {\r\n props.onError(validationError, value);\r\n }\r\n },\r\n [props, validationError],\r\n );\r\n const onDateError = React.useCallback(\r\n (error: React.ReactNode, value: MaterialUiPickersDate | ParsableDate) => {\r\n setDateError(error);\r\n if (!!props.onError) {\r\n handleOnError(error, value);\r\n }\r\n },\r\n [handleOnError, props.onError],\r\n );\r\n const onTimeError = React.useCallback(\r\n (error: React.ReactNode, value: MaterialUiPickersDate | ParsableDate) => {\r\n setTimeError(error);\r\n if (!!props.onError) {\r\n handleOnError(error, value);\r\n }\r\n },\r\n [handleOnError, props.onError],\r\n );\r\n\r\n return (\r\n \r\n
    \r\n {label && !labelInline && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n \r\n
    \r\n {(!!helperText || !!validationError) && (\r\n \r\n {helperText || validationError}\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { Timestamp } from 'types/Timestamp';\r\nimport { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\r\nimport { dateUtils } from './date-utils';\r\n\r\n/**\r\n * Converts date/time from a given tz to UTC\r\n * @param date date (time part is ignored)\r\n * @param time time of day (date part is ignored)\r\n * @param timeZone source time zone\r\n * @returns\r\n */\r\nexport function fromTimZoneToUTC(\r\n date: Date,\r\n time: Timestamp,\r\n timeZone?: string,\r\n): Date {\r\n if (timeZone === undefined) {\r\n timeZone = 'UTC';\r\n }\r\n if (time.lastIndexOf('Z') === -1) {\r\n // Convert the ISO date string with offset to UTC 'America/Chicago'\r\n let utcDate = zonedTimeToUtc(time, timeZone);\r\n\r\n // Convert the UTC time back to the original timezone 'America/Chicago'\r\n const zonedDate = utcToZonedTime(utcDate, timeZone);\r\n return zonedDate;\r\n // // Format the date back to ISO format with the original offset\r\n // const formattedDate = formatISO(zonedDate, { representation: 'complete' });\r\n }\r\n let d = dateUtils.formatISO(date, {\r\n representation: 'date',\r\n });\r\n const t = parseExact(time);\r\n let result: Date = zonedTimeToUtc(`${d} ${t}`, timeZone, {});\r\n return result;\r\n}\r\n\r\nfunction parseExact(ts: Timestamp) {\r\n const regexp = /^\\d\\d\\d\\d-\\d\\d-\\d\\dT(?\\d\\d:\\d\\d:\\d\\d)|Z$/;\r\n const match = regexp.exec(ts);\r\n const result = match?.groups?.timeOfDay ?? undefined;\r\n return result;\r\n}\r\nfunction parseDateExact(ts: Timestamp) {\r\n const regexp = /^(?\\d\\d\\d\\d-\\d\\d-\\d\\d)T\\d\\d:\\d\\d:\\d\\d|Z$/;\r\n const match = regexp.exec(ts);\r\n const result = match?.groups?.dateOfDay ?? undefined;\r\n return result;\r\n}\r\n\r\nexport function toTimeZoneUTCDate(\r\n datetime: Timestamp,\r\n timeZone?: string,\r\n): Date {\r\n if (timeZone === undefined) {\r\n timeZone = 'UTC';\r\n }\r\n if (datetime.lastIndexOf('Z') === -1) {\r\n // Convert the ISO date string with offset to UTC 'America/Chicago'\r\n let utcDate = zonedTimeToUtc(datetime, timeZone);\r\n\r\n // Convert the UTC time back to the original timezone 'America/Chicago'\r\n const zonedDate = utcToZonedTime(utcDate, timeZone);\r\n return zonedDate;\r\n // // Format the date back to ISO format with the original offset\r\n // const formattedDate = formatISO(zonedDate, { representation: 'complete' });\r\n }\r\n let d = parseDateExact(datetime);\r\n let t = parseExact(datetime);\r\n let result: Date = zonedTimeToUtc(`${d} ${t}`, timeZone, {});\r\n return result;\r\n}\r\nexport function formatToTimeZoneUTCDate(\r\n date: Date | string | null | undefined,\r\n timeZone?: string,\r\n userTimeZone?: string,\r\n): string | null {\r\n if (date === null || date === undefined) {\r\n return null;\r\n }\r\n if (!!timeZone && !!userTimeZone && timeZone !== userTimeZone) {\r\n timeZone = userTimeZone;\r\n }\r\n return dateUtils.formatISO(\r\n toTimeZoneUTCDate(\r\n typeof date === 'string' ? date : dateUtils.formatISO(date),\r\n timeZone,\r\n ),\r\n );\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.assetInventory || initialState;\r\n\r\nexport const selectAssetInventory = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\n\r\nexport const selectRoomSelected = createSelector(\r\n [selectAssetInventory],\r\n state => state.selectedRoomState,\r\n);\r\nexport const selectLocationSelected = createSelector(\r\n [selectAssetInventory],\r\n state => state.selectedLocationState,\r\n);\r\nexport const selectSubLocationSelected = createSelector(\r\n [selectAssetInventory],\r\n state => state.selectedSubLocationState,\r\n);\r\nexport const selectScanProcessing = createSelector(\r\n [selectAssetInventory],\r\n state => state.scanProcessing,\r\n);\r\nexport const selectNoRoomAccessProcessing = createSelector(\r\n [selectAssetInventory],\r\n state => state.noRoomAccessProcessing,\r\n);\r\nexport const selectInventoryLogFilters = createSelector(\r\n [selectAssetInventory],\r\n state => state.logFilters,\r\n);\r\n","import { httpClient } from './HttpClient';\r\n\r\nexport const CustomFormApi = {\r\n getAll: (key: number) => {\r\n const url = `/api/odata/v4/CustomForm(${key})`;\r\n return httpClient.get(url);\r\n },\r\n getSingle: (key: number, customFormId: number) => {\r\n const url = `/api/odata/v4/CustomForm(${key})`;\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n //$select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Id asc',\r\n $filter: `(Id eq ${customFormId})`,\r\n //$select: 'Id,Name,FormFields,ServiceGroups,Active,Type',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient.get(url, params);\r\n },\r\n};\r\n","import { FormFieldsPerRowVariant } from 'enums/FormFieldsPerRowVariant';\r\nimport {\r\n FormLeftSection,\r\n StyledFormFieldsContainer,\r\n} from '../Forms/FormsLayout';\r\nimport { StyledFormProps } from '../Forms/FormsLayout/StyledForm';\r\n\r\nexport interface CustomFormAsSectionProps {\r\n children: React.ReactNode;\r\n fieldsPerRow?: FormFieldsPerRowVariant;\r\n asSection?: boolean;\r\n sectionProps?: Omit;\r\n}\r\nexport const CustomFormAsSection = ({\r\n children,\r\n fieldsPerRow,\r\n asSection,\r\n sectionProps,\r\n}: CustomFormAsSectionProps) => {\r\n return asSection ? (\r\n \r\n \r\n {children}\r\n \r\n \r\n ) : (\r\n <>{children}\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport * as Yup from 'yup';\r\nimport { FormikProps } from 'formik';\r\nimport { CustomFormField } from '../CustomFormFields';\r\nimport {\r\n CustomFormValueType,\r\n getFieldsVisibilities,\r\n getSerializableIsRequired,\r\n isRequired,\r\n} from '../CustomFormUtils';\r\nimport { ValidationSchemaProvider } from 'app/components/Forms/ValidationSchemaProvider';\r\nimport { FormFieldsSection, FormRow } from 'app/components/Forms/FormsLayout';\r\nimport { sortBy } from 'lodash';\r\nimport { FormFieldsPerRowVariant } from 'enums/FormFieldsPerRowVariant';\r\nimport { CustomFormTypeEnum } from 'enums/CustomFormType';\r\nimport { CustomFormAsSection } from '../CustomFormAsSection';\r\nimport { StyledFormProps } from 'app/components/Forms/FormsLayout/StyledForm';\r\n\r\nexport interface CustomFormContentProps {\r\n formType: CustomFormTypeEnum;\r\n title?: string;\r\n formik: FormikProps>;\r\n schema: Yup.SchemaOf;\r\n formFields: IFormFieldDto[];\r\n validationEnabled?: boolean;\r\n isAdmin?: boolean;\r\n readonly?: boolean;\r\n disabled?: boolean;\r\n fieldsPerRow?: FormFieldsPerRowVariant;\r\n onFieldChange?: (value: any, formField: IFormFieldDto) => void;\r\n visibleOnCompletion?: () => boolean;\r\n sectionProps?: Omit;\r\n}\r\nexport function CustomFormContent({\r\n formType,\r\n title,\r\n formik,\r\n schema,\r\n formFields,\r\n validationEnabled,\r\n isAdmin,\r\n readonly,\r\n disabled,\r\n fieldsPerRow = FormFieldsPerRowVariant.TwoFields,\r\n onFieldChange,\r\n visibleOnCompletion,\r\n sectionProps,\r\n}: CustomFormContentProps) {\r\n const isVisibleField = (\r\n field: IFormFieldDto,\r\n isAdmin: boolean,\r\n values: Record | undefined,\r\n visibleOnCompletion?: () => boolean,\r\n ): boolean => {\r\n let visibilities = getFieldsVisibilities(\r\n formFields,\r\n isAdmin,\r\n values,\r\n visibleOnCompletion,\r\n );\r\n if (visibilities) {\r\n return visibilities[field.Id];\r\n }\r\n return true;\r\n };\r\n // const sortedActiveFormFields = React.useMemo(\r\n // () =>\r\n // sortBy(\r\n // formFields.filter(f => f.Active === true),\r\n // f => f.Index,\r\n // ),\r\n // [formFields],\r\n // );\r\n const sortedActiveFormFields = React.useMemo(() => {\r\n let values = formik.values as Record | undefined;\r\n return sortBy(\r\n formFields.filter(f => f.Active === true),\r\n f => f.Index,\r\n ).map(f => {\r\n let parentDepValue = null;\r\n let parentReqValue = null;\r\n\r\n if (f.DependencyFieldId !== null) {\r\n if (!!values && Object.keys(values).length > 0) {\r\n parentDepValue = values[String(f.DependencyFieldId)];\r\n }\r\n }\r\n if (f.RequiredFieldToCompare !== null) {\r\n if (!!values && Object.keys(values).length > 0) {\r\n parentReqValue = values[String(f.RequiredFieldToCompare)];\r\n }\r\n }\r\n return {\r\n fieldRequired:\r\n isRequired(\r\n f,\r\n isAdmin || false,\r\n formik?.values?.[f.Id],\r\n parentDepValue,\r\n parentReqValue,\r\n ) &&\r\n getSerializableIsRequired(\r\n f,\r\n formik?.values?.[f.Id] as CustomFormValueType,\r\n ),\r\n field: f,\r\n };\r\n });\r\n }, [formFields, formik.values, isAdmin]);\r\n return (\r\n \r\n \r\n \r\n {sortedActiveFormFields.map((formField, index) => {\r\n // paragraphs & form sections deserve to start from the new line in 2 column layout (full screen)\r\n const fullRow =\r\n (formField.field.Type !== null &&\r\n ['Paragraph', 'FormSection'].includes(formField.field.Type)) ||\r\n formField.field.SingleColumnView ||\r\n fieldsPerRow === FormFieldsPerRowVariant.OneField;\r\n return (\r\n \r\n onFieldChange(value, formField.field)\r\n : undefined\r\n }\r\n />\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomForm\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport * as Yup from 'yup';\r\nimport { Formik } from 'formik';\r\nimport { CustomFormTypeEnum } from 'enums/CustomFormType';\r\nimport {\r\n serializeValues,\r\n IFormFileValue,\r\n useCustomFormSchema,\r\n} from '../../CustomFormUtils';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { CustomFormContent } from '../../CustomFormContent';\r\nimport { FormFieldsPerRowVariant } from 'enums/FormFieldsPerRowVariant';\r\nimport { StyledFormProps } from 'app/components/Forms/FormsLayout/StyledForm';\r\n\r\nexport interface CustomFormProps {\r\n formFields: IFormFieldDto[];\r\n formType: CustomFormTypeEnum;\r\n formValues?: Record;\r\n readonly?: boolean;\r\n onSubmit: (\r\n values: Record,\r\n files: IFormFileValue[],\r\n ) => void;\r\n bindSubmitForm?: any;\r\n isAdmin?: boolean;\r\n CustomFormId?: number;\r\n formName?: string;\r\n formIsValid?: (isValid: boolean) => void;\r\n disabled?: boolean;\r\n validationEnabled?: boolean;\r\n fieldsPerRow?: FormFieldsPerRowVariant;\r\n onFieldChange?: (value: any, formField: IFormFieldDto) => void;\r\n visibleOnCompletion?: () => boolean;\r\n sectionProps?: Omit;\r\n}\r\n\r\nexport interface CustomFormValue extends Record {}\r\n\r\nexport const CustomForm = React.memo(function CustomForm({\r\n formFields,\r\n formValues,\r\n formType,\r\n onSubmit,\r\n readonly,\r\n bindSubmitForm,\r\n formName,\r\n isAdmin,\r\n disabled,\r\n formIsValid,\r\n validationEnabled,\r\n onFieldChange,\r\n fieldsPerRow,\r\n visibleOnCompletion,\r\n sectionProps,\r\n}: CustomFormProps) {\r\n const schema: Yup.SchemaOf = useCustomFormSchema(\r\n formFields,\r\n isAdmin || false,\r\n formValues,\r\n );\r\n const handleSubmit = value => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n const { serialized, files } = serializeValues(formFields, value);\r\n onSubmit(serialized, files);\r\n }\r\n };\r\n\r\n const [initialValues, setInitialValues] = React.useState<\r\n Record | undefined\r\n >(undefined);\r\n useEffectOnMount(() => {\r\n setInitialValues(formValues);\r\n return () => {};\r\n });\r\n\r\n return initialValues ? (\r\n {\r\n // call setSubmit to finish submit cycle\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm?.(formik.submitForm);\r\n // if (!formik.isValid) {\r\n // console.log('Custom form errors', formik.errors);\r\n // }\r\n if (!!formIsValid) {\r\n formIsValid(formik.isValid);\r\n }\r\n return (\r\n
    \r\n \r\n \r\n );\r\n }}\r\n \r\n ) : (\r\n <>\r\n );\r\n});\r\n","import { Portal } from '@material-ui/core';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { CustomFormApi } from 'api/CustomFormApi';\r\nimport { ICustomFormDto } from 'api/odata/generated/entities/ICustomFormDto';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\nimport { CustomForm } from 'app/components/CustomForm/CusomFormControl/Form';\r\nimport { initUserData } from 'app/components/CustomForm/CustomFormFields/CustomFormUserSelection';\r\nimport {\r\n DeserializeValue,\r\n IFormFileValue,\r\n orderFields,\r\n ParseFormFieldEnums,\r\n} from 'app/components/CustomForm/CustomFormUtils';\r\nimport { StyledFormProps } from 'app/components/Forms/FormsLayout/StyledForm';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { CustomFormTypeEnum } from 'enums/CustomFormType';\r\nimport React from 'react';\r\nimport { MutableRefObject } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { isEmptyOrWhitespace, isNullOrUndefined } from 'utils/typeUtils';\r\nimport { InitFormFiles } from '../CustomFormFields/CustomFormFileUpload';\r\n\r\nexport interface CustomFormControlProps {\r\n CustomFormId: number;\r\n FormType: CustomFormTypeEnum;\r\n values?: IFormValueDto[];\r\n submitFormRef: MutableRefObject;\r\n saveFormValues: (\r\n values: IFormValueDto[],\r\n files: IFormFileValue[],\r\n originalFiles: IFormFileValue[],\r\n ) => void;\r\n isAdmin?: boolean;\r\n formIsValid?: (isValid: boolean) => void;\r\n readonly?: boolean;\r\n formName?: string;\r\n disabled?: boolean;\r\n onLoadCompleted?: () => void;\r\n onLoadStarted?: () => void;\r\n validationEnabled?: boolean;\r\n onFieldChange?: (value: any, formField: IFormFieldDto) => void;\r\n visibleOnCompletion?: () => boolean;\r\n sectionProps?: Omit;\r\n}\r\n\r\nexport function CustomFormControl(props: CustomFormControlProps) {\r\n const {\r\n CustomFormId,\r\n values,\r\n submitFormRef,\r\n saveFormValues,\r\n FormType,\r\n isAdmin,\r\n formIsValid,\r\n readonly,\r\n formName,\r\n disabled,\r\n onLoadCompleted,\r\n onLoadStarted,\r\n validationEnabled,\r\n onFieldChange,\r\n visibleOnCompletion,\r\n sectionProps,\r\n } = props;\r\n\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const [originalFiles, setOriginalFiles] = React.useState(\r\n [],\r\n );\r\n // const [currentFormId, setCurrentFormId] = React.useState(\r\n // CustomFormId,\r\n // );\r\n const fetchCustomForm = async (formType: number, customFormId: number) =>\r\n CustomFormApi.getSingle(formType, customFormId).then(response => {\r\n let item = response.value[0] as ICustomFormDto;\r\n ParseFormFieldEnums(item.FormFields.filter(f => !f.IsColumn));\r\n return item;\r\n });\r\n const loadValue = async (\r\n field: IFormFieldDto,\r\n value: IFormValueDto | null,\r\n ): Promise => {\r\n if (field.Type === 'UserSelection') {\r\n if (isNullOrUndefined(value?.Value)) {\r\n return new Promise(resolve => {\r\n resolve({\r\n fieldId: field.Id,\r\n value: field.IsMultiple ? [] : null,\r\n } as ValueResults);\r\n });\r\n } else {\r\n try {\r\n let data = await initUserData(value?.Value ?? '', field);\r\n return {\r\n fieldId: field.Id,\r\n value: field.IsMultiple ? data : data[0],\r\n } as ValueResults;\r\n } catch (ex) {\r\n return {\r\n fieldId: field.Id,\r\n value: null,\r\n } as ValueResults;\r\n }\r\n }\r\n } else if (field.Type === 'File') {\r\n if (isNullOrUndefined(value?.Value)) {\r\n return new Promise(resolve => {\r\n resolve({\r\n fieldId: field.Id,\r\n value: [],\r\n } as ValueResults);\r\n });\r\n } else {\r\n try {\r\n let results = await InitFormFiles(value?.Value ?? '', field);\r\n const files =\r\n results.length > 0\r\n ? results.map(r => {\r\n return {\r\n Id: field.Id,\r\n Value: r.Id,\r\n DisplayValue: r.Name,\r\n Size: r.Size,\r\n PostedFile: null,\r\n } as IFormFileValue;\r\n })\r\n : [];\r\n setOriginalFiles(prev => [...prev, ...files]);\r\n return {\r\n fieldId: field.Id,\r\n value: files,\r\n } as ValueResults;\r\n } catch (ex) {\r\n return {\r\n fieldId: field.Id,\r\n value: [],\r\n } as ValueResults;\r\n }\r\n }\r\n } else {\r\n return new Promise(resolve => {\r\n const opts = DeserializeValue(field, value);\r\n resolve({\r\n fieldId: field.Id,\r\n value: opts,\r\n } as ValueResults);\r\n });\r\n }\r\n };\r\n interface ValueResults {\r\n fieldId: number;\r\n value: any;\r\n }\r\n const [fetchFormValues, getFormValues] = usePromise(\r\n async (\r\n formFields: IFormFieldDto[],\r\n formValues: IFormValueDto[] | undefined,\r\n ) => {\r\n return Promise.all(\r\n formFields\r\n .filter(f => f.Active === true)\r\n .map(async field => {\r\n try {\r\n const resvalue = await loadValue(\r\n field,\r\n formValues?.find(v => v.FormFieldId === field.Id) || null,\r\n );\r\n return resvalue;\r\n } catch {\r\n return {\r\n fieldId: field.Id,\r\n value: null,\r\n } as ValueResults;\r\n }\r\n }),\r\n );\r\n },\r\n );\r\n const [fetchFormState, fetchFormPromise] = usePromise(fetchCustomForm);\r\n const [customForm, setState] = useAsyncExtendedState<\r\n ICustomFormDto | undefined\r\n >(undefined);\r\n const [loadedValues, setValues] = useAsyncExtendedState<\r\n Record | undefined\r\n >(undefined);\r\n // useEffectOnMount(() => {\r\n // setState(fetchFormPromise(FormType as number, currentFormId));\r\n // return () => {};\r\n // });\r\n React.useEffect(() => {\r\n if (CustomFormId) {\r\n !!onLoadStarted && onLoadStarted();\r\n setState(fetchFormPromise(FormType as number, CustomFormId));\r\n }\r\n return () => {\r\n setState(undefined);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [CustomFormId]);\r\n React.useEffect(() => {\r\n if (customForm) {\r\n const serializedvalues: Record = {};\r\n setValues(\r\n getFormValues(\r\n customForm.FormFields.filter(f => !f.IsColumn),\r\n values,\r\n ).then(vals => {\r\n vals.forEach(\r\n item => (serializedvalues[item.fieldId.toString()] = item.value),\r\n );\r\n return serializedvalues;\r\n }),\r\n );\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [customForm]);\r\n React.useEffect(() => {\r\n const messageKey = 'formLoad';\r\n let active = !!fetchFormState && !!fetchFormState.status;\r\n if (active) {\r\n if (fetchFormState.error) {\r\n let msg = fetchFormState.error.message;\r\n !!onLoadCompleted && onLoadCompleted();\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: 'Something went wrong. ' + msg,\r\n key: messageKey,\r\n }),\r\n );\r\n }\r\n if (\r\n fetchFormState.status === 'resolved' &&\r\n fetchFormValues?.status === 'resolved' &&\r\n !!customForm &&\r\n !!loadedValues\r\n ) {\r\n !!onLoadCompleted && onLoadCompleted();\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n dispatch,\r\n fetchFormValues,\r\n onLoadCompleted,\r\n customForm,\r\n loadedValues,\r\n fetchFormState,\r\n ]);\r\n\r\n const portalRef = React.useRef(null);\r\n const bindSubmitForm = React.useCallback(\r\n submitForm => {\r\n submitFormRef.current = submitForm;\r\n },\r\n [submitFormRef],\r\n );\r\n const handleSubmit = React.useCallback(\r\n (values: Record, files: IFormFileValue[]) => {\r\n const formValues: IFormValueDto[] = Object.entries(values).map(\r\n ([formFieldId, value]) => ({\r\n Id: -1,\r\n FormFieldId: +formFieldId,\r\n Value: isEmptyOrWhitespace(value) ? null : value,\r\n DisplayValue: null,\r\n SourceValueId: null,\r\n AlertId: null,\r\n AlertTypeId: null,\r\n Readonly: false,\r\n CustomFormId: customForm?.Id || CustomFormId,\r\n CustomFormName: customForm?.Name || null,\r\n BudgetExperimentId: null,\r\n ExperimentItemId: null,\r\n RequestId: null,\r\n ReservationId: null,\r\n ServiceGroupId: null,\r\n ServiceGroupUserId: null,\r\n }),\r\n );\r\n saveFormValues(formValues, files, originalFiles);\r\n },\r\n [\r\n CustomFormId,\r\n customForm?.Id,\r\n customForm?.Name,\r\n originalFiles,\r\n saveFormValues,\r\n ],\r\n );\r\n const formFields = React.useMemo(() => {\r\n return customForm !== undefined\r\n ? validationEnabled\r\n ? customForm.FormFields.filter(f => !f.IsColumn).sort(orderFields)\r\n : customForm.FormFields.filter(f => !f.IsColumn)\r\n .sort(orderFields)\r\n .map(field => Object.assign(field, { Required: 0 }))\r\n : [];\r\n }, [customForm, validationEnabled]);\r\n return (\r\n \r\n \r\n {fetchFormState.status === 'resolved' &&\r\n customForm !== undefined &&\r\n !!loadedValues &&\r\n fetchFormValues.status === 'resolved' ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","export enum MultipleInstrumentReservations {\r\n NotAllowed = 0,\r\n AllowedDefaultMultiple = 1,\r\n AllowedDefaultSingle = 2,\r\n}\r\n","import { Button, ButtonProps } from 'app/components/BasicButtons/Button';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport React from 'react';\r\nimport { IReservationWaitingListDto } from 'app/pages/ReservationWaitingListPage/IReservationWaitingListDto';\r\nimport { SignUpWaitingListDetailsProps } from 'app/pages/ReservationWaitingListPage/SignUpWaitingListDetails';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nexport interface OpenSignUpWaitingListButtonProps extends ButtonProps {\r\n buttonName: React.ReactNode;\r\n Id?: number;\r\n model?: IReservationWaitingListDto;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}\r\nexport function OpenWaitingListButton(props: OpenSignUpWaitingListButtonProps) {\r\n const { buttonName, Id, useSidePanel, openPanelWithCover, model } = props;\r\n const { t } = useTranslation();\r\n const { openPanel } = useSidePanelState();\r\n const openAction = () => {\r\n let signupProps = {\r\n Id: Id,\r\n initialDetails: model,\r\n useSidePanel: true,\r\n } as SignUpWaitingListDetailsProps;\r\n let panelProps = {\r\n renderPageType: RenderPageType.SignUpWaitingListDetails,\r\n renderPageProps: signupProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState;\r\n !!openPanelWithCover\r\n ? openPanelWithCover(panelProps)\r\n : openPanel(panelProps);\r\n };\r\n\r\n return (\r\n openAction()}\r\n >\r\n {buttonName || t(translations.ReservationSignUpWaitingListDetails)}\r\n \r\n );\r\n}\r\nexport const WaitingListSignUpLink = (props: {\r\n Id?: number;\r\n model?: IReservationWaitingListDto;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const openSignUp = useOpenWaitingListPopUp();\r\n const open = () => {\r\n openSignUp(\r\n {\r\n Id: props.Id,\r\n model: props.model,\r\n useSidePanel: props.useSidePanel,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const useOpenWaitingListPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n return React.useCallback(\r\n (\r\n props: {\r\n Id?: number;\r\n model?: IReservationWaitingListDto;\r\n useSidePanel?: boolean;\r\n },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n let signupProps = {\r\n Id: props.Id,\r\n initialDetails: props.model,\r\n useSidePanel: true,\r\n } as SignUpWaitingListDetailsProps;\r\n const panelState = {\r\n renderPageType: RenderPageType.SignUpWaitingListDetails,\r\n renderPageProps: signupProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.SignUpWaitingListDetails,\r\n renderPageProps: signupProps,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [openPanel],\r\n );\r\n};\r\n","import { ConfigurableColumns } from 'app/components/BasicTable/ConfigurableColumns';\r\nimport { ImportExportApi } from './Api';\r\nimport {\r\n ImportAdditionalData,\r\n ImportData,\r\n ImportReservationData,\r\n TemplateColumns,\r\n} from './Types';\r\n\r\nconst Api = new ImportExportApi();\r\nexport const ExportImportActions = {\r\n Export: (url: string, data?: any) => {\r\n return Api.export(url, data);\r\n },\r\n Import: (url: string, file, data?: ImportData) => {\r\n return Api.import(url, file, data);\r\n },\r\n TemplateColumns: (\r\n screenId: number,\r\n Iad: ImportAdditionalData = ImportAdditionalData.none,\r\n data: ImportReservationData,\r\n ) => {\r\n return Api.TemplateColumns(screenId, Iad, data);\r\n },\r\n ConfigurableColumns: (\r\n url: string,\r\n listId: number,\r\n configurableType: number,\r\n ) => {\r\n return Api.ConfigurableColumns(\r\n url,\r\n listId,\r\n configurableType,\r\n );\r\n },\r\n ImportTemplate: (\r\n screenId: number,\r\n ext: string,\r\n Iad: ImportAdditionalData = ImportAdditionalData.none,\r\n data: ImportReservationData,\r\n ) => {\r\n return Api.ImportTemplate(screenId, ext, Iad, data);\r\n },\r\n ExportForImport: (\r\n ScreenId: number,\r\n Ids: number[],\r\n Iad: ImportAdditionalData = ImportAdditionalData.none,\r\n ) => {\r\n return Api.ExportForImport(ScreenId, Ids, Iad);\r\n },\r\n ImportImages: (files: File[], ScreenId: number) => {\r\n return Api.importImages(files, ScreenId);\r\n },\r\n};\r\n","import { httpClient } from 'api/HttpClient';\r\nimport axios from 'axios';\r\nimport {\r\n ImportAdditionalData,\r\n ImportData,\r\n ImportReservationData,\r\n} from './Types';\r\n\r\nexport class ImportExportApi {\r\n export = (url: string, data?: any) => {\r\n return axios.post(url, data, {\r\n responseType: 'blob',\r\n timeout: undefined,\r\n });\r\n };\r\n import = async (url: string, file, data?: ImportData) => {\r\n const formData = new FormData();\r\n formData.append('File', file);\r\n if (data !== undefined) {\r\n formData.append('importData', JSON.stringify(data));\r\n }\r\n try {\r\n const response = await axios.post(url, formData, {\r\n responseType: 'blob',\r\n timeout: undefined,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n });\r\n return response;\r\n } catch (error: unknown) {\r\n throw error;\r\n }\r\n };\r\n ConfigurableColumns = (\r\n url: string,\r\n listId: number,\r\n configurableType: number,\r\n ) => {\r\n return httpClient.get(url, {\r\n ListID: listId,\r\n ConfigurableType: configurableType,\r\n });\r\n };\r\n TemplateColumns = (\r\n ScreenId: number,\r\n Iad: ImportAdditionalData = ImportAdditionalData.none,\r\n data: ImportReservationData,\r\n ) => {\r\n const url = 'api/GenericImport/TemplateNames';\r\n return axios.get(url, {\r\n params: {\r\n screenId: ScreenId,\r\n iad: Iad,\r\n equipmentId: data.EquipmentId ?? 0,\r\n accServiceId: data.AccServiceId ?? 0,\r\n customFormId: data.CustomFormId ?? 0,\r\n },\r\n });\r\n };\r\n ImportTemplate = (\r\n ScreenId: number,\r\n Ext: string,\r\n Iad: ImportAdditionalData = ImportAdditionalData.none,\r\n data: ImportReservationData,\r\n ) => {\r\n const url = 'api/GenericImport/ImportTemplate';\r\n return axios.get(url, {\r\n responseType: 'blob',\r\n timeout: undefined,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n params: {\r\n screenId: ScreenId,\r\n ext: Ext,\r\n iad: Iad,\r\n equipmentId: data.EquipmentId ?? 0,\r\n accServiceId: data.AccServiceId ?? 0,\r\n customFormId: data.CustomFormId ?? 0,\r\n },\r\n });\r\n };\r\n // Ids count may be too large.\r\n // Therefore, Ids are sent in the request body.\r\n ExportForImport = (\r\n ScreenId: number,\r\n Ids: number[],\r\n Iad: ImportAdditionalData = ImportAdditionalData.none,\r\n ) => {\r\n const data = { ScreenId: ScreenId, Ids: Ids, Iad: Iad };\r\n const formData = new FormData();\r\n formData.append('importData', JSON.stringify(data));\r\n const url = 'api/GenericImport/ExportForImport';\r\n return axios.post(url, formData, {\r\n responseType: 'blob',\r\n timeout: undefined,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n });\r\n };\r\n importImages = (files: File[], ScreenId: number) => {\r\n const url = 'api/GenericImport/ImportImages';\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append(file.name, file);\r\n }\r\n return axios.post(url, formData, {\r\n responseType: 'blob',\r\n timeout: undefined,\r\n maxContentLength: 50000000,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n params: { screenId: ScreenId },\r\n });\r\n };\r\n}\r\n","import { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { OnlineServiceMultiPicker } from 'app/components/pickers/MultiSelectPickers/OnlineServicesPicker';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const ServiceMultiFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport const ServiceAdminFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport const ServiceReservationFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\n","import { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { intersection } from 'lodash';\r\nimport { Identifiable } from 'types/common';\r\n\r\nexport const initFilterData = async (\r\n filters: IFilterSettings[],\r\n serviceGroups?: Identifiable[],\r\n): Promise[]> => {\r\n var result = Promise.all(\r\n filters.map(async item => {\r\n if (item.initData === undefined) {\r\n return item;\r\n }\r\n if (item.value === undefined) {\r\n return item;\r\n }\r\n if (item.value === null) {\r\n return item;\r\n }\r\n if (typeof item.value === 'string') {\r\n return item;\r\n }\r\n if (\r\n Array.isArray(item.value) &&\r\n item.value.some(f => f.Name !== undefined)\r\n ) {\r\n return item;\r\n }\r\n try {\r\n const data = await item.initData(item.value, serviceGroups);\r\n if (data !== undefined) {\r\n return {\r\n ...item,\r\n ...{\r\n value: filterByServiceGroups(\r\n data,\r\n serviceGroups?.map(f => f.Id) ?? [],\r\n ),\r\n initCompleted: item.refreshAfterInit ? true : undefined,\r\n },\r\n };\r\n } else {\r\n return item;\r\n }\r\n } catch {\r\n return item;\r\n }\r\n }),\r\n );\r\n return result;\r\n};\r\n\r\nfunction filterByServiceGroups(item, serviceGroups: number[]) {\r\n if (serviceGroups.length === 0) {\r\n return item;\r\n }\r\n if (item.ServiceGroupId !== undefined) {\r\n if (serviceGroups.includes(item.ServiceGroupId)) {\r\n return item;\r\n } else {\r\n return null;\r\n }\r\n } else if (item.ServiceGroups !== undefined) {\r\n let a = [];\r\n if (item.ServiceGroups.length === 0) {\r\n return item;\r\n } else {\r\n if (typeof item.ServiceGroups[0] === 'number') {\r\n a = item.ServiceGroups;\r\n } else {\r\n a = item.ServiceGroups.map(f => f.Id);\r\n }\r\n }\r\n const intersectsWithServiceGroups =\r\n intersection(a, serviceGroups).length > 0;\r\n if (intersectsWithServiceGroups) {\r\n return item;\r\n } else {\r\n return null;\r\n }\r\n } else if (Array.isArray(item)) {\r\n return item\r\n .map(c => filterByServiceGroups(c, serviceGroups))\r\n .filter(f => f != null);\r\n }\r\n return item;\r\n}\r\n","export enum InvoiceStatuses {\r\n New,\r\n SentToBilling,\r\n SentToReview,\r\n BillingRejected,\r\n Paid,\r\n ReviewApproved,\r\n ReviewRejected,\r\n}\r\n","import useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { selectPublicUrl } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { InvoiceDetailsProps } from 'app/pages/InvoiceDetails';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { selectActiveFilters } from 'app/pages/InvoiceDetails/Slice/selector';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nexport const InvoiceDetailsLink = (props: {\r\n id: number;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const openDetails = useOpenInvoiceDetailsPopUp();\r\n const getLink = useInvoiceLinkUrl();\r\n const filters = useSelector(selectActiveFilters);\r\n\r\n const link = getLink(props.id, filters);\r\n const open = () => {\r\n openDetails(\r\n {\r\n id: props.id,\r\n useSidePanel: props.useSidePanel,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const useOpenInvoiceDetailsPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n const isMobile = DetectIsMobile();\r\n return React.useCallback(\r\n (\r\n props: { id: number; useSidePanel?: boolean },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n let resProps = {\r\n id: props.id,\r\n useSidePanel: true,\r\n } as InvoiceDetailsProps;\r\n\r\n const panelState = {\r\n renderPageType: RenderPageType.InvoiceDetails,\r\n renderPageProps: resProps,\r\n expanded: !isMobile && !props.useSidePanel,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.InvoiceDetails,\r\n renderPageProps: resProps,\r\n expanded: !isMobile && !props.useSidePanel,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [isMobile, openPanel],\r\n );\r\n};\r\nexport const useInvoiceLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n return React.useCallback(\r\n (id: number, params?: Record) => {\r\n return buildURL(publicUrl + `invoices/details/${id}`, params ?? {});\r\n },\r\n [publicUrl],\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { downloadFile } from 'utils/url-utils';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { LinearProgress, Link } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\ninterface DownloadFileButonProps {\r\n id: string;\r\n name?: React.ReactNode;\r\n fileTypeId?: FileTypes;\r\n}\r\n\r\nexport function DownloadFileButon(props: DownloadFileButonProps) {\r\n const { t } = useTranslation();\r\n const url = `/file.ashx?id=${props.id}&ap=true${\r\n props.fileTypeId ? `&ft=${props.fileTypeId}` : ''\r\n }`;\r\n const [busy, setBusy] = React.useState(false);\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const handleClick = React.useCallback(\r\n async event => {\r\n event.preventDefault();\r\n if (busy) {\r\n return;\r\n }\r\n setBusy(true);\r\n try {\r\n await downloadFile({ path: url });\r\n setBusy(false);\r\n } catch (error) {\r\n setBusy(false);\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: t(translations.Error_FileNotAvailable),\r\n }),\r\n );\r\n }\r\n\r\n return false;\r\n },\r\n [actions, busy, dispatch, t, url],\r\n );\r\n if (!busy) {\r\n return (\r\n \r\n {props.name ?? t(translations.Download)}\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {}}>\r\n {props.name ?? t(translations.Download)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\nexport const Div100 = styled.div`\r\n width: 100%;\r\n`;\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { quoteODataValue } from 'api/odata/ODataFilter';\r\nimport {\r\n BaseURLPicker,\r\n BaseURLPickerProps,\r\n} from 'app/components/BasicPickers/BaseURLPicker';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport { OfflineReferenceTypeEnum } from 'enums/OfflineReferenceTypeEnum';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface ServiceShortPickerprops\r\n extends Omit>, 'url'> {}\r\nconst url = '/api/odata/v4/ServiceShortFilter';\r\n\r\nexport const ServiceShortPicker = (props: ServiceShortPickerprops) => {\r\n return ;\r\n};\r\n\r\nexport const InitServiceShortData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,TypeId,ServiceGroupId',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nexport const InitServiceShortDataByRefType =\r\n (refTypeId?: number) => (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n let innerFilter = '';\r\n if (refTypeId === OfflineReferenceTypeEnum.Offline_ServiceRequest) {\r\n innerFilter = `(TypeId eq ${quoteODataValue(\r\n ServiceType.Sample as number,\r\n )} and Id eq ${id})`;\r\n } else {\r\n innerFilter = `(TypeId eq ${quoteODataValue(\r\n ServiceType.Online as number,\r\n )} and Id eq ${id})`;\r\n }\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: innerFilter,\r\n $select: 'Id,Name,TypeId,ServiceGroupId',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n };\r\nexport const ServiceByOfflineRefernceFilter = (value: FilterValueType) => {\r\n if (value !== undefined && value !== null) {\r\n if (\r\n (value as Entity).Id ===\r\n OfflineReferenceTypeEnum.Offline_ServiceRequest\r\n ) {\r\n return [`TypeId eq ${quoteODataValue(ServiceType.Sample as number)}`];\r\n } else {\r\n return [`TypeId eq ${quoteODataValue(ServiceType.Online as number)}`];\r\n }\r\n }\r\n return [];\r\n};\r\n","import * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { Entity } from 'types/common';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\n\r\nconst url = '/api/odata/v4/UnitTypesFilter';\r\n\r\nexport interface UnitTypePickerProps\r\n extends Omit, 'loadData'> {\r\n type?: number;\r\n $select?: Array;\r\n}\r\n\r\nexport interface UnitType extends Entity {\r\n SourceUnits: Conversion[];\r\n TargetUnits: Conversion[];\r\n CategoryType: number | null;\r\n}\r\n\r\ninterface Conversion {\r\n ConversionRate: number;\r\n TargetId: number;\r\n}\r\n\r\nexport const getUnitTypesData = () => {\r\n const params: {\r\n $orderby: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $skip: 0,\r\n $top: 100,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as UnitType[]);\r\n};\r\n\r\nexport const initUnitTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return Promise.resolve([]);\r\n }\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as UnitType[]);\r\n};\r\nconst loadData = (\r\n $select?: Array | undefined,\r\n predicates?: (string | Condition)[],\r\n) => {\r\n return getAutoCompleteLoadDataFn({\r\n url: url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: $select ?? [\r\n 'Id',\r\n 'Name',\r\n 'CategoryType',\r\n 'SourceUnits',\r\n 'TargetUnits',\r\n ],\r\n });\r\n};\r\n// const getLoadData = (\r\n// type?: number,\r\n// $select?: Array | undefined,\r\n// ) => (searchTerm: string | null) => {\r\n// const params: {\r\n// $orderby: string;\r\n// $filter?: string;\r\n// $select?: string | undefined;\r\n// } = {\r\n// $orderby: 'Name asc',\r\n// $select: $select?.join(','),\r\n// };\r\n\r\n// const predicates: Condition[] = [];\r\n// if (type !== undefined) {\r\n// predicates.push(new Condition('CategoryType', ODataOperators.Equals, type));\r\n// }\r\n// params.$filter = new ODataFilterBuilder({\r\n// predicates: predicates,\r\n// stringColumns: ['Name'],\r\n// stringSearch: searchTerm,\r\n// }).toString();\r\n\r\n// return httpClient\r\n// .get(url, params)\r\n// .then(response => response.value as UnitType[]);\r\n// };\r\nexport const UnitTypePicker = ({\r\n type,\r\n $select,\r\n ...props\r\n}: UnitTypePickerProps) => {\r\n const predicates: Condition[] = React.useMemo(() => {\r\n return !!type\r\n ? [new Condition('CategoryType', ODataOperators.Equals, type)]\r\n : [];\r\n }, [type]);\r\n\r\n const innerLoadData = loadData($select, predicates);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField, useFormikContext } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { useIsRequired } from './ValidationSchemaProvider';\r\nimport { FileInputProps } from '../BasicInputs/FileUpload/FileInput';\r\nimport { IFormFileValue } from '../CustomForm/CustomFormUtils';\r\nimport { FileUpload } from '../BasicInputs/FileUpload/FileUpload';\r\n\r\nexport const FormInputFile = ({\r\n id,\r\n label,\r\n onChange,\r\n value,\r\n name,\r\n title,\r\n required,\r\n ...props\r\n}: FieldHookConfig & IFieldProps & FileInputProps) => {\r\n const [field, meta, helper] = useField({\r\n name,\r\n ...props,\r\n });\r\n const handleChange = (files: IFormFileValue[]) => {\r\n helper.setValue(files);\r\n //const files = event.target.files;\r\n //console.log('value', event.target);\r\n console.debug('files', files);\r\n onChange?.(files);\r\n // if (onChange !== undefined) {\r\n // onChange(files, event);\r\n // }\r\n // field.onChange(event);\r\n };\r\n const { submitCount } = useFormikContext();\r\n const isRequired = useIsRequired(name);\r\n const hasError = meta?.error !== undefined;\r\n const showError = hasError || submitCount > 0;\r\n return (\r\n \r\n );\r\n};\r\n","import { AsyncDataState } from 'types/common';\r\nimport { IRepetitiveDto } from 'types/IRepetitiveDto';\r\nimport { FieldHandlerProps } from '../../FormRender/FormRenderer';\r\n\r\n/* --- STATE --- */\r\nexport interface RepetitiveState extends AsyncDataState {\r\n repetitiveValueHandler?: FieldHandlerProps;\r\n}\r\nexport enum RepetitiveFor {\r\n WorkOrder = 1,\r\n Reservations = 2,\r\n Schedule = 3,\r\n}\r\n","/**\r\n *\r\n * AccompaniedServicesPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport {\r\n AutocompleteMultiPickerEx,\r\n AutocompleteMultiPickerExProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPickerEx';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { AutocompletePicker } from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nexport interface AccompaniedServicesPickerProps\r\n extends Omit<\r\n AutocompleteMultiPickerExProps,\r\n 'loadData'\r\n > {\r\n inputProps?: InputBaseComponentProps;\r\n}\r\nconst url = '/api/odata/v4/AccompaniedServices';\r\nexport const initAccompaniedData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n let ids = (\r\n initval.indexOf(',') !== -1 ? initval.split(',') : [initval]\r\n ).map(item => {\r\n return { Id: parseInt(item) };\r\n }) as Identifiable[];\r\n let foo: string | undefined = undefined;\r\n if (ids.length > 0) {\r\n const predicates: string | Condition[] = [];\r\n\r\n predicates.push(new Condition('Id', ODataOperators.Includes, ids));\r\n\r\n foo = predicates.map(f => f.toString()).join(' and ');\r\n }\r\n\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n $select: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: foo,\r\n $skip: 0,\r\n $top: 10,\r\n $select: [\r\n 'Id',\r\n 'Name',\r\n 'Active',\r\n 'CustomFormId',\r\n 'EquipmentId',\r\n 'EquipmentName',\r\n 'OverrideTraining',\r\n 'StaffOnly',\r\n 'ServiceGroupId',\r\n 'Color',\r\n 'InstrumentCatId',\r\n 'InstrumentCatName',\r\n 'MaxOrderDuration',\r\n 'MinOrderDuration',\r\n 'MinOrderGap',\r\n 'Inventory',\r\n ].join(','),\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'Active',\r\n 'CustomFormId',\r\n 'EquipmentId',\r\n 'EquipmentName',\r\n 'OverrideTraining',\r\n 'StaffOnly',\r\n 'ServiceGroupId',\r\n 'Color',\r\n 'InstrumentCatId',\r\n 'InstrumentCatName',\r\n 'MaxOrderDuration',\r\n 'MinOrderDuration',\r\n 'MinOrderGap',\r\n 'Inventory',\r\n ],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\nexport function AccompaniedServicesPicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n ...props\r\n}: AccompaniedServicesPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(predicates, globalServiceGroupFilter || []);\r\n return (\r\n \r\n );\r\n}\r\nexport function SingleAccompaniedServicesPicker({\r\n label,\r\n defaultValue,\r\n placeholder,\r\n className,\r\n required,\r\n helperText,\r\n onChange,\r\n variant,\r\n info,\r\n id,\r\n value,\r\n predicates,\r\n disabled,\r\n inputProps,\r\n ...props\r\n}: AccompaniedServicesPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(predicates, globalServiceGroupFilter || []);\r\n return (\r\n {\r\n if (!!onChange) {\r\n if (value !== null) {\r\n return onChange([value]);\r\n } else {\r\n return onChange([]);\r\n }\r\n }\r\n }}\r\n disabled={disabled}\r\n info={info}\r\n id={id || 'acc-service-single-picker'}\r\n helperText={helperText}\r\n required={required}\r\n className={className}\r\n onBlur={props.onBlur}\r\n placeholder={placeholder}\r\n defaultValue={\r\n !!defaultValue\r\n ? defaultValue.length > 0\r\n ? (defaultValue[0] as IEquipmentAccServicesDto | undefined | null)\r\n : undefined\r\n : undefined\r\n }\r\n label={label}\r\n value={\r\n !!value\r\n ? value.length > 0\r\n ? (value[0] as IEquipmentAccServicesDto | undefined | null)\r\n : undefined\r\n : undefined\r\n }\r\n ariaLabel={'Equipment search'}\r\n {...props}\r\n error={props.error}\r\n />\r\n );\r\n}\r\nexport function ReservationsAccServicesFilter(\r\n Equipments: number[],\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (Equipments.length > 0) {\r\n let ids = Equipments.map(f => {\r\n return { Id: f } as Identifiable;\r\n });\r\n predicates.push(\r\n new Condition(\r\n 'EquipmentId',\r\n ODataOperators.Includes,\r\n ids,\r\n ),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n\r\nexport const loadEquipments = loadData;\r\n","/**\r\n *\r\n * FormReservationEquipmentsPicker\r\n *\r\n */\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport {\r\n ReservationEquipmentsPicker,\r\n ReservationSingleEquipmentPicker,\r\n} from '../pickers/MultiSelectPickers/EquipmentReservationPicker';\r\nimport { IReservationEquipmentDto } from 'app/pages/ReservationDetails/Details/slice/types';\r\n\r\nexport const FormReservationEquipmentsPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps & { multiple: boolean; autoExpand?: string }) => {\r\n const [field, meta, helpers] = useField(\r\n props,\r\n );\r\n if (props.multiple) {\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onChipClick={props.onChipClick}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n expandedColumns={props.autoExpand}\r\n />\r\n );\r\n } else {\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onChipClick={props.onChipClick}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n expandedColumns={props.autoExpand}\r\n />\r\n );\r\n }\r\n};\r\n","/**\r\n *\r\n * FormReservationStatusPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { ReservationStatusPicker } from '../pickers/AutocompletePickers/ReservationStatusPicker';\r\n\r\nexport const FormReservationStatusPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & IFieldProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n info={props.info}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n};\r\n","import { CustomFormControl } from 'app/components/CustomForm/CusomFormControl';\r\nimport * as React from 'react';\r\nimport { CustomFormTypeEnum } from 'enums/CustomFormType';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { ICustomFormDto } from 'api/odata/generated/entities/ICustomFormDto';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useReservationSlice } from '../slice';\r\nimport { selectAsyncChangeLoading } from '../slice/selectors';\r\n\r\nexport interface ReservationCustomFormProps {\r\n multiple?: boolean;\r\n customForms: ICustomFormDto[];\r\n readonly?: boolean;\r\n isAdmin?: boolean;\r\n customFormRef: React.MutableRefObject;\r\n formIsValid?: (isValid: boolean) => void;\r\n formValues: IFormValueDto[];\r\n disabled?: boolean;\r\n validationEnabled?: boolean;\r\n saveFormValues: (\r\n values: IFormValueDto[],\r\n files: IFormFileValue[],\r\n originalFiles: IFormFileValue[],\r\n ) => void;\r\n}\r\n\r\nexport function ReservationCustomForm(props: ReservationCustomFormProps) {\r\n const {\r\n multiple,\r\n customForms,\r\n readonly,\r\n isAdmin,\r\n customFormRef,\r\n formIsValid,\r\n formValues,\r\n saveFormValues,\r\n disabled,\r\n validationEnabled = true,\r\n } = props;\r\n const dispatch = useDispatch();\r\n const { actions } = useReservationSlice();\r\n const mandatoryForms = React.useMemo(() => {\r\n return customForms.filter(f => f.Mandatory === true);\r\n }, [customForms]);\r\n const optionalForms = React.useMemo(() => {\r\n return customForms.filter(f => !f.Mandatory);\r\n }, [customForms]);\r\n const isAsyncChangeLoading = useSelector(selectAsyncChangeLoading);\r\n const selectedForms = React.useMemo(() => {\r\n return customForms.filter(f =>\r\n formValues.some(c => c.CustomFormId === f.Id),\r\n );\r\n }, [customForms, formValues]);\r\n const formValuesForms = React.useMemo(() => {\r\n return formValues.length > 0\r\n ? [\r\n ...new Set(\r\n formValues.map(f => f.CustomFormId || 0).filter(f => f > 0),\r\n ),\r\n ]\r\n : [];\r\n }, [formValues]);\r\n const onLoadCompleted = () => {\r\n if (isAsyncChangeLoading) {\r\n dispatch(actions.setAsyncChangeLoading(false));\r\n }\r\n };\r\n const onLoadStarted = () => {\r\n dispatch(actions.setAsyncChangeLoading(true));\r\n };\r\n const formId = React.useMemo(() => {\r\n return selectedForms.length > 0\r\n ? selectedForms[0].Id\r\n : formValuesForms.length > 0\r\n ? formValuesForms[0]\r\n : mandatoryForms.length > 0\r\n ? mandatoryForms[0].Id\r\n : optionalForms.length > 0\r\n ? optionalForms[0].Id\r\n : 0;\r\n }, [formValuesForms, mandatoryForms, optionalForms, selectedForms]);\r\n return customForms.length > 0 || formId > 0 ? (\r\n \r\n {multiple ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ) : (\r\n {''}\r\n );\r\n}\r\n","import { useFormikContext } from 'formik';\r\nimport { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { GlobalSettingsType } from '../useGlobalSettingsHook';\r\nimport { useDispatch } from 'react-redux';\r\nimport { newDate } from '../utils';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { ServiceSettingsState } from '../../slice/types';\r\nimport { useRepetitiveSlice } from 'app/components/Forms/FormRepetitive/slice';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { CustomDate } from 'types/CustomDate';\r\n\r\nexport interface StartTimeListenerProps {\r\n userName: Entity | null;\r\n equipments: Entity[];\r\n globalSettings: GlobalSettingsType;\r\n user: AuthenticatedUser | undefined;\r\n startTime: Date | string;\r\n endTime: Date | string;\r\n initialStart: Date | string;\r\n initialEnd: Date | string;\r\n changeHandler: (values: T, changeStatus?: boolean | undefined) => void;\r\n equipmentSettings: ServiceSettingsState | undefined;\r\n isEdit: boolean;\r\n values: T;\r\n fullDayReservation: boolean;\r\n manualChange?: boolean;\r\n}\r\nexport function StartTimeListener(props: StartTimeListenerProps) {\r\n const {\r\n userName,\r\n equipments,\r\n startTime,\r\n endTime,\r\n initialStart,\r\n initialEnd,\r\n values,\r\n equipmentSettings,\r\n changeHandler,\r\n fullDayReservation,\r\n manualChange,\r\n } = props;\r\n const [prevStartTime, setPrevStartTime] = React.useState<\r\n Date | string | undefined\r\n >(initialStart);\r\n const [prevEndTime, setPrevEndTime] = React.useState<\r\n Date | string | undefined\r\n >(initialEnd);\r\n const isStartChanged = React.useRef(undefined);\r\n const isEndChanged = React.useRef(undefined);\r\n // const [isStartChanged, setIsStartChanged] = React.useState<\r\n // boolean | undefined\r\n // >(undefined);\r\n // const [isEndChanged, setIsEndChanged] = React.useState(\r\n // undefined,\r\n // );\r\n const dispatch = useDispatch();\r\n const { actions: repetitiveActions } = useRepetitiveSlice();\r\n const [initilized, setInitilized] = React.useState(true);\r\n const { setFieldValue } = useFormikContext();\r\n const { setFieldTouched, validateForm } = useFormikContext();\r\n React.useEffect(() => {\r\n if (!initilized) {\r\n let start = newDate(startTime);\r\n let end =\r\n endTime === null\r\n ? newDate(\r\n dateUtils.set(start, {\r\n hours:\r\n start.getHours() +\r\n (equipmentSettings?.DefaultReservationDuration || 1),\r\n minutes: start.getMinutes(),\r\n }),\r\n )\r\n : newDate(endTime);\r\n //Start Time Changed\r\n if (!!prevStartTime) {\r\n let prev = newDate(prevStartTime);\r\n if (start.getTime() !== prev.getTime()) {\r\n if (!fullDayReservation) {\r\n if (end === null) {\r\n end = newDate(\r\n dateUtils.addHours(\r\n start,\r\n equipmentSettings?.DefaultReservationDuration || 1,\r\n ),\r\n );\r\n }\r\n end = newDate(\r\n dateUtils.addMilliseconds(end, start.getTime() - prev.getTime()),\r\n );\r\n }\r\n\r\n setTimeout(() => setFieldTouched('EndTime', true, false));\r\n\r\n setTimeout(() =>\r\n validateForm({\r\n ...values,\r\n EndTime: dateUtils.formatISO(dateUtils.dateOrStringToDate(end), {\r\n format: 'basic',\r\n representation: 'complete',\r\n }),\r\n }),\r\n );\r\n setPrevStartTime(start);\r\n isStartChanged.current = true;\r\n isEndChanged.current =\r\n end.getTime() !== newDate(prevEndTime).getTime();\r\n //setIsEndChanged(end.getTime() !== newDate(prevEndTime).getTime());\r\n setPrevEndTime(end);\r\n dispatch(\r\n repetitiveActions.setRepetitiveValue({\r\n fieldKey: 'RecurringEndDate',\r\n fieldValue: dateUtils.formatISO(\r\n new CustomDate(dateUtils.addDays(start, 7), 'date'),\r\n ),\r\n }),\r\n );\r\n } else {\r\n let prevEnd = newDate(prevEndTime);\r\n if (end.getTime() !== prevEnd.getTime()) {\r\n //setIsEndChanged(true);\r\n isEndChanged.current = true;\r\n }\r\n setPrevEndTime(end);\r\n }\r\n }\r\n if (\r\n equipments.length > 0 &&\r\n userName != null &&\r\n (isStartChanged.current === true || isEndChanged.current === true)\r\n ) {\r\n changeHandler({ ...values, EndTime: end }, false);\r\n if (isEndChanged.current === true && !manualChange) {\r\n setFieldValue(\r\n 'EndTime',\r\n dateUtils.formatISO(dateUtils.dateOrStringToDate(end)),\r\n );\r\n }\r\n console.log('StartTime Changed');\r\n isEndChanged.current = undefined;\r\n isStartChanged.current = undefined;\r\n // setIsStartChanged(undefined);\r\n // setIsEndChanged(undefined);\r\n }\r\n }\r\n setInitilized(false);\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [startTime, endTime]);\r\n\r\n return null;\r\n}\r\n","import { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { GlobalSettingsType } from '../useGlobalSettingsHook';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectAsyncChangeLoading } from '../../slice/selectors';\r\nimport { newDate } from '../utils';\r\n\r\nexport interface EndTimeListenerProps {\r\n userName: Entity | null;\r\n equipments: Entity[];\r\n globalSettings: GlobalSettingsType;\r\n user: AuthenticatedUser | undefined;\r\n endTime: Date | string;\r\n initialEnd: Date | string;\r\n isEdit: boolean;\r\n changeHandler: (values: T, changeStatus?: boolean | undefined) => void;\r\n values: T;\r\n}\r\nexport function EndTimeListener(props: EndTimeListenerProps) {\r\n const {\r\n userName,\r\n equipments,\r\n endTime,\r\n isEdit,\r\n changeHandler,\r\n initialEnd,\r\n values,\r\n } = props;\r\n const [initialized, setInitialized] = React.useState(true);\r\n const asyncChangeLoading = useSelector(selectAsyncChangeLoading);\r\n const [prevEndTime, setPrevEndTime] = React.useState<\r\n Date | string | undefined\r\n >(initialEnd);\r\n React.useEffect(() => {\r\n if (!initialized) {\r\n let newEnd = newDate(endTime);\r\n let prevEnd = newDate(prevEndTime);\r\n if (\r\n equipments.length > 0 &&\r\n userName != null &&\r\n !isEdit &&\r\n !asyncChangeLoading &&\r\n prevEnd.getTime() !== newEnd.getTime()\r\n ) {\r\n changeHandler(values);\r\n }\r\n setPrevEndTime(newEnd);\r\n }\r\n setInitialized(false);\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [endTime]);\r\n\r\n return null;\r\n}\r\n","/**\r\n *\r\n * ChipCheckBoxGroup\r\n *\r\n */\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n FormHelperText,\r\n FormLabel,\r\n} from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { BookitChipWithCheck } from '.';\r\nimport { CheckEntity } from '../CheckBoxGroup';\r\nimport FormControlLabel from '../Forms/FormControls/FormControlLabel';\r\n\r\nexport interface ChipCheckBoxGroupProps {\r\n options: CheckEntity[];\r\n value?: CheckEntity[];\r\n className?: string;\r\n onChange?: (\r\n value: CheckEntity,\r\n event: React.ChangeEvent,\r\n ) => void;\r\n id: string;\r\n //formik\r\n name?: string;\r\n error?: boolean;\r\n label?: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n helperText?: string;\r\n info?: string;\r\n fullWidth?: boolean;\r\n size?: 'small' | 'medium';\r\n margin?: 'none' | 'dense' | 'normal';\r\n isRow?: boolean;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function ChipCheckBoxGroup({\r\n name,\r\n id,\r\n value,\r\n options,\r\n onChange,\r\n label,\r\n required,\r\n helperText,\r\n disabled,\r\n fullWidth,\r\n margin,\r\n error,\r\n size,\r\n isRow,\r\n ...props\r\n}: ChipCheckBoxGroupProps) {\r\n const handleChange = (event: React.ChangeEvent) => {\r\n const value = {\r\n Id: parseInt(event.target.id),\r\n Name: event.target.name,\r\n checked: event.target.checked,\r\n disabled: event.target.disabled,\r\n } as CheckEntity;\r\n if (onChange !== undefined) {\r\n onChange(value, event);\r\n }\r\n };\r\n return (\r\n \r\n {label}\r\n \r\n {options.map((item, index) => (\r\n 24 ? item.Name : undefined}\r\n onChange={handleChange}\r\n customsize=\"small\"\r\n size=\"small\"\r\n color=\"primary\"\r\n />\r\n }\r\n />\r\n ))}\r\n \r\n {helperText}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ChipLabelGroup\r\n *\r\n */\r\nimport {\r\n FormControl,\r\n FormControlLabel,\r\n FormGroup,\r\n FormHelperText,\r\n FormLabel,\r\n} from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { BookitChipWithInfo } from '.';\r\nimport { CheckEntity, ChipEntity } from '../CheckBoxGroup';\r\n\r\nexport interface ChipLabelGroupProps {\r\n options: ChipEntity[];\r\n value?: ChipEntity[];\r\n className?: string;\r\n onChipClick?: (chip: ChipEntity) => void;\r\n onChange?: (\r\n value: CheckEntity,\r\n event: React.ChangeEvent,\r\n ) => void;\r\n id: string;\r\n //formik\r\n name?: string;\r\n error?: boolean;\r\n label?: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n helperText?: string;\r\n info?: string;\r\n fullWidth?: boolean;\r\n size?: 'small' | 'medium';\r\n margin?: 'none' | 'dense' | 'normal';\r\n isRow?: boolean;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function ChipLabelGroup({\r\n name,\r\n id,\r\n value,\r\n options,\r\n onChange,\r\n label,\r\n onChipClick,\r\n required,\r\n helperText,\r\n disabled,\r\n fullWidth,\r\n margin,\r\n error,\r\n size,\r\n isRow,\r\n style,\r\n ...props\r\n}: ChipLabelGroupProps) {\r\n // const handleChange = (event: React.ChangeEvent) => {\r\n // const value = {\r\n // Id: parseInt(event.target.id),\r\n // Name: event.target.name,\r\n // checked: event.target.checked,\r\n // } as CheckEntity;\r\n // if (onChange !== undefined) {\r\n // onChange(value, event);\r\n // }\r\n // };\r\n return (\r\n \r\n {label}\r\n \r\n {options.map((item, index) => (\r\n !!onChipClick && onChipClick(item)}\r\n //fullwidth={fullWidth}\r\n variant=\"default\"\r\n size={size || 'small'}\r\n label={item.Name}\r\n key={`chip-${item.Id}`}\r\n customwidth={260}\r\n info={item.info}\r\n />\r\n }\r\n />\r\n ))}\r\n \r\n {helperText && {helperText}}\r\n \r\n );\r\n}\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport { ChangeEvent } from 'react';\r\nimport {\r\n ChipCheckBoxGroup,\r\n ChipCheckBoxGroupProps,\r\n} from '../BasicChip/ChipChekBoxGroup';\r\nimport {\r\n ChipLabelGroup,\r\n ChipLabelGroupProps,\r\n} from '../BasicChip/ChipLabelGroup';\r\nimport { CheckEntity, ChipEntity } from '../CheckBoxGroup';\r\n\r\n//export type FormCheckBoxGroupProps = FieldHookConfig & CheckBoxGroupProps;\r\n\r\nexport const FormChipCheckBoxGroup = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n ChipCheckBoxGroupProps & { setOnChanged: () => void }) => {\r\n const [field, meta, helpers] = useField(props);\r\n const handleChange = (\r\n value: CheckEntity,\r\n event: ChangeEvent,\r\n ) => {\r\n const val = value as CheckEntity;\r\n helpers.setValue(\r\n field.value.map(f => {\r\n if (f.Id === val.Id) {\r\n return { ...f, checked: val.checked };\r\n }\r\n return f;\r\n }),\r\n true,\r\n );\r\n field.onChange(event);\r\n if (props.onChange !== undefined) {\r\n props.onChange(value, event);\r\n }\r\n props.setOnChanged();\r\n };\r\n return (\r\n \r\n );\r\n};\r\nexport const FormChipLabelGroup = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n ChipLabelGroupProps & { onChipClick?: (value: ChipEntity) => void }) => {\r\n const [field, meta] = useField(props);\r\n const handleChipClick = (value: ChipEntity) => {\r\n !!props.onChipClick && props.onChipClick(value);\r\n };\r\n // const handleChange = (value, event) => {\r\n // const val = value as CheckEntity;\r\n // helpers.setValue(\r\n // field.value.map(f => {\r\n // if (f.Id === val.Id) {\r\n // f.checked = val.checked;\r\n // }\r\n // return f;\r\n // }),\r\n // true,\r\n // );\r\n // if (props.onChange !== undefined) {\r\n // props.onChange(value, event);\r\n // }\r\n // field.onChange(event);\r\n // };\r\n return (\r\n \r\n );\r\n};\r\n","import { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport { OtherServicesApi } from 'api/OtherServicesApi';\r\nimport { FormFieldsSection } from 'app/components/Forms/FormsLayout';\r\nimport {\r\n loadOfflineServiceData,\r\n ReservationsRelatedFilter,\r\n} from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { BookQuickServices } from 'app/pages/OtherServiceDetails/Details/components/BookQuickServices';\r\nimport { useOfflineServiceStateSlice } from 'app/pages/OtherServiceDetails/Details/slice';\r\nimport { selectSavedReservationService } from 'app/pages/OtherServiceDetails/Details/slice/selectors';\r\nimport { ErrorServices } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { useReservationSlice } from '../slice';\r\nimport { combineMandatoryOfflineServices } from '../slice/combineOfflineServiceTypes';\r\nimport {\r\n selectCloneReservations,\r\n selectSavedOfflineServices,\r\n} from '../slice/selectors';\r\nimport {\r\n ReservationDetailsState,\r\n ReservationSettingsState,\r\n ServiceSettingsState,\r\n} from '../slice/types';\r\nimport { GlobalSettingsType } from './useGlobalSettingsHook';\r\n\r\nexport interface ReservationOfflineServicesProps {\r\n values: ReservationDetailsState;\r\n reservationSettings?: ReservationSettingsState;\r\n equipmentSettings: ServiceSettingsState | undefined;\r\n globalSettings: GlobalSettingsType;\r\n isEdit: boolean;\r\n title?: React.ReactNode;\r\n hanleUpdateLocalServices: (\r\n services: IOtherServices[],\r\n operation: 'add' | 'remove' | 'update',\r\n ) => void;\r\n onServiceClick?: (item: IOtherServices) => void;\r\n disabled?: boolean;\r\n onAddBatchClick: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n setError?: (error: ErrorServices) => void;\r\n isCover?: boolean;\r\n}\r\n\r\nexport const ReservationOfflineServices = React.memo(\r\n function ReservationOfflineServices(props: ReservationOfflineServicesProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const isCloned = useSelector(selectCloneReservations);\r\n const savedServices = useSelector(selectSavedOfflineServices);\r\n const savedServiceEditable = useSelector(selectSavedReservationService);\r\n //const { actions: notifyActions } = useAppSettingsSlice();\r\n const { actions: offActions } = useOfflineServiceStateSlice();\r\n const { actions } = useReservationSlice();\r\n const { newDate } = useSystemDate();\r\n\r\n const {\r\n isEdit,\r\n values,\r\n equipmentSettings,\r\n reservationSettings,\r\n hanleUpdateLocalServices,\r\n onServiceClick,\r\n title,\r\n disabled,\r\n onAddBatchClick,\r\n setError,\r\n isCover,\r\n } = props;\r\n\r\n const optionalServiceTypes = React.useMemo(() => {\r\n const MandatoryOfflineServicesOnTrainingSignUps =\r\n props.globalSettings.MandatoryOfflineServicesOnTrainingSignUps &&\r\n values.TrainingSignUp;\r\n\r\n const result = [\r\n ...(reservationSettings?.OfflineOptional?.map(f => ({\r\n Id: f.Id,\r\n Mandatory: f.Mandatory,\r\n HideProject: f.HideProjects,\r\n })) ?? []),\r\n ...(equipmentSettings?.OfflineServiceTypes?.map(f => ({\r\n Id: f.Id,\r\n Mandatory: f.Mandatory,\r\n HideProject: f.HideProject,\r\n })) ?? []),\r\n ].filter(f =>\r\n MandatoryOfflineServicesOnTrainingSignUps\r\n ? f.Mandatory === true\r\n : !MandatoryOfflineServicesOnTrainingSignUps,\r\n );\r\n return result;\r\n }, [\r\n equipmentSettings?.OfflineServiceTypes,\r\n props.globalSettings.MandatoryOfflineServicesOnTrainingSignUps,\r\n reservationSettings?.OfflineOptional,\r\n values.TrainingSignUp,\r\n ]);\r\n const budgetServiceGroupServicesAllowed = React.useMemo(() => {\r\n return values.Budget === null || values.Budget === undefined\r\n ? undefined\r\n : (values.Budget as IBudgetFilterDto).ServiceGroupServicesAllowed;\r\n }, [values.Budget]);\r\n const fetchServiceType = async (\r\n searchTerm: string | null,\r\n predicates: (string | Condition)[] | undefined,\r\n ) => {\r\n try {\r\n const data = await loadOfflineServiceData(\r\n [\r\n ...ReservationsRelatedFilter(\r\n equipmentSettings?.Groups || [],\r\n optionalServiceTypes,\r\n equipmentSettings?.HasHideProjects,\r\n equipmentSettings?.AllOffServicesAllowed ?? undefined,\r\n values.Budget?.Id,\r\n budgetServiceGroupServicesAllowed,\r\n ),\r\n ...(predicates ?? []),\r\n ],\r\n 'relatedServices',\r\n [],\r\n undefined,\r\n 'InventoryBatches',\r\n )(searchTerm, undefined);\r\n return data.value;\r\n } catch {\r\n return [];\r\n }\r\n };\r\n const sortFunc = (a: IInventoryBatchDto, b: IInventoryBatchDto) => {\r\n return b.Id - a.Id;\r\n };\r\n const prepareService = (\r\n serviceType: IOfflineServiceFilterDto,\r\n reservation: ReservationDetailsState,\r\n ) => {\r\n let batch = serviceType.InventoryBatchesEnabled\r\n ? !!serviceType.InventoryBatches &&\r\n serviceType.InventoryBatches.length > 0\r\n ? serviceType.InventoryBatches.filter(\r\n f =>\r\n (f.ExpirationDate === null || f.ExpirationDate > newDate()) &&\r\n (serviceType.NotLessThanZero ? f.Inventory > 0 : true) &&\r\n f.StokRenewed === true,\r\n ).sort(sortFunc)[0]\r\n : null\r\n : null;\r\n let data = {\r\n Id: 0,\r\n BookedBy: reservation.BookedBy?.Id,\r\n UserDisplayName: reservation.BookedBy?.Name,\r\n BudgetID: reservation.Budget?.Id,\r\n Budget: reservation.Budget?.Name,\r\n BudgetExperimentId: reservation.BudgetExperiment?.Id,\r\n BudgetExperimentName: reservation.BudgetExperiment?.Name,\r\n Quantity: serviceType.DefaultQuantity,\r\n DefaultQuantity: serviceType.DefaultQuantity,\r\n ExternalCustomerId: reservation.ExternalCustomer?.Id,\r\n ExternalCustomerName: reservation.ExternalCustomer?.Name,\r\n FundingType: reservation.FundingType?.Id || null,\r\n IntQuantityOnly: serviceType.IntQuantityOnly,\r\n DiscountFactor: 1,\r\n InstituteProjectId: reservation.InstituteProject?.Id,\r\n InstituteProjectName: reservation.InstituteProject?.Name,\r\n PurchaseOrder: reservation.PurchaseOrder,\r\n Reference: reservation.Reference,\r\n Mandatory: false,\r\n Remarks:\r\n reservation.Id > 0\r\n ? (\r\n t(\r\n translations.ReservationOfflineServiceDefaultRemarks,\r\n ) as string\r\n )\r\n .replace('{0}', reservation.Id.toString())\r\n .replace('{1}', reservationSettings?.BaseEquipment?.Name || '')\r\n : null,\r\n ReservationId: reservation.Id,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(reservation.StartTime),\r\n ),\r\n ServiceTypeID: serviceType.Id,\r\n ServiceType: serviceType.Name,\r\n ServiceGroupId: serviceType.ServiceGroupId,\r\n Units: serviceType.UnitTypeName,\r\n UserGroup: reservation.ADGroup?.Id,\r\n UserGroupName: reservation.ADGroup?.Name,\r\n AllowToUser: serviceType.AllowToUser,\r\n BudgetsTurnedOn: serviceType.BudgetsTurnedOn,\r\n StaffOnly: serviceType.StaffOnly,\r\n TrackInventory: serviceType.TrackInventory,\r\n NotLessThanZero: serviceType.NotLessThanZero,\r\n InventoryBatchesEnabled: serviceType.InventoryBatchesEnabled,\r\n InventoryBatchId: batch === null ? null : batch.Id,\r\n InventoryBatchName: batch === null ? null : batch.Name,\r\n InventoryBatchAmount: batch === null ? null : batch.Inventory,\r\n } as IOtherServices;\r\n return data;\r\n };\r\n const createService = async (\r\n serviceType: IOfflineServiceFilterDto,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticService = prepareService(serviceType, values);\r\n hanleUpdateLocalServices([staticService], 'add');\r\n resolve(staticService);\r\n });\r\n };\r\n const initServices = async (): Promise => {\r\n return new Promise(async resolve => {\r\n if (savedServices.length < 1) {\r\n if (isEdit) {\r\n try {\r\n const result =\r\n await OtherServicesApi.getReservationOfflineServices(\r\n values.Id,\r\n false, //reservationSettings?.Repeat,\r\n );\r\n resolve(result.value);\r\n hanleUpdateLocalServices(result.value as IOtherServices[], 'add');\r\n } catch {\r\n resolve([]);\r\n }\r\n } else if (isCloned) {\r\n try {\r\n const result =\r\n await OtherServicesApi.getReservationOfflineServices(\r\n values.Id,\r\n reservationSettings?.Repeat,\r\n );\r\n resolve(result.value);\r\n hanleUpdateLocalServices(result.value as IOtherServices[], 'add');\r\n } catch {\r\n resolve([]);\r\n }\r\n } else {\r\n //reduce an offline services to select only distinct services in case when several equipments have the same offline services.\r\n let servicesFiltered = !!reservationSettings?.OfflineMandatory\r\n ? combineMandatoryOfflineServices(\r\n reservationSettings?.OfflineMandatory,\r\n ) || []\r\n : [];\r\n resolve(servicesFiltered);\r\n hanleUpdateLocalServices(servicesFiltered, 'add');\r\n }\r\n } else {\r\n resolve(savedServices);\r\n }\r\n });\r\n };\r\n const onRemoveService = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n if (isEdit) {\r\n hanleUpdateLocalServices([service], 'remove');\r\n resolve(service);\r\n // if (service.Id > 0) {\r\n // try {\r\n // const responseDel = await OtherServicesApi.deleteService(\r\n // service.Id,\r\n // );\r\n // let response = responseDel as OfflineServicesResponse;\r\n // if (response.ErrorMessages.length > 0) {\r\n // dispatch(\r\n // notifyActions.addNotifications(\r\n // response.ErrorMessages.map(item => {\r\n // return {\r\n // key: 'offlineServiceDeleteError',\r\n // message: item,\r\n // variant: 'error',\r\n // };\r\n // }),\r\n // ),\r\n // );\r\n // reject(response.ErrorMessages[0]);\r\n // } else {\r\n // dispatch(\r\n // notifyActions.addNotification({\r\n // key: 'offlineServiceDeleteSuccess',\r\n // message: response.SuccessMessages[0],\r\n // variant: 'success',\r\n // }),\r\n // );\r\n // hanleUpdateLocalServices([service], 'remove');\r\n // resolve(response.SuccessMessages[0]);\r\n // }\r\n // } catch (error: unknown) {\r\n // const message =\r\n // (error as AxiosError)?.response?.data?.error?.innererror\r\n // ?.message ??\r\n // ((error as AxiosError)?.response?.status === 403\r\n // ? t(translations.Forbidden)\r\n // : undefined) ??\r\n // t(translations.errormessage);\r\n // dispatch(\r\n // notifyActions.addNotification({\r\n // key: 'offlineServiceDeleteError',\r\n // message: message,\r\n // variant: 'error',\r\n // }),\r\n // );\r\n // reject(message);\r\n // }\r\n // } else {\r\n // hanleUpdateLocalServices([service], 'remove');\r\n // resolve(service);\r\n // }\r\n } else {\r\n hanleUpdateLocalServices([service], 'remove');\r\n resolve(service);\r\n }\r\n });\r\n };\r\n const onUpdateService = (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n if (isEdit) {\r\n hanleUpdateLocalServices([service], 'update');\r\n // if (\r\n // service.Id > 0 &&\r\n // service.Quantity !== null &&\r\n // service.Quantity > 0\r\n // ) {\r\n // try {\r\n // const responseUp = await OtherServicesApi.updateOtherService(\r\n // service,\r\n // service.Id,\r\n // );\r\n // let response = responseUp as OfflineServicesResponse;\r\n // if (response.ErrorMessages.length > 0) {\r\n // dispatch(\r\n // notifyActions.addNotifications(\r\n // response.ErrorMessages.map(item => {\r\n // return {\r\n // key: 'offlineServiceUpdateError',\r\n // message: item,\r\n // variant: 'error',\r\n // };\r\n // }),\r\n // ),\r\n // );\r\n // reject(response.ErrorMessages[0]);\r\n // } else {\r\n // dispatch(\r\n // notifyActions.addNotification({\r\n // key: 'offlineServiceUpdateSuccess',\r\n // message: response.SuccessMessages[0],\r\n // variant: 'success',\r\n // }),\r\n // );\r\n // resolve(service);\r\n // }\r\n // } catch (error: unknown) {\r\n // const message =\r\n // (error as AxiosError)?.response?.data?.error?.innererror\r\n // ?.message ??\r\n // ((error as AxiosError)?.response?.status === 403\r\n // ? t(translations.Forbidden)\r\n // : undefined) ??\r\n // t(translations.errormessage);\r\n // dispatch(\r\n // notifyActions.addNotification({\r\n // key: 'offlineServiceUpdateError',\r\n // message: message,\r\n // variant: 'error',\r\n // }),\r\n // );\r\n // reject(message);\r\n // }\r\n // }\r\n resolve(service);\r\n } else {\r\n hanleUpdateLocalServices([service], 'update');\r\n resolve(service);\r\n }\r\n });\r\n };\r\n\r\n //check for any services exist to decide if show offline services component\r\n const fetchAnyServices = async (): Promise => {\r\n return new Promise(async resolve => {\r\n try {\r\n let data = await initServices();\r\n if (data.length > 0) {\r\n resolve(data.length);\r\n } else {\r\n let potentialData = await fetchServiceType(null, undefined);\r\n if (potentialData.length > 0) {\r\n resolve(potentialData.length);\r\n } else {\r\n resolve(0);\r\n }\r\n }\r\n } catch {\r\n resolve(0);\r\n }\r\n });\r\n };\r\n const [hasAnyServices, setHasAnyServices] =\r\n useAsyncExtendedState(0);\r\n const [fetchAnyServicesState, fetchAnyServicesPromise] =\r\n usePromise(fetchAnyServices);\r\n React.useEffect(() => {\r\n if (\r\n !fetchAnyServicesState.status ||\r\n (fetchAnyServicesState.status !== 'pending' &&\r\n fetchAnyServicesState.status !== 'resolved')\r\n ) {\r\n setHasAnyServices(fetchAnyServicesPromise());\r\n }\r\n return () => {};\r\n }, [\r\n fetchAnyServicesPromise,\r\n fetchAnyServicesState.status,\r\n setHasAnyServices,\r\n ]);\r\n React.useEffect(() => {\r\n if (\r\n !!savedServiceEditable &&\r\n savedServices.some(\r\n f => f.ServiceTypeID === savedServiceEditable.ServiceTypeID,\r\n )\r\n ) {\r\n hanleUpdateLocalServices([savedServiceEditable], 'update');\r\n dispatch(offActions.setReservationService(undefined));\r\n dispatch(actions.setRefreshOfflineServices(true));\r\n }\r\n }, [\r\n actions,\r\n dispatch,\r\n hanleUpdateLocalServices,\r\n offActions,\r\n savedServiceEditable,\r\n savedServices,\r\n ]);\r\n return hasAnyServices > 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n );\r\n },\r\n);\r\n","import { Button, ButtonProps } from 'app/components/BasicButtons/Button';\r\nimport React from 'react';\r\n\r\nexport interface ReservationFormButtonProps extends ButtonProps {\r\n text: string;\r\n onClick: (e: any) => void;\r\n}\r\n\r\nexport function SaveFormButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function CancelReservationButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function ApproveReservationButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function SaveForLaterButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function TransferButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function TerminateReservationButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function ModificationButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function CreateTrainingButton({\r\n text,\r\n onClick,\r\n ...props\r\n}: ReservationFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import { useDispatch, useSelector } from 'react-redux';\r\nimport { TerminateReservationButton } from './ReservationActions';\r\nimport * as React from 'react';\r\nimport {\r\n selectTerminateCompleted,\r\n selectTerminateProcessing,\r\n} from '../slice/selectors';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { ReservationsApi } from 'api/ReservationsApi';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { EndUsageConfirm, EndUsageData } from 'app/components/EndUsageConfirm';\r\nimport { HasUsageEndRresult } from '../slice/types';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\n\r\nexport interface TerminateReservationProps {\r\n text: string;\r\n reservationId: number;\r\n serviceId: number;\r\n isLoaanDesc: boolean;\r\n title?: string;\r\n onTerminate: () => void;\r\n}\r\n\r\nexport function TerminateReservation(props: TerminateReservationProps) {\r\n const { text, reservationId, isLoaanDesc, title, onTerminate, serviceId } =\r\n props;\r\n const dispatch = useDispatch();\r\n const { actions: settingActions } = useAppSettingsSlice();\r\n const { t } = useTranslation();\r\n const terminateProcessing = useSelector(selectTerminateProcessing);\r\n const terminateCompleted = useSelector(selectTerminateCompleted);\r\n const [endUsageOfflineServiceIds, setEndUsageOfflineServiceIds] =\r\n React.useState([]);\r\n const [showConfirmEndUsage, setShowConfirmEndUsage] =\r\n React.useState(false);\r\n const [showEndUsage, setShowEndUsage] = React.useState(false);\r\n const [usageEndProcessing, setUsageEndProcessing] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [hasUsageProcessing, setHasUsageProcessing] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const handleTerminateClick = () => {\r\n (async () => {\r\n setHasUsageProcessing(true);\r\n ReservationsApi.hasUsage({ resId: reservationId, eqId: serviceId })\r\n .then(result => {\r\n let data = result as HasUsageEndRresult;\r\n if (data.HasUsage === true && !isLoaanDesc) {\r\n setShowConfirmEndUsage(true);\r\n setEndUsageOfflineServiceIds(data.OfflineServiceTypeIds);\r\n } else {\r\n onTerminate();\r\n }\r\n setHasUsageProcessing(false);\r\n })\r\n .catch(reason => {\r\n setHasUsageProcessing(false);\r\n });\r\n })();\r\n\r\n //check if has usage\r\n //then\r\n //if yes - show confirm to end usage\r\n\r\n //if confirmed - show usage end popup\r\n //else - cancel termination\r\n // if no - terminate;\r\n };\r\n\r\n const handleEndUsage = (usageData: EndUsageData) => {\r\n setUsageEndProcessing(true);\r\n (async () => {\r\n ReservationsApi.endUsage(reservationId, usageData)\r\n .then(response => {\r\n setUsageEndProcessing(false);\r\n if (response.ErrorMessages.length > 0) {\r\n response.ErrorMessages.forEach(errmsg =>\r\n dispatch(\r\n settingActions.addNotification({\r\n variant: 'error',\r\n message: errmsg,\r\n }),\r\n ),\r\n );\r\n } else {\r\n setShowEndUsage(false);\r\n onTerminate();\r\n if (response.SuccessMessages.length > 0) {\r\n response.SuccessMessages.forEach(msg =>\r\n dispatch(\r\n settingActions.addNotification({\r\n variant: 'success',\r\n message: msg,\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n response.WarningMessages.forEach(wrnmsg =>\r\n dispatch(\r\n settingActions.addNotification({\r\n variant: 'warning',\r\n message: wrnmsg,\r\n }),\r\n ),\r\n );\r\n }\r\n }\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n })\r\n .finally(() => setUsageEndProcessing(false));\r\n })();\r\n };\r\n return (\r\n \r\n }\r\n onClick={e => handleTerminateClick()}\r\n disabled={\r\n terminateProcessing || usageEndProcessing || hasUsageProcessing\r\n }\r\n variant=\"white\"\r\n processing={\r\n (terminateProcessing || usageEndProcessing || hasUsageProcessing) &&\r\n !terminateCompleted\r\n }\r\n title={title}\r\n text={text}\r\n />\r\n {\r\n setShowEndUsage(true);\r\n setShowConfirmEndUsage(false);\r\n }}\r\n onCancel={() => setShowConfirmEndUsage(false)}\r\n onClose={() => setShowConfirmEndUsage(false)}\r\n maxWidth=\"sm\"\r\n />\r\n {\r\n setShowEndUsage(false);\r\n }}\r\n onConfirm={handleEndUsage}\r\n />\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * FormTrainingSessionPicker\r\n *\r\n */\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { ITrainingSessionDto } from 'api/odata/generated/entities/ITrainingSessionDto';\r\nimport { TrainingSessionPicker } from '../pickers/AutocompletePickers/TrainingSessionPicker';\r\n\r\nexport const FormTrainingSessionPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig & IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n />\r\n );\r\n};\r\n","import { dateUtils } from 'utils/date-utils';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { PeriodTypes } from 'app/components/DatePeriods';\r\n\r\n/**\r\n * Filter parameters must match the reservations filter settings\r\n * {@see app/pages/ReservationHistoryPage/Filter}\r\n */\r\ntype getReservationsLinkProps = {\r\n period?: PeriodTypes;\r\n startDate?: string | Date;\r\n endDate?: string | Date;\r\n serviceId?: number | null;\r\n trainingSignUp?: boolean;\r\n TrainingSessionId?: number;\r\n};\r\n\r\n/**\r\n * Helper function to get a link to reservations list page\r\n * @param session\r\n * @param newDate\r\n * @returns\r\n */\r\nexport function getReservationsLink(\r\n props: getReservationsLinkProps,\r\n): IPathAndQuery {\r\n return {\r\n path: '/reservations',\r\n search: {\r\n period: props.period,\r\n st:\r\n props.startDate === undefined\r\n ? undefined\r\n : dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(props.startDate),\r\n ),\r\n et:\r\n props.endDate === undefined\r\n ? undefined\r\n : dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(props.endDate),\r\n ),\r\n eid: props.serviceId,\r\n trainingSignUp: props.trainingSignUp,\r\n TrainingSessionId: props.TrainingSessionId,\r\n },\r\n };\r\n}\r\n","import { ExternalLink } from 'app/components/ExternalLink';\r\n\r\n/**\r\n * Link to edit a training session details (admin)\r\n * @param param0\r\n * @returns\r\n */\r\nexport function EditTrainingSessionLink({\r\n trainingSessionId: assetId,\r\n ...props\r\n}: React.PropsWithChildren<{ trainingSessionId: number }>) {\r\n return (\r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { Link } from 'app/components/BasicLinks/Link';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getReservationsLink } from '../../ReservationForm/getReservationsLink';\r\nimport { EditTrainingSessionLink } from 'app/pages/TrainingSessionsPage/components/EditTrainingSessionsLink';\r\nimport { translations } from 'locales/translations';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ITrainingSessionSlotDto } from 'api/odata/generated/entities/ITrainingSessionSlotDto';\r\nimport { useAsyncGetWithEffect } from 'app/hooks/useAsyncGetOnMount';\r\nimport { Body } from 'app/components/Typography';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\n\r\nexport interface TrainingSignUpAdminAlertContentProps {\r\n trainingSessionId: number;\r\n}\r\nconst SignUpContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n & .link-content {\r\n display: flex;\r\n gap: 8px;\r\n }\r\n`;\r\nexport function TrainingSignUpAdminAlertContent(\r\n props: TrainingSignUpAdminAlertContentProps,\r\n) {\r\n const { trainingSessionId } = props;\r\n const { t } = useTranslation();\r\n const [loading, setLoading] = React.useState(false);\r\n const attendees = useAsyncGetWithEffect(\r\n () => getSessionSlots(trainingSessionId),\r\n {\r\n Attendees: 0,\r\n },\r\n [trainingSessionId],\r\n setLoading,\r\n );\r\n\r\n // const [state, setState] = useAsyncExtendedState<\r\n // TrainingSessionInfo | undefined\r\n // >(undefined);\r\n // const [fetchState, fetch] = usePromise(getSessionSlots);\r\n // const show = React.useMemo(() => {\r\n // return (\r\n // isAdmin && trainingSessionId !== undefined && trainingSessionId !== null\r\n // );\r\n // }, [isAdmin, trainingSessionId]);\r\n\r\n // const bar = React.useMemo(() => {\r\n // if (trainingSessionId === null) {\r\n // return null;\r\n // }\r\n // if (trainingSessionId === undefined) {\r\n // return null;\r\n // }\r\n // if (!show) {\r\n // return null;\r\n // }\r\n // return trainingSessionId;\r\n // }, [show, trainingSessionId]);\r\n // React.useEffect(() => {\r\n // if (trainingSessionId !== undefined && show) {\r\n // setState(fetch(trainingSessionId));\r\n // }\r\n // });\r\n\r\n // if (bar === undefined) {\r\n // return null;\r\n // }\r\n\r\n return (\r\n \r\n \r\n \r\n {t(translations.TrainingSessionsCountMessage, {\r\n count: attendees.Attendees,\r\n })}\r\n \r\n\r\n {/* {t(translations.NotUsingThisReservation)} */}\r\n
    \r\n {loading === true && }\r\n {attendees.Attendees > 0 && (\r\n \r\n {t(translations.ManageSignUps)}\r\n \r\n )}\r\n\r\n \r\n {t(translations.EditTrainingSession)}\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\ntype TrainingSessionInfo = Pick;\r\nasync function getSessionSlots(trainingSesisonId: number) {\r\n const url = `/api/odata/v4/TrainingSessionSlots`;\r\n //const select: Array = ['Attendees'];\r\n try {\r\n const x = await httpClient.get(url, {\r\n $filter: `Id eq ${trainingSesisonId}`,\r\n });\r\n return { Attendees: x.value[0].Attendees } as TrainingSessionInfo;\r\n } catch (err) {\r\n return { Attendees: 0 } as TrainingSessionInfo;\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { useField, useFormikContext } from 'formik';\r\nimport { DatePickerVariants } from 'app/components/DatePicker';\r\nimport { FormRow } from 'app/components/Forms/FormsLayout/FormRow';\r\nimport { ReservationDetailsState } from '../../slice/types';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport produce from '@reduxjs/toolkit/node_modules/immer';\r\nimport { DatePickerProps } from '@material-ui/pickers';\r\nimport { BookitDatePicker } from 'app/components/BookitDatePicker';\r\nimport { BookitDateTimePicker } from 'app/components/BookitDatePicker/BookitDateTimePicker';\r\n\r\nexport interface ReservationTimePeriodPickerProps {\r\n /**\r\n * Full Day / Regular reservation indicator\r\n */\r\n FullDayReservation: boolean;\r\n /**\r\n * Start time property name of the formik values object\r\n */\r\n StartTimePropertyName: string;\r\n /**\r\n * End time property name of the formik values object\r\n */\r\n EndTimePropertyName: string;\r\n /**\r\n * Disables the start time picker\r\n */\r\n startTimeDisabled: boolean;\r\n /**\r\n * Disables the end time picker\r\n */\r\n endTimeDisabled: boolean;\r\n /**\r\n * Start time change handler\r\n */\r\n onStartTimeChange: DatePickerProps['onChange'];\r\n /**\r\n * End time change handler\r\n */\r\n onEndTimeChange: DatePickerProps['onChange'];\r\n /**\r\n * Start time label & placeholder\r\n */\r\n startTimeLabel: string;\r\n /**\r\n * End time label & placeholder\r\n */\r\n endTimeLabel: string;\r\n}\r\n/**\r\n * Component that handles start/end time period UI on the reservation form.\r\n * Must be inside the formik context as the rest of the FormXXX components.\r\n * FullDayReservation might checkbox might need to also be handled here.\r\n * @param param0\r\n * @returns\r\n */\r\nexport function FormReservationTimePeriodPicker({\r\n FullDayReservation,\r\n ...props\r\n}: React.PropsWithChildren) {\r\n const formik = useFormikContext();\r\n const [startField, startMeta] = useField({\r\n name: props.StartTimePropertyName,\r\n });\r\n const [endField, endMeta, endHelpers] = useField({\r\n name: props.EndTimePropertyName,\r\n });\r\n /**\r\n * For legacy reasons the reservation start/end is expected to be stored as string without tz info. for example:\r\n * \"2023-08-09T01:05:00\" = good\r\n * \"2023-08-09T01:05:00z\" = bad (not sure for what reason, but it's not the format being used in other places on reservation side panel)\r\n * @param value {\r\n return dateUtils.formatISO(dateUtils.dateOrStringToDate(value));\r\n };\r\n\r\n /**\r\n * Handles start time change (triggered by date selection on date picker UI).\r\n * @param value user selected date/time\r\n */\r\n const handleStartTimeChange: DatePickerProps['onChange'] = value => {\r\n // start time value is generally not clearable and should not be empty\r\n if (value !== null) {\r\n formik.setValues(\r\n produce((values: ReservationDetailsState) => {\r\n // set the current start time value\r\n values.StartTime = getStoreValue(value);\r\n // optionally adjust the end time to keep the reservation/period the same length\r\n // for example, changing the start time effectively moves current period to another date/time\r\n if (formik.values.EndTime !== null) {\r\n const endTime = adjustEndByStart(\r\n value,\r\n formik.values.StartTime,\r\n formik.values.EndTime,\r\n );\r\n values.EndTime = getStoreValue(endTime);\r\n }\r\n }),\r\n );\r\n }\r\n // raise the start time change event\r\n props.onStartTimeChange?.(value);\r\n };\r\n\r\n /**\r\n * Handles the end time change (triggered by date selection on date picker UI)\r\n * @param value new user selected end time\r\n */\r\n const handleEndTimeChange: DatePickerProps['onChange'] = value => {\r\n var formattedValue = value === null ? null : getStoreValue(value);\r\n // set the current end\r\n endHelpers.setValue(formattedValue);\r\n // rase the end time change event\r\n props.onEndTimeChange?.(value);\r\n };\r\n\r\n const datePickerVariant: DatePickerVariants = FullDayReservation\r\n ? 'date'\r\n : 'separated';\r\n\r\n return (\r\n <>\r\n \r\n {datePickerVariant === 'separated' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n\r\n \r\n {datePickerVariant === 'separated' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\nfunction adjustEndByStart(\r\n value: Date,\r\n originalStartTime: Date | string,\r\n originalEndTime: Date | string,\r\n) {\r\n const diff = dateUtils.differenceInMinutes(\r\n value,\r\n dateUtils.dateOrStringToDate(originalStartTime),\r\n );\r\n const endTime = dateUtils.addMinutes(\r\n dateUtils.dateOrStringToDate(originalEndTime),\r\n diff,\r\n );\r\n return endTime;\r\n}\r\n","import * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IAssemblyPartDto } from 'api/odata/generated/entities/IAssemblyPartDto';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Popover } from 'app/components/Popover';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { PromiseStatus, usePromise } from 'app/hooks/usePromise';\r\nimport { translations } from 'locales/translations';\r\nimport { orderBy } from 'lodash';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Identifiable } from 'types/common';\r\nimport { IReservationEquipmentDto } from '../../slice/types';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport { IReservationAssemblyPartDto } from 'api/odata/generated/entities/IReservationAssemblyPartDto';\r\nimport styled from 'styled-components';\r\n\r\n/**\r\n * Pick minimum required props from the EquipmentsData\r\n */\r\nexport interface EquipmentsDataAssembliesProps {\r\n equipmentsData: Array<\r\n Pick\r\n >;\r\n reservedAssemblyParts: IReservationAssemblyPartDto[] | null;\r\n}\r\n\r\ninterface IAssembly {\r\n /**\r\n * Top assembly instrument\r\n */\r\n assembly: IAssemblyPartDto;\r\n /**\r\n * All of the parts in a flat array\r\n */\r\n parts: IAssemblyPartDto[];\r\n}\r\n\r\n/**\r\n * Intenal React.useState interface used by the component\r\n */\r\ninterface IState {\r\n open: boolean;\r\n assemblyParts?: IAssembly[];\r\n reservedAssemblyParts?: IReservationAssemblyPartDto[];\r\n popperAnchor?: unknown;\r\n}\r\n\r\nconst fetchAssemblies = async (services: Array>) => {\r\n // send batch containing one request per each equipment\r\n const batchResponse = await httpClient.batch(\r\n services.map(service => ({\r\n method: 'GET',\r\n pathName: `servicefilter/${service.Id}/AssemblyParts`,\r\n })),\r\n );\r\n\r\n // server returns selected instrument along it's assembly parts in a flat array\r\n // transform flat array into assembly all assembly parts in a flat array to match the structure displayed to the user\r\n const parts = batchResponse.responses.map(response => {\r\n const data = (response.body as IODataQueryResponse).value;\r\n const sorted = orderBy(data, f => f.Path);\r\n return {\r\n assembly: sorted[0],\r\n parts: sorted.slice(1),\r\n };\r\n });\r\n // return partial plug able into extendState\r\n const result: Partial = { assemblyParts: parts };\r\n return result;\r\n};\r\n\r\n/**\r\n * Enables assembly info processing only for cases where assemblies have been selected.\r\n * Otherwise abort the whole ordeal\r\n * @param props\r\n * @returns\r\n */\r\nexport function EquipmentsDataAssembliesContainer(\r\n props: EquipmentsDataAssembliesProps,\r\n) {\r\n const isAssembly = React.useMemo(\r\n () =>\r\n props.equipmentsData.some(service => service.HasAssemblyParts === true),\r\n [props.equipmentsData],\r\n );\r\n if (isAssembly === false) {\r\n return null;\r\n } else {\r\n return ;\r\n }\r\n}\r\nconst AssemblyContent = styled.div`\r\n width: 360px;\r\n padding: 0 24px 0 16px;\r\n`;\r\nexport function EquipmentsDataAssemblies(props: EquipmentsDataAssembliesProps) {\r\n const { t } = useTranslation();\r\n const [state, , extendState] = useAsyncExtendedState({\r\n open: false,\r\n reservedAssemblyParts: props.reservedAssemblyParts ?? undefined,\r\n });\r\n const [fetchAssembliesPromiseState, fetchAssembliesPromise] =\r\n usePromise(fetchAssemblies);\r\n const handleClick = React.useCallback(\r\n (e: React.MouseEvent) => {\r\n // open popover\r\n extendState(state => ({\r\n open: !state.open,\r\n popperAnchor: e.currentTarget,\r\n }));\r\n // we're showing already reserved parts for existing reservations as reserved parts can differ from current assembly configuration\r\n if (state.reservedAssemblyParts === undefined) {\r\n // start fetching data\r\n extendState(fetchAssembliesPromise(props.equipmentsData));\r\n }\r\n },\r\n [\r\n extendState,\r\n fetchAssembliesPromise,\r\n props.equipmentsData,\r\n state.reservedAssemblyParts,\r\n ],\r\n );\r\n\r\n if (\r\n props.equipmentsData.length === 0 ||\r\n !props.equipmentsData.some(service => service.HasAssemblyParts === true)\r\n ) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n\r\n {state.popperAnchor !== null && (\r\n extendState({ open: false })}\r\n >\r\n \r\n {props.reservedAssemblyParts !== undefined && (\r\n
      \r\n {props.reservedAssemblyParts?.map(reservedAssemblyPart => (\r\n
    • {reservedAssemblyPart.Name}
    • \r\n ))}\r\n
    \r\n )}\r\n {fetchAssembliesPromiseState.status !== undefined && (\r\n \r\n {state.assemblyParts === undefined ? (\r\n <>{t(translations.NoDataFound)}\r\n ) : (\r\n <>\r\n {state.assemblyParts?.map((item, index) => (\r\n \r\n {t(translations.PartsIncludedWithin)}{' '}\r\n {item.assembly.Name}\r\n
      \r\n {item.parts.map(service => (\r\n
    • {service.Name}
    • \r\n ))}\r\n
    \r\n
    \r\n ))}\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\ninterface RenderAssemblyPartsProps {\r\n status?: PromiseStatus;\r\n}\r\n/**\r\n * Renders the current state of assemblies fetch result: e.g. processing/error/data\r\n * @param param0\r\n * @returns\r\n */\r\nfunction RenderAssemblyParts({\r\n status = 'pending',\r\n ...props\r\n}: React.PropsWithChildren): JSX.Element {\r\n const { t } = useTranslation();\r\n\r\n switch (status) {\r\n case 'pending':\r\n return (\r\n <>\r\n \r\n
      \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n \r\n );\r\n\r\n case 'resolved':\r\n return <>{props.children};\r\n case 'rejected':\r\n return <>{t(translations.err_ErrorOccured)};\r\n default:\r\n assertExhaustive(status);\r\n }\r\n}\r\n","import { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport { FormFieldsSection, FormRow } from 'app/components/Forms/FormsLayout';\r\nimport {\r\n filteredWorkOrderTypes,\r\n WorkOrderTypePicker,\r\n} from 'app/components/pickers/AutocompletePickers/WorkOrderTypePicker';\r\nimport { initAssetsData } from 'app/components/pickers/MultiSelectPickers/AssetsPicker';\r\nimport { useAsyncGetWithEffect } from 'app/hooks/useAsyncGetOnMount';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IReservationEquipmentDto } from '../../slice/types';\r\nimport * as React from 'react';\r\nimport { quoteODataValue } from 'api/odata/ODataFilter';\r\nimport { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { loadWorkOrders } from 'app/components/pickers/AutocompletePickers/WorkOrdersPicker';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Tips } from 'app/components/Typography';\r\nimport { toQueryString } from 'utils/url-utils';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectRefreshWorkOrderLink } from '../../slice/selectors';\r\nimport styled from 'styled-components';\r\n\r\nexport interface ReservationWorkOrdersProps {\r\n reservationId: number;\r\n equipments: IReservationEquipmentDto[];\r\n onWorkTypeClick: (\r\n event: IWorkOrderTypeDto,\r\n equipmentIds: number[],\r\n reservationId: number,\r\n ) => void;\r\n}\r\nconst OrderContent = styled.span`\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 8px;\r\n`;\r\nexport function ReservationWorkOrders(props: ReservationWorkOrdersProps) {\r\n const { equipments, reservationId, onWorkTypeClick } = props;\r\n const refreshWorkOrders = useSelector(selectRefreshWorkOrderLink);\r\n const equipmentIds = React.useMemo(() => {\r\n return equipments.map(f => f.Id);\r\n }, [equipments]);\r\n const { t } = useTranslation();\r\n const handleWorkTypeClick = (event: IWorkOrderTypeDto) => {\r\n onWorkTypeClick(event, equipmentIds, reservationId);\r\n };\r\n const relatedAssets = useAsyncGetWithEffect(\r\n async () =>\r\n initAssetsData(equipmentIds.join(',')).then(res => res as IAssetDto[]),\r\n [],\r\n [equipmentIds],\r\n );\r\n const relatedWorkOrders = useAsyncGetWithEffect(\r\n async () =>\r\n loadWorkOrders([`Reservation eq ${quoteODataValue(reservationId)}`])(\r\n null,\r\n undefined,\r\n ).then(res => res.value),\r\n [],\r\n [reservationId, refreshWorkOrders],\r\n );\r\n const workOrdersLink = React.useMemo(() => {\r\n return `/workorders?${toQueryString({\r\n reservationId: reservationId,\r\n })}`;\r\n }, [reservationId]);\r\n const workOrdersLinkTitle = React.useMemo(() => {\r\n return relatedWorkOrders.length > 0\r\n ? (t(translations.ReservationAlertsLink) as string).replace(\r\n '{0}',\r\n relatedWorkOrders.length.toString(),\r\n )\r\n : undefined;\r\n }, [relatedWorkOrders.length, t]);\r\n return (\r\n 0 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(translations.NoReservationAlerts) as string}\r\n \r\n \r\n )\r\n }\r\n >\r\n \r\n {\r\n handleWorkTypeClick(value as IWorkOrderTypeDto);\r\n }}\r\n fullWidth={true}\r\n id=\"wotype-id\"\r\n />\r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * WokFlowBooking\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { WorkflowBookingPicker } from 'app/components/pickers/AutocompletePickers/WorkflowBookingPicker';\r\nimport { IWorkflowBookingDto } from 'api/odata/generated/entities/IWorkflowBookingDto';\r\nimport { IFieldProps } from '../FormRender/IFormFieldSetting';\r\nimport BaseTextField from 'app/components/BasicInputs/BaseTextField';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { TextFieldProps } from 'app/components/TextField';\r\nimport React from 'react';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\n\r\nexport const FormWorkFlowBooking = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n IFieldProps &\r\n Omit & { useWorkFlowPicker?: boolean }) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n const { t } = useTranslation();\r\n return props.useWorkFlowPicker ? (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n placeholder={props.placeholder}\r\n onBlur={field?.onBlur}\r\n value={field.value as IWorkflowBookingDto}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n disabled={props.disabled}\r\n />\r\n ) : (\r\n {\r\n let val = e.currentTarget.value;\r\n let entityVal =\r\n val === undefined || val === ''\r\n ? null\r\n : ({ Id: -1, Name: val } as Entity);\r\n helpers.setValue(entityVal, true);\r\n if (props.onChange) {\r\n props.onChange(entityVal);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field?.value?.Name ?? ''}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error || props.helperText}\r\n id={props.id || 'workflowtextfieldId'}\r\n inputProps={{\r\n ...props.inputProps,\r\n 'aria-label': `${label ? undefined : 'text input'}`,\r\n }}\r\n color=\"primary\"\r\n InputProps={{\r\n ...props.InputProps,\r\n endAdornment: (\r\n \r\n {props.info ? : null}\r\n {props.InputProps?.endAdornment}\r\n \r\n ),\r\n }}\r\n />\r\n );\r\n};\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { Link } from 'app/components/ExternalLink';\r\nimport { FormFieldsSection, FormRow } from 'app/components/Forms/FormsLayout';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { useAsyncGetWithEffect } from 'app/hooks/useAsyncGetOnMount';\r\nimport { GetServiceRequestDetailsPath } from 'app/pages/Samples/RequestSamplesPage/slice/path';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components';\r\nimport { RequestReservations } from '../../slice/types';\r\n\r\nexport interface ReservationRequestDetailsProps {\r\n reservationId: number;\r\n}\r\n\r\nexport function ReservationRequestDetails(\r\n props: ReservationRequestDetailsProps,\r\n) {\r\n const { reservationId } = props;\r\n const { t } = useTranslation();\r\n const url = `api/odata/v4/Reservations/ReservationRequestData`;\r\n const relatedReservation = useAsyncGetWithEffect<\r\n RequestReservations | undefined\r\n >(\r\n async () => httpClient.post(url, { id: reservationId }).then(res => res),\r\n undefined,\r\n [reservationId],\r\n );\r\n return !!relatedReservation ? (\r\n \r\n \r\n \r\n {relatedReservation.RequestId !== null &&\r\n relatedReservation.RequestId !== undefined && (\r\n
    \r\n \r\n {t(translations.ServiceRequestId)}\r\n \r\n \r\n {`# ${relatedReservation.RequestId}`}\r\n \r\n
    \r\n )}\r\n\r\n {!!relatedReservation.TotalRowsCount &&\r\n relatedReservation.TotalRowsCount !== null && (\r\n
    \r\n \r\n {t(translations.TotalSamples)}\r\n \r\n \r\n {relatedReservation.TotalRowsCount}\r\n \r\n
    \r\n )}\r\n {!!relatedReservation.AssociatedRowsCount &&\r\n relatedReservation.AssociatedRowsCount !== null && (\r\n
    \r\n \r\n {t(translations.SamplesAssociatedWithThisReservation)}\r\n \r\n \r\n {relatedReservation.AssociatedRowsCount}\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n ) : null;\r\n}\r\n\r\nconst RequestWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n width: 100%;\r\n & .req-row {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 0;\r\n width: inherit;\r\n }\r\n`;\r\n","import { Formik, FormikHelpers, FormikProps } from 'formik';\r\nimport * as React from 'react';\r\nimport {\r\n EquipmentsChangeStateParameters,\r\n getSingleReservationStatus,\r\n IMandatoryEquipmentsDto,\r\n IReservationEquipmentDto,\r\n PrerequisitsResult,\r\n ReservationDetailsState,\r\n ReservationQueryStringParameters,\r\n ReservationSettingsState,\r\n ReservationValidationResult,\r\n TrainingSessionResult,\r\n UserTrainingReservationData,\r\n} from '../slice/types';\r\nimport { ReservationStatus } from 'api/odata/generated/enums/ReservationStatus';\r\nimport { translations } from 'locales/translations';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n selectAsyncChangeLoading,\r\n selectCloneReservations,\r\n selectEquipmentChangeCompleted,\r\n selectEquipmentChangeState,\r\n selectEquipmentsSettings,\r\n selectFieldHandler,\r\n selectSubmitCalculateCredit,\r\n selectIsEdit,\r\n selectRemovedOfflineServices,\r\n selectRequestedValueFor,\r\n selectReservationCompleted,\r\n selectReservationHasError,\r\n selectReservationSettings,\r\n selectSavedForLater,\r\n selectSavedOfflineServices,\r\n selectReservationProcessing,\r\n} from '../slice/selectors';\r\nimport { isEmpty } from 'lodash';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRightSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { IndexNode } from 'app/components/Forms/FormsLayout/StyledForm';\r\nimport {\r\n FieldHandler,\r\n FieldValue,\r\n FormListener,\r\n SubmittingHandler,\r\n} from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { FormReservationEquipmentsPicker } from 'app/components/Forms/FormReservationEquipmentsPicker';\r\nimport { FormReservationStatusPicker } from 'app/components/Forms/FormReservationStatusPicker';\r\nimport { FormUserPicker } from 'app/components/Forms/FormUserPicker';\r\nimport { FormBudgetPicker } from 'app/components/Forms/FormBudgetPicker';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { ServicesFilter } from 'app/components/pickers/AutocompletePickers/UserPicker';\r\nimport { RepetitiveControl } from 'app/components/Forms/FormRepetitive/RepetitiveControl';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { FormRestrictedUserGroupPicker } from 'app/components/Forms/FormRestrictedUserGroupPicker';\r\nimport { GlobalSettingsType } from '../components/useGlobalSettingsHook';\r\nimport { RestrictedFilter } from 'app/components/pickers/AutocompletePickers/UserGroupPicker';\r\nimport { restrictedBudgetFilter } from 'app/components/pickers/AutocompletePickers/BudgetPicker';\r\nimport { FormFundingTypePicker } from 'app/components/Forms/FormFundingTypePicker';\r\nimport { FormLabelText } from 'app/components/Forms/FormLabelText';\r\nimport { ReservationCustomForm } from '../components/ReservationCustomForm';\r\nimport { IFormValueDto } from 'api/odata/generated/entities/IFormValueDto';\r\nimport {\r\n formValueSchema,\r\n IFormFileValue,\r\n} from 'app/components/CustomForm/CustomFormUtils';\r\nimport { RepetitiveFor } from 'app/components/Forms/FormRepetitive/slice/types';\r\nimport { Entity } from 'types/common';\r\nimport {\r\n CheckEntityShema,\r\n EntityStringSchema,\r\n} from 'app/components/Forms/Schemas';\r\nimport * as Yup from 'yup';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { selectExpandedSidePanel } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n updateFormValues,\r\n validateAccServices,\r\n getReservationValidationState,\r\n} from '../components/utils';\r\nimport { useReservationSlice } from '../slice';\r\nimport {\r\n initEquipmentsData,\r\n ReservationsEquipmentFilter,\r\n} from 'app/components/pickers/MultiSelectPickers/EquipmentReservationPicker';\r\nimport { Caption } from 'app/components/Typography';\r\nimport { FormSwitch } from 'app/components/Forms/Switch';\r\nimport { Body } from 'app/components/Typography';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { BudgetListener } from '../components/FormFieldListeners/BudgetListener';\r\nimport { UserNameListener } from '../components/FormFieldListeners/UserNameListener';\r\nimport { isMember } from '../components/FormFieldListeners/isMember';\r\nimport { UserGroupListener } from '../components/FormFieldListeners/UserGroupListener';\r\nimport { StartTimeListener } from '../components/FormFieldListeners/StartTimeListener';\r\nimport { EndTimeListener } from '../components/FormFieldListeners/EndTimeListener';\r\n\r\nimport {\r\n FormChipCheckBoxGroup,\r\n FormChipLabelGroup,\r\n} from 'app/components/Forms/FormChipsGroup';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { ReservationOfflineServices } from '../components/ReservationOfflineServices';\r\nimport { FormAccompaniedServicesPicker } from 'app/components/Forms/FormAccompaniedServicesPicker';\r\nimport { ReservationsAccServicesFilter } from 'app/components/pickers/MultiSelectPickers/AccompaniedServicesPicker';\r\nimport { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport { TerminateReservation } from '../components/TerminateReservation';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { quoteODataValue } from 'api/odata/ODataFilter';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { UserProfileLink } from 'app/pages/UserDetails/OpenUserProfile';\r\nimport {\r\n customFormErrorsHandler,\r\n NodeColumn,\r\n NodeRow,\r\n otheMessagesHandler,\r\n permissionsErrorsHandler,\r\n prerquisitErrorsHandler,\r\n staffUserChangeHandler,\r\n trainingSessionChangeHandler,\r\n} from './handlers';\r\nimport { FormTrainingSessionPicker } from 'app/components/Forms/FormTrainingSessionPicker';\r\nimport { ReservRelatedFilter } from 'app/components/pickers/AutocompletePickers/TrainingSessionPicker';\r\nimport { ITrainingSessionDto } from 'api/odata/generated/entities/ITrainingSessionDto';\r\nimport { generatePath } from 'react-router-dom';\r\nimport { RUN_DETAILS_PAGE_PATH } from 'app/pages/Samples/RunDetailsPage';\r\nimport { combineOfflineServiceTypes } from '../slice/combineOfflineServiceTypes';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { FormUsersPicker } from 'app/components/Forms/FormUsersPicker';\r\nimport { getReservationCollaboratorsFilter } from './getReservationCollaboratorsFilter';\r\nimport { PurchaseOrderOptions } from 'api/odata/generated/enums/PurchaseOrderOptions';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport produce from 'immer';\r\nimport { FormReservationBudgetExperimentPicker } from 'app/components/Forms/ReservationBudgetExperimentPicker';\r\nimport { TrainingSignUpAdminAlertContent } from '../components/TrainingSignUpAdminAlertContent';\r\nimport { FormReservationTimePeriodPicker } from '../components/ReservationTimePicker';\r\nimport { adjustSchedulerEventTimes } from 'app/pages/CalendarPage/Scheduler/utils/adjustSchedulerEventTimes';\r\nimport { EquipmentsDataAssemblies } from '../components/EquipmentsDataAssemblies';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport {\r\n ListMessagesProps,\r\n SingleMessagesProps,\r\n} from 'app/Layout/FrontendLayout/components/Snackbar/Actions';\r\nimport { ErrorServices } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\nimport { ReservationWorkOrders } from '../components/ReservationWorkOrders';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport { FormWorkFlowBooking } from 'app/components/Forms/FormWorkFlowBooking';\r\nimport { PrintPDFSection } from 'app/components/PrintToPDF/PrintPDFSection';\r\nimport { selectPrintPDFSections } from 'app/components/PrintToPDF/slice/selectors';\r\nimport { ReadOnlyDetails } from '../components/ReadOnlyDetails';\r\nimport { ReservationRequestDetails } from '../components/RequestDetails';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { formChangeHandler } from 'app/components/Forms/FormRender/IFormFieldSetting';\r\nimport { getErrorMessages } from 'utils/modelStateUtils';\r\nimport { FlexRow } from 'app/components/StyledComponents';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { getTutoringRequired } from './getTutoringRequired';\r\n\r\nexport interface ReservationFormProps {\r\n onSubmit: (\r\n item: ReservationDetailsState,\r\n customFormFiles: IFormFileValue[],\r\n originalFormFiles: IFormFileValue[],\r\n ) => void;\r\n initialValues: ReservationDetailsState;\r\n bindSubmitForm: any;\r\n isEdit: boolean;\r\n isAdmin: boolean;\r\n user?: AuthenticatedUser;\r\n isUserGroupCoordinator?: boolean;\r\n repetitiveFormRef: React.MutableRefObject;\r\n globalSettings: GlobalSettingsType;\r\n customFormRef: React.MutableRefObject;\r\n formRef: React.MutableRefObject | null>;\r\n onEquipmentClicked?: (equipment: Entity) => void;\r\n onRestrictionsClick?: (equipment: Entity) => void;\r\n onOtherSrviceClick?: (service: IOtherServices) => void;\r\n onStatusChange?: (event: any, status: ReservationStatus) => void;\r\n onOfflineServiceClick?: (service: IOtherServices) => void;\r\n onAddBatchClick: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n onWorkTypeClick: (\r\n event: IWorkOrderTypeDto,\r\n equipmentIds: number[],\r\n reservationId: number,\r\n ) => void;\r\n trainingSignUp?: boolean;\r\n trainingSessionEnabled?: boolean;\r\n editable?: boolean;\r\n endTimeEnabled?: boolean;\r\n cancelTransfer?: () => void;\r\n waitingTransferApproval?: boolean;\r\n transferToUser?: Entity | null;\r\n terminationEnabled?: boolean;\r\n handleTerminate: () => void;\r\n allowEditMultipleEquipments: boolean;\r\n useSidePanel: boolean;\r\n offlineServicesErrors: ErrorServices[];\r\n setError?: (error: ErrorServices) => void;\r\n assistedTrainingData: UserTrainingReservationData | null;\r\n allowOngoingModifications?: boolean;\r\n isCover?: boolean;\r\n print?: boolean;\r\n}\r\n\r\nexport const ReservationForm = React.memo(function ReservationForm({\r\n onSubmit,\r\n initialValues,\r\n bindSubmitForm,\r\n isAdmin,\r\n user,\r\n isUserGroupCoordinator,\r\n repetitiveFormRef,\r\n globalSettings,\r\n customFormRef,\r\n formRef,\r\n onEquipmentClicked,\r\n onRestrictionsClick,\r\n onStatusChange,\r\n onOfflineServiceClick,\r\n onWorkTypeClick,\r\n trainingSessionEnabled,\r\n editable,\r\n endTimeEnabled,\r\n trainingSignUp,\r\n cancelTransfer,\r\n waitingTransferApproval,\r\n transferToUser,\r\n terminationEnabled,\r\n handleTerminate,\r\n allowEditMultipleEquipments,\r\n useSidePanel,\r\n onAddBatchClick,\r\n offlineServicesErrors,\r\n setError,\r\n assistedTrainingData,\r\n allowOngoingModifications,\r\n isCover,\r\n print,\r\n}: ReservationFormProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useReservationSlice();\r\n const { actions: appActions } = useAppSettingsSlice();\r\n\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const reservationSettings = useSelector(selectReservationSettings);\r\n const equipmentSettings = useSelector(selectEquipmentsSettings);\r\n const fieldHandler = useSelector(selectFieldHandler);\r\n const requestedFor = useSelector(selectRequestedValueFor);\r\n const equipmentChangeState = useSelector(selectEquipmentChangeState);\r\n const equipmentChangeCompleted = useSelector(selectEquipmentChangeCompleted);\r\n const asyncChangeLoading = useSelector(selectAsyncChangeLoading);\r\n const savedOfflineServices = useSelector(selectSavedOfflineServices);\r\n const removedOfflineServices = useSelector(selectRemovedOfflineServices);\r\n const hasError = useSelector(selectReservationHasError);\r\n const isCloned = useSelector(selectCloneReservations);\r\n const insertUpdateCompleted = useSelector(selectReservationCompleted);\r\n const isEdit = useSelector(selectIsEdit);\r\n const savedForLater = useSelector(selectSavedForLater);\r\n const submitCalculateCredit = useSelector(selectSubmitCalculateCredit);\r\n const printPDFSections = useSelector(selectPrintPDFSections);\r\n\r\n const [submitting, setSubmitting] = React.useState(\r\n undefined,\r\n );\r\n const { newDate } = useSystemDate();\r\n const resetSubmitting = () => {\r\n setSubmitting(true);\r\n };\r\n const isMobile = DetectIsMobile();\r\n const shortView = React.useMemo(() => {\r\n return isMobile || isCover || (useSidePanel && !sidePanelExpanded);\r\n }, [isCover, isMobile, sidePanelExpanded, useSidePanel]);\r\n const [durationErrors, setDurationErrors] = React.useState([]);\r\n const [permissionErrors, setPermissionErrors] = React.useState(\r\n [],\r\n );\r\n const [prerequisitErrors, setPrerequisitErrors] = React.useState(\r\n [],\r\n );\r\n const [customFormErrors, setCustomFormErrors] = React.useState(\r\n [],\r\n );\r\n const [otherErrors, setOtherErrors] = React.useState([]);\r\n const [otherWarnings, setOtherWarnings] = React.useState([]);\r\n const [otherInfo, setOtherInfo] = React.useState([]);\r\n const [otherSuccess, setOtherSuccess] = React.useState([]);\r\n const errorMessages = React.useMemo(() => {\r\n return [\r\n ...otherErrors,\r\n ...customFormErrors,\r\n ...prerequisitErrors,\r\n ...permissionErrors,\r\n ...durationErrors,\r\n ];\r\n }, [\r\n customFormErrors,\r\n durationErrors,\r\n otherErrors,\r\n permissionErrors,\r\n prerequisitErrors,\r\n ]);\r\n const customFormOnlyPrinted = React.useMemo(() => {\r\n return (\r\n printPDFSections?.some(f => f.id === 'CustomFormDetails' && f.checked) &&\r\n printPDFSections?.some(f => f.id === 'ReservationDetails' && !f.checked)\r\n );\r\n }, [printPDFSections]);\r\n const mandatoryServices = React.useMemo(() => {\r\n if (\r\n !!reservationSettings?.MandatoriesEquipments &&\r\n !isEdit &&\r\n reservationSettings.MandatoriesEquipments.length > 0\r\n ) {\r\n return reservationSettings.MandatoriesEquipments.map(f => {\r\n return {\r\n Id: f.Id,\r\n Name: f.Name,\r\n info: `Mandatory instrument for ${f.ParentName}`,\r\n };\r\n });\r\n } else return [];\r\n }, [isEdit, reservationSettings?.MandatoriesEquipments]);\r\n const resetAllErrors = () => {\r\n setDurationErrors([]);\r\n setPermissionErrors([]);\r\n setPrerequisitErrors([]);\r\n setOtherErrors([]);\r\n setCustomFormErrors([]);\r\n setOtherWarnings([]);\r\n setOtherInfo([]);\r\n setOtherSuccess([]);\r\n };\r\n const handleSubmit = (values: ReservationDetailsState) => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(values, currentFormFiles, originalFormFiles);\r\n }\r\n };\r\n const resetFieldHandler = () => {\r\n dispatch(actions.resetValueHandler());\r\n };\r\n const reserValueKey = () => {\r\n dispatch(actions.resetRequestedFor());\r\n };\r\n const saveRequestedValue = (value: any) => {\r\n dispatch(actions.getAnyValueSuccess(value));\r\n };\r\n /// func Help ///\r\n const addPrerquisitErrors = React.useCallback(\r\n (data: PrerequisitsResult, equipments: Entity[]) => {\r\n if (!data.IsValid) {\r\n prerquisitErrorsHandler(\r\n data,\r\n equipments,\r\n (nodes: IndexNode[]) => setPrerequisitErrors(nodes),\r\n onEquipmentClicked,\r\n onRestrictionsClick,\r\n );\r\n }\r\n },\r\n [onEquipmentClicked, onRestrictionsClick],\r\n );\r\n // const addDurationErrors = React.useCallback(\r\n // (data: string[], equipments: Entity[]) => {\r\n // if (data.length > 0) {\r\n // durationErrorsHandler(\r\n // data,\r\n // equipments,\r\n // (nodes: IndexNode[]) => setDurationErrors(nodes),\r\n // onRestrictionsClick,\r\n // );\r\n // }\r\n // },\r\n // [onRestrictionsClick],\r\n // );\r\n const addOtheMessages = React.useCallback(\r\n (data: string[], type: 'warning' | 'error' | 'info' | 'success') => {\r\n if (data.length > 0) {\r\n otheMessagesHandler(data, type, (nodes: IndexNode[]) => {\r\n switch (type) {\r\n case 'error':\r\n setOtherErrors(() => nodes);\r\n break;\r\n case 'warning':\r\n setOtherWarnings(() => nodes);\r\n break;\r\n case 'info':\r\n setOtherInfo(() => nodes);\r\n break;\r\n case 'success':\r\n setOtherSuccess(() => nodes);\r\n break;\r\n }\r\n });\r\n }\r\n },\r\n [],\r\n );\r\n const addCustomFormErrors = React.useCallback((data: string[]) => {\r\n if (data.length > 0) {\r\n customFormErrorsHandler(data, (nodes: IndexNode[]) =>\r\n setCustomFormErrors(nodes),\r\n );\r\n }\r\n }, []);\r\n const addPermissionsErrors = React.useCallback(\r\n (data: string[], equipments: Entity[]) => {\r\n permissionsErrorsHandler(\r\n data,\r\n equipments,\r\n (nodes: IndexNode[]) => setPermissionErrors(nodes),\r\n onRestrictionsClick,\r\n );\r\n },\r\n [onRestrictionsClick],\r\n );\r\n\r\n /// Local State ///\r\n const [userGroupChanged, setUserGroupChanged] = React.useState(false);\r\n const [bookedbyChanged, setBookedByChanged] = React.useState(false);\r\n const [staffChanged, setStaffChanged] = React.useState(false);\r\n const [serviceChanged, setServiceChanged] = React.useState(false);\r\n const [accServiceChanged, setAccServiceChanged] = React.useState(false);\r\n const [budgetChanged, setBudgetChanged] = React.useState(false);\r\n const [statusChanged, setStatusChanged] = React.useState(false);\r\n const [startTimeChanged, setStartTimeChanged] = React.useState(false);\r\n const [endTimeChanged, setEndTimeChanged] = React.useState(false);\r\n const [tutoringChanged, setTutoringChanged] = React.useState(false);\r\n const [optionalChanged, setOptionalChanged] = React.useState(false);\r\n\r\n const [allIsValid, setAllIsValid] = React.useState(true);\r\n const [trainingSessionChanged, setTrainingSessionChanged] =\r\n React.useState(false);\r\n const [purchaseOrderChanged, setPurchaseOrderChanged] = React.useState(false);\r\n const [originalFormFiles, setOriginalFormFiles] = React.useState<\r\n IFormFileValue[]\r\n >([]);\r\n const [currentFormFiles, setCurrentFormFiles] = React.useState<\r\n IFormFileValue[]\r\n >([]);\r\n\r\n const [firstInitEquipments, setFirstInitEquipments] = React.useState<\r\n number[]\r\n >(reservationSettings?.FirstInitEquipments || []);\r\n const [currentStatus, setCurrentStatus] = React.useState(\r\n initialValues.Status?.Id || 1,\r\n );\r\n const [isTrainingSignUp, setIsTrainingSignUp] = React.useState<\r\n boolean | undefined\r\n >(trainingSignUp);\r\n const changeOfflineServices = React.useCallback(\r\n (services: IOtherServices[], operation: 'add' | 'remove' | 'update') => {\r\n if (operation === 'add') {\r\n let addedServ = services.filter(\r\n f =>\r\n !savedOfflineServices.some(\r\n s => s.ServiceTypeID === f.ServiceTypeID,\r\n ),\r\n );\r\n dispatch(\r\n actions.setSavedOfflineServices([\r\n ...savedOfflineServices,\r\n ...addedServ,\r\n ]),\r\n );\r\n }\r\n if (operation === 'remove') {\r\n if (isEdit) {\r\n dispatch(\r\n actions.setRemovedOfflineServices([\r\n ...removedOfflineServices,\r\n ...services,\r\n ]),\r\n );\r\n }\r\n dispatch(\r\n actions.setSavedOfflineServices(\r\n savedOfflineServices.filter(f => {\r\n return !services.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n }),\r\n ),\r\n );\r\n }\r\n if (operation === 'update') {\r\n dispatch(\r\n actions.setSavedOfflineServices(\r\n savedOfflineServices.map(f => {\r\n let service = services.find(\r\n s => s.ServiceTypeID === f.ServiceTypeID,\r\n );\r\n if (!!service && service !== null) {\r\n return Object.assign({}, f, service);\r\n } else {\r\n return f;\r\n }\r\n }),\r\n ),\r\n );\r\n }\r\n },\r\n [actions, dispatch, isEdit, removedOfflineServices, savedOfflineServices],\r\n );\r\n /// memo ///\r\n const isServiceAdmin = React.useMemo(() => {\r\n return equipmentSettings?.IsAllAdmin;\r\n }, [equipmentSettings?.IsAllAdmin]);\r\n\r\n const readonly = React.useMemo(() => {\r\n return (\r\n equipmentChangeCompleted === false ||\r\n asyncChangeLoading === true ||\r\n waitingTransferApproval === true\r\n );\r\n }, [asyncChangeLoading, equipmentChangeCompleted, waitingTransferApproval]);\r\n\r\n const fundingTypeVisible = React.useMemo(() => {\r\n return (\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n globalSettings.fundingTypeBudgetEnabled\r\n );\r\n }, [globalSettings]);\r\n const ReservationUserGroupGroupByBudgetUserGroup = React.useMemo(() => {\r\n return !!equipmentSettings\r\n ? globalSettings.reservationUserGroupGroupByBudgetUserGroup &&\r\n !equipmentSettings.HasHideProjects &&\r\n !equipmentSettings.HasConflictProjects &&\r\n equipmentSettings.BudgetsTurnedOn\r\n : globalSettings.reservationUserGroupGroupByBudgetUserGroup;\r\n }, [\r\n equipmentSettings,\r\n globalSettings.reservationUserGroupGroupByBudgetUserGroup,\r\n ]);\r\n\r\n const userGroupVisible = React.useMemo(() => {\r\n return (\r\n isServiceAdmin &&\r\n (!isEdit ||\r\n (isEdit && !globalSettings.DoNotAllowReservationUserChangeByStaff)) &&\r\n !ReservationUserGroupGroupByBudgetUserGroup\r\n );\r\n }, [\r\n isServiceAdmin,\r\n isEdit,\r\n globalSettings.DoNotAllowReservationUserChangeByStaff,\r\n ReservationUserGroupGroupByBudgetUserGroup,\r\n ]);\r\n const userVisible = React.useMemo(() => {\r\n return (\r\n (isServiceAdmin || isUserGroupCoordinator) &&\r\n (!isEdit ||\r\n (isEdit && !globalSettings.DoNotAllowReservationUserChangeByStaff))\r\n );\r\n }, [\r\n isServiceAdmin,\r\n isUserGroupCoordinator,\r\n isEdit,\r\n globalSettings.DoNotAllowReservationUserChangeByStaff,\r\n ]);\r\n const userProfileVisible = React.useMemo(() => {\r\n return (\r\n (isServiceAdmin || isUserGroupCoordinator) &&\r\n isEdit &&\r\n globalSettings.DoNotAllowReservationUserChangeByStaff\r\n );\r\n }, [\r\n isServiceAdmin,\r\n isUserGroupCoordinator,\r\n isEdit,\r\n globalSettings.DoNotAllowReservationUserChangeByStaff,\r\n ]);\r\n const tutoringVisible = React.useMemo(() => {\r\n return (\r\n globalSettings.assistedReservationsEnabled &&\r\n globalSettings.tutoringModulesEnabled &&\r\n equipmentSettings?.IsEquipmentTutoring &&\r\n !isTrainingSignUp\r\n );\r\n }, [\r\n equipmentSettings?.IsEquipmentTutoring,\r\n globalSettings.assistedReservationsEnabled,\r\n globalSettings.tutoringModulesEnabled,\r\n isTrainingSignUp,\r\n ]);\r\n\r\n const trainingSessionVisible = React.useMemo(() => {\r\n return (\r\n trainingSessionEnabled &&\r\n (reservationSettings?.TrainingSessionOnly || isTrainingSignUp)\r\n );\r\n }, [\r\n reservationSettings?.TrainingSessionOnly,\r\n trainingSessionEnabled,\r\n isTrainingSignUp,\r\n ]);\r\n const workflowBookingVisible = React.useMemo(() => {\r\n return globalSettings.AllowWorkflowBooking;\r\n }, [globalSettings.AllowWorkflowBooking]);\r\n const workflowBookingEnabled = React.useMemo(() => {\r\n return (\r\n workflowBookingVisible &&\r\n (globalSettings.ModifyReservationNameForUsers || isAdmin)\r\n );\r\n }, [\r\n globalSettings.ModifyReservationNameForUsers,\r\n isAdmin,\r\n workflowBookingVisible,\r\n ]);\r\n const trainingSignUpVisible = React.useMemo(() => {\r\n return (\r\n globalSettings.trainingSessionEnabled &&\r\n !equipmentSettings?.HideTrainingSession &&\r\n reservationSettings?.HasTrainingSession\r\n );\r\n }, [\r\n globalSettings.trainingSessionEnabled,\r\n equipmentSettings?.HideTrainingSession,\r\n reservationSettings?.HasTrainingSession,\r\n ]);\r\n const staffVisible = React.useMemo(() => {\r\n return (\r\n equipmentSettings?.StaffUserVisibleAllways ||\r\n (equipmentSettings?.StaffUserVisibleOnPending &&\r\n currentStatus === ReservationStatus.Pending)\r\n );\r\n }, [\r\n equipmentSettings?.StaffUserVisibleAllways,\r\n equipmentSettings?.StaffUserVisibleOnPending,\r\n currentStatus,\r\n ]);\r\n const reservationCollaboratorsVisible = React.useMemo(() => {\r\n return equipmentSettings?.AllowReservationCollaborators;\r\n }, [equipmentSettings?.AllowReservationCollaborators]);\r\n const ForceFullDayReservations = React.useMemo(\r\n () => equipmentSettings?.ForceFullDayReservations,\r\n [equipmentSettings?.ForceFullDayReservations],\r\n );\r\n const budgetExperimentVisible = React.useMemo(\r\n () => equipmentSettings?.budgetExperimentVisible,\r\n [equipmentSettings?.budgetExperimentVisible],\r\n );\r\n const staffRequired = React.useMemo(() => {\r\n return (\r\n equipmentSettings?.StaffUserRequiredAlwais ||\r\n (equipmentSettings?.StaffUserRequiredOnPending &&\r\n currentStatus === ReservationStatus.Pending)\r\n );\r\n }, [\r\n equipmentSettings?.StaffUserRequiredAlwais,\r\n equipmentSettings?.StaffUserRequiredOnPending,\r\n currentStatus,\r\n ]);\r\n const warningMessages: IndexNode[] = React.useMemo(() => {\r\n let nodes: IndexNode[] = [];\r\n if (firstInitEquipments.length > 0) {\r\n nodes.push({\r\n index: 'notMoreThenOneIndex',\r\n node: (\r\n \r\n {t(translations.AvailableInstrumentsMessage) as string}\r\n \r\n ),\r\n });\r\n }\r\n if (isEdit) {\r\n if (\r\n currentStatus !== ReservationStatus.Cancelled &&\r\n currentStatus !== ReservationStatus.CancelledByAdmin\r\n ) {\r\n if (\r\n initialValues.Tutoring &&\r\n currentStatus === ReservationStatus.Pending\r\n ) {\r\n nodes.push({\r\n index: 'pendingApproval',\r\n node: (\r\n \r\n \r\n {t(translations.ReservationPendingApproval) as string}\r\n \r\n {isServiceAdmin && (\r\n \r\n !!onStatusChange &&\r\n onStatusChange(e, ReservationStatus.Approved)\r\n }\r\n >\r\n {t(translations.Approve) as string}\r\n \r\n )}\r\n \r\n {t(translations.res_wrn_NewPendingReservation) as string}\r\n \r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n } else if (currentStatus === ReservationStatus.PendingCoord) {\r\n nodes.push({\r\n index: 'pendingCoordApproval',\r\n node: (\r\n \r\n \r\n {t(translations.RequireGroupCoordApprovalMessage) as string}\r\n \r\n \r\n {t(translations.res_wrn_NewPendingCoordReservation) as string}\r\n \r\n {isUserGroupCoordinator && (\r\n \r\n !!onStatusChange &&\r\n onStatusChange(e, ReservationStatus.Approved)\r\n }\r\n >\r\n {t(translations.Approve) as string}\r\n \r\n )}\r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n if (\r\n equipmentSettings?.DraftSaveForLater &&\r\n currentStatus === ReservationStatus.Draft\r\n ) {\r\n nodes.push({\r\n index: 'draftReservation',\r\n node: (\r\n \r\n \r\n {t(translations.res_wrn_DraftReservation) as string}\r\n \r\n {(isServiceAdmin ||\r\n initialValues.BookedBy?.Id === user?.Id) && (\r\n \r\n !!onStatusChange &&\r\n onStatusChange(e, ReservationStatus.Approved)\r\n }\r\n >\r\n {t(translations.MakeFirm) as string}\r\n \r\n )}\r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n }\r\n }\r\n if (\r\n !isEdit &&\r\n initialValues.TransferFromId !== null &&\r\n initialValues.TransferFromId !== undefined\r\n ) {\r\n nodes.push({\r\n index: 'transferWarning',\r\n node: (\r\n \r\n \r\n {t(translations.Transfer) as string}\r\n \r\n \r\n {t(translations.ReservationTransferMessage) as string}\r\n \r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n if (\r\n !isEdit &&\r\n (equipmentSettings?.RequireUserGroupCoordApproval ||\r\n user?.RequireUserGroupCoordApproval)\r\n ) {\r\n nodes.push({\r\n index: 'pendingCoordApproval',\r\n node: (\r\n \r\n \r\n {t(translations.RequireGroupCoordApprovalMessage) as string}\r\n \r\n \r\n {t(translations.res_wrn_NewPendingCoordReservation) as string}\r\n \r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n if (\r\n reservationSettings?.TrainingSessionOnly === true &&\r\n reservationSettings?.HasTrainingSession !== true\r\n ) {\r\n nodes.push({\r\n index: 'trainingSessionMissingWarning',\r\n node: (\r\n \r\n \r\n {t(translations.TrainingSession) as string}\r\n \r\n \r\n {t(translations.TrainingSessionsRes_warning) as string}\r\n \r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n return [...nodes, ...otherWarnings];\r\n }, [\r\n currentStatus,\r\n equipmentSettings?.DraftSaveForLater,\r\n equipmentSettings?.RequireUserGroupCoordApproval,\r\n firstInitEquipments.length,\r\n initialValues.BookedBy?.Id,\r\n initialValues.TransferFromId,\r\n initialValues.Tutoring,\r\n isEdit,\r\n isServiceAdmin,\r\n isUserGroupCoordinator,\r\n onStatusChange,\r\n otherWarnings,\r\n reservationSettings?.HasTrainingSession,\r\n reservationSettings?.TrainingSessionOnly,\r\n t,\r\n user?.Id,\r\n user?.RequireUserGroupCoordApproval,\r\n ]);\r\n const infoMessages = React.useMemo(() => {\r\n let nodes: IndexNode[] = [];\r\n if (\r\n globalSettings.assistedReservationsEnabled &&\r\n !equipmentSettings?.IsAllAdmin &&\r\n equipmentSettings?.ForceTutoring &&\r\n !isEdit &&\r\n currentStatus === ReservationStatus.Pending\r\n ) {\r\n nodes.push({\r\n index: 'asiistedTutorInfo',\r\n node: (\r\n \r\n {`${\r\n t(translations.TutoringAssistedReservation) as string\r\n } - ${getSingleReservationStatus(currentStatus).Name}`}\r\n \r\n {\r\n t(\r\n translations.AssistedReservationsPendingApprovalInfo,\r\n ) as string\r\n }\r\n \r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n if (\r\n isEdit &&\r\n transferToUser !== null &&\r\n transferToUser !== undefined &&\r\n waitingTransferApproval === true\r\n ) {\r\n nodes.push({\r\n index: 'waitingTraferInfo',\r\n node: (\r\n \r\n \r\n {t(translations.TransferReservation) as string}\r\n \r\n \r\n {(t(translations.TransferredToDetailsMessage) as string).replace(\r\n '{0}',\r\n transferToUser?.Name || '',\r\n )}\r\n \r\n \r\n {editable && (\r\n {\r\n !!cancelTransfer && cancelTransfer();\r\n }}\r\n >\r\n {t(translations.CancelTransfer) as string}\r\n \r\n )}\r\n\r\n {(isServiceAdmin ||\r\n initialValues.TransferredTo?.Id === user?.Id) && (\r\n \r\n {t(translations.TakeOverTransfer) as string}\r\n \r\n )}\r\n \r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n if (isEdit && terminationEnabled) {\r\n nodes.push({\r\n index: 'terminationInfo',\r\n node: (\r\n \r\n \r\n {t(translations.NotUsingThisReservation)}\r\n \r\n {/* {t(translations.NotUsingThisReservation)} */}\r\n \r\n \r\n \r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n if (trainingSessionVisible && isServiceAdmin) {\r\n let reservation = formRef.current?.values || initialValues;\r\n let session =\r\n reservation.TrainingSession !== null\r\n ? (reservation.TrainingSession as ITrainingSessionDto)\r\n : null;\r\n if (session !== null && trainingSignUp) {\r\n nodes.push({\r\n index: 'trainingSignUps',\r\n showMore: false,\r\n node: (\r\n
    \r\n \r\n
    \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n }\r\n if (!isEdit) {\r\n const assemblyPartsSelected = formRef.current?.values.EquipmentsData.some(\r\n service => (service as IReservationEquipmentDto)?.AssemblyId !== null,\r\n );\r\n if (assemblyPartsSelected) {\r\n nodes.push({\r\n index: 'index',\r\n showMore: false,\r\n node: (\r\n <>{t(translations.ReservationSidePanelAssemblyPart_ErrorMessage)}\r\n ),\r\n });\r\n }\r\n }\r\n\r\n return [...nodes, ...otherInfo];\r\n }, [\r\n cancelTransfer,\r\n currentStatus,\r\n editable,\r\n equipmentSettings?.ForceTutoring,\r\n equipmentSettings?.IsAllAdmin,\r\n equipmentSettings?.IsLoanDesc,\r\n formRef,\r\n globalSettings.assistedReservationsEnabled,\r\n handleTerminate,\r\n initialValues,\r\n isEdit,\r\n isServiceAdmin,\r\n otherInfo,\r\n reservationSettings?.BaseEquipment?.Id,\r\n t,\r\n terminationEnabled,\r\n trainingSessionVisible,\r\n trainingSignUp,\r\n transferToUser,\r\n user?.Id,\r\n waitingTransferApproval,\r\n ]);\r\n const successMessages = React.useMemo(() => {\r\n let nodes: IndexNode[] = [];\r\n if (\r\n globalSettings.assistedReservationsEnabled &&\r\n equipmentSettings?.ForceTutoring &&\r\n isEdit &&\r\n currentStatus === ReservationStatus.Approved\r\n ) {\r\n nodes.push({\r\n index: 'asiistedTutorApproved',\r\n node: (\r\n \r\n {t(translations.ReservationAssistedApproved) as string}\r\n \r\n ),\r\n variant: 'outlined',\r\n });\r\n }\r\n return [...nodes, ...otherSuccess];\r\n }, [\r\n currentStatus,\r\n equipmentSettings?.ForceTutoring,\r\n globalSettings.assistedReservationsEnabled,\r\n isEdit,\r\n otherSuccess,\r\n t,\r\n ]);\r\n const equipmentsChangeHandler = React.useCallback(\r\n (\r\n values: ReservationDetailsState,\r\n changeStatus?: boolean,\r\n selectedEqs?: IReservationEquipmentDto[],\r\n ) => {\r\n let allEquipments = !!selectedEqs\r\n ? selectedEqs\r\n : [\r\n ...(values.EquipmentsData as IReservationEquipmentDto[]),\r\n ...((reservationSettings?.MandatoriesEquipments ||\r\n []) as Entity[] as IReservationEquipmentDto[]),\r\n ...(values.OptionalsEquipments.filter(\r\n f => f.checked === true,\r\n ) as Entity[] as IReservationEquipmentDto[]),\r\n ];\r\n dispatch(\r\n actions.extendEquipmentSettingsState({\r\n equipments: allEquipments,\r\n mandatories: [],\r\n accServices: values.AccServices as IEquipmentAccServicesDto[],\r\n globalSettings: globalSettings,\r\n settings: equipmentSettings,\r\n }),\r\n );\r\n const payload: EquipmentsChangeStateParameters = {\r\n AccServices: values.AccServices.map(f => f.Id),\r\n Equipments: allEquipments.map(f => f.Id),\r\n ReservationId: (values.Id ?? 0) > 0 ? values.Id : null,\r\n Start: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(values.StartTime),\r\n ),\r\n End: dateUtils.formatISO(dateUtils.dateOrStringToDate(values.EndTime)),\r\n BookedBy: values.BookedBy?.Id || null,\r\n Status: values.Status?.Id || 1,\r\n TrainingSignUp: values.TrainingSignUp,\r\n Tutoring: values.Tutoring,\r\n ADGroup: values.ADGroup?.Id || user?.ActiveUserGroup?.Id || null,\r\n FundingTypeId: isNullOrUndefined(values.FundingType)\r\n ? null\r\n : values.FundingType?.Id,\r\n CheckStatus: changeStatus || false,\r\n TrainingSessionId: values.TrainingSession?.Id || null,\r\n Remarks: values.Remarks || null,\r\n BudgetId: values.Budget?.Id || null,\r\n CheckSession: !equipmentSettings?.HideTrainingSession,\r\n FullDayReservation: values.FullDayReservation,\r\n PurchaseOrder: values.PurchaseOrder ?? null,\r\n };\r\n resetAllErrors();\r\n dispatch(\r\n actions.initValidationData({\r\n parameters: payload,\r\n warnings: [],\r\n errors: [],\r\n }),\r\n );\r\n },\r\n [\r\n actions,\r\n dispatch,\r\n equipmentSettings,\r\n globalSettings,\r\n reservationSettings?.MandatoriesEquipments,\r\n user?.ActiveUserGroup?.Id,\r\n ],\r\n );\r\n const extendStaffMandatoryEquipment = React.useCallback(\r\n (staff: IReservationEquipmentDto | null) => {\r\n dispatch(\r\n actions.extendReservationSettings({\r\n StaffMandatoryEquipment: staff,\r\n }),\r\n );\r\n },\r\n [actions, dispatch],\r\n );\r\n const extendMandatoryEquipments = React.useCallback(\r\n (mandatories: IMandatoryEquipmentsDto[]) => {\r\n dispatch(\r\n actions.extendReservationSettings({\r\n MandatoriesEquipments: mandatories,\r\n }),\r\n );\r\n },\r\n [actions, dispatch],\r\n );\r\n const initStaffReservation = React.useCallback(\r\n (staffEquipmentId: number, values: ReservationDetailsState) => {\r\n resetAllErrors();\r\n dispatch(\r\n actions.initReservation({\r\n query: {\r\n id: undefined,\r\n selectedIds: values.EquipmentsData.map(f => f.Id).join(','),\r\n Start: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(values.StartTime),\r\n ),\r\n End: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(values.EndTime),\r\n ),\r\n tsid:\r\n values.TrainingSession === null\r\n ? undefined\r\n : values.TrainingSession.Id.toString(),\r\n remarks: values.Remarks,\r\n accid: values.AccServices.map(f => f.Id).join(','),\r\n singleClick: undefined,\r\n duration: undefined,\r\n ug: values.ADGroup?.Id,\r\n un: values.BookedBy?.Id,\r\n ft:\r\n values.FundingType === null || values.FundingType === undefined\r\n ? undefined\r\n : values.FundingType.Id.toString(),\r\n srid: String(reservationSettings?.AssignToServiceRequestId),\r\n srrid: String(reservationSettings?.AssignToServiceRequestRowIds),\r\n srsid: String(reservationSettings?.AssignToServiceRequestSampleIds),\r\n sampleRunId: undefined,\r\n defaultMulti: undefined,\r\n resIdTransferredFrom: values.TransferFromId?.toString(),\r\n source: undefined,\r\n UpdateToNow: undefined,\r\n terminated: undefined,\r\n resourceChanged: true.toString(),\r\n staffEquipmentId: staffEquipmentId.toString(),\r\n staffUser: values.StaffUser?.Id,\r\n } as ReservationQueryStringParameters,\r\n globalSettings: globalSettings,\r\n prevState: values,\r\n }),\r\n );\r\n setFirstInitEquipments([]);\r\n setServiceChanged(false);\r\n setAccServiceChanged(false);\r\n },\r\n [\r\n actions,\r\n dispatch,\r\n globalSettings,\r\n reservationSettings?.AssignToServiceRequestId,\r\n reservationSettings?.AssignToServiceRequestRowIds,\r\n reservationSettings?.AssignToServiceRequestSampleIds,\r\n ],\r\n );\r\n const initTrainingSession = React.useCallback(\r\n (\r\n trainingSessionData: TrainingSessionResult,\r\n values: ReservationDetailsState,\r\n ) => {\r\n resetAllErrors();\r\n dispatch(\r\n actions.initReservation({\r\n query: {\r\n id: undefined,\r\n selectedIds: values.EquipmentsData.map(f => f.Id).join(','),\r\n Start: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(trainingSessionData.Start),\r\n ),\r\n End: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(trainingSessionData.End),\r\n ),\r\n tsid:\r\n trainingSessionData.TrainingSessionId === null\r\n ? undefined\r\n : trainingSessionData.TrainingSessionId.toString(),\r\n remarks: values.Remarks,\r\n accid: undefined,\r\n singleClick: undefined,\r\n duration: undefined,\r\n ug: values.ADGroup?.Id,\r\n un: values.BookedBy?.Id,\r\n ft:\r\n values.FundingType === null || values.FundingType === undefined\r\n ? undefined\r\n : values.FundingType.Id.toString(),\r\n srid: undefined,\r\n srrid: undefined,\r\n srsid: undefined,\r\n sampleRunId: undefined,\r\n defaultMulti: undefined,\r\n resIdTransferredFrom: undefined,\r\n source: undefined,\r\n UpdateToNow: undefined,\r\n terminated: undefined,\r\n resourceChanged: true.toString(),\r\n staffEquipmentId: undefined,\r\n staffUser: trainingSessionData.StaffUser,\r\n } as ReservationQueryStringParameters,\r\n globalSettings: globalSettings,\r\n prevState: values,\r\n }),\r\n );\r\n setFirstInitEquipments([]);\r\n setServiceChanged(false);\r\n setAccServiceChanged(false);\r\n },\r\n [actions, dispatch, globalSettings],\r\n );\r\n const setStaffEquipmentRestricted = React.useCallback(\r\n (staffUserName: string) => {\r\n setOtherErrors(() => [\r\n {\r\n index: 3,\r\n node: (\r\n \r\n \r\n {(\r\n t(translations.err_res_StaffUserEquipmentRestricted) as string\r\n ).replace('{0}', staffUserName)}\r\n \r\n \r\n ),\r\n },\r\n ]);\r\n },\r\n [t],\r\n );\r\n const staffChangeHandler = React.useCallback(\r\n (\r\n values: ReservationDetailsState,\r\n setFieldValue: FormikHelpers['setFieldValue'],\r\n ) => {\r\n return staffUserChangeHandler(\r\n values,\r\n isEdit,\r\n setFieldValue,\r\n equipmentsChangeHandler,\r\n extendStaffMandatoryEquipment,\r\n extendMandatoryEquipments,\r\n initStaffReservation,\r\n setStaffEquipmentRestricted,\r\n reservationSettings,\r\n );\r\n },\r\n [\r\n equipmentsChangeHandler,\r\n extendMandatoryEquipments,\r\n extendStaffMandatoryEquipment,\r\n initStaffReservation,\r\n isEdit,\r\n reservationSettings,\r\n setStaffEquipmentRestricted,\r\n ],\r\n );\r\n const multipleEquipmentsChangeHandler = React.useCallback(\r\n (\r\n values: ReservationDetailsState,\r\n setValue: (\r\n field: string,\r\n value: any,\r\n shouldValidate?: boolean | undefined,\r\n ) => void,\r\n ) => {\r\n let equipments = values.EquipmentsData as IReservationEquipmentDto[];\r\n let mandatories = (\r\n equipments.length > 0 &&\r\n equipments.some(\r\n f => !!f.MandatoriesEquipments && f.MandatoriesEquipments.length > 0,\r\n )\r\n ? equipments.reduce((acc, next) => {\r\n return acc;\r\n }, equipments.filter(f => !!f.MandatoriesEquipments && f.MandatoriesEquipments.length > 0)[0].MandatoriesEquipments)\r\n : []\r\n ).filter(f => !equipments.some(s => f.Id === s.Id));\r\n let accServicesSelected =\r\n values.AccServices as IEquipmentAccServicesDto[];\r\n /**\r\n * Gets the mandatory offline service types attached to reservation services.\r\n * @param services services selected for the reservation\r\n * @returns array of mandatory offline service type details\r\n */\r\n const getMandatoryOfflineServices = (\r\n services: IReservationEquipmentDto[],\r\n ) => {\r\n const MandatoryOfflineServicesOnTrainingSignUps =\r\n globalSettings.MandatoryOfflineServicesOnTrainingSignUps ||\r\n !values.TrainingSignUp;\r\n /**\r\n * If the MandatoryOfflineServicesOnTrainingSignUps system setting is turned off, then no offline service types should be mandatory for training signups\r\n */\r\n\r\n const initialValue: Pick<\r\n ReservationSettingsState,\r\n 'OfflineMandatory' | 'OfflineOptional'\r\n > = {\r\n OfflineMandatory: [],\r\n OfflineOptional: [],\r\n };\r\n const result = combineOfflineServiceTypes(services)?.reduce(\r\n (previousValue, currentValue) => {\r\n const mandatory =\r\n MandatoryOfflineServicesOnTrainingSignUps && currentValue;\r\n\r\n (mandatory\r\n ? previousValue.OfflineMandatory\r\n : previousValue.OfflineOptional\r\n ).push(currentValue as unknown as IOtherServices);\r\n return previousValue;\r\n },\r\n initialValue,\r\n );\r\n return result;\r\n };\r\n if (mandatories.length > 0) {\r\n (async () => {\r\n try {\r\n const data = (await initEquipmentsData(\r\n mandatories.map(f => f.Id).join(','),\r\n 'AccServices,OfflineServices,StaffUserSelection,MandatoriesEquipments,OptionalsEquipments',\r\n )) as IMandatoryEquipmentsDto[];\r\n\r\n const allEquipments = [\r\n ...values.EquipmentsData,\r\n ...data,\r\n ] as IReservationEquipmentDto[];\r\n dispatch(\r\n actions.extendReservationSettings({\r\n MandatoriesEquipments: data,\r\n ...getMandatoryOfflineServices(allEquipments),\r\n }),\r\n );\r\n\r\n setValue('EquipmentsData', allEquipments);\r\n if (!!accServicesSelected && accServicesSelected.length > 0) {\r\n if (\r\n !allEquipments.every(\r\n f =>\r\n f.AccServices.length > 0 &&\r\n f.AccServices.some(s =>\r\n accServicesSelected.some(a => a.Id === s.Id),\r\n ),\r\n )\r\n ) {\r\n setValue('AccServices', []);\r\n accServicesSelected = [];\r\n } else {\r\n let eqAccServices = allEquipments.reduce((acc, next) => {\r\n return [...acc, ...next.AccServices];\r\n }, [] as IEquipmentAccServicesDto[]);\r\n if (\r\n accServicesSelected.some(\r\n f =>\r\n !eqAccServices.some(\r\n s => s.EquipmentId === f.EquipmentId && s.Id === f.Id,\r\n ),\r\n )\r\n ) {\r\n let newAccervices = eqAccServices.filter(f =>\r\n accServicesSelected.some(\r\n s => s.EquipmentId !== f.EquipmentId && s.Id === f.Id,\r\n ),\r\n );\r\n setValue('AccServices', newAccervices);\r\n accServicesSelected = newAccervices;\r\n }\r\n }\r\n }\r\n equipmentsChangeHandler(\r\n Object.assign({}, values, {\r\n EquipmentsData: allEquipments,\r\n AccServices: accServicesSelected,\r\n }),\r\n true,\r\n );\r\n } catch {}\r\n })();\r\n } else {\r\n if (!!accServicesSelected && accServicesSelected.length > 0) {\r\n if (\r\n !equipments.every(\r\n f =>\r\n f.AccServices.length > 0 &&\r\n f.AccServices.some(s =>\r\n accServicesSelected.some(a => a.Id === s.Id),\r\n ),\r\n )\r\n ) {\r\n setValue('AccServices', []);\r\n accServicesSelected = [];\r\n } else {\r\n let eqAccServices = equipments.reduce((acc, next) => {\r\n return [...acc, ...next.AccServices];\r\n }, [] as IEquipmentAccServicesDto[]);\r\n if (\r\n accServicesSelected.some(\r\n f =>\r\n !eqAccServices.some(\r\n s => s.EquipmentId === f.EquipmentId && s.Id === f.Id,\r\n ),\r\n )\r\n ) {\r\n let newAccervices = eqAccServices.filter(f =>\r\n accServicesSelected.some(\r\n s => s.EquipmentId !== f.EquipmentId && s.Id === f.Id,\r\n ),\r\n );\r\n setValue('AccServices', newAccervices);\r\n accServicesSelected = newAccervices;\r\n }\r\n }\r\n }\r\n dispatch(\r\n actions.extendReservationSettings({\r\n MandatoriesEquipments: mandatories,\r\n ...getMandatoryOfflineServices(equipments),\r\n }),\r\n );\r\n equipmentsChangeHandler(\r\n Object.assign({}, values, {\r\n EquipmentsData: equipments,\r\n AccServices: accServicesSelected,\r\n }),\r\n true,\r\n );\r\n }\r\n },\r\n [\r\n actions,\r\n dispatch,\r\n equipmentsChangeHandler,\r\n globalSettings.MandatoryOfflineServicesOnTrainingSignUps,\r\n ],\r\n );\r\n const warnOnTrainingSession = React.useCallback(\r\n (data: TrainingSessionResult | null, values: ReservationDetailsState) => {\r\n trainingSessionChangeHandler(\r\n data,\r\n (nodes: IndexNode[]) => setOtherWarnings(nodes),\r\n (data, values) => {\r\n initTrainingSession(data, values);\r\n setIsTrainingSignUp(true);\r\n },\r\n values,\r\n );\r\n },\r\n [initTrainingSession],\r\n );\r\n const handleValidate = React.useCallback(\r\n (userGroup: Entity | null, budget: IBudgetFilterDto | null) => {\r\n let values = formRef.current?.values || initialValues;\r\n if (!!values) {\r\n let allEquipments = [\r\n ...(values.EquipmentsData as IReservationEquipmentDto[]),\r\n ...((reservationSettings?.MandatoriesEquipments ||\r\n []) as Entity[] as IReservationEquipmentDto[]),\r\n ...(values.OptionalsEquipments.filter(\r\n f => f.checked === true,\r\n ) as Entity[] as IReservationEquipmentDto[]),\r\n ];\r\n const payload = {\r\n AccServices: values.AccServices.map(f => f.Id),\r\n Equipments: allEquipments.map(f => f.Id),\r\n ReservationId: (values.Id ?? 0) > 0 ? values.Id : null,\r\n Start: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(values.StartTime),\r\n ),\r\n End: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(values.EndTime),\r\n ),\r\n BookedBy: values.BookedBy?.Id || null,\r\n Status: values.Status?.Id || 1,\r\n TrainingSignUp: values.TrainingSignUp,\r\n Tutoring: values.Tutoring,\r\n ADGroup: values.ADGroup?.Id || userGroup?.Id || null,\r\n FundingTypeId: fundingTypeVisible ? 0 : values.FundingType?.Id || 0,\r\n CheckStatus: false,\r\n TrainingSessionId: values.TrainingSession?.Id || null,\r\n Remarks: values.Remarks || null,\r\n BudgetId: values.Budget?.Id || budget?.Id || null,\r\n CheckSession: false,\r\n PurchaseOrder: values.PurchaseOrder ?? null,\r\n } as EquipmentsChangeStateParameters;\r\n (async () => {\r\n var validations = await getReservationValidationState(payload);\r\n resetAllErrors();\r\n let resultValidation = validations as ReservationValidationResult;\r\n if (!!resultValidation) {\r\n if (!!resultValidation.PrerequisiteTrainings) {\r\n if (!resultValidation.PrerequisiteTrainings.IsValid) {\r\n addPrerquisitErrors(\r\n resultValidation.PrerequisiteTrainings,\r\n values.EquipmentsData,\r\n );\r\n }\r\n }\r\n let permErrors = getErrorMessages(\r\n resultValidation.PermissionErrors,\r\n );\r\n if (permErrors.length > 0) {\r\n addPermissionsErrors(permErrors, values.EquipmentsData);\r\n if (\r\n !reservationSettings?.UserRequestedByApproval &&\r\n resultValidation.UserCanRequestApproval\r\n ) {\r\n dispatch(actions.setUserCanRequestApproval(true));\r\n dispatch(actions.setByApprovalErrors(permErrors));\r\n }\r\n }\r\n let allErrors = getErrorMessages(resultValidation.ErrorMessages);\r\n if (allErrors.length > 0) {\r\n addOtheMessages(allErrors, 'error');\r\n }\r\n if (resultValidation.WarningMessages.length > 0) {\r\n addOtheMessages(resultValidation.WarningMessages, 'warning');\r\n }\r\n }\r\n //accServicesValidation\r\n if (\r\n allEquipments.some(\r\n f => !!f.AccServices && f.AccServices.length > 0,\r\n ) &&\r\n !isTrainingSignUp\r\n ) {\r\n let res = validateAccServices(allEquipments);\r\n if (res.length > 0) {\r\n let error = (\r\n t(\r\n translations.err_MultipleEquipmentsWithAndWithoutAccServices,\r\n ) as string\r\n ).replace('{0}', res.join(', '));\r\n addOtheMessages([error], 'error');\r\n }\r\n }\r\n })();\r\n }\r\n if (reservationSettings?.UserRequestedByApproval) {\r\n setPermissionErrors([]);\r\n }\r\n },\r\n [\r\n actions,\r\n addOtheMessages,\r\n addPermissionsErrors,\r\n addPrerquisitErrors,\r\n dispatch,\r\n formRef,\r\n fundingTypeVisible,\r\n initialValues,\r\n isTrainingSignUp,\r\n reservationSettings?.MandatoriesEquipments,\r\n reservationSettings?.UserRequestedByApproval,\r\n t,\r\n ],\r\n );\r\n const handleFormChange = React.useCallback<\r\n formChangeHandler\r\n >(\r\n (\r\n values,\r\n isValid,\r\n dirty,\r\n setFieldValue,\r\n setTouched,\r\n validateField,\r\n setError,\r\n validate,\r\n ) => {\r\n if (staffChanged) {\r\n staffChangeHandler(values, setFieldValue);\r\n setStaffChanged(false);\r\n }\r\n if ((serviceChanged || accServiceChanged) && !isEdit) {\r\n resetAllErrors();\r\n dispatch(\r\n actions.initReservation({\r\n query: {\r\n id: undefined,\r\n selectedIds: values.EquipmentsData.map(f => f.Id).join(','),\r\n Start: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(values.StartTime),\r\n ),\r\n End: dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(values.EndTime),\r\n ),\r\n tsid:\r\n values.TrainingSession === null\r\n ? undefined\r\n : values.TrainingSession.Id.toString(),\r\n remarks: values.Remarks,\r\n accid: values.AccServices.map(f => f.Id).join(','),\r\n singleClick: undefined,\r\n duration: undefined,\r\n ug: values.ADGroup?.Id,\r\n un: values.BookedBy?.Id,\r\n ft:\r\n values.FundingType === null || values.FundingType === undefined\r\n ? undefined\r\n : values.FundingType.Id.toString(),\r\n srid: String(reservationSettings?.AssignToServiceRequestId),\r\n srrid: String(reservationSettings?.AssignToServiceRequestRowIds),\r\n srsid: String(\r\n reservationSettings?.AssignToServiceRequestSampleIds,\r\n ),\r\n sampleRunId: values.SampleRunId?.toString(),\r\n defaultMulti: undefined,\r\n resIdTransferredFrom: values.TransferFromId?.toString(),\r\n source: undefined,\r\n UpdateToNow: undefined,\r\n terminated: undefined,\r\n resourceChanged: true.toString(),\r\n staffEquipmentId: (\r\n (values.StaffUser as IUserFilterDto)?.StaffEquipmentId ??\r\n undefined\r\n )?.toString(),\r\n staffUser: values.StaffUser?.Id,\r\n } as ReservationQueryStringParameters,\r\n globalSettings: globalSettings,\r\n prevState: values,\r\n }),\r\n );\r\n setFirstInitEquipments([]);\r\n setServiceChanged(false);\r\n setAccServiceChanged(false);\r\n setStaffChanged(false);\r\n }\r\n if (serviceChanged && isEdit && allowEditMultipleEquipments) {\r\n multipleEquipmentsChangeHandler(values, setFieldValue);\r\n setServiceChanged(false);\r\n }\r\n if (userGroupChanged) {\r\n console.log('User Group Changed', values.ADGroup);\r\n if (!isMember(values.BookedBy, values.ADGroup)) {\r\n setFieldValue('BookedBy', null);\r\n }\r\n setDurationErrors([]);\r\n setPermissionErrors([]);\r\n setPrerequisitErrors([]);\r\n setUserGroupChanged(false);\r\n }\r\n if (bookedbyChanged) {\r\n console.log('BookedBy Changed', values.BookedBy);\r\n if (values.BookedBy !== null) {\r\n equipmentsChangeHandler(values, true);\r\n }\r\n resetAllErrors();\r\n setBookedByChanged(false);\r\n }\r\n if (budgetChanged) {\r\n console.log('Budget Changed', values.Budget);\r\n setBudgetChanged(false);\r\n }\r\n if (statusChanged) {\r\n setCurrentStatus(values.Status?.Id || 1);\r\n console.log('Status Changed', values.Status);\r\n setStatusChanged(false);\r\n }\r\n if (startTimeChanged) {\r\n resetAllErrors();\r\n console.log('Start Time Changed', values.StartTime);\r\n setStartTimeChanged(false);\r\n }\r\n if (endTimeChanged) {\r\n resetAllErrors();\r\n console.log('End Time Changed', values.EndTime);\r\n setEndTimeChanged(false);\r\n }\r\n if (tutoringChanged) {\r\n console.log('Tutoring Changed', values.Tutoring);\r\n if (values.Tutoring === true) {\r\n setFieldValue(\r\n 'Status',\r\n getSingleReservationStatus(ReservationStatus.Pending),\r\n );\r\n setCurrentStatus(\r\n getSingleReservationStatus(ReservationStatus.Pending).Id,\r\n );\r\n } else {\r\n setFieldValue(\r\n 'Status',\r\n getSingleReservationStatus(ReservationStatus.Approved),\r\n );\r\n setCurrentStatus(\r\n getSingleReservationStatus(ReservationStatus.Approved).Id,\r\n );\r\n if (equipmentSettings?.StaffUserVisibleOnPending) {\r\n setFieldValue('StaffUser', null);\r\n }\r\n }\r\n setTutoringChanged(false);\r\n }\r\n if (optionalChanged) {\r\n setOtherErrors([]);\r\n equipmentsChangeHandler(values);\r\n console.log('Optional Changed');\r\n setOptionalChanged(false);\r\n }\r\n if (trainingSessionChanged) {\r\n if (!!values.TrainingSession && values.TrainingSession !== null) {\r\n setFieldValue(\r\n 'StartTime',\r\n (values.TrainingSession as ITrainingSessionDto).StartDate,\r\n );\r\n setFieldValue(\r\n 'EndTime',\r\n (values.TrainingSession as ITrainingSessionDto).EndDate,\r\n );\r\n setFieldValue('StaffUser', {\r\n Id: (values.TrainingSession as ITrainingSessionDto).Trainer,\r\n Name: (values.TrainingSession as ITrainingSessionDto).TrainerName,\r\n });\r\n }\r\n setTrainingSessionChanged(false);\r\n }\r\n if (purchaseOrderChanged) {\r\n setPurchaseOrderChanged(false);\r\n setOtherErrors([]);\r\n handleValidate(null, null);\r\n }\r\n },\r\n [\r\n staffChanged,\r\n serviceChanged,\r\n accServiceChanged,\r\n isEdit,\r\n allowEditMultipleEquipments,\r\n userGroupChanged,\r\n bookedbyChanged,\r\n budgetChanged,\r\n statusChanged,\r\n startTimeChanged,\r\n endTimeChanged,\r\n tutoringChanged,\r\n optionalChanged,\r\n trainingSessionChanged,\r\n purchaseOrderChanged,\r\n staffChangeHandler,\r\n dispatch,\r\n actions,\r\n reservationSettings?.AssignToServiceRequestId,\r\n reservationSettings?.AssignToServiceRequestRowIds,\r\n reservationSettings?.AssignToServiceRequestSampleIds,\r\n globalSettings,\r\n multipleEquipmentsChangeHandler,\r\n equipmentsChangeHandler,\r\n equipmentSettings?.StaffUserVisibleOnPending,\r\n handleValidate,\r\n ],\r\n );\r\n const validateForms = React.useCallback((isValid: boolean) => {\r\n setAllIsValid(isValid);\r\n }, []);\r\n\r\n /// useEffects\r\n React.useEffect(() => {\r\n if (formRef.current) {\r\n formRef.current.validateForm();\r\n }\r\n }, [formRef]);\r\n\r\n React.useEffect(() => {\r\n if (!!equipmentChangeState) {\r\n console.log('equipment settings: ', equipmentSettings);\r\n if (\r\n !!equipmentChangeState.CustomForms &&\r\n equipmentChangeState.CustomForms.ErrorMessages.length > 0\r\n ) {\r\n addCustomFormErrors(equipmentChangeState.CustomForms.ErrorMessages);\r\n }\r\n\r\n if (equipmentChangeState.ErrorMessages.length > 0) {\r\n addOtheMessages(equipmentChangeState.ErrorMessages, 'error');\r\n }\r\n if (equipmentChangeState.WarningMessages.length > 0) {\r\n addOtheMessages(equipmentChangeState.ErrorMessages, 'warning');\r\n }\r\n if (equipmentChangeState.TrainingSessionData !== null) {\r\n if (equipmentChangeState.TrainingSessionData.HasTrainingSession) {\r\n setOtherErrors([]);\r\n warnOnTrainingSession(\r\n equipmentChangeState.TrainingSessionData,\r\n formRef.current?.values || initialValues,\r\n );\r\n }\r\n }\r\n let budget: IBudgetFilterDto | null = null;\r\n let userGroup: Entity | null = null;\r\n if (equipmentSettings?.BudgetVisible && !isEdit) {\r\n dispatch(\r\n actions.setAnyValue({\r\n fieldKey: 'Budget',\r\n fieldValue: equipmentChangeState.DefaultBudget,\r\n }),\r\n );\r\n if (\r\n fundingTypeVisible &&\r\n equipmentChangeState.DefaultBudget?.FundingTypeId !== undefined &&\r\n equipmentChangeState.DefaultBudget?.FundingTypeId !== null\r\n ) {\r\n dispatch(\r\n actions.setAnyValue({\r\n fieldKey: 'FundingType',\r\n fieldValue: getSingleInvoiceFundingType(\r\n equipmentChangeState.DefaultBudget?.FundingTypeId,\r\n ),\r\n }),\r\n );\r\n }\r\n budget = equipmentChangeState.DefaultBudget;\r\n if (\r\n ReservationUserGroupGroupByBudgetUserGroup &&\r\n equipmentChangeState.DefaultBudget !== null &&\r\n !!equipmentChangeState.DefaultBudget.UserGroupId\r\n ) {\r\n dispatch(\r\n actions.setAnyValue({\r\n fieldKey: 'ADGroup',\r\n fieldValue: {\r\n Id: equipmentChangeState.DefaultBudget.UserGroupId,\r\n Name: equipmentChangeState.DefaultBudget.UserGroupName,\r\n },\r\n }),\r\n );\r\n userGroup = {\r\n Id: equipmentChangeState.DefaultBudget.UserGroupId,\r\n Name: equipmentChangeState.DefaultBudget.UserGroupName ?? '',\r\n };\r\n }\r\n }\r\n if (equipmentChangeState.StatusChange !== null) {\r\n dispatch(\r\n actions.setAnyValue({\r\n fieldKey: 'Status',\r\n fieldValue: getSingleReservationStatus(\r\n equipmentChangeState.StatusChange.Status,\r\n ),\r\n }),\r\n );\r\n dispatch(\r\n actions.setAnyValue({\r\n fieldKey: 'Tutoring',\r\n fieldValue: equipmentChangeState.StatusChange.Tutoring,\r\n }),\r\n );\r\n setCurrentStatus(equipmentChangeState.StatusChange.Status);\r\n }\r\n handleValidate(userGroup, budget);\r\n dispatch(actions.resetEquipmentChangeState());\r\n }\r\n }, [\r\n ReservationUserGroupGroupByBudgetUserGroup,\r\n actions,\r\n addCustomFormErrors,\r\n addOtheMessages,\r\n dispatch,\r\n equipmentChangeState,\r\n equipmentSettings,\r\n formRef,\r\n fundingTypeVisible,\r\n handleValidate,\r\n initialValues,\r\n isEdit,\r\n warnOnTrainingSession,\r\n ]);\r\n const foobar = React.useMemo(() => {\r\n return getTutoringRequired({\r\n equipmentSettings,\r\n globalSettings,\r\n reservationSettings,\r\n assistedTrainingData,\r\n isTrainingSignUp,\r\n });\r\n }, [\r\n equipmentSettings,\r\n globalSettings,\r\n reservationSettings,\r\n assistedTrainingData,\r\n isTrainingSignUp,\r\n ]);\r\n\r\n const computedSchema = React.useMemo(() => {\r\n const reservationSchema: Yup.SchemaOf = Yup.object(\r\n {\r\n Id: Yup.number().notRequired().default(-1),\r\n FatherId: Yup.number().optional().nullable(),\r\n EquipmentsData: Yup.array()\r\n .of(Yup.mixed() as Yup.SchemaOf)\r\n .min(1)\r\n .label(t(translations.OnlineService) as string)\r\n .required(t(translations.err_OnlineServiceFieldRequired) as string)\r\n .test(\r\n 'assembly',\r\n t(\r\n translations.AssemblyPartReservationCanNotBeUpdatedDirectly,\r\n ) as string,\r\n\r\n (value, context) => {\r\n const isValid = (value as IReservationEquipmentDto[]).every(\r\n service => service.AssemblyId === null,\r\n );\r\n return isValid;\r\n },\r\n ),\r\n Budget: Yup.mixed()\r\n .label(t(translations.BudgetNumber) as string)\r\n .nullable(true),\r\n BudgetExperiment: Yup.mixed()\r\n .label(t(translations.BudgetExperiment) as string)\r\n .nullable(true)\r\n .when('Budget', {\r\n is: (Budget: IBudgetFilterDto | null) =>\r\n equipmentSettings?.BudgetVisible !== false &&\r\n equipmentSettings?.budgetExperimentVisible &&\r\n Budget !== null &&\r\n Budget.HideExperiments !== true,\r\n then: schema =>\r\n schema.required(\r\n t(translations.res_err_BudgetExperimentRequired) as string,\r\n ),\r\n otherwise: schema => schema,\r\n }),\r\n\r\n TrainingSession: Yup.mixed().label(\r\n t(translations.TrainingSession) as string,\r\n ),\r\n StaffUser: Yup.mixed()\r\n .label(t(translations.StaffUser) as string)\r\n .nullable(true),\r\n BookedBy: Yup.mixed()\r\n .label(t(translations.User) as string)\r\n .required(() => t(translations.err_UserFieldRequired) as string),\r\n Remarks: Yup.string()\r\n .nullable()\r\n .label(t(translations.Remarks) as string),\r\n FullDayReservation: Yup.boolean().required(),\r\n StartTime: Yup.date()\r\n .default(newDate())\r\n .label(t(translations.StartTime) as string)\r\n .required(t(translations._errStartTimeRequired) as string),\r\n EndTime: Yup.date()\r\n .label(t(translations.EndTime) as string)\r\n .required(t(translations._errEndTimeRequired) as string)\r\n .test(\r\n 'min',\r\n t(translations.err_EndTimeLowerThanStartTime) as string,\r\n (value, context) => {\r\n let start = (context as any).from[0].value.StartTime;\r\n let end = (context as any).from[0].value.EndTime;\r\n if (\r\n start === null ||\r\n start === undefined ||\r\n value === null ||\r\n value === undefined\r\n ) {\r\n return true;\r\n }\r\n let s = dateUtils.dateOrStringToDate(start);\r\n let e = dateUtils.dateOrStringToDate(end);\r\n if (e.valueOf() < s.valueOf()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n ),\r\n Tutoring: Yup.boolean()\r\n .label(t(translations.TutoringAssistedReservation) as string)\r\n .default(false),\r\n TutorName: Yup.string()\r\n .label(t(translations.TutorName) as string)\r\n .nullable(true),\r\n Status: Yup.mixed()\r\n .label(t(translations.OrderStatus) as string)\r\n .required(),\r\n TrainingSignUp: Yup.boolean()\r\n .default(false)\r\n .label(t(translations.TrainingSignUp) as string),\r\n ADGroup: Yup.mixed()\r\n .label(t(translations.UserGroup) as string)\r\n .nullable(true),\r\n DisplayName: Yup.string()\r\n .label(t(translations.Name) as string)\r\n .nullable(),\r\n InstituteProject: Yup.mixed()\r\n .label(t(translations.InstituteProject) as string)\r\n .nullable(true),\r\n ExperimentEln: Yup.mixed()\r\n .label(t(translations.Experiment) as string)\r\n .nullable(true),\r\n WorkflowBooking: Yup.mixed()\r\n .label(t(translations.WorkflowBooking) as string)\r\n .nullable(true),\r\n ExternalCustomer: Yup.mixed()\r\n .label(t(translations.ExternalCustomer) as string)\r\n .nullable(true),\r\n FundingType: Yup.mixed()\r\n .label(t(translations.FundingType) as string)\r\n .nullable(true),\r\n PurchaseOrder: Yup.string()\r\n .label(t(translations.PurchaseOrder) as string)\r\n .nullable(true)\r\n .min(globalSettings.purchaseOrderLengthSetting ?? 0)\r\n .when('Budget', {\r\n is: budget => {\r\n const result =\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n (budget as IBudgetFilterDto)?.PurchaseOrderOptionId ===\r\n PurchaseOrderOptions.Mandatory;\r\n return result;\r\n },\r\n then: schema => schema.required(),\r\n }),\r\n\r\n Reference: Yup.string()\r\n .label(t(translations.Reference) as string)\r\n .nullable(true),\r\n PartialAttendance: Yup.boolean()\r\n .default(false)\r\n .label(t(translations.Attendance) as string),\r\n PartialAttendanceStart: Yup.number()\r\n .label(t(translations.PartialAttendanceStartDuration) as string)\r\n .nullable(true),\r\n PartialAttendanceEnd: Yup.number()\r\n .label(t(translations.PartialAttendanceEndDuration) as string)\r\n .nullable(true),\r\n TransferredTo: Yup.mixed()\r\n .label(t(translations.TransferReservation) as string)\r\n .nullable(true),\r\n SampleRunId: Yup.number()\r\n .label(t(translations.SampleRunId) as string)\r\n .nullable(true),\r\n AccServices: Yup.array()\r\n .of(Yup.mixed() as Yup.SchemaOf)\r\n .when('EquipmentsData', {\r\n is: (value: ReservationDetailsState) =>\r\n globalSettings.accServicesEnabled &&\r\n (equipmentSettings?.HasAccServices ||\r\n value?.EquipmentsData?.some(\r\n instrument =>\r\n (instrument as IReservationEquipmentDto)?.AccServices\r\n ?.length > 0,\r\n )) &&\r\n !isTrainingSignUp,\r\n then: schema =>\r\n schema\r\n .min(\r\n 1,\r\n t(translations.err_AccompaniedService_required) as string,\r\n )\r\n .required(\r\n t(translations.err_AccompaniedService_required) as string,\r\n ),\r\n })\r\n .label(t(translations.AccompaniedService) as string),\r\n FormValues: Yup.array().of(formValueSchema),\r\n CollaboratedUsers: Yup.array()\r\n .of(EntityStringSchema)\r\n .label(t(translations.CollaboratorUsers) as string),\r\n SampleIds: Yup.array()\r\n .of(Yup.number().required())\r\n .label(t(translations.SampleIds) as string),\r\n OptionalsEquipments: Yup.array().of(CheckEntityShema),\r\n WaitingTransferApproval: Yup.boolean().default(false),\r\n TransferFromId: Yup.number().nullable(true).default(null),\r\n // not really needed on the form\r\n AssemblyParts: Yup.mixed().nullable().optional(),\r\n },\r\n );\r\n if (equipmentSettings?.BudgetVisible === true) {\r\n reservationSchema.fields.Budget.withMutation(schema =>\r\n schema.required(t(translations.BudgetIsRequired) as string),\r\n );\r\n }\r\n\r\n if (fundingTypeVisible) {\r\n reservationSchema.fields.FundingType.withMutation(schema =>\r\n schema.required(t(translations.FundingTypeRequired) as string),\r\n );\r\n }\r\n if (staffRequired) {\r\n reservationSchema.fields.StaffUser.withMutation(schema =>\r\n schema.required(t(translations.StaffUserRequired) as string),\r\n );\r\n }\r\n if (workflowBookingVisible) {\r\n reservationSchema.fields.WorkflowBooking.withMutation(schema =>\r\n schema.required(t(translations.err_WorkflowBookingRequired) as string),\r\n );\r\n }\r\n return reservationSchema;\r\n }, [\r\n equipmentSettings?.BudgetVisible,\r\n equipmentSettings?.HasAccServices,\r\n equipmentSettings?.budgetExperimentVisible,\r\n fundingTypeVisible,\r\n globalSettings.accServicesEnabled,\r\n globalSettings.purchaseOrderBudgetEnabled,\r\n globalSettings.purchaseOrderLengthSetting,\r\n isTrainingSignUp,\r\n newDate,\r\n staffRequired,\r\n t,\r\n workflowBookingVisible,\r\n ]);\r\n\r\n const processing = useSelector(selectReservationProcessing);\r\n const [prevProcessing, setPrevProcessing] = React.useState(processing);\r\n\r\n const handleFullDayReservationChange = (\r\n event: React.ChangeEvent,\r\n ) => {\r\n // todo: move this to a callback with the formik.values accessible there instead of this mess\r\n const startTime = formRef.current?.values.StartTime;\r\n const endTime = formRef.current?.values.EndTime;\r\n if (\r\n startTime !== null &&\r\n endTime !== null &&\r\n startTime !== undefined &&\r\n endTime !== undefined\r\n ) {\r\n const fullDayReservation = event.target.checked === true;\r\n if (fullDayReservation) {\r\n const currentPeriod = {\r\n start_date: dateUtils.dateOrStringToDate(startTime),\r\n end_date: dateUtils.dateOrStringToDate(endTime),\r\n };\r\n /**\r\n * When full day reservation is being checked, the end time needs to be moved to the end of the day, start - to the start of the day\r\n */\r\n const adjusted = adjustSchedulerEventTimes(\r\n currentPeriod,\r\n fullDayReservation,\r\n );\r\n const partialReservationDetailsState: Pick<\r\n ReservationDetailsState,\r\n 'StartTime' | 'EndTime'\r\n > = {\r\n /**\r\n * TODO: adjust the starttime of the reservation. Currently setting the startTime messes up the end time also\r\n * e.g.\r\n * {start:'2023-08-02T11:05:00', end:'2023-08-02T12:05:00'} -> (original)\r\n * {start:'2023-08-02T00:00:00', end:'2023-08-03T00:00:00'} -> (in setValues)\r\n * {start:'2023-08-02T00:00:00', end:'2023-08-03T22:27:12Z'} -> (final formik Values)\r\n */\r\n StartTime: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(adjusted.start_date),\r\n ),\r\n EndTime: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(adjusted.end_date),\r\n ),\r\n };\r\n formRef.current?.setValues(values => ({\r\n ...values,\r\n ...partialReservationDetailsState,\r\n }));\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n if (allIsValid) {\r\n console.log(reservationSettings);\r\n formikHelpers.validateForm(values).then(responseErrors => {\r\n if (!isEmpty(responseErrors)) {\r\n formikHelpers.setSubmitting(false);\r\n console.debug('errors', responseErrors);\r\n } else if (\r\n errorMessages.length > 0 &&\r\n !(\r\n // errorMessages might contain permissions error. This prevented submitting \"byApproval\" override.\r\n (\r\n reservationSettings?.UserRequestedByApproval === true &&\r\n errorMessages.every(errorMessage =>\r\n permissionErrors.includes(errorMessage),\r\n )\r\n )\r\n )\r\n ) {\r\n console.debug('errors', errorMessages);\r\n formikHelpers.setSubmitting(false);\r\n } else if (offlineServicesErrors.length > 0) {\r\n formikHelpers.setSubmitting(false);\r\n dispatch(\r\n appActions.addNotification({\r\n variant: 'error',\r\n message: '',\r\n messageType: SnackBarMessageType.messageList,\r\n messageTypeProps: {\r\n messages: offlineServicesErrors.map(f => {\r\n return {\r\n Id: f.id.toString(),\r\n message: f.error,\r\n } as SingleMessagesProps;\r\n }),\r\n } as ListMessagesProps,\r\n }),\r\n );\r\n if (submitCalculateCredit) {\r\n dispatch(actions.setSubmitCalculateCredit(false));\r\n }\r\n } else {\r\n if (submitCalculateCredit) {\r\n handleSubmit(values);\r\n } else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n dispatch(actions.resetDetailsErrorsState());\r\n if (submitting) {\r\n setSubmitting(undefined);\r\n }\r\n handleSubmit(values);\r\n }\r\n }\r\n });\r\n } else {\r\n formikHelpers.setSubmitting(false);\r\n }\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formik.errors) {\r\n console.log('Reservation errors', formik.errors);\r\n }\r\n\r\n /**\r\n * shared function to disable fields. Additionallyto be disabled during state transitions and readonly state - disablses the most of the fields based on the \"editable\" property (except the end time in reservation extension)\r\n * */\r\n const fieldDisabled = (x = editable) =>\r\n formik.isSubmitting || readonly || (isEdit && !(x === true));\r\n\r\n // this one resets the formik's isSubmitting property once reservation's processing finishes\r\n // reduxe reservation processing transitions from\r\n if (processing !== prevProcessing) {\r\n setPrevProcessing(processing);\r\n if (\r\n processing === false &&\r\n prevProcessing === true &&\r\n formik.isSubmitting === true\r\n ) {\r\n formik.setSubmitting(false);\r\n }\r\n }\r\n\r\n const reservationCollaboratorsFilter =\r\n getReservationCollaboratorsFilter(equipmentSettings, formik);\r\n const staffUserPickerPredicates =\r\n (equipmentSettings?.StaffUserSelection?.length || 0) > 0\r\n ? [\r\n `(Id in ${quoteODataValue(\r\n equipmentSettings?.StaffUserSelection.filter(f =>\r\n (\r\n formik.values\r\n .EquipmentsData as IReservationEquipmentDto[]\r\n ).some(c =>\r\n c.StaffUserSelection.some(u => u.Id === f.Id),\r\n ),\r\n ) || [],\r\n )})`,\r\n ]\r\n : [\r\n `(IsLabTech or isEquipmentAdmin or isGroupAdmin) and ${(\r\n formik.values.EquipmentsData as IReservationEquipmentDto[]\r\n )\r\n ?.map(\r\n equipment =>\r\n `(Services/any(s:s/Id eq ${equipment.Id}) or (${equipment.ServiceGroupId} in ServiceGroupIds)`,\r\n )\r\n .join(' and ')})`,\r\n ];\r\n\r\n const handleAccServiceChange = value => {\r\n const tutoringRequired = foobar(\r\n formik.values.EquipmentsData,\r\n value,\r\n );\r\n if (tutoringRequired !== undefined) {\r\n formik.setFieldValue('Tutoring', tutoringRequired);\r\n formik.setFieldValue(\r\n 'Status',\r\n getSingleReservationStatus(\r\n tutoringRequired\r\n ? ReservationStatus.Pending\r\n : ReservationStatus.Approved,\r\n ),\r\n );\r\n }\r\n setAccServiceChanged(true);\r\n };\r\n const tutoringEnabled =\r\n foobar(formik.values.EquipmentsData, formik.values.AccServices) ===\r\n undefined;\r\n return (\r\n \r\n \r\n \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n formik.setFieldValue('ADGroup', value)\r\n }\r\n fundingTypeVisible={fundingTypeVisible}\r\n setFundingType={value =>\r\n formik.setFieldValue('FundingType', value)\r\n }\r\n values={formik.values}\r\n handleValidate={handleValidate}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n {(!print || (!customFormOnlyPrinted && print)) && (\r\n \r\n \r\n f.Id,\r\n )\r\n : [],\r\n )}\r\n name=\"EquipmentsData\"\r\n id=\"reservation_EquipmentsData\"\r\n label={t(translations.OnlineService)}\r\n placeholder={t(translations.PleaseSelectServices)}\r\n disabled={\r\n fieldDisabled() ||\r\n (isEdit && !allowEditMultipleEquipments)\r\n }\r\n onChange={() => setServiceChanged(true)}\r\n onChipClick={onEquipmentClicked}\r\n multiple={\r\n globalSettings.multipleInstrumentsEnabled &&\r\n !trainingSessionVisible\r\n }\r\n autoExpand={\r\n 'MandatoriesEquipments,OptionalsEquipments,AccServices,OfflineServices,StaffUserSelection'\r\n }\r\n fullWidth\r\n />\r\n {globalSettings.AssemblyPartsEnabled && (\r\n \r\n )}\r\n \r\n {globalSettings.accServicesEnabled &&\r\n equipmentSettings?.HasAccServices &&\r\n !isTrainingSignUp && (\r\n \r\n f.Id),\r\n )}\r\n name=\"AccServices\"\r\n id=\"reservation_AccServices\"\r\n label={t(translations.AccompaniedService)}\r\n placeholder={t(\r\n translations.PleaseSelectAnAccompaniedService,\r\n )}\r\n disabled={fieldDisabled()}\r\n onChange={handleAccServiceChange}\r\n multiple={\r\n equipmentSettings.HasAccServices &&\r\n !equipmentSettings.AllowOneAccSerOnly\r\n }\r\n fullWidth\r\n />\r\n \r\n )}\r\n {mandatoryServices.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!!reservationSettings?.OptionalsEquipments &&\r\n !isEdit &&\r\n reservationSettings.OptionalsEquipments.length >\r\n 0 && (\r\n \r\n \r\n {\r\n setOptionalChanged(() => true);\r\n }}\r\n disabled={formik.isSubmitting || readonly}\r\n label={t(\r\n translations.AddingsOptionalEquipments,\r\n )}\r\n size=\"small\"\r\n />\r\n \r\n )}\r\n {trainingSessionVisible && (\r\n \r\n setTrainingSessionChanged(true)}\r\n predicates={ReservRelatedFilter(\r\n formik.values.EquipmentsData[0].Id,\r\n )}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {workflowBookingVisible && (\r\n \r\n \r\n \r\n )}\r\n {!trainingSessionVisible && (\r\n \r\n \r\n \r\n \r\n \r\n setStartTimeChanged(true)\r\n }\r\n onEndTimeChange={() => setEndTimeChanged(true)}\r\n startTimeLabel={t(translations.From)}\r\n endTimeLabel={t(translations.To)}\r\n />\r\n \r\n )}\r\n\r\n {userGroupVisible ? (\r\n \r\n setUserGroupChanged(true)}\r\n fullWidth\r\n />\r\n \r\n ) : (\r\n \r\n \r\n {formik.values.ADGroup !== undefined &&\r\n formik.values.ADGroup !== null\r\n ? formik.values.ADGroup.Name\r\n : (t(translations.NA) as string)}\r\n \r\n }\r\n />\r\n \r\n )}\r\n {userVisible ? (\r\n \r\n {\r\n return {\r\n Id: f.Id,\r\n Name: f.Name,\r\n ServiceTypeId: 1,\r\n ServiceGroupId: f.ServiceGroupId,\r\n HideProject: f.HideProjects,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n globalSettings.budgetExperimentModuleEnabled,\r\n formik.values.ADGroup?.Id,\r\n formik.values.Budget?.Id,\r\n globalSettings.defaultBudgetEnabled,\r\n (formik.values.Budget as IBudgetFilterDto)\r\n ?.IsDefault,\r\n )}\r\n label={t(translations.User)}\r\n disabled={fieldDisabled()}\r\n onChange={value => {\r\n setBookedByChanged(true);\r\n }}\r\n fullWidth\r\n id=\"reservation_BookedBy\"\r\n />\r\n \r\n ) : (\r\n \r\n \r\n {userProfileVisible &&\r\n formik.values.BookedBy !== null && (\r\n \r\n )}\r\n {/* {formik.values.BookedBy !== null\r\n ? formik.values.BookedBy.Name\r\n : (t(translations.NA) as string)} */}\r\n \r\n }\r\n />\r\n \r\n )}\r\n {staffVisible && (\r\n \r\n 0\r\n ? 'full'\r\n : 'admin'\r\n }\r\n predicates={staffUserPickerPredicates}\r\n label={t(translations.StaffUser)}\r\n disabled={fieldDisabled()}\r\n onChange={() => setStaffChanged(true)}\r\n id=\"reservation_StaffUser\"\r\n fullWidth\r\n />\r\n \r\n )}\r\n {equipmentSettings?.BudgetVisible &&\r\n fundingTypeVisible && (\r\n \r\n {\r\n formik.setValues(\r\n produce(values => {\r\n // clear budget selection when funding type is changed to an incompatible value\r\n // for example, if an external budget is selected, and funding type is changed to internal - budget should be reset\r\n if (\r\n (value as Entity | null)?.Id !==\r\n (values.Budget as IBudgetFilterDto)\r\n ?.FundingTypeId\r\n ) {\r\n values.Budget = null;\r\n }\r\n values.FundingType = value;\r\n }),\r\n );\r\n }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {equipmentSettings?.BudgetVisible && (\r\n <>\r\n \r\n {\r\n return {\r\n Id: f.Id,\r\n Name: f.Name,\r\n ServiceTypeId: 1,\r\n ServiceGroupId: f.ServiceGroupId,\r\n HideProject: f.HideProjects,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n startTime: dateUtils.dateOrStringToDate(\r\n formik.values.StartTime,\r\n ),\r\n endTime: dateUtils.dateOrStringToDate(\r\n formik.values.EndTime,\r\n ),\r\n user: isServiceAdmin\r\n ? formik.values.BookedBy === null\r\n ? undefined\r\n : formik.values.BookedBy.Id\r\n : user?.Id,\r\n defaultBudgetEnabled:\r\n globalSettings.defaultBudgetEnabled,\r\n userDefaultBudgetEnabled:\r\n globalSettings.userDefaultBudgetEnabled,\r\n hideNonDefaultBudgets:\r\n globalSettings.hideNonDefaultBudgets,\r\n // funding type is set to Internal by default even if it's not in use\r\n fundingType: fundingTypeVisible\r\n ? formik.values.FundingType\r\n : null,\r\n })}\r\n label={t(translations.BudgetNumber)}\r\n onChange={() => {\r\n setBudgetChanged(true);\r\n formik.setFieldValue('CollaboratedUsers', []);\r\n }}\r\n disabled={fieldDisabled()}\r\n useSearchOrPredicate={\r\n globalSettings.hideNonDefaultBudgets\r\n }\r\n fullWidth\r\n />\r\n \r\n {budgetExperimentVisible &&\r\n !(\r\n (formik.values.Budget as IBudgetFilterDto)\r\n ?.HideExperiments ?? true\r\n ) && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {globalSettings.purchaseOrderBudgetEnabled &&\r\n equipmentSettings?.BudgetVisible &&\r\n ((formik.values.Budget as IBudgetFilterDto)\r\n ?.PurchaseOrderOptionId ??\r\n PurchaseOrderOptions.Hidden) !==\r\n PurchaseOrderOptions.Hidden && (\r\n \r\n {\r\n if (\r\n (formik.values.Budget as IBudgetFilterDto)\r\n ?.PurchaseOrderOptionId ===\r\n PurchaseOrderOptions.Mandatory\r\n ) {\r\n setPurchaseOrderChanged(true);\r\n }\r\n }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {reservationCollaboratorsVisible && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {globalSettings.resCustomFormEnabled &&\r\n !shortView &&\r\n !!reservationSettings &&\r\n (reservationSettings.CustomForms?.length > 0 ||\r\n (isEdit && formik.values.FormValues?.length > 0)) && (\r\n \r\n 0\r\n ? reservationSettings.CustomForms\r\n : []\r\n }\r\n readonly={readonly}\r\n isAdmin={isAdmin}\r\n customFormRef={customFormRef}\r\n formIsValid={validateForms}\r\n disabled={\r\n formik.isSubmitting ||\r\n (isEdit && !editable) ||\r\n readonly\r\n }\r\n validationEnabled={!savedForLater}\r\n saveFormValues={(\r\n values: IFormValueDto[],\r\n files: IFormFileValue[],\r\n originalFiles: IFormFileValue[],\r\n ) => {\r\n formik.setFieldValue(\r\n 'FormValues',\r\n updateFormValues(\r\n formik.values.FormValues,\r\n values,\r\n ),\r\n false,\r\n );\r\n setCurrentFormFiles(files);\r\n setOriginalFormFiles(originalFiles);\r\n }}\r\n formValues={formik.values.FormValues}\r\n />\r\n \r\n )}\r\n {isEdit && !shortView && allowOngoingModifications && (\r\n \r\n )}\r\n \r\n\r\n \r\n {(!print || (!customFormOnlyPrinted && print)) && (\r\n \r\n {!shortView && (\r\n \r\n \r\n setStatusChanged(true)}\r\n fullWidth\r\n />\r\n \r\n \r\n )}\r\n {tutoringVisible && (\r\n \r\n setTutoringChanged(true)}\r\n />\r\n \r\n )}\r\n {!shortView && (\r\n \r\n {trainingSignUpVisible && (\r\n \r\n {\r\n setIsTrainingSignUp(!isTrainingSignUp);\r\n }}\r\n />\r\n \r\n )}\r\n \r\n )}\r\n\r\n {!customFormOnlyPrinted && print && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {!isEdit &&\r\n !formik.values.TrainingSignUp &&\r\n !globalSettings.hideRepetitiveReservations && (\r\n \r\n )}\r\n {globalSettings.ServiceRequestReservationEnabled &&\r\n isServiceAdmin &&\r\n isEdit && (\r\n \r\n \r\n \r\n )}\r\n {globalSettings.offlineServiceWithReservation &&\r\n !!reservationSettings &&\r\n (equipmentSettings?.OfflineServicesVisible ||\r\n (reservationSettings?.OfflineMandatory !== undefined &&\r\n reservationSettings?.OfflineMandatory?.length >\r\n 0)) && (\r\n \r\n \r\n \r\n )}\r\n\r\n {globalSettings.resCustomFormEnabled &&\r\n shortView &&\r\n !!reservationSettings &&\r\n (reservationSettings.CustomForms?.length > 0 ||\r\n (isEdit && formik.values.FormValues?.length > 0)) && (\r\n \r\n 0\r\n ? reservationSettings.CustomForms\r\n : []\r\n }\r\n readonly={readonly}\r\n isAdmin={isAdmin}\r\n customFormRef={customFormRef}\r\n formIsValid={validateForms}\r\n disabled={fieldDisabled()}\r\n validationEnabled={!savedForLater}\r\n saveFormValues={(\r\n values: IFormValueDto[],\r\n files: IFormFileValue[],\r\n originalFiles: IFormFileValue[],\r\n ) => {\r\n formik.setFieldValue(\r\n 'FormValues',\r\n updateFormValues(\r\n formik.values.FormValues,\r\n values,\r\n ),\r\n false,\r\n );\r\n setCurrentFormFiles(files);\r\n setOriginalFormFiles(originalFiles);\r\n }}\r\n formValues={formik.values.FormValues}\r\n />\r\n \r\n )}\r\n\r\n {formik.values.SampleRunId !== null &&\r\n formik.values.SampleRunId !== undefined && (\r\n \r\n \r\n {t(translations.SampleRunId)}: \r\n {formik.values.SampleRunId}\r\n \r\n \r\n )}\r\n {!print && (\r\n \r\n \r\n \r\n )}\r\n {isEdit && !!reservationSettings && !shortView && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import {\r\n IReservationEquipmentDto,\r\n ReservationDetailsState,\r\n ReservationSettingsState,\r\n ServiceSettingsState,\r\n UserTrainingReservationData,\r\n} from '../slice/types';\r\nimport { GlobalSettingsType } from '../components/useGlobalSettingsHook';\r\n\r\nexport function getTutoringRequired({\r\n equipmentSettings,\r\n globalSettings,\r\n reservationSettings,\r\n assistedTrainingData,\r\n isTrainingSignUp,\r\n}: {\r\n equipmentSettings?: Pick<\r\n ServiceSettingsState,\r\n 'IsEquipmentTutoring' | 'ForceTutoring' | 'IsAllAdmin'\r\n >;\r\n globalSettings: Pick<\r\n GlobalSettingsType,\r\n 'assistedReservationsEnabled' | 'tutoringModulesEnabled'\r\n >;\r\n reservationSettings?: Pick;\r\n assistedTrainingData: UserTrainingReservationData | null;\r\n isTrainingSignUp?: boolean;\r\n}) {\r\n console.debug('foo gett', assistedTrainingData);\r\n return (\r\n equipmentsData?: ReservationDetailsState['EquipmentsData'],\r\n accServices?: ReservationDetailsState['AccServices'],\r\n ) => {\r\n const isEquipmentTutoring = equipmentsData?.some(\r\n instrument =>\r\n (instrument as IReservationEquipmentDto).IsEquipmentTutoring,\r\n );\r\n\r\n if (!isEquipmentTutoring) {\r\n return false;\r\n }\r\n\r\n let tutoringAllowed =\r\n globalSettings.assistedReservationsEnabled &&\r\n globalSettings.tutoringModulesEnabled &&\r\n !isTrainingSignUp;\r\n\r\n if (!tutoringAllowed) {\r\n return false;\r\n }\r\n\r\n if (equipmentSettings?.IsAllAdmin === true) {\r\n return undefined;\r\n }\r\n\r\n let forceTutoring =\r\n equipmentsData?.some(\r\n instrument => (instrument as IReservationEquipmentDto).ForceTutoring,\r\n ) ||\r\n equipmentSettings?.ForceTutoring ||\r\n reservationSettings?.IsForceTutoring;\r\n var overrideTraining = accServices?.some(\r\n accService => accService.OverrideTraining,\r\n );\r\n if (!forceTutoring) {\r\n return undefined;\r\n }\r\n\r\n let hasValidTraining = overrideTraining\r\n ? false\r\n : assistedTrainingData === null\r\n ? false\r\n : assistedTrainingData.Equipments.some(f => f.RequiresAdminApproval)\r\n ? false\r\n : true;\r\n\r\n if (hasValidTraining) {\r\n return undefined;\r\n }\r\n return true;\r\n };\r\n}\r\n","import { FormikProps } from 'formik';\r\nimport { ReservationDetailsState, ServiceSettingsState } from '../slice/types';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\n\r\nexport function getReservationCollaboratorsFilter(\r\n equipmentSettings: ServiceSettingsState | undefined,\r\n formik: FormikProps,\r\n) {\r\n return [\r\n equipmentSettings?.BudgetVisible === true\r\n ? new Condition(\r\n 'Budgets',\r\n ODataOperators.Any,\r\n formik.values.Budget?.Id ?? 0,\r\n )\r\n : undefined,\r\n formik.values.BookedBy?.Id !== undefined\r\n ? new Condition(\r\n 'Id',\r\n ODataOperators.NotEquals,\r\n formik.values.BookedBy?.Id,\r\n )\r\n : undefined,\r\n ].filter(f => f !== undefined) as Condition[];\r\n}\r\n","import { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { UserTrainingReservationData } from '../slice/types';\r\nimport { translations } from 'locales/translations';\r\nimport { ActionButton } from 'app/components/BasicButtons/ActionButton';\r\nimport { DialogActionsRenderer } from 'app/components/BasicDialog/DialogActionsRender';\r\nimport { useDispatch } from 'react-redux';\r\nimport { TrainingDetailsProps } from 'app/pages/UserTrainings/TrainingDetailsPage/Details';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { ITrainingReservations } from 'app/pages/ReservationHistoryPage/ITrainingReservations';\r\nimport { ReservationsApi } from 'api/ReservationsApi';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { AxiosError } from 'axios';\r\nimport i18next from 'i18next';\r\n\r\nexport interface ApproveTrainingRecordsProps {\r\n show: boolean;\r\n data: UserTrainingReservationData;\r\n handleApproveOnce: () => void;\r\n handleEditAssisted: (p: TrainingDetailsProps, reset: boolean) => void;\r\n}\r\nexport function ApproveTrainingRecords(props: ApproveTrainingRecordsProps) {\r\n const { show, data, handleApproveOnce, handleEditAssisted } = props;\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const { actions: appSetActions } = useAppSettingsSlice();\r\n const { t } = useTranslation();\r\n const existingTrainings = React.useMemo(() => {\r\n return data.Equipments.filter(f => f.RequiresAdminApproval === true);\r\n }, [data.Equipments]);\r\n const servicesWithoutTraining = React.useMemo(() => {\r\n return data.Equipments.filter(f => f.TrainingRecordId === null);\r\n }, [data.Equipments]);\r\n\r\n //BKT-9144 Customer feedback UiO: Assisted: Toggle “DO NOT SHOW POP UP FOR APPROVING THE USER FOR GOOD/ CREATING TRAINING RECORD” to ON does not hide the pop up.\r\n //setting - DO NOT SHOW POP UP FOR APPROVING THE USER FOR GOOD/ CREATING TRAINING RECORD\r\n const showPopupAccordingToSetting = React.useMemo(() => {\r\n return !data.Equipments.every(f => f.NotShowPopup === true);\r\n }, [data.Equipments]);\r\n\r\n const showPopup = React.useMemo(() => {\r\n return (\r\n (!data.Equipments.every(f => f.NotShowPopup === true) &&\r\n existingTrainings.length > 0) ||\r\n servicesWithoutTraining.length > 0\r\n );\r\n }, [\r\n data.Equipments,\r\n existingTrainings.length,\r\n servicesWithoutTraining.length,\r\n ]);\r\n\r\n const handleEditClick = React.useCallback(() => {\r\n if (existingTrainings.length === 1) {\r\n handleEditAssisted(\r\n {\r\n id: (existingTrainings[0].TrainingRecordId ?? 0).toString(),\r\n equId: undefined,\r\n equIds: undefined,\r\n fatherId: undefined,\r\n rid: undefined,\r\n date: undefined,\r\n user: undefined,\r\n useSidePanel: true,\r\n } as TrainingDetailsProps,\r\n true,\r\n );\r\n } else {\r\n history.push(\r\n `/History?un=${data.UserName}&st=${dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(data.StartTime),\r\n )}&et=${dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(data.EndTime),\r\n )}`,\r\n );\r\n }\r\n }, [\r\n data.EndTime,\r\n data.StartTime,\r\n data.UserName,\r\n existingTrainings,\r\n handleEditAssisted,\r\n history,\r\n ]);\r\n const handleNweCreateClick = React.useCallback(() => {\r\n handleEditAssisted(\r\n {\r\n id: undefined,\r\n equId: undefined,\r\n equIds: data.Equipments.map(f => f.EquipmentId).join(','),\r\n fatherId: data.FatherId !== null ? data.FatherId.toString() : undefined,\r\n rid:\r\n data.FatherId !== null\r\n ? undefined\r\n : data.ReservationId !== null\r\n ? data.ReservationId.toString()\r\n : undefined,\r\n date: dateUtils.formatISO(dateUtils.dateOrStringToDate(data.StartTime)),\r\n user: data.UserName,\r\n useSidePanel: true,\r\n } as TrainingDetailsProps,\r\n true,\r\n );\r\n }, [\r\n handleEditAssisted,\r\n data.Equipments,\r\n data.FatherId,\r\n data.ReservationId,\r\n data.StartTime,\r\n data.UserName,\r\n ]);\r\n const handleCreateTrainings = React.useCallback(() => {\r\n const postData = servicesWithoutTraining.map(item => {\r\n return {\r\n BookedBy: data.UserName,\r\n ReservationId: data.ReservationId,\r\n EquipmentId: item.EquipmentId,\r\n StartTime: data.StartTime,\r\n TrainingLevelId: item.TrainingRecordId,\r\n };\r\n }) as ITrainingReservations[];\r\n (async () => {\r\n try {\r\n let trdata = await ReservationsApi.createTraining(postData);\r\n if (trdata.length > 0) {\r\n let success = t(translations.TrainingsCreatedSuccessfully) as string;\r\n dispatch(\r\n appSetActions.addNotification({\r\n variant: 'success',\r\n message: success.replace('{0}', trdata.length),\r\n key: 'training-created',\r\n }),\r\n );\r\n } else {\r\n let info = t(translations.TrainingsAlreadyExist) as string;\r\n dispatch(\r\n appSetActions.addNotification({\r\n variant: 'warning',\r\n message: info,\r\n key: 'training-warning',\r\n }),\r\n );\r\n }\r\n handleApproveOnce();\r\n } catch (error) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n dispatch(\r\n appSetActions.addNotification({\r\n variant: 'error',\r\n message: message,\r\n key: 'training-error',\r\n }),\r\n );\r\n }\r\n })();\r\n }, [\r\n appSetActions,\r\n data.ReservationId,\r\n data.StartTime,\r\n data.UserName,\r\n dispatch,\r\n handleApproveOnce,\r\n servicesWithoutTraining,\r\n t,\r\n ]);\r\n const actions: DialogActionsRenderer[] = React.useMemo(() => {\r\n let buttons: DialogActionsRenderer[] = [];\r\n buttons.push(() => (\r\n handleApproveOnce()}\r\n />\r\n ));\r\n if (existingTrainings.length > 0) {\r\n buttons.push(() => (\r\n handleEditClick()}\r\n />\r\n ));\r\n }\r\n buttons.push(() => (\r\n handleNweCreateClick()}\r\n />\r\n ));\r\n if (servicesWithoutTraining.length > 0) {\r\n buttons.push(() => (\r\n handleCreateTrainings()}\r\n />\r\n ));\r\n }\r\n return buttons;\r\n }, [\r\n existingTrainings,\r\n handleApproveOnce,\r\n handleCreateTrainings,\r\n handleEditClick,\r\n handleNweCreateClick,\r\n servicesWithoutTraining.length,\r\n t,\r\n ]);\r\n return (\r\n 0\r\n ? t(translations.This_user_already_has_a_valid_training)\r\n : t(translations.CreateNewTrainingRecord_YesNo)\r\n }\r\n maxWidth=\"md\"\r\n actions={actions}\r\n />\r\n );\r\n}\r\n","import { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { translations } from 'locales/translations';\r\nimport { FormFieldsSection, FormRow } from 'app/components/Forms/FormsLayout';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport {\r\n ServicesFilter,\r\n UserPicker,\r\n} from 'app/components/pickers/AutocompletePickers/UserPicker';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { Caption } from 'app/components/Typography';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { quoteODataValue } from 'api/odata/ODataFilter';\r\n\r\nexport interface TransferReservationProps {\r\n show: boolean;\r\n handleTransfer: (value: IUserFilterDto) => void;\r\n transferAllowedToGroup: boolean;\r\n services: IServiceTypeFilterDto[];\r\n adGroup?: string;\r\n budgetExpirementModuleEnabled?: boolean;\r\n trnsferSubmitted?: boolean;\r\n onClose: () => void;\r\n user?: AuthenticatedUser;\r\n}\r\n\r\nexport function TransferReservation(props: TransferReservationProps) {\r\n const {\r\n show,\r\n handleTransfer,\r\n transferAllowedToGroup,\r\n services,\r\n adGroup,\r\n budgetExpirementModuleEnabled,\r\n trnsferSubmitted,\r\n user,\r\n onClose,\r\n } = props;\r\n const { t } = useTranslation();\r\n const [trasferToUser, setTranferToUser] =\r\n React.useState(null);\r\n\r\n return (\r\n \r\n \r\n {t(translations.TransferReservation_info) as string}\r\n \r\n }\r\n >\r\n \r\n setTranferToUser(value)}\r\n value={trasferToUser}\r\n error={trasferToUser === null || trasferToUser === undefined}\r\n helperText={\r\n trasferToUser === null || trasferToUser === undefined\r\n ? (t(translations.err_UserFieldRequired) as string)\r\n : undefined\r\n }\r\n fullWidth\r\n selectArray={['Id', 'Name', 'UserGroups']}\r\n />\r\n \r\n \r\n \r\n }\r\n onConfirm={ev => {\r\n if (trasferToUser !== null) {\r\n handleTransfer(trasferToUser);\r\n }\r\n }}\r\n onCancel={() => onClose()}\r\n onClose={() => onClose()}\r\n maxWidth=\"sm\"\r\n />\r\n );\r\n}\r\n","import { IModificationsDto } from 'api/odata/generated/entities/IModificationsDto';\r\nimport { filterHandler } from 'app/components/BasicTable/UnconfigurableTable/FilterHandler';\r\nimport { UnconfigurableTable } from 'app/components/BasicTable/UnconfigurableTable/UnconfigurableTable';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useMemo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getModificationsColumns } from './Columns';\r\nimport { GetFilters } from './Filter';\r\n\r\nexport interface ReservationModificationsProps {\r\n resId: number;\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n}\r\nexport const ReservationModifications = ({\r\n resId,\r\n open,\r\n setOpen,\r\n}: ReservationModificationsProps) => {\r\n const { t } = useTranslation();\r\n const columns = useMemo(() => getModificationsColumns(t), [t]);\r\n const url = `/api/odata/v4/ModificationHistory/Reservations`;\r\n return (\r\n \r\n \r\n \r\n }\r\n onCancel={() => setOpen(false)}\r\n maxWidth=\"md\"\r\n />\r\n );\r\n};\r\n\r\nconst TTable = filterHandler(\r\n UnconfigurableTable,\r\n GetFilters,\r\n {\r\n isSidePanel: true,\r\n },\r\n);\r\n","import { IModificationsDto } from 'api/odata/generated/entities/IModificationsDto';\r\nimport { ODataOperators } from 'api/odata/ODataFilter';\r\nimport { GetPageFilters } from 'app/components/BasicTable/BasicFilter/GetPageFilters';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport DatesRangeFilter from 'app/components/BasicTable/Filters/DatesRangeFilter';\r\nimport {\r\n getDefaultFilterDatePeriod,\r\n presetDatesRangeToQueryString,\r\n} from 'app/components/BasicTable/types/FilterParam';\r\nimport { getPeriodTypesEntity } from 'app/components/DatePeriods';\r\nimport { translations } from 'locales/translations';\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\n\r\nexport const GetFilters: GetPageFilters =\r\n (t, appSettings, user, settings) => search => {\r\n const params = new URLSearchParams(search);\r\n const res: IFilterSettings[] = [\r\n {\r\n fieldName: 'Date',\r\n displayNameKey: translations.Period,\r\n operator: ODataOperators.Between,\r\n defaultValue: PresetDatesRange.fromPreset(\r\n getPeriodTypesEntity('ThisMonth'),\r\n ),\r\n value: getDefaultFilterDatePeriod('period', 'st', 'et', params),\r\n queryStringSerializer: presetDatesRangeToQueryString(\r\n 'period',\r\n 'st',\r\n 'et',\r\n ),\r\n component: DatesRangeFilter,\r\n urlKey: 'period',\r\n },\r\n ];\r\n return res;\r\n };\r\n","/**\r\n *\r\n * ReservationDetails\r\n *\r\n */\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {\r\n getSingleReservationStatus,\r\n IReservationEquipmentDto,\r\n RecurringReservationUpdateOptions,\r\n ReservationDetailsState,\r\n ReservationGlobalState,\r\n ReservationQueryStringParameters,\r\n TransferToReservation,\r\n} from './slice/types';\r\nimport { ReservationStatus } from 'api/odata/generated/enums/ReservationStatus';\r\nimport { useReservationSlice } from './slice';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectGlobalSetting,\r\n selectPublicUrl,\r\n} from 'app/slice/selectors';\r\nimport {\r\n selectAsyncChangeLoading,\r\n selectByApprovalErrors,\r\n selectMaxReservationComplexityValidationResult,\r\n selectCloneReservations,\r\n selectConfirmAssistedReservations,\r\n selectEquipmentChangeCompleted,\r\n selectEquipmentsSettings,\r\n selectSubmitCalculateCredit,\r\n selectIsEdit,\r\n selectProcessing,\r\n selectReservation,\r\n selectReservationCompleted,\r\n selectReservationHasError,\r\n selectReservationNotFound,\r\n selectReservationProcessing,\r\n selectReservationSettings,\r\n selectSavedOfflineServices,\r\n selectTransferProcessing,\r\n selectTransferReservation,\r\n selectTransferStepCompleted,\r\n selectTransferToUser,\r\n selectTransferWaitingApproval,\r\n selectUserCanRequestApproval,\r\n selectUserTrainingData,\r\n selectCalculateCreditState,\r\n selectShowConfirmPricing,\r\n} from './slice/selectors';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { translations } from 'locales/translations';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectHasNotSavedChanges,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { push } from 'connected-react-router';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { ReservationForm } from './ReservationForm';\r\nimport { selectRepetitiveData } from 'app/components/Forms/FormRepetitive/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport useGlobalSettingsHook from './components/useGlobalSettingsHook';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { ActionButton } from 'app/components/BasicButtons/ActionButton';\r\nimport {\r\n ApproveReservationButton,\r\n CancelReservationButton,\r\n CreateTrainingButton,\r\n SaveForLaterButton,\r\n SaveFormButton,\r\n TransferButton,\r\n} from './components/ReservationActions';\r\nimport { ApproveTrainingRecords } from './components/ApproveTrainingRecords';\r\nimport { TrainingDetailsProps } from 'app/pages/UserTrainings/TrainingDetailsPage/Details';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { WorkOrderDetailsProps } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { WorkOrderQueryStringParameters } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/types';\r\nimport { FormikProps } from 'formik';\r\nimport { TransferReservation } from './components/TransferReservation';\r\nimport { ReservationModifications } from './components/Modifications';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { Body, H3 } from 'app/components/Typography';\r\nimport {\r\n RenderPageType,\r\n SidePanelContentProps,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport {\r\n SwitchActionsProps,\r\n SwitchTarget,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/SwitchActions';\r\nimport { Entity } from 'types/common';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { tryParseBool, tryParseInt } from 'utils/string-utils';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { ErrorServices } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\nimport { CalculatePricing } from './components/CalculatePricing';\r\nimport { Alert } from '@material-ui/lab';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { LinkBehavior } from 'app/components/ExternalLink';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport { toLocationDescriptor } from 'app/components/BasicLinks/Link';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { IsReadOnlyUser } from 'app/permissions/WorkOrders/workOrdersPermissionUtils';\r\nimport { AssetPopUpProps } from 'app/pages/AssetPopUp';\r\nimport { ReferenceType } from 'enums/ReferenceType';\r\nimport { PrintToPDF } from 'app/components/PrintToPDF';\r\nimport { usePrintPDFSlice } from 'app/components/PrintToPDF/slice';\r\nimport { getPrintPDFDefaultSections } from './components/utils';\r\nimport styled from 'styled-components';\r\nimport { GetIsNotBillable } from './slice/getBudgetVisible';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\n\r\nexport interface ReservationDetailsProps\r\n extends SidePanelContentProps,\r\n CoverProps {\r\n queryParams: ReservationQueryStringParameters;\r\n useSwitchButtons?: boolean;\r\n onCloseReservation?: () => void;\r\n}\r\n\r\nexport const ReservationDetails = React.memo(function ReservationDetails(\r\n props: ReservationDetailsProps,\r\n) {\r\n const {\r\n queryParams,\r\n useSidePanel,\r\n useSwitchButtons,\r\n closeCover,\r\n isCover,\r\n onCloseReservation,\r\n } = props;\r\n\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const { actions } = useReservationSlice();\r\n\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n const { actions: printActions } = usePrintPDFSlice();\r\n const isMobile = DetectIsMobile();\r\n\r\n /// Refs ///\r\n const submitFormRef = React.useRef(null);\r\n const repetitiveFormRef = React.useRef(null);\r\n const customFormRef = React.useRef(null);\r\n const innerFormRef =\r\n React.useRef | null>(null);\r\n\r\n /// selectors ///\r\n const processing = useSelector(selectProcessing);\r\n const reservation = useSelector(selectReservation);\r\n const reservationId = reservation.data?.Id ?? tryParseInt(queryParams.id);\r\n const reservationSettings = useSelector(selectReservationSettings);\r\n const equipmentSettings = useSelector(selectEquipmentsSettings);\r\n const User = useSelector(selectAuthenticatedUser);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const repetitiveValues = useSelector(selectRepetitiveData);\r\n const actionCompleted = useSelector(selectReservationCompleted);\r\n const hasError = useSelector(selectReservationHasError);\r\n const reservationProcessing = useSelector(selectReservationProcessing);\r\n const confirmAssisted = useSelector(selectConfirmAssistedReservations);\r\n const assistedTrainingData = useSelector(selectUserTrainingData);\r\n const equipmentChangeCompleted = useSelector(selectEquipmentChangeCompleted);\r\n const transferProcessing = useSelector(selectTransferProcessing);\r\n const transferStepWaiting = useSelector(selectTransferWaitingApproval);\r\n const transferUser = useSelector(selectTransferToUser);\r\n const transferredForId = useSelector(selectTransferReservation);\r\n const transferStepCompleted = useSelector(selectTransferStepCompleted);\r\n const savedOfflineServices = useSelector(selectSavedOfflineServices);\r\n const {\r\n processing: creditProcessing,\r\n completed: creditCompleted,\r\n data: calculateCredit,\r\n } = useSelector(selectCalculateCreditState);\r\n const isCloned = useSelector(selectCloneReservations);\r\n const edit = useSelector(selectIsEdit);\r\n const asyncChangeLoading = useSelector(selectAsyncChangeLoading);\r\n const submitCalculateCredit = useSelector(selectSubmitCalculateCredit);\r\n const ByApprovalErrors = useSelector(selectByApprovalErrors);\r\n const userCanRequestApproval = useSelector(selectUserCanRequestApproval);\r\n const MaxReservationComplexityValidationResult = useSelector(\r\n selectMaxReservationComplexityValidationResult,\r\n );\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const reservationNotFound = useSelector(selectReservationNotFound);\r\n const showShortView = React.useMemo(() => {\r\n return isMobile || (useSidePanel && !sidePanelExpanded);\r\n }, [isMobile, sidePanelExpanded, useSidePanel]);\r\n const [print, setPrint] = React.useState(false);\r\n const [printExpanded, setPrintExpanded] = React.useState(false);\r\n const handlePrintToPDF = React.useCallback(() => {\r\n setPrint(true);\r\n if (!sidePanelExpanded) {\r\n dispatch(layoutActions.setExpanded(true));\r\n setPrintExpanded(true);\r\n }\r\n }, [dispatch, layoutActions, sidePanelExpanded]);\r\n const handleClosePrintToPDF = React.useCallback(() => {\r\n if (printExpanded) {\r\n dispatch(layoutActions.setExpanded(false));\r\n setPrintExpanded(false);\r\n }\r\n setPrint(false);\r\n }, [dispatch, layoutActions, printExpanded]);\r\n //cover\r\n // const [cover, setCover] = React.useState();\r\n const { cover, openPanel, closePanel, coverClosed, onCloseCover } =\r\n useSidePanelState(\r\n () => {\r\n if (confirmBeforeTransfer) {\r\n setShowTransfer(true);\r\n return false;\r\n } else {\r\n dispatch(actions.resetDetailsState());\r\n if (!!onCloseReservation) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n },\r\n () => {\r\n if (confirmBeforeTransfer) {\r\n setConfirmBeforeTransfer(false);\r\n }\r\n },\r\n useSidePanel,\r\n isCover,\r\n );\r\n /// Settings ///\r\n const globalSettings = useGlobalSettingsHook();\r\n /// Local State ///\r\n const [busy, setBusy] = React.useState(false);\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n const [requestCompleted, setRequestCompleted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [showConfirmRecurring, setShowConfirmRecurring] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [showConfirmAssisted, setShowConfirmAssisted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [createTrainingOpen, setCreateTrainingOpen] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [confirmBeforeTransfer, setConfirmBeforeTransfer] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [showTransfer, setShowTransfer] = React.useState(\r\n undefined,\r\n );\r\n const [showCalculateCredit, setShowCalculateCredit] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [confirmCloned, setConfirmCloned] = React.useState(\r\n undefined,\r\n );\r\n const [canceled, setCanceled] = React.useState(\r\n undefined,\r\n );\r\n const showConfirmPricing = useSelector(selectShowConfirmPricing);\r\n const [openModifications, setOpenModifications] =\r\n React.useState(false);\r\n const { newDate } = useSystemDate();\r\n /// Memo State ///\r\n const repeat = React.useMemo(() => {\r\n return edit && reservationSettings?.Repeat;\r\n }, [edit, reservationSettings]);\r\n const userReadOnly = IsReadOnlyUser(User);\r\n const IsAdmin = React.useMemo(() => {\r\n return (\r\n equipmentSettings?.IsAllAdmin ||\r\n (!!reservation &&\r\n !!reservation.data &&\r\n !!reservation.data.EquipmentsData &&\r\n User?.IsAllGroupOrLabTechAdmin(\r\n reservation?.data?.EquipmentsData.map(\r\n g => (g as IReservationEquipmentDto).ServiceGroupId,\r\n ),\r\n reservation?.data?.EquipmentsData.map(f => {\r\n return {\r\n Id: f.Id,\r\n Name: f.Name,\r\n ServiceTypeId: ServiceType.Online,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n )) ||\r\n false\r\n );\r\n }, [equipmentSettings?.IsAllAdmin, reservation, User]);\r\n const isOwner = React.useMemo(() => {\r\n return reservation?.data?.BookedBy?.Id === User?.Id;\r\n }, [User?.Id, reservation?.data?.BookedBy]);\r\n const isUserGroupCoordinator = React.useMemo(() => {\r\n return (\r\n User &&\r\n User.Roles.includes(Roles.UserGroupCoord) &&\r\n (edit\r\n ? reservation?.data?.ADGroup?.Id === User.ActiveUserGroup?.Id\r\n : true)\r\n );\r\n }, [User, edit, reservation?.data?.ADGroup?.Id]);\r\n const trainingSessionEnabled = React.useMemo(() => {\r\n return (\r\n globalSettings.trainingSessionEnabled &&\r\n !equipmentSettings?.HideTrainingSession\r\n );\r\n }, [\r\n equipmentSettings?.HideTrainingSession,\r\n globalSettings.trainingSessionEnabled,\r\n ]);\r\n const trainingSignUp = React.useMemo(() => {\r\n return (\r\n trainingSessionEnabled &&\r\n (reservation?.data?.TrainingSignUp ||\r\n innerFormRef.current?.values.TrainingSignUp)\r\n //&&\r\n // innerFormRef.current?.values.EquipmentsData.length === 1\r\n );\r\n }, [reservation?.data?.TrainingSignUp, trainingSessionEnabled]);\r\n const allowOngoingModifications = React.useMemo(() => {\r\n return (\r\n isOwner &&\r\n reservationSettings?.Ongoing &&\r\n equipmentSettings?.AllowModification\r\n );\r\n }, [\r\n equipmentSettings?.AllowModification,\r\n isOwner,\r\n reservationSettings?.Ongoing,\r\n ]);\r\n const editable = React.useMemo(() => {\r\n return (\r\n IsAdmin ||\r\n isUserGroupCoordinator ||\r\n (isOwner && reservationSettings?.FutureReservation) ||\r\n (reservationSettings?.Ongoing && allowOngoingModifications)\r\n );\r\n }, [\r\n allowOngoingModifications,\r\n IsAdmin,\r\n isUserGroupCoordinator,\r\n reservationSettings?.FutureReservation,\r\n reservationSettings?.Ongoing,\r\n isOwner,\r\n ]);\r\n const terminationEnabled = React.useMemo(() => {\r\n return (\r\n globalSettings.reservationTerminationEnabled &&\r\n reservationSettings?.Ongoing &&\r\n reservation?.data?.Status?.Id !== ReservationStatus.Cancelled &&\r\n reservation?.data?.Status?.Id !== ReservationStatus.CancelledByAdmin &&\r\n equipmentSettings?.AllowUsersToShortenReservations &&\r\n (IsAdmin || isOwner)\r\n );\r\n }, [\r\n IsAdmin,\r\n equipmentSettings?.AllowUsersToShortenReservations,\r\n globalSettings.reservationTerminationEnabled,\r\n isOwner,\r\n reservation?.data?.Status?.Id,\r\n reservationSettings?.Ongoing,\r\n ]);\r\n const allowSortenReservation = React.useMemo(() => {\r\n return globalSettings.reservationTerminationEnabled\r\n ? false\r\n : equipmentSettings?.AllowUsersToShortenReservations;\r\n }, [\r\n equipmentSettings?.AllowUsersToShortenReservations,\r\n globalSettings.reservationTerminationEnabled,\r\n ]);\r\n const timeEnabledForOwner = React.useMemo(() => {\r\n if (reservationSettings === undefined) {\r\n return false;\r\n }\r\n if (equipmentSettings === undefined) {\r\n return false;\r\n }\r\n return (\r\n reservationSettings.FutureReservation ||\r\n (reservationSettings.Ongoing &&\r\n (allowSortenReservation ||\r\n equipmentSettings.AllowModification ||\r\n equipmentSettings.AllowExtendReservation))\r\n );\r\n }, [equipmentSettings, reservationSettings, allowSortenReservation]);\r\n const timeEnabled = React.useMemo(() => {\r\n return (\r\n (IsAdmin || isUserGroupCoordinator || (isOwner && timeEnabledForOwner)) &&\r\n !reservationSettings?.TerminateReservation\r\n );\r\n }, [\r\n IsAdmin,\r\n isOwner,\r\n isUserGroupCoordinator,\r\n reservationSettings?.TerminateReservation,\r\n timeEnabledForOwner,\r\n ]);\r\n const canBeCanceled = React.useMemo(() => {\r\n return (\r\n edit &&\r\n editable &&\r\n reservation?.data?.Status?.Id !== ReservationStatus.Cancelled &&\r\n reservation?.data?.Status?.Id !== ReservationStatus.CancelledByAdmin\r\n );\r\n }, [edit, editable, reservation?.data?.Status?.Id]);\r\n const canBeApproved = React.useMemo(() => {\r\n return (\r\n edit &&\r\n editable &&\r\n ((reservation?.data?.Status?.Id === ReservationStatus.Pending &&\r\n IsAdmin) ||\r\n (reservation?.data?.Status?.Id === ReservationStatus.PendingCoord &&\r\n isUserGroupCoordinator))\r\n );\r\n }, [\r\n IsAdmin,\r\n edit,\r\n editable,\r\n isUserGroupCoordinator,\r\n reservation?.data?.Status?.Id,\r\n ]);\r\n const usageEnabled = React.useMemo(() => {\r\n return (\r\n edit &&\r\n (IsAdmin || isOwner) &&\r\n reservation?.data?.EquipmentsData?.some(\r\n f => (f as IReservationEquipmentDto).AutoMode === 1,\r\n )\r\n );\r\n }, [IsAdmin, edit, isOwner, reservation?.data?.EquipmentsData]);\r\n const canSaveForLater = React.useMemo(() => {\r\n return (\r\n globalSettings.draftReservationsEnabled &&\r\n equipmentSettings?.DraftSaveForLater &&\r\n (IsAdmin || isOwner) &&\r\n reservation?.data?.Status?.Id !== ReservationStatus.Cancelled &&\r\n reservation?.data?.Status?.Id !== ReservationStatus.CancelledByAdmin\r\n );\r\n }, [\r\n IsAdmin,\r\n equipmentSettings?.DraftSaveForLater,\r\n globalSettings.draftReservationsEnabled,\r\n isOwner,\r\n reservation?.data?.Status?.Id,\r\n ]);\r\n const reservationCanceled = React.useMemo(() => {\r\n return (\r\n (edit && reservation?.data?.Status?.Id === ReservationStatus.Cancelled) ||\r\n reservation?.data?.Status?.Id === ReservationStatus.CancelledByAdmin\r\n );\r\n }, [edit, reservation?.data?.Status?.Id]);\r\n const confirmPricingEnabled = useSelector(\r\n state =>\r\n tryParseBool(\r\n selectGlobalSetting(state, AllowedSettings.ConfirmPricing),\r\n ) ?? false,\r\n );\r\n const calculateButtonVisible = React.useMemo(() => {\r\n if (equipmentSettings === undefined) {\r\n return false;\r\n }\r\n const isNotBillable = GetIsNotBillable(\r\n {\r\n budgetModuleEnabled: globalSettings.budgetModuleEnabled,\r\n billingModuleEnabled: globalSettings.billingModuleEnabled,\r\n priceSheetPricing: globalSettings.priceSheetPricing,\r\n },\r\n [\r\n {\r\n Billable: equipmentSettings.Billable,\r\n BudgetsTurnedOn: equipmentSettings.BudgetsTurnedOn,\r\n ServiceTypeId: ServiceType.Online,\r\n },\r\n ],\r\n );\r\n const result = isNotBillable ?? globalSettings.showCalculatePrice;\r\n return result;\r\n }, [\r\n equipmentSettings,\r\n globalSettings.budgetModuleEnabled,\r\n globalSettings.showCalculatePrice,\r\n globalSettings.billingModuleEnabled,\r\n globalSettings.priceSheetPricing,\r\n ]);\r\n const not_restricted = React.useMemo(() => {\r\n if (edit) {\r\n let budget =\r\n reservation?.data?.Budget !== null &&\r\n reservation?.data?.Budget !== undefined\r\n ? reservation.data.Budget\r\n : null;\r\n let noInstumentRestricted = globalSettings.reservationRestricted\r\n ? IsAdmin || isUserGroupCoordinator || isOwner\r\n : globalSettings.userGroupReservationRestricted\r\n ? reservation?.data?.ADGroup?.Id === User?.ActiveUserGroup?.Id ||\r\n IsAdmin ||\r\n isUserGroupCoordinator ||\r\n isOwner\r\n : true;\r\n let confidential =\r\n ((!!reservation?.data?.BudgetExperiment &&\r\n reservation?.data?.BudgetExperiment !== null) ||\r\n globalSettings.confidentialBudgetsEnabled) &&\r\n !!reservation?.data?.Budget &&\r\n (budget === null\r\n ? false\r\n : (budget as IBudgetFilterDto).Confidential ?? false);\r\n let noBudgetRestricted = confidential ? IsAdmin || isOwner : true;\r\n\r\n return noInstumentRestricted && noBudgetRestricted;\r\n }\r\n\r\n return true;\r\n }, [\r\n IsAdmin,\r\n User?.ActiveUserGroup?.Id,\r\n edit,\r\n globalSettings.confidentialBudgetsEnabled,\r\n globalSettings.reservationRestricted,\r\n globalSettings.userGroupReservationRestricted,\r\n isOwner,\r\n isUserGroupCoordinator,\r\n reservation?.data?.ADGroup?.Id,\r\n reservation?.data?.Budget,\r\n reservation?.data?.BudgetExperiment,\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (!print && edit) {\r\n dispatch(printActions.setUseSections(true));\r\n dispatch(\r\n printActions.updateSections(\r\n getPrintPDFDefaultSections(\r\n t,\r\n globalSettings.ServiceRequestReservationEnabled && IsAdmin,\r\n (reservation?.data?.FormValues?.length ?? 0) > 0,\r\n ),\r\n ),\r\n );\r\n }\r\n }, [\r\n IsAdmin,\r\n dispatch,\r\n edit,\r\n globalSettings.ServiceRequestReservationEnabled,\r\n print,\r\n printActions,\r\n reservation?.data?.FormValues?.length,\r\n t,\r\n ]);\r\n const workOrderSwithProps = React.useMemo(() => {\r\n if (!edit) {\r\n let eqids = queryParams.selectedIds;\r\n let start = queryParams.Start;\r\n let end = queryParams.singleClick ? undefined : queryParams.End;\r\n let defaultMulti = globalSettings.multipleInstrumentsEnabled;\r\n if (reservation && reservation.data) {\r\n start = dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(reservation.data.StartTime),\r\n );\r\n end = queryParams.singleClick\r\n ? undefined\r\n : dateUtils.formatQueryStringDate(\r\n dateUtils.dateOrStringToDate(reservation.data.EndTime),\r\n );\r\n let firstInitilized = reservationSettings?.FirstInitEquipments ?? [];\r\n defaultMulti =\r\n globalSettings.multipleInstrumentsEnabled &&\r\n (reservation.data.EquipmentsData.length > 0 ||\r\n firstInitilized.length > 0);\r\n\r\n if (reservation.data.EquipmentsData.length > 0) {\r\n eqids = reservation.data.EquipmentsData.map(f => f.Id).join(',');\r\n } else if (firstInitilized.length > 0) {\r\n eqids = firstInitilized.map(f => f).join(',');\r\n }\r\n }\r\n\r\n let p = {\r\n queryParams: {\r\n eqid: eqids,\r\n down: 'true',\r\n offH: 'true',\r\n eStart: start,\r\n offStart: start,\r\n offEnd: end,\r\n defaultMulti: String(defaultMulti),\r\n source: queryParams.source,\r\n id: undefined,\r\n aType: undefined,\r\n title: undefined,\r\n sympt: undefined,\r\n aStatus: undefined,\r\n aStart: undefined,\r\n desc: undefined,\r\n assetId: undefined,\r\n reason: undefined,\r\n sid: undefined,\r\n } as WorkOrderQueryStringParameters,\r\n useSidePanel: true,\r\n useSwithButtons: useSwitchButtons,\r\n } as WorkOrderDetailsProps;\r\n return p;\r\n }\r\n return undefined;\r\n }, [\r\n edit,\r\n globalSettings.multipleInstrumentsEnabled,\r\n queryParams.End,\r\n queryParams.Start,\r\n queryParams.selectedIds,\r\n queryParams.singleClick,\r\n queryParams.source,\r\n reservation,\r\n reservationSettings?.FirstInitEquipments,\r\n useSwitchButtons,\r\n ]);\r\n const allowEditMultipleEquipments = React.useMemo(() => {\r\n return (\r\n globalSettings.multipleInstrumentsEnabled &&\r\n !trainingSignUp &&\r\n globalSettings.allowAddRemoveOnEditReservation\r\n );\r\n }, [\r\n globalSettings.allowAddRemoveOnEditReservation,\r\n globalSettings.multipleInstrumentsEnabled,\r\n trainingSignUp,\r\n ]);\r\n React.useEffect(() => {\r\n let active = firstLoad && !userReadOnly;\r\n // if (!reservation || !reservation.data) {\r\n\r\n // }\r\n if (globalSettings.loadCompleted && active) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.initReservation({\r\n query: queryParams,\r\n globalSettings: globalSettings,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n dispatch,\r\n firstLoad,\r\n globalSettings,\r\n queryParams,\r\n reservation,\r\n userReadOnly,\r\n ]);\r\n React.useEffect(() => {\r\n if (edit) {\r\n if (\r\n savedOfflineServices.length > 0 &&\r\n savedOfflineServices.some(f => f.Id < 1)\r\n ) {\r\n dispatch(layoutActions.setNotSavedChanges(true));\r\n }\r\n }\r\n }, [dispatch, edit, layoutActions, savedOfflineServices]);\r\n\r\n const handleCloselClick = React.useCallback(() => {\r\n if (useSidePanel) {\r\n if (!!onCloseReservation) {\r\n onCloseReservation();\r\n dispatch(actions.resetDetailsState());\r\n } else {\r\n closePanel({\r\n isCover: isCover || !!cover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n onClose: () => {\r\n dispatch(actions.resetDetailsState());\r\n },\r\n } as SidePanelCloseState);\r\n }\r\n } else {\r\n dispatch(push('/reservations'));\r\n }\r\n }, [\r\n actions,\r\n closePanel,\r\n cover,\r\n dispatch,\r\n hasChanges,\r\n isCover,\r\n onCloseReservation,\r\n useSidePanel,\r\n ]);\r\n\r\n const handleSaveClick = React.useCallback(\r\n (e: any) => {\r\n if (repeat) {\r\n setShowConfirmRecurring(true);\r\n } else {\r\n handleSubmitForm(e);\r\n }\r\n },\r\n [repeat],\r\n );\r\n\r\n const cancelReservation = React.useCallback(() => {\r\n let status = getSingleReservationStatus(\r\n ReservationStatus.Cancelled as number,\r\n );\r\n dispatch(actions.setAnyValue({ fieldKey: 'Status', fieldValue: status }));\r\n setCanceled(true);\r\n }, [actions, dispatch]);\r\n const approveReservation = React.useCallback(() => {\r\n let status = getSingleReservationStatus(\r\n ReservationStatus.Approved as number,\r\n );\r\n dispatch(actions.setAnyValue({ fieldKey: 'Status', fieldValue: status }));\r\n }, [actions, dispatch]);\r\n const draftReservation = React.useCallback(() => {\r\n let status = getSingleReservationStatus(ReservationStatus.Draft as number);\r\n dispatch(actions.extendReservationSettings({ SaveForLater: true }));\r\n dispatch(actions.setAnyValue({ fieldKey: 'Status', fieldValue: status }));\r\n }, [actions, dispatch]);\r\n const handleChangeStatus = React.useCallback(\r\n (event: any, status: ReservationStatus) => {\r\n if (status === ReservationStatus.Cancelled) {\r\n cancelReservation();\r\n } else if (status === ReservationStatus.Approved) {\r\n approveReservation();\r\n } else if (status === ReservationStatus.Draft) {\r\n draftReservation();\r\n }\r\n setTimeout(() => handleSaveClick(event), 10);\r\n },\r\n [approveReservation, cancelReservation, draftReservation, handleSaveClick],\r\n );\r\n const handleSubmitForm = (e: any) => {\r\n if (customFormRef.current) {\r\n customFormRef.current(e);\r\n setTimeout(() => {\r\n if (repetitiveFormRef.current) {\r\n repetitiveFormRef.current(e);\r\n }\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n }, 50);\r\n } else {\r\n if (repetitiveFormRef.current) {\r\n repetitiveFormRef.current(e);\r\n }\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n }\r\n };\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmit = React.useCallback(\r\n (\r\n values: ReservationDetailsState,\r\n customFormFiles: IFormFileValue[],\r\n originalFormFiles: IFormFileValue[],\r\n ) => {\r\n setBusy(true);\r\n if (submitCalculateCredit) {\r\n setShowCalculateCredit(true);\r\n let value = {\r\n details: values,\r\n settings: reservationSettings,\r\n customFormFiles: [],\r\n RepetitiveOptions: repetitiveValues,\r\n offlineServices: savedOfflineServices,\r\n } as ReservationGlobalState;\r\n dispatch(\r\n actions.createReservation({\r\n state: value,\r\n calcCredit: true,\r\n }),\r\n );\r\n } else {\r\n if (edit) {\r\n dispatch(\r\n actions.updateReservation({\r\n current: values,\r\n original: reservation.data || values,\r\n currentCustomFormFiles: customFormFiles,\r\n originalCustomFormFiles: originalFormFiles,\r\n offlineServices: savedOfflineServices,\r\n settings: reservationSettings,\r\n }),\r\n );\r\n } else {\r\n let value = {\r\n details: {\r\n ...values,\r\n SampleRunId: reservation.data?.SampleRunId,\r\n },\r\n settings: reservationSettings,\r\n customFormFiles: customFormFiles,\r\n RepetitiveOptions: repetitiveValues,\r\n offlineServices: savedOfflineServices,\r\n } as ReservationGlobalState;\r\n dispatch(\r\n actions.createReservation({\r\n state: value,\r\n calcCredit: undefined,\r\n }),\r\n );\r\n }\r\n }\r\n },\r\n [\r\n actions,\r\n dispatch,\r\n edit,\r\n submitCalculateCredit,\r\n repetitiveValues,\r\n reservation.data,\r\n reservationSettings,\r\n savedOfflineServices,\r\n ],\r\n );\r\n const [offlineServicesErrors, setOfflineServicesErrors] = React.useState<\r\n ErrorServices[]\r\n >([]);\r\n const handleSetError = React.useCallback(\r\n (error: ErrorServices) => {\r\n if (error.error !== undefined) {\r\n setOfflineServicesErrors([\r\n ...offlineServicesErrors.filter(f => f.id !== error.id),\r\n error,\r\n ]);\r\n } else {\r\n setOfflineServicesErrors([\r\n ...offlineServicesErrors.filter(f => f.id !== error.id),\r\n ]);\r\n }\r\n },\r\n [offlineServicesErrors],\r\n );\r\n const handleTerminate = React.useCallback(() => {\r\n dispatch(\r\n actions.setAnyValue({\r\n fieldKey: 'EndTime',\r\n fieldValue: dateUtils.formatISO(newDate()),\r\n }),\r\n );\r\n dispatch(\r\n actions.setAnyValue({\r\n fieldKey: 'Remarks',\r\n fieldValue: t(translations.AutoEndReservation_remarks) as string,\r\n }),\r\n );\r\n setTimeout(() => {\r\n dispatch(\r\n actions.updateReservation({\r\n current:\r\n innerFormRef?.current?.values ||\r\n reservation.data ||\r\n ({} as ReservationDetailsState),\r\n original: reservation.data || ({} as ReservationDetailsState),\r\n currentCustomFormFiles: [],\r\n originalCustomFormFiles: [],\r\n offlineServices: savedOfflineServices,\r\n settings: reservationSettings,\r\n terminate: true,\r\n }),\r\n );\r\n }, 10);\r\n }, [\r\n actions,\r\n dispatch,\r\n newDate,\r\n reservation.data,\r\n reservationSettings,\r\n savedOfflineServices,\r\n t,\r\n ]);\r\n //------ Confirm Repetitive Update/Delete handlers -------//\r\n const handleUpdateAllRecurrent = React.useCallback(\r\n (e: any) => {\r\n dispatch(\r\n actions.updateReservationSettings({\r\n RecurringUpdateOption: RecurringReservationUpdateOptions.All,\r\n }),\r\n );\r\n handleSubmitForm(e);\r\n setShowConfirmRecurring(false);\r\n setCanceled(undefined);\r\n },\r\n [actions, dispatch],\r\n );\r\n const handleUpdateFollowing = React.useCallback(\r\n (e: any) => {\r\n dispatch(\r\n actions.updateReservationSettings({\r\n RecurringUpdateOption: RecurringReservationUpdateOptions.Following,\r\n }),\r\n );\r\n handleSubmitForm(e);\r\n setShowConfirmRecurring(false);\r\n setCanceled(undefined);\r\n },\r\n [actions, dispatch],\r\n );\r\n const handleUpdateJustOne = React.useCallback(\r\n (e: any) => {\r\n dispatch(\r\n actions.updateReservationSettings({\r\n RecurringUpdateOption:\r\n RecurringReservationUpdateOptions.CurrentReservation,\r\n }),\r\n );\r\n handleSubmitForm(e);\r\n setShowConfirmRecurring(false);\r\n setCanceled(undefined);\r\n },\r\n [actions, dispatch],\r\n );\r\n const assistedApproveOnse = React.useCallback(() => {\r\n setShowConfirmAssisted(false);\r\n dispatch(actions.resetAssisteTrainingData());\r\n dispatch(layoutActions.setRefreshTable(true));\r\n if (!isCloned) {\r\n handleCloselClick();\r\n }\r\n }, [actions, dispatch, handleCloselClick, isCloned, layoutActions]);\r\n const handleByApprovalConfirm = React.useCallback(\r\n (e: any) => {\r\n dispatch(\r\n actions.updateReservationSettings({\r\n UserRequestedByApproval: true,\r\n }),\r\n );\r\n dispatch(actions.setByApprovalErrors(undefined));\r\n },\r\n [actions, dispatch],\r\n );\r\n const handleMaxReservationComplexityValidationResult = React.useCallback(\r\n (e: any) => {\r\n // this one marks the reservation to go directly into the background processing\r\n dispatch(actions.setUserRequestedBackground(true));\r\n // reset the previous validation state\r\n dispatch(actions.setMaxReservationComplexityValidationResult(null));\r\n // resubmit the reservation - hopefully it did not change much\r\n handleSubmitForm(e);\r\n // close side panel to indicate that we've done with this one and the whole story ends here\r\n // todo: move closing action to the saga?\r\n dispatch(layoutActions.closeSidePanel());\r\n },\r\n [actions, dispatch, layoutActions],\r\n );\r\n\r\n const editAssisted = React.useCallback(\r\n (p: TrainingDetailsProps, reset: boolean) => {\r\n openPanel({\r\n renderPageType: RenderPageType.TrainingDetails,\r\n renderPageProps: {\r\n ...p,\r\n useSidePanel: true,\r\n isCover: useSidePanel,\r\n onTrainingClose: () => {\r\n setCreateTrainingOpen(false);\r\n handleCloselClick();\r\n },\r\n } as TrainingDetailsProps,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n });\r\n setCreateTrainingOpen(true);\r\n dispatch(actions.resetAssisteTrainingData());\r\n },\r\n [openPanel, useSidePanel, dispatch, actions, handleCloselClick],\r\n );\r\n const handleCancelTransfer = () => {\r\n if (transferUser !== null) {\r\n dispatch(\r\n actions.cancelTransfer({\r\n User: transferUser,\r\n ReservtionId: transferredForId || reservation?.data?.Id || 0,\r\n }),\r\n );\r\n }\r\n };\r\n const handleEquipmentClick = React.useCallback(\r\n (equipment: Entity) => {\r\n const assetProps: AssetPopUpProps = {\r\n identifier: {\r\n serviceType: 'Online',\r\n serviceId: equipment.Id,\r\n },\r\n useSidePanel: true,\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.AssetDetails,\r\n renderPageProps: assetProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [openPanel, useSidePanel],\r\n );\r\n const handleRestrictionsClick = React.useCallback(\r\n (equipment: Entity) => {\r\n let restrictProps = {\r\n serviceId: equipment.Id,\r\n showTable: IsAdmin,\r\n serviceGroupId: (equipment as IReservationEquipmentDto).ServiceGroupId,\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.RestrictionDetails,\r\n renderPageProps: restrictProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [IsAdmin, useSidePanel, openPanel],\r\n );\r\n const handleOfflineServiceClick = React.useCallback(\r\n (service: IOtherServices) => {\r\n if (edit) {\r\n let otherProps = {\r\n initialService: service,\r\n saveCreatable: true,\r\n queryParams: {\r\n id: String(Number(service.Id) ?? -1),\r\n },\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.OtherServiceDetails,\r\n renderPageProps: otherProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [edit, openPanel, useSidePanel],\r\n );\r\n const handleWorkTypeClick = React.useCallback(\r\n (\r\n event: IWorkOrderTypeDto,\r\n equipmentIds: number[],\r\n reservationId: number,\r\n ) => {\r\n let woProps = {\r\n queryParams: {\r\n id: undefined,\r\n aType: event.Id.toString(),\r\n eqid: equipmentIds.join(','),\r\n reservationId: reservationId.toString(),\r\n } as WorkOrderQueryStringParameters,\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.WorkOrderDetails,\r\n renderPageProps: woProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n onClose: () => dispatch(actions.setRefreshWorkOrderLink(true)),\r\n } as SidePanelOpenState);\r\n },\r\n [actions, dispatch, openPanel, useSidePanel],\r\n );\r\n const handleAddBatchClick = React.useCallback(\r\n (batch: IInventoryBatchDto | null, serviceTypeId: number) => {\r\n let batchProps = {\r\n initialBatch: batch ?? undefined,\r\n queryParams: {\r\n id: '' + (batch?.Id ?? -1),\r\n stid: '' + serviceTypeId,\r\n },\r\n saveCreatable: useSidePanel,\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.InventoryBatch,\r\n renderPageProps: batchProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [openPanel, useSidePanel],\r\n );\r\n const handleCalculateCredit = React.useCallback(\r\n (e: any) => {\r\n dispatch(actions.setSubmitCalculateCredit(true));\r\n handleSubmitForm(e);\r\n },\r\n [actions, dispatch],\r\n );\r\n\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n if (actionCompleted === true) {\r\n setBusy(false);\r\n setRequestCompleted(true);\r\n if (!hasError) {\r\n if (confirmAssisted && assistedTrainingData !== null) {\r\n setShowConfirmAssisted(true);\r\n } else {\r\n setShowConfirmAssisted(false);\r\n if (!isCloned && !createTrainingOpen) {\r\n handleCloselClick();\r\n }\r\n }\r\n }\r\n if (terminationEnabled) {\r\n dispatch(actions.resetTerminateState());\r\n }\r\n } else if (actionCompleted === false) {\r\n setRequestCompleted(undefined);\r\n setBusy(false);\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actionCompleted,\r\n actions,\r\n assistedTrainingData,\r\n confirmAssisted,\r\n createTrainingOpen,\r\n dispatch,\r\n handleCloselClick,\r\n hasError,\r\n isCloned,\r\n processing,\r\n terminationEnabled,\r\n ]);\r\n React.useEffect(() => {\r\n let active = creditProcessing === false;\r\n if (showConfirmPricing !== true) {\r\n setBusy(false);\r\n //TODO: simplify following block\r\n if (active) {\r\n if (creditCompleted === true && !showCalculateCredit) {\r\n dispatch(actions.resetCreditState());\r\n }\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n creditCompleted,\r\n creditProcessing,\r\n dispatch,\r\n showCalculateCredit,\r\n showConfirmPricing,\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (transferProcessing === false && transferStepCompleted === true) {\r\n setShowTransfer(false);\r\n }\r\n }, [actions, dispatch, transferProcessing, transferStepCompleted]);\r\n /// actions ///\r\n const leftActions = React.useMemo(() => {\r\n let mactions = [] as ActionRenderer[];\r\n if (!edit || (edit && (IsAdmin || isUserGroupCoordinator || isOwner))) {\r\n mactions.push(() => (\r\n \r\n }\r\n onClick={e => {\r\n dispatch(actions.setCloneReservation(false));\r\n dispatch(actions.resetDetailsErrorsState());\r\n handleSaveClick(e);\r\n }}\r\n disabled={\r\n busy ||\r\n equipmentChangeCompleted === false ||\r\n transferStepWaiting === true ||\r\n (edit && reservationCanceled && !IsAdmin)\r\n }\r\n processing={!requestCompleted && busy}\r\n text={t(translations.Save)}\r\n />\r\n \r\n ));\r\n }\r\n if (edit) {\r\n if (!!equipmentSettings && !!reservationSettings) {\r\n if (canBeCanceled) {\r\n mactions.push(() => (\r\n \r\n }\r\n onClick={e =>\r\n handleChangeStatus(e, ReservationStatus.Cancelled)\r\n }\r\n disabled={\r\n busy ||\r\n transferStepWaiting === true ||\r\n equipmentChangeCompleted === false\r\n }\r\n variant=\"white\"\r\n processing={!requestCompleted && busy}\r\n text={\r\n showShortView\r\n ? t(translations.Cancel)\r\n : t(translations.CancelReservation)\r\n }\r\n />\r\n \r\n ));\r\n }\r\n if (canBeApproved) {\r\n mactions.push(() => (\r\n \r\n }\r\n onClick={e => handleChangeStatus(e, ReservationStatus.Approved)}\r\n disabled={\r\n busy ||\r\n transferStepWaiting === true ||\r\n equipmentChangeCompleted === false\r\n }\r\n variant=\"white\"\r\n processing={!requestCompleted && busy}\r\n text={\r\n showShortView\r\n ? t(translations.Approve)\r\n : t(translations.ApproveReservation)\r\n }\r\n />\r\n \r\n ));\r\n }\r\n if (\r\n (equipmentSettings.AllowedToTransfer ||\r\n equipmentSettings.AllowedToTransferAll) &&\r\n !transferStepWaiting &&\r\n !repeat &&\r\n canBeCanceled\r\n ) {\r\n mactions.push(() => (\r\n \r\n {\r\n if (hasChanges) {\r\n dispatch(layoutActions.setConfirmOpen(true));\r\n setConfirmBeforeTransfer(true);\r\n } else {\r\n setShowTransfer(true);\r\n }\r\n }}\r\n disabled={busy}\r\n variant=\"white\"\r\n title={t(translations.TransferReservation)}\r\n processing={transferProcessing}\r\n text={t(translations.Transfer)}\r\n />\r\n \r\n ));\r\n }\r\n }\r\n }\r\n if (\r\n IsAdmin &&\r\n globalSettings.assistedReservationsEnabled &&\r\n globalSettings.tutoringModulesEnabled &&\r\n equipmentSettings?.IsEquipmentTutoring &&\r\n edit &&\r\n assistedTrainingData !== null &&\r\n assistedTrainingData.Equipments.some(f => f.TrainingRecordId === null)\r\n ) {\r\n mactions.push(() => (\r\n \r\n }\r\n onClick={e =>\r\n editAssisted(\r\n {\r\n id: undefined,\r\n equId: undefined,\r\n equIds: assistedTrainingData.Equipments.map(\r\n f => f.EquipmentId,\r\n ).join(','),\r\n fatherId: reservation.data?.FatherId?.toString() ?? undefined,\r\n rid:\r\n reservation.data?.FatherId !== null &&\r\n reservation.data?.FatherId !== undefined\r\n ? undefined\r\n : reservation.data?.Id !== null\r\n ? reservation.data?.Id.toString()\r\n : undefined,\r\n date: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(\r\n reservation.data?.StartTime ?? new Date(),\r\n ),\r\n ),\r\n user: reservation.data?.BookedBy?.Id,\r\n useSidePanel: true,\r\n } as TrainingDetailsProps,\r\n false,\r\n )\r\n }\r\n disabled={busy}\r\n variant=\"white\"\r\n text={t(translations.CreateTraining)}\r\n />\r\n \r\n ));\r\n }\r\n if (calculateButtonVisible) {\r\n mactions.push(() => (\r\n }\r\n onClick={e => handleCalculateCredit(e)}\r\n title={\r\n offlineServicesErrors.length > 0\r\n ? (t(translations.OfflineServicesError_info) as string)\r\n : (t(translations.CalculatePricing_info) as string)\r\n }\r\n disabled={\r\n creditProcessing ||\r\n equipmentChangeCompleted === false ||\r\n offlineServicesErrors.length > 0\r\n }\r\n processing={creditProcessing}\r\n >\r\n {t(translations.CalculatePricing)}\r\n \r\n ));\r\n }\r\n if (canSaveForLater) {\r\n mactions.push(() => (\r\n \r\n }\r\n onClick={e => handleChangeStatus(e, ReservationStatus.Draft)}\r\n disabled={\r\n busy ||\r\n transferStepWaiting === true ||\r\n equipmentChangeCompleted === false\r\n }\r\n variant=\"white\"\r\n processing={!requestCompleted && busy}\r\n text={t(translations.SaveForLater)}\r\n />\r\n \r\n ));\r\n }\r\n if (edit && (IsAdmin || isUserGroupCoordinator || isOwner)) {\r\n mactions.push(() => (\r\n }\r\n aria-label=\"history\"\r\n onClick={() => setOpenModifications(true)}\r\n >\r\n {t(translations.ModificationsHistory)}\r\n \r\n ));\r\n }\r\n if (IsAdmin || isOwner) {\r\n mactions.push(() => (\r\n }\r\n aria-label=\"clone\"\r\n disabled={\r\n busy ||\r\n equipmentChangeCompleted === false ||\r\n transferStepWaiting === true ||\r\n (edit && reservationCanceled && !IsAdmin)\r\n }\r\n title={t(translations.res_SaveAndClone_info)}\r\n onClick={e => {\r\n dispatch(actions.resetDetailsErrorsState());\r\n if (edit) {\r\n if (hasChanges) {\r\n setConfirmCloned(hasChanges);\r\n } else {\r\n dispatch(actions.setCloneReservation(true));\r\n handleSaveClick(e);\r\n }\r\n } else {\r\n dispatch(actions.setCloneReservation(true));\r\n handleSaveClick(e);\r\n }\r\n }}\r\n >\r\n {edit ? t(translations.SaveAndClone) : t(translations.CreateAndClone)}\r\n \r\n ));\r\n }\r\n mactions.push(() => (\r\n \r\n }\r\n size=\"small\"\r\n onClick={e => {\r\n dispatch(\r\n appSettingsActions.navigate(\r\n toLocationDescriptor({\r\n path: '/reservations',\r\n search: { relId: reservationId },\r\n }),\r\n ),\r\n );\r\n if (sidePanelExpanded) {\r\n dispatch(layoutActions.setExpanded(false));\r\n }\r\n }}\r\n >\r\n {t(translations.ShowRelatedReservations)}\r\n \r\n \r\n ));\r\n mactions.push(() => (\r\n \r\n }\r\n aria-label=\"money-bill\"\r\n href={buildURL(`Charges`, {\r\n refType: ReferenceType.Reservation as number,\r\n refId: reservationId,\r\n })}\r\n target=\"_blank\"\r\n title={t(translations.Charges)}\r\n >\r\n {t(translations.Charges)}\r\n \r\n \r\n ));\r\n if (usageEnabled) {\r\n mactions.push(() => (\r\n \r\n }\r\n aria-label=\"play\"\r\n href={buildURL(`usagehistory`, {\r\n reservationId: reservationId,\r\n sid: reservation.data?.EquipmentsData?.filter(\r\n f => (f as IReservationEquipmentDto).AutoMode === 1,\r\n )[0]?.Id,\r\n manualUsage: !reservationSettings?.Ongoing,\r\n })}\r\n target=\"_blank\"\r\n title={t(translations.Usages)}\r\n >\r\n {t(translations.Usages)}\r\n \r\n \r\n ));\r\n }\r\n if (edit) {\r\n mactions.push(() => (\r\n }\r\n aria-label=\"print\"\r\n onClick={handlePrintToPDF}\r\n title={t(translations.PrintPdf)}\r\n disabled={print}\r\n >\r\n {t(translations.PrintPdf)}\r\n \r\n ));\r\n }\r\n return mactions;\r\n }, [\r\n IsAdmin,\r\n actions,\r\n appSettingsActions,\r\n assistedTrainingData,\r\n busy,\r\n calculateButtonVisible,\r\n canBeApproved,\r\n canBeCanceled,\r\n canSaveForLater,\r\n creditProcessing,\r\n dispatch,\r\n edit,\r\n editAssisted,\r\n equipmentChangeCompleted,\r\n equipmentSettings,\r\n globalSettings.assistedReservationsEnabled,\r\n globalSettings.tutoringModulesEnabled,\r\n handleCalculateCredit,\r\n handleChangeStatus,\r\n handlePrintToPDF,\r\n handleSaveClick,\r\n hasChanges,\r\n isOwner,\r\n isUserGroupCoordinator,\r\n layoutActions,\r\n offlineServicesErrors.length,\r\n print,\r\n repeat,\r\n requestCompleted,\r\n reservation.data?.BookedBy?.Id,\r\n reservation.data?.EquipmentsData,\r\n reservation.data?.FatherId,\r\n reservation.data?.Id,\r\n reservation.data?.StartTime,\r\n reservationCanceled,\r\n reservationId,\r\n reservationSettings,\r\n showShortView,\r\n sidePanelExpanded,\r\n t,\r\n transferProcessing,\r\n transferStepWaiting,\r\n usageEnabled,\r\n ]);\r\n\r\n const rightActions = React.useMemo(() => {\r\n return [\r\n () => (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n ] as ActionRenderer[];\r\n }, [handleCloselClick, t]);\r\n\r\n const pageTitle = React.useMemo(() => {\r\n return reservation?.data\r\n ? edit\r\n ? ` ${\r\n isCloned\r\n ? t(translations.CloneReservation)\r\n : t(translations.Reservation)\r\n } #${reservationId || 'N/A'}`\r\n : reservation.data.TrainingSignUp\r\n ? t(translations.TrainingSignUp)\r\n : ` ${\r\n isCloned\r\n ? t(translations.CloneReservation)\r\n : t(translations.AddReservation)\r\n }`\r\n : undefined;\r\n }, [edit, isCloned, reservation.data, reservationId, t]);\r\n const pageName = React.useMemo(() => {\r\n return edit\r\n ? t(translations.menu_ReservationDetails)\r\n : t(translations.menu_NewReservation);\r\n }, [edit, t]);\r\n const useSwitchActions = React.useMemo(() => {\r\n return (\r\n !edit &&\r\n (User?.isAdmin() || User?.isGroupAdmin()) &&\r\n !reservation.data?.TransferFromId &&\r\n useSwitchButtons\r\n );\r\n }, [User, edit, reservation.data?.TransferFromId, useSwitchButtons]);\r\n\r\n const switchState = React.useMemo(() => {\r\n return !!workOrderSwithProps && !edit && useSwitchButtons\r\n ? ({\r\n target: SwitchTarget.WorkOrder,\r\n getProps: () => workOrderSwithProps,\r\n } as SwitchActionsProps)\r\n : undefined;\r\n }, [edit, useSwitchButtons, workOrderSwithProps]);\r\n\r\n const ByApprovalAvailable = React.useMemo(() => {\r\n return (\r\n userCanRequestApproval === true &&\r\n ByApprovalErrors !== undefined &&\r\n ByApprovalErrors !== null &&\r\n ByApprovalErrors.length > 0\r\n );\r\n }, [ByApprovalErrors, userCanRequestApproval]);\r\n const MaxReservationComplexityReached =\r\n MaxReservationComplexityValidationResult !== null &&\r\n MaxReservationComplexityValidationResult !== undefined;\r\n const confirmPopover = React.useMemo(() => {\r\n // everything goes out of the windoew if max complexity is reached - all other popovers should be suppressed\r\n if (MaxReservationComplexityReached) {\r\n return (\r\n {MaxReservationComplexityValidationResult}}\r\n confirmButtonLabel={t(translations.Confirm)}\r\n maxWidth=\"md\"\r\n onConfirm={handleMaxReservationComplexityValidationResult}\r\n onCancel={() => {\r\n dispatch(actions.setMaxReservationComplexityValidationResult(null));\r\n }}\r\n />\r\n );\r\n } else {\r\n return showConfirmRecurring ? (\r\n {\r\n setShowConfirmRecurring(false);\r\n }}\r\n actions={[\r\n () => (\r\n \r\n ),\r\n () => (\r\n \r\n ),\r\n ]}\r\n />\r\n ) : confirmCloned ? (\r\n {\r\n dispatch(actions.setCloneReservation(true));\r\n handleSaveClick(e);\r\n setConfirmCloned(false);\r\n }}\r\n maxWidth=\"md\"\r\n onCancel={() => {\r\n setConfirmCloned(false);\r\n }}\r\n />\r\n ) : requestCompleted &&\r\n confirmAssisted &&\r\n assistedTrainingData !== null ? (\r\n \r\n ) : showTransfer ? (\r\n {\r\n return {\r\n Id: f.Id,\r\n Name: f.Name,\r\n ServiceTypeId: 1,\r\n ServiceGroupId: f.ServiceGroupId,\r\n HideProject: f.HideProjects,\r\n } as IServiceTypeFilterDto;\r\n })}\r\n adGroup={reservation?.data?.ADGroup?.Id}\r\n trnsferSubmitted={transferProcessing}\r\n handleTransfer={value => {\r\n let transfer = {\r\n User: value,\r\n ReservtionId: reservation?.data?.Id ?? 0,\r\n } as TransferToReservation;\r\n dispatch(actions.transferReservation(transfer));\r\n }}\r\n user={User}\r\n onClose={() => setShowTransfer(false)}\r\n />\r\n ) : showCalculateCredit ? (\r\n setShowCalculateCredit(false)}\r\n edit={edit}\r\n credit={calculateCredit}\r\n creditCompleted={creditCompleted}\r\n creditProcessing={creditProcessing}\r\n pricingType=\"Reservation\"\r\n />\r\n ) : showConfirmPricing ? (\r\n dispatch(actions.сonfirmPricing(true))}\r\n onCancel={() => dispatch(actions.сonfirmPricing(false))}\r\n onClose={() => dispatch(actions.сonfirmPricing(false))}\r\n edit={edit}\r\n credit={calculateCredit}\r\n creditCompleted={creditCompleted}\r\n creditProcessing={creditProcessing || calculateCredit === undefined}\r\n pricingType=\"Reservation\"\r\n />\r\n ) : !!openModifications ? (\r\n setOpenModifications(value)}\r\n resId={reservation?.data?.Id ?? 0}\r\n />\r\n ) : ByApprovalAvailable ? (\r\n \r\n {(ByApprovalErrors ?? [])?.map((error, index) => (\r\n \r\n {error}\r\n \r\n ))}\r\n {t(translations.ReservationConfirmByApproval)}\r\n \r\n }\r\n confirmButtonLabel={t(translations.Confirm)}\r\n onConfirm={handleByApprovalConfirm}\r\n maxWidth=\"md\"\r\n onCancel={() => {\r\n dispatch(actions.setByApprovalErrors(undefined));\r\n dispatch(actions.setUserCanRequestApproval(undefined));\r\n }}\r\n />\r\n ) : (\r\n <>\r\n );\r\n }\r\n }, [\r\n ByApprovalAvailable,\r\n ByApprovalErrors,\r\n MaxReservationComplexityReached,\r\n MaxReservationComplexityValidationResult,\r\n User,\r\n actions,\r\n assistedApproveOnse,\r\n assistedTrainingData,\r\n calculateCredit,\r\n canceled,\r\n confirmAssisted,\r\n confirmCloned,\r\n creditCompleted,\r\n creditProcessing,\r\n dispatch,\r\n edit,\r\n editAssisted,\r\n equipmentSettings?.AllowedToTransfer,\r\n handleByApprovalConfirm,\r\n handleMaxReservationComplexityValidationResult,\r\n handleSaveClick,\r\n handleUpdateAllRecurrent,\r\n handleUpdateFollowing,\r\n handleUpdateJustOne,\r\n openModifications,\r\n requestCompleted,\r\n reservation?.data?.ADGroup?.Id,\r\n reservation?.data?.EquipmentsData,\r\n reservation?.data?.Id,\r\n reservationProcessing,\r\n showCalculateCredit,\r\n showConfirmAssisted,\r\n showConfirmPricing,\r\n showConfirmRecurring,\r\n showTransfer,\r\n t,\r\n transferProcessing,\r\n ]);\r\n /// render ///\r\n return (\r\n \r\n \r\n {reservation?.data !== undefined && !processing ? (\r\n not_restricted ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n
    \r\n

    {t(translations.RestrictedNotAllowed) as string}

    \r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Continue)}\r\n \r\n
    \r\n
    \r\n )\r\n ) : reservation?.data === undefined &&\r\n !processing &&\r\n (reservationNotFound || userReadOnly) ? (\r\n \r\n
    \r\n

    {t(translations.RestrictedNotAllowed) as string}

    \r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Continue)}\r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n
    \r\n );\r\n});\r\nexport const NotAllowedContent = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n align-self: center;\r\n justify-self: center;\r\n & .columns {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n padding-inline: 16px;\r\n }\r\n`;\r\n","import {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport {\r\n ALL_PERIOD_TYPES,\r\n PeriodTypes,\r\n PeriodTypesEntity,\r\n} from 'app/components/DatePeriods';\r\nimport i18next from 'i18next';\r\nimport * as React from 'react';\r\n\r\nconst DATE_PERIODS = (periods?: Array) => {\r\n const all = ALL_PERIOD_TYPES.map((value, index) => {\r\n return { Id: value, Name: value };\r\n });\r\n if (periods === undefined) {\r\n return all;\r\n } else {\r\n return all.filter(f => periods.includes(f.Name));\r\n }\r\n};\r\n\r\nexport interface DatePeriodsPickerProps\r\n extends Omit, 'getOptions'> {\r\n periods?: Array;\r\n twoDaysDisabled?: boolean;\r\n}\r\nexport function getPeriods(periods?: Array) {\r\n return DATE_PERIODS(periods);\r\n}\r\nconst getOptions = (\r\n searchTerm: string | null,\r\n periods?: Array,\r\n) => {\r\n let items = DATE_PERIODS(periods).map(item => {\r\n return {\r\n Id: item.Id,\r\n Name: i18next.t(item.Name),\r\n type: item.Name as PeriodTypes,\r\n };\r\n });\r\n\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\nexport function DatePeriodsPicker(props: DatePeriodsPickerProps) {\r\n const getOptionsCallback = React.useCallback(\r\n (searchTerm: string | null) => {\r\n return getOptions(searchTerm, props.periods);\r\n },\r\n [props.periods],\r\n );\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n","export enum UserGroupsProviderTypes {\r\n /// \r\n /// user groups are sourced internally\r\n /// \r\n SQL,\r\n /// \r\n /// user groups are taken externally from AD\r\n /// \r\n AD,\r\n /// \r\n /// Same as AD, except:\r\n /// User will keep his (SQL) group after his (AD) group was removed\r\n /// \r\n Combo,\r\n}\r\n\r\nexport enum AutoMode {\r\n /// \r\n /// Usage enabled on equipment\r\n /// \r\n LocalAppEnabled = 1,\r\n /// \r\n /// Usage disabled on equipment\r\n /// \r\n LocalAppDisabled = 2,\r\n}\r\n","/**\r\n *\r\n * RadioGroup\r\n *\r\n */\r\nimport { RadioGroup as MuiRadioGroup } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport Radio from '../BasicInputs/Radio';\r\nimport { Tooltip } from '../BasicTooltips/Tooltip';\r\nimport FormControlLabel from '../Forms/FormControls/FormControlLabel';\r\n\r\nexport interface RadioGroupProps {\r\n options: Array>;\r\n value?: string;\r\n className?: string;\r\n onChange?: (\r\n value: string,\r\n event: React.ChangeEvent,\r\n ) => void;\r\n id: string;\r\n //formik\r\n name?: string;\r\n error?: boolean;\r\n label?: string;\r\n disabled?: boolean;\r\n helperText?: string;\r\n row?: boolean;\r\n info?: string;\r\n}\r\n\r\nexport function RadioGroup({\r\n name,\r\n id,\r\n value,\r\n options,\r\n onChange,\r\n error,\r\n row,\r\n helperText,\r\n ...props\r\n}: RadioGroupProps) {\r\n const handleChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value as string;\r\n if (onChange !== undefined) {\r\n onChange(value, event);\r\n }\r\n };\r\n return (\r\n \r\n {options.map((option, index) => (\r\n \r\n }\r\n label={option.Name}\r\n disabled={props.disabled}\r\n />\r\n {(option as any).Name.length > 28 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n );\r\n}\r\n","import { dateUtils } from 'utils/date-utils';\r\n\r\nexport const TransformDate = (value, original, ctx) => {\r\n if (ctx.isType(value)) return value;\r\n return dateUtils.format(original, dateUtils.DateIOFormats.keyboardDate);\r\n};\r\n","/**\r\n *\r\n * FormRestrictedUserGroupPicker\r\n *\r\n */\r\nimport { IUserGroupDto } from 'api/odata/generated/entities/IUserGroupDto';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { RestrictedUserGroupPicker } from '../pickers/AutocompletePickers/UserGroupPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport const FormRestrictedUserGroupPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig & IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n predicates={props.predicates}\r\n disabled={props.disabled}\r\n />\r\n );\r\n};\r\n","import { IconProp } from 'app/AllIcons';\r\n\r\n/**\r\n * Convert font-awesome names stored in localization/menu to IconProp.\r\n *\r\n * e.g.\r\n * * \"fas fa-home\" -> \"home\"\r\n * * \"map-location\" -> \"map-location\"\r\n * @param icon\r\n * @returns\r\n */\r\nexport function replaceIcon(\r\n icon: string | undefined | null,\r\n): IconProp | undefined {\r\n if (icon === undefined || icon === null) {\r\n return undefined;\r\n }\r\n if (icon.indexOf(' fa-') !== -1) {\r\n let tmpIcon = icon.substring(icon.indexOf(' fa-') + 4, icon.length);\r\n return tmpIcon as IconProp;\r\n }\r\n return icon as IconProp;\r\n}\r\n","/**\r\n * Determines if a given url is an internal usable in router link or is external to react app and should be used in ordinary anchor element's href attribute.\r\n * @param item menu entry\r\n * @returns\r\n */\r\nexport function isExternal(link?: string) {\r\n if (link === undefined) {\r\n return false;\r\n }\r\n return link?.includes('aspx') ?? false;\r\n}\r\n","import { SiteMapNode } from 'types/SiteMapSettings';\r\nimport { MenuItemEntry } from '../types';\r\nimport { replaceIcon } from './replaceIcon';\r\nimport { isExternal } from './isExternal';\r\nimport { getLink } from './getLink';\r\n\r\n/**\r\n * Converts SiteMapNode to MenuItemEntry used in the sidebar/menu\r\n * @param item\r\n * @param index\r\n * @param array\r\n * @returns\r\n */\r\nexport function toMenuItemEntry(\r\n item: SiteMapNode,\r\n index: number,\r\n array: Array,\r\n): MenuItemEntry {\r\n const link = getLink(item);\r\n return {\r\n id: item.Key ?? undefined,\r\n name: item.Title,\r\n link: link,\r\n icon: replaceIcon(item.icon),\r\n external: isExternal(link),\r\n selected: false,\r\n index: index,\r\n };\r\n}\r\n","import { SiteMapNode } from 'types/SiteMapSettings';\r\nimport { convertUrl } from './convertUrl';\r\n\r\n/**\r\n * Extracts link from SiteMapNode.\r\n * The link can be stored either in Url, reactUrl or LinkWithChildren properties.\r\n * @param item SiteMapNode\r\n * @returns link\r\n */\r\n\r\nexport function getLink(item: SiteMapNode) {\r\n if (item.ChildNodes?.length > 0) {\r\n return item.LinkWithChildren ?? undefined;\r\n }\r\n return item.reactUrl ?? convertUrl(item.Url) ?? undefined;\r\n}\r\n","export function convertUrl(url: string): string {\r\n if (url !== null) {\r\n if (url.indexOf(process.env.PUBLIC_URL) !== -1) {\r\n return url.replace(process.env.PUBLIC_URL, '');\r\n }\r\n return url;\r\n }\r\n return url;\r\n}\r\n","import { SiteMapNode } from 'types/SiteMapSettings';\r\n\r\n/**\r\n * Filters out only nodes that should be visible in the menu\r\n * @param item\r\n * @returns\r\n */\r\nexport function filterVisible(item: SiteMapNode) {\r\n return (\r\n item.HideReact === false &&\r\n // for whatever reason the Hide prop is set to True on admin settings menus, but these should be shown in the separate hover/actions popup menu\r\n (item.IsAdminSettings === true || item.Hide === false)\r\n );\r\n}\r\n","import { MainTabsUnion, SiteMapNode } from 'types/SiteMapSettings';\r\nimport { groupBy, values } from 'lodash';\r\nimport { MenuItemEntry, MenuItemEntryL1, MenuItems } from '../types';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { toMenuItemEntry } from './toMenuItemEntry';\r\nimport { filterVisible } from './filterVisible';\r\n\r\nexport function prepareMenu(menuItems: SiteMapNode[]) {\r\n const items = menuItems.filter(filterVisible).map((item, index) => {\r\n /**\r\n * Child nodes split into regular items shown as a main menu and admin/settings as they are shown separately\r\n */\r\n const childNodes = groupBy(item.ChildNodes.filter(filterVisible), item =>\r\n item.IsAdminSettings ? 'adminSettings' : 'items',\r\n );\r\n\r\n const menuEntry: MenuItemEntryL1 = {\r\n ...toMenuItemEntry(item, index, menuItems),\r\n items: childNodes['items']?.map(toMenuItemEntry),\r\n adminItems: childNodes['adminSettings']\r\n ?.filter(f =>\r\n item.MainTab === 'Budgets'\r\n ? f.SubTab !== 'BudgetReportTabSetting'\r\n : true,\r\n )\r\n ?.map(toMenuItemEntry),\r\n mainTab: !!item.MainTab ? (item.MainTab as MainTabsUnion) : undefined,\r\n groupTab: item.GroupTab,\r\n selected: false,\r\n closeOnClick:\r\n !isNullOrUndefined(item.LinkWithChildren) || item.ChildNodes.length < 1,\r\n };\r\n\r\n return menuEntry;\r\n });\r\n const result: MenuItems = values(groupBy(items, f => f.groupTab));\r\n return result;\r\n}\r\n","import { orderBy } from 'lodash';\r\nimport { MenuItemEntry, MenuItemEntryL1, MenuItems } from '../types';\r\n\r\n/**\r\n * Find a matching menu entry given current path name\r\n * @param menuItems\r\n * @param pathName\r\n * @returns\r\n */\r\nexport function findSelectedMenuEntry(menuItems: MenuItems, pathName?: string) {\r\n if (pathName === undefined) {\r\n return undefined;\r\n }\r\n if (menuItems.length === 0) {\r\n return undefined;\r\n }\r\n const loweredPathName = pathName.toLowerCase();\r\n const matches: Array<\r\n { level: number; isExact: boolean; item: MenuItemEntry } | undefined\r\n > = menuItems\r\n // combine back grouped entries, their primary children as well as admin settings\r\n .flatMap(f => f)\r\n .flatMap(f => (f.items ?? []).concat(f))\r\n .filter(f => f.external !== true)\r\n .map(item => {\r\n if (item === undefined) {\r\n return undefined;\r\n }\r\n if (item.link === undefined) {\r\n return undefined;\r\n }\r\n const loweredLink = item.link.toLowerCase();\r\n const level =\r\n ((item as MenuItemEntryL1).items?.length ?? 0) === 0 ? 2 : 1;\r\n const result = {\r\n item: item,\r\n level: level,\r\n };\r\n if (loweredLink === loweredPathName) {\r\n return {\r\n ...result,\r\n isExact: true,\r\n };\r\n } else if (\r\n loweredLink?.startsWith(loweredPathName) ||\r\n loweredPathName?.startsWith(loweredLink)\r\n ) {\r\n return {\r\n ...result,\r\n isExact: false,\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n })\r\n .filter(f => f !== undefined);\r\n // prioritize second level menus, exact matches\r\n const sortedMatches = orderBy(\r\n matches,\r\n [\r\n f => f?.level,\r\n f => (f?.isExact === true ? 0 : 1),\r\n f => f?.item.link?.length,\r\n ],\r\n ['desc', 'asc', 'desc'],\r\n );\r\n return sortedMatches[0]?.item;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { put, select, takeLatest } from 'redux-saga/effects';\r\nimport { sideBarActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { LOCATION_CHANGE, LocationChangePayload } from 'connected-react-router';\r\nimport { getLogger } from 'utils/logLevel';\r\nimport { selectMenuItems } from './selectors';\r\nimport { SiteMapSettings } from 'types/SiteMapSettings';\r\nimport { MenuItems } from './types';\r\nimport { selectRouterPathname } from 'app/slice/router-selectors';\r\nimport { prepareMenu } from './utils/prepareMenu';\r\nimport { findSelectedMenuEntry } from './utils/findSelectedMenuEntry';\r\n\r\nconst log = getLogger('SidBarSaga');\r\n\r\nfunction* doPrepareMenu(action: PayloadAction) {\r\n try {\r\n const pathName = yield select(selectRouterPathname);\r\n const menuItems = prepareMenu(action.payload.userNodes);\r\n yield put(actions.setMenuItems(menuItems));\r\n const selectedItem = findSelectedMenuEntry(menuItems, pathName);\r\n yield put(actions.setPathName(selectedItem));\r\n } catch (err) {\r\n log.error(err);\r\n }\r\n}\r\n\r\nfunction* doLocationChange(action: PayloadAction) {\r\n try {\r\n const pathName = action.payload.location.pathname;\r\n const menuItems: MenuItems = yield select(selectMenuItems);\r\n const activeItem = findSelectedMenuEntry(menuItems, pathName);\r\n yield put(actions.setPathName(activeItem));\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n log.debug(doLocationChange.name);\r\n}\r\nexport function* sideBarSaga() {\r\n yield takeLatest(\r\n appSettingsActions.loadSiteMapSettings_Success.type,\r\n doPrepareMenu,\r\n );\r\n yield takeLatest(LOCATION_CHANGE, doLocationChange);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { sideBarSaga } from './saga';\r\nimport {\r\n MenuItemEntry,\r\n MenuItemEntryL1,\r\n MenuItems,\r\n SideBarState,\r\n} from './types';\r\n\r\nexport const initialState: SideBarState = {\r\n loadingSiteMapSettings: false,\r\n siteMapSettings: null,\r\n menuItems: [],\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'sideBar',\r\n initialState,\r\n reducers: {\r\n setMenuItems(state, action: PayloadAction) {\r\n state.menuItems = action.payload;\r\n },\r\n expand(state, action: PayloadAction) {\r\n state.menuItems.forEach(group => {\r\n group.forEach(item => {\r\n if (item.id === action.payload.id) {\r\n item.selected = true;\r\n } else {\r\n item.selected = false;\r\n }\r\n });\r\n });\r\n },\r\n toggleExpand(\r\n state,\r\n action: PayloadAction<{ item: MenuItemEntryL1; toggle?: boolean }>,\r\n ) {\r\n state.menuItems.forEach(group => {\r\n group.forEach(item => {\r\n item.selected = false;\r\n if (item.id === action.payload.item.id) {\r\n item.selected =\r\n action.payload.toggle ?? !action.payload.item.selected;\r\n }\r\n });\r\n });\r\n },\r\n setPathName(state, action: PayloadAction) {\r\n if (state.menuItems === undefined) {\r\n return;\r\n }\r\n state.menuItems.forEach(group => {\r\n group.forEach(item => {\r\n item.selected = false;\r\n item.items?.forEach(item2 => {\r\n item2.selected = false;\r\n if (item2.id === action.payload?.id) {\r\n item2.selected = true;\r\n item.selected = true;\r\n return;\r\n }\r\n });\r\n });\r\n });\r\n },\r\n setMenuName(\r\n state,\r\n action: PayloadAction<{ entry: MenuItemEntry | undefined; name: string }>,\r\n ) {\r\n if (state.menuItems === undefined) {\r\n return;\r\n }\r\n state.menuItems.forEach(group => {\r\n group.forEach(item => {\r\n item.items?.forEach(item2 => {\r\n if (item2.id === action.payload?.entry?.id) {\r\n item2.name = action.payload.name;\r\n return;\r\n }\r\n });\r\n });\r\n });\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: sideBarActions } = slice;\r\n\r\nexport const useSideBarSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: sideBarSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import * as React from 'react';\r\nimport { EntityType } from 'types/common';\r\nimport { FormAutocomplete, FormAutocompleteProps } from './FormAutocomplete';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport interface FormAutocompleteOptionsProps\r\n extends Omit, 'loadData'>,\r\n IFieldProps {\r\n getOptions: (searchTerm: string | null) => T[];\r\n disabled?: boolean;\r\n id?: string;\r\n}\r\n\r\nexport function FormAutocompleteOptions({\r\n getOptions,\r\n ...props\r\n}: FormAutocompleteOptionsProps) {\r\n const loadData = async (searchTerm: string | null): Promise =>\r\n new Promise(resolve => {\r\n const opts = getOptions(searchTerm);\r\n resolve(opts);\r\n });\r\n return ;\r\n}\r\n","import { httpClient } from './HttpClient';\r\n\r\nexport const ExternalApi = {\r\n getExternalItems(\r\n formFieldId: number,\r\n payload: { filter: string | null; pageSize: number; pageIndex: number },\r\n ) {\r\n const url = `/api/externalitems/${formFieldId}/query`;\r\n const data = { param: payload };\r\n return httpClient.get(url, data);\r\n },\r\n};\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { Entity } from 'types/common';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { IFormFieldOptionDto } from 'api/odata/generated/entities/IFormFieldOptionDto';\r\nimport { FormAutocompleteOptions } from 'app/components/Forms/FormAutocompleteOptions';\r\nimport { FormAutocompleteMultiOptions } from 'app/components/Forms/FormAutocompleteMultiOptions';\r\nimport { ExternalApi } from 'api/ExternalApi';\r\nimport { FormAutocompleteMulti } from 'app/components/Forms/FormAutocompleteMulti';\r\nimport { FormAutocomplete } from 'app/components/Forms/FormAutocomplete';\r\n\r\nexport const initCustomDropDownData = (\r\n initialValue: string | undefined,\r\n formField: IFormFieldDto | undefined,\r\n) => {\r\n if (initialValue === undefined || formField === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n const options = createOptions(formField);\r\n resolve(\r\n getDropDownInitValue(initialValue, formField.IsMultiple, options),\r\n );\r\n });\r\n }\r\n};\r\nexport const getDropDownInitValue = (\r\n initialValue: string | undefined,\r\n isMultiple: boolean,\r\n options: IFormFieldOptionDto[],\r\n) => {\r\n if (initialValue === undefined) {\r\n return [] as Entity[];\r\n } else {\r\n if (isMultiple) {\r\n let values = initialValue.split(',');\r\n return options.filter(item => values.includes(item.Id));\r\n } else {\r\n return options.filter(item => item.Id === initialValue);\r\n }\r\n }\r\n};\r\nexport const createOptions = (\r\n field: Pick,\r\n): IFormFieldOptionDto[] => {\r\n if (field.Options && field.Options !== null) {\r\n switch (field.OptionsSourceType) {\r\n case 'Internal':\r\n return deserializeOptions(field.Options);\r\n\r\n case 'SimpleList':\r\n return deserializeOptions(field.Options.split(','));\r\n case 'External':\r\n return [] as IFormFieldOptionDto[];\r\n }\r\n } else {\r\n return [] as IFormFieldOptionDto[];\r\n }\r\n};\r\nconst deserializeOptions = (options: any): IFormFieldOptionDto[] => {\r\n let optsArray = [] as IFormFieldOptionDto[];\r\n if (Array.isArray(options)) {\r\n optsArray = options.map(opt => {\r\n return { Id: opt, Name: opt, Parent: null } as IFormFieldOptionDto;\r\n });\r\n } else {\r\n try {\r\n let items = JSON.parse(options);\r\n if (Array.isArray(items)) {\r\n let arr = items.map(o => {\r\n if (typeof o == 'string') {\r\n return { Id: o, Name: o, Parent: null } as IFormFieldOptionDto;\r\n } else if (o.hasOwnProperty('id') && o.hasOwnProperty('text')) {\r\n return {\r\n Id: o.id,\r\n Name: o.text,\r\n Parent: o.parent,\r\n } as IFormFieldOptionDto;\r\n } else {\r\n return undefined;\r\n }\r\n });\r\n optsArray =\r\n (arr.filter(o => o !== undefined) as IFormFieldOptionDto[]) ||\r\n ([] as IFormFieldOptionDto[]);\r\n }\r\n return optsArray;\r\n } catch {\r\n return optsArray;\r\n }\r\n }\r\n\r\n return optsArray;\r\n};\r\n\r\nexport function CustomFormDropDown({\r\n formField,\r\n readonly,\r\n parentValue,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n const getOptions = (searchTerm: string | null): Entity[] => {\r\n if (formField) {\r\n let options = createOptions(formField);\r\n if (formField.ParentId !== null && parentValue !== undefined) {\r\n return options.filter(\r\n item =>\r\n parentValue === undefined ||\r\n parentValue.length < 1 ||\r\n parentValue.filter(p => p.Id === item.Parent).length > 0,\r\n ) as Entity[];\r\n } else {\r\n return options as Entity[];\r\n }\r\n } else {\r\n return [] as Entity[];\r\n }\r\n };\r\n const externalLoadData = (searchTerm: string | null) => {\r\n const params: {\r\n filter: string | null;\r\n pageSize: number;\r\n pageIndex: number;\r\n } = {\r\n filter: searchTerm,\r\n pageSize: 50,\r\n pageIndex: 0,\r\n };\r\n\r\n return ExternalApi.getExternalItems(formField.Id, params).then(response => {\r\n if (!!response.data.data) {\r\n let options = response.data.data.map(option => {\r\n return { Id: option.name, Name: option.value };\r\n });\r\n return options as Entity[];\r\n } else if (!!response.data && response.data.length > 0) {\r\n let options = response.data.map(option => {\r\n return { Id: option.name, Name: option.value };\r\n });\r\n return options as Entity[];\r\n } else {\r\n return [] as Entity[];\r\n }\r\n });\r\n };\r\n return (\r\n \r\n {formField.OptionsSourceType === 'External' ? (\r\n formField.IsMultiple ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : formField.IsMultiple ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { useRowSelect, PluginHook, Row } from 'react-table';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { Icon } from 'app/components//BasicIcons/FontAwesome';\r\nimport { Check } from 'app/components/BasicInputs/Check';\r\nimport {\r\n getConditionalSelectColumnCheckboxProps,\r\n getConditionalSelectHeaderCheckboxProps,\r\n} from './ConditionalSelectHeaderCheckbox';\r\nimport { defaultCheckIfRowIsSelectable } from './index';\r\nimport styled from 'styled-components';\r\n\r\nexport const CheckWrapper = styled('div')`\r\n &.check-root {\r\n padding: 3px;\r\n }\r\n`;\r\nconst ExpandWrapper = styled('div')`\r\n &.expand-root {\r\n padding: 10px;\r\n }\r\n`;\r\n/**\r\n * Adds useRowSelect with the checkboxes in the first column\r\n * @param tablePlugins table plugins array passed into useTable\r\n * @param isRowSelectable controls row select-ability\r\n * @param onSelectedChange\r\n */\r\nexport function addRowSelect(\r\n tablePlugins: PluginHook[],\r\n isRowSelectable?: (row: Row) => boolean,\r\n onSelectedChange?: (row: TRow, checked: boolean) => void,\r\n) {\r\n tablePlugins.push(useRowSelect);\r\n tablePlugins.push(hooks => {\r\n hooks.visibleColumns.push(columns => [\r\n // Let's make a column for selection\r\n {\r\n id: 'selection',\r\n disableSortBy: true,\r\n // The header can use the table's getToggleAllRowsSelectedProps method\r\n // to render a checkbox\r\n Header: props => {\r\n const checkboxProps = React.useMemo(() => {\r\n return getConditionalSelectHeaderCheckboxProps({\r\n headerProps: props,\r\n checkIfRowIsSelectable:\r\n isRowSelectable || defaultCheckIfRowIsSelectable,\r\n onSelectedChange: onSelectedChange,\r\n shouldSelectPage: false,\r\n });\r\n }, [props]);\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n // The cell can use the individual row's getToggleRowSelectedProps method\r\n // to the render a checkbox\r\n Cell: ({ row }) => {\r\n if (!row.original.Rows || row.original.Rows.length <= 1) {\r\n const checkProps = getConditionalSelectColumnCheckboxProps({\r\n row: row,\r\n checkIfRowIsSelectable:\r\n isRowSelectable || defaultCheckIfRowIsSelectable,\r\n onSelectedChange: onSelectedChange,\r\n });\r\n\r\n if (!!isRowSelectable && !isRowSelectable(row)) {\r\n return <>;\r\n } else {\r\n return (\r\n e.stopPropagation()}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n },\r\n ...columns,\r\n ]);\r\n });\r\n}\r\n","import { HeaderProps, Row } from 'react-table';\r\nimport { IRow } from '.';\r\n\r\ninterface GetConditionalSelectHeaderCheckboxProps {\r\n /** react-table's header props */\r\n headerProps: React.PropsWithChildren>;\r\n /** A predicate - based on your business logic - to determine whether a given row should be selectable */\r\n checkIfRowIsSelectable: (row: Row) => boolean;\r\n /** Whether to allow page selection. Default: true */\r\n shouldSelectPage?: boolean;\r\n onSelectedChange?: (row: TRow, checked: boolean) => void;\r\n}\r\n\r\n/**\r\n * A convenience method for react-table headers for allowing conditional select\r\n * @param headerProps react-table's header props\r\n * @param checkIfRowIsSelectable A predicate - based on your business logic - to determine whether a given row should be selectable\r\n * @param shouldSelectPage Whether to allow page selection. Default: true\r\n * @returns Modified `checkboxProps` to enforce the conditional select\r\n */\r\nexport const getConditionalSelectHeaderCheckboxProps = ({\r\n headerProps,\r\n checkIfRowIsSelectable,\r\n onSelectedChange,\r\n shouldSelectPage = true,\r\n}: GetConditionalSelectHeaderCheckboxProps) => {\r\n // Note that in my comments I differentiate between the standard logic and the logic for the conditional select\r\n const checkIfAllSelectableRowsSelected = (rows: Row[]) =>\r\n rows.filter(checkIfRowIsSelectable).every(row => row.isSelected);\r\n // Standard: Here we define the selection type for the next click: Select Page / Select All\r\n const isSelectPage =\r\n shouldSelectPage &&\r\n headerProps.page\r\n // For conditional select: Filter the rows based on your business logic\r\n .filter(checkIfRowIsSelectable)\r\n // Standard: `isSelectPage === true` if some of the rows are not yet selected\r\n // This (standard) logic might be confusing to understand at first, but - as a side note - the idea is as follows:\r\n // This is the variable that defines whether the header props that will be received FOR THE NEXT CLICK will be for Select Page or for Select All\r\n // Try to play this out in your head:\r\n // - Initially, none of the rows are selected, so when we clicking the button initially, we will select only the (selectable) rows on the page (i.e. Select Page), hence the next click will be for Select All, hence `isSelectPage` will be `false`\r\n // - When clicking again, we will select the rest of the (selectable) rows (i.e. Select All). The next click will again be Select All (for de-selecting all), hence `isSelectPage` will be `false`\r\n // - Finally, when clicking again, we will de-select all rows. The next click will be for Select Page, hence `isSelectPage` will `true`\r\n .some(row => !row.isSelected);\r\n\r\n // Standard: Get the props based on Select Page / Select All\r\n const checkboxProps = isSelectPage\r\n ? headerProps.getToggleAllPageRowsSelectedProps()\r\n : headerProps.getToggleAllRowsSelectedProps();\r\n\r\n // For conditional select: The header checkbox should be:\r\n // - checked if all selectable rows are selected\r\n // - indeterminate if only some selectable rows are selected (but not all)\r\n const disabled = headerProps.rows.filter(checkIfRowIsSelectable).length === 0;\r\n const checked =\r\n !disabled && checkIfAllSelectableRowsSelected(headerProps.rows);\r\n const indeterminate =\r\n !checked && headerProps.rows.some(row => row.isSelected);\r\n\r\n // For conditional select: This is where the magic happens\r\n const onChange = () => {\r\n // If we're in Select All and all selectable rows are already selected: deselect all rows\r\n if (!isSelectPage && checkIfAllSelectableRowsSelected(headerProps.rows)) {\r\n headerProps.rows.forEach(row => {\r\n headerProps.toggleRowSelected(row.id, false);\r\n if (!!onSelectedChange) {\r\n onSelectedChange(row.original, checked);\r\n }\r\n });\r\n } else {\r\n // Otherwise:\r\n // First, define the rows to work with: if we're in Select Page, use `headerProps.page`, otherwise (Select All) use headerProps.rows\r\n const rows = isSelectPage ? headerProps.page : headerProps.rows;\r\n // Then select every selectable row\r\n rows.forEach(row => {\r\n const checked = checkIfRowIsSelectable(row);\r\n headerProps.toggleRowSelected(row.id, checked);\r\n if (!!onSelectedChange) {\r\n onSelectedChange(row.original, checked);\r\n }\r\n });\r\n }\r\n };\r\n\r\n // For conditional select: override checked, indeterminate and onChange - to enforce conditional select based on our business logic\r\n return {\r\n ...checkboxProps,\r\n checked,\r\n indeterminate,\r\n onChange,\r\n disabled,\r\n };\r\n};\r\ninterface GetConditionalSelectColumnCheckboxProps {\r\n /** react-table's header props */\r\n row: Row;\r\n /** A predicate - based on your business logic - to determine whether a given row should be selectable */\r\n checkIfRowIsSelectable: (row: Row) => boolean;\r\n onSelectedChange?: (row: TRow, checked: boolean) => void;\r\n}\r\n\r\nexport const getConditionalSelectColumnCheckboxProps = ({\r\n row,\r\n checkIfRowIsSelectable,\r\n onSelectedChange,\r\n}: GetConditionalSelectColumnCheckboxProps) => {\r\n const checkboxProps = row.getToggleRowSelectedProps();\r\n const disabled = !checkIfRowIsSelectable(row);\r\n const checked = row.isSelected;\r\n const onChange = (ev: React.ChangeEvent) => {\r\n const checked = ev.target.checked && checkIfRowIsSelectable(row);\r\n row.toggleRowSelected(checked);\r\n if (!!onSelectedChange) {\r\n onSelectedChange(row.original, checked);\r\n }\r\n };\r\n return {\r\n ...checkboxProps,\r\n checked,\r\n onChange,\r\n disabled,\r\n };\r\n};\r\n","import { Dictionary, keyBy, omit, orderBy, transform } from 'lodash';\r\nimport {\r\n IServiceRequestTableRowModel,\r\n IServiceRequestTableRowValueModel,\r\n} from './types';\r\nimport { fromDtoValue } from './selectors';\r\nimport { IServiceRequestRowDto } from 'api/odata/generated/entities/IServiceRequestRowDto';\r\nimport { IServiceRequestRowValueDto } from 'api/odata/generated/entities/IServiceRequestRowValueDto';\r\nimport { serializeCustomFormRowValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { ServiceRequestTableColumnsCollection } from './utils/ServiceRequestTableColumn';\r\n\r\nexport function prepareServiceRequestRowModel(\r\n rows: Array,\r\n columns: ServiceRequestTableColumnsCollection,\r\n) {\r\n const result: IServiceRequestTableRowModel[] | undefined = orderBy(\r\n rows,\r\n f => f.Id,\r\n )?.map(row => {\r\n const values = keyBy(row.Values, value => value.ColumnId);\r\n const rowValues: Dictionary = transform(\r\n columns.columnsObj,\r\n (result, column, columnId) => {\r\n result[column.getFieldName()] = fromDtoValue(\r\n column.ColumnType,\r\n values[column.Id],\r\n );\r\n },\r\n {},\r\n );\r\n const model: IServiceRequestTableRowModel = {\r\n ...omit(row, 'Values', '@odata.context'),\r\n ...{\r\n Values: rowValues,\r\n },\r\n };\r\n return model;\r\n });\r\n return result;\r\n}\r\n\r\nexport function serviceRequestModelToDto(\r\n model: Partial,\r\n columns: ServiceRequestTableColumnsCollection,\r\n) {\r\n const result: Partial<\r\n Omit & {\r\n Values: Array>;\r\n }\r\n > = {\r\n ...omit(model, 'Values'),\r\n Values: columns\r\n .getArray()\r\n .filter(column => column.CopyPrevValues)\r\n .map(column => {\r\n const dto: Partial = {\r\n ColumnId: column.Id,\r\n };\r\n const modelValue = model.Values?.[column.Id];\r\n if (modelValue !== undefined) {\r\n Object.assign(dto, serializeCustomFormRowValue(modelValue));\r\n }\r\n return dto;\r\n }),\r\n };\r\n return result;\r\n}\r\n","import { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\n\r\nexport interface UpdateFilesModel {\r\n files: IFormFileValue[];\r\n typeId: number;\r\n referenceId: number;\r\n formType: number;\r\n operation: string;\r\n updateOption: number;\r\n reccurentAssetId: number | null;\r\n recurrentGroupId: number | null;\r\n alertTypeId: number | null;\r\n}\r\nexport const getFilesModel = (\r\n original: IFormFileValue[],\r\n current: IFormFileValue[],\r\n type: number,\r\n referenceId: number,\r\n formType: number,\r\n updateOption: number,\r\n reccurentAssetId: number | null,\r\n recurrentGroupId: number | null,\r\n alertTypeId: number | null,\r\n) => {\r\n const filesData: UpdateFilesModel[] = [];\r\n if (current.length > 0 || original.length > 0) {\r\n let added =\r\n current.length > 0\r\n ? current.filter(f => f.Value === null && f.PostedFile !== null)\r\n : [];\r\n let removed =\r\n original.length > 0 && current.length > 0\r\n ? original.filter(\r\n f => f.Value !== null && !current.some(s => s.Value === f.Value),\r\n )\r\n : [];\r\n if (added.length > 0) {\r\n filesData.push({\r\n files: added,\r\n typeId: type,\r\n referenceId: referenceId,\r\n formType: formType,\r\n operation: 'added',\r\n updateOption: updateOption,\r\n reccurentAssetId: reccurentAssetId,\r\n recurrentGroupId: recurrentGroupId,\r\n alertTypeId: alertTypeId,\r\n });\r\n }\r\n if (removed.length > 0) {\r\n filesData.push({\r\n files: removed,\r\n typeId: type,\r\n referenceId: referenceId,\r\n formType: formType,\r\n operation: 'removed',\r\n updateOption: updateOption,\r\n reccurentAssetId: reccurentAssetId,\r\n recurrentGroupId: recurrentGroupId,\r\n alertTypeId: alertTypeId,\r\n });\r\n }\r\n }\r\n return filesData;\r\n};\r\n","export enum AssemblyTypes {\r\n Normal = 0,\r\n AssembliesAndNormal = 1,\r\n AssemblyParts = 2,\r\n AllEquipments = 3,\r\n}\r\n\r\nexport enum AssemblyTypesShort {\r\n Normal = 1,\r\n AssemblyParts = 2,\r\n}\r\n","import { IconProp } from 'app/AllIcons';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectSiteMapProvider,\r\n} from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { AssetsSubTabUnionArray, MainTabsUnion } from 'types/SiteMapSettings';\r\nimport * as React from 'react';\r\nimport {\r\n RowActionsMenu,\r\n RowActionsProps,\r\n} from 'app/components/BasicTable/RowActions';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport interface AdminActionsProps {\r\n menuTab: MainTabsUnion;\r\n icon?: IconProp;\r\n id?: string;\r\n title?: string;\r\n action?: RowActionsProps;\r\n subTab?: any;\r\n}\r\nexport function AdminActions(props: AdminActionsProps) {\r\n const { menuTab, icon, id, title, action, subTab } = props;\r\n const { t } = useTranslation();\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const siteMapProvider = useSelector(selectSiteMapProvider);\r\n const admin =\r\n authenticatedUser !== undefined &&\r\n (authenticatedUser.Roles.includes(Roles.Administrators) ||\r\n authenticatedUser.Roles.includes(Roles.GroupAdministrators) ||\r\n authenticatedUser.Roles.includes(Roles.CustomRole));\r\n const adminSettings = React.useMemo(() => {\r\n let actions: RowActionsProps[] = [];\r\n if (admin) {\r\n if (menuTab === 'Assets' && !subTab) {\r\n AssetsSubTabUnionArray.forEach(ar => {\r\n actions = [\r\n ...actions,\r\n ...siteMapProvider.adminSettingsActions(\r\n menuTab,\r\n authenticatedUser,\r\n ar,\r\n undefined, // handleSettingClick,\r\n t,\r\n ),\r\n ];\r\n });\r\n } else {\r\n if (menuTab === 'Budgets' && !subTab) {\r\n return siteMapProvider.adminSettingsActions(\r\n menuTab,\r\n authenticatedUser,\r\n 'BudgetTabSetting',\r\n undefined, // handleSettingClick,\r\n t,\r\n );\r\n }\r\n return siteMapProvider.adminSettingsActions(\r\n menuTab,\r\n authenticatedUser,\r\n subTab,\r\n undefined, // handleSettingClick,\r\n t,\r\n );\r\n }\r\n }\r\n if (!!action) {\r\n actions.push(action);\r\n }\r\n return actions;\r\n }, [admin, action, menuTab, subTab, siteMapProvider, authenticatedUser, t]);\r\n\r\n return adminSettings.length > 0 ? (\r\n \r\n ) : null;\r\n}\r\n","/**\r\n *\r\n * AssetCatGroupPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IAssetCatGroupDto } from 'api/odata/generated/entities/IAssetCatGroupDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\n\r\nexport type CatGroupUrl = 'base' | 'assetBase' | 'public';\r\nexport interface AssetCatGroupPickerProps\r\n extends Omit, 'loadData'> {\r\n noGlobalServiceGroupFilter?: boolean;\r\n urlType?: CatGroupUrl;\r\n}\r\n\r\nconst url = '/api/odata/v4/AssetCatGroups';\r\nconst assetBaseUrl = '/api/odata/v4/AssetCatGroups/AssetCatGroupsFilter';\r\nconst publicUrl = '/api/odata/v4/AssetCatGroups/PublicAssetCatGroupsFilter';\r\nexport const initAssetCatGroupData = (\r\n initval: string | undefined,\r\n sourceUrl?: CatGroupUrl,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IAssetCatGroupDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,ServiceGroups',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n sourceUrl === 'public'\r\n ? publicUrl\r\n : sourceUrl === 'assetBase'\r\n ? assetBaseUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as IAssetCatGroupDto[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n isAuthenticated?: boolean,\r\n urlType?: CatGroupUrl,\r\n) => {\r\n const sourceUrl =\r\n urlType === 'public' || !isAuthenticated\r\n ? publicUrl\r\n : urlType === 'assetBase'\r\n ? assetBaseUrl\r\n : url;\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: ['Id', 'Name', 'ServiceGroups'],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function AssetCatGroupPicker(props: AssetCatGroupPickerProps) {\r\n const { predicates, noGlobalServiceGroupFilter, urlType, ...other } = props;\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n const innerLoadData = loadData(\r\n predicates,\r\n isAuth\r\n ? !noGlobalServiceGroupFilter\r\n ? globalServiceGroupFilter || []\r\n : []\r\n : [],\r\n isAuth,\r\n urlType,\r\n );\r\n return (\r\n \r\n );\r\n}\r\nexport const AssetCatGroupByServiceGroupFilter = (value: FilterValueType) => {\r\n if (value !== undefined && value !== null) {\r\n return [\r\n `${new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.In,\r\n (value as Identifiable).Id,\r\n ).toString()}`,\r\n ];\r\n }\r\n return [];\r\n};\r\n","import { IModelStateDictionary } from './Modelstate';\r\n\r\nexport interface IResponseType extends IResponseTypeBase {\r\n ErrorMessages: string[];\r\n}\r\nexport interface IResponseTypeBase {\r\n SuccessMessages: string[];\r\n WarningMessages: string[];\r\n}\r\nexport interface IModelStateResponseType extends IResponseTypeBase {\r\n ErrorMessages: IModelStateDictionary;\r\n}\r\nexport interface IResponseTypeWithId extends IResponseType {\r\n Id?: number;\r\n}\r\nexport interface IResponseTypeWithLink extends IResponseTypeWithId {\r\n link?: string;\r\n}\r\nexport interface IResponseTypeWithStringData extends IResponseType {\r\n Data?: string;\r\n}\r\n\r\nexport const GetResponseMessages = (\r\n response,\r\n infoText: string,\r\n): IResponseType => {\r\n let messages: IResponseType = {\r\n SuccessMessages: [],\r\n ErrorMessages: [],\r\n WarningMessages: [],\r\n };\r\n if (typeof response.value === 'string') {\r\n if ((response.value = 'Ok')) {\r\n messages.SuccessMessages.push(infoText);\r\n } else {\r\n messages.ErrorMessages.push(infoText + ': ' + response.value);\r\n }\r\n } else {\r\n if (response.SuccessMessages && response.SuccessMessages.length > 0) {\r\n response.SuccessMessages.forEach(element => {\r\n messages.SuccessMessages.push(element);\r\n });\r\n }\r\n if (response.ErrorMessages && response.ErrorMessages.length > 0) {\r\n response.ErrorMessages.forEach(element => {\r\n messages.ErrorMessages.push(element);\r\n });\r\n }\r\n if (response.WarningMessages && response.WarningMessages.length > 0) {\r\n response.WarningMessages.forEach(element => {\r\n messages.WarningMessages.push(element);\r\n });\r\n }\r\n if (\r\n messages.SuccessMessages.length === 0 &&\r\n response.ErrorMessages.length === 0 &&\r\n response.WarningMessages.length === 0\r\n ) {\r\n messages.SuccessMessages = [infoText];\r\n }\r\n }\r\n return messages;\r\n};\r\n","/**\r\n *\r\n * AssetCatPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FilterValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport { IAssetCatDto } from 'app/pages/CategoriesPage/IAssetCatDto';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\nexport type CatUrl = 'base' | 'assetBase' | 'public';\r\nexport interface AssetCatPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType?: CatUrl;\r\n noServiceGroup?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/AssetCat';\r\nconst assetBaseUrl = '/api/odata/v4/AssetCat/AssetCatsFilter';\r\nconst publicUrl = '/api/odata/v4/AssetCat/PublicAssetCatsFilter';\r\nexport const initAssetCatData = (\r\n initval: string | undefined,\r\n sourceUrl?: CatUrl,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IAssetCatDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,GroupId,AssetCatGroupName',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n sourceUrl === 'public'\r\n ? publicUrl\r\n : sourceUrl === 'assetBase'\r\n ? assetBaseUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as IAssetCatDto[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n isAuthenticated?: boolean,\r\n urlType?: CatUrl,\r\n) => {\r\n const sourceUrl =\r\n urlType === 'public' || !isAuthenticated\r\n ? publicUrl\r\n : urlType === 'assetBase'\r\n ? assetBaseUrl\r\n : url;\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: ['Id', 'Name', 'GroupId', 'AssetCatGroupName', 'ServiceGroups'],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function AssetCatPicker(props: AssetCatPickerProps) {\r\n const { predicates, urlType, ...other } = props;\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n const innerLoadData = loadData(\r\n predicates,\r\n isAuth && !other.noServiceGroup ? globalServiceGroupFilter || [] : [],\r\n isAuth,\r\n urlType,\r\n );\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const AssetCatByCategoryFilter = (\r\n value: FilterValueType,\r\n fieldName: any,\r\n) => {\r\n if (value !== undefined && value !== null) {\r\n if (fieldName === 'AssetCatGroupId') {\r\n return [\r\n `${new Condition(\r\n 'GroupId',\r\n ODataOperators.Equals,\r\n (value as Identifiable).Id,\r\n ).toString()}`,\r\n ];\r\n }\r\n if (fieldName === 'ServiceGroupId') {\r\n return [\r\n `${new Condition('ServiceGroups', ODataOperators.AnyIn, [\r\n (value as Identifiable).Id,\r\n ]).toString()}`,\r\n ];\r\n }\r\n }\r\n return [];\r\n};\r\n","/**\r\n *\r\n * ServiceGroupFilter\r\n *\r\n */\r\n\r\nimport { ServiceGroupPicker } from 'app/components/pickers/ServiceGroupPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectIsAuthenticated } from 'app/slice/selectors';\r\n\r\nexport const ServiceGroupFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n return (\r\n \r\n );\r\n};\r\nexport default ServiceGroupFilter;\r\n","export enum PartOfDay {\r\n Undefined = -1,\r\n /// \r\n /// Combines what was perviously named as Day/Night. Replaced by the TimeSlotTypes\r\n /// \r\n BusinessHours = 0,\r\n OffLine = 2,\r\n Tutoring = 3,\r\n NoTutoring = 4,\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport {\r\n call,\r\n put,\r\n select,\r\n takeEvery,\r\n takeLatest,\r\n debounce,\r\n all,\r\n} from 'redux-saga/effects';\r\nimport { schedulerActions as actions } from '.';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport {\r\n ReservationDetailsState,\r\n ReservationQueryStringParameters,\r\n} from 'app/pages/ReservationDetails/Details/slice/types';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport {\r\n ChangeServicesAction,\r\n ChangeViewModeAction,\r\n GetServicesAction,\r\n IEditEvent,\r\n INewEvent,\r\n ISchedulerService,\r\n ISerializableFilterSettings,\r\n IViewState,\r\n SetFilterAction,\r\n} from './types';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport {\r\n selectSchedulerViewStartDate,\r\n selectSchedulerViewEndDate,\r\n selectSchedulerPreviousViewState,\r\n selectSchedulerFilters,\r\n selectMultipleModeState,\r\n selectNotUseLocation,\r\n selectEmptySlotAdminClick,\r\n selectSchedulerNewEventServices,\r\n selectLoadedServices,\r\n selectCalendarReservationColumns,\r\n selectWithReservationsOnly,\r\n selectSchedulerViewState,\r\n} from './selectors';\r\n\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n withisInversed,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n RenderPageType,\r\n SidePanelState,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { ReservationDetailsProps } from 'app/pages/ReservationDetails/Details';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectGlobalServiceGroupFilter,\r\n selectGlobalSetting,\r\n selectglobalSettings,\r\n selectUserProfileSettings,\r\n} from 'app/slice/selectors';\r\nimport { getLogger } from 'utils/logLevel';\r\nimport { routerActions } from 'connected-react-router';\r\nimport { chunk, isArray, isEqual, omit, uniq } from 'lodash';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { selectSidePanelState } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { selectReservationData } from 'app/pages/ReservationDetails/Details/slice/selectors';\r\nimport { reservationActions } from 'app/pages/ReservationDetails/Details/slice';\r\nimport { UserProfileSettings } from 'types/UserProfileSettings';\r\nimport { UserProfile } from 'utils/userProfileSettings';\r\nimport { AllowedSettings, GlobalSettings } from 'utils/globalSettings';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { IWorkingHoursDto } from 'api/odata/generated/entities/IWorkingHoursDto';\r\nimport { PartOfDay } from 'enums/WorkingHoursTypes';\r\nimport { WorkOrderDetailsProps } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details';\r\nimport {\r\n WorkOrderDetailsState,\r\n WorkOrderQueryStringParameters,\r\n} from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/types';\r\nimport { GetCalendarPagePath } from '../../GetCalendarPagePath';\r\nimport { ITrainingSessionSlotDto } from 'api/odata/generated/entities/ITrainingSessionSlotDto';\r\nimport { EmptySlotAdminClick } from 'enums/EmptySlotAdminClick';\r\nimport { Entity } from 'types/common';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { ICalendarReservationDto } from 'api/odata/generated/entities/ICalendarReservationDto';\r\nimport { workOrderActions } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { undefinedIfIsEmpty } from 'app/components/BasicTable/useProfileSetting/parseProfileUrl';\r\nimport { ISavedViewDto } from 'api/odata/generated/entities/ISavedViewDto';\r\nimport { selectSelectedSavedView } from 'app/pages/SavedViewsPage/SavedViewPage/slice/selectors';\r\nimport { savedViewActions } from 'app/pages/SavedViewsPage/SavedViewPage/slice';\r\nimport { ReservationOrDowntimeEnum } from 'enums/ReservationOrDowntimeEnum';\r\nimport { FilterValue } from 'react-table';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport {\r\n groupByFilterFieldName,\r\n periodFilterFieldName,\r\n} from '../../parseCalendarPageParams';\r\nimport { URLSearchParamsCI } from 'app/components/BasicTable/types/FilterParam';\r\nimport { IEquipmentTimeSlot } from 'api/odata/generated/complexTypes/IEquipmentTimeSlot';\r\n\r\nconst log = getLogger('SchedulerSaga');\r\nfunction* doChangeViewMode(action: ChangeViewModeAction) {\r\n const previous: IViewState | undefined = yield select(\r\n selectSchedulerPreviousViewState,\r\n );\r\n const { current } = action.payload;\r\n log.debug('doChangeViewMode', previous, current);\r\n const notUseLocation = yield select(selectNotUseLocation);\r\n if (!notUseLocation) {\r\n yield* changeLocation(current, previous);\r\n }\r\n // skip unnecessary data reload during calendar/timeline switch\r\n // fool proofing against duplicate calls to change view state of the scheduler\r\n const isSameState = isStateEqual(previous, current);\r\n if (!isSameState || action.payload.forceEvents) {\r\n yield put(actions.getEvents());\r\n }\r\n yield put(actions.setPreviousViewState(current));\r\n}\r\n\r\nfunction* doChangeViewModePartial(action: PayloadAction>) {\r\n const current: IViewState = yield select(selectSchedulerViewState);\r\n yield* doChangeViewMode({\r\n type: action.type,\r\n payload: {\r\n current,\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * Determines if the viewstate have changed from the perspective of the scheduler saga\r\n * Used in order to fool proof the doChangeViewMode from rouge duplicate calls to change the viewstate causing to duplicate calls to fetch events\r\n * @param previous\r\n * @param current\r\n * @returns\r\n */\r\nfunction isStateEqual(previous: IViewState | undefined, current: IViewState) {\r\n try {\r\n const pickViewState = (a?: IViewState) => ({\r\n viewLength: a?.viewLength,\r\n // guards from one second changes to the viewstate regardless of their origin\r\n // lowest denominator for the purpose of fetching events is one day currently\r\n // in future, if the scheduler resolution will be lowered to > 1 day, this will need to be adjusted accordingly\r\n date:\r\n a?.date === undefined\r\n ? undefined\r\n : dateUtils.formatISO(\r\n dateUtils.startOfDay(dateUtils.parseISO(a.date)),\r\n ),\r\n });\r\n const isSameState = isEqual(\r\n pickViewState(previous),\r\n pickViewState(current),\r\n );\r\n return isSameState;\r\n } catch (error) {\r\n return false;\r\n }\r\n}\r\nexport function applyStateSearchParams(current: IViewState) {\r\n const params = new URLSearchParamsCI(current.search);\r\n if (current.preset === null) {\r\n params.delete(periodFilterFieldName);\r\n } else {\r\n params.set(periodFilterFieldName, current.preset);\r\n }\r\n\r\n params.set(groupByFilterFieldName, current.groupBy);\r\n\r\n return params.toString();\r\n}\r\n\r\nfunction* changeLocation(\r\n current: IViewState,\r\n previous: IViewState | undefined,\r\n) {\r\n const currentMode = {\r\n groupBy: current.groupBy,\r\n type: current.viewType,\r\n search: current.search,\r\n };\r\n const previousMode = {\r\n groupBy: previous?.groupBy,\r\n type: previous?.viewType,\r\n search: previous?.search,\r\n };\r\n\r\n if (!isEqual(previousMode, currentMode)) {\r\n const path = GetCalendarPagePath(current);\r\n\r\n yield put(\r\n routerActions.push({ pathname: path, search: currentMode.search }),\r\n );\r\n }\r\n}\r\n\r\nconst reservationHistoryAPIURL = '/api/odata/v4/CalendarReservations';\r\n\r\nfunction eventsParams({\r\n start,\r\n end,\r\n allFilters,\r\n selectedServices,\r\n serviceGroups,\r\n}: {\r\n start: Date | undefined;\r\n end: Date | undefined;\r\n allFilters: ISerializableFilterSettings | undefined;\r\n selectedServices: Array | undefined;\r\n serviceGroups: Array> | undefined;\r\n}) {\r\n const {\r\n events: eventFilters,\r\n training,\r\n service: serviceRelatedFilter,\r\n } = splitFilter(omit(allFilters, 'service'));\r\n const ReservationOrDowntime =\r\n allFilters?.['ReservationOrDowntime']?.value?.Id;\r\n\r\n // filters shared across all type of events reservations/working hours/training sessions/etc.\r\n // this filter can be sources either from the \"Filter\" or from scheduler state\r\n const sharedFilter: Array> = [\r\n new Condition(\r\n 'StartTime',\r\n ODataOperators.LessThan,\r\n end as FilterValue,\r\n ),\r\n new Condition(\r\n 'EndTime',\r\n ODataOperators.GreaterThan,\r\n start as FilterValue,\r\n ),\r\n ];\r\n\r\n const servicesFilter: Array> = [];\r\n\r\n if (selectedServices !== undefined && selectedServices.length > 0) {\r\n const equipmentIdArray = selectedServices.map(f => f.Id);\r\n servicesFilter.push(\r\n new Condition(\r\n 'EquipmentId',\r\n ODataOperators.Includes,\r\n equipmentIdArray,\r\n ),\r\n );\r\n }\r\n\r\n if (serviceGroups !== undefined && serviceGroups.length > 0) {\r\n servicesFilter.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n serviceGroups,\r\n ),\r\n );\r\n }\r\n const combinedFilters = eventFilters.concat(serviceRelatedFilter);\r\n return {\r\n ReservationOrDowntime,\r\n training,\r\n sharedFilter,\r\n servicesFilter,\r\n eventFilters: combinedFilters,\r\n };\r\n}\r\n\r\nfunction* doGetEvents(action: PayloadAction) {\r\n const start: Date | undefined = yield select(selectSchedulerViewStartDate);\r\n const end: Date | undefined = yield select(selectSchedulerViewEndDate);\r\n const allFilters: ISerializableFilterSettings | undefined = yield select(\r\n selectSchedulerFilters,\r\n );\r\n const selectedServices: Array | undefined = yield select(\r\n selectLoadedServices,\r\n );\r\n const serviceGroups: Array> | undefined = yield select(\r\n selectGlobalServiceGroupFilter,\r\n );\r\n const withReservationsOnly = yield select(selectWithReservationsOnly);\r\n const {\r\n ReservationOrDowntime,\r\n training,\r\n sharedFilter,\r\n servicesFilter,\r\n eventFilters,\r\n } = eventsParams({\r\n start,\r\n end,\r\n allFilters,\r\n selectedServices,\r\n serviceGroups,\r\n });\r\n\r\n // track fetched services\r\n const fetchedServices: number[] = [];\r\n\r\n const reservations_fields = yield select(selectCalendarReservationColumns);\r\n const effects: Array = [\r\n fetchEvents(\r\n ReservationOrDowntime,\r\n sharedFilter,\r\n servicesFilter,\r\n eventFilters,\r\n reservations_fields,\r\n ),\r\n fetchTrainingSessions(\r\n ReservationOrDowntime,\r\n training,\r\n sharedFilter,\r\n servicesFilter,\r\n selectedServices,\r\n fetchedServices,\r\n ),\r\n ];\r\n const noServicesSelected =\r\n selectedServices === undefined || selectedServices.length === 0;\r\n const loadWorkingHoursForFetchedEvents = !(\r\n noServicesSelected && withReservationsOnly\r\n );\r\n\r\n // working hours can be fetched early if they don't depend on fetched events\r\n if (loadWorkingHoursForFetchedEvents) {\r\n effects.push(\r\n fetchWorkingHours(\r\n ReservationOrDowntime,\r\n sharedFilter,\r\n servicesFilter,\r\n eventFilters,\r\n ),\r\n );\r\n }\r\n try {\r\n const [\r\n fetchedEventsEffect,\r\n fetchedTrainingSessionsEffect,\r\n fetchWorkingHoursEffect,\r\n ] = yield all(effects);\r\n const fetchedEvents =\r\n fetchedEventsEffect as IODataQueryResponse | null;\r\n if (noServicesSelected && fetchedEvents != null) {\r\n fetchedServices.push(\r\n ...uniq(fetchedEvents.value.map(f => f.EquipmentId)),\r\n );\r\n }\r\n\r\n const fetchedTrainingSessions =\r\n fetchedTrainingSessionsEffect as IODataQueryResponse | null;\r\n if (noServicesSelected && fetchedTrainingSessions != null) {\r\n fetchedServices.push(\r\n ...uniq(fetchedTrainingSessions.value.map(f => f.EquipmentId)),\r\n );\r\n }\r\n\r\n const fetchedWorkingHours =\r\n fetchWorkingHoursEffect as IODataQueryResponse | null;\r\n\r\n yield put(\r\n actions.getEvents_Success({\r\n reservations: fetchedEvents?.value ?? [],\r\n trainingSessions: fetchedTrainingSessions?.value ?? [],\r\n offlineHours: fetchedWorkingHours?.value ?? [],\r\n }),\r\n );\r\n\r\n if (loadWorkingHoursForFetchedEvents) {\r\n if (noServicesSelected && fetchedWorkingHours != null) {\r\n fetchedServices.push(\r\n ...uniq(fetchedWorkingHours.value.map(f => f.EquipmentId)),\r\n );\r\n }\r\n } else {\r\n const offlineServicesFilter =\r\n withReservationsOnly === true\r\n ? [\r\n new Condition(\r\n 'EquipmentId',\r\n ODataOperators.Includes,\r\n [\r\n ...new Set(\r\n (fetchedEvents?.value ?? []).map(f => f.EquipmentId),\r\n ),\r\n ],\r\n ),\r\n ]\r\n : servicesFilter;\r\n // fetch offline hours (alerts) for all displayed services\r\n try {\r\n var result: IODataQueryResponse =\r\n yield fetchWorkingHours(\r\n ReservationOrDowntime,\r\n sharedFilter,\r\n offlineServicesFilter,\r\n eventFilters,\r\n );\r\n fetchedServices.push(...uniq(result.value.map(f => f.EquipmentId)));\r\n yield put(actions.getOfflineHours_Success(result.value));\r\n } catch (error) {\r\n log.error('Error fetching working hours', error);\r\n }\r\n }\r\n\r\n if (noServicesSelected) {\r\n const distinctEquipmentIds = uniq(fetchedServices);\r\n yield put(actions.getDerivedServices(distinctEquipmentIds));\r\n }\r\n\r\n // fetch non working hours only if a service has been selected\r\n if (\r\n selectedServices !== undefined &&\r\n selectedServices.length > 0 &&\r\n start !== undefined &&\r\n end !== undefined\r\n ) {\r\n try {\r\n const nonWorking = yield call(\r\n getNonWorkingHours,\r\n selectedServices.map(f => f.Id),\r\n start,\r\n end,\r\n );\r\n yield put(actions.getNonWorkingHours_Success(nonWorking));\r\n } catch {\r\n yield put(actions.getNonWorkingHours_Success([]));\r\n }\r\n try {\r\n const tutoring = yield call(\r\n getTutoringWorkingHours,\r\n selectedServices.map(f => f.Id),\r\n start,\r\n end,\r\n );\r\n yield put(actions.getTutoringWorkingHours_Success(tutoring));\r\n } catch {\r\n yield put(actions.getTutoringWorkingHours_Success([]));\r\n }\r\n }\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n}\r\n\r\nfunction fetchWorkingHours(\r\n ReservationOrDowntime: any,\r\n sharedFilter: Condition[],\r\n offlineServicesFilter:\r\n | Condition[]\r\n | Condition[],\r\n eventFilters: string[],\r\n) {\r\n if (ReservationOrDowntime === ReservationOrDowntimeEnum.ReservationsOnly) {\r\n return call(() => null);\r\n } else {\r\n const url = `/api/odata/v4/WorkingHours`;\r\n // when the \"With reservations only\" is enabled - the offline hours need to be fetched only for those services that have reservations on them\r\n // so in this case reservations fetched here are used to extract the service ids and filter by them\r\n // otherwise the standard shared servicesFilter is used so that offline hours & reservations will be fetched on the same services\r\n const b = new ODataFilterBuilder({\r\n predicates: [\r\n new Condition(\r\n 'PeriodTypeId',\r\n ODataOperators.Equals,\r\n PartOfDay.OffLine,\r\n ).toString() || '',\r\n ...sharedFilter,\r\n ...offlineServicesFilter.map(f => f.toString()),\r\n ...Object.entries(eventFilters ?? {})\r\n // exclude the EquipmentId & ServiceGroupId filters applied separately in the shared filters\r\n .filter(([key]) => !['service', 'period'].includes(key))\r\n // exclude filters not applicable to the offline hours like the BudgetManager\r\n .filter(([key]) => {\r\n const value = eventFilters[key];\r\n return (\r\n !value.includes('BudgetManager') && !value.includes('BudgetId')\r\n );\r\n })\r\n .map(([, value]) => value),\r\n ],\r\n stringColumns: [],\r\n globalServiceGroupFilter: [],\r\n isOptionalServiceGroup: true,\r\n });\r\n try {\r\n return call(httpClient.get, url, { $filter: b.toString() });\r\n } catch (error) {\r\n log.error('Error in FilterClause FilterClause', error);\r\n }\r\n }\r\n}\r\n\r\nfunction fetchTrainingSessions(\r\n ReservationOrDowntime: any,\r\n training: string[],\r\n sharedFilter: Condition[],\r\n servicesFilter: Condition[],\r\n selectedServices: IServiceFilterDto[] | undefined,\r\n fetchedServices: number[],\r\n) {\r\n if (ReservationOrDowntime !== ReservationOrDowntimeEnum.DownTimeOnly) {\r\n const ff = Object.keys(training || {}).includes('BudgetManager');\r\n if (ff) {\r\n return call(() => null);\r\n } else {\r\n const trainingFilterBuilder =\r\n new ODataFilterBuilder({\r\n predicates: [\r\n ...sharedFilter,\r\n ...servicesFilter,\r\n ...Object.entries(training ?? {})\r\n // exclude the EquipmentId & ServiceGroupId filters applied separately in the shared filters\r\n .filter(([key]) => !['service', 'period'].includes(key))\r\n .map(([, value]) => value),\r\n ],\r\n stringColumns: [],\r\n globalServiceGroupFilter: [],\r\n isOptionalServiceGroup: true,\r\n });\r\n return call(httpClient.get, '/api/odata/v4/TrainingSessionSlots', {\r\n $filter: trainingFilterBuilder.toString(),\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction fetchEvents(\r\n ReservationOrDowntime: any,\r\n sharedFilter: Condition[],\r\n servicesFilter: Condition[],\r\n eventFilters: string[],\r\n reservations_fields: Array,\r\n) {\r\n if (ReservationOrDowntime !== ReservationOrDowntimeEnum.DownTimeOnly) {\r\n const b = new ODataFilterBuilder({\r\n predicates: [\r\n ...sharedFilter,\r\n ...servicesFilter,\r\n ...Object.entries(eventFilters ?? {})\r\n // exclude the EquipmentId & ServiceGroupId filters applied separately in the shared filters\r\n .filter(([key]) => !['service', 'period'].includes(key))\r\n .map(([, value]) => value),\r\n ],\r\n stringColumns: [],\r\n globalServiceGroupFilter: [],\r\n isOptionalServiceGroup: true,\r\n });\r\n\r\n return call(httpClient.get, reservationHistoryAPIURL, {\r\n $filter: b.toString(),\r\n $select: reservations_fields.join(','),\r\n });\r\n }\r\n return call(() => null);\r\n}\r\n\r\nasync function getNonWorkingHours(\r\n selectedServices: Array,\r\n start: Date,\r\n end: Date,\r\n): Promise> {\r\n const startParameter = start;\r\n const endParameter = dateUtils.addDays(\r\n dateUtils.startOfDay(dateUtils.parseISO(end)),\r\n 1,\r\n );\r\n\r\n const x = await Promise.all(\r\n chunk(selectedServices, 100)\r\n .map(\r\n s =>\r\n `/api/odata/v4/WorkingHours/GetNonWorking(ServiceId=${JSON.stringify(\r\n s,\r\n )},Start=${prepareDateParameter(\r\n startParameter,\r\n )},End=${prepareDateParameter(endParameter)})`,\r\n )\r\n .map(s => httpClient.get>(s)),\r\n );\r\n const y = x.flatMap(f => f.value);\r\n return y;\r\n}\r\nasync function getTutoringWorkingHours(\r\n selectedServices: Array,\r\n start: Date,\r\n end: Date,\r\n) {\r\n const startParameter = prepareDateParameter(start);\r\n const endParameter = prepareDateParameter(\r\n dateUtils.addDays(dateUtils.startOfDay(dateUtils.parseISO(end)), 1),\r\n );\r\n var x = await Promise.all(\r\n chunk(selectedServices, 100)\r\n .map(\r\n serviceIdParameter =>\r\n `/api/odata/v4/WorkingHours/GetTutoringWorking(ServiceId=${JSON.stringify(\r\n serviceIdParameter,\r\n )},Start=${startParameter},End=${endParameter})`,\r\n )\r\n .map(url => httpClient.get(url)),\r\n );\r\n return x.flatMap(f => f.value);\r\n}\r\nasync function getServiceDetails(ids: Array) {\r\n const result: IODataQueryResponse = await httpClient.get(\r\n '/api/odata/v4/ServiceFilter/ReservableEquipments',\r\n {\r\n $filter: new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n ids.filter(f => f !== undefined),\r\n ).toString(),\r\n $expand: 'WorkingHours',\r\n },\r\n );\r\n return result.value;\r\n}\r\n\r\nfunction* doGetServices(action: GetServicesAction) {\r\n try {\r\n if (action.payload === undefined) {\r\n yield put(actions.getServices_Success([]));\r\n return;\r\n }\r\n if (action.payload.length === 0) {\r\n yield put(actions.getServices_Success([]));\r\n return;\r\n }\r\n const needMoreProps = needMoreServiceProps({ services: action.payload });\r\n if (!needMoreProps) {\r\n yield put(\r\n actions.getServices_Success(action.payload as Array),\r\n );\r\n } else {\r\n try {\r\n // fetch service details only for services that haven't been loaded previously\r\n\r\n const servicesResponse: Array = yield call(\r\n getServiceDetails,\r\n action.payload.map(f => f.Id),\r\n );\r\n\r\n yield put(actions.getServices_Success(servicesResponse));\r\n } catch (error) {\r\n log.error('doGetServices', action, error);\r\n }\r\n }\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n yield put(actions.getEvents());\r\n}\r\n\r\nfunction needMoreServiceProps(props: {\r\n services: IServiceFilterDto[] | undefined;\r\n}) {\r\n const requiredProps: Array = [\r\n 'Id',\r\n 'Name',\r\n 'ServiceGroupId',\r\n 'ServiceTypeId',\r\n 'Color',\r\n 'UseServiceGroupTrainingLevels',\r\n 'ServiceGroupName',\r\n 'RestrictDurationUnitsAmount',\r\n 'RestrictDurationUnitType',\r\n 'ImageName',\r\n 'DefaultDuration',\r\n 'AssemblyId',\r\n 'TopAssemblyId',\r\n 'AssetCatId',\r\n 'AssetCatName',\r\n 'RestrictReservationToTimeSlots',\r\n 'MinOrderHours',\r\n 'WorkingHours',\r\n ];\r\n const needMoreProps = props.services?.some(f => {\r\n const actualProps = Object.keys(f).sort();\r\n const iss = isEqual(actualProps, requiredProps.sort());\r\n return !iss;\r\n });\r\n return needMoreProps;\r\n}\r\n\r\nfunction* doGetDerivedServices(action: ChangeServicesAction) {\r\n try {\r\n if (action.payload === undefined) {\r\n return undefined;\r\n }\r\n const servicesResponse: Array = yield call(\r\n getServiceDetails,\r\n action.payload,\r\n );\r\n\r\n yield put(actions.getDerivedServices_Success(servicesResponse));\r\n } catch (error) {\r\n log.error('doGetServices', action, error);\r\n }\r\n}\r\nfunction* doEdit(action: PayloadAction) {\r\n if (action.payload.type === undefined) {\r\n return;\r\n }\r\n switch (action.payload.type) {\r\n case 'offline':\r\n if (action.payload.alert_id !== undefined) {\r\n yield* doEditAlert(action);\r\n }\r\n break;\r\n case 'reservation':\r\n yield* doEditReservation(action);\r\n break;\r\n case 'trainingsession':\r\n if (action.payload.reservation_id === undefined) {\r\n yield* doEditTrainingSession(action);\r\n } else {\r\n yield doEditReservation(action);\r\n }\r\n break;\r\n default:\r\n assertExhaustive(action.payload.type);\r\n }\r\n}\r\nfunction* doEditTrainingSession(action: PayloadAction) {\r\n const trainingSession = action.payload.original as ITrainingSessionSlotDto;\r\n const authenticatedUser: AuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n\r\n const queryParams: ReservationQueryStringParameters = {\r\n // reservation details does not understand the ISO time, the value must be without the \"z\"\r\n Start: dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(trainingSession.StartTime),\r\n ),\r\n // reservation details does not understand the ISO time, the value must be without the \"z\"\r\n End: dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(trainingSession.EndTime),\r\n ),\r\n selectedIds: String(action.payload.service_id),\r\n un: authenticatedUser.Id,\r\n tsid: String((action.payload as any).trainingsession_id),\r\n };\r\n // undefined can't be processed by the reservation details\r\n if (action.payload.reservation_id !== undefined) {\r\n queryParams.id = String(action.payload.reservation_id);\r\n }\r\n // const x: SidePanelState | undefined = yield select(selectSidePanelState);\r\n // const reservationSidePanelOpened =\r\n // x?.sidePanelOpen && x?.pageType === RenderPageType.ReservationDetails;\r\n\r\n // if (reservationSidePanelOpened) {\r\n // if (action.payload.start_date !== undefined) {\r\n // yield put(reservationActions.setStartDate(action.payload.start_date));\r\n // }\r\n // if (action.payload.end_date !== undefined) {\r\n // yield put(reservationActions.setEndDate(action.payload.end_date));\r\n // }\r\n // } else {\r\n\r\n // }\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.ReservationDetails,\r\n props: {\r\n useSidePanel: true,\r\n queryParams,\r\n } as ReservationDetailsProps,\r\n }),\r\n );\r\n}\r\nfunction* doEditReservation(action: PayloadAction) {\r\n if (action.payload.reservation_id === undefined) {\r\n log.error('doEditReservation: ReservationId not found', action.payload);\r\n return;\r\n }\r\n const queryParams: ReservationQueryStringParameters = {\r\n id: String(action.payload.reservation_id),\r\n Start: action.payload.start_date,\r\n End: action.payload.end_date,\r\n };\r\n const sidePanelState: SidePanelState | undefined = yield select(\r\n selectSidePanelState,\r\n );\r\n const reservationDetailsState: ReservationDetailsState | undefined =\r\n yield select(selectReservationData);\r\n const reservationSidePanelOpened =\r\n sidePanelState?.sidePanelOpen &&\r\n sidePanelState?.pageType === RenderPageType.ReservationDetails;\r\n if (reservationSidePanelOpened) {\r\n if (action.payload.reservation_id !== reservationDetailsState?.Id) {\r\n if (reservationDetailsState?.Id !== undefined) {\r\n // reset previously opened reservation/alert details before showing new one\r\n yield put(layoutActions.resetSidePanel());\r\n }\r\n }\r\n }\r\n\r\n if (\r\n reservationSidePanelOpened &&\r\n action.payload.reservation_id === reservationDetailsState?.Id\r\n ) {\r\n if (action.payload.start_date !== undefined) {\r\n yield put(reservationActions.setStartDate(action.payload.start_date));\r\n }\r\n if (action.payload.end_date !== undefined) {\r\n yield put(reservationActions.setEndDate(action.payload.end_date));\r\n }\r\n } else {\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.ReservationDetails,\r\n props: {\r\n useSidePanel: true,\r\n queryParams,\r\n } as ReservationDetailsProps,\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doEditAlert(action: PayloadAction) {\r\n const queryParams: WorkOrderQueryStringParameters = {\r\n id: String(action.payload.alert_id),\r\n offStart: action.payload.start_date,\r\n offEnd: action.payload.end_date,\r\n };\r\n const props: WorkOrderDetailsProps = {\r\n queryParams: queryParams,\r\n\r\n useSidePanel: true,\r\n };\r\n\r\n const sidePanelState: SidePanelState | undefined = yield select(\r\n selectSidePanelState,\r\n );\r\n\r\n if (sidePanelState?.sidePanelOpen && action.payload.alert_id === undefined) {\r\n yield put(\r\n workOrderActions.setOfflineEventStart(\r\n dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(action.payload.start_date),\r\n ),\r\n ),\r\n );\r\n\r\n yield put(\r\n workOrderActions.setOfflineEventEnd(\r\n dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(action.payload.end_date),\r\n ),\r\n ),\r\n );\r\n } else {\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.WorkOrderDetails,\r\n props: props,\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doCreate(action: PayloadAction) {\r\n if (action.payload === undefined) {\r\n return;\r\n }\r\n const authenticatedUser: AuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const requestedServices = yield select(selectSchedulerNewEventServices);\r\n const defaultMulti: boolean | undefined = yield select(\r\n selectMultipleModeState,\r\n );\r\n const defaultMultiModeBehavior = action.payload.defaultMulti ?? defaultMulti;\r\n const emptySlotAdminClick: EmptySlotAdminClick = yield select(\r\n selectEmptySlotAdminClick,\r\n );\r\n const isAdmin = authenticatedUser.IsAllGroupOrLabTechAdmin(\r\n requestedServices.map(f => f.ServiceGroupId),\r\n requestedServices.map(f => {\r\n return {\r\n Id: f.Id,\r\n Name: f.Name,\r\n ServiceTypeId: f.ServiceTypeId,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n );\r\n const sidePanelState: SidePanelState | undefined = yield select(\r\n selectSidePanelState,\r\n );\r\n const reservationDetailsState: ReservationDetailsState | undefined =\r\n yield select(selectReservationData);\r\n const reservationSidePanelOpened =\r\n sidePanelState?.sidePanelOpen &&\r\n sidePanelState?.pageType === RenderPageType.ReservationDetails;\r\n if (reservationSidePanelOpened) {\r\n if (reservationDetailsState?.Id !== 0) {\r\n // reset previously opened reservation/alert details before showing new one\r\n yield put(layoutActions.resetSidePanel());\r\n }\r\n }\r\n\r\n // equipment is changed here when a new reservation is dragged to another service on the timeline\r\n const equipmentChanged =\r\n action.payload.service_id !== undefined &&\r\n reservationDetailsState?.EquipmentsData?.some(\r\n equipment => equipment.Id === action.payload?.service_id,\r\n ) === false;\r\n\r\n if (reservationSidePanelOpened && reservationDetailsState?.Id === 0) {\r\n if (!equipmentChanged) {\r\n if (action.payload.start_date !== undefined) {\r\n yield put(reservationActions.setStartDate(action.payload.start_date));\r\n }\r\n if (action.payload.end_date !== undefined) {\r\n yield put(reservationActions.setEndDate(action.payload.end_date));\r\n }\r\n return;\r\n } else {\r\n yield put(layoutActions.resetSidePanel());\r\n }\r\n }\r\n const settings: AppSettings = yield select(selectAppSettings);\r\n if (settings.Modules.includes(KnownModules.EquipmentAssemblies)) {\r\n }\r\n\r\n /**\r\n * service_id from the payload might be:\r\n * * number if reservation is placed on the service slot (timeline/unit view)\r\n * * or an array of numbers (where from?)\r\n * */\r\n\r\n const payloadServiceIds = isArray(action.payload.service_id)\r\n ? action.payload.service_id\r\n : [action.payload.service_id];\r\n\r\n var requestedServicesAssemblyIds = uniq(\r\n requestedServices.map(\r\n (f: Pick) =>\r\n f.TopAssemblyId ?? f.Id,\r\n ),\r\n );\r\n\r\n const useRequestedServices = requestedServices.length > 0;\r\n\r\n if (useRequestedServices) {\r\n if (\r\n requestedServices.some(\r\n (service: IServiceFilterDto) => service.AssemblyId !== null,\r\n ) &&\r\n settings.Modules.includes(KnownModules.EquipmentAssemblies)\r\n ) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'Scheduler_AssemblyPartSelected_InfoMessage',\r\n variant: 'info',\r\n message: i18next.t(\r\n translations.Scheduler_AssemblyPartSelected_InfoMessage,\r\n ),\r\n }),\r\n );\r\n }\r\n }\r\n\r\n // push all selected services if event was not created on dedicated service strip, e.g. on weekly calendar with no separate headers for each service\r\n const serviceIds = useRequestedServices\r\n ? requestedServicesAssemblyIds\r\n : payloadServiceIds;\r\n\r\n /**\r\n * Reservation side panel expects the service ids to be a csv e.g. \"1,2,3\"\r\n */\r\n const reservationSidePanelServiceId = String(serviceIds.join(','));\r\n const queryParams: ReservationQueryStringParameters = {\r\n selectedIds: reservationSidePanelServiceId,\r\n bid:\r\n action.payload.bid !== undefined ? String(action.payload.bid) : undefined,\r\n srid:\r\n action.payload.srid !== undefined\r\n ? String(action.payload.srid)\r\n : undefined,\r\n srrid:\r\n action.payload.srrid !== undefined\r\n ? String(action.payload.srrid)\r\n : undefined,\r\n un: action.payload.un ?? authenticatedUser?.Id,\r\n ug:\r\n action.payload.un !== undefined\r\n ? undefined\r\n : authenticatedUser?.ActiveUserGroup?.Id,\r\n // reservation details does not understand the ISO time, the value must be without the \"z\"\r\n Start: dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(action.payload.start_date),\r\n ),\r\n // reservation details does not understand the ISO time, the value must be without the \"z\"\r\n End: dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(action.payload.end_date),\r\n ),\r\n defaultMulti:\r\n defaultMultiModeBehavior === undefined\r\n ? undefined\r\n : defaultMultiModeBehavior.toString(),\r\n sampleRunId: action.payload.sample_run_id?.toString(),\r\n };\r\n const alertQueryParams: WorkOrderQueryStringParameters = {\r\n eqid: reservationSidePanelServiceId,\r\n down: 'true',\r\n offH: 'true',\r\n // reservation details does not understand the ISO time, the value must be without the \"z\"\r\n eStart: dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(action.payload.start_date),\r\n ),\r\n // reservation details does not understand the ISO time, the value must be without the \"z\"\r\n offStart: dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(action.payload.start_date),\r\n ),\r\n // reservation details does not understand the ISO time, the value must be without the \"z\"\r\n offEnd: dateUtils.formatQueryStringDate(\r\n dateUtils.parseISO(action.payload.end_date),\r\n ),\r\n defaultMulti:\r\n defaultMultiModeBehavior === undefined\r\n ? undefined\r\n : defaultMultiModeBehavior.toString(),\r\n aType:\r\n action.payload.alert_type === undefined\r\n ? undefined\r\n : action.payload.alert_type.toString(),\r\n };\r\n // workaround to skip side panel close confirmation\r\n // otherwise a reset is called after confirmation causing the reservation/event to disappear from the scheduler\r\n yield put(layoutActions.setNotSavedChanges(false));\r\n if (\r\n isAdmin &&\r\n EmptySlotAdminClick[emptySlotAdminClick.toString()] ===\r\n EmptySlotAdminClick.DownTimeOnly\r\n ) {\r\n let params = {\r\n useSidePanel: true,\r\n useSwithButtons: true,\r\n queryParams: alertQueryParams,\r\n } as WorkOrderDetailsProps;\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.WorkOrderDetails,\r\n props: params,\r\n }),\r\n );\r\n } else {\r\n let params = {\r\n useSidePanel: true,\r\n useSwitchButtons: isAdmin,\r\n queryParams,\r\n } as ReservationDetailsProps;\r\n yield put(\r\n layoutActions.openSidePanel({\r\n type: RenderPageType.ReservationDetails,\r\n props: params,\r\n }),\r\n );\r\n }\r\n}\r\nfunction* doReset(action: PayloadAction) {\r\n yield put(actions.create());\r\n}\r\nfunction* doUpdateMultipleMode(action: PayloadAction) {\r\n const authenticatedUser: AuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n const selectedSavedView: ISavedViewDto | undefined = yield select(\r\n selectSelectedSavedView,\r\n );\r\n if (selectedSavedView === undefined) {\r\n yield put(\r\n appSettingsActions.updateUserProfileSettings({\r\n key: 'BookMultipleInstruments',\r\n model: {\r\n UserName: authenticatedUser?.Id,\r\n Key: 'BookMultipleInstruments',\r\n IsMultiple: action.payload === undefined ? null : action.payload,\r\n } as UserProfileSettings,\r\n }),\r\n );\r\n } else {\r\n yield put(\r\n savedViewActions.patch({\r\n Id: selectedSavedView.Id,\r\n Multiple: action.payload,\r\n }),\r\n );\r\n }\r\n yield put(actions.updateMultiMode_Success(action.payload));\r\n}\r\n\r\nfunction* doUpdateEmptySlotClick(action: PayloadAction) {\r\n const authenticatedUser: AuthenticatedUser = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n yield put(\r\n appSettingsActions.updateUserProfileSettings({\r\n key: 'EmptySlotAdminClick',\r\n model: {\r\n UserName: authenticatedUser?.Id,\r\n Key: 'EmptySlotAdminClick',\r\n Value: action.payload.toString(),\r\n } as UserProfileSettings,\r\n }),\r\n );\r\n yield put(actions.updateEmptySlotSettings_success(action.payload));\r\n}\r\nfunction* doGetEmptySlotAdminClick() {\r\n const sett: UserProfile = yield select(selectUserProfileSettings);\r\n const gsettings: GlobalSettings = yield select(selectglobalSettings);\r\n const defaultEmptySlotSetting = gsettings.GetNullableByKey(\r\n AllowedSettings.CalendarTimelineEmptySlotClickSettings,\r\n );\r\n const defaultEmptySlotClick =\r\n defaultEmptySlotSetting === null\r\n ? EmptySlotAdminClick.ReservationsOnly\r\n : EmptySlotAdminClick[defaultEmptySlotSetting] ===\r\n EmptySlotAdminClick.WhatToAdd\r\n ? EmptySlotAdminClick.ReservationsOnly\r\n : EmptySlotAdminClick[defaultEmptySlotSetting];\r\n const userEmptySlotAdminClick = sett.GetSettingValueBy(\r\n (f: { Key: string }) =>\r\n f.Key.toLowerCase() === 'EmptySlotAdminClick'.toLowerCase(),\r\n )?.Value;\r\n const userSetting =\r\n userEmptySlotAdminClick === undefined || userEmptySlotAdminClick === null\r\n ? defaultEmptySlotClick\r\n : isNaN(parseInt(userEmptySlotAdminClick))\r\n ? EmptySlotAdminClick[userEmptySlotAdminClick]\r\n : EmptySlotAdminClick[parseInt(userEmptySlotAdminClick)];\r\n yield put(actions.updateEmptySlotSettings_success(userSetting));\r\n}\r\n\r\n/**\r\n * Splits scheduler filters into 2 groups - one to be applied to the services the other one - to the events\r\n * @param filters scheduler filters\r\n * @returns\r\n */\r\nfunction splitFilter(filters?: ISerializableFilterSettings) {\r\n const result: {\r\n events: Array;\r\n service: Array;\r\n training: Array;\r\n } = {\r\n service: [],\r\n events: [],\r\n training: [],\r\n };\r\n if (filters === undefined) {\r\n return result;\r\n }\r\n const getPredicate = (filters: ISerializableFilterSettings, key: string) =>\r\n withisInversed(\r\n String(filters[key].predicate),\r\n filters[key].predicate['isInversed'],\r\n );\r\n return Object.keys(filters).reduce((acc, key) => {\r\n switch (key) {\r\n case 'BudgetManager':\r\n case 'BookedById':\r\n case 'BudgetId':\r\n acc.events.push(getPredicate(filters, key));\r\n acc.events.push(getPredicate(filters, key));\r\n break;\r\n\r\n case 'service':\r\n case 'campus':\r\n case 'AssetRoomId':\r\n case 'AssetBuildingId':\r\n case 'AssetGroupId':\r\n case 'AssetCatId':\r\n case 'AvailabilityTypeId':\r\n acc.service.push(getPredicate(filters, key));\r\n break;\r\n case 'TrainingStateId':\r\n acc.training.push(getPredicate(filters, key));\r\n break;\r\n case 'WithReservationsOnly':\r\n // noop - WithReservationsOnly is not applied to any API and only affects the services displayed based on the fetched services and reservations\r\n break;\r\n default:\r\n log.warn(`splitFilter: missing case for ${key}`, filters[key]);\r\n break;\r\n }\r\n return acc;\r\n }, result);\r\n}\r\nfunction* doSetFilters(action: SetFilterAction) {\r\n try {\r\n const serviceGroups: Array> | undefined = yield select(\r\n selectGlobalServiceGroupFilter,\r\n );\r\n // handle the global service groups filter\r\n const predicates: Array> = [];\r\n if (serviceGroups !== undefined && serviceGroups.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n serviceGroups,\r\n ),\r\n );\r\n }\r\n // apply the rest of the \"filters\" applicable to the services here\r\n if (action.payload !== undefined) {\r\n // The Service filter can't be applied directly as it filters by the EquipmentId column instead of the Id\r\n const serviceRelatedFilters = splitFilter(\r\n omit(action.payload, 'service'),\r\n );\r\n predicates.push(...serviceRelatedFilters.service);\r\n\r\n // service selected in the main filter need some special treatment\r\n if (action.payload.service !== undefined) {\r\n const filteredServices = action.payload?.service?.value?.map(f => f.Id);\r\n if (filteredServices?.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n filteredServices,\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n\r\n var serviceFilterValue = action.payload?.['service']?.value;\r\n const servicesLoaded =\r\n Array.isArray(serviceFilterValue) &&\r\n needMoreServiceProps({ services: serviceFilterValue }) === true;\r\n\r\n if (!servicesLoaded) {\r\n const currentView: IViewState = yield select(selectSchedulerViewState);\r\n if (currentView.groupBy !== 'GroupByAssemblyPart') {\r\n predicates.push(\r\n new Condition(\r\n 'AssemblyId',\r\n ODataOperators.Equals,\r\n null,\r\n ),\r\n );\r\n }\r\n // max number of services allowed to be shown on the timeline\r\n const maxTimelineServices = yield select(state =>\r\n selectGlobalSetting(state, AllowedSettings.MaximumTimelineRowsLimit),\r\n );\r\n // max number of services allowed to be shown on the calendar\r\n const maxCalendarServices = yield select(state =>\r\n selectGlobalSetting(\r\n state,\r\n AllowedSettings.CalendarServicesPickerCapacity,\r\n ),\r\n );\r\n // take max + 1 in order to determine that the maximum limit has been reached for calendar/timeline\r\n const maxServices =\r\n Math.max(\r\n tryParseInt(maxTimelineServices) ?? 50,\r\n tryParseInt(maxCalendarServices) ?? 10,\r\n ) + 1;\r\n\r\n const x: IODataQueryResponse = yield call(\r\n httpClient.get,\r\n '/api/odata/v4/ServiceFilter/ReservableEquipments',\r\n {\r\n $filter: undefinedIfIsEmpty(\r\n predicates.map(f => f.toString()).join(' and '),\r\n ),\r\n $orderby: 'Name',\r\n $top: maxServices + 1,\r\n },\r\n );\r\n\r\n yield put(actions.getServices_Success(x.value));\r\n } else {\r\n yield put(actions.getServices_Success(serviceFilterValue));\r\n }\r\n\r\n yield put(actions.getEvents());\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n}\r\nfunction* doResetWorkOrder(\r\n action: PayloadAction,\r\n) {\r\n // todo: use the payload/state to reset the start/end time of the offline/alert that was edited by drag/resize instead of refetching all events\r\n yield put(actions.create());\r\n yield put(actions.getEvents());\r\n}\r\nexport function* schedulerSaga() {\r\n yield debounce(100, actions.getEvents.type, doGetEvents);\r\n yield takeLatest(actions.changeViewMode.type, doChangeViewMode);\r\n yield takeLatest(actions.changeViewModePartial.type, doChangeViewModePartial);\r\n yield takeLatest(actions.setDate.type, doGetEvents);\r\n yield takeLatest(actions.edit.type, doEdit);\r\n\r\n yield takeLatest(actions.create.type, doCreate);\r\n // refresh after reservation has been created\r\n yield takeEvery(\r\n reservationActions.createReservation_Success.type,\r\n doGetEvents,\r\n );\r\n // refresh after reservation has been updated\r\n yield takeEvery(\r\n reservationActions.updateReservation_Success.type,\r\n doGetEvents,\r\n );\r\n yield takeEvery(\r\n reservationActions.updateMultiReservations_completed.type,\r\n doGetEvents,\r\n );\r\n yield takeEvery(reservationActions.resetDetailsState.type, doGetEvents);\r\n // process change in the service groups global filter - refresh events shown\r\n yield takeLatest(\r\n appSettingsActions.saveGlobalServiceGroupFilter.type,\r\n doGetEvents,\r\n );\r\n // removes temporary \"new event\" from the scheduler on workorder creation\r\n yield takeEvery(workOrderActions.createWorkOrder_Success.type, doReset);\r\n // refresh after alert was created\r\n yield takeEvery(workOrderActions.createWorkOrder_Success.type, doGetEvents);\r\n // refresh after alert was updated\r\n yield takeEvery(workOrderActions.updateWorkOrder_Success.type, doGetEvents);\r\n\r\n yield takeLatest(reservationActions.resetDetailsState, doReset);\r\n yield takeLatest(\r\n workOrderActions.resetUpdateWorkOrderState.type,\r\n doResetWorkOrder,\r\n );\r\n yield takeLatest(\r\n workOrderActions.resetCreateWorkOrderState.type,\r\n doResetWorkOrder,\r\n );\r\n\r\n yield takeLatest(actions.getDerivedServices.type, doGetDerivedServices);\r\n yield takeLatest(actions.getServices.type, doGetServices);\r\n yield takeLatest(actions.setFilters.type, doSetFilters);\r\n\r\n yield takeLatest(actions.updateMultiMode.type, doUpdateMultipleMode);\r\n\r\n yield takeLatest(\r\n actions.updateEmptySlotSettings.type,\r\n doUpdateEmptySlotClick,\r\n );\r\n yield takeLatest(\r\n actions.getEmptySlotAdminClick.type,\r\n doGetEmptySlotAdminClick,\r\n );\r\n}\r\nfunction prepareDateParameter(date: Date) {\r\n return date.toISOString().substr(0, 19) + 'Z';\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { ICalendarReservationDto } from 'api/odata/generated/entities/ICalendarReservationDto';\r\nimport { ITrainingSessionSlotDto } from 'api/odata/generated/entities/ITrainingSessionSlotDto';\r\nimport { IWorkingHoursDto } from 'api/odata/generated/entities/IWorkingHoursDto';\r\nimport { IEquipmentTimeSlot } from 'api/odata/generated/complexTypes/IEquipmentTimeSlot';\r\nimport { TimelineGroupByUnion } from 'api/odata/generated/enums/TimelineGroupBy';\r\nimport { EmptySlotAdminClick } from 'enums/EmptySlotAdminClick';\r\nimport { Timestamp } from 'types/Timestamp';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { applyStateSearchParams, schedulerSaga } from './saga';\r\n\r\nimport {\r\n SchedulerState,\r\n IViewState,\r\n INewEvent,\r\n ChangeServicesAction,\r\n ChangeViewModeAction,\r\n ISchedulerService,\r\n GetServicesAction,\r\n SetFilterAction,\r\n IEditEvent,\r\n} from './types';\r\n\r\nexport const initialState: SchedulerState = {\r\n events: {},\r\n offlineHours: {},\r\n trainingSessions: {},\r\n emptySlotAdminClick: EmptySlotAdminClick.ReservationsOnly,\r\n selectedReservationEvents: [],\r\n TimelineGroupBy: 'NoTimelineGrouped',\r\n exportToPDF: false,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'scheduler',\r\n initialState,\r\n reducers: {\r\n init(state, action: PayloadAction) {\r\n const result = { ...initialState, ...{ viewState: action.payload } };\r\n return result;\r\n },\r\n changeViewModePartial(state, action: PayloadAction>) {\r\n state.viewState = Object.assign({}, state.viewState, action.payload);\r\n state.viewState.search = applyStateSearchParams(state.viewState);\r\n },\r\n changeViewMode(state, action: ChangeViewModeAction) {\r\n state.notUseLocation = action.payload.withNoChangeLocation;\r\n state.viewState = Object.assign({}, state.viewState, {\r\n preset: action.payload.current.preset,\r\n viewType: action.payload.current.viewType,\r\n viewLength: action.payload.current.viewLength,\r\n date: action.payload.current.date,\r\n search: applyStateSearchParams(action.payload.current),\r\n customDays: action.payload.current.customDays,\r\n customStart: action.payload.current.customStart,\r\n });\r\n },\r\n setPreviousViewState(state, action: PayloadAction) {\r\n state.previousViewState = action.payload;\r\n },\r\n changeGroupBy(state, action: PayloadAction) {},\r\n setDate(state, action: PayloadAction) {\r\n if (state.viewState !== undefined) {\r\n state.viewState.date = action.payload;\r\n }\r\n },\r\n\r\n getServices(state, action: GetServicesAction) {\r\n state.selectedServices = undefined;\r\n },\r\n getServices_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.selectedServices = action.payload;\r\n },\r\n\r\n getDerivedServices(state, action: ChangeServicesAction) {},\r\n getDerivedServices_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.derivedServices = action.payload;\r\n },\r\n\r\n getEvents(state, action: PayloadAction) {\r\n state.loadingEvents = true;\r\n },\r\n getEvents_Success(\r\n state,\r\n action: PayloadAction<{\r\n reservations: Array;\r\n trainingSessions: Array;\r\n offlineHours: Array;\r\n }>,\r\n ) {\r\n if (state?.viewState?.date !== undefined) {\r\n state.events[state.viewState.date] = action.payload.reservations;\r\n state.trainingSessions[state.viewState.date] =\r\n action.payload.trainingSessions;\r\n state.offlineHours[state.viewState.date] = action.payload.offlineHours;\r\n }\r\n state.loadingEvents = false;\r\n },\r\n getEvents_Error(state, action: PayloadAction) {},\r\n\r\n getOfflineHours_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n if (state?.viewState?.date !== undefined) {\r\n state.offlineHours[state.viewState.date] = action.payload;\r\n }\r\n },\r\n getNonWorkingHours_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.nonWorkingHours = action.payload;\r\n },\r\n getTutoringWorkingHours_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.tutoringWorkingHours = action.payload;\r\n },\r\n getTrainingSessions_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n if (state?.viewState?.date !== undefined) {\r\n state.trainingSessions[state.viewState.date] = action.payload;\r\n }\r\n },\r\n\r\n setFilters(state, action: SetFilterAction) {\r\n // reset the events\r\n state.events = {};\r\n state.offlineHours = {};\r\n state.trainingSessions = {};\r\n state.loadingEvents = true;\r\n state.filters = action.payload;\r\n },\r\n\r\n edit(state, action: PayloadAction) {\r\n switch (action.payload.type) {\r\n case 'offline':\r\n // store the updated start/end of the offline event in the state\r\n // this might prevent event jumping back after it's been dragged for the first time after the scheduler has been loaded\r\n const entity = Object.values(state.offlineHours)\r\n ?.flat()\r\n ?.find(f => f.AlertId === action.payload.alert_id);\r\n if (entity !== undefined) {\r\n entity.StartTime = action.payload.start_date;\r\n entity.EndTime = action.payload.end_date;\r\n }\r\n }\r\n },\r\n create(state, action: PayloadAction) {\r\n state.tempReservations = action.payload;\r\n },\r\n updateMultiMode(state, action: PayloadAction) {},\r\n updateMultiMode_Success(state, action: PayloadAction) {\r\n state.multipleInstrumentsMode = action.payload;\r\n },\r\n updateEmptySlotSettings(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n updateEmptySlotSettings_success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.emptySlotAdminClick = action.payload;\r\n },\r\n getEmptySlotAdminClick(state, action: PayloadAction) {},\r\n setNotUseLocation(state, action: PayloadAction) {\r\n state.notUseLocation = action.payload;\r\n },\r\n setSelectedReservationEvents(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n state.selectedReservationEvents = action.payload;\r\n },\r\n exportToPDF(state, action: PayloadAction) {\r\n state.exportToPDF = true;\r\n },\r\n resetExportToPDF(state, action: PayloadAction) {\r\n state.exportToPDF = false;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: schedulerActions } = slice;\r\n\r\nexport const useSchedulerSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: schedulerSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useSchedulerSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { httpClient } from 'api/HttpClient';\r\nimport {\r\n BaseURLMultiPicker,\r\n BaseURLMultiPickerProps,\r\n} from 'app/components/BasicPickers/BaseURLMultiPicker';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface UserGroupMultiPickerProps\r\n extends Omit, 'url'> {}\r\n\r\nconst url = '/api/odata/v4/UserGroupFilter';\r\n\r\nexport const initUserGroupMultiData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return Promise.resolve([] as Entity[]);\r\n }\r\n const ids = initval.split('|');\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n } = {\r\n $orderby: 'Id asc',\r\n $filter: '(Id in (' + ids.map(v => \"'\" + v + \"'\").join(',') + '))',\r\n $select: 'Id,Name',\r\n $top: ids.length,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\n\r\nexport const UserGroupMultiPicker = (props: UserGroupMultiPickerProps) => {\r\n return ;\r\n};\r\n","/**\r\n *\r\n * RoomPickerFilter\r\n *\r\n */\r\nimport { RoomPicker } from 'app/components/pickers/AutocompletePickers/RoomPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const RoomPickerFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default RoomPickerFilter;\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { UserMultiPicker } from '../pickers/AutocompletePickers/UserMultiPicker';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\n\r\nexport const FormUsersPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig[] | null> & {\r\n selectArray?: Array;\r\n} & IFieldProps) => {\r\n const [field, meta, helpers] = useField[] | null>(props);\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n disabled={props.disabled}\r\n onBlur={field?.onBlur}\r\n value={field.value as IUserFilterDto[]}\r\n variant=\"filled\"\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n selectArray={props.selectArray}\r\n />\r\n );\r\n};\r\n","/**\r\n *\r\n * Description\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Tooltip } from '../BasicTooltips/Tooltip';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport htmlParse from 'html-react-parser';\r\nimport styled from 'styled-components';\r\n\r\n/**\r\n * Predefined (column) widths\r\n */\r\ntype TextLength = 'short' | 'medium' | 'long' | 'auto';\r\n\r\nconst DEFAULT_WIDTH = 'medium';\r\n\r\nexport interface DescriptionProps\r\n extends Omit, 'children' | 'title'> {\r\n value?: string | null;\r\n //className?: string;\r\n title?: string | null | React.ReactNode;\r\n /**\r\n * predefined width - default = medium\r\n */\r\n width?: TextLength;\r\n /**\r\n * Makes a tooltip interactive, i.e. will not close when the user\r\n * hovers over the tooltip before the `leaveDelay` is expired.\r\n */\r\n interactive?: boolean;\r\n /**\r\n * The number of milliseconds to wait before hiding the tooltip.\r\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\r\n */\r\n leaveDelay?: number;\r\n /**\r\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\r\n */\r\n leaveTouchDelay?: number;\r\n}\r\n/**\r\n * Renders a long text Cell - truncates long text with a popup\r\n * @param param0 value to render\r\n * @returns\r\n */\r\nexport const Description = ({\r\n value,\r\n title,\r\n width = DEFAULT_WIDTH,\r\n interactive,\r\n leaveDelay,\r\n leaveTouchDelay,\r\n}: DescriptionProps) => {\r\n // cleanup html tags for inline display and trim white spaces\r\n\r\n const textValue = tryCleanValue(value);\r\n\r\n if (value === '' || value === null || value === undefined) {\r\n return <>;\r\n }\r\n\r\n // use the title if provided, otherwise tooltip will show full text value\r\n const titleValue = title ?? value;\r\n\r\n // parse html title value for html values e.g. remarks, email body, etc.\r\n const parsedTitle =\r\n typeof titleValue === 'string' ? htmlParse(titleValue) : titleValue;\r\n\r\n const maxChars = toCharsWidth(width);\r\n const doTruncate =\r\n maxChars !== undefined &&\r\n maxChars > 0 &&\r\n typeof textValue === 'string' &&\r\n textValue.length > maxChars;\r\n if (doTruncate && width !== 'auto') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n if (doTruncate) {\r\n return (\r\n \r\n <>{String(textValue)}\r\n \r\n );\r\n }\r\n return <>{String(textValue)};\r\n }\r\n};\r\n\r\n/***\r\n * Renders truncated text without tooltip\r\n */\r\nexport const TruncatedDescriptionText = React.forwardRef<\r\n HTMLSpanElement,\r\n DescriptionProps\r\n>(function TruncatedDescriptionText(\r\n { value, width = DEFAULT_WIDTH, title, ...props }: DescriptionProps,\r\n ref,\r\n) {\r\n if (value === '' || value === null || value === undefined) {\r\n return null;\r\n }\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n});\r\nconst Styled = styled('span')<{ width: string }>`\r\n display: inline-block;\r\n white-space: nowrap;\r\n max-width: ${props => props.width};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\n/**\r\n * Converts preset width to value that can be used to set css width\r\n * @param lengthType preset width\r\n * @returns\r\n */\r\nconst toCharsWidth = (lengthType?: TextLength) => {\r\n const length = lengthType ?? DEFAULT_WIDTH;\r\n switch (length) {\r\n case 'short':\r\n return 15;\r\n case 'medium':\r\n return 30;\r\n case 'long':\r\n return 70;\r\n case 'auto':\r\n return 70;\r\n default:\r\n assertExhaustive(length);\r\n }\r\n};\r\n\r\n/**\r\n * Converts preset width to value that can be used to set css width\r\n * @param lengthType preset width\r\n * @returns\r\n */\r\nconst toCssWidth = (lengthType?: TextLength) => {\r\n const length = lengthType ?? DEFAULT_WIDTH;\r\n switch (length) {\r\n case 'short':\r\n case 'medium':\r\n case 'long':\r\n return `${toCharsWidth(length)}ch`;\r\n\r\n case 'auto':\r\n return 'auto';\r\n default:\r\n assertExhaustive(length);\r\n }\r\n};\r\n\r\nfunction tryCleanValue(value: string | null | undefined) {\r\n if (value === null || value === undefined) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n // Remove HTML tags\r\n let cleanedValue = value.replace(/<[^>]+>/g, '');\r\n // Replace HTML entities\r\n cleanedValue = cleanedValue\r\n .replace(/ /g, ' ')\r\n .replace(/&/g, '&')\r\n .replace(/"/g, '\"')\r\n .replace(/'/g, \"'\")\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .trim();\r\n\r\n // Remove CSS classes as per C:\\bookitlab\\bkt_webApp\\EmailTemplates\\DefaultEmail.html\r\n const emailLink = '.email-link';\r\n let pattern = new RegExp(\r\n emailLink.replace(/\\./g, '\\\\.') + '\\\\s*{[^}]*?}',\r\n 'gim',\r\n );\r\n cleanedValue = cleanedValue.replace(pattern, '');\r\n\r\n const emailButton = '.email-button';\r\n let pattern2 = new RegExp(\r\n emailButton.replace(/\\./g, '\\\\.') + '\\\\s*{[^}]*?}',\r\n 'gim',\r\n );\r\n cleanedValue = cleanedValue.replace(pattern2, '');\r\n\r\n const tdEmpty = '.td:empty';\r\n let pattern3 = new RegExp(\r\n tdEmpty.replace(/\\.:/g, '\\\\.') + '\\\\s*{[^}]*?}',\r\n 'gim',\r\n );\r\n cleanedValue = cleanedValue.replace(pattern3, '');\r\n\r\n const a = 'a';\r\n let pattern4 = new RegExp(a.replace(/\\./g, '\\\\.') + '\\\\s*{[^}]*?}', 'gim');\r\n cleanedValue = cleanedValue.replace(pattern4, '');\r\n\r\n const p = 'p';\r\n let pattern5 = new RegExp(p.replace(/\\./g, '\\\\.') + '\\\\s*{[^}]*?}', 'gim');\r\n cleanedValue = cleanedValue.replace(pattern5, '');\r\n\r\n return cleanedValue;\r\n } catch (error) {\r\n return value;\r\n }\r\n}\r\n","/**\r\n *\r\n * InstituteTypePicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface InstituteTypePickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/InstituteTypeFilter';\r\nexport const initInstituteTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function InstituteTypePicker(props: InstituteTypePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import { Card } from '@material-ui/core';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport styled from 'styled-components';\r\n\r\nexport const TableSkeletonRoot = styled('div')`\r\n &.table-skeleton-root {\r\n flex-grow: 1;\r\n padding: 24px;\r\n & .table-skeleton-header {\r\n width: calc(100% + 16px);\r\n margin: -8px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-header-cell {\r\n padding: 8px;\r\n\r\n flex-grow: 0;\r\n max-width: 33.333333%;\r\n flex-basis: 33.333333%;\r\n\r\n @media (min-width: 960px) {\r\n flex-grow: 0;\r\n max-width: 16.666667%;\r\n flex-basis: 16.666667%;\r\n }\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n }\r\n & .table-skeleton-toolbar {\r\n margin-top: 8px;\r\n & .table-skeleton-toolbar-cell {\r\n width: calc(100% + 16px);\r\n margin: -8px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-toolbar-item {\r\n padding: 8px;\r\n\r\n flex-grow: 0;\r\n max-width: 50%;\r\n flex-basis: 50%;\r\n\r\n @media (min-width: 960px) {\r\n flex-grow: 0;\r\n max-width: 25%;\r\n flex-basis: 25%;\r\n }\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n & .table-skeleton-toolbar-item-2 {\r\n padding: 8px;\r\n\r\n flex-grow: 0;\r\n max-width: 33.333333%;\r\n flex-basis: 33.333333%;\r\n\r\n @media (min-width: 960px) {\r\n flex-grow: 0;\r\n max-width: 16.666667%;\r\n flex-basis: 16.666667%;\r\n }\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n }\r\n }\r\n & .table-skeleton-divider {\r\n margin-top: 24px;\r\n margin-bottom: 24px;\r\n }\r\n & .table-skeleton-search-bar {\r\n width: calc(100% + 16px);\r\n margin: -8px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n margin-bottom: 24px;\r\n & .table-skeleton-search-bar-item {\r\n padding: 8px;\r\n\r\n flex-grow: 0;\r\n max-width: 16.666667%;\r\n flex-basis: 16.666667%;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n & .table-skeleton-search-bar-item-2 {\r\n padding: 8px;\r\n\r\n flex-grow: 0;\r\n max-width: 25%;\r\n flex-basis: 25%;\r\n\r\n @media (min-width: 960px) {\r\n flex-grow: 0;\r\n max-width: 33.333333%;\r\n flex-basis: 33.333333%;\r\n }\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n }\r\n }\r\n`;\r\nexport const TableRowsSkeletonRoot = styled('div')`\r\n &.table-rows-skeleton-root {\r\n width: 100%;\r\n & .table-skeleton-grid {\r\n width: calc(100% + 8px);\r\n margin: -4px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-header-cell {\r\n color: white;\r\n height: 48px;\r\n position: relative;\r\n box-shadow: 0 3px 5px 2px #d7d7d7;\r\n border-right: 1px solid #d7d7d7;\r\n border-bottom: 1px solid #d7d7d7;\r\n background-color: #f5f5f5;\r\n\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n & .table-skeleton-header-content {\r\n width: 100%;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-header-item {\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n }\r\n }\r\n & .table-skeleton-row-cell {\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n & .table-skeleton-row-content {\r\n width: 100%;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-row-item {\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n margin: 0;\r\n box-sizing: border-box;\r\n & .item-cell {\r\n color: white;\r\n height: 48px;\r\n\r\n width: calc(100% + 8px);\r\n margin: -4px;\r\n\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .item-content {\r\n padding: 4px;\r\n\r\n position: relative;\r\n border-bottom: 1px solid #d7d7d7;\r\n\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport const HeaderSkeleton = styled(Skeleton)`\r\n top: 37%;\r\n left: 20%;\r\n color: white;\r\n width: 60%;\r\n height: 15px;\r\n position: absolute;\r\n`;\r\nexport const CellSkeleton = styled(Skeleton)`\r\n top: 35%;\r\n left: 20%;\r\n color: white;\r\n width: 60%;\r\n height: 15px;\r\n position: absolute;\r\n background: #d7d7d7;\r\n`;\r\nexport const CardSkeleton = styled(Card)`\r\n &.card-content {\r\n display: flex;\r\n padding: 0;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n &.card-horizontal {\r\n height: 110px;\r\n max-height: 183px;\r\n }\r\n &.card-vertical {\r\n height: 220px;\r\n max-height: 308px;\r\n }\r\n & .card-skelet {\r\n background: #e0e5ec;\r\n }\r\n }\r\n`;\r\n\r\nexport const ShadowSkeleton = styled(Skeleton)`\r\n box-shadow: 0 3px 5px 2px #d7d7d7;\r\n`;\r\nexport const SkeletonGridSpacing1 = styled('div')`\r\n width: calc(100% + 8px);\r\n margin: -4px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n`;\r\nexport const SkeletonHeaderCell = styled('div')`\r\n color: white;\r\n height: 48px;\r\n position: relative;\r\n box-shadow: 0 3px 5px 2px #d7d7d7;\r\n border-right: 1px solid #d7d7d7;\r\n border-bottom: 1px solid #d7d7d7;\r\n background-color: #f5f5f5;\r\n\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n`;\r\nexport const CalendarSkeletonRoot = styled('div')`\r\n &.calendar-skeleton-root {\r\n width: 100%;\r\n z-index: 1;\r\n position: absolute;\r\n & .calendar-conteiner {\r\n width: 100%;\r\n height: inherit;\r\n display: flex;\r\n overflow-x: unset;\r\n overflow-y: auto;\r\n flex-direction: column;\r\n padding-left: 80px;\r\n & .table-skeleton-grid {\r\n width: calc(100% + 8px);\r\n margin: -4px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-header-cell {\r\n color: white;\r\n height: 48px;\r\n position: relative;\r\n box-shadow: 0 3px 5px 2px #d7d7d7;\r\n border-right: 1px solid #d7d7d7;\r\n border-bottom: 1px solid #d7d7d7;\r\n background-color: #f5f5f5;\r\n\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n & .table-skeleton-header-content {\r\n width: 100%;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-header-item {\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n }\r\n }\r\n & .table-skeleton-row-cell {\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n & .table-skeleton-row-content {\r\n width: 100%;\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .table-skeleton-row-item {\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n margin: 0;\r\n box-sizing: border-box;\r\n & .item-cell {\r\n color: white;\r\n height: 48px;\r\n\r\n width: calc(100% + 8px);\r\n margin: -4px;\r\n\r\n display: flex;\r\n flex-wrap: wrap;\r\n box-sizing: border-box;\r\n & .item-content {\r\n padding: 4px;\r\n\r\n position: relative;\r\n border-bottom: 1px solid #d7d7d7;\r\n\r\n flex-grow: 1;\r\n max-width: 100%;\r\n flex-basis: 0;\r\n\r\n margin: 0;\r\n box-sizing: border-box;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","import { Divider, TableContainer } from '@material-ui/core';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { TableCardGrid } from '../TableCardGrid';\r\nimport clsx from 'clsx';\r\nimport {\r\n TableSkeletonRoot,\r\n TableRowsSkeletonRoot,\r\n HeaderSkeleton,\r\n CellSkeleton,\r\n ShadowSkeleton,\r\n CardSkeleton,\r\n CalendarSkeletonRoot,\r\n} from './styled';\r\n\r\n/* \r\nxs (for phones - screens less than 768px wide)\r\nsm (for tablets - screens equal to or greater than 768px wide)\r\nmd (for small laptops - screens equal to or greater than 992px wide)\r\nlg (for laptops and desktops - screens equal to or greater than 1200px wide) \r\n*/\r\n\r\nconst headerHeight = 48;\r\nconst toolbarHeight = 30;\r\nconst searchBarHeight = 30;\r\n//const tableHeaderHeight = 30;\r\n//const tableRowHeight = 30;\r\n//const tableColumnHeight = 438;\r\n//const tableFooterHeight = 30;\r\n\r\nconst numOfHeaderItems = 7;\r\nconst numOfColumns = 7;\r\nconst numOfRows = 11;\r\nconst numberOfCards = 12;\r\nconst numOfCalendarRows = 24;\r\n\r\nconst RenderTableRowsItems = () => {\r\n return [...Array(numOfRows).keys()].map(key => (\r\n //Row item\r\n \r\n
    \r\n \r\n
    \r\n \r\n ));\r\n};\r\nconst RenderCalendarRowsItems = () => {\r\n return [...Array(numOfCalendarRows).keys()].map(key => (\r\n //Row item\r\n \r\n
    \r\n \r\n
    \r\n \r\n ));\r\n};\r\n\r\nconst RenderTableHeaderCells = () => {\r\n return [...Array(numOfHeaderItems).keys()].map(key => (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ));\r\n};\r\n\r\nconst RenderTableRows = () => {\r\n return [...Array(numOfColumns).keys()].map(key => (\r\n //TableRow\r\n
    \r\n
    \r\n
    {RenderTableRowsItems()}
    \r\n
    \r\n
    \r\n ));\r\n};\r\nconst RenderCalendarRows = () => {\r\n return [...Array(numOfColumns).keys()].map(key => (\r\n //TableRow\r\n
    \r\n
    \r\n
    \r\n {RenderCalendarRowsItems()}\r\n
    \r\n
    \r\n
    \r\n ));\r\n};\r\n\r\n/* const RenderFooter = classes => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}; */\r\nexport function TableCardsSkeleton({ isMobile }: { isMobile: boolean }) {\r\n return (\r\n \r\n {[...Array(numberOfCards).keys()].map(key => (\r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n}\r\nexport interface TableRowsSkeletonProps {\r\n id?: string;\r\n isMobile: boolean;\r\n isCards: boolean;\r\n}\r\nexport function TableRowsSkeleton(props: TableRowsSkeletonProps) {\r\n const { isMobile, isCards } = props;\r\n //RENDER\r\n return (\r\n \r\n {/* Table */}\r\n {/* TableHeaders */}\r\n\r\n {isCards ? (\r\n \r\n ) : (\r\n \r\n
    \r\n {RenderTableHeaderCells()}\r\n
    \r\n {/* TableBody */}\r\n
    \r\n {RenderTableRows()}\r\n
    \r\n
    \r\n )}\r\n\r\n {/* TableFooter */}\r\n {/* {RenderFooter(classes)} */}\r\n
    \r\n );\r\n}\r\nexport function CalendarSkeleton(props: TableRowsSkeletonProps) {\r\n //RENDER\r\n return (\r\n \r\n
    \r\n
    \r\n {RenderTableHeaderCells()}\r\n
    \r\n {/* TableBody */}\r\n
    \r\n {RenderCalendarRows()}\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport function TableSkeleton(props: TableRowsSkeletonProps) {\r\n const { isCards, isMobile } = props;\r\n //RENDER\r\n return (\r\n \r\n {/* Header */}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* Toolbar */}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {/* Search bar */}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* Table */}\r\n {/* TableHeaders */}\r\n \r\n {isCards ? (\r\n \r\n ) : (\r\n \r\n
    \r\n {RenderTableHeaderCells()}\r\n
    \r\n {/* TableBody */}\r\n
    {RenderTableRows()}
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const FlexRowDiv = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\nexport const FlexRowCenter = styled(FlexRowDiv)`\r\n align-self: center;\r\n justify-self: center;\r\n`;\r\nexport const NotAllowedContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 32px;\r\n gap: 16px;\r\n`;\r\nexport const FlexRowContent = styled.div`\r\n text-align: center;\r\n margin-top: 5%;\r\n`;\r\nexport const FlexRowNoContent = styled.div`\r\n text-align: center;\r\n padding-block: 48px;\r\n`;\r\nexport const FlexRowStart = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n gap: 16px;\r\n flex: 1 1 auto;\r\n`;\r\n","import clsx from 'clsx';\r\nimport {\r\n Card,\r\n CardActionArea,\r\n CardActions,\r\n CardContent,\r\n CardMedia,\r\n CardProps,\r\n Theme,\r\n useTheme,\r\n} from '@material-ui/core';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport React, { useState } from 'react';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { defaultImgSrc } from 'app/components/AssetThumbImage';\r\nimport { Body } from '../Typography';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport styled from 'styled-components';\r\nimport { bookitShadows } from 'styles/shadows/bookitShadow';\r\nimport * as rdd from 'react-device-detect';\r\nimport { hasStringProperty } from 'utils/typeUtils';\r\n// import useState from 'react-usestateref';\r\n\r\nexport type CardPosition = 'vertical' | 'horizontal';\r\nexport type CardBackground = 'white' | 'gray';\r\nexport type CardSize = 'small' | 'medium';\r\nexport type StatusType = 'info' | 'success' | 'warning' | 'error' | 'active';\r\nexport interface CardButton {\r\n key: React.Key | null | undefined;\r\n button: React.ReactNode;\r\n}\r\nexport interface CardContentRow {\r\n key: React.Key | null | undefined;\r\n label: React.ReactNode;\r\n text: React.ReactNode;\r\n}\r\nexport interface CardTopActions {\r\n key: React.Key | null | undefined;\r\n action: React.ReactNode;\r\n}\r\nexport interface DemSize {\r\n width: number;\r\n height: number;\r\n}\r\nexport interface BasicCardProps {\r\n position?: CardPosition;\r\n backStyle?: CardBackground;\r\n cardSize?: CardSize;\r\n mobileSize?: CardSize;\r\n useImage?: boolean;\r\n imageSrc?: string;\r\n showBullet?: boolean;\r\n useButtons?: boolean;\r\n useSelect?: boolean;\r\n selectVisible?: boolean;\r\n selected?: boolean;\r\n title?: React.ReactNode;\r\n disabled?: boolean;\r\n primaryAction?: () => void;\r\n checkBox?: React.ReactNode;\r\n topActions?: Array;\r\n hasTopActions?: boolean;\r\n buttons?: Array;\r\n cardContent?: React.ReactNode;\r\n cardContentRows?: Array;\r\n iconTitle?: React.ReactNode;\r\n status?: StatusType;\r\n maxContentHeight?: number;\r\n preventInnerClicks?: boolean;\r\n contentEditable?: boolean;\r\n loading?: boolean;\r\n info?: string;\r\n trimTitle?: boolean;\r\n showCheckBoxOnTop?: boolean;\r\n id?: string;\r\n checkBoxTitle?: string;\r\n descriptionKey?: string;\r\n maxContentRowsLength?: number;\r\n}\r\nconst StyledCardActions = styled(CardActions)<{ contentEditable?: boolean }>`\r\n pointer-events: ${props => (props.contentEditable ? 'initial' : undefined)};\r\n cursor: ${props => (props.contentEditable ? 'pointer' : undefined)};\r\n`;\r\nexport const StyledCardContent = styled.div<{ height: number }>`\r\n &.content {\r\n height: ${props => props.height}px;\r\n }\r\n`;\r\nexport function BasicCard(props: BasicCardProps) {\r\n const {\r\n position,\r\n cardSize,\r\n mobileSize,\r\n useButtons,\r\n useImage,\r\n useSelect,\r\n showBullet,\r\n selected,\r\n title,\r\n imageSrc,\r\n disabled,\r\n primaryAction,\r\n checkBox,\r\n topActions,\r\n buttons,\r\n cardContent,\r\n cardContentRows,\r\n selectVisible,\r\n iconTitle,\r\n status,\r\n maxContentHeight,\r\n preventInnerClicks,\r\n contentEditable,\r\n hasTopActions,\r\n loading,\r\n trimTitle = true,\r\n showCheckBoxOnTop,\r\n id,\r\n checkBoxTitle,\r\n descriptionKey,\r\n } = props;\r\n const theme = useTheme();\r\n const [imgError, setImageError] = React.useState(false);\r\n const imgSrc = React.useMemo(() => {\r\n return useImage\r\n ? imgError\r\n ? defaultImgSrc\r\n : imageSrc !== undefined\r\n ? imageSrc\r\n : defaultImgSrc\r\n : undefined;\r\n }, [imageSrc, imgError, useImage]);\r\n const [imageDimensions, setImageDimensions] = useState(\r\n undefined,\r\n );\r\n React.useEffect(() => {\r\n if (loading !== undefined) {\r\n if (loading === true && imageDimensions !== undefined) {\r\n setImageDimensions(undefined);\r\n }\r\n }\r\n }, [imageDimensions, loading]);\r\n const loadImage = (setImageDimensions, imageUrl) => {\r\n const img = new Image();\r\n img.src = imageUrl;\r\n img.onload = () => {\r\n setImageDimensions({\r\n height: img.height,\r\n width: img.width,\r\n });\r\n };\r\n };\r\n const backgroundSize = React.useMemo(() => {\r\n if (!!imageDimensions) {\r\n let horizontal = imageDimensions.width - imageDimensions.height > 0;\r\n if (imageDimensions.height === imageDimensions.width) {\r\n return 'contain';\r\n }\r\n if (position === 'vertical') {\r\n if (horizontal) {\r\n if (\r\n imageDimensions.height <\r\n (cardSize === 'medium' ? 180 : 150) / 1.8\r\n ) {\r\n return 'contain';\r\n } else {\r\n if (imageDimensions.width < imageDimensions.height * 1.33) {\r\n return 'contain';\r\n }\r\n return 'cover';\r\n }\r\n } else {\r\n return 'contain';\r\n }\r\n } else {\r\n if (!horizontal) {\r\n if (\r\n imageDimensions.height <\r\n (cardSize === 'medium' ? 180 : 150) / 1.8\r\n ) {\r\n return 'contain';\r\n } else {\r\n return 'cover';\r\n }\r\n } else {\r\n if (\r\n imageDimensions.width <\r\n (cardSize === 'medium' ? 180 : 150) / 1.8\r\n ) {\r\n return 'contain';\r\n } else {\r\n return 'cover';\r\n }\r\n }\r\n }\r\n }\r\n return undefined;\r\n }, [cardSize, imageDimensions, position]);\r\n const [showSelect, setShowSelect] = useState(selectVisible);\r\n React.useEffect(() => {\r\n let active =\r\n imgSrc !== undefined &&\r\n imageDimensions === undefined &&\r\n loading === false;\r\n if (active) {\r\n loadImage(setImageDimensions, imgSrc);\r\n }\r\n return () => {\r\n active = false;\r\n //setImageDimensions(undefined);\r\n };\r\n }, [imageDimensions, imgSrc, loading]);\r\n const showHeader = React.useMemo(() => {\r\n return !!title || !!iconTitle || (useSelect && showSelect) || hasTopActions;\r\n }, [iconTitle, showSelect, title, hasTopActions, useSelect]);\r\n // const headerHeight = React.useMemo(() => {\r\n // return showHeader ? 25 : 0;\r\n // }, [showHeader]);\r\n // const imageHeight = React.useMemo(() => {\r\n // return position === 'horizontal' || imgSrc === undefined\r\n // ? 0\r\n // : cardSize === 'medium'\r\n // ? 180\r\n // : 150;\r\n // }, [cardSize, imgSrc, position]);\r\n\r\n // const rowsHeight = 78;\r\n\r\n const contentHeight = React.useMemo(() => {\r\n let maxHeight = maxContentHeight || 60;\r\n return cardContent === undefined ? 0 : maxHeight;\r\n }, [cardContent, maxContentHeight]);\r\n // const otherHeight = React.useMemo(() => {\r\n // //paddings and gaps\r\n // return (\r\n // (rowsHeight > 0 || maxContentHeight === undefined\r\n // ? cardSize === 'medium'\r\n // ? 16 * 2\r\n // : 8 * 2\r\n // : 6) + (useButtons ? 16 : 8)\r\n // );\r\n // }, [cardSize, maxContentHeight, rowsHeight, useButtons]);\r\n\r\n // const buttonsHeight = React.useMemo(() => {\r\n // return useButtons ? 32 : 0;\r\n // }, [useButtons]);\r\n const [mouseUp, setMouseUp] = React.useState(false);\r\n // const [preventPrimary, setPreventPrimary] = React.useState(false);\r\n // const cardHeight = React.useMemo(() => {\r\n // return (\r\n // headerHeight + rowsHeight + buttonsHeight + otherHeight + contentHeight\r\n // );\r\n // }, [buttonsHeight, headerHeight, otherHeight, rowsHeight, contentHeight]);\r\n\r\n const trimTitleText = React.useMemo(() => {\r\n if (!!title && typeof title === 'string' && trimTitle) {\r\n let trimmedTitle = title as string;\r\n let trimSize = cardSize === 'medium' ? 48 : 56;\r\n if (trimmedTitle.length > trimSize) {\r\n trimmedTitle = trimmedTitle.substring(0, trimSize).trim() + '...';\r\n }\r\n return trimmedTitle;\r\n }\r\n return title;\r\n }, [cardSize, title, trimTitle]);\r\n\r\n return (\r\n \r\n {\r\n if (useSelect) {\r\n setShowSelect(true);\r\n }\r\n }}\r\n onMouseLeave={() => {\r\n if (useSelect) setShowSelect(selectVisible);\r\n }}\r\n onMouseUp={event => {\r\n if ('type' in event.target && event.target.type === 'checkbox') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } else if (\r\n hasStringProperty(event.target, 'className') &&\r\n event.target.className.indexOf('MuiCardMedia-root') > -1\r\n ) {\r\n setMouseUp(true);\r\n if (!!primaryAction) {\r\n primaryAction();\r\n }\r\n } else if (\r\n (hasStringProperty(event.target, 'className') &&\r\n event.target.className.indexOf('MuiLink-root') > -1) ||\r\n event.target?.parentElement?.nodeName === 'A'\r\n ) {\r\n setMouseUp(true);\r\n } else {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }}\r\n onClick={() => {\r\n if (mouseUp) {\r\n setMouseUp(false);\r\n return;\r\n }\r\n if (!!primaryAction) {\r\n primaryAction();\r\n }\r\n }}\r\n >\r\n {imgSrc !== undefined && (\r\n \r\n \r\n {\r\n console.log('img event', e);\r\n }}\r\n onLoad={e => {\r\n console.log('img event', e);\r\n }}\r\n src=\"\"\r\n onError={() => setImageError(true)}\r\n >\r\n {useSelect &&\r\n showCheckBoxOnTop &&\r\n (showSelect || selectVisible) &&\r\n position === 'vertical' &&\r\n !disabled &&
    {checkBox}
    }\r\n \r\n \r\n \r\n )}\r\n \r\n {showHeader && (\r\n \r\n
    \r\n {!!iconTitle && iconTitle}\r\n {title !== undefined && (\r\n \r\n \r\n \r\n \r\n {trimTitleText}\r\n \r\n \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n {!!topActions &&\r\n topActions.map(c => {\r\n return (\r\n e.stopPropagation()}>\r\n {c.action}\r\n \r\n );\r\n })}\r\n {(imgSrc === undefined ||\r\n position === 'horizontal' ||\r\n !showCheckBoxOnTop) &&\r\n useSelect &&\r\n (showSelect || selectVisible) &&\r\n !disabled && (\r\n \r\n {!!checkBoxTitle ? (\r\n \r\n {checkBox}\r\n \r\n ) : (\r\n {checkBox}\r\n )}\r\n \r\n )}\r\n
    \r\n \r\n )}\r\n {!!cardContent && (\r\n \r\n {cardContent}\r\n \r\n )}\r\n {!!cardContentRows && cardContentRows.length > 0 && (\r\n \r\n {cardContentRows.map(c => {\r\n return !!descriptionKey && c.label === descriptionKey ? (\r\n
  • \r\n {c.text}\r\n
  • \r\n ) : (\r\n
  • \r\n {showBullet && (\r\n \r\n )}\r\n\r\n {\r\n if (preventInnerClicks) {\r\n e.preventDefault();\r\n }\r\n }}\r\n className={'rowOverRule'}\r\n >\r\n \r\n {c.label}\r\n \r\n \r\n {c.text}\r\n \r\n \r\n
  • \r\n );\r\n })}\r\n \r\n )}\r\n\r\n {useButtons && !!buttons && (\r\n \r\n
    \r\n {buttons.map(c => {\r\n return (\r\n e.stopPropagation()}>\r\n {c.button}\r\n \r\n );\r\n })}\r\n
    \r\n {status !== undefined && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport const ImageContainer = styled('div')(({ theme }) => ({\r\n '&.imgContainer': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n alignSelf: 'stretch',\r\n background: `${bookitColors.base.white}`,\r\n borderRadius: '12px 12px 0px 0px',\r\n '&.position_horizontal': {\r\n borderRadius: '12px 0px 0px 12px',\r\n '&.mobileSizeMedium, &.mobileSizeSmall': {\r\n padding: '16px 0px 16px 16px',\r\n },\r\n },\r\n '&.position_vertical': {\r\n '&.cardSize_medium': {\r\n height: '180px',\r\n },\r\n '&.cardSize_small': {\r\n height: '150px',\r\n },\r\n },\r\n '& .frame': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n gap: '10px',\r\n flex: '1 0 0',\r\n alignSelf: 'stretch',\r\n borderRadius: '12px 12px 0px 0px',\r\n background: `${bookitColors.grayscale.graySelection}`,\r\n '&.position_horizontal': {\r\n height: 'auto',\r\n borderRadius: '12px 0px 0px 12px',\r\n '&.mobileSizeMedium': {\r\n alignItems: 'center',\r\n //padding: '16px 0px',\r\n borderRadius: '8px',\r\n height: '80px',\r\n },\r\n '&.mobileSizeSmall': {\r\n alignItems: 'center',\r\n //padding: '16px 0px',\r\n borderRadius: '8px',\r\n height: '64px',\r\n },\r\n },\r\n '& .mediaStyles': {\r\n imageRendering: '-webkit-optimize-contrast',\r\n backgroundSize: 'auto',\r\n width: '100%',\r\n backgroundBlendMode: 'multiply',\r\n minWidth: 'unset',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: 15,\r\n // '&.position_vertical': {\r\n // height: '100%',\r\n // width: '100%',\r\n // },\r\n '& .checkTop': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n padding: '5px',\r\n borderRadius: '8px',\r\n },\r\n '&.position_horizontal': {\r\n height: '100%',\r\n minWidth: '64px',\r\n '&.cardSize_small': {\r\n width: '150px',\r\n '&.mobileSizeMedium': {\r\n width: '80px',\r\n height: '80px',\r\n },\r\n '&.mobileSizeSmall': {\r\n width: '64px',\r\n height: '64px',\r\n },\r\n },\r\n '&.cardSize_medium': {\r\n width: '180px',\r\n '&.mobileSizeMedium': {\r\n width: '80px',\r\n height: '80px',\r\n },\r\n '&.mobileSizeSmall': {\r\n width: '64px',\r\n height: '64px',\r\n },\r\n },\r\n },\r\n '&.position_vertical': {\r\n '&.cardSize_small': {\r\n height: 0,\r\n paddingTop: 150,\r\n },\r\n '&.cardSize_medium': {\r\n height: 0,\r\n paddingTop: 180,\r\n },\r\n },\r\n '&.backgroundSizeCover': {\r\n backgroundSize: 'cover',\r\n },\r\n '&.backgroundSizeContain': {\r\n backgroundSize: 'contain',\r\n },\r\n },\r\n },\r\n },\r\n}));\r\nexport const StyledCard = styled(\r\n ({\r\n theme,\r\n children,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n children: React.ReactNode;\r\n } & CardProps) => {children},\r\n)({\r\n '&.card': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n //justifyContent: 'flex-start',\r\n justifyContent: 'center',\r\n alignItems: 'flex-start',\r\n borderRadius: '12px',\r\n padding: 0,\r\n flex: '1 0 0',\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n boxShadow: 'unset',\r\n height: '100%',\r\n '&.cardActive': {\r\n boxShadow: bookitShadows.shadowS,\r\n border: `1px solid ${bookitColors.primary.components}`,\r\n background: bookitColors.primary.background,\r\n '&.cardInfo': {\r\n border: `1px solid ${bookitColors.primary.borders}`,\r\n background: bookitColors.primary.bgLight,\r\n },\r\n '&.cardSuccess': {\r\n border: `1px solid ${bookitColors.success.components}`,\r\n background: bookitColors.success.background,\r\n },\r\n '&.cardWarning': {\r\n border: `1px solid ${bookitColors.warning.components}`,\r\n background: bookitColors.warning.background,\r\n },\r\n '&.cardError': {\r\n border: `1px solid ${bookitColors.danger.components}`,\r\n background: bookitColors.danger.background,\r\n },\r\n // boxShadow: `2px 1px 1px -2px ${bookitColors.primary.components}, 0px 0px 1px 2px ${bookitColors.primary.components}, 0px 1px 1px 0px ${bookitColors.primary.components}`,\r\n },\r\n\r\n '& .cardActionArea': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n flexDirection: 'column',\r\n alignSelf: 'stretch',\r\n borderRadius: '12px',\r\n height: '100%',\r\n '&.position_horizontal': {\r\n flexDirection: 'row',\r\n },\r\n //border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n '&.disabled': {\r\n backgroundColor: `${bookitColors.grayscale.grayBorders}`,\r\n },\r\n '&:hover': {\r\n opacity: 1,\r\n boxShadow: bookitShadows.shadowS,\r\n // border: `1px solid ${bookitColors.primary.components}`,\r\n background: bookitColors.primary.background,\r\n '&.cardInfo': {\r\n //border: `1px solid ${bookitColors.primary.borders}`,\r\n background: bookitColors.primary.bgLight,\r\n },\r\n '&.cardSuccess': {\r\n //border: `1px solid ${bookitColors.success.components}`,\r\n background: bookitColors.success.background,\r\n },\r\n '&.cardWarning': {\r\n //border: `1px solid ${bookitColors.warning.components}`,\r\n background: bookitColors.warning.background,\r\n },\r\n '&.cardError': {\r\n //border: `1px solid ${bookitColors.danger.components}`,\r\n background: bookitColors.danger.background,\r\n },\r\n },\r\n '& .cardContent': {\r\n // height: props => props.cardHeight - props.imageHeight, //isMobile ? 'auto' : `${cardcurrentHeight - 84}px`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n gap: 8,\r\n alignSelf: 'stretch',\r\n height: '100%',\r\n justifyContent: 'space-between',\r\n '&.cardSize_small': {\r\n padding: '8px 12px 12px 12px',\r\n width: '100%',\r\n },\r\n '&.cardSize_medium': {\r\n padding: '16',\r\n },\r\n '&.position_vertical': {\r\n '& .cardTitle': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n height: '25px',\r\n '& .title': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n gap: 8,\r\n '& .titleOverRule': {\r\n //display: 'inline-block',\r\n //whiteSpace: 'pre-wrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '28ch',\r\n display: '-webkit-box',\r\n '-webkit-line-clamp': '2',\r\n '-webkit-box-orient': 'vertical',\r\n wordBreak: 'break-all',\r\n\r\n // [theme.breakpoints.down('sm')]: {\r\n // maxWidth: '29ch',\r\n // },\r\n },\r\n },\r\n '& .checkWithAction': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n //gap: 8,\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n },\r\n '&.title-full-width': {\r\n '&.check-or-action': {\r\n '& .title': {\r\n width: 'calc(100% - 20px)',\r\n '& .titleOverRule': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n },\r\n '&.check-and-action': {\r\n '& .title': {\r\n width: 'calc(100% - 48px)',\r\n '& .titleOverRule': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '&.position_horizontal': {\r\n '&.cardSize_small.hasImage': {\r\n width: '80%',\r\n },\r\n '& .cardTitle': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n height: '25px',\r\n '& .title': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n gap: 8,\r\n '& .titleOverRule': {\r\n //display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '28ch',\r\n display: '-webkit-box',\r\n '-webkit-line-clamp': '2',\r\n '-webkit-box-orient': 'vertical',\r\n wordBreak: 'break-all',\r\n\r\n // [theme.breakpoints.down('sm')]: {\r\n // maxWidth: '29ch',\r\n // },\r\n },\r\n },\r\n '& .checkWithAction': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n //gap: 8,\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n },\r\n '&.title-full-width': {\r\n '&.check-or-action': {\r\n '& .title': {\r\n width: 'calc(100% - 20px)',\r\n },\r\n },\r\n '&.check-and-action': {\r\n '& .title': {\r\n width: 'calc(100% - 48px)',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '& .content': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: 0,\r\n margin: 0,\r\n gap: '8px',\r\n flexGrow: 1,\r\n overflowY: 'auto',\r\n overflowX: 'clip',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '& .cardContentRows': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: 0,\r\n margin: 0,\r\n //gap: '8px',\r\n gap: '4px',\r\n flexGrow: 2,\r\n overflowY: 'clip',\r\n overflowX: 'clip',\r\n //minHeight: '78px',\r\n //height: 'auto',\r\n height: '92px',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n },\r\n '&.position_horizontal': {\r\n '&.cardImageExist': {\r\n '& .contentRow': {\r\n '& .rowOverRule': {\r\n '& .rowTitle': {\r\n maxWidth: '14ch',\r\n },\r\n '& .rowText': {\r\n maxWidth: '16ch',\r\n },\r\n },\r\n },\r\n '&.mobileSizeMedium, &.mobileSizeSmall': {\r\n '& .contentRow': {\r\n '& .rowOverRule': {\r\n '& .rowTitle': {\r\n maxWidth: '16ch',\r\n },\r\n '& .rowText': {\r\n maxWidth: '16ch',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '& .contentRow': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n padding: 0,\r\n gap: 8,\r\n height: 'auto',\r\n //height: '20px',\r\n // width: '100%',\r\n '& .rowBullet': {\r\n paddingTop: '8px',\r\n },\r\n '& .rowOverRule': {\r\n display: 'flex',\r\n width: '100%',\r\n alignItems: 'flex-start',\r\n // whiteSpace: 'pre',\r\n // overflow: 'hidden',\r\n // textOverflow: 'ellipsis',\r\n // maxWidth: '36ch',\r\n '& .rowTitle': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n paddingRight: 8,\r\n display: 'inline',\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '20ch',\r\n '.cardImageExist &&': {\r\n maxWidth: '16ch',\r\n },\r\n },\r\n '& .rowText': {\r\n color: bookitColors.grayscale.blackRegular,\r\n display: 'inline',\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n //maxWidth: '60%',\r\n width: '28ch',\r\n '& > *': {\r\n display: 'initial',\r\n },\r\n },\r\n },\r\n },\r\n '.descriptionRow': {\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n '-webkit-line-clamp': '3',\r\n '-webkit-box-orient': 'vertical',\r\n wordBreak: 'break-all',\r\n height: 'max-content',\r\n minHeight: 'fit-content',\r\n },\r\n },\r\n '& .cardActions': {\r\n justifyContent: 'space-between',\r\n padding: '0px',\r\n gap: 8,\r\n width: '100%',\r\n '& .cardActionsButtons': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: 8,\r\n justifyContent: 'flex-start',\r\n width: '100%',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const BasicCardWithInfo = (props: BasicCardProps) => {\r\n const { info, ...other } = props;\r\n return info ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectglobalSettings,\r\n} from 'app/slice/selectors';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useEffectOnMount } from './useEffectOnMount';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\n\r\nexport const useGlobalServiceGroupsFilter = (\r\n applyGlobalServiceGroupsFilter: boolean,\r\n) => {\r\n const dispatch = useDispatch();\r\n const selectedServiceGroups = useSelector(selectGlobalServiceGroupFilter);\r\n const gloabalSettings = useSelector(selectglobalSettings);\r\n const { actions } = useAppSettingsSlice();\r\n useEffectOnMount(() => {\r\n dispatch(\r\n actions.showGlobalServiceGroupFilter(\r\n !gloabalSettings.GetBooleanByKey(\r\n AllowedSettings.HideTopServiceGroupFilter,\r\n ) && applyGlobalServiceGroupsFilter,\r\n ),\r\n );\r\n });\r\n const serviceGroups = React.useMemo(() => {\r\n return applyGlobalServiceGroupsFilter ? selectedServiceGroups || [] : [];\r\n }, [applyGlobalServiceGroupsFilter, selectedServiceGroups]);\r\n return { serviceGroups };\r\n};\r\n","/**\r\n *\r\n * SubLocationListPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ISubLocationListDto } from 'api/odata/generated/entities/ISubLocationListDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface SubLocationListPickerProps\r\n extends Omit, 'loadData'> {\r\n withoutServiceGroups?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/SubLocationList';\r\nexport const initSubLocationListData = (\r\n initval: string | undefined,\r\n): Promise => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as ISubLocationListDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as ISubLocationListDto[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter?: Entity[],\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'LocationListId',\r\n 'LocationListLocationType',\r\n 'LocationListLocationType1Name',\r\n 'LocationListName',\r\n 'LocationType',\r\n 'LocationTypeId',\r\n 'RoomId',\r\n 'RoomName',\r\n 'ServiceGroups',\r\n ],\r\n globalServiceGroupFilter:\r\n globalServiceGroupFilter?.map(\r\n serviceGroup =>\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n serviceGroup.Id,\r\n 'Id',\r\n ),\r\n ) ?? [],\r\n isOptionalServiceGroup: true,\r\n });\r\n\r\nexport function SubLocationListPicker(props: SubLocationListPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n !props.withoutServiceGroups\r\n ? globalServiceGroupFilter || undefined\r\n : undefined,\r\n );\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { call, put, select, takeLatest, takeLeading } from 'redux-saga/effects';\r\nimport { push } from 'connected-react-router';\r\nimport { internalIdLoginActions as actions } from '.';\r\nimport { IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { LoginTypes } from 'app/slice/types';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\n\r\nconst SESSIONSTORAGE_KEY = 'internalIdLogin';\r\nfunction storeInternalIdLogin(item: IAuthenticatedUser | null): void {\r\n if (item === null) {\r\n sessionStorage.removeItem(SESSIONSTORAGE_KEY);\r\n } else {\r\n sessionStorage.setItem(SESSIONSTORAGE_KEY, JSON.stringify(item));\r\n }\r\n}\r\nfunction loadInternalIdLogin(): IAuthenticatedUser | null {\r\n const s = sessionStorage.getItem(SESSIONSTORAGE_KEY);\r\n if (s === null) {\r\n return null;\r\n }\r\n const d = JSON.parse(s);\r\n const f = d as IAuthenticatedUser;\r\n return f;\r\n}\r\nfunction* doInit(action: PayloadAction<{ isLargeAnimals: boolean }>) {\r\n // /try get identity stored in sessionstorage (saved during internalid entry)\r\n try {\r\n const storedIdentity: IAuthenticatedUser | null = yield call(\r\n loadInternalIdLogin,\r\n );\r\n if (storedIdentity !== null) {\r\n yield put(actions.success(storedIdentity));\r\n yield put(actions.init_success());\r\n return;\r\n }\r\n } catch (error: unknown) {\r\n console.error('ap init error', error);\r\n }\r\n\r\n // simulate internalid login for technicians so that they'll be able to enter the Kiosk cases list/details\r\n const user = yield select(selectAuthenticatedUser);\r\n if (!isNullOrUndefined(user)) {\r\n if (\r\n action.payload.isLargeAnimals &&\r\n user.Roles.indexOf(Roles.LargeAnimalsOperatingRoomTechnician) >= 0\r\n ) {\r\n yield put(actions.success(user));\r\n yield put(actions.init_success());\r\n return;\r\n }\r\n }\r\n\r\n yield put(actions.init_success());\r\n}\r\nfunction* doLogin(\r\n action: PayloadAction<{ internalId: string; General: boolean }>,\r\n) {\r\n const httpPayload = {\r\n internalId: action.payload.internalId,\r\n General: action.payload.General,\r\n };\r\n try {\r\n // send authentication request\r\n const requestURL = '/api/account/internalidlogin';\r\n const result = yield call(httpClient.post, requestURL, httpPayload);\r\n result.LoginType = LoginTypes.InternalId;\r\n //store authentication result in session storage\r\n yield call(storeInternalIdLogin, result);\r\n yield put(actions.success(result));\r\n } catch (err) {\r\n yield put(actions.error(err));\r\n }\r\n}\r\nfunction* doRedirectToLogin() {\r\n yield call(storeInternalIdLogin, null);\r\n yield put(push('/internalidlogin'));\r\n}\r\nexport function* internalIdLoginSaga() {\r\n yield takeLatest(actions.login.type, doLogin);\r\n yield takeLeading(actions.redirectToLogin, doRedirectToLogin);\r\n yield takeLeading(actions.logout, doRedirectToLogin);\r\n yield takeLatest(actions.init.type, doInit);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { internalIdLoginSaga } from './saga';\r\nimport { InternalIdLoginState } from './types';\r\n\r\nexport const initialState: InternalIdLoginState = {\r\n processing: false,\r\n error: false,\r\n internalId: '',\r\n initialized: false,\r\n isLargeAnimals: true,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'internalIdLogin',\r\n initialState,\r\n reducers: {\r\n init(\r\n state,\r\n action: PayloadAction<{ isLargeAnimals: boolean; returnUrl?: string }>,\r\n ) {\r\n state.isLargeAnimals = action.payload.isLargeAnimals;\r\n state.initialized = false;\r\n state.returnUrl = action.payload.returnUrl;\r\n },\r\n init_success(state, action: PayloadAction) {\r\n state.initialized = true;\r\n },\r\n login(\r\n state,\r\n action: PayloadAction<{ internalId: string; General: boolean }>,\r\n ) {\r\n state.processing = true;\r\n state.error = false;\r\n },\r\n success(state, action: PayloadAction) {\r\n state.processing = false;\r\n state.identity = action.payload;\r\n state.internalId = '';\r\n },\r\n error(state, action: PayloadAction) {\r\n state.processing = false;\r\n state.identity = undefined;\r\n state.error = true;\r\n state.internalId = '';\r\n },\r\n clearError(state, action: PayloadAction) {\r\n state.error = false;\r\n state.processing = false;\r\n },\r\n redirectToLogin(state, action: PayloadAction) {},\r\n logout(state, action: PayloadAction) {\r\n state.identity = undefined;\r\n state.internalId = '';\r\n state.processing = false;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: internalIdLoginActions } = slice;\r\n\r\nexport const useInternalIdLoginSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: internalIdLoginSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useInternalIdLoginSlice();\r\n *E\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","/**\r\n *\r\n * SuperGroupPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ISuperGroupFilterDto } from 'api/odata/generated/entities/ISuperGroupDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\n\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity } from 'types/common';\r\n\r\nexport type DivisionsUrl = 'base' | 'full' | 'public';\r\nexport interface SuperGroupPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType?: DivisionsUrl;\r\n}\r\n\r\nconst url = '/api/odata/v4/SuperGroupFilter';\r\nconst publicUrl = '/api/odata/v4/SuperGroupFilter/GetPublicDivisions';\r\nconst baseUrl = '/api/odata/v4/SuperGroupFilter/GetDivisions';\r\nexport const initSuperGroupData = (\r\n initval: string | undefined,\r\n sourceUrl?: DivisionsUrl,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as ISuperGroupFilterDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select:\r\n sourceUrl !== undefined && sourceUrl !== 'full'\r\n ? 'Id,Name,ServiceGroups'\r\n : 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n sourceUrl === 'public' ? publicUrl : sourceUrl === 'base' ? baseUrl : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as ISuperGroupFilterDto[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n isAuthenticated?: boolean,\r\n urlType?: DivisionsUrl,\r\n) => {\r\n const sourceUrl =\r\n urlType === 'public' || !isAuthenticated\r\n ? publicUrl\r\n : urlType === 'base'\r\n ? baseUrl\r\n : url;\r\n\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select:\r\n urlType !== undefined && urlType !== 'full'\r\n ? ['Id', 'Name', 'ServiceGroups']\r\n : ['Id', 'Name'],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter &&\r\n globalServiceGroupFilter.length > 0 &&\r\n urlType !== undefined &&\r\n urlType !== 'full'\r\n ? [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function SuperGroupPicker(props: SuperGroupPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n isAuth ? globalServiceGroupFilter || [] : [],\r\n isAuth,\r\n props.urlType,\r\n );\r\n return (\r\n \r\n );\r\n}\r\n","import { TopActionButton } from 'app/components/BasicButtons/TopActionButton';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n bindPopover,\r\n bindTrigger,\r\n usePopupState,\r\n} from 'material-ui-popup-state/hooks';\r\nimport {\r\n Divider,\r\n LinearProgress,\r\n ListItemText,\r\n MenuItem,\r\n MenuList,\r\n Popover,\r\n} from '@material-ui/core';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport {\r\n AssetsFilterForWorkOrder,\r\n AssetsPicker,\r\n initAssetsData,\r\n} from 'app/components/pickers/MultiSelectPickers/AssetsPicker/index';\r\nimport { initWOTypeDataParams } from 'app/components/pickers/AutocompletePickers/WorkOrderTypePicker';\r\nimport { WorkOrderQueryStringParameters } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/types';\r\nimport { GetRawValue } from 'app/components/BasicTable/types/FilterParam';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { WorkOrderDetailsProps } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details';\r\nimport { Body } from 'app/components/Typography';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { useLocationChange } from 'app/hooks/useLocationChange';\r\nimport { ButtonsVariant } from 'app/components/BasicButtons/Button';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport styled from 'styled-components';\r\nimport clsx from 'clsx';\r\n\r\nexport interface NewWorkOrderButtonProps {\r\n assetIds?: string;\r\n downtime?: boolean;\r\n text?: string;\r\n noChangeOnMobile?: boolean;\r\n fullWidth?: boolean;\r\n isIconButton?: boolean;\r\n variant?: ButtonsVariant;\r\n initAsset?: IAssetDto;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n id?: string;\r\n}\r\n\r\nexport const NewWorkOrderButton = (props: NewWorkOrderButtonProps) => {\r\n const { t } = useTranslation();\r\n const location = useLocation();\r\n const isMobile = DetectIsMobile();\r\n const { openPanel } = useSidePanelState();\r\n const {\r\n assetIds,\r\n downtime,\r\n text,\r\n noChangeOnMobile,\r\n fullWidth,\r\n isIconButton,\r\n variant,\r\n useSidePanel,\r\n openPanelWithCover,\r\n id,\r\n } = props;\r\n const popupState = usePopupState({\r\n variant: 'popover',\r\n popupId: 'workOrderTypeSelection',\r\n });\r\n //const [open, setOpen] = useState(false);\r\n const [assets, setAssets] = React.useState(\r\n undefined,\r\n );\r\n const [workTypes, setWorkTypes] = React.useState<\r\n IWorkOrderTypeDto[] | undefined\r\n >(undefined);\r\n const [loadingAsset, setLoadingAssets] = React.useState(\r\n !!assetIds && !!assets && assets.length < 1,\r\n );\r\n const handleAssetChange = React.useCallback(\r\n (value: IAssetDto[] | []) => {\r\n setAssets(value);\r\n setLoadingAssets(true);\r\n initWOTypeDataParams(value, undefined, downtime).then(types => {\r\n setWorkTypes(types);\r\n setLoadingAssets(false);\r\n });\r\n },\r\n [downtime],\r\n );\r\n const getParamFromUrl = (name: string): string | undefined => {\r\n return GetRawValue(new URLSearchParams(location.search), name) ?? undefined;\r\n };\r\n const handleWorkTypeClick = (event: IWorkOrderTypeDto) => {\r\n let params = {\r\n queryParams: {\r\n id: undefined,\r\n aType: event.Id.toString(),\r\n down: (downtime || getParamFromUrl('down')) && event.AssetAlertType,\r\n source: getParamFromUrl('source'),\r\n Up: getParamFromUrl('Up'),\r\n title: getParamFromUrl('title'),\r\n eStart: getParamFromUrl('eStart'),\r\n sympt: getParamFromUrl('sympt'),\r\n aStatus: getParamFromUrl('aStatus'),\r\n aStart: getParamFromUrl('aStart'),\r\n desc: getParamFromUrl('desc'),\r\n assetId: !!assets ? assets.map(a => a.Id).join(',') : undefined,\r\n offH:\r\n (downtime || getParamFromUrl('down')) && event.AssetAlertType\r\n ? getParamFromUrl('offH')\r\n : undefined,\r\n offStart: getParamFromUrl('offStart'),\r\n offEnd: getParamFromUrl('offStart'),\r\n reason: getParamFromUrl('reason'),\r\n eqid: getParamFromUrl('eqid'),\r\n sid: getParamFromUrl('sid'),\r\n } as WorkOrderQueryStringParameters,\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps;\r\n const panelProps = {\r\n renderPageType: RenderPageType.WorkOrderDetails,\r\n renderPageProps: params,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState;\r\n\r\n !!openPanelWithCover\r\n ? openPanelWithCover(panelProps)\r\n : openPanel(panelProps);\r\n };\r\n\r\n useLocationChange((current: Location, previus: Location) => {\r\n let ids = getParamFromUrl('aid');\r\n if ((!!ids && ids !== '') || !!assetIds) {\r\n setLoadingAssets(true);\r\n initAssetsData(ids || assetIds).then(response => {\r\n setAssets(response);\r\n initWOTypeDataParams(response, undefined, downtime).then(types => {\r\n setLoadingAssets(false);\r\n setWorkTypes(types);\r\n });\r\n });\r\n } else {\r\n setWorkTypes(undefined);\r\n setAssets(undefined);\r\n setLoadingAssets(false);\r\n }\r\n });\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n {t(translations.CreateAnAssetRelatedEvent)}\r\n \r\n {\r\n popupState.close();\r\n setAssets([]);\r\n setWorkTypes([]);\r\n }}\r\n >\r\n \r\n \r\n
    \r\n
    \r\n {\r\n handleAssetChange(value);\r\n }}\r\n placeholder={t(translations.QuickWorkOrderPleaseSelectAssets)}\r\n fullWidth={true}\r\n name=\"assets\"\r\n variant=\"filled\"\r\n id=\"asset-id\"\r\n label={t(translations.Asset)}\r\n value={\r\n props.initAsset !== undefined\r\n ? [props.initAsset]\r\n : assets || undefined\r\n }\r\n disabled={props.initAsset !== undefined}\r\n />\r\n
    \r\n {loadingAsset && (\r\n
    \r\n \r\n
    \r\n )}\r\n {assets && assets.length > 0 && (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {t(translations.PleaseSelectAnEventType)}\r\n \r\n \r\n \r\n {workTypes && workTypes.length > 0 ? (\r\n workTypes.map(wt => (\r\n {\r\n handleWorkTypeClick(wt);\r\n popupState.close();\r\n setAssets([]);\r\n setWorkTypes([]);\r\n }}\r\n >\r\n \r\n {wt.Name}\r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n {t(translations.NoAlertTypesFoundForSelectedAssets)}\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n )}\r\n \r\n \r\n
    \r\n );\r\n};\r\nconst NewWorkOrderRoot = styled.div`\r\n &.work-root {\r\n display: flex;\r\n flex-direction: column;\r\n min-width: 350px;\r\n padding: 8px;\r\n gap: 16px;\r\n &.work-root-short: {\r\n min-width: 100%;\r\n width: 100%;\r\n }\r\n & .work-root-header {\r\n padding: 8px;\r\n display: flex;\r\n justify-content: space-between;\r\n gap: 8px;\r\n }\r\n & .work-root-item {\r\n padding: 8px;\r\n display: flex;\r\n gap: 8px;\r\n & .work-root-list {\r\n max-height: 420px;\r\n }\r\n }\r\n & .work-root-progress {\r\n width: 100%;\r\n }\r\n }\r\n`;\r\n","export enum BudgetExperimentStatuses {\r\n Draft = 0,\r\n Pending = 1,\r\n Approved = 2,\r\n Rejected = 3,\r\n}\r\n","/**\r\n *\r\n * RegionPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { IRegionDtoFilter } from 'app/pages/Regions/IRegionDto';\r\n\r\nexport type RegionUrl = 'base' | 'filter' | 'public';\r\n\r\nexport interface RegionPickerProps\r\n extends Omit, 'loadData'> {\r\n urlType: RegionUrl;\r\n}\r\n\r\nconst url = '/api/odata/v4/regions';\r\nconst filterUrl = '/api/odata/v4/regions/RegionsFilter';\r\nconst publicUrl = '/api/odata/v4/regions/PublicRegionsFilter';\r\n\r\nexport const initRegionData = (\r\n initval: string | undefined,\r\n urlType: RegionUrl | undefined,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IRegionDtoFilter[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select:\r\n urlType === 'base' || urlType === undefined\r\n ? 'Id,Name,'\r\n : 'Id,Name,ServiceGroups',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n let initUrl =\r\n urlType === undefined\r\n ? url\r\n : urlType === 'public'\r\n ? publicUrl\r\n : urlType === 'filter'\r\n ? filterUrl\r\n : url;\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as IRegionDtoFilter[]);\r\n }\r\n};\r\n\r\nexport function RegionPicker(props: RegionPickerProps) {\r\n const loadData = getAutoCompleteLoadDataFn({\r\n url:\r\n props.urlType === 'public'\r\n ? publicUrl\r\n : props.urlType === 'filter'\r\n ? filterUrl\r\n : url,\r\n select:\r\n props.urlType === 'base' || props.urlType === undefined\r\n ? ['Id', 'Name']\r\n : ['Id', 'Name', 'ServiceGroups'],\r\n predicates: props.predicates,\r\n });\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const regionFilterUrl = url;\r\n","import { InputBaseComponentProps } from '@material-ui/core';\r\nimport { httpClient } from 'api/HttpClient';\r\n\r\nimport {\r\n AutocompleteMultiPickerEx,\r\n AutocompleteMultiPickerExProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPickerEx';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface MyAssetAvailabilityTypeMultiPickerProps\r\n extends Omit>, 'loadData'> {\r\n inputProps?: InputBaseComponentProps;\r\n urlType?: 'allServices' | 'onlineServices';\r\n}\r\n\r\nconst url = '/api/odata/v4/AvailabilityTypesFilter/GetMyAsset';\r\nconst onlineUrl = '/api/odata/v4/AvailabilityTypesFilter/GetOnlineMyAsset';\r\nexport const initMyAssetAvailabilityTypeMultiData = (\r\n initval: string | undefined,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const ids = initval.split('|').map(v => parseInt(v));\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Id asc', //Must be ordered by ID to prevent re-rendering as a result of reordering.\r\n $filter: '(Id in (' + ids.join(',') + '))',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: ids.length,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nexport const initMyAssetAvailabilityTypeOnlineMultiData = (\r\n initval: string | undefined,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const ids = initval.split('|').map(v => parseInt(v));\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Id asc', //Must be ordered by ID to prevent re-rendering as a result of reordering.\r\n $filter: '(Id in (' + ids.join(',') + '))',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: ids.length,\r\n };\r\n return httpClient\r\n .get(onlineUrl, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nexport function MyAssetAvailabilityTypeMultiPicker(\r\n props: MyAssetAvailabilityTypeMultiPickerProps,\r\n) {\r\n const { urlType, predicates, ...other } = props;\r\n const loadData = getAutoCompleteLoadDataFn>({\r\n url: !!urlType && urlType === 'onlineServices' ? onlineUrl : url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: ['Id', 'Name'],\r\n });\r\n\r\n return (\r\n \r\n );\r\n}\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128 41.522C91.867.049 43.399-.377 11.818.076 5.26.17 0 5.516 0 12.075v23.609c0 6.641 5.393 12.037 12.034 12C39.464 47.528 104 52.257 104 104v128H68c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h36v128c0 51.494-62.335 55.801-92.092 55.985C5.314 464.026 0 469.39 0 475.984v23.943c0 6.558 5.258 11.903 11.815 11.999 31.535.46 80.027.054 116.185-41.448 36.132 41.473 84.601 41.899 116.182 41.446 6.558-.094 11.818-5.44 11.818-11.999v-23.608c0-6.641-5.393-12.037-12.034-12C216.538 464.47 152 459.731 152 408V280h36c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-36V104c0-51.514 62.301-55.805 92.092-55.985C250.686 47.975 256 42.61 256 36.016V12.073C256 5.515 250.742.17 244.185.074 212.65-.386 164.157.02 128 41.522z\"\n});\n\nfunction SvgICursor(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 256 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgICursor);\nexport default __webpack_public_path__ + \"static/media/I-cursor.1deb019e.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"\n});\n\nfunction SvgCheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheck);\nexport default __webpack_public_path__ + \"static/media/check.53b599c1.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"\n});\n\nfunction SvgTimes(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 352 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTimes);\nexport default __webpack_public_path__ + \"static/media/times.c578e4ea.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"\n});\n\nfunction SvgChevronDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 448 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevronDown);\nexport default __webpack_public_path__ + \"static/media/chevron-down.bc213772.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"\n});\n\nfunction SvgChevronUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 448 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevronUp);\nexport default __webpack_public_path__ + \"static/media/chevron-up.6f3cb9a5.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M254.812 101.975C254.631 79.9568 249.072 58.0916 235.287 41.7913C221.503 25.491 199.402 14.6276 176.498 13.7931C176.015 13.7753 175.529 13.7647 175.043 13.754C175.078 13.8393 175.117 13.928 175.153 14.0168C176.008 16.1937 171.833 20.4446 168.227 20.4446C166.118 20.4446 162.902 19.2372 161.961 18.669V18.6299C161.56 20.1017 160.969 21.515 160.204 22.8346C156.775 28.7794 150.658 31.7128 146.271 29.6708C145.611 30.6083 144.851 31.8442 144.166 32.938C147.52 35.47 150.201 39.2344 150.201 43.0094C150.201 43.4604 150.183 43.9363 150.154 44.4299C153.076 46.8092 155.305 54.7286 154.769 58.1449C154.491 58.4684 154.173 58.7548 153.821 58.9972C154.333 62.5485 155.458 70.3612 156.04 71.3911C156.693 72.5453 175.035 101.36 176.512 103.562C178.887 103.31 181.127 105.252 181.532 107.994C181.958 110.803 180.325 113.381 177.882 113.754C175.44 114.127 173.111 112.149 172.685 109.34C172.55 108.477 172.616 107.595 172.877 106.762C172.816 106.765 172.754 106.765 172.693 106.762C171.226 105.718 160.499 92.1838 155.405 85.7027C159.182 94.0837 163.598 103.793 164.609 106.19C166.938 106.293 169.015 108.346 169.441 111.162C169.917 114.28 168.163 117.131 165.536 117.533C162.909 117.934 160.374 115.732 159.902 112.614C159.715 111.437 159.861 110.232 160.325 109.134C160.176 109.098 160.027 109.066 159.87 109.02C157.293 106.914 141.699 86.5621 138.269 80.8623C134.134 89.428 130.023 96.0049 127.893 96.5021C121.202 98.0753 101.23 80.0988 97.9713 74.0901L93.5588 79.9639L67.8115 60.6095C50.9958 73.9729 36.9276 89.95 32.7636 108.481C25.8733 138.752 45.4509 175.766 73.9741 205.32C102.433 234.874 139.899 256.963 169.87 249.558C199.842 242.154 222.362 205.32 236.139 175.766C249.917 146.213 255.053 123.939 254.812 101.975Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.421 29.9265C139.085 27.4892 140.604 24.9564 141.972 22.341C141.92 21.3134 141.982 20.2832 142.156 19.2692C138.564 20.4529 134.908 21.8225 131.187 23.378L134.283 25.7076L128.958 32.8101C131.755 30.9635 134.283 29.8626 136.342 29.8626C136.702 29.8615 137.063 29.8828 137.421 29.9265Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.387 192.514L113.694 194.045L109.938 189.805C108.529 189.494 107.076 189.438 105.646 189.638L111.081 191.903L119.644 201.137C119.547 199.488 119.121 197.875 118.39 196.394C117.659 194.912 116.638 193.593 115.387 192.514Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.203 167.975L108.128 170.979L96.6547 110.8L92.3594 111.62L103.399 169.591C104.248 168.82 104.919 168.209 105.203 167.975Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.92 199.084C99.92 199.084 103.75 190.426 104.389 189.109L110.573 191.687C110.996 190.501 111.358 189.464 111.638 188.654C111.638 188.654 64.9609 185.671 57.8398 185.671L59.2846 192.024C59.2846 192.024 99.7035 210.8 103.072 211.762C103.072 211.762 104.755 207.373 106.672 202.273L99.92 199.084Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.936 202.504L192.565 147.662L188.629 142.512L116.506 197.735L120.936 202.504Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.9202 199.084C99.9202 199.084 102.799 192.571 103.981 189.986C102.02 190.541 100.228 191.573 98.7624 192.99C97.2973 194.407 96.2055 196.164 95.5844 198.106C94.9634 200.047 94.8324 202.113 95.2031 204.117C95.5739 206.122 96.4348 208.003 97.7092 209.594C98.9835 211.185 100.632 212.435 102.507 213.234C104.381 214.033 106.425 214.355 108.454 214.171C110.484 213.988 112.436 213.305 114.138 212.183C115.839 211.061 117.237 209.535 118.206 207.742L99.9202 199.084Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M162.431 16.1689C162.431 16.2438 162.431 16.3187 162.409 16.3935C162.413 16.3115 162.42 16.2367 162.431 16.1689Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.287 73.6427L64.084 47.9351\",\n stroke: \"#EDF0F3\",\n strokeWidth: 7,\n strokeMiterlimit: 10\n});\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.576 31.9791L95.373 6.27502\",\n stroke: \"#EDF0F3\",\n strokeWidth: 7,\n strokeMiterlimit: 10\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.6113 48.9968C103.13 48.9968 105.983 46.1429 105.983 42.6223C105.983 39.1018 103.13 36.2478 99.6113 36.2478C96.0921 36.2478 93.2393 39.1018 93.2393 42.6223C93.2393 46.1429 96.0921 48.9968 99.6113 48.9968Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.694 50.5636L110.823 50.4067L110.694 50.5636Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108.319 53.5575L108.483 53.3472L108.319 53.5575Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.529 57.2997L105.753 56.9872L105.529 57.2997Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.537 55.9189C106.58 55.8654 106.619 55.8084 106.662 55.7513C106.619 55.8084 106.594 55.8654 106.537 55.9189Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.681 54.3912L107.887 54.1213L107.681 54.3912Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.574 46.0115L114.625 45.9534L114.574 46.0115Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.066 55.2116C107.134 55.1192 107.201 55.0234 107.272 54.931C107.201 55.0234 107.134 55.1192 107.066 55.2116Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.5244 73.0176C97.5288 73.041 97.5348 73.0641 97.5426 73.0866C97.5348 73.0641 97.5288 73.041 97.5244 73.0176Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.95 58.1272C105.035 58.0065 105.121 57.8822 105.209 57.7721C105.121 57.8857 105.035 58.0065 104.95 58.1272Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.8154 70.9294C97.8651 70.7661 97.9148 70.5992 97.9716 70.4287C97.9148 70.5992 97.8651 70.7661 97.8154 70.9294Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.5168 72.4067C97.5168 72.5346 97.499 72.6589 97.499 72.7619C97.499 72.6589 97.5061 72.5346 97.5168 72.4067Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.7802 71.0574C97.7482 71.1746 97.7198 71.2882 97.6914 71.4125C97.7198 71.2882 97.7482 71.1746 97.7802 71.0574Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.656 71.558C97.6312 71.6574 97.6134 71.7533 97.5957 71.8492C97.6134 71.7533 97.6312 71.6574 97.656 71.558Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.5667 72.002C97.5667 72.0978 97.5419 72.1902 97.5312 72.2825C97.5419 72.1902 97.5525 72.0907 97.5667 72.002Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.351 49.7644L111.465 49.6254L111.351 49.7644Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.7852 66.3804L100.016 65.9507L99.7852 66.3804Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.4688 69.1289C98.522 68.9975 98.5788 68.8697 98.6356 68.7383C98.5788 68.8697 98.522 68.9975 98.4688 69.1289Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.7236 68.5395L98.9544 68.0424L98.7236 68.5395Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.416 67.0905C99.4941 66.9378 99.5722 66.7887 99.6503 66.6324C99.5722 66.7887 99.4941 66.9378 99.416 67.0905Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.0078 67.9215C99.1037 67.7156 99.2066 67.506 99.3131 67.293C99.2066 67.506 99.1037 67.7156 99.0078 67.9215Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.0107 70.315C98.0569 70.1765 98.1066 70.0345 98.1634 69.8925C98.1066 70.0416 98.0746 70.1836 98.0107 70.315Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.2344 69.7078C98.2805 69.587 98.3302 69.4628 98.3799 69.3527C98.3302 69.4628 98.2805 69.6048 98.2344 69.7078Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.582 63.2445L101.855 62.7935L101.582 63.2445Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.065 60.8971C103.225 60.6521 103.388 60.407 103.555 60.1584C103.399 60.407 103.225 60.6521 103.065 60.8971Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102.064 62.4596L102.334 62.0299L102.064 62.4596Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102.558 61.682L102.845 61.2345L102.558 61.682Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref39 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.808 59.782L104.092 59.3665L103.808 59.782Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.162 65.6985C100.244 65.5493 100.329 65.3966 100.418 65.2439C100.329 65.3788 100.244 65.5315 100.162 65.6985Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref41 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.56 64.9882C100.687 64.768 100.815 64.5443 100.95 64.317C100.812 64.5301 100.684 64.7538 100.56 64.9882Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.397 63.5428C101.28 63.7346 101.17 63.9264 101.042 64.1146C101.17 63.9228 101.269 63.7346 101.397 63.5428Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref43 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.383 58.951L104.642 58.5746L104.383 58.951Z\",\n fill: \"#EDF0F3\"\n});\n\nvar _ref44 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M93.5981 105.828C91.5357 105.828 77.8118 104.002 77.1622 104.002C76.5126 104.002 74.9258 104.414 74.9258 105.476C74.9258 109.07 86.47 112.252 98.1952 112.252C109.92 112.252 93.5981 105.828 93.5981 105.828Z\",\n fill: \"#0B1B2D\"\n});\n\nvar _ref45 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.1565 234.849C79.8789 234.849 99.9204 214.8 99.9204 190.067C99.9204 165.335 79.8789 145.286 55.1565 145.286C30.4341 145.286 10.3926 165.335 10.3926 190.067C10.3926 214.8 30.4341 234.849 55.1565 234.849Z\",\n stroke: \"#0B1B2D\",\n strokeWidth: 16,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref46 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M214.844 234.849C239.566 234.849 259.608 214.8 259.608 190.067C259.608 165.335 239.566 145.286 214.844 145.286C190.122 145.286 170.08 165.335 170.08 190.067C170.08 214.8 190.122 234.849 214.844 234.849Z\",\n stroke: \"#0B1B2D\",\n strokeWidth: 16,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref47 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M215.543 184.731L174.878 110.426L171.431 112.314L212.096 186.619L215.543 184.731Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref48 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M192.568 144.377H97.499V147.083H192.568V144.377Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref49 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.5344 142.226L52.2168 187.194L55.537 190.69L102.855 145.723L99.5344 142.226Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref50 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.203 167.975C104.099 168.934 97.1729 175.39 97.1729 175.39L113.694 194.045L116.747 191.271L110.258 173.16L105.203 167.975Z\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref51 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M155.412 85.6814C160.506 92.1624 171.234 105.696 172.7 106.74C172.762 106.744 172.823 106.744 172.885 106.74C172.624 107.574 172.558 108.456 172.693 109.319C173.119 112.128 175.448 114.102 177.89 113.733C180.332 113.364 181.965 110.782 181.539 107.973C181.121 105.231 178.895 103.289 176.52 103.541C175.043 101.339 156.701 72.5239 156.048 71.3698C155.466 70.3434 154.34 62.5129 153.829 58.9758\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref52 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.155 44.4229C153.076 46.8022 155.306 54.7215 154.769 58.1378C153.066 60.1692 149.058 60.9362 146.782 60.8297\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref53 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.181 32.9486C147.532 35.4807 150.198 39.245 150.198 43.02C150.198 47.2815 148.778 53.4359 146.63 60.0661\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref54 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.267 80.8234C134.135 89.4316 130.024 96.005 127.894 96.5022C120.602 98.2175 97.5176 76.6968 97.5176 72.7762C97.5176 64.6545 124.852 29.8556 136.36 29.8556C136.716 29.8574 137.072 29.8811 137.425 29.9266\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref55 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M139.931 34.22C140.932 34.8557 141.968 35.3138 142.753 35.2854C143.296 34.4544 145 31.4997 146.281 29.6886\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref56 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.972 22.3409C140.604 24.957 139.084 27.491 137.421 29.93\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref57 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.162 40.7898C139.215 35.8543 136.552 31.2329 133.257 27.0748\",\n stroke: \"#0B1B2D\",\n strokeWidth: 4,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref58 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.8057 72.3392C104.358 74.4132 121.482 72.4848 133.967 69.7539\",\n stroke: \"#0B1B2D\",\n strokeWidth: 4,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref59 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.21 24.1841C141.888 22.6167 141.861 21.003 142.129 19.4254\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref60 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M162.43 16.1689C162.171 18.5259 161.416 20.8013 160.215 22.8453C156.665 29.0245 150.179 31.9685 145.767 29.4187C144.928 28.9315 144.202 28.2718 143.637 27.4833\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref61 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.158 13.7647C143.513 11.634 145.778 5.84897 149.211 4.05203C153.016 2.05267 155.405 3.40925 158.068 3.40925C160.46 3.40925 162.359 2.24444 164.997 2.4078C168.423 2.62087 168.852 6.01588 169.388 7.62461C170.098 9.75536 173.577 9.96844 175.171 14.0169C176.026 16.1938 171.852 20.4447 168.245 20.4447C166.137 20.4447 162.92 19.2372 161.98 18.669C162.178 17.8406 162.335 17.0026 162.448 16.1583C161.174 16.1583 153.286 14.578 152.643 14.6135C152.001 14.649 149.644 17.0426 149.427 17.5433C148.458 17.3803 147.5 17.1621 146.555 16.8899\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref62 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.989 19.7344C143.836 19.757 143.681 19.7688 143.527 19.7699C143.019 19.77 142.519 19.6417 142.074 19.3969C141.629 19.152 141.253 18.7987 140.981 18.3696C140.709 17.9405 140.55 17.4496 140.519 16.9425C140.487 16.4354 140.584 15.9285 140.801 15.4689C141.017 15.0094 141.346 14.612 141.758 14.3138C142.169 14.0156 142.649 13.8262 143.153 13.7632C143.657 13.7001 144.168 13.7655 144.64 13.9533C145.112 14.1411 145.529 14.4451 145.852 14.8372\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref63 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.374 50.4849C147.286 52.8287 147.847 54.9488 147.914 56.4652C146.661 58.4965 133.449 63.3795 130.768 62.9889C126.864 58.4965 122.174 37.2848 130.293 34.0034C130.737 33.8235 131.209 33.7191 131.688 33.6945\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref64 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.798 62.964C133.157 66.7994 136.544 76.8353 137.648 79.687C138.869 82.8476 157.052 106.677 159.852 108.981C160.009 109.028 160.158 109.059 160.307 109.095C159.844 110.193 159.697 111.398 159.884 112.575C160.357 115.693 162.881 117.902 165.518 117.494C168.156 117.085 169.909 114.241 169.423 111.123C168.997 108.324 166.92 106.272 164.592 106.151C162.817 101.953 150.623 75.3544 149.657 72.691C148.791 70.3187 146.796 61.3979 146.175 57.7756\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref65 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.39 189.109C103.751 190.426 99.9209 199.084 99.9209 199.084L122.463 209.738L124.177 205.988L111.092 191.9L104.39 189.109Z\",\n stroke: \"#0B1B2D\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref66 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.1563 196.208C58.5461 196.208 61.294 193.459 61.294 190.067C61.294 186.676 58.5461 183.927 55.1563 183.927C51.7665 183.927 49.0186 186.676 49.0186 190.067C49.0186 193.459 51.7665 196.208 55.1563 196.208Z\",\n fill: \"#0B1B2D\"\n});\n\nvar _ref67 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M214.844 196.208C218.234 196.208 220.982 193.459 220.982 190.067C220.982 186.676 218.234 183.927 214.844 183.927C211.454 183.927 208.706 186.676 208.706 190.067C208.706 193.459 211.454 196.208 214.844 196.208Z\",\n fill: \"#0B1B2D\"\n});\n\nvar _ref68 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.893 96.5021C120.871 98.1534 99.2171 78.2699 97.6125 73.2875C94.091 76.4517 86.9629 85.5607 86.9629 95.419C86.9629 109.837 115.919 132.384 126.398 139.455C124.375 144.693 104.336 187.727 103.679 189.751C105.241 191.04 109.931 192.788 111.677 192.788C121.326 185.064 148.166 144.135 148.628 140.19C149.008 136.898 133.289 106.549 127.999 96.4524C127.965 96.4716 127.93 96.4882 127.893 96.5021Z\",\n fill: \"#0B1B2D\"\n});\n\nvar _ref69 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.06 93.5227C129.782 95.2451 128.685 96.314 127.865 96.5022C126.58 96.8041 124.805 96.385 122.753 95.4652C117.485 105.071 126.626 133.229 126.626 133.229C126.626 133.229 106.009 165.628 104.674 167.744C104.674 169.52 107.237 172.652 109.686 174.101C114.255 172.325 159.615 130.175 161.823 120.076C159.324 116.372 138.362 98.395 131.06 93.5227Z\",\n fill: \"#0B1B2D\"\n});\n\nvar _ref70 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M160.012 113.158L157.013 114.223L158.032 117.089L161.429 115.881C160.74 115.104 160.253 114.168 160.012 113.158Z\",\n fill: \"#0B1B2D\"\n});\n\nvar _ref71 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M181.539 107.987C181.573 108.229 181.593 108.474 181.6 108.718L186.701 106.907L185.682 104.052L180.733 105.81C181.147 106.473 181.421 107.214 181.539 107.987Z\",\n fill: \"#0B1B2D\"\n});\n\nvar _ref72 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M173.537 111.581C173.1 110.9 172.812 110.133 172.692 109.333C172.661 109.113 172.639 108.893 172.629 108.676L169.143 109.915C169.499 110.912 169.607 111.981 169.459 113.03L173.537 111.581Z\",\n fill: \"#0B1B2D\"\n});\n\nfunction SvgNotavailable(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 270,\n height: 251,\n viewBox: \"0 0 270 251\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22, _ref23, _ref24, _ref25, _ref26, _ref27, _ref28, _ref29, _ref30, _ref31, _ref32, _ref33, _ref34, _ref35, _ref36, _ref37, _ref38, _ref39, _ref40, _ref41, _ref42, _ref43, _ref44, _ref45, _ref46, _ref47, _ref48, _ref49, _ref50, _ref51, _ref52, _ref53, _ref54, _ref55, _ref56, _ref57, _ref58, _ref59, _ref60, _ref61, _ref62, _ref63, _ref64, _ref65, _ref66, _ref67, _ref68, _ref69, _ref70, _ref71, _ref72);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNotavailable);\nexport default __webpack_public_path__ + \"static/media/notavailable.274e4f98.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M269.97 117.824C269.034 86.0372 248.314 53.7649 220.257 41.9969C192.152 30.2847 156.785 39.0662 121.652 39.3596C117.209 39.398 112.769 39.2967 108.358 39.1221L105.381 41.3052L100.697 44.449L99.9987 39.1675L100.159 38.7169L99.6075 38.6854C101.668 44.8332 99.1045 53.9431 99.1045 57.4291C99.0922 58.0934 98.8572 58.7342 98.4373 59.249L98.9717 58.8997L99.2337 57.1322L99.8974 52.3083L100.317 49.8073L103.572 52.0813L109.412 60.4052L110.408 62.4661C118.791 67.9397 126.127 81.4963 126.127 83.7108C126.127 84.2104 125.624 84.9893 124.778 85.9324C125.854 87.3296 129.948 93.3482 130.563 94.7174C131.894 93.5822 174.631 57.754 175.333 57.2685C176.035 56.7829 177.251 56.8214 177.726 57.1427C178.111 57.3954 178.391 57.7806 178.511 58.2255C178.632 58.6703 178.585 59.1439 178.379 59.5564C178.002 60.255 172.689 64.9287 172.689 64.9287C173.122 65.4667 175.34 71.0905 172.5 73.7312C170.569 75.5301 168.379 76.1274 166.272 75.0166C164.875 76.5256 131.475 113.44 125.648 113.44C124.569 113.44 122.431 111.914 119.996 109.626L121.516 111.477C122.057 118.313 121.935 123.21 121.167 124.248C116.769 130.109 85.3034 134.828 72.2639 125.484C71.2544 124.765 70.4195 121.247 69.9724 116.098C63.4404 112.717 59.619 109.612 59.144 104.047C58.8436 100.394 62.8222 91.1231 63.4544 90.1974C62.5846 89.6141 61.9664 89.0936 61.7288 88.6849C60.2722 86.2224 67.7648 72.7776 76.5987 65.9522L76.3507 67.042C77.3167 64.64 78.4598 62.3131 79.7704 60.0804C76.7664 58.1941 74.8802 55.6477 74.8802 51.8892C74.8802 48.8851 76.5254 43.4325 77.5803 37.3825C58.9379 36.4848 42.1014 36.9354 29.3762 44.2289C7.06262 56.9855 -2.65854 90.7109 0.621436 119.637C3.84203 148.629 20.0009 172.923 34.8149 197.458C49.6324 222.05 62.9828 246.934 85.1742 260.683C107.425 274.501 138.457 277.254 164.571 267.358C190.629 257.462 211.825 234.918 231.851 207.976C251.936 181.003 270.851 149.677 269.97 117.824Z\",\n fill: \"#EDF0F4\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.0039 93.6626L70.2484 93.7954C70.2484 93.6591 70.2728 93.5194 70.2868 93.3832L70.21 93.7534L70.0039 93.6626Z\",\n fill: \"#EDF0F4\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.4032 61.7675L89.3414 62.3439L94.05 61.5859L95.0979 60.8663C93.108 61.6577 90.9902 62.0791 88.8489 62.1099C85.1218 62.1099 81.992 61.303 79.6517 59.8324L80.0429 60.3075L83.4032 61.7675Z\",\n fill: \"#EDF0F4\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.2778 124.786C72.5049 129.365 72.2778 302.83 72.2778 302.83H84.3812L102.894 188.834\",\n fill: \"#081829\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.4858 89.9844C62.8536 90.903 58.875 100.184 59.1754 103.838C59.6365 109.427 63.4719 112.518 70.0318 115.91\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.6407 65.7461C67.8067 72.5715 60.3142 86.0058 61.7673 88.4789C62.4659 89.6351 66.1091 91.6959 70.2624 93.5682\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.251 12.3689C113.192 16.7527 114.278 22.9948 112.72 29.3696C110.918 36.7399 106.056 42.3288 100.453 44.3163\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.558 110.779C122.099 117.614 121.977 122.512 121.208 123.549C116.814 129.41 85.3488 134.13 72.3058 124.786C68.5263 122.082 67.164 80.2388 79.6901 59.8149\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.048 49.4929C104.051 51.1836 107.495 55.8677 110.394 62.1098\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.2778 302.83V311.154H100.708V306.452L84.3813 302.83\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.708 301.345V311.154H130.483V307.339L112.371 301.345\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.604 85.4784C125.152 86.0652 129.931 93.0339 130.598 94.5219C131.929 93.3867 174.666 57.555 175.368 57.0694C176.07 56.5839 177.286 56.6258 177.761 56.9472C178.146 57.1992 178.425 57.5838 178.546 58.0281C178.666 58.4723 178.619 58.9453 178.414 59.3574C178.037 60.056 172.724 64.7297 172.724 64.7297C173.157 65.2711 175.372 70.8949 172.535 73.5357C170.6 75.3346 168.414 75.9319 166.304 74.8176C164.907 76.3301 131.509 113.241 125.683 113.241C122.986 113.241 113.733 103.751 109.566 96.6003\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M95.0735 69.7526C95.0735 81.2797 104.155 97.3477 107.299 97.3477C110.443 97.3477 126.162 85.8207 126.162 83.0262C126.162 80.2318 113.936 59.6228 103.457 59.6228C99.2651 59.6228 95.0735 64.1638 95.0735 69.7526Z\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.0291 23.6478C100.051 23.6932 110.984 11.8798 110.984 11.4222C110.984 10.3743 109.126 4.83777 98.343 4.83777C90.6408 4.83777 78.5199 10.231 78.5199 27.9443C78.5199 37.0646 74.9535 46.8068 74.9535 51.208C74.9535 57.8972 80.3468 62.1133 88.8593 62.1133C92.9707 62.1133 99.1534 60.0873 99.1534 56.7619C99.1534 51.8996 104.141 36.1006 94.6124 32.6599\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M95.7092 32.1779C95.1397 32.5493 94.475 32.7483 93.795 32.7508C91.6188 32.7508 89.8549 30.7108 89.8549 28.1923C89.8549 25.6738 91.6188 23.6514 93.795 23.6514C94.2013 23.651 94.6044 23.7219 94.9861 23.861\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M255.17 0H186.005V51.1313H255.17V0Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M220.586 124.639C236.849 124.639 250.032 111.455 250.032 95.1925C250.032 78.9297 236.849 65.7461 220.586 65.7461C204.323 65.7461 191.139 78.9297 191.139 95.1925C191.139 111.455 204.323 124.639 220.586 124.639Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.2778 124.786C73.3406 125.325 74.3706 125.927 75.3622 126.588L79.6412 128.642L80.235 130.885L104.48 186.745L102.908 188.841\",\n fill: \"#081829\"\n});\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.208 123.549C117.247 128.831 91.301 133.183 76.6581 127.154L110.635 206.977L100.708 301.345H112.371C112.371 301.345 135.076 219.489 135.076 215.884C135.076 212.28 121.208 123.549 121.208 123.549Z\",\n fill: \"#081829\"\n});\n\nfunction SvgNotAllowed(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 270,\n height: 313,\n viewBox: \"0 0 270 313\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNotAllowed);\nexport default __webpack_public_path__ + \"static/media/notAllowed.57f975c6.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 0H4C1.79086 0 0 1.79086 0 4V16C0 18.2091 1.79086 20 4 20H16C18.2091 20 20 18.2091 20 16V4C20 1.79086 18.2091 0 16 0Z\",\n fill: \"#0086C9\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.12927 14.179L4.3376 10.3873C4.1098 10.1595 4.1098 9.7902 4.3376 9.56238L5.16253 8.73742C5.39033 8.5096 5.7597 8.5096 5.9875 8.73742L8.54175 11.2916L14.0127 5.82075C14.2405 5.59295 14.6098 5.59295 14.8376 5.82075L15.6626 6.64571C15.8904 6.87351 15.8904 7.24285 15.6626 7.47067L8.95423 14.179C8.72641 14.4068 8.35706 14.4068 8.12927 14.179Z\",\n fill: \"white\"\n});\n\nfunction SvgChecked(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChecked);\nexport default __webpack_public_path__ + \"static/media/checked.b5d24de9.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 0.5H16C17.933 0.5 19.5 2.067 19.5 4V16C19.5 17.933 17.933 19.5 16 19.5H4C2.067 19.5 0.5 17.933 0.5 16V4C0.5 2.067 2.067 0.5 4 0.5Z\",\n fill: \"white\",\n stroke: \"#CDD5DF\"\n});\n\nfunction SvgUnchecked(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUnchecked);\nexport default __webpack_public_path__ + \"static/media/unchecked.bc2fa9d4.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 0H4C1.79086 0 0 1.79086 0 4V16C0 18.2091 1.79086 20 4 20H16C18.2091 20 20 18.2091 20 16V4C20 1.79086 18.2091 0 16 0Z\",\n fill: \"#0086C9\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.3571 8.75H4.64286C4.14983 8.75 3.75 9.12318 3.75 9.58333V10.4167C3.75 10.8768 4.14983 11.25 4.64286 11.25H15.3571C15.8502 11.25 16.25 10.8768 16.25 10.4167V9.58333C16.25 9.12318 15.8502 8.75 15.3571 8.75Z\",\n fill: \"white\"\n});\n\nfunction SvgUndeterminate(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUndeterminate);\nexport default __webpack_public_path__ + \"static/media/undeterminate.f42039b4.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.747 77.6918L147.08 58.562L143.959 41.7158V41.6921C143.932 41.7565 143.908 41.8242 143.881 41.8852C144.263 43.8639 150.476 76.1061 150.612 77.7426L150.747 77.6918Z\",\n fill: \"#F8F8F8\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.91 37.7242V37.7008C144.912 37.7197 144.912 37.7388 144.91 37.7577V37.7242Z\",\n fill: \"#F8F8F8\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M238.303 92.3591C231.64 80.9273 226.026 70.9456 220.639 62.2041C199.272 59.7815 186.938 50.1082 176.232 50.1082C174.986 50.1082 173.049 50.6164 172.314 50.6164L170.689 53.6658L170.737 57.8638L173.252 58.3381L176.638 60.144L179.039 62.3836L181.977 66.7612L181.778 66.8933C183.223 67.4524 184.361 68.313 185.001 69.5633C185.837 71.1896 185.766 73.1006 185.099 75.0827C190.276 94.4768 186.917 123.321 184.984 124.923C182.059 127.349 150.872 119.163 148.282 115.551C147.206 114.061 147.426 103.859 149.359 92.4201L149.606 92.3015C145.357 92.8098 141.541 92.3015 139.148 89.9128C133.69 84.451 136.365 46.1677 136.663 42.1391C135.799 40.0976 135.372 37.8978 135.41 35.6812C135.43 30.3888 137.573 26.0892 140.228 26.0892C141.409 26.0892 142.493 26.9464 143.329 28.3627L142.99 27.5495H144.236L145.547 28.4236L147.24 31.4967L147.659 33.8448L147.531 42.2035L152.481 70.6983L155.487 70.4035L157.014 67.0153L160.322 62.3667L162.912 59.5443V57.7554C157.888 56.8948 153.974 50.0167 153.974 41.6614C153.974 41.0312 153.994 40.4077 154.038 39.7979L154.323 36.2131L154.851 35.0307C154.874 34.9392 154.898 34.8477 154.925 34.7596C154.536 34.5461 153.232 33.3467 153.232 29.2131C153.232 21.0814 162.225 16.7106 169.765 15.0165C159.736 10.6796 148.513 7.31512 136.151 4.58083C110.944 -0.887732 81.1734 -3.75077 63.1545 9.48696C45.1355 22.7247 38.8753 51.887 28.5893 84.2342C18.229 116.578 3.84628 152.097 11.2712 184.525C18.6149 216.872 47.8373 246.123 79.8598 250.222C111.882 254.322 146.671 233.281 183.633 219.271C220.595 205.261 259.721 198.373 268.152 177.017C276.582 155.661 254.385 119.831 238.303 92.3591ZM98.2884 205.827H78.8L92.0248 201.148V198.413H98.2884V205.827Z\",\n fill: \"#EDF0F4\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156.449 31.4697C156.447 31.2999 156.456 31.1301 156.476 30.9615C155.856 31.9983 155.051 34.3497 154.918 34.7834L154.942 34.8342L156.449 31.4697Z\",\n fill: \"#F8F8F8\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.9234 262.512H47.326V275.072H31.7888V262.512H0V257.768L36.7286 207.535H47.326V249.128H57.9234V262.512ZM31.7888 249.128V233.478L20.6802 249.128H31.7888Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.7705 241.406C66.7705 221.948 72.4281 206.606 92.1636 206.606C111.801 206.606 117.266 221.948 117.266 241.406C117.266 260.763 111.815 276 92.1636 276C72.4281 276 66.7705 260.763 66.7705 241.406ZM101.749 241.406C101.749 229.67 99.4836 220.61 92.1806 220.61C84.7725 220.61 82.2027 229.67 82.2027 241.406C82.2027 253.038 84.7725 261.895 92.1806 261.895C99.4836 261.909 101.749 253.038 101.749 241.406Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M181.171 262.512H170.574V275.072H155.04V262.512H123.241V257.768L159.977 207.535H170.574V249.128H181.171V262.512ZM155.04 249.128V233.478L143.928 249.128H155.04Z\",\n fill: \"#E0E5EC\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M181.527 136.955C181.818 139.726 187.936 259.232 187.936 259.232H181.527L150.361 146.709L181.527 136.955Z\",\n fill: \"#081829\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.997 124.93C185.807 141.258 178.856 154.631 166.785 154.631C150.216 154.631 128.279 144.06 122.242 138.093C120.736 142.552 99.365 198.715 99.365 198.715H90.5146C90.5146 198.715 96.1858 133.323 106.817 116.551C110.314 111.889 133.876 112.062 148.296 115.558C159.743 122.806 181.046 126.041 184.997 124.93Z\",\n fill: \"#081829\"\n});\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.99 27.8511C143.364 27.6247 143.801 27.5226 144.236 27.5597C145.533 27.6512 147.652 31.0801 147.652 33.855C147.652 36.63 146.87 37.6735 147.107 39.6895C147.344 41.7055 152.474 69.0416 152.474 70.7085C153.479 70.7104 154.483 70.6459 155.48 70.5154\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M170.567 57.742C175.754 58.3248 179.489 61.8621 182.13 67.0392\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M153.114 76.7702C155.484 69.4517 158.714 63.0886 162.905 59.88\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M185.112 75.0897C190.289 94.4838 186.93 123.328 184.997 124.93C182.072 127.356 150.886 119.17 148.296 115.558C147.219 114.068 147.439 103.866 149.372 92.4271\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M160.078 74.1205C158.7 74.588 150.618 77.7425 150.618 77.7425C150.483 76.1161 144.27 43.8604 143.888 41.8851C144.672 39.9134 145.059 37.8064 145.029 35.6846C145.029 30.3889 142.879 26.0892 140.228 26.0892C137.577 26.0892 135.43 30.3889 135.43 35.6846C135.392 37.9012 135.819 40.1011 136.683 42.1426C136.385 46.1745 133.71 84.4579 139.168 89.9163C144.734 95.4865 157.969 90.8243 166.528 87.0126\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.077 37.202L149.005 35.8543L148.064 39.4008L153.136 40.7486L154.077 37.202Z\",\n fill: \"#081829\"\n});\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M178.69 66.1786C181.585 66.5175 183.961 67.5339 185.014 69.5669C188.837 76.9938 173.699 90.3739 169.511 89.3777C165.323 88.3816 158.568 73.426 159.831 70.7426C160.19 69.9734 162.11 68.9536 164.747 68.0625\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n});\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M162.905 59.88V57.7793\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M170.567 53.8524V63.9424C170.567 64.5523 168.763 64.942 166.907 64.9996\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M172.314 50.6098C171.855 51.7527 171.269 52.8404 170.567 53.8524\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M165.986 57.542C165.332 57.7643 164.646 57.8787 163.955 57.8808C158.429 57.8808 153.953 50.6335 153.953 41.6954C153.942 39.3613 154.263 37.0375 154.905 34.7936\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M170.798 47.8313C170.994 49.6779 171.691 50.6097 172.314 50.6097C173.049 50.6097 174.986 50.1014 176.232 50.1014C188.468 50.1014 202.837 62.7428 230.404 62.7428C244.803 62.7428 267.4 59.1073 267.4 37.9445C267.4 26.5161 263.289 12.7058 241.563 12.7058C227.766 12.7058 218.1 19.4822 206.764 19.4822C192.206 19.4822 186.592 14.2068 176.533 14.2068C169.369 14.2068 153.246 18.3607 153.246 29.2436C153.246 33.3772 154.539 34.5767 154.939 34.7901C155.071 34.3497 155.877 32.005 156.496 30.9682C156.387 32.4874 156.822 33.9958 157.722 35.2238\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M168.692 41.9055C168.975 42.2285 169.24 42.5679 169.484 42.922\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M168.289 43.3997C168.709 43.1133 169.206 42.9609 169.714 42.9627C170.295 42.9622 170.859 43.1601 171.312 43.5236C171.766 43.8871 172.081 44.3946 172.208 44.9621C172.334 45.5296 172.263 46.1232 172.007 46.6449C171.75 47.1666 171.324 47.5852 170.797 47.8315\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.029 35.6847C145.05 37.6073 144.74 39.5192 144.111 41.3362C146.992 41.675 149.078 41.9224 149.078 41.9224L151.065 33.8821C151.065 33.8821 148.127 32.659 144.467 31.1716C144.848 32.6453 145.037 34.1623 145.029 35.6847Z\",\n fill: \"#081829\"\n});\n\nvar _ref26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.43 35.6846C135.43 32.6929 136.107 30.0229 137.191 28.2645C134.032 27.021 131.374 26.0113 130.619 25.8216C128.422 25.2795 125.202 38.5646 127.338 39.0966C128.202 39.31 131.916 39.8081 136.036 40.3299C135.627 38.8157 135.423 37.2532 135.43 35.6846Z\",\n fill: \"#081829\"\n});\n\nvar _ref27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M98.2884 198.414V205.827H78.8L92.0282 201.148V198.414\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M187.598 258.951V266.364H170.141L181.987 261.685V258.951\",\n stroke: \"#081829\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgNotFoundPage(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 270,\n height: 276,\n viewBox: \"0 0 270 276\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22, _ref23, _ref24, _ref25, _ref26, _ref27, _ref28);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNotFoundPage);\nexport default __webpack_public_path__ + \"static/media/notFoundPage.5a3f32d7.svg\";\nexport { ForwardRef as ReactComponent };","import { SvgIcon } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { ReactComponent as IcursorIcon } from './I-cursor.svg';\r\nimport { ReactComponent as CheckIcon } from './check.svg';\r\nimport { ReactComponent as TimesIcon } from './times.svg';\r\nimport { ReactComponent as ChevronDownIcon } from './chevron-down.svg';\r\nimport { ReactComponent as ChevronUpIcon } from './chevron-up.svg';\r\nimport { ReactComponent as NotAvailableIcon } from './notavailable.svg';\r\nimport { ReactComponent as NotAllowedIcon } from './notAllowed.svg';\r\n\r\nimport { ReactComponent as CheckedIcon } from './checked.svg';\r\nimport { ReactComponent as UncheckedIcon } from './unchecked.svg';\r\nimport { ReactComponent as UndeterminateIcon } from './undeterminate.svg';\r\nimport { ReactComponent as NotFoundPageIcon } from './notFoundPage.svg';\r\n\r\nexport function Search(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\nexport function ICursor(props) {\r\n return ;\r\n}\r\nexport function Check(props) {\r\n return ;\r\n}\r\nexport function Times(props) {\r\n return ;\r\n}\r\nexport function ChevronDown(props) {\r\n return (\r\n \r\n );\r\n}\r\nexport function ChevronUp(props) {\r\n return ;\r\n}\r\nexport function TableHeaderIcon(props) {\r\n return ;\r\n}\r\nexport function NotAvailableSVG(props) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport function NotAllowedSVG(props) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport function NotFoundPageSVG(props) {\r\n return (\r\n \r\n );\r\n}\r\nexport function Checked(props) {\r\n return ;\r\n}\r\nexport function Unchecked(props) {\r\n return ;\r\n}\r\nexport function Indeterminate(props) {\r\n return ;\r\n}\r\n","import { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport { FormFieldsSection } from 'app/components/Forms/FormsLayout';\r\nimport {\r\n loadOfflineServiceData,\r\n UsageRelatedFilter,\r\n} from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { BookQuickServices } from 'app/pages/OtherServiceDetails/Details/components/BookQuickServices';\r\nimport { ErrorServices } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { IUsageHistory } from 'app/pages/UsageHistoryPage/IUsageHistory';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\nexport interface EndUsageOfflineServicesProps {\r\n title: string;\r\n offlineIds: number[];\r\n usageId: number;\r\n onChange: (services: IOtherServices[]) => void;\r\n isProcessing: boolean;\r\n setError?: (error: ErrorServices) => void;\r\n reset?: boolean;\r\n usageData?: IUsageHistory;\r\n}\r\nexport function EndUsageOfflineServices(props: EndUsageOfflineServicesProps) {\r\n const { title, setError, offlineIds, usageId, onChange, usageData } = props;\r\n const { t } = useTranslation();\r\n //const dispatch = useDispatch();\r\n const { newDate } = useSystemDate();\r\n //const { actions } = useOfflineServiceStateSlice();\r\n //const { actions: layoutActions } = useLayoutSlice();\r\n const [servicesSelected, setServicesSelected] = useAsyncExtendedState<\r\n IOtherServices[]\r\n >([]);\r\n //const { openPanel } = useSidePanelState(undefined, undefined, false, false);\r\n React.useEffect(() => {\r\n if (props.reset === true) {\r\n setServicesSelected([]);\r\n }\r\n }, [props.reset, setServicesSelected]);\r\n const changeOfflineServices = React.useCallback(\r\n (services: IOtherServices[], operation: 'add' | 'remove' | 'update') => {\r\n if (operation === 'add') {\r\n let addedServ = services.filter(\r\n f => !servicesSelected.some(s => s.ServiceTypeID === f.ServiceTypeID),\r\n );\r\n setServicesSelected([...servicesSelected, ...addedServ]);\r\n onChange([...servicesSelected, ...addedServ]);\r\n }\r\n if (operation === 'remove') {\r\n let otherServices = servicesSelected.filter(f => {\r\n return !services.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n });\r\n setServicesSelected(otherServices);\r\n onChange(otherServices);\r\n }\r\n if (operation === 'update') {\r\n const updated = servicesSelected.map(f => {\r\n let service = services.find(s => s.ServiceTypeID === f.ServiceTypeID);\r\n if (!!service && service !== null) {\r\n return Object.assign({}, f, service);\r\n } else {\r\n return f;\r\n }\r\n });\r\n setServicesSelected(updated);\r\n onChange(updated);\r\n }\r\n },\r\n [onChange, servicesSelected, setServicesSelected],\r\n );\r\n const initServices = async (): Promise => {\r\n return new Promise(async resolve => {\r\n resolve(servicesSelected);\r\n });\r\n };\r\n const fetchServiceType = async (\r\n searchTerm: string | null,\r\n predicates: (string | Condition)[] | undefined,\r\n ) => {\r\n try {\r\n const data = await loadOfflineServiceData(\r\n [\r\n ...UsageRelatedFilter(\r\n offlineIds,\r\n servicesSelected.map(f => f.Id),\r\n ),\r\n ...(predicates ?? []),\r\n ],\r\n 'relatedServices',\r\n [],\r\n undefined,\r\n 'InventoryBatches',\r\n )(searchTerm, undefined);\r\n return data.value;\r\n } catch {\r\n return [];\r\n }\r\n };\r\n const prepareService = (serviceType: IOfflineServiceFilterDto) => {\r\n let batch = serviceType.InventoryBatchesEnabled\r\n ? !!serviceType.InventoryBatches &&\r\n serviceType.InventoryBatches.length > 0\r\n ? serviceType.InventoryBatches.filter(\r\n f =>\r\n (f.ExpirationDate === null || f.ExpirationDate > newDate()) &&\r\n (serviceType.NotLessThanZero ? f.Inventory > 0 : true) &&\r\n f.StokRenewed === true,\r\n ).sort((a: IInventoryBatchDto, b: IInventoryBatchDto) => {\r\n return b.Id - a.Id;\r\n })[0]\r\n : null\r\n : null;\r\n let data = {\r\n Id: 0,\r\n BookedBy: usageData?.UserName,\r\n UserDisplayName: usageData?.UserDisplayName,\r\n BudgetID: usageData?.BudgetId,\r\n Budget: usageData?.BudgetNumber,\r\n BudgetExperimentId: usageData?.BudgetExperimentId,\r\n BudgetExperimentName: usageData?.BudgetExperimentName,\r\n Quantity: serviceType.DefaultQuantity,\r\n DefaultQuantity: serviceType.DefaultQuantity,\r\n ExternalCustomerId: null,\r\n ExternalCustomerName: null,\r\n FundingType: null,\r\n IntQuantityOnly: serviceType.IntQuantityOnly,\r\n DiscountFactor: 1,\r\n InstituteProjectId: null,\r\n InstituteProjectName: null,\r\n PurchaseOrder: null,\r\n Reference: null,\r\n Mandatory: false,\r\n Remarks: (t(translations.UsageOfflineServiceDefaultRemarks) as string)\r\n .replace('{0}', String(usageId))\r\n .replace('{1}', ''),\r\n ReservationId: null,\r\n UsageId: usageId,\r\n ServiceDate: dateUtils.formatISO(dateUtils.dateOrStringToDate(newDate())),\r\n ServiceTypeID: serviceType.Id,\r\n ServiceType: serviceType.Name,\r\n ServiceGroupId: serviceType.ServiceGroupId,\r\n Units: serviceType.UnitTypeName,\r\n UserGroup: usageData?.UserGroup,\r\n UserGroupName: usageData?.UserGroupName,\r\n AllowToUser: serviceType.AllowToUser,\r\n BudgetsTurnedOn: serviceType.BudgetsTurnedOn,\r\n StaffOnly: serviceType.StaffOnly,\r\n TrackInventory: serviceType.TrackInventory,\r\n NotLessThanZero: serviceType.NotLessThanZero,\r\n InventoryBatchesEnabled: serviceType.InventoryBatchesEnabled,\r\n InventoryBatchId: batch === null ? null : batch.Id,\r\n InventoryBatchName: batch === null ? null : batch.Name,\r\n InventoryBatchAmount: batch === null ? null : batch.Inventory,\r\n } as IOtherServices;\r\n return data;\r\n };\r\n const createService = async (\r\n serviceType: IOfflineServiceFilterDto,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticService = prepareService(serviceType);\r\n changeOfflineServices([staticService], 'add');\r\n resolve(staticService);\r\n });\r\n };\r\n const onRemoveService = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices([service], 'remove');\r\n resolve(service);\r\n });\r\n };\r\n const onUpdateService = (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices([service], 'update');\r\n resolve(service);\r\n });\r\n };\r\n // const handleOfflineServiceClick = React.useCallback(\r\n // (service: IOtherServices) => {\r\n // if (edit) {\r\n // let otherProps = {\r\n // initialService: service,\r\n // saveCreatable: true,\r\n // queryParams: {\r\n // id: '' + service.Id ?? -1,\r\n // },\r\n // };\r\n // openPanel({\r\n // renderPageType: RenderPageType.OtherServiceDetails,\r\n // renderPageProps: otherProps,\r\n // expanded: false,\r\n // useSidePanel: useSidePanel,\r\n // isCover: useSidePanel,\r\n // } as SidePanelOpenState);\r\n // }\r\n // },\r\n // [edit, openPanel, useSidePanel],\r\n // );\r\n // const onOfflineServiceClick = React.useCallback(\r\n // (service: IOtherServices) => {\r\n // let otherProps = {\r\n // initialService: Object.assign({}, service, {\r\n // UserGroup: usageData?.UserGroup ?? null,\r\n // UserGroupName: usageData?.UserGroupName ?? null,\r\n // Budget: usageData?.BudgetNumber ?? null,\r\n // BudgetID: usageData?.BudgetId ?? null,\r\n // UserDisplayName: usageData?.UserDisplayName ?? null,\r\n // BookedBy: usageData?.UserName ?? null,\r\n // }),\r\n // editCreatable: true,\r\n // queryParams: {\r\n // id: '' + service.Id ?? -1,\r\n // },\r\n // };\r\n // dispatch(layoutActions.setNotSavedChanges(false));\r\n // openPanel({\r\n // renderPageType: RenderPageType.OtherServiceDetails,\r\n // renderPageProps: otherProps,\r\n // expanded: false,\r\n // useSidePanel: false,\r\n // isCover: false,\r\n // } as SidePanelOpenState);\r\n // },\r\n // [\r\n // dispatch,\r\n // layoutActions,\r\n // openPanel,\r\n // usageData?.BudgetId,\r\n // usageData?.BudgetNumber,\r\n // usageData?.UserDisplayName,\r\n // usageData?.UserGroup,\r\n // usageData?.UserGroupName,\r\n // usageData?.UserName,\r\n // ],\r\n // );\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { translations } from 'locales/translations';\r\nimport { useEffect, useState } from 'react';\r\nimport { Entity } from 'types/common';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { FormHelperText } from '@material-ui/core';\r\nimport { TextControlField } from 'app/components/BasicInputs/TextControlField';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledFormFieldsContainer,\r\n} from '../Forms/FormsLayout';\r\nimport { SkeletonIfLoading } from 'app/Layout/FrontendLayout/components/PageWrapper/components/SkeletonIfLoading';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { odataUrlPrefix } from 'utils/url-utils';\r\nimport { Body } from '../Typography';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport styled from 'styled-components';\r\nimport { EndUsageOfflineServices } from './EndUsageOfflineServices';\r\nimport { IUsageHistory } from 'app/pages/UsageHistoryPage/IUsageHistory';\r\nimport { BasicCheckBox } from '../BasicCheckBox';\r\n\r\ninterface OffService {\r\n quantity: number | null;\r\n service: Entity | null;\r\n}\r\n\r\nexport interface EndUsageData {\r\n services: OffService[];\r\n remarks: string | undefined;\r\n}\r\n\r\nexport interface EndUsageConfirmProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n ids?: number[];\r\n onConfirm: (data: EndUsageData) => void;\r\n usageProcessing?: boolean;\r\n message?: string;\r\n equipmentId?: number;\r\n usageId: number;\r\n titleExtension?: string;\r\n}\r\n\r\nexport const EndUsageConfirm = ({\r\n isOpen,\r\n onClose,\r\n onConfirm,\r\n usageProcessing,\r\n message,\r\n equipmentId,\r\n usageId,\r\n titleExtension,\r\n ...props\r\n}: EndUsageConfirmProps) => {\r\n const [selectedServices, setSelectedServices] = useState([]);\r\n const [remarks, setRemarks] = useState();\r\n const [ids, setIds] = useState(props.ids);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState();\r\n const [reset, setReset] = useState(false);\r\n const [usageData, setUsageData] = useState(\r\n undefined,\r\n );\r\n const [confirmUsageEnd, setConfirmUsageEnd] = useState(false);\r\n useEffect(() => {\r\n if (!!ids || !equipmentId || !isOpen) return;\r\n let mounted = true;\r\n setLoading(true);\r\n (async () => {\r\n try {\r\n const res = await httpClient.get(\r\n `${odataUrlPrefix}AssetDetails/GetEquipmentServices`,\r\n { equipmentId },\r\n );\r\n const usage = await httpClient.get(`${odataUrlPrefix}UsageHistory`, {\r\n $filter: `Id eq ${usageId}`,\r\n });\r\n if (mounted) {\r\n setIds(res.value);\r\n setLoading(false);\r\n setReset(false);\r\n setUsageData(usage.value[0]);\r\n }\r\n } catch (error) {\r\n } finally {\r\n if (mounted) {\r\n setLoading(false);\r\n }\r\n }\r\n })();\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [ids, equipmentId, isOpen, usageId]);\r\n const { t } = useTranslation();\r\n const handleClose = () => {\r\n onClose();\r\n setReset(true);\r\n setError(undefined);\r\n };\r\n const endUsageWithOffline = React.useMemo(() => {\r\n return !!ids && ids.length > 0;\r\n }, [ids]);\r\n const endUsageOfflineValid = React.useMemo(() => {\r\n return (!!remarks && remarks !== '') || selectedServices.length > 0;\r\n }, [remarks, selectedServices]);\r\n const confirmEndUsageTitl = React.useMemo(() => {\r\n let title = t(translations.ConfirmEndUsage_title);\r\n if (titleExtension !== undefined) {\r\n let specialChars = /[`!@#$%^&*()_\\-+=[\\]{};':\"\\\\|,.<>/?~ ]/;\r\n if (specialChars.test(title.substring(title.length - 1))) {\r\n return (\r\n title.substring(0, title.length - 1) +\r\n ' ' +\r\n titleExtension +\r\n title.substring(title.length - 1)\r\n );\r\n } else {\r\n return title + ' ' + titleExtension;\r\n }\r\n } else {\r\n return title;\r\n }\r\n }, [t, titleExtension]);\r\n return (\r\n \r\n <>\r\n {!!ids && endUsageWithOffline ? (\r\n \r\n {/*

    {t(translations.EndUsageConfirmTitle)}

    */}\r\n \r\n \r\n setError(err.error)}\r\n usageId={usageId}\r\n reset={reset}\r\n usageData={usageData}\r\n onChange={services => {\r\n setSelectedServices(\r\n services.map(s => {\r\n return {\r\n quantity: s.Quantity,\r\n service: {\r\n Id: s.ServiceTypeID,\r\n Name: s.ServiceTypeName,\r\n } as Entity,\r\n };\r\n }),\r\n );\r\n }}\r\n />\r\n \r\n \r\n setRemarks(v.target.value)}\r\n />\r\n \r\n \r\n \r\n setConfirmUsageEnd(e.target.checked)\r\n }\r\n checked={confirmUsageEnd}\r\n name={'Confirm'}\r\n required={confirmUsageEnd !== true}\r\n maxLabelWidth={100}\r\n />\r\n \r\n \r\n {error && {error}}\r\n \r\n \r\n
    \r\n ) : (\r\n {message ?? t(translations.ConfirmEndUsage)}\r\n )}\r\n \r\n \r\n }\r\n disabled={\r\n usageProcessing ||\r\n (endUsageWithOffline &&\r\n (confirmUsageEnd !== true || !endUsageOfflineValid))\r\n }\r\n onConfirm={() => {\r\n if (endUsageWithOffline) {\r\n if (!endUsageOfflineValid) {\r\n setError(t(translations.ConfirmEndUsage_err) as string);\r\n return;\r\n }\r\n }\r\n if (!error) {\r\n onConfirm({ services: selectedServices, remarks: remarks });\r\n }\r\n }}\r\n />\r\n );\r\n};\r\nconst EndUsageRoot = styled.div`\r\n &.end-usage-root {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n & .end-usage-item {\r\n border: 1px solid ${bookitColors.grayscale.grayBorders};\r\n border-radius: 5px;\r\n gap: 10%;\r\n padding: 10px 0px;\r\n display: flex;\r\n justify-content: space-around;\r\n }\r\n }\r\n`;\r\n","/**\r\n *\r\n * Link\r\n *\r\n */\r\nimport styled from 'styled-components/macro';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport const RouterLink = styled(Link)`\r\n color: ${p => p.theme.primary};\r\n text-decoration: none;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n opacity: 0.8;\r\n }\r\n\r\n &:active {\r\n opacity: 0.4;\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { useAsyncDebounce } from 'react-table';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { TextControlField } from '../BasicInputs/TextControlField';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\n\r\nexport interface IGlobalFilterProps {\r\n globalFilter?: string;\r\n setGlobalFilter: (value: string) => void;\r\n info?: string;\r\n useRemoveSearch?: boolean;\r\n placeholder?: string;\r\n ns?: string;\r\n id?: string;\r\n}\r\nexport function GlobalFilter({\r\n globalFilter,\r\n setGlobalFilter,\r\n info,\r\n placeholder,\r\n useRemoveSearch,\r\n ns,\r\n id,\r\n}: IGlobalFilterProps) {\r\n const { t } = useTranslation(ns);\r\n const isMobile = DetectIsMobile();\r\n const [value, setValue] = React.useState(globalFilter);\r\n const onChange = useAsyncDebounce(value => {\r\n setGlobalFilter(value || undefined);\r\n }, 200);\r\n\r\n return (\r\n {\r\n setValue('');\r\n onChange('');\r\n }}\r\n >\r\n {' '}\r\n \r\n \r\n ) : !!info ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n inputProps={{ 'aria-label': 'table search' }}\r\n info={info}\r\n onChange={e => {\r\n setValue(e.target.value);\r\n onChange(e.target.value);\r\n }}\r\n />\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { useSelector } from 'react-redux';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport {\r\n AllowedByRolePermissions,\r\n AllowedToRender,\r\n RenderTypes,\r\n} from './renderTypes';\r\n\r\nexport function useAssetsPermissions() {\r\n const user = useSelector(selectAuthenticatedUser);\r\n\r\n const allowedToView = React.useCallback(\r\n (\r\n rows: Pick<\r\n IAssetDto,\r\n 'ServiceGroupId' | 'ServiceTypeId' | 'ServiceId' | 'Availability'\r\n >[],\r\n render: RenderTypes,\r\n ): boolean => {\r\n if (!user) return false;\r\n return rows.every(f => AllowedToRender(user, render, f));\r\n },\r\n [user],\r\n );\r\n\r\n const allowedToViewUpgradeLocalApp = React.useCallback(\r\n (\r\n rows: Pick<\r\n IAssetDto,\r\n 'ServiceGroupId' | 'ServiceTypeId' | 'ServiceId' | 'Availability'\r\n >[],\r\n render: RenderTypes,\r\n ): boolean => {\r\n if (!user) return false;\r\n\r\n return rows.every(f => AllowedByRolePermissions(user, render, f));\r\n },\r\n [user],\r\n );\r\n\r\n return {\r\n allowedToView,\r\n allowedToViewUpgradeLocalApp,\r\n };\r\n}\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n Divider,\r\n Grid,\r\n ListItemText,\r\n MenuItem,\r\n MenuList,\r\n Popover,\r\n} from '@material-ui/core';\r\nimport { Body } from 'app/components/Typography';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { IWorkOrderTypeDto } from 'api/odata/generated/entities/IWorkOrderTypeDto';\r\nimport {\r\n AssetsFilterForWorkOrder,\r\n AssetsPicker,\r\n} from 'app/components/pickers/MultiSelectPickers/AssetsPicker/index';\r\nimport { initWOTypeDataParams } from 'app/components/pickers/AutocompletePickers/WorkOrderTypePicker';\r\nimport { WorkOrderQueryStringParameters } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/types';\r\nimport { GetRawValue } from 'app/components/BasicTable/types/FilterParam';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { WorkOrderDetailsProps } from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport styled from 'styled-components';\r\n\r\nexport interface AddWorkOrderProps {\r\n rows: TRow[];\r\n getAssets: (rows: TRow[]) => Promise;\r\n downtime?: boolean;\r\n buttonName?: string;\r\n primary?: boolean;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n onClick?: () => void;\r\n}\r\nconst WorkButton = props => {\r\n return (\r\n }\r\n endIcon={}\r\n onClick={props.handleClick}\r\n aria-controls={props.id}\r\n aria-haspopup=\"true\"\r\n >\r\n {props.buttonName}\r\n \r\n );\r\n};\r\nconst WorkOrderContent = styled.div<{ padding?: number }>`\r\n &.work-root {\r\n padding: ${props => (props.padding !== undefined ? props.padding : 16)}px;\r\n min-width: 350px;\r\n & .work-header {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n & .menu-list {\r\n max-height: 420px;\r\n overflow-y: auto;\r\n & .menu-skeleton {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n gap: 8px;\r\n & .skeleton {\r\n width: 100%;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport function AddWorkOrder({\r\n rows,\r\n getAssets,\r\n downtime,\r\n buttonName,\r\n primary,\r\n useSidePanel,\r\n openPanelWithCover,\r\n onClick,\r\n}: AddWorkOrderProps) {\r\n const { t } = useTranslation();\r\n const location = useLocation();\r\n const { openPanel } = useSidePanelState();\r\n const [assets, setAssets] = React.useState([]);\r\n const [workTypes, setWorkTypes] = React.useState<\r\n IWorkOrderTypeDto[] | undefined\r\n >(undefined);\r\n const [workTypeLoading, setWorkTypeLoading] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const [assetLoading, setAssetLoading] = React.useState(\r\n undefined,\r\n );\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [open, setOpen] = React.useState(false);\r\n const handleAssetChange = React.useCallback((value: IAssetDto[] | []) => {\r\n setAssets(value);\r\n setWorkTypeLoading(undefined);\r\n // setWorkTypeLoading(true);\r\n // initWOTypeDataParams(value, undefined, downtime).then(types => {\r\n // setWorkTypes(types);\r\n // setWorkTypeLoading(false);\r\n // });\r\n }, []);\r\n const getParamFromUrl = (name: string): string | undefined => {\r\n return GetRawValue(new URLSearchParams(location.search), name) ?? undefined;\r\n };\r\n const handleWorkTypeClick = (event: IWorkOrderTypeDto) => {\r\n let params = {\r\n queryParams: {\r\n id: undefined,\r\n aType: event.Id.toString(),\r\n down: (downtime === true && event.AssetAlertType).toString(),\r\n source: getParamFromUrl('source'),\r\n Up: getParamFromUrl('Up'),\r\n title: getParamFromUrl('title'),\r\n eStart: getParamFromUrl('eStart'),\r\n sympt: getParamFromUrl('sympt'),\r\n aStatus: getParamFromUrl('aStatus'),\r\n aStart: getParamFromUrl('aStart'),\r\n desc: getParamFromUrl('desc'),\r\n assetId: !!assets ? assets.map(a => a.Id).join(',') : undefined,\r\n offH: (downtime === true && event.AssetAlertType).toString(),\r\n offStart: getParamFromUrl('offStart'),\r\n offEnd: getParamFromUrl('offStart'),\r\n reason: getParamFromUrl('reason'),\r\n eqid: getParamFromUrl('eqid'),\r\n sid: getParamFromUrl('sid'),\r\n } as WorkOrderQueryStringParameters,\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps;\r\n const panelProps = {\r\n renderPageType: RenderPageType.WorkOrderDetails,\r\n renderPageProps: params,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState;\r\n\r\n !!openPanelWithCover\r\n ? openPanelWithCover(panelProps)\r\n : openPanel(panelProps);\r\n onClick?.();\r\n setOpen(false);\r\n };\r\n React.useEffect(() => {\r\n let active =\r\n open && !assetLoading && (assets === undefined || assets?.length < 1);\r\n if (active) {\r\n setAssetLoading(true);\r\n getAssets(rows).then(ass => {\r\n setAssets(() => ass);\r\n setAssetLoading(false);\r\n });\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [assetLoading, assets, getAssets, open, rows]);\r\n React.useEffect(() => {\r\n let active =\r\n open && !!assets && assets.length > 0 && workTypeLoading === undefined;\r\n if (active) {\r\n setWorkTypeLoading(true);\r\n initWOTypeDataParams(assets, undefined, downtime).then(types => {\r\n setWorkTypes(types);\r\n setWorkTypeLoading(false);\r\n });\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [assets, downtime, open, workTypeLoading]);\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n setOpen(prev => !prev);\r\n };\r\n return (\r\n
    \r\n \r\n \r\n 25 ? 32 : 16}\r\n >\r\n {assets !== undefined && assets.length > 25 ? (\r\n \r\n
    \r\n \r\n {t(translations.TooManyInstrumentsSelected).replace(\r\n '{0}',\r\n '(' + assets?.length.toString() + ')',\r\n )}\r\n \r\n {\r\n setOpen(false);\r\n setAssets([]);\r\n setWorkTypes([]);\r\n }}\r\n >\r\n \r\n \r\n
    \r\n
    \r\n ) : (\r\n \r\n \r\n
    \r\n \r\n {t(translations.CreateAnAssetRelatedEvent)}\r\n \r\n {\r\n setOpen(false);\r\n setAssets([]);\r\n setWorkTypes([]);\r\n }}\r\n >\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n {\r\n handleAssetChange(value);\r\n }}\r\n placeholder={t(\r\n translations.QuickWorkOrderPleaseSelectAssets,\r\n )}\r\n fullWidth={true}\r\n name=\"assets\"\r\n variant=\"filled\"\r\n id=\"asset-id\"\r\n restrictByAvType=\"serviceRelated\"\r\n label={t(translations.Asset)}\r\n value={assets || undefined}\r\n />\r\n \r\n \r\n {assets && assets.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(translations.PleaseSelectAnEventType)}\r\n \r\n \r\n \r\n {workTypeLoading ? (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n ) : workTypes && workTypes.length > 0 ? (\r\n workTypes.map(wt => (\r\n {\r\n handleWorkTypeClick(wt);\r\n setAssets([]);\r\n setWorkTypes([]);\r\n }}\r\n >\r\n \r\n {wt.Name}\r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n {t(translations.NoAlertTypesFoundForSelectedAssets)}\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n \r\n \r\n
    \r\n );\r\n}\r\n","import { Roles } from 'api/odata/generated/enums/Roles';\r\n\r\nexport const allowedroles = [\r\n Roles.Administrators,\r\n Roles.EquipmentAdministrator,\r\n Roles.GroupAdministrators,\r\n Roles.LabTech,\r\n];\r\n","import { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { intersection } from 'lodash';\r\nimport { useSelector } from 'react-redux';\r\nimport { allowedroles } from './allowedroles';\r\nimport * as React from 'react';\r\nimport { IUserTrainingDto } from 'api/odata/generated/entities/IUserTrainingDto';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\n\r\nexport function useUserTrainingPermissions() {\r\n const user = useSelector(selectAuthenticatedUser);\r\n const roles: number[] | undefined = user?.Roles;\r\n\r\n const callback = React.useCallback(\r\n (row: IUserTrainingPermissionCheckRecord): boolean =>\r\n allowedToViewUserTraining(user, row),\r\n [user],\r\n );\r\n const hasPermissions: boolean = intersection(roles, allowedroles).length > 0;\r\n const isAdmin = intersection(roles, allowedroles).length > 0;\r\n return {\r\n hasPermissions,\r\n allowedToView: callback,\r\n isAdmin,\r\n };\r\n}\r\n\r\nexport type IUserTrainingPermissionCheckRecord = Pick<\r\n IUserTrainingDto,\r\n 'ServiceGroupId' | 'EquipmentId'\r\n>;\r\nexport const allowedToViewUserTraining = (\r\n user: AuthenticatedUser | undefined,\r\n row: IUserTrainingPermissionCheckRecord,\r\n) => {\r\n if (!user) return false;\r\n return (\r\n user.HasAdminGroupOnlyPermissions(row.ServiceGroupId ?? undefined) ||\r\n user.HasAdminServiceOnlyPermissions(1, row.EquipmentId ?? undefined) ||\r\n user.HasLabTechGroupPermissions(row.ServiceGroupId ?? undefined) ||\r\n user.HasLabTechServicePermissions(1, row.EquipmentId ?? undefined)\r\n );\r\n};\r\n","import htmlParse from 'html-react-parser';\r\nimport { Mention } from '../RichTextEditor/RichEditor';\r\n\r\nexport const parse = (text: string) => {\r\n const options = {\r\n replace: (domNode: any) => {\r\n if (domNode.attribs?.class === 'MENTION') {\r\n const attribs = domNode.attribs;\r\n return (\r\n \r\n );\r\n }\r\n },\r\n };\r\n return htmlParse(text, options);\r\n};\r\n","import * as React from 'react';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\n\r\n/**\r\n * Hides the global service group filter on a page.\r\n * Example of usage on the page componet:\r\n * ```\r\n * export const SomePage = withoutGlobalServiceGroupFilter(SomePageContent);\r\n * ```\r\n * Usage on loadable:\r\n * ```\r\n * export const SomePage = lazyLoad(\r\n * () => import('./index'),\r\n * module => withoutGlobalServiceGroupFilter(module.SomePage));\r\n * ```\r\n * @param Component Page component\r\n * @returns page component\r\n */\r\nexport function withoutGlobalServiceGroupFilter

    (\r\n Component: React.ComponentType

    ,\r\n): React.FC

    {\r\n return ({ ...props }: P) => {\r\n const dispatch = useDispatch();\r\n\r\n const { actions } = useAppSettingsSlice();\r\n useEffectOnMount(() => {\r\n dispatch(actions.showGlobalServiceGroupFilter(false));\r\n });\r\n\r\n return ;\r\n };\r\n}\r\n","import * as Cookies from 'js-cookie';\r\n\r\n/**\r\n * Must match .net's counterpart in globalization middleware\r\n */\r\nexport const LOCALE_COOKIE_NAME = 'i18next';\r\n\r\nexport type LocaleId = string;\r\n\r\nexport function setCookieLocale(localeId: LocaleId) {\r\n Cookies.set(LOCALE_COOKIE_NAME, localeId);\r\n}\r\n\r\nexport function getCookieLocale() {\r\n // running in test environment\r\n if (Cookies.get === undefined) {\r\n return undefined;\r\n }\r\n return Cookies.get(LOCALE_COOKIE_NAME);\r\n}\r\n","/* eslint-disable prettier/prettier */\r\nimport { RowActionsProps } from 'app/components/BasicTable/RowActions';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { isEmptyOrWhitespace, toLowerCaseSafely } from 'utils/typeUtils';\r\nimport {\r\n AuthenticatedUser,\r\n IAuthenticatedUser,\r\n isInRole,\r\n} from './AuthenticatedUser';\r\nimport { PUBLIC_ASSETS_PATH } from 'app/pages/PublicAssets/PUBLIC_ASSETS_PATH';\r\nimport { UserAccessToBudgetsUnion } from 'api/odata/generated/enums/UserAccessToBudgets';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\n\r\nexport interface SiteMapSettings {\r\n userNodes: SiteMapNode[];\r\n}\r\nexport enum MainTabs {\r\n Dashboard = 1,\r\n Cores = 2,\r\n Assets = 3,\r\n RoomMap = 4,\r\n Reservations = 5,\r\n Trainings = 6,\r\n Consumables = 7,\r\n Samples = 8,\r\n WorkOrders = 9,\r\n LoanDesk = 10,\r\n Eln = 11,\r\n Colonies = 12,\r\n Budgets = 13,\r\n Billing = 14,\r\n Messages = 15,\r\n Users = 16,\r\n Suppliers = 17,\r\n Expenses = 18,\r\n LargeAnimals = 19,\r\n Reports = 20,\r\n SystemSettings = 21,\r\n}\r\nexport type MainTabsUnion = keyof typeof MainTabs;\r\nexport const MainTabsUnionArray: Array = [\r\n 'Dashboard',\r\n 'Cores',\r\n 'Assets',\r\n 'RoomMap',\r\n 'Reservations',\r\n 'Trainings',\r\n 'Consumables',\r\n 'Samples',\r\n 'WorkOrders',\r\n 'LoanDesk',\r\n 'Eln',\r\n 'Colonies',\r\n 'Budgets',\r\n 'Billing',\r\n 'Messages',\r\n 'Users',\r\n 'Suppliers',\r\n 'Expenses',\r\n 'LargeAnimals',\r\n 'Reports',\r\n 'SystemSettings',\r\n];\r\nexport enum AssetsSubTab {\r\n AssetsTabSetting = 1,\r\n InstrumentsTabSettings = 2,\r\n LocationsTabSettings = 3,\r\n}\r\nexport type AssetsSubTabUnion = keyof typeof AssetsSubTab;\r\nexport const AssetsSubTabUnionArray: Array = [\r\n 'AssetsTabSetting',\r\n 'InstrumentsTabSettings',\r\n 'LocationsTabSettings',\r\n];\r\nexport interface SiteMapNode {\r\n Roles?: string[];\r\n HasChildNodes: boolean;\r\n Key?: string;\r\n ResourceKey?: string;\r\n Title: string;\r\n Description?: string;\r\n Url: string;\r\n ChildNodes: SiteMapNode[];\r\n icon?: string | null;\r\n reactUrl: string;\r\n HideReact: boolean;\r\n isAdminNode: boolean;\r\n ParentNode: SiteMapNode | null;\r\n Hide: boolean;\r\n LinkWithChildren?: string | null;\r\n MainTab?: string;\r\n SubTab?: string;\r\n IsAdminSettings?: boolean;\r\n GroupTab?: number;\r\n IsLastTab?: boolean;\r\n}\r\nexport const NoAuthNodes = (t: TFunction): SiteMapNode[] => {\r\n return [\r\n {\r\n Roles: [],\r\n HasChildNodes: false,\r\n Key: undefined,\r\n ResourceKey: undefined,\r\n Title: t(translations.reg_NewUserRegistration) as string,\r\n Description: undefined,\r\n Url: '/RegisterAccount',\r\n ChildNodes: [],\r\n icon: undefined,\r\n reactUrl: '/RegisterAccount',\r\n HideReact: false,\r\n isAdminNode: false,\r\n ParentNode: null,\r\n Hide: false,\r\n MainTab: undefined,\r\n SubTab: undefined,\r\n IsAdminSettings: false,\r\n GroupTab: undefined,\r\n },\r\n {\r\n Roles: [],\r\n HasChildNodes: false,\r\n Key: undefined,\r\n ResourceKey: undefined,\r\n Title: t(translations.menu_PublicAssets) as string,\r\n Description: undefined,\r\n Url: PUBLIC_ASSETS_PATH,\r\n ChildNodes: [],\r\n icon: undefined,\r\n reactUrl: PUBLIC_ASSETS_PATH,\r\n HideReact: false,\r\n isAdminNode: false,\r\n ParentNode: null,\r\n Hide: false,\r\n MainTab: undefined,\r\n SubTab: undefined,\r\n IsAdminSettings: false,\r\n GroupTab: undefined,\r\n },\r\n {\r\n Roles: [],\r\n HasChildNodes: false,\r\n Key: undefined,\r\n ResourceKey: undefined,\r\n Title: t(translations.Instrument) as string,\r\n Description: undefined,\r\n Url: '/Assets/Details',\r\n ChildNodes: [],\r\n icon: undefined,\r\n reactUrl: '/Assets/Details',\r\n HideReact: false,\r\n isAdminNode: false,\r\n ParentNode: null,\r\n Hide: false,\r\n MainTab: undefined,\r\n SubTab: undefined,\r\n IsAdminSettings: false,\r\n GroupTab: undefined,\r\n },\r\n {\r\n Roles: [],\r\n HasChildNodes: false,\r\n Key: undefined,\r\n ResourceKey: undefined,\r\n Title: t(translations.SSOConfigurationError) as string,\r\n Description: undefined,\r\n Url: '/SsoErrors',\r\n ChildNodes: [],\r\n icon: undefined,\r\n reactUrl: '/SsoErrors',\r\n HideReact: false,\r\n isAdminNode: false,\r\n ParentNode: null,\r\n Hide: false,\r\n MainTab: undefined,\r\n SubTab: undefined,\r\n IsAdminSettings: false,\r\n GroupTab: undefined,\r\n },\r\n ] as SiteMapNode[];\r\n};\r\n\r\nexport class SiteMapProvider {\r\n settings: SiteMapSettings | null;\r\n constructor(sett: SiteMapSettings | null) {\r\n this.settings = sett;\r\n }\r\n public getUserNodes(): SiteMapNode[] {\r\n if (\r\n !!this.settings &&\r\n this.settings !== null &&\r\n !!this.settings.userNodes\r\n ) {\r\n return this.settings.userNodes;\r\n } else {\r\n return [] as SiteMapNode[];\r\n }\r\n }\r\n public getCurrentMainNode(pathname: string): SiteMapNode | undefined {\r\n let node: SiteMapNode[] | undefined = undefined;\r\n let searchItem = pathname;\r\n if (!!this.settings && this.settings != null) {\r\n node = this.settings.userNodes\r\n .filter(f => f.Hide === false)\r\n .filter((item, index) => {\r\n if (item.ChildNodes.length > 0) {\r\n let irurl = toLowerCaseSafely(item.reactUrl);\r\n\r\n return (\r\n item.ChildNodes.filter(chitem => {\r\n let rurl = toLowerCaseSafely(chitem.reactUrl);\r\n if (rurl !== null) {\r\n let rpath = rurl.split('?')[0] ?? rurl;\r\n return searchItem.toLowerCase().indexOf(rpath) > -1;\r\n } else {\r\n return chitem.Url.toLowerCase().indexOf(searchItem) > -1;\r\n }\r\n }).length > 0 ||\r\n (irurl !== null\r\n ? searchItem\r\n .toLowerCase()\r\n .indexOf(irurl.split('?')[0] ?? irurl) > -1\r\n : item.Url.toLowerCase().indexOf(searchItem) > -1) === true\r\n );\r\n } else {\r\n let irurl = toLowerCaseSafely(item.reactUrl);\r\n let prurl =\r\n item.ParentNode !== null\r\n ? toLowerCaseSafely(item.ParentNode.reactUrl)\r\n : null;\r\n let purl = item.ParentNode !== null ? item.ParentNode.Url : null;\r\n return (\r\n (irurl !== null\r\n ? searchItem\r\n .toLowerCase()\r\n .indexOf(irurl.split('?')[0] ?? irurl) > -1\r\n : item.Url.toLowerCase().indexOf(searchItem) > -1) === true ||\r\n (item.ParentNode !== null && prurl !== null\r\n ? searchItem\r\n .toLowerCase()\r\n .indexOf(prurl.split('?')[0] ?? prurl) > -1\r\n : purl !== null\r\n ? purl.toLowerCase().indexOf(searchItem) > -1\r\n : false)\r\n );\r\n }\r\n });\r\n }\r\n // There may be multiple results.\r\n // This happens when the react page is selected.\r\n // It is necessary to choose the result whose reactUrl length is longer.\r\n if (node !== undefined && node.length > 0) {\r\n let res: SiteMapNode | undefined = node[0];\r\n if (node.length > 1) {\r\n var rurl = '';\r\n node.forEach(item => {\r\n item.ChildNodes.forEach(chitem => {\r\n let rurl1 = toLowerCaseSafely(chitem.reactUrl);\r\n if (rurl1 !== null) {\r\n let rpath = rurl1.split('?')[0] ?? rurl1;\r\n if (searchItem.toLowerCase().indexOf(rpath) > -1) {\r\n if (rpath.length > rurl.length) {\r\n res = item;\r\n rurl = rpath;\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n return res;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n public currentMainNodeIsAdmin(pathname: string): boolean | undefined {\r\n let isAdmin = this.getCurrentMainNode(pathname)?.isAdminNode;\r\n return isAdmin;\r\n }\r\n /**\r\n * Returns visible sitemap nodes\r\n * @returns Visible sitemap nodes\r\n */\r\n public getCurrentNodes(): SiteMapNode[] {\r\n return this.getUserNodes().filter(f => f.Hide === false);\r\n }\r\n public findNode(pathname: string): SiteMapNode | undefined {\r\n let node: SiteMapNode | undefined = undefined;\r\n if (!!this.settings && this.settings != null) {\r\n let parentNodes = this.settings.userNodes;\r\n let childNodes = this.settings.userNodes.map(f => f.ChildNodes).flat();\r\n const currentPathNameLowered = pathname.toLowerCase();\r\n // Function to match paths with dynamic segments\r\n const isMatchingPath = (\r\n nodeUrl: string,\r\n currentPath: string,\r\n ): boolean => {\r\n const nodeSegments = nodeUrl.toLowerCase().split('/');\r\n const pathSegments = currentPath.split('/');\r\n if (nodeSegments.length !== pathSegments.length) return false;\r\n\r\n return nodeSegments.every(\r\n (segment, index) =>\r\n segment.startsWith(':') || segment === pathSegments[index],\r\n );\r\n };\r\n // First try exact match node\r\n node = childNodes.find(element => {\r\n const elementURL = element.reactUrl ?? element.Url;\r\n const [elementPathName] = elementURL.split('?');\r\n\r\n // Check for matching including dynamic segments\r\n return (\r\n isMatchingPath(elementPathName, currentPathNameLowered) ||\r\n elementPathName.toLowerCase() === currentPathNameLowered\r\n );\r\n });\r\n // then if no exact match was found - try the indexOf for whatever reason it was done originally\r\n if (!node) {\r\n childNodes.find(element => {\r\n if (element !== undefined) {\r\n const reactUrl = toLowerCaseSafely(element.reactUrl);\r\n\r\n if (reactUrl !== null) {\r\n let rpath = reactUrl.split('?')[0] ?? reactUrl;\r\n //return pathname.toLowerCase() === rpath;\r\n return pathname.toLowerCase().indexOf(rpath) > -1;\r\n } else {\r\n return (\r\n element.Url.toLowerCase().indexOf(pathname.toLowerCase()) > -1\r\n );\r\n }\r\n }\r\n return undefined;\r\n });\r\n }\r\n if (!node) {\r\n node = parentNodes.find(element => {\r\n if (element !== undefined) {\r\n const reactUrl = toLowerCaseSafely(element.reactUrl);\r\n if (reactUrl !== null) {\r\n let rpath = reactUrl.split('?')[0] ?? reactUrl;\r\n //return pathname.toLowerCase() === rpath;\r\n return pathname.toLowerCase().indexOf(rpath) > -1;\r\n } else {\r\n return (\r\n element.Url.toLowerCase().indexOf(pathname.toLowerCase()) > -1\r\n );\r\n }\r\n }\r\n return undefined;\r\n });\r\n }\r\n }\r\n return node;\r\n }\r\n public updatePath(pathname: string | undefined, newSearch: string) {\r\n if (!!this.settings && this.settings != null && pathname) {\r\n this.getCurrentNodes()\r\n .map(f => f.ChildNodes)\r\n .flat()\r\n .forEach(element => {\r\n if (element !== undefined) {\r\n const reactUrl = element.reactUrl;\r\n if (reactUrl !== undefined && reactUrl !== null) {\r\n const elementPath = reactUrl.split('?')[0] ?? reactUrl;\r\n if (elementPath === pathname) {\r\n element.reactUrl = `${pathname}?${newSearch}`;\r\n element.Url = `${pathname}?${newSearch}`;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n public accesibleByRole(pathname: string, user?: IAuthenticatedUser): boolean {\r\n if (user) {\r\n let currentNode = this.findNode(pathname);\r\n if (currentNode) {\r\n if (currentNode.Roles && currentNode.Roles.length > 0) {\r\n return (\r\n currentNode.Roles.filter(item => isInRole(user, item)).length > 0\r\n );\r\n } else if (\r\n currentNode.ParentNode !== null &&\r\n currentNode.ParentNode.Roles &&\r\n currentNode.ParentNode.Roles.length > 0\r\n ) {\r\n return (\r\n currentNode.ParentNode.Roles.filter(item => isInRole(user, item))\r\n .length > 0\r\n );\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n public nodeAccesibleByRole(\r\n node: SiteMapNode,\r\n user?: AuthenticatedUser,\r\n ): boolean {\r\n if (user) {\r\n if (node) {\r\n if (node.Roles && node.Roles.length > 0) {\r\n if (\r\n user?.Roles.includes(Roles.CustomRole) &&\r\n node.Roles.filter(item => isInRole(user, item)).length > 0\r\n ) {\r\n return user?.HasCustomRoleUrlPermission(node.Url);\r\n }\r\n return node.Roles.filter(item => isInRole(user, item)).length > 0;\r\n } else if (\r\n node.ParentNode !== null &&\r\n node.ParentNode.Roles &&\r\n node.ParentNode.Roles.length > 0\r\n ) {\r\n if (\r\n user?.Roles.includes(Roles.CustomRole) &&\r\n node.ParentNode.Roles.filter(item => isInRole(user, item)).length >\r\n 0\r\n ) {\r\n return user?.HasCustomRoleUrlPermission(node.ParentNode.Url);\r\n }\r\n return (\r\n node.ParentNode.Roles.filter(item => isInRole(user, item)).length >\r\n 0\r\n );\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n public findMainTabNode(menuTab: MainTabsUnion) {\r\n let filtered = this.getUserNodes().filter(\r\n f => f.Hide === false && !!f.MainTab && f.MainTab === menuTab,\r\n );\r\n if (!!filtered && filtered.length > 0) {\r\n return filtered[0];\r\n }\r\n return undefined;\r\n }\r\n public adminSettingsNodes(node: SiteMapNode, user?: AuthenticatedUser) {\r\n let result: SiteMapNode[] = [];\r\n const isAdmin =\r\n isInRole(user, Roles.Administrators) ||\r\n isInRole(user, Roles.GroupAdministrators) ||\r\n isInRole(user, Roles.EquipmentAdministrator) ||\r\n isInRole(user, Roles.CustomRole);\r\n if (\r\n isAdmin &&\r\n node.ChildNodes.length > 0 &&\r\n !!node.MainTab &&\r\n node.ChildNodes.some(f => f.IsAdminSettings)\r\n ) {\r\n let filtered = node.ChildNodes.filter(\r\n f => f.IsAdminSettings && this.nodeAccesibleByRole(f, user),\r\n ).map((it, index) => {\r\n return it;\r\n });\r\n return filtered;\r\n }\r\n return result;\r\n }\r\n public adminSettingsActions(\r\n menuTab: MainTabsUnion,\r\n user?: AuthenticatedUser,\r\n subTab?: any,\r\n action?: (link: string) => void,\r\n t: TFunction = s => s,\r\n ) {\r\n let result: RowActionsProps[] = [];\r\n const isAdmin =\r\n isInRole(user, Roles.Administrators) ||\r\n isInRole(user, Roles.GroupAdministrators) ||\r\n isInRole(user, Roles.EquipmentAdministrator) ||\r\n isInRole(user, Roles.CustomRole);\r\n let node = this.findMainTabNode(menuTab);\r\n if (\r\n isAdmin &&\r\n !!node &&\r\n node.ChildNodes.length > 0 &&\r\n !!node.MainTab &&\r\n node.ChildNodes.some(f => f.IsAdminSettings)\r\n ) {\r\n let filtered = node.ChildNodes.filter(\r\n f =>\r\n f.IsAdminSettings &&\r\n this.nodeAccesibleByRole(f, user) &&\r\n (!subTab || (!isEmptyOrWhitespace(subTab) && subTab === f.SubTab)),\r\n ).map((it, index) => {\r\n return it;\r\n });\r\n if (!!filtered && filtered.length > 0) {\r\n let subTabTitle =\r\n filtered.filter(f => !!f.SubTab).map(f => f.SubTab)?.[0] ??\r\n translations.Settings;\r\n result.push({\r\n text: t(subTabTitle),\r\n icon: 'circle',\r\n renderAsTitle: true,\r\n });\r\n filtered.forEach((item, index) => {\r\n result.push({\r\n href:\r\n !action && isEmptyOrWhitespace(item.reactUrl)\r\n ? item.Url\r\n : undefined,\r\n to: !isEmptyOrWhitespace(item.reactUrl) ? item.reactUrl : undefined,\r\n text: t(item.Title) as string,\r\n icon: 'circle-small',\r\n onClick:\r\n !!action && isEmptyOrWhitespace(item.reactUrl)\r\n ? () => action(item.Url)\r\n : undefined,\r\n } as RowActionsProps);\r\n });\r\n }\r\n }\r\n return result;\r\n }\r\n public isBudgetsAccessible(\r\n user?: IAuthenticatedUser,\r\n UserAccessToBudgets: UserAccessToBudgetsUnion = 'None',\r\n ): boolean {\r\n if (user === undefined) {\r\n return false;\r\n }\r\n\r\n switch (UserAccessToBudgets) {\r\n case 'All':\r\n case 'Join':\r\n return true;\r\n case 'None':\r\n return isAdmin(user);\r\n default:\r\n assertExhaustive(UserAccessToBudgets);\r\n }\r\n\r\n function isAdmin(user: IAuthenticatedUser) {\r\n return (\r\n isInRole(user, Roles.Administrators) ||\r\n isInRole(user, Roles.GroupAdministrators) ||\r\n isInRole(user, Roles.FinAdmin) ||\r\n isInRole(user, Roles.InstituteCoord) ||\r\n isInRole(user, Roles.GroupBudgetsAdmin) ||\r\n isInRole(user, Roles.BudgetAdmin)\r\n );\r\n }\r\n }\r\n}\r\n","import { Action } from '@reduxjs/toolkit';\r\nimport { Task } from 'redux-saga';\r\nimport { fork, take, cancel, ActionPattern } from 'redux-saga/effects';\r\n\r\n/**\r\n * Similar to takeEvery, but also filters by the action parameters\r\n * see https://redux-saga.js.org/docs/api/#takelatestpattern-saga-args\r\n * @param patternOrChannel\r\n * @param keyfn\r\n * @param saga\r\n * @param args\r\n * @returns\r\n */\r\nexport const takeLatestByKey = (\r\n patternOrChannel: ActionPattern>,\r\n keyfn: (payload: TPayload) => string | number | symbol,\r\n saga,\r\n ...args\r\n) =>\r\n fork(function* () {\r\n const tasks: Record = {};\r\n while (true) {\r\n const action = yield take(patternOrChannel);\r\n const key = keyfn(action.payload);\r\n const isKeyEmpty = key === null && key === undefined;\r\n if (isKeyEmpty) {\r\n console.warn(\r\n `Empty key (${JSON.stringify(key)}) in takeLatestByKey.`,\r\n patternOrChannel,\r\n );\r\n }\r\n\r\n if (!isKeyEmpty) {\r\n if (tasks[key]) {\r\n yield cancel(tasks[key]); // cancel is no-op if the task has already terminated\r\n }\r\n }\r\n const task: Task = yield fork(saga, ...args.concat(action));\r\n if (!isKeyEmpty) {\r\n tasks[key] = task;\r\n }\r\n }\r\n });\r\n","/**\r\n *\r\n * Link\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport * as H from 'history';\r\nimport { IPathAndQuery, toQueryString } from 'utils/url-utils';\r\nimport {\r\n Link as RouterLink,\r\n LinkProps as RouterLinkProps,\r\n} from 'react-router-dom';\r\n\r\nexport interface LinkProps extends Omit, 'to'> {\r\n to: t;\r\n}\r\n\r\ntype routerLinkType = H.LocationDescriptor;\r\n//| ((location: H.Location) => H.LocationDescriptor);\r\n\r\ntype t = routerLinkType | IPathAndQuery;\r\n/**\r\n * Link to a resource inside the larger system but external to the React app\r\n * Renders ({ to, ...props }: LinkProps) {\r\n const toto = toLocationDescriptor(to);\r\n return ;\r\n}\r\n\r\nexport function toLocationDescriptor(\r\n tt: t,\r\n): H.LocationDescriptorObject {\r\n if (isPathAndQuery(tt)) {\r\n return toLocationDescriptorObject(tt as IPathAndQuery);\r\n } else {\r\n return tt as H.LocationDescriptorObject;\r\n }\r\n}\r\n\r\nfunction isPathAndQuery(value: t) {\r\n var s = value as IPathAndQuery;\r\n if (value === null) {\r\n return false;\r\n }\r\n\r\n return (\r\n s.path !== undefined &&\r\n s.search !== undefined &&\r\n typeof s.search === 'object'\r\n );\r\n}\r\n\r\nfunction toLocationDescriptorObject(\r\n to: IPathAndQuery,\r\n): H.LocationDescriptorObject {\r\n return {\r\n pathname: to.path,\r\n search: toQueryString(to.search).toString(),\r\n };\r\n}\r\n","import React from 'react';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\n\r\nexport function withTooltipHook(Component: React.ComponentType) {\r\n return (props: T & { title?: React.ReactNode }) => {\r\n const { title, ...rest } = props;\r\n const [tooltipOpen, setTooltipOpen] = React.useState(false);\r\n\r\n const handleFocus = () => {\r\n setTooltipOpen(true);\r\n };\r\n\r\n const handleBlur = () => {\r\n setTooltipOpen(false);\r\n };\r\n\r\n const handleClick = () => {\r\n setTooltipOpen(false); // Hide the tooltip when the component is clicked\r\n };\r\n\r\n return !!title ? (\r\n \r\n {\r\n if (event.key === 'Enter') {\r\n handleClick();\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n ) : (\r\n \r\n );\r\n };\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer } from 'utils/redux-injectors';\r\nimport { DialogAlertState } from './types';\r\n\r\nexport const initialState: DialogAlertState = {\r\n open: false,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'dialogAlert',\r\n initialState,\r\n reducers: {\r\n showAlert(state, action: PayloadAction) {\r\n state.open = true;\r\n state.content = action.payload;\r\n },\r\n hideAlert(state, action: PayloadAction) {\r\n state.open = false;\r\n state.content = undefined;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: dialogAlertActions } = slice;\r\n\r\nexport const useDialogAlertSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useAlertSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { ExternalLink } from 'app/components/ExternalLink';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport cliTruncate from 'cli-truncate';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectExpandedSidePanel } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { OpenMenuButton } from '../../TopBar/components/openMenuButton';\r\nimport { useAbsolute } from 'utils/url-utils';\r\nimport styled from 'styled-components';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\n\r\nexport interface TitlePageProps {\r\n // title of the current screen\r\n title: string;\r\n // link to open the details page as its own url on a new browser tab\r\n pageLink?: string;\r\n toPageLink?: string;\r\n useSidePanel?: boolean;\r\n buttonsLenth: number;\r\n expandPanel?: () => void;\r\n tooltip?: string;\r\n isCover?: boolean;\r\n toExpandPanel?: () => void;\r\n useShortView?: boolean;\r\n hideMenu?: boolean;\r\n}\r\nconst TitleSection = styled('div')`\r\n &.title-section {\r\n display: flex;\r\n gap: 4px;\r\n align-items: center;\r\n & .copy-url {\r\n display: inline;\r\n position: relative;\r\n align-self: flex-start;\r\n }\r\n }\r\n`;\r\nconst ShortTitle = styled('span')`\r\n cursor: pointer;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n -webkit-box-orient: vertical;\r\n word-break: break-all;\r\n`;\r\nexport function TitlePage(props: TitlePageProps) {\r\n const { t } = useTranslation();\r\n const {\r\n title,\r\n pageLink,\r\n toPageLink,\r\n useSidePanel,\r\n buttonsLenth,\r\n expandPanel,\r\n tooltip,\r\n isCover,\r\n toExpandPanel,\r\n useShortView,\r\n hideMenu,\r\n } = props;\r\n const [showCopy, setShowCopy] = React.useState(false);\r\n const [copied, setCopied] = React.useState(false);\r\n const isMobile = DetectIsMobile();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const showShortView = React.useMemo(() => {\r\n return (\r\n isMobile ||\r\n (useSidePanel && !sidePanelExpanded) ||\r\n isCover ||\r\n useShortView\r\n );\r\n }, [isCover, isMobile, sidePanelExpanded, useShortView, useSidePanel]);\r\n const truncatedTitle = React.useMemo(() => {\r\n return showCopy\r\n ? cliTruncate(\r\n title,\r\n buttonsLenth === 1\r\n ? isCover\r\n ? 22\r\n : 24\r\n : buttonsLenth === 2\r\n ? isCover\r\n ? 18\r\n : 18\r\n : isCover\r\n ? 14\r\n : 16,\r\n { position: 'middle' },\r\n )\r\n : cliTruncate(\r\n title,\r\n buttonsLenth === 1\r\n ? isCover\r\n ? 28\r\n : 30\r\n : buttonsLenth === 2\r\n ? isCover\r\n ? 22\r\n : 24\r\n : isCover\r\n ? 18\r\n : 20,\r\n { position: 'end' },\r\n );\r\n }, [buttonsLenth, isCover, showCopy, title]);\r\n const absolutePageLink = useAbsolute(pageLink, toPageLink);\r\n return pageLink || toPageLink ? (\r\n setShowCopy(true)}\r\n onMouseLeave={() => setShowCopy(false)}\r\n >\r\n {isMobile && !useSidePanel && !hideMenu && (\r\n \r\n )}\r\n {expandPanel && (\r\n \r\n \r\n \r\n )}\r\n {isMobile ? (\r\n \r\n \r\n {{title.replace(/-/g, '‑')}}\r\n \r\n \r\n ) : (\r\n \r\n {showShortView ? (\r\n \r\n \r\n {{title.replace(/-/g, '‑')}}\r\n \r\n \r\n ) : (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n )}\r\n\r\n {showCopy && absolutePageLink !== undefined && !isMobile && (\r\n {\r\n navigator.clipboard.writeText(absolutePageLink);\r\n setCopied(true);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n \r\n {showShortView ? (\r\n \r\n \r\n {{truncatedTitle}}\r\n \r\n \r\n ) : (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import {\r\n FormGroupProps as MuiFormGroupProps,\r\n FormGroup as MuiFormGroup,\r\n} from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport clsx from 'clsx';\r\nimport styled from 'styled-components';\r\n\r\nexport interface FormGroupProps extends MuiFormGroupProps {\r\n withInfo?: boolean;\r\n boxed?: boolean;\r\n boxedChecked?: boolean;\r\n boxedError?: boolean;\r\n shortLabel?: boolean;\r\n}\r\nconst FormGroup = (props: FormGroupProps) => {\r\n const {\r\n withInfo,\r\n boxed,\r\n boxedChecked,\r\n boxedError,\r\n className,\r\n shortLabel,\r\n ...other\r\n } = props;\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst StyledFormGroup = styled(MuiFormGroup)`\r\n &.withInfo {\r\n flex-wrap: nowrap;\r\n }\r\n`;\r\n\r\nexport default FormGroup;\r\n","/**\r\n *\r\n * AdminUserPicker\r\n *\r\n */\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { UserMultiPicker } from '../pickers/AutocompletePickers/UserMultiPicker';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { UserPicker } from '../pickers/AutocompletePickers/UserPicker';\r\n\r\nexport const FormAdminUsersPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps & { multiple: boolean }) => {\r\n const [field, meta, helpers] = useField(props);\r\n if (props.multiple) {\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n variant=\"filled\"\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n urlType=\"admin\"\r\n />\r\n );\r\n } else {\r\n return (\r\n {\r\n if (value !== null) {\r\n helpers.setValue([value], true);\r\n } else {\r\n helpers.setValue([], true);\r\n }\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n // value={field.value ?? undefined}\r\n value={\r\n field.value !== null\r\n ? field.value.length > 0\r\n ? (field.value[0] as IUserFilterDto | null | undefined)\r\n : null\r\n : null\r\n }\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n urlType=\"admin\"\r\n />\r\n );\r\n }\r\n};\r\nexport const FormAdminSingleUsersPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig & IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field?.value}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n urlType=\"admin\"\r\n />\r\n );\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.assetsSelection || initialState;\r\n\r\nexport const selectAssetsSelection = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\n\r\nexport const selectAssetsSelectionLoading = createSelector(\r\n [selectAssetsSelection],\r\n state => state.loading,\r\n);\r\n\r\nexport const selectAssetsSelectionFilters = createSelector(\r\n [selectAssetsSelection],\r\n state => state.filters,\r\n);\r\nexport const selectLoadingAdditionalData = createSelector(\r\n [selectAssetsSelection],\r\n state => state.loadingAdditionalData,\r\n);\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer } from 'utils/redux-injectors';\r\nimport { AssetsSelectionState } from './types';\r\n\r\nexport const initialState: AssetsSelectionState = {\r\n filters: undefined,\r\n loading: undefined,\r\n loadingAdditionalData: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'assetsSelection',\r\n initialState,\r\n reducers: {\r\n setFilters(state, action: PayloadAction | undefined>) {\r\n state.filters = action.payload;\r\n },\r\n setLoading(state, action: PayloadAction) {\r\n state.loading = action.payload;\r\n },\r\n reset(state, action: PayloadAction) {\r\n state.filters = undefined;\r\n state.loading = undefined;\r\n },\r\n setLoadingAdditionalData(state, action: PayloadAction) {\r\n state.loadingAdditionalData = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: assetsSelectionActions } = slice;\r\n\r\nexport const useAssetsSelectionSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n // useInjectSaga({ key: slice.name, saga: assetsSelectionSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useAssetsSelectionSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import * as React from 'react';\r\nimport { IFilterSettings } from './BasicFilter/IFilterSettings';\r\nimport { filterKey } from './BasicFilter/utils';\r\nimport { EntityType } from 'types/common';\r\n\r\n/**\r\n * Memoes the array of filter to be used in the fetch data functions. Tracks the current state of the filters by the filter key (fieldName,fieldName1/etc) + filter value without the display name in case of Entity value\r\n * @param props\r\n * @returns\r\n */\r\nexport const useMemoFilters = (props: {\r\n appliedFilters?: IFilterSettings[];\r\n}) => {\r\n const nonEmpty = props.appliedFilters?.filter(\r\n f => f.value !== null && f.value !== undefined,\r\n );\r\n const singleValueToId = value => {\r\n return (value as EntityType)?.Id !== undefined\r\n ? (value as EntityType)?.Id\r\n : value;\r\n };\r\n\r\n const singleValue = value => {\r\n return Array.isArray(value)\r\n ? value.map(singleValueToId)\r\n : singleValueToId(value);\r\n };\r\n const mapped = nonEmpty?.map(f => ({\r\n key: filterKey(f),\r\n value: singleValue(f.value),\r\n operator: f.operator,\r\n isInversed: f.isInversed,\r\n initCompleted: f.initCompleted ?? false,\r\n }));\r\n\r\n const customFilter = React.useMemo(() => {\r\n const result = nonEmpty;\r\n return result;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [JSON.stringify(mapped)]);\r\n return customFilter;\r\n};\r\n","/**\r\n *\r\n * ValueLabel\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport interface ValueLabelProps {\r\n value: string | number | undefined | null;\r\n}\r\n\r\nexport function ValueLabel({ value }: ValueLabelProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const isEmpty =\r\n value === undefined ||\r\n value === null ||\r\n (typeof value === 'string' && value.trim() === '');\r\n const displayValue = isEmpty ? t(translations.NA) : value;\r\n return <>{displayValue};\r\n}\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport * as React from 'react';\r\nimport { EntityType } from 'types/common';\r\nimport { AutocompletePicker } from '../BasicPickers/AutocompletePicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport interface FormAutocompleteProps {\r\n loadData: (searchTerm: string | null) => Promise;\r\n initValue?: T | null;\r\n size?: 'medium' | 'small';\r\n mini?: boolean;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n}\r\nexport function FormAutocomplete({\r\n label,\r\n loadData,\r\n id,\r\n initValue,\r\n variant,\r\n ...props\r\n}: FieldHookConfig & FormAutocompleteProps & IFieldProps) {\r\n const [field, meta, helpers] = useField(props);\r\n const handleChange = (e: T | null) => {\r\n helpers.setValue(e, true);\r\n if (props.onChange !== undefined) {\r\n props.onChange(e);\r\n }\r\n //field.onChange(e);\r\n };\r\n return (\r\n \r\n );\r\n}\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\nimport { AutocompleteMultiPicker } from '../BasicPickers/AutocompleteMultiPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport interface FormAutocompleteMultiProps {\r\n loadData: (searchTerm: string | null) => Promise[]>;\r\n initValue?: Entity[];\r\n size?: 'medium' | 'small';\r\n mini?: boolean;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n}\r\n\r\nexport function FormAutocompleteMulti({\r\n label,\r\n loadData,\r\n id,\r\n initValue,\r\n variant,\r\n ...props\r\n}: FormAutocompleteMultiProps &\r\n FieldHookConfig[] | null> &\r\n IFieldProps) {\r\n const [field, meta, helpers] = useField[] | null>(props);\r\n const handleChange = (e: Entity[] | null) => {\r\n helpers.setValue(e, true);\r\n if (props.onChange !== undefined) {\r\n props.onChange(e);\r\n }\r\n //field.onChange(e);\r\n };\r\n return (\r\n \r\n );\r\n}\r\n","import { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { groupBy, values } from 'lodash';\r\nimport {\r\n IEquipmentOfflineServiceTypeDto,\r\n IReservationEquipmentDto,\r\n} from './types';\r\n\r\n/**\r\n * Combines offline services from multiple instrument into a single list.\r\n * E.g. on multi instrument reservations, offline services section is shared across all instruments\r\n * @param equipments online services\r\n * @returns list of offline service types applicable to selected services\r\n */\r\nexport function combineOfflineServiceTypes(\r\n equipments: IReservationEquipmentDto[] | undefined,\r\n): IEquipmentOfflineServiceTypeDto[] | undefined {\r\n if (equipments === undefined) {\r\n return undefined;\r\n }\r\n let haidProject = equipments.every(f => f.HideProjects === true);\r\n return (\r\n values(\r\n groupBy(\r\n equipments\r\n //ignore equipments without offline services enabled\r\n .filter(f => f.ReservationOfflineServicesEnabled)\r\n .flatMap(f => f.OfflineServices),\r\n f => f.Id,\r\n ),\r\n )\r\n // offline service must be enabled on each instrument\r\n .filter(group => group.length === equipments.length)\r\n // offline service is mandatory if it's mandatory on one of the instruments\r\n .map(f => {\r\n return {\r\n ...f[0],\r\n Mandatory: f.some(g => g.Mandatory),\r\n };\r\n })\r\n .filter(o => o.HideProject === haidProject)\r\n );\r\n}\r\nexport function combineMandatoryOfflineServices(\r\n services: IOtherServices[] | undefined,\r\n): IOtherServices[] | undefined {\r\n if (services === undefined) {\r\n return undefined;\r\n }\r\n return values(groupBy(services, f => f.ServiceTypeID)).map(f => {\r\n return f[0];\r\n });\r\n}\r\n","/**\r\n *\r\n * TrainingSessionPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ITrainingSessionDto } from 'api/odata/generated/entities/ITrainingSessionDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport i18next from 'i18next';\r\n\r\nexport type UserUrl = 'restricted' | 'full' | 'admin';\r\nexport interface TrainingSessionPickerProps\r\n extends Omit, 'loadData'> {\r\n inputProps?: InputBaseComponentProps;\r\n selectArray?: Array;\r\n}\r\n\r\nconst url = '/api/odata/v4/TrainingSessions';\r\nexport const generateTrainingSessionName = (\r\n dto: ITrainingSessionDto,\r\n): ITrainingSessionDto => {\r\n let name = `${dateUtils.format(\r\n dto.StartDate,\r\n dateUtils.DateIOFormats.fullDateTime,\r\n )} ${dto.Duration}(h) ${dto.Trainer} ${\r\n dto.RemainedSlots === null\r\n ? i18next.t(translations.MaxAttendees_NA)\r\n : dto.RemainedSlots\r\n }`;\r\n return Object.assign({}, dto, { Name: name });\r\n};\r\nexport const initSessionsData = (id: string) => {\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'StartDate asc',\r\n $filter: new Condition('Id', ODataOperators.Equals, id).toString(),\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(\r\n response =>\r\n (response.value as ITrainingSessionDto[]).map(f =>\r\n generateTrainingSessionName(f),\r\n ) as Entity[],\r\n );\r\n};\r\n\r\nexport function TrainingSessionPicker(props: TrainingSessionPickerProps) {\r\n const { t } = useTranslation();\r\n const loadData = getAutoCompleteLoadDataFn({\r\n url: url,\r\n predicates: props.predicates,\r\n select: props.selectArray ?? [\r\n 'Id',\r\n 'Name',\r\n 'StartDate',\r\n 'EndDate',\r\n 'RemainedSlots',\r\n 'TrainingState',\r\n 'Trainer',\r\n 'Duration',\r\n ],\r\n transformModel: generateTrainingSessionName,\r\n });\r\n return (\r\n \r\n );\r\n}\r\nexport function ReservRelatedFilter(\r\n EquipmentId?: number,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (EquipmentId !== undefined) {\r\n predicates.push(\r\n new Condition(\r\n 'ServiceId',\r\n ODataOperators.Equals,\r\n EquipmentId,\r\n ),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { FormAutocompleteMulti } from 'app/components/Forms/FormAutocompleteMulti';\r\nimport { FormAutocomplete } from 'app/components/Forms/FormAutocomplete';\r\n\r\nconst url = '/api/odata/v4/UserFilter/GetUserSelections';\r\nexport const initUserData = (\r\n id: string,\r\n formField: IFormFieldDto | undefined,\r\n) => {\r\n let filter: string | undefined = '';\r\n const initids = id.split(',').map(item => {\r\n return { Id: item };\r\n }) as Identifiable[];\r\n if (formField) {\r\n if (\r\n formField.UserSelectionType === 'FixedRoles' &&\r\n formField.FixedRoles !== null &&\r\n formField.FixedRoles !== ''\r\n ) {\r\n let ids = formField.FixedRoles.split(',').map(item => {\r\n return { Id: item };\r\n }) as Identifiable[];\r\n filter = new Condition(\r\n 'UserRoles',\r\n ODataOperators.AnyIn,\r\n ids,\r\n 'Name',\r\n ).toString();\r\n }\r\n if (\r\n formField.UserSelectionType === 'CustomRoles' &&\r\n formField.CustomRoles !== null &&\r\n formField.CustomRoles !== ''\r\n ) {\r\n let ids = formField.CustomRoles.split(',')\r\n .map(item => {\r\n let id = item.split('#');\r\n return { Id: parseInt(id[0]) };\r\n })\r\n .filter(item => !isNaN(item.Id)) as Identifiable[];\r\n filter = new Condition(\r\n 'CustomRoles',\r\n ODataOperators.AnyIn,\r\n ids,\r\n 'Id',\r\n ).toString();\r\n }\r\n }\r\n if (filter !== '') {\r\n filter += ` and ${new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n initids,\r\n ).toString()}`;\r\n } else {\r\n filter = new Condition('Id', ODataOperators.Includes, initids).toString();\r\n }\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: filter,\r\n $select: 'Id,Name,UserRoles,CustomRoles',\r\n $skip: 0,\r\n $top: initids.length,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport const getGetUserSelectionsAutocompleteFn =\r\n (\r\n formField: Pick<\r\n IFormFieldDto,\r\n 'UserSelectionType' | 'FixedRoles' | 'CustomRoles'\r\n >,\r\n ) =>\r\n (searchTerm: string | null) => {\r\n const params: {\r\n $orderby: string;\r\n $top: number;\r\n $filter?: string;\r\n $select?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $select: 'Id,Name,UserRoles,CustomRoles',\r\n $top: 100,\r\n };\r\n const predicates: Condition[] = [];\r\n if (\r\n formField.UserSelectionType === 'FixedRoles' &&\r\n formField.FixedRoles !== null &&\r\n formField.FixedRoles !== ''\r\n ) {\r\n let ids = formField.FixedRoles.split(',').map(item => {\r\n return { Id: item };\r\n }) as Identifiable[];\r\n predicates.push(\r\n new Condition('UserRoles', ODataOperators.AnyIn, ids, 'Name'),\r\n );\r\n }\r\n if (\r\n formField.UserSelectionType === 'CustomRoles' &&\r\n formField.CustomRoles !== null &&\r\n formField.CustomRoles !== ''\r\n ) {\r\n let ids = formField.CustomRoles.split(',')\r\n .map(item => {\r\n let id = item.split('#');\r\n return { Id: parseInt(id[0]) };\r\n })\r\n .filter(item => !isNaN(item.Id)) as Identifiable[];\r\n predicates.push(\r\n new Condition('CustomRoles', ODataOperators.AnyIn, ids, 'Id'),\r\n );\r\n }\r\n if (searchTerm !== null || predicates.length > 0) {\r\n params.$filter = new ODataFilterBuilder({\r\n predicates: predicates,\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm ?? undefined,\r\n }).toString();\r\n }\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n };\r\nexport function CustomFormUserSelection({\r\n formField,\r\n readonly,\r\n parentValue,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n const loadData = getGetUserSelectionsAutocompleteFn(formField);\r\n return (\r\n \r\n {formField.IsMultiple ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * RemindBeforPicker\r\n *\r\n */\r\n\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { RemindBefore } from 'enums/RemindBefore';\r\nimport { Entity } from 'types/common';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface RemindBeforePickerProps\r\n extends Omit>, 'getOptions'> {}\r\nexport const getSingleReminder = (val: number): Entity => {\r\n return enumToEntityArray(RemindBefore).filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\nexport const initRemindBeforeData = (\r\n initval: number | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([getSingleReminder(initval)]);\r\n });\r\n }\r\n};\r\nconst getOptions = (searchTerm: string | null) => {\r\n let items = enumToEntityArray(RemindBefore);\r\n\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\nexport function RemindBeforePicker(props: RemindBeforePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.repetitive || initialState;\r\n\r\nexport const selectRepetitive = createSelector([selectSlice], state => state);\r\n\r\nexport const selectRepetitiveProcessing = createSelector(\r\n [selectRepetitive],\r\n state => state.processing,\r\n);\r\n\r\nexport const selectRepetitiveError = createSelector(\r\n [selectRepetitive],\r\n state => state.error,\r\n);\r\n\r\nexport const selectRepetitiveData = createSelector(\r\n [selectRepetitive],\r\n state => state.data,\r\n);\r\nexport const selectRepetitiveFieldHandler = createSelector(\r\n [selectRepetitive],\r\n state => state.repetitiveValueHandler,\r\n);\r\n","import { httpClient } from 'api/HttpClient';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n BaseURLPicker,\r\n BaseURLPickerProps,\r\n} from 'app/components/BasicPickers/BaseURLPicker';\r\nimport { Entity } from 'types/common';\r\nconst url = '/api/odata/v4/OfflineServiceFilter';\r\nconst filter = 'ServiceTypeId eq 3 and Active eq true';\r\nexport interface SampleTypePickerProps\r\n extends Omit>, 'url'> {}\r\n\r\nexport const initSampleTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: new ODataFilterBuilder>({\r\n predicates: [filter, new Condition('Id', ODataOperators.Equals, id)],\r\n stringColumns: [],\r\n }).toString(),\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nexport const SampleTypePicker = (props: SampleTypePickerProps) => {\r\n const { queryfilter, ...other } = props;\r\n const predicate =\r\n queryfilter && queryfilter !== ''\r\n ? [queryfilter, filter].join(' and ')\r\n : filter;\r\n return (\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * WorkflowBookingPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IWorkflowBookingDto } from 'api/odata/generated/entities/IWorkflowBookingDto';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface WorkflowBookingPickerProps\r\n extends Omit, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/WorkflowBooking';\r\nexport const initWorkflowBookingData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,UserName',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nexport function WorkflowBookingPicker(props: WorkflowBookingPickerProps) {\r\n const loadData = getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: props.predicates,\r\n select: ['Id', 'Name', 'UserName'],\r\n });\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * OfflineReferenceTypePicker\r\n *\r\n */\r\n\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { OfflineReferenceTypeEnum } from 'enums/OfflineReferenceTypeEnum';\r\nimport { Entity } from 'types/common';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface OfflineReferenceTypePickerProps\r\n extends Omit>, 'getOptions'> {}\r\n\r\nexport const initOfflineReferenceTypeData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n enumToEntityArray(OfflineReferenceTypeEnum).filter(item => {\r\n return item.Id.toString() === initval || item.Name === initval;\r\n }),\r\n );\r\n });\r\n }\r\n};\r\nconst getOptions = (searchTerm: string | null) => {\r\n let items = enumToEntityArray(OfflineReferenceTypeEnum);\r\n\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\nexport function OfflineReferenceTypePicker(\r\n props: OfflineReferenceTypePickerProps,\r\n) {\r\n return (\r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField, useFormikContext } from 'formik';\r\n\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport { FormHelperText, FormLabel } from '@material-ui/core';\r\nimport { useIsRequired } from './ValidationSchemaProvider';\r\nimport { BasicRadioGroup, BasicRadioGroupProps } from '../BasicRadioGroup';\r\nimport { Entity } from 'types/common';\r\nimport { FormNumberField } from './FormNumberField';\r\nimport { FormRow } from './FormsLayout';\r\nimport clsx from 'clsx';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\n\r\nexport type FormRadioGroupBaseProps = FieldHookConfig & {\r\n helperText?: string;\r\n inputProps?: any;\r\n inputName?: string;\r\n inputId?: string;\r\n inputMode?:\r\n | 'none'\r\n | 'text'\r\n | 'tel'\r\n | 'url'\r\n | 'email'\r\n | 'numeric'\r\n | 'decimal'\r\n | 'search';\r\n useInputField?: boolean;\r\n inputAfterLabel?: React.ReactNode;\r\n customLabel?: React.ReactNode;\r\n onInputFocus?: React.FocusEventHandler<\r\n HTMLInputElement | HTMLTextAreaElement\r\n >;\r\n} & BasicRadioGroupProps>;\r\nexport const FormRadioGroupBase = ({\r\n id,\r\n label,\r\n onChange,\r\n value,\r\n name,\r\n error,\r\n title,\r\n options,\r\n helperText,\r\n inputProps,\r\n inputName,\r\n inputId,\r\n inputMode,\r\n useInputField,\r\n onInputFocus,\r\n inputAfterLabel,\r\n customLabel,\r\n ...props\r\n}: FormRadioGroupBaseProps) => {\r\n const [field, meta] = useField({ name, ...props });\r\n const handleChange = (value, event) => {\r\n if (onChange !== undefined) {\r\n onChange(value, event);\r\n }\r\n field.onChange(event);\r\n };\r\n const { submitCount } = useFormikContext();\r\n const isRequired = useIsRequired(name);\r\n const hasError = meta?.error !== undefined;\r\n const showError = hasError && (meta.touched || submitCount > 0);\r\n return (\r\n \r\n {!!label && (\r\n \r\n {label}\r\n \r\n )}\r\n {!!customLabel && customLabel}\r\n {title && (\r\n \r\n {title}\r\n \r\n )}\r\n\r\n \r\n {useInputField && (\r\n \r\n \r\n {!!inputAfterLabel && {inputAfterLabel}}\r\n \r\n )}\r\n \r\n {showError ? meta.error : helperText}\r\n \r\n \r\n );\r\n};\r\n","import { INotificationSettingsDto } from 'app/pages/NotificationsPage/INotificationSettingsDto';\r\nimport { IReservationWaitingListDto } from 'app/pages/ReservationWaitingListPage/IReservationWaitingListDto';\r\nimport { IResponseType, IResponseTypeWithId } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\n\r\nvar restUrl = '/api/odata/v4/ReservationWaitingList';\r\n\r\nexport const UserNotificationsApi = {\r\n insertSignUp: (model: IReservationWaitingListDto) => {\r\n return httpClient.post(restUrl, model);\r\n },\r\n updateSignUp: (model: IReservationWaitingListDto, rowId: number) => {\r\n return httpClient.put(\r\n restUrl + '(' + rowId + ')',\r\n model,\r\n );\r\n },\r\n getSignUp: (Id: number) => {\r\n return httpClient.get(restUrl + '(' + Id + ')');\r\n },\r\n signOut: (Id: number) => {\r\n return httpClient.delete(restUrl + '(' + Id + ')');\r\n },\r\n deleteSelectedRows: (payload: number[]) => {\r\n const url = `/api/odata/v4/ReservationWaitingList/DeleteSelected`;\r\n const data = { keys: payload };\r\n return httpClient.post(url, data);\r\n },\r\n getSettings: (userName: string) => {\r\n const data = { key: userName };\r\n const url = `/api/odata/v4/NotificationSettings`;\r\n return httpClient.get(url, data).then(response => response.value[0]);\r\n },\r\n updateSettings: (model: INotificationSettingsDto, userName: string) => {\r\n const url = `/api/odata/v4/NotificationSettings`;\r\n\r\n return httpClient.post(url, model);\r\n },\r\n};\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField, useFormikContext } from 'formik';\r\nimport { RadioGroup, RadioGroupProps } from '../RadioGroup';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport { FormHelperText, FormLabel } from '@material-ui/core';\r\nimport { useIsRequired } from './ValidationSchemaProvider';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\nimport clsx from 'clsx';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\n\r\nexport type FormRadioGroupProps = FieldHookConfig & RadioGroupProps;\r\nexport const FormRadioGroup = ({\r\n id,\r\n label,\r\n onChange,\r\n value,\r\n name,\r\n error,\r\n title,\r\n helperText,\r\n info,\r\n required,\r\n ...props\r\n}: FieldHookConfig & RadioGroupProps) => {\r\n const [field, meta] = useField({ name, ...props });\r\n const handleChange = (value, event) => {\r\n if (onChange !== undefined) {\r\n onChange(value, event);\r\n }\r\n field.onChange(event);\r\n };\r\n const { submitCount } = useFormikContext();\r\n const isRequired = useIsRequired(name);\r\n const hasError = meta?.error !== undefined;\r\n const showError = hasError && (meta.touched || submitCount > 0);\r\n return (\r\n \r\n \r\n {label} {info && }\r\n \r\n {title && (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n \r\n {showError ? meta.error : helperText}\r\n \r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\n\r\nimport { FormRadioGroup } from 'app/components/Forms/FromRadioGroup';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { Entity } from 'types/common';\r\n\r\nexport function CustomFormAnswerQuestions({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n const { t } = useTranslation();\r\n const options = getOptions(formField);\r\n const title = `${formField.QuizScore} ${t(translations.Points) as string}`;\r\n return (\r\n \r\n );\r\n}\r\nconst indexToAlpha = (index: number): string => {\r\n return (index + 10).toString(36);\r\n};\r\n\r\nconst getOptions = (formField: IFormFieldDto): Entity[] => {\r\n switch (formField.OptionsSourceType) {\r\n case 'SimpleList':\r\n return (\r\n formField.Options?.split(';').map((s, index) => ({\r\n Id: s,\r\n Name: `${indexToAlpha(index)}. ${s}`,\r\n })) ?? []\r\n );\r\n default:\r\n console.error(\r\n `OptionsSourceType ${formField.OptionsSourceType} is not implemented`,\r\n );\r\n return [];\r\n }\r\n};\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormCheckbox } from 'app/components/Forms/FormCheckbox';\r\n\r\nexport function CustomFormCheckBox({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n //const title = `${formField.QuizScore} ${t(translations.Points) as string}`;\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormBookitDatePicker } from 'app/components/Forms/FormBookitDatePicker';\r\n\r\nexport function CustomFormDate({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n //const title = `${formField.QuizScore} ${t(translations.Points) as string}`;\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormCheckbox } from 'app/components/Forms/FormCheckbox';\r\n\r\nexport function CustomFormDisclimer({\r\n formField,\r\n readonly,\r\n disabled,\r\n required,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n //const title = `${formField.QuizScore} ${t(translations.Points) as string}`;\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\n\r\nexport function CustomFormEmail({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\n\r\nexport function CustomFormNumberText({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormParagraph } from 'app/components/Forms/FormParagraph';\r\nimport parse from 'html-react-parser';\r\nexport function CustomFormParagraph({\r\n formField,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n return (\r\n \r\n }\r\n />\r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\n\r\nexport function CustomFormPositiveNumberText({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormRadioGroup\r\n *\r\n */\r\nimport React from 'react';\r\n\r\nimport { FormRadioGroup } from 'app/components/Forms/FromRadioGroup';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { Entity } from 'types/common';\r\n\r\nexport function CustomFormRadioGroup({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n const options = getOptions(formField);\r\n\r\n //const title = formField.Description ?? undefined;\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst getOptions = (formField: IFormFieldDto): Entity[] => {\r\n if (formField) {\r\n return createOptions(formField);\r\n } else {\r\n return [] as Entity[];\r\n }\r\n};\r\nconst createOptions = (field: IFormFieldDto): Entity[] => {\r\n if (field.Options && field.Options !== null) {\r\n switch (field.OptionsSourceType) {\r\n case 'Internal':\r\n return deserializeOptions(field.Options);\r\n\r\n case 'SimpleList':\r\n return deserializeOptions(field.Options.split(','));\r\n case 'External':\r\n return [] as Entity[];\r\n }\r\n } else {\r\n return [] as Entity[];\r\n }\r\n};\r\nconst deserializeOptions = (options: any): Entity[] => {\r\n let optsArray = [] as Entity[];\r\n if (Array.isArray(options)) {\r\n optsArray = options.map(opt => {\r\n return { Id: opt, Name: opt } as Entity;\r\n });\r\n } else {\r\n try {\r\n let items = JSON.parse(options);\r\n if (Array.isArray(items)) {\r\n let arr = items.map(o => {\r\n if (typeof o == 'string') {\r\n return { Id: o, Name: o, Parent: null } as Entity;\r\n } else if (o.hasOwnProperty('id') && o.hasOwnProperty('text')) {\r\n return {\r\n Id: o.id,\r\n Name: o.text,\r\n } as Entity;\r\n } else {\r\n return undefined;\r\n }\r\n });\r\n optsArray =\r\n (arr.filter(o => o !== undefined) as Entity[]) ||\r\n ([] as Entity[]);\r\n }\r\n return optsArray;\r\n } catch {\r\n return optsArray;\r\n }\r\n }\r\n\r\n return optsArray;\r\n};\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\n\r\nexport function CustomFormRichText({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CustomFormField\r\n *\r\n */\r\nimport React from 'react';\r\nimport { CustomFormFieldProps } from 'app/components/CustomForm/CustomFormFields';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\n\r\nexport function CustomFormShortText({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { FieldTypesUnion } from 'api/odata/generated/enums/FieldTypes';\r\nimport { Entity } from 'types/common';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport { CustomFormAnswerQuestions } from './CustomFormFields/CustomFormAnswerQuestions';\r\nimport { CustomFormCheckBox } from './CustomFormFields/CustomFormCheckBox';\r\nimport { CustomFormDate } from './CustomFormFields/CustomFormDate';\r\nimport { CustomFormDisclimer as CustomFormDisclaimer } from './CustomFormFields/CustomFormDisclimer';\r\nimport { CustomFormDropDown } from './CustomFormFields/CustomFormDropDown';\r\nimport { CustomFormEmail } from './CustomFormFields/CustomFormEmail';\r\nimport { CustomFormFileUpload } from './CustomFormFields/CustomFormFileUpload';\r\nimport { CustomFormNumberText } from './CustomFormFields/CustomFormNumberText';\r\nimport { CustomFormParagraph } from './CustomFormFields/CustomFormParagraph';\r\nimport { CustomFormPositiveNumberText } from './CustomFormFields/CustomFormPositiveNumber';\r\nimport { CustomFormRadioGroup } from './CustomFormFields/CustomFormRadioGroup';\r\nimport { CustomFormRichText } from './CustomFormFields/CustomFormRichText';\r\nimport { CustomFormShortText } from './CustomFormFields/CustomFormShortText';\r\nimport { CustomFormUserSelection } from './CustomFormFields/CustomFormUserSelection';\r\n\r\nexport interface CustomFormFieldProps {\r\n name: string;\r\n id: string;\r\n formField: IFormFieldDto;\r\n readonly?: boolean;\r\n parentValue?: Entity[];\r\n disabled?: boolean;\r\n onChange?: (value: any) => void;\r\n autoFocus?: boolean;\r\n required?: boolean;\r\n fullWidth?: boolean;\r\n}\r\nexport function CustomFormField({\r\n formField,\r\n readonly,\r\n disabled,\r\n onChange,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n const requireComponent = (\r\n type: FieldTypesUnion,\r\n ): React.FC => {\r\n switch (type) {\r\n case 'MultipleAnswersQuestion':\r\n return CustomFormAnswerQuestions;\r\n case 'RadioButtons':\r\n return CustomFormRadioGroup;\r\n case 'CheckBox':\r\n return CustomFormCheckBox;\r\n case 'Disclaimer':\r\n return CustomFormDisclaimer;\r\n case 'Date':\r\n return CustomFormDate;\r\n case 'DropDownList':\r\n return CustomFormDropDown;\r\n case 'Email':\r\n return CustomFormEmail;\r\n case 'Number':\r\n return CustomFormNumberText;\r\n case 'PositiveNumber':\r\n return CustomFormPositiveNumberText;\r\n case 'Paragraph':\r\n return CustomFormParagraph;\r\n case 'RichText':\r\n return CustomFormRichText;\r\n case 'ShortText':\r\n return CustomFormShortText;\r\n case 'UserSelection':\r\n return CustomFormUserSelection;\r\n case 'File':\r\n return CustomFormFileUpload;\r\n case 'AlphanumericWithDashes':\r\n return CustomFormShortText;\r\n case 'FormSection':\r\n return CustomFormParagraph;\r\n default:\r\n assertExhaustive(type);\r\n }\r\n };\r\n const Component = requireComponent(formField.Type);\r\n return (\r\n \r\n );\r\n}\r\n","import { IOfflineServiceTypeRefsDto } from 'api/odata/generated/entities/IOfflineServiceTypeRefsDto';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { MandatoryOfflineTypeEnum } from 'enums/MandatoryOfflineTypeEnum';\r\nimport { OfflineReferenceTypeEnum } from 'enums/OfflineReferenceTypeEnum';\r\nimport { TFunction } from 'i18next';\r\nimport { AsyncDataState, Entity } from 'types/common';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { toEntity } from 'utils/entity-utils';\r\nimport { getSingleEnumEntityById } from 'utils/enumKeys';\r\n\r\n/* --- STATE --- */\r\nexport interface OfflineTypeRefsState {\r\n detailsState: AsyncDataState;\r\n processing?: boolean;\r\n isEdit?: boolean;\r\n filters?: Record;\r\n}\r\nexport interface OfflineTypeRefsQueryParams {\r\n id?: string;\r\n refId?: string;\r\n refTypeId?: string;\r\n}\r\n\r\nexport interface IOfflineTypeRefsModel {\r\n Id: number;\r\n RefService: IServiceTypeFilterDto | null;\r\n OfflineServiceType: Entity | null;\r\n RefType: Entity | null;\r\n Mandatory: Entity | null;\r\n DefaultQuantity: number | null;\r\n}\r\nexport interface IOfflineTypeRefsResponse extends IResponseType {\r\n Id: number | null;\r\n data: IOfflineServiceTypeRefsDto | null;\r\n IsValid: boolean;\r\n}\r\n\r\nexport const ConvertDtoToModel = (\r\n data: IOfflineServiceTypeRefsDto,\r\n offlineType?: IOfflineServiceFilterDto,\r\n t?: TFunction,\r\n): IOfflineTypeRefsModel => {\r\n return {\r\n Id: data.Id,\r\n RefService: toEntity(data.RefId, data.Name, {\r\n ServiceGroupId: data.ServiceGroupId,\r\n }) as IServiceTypeFilterDto,\r\n OfflineServiceType: !!offlineType\r\n ? offlineType\r\n : toEntity(data.OfflineServiceTypeId, data.OfflineServiceTypeName, {\r\n ServiceGroupId: data.ServiceGroupId,\r\n }),\r\n RefType: getSingleEnumEntityById(\r\n data.RefTypeId,\r\n OfflineReferenceTypeEnum,\r\n t,\r\n ),\r\n Mandatory: getSingleEnumEntityById(\r\n data.Mandatory,\r\n MandatoryOfflineTypeEnum,\r\n t,\r\n ),\r\n DefaultQuantity: data.DefaultQuantity,\r\n };\r\n};\r\n\r\nexport const ConverModelToDto = (\r\n dto: IOfflineTypeRefsModel,\r\n): IOfflineServiceTypeRefsDto => {\r\n return {\r\n Id: dto.Id,\r\n RefId: dto.RefService?.Id ?? 0,\r\n Name: dto.RefService?.Name ?? '',\r\n OfflineServiceTypeId: dto.OfflineServiceType?.Id ?? 0,\r\n OfflineServiceTypeName: dto.OfflineServiceType?.Name ?? '',\r\n RefTypeId: dto.RefType?.Id ?? 0,\r\n Mandatory: dto.Mandatory?.Id ?? 0,\r\n DefaultQuantity:\r\n Number(dto.DefaultQuantity) === 0 ? null : Number(dto.DefaultQuantity),\r\n SampleRequestTypeId: null,\r\n SampleRequestTypeName: null,\r\n ServiceGroupId: 0,\r\n OnlineServiceTypeId: null,\r\n OnlineServiceTypeName: null,\r\n };\r\n};\r\nexport const MergeModelsToDto = (\r\n dto: IOfflineTypeRefsModel,\r\n original: IOfflineTypeRefsModel,\r\n): IOfflineServiceTypeRefsDto => {\r\n return {\r\n Id: original.Id,\r\n RefId: dto.RefService?.Id ?? original.RefService?.Id ?? 0,\r\n Name: dto.RefService?.Name ?? original.RefService?.Name ?? '',\r\n OfflineServiceTypeId:\r\n dto.OfflineServiceType?.Id ?? original.OfflineServiceType?.Id ?? 0,\r\n OfflineServiceTypeName:\r\n dto.OfflineServiceType?.Name ?? original.OfflineServiceType?.Name ?? '',\r\n RefTypeId: dto.RefType?.Id ?? original.RefType?.Id ?? 0,\r\n Mandatory: dto.Mandatory?.Id ?? original.Mandatory?.Id ?? 0,\r\n DefaultQuantity:\r\n Number(dto.DefaultQuantity) === 0 ? null : Number(dto.DefaultQuantity),\r\n SampleRequestTypeId: null,\r\n SampleRequestTypeName: null,\r\n ServiceGroupId: 0,\r\n OnlineServiceTypeId: null,\r\n OnlineServiceTypeName: null,\r\n };\r\n};\r\nexport const getDefaultModel = (): IOfflineServiceTypeRefsDto => {\r\n return {\r\n Id: 0,\r\n RefId: 0,\r\n Name: '',\r\n OfflineServiceTypeId: 0,\r\n OfflineServiceTypeName: '',\r\n RefTypeId: 1,\r\n Mandatory: 0,\r\n DefaultQuantity: null,\r\n SampleRequestTypeId: null,\r\n SampleRequestTypeName: null,\r\n ServiceGroupId: 0,\r\n OnlineServiceTypeId: null,\r\n OnlineServiceTypeName: null,\r\n } as IOfflineServiceTypeRefsDto;\r\n};\r\n","import {\r\n IOfflineTypeRefsResponse,\r\n OfflineTypeRefsQueryParams,\r\n} from 'app/pages/OfflineTypeReferencesDetails/Details/slice/types';\r\nimport { httpClient } from './HttpClient';\r\nimport { IOfflineServiceTypeRefsDto } from './odata/generated/entities/IOfflineServiceTypeRefsDto';\r\n\r\nexport const OfflineTypeRefsApi = {\r\n initDetails: (payload: OfflineTypeRefsQueryParams) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = `/api/odata/v4/OfflineServiceTypeRefs/InitDetails`;\r\n return httpClient.post(url, data);\r\n },\r\n insertRefs: (period: IOfflineServiceTypeRefsDto) => {\r\n const url = '/api/odata/v4/OfflineServiceTypeRefs';\r\n return httpClient.post(url, period);\r\n },\r\n updateRefs: (period: IOfflineServiceTypeRefsDto, rowId: number) => {\r\n const url = '/api/odata/v4/OfflineServiceTypeRefs';\r\n return httpClient.put(\r\n url + '(' + rowId + ')',\r\n period,\r\n );\r\n },\r\n deleteRef: (Id: number) => {\r\n const url = `/api/odata/v4/OfflineServiceTypeRefs/${Id}`;\r\n return httpClient.deleteCustom(url);\r\n },\r\n deleteSelected: (Id: number) => {\r\n const url = `/api/odata/v4/OfflineServiceTypeRefs/${Id}`;\r\n return httpClient.deleteCustom(url);\r\n },\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { offlineTypeRefsActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { translations } from 'locales/translations';\r\nimport {\r\n ConverModelToDto,\r\n ConvertDtoToModel,\r\n getDefaultModel,\r\n IOfflineTypeRefsModel,\r\n IOfflineTypeRefsResponse,\r\n MergeModelsToDto,\r\n OfflineTypeRefsQueryParams,\r\n} from './types';\r\nimport { IOfflineServiceTypeRefsDto } from 'api/odata/generated/entities/IOfflineServiceTypeRefsDto';\r\nimport { OfflineTypeRefsApi as api } from 'api/OfflineTypeRefsApi';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { OfflineTypeReferencesDetailsProps } from '..';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { AxiosError } from 'axios';\r\nimport i18next from 'i18next';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\n\r\nfunction* doInitDetails(\r\n action: PayloadAction<{\r\n query: OfflineTypeRefsQueryParams;\r\n model?: IOfflineServiceTypeRefsDto;\r\n }>,\r\n) {\r\n try {\r\n let data: IOfflineServiceTypeRefsDto | null = action.payload.model || null;\r\n let hasError: boolean = false;\r\n let offlineType: IOfflineServiceFilterDto | undefined = undefined;\r\n if (data === null) {\r\n const result = yield call(api.initDetails, action.payload.query);\r\n let response = result as IOfflineTypeRefsResponse;\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: 'initRefsErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'initRefsWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.SuccessMessages.map(item => {\r\n return {\r\n key: 'initRefsSucc',\r\n message: item,\r\n variant: 'success',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n data = response.data ?? getDefaultModel();\r\n hasError = !response.IsValid;\r\n }\r\n\r\n let initType = yield call(\r\n httpClient.get,\r\n '/api/odata/v4/OfflineServiceFilter',\r\n {\r\n $filter: `Id eq ${data.OfflineServiceTypeId}`,\r\n $expand: 'InventoryBatches,RelatedReferences',\r\n },\r\n );\r\n offlineType = initType.value[0] as IOfflineServiceFilterDto | undefined;\r\n yield put(\r\n actions.initDetails_Success({\r\n hasErrors: hasError,\r\n data: ConvertDtoToModel(data, offlineType),\r\n isEdit: data.Id > 0,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n yield put(actions.initDetails_Error(error));\r\n }\r\n}\r\nfunction* doCreateRefs(action: PayloadAction) {\r\n const httpPayloads: IOfflineServiceTypeRefsDto = ConverModelToDto(\r\n action.payload,\r\n );\r\n try {\r\n const result = yield call(api.insertRefs, httpPayloads);\r\n let response = result as IOfflineTypeRefsResponse;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: 'refInsertError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'refInsertSuccess',\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: true,\r\n itemName: i18next.t(translations.menu_OfflineTypeRefernces),\r\n detailsType: RenderPageType.OfflineTypeRefDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: '' + response.Id ?? -1,\r\n },\r\n initialDetails: response.data,\r\n } as OfflineTypeReferencesDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: 'refsInsertWarning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n yield put(\r\n actions.createRefs_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'refsInsertErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createRefs_Error(Error));\r\n }\r\n}\r\nfunction* doUpdateRefs(\r\n action: PayloadAction<{\r\n current: IOfflineTypeRefsModel;\r\n original: IOfflineTypeRefsModel;\r\n }>,\r\n) {\r\n let updatedPeriod = MergeModelsToDto(\r\n action.payload.current,\r\n action.payload.original,\r\n );\r\n\r\n try {\r\n const results = yield call(\r\n api.updateRefs,\r\n updatedPeriod,\r\n action.payload.current.Id,\r\n );\r\n let response = results as IOfflineTypeRefsResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'refsUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'refsUpdateSuccess',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.RelatedService),\r\n detailsType: RenderPageType.OfflineTypeRefDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: '' + response.Id ?? -1,\r\n },\r\n initialDetails: response.data,\r\n } as OfflineTypeReferencesDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'refsUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateRefs_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'refsUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateRefs_Error(Error));\r\n }\r\n}\r\n\r\nexport function* offlineTypeRefsSaga() {\r\n yield takeLatest(actions.initDetails.type, doInitDetails);\r\n yield takeLatest(actions.createRefs.type, doCreateRefs);\r\n yield takeLatest(actions.updateRefs.type, doUpdateRefs);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IOfflineServiceTypeRefsDto } from 'api/odata/generated/entities/IOfflineServiceTypeRefsDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { offlineTypeRefsSaga } from './saga';\r\nimport {\r\n IOfflineTypeRefsModel,\r\n OfflineTypeRefsQueryParams,\r\n OfflineTypeRefsState,\r\n} from './types';\r\n\r\nexport const initialState: OfflineTypeRefsState = {\r\n processing: undefined,\r\n isEdit: false,\r\n filters: undefined,\r\n detailsState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n },\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'offlineTypeRefs',\r\n initialState,\r\n reducers: {\r\n initDetails(\r\n state,\r\n action: PayloadAction<{\r\n query: OfflineTypeRefsQueryParams;\r\n model?: IOfflineServiceTypeRefsDto;\r\n }>,\r\n ) {\r\n state.processing = true;\r\n state.isEdit = false;\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n };\r\n },\r\n initDetails_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n data: IOfflineTypeRefsModel;\r\n isEdit: boolean;\r\n }>,\r\n ) {\r\n state.processing = false;\r\n state.detailsState.data = action.payload.data;\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.isEdit = action.payload.isEdit;\r\n },\r\n initDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n resetDetailsState(state, action: PayloadAction) {\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.processing = undefined;\r\n },\r\n createRefs(state, action: PayloadAction) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n createRefs_Success(state, action: PayloadAction<{ hasErrors: boolean }>) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n },\r\n createRefs_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n updateRefs(\r\n state,\r\n action: PayloadAction<{\r\n current: IOfflineTypeRefsModel;\r\n original: IOfflineTypeRefsModel;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n updateRefs_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n },\r\n updateRefs_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n setFilters(state, action: PayloadAction | undefined>) {\r\n state.filters = action.payload;\r\n },\r\n resetFilters(state, action: PayloadAction) {\r\n state.filters = undefined;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: offlineTypeRefsActions } = slice;\r\n\r\nexport const useOfflineTypeRefsSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: offlineTypeRefsSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { InvoiceDetailActions as actions } from '.';\r\n\r\nexport function* doGetInvoice(action: PayloadAction) {\r\n yield put(actions.setLoading(true));\r\n try {\r\n const invoice = yield call(\r\n httpClient.get,\r\n '/api/odata/v4/InvoiceDetails(' + action.payload + ')',\r\n {\r\n $expand: 'ServiceGroups',\r\n },\r\n );\r\n yield put(actions.setInvoice(invoice));\r\n yield put(actions.setLoading(false));\r\n } catch {\r\n yield put(actions.notFound());\r\n }\r\n}\r\n\r\nexport function* InvoiceDetailsSaga() {\r\n yield takeLatest(actions.getInvoice.type, doGetInvoice);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { IInvoice } from '../ReadOnly/IInvoice';\r\nimport { InvoiceDetailsSaga } from './saga';\r\nimport { InvoiceDetailsState } from './type';\r\n\r\nexport const initialState: InvoiceDetailsState = {\r\n loading: false,\r\n notFound: false,\r\n invoice: null,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'InvoiceDetails',\r\n initialState,\r\n reducers: {\r\n setLoading(state, action: PayloadAction) {\r\n state.loading = action.payload;\r\n },\r\n notFound(state, action: PayloadAction) {\r\n state.notFound = true;\r\n },\r\n setFilters(state, action: PayloadAction | undefined>) {\r\n state.filters = action.payload;\r\n },\r\n setInvoice(state, action: PayloadAction) {\r\n state.invoice = action.payload;\r\n },\r\n getInvoice(state, action: PayloadAction) {},\r\n reset(state, action: PayloadAction) {\r\n state.filters = undefined;\r\n state.notFound = false;\r\n state.loading = false;\r\n state.invoice = null;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: InvoiceDetailActions } = slice;\r\n\r\nexport const useInvoiceDetailsSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: InvoiceDetailsSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import { httpClient } from 'api/HttpClient';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface ServiceUserGroupPickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/ServiceUserGroupFilter';\r\nexport const initServiceUserGroupData = (initval: string) => {\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: new Condition>(\r\n 'Id',\r\n ODataOperators.Equals,\r\n initval,\r\n ).toString(),\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nconst loadData = (\r\n searchTerm: string | null,\r\n predicates?: (string | Condition>)[],\r\n) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null || (predicates && predicates.length > 0)) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: predicates ?? [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm ?? '',\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function ServiceUserGroupPicker(props: ServiceUserGroupPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport { Entity } from 'types/common';\r\nimport { ServiceUserGroupPicker } from '../pickers/AutocompletePickers/ServiceUserGroupPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport const FormServiceUserGroupPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & IFieldProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n predicates={props.predicates}\r\n disabled={props.disabled}\r\n disableClearable={props.disableClearable}\r\n />\r\n );\r\n};\r\n","/**\r\n * This file is only need if you want to extract messages into JSON files in locales folder\r\n * AND if you are also using the object syntax instead of string syntax. \\\r\n * Check the documentation section i18n for details\r\n */\r\nimport { translations } from 'locales/translations';\r\nimport { _t } from 'utils/messages';\r\n\r\nexport const messages = {\r\n bookitlab: () => _t(translations.BookitLab),\r\n};\r\n","import { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { IFixedRoleDto } from './IFixedRolesDto';\r\nimport { IServiceTypeFilterDto } from './IServiceTypeFilterDto';\r\nimport { IUserGroupDto } from './IUserGroupDto';\r\n\r\n/**\r\n *\r\n * auto generated interface for bkt_webApp.Api.OData.V4.Dto.UserFilterDto\r\n *\r\n */\r\nexport interface IUserFilterDto extends Identifiable {\r\n Id: string;\r\n Name: string;\r\n UserGroupId: string | null;\r\n UserGroupName: string | null;\r\n UserGroups: IUserGroupDto[];\r\n Budgets: number[];\r\n UserRoles: IFixedRoleDto[];\r\n CustomRoles: Entity[];\r\n Services: IServiceTypeFilterDto[];\r\n ServiceGroupIds: number[];\r\n IsAdminPanel: boolean;\r\n IsGroupAdmin: boolean;\r\n IsEquipmentAdmin: boolean;\r\n IsLabTech: boolean;\r\n AssetIds: number[];\r\n InstituteId: number | null;\r\n StaffEquipmentId: number | null;\r\n DefaultBudgetId: number | null;\r\n}\r\nexport const convertAuthToIUserFilterDto = (\r\n user: AuthenticatedUser,\r\n): IUserFilterDto => {\r\n return {\r\n Id: user.Id,\r\n Name: user.Name,\r\n UserGroupId: user.ActiveUserGroup?.Id,\r\n UserGroupName: user.ActiveUserGroup?.Name,\r\n Services: user.AdminEquipments.map(f => {\r\n return {\r\n Id: f.Id,\r\n Name: f.Name,\r\n ServiceTypeId: f.ServiceTypeId,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n ServiceGroupIds: user.AdminServiceGroups.map(f => f.Id),\r\n IsAdminPanel: user.Roles.includes(Roles.Administrators),\r\n } as IUserFilterDto;\r\n};\r\n","import { httpClient } from './HttpClient';\r\nimport { UpdateFilesModel } from 'utils/fileStoreHelper';\r\n\r\nexport const FileStoreApi = {\r\n saveFormFiles: (payload: UpdateFilesModel[]) => {\r\n const url = `/api/odata/v4/files/InsertFormFile`;\r\n const form = new FormData();\r\n form.append('TypeId', payload[0].typeId as any);\r\n form.append('ReferenceId', payload[0].referenceId as any);\r\n form.append('FormTypeId', payload[0].formType as any);\r\n form.append('UpdateOption', payload[0].updateOption as any);\r\n form.append('AlertTypeId', payload[0].alertTypeId as any);\r\n let added = payload.filter(f => f.operation === 'added')[0];\r\n if (!!added && added.files.length > 0) {\r\n added.files.forEach((file, ind) => {\r\n form.append(\r\n `FormField_${file.Id}_${ind}`,\r\n file.PostedFile ?? file.Id.toString(),\r\n file.PostedFile === null ? undefined : file.PostedFile.name,\r\n );\r\n });\r\n }\r\n return httpClient.post(url, form);\r\n },\r\n updateFormFiles: (payload: UpdateFilesModel[]) => {\r\n const url = `/api/odata/v4/files/UpdateFormFile`;\r\n const form = new FormData();\r\n form.append('TypeId', payload[0].typeId as any);\r\n form.append('ReferenceId', payload[0].referenceId as any);\r\n form.append('FormTypeId', payload[0].formType as any);\r\n form.append('UpdateOption', payload[0].updateOption as any);\r\n form.append('AlertTypeId', payload[0].alertTypeId as any);\r\n let deleted = payload.filter(f => f.operation === 'removed')[0];\r\n let added = payload.filter(f => f.operation === 'added')[0];\r\n if (!!deleted) {\r\n deleted.files.forEach((f, ind) => {\r\n form.append(`deleted_${ind}`, `FormField_${f.Id}_${f.Value}`);\r\n });\r\n }\r\n if (!!added && added.files.length > 0) {\r\n added.files.forEach((file, ind) => {\r\n form.append(\r\n `FormField_${file.Id}_${ind}`,\r\n file.PostedFile ?? file.Id.toString(),\r\n file.PostedFile === null ? undefined : file.PostedFile.name,\r\n );\r\n });\r\n }\r\n return httpClient.post(url, form);\r\n },\r\n};\r\n","import styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport const TabsWrapper = styled('div')(({ theme }) => ({\r\n '&.tabsWrapper': {\r\n display: 'flex',\r\n padding: '0px 32px',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n alignSelf: 'stretch',\r\n gap: '32px',\r\n width: '100%',\r\n '&.scrollContent': {\r\n overflow: 'hidden',\r\n },\r\n '&.tabsHorizontal': {\r\n '& .basicTabs': {\r\n flexGrow: 1,\r\n width: '100%',\r\n borderBottom: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n },\r\n },\r\n '&.tabsVertical': {\r\n flexDirection: 'row',\r\n //padding: '0px',\r\n '& .tabIndicator': {\r\n display: 'none',\r\n },\r\n },\r\n '& .basicTabs': {\r\n backgroundColor: 'transparent',\r\n '& .basicTabSelected': {\r\n backgroundColor: `${bookitColors.grayscale.graybgComponents}`,\r\n },\r\n '&.tabsVertical': {\r\n minWidth: '15%',\r\n },\r\n },\r\n '& .groupedHeader': {\r\n paddingLeft: '0px',\r\n marginLeft: '0px',\r\n fontSize: '14px',\r\n color: `${bookitColors.grayscale.blackRegular}`,\r\n '&.selected': {\r\n color: `${bookitColors.primary.components}`,\r\n },\r\n '& > span': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingLeft: '0px',\r\n marginLeft: '0px',\r\n justifyContent: 'start',\r\n textAlign: 'left',\r\n },\r\n },\r\n '& .tabSizeSmall': {\r\n minHeight: '40px',\r\n },\r\n },\r\n}));\r\nexport const TabPanelWrapper = styled('div')(({ theme }) => ({\r\n '&.tabPanel': {\r\n width: '100%',\r\n '&.scrollablePanel': {\r\n height: '100%',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '4px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const SubTabsWrapper = styled('div')(({ theme }) => ({\r\n color: `${bookitColors.grayscale.blackRegular}`,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n '& .subTabs': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n borderLeft: `1px ${bookitColors.grayscale.grayBorders} solid`,\r\n paddingLeft: '8px',\r\n color: `${bookitColors.grayscale.blackRegular}`,\r\n '& .subTab': {\r\n fontSize: '14px',\r\n color: `${bookitColors.grayscale.blackRegular}`,\r\n borderRadius: '8px',\r\n '& .buttonLabel': {\r\n alignSelf: 'self-start',\r\n textAlign: 'left',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const Divider = styled.div(() => ({\r\n width: '24px',\r\n}));\r\n","import { CustomDivider } from '../wrappers';\r\n\r\nexport interface FormDividerProps {}\r\nconst FormDivider = (props: FormDividerProps) => {\r\n return ;\r\n};\r\nexport default FormDivider;\r\n","export enum SamplePlatePositionNamingTypes {\r\n Alpha = 0,\r\n Numeric = 1,\r\n}\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport {\r\n selectConfirmApproved,\r\n selectConfirmRejected,\r\n selectExpandedSidePanel,\r\n selectHasNotSavedChanges,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { selectPublicUrl } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { PageWrapper } from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport { omit } from 'lodash';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { push } from 'connected-react-router';\r\nimport { DeatilsOperations } from './ditails';\r\nimport { SaveFormButton } from 'app/pages/UserTrainings/TrainingDetailsPage/Details/Actions/TrainingActions';\r\nimport { TFunction } from 'i18next';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { INotification } from '../Actions/Actions';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\n\r\nexport interface DetailsFormProps {\r\n initialValues?: LocationDetailsProps;\r\n ModelDetails: any;\r\n isEdit?: boolean;\r\n processing?: boolean;\r\n bindSubmitForm: any;\r\n onSubmit: (item: any) => void;\r\n onCancel?: () => void;\r\n}\r\n\r\nexport interface LocationDetailsProps extends SidePanelContentProps {\r\n Id: number;\r\n Title: string;\r\n AddNew: string;\r\n ModelDetails: any;\r\n PageComponent: string;\r\n component: React.FC;\r\n operation: DeatilsOperations;\r\n submitcall: (\r\n t: TFunction,\r\n Id: number,\r\n operation: DeatilsOperations,\r\n details: any,\r\n handleSubmitCallResult: (values: INotification[]) => void,\r\n ) => void;\r\n}\r\n\r\nexport function LocationDetails(props: LocationDetailsProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const initialValues: LocationDetailsProps = props;\r\n const hasChanges = useSelector(selectHasNotSavedChanges, shallowEqual);\r\n const edit = initialValues.operation === DeatilsOperations.edit;\r\n const busy = false;\r\n const isMobile = DetectIsMobile();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const confirmRejected = useSelector(selectConfirmRejected);\r\n const confirmApproved = useSelector(selectConfirmApproved);\r\n const requestCompleted = true;\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const handleSubmitForm = e => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n const handleCancelClick = React.useCallback(() => {\r\n if (props.useSidePanel) {\r\n dispatch(layoutActions.resetSidePanel());\r\n } else {\r\n dispatch(push('/' + initialValues.PageComponent));\r\n }\r\n }, [\r\n dispatch,\r\n initialValues.PageComponent,\r\n layoutActions,\r\n props.useSidePanel,\r\n ]);\r\n const handleClose = () => {\r\n if (hasChanges) {\r\n dispatch(layoutActions.setConfirmOpen(true));\r\n } else {\r\n handleCancelClick();\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (confirmApproved) {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n if (confirmRejected) {\r\n dispatch(layoutActions.resetConfirmState());\r\n }\r\n });\r\n\r\n const submitFormRef = React.useRef(null);\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n const handleSubmitCallResult = React.useCallback(\r\n (values: INotification[]) => {\r\n values.forEach(v =>\r\n dispatch(\r\n actions.addNotification({ variant: v.variant, message: v.message }),\r\n ),\r\n );\r\n dispatch(layoutActions.resetSidePanel());\r\n dispatch(layoutActions.setRefreshTable(true));\r\n },\r\n [actions, dispatch, layoutActions],\r\n );\r\n const handleSubmit = React.useCallback(\r\n values => {\r\n initialValues.submitcall(\r\n t,\r\n initialValues.Id,\r\n initialValues.operation,\r\n values,\r\n handleSubmitCallResult,\r\n );\r\n },\r\n [handleSubmitCallResult, initialValues, t],\r\n );\r\n const LocationContent = React.useMemo(() => {\r\n return (\r\n \r\n );\r\n }, [bindSubmitForm, handleSubmit, initialValues]);\r\n const leftActions = React.useMemo(() => {\r\n return [\r\n () => (\r\n \r\n }\r\n onClick={handleSubmitForm}\r\n disabled={busy}\r\n processing={!requestCompleted && busy}\r\n edit={edit}\r\n text={t(translations.Save)}\r\n />\r\n \r\n ),\r\n ] as ActionRenderer[];\r\n }, [busy, edit, isMobile, requestCompleted, sidePanelExpanded, t]);\r\n\r\n const rightActions = React.useMemo(() => {\r\n return [\r\n () => (\r\n \r\n }\r\n onClick={handleCancelClick}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n \r\n ),\r\n ] as ActionRenderer[];\r\n }, [handleCancelClick, isMobile, sidePanelExpanded, t]);\r\n return (\r\n <>\r\n \r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n}\r\n","import { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport * as Yup from 'yup';\r\nimport { BudgetEntitySechema, ServiceGroupEntitySchema } from '..';\r\n\r\n/**\r\n *\r\n * @param t localization TFunction\r\n * @returns base validation schema for paymet or charge\r\n */\r\nexport function InvoiceChildRowBaseSchema(t: TFunction) {\r\n return Yup.object({\r\n Id: Yup.number().notRequired(),\r\n InvoiceId: Yup.number().notRequired(),\r\n Budget: BudgetEntitySechema.nullable().required(\r\n t(translations.PleaseSelectABudgetNumber),\r\n ),\r\n ServiceGroup: ServiceGroupEntitySchema.required(\r\n t(translations.PleaseSelectServiceGroup),\r\n ).nullable(),\r\n Date: Yup.date().required(t(translations.PleaseSelectADate)),\r\n });\r\n}\r\n","export enum AllowCreateInvoicesBy {\r\n AlllowCreateInvoicesBy_AllowToChooseOnCreation,\r\n AlllowCreateInvoicesBy_BudgetsOnly,\r\n AlllowCreateInvoicesBy_UserGroupOnly,\r\n}\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { PaymentApi } from 'api/PaymentApi';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\n// import { FormAdminServiceGroupPicker } from 'app/components/Forms/FormAdminServiceGroupPicker';\r\nimport { FormBudgetPicker } from 'app/components/Forms/FormBudgetPicker';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport { FormPaymentMethodPicker } from 'app/components/Forms/FormPaymentMethodPicker';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\nimport { FormServiceGroupPicker } from 'app/components/Forms/FormServiceGroupPicker';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { serviceGroupFilterUrl } from 'app/components/pickers/ServiceGroupPicker';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { useResponseModel } from 'app/hooks/useResponseModel';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { selectAppSettings } from 'app/slice/selectors';\r\nimport { Formik } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport React, { useCallback, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { IsModuleEnabled } from 'types/AppSettings';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { Entity } from 'types/common';\r\nimport * as Yup from 'yup';\r\nimport { IPayment } from './IPayment';\r\nimport { getPaymentSchema } from './PaymentSchema';\r\nimport { getPaymentSchemaWithBudgetNotRequired } from './PaymentSchema';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { FormBookitDatePicker } from 'app/components/Forms/FormBookitDatePicker';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\n\r\nexport interface PaymentProps extends SidePanelContentProps, CoverProps {\r\n invoiceId?: number;\r\n budget: Entity | null;\r\n serviceGroup: Entity | null;\r\n amount?: number;\r\n paymentId?: number;\r\n serviceGroupPredicate?: (string | Condition>)[];\r\n userGroupId?: string;\r\n onClosePayment?: () => void;\r\n}\r\n\r\nexport const AddPayment = (props: PaymentProps) => {\r\n const { t } = useTranslation();\r\n const {\r\n invoiceId,\r\n budget,\r\n serviceGroup,\r\n amount,\r\n paymentId,\r\n serviceGroupPredicate,\r\n useSidePanel,\r\n userGroupId,\r\n onClosePayment,\r\n isCover,\r\n closeCover,\r\n } = props;\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const appSettings = useSelector(selectAppSettings);\r\n const { actions: notifyActions } = useAppSettingsSlice();\r\n const submitRef = useRef();\r\n const [busy, setBusy] = useState(false);\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState(\r\n undefined,\r\n undefined,\r\n isCover,\r\n useSidePanel,\r\n onClosePayment,\r\n );\r\n const sendResponse = useResponseModel();\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const isEdit = !!paymentId && !!invoiceId;\r\n const { newDate } = useSystemDate();\r\n\r\n const refreshTable = useCallback(() => {\r\n dispatch(actions.setRefreshTable(true));\r\n }, [dispatch, actions]);\r\n\r\n const handleCloselClick = React.useCallback(() => {\r\n if (!!onClosePayment) {\r\n onClosePayment();\r\n } else {\r\n closePanel({\r\n isCover: isCover || !!cover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n } as SidePanelCloseState);\r\n }\r\n }, [closePanel, cover, hasChanges, isCover, onClosePayment, useSidePanel]);\r\n\r\n const submit = useCallback(\r\n (payment: IPayment) => {\r\n setBusy(true);\r\n if (!isEdit) {\r\n PaymentApi.AddPayment(payment)\r\n .then(v => {\r\n if (v.SuccessMessages.length > 0) {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'payment_success',\r\n message: v.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n v.SuccessMessages = [];\r\n }\r\n sendResponse(v);\r\n })\r\n .catch(() => {\r\n dispatch(\r\n notifyActions.addNotification({\r\n message: t(translations.err_InvoicePaymentAdd),\r\n variant: 'error',\r\n }),\r\n );\r\n })\r\n .finally(() => {\r\n handleCloselClick();\r\n refreshTable();\r\n });\r\n } else {\r\n PaymentApi.UpdatePayment(paymentId!, payment)\r\n .then(() => {\r\n dispatch(\r\n notifyActions.addNotification({\r\n message: t(translations.success_EditInvoicePayment),\r\n variant: 'success',\r\n }),\r\n );\r\n })\r\n .catch(() => {\r\n dispatch(\r\n notifyActions.addNotification({\r\n message: t(translations.err_EditInvoicePayment),\r\n variant: 'error',\r\n }),\r\n );\r\n })\r\n .finally(() => {\r\n handleCloselClick();\r\n refreshTable();\r\n });\r\n }\r\n },\r\n [\r\n handleCloselClick,\r\n dispatch,\r\n isEdit,\r\n notifyActions,\r\n paymentId,\r\n refreshTable,\r\n sendResponse,\r\n t,\r\n ],\r\n );\r\n const [initialValues, setinitialValues] = useState({\r\n InvoiceId: invoiceId,\r\n Budget: budget,\r\n ServiceGroup: serviceGroup,\r\n Amount: amount,\r\n Method: null,\r\n Date: newDate(),\r\n });\r\n\r\n useEffectOnMount(() => {\r\n //dispatch(layoutActions.setUpSnackBarIndex(true)); // increase snack bar z-index\r\n if (!isEdit) {\r\n if (serviceGroup === null) {\r\n setBusy(true);\r\n let isMounted = true;\r\n (async () => {\r\n const res = await getAutoCompleteLoadDataFn>({\r\n url: serviceGroupFilterUrl,\r\n predicates: authenticatedUser\r\n ? [\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n authenticatedUser.AdminServiceGroups,\r\n ),\r\n ]\r\n : undefined,\r\n })('', serviceGroupPredicate).then(v => v.value);\r\n if (isMounted) {\r\n if (res && res.length === 1) {\r\n setinitialValues(prev => ({ ...prev, ServiceGroup: res[0] }));\r\n }\r\n setBusy(false);\r\n }\r\n })();\r\n return () => {\r\n isMounted = false;\r\n };\r\n }\r\n return;\r\n }\r\n setBusy(true);\r\n let mounted = true;\r\n (async () => {\r\n try {\r\n let res = await httpClient.get(\r\n '/api/odata/v4/InvoicePayments(' + paymentId + ')',\r\n {\r\n id: invoiceId,\r\n $select: [\r\n 'InvoiceId',\r\n 'MethodId',\r\n 'PaymentMethodName',\r\n 'Amount',\r\n 'Date',\r\n 'Remarks',\r\n 'Reference',\r\n 'BudgetId',\r\n 'BudgetNumber',\r\n 'ServiceGroupId',\r\n 'ServiceGroupName',\r\n ].join(','),\r\n },\r\n );\r\n if (mounted) {\r\n setinitialValues({\r\n Id: paymentId,\r\n InvoiceId: res.InvoiceId,\r\n Budget: res.BudgetId\r\n ? { Id: res.BudgetId, Name: res.BudgetNumber }\r\n : null,\r\n ServiceGroup: res.ServiceGroupId\r\n ? { Id: res.ServiceGroupId, Name: res.ServiceGroupName }\r\n : null,\r\n Method: { Id: res.MethodId, Name: res.PaymentMethodName },\r\n Date: res.Date,\r\n Amount: res.Amount,\r\n Reference: res.Reference ?? undefined,\r\n Remarks: res.Remarks ?? undefined,\r\n });\r\n setBusy(false);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })();\r\n return () => {\r\n //dispatch(layoutActions.setUpSnackBarIndex(false)); // decrease snack bar z-index\r\n mounted = false;\r\n };\r\n });\r\n\r\n const PaymentSchema: Yup.SchemaOf = getPaymentSchema(t);\r\n const PaymentSchemaWithBudgetNotRequired: Yup.SchemaOf =\r\n getPaymentSchemaWithBudgetNotRequired(t);\r\n if (isEdit) {\r\n PaymentSchema.fields.ServiceGroup =\r\n PaymentSchema.fields.ServiceGroup.notRequired();\r\n }\r\n\r\n const Paymentform = () => (\r\n \r\n {formik => {\r\n submitRef.current = formik.submitForm;\r\n return (\r\n \r\n {/* By using FormListener, the fields become not editable */}\r\n {/* {}} /> */}\r\n \r\n \r\n \r\n \r\n \r\n {IsModuleEnabled(appSettings, KnownModules.Budgets) && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n );\r\n const leftActions = [\r\n () => (\r\n <>\r\n submitRef.current?.()}\r\n size=\"small\"\r\n disabled={busy}\r\n >\r\n {t(translations.Submit)}\r\n \r\n \r\n ),\r\n ];\r\n const rightActions = [\r\n () => (\r\n <>\r\n }\r\n onClick={handleCloselClick}\r\n disabled={busy}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n \r\n ),\r\n ];\r\n return (\r\n }\r\n leftActions={leftActions}\r\n rightActions={rightActions}\r\n disableExpandToggle={true}\r\n closeSidePanel={handleCloselClick}\r\n isCover={isCover}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n coverClosed={coverClosed}\r\n />\r\n );\r\n};\r\n","import {\r\n BudgetEntitySechema,\r\n FeeTypeEntitySchema,\r\n OfflineServiceTypeEntitySchema,\r\n OnlineServiceEntitySchema,\r\n PaymentMethodEntitySchema,\r\n ServiceGroupEntitySchema,\r\n UserEntitySchema,\r\n} from 'app/components/Forms/Schemas';\r\nimport { InvoiceChildRowBaseSchema } from 'app/components/Forms/Schemas/InvoiceChildRowBaseSchema';\r\nimport { CatRateTypes } from 'enums/CatRateTypes';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Entity } from 'types/common';\r\nimport * as Yup from 'yup';\r\n\r\nimport { IPayment } from './IPayment';\r\n\r\nexport function getPaymentSchema(t: TFunction): Yup.SchemaOf {\r\n return InvoiceChildRowBaseSchema(t).shape({\r\n Budget: BudgetEntitySechema.nullable().notRequired().optional(),\r\n Method: PaymentMethodEntitySchema.required(\r\n t(translations.err_PaymentMethodRequired),\r\n ).nullable(),\r\n Amount: Yup.number()\r\n .required(t(translations.PleaseEnterAnAmount))\r\n .positive(t(translations.InvalidValue)),\r\n\r\n Reference: Yup.string().notRequired(),\r\n Remarks: Yup.string().notRequired(),\r\n });\r\n}\r\n\r\nexport function getPaymentSchemaWithBudgetNotRequired(\r\n t: TFunction,\r\n): Yup.SchemaOf {\r\n return InvoiceChildRowBaseSchema(t).shape({\r\n Method: PaymentMethodEntitySchema.required(\r\n t(translations.err_PaymentMethodRequired),\r\n ).nullable(),\r\n Amount: Yup.number()\r\n .required(t(translations.PleaseEnterAnAmount))\r\n .positive(t(translations.InvalidValue)),\r\n\r\n Reference: Yup.string().notRequired(),\r\n Remarks: Yup.string().notRequired(),\r\n Budget: BudgetEntitySechema.nullable().notRequired().optional(),\r\n });\r\n}\r\n\r\nexport function getChargeValidationSchema(t: TFunction) {\r\n return InvoiceChildRowBaseSchema(t).shape({\r\n User: UserEntitySchema.nullable().when(\r\n 'FeeType',\r\n (catRateType, schema: Yup.SchemaOf>) =>\r\n [CatRateTypes.Refund, CatRateTypes.Other].includes(\r\n (catRateType as Entity)?.Id,\r\n )\r\n ? schema.notRequired()\r\n : schema.required(),\r\n ),\r\n Resource: OnlineServiceEntitySchema.notRequired().nullable(),\r\n OtherService: OfflineServiceTypeEntitySchema.notRequired().nullable(),\r\n SampleType: OfflineServiceTypeEntitySchema.notRequired().nullable(),\r\n FeeType: FeeTypeEntitySchema.required().nullable(),\r\n Quantity: Yup.number().defined(),\r\n Rate: Yup.number()\r\n .defined()\r\n .when('FeeType', (catRateType, schema: Yup.NumberSchema) => {\r\n return (catRateType as Entity)?.Id === CatRateTypes.Refund ||\r\n (catRateType as Entity)?.Id === CatRateTypes.Discount\r\n ? schema.negative()\r\n : schema.positive();\r\n }),\r\n Amount: Yup.number()\r\n .defined()\r\n .when('FeeType', (catRateType, schema: Yup.NumberSchema) => {\r\n return (catRateType as Entity)?.Id === CatRateTypes.Refund ||\r\n (catRateType as Entity)?.Id === CatRateTypes.Discount\r\n ? schema.negative()\r\n : schema.positive();\r\n }),\r\n\r\n ServiceGroup: ServiceGroupEntitySchema.required().nullable(),\r\n });\r\n}\r\n","import { ICharge } from 'app/pages/AddChargePage/ICharge';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\nconst url = '/api/odata/v4/Charge';\r\nexport const ChargeApi = {\r\n AddCharge: (charge: ICharge) => {\r\n const data = {\r\n Id: charge.Id,\r\n Username: charge.User?.Id,\r\n BudgetId: charge.Budget?.Id,\r\n EquipmentId: charge.Resource?.Id,\r\n OfflineServiceTypeId: charge.OtherService?.Id,\r\n Quantity: charge.Quantity,\r\n BaseRate: charge.Rate,\r\n CatRateTypeId: charge.FeeType?.Id,\r\n Date: charge.Date,\r\n SampleTypeId: charge.SampleType?.Id,\r\n ServiceGroupId: charge.ServiceGroup?.Id,\r\n UserGroupId: charge.UserGroup?.Id,\r\n Remarks: charge.Remarks,\r\n PurchaseOrder: charge.PurchaseOrder,\r\n };\r\n return httpClient.post(url, data);\r\n },\r\n UpdateCharge: (charge: ICharge, rowId: number) => {\r\n const data = {\r\n Id: charge.Id,\r\n Username: charge.User?.Id,\r\n BudgetId: charge.Budget?.Id,\r\n EquipmentId: charge.Resource?.Id,\r\n OfflineServiceTypeId: charge.OtherService?.Id,\r\n Quantity: charge.Quantity,\r\n BaseRate: charge.Rate,\r\n CatRateTypeId: charge.FeeType?.Id,\r\n Date: charge.Date,\r\n SampleTypeId: charge.SampleType?.Id,\r\n ServiceGroupId: charge.ServiceGroup?.Id,\r\n ActualRate: charge.ActualRate,\r\n UserGroupId: charge.UserGroup?.Id,\r\n Remarks: charge.Remarks,\r\n PurchaseOrder: charge.PurchaseOrder,\r\n };\r\n return httpClient.put(url + '(' + rowId + ')', data);\r\n },\r\n};\r\n","import { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n CatRateTypePicker,\r\n CatRateTypeProps,\r\n} from '../pickers/AutocompletePickers/CatRateTypePicker';\r\n\r\ninterface FormCatRateTypePickerIntrinsicProps\r\n extends Omit {\r\n serviceGroupId?: number;\r\n invoiceId?: number;\r\n}\r\nexport const FormCatRateTypePicker = ({\r\n onChange,\r\n onBlur,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n FormCatRateTypePickerIntrinsicProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n helpers.setValue(value, true)}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n {...props}\r\n />\r\n \r\n );\r\n};\r\n","import { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n SampleTypePicker,\r\n SampleTypePickerProps,\r\n} from '../pickers/AutocompletePickers/SampleTypePicker.index';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\n\r\ninterface FormOfflineServicePickerIntrinsicProps\r\n extends Omit<\r\n SampleTypePickerProps,\r\n 'onBlur' | 'value' | 'error' | 'onChange'\r\n > {\r\n serviceGroupId?: number;\r\n}\r\nexport const FormSampleTypePicker = ({\r\n onChange,\r\n onBlur,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n FormOfflineServicePickerIntrinsicProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n helpers.setValue(value, true)}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n queryfilter={\r\n props.serviceGroupId\r\n ? new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Equals,\r\n props.serviceGroupId,\r\n ).toString()\r\n : undefined\r\n }\r\n {...props}\r\n />\r\n \r\n );\r\n};\r\n","import { ChargeApi } from 'api/ChargeApi';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { InputLabel } from 'app/components/Typography';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { FormBudgetPicker } from 'app/components/Forms/FormBudgetPicker';\r\nimport { FormCatRateTypePicker } from 'app/components/Forms/FormCatRateTypePicker';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport { FormOfflineServicePicker } from 'app/components/Forms/FormOfflineServicePicker';\r\nimport { FormSampleTypePicker } from 'app/components/Forms/FormSampleTypePicker';\r\nimport { FormServiceGroupPicker } from 'app/components/Forms/FormServiceGroupPicker';\r\nimport { FormServiceUserGroupPicker } from 'app/components/Forms/FormServiceUserGroupPicker';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormUserPicker } from 'app/components/Forms/FormUserPicker';\r\nimport { loadBudgets } from 'app/components/pickers/AutocompletePickers/BudgetPicker';\r\nimport { serviceGroupFilterUrl } from 'app/components/pickers/ServiceGroupPicker';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n selectglobalSettings,\r\n} from 'app/slice/selectors';\r\nimport { AllowCreateInvoicesBy } from 'enums/allowCreateInvoicesBy';\r\nimport { Formik } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { IsModuleEnabled } from 'types/AppSettings';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { Entity } from 'types/common';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { GetChargeSchema } from './ChargeSchema';\r\nimport { ICharge } from './ICharge';\r\nimport { FormOnlineServicesSinglePicker } from 'app/components/Forms/FormEquipmentsPicker';\r\nimport { ServiceGroupFilter } from 'app/components/pickers/MultiSelectPickers/OnlineServicesPicker';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { FormBookitDatePicker } from 'app/components/Forms/FormBookitDatePicker';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport useGlobalSettingsHook from '../ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\nimport { PurchaseOrderOptions } from 'api/odata/generated/enums/PurchaseOrderOptions';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { FormFundingTypePicker } from 'app/components/Forms/FormFundingTypePicker';\r\nimport produce from 'immer';\r\nimport { restrictedBudgetFilter } from 'app/components/pickers/AutocompletePickers/BudgetPicker';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\n\r\nexport interface ChargeProps extends SidePanelContentProps, CoverProps {\r\n invoiceId?: number;\r\n budget: Entity | null;\r\n serviceGroup: Entity | null;\r\n rowId?: number;\r\n serviceGroupPredicate?: (string | Condition>)[];\r\n onCloseCharge?: () => void;\r\n}\r\n\r\nconst onlyManual = true;\r\n\r\nexport const AddCharge = ({\r\n serviceGroupPredicate,\r\n budget,\r\n serviceGroup,\r\n isCover,\r\n useSidePanel,\r\n invoiceId,\r\n rowId,\r\n onCloseCharge,\r\n closeCover,\r\n ...props\r\n}: ChargeProps) => {\r\n const { newDate } = useSystemDate();\r\n const appSettings = useSelector(selectAppSettings);\r\n const settings = useSelector(selectglobalSettings);\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const { actions: notifyActions } = useAppSettingsSlice();\r\n const submitRef = useRef();\r\n const [busy, setBusy] = useState(false);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const globalSettings = useGlobalSettingsHook();\r\n\r\n const [insertedAt, setinsertedAt] = useState(null);\r\n const [insertedBy, setinsertedBy] = useState(null);\r\n const isEdit = !!rowId;\r\n const userGroupByBudeget = settings.GetBoolean(\r\n AllowedSettings[AllowedSettings.ReservationUserGroupGroupByBudgetUserGroup],\r\n );\r\n const fundingTypeVisible = React.useMemo(() => {\r\n return (\r\n globalSettings.fundingTypeBudgetEnabled &&\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n globalSettings.budgetModuleEnabled\r\n );\r\n }, [globalSettings]);\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const [initialValues, setInitialValue] = useState({\r\n Id: invoiceId,\r\n Quantity: 0,\r\n Rate: 0,\r\n Amount: 0,\r\n Date: newDate(),\r\n User: null,\r\n FeeType: null,\r\n OtherService: null,\r\n Resource: null,\r\n SampleType: null,\r\n Budget: budget,\r\n ServiceGroup: serviceGroup,\r\n Manual: true,\r\n UserGroup: null,\r\n Remarks: '',\r\n FundingType:\r\n fundingTypeVisible &&\r\n !!budget &&\r\n budget !== null &&\r\n (budget as IBudgetFilterDto).FundingTypeId !== null\r\n ? getSingleInvoiceFundingType(\r\n (budget as IBudgetFilterDto).FundingTypeId ?? 0,\r\n )\r\n : null,\r\n PurchaseOrder: null,\r\n });\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState(\r\n undefined,\r\n undefined,\r\n isCover,\r\n useSidePanel,\r\n onCloseCharge,\r\n );\r\n\r\n useEffect(() => {\r\n if (!isEdit) {\r\n if (budget !== null) {\r\n setBusy(true);\r\n let isMounted = true;\r\n (async () => {\r\n try {\r\n let queryBudg = loadBudgets('base', [\r\n new Condition('Id', ODataOperators.Equals, budget!.Id),\r\n new Condition('Active', ODataOperators.Equals, true),\r\n ]);\r\n const budgetRes = await queryBudg(null);\r\n const serviceGroupRes = await (() => {\r\n if (serviceGroup !== null) return Promise.resolve([]);\r\n return getAutoCompleteLoadDataFn>({\r\n url: serviceGroupFilterUrl,\r\n predicates: authenticatedUser\r\n ? [\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n authenticatedUser.AdminServiceGroups,\r\n ),\r\n ]\r\n : undefined,\r\n })('', serviceGroupPredicate).then(v => v.value);\r\n })();\r\n if (isMounted) {\r\n const values = { ...initialValues };\r\n if (budgetRes && budgetRes.value.length > 0) {\r\n const budegtval = budgetRes.value[0];\r\n values.UserGroup =\r\n budegtval.UserGroupId && budegtval.UserGroupName\r\n ? {\r\n Id: budegtval.UserGroupId,\r\n Name: budegtval.UserGroupName,\r\n }\r\n : values.UserGroup;\r\n }\r\n if (serviceGroupRes && serviceGroupRes.length === 1) {\r\n values.ServiceGroup = serviceGroupRes[0];\r\n }\r\n setInitialValue(values);\r\n setBusy(false);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })();\r\n return () => {\r\n isMounted = false;\r\n };\r\n }\r\n return;\r\n }\r\n setBusy(true);\r\n let mounted = true;\r\n (async () => {\r\n try {\r\n const res = await httpClient.get(\r\n '/api/odata/v4/InvoiceRows(' + rowId + ')',\r\n {\r\n id: invoiceId ?? 'null',\r\n $select: [\r\n 'InvoiceId',\r\n 'BudgetId',\r\n 'Budget',\r\n 'OnlineService',\r\n 'OnlineServiceId',\r\n 'OfflineServiceType',\r\n 'OfflineServiceTypeId',\r\n 'SampleService',\r\n 'SampleServiceId',\r\n 'CatRateTypeId',\r\n 'CatRateType',\r\n 'Quantity',\r\n 'BaseRate',\r\n 'Amount',\r\n 'SubsProfPercentage',\r\n 'User',\r\n 'UserId',\r\n 'Date',\r\n 'ServiceGroupId',\r\n 'ServiceGroupName',\r\n 'Manual',\r\n 'ActualRate',\r\n 'UserGroupId',\r\n 'UserGroup',\r\n 'InsertedAt',\r\n 'InsertedByDisplay',\r\n 'Remarks',\r\n 'FundingTypeId',\r\n 'PurchaseOrder',\r\n 'PurchaseOrderOptionId',\r\n ].join(','),\r\n },\r\n );\r\n if (mounted) {\r\n setInitialValue({\r\n Id: res.InvoiceId ?? 0,\r\n Budget:\r\n !!res.BudgetId && res.BudgetId !== null\r\n ? ({\r\n Id: res.BudgetId,\r\n Name: res.Budget,\r\n PurchaseOrderOptionId: res.PurchaseOrderOptionId,\r\n } as Entity)\r\n : null,\r\n User: res.UserId ? { Id: res.UserId, Name: res.User } : null,\r\n Resource: res.OnlineServiceId\r\n ? { Id: res.OnlineServiceId, Name: res.OnlineService }\r\n : null,\r\n OtherService: res.OfflineServiceTypeId\r\n ? { Id: res.OfflineServiceTypeId, Name: res.OfflineServiceType }\r\n : null,\r\n FeeType: { Id: res.CatRateTypeId, Name: res.CatRateType },\r\n SampleType: res.SampleServiceId\r\n ? { Id: res.SampleServiceId, Name: res.SampleService }\r\n : null,\r\n Quantity: res.Quantity,\r\n Rate: res.BaseRate,\r\n Amount: res.Amount,\r\n Date: res.Date,\r\n ServiceGroup: res.ServiceGroupId\r\n ? { Id: res.ServiceGroupId, Name: res.ServiceGroupName }\r\n : null,\r\n Manual: res.Manual,\r\n ActualRate: res.ActualRate,\r\n UserGroup: res.UserGroupId\r\n ? {\r\n Id: res.UserGroupId,\r\n Name: res.UserGroup,\r\n }\r\n : null,\r\n Remarks: res.Remarks,\r\n FundingType:\r\n res.FundingTypeId !== null\r\n ? getSingleInvoiceFundingType(res.FundingTypeId)\r\n : null,\r\n PurchaseOrder: res.PurchaseOrder,\r\n });\r\n setinsertedAt(res.InsertedAt);\r\n setinsertedBy(res.InsertedBy);\r\n setBusy(false);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })();\r\n return () => {\r\n mounted = false;\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [rowId]);\r\n const handleCloselClick = React.useCallback(() => {\r\n if (!!onCloseCharge) {\r\n onCloseCharge();\r\n } else {\r\n closePanel({\r\n isCover: isCover || !!cover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n } as SidePanelCloseState);\r\n }\r\n }, [closePanel, cover, hasChanges, isCover, onCloseCharge, useSidePanel]);\r\n const refreshTable = useCallback(() => {\r\n dispatch(actions.setRefreshTable(true));\r\n }, [dispatch, actions]);\r\n const submit = useCallback(\r\n (charge: ICharge) => {\r\n setBusy(true);\r\n if (!isEdit) {\r\n ChargeApi.AddCharge(charge)\r\n .then(() => {\r\n dispatch(\r\n notifyActions.addNotification({\r\n message: t(translations.msg_addedChargeSuccessfully),\r\n variant: 'success',\r\n }),\r\n );\r\n })\r\n .catch(e => console.error(e))\r\n .finally(() => {\r\n handleCloselClick();\r\n refreshTable();\r\n });\r\n } else {\r\n ChargeApi.UpdateCharge(charge, rowId!)\r\n .then(res => {\r\n if (res.ErrorMessages.length > 0) {\r\n dispatch(\r\n notifyActions.addNotification({\r\n message: res.ErrorMessages[0],\r\n variant: 'error',\r\n }),\r\n );\r\n setBusy(false);\r\n return;\r\n }\r\n dispatch(\r\n notifyActions.addNotification({\r\n message: t(translations.success_EditInvoiceLine),\r\n variant: 'success',\r\n }),\r\n );\r\n handleCloselClick();\r\n refreshTable();\r\n })\r\n .catch(e => console.error(e));\r\n }\r\n },\r\n [\r\n handleCloselClick,\r\n dispatch,\r\n isEdit,\r\n notifyActions,\r\n rowId,\r\n refreshTable,\r\n t,\r\n ],\r\n );\r\n const budgetOnly = useMemo(() => {\r\n return (\r\n settings.GetString(AllowedSettings.CreateInovicesBy) ===\r\n AllowCreateInvoicesBy[\r\n AllowCreateInvoicesBy.AlllowCreateInvoicesBy_BudgetsOnly\r\n ]\r\n );\r\n }, [settings]);\r\n const ChargeSchema = GetChargeSchema(t, isEdit, globalSettings);\r\n const ChargeForm = () => {\r\n return (\r\n \r\n {formik => {\r\n submitRef.current = formik.submitForm;\r\n const setAmount = (rate: number, quantity: number) => {\r\n formik\r\n .getFieldHelpers('Amount')\r\n .setValue(+(quantity * rate).toFixed(2), true);\r\n };\r\n const serviceGroupChanged = () => {\r\n formik.getFieldHelpers('Resource').setValue(null, true);\r\n formik.getFieldHelpers('OtherService').setValue(null, true);\r\n formik.getFieldHelpers('SampleType').setValue(null, true);\r\n };\r\n return (\r\n \r\n {/* By using FormListener, the fields become not editable */}\r\n {/* {}} /> */}\r\n \r\n \r\n {/* ServiceGroup */}\r\n \r\n \r\n \r\n {/* FeeType */}\r\n \r\n \r\n \r\n {/* Date */}\r\n \r\n {\r\n formik.setFieldValue('Date', value);\r\n }}\r\n />\r\n \r\n {/* UserGroup */}\r\n \r\n v !== undefined) as Condition[]\r\n }\r\n />\r\n \r\n {/* User */}\r\n \r\n (\r\n 'UserGroups',\r\n ODataOperators.Any,\r\n formik.values.UserGroup.Id,\r\n 'Id',\r\n )\r\n : undefined,\r\n ].filter(v => v !== undefined) as Condition[]\r\n }\r\n name=\"User\"\r\n fullWidth\r\n placeholder={t(translations.User)}\r\n label={t(translations.User)}\r\n disabled={isEdit && !initialValues.Manual}\r\n />\r\n \r\n {/* FundingType */}\r\n {fundingTypeVisible && (\r\n \r\n {\r\n formik.setValues(\r\n produce(values => {\r\n // clear budget selection when funding type is changed to an incompatible value\r\n // for example, if an external budget is selected, and funding type is changed to internal - budget should be reset\r\n if (\r\n (value as Entity).Id !==\r\n (values.Budget as IBudgetFilterDto)\r\n ?.FundingTypeId\r\n ) {\r\n values.Budget = null;\r\n }\r\n values.FundingType = value;\r\n }),\r\n );\r\n }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {/* Budget */}\r\n {IsModuleEnabled(appSettings, KnownModules.Budgets) && (\r\n \r\n {\r\n if (!userGroupByBudeget && val && val.UserGroupId) {\r\n formik.getFieldHelpers('UserGroup').setValue(\r\n {\r\n Id: val.UserGroupId,\r\n Name: val.UserGroup,\r\n },\r\n true,\r\n );\r\n }\r\n }}\r\n name=\"Budget\"\r\n fullWidth\r\n placeholder={t(translations.Budget)}\r\n label={t(translations.Budget)}\r\n predicates={restrictedBudgetFilter({\r\n budgetLimitedByUsers:\r\n globalSettings.budgetLimitedByUsers,\r\n isBudgetsWithoutUserGroup:\r\n globalSettings.isBudgetsWithoutUserGroup,\r\n userGroupId:\r\n globalSettings.reservationUserGroupGroupByBudgetUserGroup\r\n ? undefined\r\n : formik.values.UserGroup?.Id,\r\n serviceGroupId: formik.values.ServiceGroup?.Id,\r\n services: formik.values.Resource\r\n ? [\r\n {\r\n Id: formik.values.Resource.Id,\r\n Name: formik.values.Resource.Name,\r\n ServiceTypeId: 1,\r\n ServiceGroupId:\r\n formik.values.ServiceGroup?.Id ?? null,\r\n } as IServiceTypeFilterDto,\r\n ]\r\n : formik.values.OtherService\r\n ? [\r\n {\r\n Id: formik.values.OtherService.Id,\r\n Name: formik.values.OtherService.Name,\r\n ServiceTypeId: 2,\r\n ServiceGroupId:\r\n formik.values.ServiceGroup?.Id ?? null,\r\n } as IServiceTypeFilterDto,\r\n ]\r\n : formik.values.SampleType\r\n ? [\r\n {\r\n Id: formik.values.SampleType.Id,\r\n Name: formik.values.SampleType.Name,\r\n ServiceTypeId: 3,\r\n ServiceGroupId:\r\n formik.values.ServiceGroup?.Id ?? null,\r\n } as IServiceTypeFilterDto,\r\n ]\r\n : undefined,\r\n startTime: !!formik.values.Date\r\n ? dateUtils.dateOrStringToDate(formik.values.Date)\r\n : undefined,\r\n endTime: !!formik.values.Date\r\n ? dateUtils.dateOrStringToDate(formik.values.Date)\r\n : undefined,\r\n user: formik.values.User?.Id ?? authenticatedUser?.Id,\r\n defaultBudgetEnabled:\r\n globalSettings.defaultBudgetEnabled,\r\n userDefaultBudgetEnabled:\r\n globalSettings.userDefaultBudgetEnabled,\r\n hideNonDefaultBudgets:\r\n globalSettings.hideNonDefaultBudgets,\r\n // funding type is set to Internal by default even if it's not in use\r\n fundingType: fundingTypeVisible\r\n ? formik.values.FundingType\r\n : null,\r\n })}\r\n disabled={\r\n (initialValues.Budget !== null && budgetOnly) ||\r\n (isEdit && !initialValues.Manual)\r\n }\r\n />\r\n \r\n )}\r\n {/* PurchaseOrder */}\r\n {fundingTypeVisible &&\r\n ((formik.values.Budget as IBudgetFilterDto)\r\n ?.PurchaseOrderOptionId ??\r\n PurchaseOrderOptions.Hidden) !==\r\n PurchaseOrderOptions.Hidden && (\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Quantity */}\r\n {onlyManual && (\r\n <>\r\n \r\n \r\n setAmount(\r\n +formik\r\n .getFieldMeta('Rate')\r\n .value.toFixed(2),\r\n +v.target.value,\r\n )\r\n }\r\n />\r\n \r\n {/* Rate */}\r\n \r\n \r\n setAmount(\r\n +v.target.value,\r\n +formik\r\n .getFieldMeta('Quantity')\r\n .value.toFixed(2),\r\n )\r\n }\r\n />\r\n \r\n \r\n )}\r\n {/* Amount */}\r\n \r\n {\r\n formik.getFieldHelpers('Quantity').setValue(1, false);\r\n formik\r\n .getFieldHelpers('Rate')\r\n .setValue(+v.target.value, true);\r\n }}\r\n disabled={isEdit && !initialValues.Manual}\r\n />\r\n \r\n\r\n {/* Resource */}\r\n \r\n \r\n \r\n {/* OtherService */}\r\n \r\n \r\n \r\n {/* SampleType */}\r\n \r\n \r\n \r\n\r\n {/* Remarks */}\r\n \r\n \r\n \r\n \r\n {insertedAt && (\r\n \r\n \r\n {t(translations.InsertedAt)}\r\n \r\n {dateUtils.shortDateTimeFormat(insertedAt)}\r\n \r\n )}\r\n {insertedBy && (\r\n \r\n \r\n {t(translations.InsertedBy)}\r\n \r\n {insertedBy}\r\n \r\n )}\r\n \r\n \r\n );\r\n }}\r\n \r\n );\r\n };\r\n const leftActions = [\r\n () => (\r\n <>\r\n submitRef.current?.()}\r\n size=\"small\"\r\n disabled={busy}\r\n >\r\n {t(translations.Submit)}\r\n \r\n \r\n ),\r\n ];\r\n const rightActions = [\r\n () => (\r\n <>\r\n }\r\n onClick={handleCloselClick}\r\n size=\"small\"\r\n disabled={busy}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n \r\n ),\r\n ];\r\n return (\r\n }\r\n leftActions={leftActions}\r\n rightActions={rightActions}\r\n disableExpandToggle={true}\r\n closeSidePanel={handleCloselClick}\r\n isCover={isCover}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n coverClosed={coverClosed}\r\n />\r\n );\r\n};\r\n","import { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { PurchaseOrderOptions } from 'api/odata/generated/enums/PurchaseOrderOptions';\r\nimport {\r\n FeeTypeEntitySchema,\r\n OfflineServiceTypeEntitySchema,\r\n OnlineServiceEntitySchema,\r\n UserEntitySchema,\r\n UserGroupEntitySchema,\r\n} from 'app/components/Forms/Schemas';\r\nimport { InvoiceChildRowBaseSchema } from 'app/components/Forms/Schemas/InvoiceChildRowBaseSchema';\r\nimport { CatRateTypes } from 'enums/CatRateTypes';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Entity } from 'types/common';\r\nimport * as Yup from 'yup';\r\nimport { ICharge } from '../AddChargePage/ICharge';\r\nimport { GlobalSettingsType } from '../ReservationDetails/Details/components/useGlobalSettingsHook';\r\n\r\nexport function GetChargeSchema(\r\n t: TFunction,\r\n isEdit: boolean,\r\n globalSettings: GlobalSettingsType,\r\n): Yup.SchemaOf {\r\n const result = InvoiceChildRowBaseSchema(t).concat(\r\n Yup.object({\r\n User: UserEntitySchema.nullable().notRequired(),\r\n Resource: OnlineServiceEntitySchema.notRequired().nullable(),\r\n OtherService: OfflineServiceTypeEntitySchema.notRequired().nullable(),\r\n UserGroup: UserGroupEntitySchema.nullable().when(\r\n 'User',\r\n (_, schema: Yup.SchemaOf>) =>\r\n isEdit ? schema.notRequired() : schema.required(),\r\n ),\r\n SampleType: OfflineServiceTypeEntitySchema.notRequired().nullable(),\r\n FeeType: FeeTypeEntitySchema.required().nullable(),\r\n Quantity: Yup.number().defined(),\r\n Rate: Yup.number()\r\n .defined()\r\n .when('FeeType', (catRateType, schema: Yup.NumberSchema) => {\r\n return (catRateType as Entity)?.Id === CatRateTypes.Refund ||\r\n (catRateType as Entity)?.Id === CatRateTypes.Discount\r\n ? schema.negative().max(0)\r\n : schema.positive().min(0);\r\n }),\r\n Amount: Yup.number()\r\n .defined()\r\n .when('FeeType', (catRateType, schema: Yup.NumberSchema) => {\r\n return (catRateType as Entity)?.Id === CatRateTypes.Refund ||\r\n (catRateType as Entity)?.Id === CatRateTypes.Discount\r\n ? schema.negative().max(0)\r\n : schema.positive().min(0);\r\n }),\r\n Manual: Yup.bool().notRequired(),\r\n ActualRate: Yup.number().notRequired(),\r\n Remarks: Yup.string().nullable().default('').notRequired(),\r\n FundingType: Yup.mixed().label(t(translations.FundingType) as string),\r\n PurchaseOrder: Yup.string()\r\n .label(t(translations.PurchaseOrder) as string)\r\n .nullable(true)\r\n .min(globalSettings.purchaseOrderLengthSetting ?? 0)\r\n .when('Budget', {\r\n is: budget => {\r\n const result =\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n (budget as IBudgetFilterDto)?.PurchaseOrderOptionId ===\r\n PurchaseOrderOptions.Mandatory;\r\n return result;\r\n },\r\n then: schema => schema.required(),\r\n }),\r\n }),\r\n );\r\n return result;\r\n}\r\n","/**\r\n *\r\n * Asynchronously loads the component for LabelTypePage\r\n *\r\n */\r\n\r\nimport { lazyLoad } from 'utils/loadable';\r\n\r\nexport const LabelTypePage = lazyLoad(\r\n () => import('./index'),\r\n module => module.LabelTypeEdit,\r\n);\r\n","import { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { ArticleStatus } from 'enums/Article';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectArticleDetailsForm } from '../slice/selectors';\r\n\r\nexport type AllowedToChangeStatusFunc = (asset: IAssetDto) => boolean;\r\nexport const useAllowedToChangeStatus = (): AllowedToChangeStatusFunc => {\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const admin = authenticatedUser?.Roles.includes(Roles.GroupAdministrators);\r\n const readOnlyUser =\r\n authenticatedUser?.Roles.includes(Roles.Readonly) ||\r\n authenticatedUser?.Roles.includes(Roles.CalendarOnly);\r\n const allowedToChangeStatus = React.useCallback(\r\n asset => {\r\n if (admin && asset !== undefined && asset !== null && !readOnlyUser) {\r\n return asset.ServiceGroupId !== null &&\r\n asset.ServiceGroupId !== undefined &&\r\n (authenticatedUser?.HasAdminGroupOnlyPermissions(\r\n asset.ServiceGroupId,\r\n ) ||\r\n authenticatedUser?.HasLabTechGroupPermissions(asset.ServiceGroupId))\r\n ? true\r\n : false;\r\n } else {\r\n return false;\r\n }\r\n },\r\n [admin, authenticatedUser, readOnlyUser],\r\n );\r\n return allowedToChangeStatus;\r\n};\r\n\r\nexport const useCanEdit = (): [boolean, string] => {\r\n const { t } = useTranslation();\r\n const articleDetailsForm = useSelector(selectArticleDetailsForm);\r\n const allowedToChangeStatus = useAllowedToChangeStatus();\r\n if (allowedToChangeStatus(articleDetailsForm?.ServiceGroupAssets[0])) {\r\n return [true, ''];\r\n } else {\r\n // simple user rights\r\n if (articleDetailsForm?.CreatedByMe) {\r\n if (articleDetailsForm?.Status === ArticleStatus.Approved) {\r\n return [false, t(translations.PublicationRecordApproved_info)];\r\n } else {\r\n return [true, ''];\r\n }\r\n } else {\r\n return [false, ''];\r\n }\r\n }\r\n};\r\n\r\nexport const useCanAdd = (): boolean => {\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const readOnlyUser =\r\n authenticatedUser?.Roles.includes(Roles.Readonly) ||\r\n authenticatedUser?.Roles.includes(Roles.CalendarOnly);\r\n return !readOnlyUser;\r\n};\r\n","/**\r\n *\r\n * ArticleDetails\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useArticlesSlice } from 'app/pages/ArticlesPage/slice';\r\nimport { InputLabel } from 'app/components/Typography';\r\nimport {\r\n selectArticleDetails,\r\n selectArticleDetailsBusy,\r\n selectArticleDetailsForm,\r\n selectRefreshEditArticleAssociation,\r\n} from 'app/pages/ArticlesPage/slice/selectors';\r\nimport { AssetLink } from 'app/pages/AssetPopUp/OpenAssetDetails';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport {\r\n RenderPageType,\r\n SidePanelContentProps,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { ArticleStatus } from 'enums/Article';\r\nimport { useCanAdd, useCanEdit } from '../Hooks/useAllowedToChangeStatus';\r\nimport { WorkOrderLink } from 'app/pages/Actions/GlobalSelectedActions/OpenWorkOrder';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { selectDoRefreshTable } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRightSection,\r\n FormRow,\r\n StyledFormFieldsContainer,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { GhostInput } from 'app/components/BasicInputs/GhostInput';\r\nimport { DateTimeLabel } from 'app/components/DateTimeLabel';\r\nimport { ArticleDoiLink } from '../ArticleDoiLink';\r\n\r\nexport interface ArticleDetailsProps extends SidePanelContentProps, CoverProps {\r\n value?: IArticleDto;\r\n Id?: number;\r\n externalId?: string;\r\n externalIdSource?: string;\r\n onClose?: () => void;\r\n}\r\n\r\nexport function ArticleDetails({\r\n useSidePanel = true,\r\n closeCover,\r\n isCover,\r\n ...props\r\n}: ArticleDetailsProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useArticlesSlice();\r\n const selectedArticle = useSelector(selectArticleDetails);\r\n const articleDetails = useSelector(selectArticleDetailsForm);\r\n const refreshDetails = useSelector(selectRefreshEditArticleAssociation);\r\n const busy = useSelector(selectArticleDetailsBusy);\r\n const refresh = useSelector(selectDoRefreshTable);\r\n\r\n const isSaved = React.useMemo(() => {\r\n return articleDetails?.Id !== undefined && articleDetails?.Id > 0;\r\n }, [articleDetails?.Id]);\r\n const [canEdit, msg] = useCanEdit();\r\n const canAdd = useCanAdd();\r\n\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n\r\n React.useEffect(() => {\r\n let active = firstLoad;\r\n\r\n if (active && !busy) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.showDetails({\r\n Id: props.Id,\r\n externalId: props.externalId,\r\n externalIdSource: props.externalIdSource,\r\n article: props.value,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n busy,\r\n dispatch,\r\n firstLoad,\r\n props.Id,\r\n props.externalId,\r\n props.externalIdSource,\r\n props.value,\r\n refresh,\r\n ]);\r\n React.useEffect(() => {\r\n let active = refreshDetails === true;\r\n\r\n if (active && !busy) {\r\n dispatch(\r\n actions.showDetails({\r\n Id: selectedArticle?.Id,\r\n externalId: selectedArticle?.ExternalId ?? undefined,\r\n externalIdSource: selectedArticle?.ExternalIdSource ?? undefined,\r\n article: selectedArticle,\r\n }),\r\n );\r\n dispatch(actions.refreshEditArticleAssociation(undefined));\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [actions, busy, dispatch, refreshDetails, selectedArticle]);\r\n\r\n const { cover, openPanel, closePanel, coverClosed, onCloseCover } =\r\n useSidePanelState(() => false, undefined, isCover, useSidePanel);\r\n const openExternalEntry = React.useCallback(\r\n (article: IArticleDto | undefined) => {\r\n openPanel({\r\n renderPageType: RenderPageType.ArticleEdit,\r\n renderPageProps: {\r\n useSidePanel: true,\r\n value: article,\r\n },\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [openPanel, useSidePanel],\r\n );\r\n const editArticle = React.useCallback(() => {\r\n openPanel({\r\n renderPageType: RenderPageType.ArticleForm,\r\n renderPageProps: {\r\n useSidePanel: true,\r\n },\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n }, [openPanel, useSidePanel]);\r\n\r\n const handleCancelClick = React.useCallback(() => {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: false,\r\n onClose: () => {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n },\r\n } as SidePanelCloseState);\r\n }, [closePanel, dispatch, isCover, useSidePanel]);\r\n const isEmpty = React.useCallback(value => {\r\n if (value === undefined || value === null) {\r\n return true;\r\n } else {\r\n if (typeof value === 'string') {\r\n const res = value.trim();\r\n return res !== '' ? false : true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }, []);\r\n const getValue = React.useCallback(\r\n value => {\r\n if (value === undefined || value === null) {\r\n return t(translations.NA);\r\n } else {\r\n if (typeof value === 'string') {\r\n const res = value.trim();\r\n return res !== '' ? res : t(translations.NA);\r\n } else {\r\n return value;\r\n }\r\n }\r\n },\r\n [t],\r\n );\r\n return (\r\n 0 && canEdit) ||\r\n (selectedArticle !== undefined &&\r\n selectedArticle.Id === 0 &&\r\n !busy &&\r\n canAdd)\r\n ? [\r\n () => (\r\n <>\r\n \r\n selectedArticle !== undefined &&\r\n selectedArticle.ExternalIdSource === 'Manual Entry'\r\n ? openExternalEntry(selectedArticle)\r\n : editArticle()\r\n }\r\n disabled={!canEdit}\r\n />\r\n \r\n ),\r\n ]\r\n : undefined\r\n }\r\n cover={cover}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n isCover={isCover}\r\n coverClosed={coverClosed}\r\n useSwitchActions={true}\r\n >\r\n \r\n \r\n \r\n {msg !== '' && (\r\n \r\n {msg}\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n {!isNullOrUndefined(articleDetails.ExternalIdSource) && (\r\n <>\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n t(translations.NA)\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n ) : (\r\n t(translations.NA)\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {articleDetails.CalibrationRecord}\r\n \r\n ) : (\r\n t(translations.NA)\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isSaved && (\r\n <>\r\n \r\n \r\n {articleDetails.ServiceGroupAssets.map(asset => (\r\n

  • \r\n \r\n {asset.Name}\r\n \r\n
  • \r\n ))}\r\n \r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n {articleDetails.InstrumentAssets.map(asset => (\r\n
  • \r\n \r\n {asset.Name}\r\n \r\n
  • \r\n ))}\r\n \r\n )\r\n }\r\n />\r\n
    \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nfunction EditAssociationButton({\r\n item,\r\n onClick,\r\n disabled,\r\n}: {\r\n item?: IArticleDto;\r\n onClick: () => void;\r\n disabled: boolean;\r\n}) {\r\n const { t } = useTranslation();\r\n //const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n if (item === undefined) {\r\n return <>;\r\n }\r\n /*const show =\r\n authenticatedUser?.Roles?.includes(Roles.GroupAdministrators) === true;\r\n if (!show) {\r\n return <>;\r\n }*/\r\n if (item.Id > 0) {\r\n if (item.ExternalIdSource === 'Manual Entry') {\r\n return (\r\n }\r\n onClick={onClick}\r\n disabled={disabled}\r\n >\r\n {t(translations.EditArticle)}\r\n \r\n );\r\n } else {\r\n return (\r\n }\r\n onClick={onClick}\r\n disabled={disabled}\r\n >\r\n {t(translations.EditAssociation)}\r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n }\r\n onClick={onClick}\r\n >\r\n {t(translations.AssociateThisPublication)}\r\n \r\n );\r\n }\r\n}\r\n","import { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { Entity } from 'types/common';\r\nimport * as Yup from 'yup';\r\n\r\nexport interface IArticleNewEditForm {\r\n Title: string;\r\n Authors: string;\r\n Abstract: string;\r\n Doi?: string | null;\r\n Dataset?: string | null;\r\n ISSN?: string | null;\r\n ORCIDs?: string | null;\r\n Year: number;\r\n RelatedUser: Entity | null;\r\n ServiceGroupAsset: IAssetDto | null;\r\n Journal?: string | null;\r\n PageNumber?: number | null;\r\n //ServiceGroupAssets: Array;\r\n InstrumentAssets: Array;\r\n Status: Entity;\r\n CalibrationRecord: Entity | null;\r\n}\r\n\r\nexport const assetSchema = Yup.mixed();\r\nexport const assetsSchema = Yup.array().of(\r\n Yup.mixed() as Yup.SchemaOf,\r\n);\r\n\r\nexport const GetInstrumentFilter = (serviceGroups: IAssetDto[]) => {\r\n const sv = serviceGroups.filter(f => f !== null && f !== undefined);\r\n if (sv.length > 0) {\r\n const f = [\r\n `(ServiceGroupId in (${sv.map(f => f.ServiceGroupId).join(',')}))`,\r\n ];\r\n return f;\r\n } else {\r\n return [];\r\n }\r\n};\r\nexport const GetCalibrationRecordFilter = (assets: IAssetDto[]) => {\r\n const services = assets.filter(f => f !== null && f !== undefined);\r\n if (services.length > 0) {\r\n const test = services.map(f => f.Id);\r\n const test_s = test.join(',');\r\n const f = [`(AssetId in (${test_s}))`];\r\n return f;\r\n } else {\r\n return [];\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { FormControl } from '@material-ui/core';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { Entity } from 'types/common';\r\nimport CustomPickerFilter from '../BasicTable/Filters/CustomPickerFilter';\r\n\r\nexport interface FormCustomPickerProps extends IFieldProps {\r\n data: Entity[];\r\n}\r\nexport const FormCustomPicker = ({\r\n label,\r\n disableFuture,\r\n disablePast,\r\n data,\r\n ...props\r\n}: FieldHookConfig | null> & FormCustomPickerProps) => {\r\n const [field, , helpers] = useField | null>(props);\r\n return (\r\n \r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n value={field.value}\r\n customData={data}\r\n fullWidth={true}\r\n open={false}\r\n placeholder={props.placeholder}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n};\r\n","import {\r\n BaseURLPicker,\r\n BaseURLPickerProps,\r\n} from 'app/components/BasicPickers/BaseURLPicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface ArticleWorkOrdersPickerProps\r\n extends Omit>, 'url'> {}\r\n\r\nexport function ArticleWorkOrdersPicker(props: ArticleWorkOrdersPickerProps) {\r\n return ;\r\n}\r\n","import { IFieldProps } from 'app/components/Forms/FormRender/IFormFieldSetting';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { Entity } from 'types/common';\r\nimport { ArticleWorkOrdersPicker } from '../ArticlePickers';\r\n\r\nexport const ArticleFormPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & IFieldProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n variant=\"filled\"\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * NewArticleDetailsForm\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport * as Yup from 'yup';\r\nimport { selectEditArticleAssociationBusy } from '../slice/selectors';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { Formik } from 'formik';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormAssetsPicker } from 'app/components/Forms/FormAssetsPicker';\r\nimport { useArticlesSlice } from '../slice';\r\nimport { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { InputLabel } from 'app/components/Typography';\r\nimport { ValueLabel } from 'app/components/ValueLabel';\r\nimport {\r\n EntityNumberSchema,\r\n UserEntitySchema,\r\n} from 'app/components/Forms/Schemas';\r\nimport { FormUserPicker } from 'app/components/Forms/FormUserPicker';\r\nimport { FormAssetPicker } from 'app/components/Forms/FormAssetPicker';\r\nimport { FormListener } from 'app/components/Forms/FormRender/FormRenderer';\r\nimport {\r\n assetSchema,\r\n assetsSchema,\r\n GetCalibrationRecordFilter,\r\n GetInstrumentFilter,\r\n IArticleNewEditForm,\r\n} from '../utils';\r\nimport { ArticleStatus } from 'enums/Article';\r\nimport { FormCustomPicker } from 'app/components/Forms/FormCustomPicker';\r\nimport { Entity } from 'types/common';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { useAllowedToChangeStatus } from '../Hooks/useAllowedToChangeStatus';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { ArticleFormPicker } from '../ArticleFormPickers';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\n\r\nexport interface NewArticleDetailsFormProps\r\n extends SidePanelContentProps,\r\n CoverProps {\r\n Journal?: string | null;\r\n PageNumber?: number | null;\r\n}\r\n\r\nexport function NewArticleDetailsForm(props: NewArticleDetailsFormProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const [oldServiceGroups, setOldServiceGroups] = React.useState(\r\n [],\r\n );\r\n const [serviceGroups, setServiceGroups] = React.useState([]);\r\n const [instruments, setInstruments] = React.useState([]);\r\n\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const processing = useSelector(selectEditArticleAssociationBusy);\r\n const admin = authenticatedUser?.Roles.includes(Roles.GroupAdministrators);\r\n const dispatch = useDispatch();\r\n const { actions } = useArticlesSlice();\r\n const [canEditStatus, setCanEditStatus] = React.useState(false);\r\n const allowedToChangeStatus = useAllowedToChangeStatus();\r\n const schema: Yup.SchemaOf = Yup.object().shape(\r\n {\r\n Title: Yup.string().required().label(t(translations.Title)).trim(),\r\n Authors: Yup.string().required().label(t(translations.Authors)).trim(),\r\n Abstract: Yup.string().required().label(t(translations.Abstract)).trim(),\r\n Doi: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.Doi))\r\n .trim(),\r\n Dataset: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.ArticleDataset))\r\n .trim(),\r\n ISSN: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.ISSN))\r\n .trim(),\r\n ORCIDs: Yup.string()\r\n //.required()\r\n .nullable()\r\n .label(t(translations.ORCID))\r\n .trim(),\r\n Year: Yup.number().required().label(t(translations.Year)).min(1),\r\n RelatedUser: UserEntitySchema.nullable().notRequired(),\r\n CalibrationRecord: Yup.mixed().nullable().notRequired(),\r\n /*ServiceGroupAssets: assetsSchema.when(['InstrumentAssets'], {\r\n is: v => (v === undefined ? true : v.length === 0),\r\n then: assetsSchema\r\n .required()\r\n .label(t(translations.ServiceGroup))\r\n .min(1)\r\n otherwise: assetsSchema.notRequired(),\r\n }),*/\r\n ServiceGroupAsset: assetSchema.when(['InstrumentAssets'], {\r\n is: v => (v === undefined ? true : v.length === 0),\r\n then: assetSchema\r\n .required()\r\n .label(t(translations.ServiceGroup))\r\n .nullable(),\r\n otherwise: assetSchema.nullable().notRequired(),\r\n }),\r\n /*InstrumentAssets: assetsSchema.when(['ServiceGroupAssets'], {\r\n is: v => (v === undefined ? true : v.length === 0),\r\n then: assetsSchema.required().label(t(translations.Instruments)).min(1),\r\n otherwise: assetsSchema.notRequired(),\r\n }),*/\r\n InstrumentAssets: assetsSchema.when(['ServiceGroupAsset'], {\r\n is: v => v === null,\r\n then: assetsSchema.required().label(t(translations.Instruments)).min(1),\r\n otherwise: assetsSchema.notRequired(),\r\n }),\r\n Status: EntityNumberSchema.required().label(\r\n t(translations.ArticleStatus),\r\n ),\r\n Journal: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.Journal))\r\n .trim(),\r\n PageNumber: Yup.number(),\r\n },\r\n [['ServiceGroupAsset', 'InstrumentAssets']],\r\n );\r\n const initialValues: IArticleNewEditForm = React.useMemo(\r\n () => ({\r\n Title: '',\r\n Authors: '',\r\n Abstract: '',\r\n Doi: null,\r\n Dataset: null,\r\n ISSN: null,\r\n ORCIDs: null,\r\n Year: 0,\r\n RelatedUser: null,\r\n CalibrationRecord: null,\r\n InstrumentAssets: [],\r\n //ServiceGroupAssets: [],\r\n ServiceGroupAsset: null,\r\n Status: admin\r\n ? { Id: 1, Name: t('Article' + ArticleStatus[1]) }\r\n : { Id: 0, Name: t('Article' + ArticleStatus[0]) },\r\n }),\r\n [admin, t],\r\n );\r\n\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState();\r\n\r\n const handleCloseClick = React.useCallback(() => {\r\n closePanel({\r\n isCover: props.isCover,\r\n useSidePanel: props.useSidePanel,\r\n showConfirm: undefined,\r\n onClose: () => {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n dispatch(actions.resetArticleAssociationState());\r\n },\r\n } as SidePanelCloseState);\r\n }, [\r\n actions,\r\n closePanel,\r\n dispatch,\r\n layoutActions,\r\n props.isCover,\r\n props.useSidePanel,\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (processing === false) {\r\n handleCloseClick();\r\n }\r\n return () => undefined;\r\n }, [processing, handleCloseClick]);\r\n\r\n const instrumentFilter = React.useCallback(() => {\r\n return GetInstrumentFilter(serviceGroups);\r\n }, [serviceGroups]);\r\n const CalibrationRecordFilter = React.useCallback(() => {\r\n return GetCalibrationRecordFilter(instruments);\r\n }, [instruments]);\r\n\r\n const handleFormChange = React.useCallback(\r\n (\r\n values: IArticleNewEditForm,\r\n isValid,\r\n dirty,\r\n setValue,\r\n setTouched,\r\n validateField,\r\n setError,\r\n validate,\r\n ) => {\r\n if (\r\n serviceGroups.length !== oldServiceGroups.length ||\r\n serviceGroups[0] !== oldServiceGroups[0]\r\n ) {\r\n setOldServiceGroups(serviceGroups);\r\n setValue('InstrumentAssets', []);\r\n return;\r\n }\r\n if (\r\n values.ServiceGroupAsset === null &&\r\n values.InstrumentAssets.length > 0\r\n ) {\r\n setOldServiceGroups(serviceGroups);\r\n setValue('ServiceGroupAsset', {\r\n Id: values.InstrumentAssets[0].ServiceGroupAssetId,\r\n Name: values.InstrumentAssets[0].ServiceGroupName,\r\n ServiceGroupId: values.InstrumentAssets[0].ServiceGroupId,\r\n ServiceGroupName: values.InstrumentAssets[0].ServiceGroupName,\r\n });\r\n }\r\n setCanEditStatus(allowedToChangeStatus(serviceGroups[0]));\r\n },\r\n [allowedToChangeStatus, oldServiceGroups, serviceGroups],\r\n );\r\n const handleSubmit = React.useCallback(\r\n (values: IArticleNewEditForm) => {\r\n if (\r\n //values.ServiceGroupAssets.length === 0 &&\r\n (values.ServiceGroupAsset === null &&\r\n values.InstrumentAssets.length === 0) ||\r\n values.Status === null\r\n ) {\r\n return;\r\n }\r\n const payload: IArticleDto = {\r\n Id: 0,\r\n Title: values.Title.trim(),\r\n Authors: values.Authors.trim().split(','),\r\n Abstract: values.Abstract.trim(),\r\n Year: values.Year,\r\n ExternalId: null,\r\n ExternalIdSource: 'Manual Entry',\r\n Doi:\r\n values.Doi !== undefined && values.Doi !== null\r\n ? values.Doi.trim()\r\n : null,\r\n Dataset:\r\n values.Dataset !== undefined && values.Dataset !== null\r\n ? values.Dataset.trim()\r\n : null,\r\n ISSN:\r\n values.ISSN !== undefined && values.ISSN !== null\r\n ? values.ISSN.trim()\r\n : null,\r\n Journal: values.Journal !== undefined ? values.Journal : null,\r\n PageNumber: values.PageNumber !== undefined ? values.PageNumber : null,\r\n ORCIDs:\r\n values.ORCIDs !== undefined &&\r\n values.ORCIDs !== null &&\r\n values.ORCIDs.trim() !== ''\r\n ? values.ORCIDs.trim().split(',')\r\n : [],\r\n ArticleContributionLevelId: null,\r\n FirstInstrumentAssetName: null,\r\n FirstServiceGroupAssetName: null,\r\n ...{\r\n //Assets: values.ServiceGroupAssets.concat(values.InstrumentAssets),\r\n Assets:\r\n values.ServiceGroupAsset !== null\r\n ? values.InstrumentAssets.concat([values.ServiceGroupAsset])\r\n : values.InstrumentAssets,\r\n },\r\n Status: values.Status.Id,\r\n EnteredBy: null,\r\n UserDisplayName: null,\r\n EnteredAt: null,\r\n RelatedUser:\r\n values.RelatedUser !== null ? values.RelatedUser?.Id : null,\r\n RelatedUserDisplayName: null,\r\n CalibrationRecord:\r\n values.CalibrationRecord !== null\r\n ? values.CalibrationRecord?.Id\r\n : null,\r\n CalibrationRecordName: null,\r\n UserGroupId: null,\r\n UserGroupName: null,\r\n DepartmentId: null,\r\n DepartmentName: null,\r\n InstituteId: null,\r\n InstituteName: null,\r\n InstituteTypeId: null,\r\n InstituteTypeName: null,\r\n CreatedByMe: false,\r\n };\r\n dispatch(actions.saveArticleAssociation(payload));\r\n },\r\n [actions, dispatch],\r\n );\r\n\r\n const statusPickerData: Entity[] = React.useMemo(() => {\r\n const data = [\r\n {\r\n Id: ArticleStatus.AwaitingApproval,\r\n Name: t('Article' + ArticleStatus[ArticleStatus.AwaitingApproval]),\r\n },\r\n {\r\n Id: ArticleStatus.Approved,\r\n Name: t('Article' + ArticleStatus[ArticleStatus.Approved]),\r\n },\r\n ] as Entity[];\r\n return data;\r\n }, [t]);\r\n\r\n return (\r\n \r\n
    \r\n \r\n {formik => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(translations.Source)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n ? t(translations.CalibrationRecord)\r\n : t(translations.ArticlePleaseSelectEquipmentFirst)\r\n }\r\n placeholder={\r\n instruments.length > 0\r\n ? t(translations.PleaseSelectWorkOrder)\r\n : t(translations.ArticlePleaseSelectEquipmentFirst)\r\n }\r\n disabled={\r\n formik.isSubmitting ||\r\n !canEditStatus ||\r\n instruments.length === 0\r\n }\r\n filter={CalibrationRecordFilter()}\r\n info={t(translations.CalibrationRecord_info)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {\r\n setOldServiceGroups(serviceGroups);\r\n setServiceGroups([value]);\r\n }}\r\n />\r\n \r\n \r\n {\r\n setInstruments(value);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n \r\n );\r\n}\r\n","import { Entity } from 'types/common';\r\n\r\nexport interface IComment {\r\n Id: number;\r\n Text: string;\r\n CreatedAt: Date | string;\r\n CreatedBy: Entity;\r\n Files: CommentFile[];\r\n IsInternal?: boolean | null;\r\n ReferenceId?: number;\r\n ServiceGroupName?: string;\r\n FileTypeId?: number;\r\n}\r\n\r\nexport interface NewComment {\r\n Text?: string;\r\n Files?: FileList;\r\n Users: Entity[];\r\n IsInternal?: boolean | null;\r\n}\r\n\r\nexport interface CommentFile {\r\n Id: string;\r\n Name: string;\r\n Size?: number;\r\n}\r\nexport const ConvertNewToComment = (\r\n newcomment: NewComment,\r\n Id: number,\r\n CreatedAt: Date | string,\r\n CreatedBy: Entity,\r\n) => {\r\n let newFiles: CommentFile[] = [];\r\n if (!!newcomment.Files && newcomment.Files.length > 0) {\r\n for (\r\n let i: number = 0;\r\n !!newcomment.Files && i < newcomment.Files.length;\r\n i++\r\n ) {\r\n let item = newcomment.Files.item(i);\r\n if (!!item) {\r\n newFiles.push({\r\n Id: i.toString(),\r\n Name: item.name,\r\n Size: item.size,\r\n } as CommentFile);\r\n }\r\n }\r\n }\r\n return {\r\n Id: Id,\r\n Text: newcomment.Text || '',\r\n CreatedAt: CreatedAt,\r\n CreatedBy: CreatedBy,\r\n Files: newFiles,\r\n IsInternal: newcomment.IsInternal,\r\n } as IComment;\r\n};\r\n","import { CommentsApi } from 'api/CommentsApi';\r\nimport {\r\n ConvertNewToComment,\r\n IComment,\r\n NewComment,\r\n} from 'app/components/CommentsContainer/IComment';\r\nimport { CommentReferenceTypes } from 'enums/commentReferenceTypes';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { useAsyncGetWithEffect } from 'app/hooks/useAsyncGetOnMount';\r\nimport { CommentsContainer } from 'app/components/CommentsContainer';\r\nimport { translations } from 'locales/translations';\r\nimport { Portal } from '@material-ui/core';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport { useUploadToNewComment } from 'app/components/LargeFilesUpload/Components/useUploadToNewComment';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useLargeFilesUploadSlice } from 'app/components/LargeFilesUpload/slice';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\nimport { FileTypes } from 'api/odata/generated/enums/FileTypes';\r\n\r\nexport interface ArticleCommentsProps {\r\n isAdmin?: boolean;\r\n article: IArticleDto;\r\n disabled?: boolean;\r\n commentsFormRef: React.MutableRefObject;\r\n isEdit?: boolean;\r\n user?: AuthenticatedUser;\r\n sectionTitle?: React.ReactNode;\r\n}\r\n\r\nexport const ArticleComments = (props: ArticleCommentsProps) => {\r\n const {\r\n article,\r\n isAdmin,\r\n disabled,\r\n commentsFormRef,\r\n isEdit,\r\n user,\r\n sectionTitle,\r\n } = props;\r\n const { t } = useTranslation();\r\n const { newDate } = useSystemDate();\r\n const [changed, setchanged] = React.useState(false);\r\n const dispatch = useDispatch();\r\n const { actions: largeFileActions } = useLargeFilesUploadSlice();\r\n const [newSavedComments, setNewSavedComments] = React.useState(\r\n [],\r\n );\r\n const [newComments, setNewComments] = React.useState([]);\r\n const comments = useAsyncGetWithEffect(\r\n () =>\r\n CommentsApi.GetComments(\r\n CommentReferenceTypes.Article,\r\n article.Id > 0 ? article.Id : -1,\r\n ),\r\n [],\r\n [changed],\r\n );\r\n const bindSubmitComment = React.useCallback(\r\n submitForm => {\r\n commentsFormRef.current = submitForm;\r\n },\r\n [commentsFormRef],\r\n );\r\n const { onCommentAdded } = useUploadToNewComment();\r\n\r\n React.useEffect(() => {\r\n dispatch(\r\n largeFileActions.setCommentProperties({\r\n commentType: CommentReferenceTypes.Article,\r\n referenceId: article.Id,\r\n }),\r\n );\r\n }, [article.Id, dispatch, largeFileActions]);\r\n\r\n const portalRef = React.useRef(null);\r\n return (\r\n \r\n \r\n \r\n {\r\n if (!disabled) {\r\n if (isEdit) {\r\n CommentsApi.SendComment(\r\n CommentReferenceTypes.Article,\r\n article.Id,\r\n c,\r\n undefined,\r\n FileTypes.ArticleComment,\r\n )\r\n .then(res => onCommentAdded?.(res))\r\n .finally(() => setchanged(prev => !prev));\r\n } else {\r\n setNewSavedComments(() => [...newSavedComments, c]);\r\n setNewComments(() => [\r\n ...newComments,\r\n ConvertNewToComment(c, newComments.length + 1, newDate(), {\r\n Id: user?.Id || '',\r\n Name: user?.Name || '',\r\n }),\r\n ]);\r\n }\r\n }\r\n }}\r\n isAdmin={isAdmin}\r\n withMentions\r\n pageName={t(translations.Publications)}\r\n referenceName={article?.Id?.toString()}\r\n />\r\n \r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * EditArticleDetailsForm\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport * as Yup from 'yup';\r\nimport {\r\n selectArticleDetails,\r\n selectArticleDetailsBusy,\r\n selectArticleDetailsForm,\r\n selectEditArticleAssociationBusy,\r\n} from '../slice/selectors';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { Formik } from 'formik';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormAssetsPicker } from 'app/components/Forms/FormAssetsPicker';\r\nimport { useArticlesSlice } from '../slice';\r\nimport { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { InputLabel } from 'app/components/Typography';\r\nimport { ValueLabel } from 'app/components/ValueLabel';\r\nimport { Entity } from 'types/common';\r\nimport { FormUserPicker } from 'app/components/Forms/FormUserPicker';\r\nimport { FormAssetPicker } from 'app/components/Forms/FormAssetPicker';\r\nimport { FormListener } from 'app/components/Forms/FormRender/FormRenderer';\r\nimport {\r\n assetSchema,\r\n assetsSchema,\r\n GetCalibrationRecordFilter,\r\n GetInstrumentFilter,\r\n IArticleNewEditForm,\r\n} from '../utils';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { ArticleStatus } from 'enums/Article';\r\nimport { EntityNumberSchema } from 'app/components/Forms/Schemas';\r\nimport { FormCustomPicker } from 'app/components/Forms/FormCustomPicker';\r\nimport { useAllowedToChangeStatus } from '../Hooks/useAllowedToChangeStatus';\r\nimport { ArticleComments } from '../ArticleComments';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { ArticleFormPicker } from '../ArticleFormPickers';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\n\r\nexport interface EditArticleDetailsFormProps\r\n extends SidePanelContentProps,\r\n CoverProps {\r\n value: IArticleDto;\r\n onClose?: () => void;\r\n Journal?: string | null;\r\n PageNumber?: number | null;\r\n}\r\nexport function EditArticleDetailsForm(props: EditArticleDetailsFormProps) {\r\n const { t } = useTranslation();\r\n const editProcessing = useSelector(selectEditArticleAssociationBusy);\r\n const detailsLoading = useSelector(selectArticleDetailsBusy);\r\n const articleDetailsForm = useSelector(selectArticleDetailsForm);\r\n const articleDetails = useSelector(selectArticleDetails);\r\n const user = useSelector(selectAuthenticatedUser);\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const [canEditStatus, setCanEditStatus] = React.useState(false);\r\n const allowedToChangeStatus = useAllowedToChangeStatus();\r\n const submitCommentRef = React.useRef(null);\r\n const dispatch = useDispatch();\r\n const { actions } = useArticlesSlice();\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState(\r\n undefined,\r\n undefined,\r\n props.isCover,\r\n props.useSidePanel,\r\n undefined,\r\n );\r\n\r\n const handleCloseClick = React.useCallback(() => {\r\n closePanel({\r\n isCover: props.isCover,\r\n useSidePanel: props.useSidePanel,\r\n showConfirm: false,\r\n onClose: () => {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n dispatch(actions.resetArticleAssociationState());\r\n },\r\n } as SidePanelCloseState);\r\n }, [\r\n actions,\r\n closePanel,\r\n dispatch,\r\n layoutActions,\r\n props.isCover,\r\n props.useSidePanel,\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (editProcessing === false) {\r\n handleCloseClick();\r\n }\r\n return () => undefined;\r\n }, [editProcessing, handleCloseClick]);\r\n\r\n const schema: Yup.SchemaOf = Yup.object().shape(\r\n {\r\n Title: Yup.string().required().label(t(translations.Title)).trim(),\r\n Authors: Yup.string().required().label(t(translations.Authors)).trim(),\r\n Abstract: Yup.string().required().label(t(translations.Abstract)).trim(),\r\n Doi: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.Doi))\r\n .trim(),\r\n Dataset: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.ArticleDataset))\r\n .trim(),\r\n ISSN: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.ISSN))\r\n .trim(),\r\n ORCIDs: Yup.string()\r\n //.required()\r\n .nullable()\r\n .label(t(translations.ORCID))\r\n .trim(),\r\n Year: Yup.number().required().label(t(translations.Year)).min(1),\r\n CalibrationRecord: Yup.mixed().nullable().notRequired(),\r\n RelatedUser: Yup.mixed().nullable().notRequired(),\r\n /*ServiceGroupAssets: assetsSchema.when(['InstrumentAssets'], {\r\n is: v => (v === undefined ? true : v.length === 0),\r\n then: assetsSchema\r\n .required()\r\n .label(t(translations.ServiceGroup))\r\n .min(1)\r\n otherwise: assetsSchema.notRequired(),\r\n }),*/\r\n ServiceGroupAsset: assetSchema.when(['InstrumentAssets'], {\r\n is: v => (v === undefined ? true : v.length === 0),\r\n then: assetSchema\r\n .required()\r\n .label(t(translations.ServiceGroup))\r\n .nullable(),\r\n otherwise: assetSchema.nullable().notRequired(),\r\n }),\r\n /*InstrumentAssets: assetsSchema.when(['ServiceGroupAssets'], {\r\n is: v => (v === undefined ? true : v.length === 0),\r\n then: assetsSchema.required().label(t(translations.Instruments)).min(1),\r\n otherwise: assetsSchema.notRequired(),\r\n }),*/\r\n InstrumentAssets: assetsSchema.when(['ServiceGroupAsset'], {\r\n is: v => v === null,\r\n then: assetsSchema.required().label(t(translations.Instruments)).min(1),\r\n otherwise: assetsSchema.notRequired(),\r\n }),\r\n Status: EntityNumberSchema.required().label(\r\n t(translations.ArticleStatus),\r\n ),\r\n Journal: Yup.string()\r\n .notRequired()\r\n .nullable()\r\n .label(t(translations.Journal))\r\n .trim(),\r\n PageNumber: Yup.number().nullable().default(null),\r\n },\r\n [['ServiceGroupAsset', 'InstrumentAssets']],\r\n );\r\n const GetServiceGroupAsset = React.useCallback(asset => {\r\n /*if (asset !== undefined && asset !== null) {\r\n return asset.ServiceGroupId !== null &&\r\n asset.ServiceGroupId !== undefined &&\r\n (authenticatedUser?.HasAdminGroupOnlyPermissions(\r\n asset.ServiceGroupId,\r\n ) ||\r\n authenticatedUser?.HasLabTechGroupPermissions(asset.ServiceGroupId))\r\n ? asset\r\n : null;\r\n } else {\r\n return null;\r\n }*/\r\n return asset;\r\n }, []);\r\n const initialValues: IArticleNewEditForm = React.useMemo(\r\n () => ({\r\n Title:\r\n articleDetailsForm.Title === null ||\r\n articleDetailsForm.Title === undefined\r\n ? ''\r\n : articleDetailsForm.Title,\r\n Authors:\r\n articleDetailsForm.Authors === null ||\r\n articleDetailsForm.Authors === undefined\r\n ? ''\r\n : articleDetailsForm.Authors.join(','),\r\n Abstract:\r\n articleDetailsForm.Abstract === null ||\r\n articleDetailsForm.Abstract === undefined\r\n ? ''\r\n : articleDetailsForm?.Abstract?.trim(),\r\n Doi: articleDetailsForm.Doi,\r\n Dataset: articleDetailsForm.Dataset,\r\n ISSN: articleDetailsForm.ISSN,\r\n ORCIDs:\r\n articleDetailsForm.ORCIDs === null\r\n ? null\r\n : articleDetailsForm.ORCIDs.join(','),\r\n Year: articleDetailsForm.Year ?? 0,\r\n Journal: articleDetailsForm.Journal,\r\n PageNumber: articleDetailsForm.PageNumber,\r\n RelatedUser: {\r\n Id: articleDetailsForm.RelatedUser,\r\n Name: articleDetailsForm.RelatedUserDisplayName,\r\n } as Entity,\r\n CalibrationRecord: {\r\n Id: articleDetailsForm.CalibrationRecord,\r\n Name: !!articleDetailsForm.CalibrationRecord\r\n ? '#' +\r\n articleDetailsForm.CalibrationRecord?.toString() +\r\n ': ' +\r\n articleDetailsForm.CalibrationRecordName ?? ''\r\n : '',\r\n } as Entity,\r\n InstrumentAssets:\r\n articleDetailsForm !== undefined\r\n ? articleDetailsForm?.InstrumentAssets\r\n : /*? articleDetailsForm?.InstrumentAssets.filter(\r\n asset =>\r\n asset.ServiceId !== null &&\r\n asset.ServiceId !== undefined &&\r\n (authenticatedUser?.HasAdminServicePermissions(\r\n asset.ServiceTypeId ?? 1,\r\n asset.ServiceId,\r\n ) ||\r\n authenticatedUser?.HasLabTechServicePermissions(\r\n asset.ServiceTypeId ?? 1,\r\n asset.ServiceId,\r\n ) ||\r\n authenticatedUser?.HasAdminGroupPermissions(\r\n asset.ServiceGroupId ?? undefined,\r\n ) ||\r\n authenticatedUser?.HasLabTechGroupPermissions(\r\n asset.ServiceGroupId ?? undefined,\r\n )),\r\n )*/\r\n [],\r\n /*ServiceGroupAssets:\r\n articleDetailsForm !== undefined\r\n ? articleDetailsForm?.ServiceGroupAssets.filter(\r\n asset =>\r\n asset.ServiceGroupId !== null &&\r\n asset.ServiceGroupId !== undefined &&\r\n (authenticatedUser?.HasAdminGroupPermissions(\r\n asset.ServiceGroupId,\r\n ) ||\r\n authenticatedUser?.HasLabTechGroupPermissions(\r\n asset.ServiceGroupId,\r\n )),\r\n )\r\n : [],*/\r\n ServiceGroupAsset:\r\n articleDetailsForm !== undefined\r\n ? GetServiceGroupAsset(articleDetailsForm?.ServiceGroupAssets[0])\r\n : null,\r\n Status:\r\n articleDetailsForm !== undefined &&\r\n articleDetailsForm.Status !== undefined\r\n ? {\r\n Id: articleDetailsForm.Status,\r\n Name: t('Article' + ArticleStatus[articleDetailsForm.Status]),\r\n }\r\n : { Id: 0, Name: t('Article' + ArticleStatus[0]) },\r\n }),\r\n [GetServiceGroupAsset, articleDetailsForm, t],\r\n );\r\n const [oldServiceGroups, setOldServiceGroups] = React.useState(\r\n //initialValues.ServiceGroupAssets,\r\n initialValues.ServiceGroupAsset === null\r\n ? []\r\n : [initialValues.ServiceGroupAsset],\r\n );\r\n const [serviceGroups, setServiceGroups] = React.useState(\r\n //initialValues.ServiceGroupAssets,\r\n initialValues.ServiceGroupAsset === null\r\n ? []\r\n : [initialValues.ServiceGroupAsset],\r\n );\r\n const [instruments, setInstruments] = React.useState(\r\n initialValues.InstrumentAssets,\r\n );\r\n const instrumentFilter = React.useCallback(() => {\r\n return GetInstrumentFilter(serviceGroups);\r\n }, [serviceGroups]);\r\n const CalibrationRecordFilter = React.useCallback(() => {\r\n return GetCalibrationRecordFilter(instruments);\r\n }, [instruments]);\r\n const handleFormChange = React.useCallback(\r\n (\r\n values: IArticleNewEditForm,\r\n isValid,\r\n dirty,\r\n setValue,\r\n setTouched,\r\n validateField,\r\n setError,\r\n validate,\r\n ) => {\r\n if (\r\n serviceGroups.length !== oldServiceGroups.length ||\r\n serviceGroups[0] !== oldServiceGroups[0]\r\n ) {\r\n setOldServiceGroups(serviceGroups);\r\n setValue('InstrumentAssets', []);\r\n return;\r\n }\r\n if (\r\n values.ServiceGroupAsset === null &&\r\n values.InstrumentAssets.length > 0\r\n ) {\r\n setOldServiceGroups(serviceGroups);\r\n setValue('ServiceGroupAsset', {\r\n Id: values.InstrumentAssets[0].ServiceGroupAssetId,\r\n Name: values.InstrumentAssets[0].ServiceGroupName,\r\n ServiceGroupId: values.InstrumentAssets[0].ServiceGroupId,\r\n ServiceGroupName: values.InstrumentAssets[0].ServiceGroupName,\r\n });\r\n }\r\n setCanEditStatus(allowedToChangeStatus(serviceGroups[0]));\r\n },\r\n [allowedToChangeStatus, oldServiceGroups, serviceGroups],\r\n );\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: IArticleNewEditForm) => {\r\n if (\r\n //values.ServiceGroupAssets.length === 0 &&\r\n (values.ServiceGroupAsset === null &&\r\n values.InstrumentAssets.length === 0) ||\r\n values.Status === null\r\n ) {\r\n return;\r\n }\r\n let payload: IArticleDto = {\r\n ...props.value,\r\n Title: values.Title.trim(),\r\n Authors: values.Authors.trim().split(','),\r\n Abstract: values.Abstract.trim(),\r\n Doi:\r\n values.Doi !== undefined && values.Doi !== null\r\n ? values.Doi.trim()\r\n : null,\r\n Dataset:\r\n values.Dataset !== undefined && values.Dataset !== null\r\n ? values.Dataset.trim()\r\n : null,\r\n ISSN:\r\n values.ISSN !== undefined && values.ISSN !== null\r\n ? values.ISSN.trim()\r\n : null,\r\n ORCIDs:\r\n values.ORCIDs !== undefined &&\r\n values.ORCIDs !== null &&\r\n values.ORCIDs.trim() !== ''\r\n ? values.ORCIDs.trim().split(',')\r\n : [],\r\n Year: values.Year,\r\n Status: values.Status.Id,\r\n Journal: values.Journal !== undefined ? values.Journal : null,\r\n PageNumber: values.PageNumber !== undefined ? values.PageNumber : null,\r\n RelatedUser:\r\n values.RelatedUser !== null ? values.RelatedUser?.Id : null,\r\n CalibrationRecord:\r\n values.CalibrationRecord !== null\r\n ? values.CalibrationRecord?.Id\r\n : null,\r\n ExternalId: articleDetailsForm?.ExternalId ?? null,\r\n ExternalIdSource: 'Manual Entry',\r\n ...{\r\n //Assets: values.ServiceGroupAssets.concat(values.InstrumentAssets),\r\n Assets:\r\n values.ServiceGroupAsset !== null\r\n ? values.InstrumentAssets.concat([values.ServiceGroupAsset])\r\n : values.InstrumentAssets,\r\n },\r\n };\r\n delete (payload as Partial).EnteredAt;\r\n dispatch(actions.saveArticleAssociation(payload));\r\n },\r\n [props.value, articleDetailsForm?.ExternalId, dispatch, actions],\r\n );\r\n\r\n const statusPickerData: Entity[] = React.useMemo(() => {\r\n const data = [\r\n {\r\n Id: ArticleStatus.AwaitingApproval,\r\n Name: t('Article' + ArticleStatus[ArticleStatus.AwaitingApproval]),\r\n },\r\n {\r\n Id: ArticleStatus.Approved,\r\n Name: t('Article' + ArticleStatus[ArticleStatus.Approved]),\r\n },\r\n ] as Entity[];\r\n return data;\r\n }, [t]);\r\n\r\n return (\r\n \r\n
    \r\n <>\r\n {!detailsLoading && (\r\n \r\n {formik => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(translations.Source)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!!articleDetails && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n 0\r\n ? t(translations.CalibrationRecord)\r\n : t(\r\n translations.ArticlePleaseSelectEquipmentFirst,\r\n )\r\n }\r\n placeholder={\r\n instruments.length > 0\r\n ? t(translations.PleaseSelectWorkOrder)\r\n : t(\r\n translations.ArticlePleaseSelectEquipmentFirst,\r\n )\r\n }\r\n disabled={\r\n formik.isSubmitting ||\r\n !canEditStatus ||\r\n instruments.length === 0\r\n }\r\n filter={CalibrationRecordFilter()}\r\n info={t(translations.CalibrationRecord_info)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {\r\n setOldServiceGroups(serviceGroups);\r\n setServiceGroups([value]);\r\n }}\r\n />\r\n \r\n \r\n {\r\n setInstruments(value);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n
    \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * UserAttributesActions\r\n *\r\n */\r\n\r\nimport { Button, ButtonProps } from 'app/components/BasicButtons/Button';\r\n\r\nexport interface SaveFormButtonProps extends ButtonProps {\r\n edit: boolean;\r\n text: string;\r\n onClick: (e: any) => void;\r\n}\r\n\r\nexport function SaveFormButton({\r\n edit,\r\n text,\r\n onClick,\r\n ...props\r\n}: SaveFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import { IUserAttributesDto } from 'api/odata/generated/entities/IUserAttributesDto';\r\nimport { AsyncDataState } from 'types/common';\r\nimport { IResponseType } from 'types/ResponseType';\r\n\r\n/* --- STATE --- */\r\nexport interface UserAttributesState {\r\n createState: AsyncDataState;\r\n updateState: AsyncDataState;\r\n processing: boolean;\r\n SsoAttrSyncedWithUser?: boolean;\r\n UserAttrSyncedWithSso?: boolean;\r\n}\r\n\r\nexport interface UserAttributesDetailsState {\r\n Id: number;\r\n Attribute?: string | null;\r\n AttributeLocalized: string;\r\n Disabled?: boolean | null;\r\n SSO?: boolean | null;\r\n SSOAttribute?: string | null;\r\n Mandatory?: boolean | null;\r\n RegistrationForm?: boolean | null;\r\n UserDetails?: boolean | null;\r\n UserSidePanel?: boolean | null;\r\n UserProfile?: boolean | null;\r\n Order?: number | null;\r\n}\r\n\r\nexport interface UserAttributesDetailsQStringParameters {\r\n id?: string;\r\n attr?: string;\r\n attrL?: string;\r\n disabled?: string;\r\n sso?: string;\r\n ssoAttr?: string;\r\n mandatory?: string;\r\n regForm?: string;\r\n usrDetails?: string;\r\n usrSidePanel?: string;\r\n usrProfile?: string;\r\n order?: string;\r\n ssoAttrSync?: string;\r\n userAttrSync?: string;\r\n}\r\n\r\nexport interface UserAttributesDetailsResponse extends IResponseType {\r\n Id?: number;\r\n}\r\nexport type SsoAttrState =\r\n | 'NA'\r\n | 'Pass'\r\n | 'UserAttrMissing'\r\n | 'SsoAttrMissing'\r\n | 'AttrNotMutch';\r\nexport function ConvertModelToEntityUserAttributesDetails(\r\n entity: IUserAttributesDto,\r\n): UserAttributesDetailsState | undefined {\r\n if (!entity) {\r\n return undefined;\r\n } else {\r\n return {\r\n Id: entity.Id,\r\n Attribute: entity.Attribute,\r\n AttributeLocalized: entity.AttributeLocalized,\r\n Disabled: entity.Disabled,\r\n SSO: entity.SSO,\r\n SSOAttribute: entity.SSOAttribute,\r\n Mandatory: entity.Mandatory,\r\n RegistrationForm: entity.RegistrationForm,\r\n UserDetails: entity.UserDetails,\r\n UserSidePanel: entity.UserSidePanel,\r\n UserProfile: entity.UserProfile,\r\n Order: entity.Order,\r\n } as UserAttributesDetailsState;\r\n }\r\n}\r\n\r\nexport function ConvertEntityToModelUserAttributesDetails(\r\n model: UserAttributesDetailsState,\r\n original: UserAttributesDetailsState | undefined,\r\n): IUserAttributesDto {\r\n let entity = {\r\n Id: original?.Id === undefined ? model.Id : original.Id,\r\n Attribute: model.Attribute,\r\n AttributeLocalized: model.AttributeLocalized,\r\n Disabled: model.Disabled,\r\n SSO: model.SSO,\r\n SSOAttribute: model.SSOAttribute,\r\n Mandatory: model.Mandatory,\r\n RegistrationForm: model.RegistrationForm,\r\n UserDetails: model.UserDetails,\r\n UserSidePanel: model.UserSidePanel,\r\n UserProfile: model.UserProfile,\r\n Order: model.Order,\r\n } as IUserAttributesDto;\r\n return entity;\r\n}\r\n","import { UserAttributesDetailsQStringParameters } from 'app/pages/UserAttributes/UserAttributesDetailsPage/Details/slice/types';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\nimport { IUserAttributesDto } from './odata/generated/entities/IUserAttributesDto';\r\n\r\nexport const UserAttributesApi = {\r\n initCreateData: (payload: UserAttributesDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/UserAttributes/InitUserAttributes';\r\n return httpClient.post(url, data);\r\n },\r\n initUpdateData: (payload: UserAttributesDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/UserAttributes/InitUserAttributes';\r\n return httpClient.post(url, data);\r\n },\r\n insertUserAttributesDetails: (payload: IUserAttributesDto) => {\r\n const url = '/api/odata/v4/UserAttributes'; //POST action in Controller\r\n return httpClient.post(url, payload);\r\n },\r\n updateUserAttributesDetails: (payload: IUserAttributesDto) => {\r\n const url = `/api/odata/v4/UserAttributes(${payload.Id})`; //PUT action in Controller\r\n return httpClient.put(url, payload);\r\n },\r\n deleteUserAttributesDetails: (\r\n rows: IUserAttributesDto[],\r\n ): Promise => {\r\n const userAttributesIds: number[] = rows.map(item => item.Id);\r\n const data = { userAttributesIds };\r\n const url = '/api/odata/v4/UserAttributes/DeleteUserAttributes';\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, takeLatest } from 'redux-saga/effects';\r\nimport {\r\n ConvertEntityToModelUserAttributesDetails,\r\n UserAttributesDetailsQStringParameters,\r\n UserAttributesDetailsResponse,\r\n UserAttributesDetailsState,\r\n} from './types';\r\nimport { userAttributesDetailsActions as actions } from '.';\r\nimport { UserAttributesApi } from '../../../../../../api/UserAttributesApi';\r\nimport { IUserAttributesDto } from 'api/odata/generated/entities/IUserAttributesDto';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { UserAttributesDetailsProps } from '..';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { AxiosError } from 'axios';\r\n\r\nfunction* doInitCreate(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n const data = yield call(UserAttributesApi.initCreateData, action.payload);\r\n yield put(actions.initUserAttributesDetails_Success(data));\r\n } catch (error: unknown) {\r\n yield put(actions.initUserAttributesDetails_Error(error));\r\n }\r\n}\r\n\r\nfunction* doInitUpdate(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n const data = yield call(UserAttributesApi.initUpdateData, action.payload);\r\n yield put(actions.initUpdateUserAttributesDetails_Success(data));\r\n } catch (error: unknown) {\r\n yield put(actions.initUpdateUserAttributesDetails_Error(Error));\r\n }\r\n}\r\n\r\nfunction* doCreate(action: PayloadAction) {\r\n const httpPayloads: IUserAttributesDto =\r\n ConvertEntityToModelUserAttributesDetails(action.payload, undefined);\r\n try {\r\n const result = yield call(\r\n UserAttributesApi.insertUserAttributesDetails,\r\n httpPayloads,\r\n );\r\n let response: UserAttributesDetailsResponse =\r\n result as UserAttributesDetailsResponse;\r\n\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.ErrorMessages.map(item => {\r\n return {\r\n key: 'userAttributesInsert',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'userAttributesInsert',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n if (response.Id) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'userAttributesInsert',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id,\r\n created: true,\r\n itemName: i18next.t(translations.menu_UserAttributes),\r\n detailsType: RenderPageType.UserAttributesDetails,\r\n detailsTypeProps: {\r\n queryParams: {\r\n id: '' + response.Id,\r\n } as UserAttributesDetailsQStringParameters,\r\n useSidePanel: true,\r\n } as UserAttributesDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'userAttributesInsertSuccess',\r\n message: response.SuccessMessages[0],\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n }\r\n\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.createUserAttributesDetails_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'userAttributesInsert',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createUserAttributesDetails_Error(Error));\r\n }\r\n}\r\n\r\nfunction* doUpdate(\r\n action: PayloadAction<{\r\n current: UserAttributesDetailsState;\r\n original: UserAttributesDetailsState | undefined;\r\n syncSSOAttributeValue?: boolean;\r\n }>,\r\n) {\r\n const httpPayloads: IUserAttributesDto =\r\n ConvertEntityToModelUserAttributesDetails(\r\n action.payload.current,\r\n action.payload.original,\r\n );\r\n httpPayloads.SsoAttrSyncedWithUser = action.payload.syncSSOAttributeValue;\r\n try {\r\n const results = yield call(\r\n UserAttributesApi.updateUserAttributesDetails,\r\n httpPayloads,\r\n );\r\n let response = results as UserAttributesDetailsResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'userAttributesUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'userAttributesUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'userAttributesUpdate',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id,\r\n created: false,\r\n itemName: i18next.t(translations.menu_UserAttributes),\r\n detailsType: RenderPageType.UserAttributesDetails,\r\n detailsTypeProps: {\r\n queryParams: {\r\n id: '' + response.Id,\r\n } as UserAttributesDetailsQStringParameters,\r\n useSidePanel: true,\r\n } as UserAttributesDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateUserAttributesDetails_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'userAttributesUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateUserAttributesDetails_Error(Error));\r\n }\r\n}\r\n\r\nexport function* userAttributesDetailsSaga() {\r\n yield takeLatest(actions.initUserAttributesDetails.type, doInitCreate);\r\n yield takeLatest(actions.initUpdateUserAttributesDetails.type, doInitUpdate);\r\n yield takeLatest(actions.createUserAttributesDetails.type, doCreate);\r\n yield takeLatest(actions.updateUserAttributesDetails.type, doUpdate);\r\n}\r\n","import {\r\n ConvertModelToEntityUserAttributesDetails,\r\n UserAttributesDetailsQStringParameters,\r\n UserAttributesDetailsState,\r\n UserAttributesState,\r\n} from './types';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IUserAttributesDto } from 'api/odata/generated/entities/IUserAttributesDto';\r\nimport { userAttributesDetailsSaga } from './saga';\r\n\r\nexport const initialState: UserAttributesState = {\r\n processing: false,\r\n createState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n updateState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'userAttributesDetail',\r\n initialState,\r\n reducers: {\r\n initUserAttributesDetails(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = true;\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initUpdateUserAttributesDetails(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = true;\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initUserAttributesDetails_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = false;\r\n state.createState.data = ConvertModelToEntityUserAttributesDetails(\r\n action.payload,\r\n );\r\n state.SsoAttrSyncedWithUser = action.payload.SsoAttrSyncedWithUser;\r\n state.UserAttrSyncedWithSso = action.payload.UserAttrSyncedWithSso;\r\n },\r\n initUpdateUserAttributesDetails_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = false;\r\n state.updateState.data = ConvertModelToEntityUserAttributesDetails(\r\n action.payload,\r\n );\r\n state.SsoAttrSyncedWithUser = action.payload.SsoAttrSyncedWithUser;\r\n state.UserAttrSyncedWithSso = action.payload.UserAttrSyncedWithSso;\r\n },\r\n initUserAttributesDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n initUpdateUserAttributesDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n //====================================================================\r\n resetUpdateUserAttributesDetailsState(state, action: PayloadAction) {\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.SsoAttrSyncedWithUser = undefined;\r\n state.UserAttrSyncedWithSso = undefined;\r\n },\r\n resetCreateUserAttributesDetailsState(state, action: PayloadAction) {\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.SsoAttrSyncedWithUser = undefined;\r\n state.UserAttrSyncedWithSso = undefined;\r\n },\r\n //====================================================================\r\n updateUserAttributesDetails(\r\n state,\r\n action: PayloadAction<{\r\n current: UserAttributesDetailsState;\r\n original: UserAttributesDetailsState | undefined;\r\n syncSSOAttributeValue?: boolean;\r\n }>,\r\n ) {\r\n state.updateState.processing = true;\r\n state.updateState.completed = undefined;\r\n state.updateState.hasErrors = undefined;\r\n },\r\n updateUserAttributesDetails_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.updateState.processing = false;\r\n state.updateState.hasErrors = action.payload.hasErrors;\r\n state.updateState.completed = true;\r\n },\r\n updateUserAttributesDetails_Error(state, action: PayloadAction) {\r\n state.updateState.processing = false;\r\n state.updateState.completed = true;\r\n state.updateState.hasErrors = true;\r\n },\r\n //====================================================================\r\n createUserAttributesDetails(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.createState.processing = true;\r\n state.createState.completed = undefined;\r\n state.createState.hasErrors = undefined;\r\n },\r\n createUserAttributesDetails_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.createState.processing = false;\r\n state.createState.hasErrors = action.payload.hasErrors;\r\n state.createState.completed = true;\r\n },\r\n createUserAttributesDetails_Error(state, action: PayloadAction) {\r\n state.createState.processing = false;\r\n state.createState.completed = true;\r\n state.createState.hasErrors = true;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: userAttributesDetailsActions } = slice;\r\n\r\nexport const useUserAttributesDetailsSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: userAttributesDetailsSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) =>\r\n state.userAttributesDetail || initialState;\r\n\r\nexport const selectUserAttributesDetails = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\n//====================================================================\r\nexport const selectCreateUserAttributesDetails = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.createState.data,\r\n);\r\n\r\nexport const selectCreateUserAttributesDetailsCompleted = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.createState.completed,\r\n);\r\n\r\nexport const selectCreateUserAttributesDetailsHasError = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.createState.hasErrors,\r\n);\r\n//====================================================================\r\nexport const selectUpdateUserAttributesDetails = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.updateState.data,\r\n);\r\n\r\nexport const selectUpdateUserAttributesDetailsCompleted = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.updateState.completed,\r\n);\r\nexport const selectUpdateUserAttributesDetailsHasError = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.updateState.hasErrors,\r\n);\r\n//====================================================================\r\nexport const selectUserAttributesDetailsProcessing = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.processing,\r\n);\r\nexport const selectSsoAttrSyncedWithUser = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.SsoAttrSyncedWithUser,\r\n);\r\nexport const selectUserAttrSyncedWithSso = createSelector(\r\n [selectUserAttributesDetails],\r\n state => state.UserAttrSyncedWithSso,\r\n);\r\n","import * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { SsoAttrState, UserAttributesDetailsState } from '../slice/types';\r\nimport * as Yup from 'yup';\r\nimport { translations } from 'locales/translations';\r\nimport i18next from 'i18next';\r\nimport { Formik } from 'formik';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRightSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormSwitch } from 'app/components/Forms/Switch';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport { FormLabelText } from 'app/components/Forms/FormLabelText';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\n\r\nexport interface UserAttributesFormProps {\r\n initialValues: UserAttributesDetailsState;\r\n onSubmit: (\r\n item: UserAttributesDetailsState,\r\n syncSSOAttributeValue?: boolean,\r\n ) => void;\r\n isEdit: boolean;\r\n isAdmin: boolean;\r\n bindSubmitForm: any;\r\n ssoAttrState: SsoAttrState;\r\n}\r\n\r\nexport const UserAttributesForm = React.memo(function UserAttributesForm({\r\n initialValues,\r\n onSubmit,\r\n isEdit,\r\n isAdmin,\r\n bindSubmitForm,\r\n ssoAttrState,\r\n}: UserAttributesFormProps): JSX.Element {\r\n //SETTINGS\r\n const { t } = useTranslation();\r\n\r\n const [syncSSOAttributeValue, setSyncSSOAttributeValue] =\r\n React.useState(false);\r\n //FUNCTIONS\r\n const handleSubmit = (\r\n value: UserAttributesDetailsState,\r\n syncSSOAttributeValue?: boolean,\r\n ) => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(value, syncSSOAttributeValue);\r\n }\r\n };\r\n //check if the field's props (Disabled, Mandatory) can't be editted\r\n const isNotEditableField = () => {\r\n if (initialValues.Attribute === 'UserName') {\r\n return true;\r\n }\r\n if (initialValues.Attribute === 'Password') {\r\n return true;\r\n }\r\n if (initialValues.Attribute === 'Email') {\r\n return true;\r\n }\r\n if (initialValues.Attribute === 'UserGroup') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /* const handleFormChange = useCallback(\r\n (values, isValid, dirty, setValue) => {\r\n if (\r\n initialValues.Attribute === 'UserName' ||\r\n initialValues.Attribute === 'Password' ||\r\n initialValues.Attribute === 'Email' ||\r\n initialValues.Attribute === 'UserGroup'\r\n ) {\r\n setValue('Disabled', false, false);\r\n setValue('Mandatory', true, false);\r\n }\r\n /* if (ssoChanged) {\r\n if (values.SSO === true) {\r\n setValue('Mandatory', false, false);\r\n setValue('RegistrationForm', false, false);\r\n setValue('UserDetails', false, false);\r\n setValue('UserSidePanel', false, false);\r\n setValue('UserProfile', false, false);\r\n setValue('Order', 0, false);\r\n } else {\r\n setValue('SSOAttribute', '', false);\r\n setValue('Mandatory', false, false);\r\n }\r\n setSsoChanged(false);\r\n }\r\n if (ssoAttributeChanged) {\r\n if (values.SSOAttribute !== '') {\r\n setValue('Mandatory', true, false);\r\n } else {\r\n setValue('Mandatory', false, false);\r\n }\r\n setSsoAttributeChanged(false);\r\n } */\r\n // },\r\n // [initialValues.Attribute],\r\n //);\r\n\r\n //SCHEMA\r\n const userAttributesDetailsSchema: Yup.SchemaOf =\r\n Yup.object({\r\n Id: Yup.number().notRequired().default(-1),\r\n Attribute: Yup.string().default('').notRequired().nullable(),\r\n AttributeLocalized: Yup.string()\r\n .default('')\r\n .nullable()\r\n .required()\r\n .label(i18next.t(translations.Attribute)),\r\n Disabled: Yup.boolean()\r\n .notRequired()\r\n .nullable()\r\n .default(false)\r\n .label(i18next.t(translations.Disabled)),\r\n SSO: Yup.boolean()\r\n .notRequired()\r\n .default(false)\r\n .nullable()\r\n .label(i18next.t(translations.SSO)),\r\n SSOAttribute: Yup.string()\r\n .label(i18next.t(translations.SSOAttribute))\r\n .when('SSO', {\r\n is: sso => sso === true,\r\n then: Yup.string().nullable().required(),\r\n otherwise: Yup.string().notRequired().nullable().default(''),\r\n }),\r\n Mandatory: Yup.boolean()\r\n .notRequired()\r\n .nullable()\r\n .default(false)\r\n .label(i18next.t(translations.Mandatory)),\r\n RegistrationForm: Yup.boolean()\r\n .notRequired()\r\n .nullable()\r\n .default(false)\r\n .label(i18next.t(translations.RegistrationForm)),\r\n UserDetails: Yup.boolean()\r\n .notRequired()\r\n .nullable()\r\n .default(false)\r\n .label(i18next.t(translations.UserDetails)),\r\n UserSidePanel: Yup.boolean()\r\n .notRequired()\r\n .nullable()\r\n .default(false)\r\n .label(i18next.t(translations.UserSidePanel)),\r\n UserProfile: Yup.boolean()\r\n .notRequired()\r\n .nullable()\r\n .default(false)\r\n .label(i18next.t(translations.UserProfile)),\r\n Order: Yup.number()\r\n .notRequired()\r\n .nullable()\r\n .default(0)\r\n .label(i18next.t(translations.Order)),\r\n });\r\n\r\n //RENDER\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n console.debug('Submitting: ', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values, syncSSOAttributeValue);\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formik.errors) {\r\n //console.log('User Attributes Details Errors: ', formik.errors);\r\n }\r\n return (\r\n <>\r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isAdmin && (\r\n \r\n {\r\n if (ev.target.checked === false) {\r\n formik.setFieldValue('SSOAttribute', null);\r\n }\r\n\r\n setSyncSSOAttributeValue(true);\r\n }}\r\n />\r\n \r\n )}\r\n\r\n {formik.values.SSO && isAdmin && (\r\n \r\n \r\n \r\n )}\r\n {formik.values.SSO &&\r\n isAdmin &&\r\n (ssoAttrState === 'AttrNotMutch' ||\r\n ssoAttrState === 'SsoAttrMissing' ||\r\n ssoAttrState === 'UserAttrMissing') && (\r\n \r\n {(ssoAttrState === 'UserAttrMissing' ||\r\n ssoAttrState === 'AttrNotMutch') &&\r\n isAdmin && (\r\n \r\n {t(translations.SyncSSOAttribute)}\r\n \r\n )}\r\n {(ssoAttrState === 'SsoAttrMissing' ||\r\n ssoAttrState === 'AttrNotMutch') &&\r\n isAdmin && (\r\n {\r\n setSyncSSOAttributeValue(true);\r\n formik.submitForm();\r\n }}\r\n title={\r\n t(\r\n translations.SyncUserAttribute_info,\r\n ) as string\r\n }\r\n >\r\n {t(translations.SyncUserAttribute)}\r\n \r\n )}\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { PageWrapper } from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport {\r\n selectHasNotSavedChanges,\r\n selectContinueToLink,\r\n selectConfirmApproved,\r\n selectConfirmRejected,\r\n selectContinueState,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { push } from 'connected-react-router';\r\nimport { translations } from 'locales/translations';\r\nimport { Fragment, useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { SaveFormButton } from './Actions/UserAttributesActions';\r\nimport { useUserAttributesDetailsSlice } from './slice';\r\nimport {\r\n selectUserAttributesDetailsProcessing,\r\n selectCreateUserAttributesDetailsCompleted,\r\n selectUpdateUserAttributesDetailsCompleted,\r\n selectCreateUserAttributesDetails,\r\n selectUpdateUserAttributesDetails,\r\n selectSsoAttrSyncedWithUser,\r\n selectUserAttrSyncedWithSso,\r\n} from './slice/selectors';\r\nimport {\r\n UserAttributesDetailsQStringParameters,\r\n UserAttributesDetailsState,\r\n} from './slice/types';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { UserAttributesForm } from './UserAttributesForm';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport React from 'react';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\n\r\nexport interface UserAttributesDetailsProps extends SidePanelContentProps {\r\n queryParams: UserAttributesDetailsQStringParameters;\r\n}\r\n\r\nexport function UserAttributesDetails(\r\n props: UserAttributesDetailsProps,\r\n): JSX.Element {\r\n //PROPS\r\n const { queryParams, useSidePanel } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n\r\n //PERMISSIONS\r\n const User = useSelector(selectAuthenticatedUser);\r\n const IsAdmin =\r\n User !== undefined &&\r\n User.Roles.includes(Roles.Administrators) &&\r\n User.Id.toLocaleLowerCase() === 'bookitlabsupport';\r\n\r\n //SLICES\r\n const { actions } = useUserAttributesDetailsSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n\r\n //SELECTORS\r\n const publicUrl = useSelector(selectPublicUrl);\r\n //====================================================================\r\n const hasUnsavedChanges = useSelector(selectHasNotSavedChanges, shallowEqual);\r\n const continueLink = useSelector(selectContinueToLink);\r\n const loading = useSelector(selectUserAttributesDetailsProcessing);\r\n //====================================================================\r\n const confirmRejected = useSelector(selectConfirmRejected);\r\n const confirmApproved = useSelector(selectConfirmApproved);\r\n const continueToOther = useSelector(selectContinueState);\r\n //====================================================================\r\n const requestCreateCompleted = useSelector(\r\n selectCreateUserAttributesDetailsCompleted,\r\n );\r\n const requestUpdateCompleted = useSelector(\r\n selectUpdateUserAttributesDetailsCompleted,\r\n );\r\n const ssoAttrSyncedWithUser = useSelector(selectSsoAttrSyncedWithUser);\r\n const userAttrSyncedWithSso = useSelector(selectUserAttrSyncedWithSso);\r\n\r\n //====================================================================\r\n const createModel = useSelector(\r\n selectCreateUserAttributesDetails,\r\n shallowEqual,\r\n );\r\n const editModel = useSelector(\r\n selectUpdateUserAttributesDetails,\r\n shallowEqual,\r\n );\r\n const baseModel = createModel || editModel;\r\n\r\n //====================================================================\r\n\r\n //STATES\r\n const [edit, setEdit] = useState(false);\r\n const [busy, setBusy] = useState(false);\r\n const [requestCompleted, setRequestCompleted] = useState(\r\n undefined,\r\n );\r\n const ssoAttrState = React.useMemo(() => {\r\n return isNullOrUndefined(ssoAttrSyncedWithUser) &&\r\n isNullOrUndefined(userAttrSyncedWithSso)\r\n ? 'NA'\r\n : ssoAttrSyncedWithUser === true && userAttrSyncedWithSso === true\r\n ? 'Pass'\r\n : ssoAttrSyncedWithUser === false &&\r\n isNullOrUndefined(userAttrSyncedWithSso)\r\n ? 'UserAttrMissing'\r\n : userAttrSyncedWithSso === false &&\r\n isNullOrUndefined(ssoAttrSyncedWithUser)\r\n ? 'SsoAttrMissing'\r\n : userAttrSyncedWithSso === false && ssoAttrSyncedWithUser === false\r\n ? 'AttrNotMutch'\r\n : 'NA';\r\n }, [ssoAttrSyncedWithUser, userAttrSyncedWithSso]);\r\n //REF\r\n const submitFormRef = useRef(null);\r\n\r\n //FUNCTIONS\r\n const bindSubmitForm = useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n\r\n const handleSaveClick = (e: any) => {\r\n handleSubmitForm(e);\r\n };\r\n\r\n const handleSubmit = useCallback(\r\n (values: UserAttributesDetailsState, syncSSOAttributeValue?: boolean) => {\r\n setBusy(true);\r\n if (edit) {\r\n dispatch(\r\n actions.updateUserAttributesDetails({\r\n current: values,\r\n original: baseModel,\r\n syncSSOAttributeValue: syncSSOAttributeValue,\r\n }),\r\n );\r\n } else {\r\n dispatch(actions.createUserAttributesDetails(values));\r\n }\r\n },\r\n [actions, baseModel, dispatch, edit],\r\n );\r\n\r\n const handleCancelClick = useCallback(() => {\r\n if (useSidePanel) {\r\n dispatch(layoutActions.resetSidePanel());\r\n } else {\r\n dispatch(push('/UserAttributes'));\r\n }\r\n if (edit) {\r\n dispatch(actions.resetUpdateUserAttributesDetailsState());\r\n } else {\r\n dispatch(actions.resetCreateUserAttributesDetailsState());\r\n }\r\n }, [actions, dispatch, edit, layoutActions, useSidePanel]);\r\n\r\n const handleClose = () => {\r\n if (hasUnsavedChanges) {\r\n dispatch(layoutActions.setConfirmOpen(true));\r\n } else {\r\n handleCancelClick();\r\n }\r\n };\r\n\r\n //USE EFFECT ON MOUNT\r\n useEffectOnMount(() => {\r\n if (\r\n queryParams.id !== undefined &&\r\n !isNaN(parseInt(queryParams.id || ''))\r\n ) {\r\n dispatch(actions.initUpdateUserAttributesDetails(queryParams));\r\n } else {\r\n dispatch(actions.initUserAttributesDetails(queryParams));\r\n }\r\n setBusy(false);\r\n setEdit(false);\r\n setRequestCompleted(undefined);\r\n return () => {};\r\n });\r\n\r\n //USE EFFECT\r\n useEffect(() => {\r\n let active = loading === false;\r\n if (active) {\r\n if (queryParams.id !== undefined && !isNaN(parseInt(queryParams.id))) {\r\n setEdit(true);\r\n }\r\n if (requestCreateCompleted === true || requestUpdateCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n } else if (\r\n requestCreateCompleted === false ||\r\n requestUpdateCompleted === false\r\n ) {\r\n setRequestCompleted(false);\r\n setBusy(false);\r\n }\r\n if (requestUpdateCompleted === true || requestCreateCompleted === true) {\r\n handleCancelClick();\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n handleCancelClick,\r\n loading,\r\n queryParams.id,\r\n requestCreateCompleted,\r\n requestUpdateCompleted,\r\n ]);\r\n\r\n //USE EFFECT 2\r\n useEffect(() => {\r\n if (confirmApproved) {\r\n if (edit) {\r\n dispatch(actions.resetUpdateUserAttributesDetailsState());\r\n } else {\r\n dispatch(actions.resetCreateUserAttributesDetailsState());\r\n }\r\n if (continueToOther.continueOnApprove) {\r\n dispatch(layoutActions.resetSidePanel());\r\n setTimeout(() => {\r\n dispatch(\r\n layoutActions.openSidePanel({\r\n type: continueToOther.pageType,\r\n props: continueToOther.pageProps,\r\n expanded: continueToOther.expanded,\r\n }),\r\n );\r\n dispatch(layoutActions.resetContinueState());\r\n }, 200);\r\n } else if (continueLink !== undefined) {\r\n dispatch(appSettingsActions.navigate(continueLink));\r\n dispatch(layoutActions.resetSidePanel());\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n }\r\n if (confirmRejected) {\r\n dispatch(layoutActions.resetConfirmState());\r\n }\r\n return () => undefined;\r\n }, [\r\n actions,\r\n appSettingsActions,\r\n confirmApproved,\r\n confirmRejected,\r\n continueLink,\r\n continueToOther,\r\n dispatch,\r\n edit,\r\n layoutActions,\r\n ]);\r\n\r\n //LEFT ACTIONS\r\n const leftActions = [\r\n () => (\r\n \r\n }\r\n onClick={handleSaveClick}\r\n disabled={busy}\r\n processing={!requestCompleted && busy}\r\n edit={edit}\r\n text={t(translations.Save)}\r\n />\r\n \r\n ),\r\n ] as ActionRenderer[];\r\n\r\n //RIGHT ACTIONS\r\n const rightActions = [\r\n () => (\r\n }\r\n onClick={handleCancelClick}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n ),\r\n ] as ActionRenderer[];\r\n\r\n //RENDER\r\n return (\r\n <>\r\n \r\n \r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n {hasUnsavedChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n}\r\n","import { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\nimport { IUserBaseDto } from 'api/odata/generated/entities/IUserBaseDto';\r\nimport { PrioritiesUnion } from 'api/odata/generated/enums/Priorities';\r\nimport { TFunction } from 'i18next';\r\nimport * as Yup from 'yup';\r\n\r\nexport interface IServiceRequestTicketEdit {\r\n AssignedTo?: IUserBaseDto;\r\n Status?: IServiceRequestStatusDto;\r\n Priority?: PrioritiesUnion;\r\n ParentTicketId?: number | null;\r\n SamplesCount?: number | null;\r\n}\r\n\r\nexport type ServiceRequestSubTicketSchema = Pick<\r\n IServiceRequestTicketDto,\r\n 'AssignedTo' | 'Priority' | 'Status' | 'SamplesCount'\r\n>;\r\nexport const getInitialValues = (\r\n item: IServiceRequestTicketDto,\r\n t: TFunction,\r\n) => ({\r\n AssignedTo: item.AssignedTo,\r\n Status: item.Status,\r\n Priority: item.Priority,\r\n ParentTicketId: item.ParentTicketId,\r\n SamplesCount: item.ParentTicketId === null ? undefined : item.SamplesCount,\r\n});\r\n\r\nexport const getTicketSchema = (\r\n t: TFunction,\r\n item: IServiceRequestTicketDto,\r\n samplesAutomationEnabled: boolean,\r\n): Yup.SchemaOf => {\r\n const base = {\r\n AssignedTo: Yup.mixed().optional(),\r\n Priority: Yup.mixed().required(),\r\n Status: Yup.mixed().required(),\r\n ParentTicketId: Yup.number().optional().nullable(),\r\n };\r\n const isSubTicket =\r\n item.ParentTicketId !== null &&\r\n item.ParentTicketId !== undefined &&\r\n !isNaN(item.ParentTicketId);\r\n if (!isSubTicket) {\r\n return Yup.object({\r\n ...base,\r\n SamplesCount: Yup.number().optional(),\r\n });\r\n } else {\r\n return Yup.object({\r\n ...base,\r\n SamplesCount: Yup.number().optional(),\r\n });\r\n }\r\n};\r\n","/**\r\n *\r\n * FormPriorityPicker\r\n *\r\n */\r\n\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { PriorityPicker } from '../pickers/StaticOptionsPickers/PriorityPicker';\r\nimport { PrioritiesUnion } from 'api/odata/generated/enums/Priorities';\r\n\r\nexport const FormPriorityPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig & IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n info={props.info}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * FormServiceRequestStatusPicker\r\n *\r\n */\r\n\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { ServiceRequestStatusPicker } from '../pickers/AutocompletePickers/ServiceRequestStatusPicker';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\n\r\ntype optionType = IServiceRequestStatusDto;\r\nexport const FormServiceRequestStatusPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig & IFieldProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n info={props.info}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n predicates={props.predicates}\r\n />\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport {\r\n FormFieldsSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormUserPicker } from 'app/components/Forms/FormUserPicker';\r\nimport { FormPriorityPicker } from 'app/components/Forms/FormPriorityPicker';\r\nimport { FormServiceRequestStatusPicker } from 'app/components/Forms/FormServiceRequestStatusPicker';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IServiceRequestTicketEdit } from 'app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails/schema';\r\n\r\ninterface FormProps {\r\n schema: Yup.SchemaOf;\r\n initialValues: IServiceRequestTicketEdit;\r\n item: Partial;\r\n onSubmit: (values: IServiceRequestTicketEdit) => void;\r\n onCancel: () => void;\r\n processing: boolean;\r\n}\r\nexport const Form = ({\r\n schema,\r\n initialValues,\r\n onSubmit,\r\n onCancel,\r\n processing,\r\n item,\r\n}: FormProps) => {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n {formik => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n }\r\n disabled={processing}\r\n processing={processing}\r\n >\r\n {t(translations.Submit)}\r\n \r\n }\r\n color=\"default\"\r\n onClick={onCancel}\r\n disabled={processing}\r\n variant=\"ghost\"\r\n >\r\n {t(translations.Cancel)}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * ServiceRequestTicketDetails\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { PageWrapper } from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\n\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n IServiceRequestTicketEdit,\r\n getInitialValues,\r\n getTicketSchema,\r\n} from 'app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails/schema';\r\nimport { useServiceRequestsKanbanSlice } from 'app/pages/ServiceRequestsKanbanPage/slice';\r\n\r\nimport { Form } from '../Form';\r\nimport { Dto } from 'app/pages/ServiceRequestsKanbanPage/slice/types';\r\nimport { selectServiceRequestsKanbanProcessingInsert } from 'app/pages/ServiceRequestsKanbanPage/slice/selectors';\r\nimport { selectKnownModule } from 'app/slice/selectors';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { omit } from 'lodash';\r\n\r\nexport interface AddSubTicketProps {\r\n parentTicket: IServiceRequestTicketDto;\r\n useSidePanel: boolean;\r\n}\r\nexport function AddSubTicket({ parentTicket, ...props }: AddSubTicketProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useServiceRequestsKanbanSlice();\r\n const processing = useSelector(selectServiceRequestsKanbanProcessingInsert);\r\n const samplesAutomationEnabled = useSelector(state =>\r\n selectKnownModule(state, KnownModules.SamplesAutomation),\r\n );\r\n\r\n const schema = React.useMemo(\r\n () =>\r\n getTicketSchema(\r\n t,\r\n {\r\n Id: 0,\r\n AssignedTo: parentTicket.AssignedTo,\r\n AssignedTo_Id: parentTicket.AssignedTo_Id,\r\n Index: parentTicket.Index + 1,\r\n Priority: parentTicket.Priority,\r\n SamplesCount: null,\r\n ServiceRequest: parentTicket.ServiceRequest,\r\n ServiceRequestId: parentTicket.ServiceRequestId,\r\n ServiceRequestStatusId: parentTicket.ServiceRequestStatusId,\r\n Status: parentTicket.Status,\r\n SubSamplesCount: parentTicket.SubSamplesCount,\r\n TotalSamplesCount: parentTicket.TotalSamplesCount,\r\n ParentTicketId: parentTicket.Id,\r\n ParentTicket: parentTicket,\r\n },\r\n samplesAutomationEnabled,\r\n ),\r\n [parentTicket, samplesAutomationEnabled, t],\r\n );\r\n const initialValues = React.useMemo(\r\n () =>\r\n getInitialValues(\r\n {\r\n ParentTicketId: parentTicket.Id,\r\n AssignedTo: parentTicket.AssignedTo,\r\n Status: parentTicket.Status,\r\n Priority: parentTicket.Priority,\r\n } as Dto,\r\n t,\r\n ),\r\n [parentTicket, t],\r\n );\r\n const handleSubmit = React.useCallback(\r\n (values: IServiceRequestTicketEdit) => {\r\n dispatch(\r\n actions.insert({\r\n ...values,\r\n ParentTicket: parentTicket,\r\n // insert after the parent ticket\r\n Index: parentTicket.Index + 1,\r\n ServiceRequestId: parentTicket.ServiceRequestId,\r\n }),\r\n );\r\n },\r\n [actions, dispatch, parentTicket],\r\n );\r\n const item: Partial = {\r\n ...omit(parentTicket, 'Id', 'SamplesCount'),\r\n ParentTicketId: parentTicket.Id,\r\n SamplesCount: parentTicket.SamplesCount,\r\n };\r\n\r\n const handleCancel = () => dispatch(actions.showAddSubTicket());\r\n\r\n const title = t(translations.AddSubServiceRequestTicket);\r\n\r\n return (\r\n \r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ServiceRequestTicketDetails\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { PageWrapper } from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { TopActionButton } from 'app/components/BasicButtons/TopActionButton';\r\nimport { getInitialValues, getTicketSchema } from './schema';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { IServiceRequestTicketEdit } from 'app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails/schema';\r\nimport { useServiceRequestsKanbanSlice } from 'app/pages/ServiceRequestsKanbanPage/slice';\r\nimport { PartialExceptId } from 'utils/typeUtils';\r\nimport { Form } from './components/Form';\r\nimport {\r\n selectEdit,\r\n selectServiceRequestsKanbanProcessingUpdate,\r\n selectShowAddSubTicket,\r\n} from 'app/pages/ServiceRequestsKanbanPage/slice/selectors';\r\nimport { AddSubTicket } from './components/AddSubTicket';\r\nimport { Comments } from 'app/components/Comments';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectKnownModule,\r\n} from 'app/slice/selectors';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { CommentReferenceTypes } from 'enums/commentReferenceTypes';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { getServiceRequestTicketTitle } from 'app/pages/ServiceRequestsKanbanPage/components/getServiceRequestTicketTitle';\r\nimport { ParentTicketDetailsButton } from 'app/pages/ServiceRequestsKanbanPage/components/ParentTicketDetailsButton';\r\nimport { useUploadToNewComment } from 'app/components/LargeFilesUpload/Components/useUploadToNewComment';\r\n\r\nexport interface ServiceRequestTicketDetailsProps {\r\n item: IServiceRequestTicketDto;\r\n useSidePanel: boolean;\r\n}\r\nexport function ServiceRequestTicketDetails({\r\n item,\r\n ...props\r\n}: ServiceRequestTicketDetailsProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useServiceRequestsKanbanSlice();\r\n const showAddSubTicket = useSelector(selectShowAddSubTicket);\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const samplesAutomationEnabled = useSelector(state =>\r\n selectKnownModule(state, KnownModules.SamplesAutomation),\r\n );\r\n const processing = useSelector(selectServiceRequestsKanbanProcessingUpdate);\r\n const editState = useSelector(selectEdit);\r\n const editItem = editState.value;\r\n\r\n const handleAddSubTicketClick = React.useCallback(() => {\r\n dispatch(actions.showAddSubTicket(editItem));\r\n }, [actions, dispatch, editItem]);\r\n const rightTopActions: ActionRenderer[] = React.useMemo(() => {\r\n const result: ActionRenderer[] = [];\r\n if (editItem?.ParentTicketId === null) {\r\n result.push(() => (\r\n \r\n ));\r\n } else {\r\n result.push(() => );\r\n }\r\n return result;\r\n }, [editItem, handleAddSubTicketClick, t]);\r\n\r\n const schema = React.useMemo(\r\n () =>\r\n editItem === undefined\r\n ? undefined\r\n : getTicketSchema(t, editItem, samplesAutomationEnabled),\r\n [editItem, samplesAutomationEnabled, t],\r\n );\r\n const initialValues = React.useMemo(\r\n () => getInitialValues(editItem as IServiceRequestTicketDto, t),\r\n [editItem, t],\r\n );\r\n const handleSubmit = React.useCallback(\r\n (values: IServiceRequestTicketEdit) => {\r\n const updated: Partial = {\r\n ...editItem,\r\n ...{\r\n AssignedTo: values.AssignedTo,\r\n Status: values.Status,\r\n Priority: values.Priority,\r\n SamplesCount: values.SamplesCount,\r\n },\r\n };\r\n if (\r\n (updated as PartialExceptId).Id === undefined\r\n ) {\r\n return;\r\n }\r\n dispatch(\r\n actions.update(updated as PartialExceptId),\r\n );\r\n },\r\n [actions, dispatch, editItem],\r\n );\r\n\r\n const handleCancel = () => dispatch(layoutActions.resetSidePanel());\r\n const cover = React.useMemo(() => {\r\n return (\r\n showAddSubTicket &&\r\n editItem !== undefined && (\r\n \r\n )\r\n );\r\n }, [editItem, showAddSubTicket]);\r\n const isAdmin = React.useMemo(\r\n () =>\r\n (editItem !== undefined &&\r\n authenticatedUser?.IsAdminOf({\r\n ServiceGroupId: editItem.ServiceRequest.Service.ServiceGroup.Id,\r\n ServiceId: editItem.ServiceRequest.Service.Id,\r\n ServiceTypeId: ServiceType.Sample,\r\n })) ??\r\n false,\r\n [authenticatedUser, editItem],\r\n );\r\n const title =\r\n editItem === undefined ? undefined : getServiceRequestTicketTitle(editItem);\r\n const link =\r\n editItem === undefined\r\n ? undefined\r\n : '/requests/' + editItem.ServiceRequestId;\r\n const { onCommentAdded } = useUploadToNewComment();\r\n return (\r\n \r\n {schema !== undefined && editItem !== undefined && (\r\n <>\r\n \r\n\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { Formik, FormikProps } from 'formik';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { StockRenewalState } from '../Details/slice/types';\r\nimport React from 'react';\r\nimport * as Yup from 'yup';\r\nimport { translations } from 'locales/translations';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\n\r\nimport {\r\n selectEditCreatableService,\r\n selectStockRenewalHasErrors,\r\n selectStockRenewalValueHandler,\r\n} from '../Details/slice/selectors';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport { isEmpty } from 'lodash';\r\nimport {\r\n FieldHandler,\r\n FormListener,\r\n SubmittingHandler,\r\n} from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { BookQuickServices } from '../Details/components/BookQuickServices';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { FormCheckbox } from 'app/components/Forms/FormCheckbox';\r\nimport { loadOfflineServiceData } from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { ErrorsSummury } from 'app/components/Forms/FormsLayout/FormErrorSummury';\r\nimport { FormBookitDateTimePicker } from 'app/components/Forms/FormBookitDateTimePicker';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\n\r\nexport interface StockRenewalFormProps {\r\n onSubmit: (item: StockRenewalState) => void;\r\n onAddServiceClick: (services: number[]) => void;\r\n initialValues: StockRenewalState;\r\n processing?: boolean;\r\n bindSubmitForm: any;\r\n isAdmin: boolean;\r\n user?: AuthenticatedUser;\r\n innerFormRef: React.RefObject>;\r\n globalSettings: GlobalSettingsType;\r\n onRenewStockClick?: (service: IOtherServices) => void;\r\n editCreatable?: boolean;\r\n onAddBatchClick: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n isCover?: boolean;\r\n}\r\n\r\nexport const StockRenewalForm = React.memo(function StockRenewalForm({\r\n onSubmit,\r\n processing,\r\n initialValues,\r\n bindSubmitForm,\r\n isAdmin,\r\n user,\r\n globalSettings,\r\n innerFormRef,\r\n onRenewStockClick,\r\n onAddServiceClick,\r\n editCreatable,\r\n onAddBatchClick,\r\n isCover,\r\n}: StockRenewalFormProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n\r\n const fieldHandler = useSelector(selectStockRenewalValueHandler);\r\n const hasError = useSelector(selectStockRenewalHasErrors);\r\n const editCreatableService = useSelector(selectEditCreatableService);\r\n const { newDate } = useSystemDate();\r\n // const readonly = !isAdmin;\r\n const [submitting, setSubmitting] = React.useState(\r\n undefined,\r\n );\r\n const resetSubmitting = () => {\r\n setSubmitting(true);\r\n };\r\n const handleSubmit = (values: StockRenewalState) => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(values);\r\n validateForms(true);\r\n }\r\n };\r\n const resetFieldHandler = () => {\r\n dispatch(actions.resetStockRenewalValueHandler());\r\n };\r\n\r\n /// Local State ///\r\n const [serviceChanged, setServiceChanged] = React.useState(false);\r\n const [recentMostBatchesChanged, setRecentMostBatchesChanged] =\r\n React.useState(false);\r\n const [allIsValid, setAllIsValid] = React.useState(true);\r\n const [servicesSelected, setServicesSelected] = useAsyncExtendedState<\r\n IOtherServices[]\r\n >(initialValues.Services ?? []);\r\n // const [serviceTypeSelected, setServiceTypeSelected] = useAsyncExtendedState<\r\n // IOfflineServiceFilterDto | undefined\r\n // >(initialValues.ServiceType ?? undefined);\r\n // const IsAdmin = React.useCallback(\r\n // (service: IOtherServices) => {\r\n // return user?.IsAllGroupOrLabTechAdmin(\r\n // [service.ServiceGroupId ?? 0],\r\n // [\r\n // {\r\n // Id: service.ServiceTypeID,\r\n // Name: service.ServiceType,\r\n // ServiceTypeId: ServiceType.Offline,\r\n // } as IServiceTypeFilterDto,\r\n // ],\r\n // );\r\n // },\r\n // [user],\r\n // );\r\n // const [errorMessages, setErrorMessages] = React.useState([]);\r\n // const addErrorMessages = React.useCallback((data: string[]) => {\r\n // if (data.length > 0) {\r\n // setErrorMessages([]);\r\n // messagesHandler(data, 'error', (nodes: IndexNode[]) =>\r\n // setErrorMessages(() => nodes),\r\n // );\r\n // }\r\n // }, []);\r\n const handleFormChange = React.useCallback(\r\n (\r\n values: StockRenewalState,\r\n isValid,\r\n dirty,\r\n setValue,\r\n setTouched,\r\n validateField,\r\n setError,\r\n validate,\r\n ) => {\r\n if (recentMostBatchesChanged) {\r\n setRecentMostBatchesChanged(false);\r\n }\r\n if (serviceChanged) {\r\n setServiceChanged(false);\r\n }\r\n },\r\n [recentMostBatchesChanged, serviceChanged],\r\n );\r\n const validateForms = React.useCallback((isValid: boolean) => {\r\n setAllIsValid(isValid);\r\n }, []);\r\n\r\n // useEffects\r\n React.useEffect(() => {\r\n if (innerFormRef.current) {\r\n innerFormRef.current.validateForm();\r\n }\r\n }, [innerFormRef]);\r\n\r\n // React.useEffect(() => {\r\n // if (!!serviceChangeState) {\r\n // console.log('service settings: ', serviceSettings);\r\n // if (!!serviceChangeState) {\r\n // if (serviceSettings.budgetVisible) {\r\n // dispatch(\r\n // connectedFiltersActions.setConnectedValue({\r\n // fieldKey: 'Budget',\r\n // fieldValue: serviceChangeState.DefaultBudget,\r\n // }),\r\n // );\r\n // if (\r\n // serviceSettings.ReservationUserGroupGroupByBudgetUserGroup &&\r\n // serviceChangeState.DefaultBudget !== null\r\n // ) {\r\n // dispatch(\r\n // connectedFiltersActions.setConnectedValue({\r\n // fieldKey: 'UserGroup',\r\n // fieldValue: {\r\n // Id: serviceChangeState.DefaultBudget.UserGroupId,\r\n // Name: serviceChangeState.DefaultBudget.UserGroupName,\r\n // },\r\n // }),\r\n // );\r\n // }\r\n // if (\r\n // serviceSettings.budgetExpirementVisible &&\r\n // serviceChangeState.DefaultExperiment !== null\r\n // ) {\r\n // dispatch(\r\n // connectedFiltersActions.setConnectedValue({\r\n // fieldKey: 'BudgetExperiment',\r\n // fieldValue: serviceChangeState.DefaultExperiment,\r\n // }),\r\n // );\r\n // }\r\n // } else {\r\n // if (serviceSettings.isUserGroupCoordinator) {\r\n // dispatch(\r\n // connectedFiltersActions.setConnectedValue({\r\n // fieldKey: 'UserGroup',\r\n // fieldValue: {\r\n // Id: user?.ActiveUserGroup?.Id,\r\n // Name: user?.ActiveUserGroup?.Name,\r\n // },\r\n // }),\r\n // );\r\n // }\r\n // }\r\n // }\r\n // dispatch(actions.resetServiceChangeState());\r\n // }\r\n // }, [\r\n // actions,\r\n // connectedFiltersActions,\r\n // dispatch,\r\n // serviceChangeState,\r\n // serviceSettings,\r\n // user?.ActiveUserGroup?.Id,\r\n // user?.ActiveUserGroup?.Name,\r\n // ]);\r\n React.useEffect(() => {\r\n dispatch(\r\n actions.setStockRenewalValue({\r\n fieldKey: 'Services',\r\n fieldValue: servicesSelected,\r\n }),\r\n );\r\n }, [actions, dispatch, servicesSelected]);\r\n\r\n const otherServicesSchema = Yup.array().of(\r\n Yup.mixed() as Yup.SchemaOf,\r\n );\r\n const changeOfflineServices = React.useCallback(\r\n (services: IOtherServices[], operation: 'add' | 'remove' | 'update') => {\r\n if (operation === 'add') {\r\n let addedServ = services.filter(\r\n f => !servicesSelected.some(s => s.ServiceTypeID === f.ServiceTypeID),\r\n );\r\n setServicesSelected([...servicesSelected, ...addedServ]);\r\n setServiceChanged(true);\r\n }\r\n if (operation === 'remove') {\r\n let otherServices = servicesSelected.filter(f => {\r\n return !services.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n });\r\n setServicesSelected(otherServices);\r\n setServiceChanged(true);\r\n }\r\n if (operation === 'update') {\r\n setServicesSelected(\r\n servicesSelected.map(f => {\r\n let service = services.find(\r\n s => s.ServiceTypeID === f.ServiceTypeID,\r\n );\r\n if (!!service && service !== null) {\r\n return Object.assign({}, f, service);\r\n } else {\r\n return f;\r\n }\r\n }),\r\n );\r\n }\r\n },\r\n [servicesSelected, setServicesSelected],\r\n );\r\n const stockRenwevalSchema: Yup.SchemaOf = Yup.object({\r\n Services: otherServicesSchema\r\n .min(1)\r\n .label(t(translations.Consumables) as string)\r\n .required(t(translations.err_OfflineServiceTypeRequired) as string),\r\n DateReceived: Yup.date()\r\n .default(newDate())\r\n .label(t(translations.DateReceived) as string)\r\n .required(t(translations.err_DateReceived_required) as string),\r\n AutoGenerateNewBatches: Yup.boolean()\r\n .nullable()\r\n .default(true)\r\n .label(t(translations.AutoGenerateNewBatches) as string),\r\n });\r\n const initServices = async (): Promise => {\r\n return new Promise(async resolve => {\r\n resolve(servicesSelected);\r\n });\r\n };\r\n const prepareService = (\r\n serviceType: IOfflineServiceFilterDto,\r\n otherData?: StockRenewalState,\r\n ) => {\r\n let batch =\r\n otherData?.AutoGenerateNewBatches === false\r\n ? serviceType.InventoryBatches.length > 0\r\n ? serviceType.InventoryBatches.sort((a, b) => b.Id - a.Id)[0]\r\n : null\r\n : null;\r\n let data = {\r\n Id: 0,\r\n BookedBy: user?.Id,\r\n UserDisplayName: user?.Name,\r\n BudgetID: null,\r\n Budget: null,\r\n Quantity: serviceType.DefaultQuantity,\r\n DefaultQuantity: serviceType.DefaultQuantity,\r\n IntQuantityOnly: serviceType.IntQuantityOnly,\r\n DiscountFactor: 1,\r\n Mandatory: false,\r\n Remarks: t(translations.StockRenewal) as string,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(otherData?.DateReceived ?? newDate()),\r\n ),\r\n TrackInventory: serviceType.TrackInventory,\r\n ServiceTypeID: serviceType.Id,\r\n ServiceType: serviceType.Name,\r\n ServiceGroupId: serviceType.ServiceGroupId,\r\n Units: serviceType.UnitTypeName,\r\n UserGroup: user?.ActiveUserGroup?.Id,\r\n UserGroupName: user?.ActiveUserGroup?.Name,\r\n AllowToUser: serviceType.AllowToUser,\r\n BudgetsTurnedOn: serviceType.BudgetsTurnedOn,\r\n StaffOnly: serviceType.StaffOnly,\r\n InventoryBatchesEnabled: serviceType.InventoryBatchesEnabled,\r\n InventoryBatchId: batch === null ? null : batch.Id,\r\n InventoryBatchName: batch === null ? null : batch.Name,\r\n InventoryBatchAmount: batch === null ? null : batch.Inventory,\r\n RenewStockInventory: true,\r\n AutoGenerateNewBatches: otherData?.AutoGenerateNewBatches ?? true,\r\n } as IOtherServices;\r\n return data;\r\n };\r\n const createService =\r\n (values: StockRenewalState) =>\r\n async (\r\n serviceType: IOfflineServiceFilterDto,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticService = prepareService(serviceType, values);\r\n changeOfflineServices([staticService], 'add');\r\n resolve(staticService);\r\n });\r\n };\r\n const createServices =\r\n (values: StockRenewalState) =>\r\n async (\r\n serviceTypes: IOfflineServiceFilterDto[],\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticServices = serviceTypes.map(f => prepareService(f, values));\r\n changeOfflineServices(staticServices, 'add');\r\n resolve(staticServices);\r\n });\r\n };\r\n const onRemoveService = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices([service], 'remove');\r\n resolve(service);\r\n });\r\n };\r\n const onRemoveServices = async (services: IOtherServices[]) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices(services, 'remove');\r\n resolve(services);\r\n });\r\n };\r\n const onUpdateService = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices([service], 'update');\r\n resolve(service);\r\n });\r\n };\r\n const onAddAndRemoveServices =\r\n (values: StockRenewalState) =>\r\n async (\r\n serviceTypes: IOfflineServiceFilterDto[],\r\n removed: IOtherServices[],\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticServices = serviceTypes.map(f => prepareService(f, values));\r\n let addedServ = staticServices.filter(\r\n f => !servicesSelected.some(s => s.ServiceTypeID === f.ServiceTypeID),\r\n );\r\n let otherServices = servicesSelected.filter(f => {\r\n return !removed.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n });\r\n setServicesSelected([...otherServices, ...addedServ]);\r\n setServiceChanged(true);\r\n resolve([...otherServices, ...addedServ]);\r\n });\r\n };\r\n const loadServiceTypes = async (\r\n searchTerm: string | null,\r\n predicates: (string | Condition)[] | undefined,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const data = await loadOfflineServiceData(\r\n predicates,\r\n 'base',\r\n [],\r\n undefined,\r\n 'InventoryBatches',\r\n )(searchTerm, undefined);\r\n resolve(data.value);\r\n } catch (error) {\r\n resolve([]);\r\n }\r\n });\r\n };\r\n\r\n React.useEffect(() => {\r\n if (\r\n !!editCreatableService &&\r\n servicesSelected.some(\r\n f => f.ServiceTypeID === editCreatableService.ServiceTypeID,\r\n )\r\n ) {\r\n changeOfflineServices([editCreatableService], 'update');\r\n dispatch(actions.setEditCreatableService(undefined));\r\n dispatch(actions.setRefreshConsumableOfflineServices(true));\r\n }\r\n }, [\r\n actions,\r\n changeOfflineServices,\r\n dispatch,\r\n editCreatableService,\r\n servicesSelected,\r\n ]);\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n if (allIsValid) {\r\n formikHelpers.validateForm(values).then(responseErrors => {\r\n if (!isEmpty(responseErrors)) {\r\n formikHelpers.setSubmitting(false);\r\n console.debug('errors', responseErrors);\r\n } else if (\r\n values.AutoGenerateNewBatches === false &&\r\n values.Services.some(\r\n f => f.InventoryBatchesEnabled && f.InventoryBatchId === null,\r\n )\r\n ) {\r\n // addErrorMessages([\r\n // `No batch associated with ${\r\n // values.Services.filter(\r\n // f =>\r\n // f.InventoryBatchesEnabled &&\r\n // f.InventoryBatchId === null,\r\n // )[0].ServiceType\r\n // }`,\r\n // ]);\r\n formikHelpers.setErrors({\r\n Services: `No batch associated with ${\r\n values.Services.filter(\r\n f =>\r\n f.InventoryBatchesEnabled &&\r\n f.InventoryBatchId === null,\r\n )[0].ServiceType\r\n }`,\r\n });\r\n formikHelpers.setSubmitting(false);\r\n } else if (values.Services.length < 1) {\r\n // addErrorMessages([\r\n // t(translations.err_OfflineServiceTypeRequired) as string,\r\n // ]);\r\n formikHelpers.setErrors({\r\n Services: t(\r\n translations.err_OfflineServiceTypeRequired,\r\n ) as string,\r\n });\r\n formikHelpers.setSubmitting(false);\r\n }\r\n // else if (errorMessages.length > 0) {\r\n // console.debug('errors', errorMessages);\r\n // formikHelpers.setSubmitting(false);\r\n // }\r\n else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }\r\n });\r\n } else {\r\n formikHelpers.setSubmitting(false);\r\n }\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formik.errors) {\r\n console.log('Consumables errors', formik.errors);\r\n }\r\n console.log('Consumables submitting', formik.isSubmitting);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 &&\r\n !formik.values.Services.some(\r\n f => f.InventoryBatchesEnabled,\r\n )\r\n }\r\n >\r\n 1\r\n ? t(\r\n translations.AutoGenerateNewBatchesDisabled_info,\r\n )\r\n : t(translations.AutoGenerateNewBatches_info)\r\n }\r\n label={t(translations.AutoGenerateNewBatches)}\r\n disabled={\r\n formik.isSubmitting || servicesSelected.length > 0\r\n }\r\n onChange={() => setRecentMostBatchesChanged(true)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n RenderPageType,\r\n SidePanelContentProps,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { push } from 'connected-react-router';\r\nimport { FormikProps } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport {\r\n selectStockRenewalCompleted,\r\n selectStockRenewalData,\r\n selectStockRenewalHasErrors,\r\n selectStockRenewalProcessing,\r\n} from '../Details/slice/selectors';\r\nimport {\r\n RenewStockState,\r\n StockRenewalParams,\r\n StockRenewalState,\r\n} from '../Details/slice/types';\r\nimport useGlobalSettingsHook from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport { AssetsSelectionProps } from 'app/pages/MyAssetsPage/AssetsSelection/AssetsSelection';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { ScanTarget } from 'app/slice/types';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { IMyAssetsRow } from 'app/pages/MyAssetsPage/IMyAssetsRow';\r\nimport { StockRenewalForm } from './StockRenewalForm';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\n\r\nexport interface StockRenewalProps extends CoverProps, SidePanelContentProps {\r\n queryParams: StockRenewalParams;\r\n initialServices: IOtherServices[];\r\n onClose?: () => void;\r\n}\r\nexport const StockRenewal = React.memo(function StockRenewal(\r\n props: StockRenewalProps,\r\n) {\r\n const { useSidePanel, queryParams, initialServices, closeCover, isCover } =\r\n props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n const processing = useSelector(selectStockRenewalProcessing);\r\n const actionCompleted = useSelector(selectStockRenewalCompleted);\r\n const User = useSelector(selectAuthenticatedUser);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const hasError = useSelector(selectStockRenewalHasErrors);\r\n const stockRenewalServicesData = useSelector(selectStockRenewalData);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n // const { checkIsMobile } = useIsMobile();\r\n // const mobile = checkIsMobile();\r\n const globalSettings = useGlobalSettingsHook();\r\n //Local State\r\n const { cover, openPanel, closePanel, coverClosed, onCloseCover } =\r\n useSidePanelState(\r\n () => {\r\n dispatch(actions.resetStockRenewalState());\r\n return true;\r\n },\r\n undefined,\r\n useSidePanel,\r\n isCover,\r\n );\r\n const [busy, setBusy] = React.useState(false);\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n // const [submitAllowed, setSubmitAllowed] = React.useState(\r\n // false,\r\n // );\r\n const [requestCompleted, setRequestCompleted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n\r\n //Refs\r\n const submitFormRef = React.useRef(null);\r\n const innerFormRef = React.useRef>(null);\r\n\r\n const isReadOnlyUser = React.useMemo(() => {\r\n return (\r\n User !== undefined &&\r\n (User.Roles.includes(Roles.CalendarOnly) ||\r\n User.Roles.includes(Roles.Readonly) ||\r\n User.Roles.includes(Roles.RoomOnly))\r\n );\r\n }, [User]);\r\n const assetsFilter = React.useMemo(() => {\r\n const userGroups = User?.AdminServiceGroups.map(f => f.Id);\r\n let filter: (string | Condition)[] | undefined = [];\r\n filter.push(\r\n new Condition(\r\n 'TrackInventory',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n filter.push(\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n userGroups || [],\r\n ),\r\n );\r\n return filter.length > 0 ? filter : undefined;\r\n }, [User?.AdminServiceGroups]);\r\n //Methods\r\n\r\n const handleCloselClick = React.useCallback(() => {\r\n if (useSidePanel) {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n onClose: () => {\r\n dispatch(actions.resetStockRenewalState());\r\n },\r\n } as SidePanelCloseState);\r\n } else {\r\n dispatch(push('/otherServices'));\r\n }\r\n }, [actions, closePanel, dispatch, hasChanges, isCover, useSidePanel]);\r\n const handleSaveClick = React.useCallback((e: any) => {\r\n handleSubmitForm(e);\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: StockRenewalState) => {\r\n setBusy(true);\r\n dispatch(actions.createStockRenewals(values));\r\n },\r\n [actions, dispatch],\r\n );\r\n const onRenewStockClick = React.useCallback(\r\n (service: IOtherServices) => {\r\n let renewProps = {\r\n initialService: service,\r\n editCreatable: true,\r\n queryParams: {\r\n id: '' + service.Id ?? -1,\r\n },\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.RenewStock,\r\n renderPageProps: renewProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [openPanel, useSidePanel],\r\n );\r\n const onAddBatchClick = React.useCallback(\r\n (batch: IInventoryBatchDto | null, serviceType: number) => {\r\n let batchProps = {\r\n initialBatch: batch ?? undefined,\r\n saveCreatable: true,\r\n queryParams: {\r\n id: '' + (batch?.Id ?? -1),\r\n stid: '' + serviceType,\r\n },\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.InventoryBatch,\r\n renderPageProps: batchProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [openPanel, useSidePanel],\r\n );\r\n const onAddServiceClick = React.useCallback(\r\n (services: number[]) => {\r\n let selParams = {\r\n actionType: 'OfflineService',\r\n offTypeIds: services,\r\n customPredicates: assetsFilter,\r\n } as AssetsSelectionProps;\r\n openPanel({\r\n renderPageType: RenderPageType.AssetsSelection,\r\n renderPageProps: selParams,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [assetsFilter, openPanel, useSidePanel],\r\n );\r\n //effects\r\n useEffectOnMount(() => {\r\n dispatch(\r\n appSettingsActions.setBarcodeScannigTarget(ScanTarget.Consumables),\r\n );\r\n return () => {\r\n dispatch(appSettingsActions.setBarcodeScannigTarget(ScanTarget.All));\r\n };\r\n });\r\n React.useEffect(() => {\r\n let active = firstLoad;\r\n if (globalSettings.loadCompleted && active) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.initStockRenewal({\r\n query: queryParams,\r\n services: initialServices,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n dispatch,\r\n firstLoad,\r\n globalSettings,\r\n initialServices,\r\n queryParams,\r\n ]);\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n if (actionCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n if (!hasError) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n handleCloselClick();\r\n }\r\n } else if (actionCompleted === false) {\r\n setRequestCompleted(undefined);\r\n setBusy(false);\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actionCompleted,\r\n dispatch,\r\n handleCloselClick,\r\n hasError,\r\n layoutActions,\r\n processing,\r\n ]);\r\n\r\n // React.useEffect(() => {\r\n // setSubmitAllowed(\r\n // !!stockRenewalServicesData &&\r\n // stockRenewalServicesData.Services.length > 0,\r\n // );\r\n // }, [setSubmitAllowed, stockRenewalServicesData]);\r\n //memo\r\n const IsAdmin = React.useMemo(() => {\r\n return !!innerFormRef.current &&\r\n innerFormRef.current.values.Services.length > 0\r\n ? User?.IsAllGroupOrLabTechAdmin(\r\n innerFormRef.current.values.Services.map(g => g.ServiceGroupId || 0),\r\n innerFormRef.current.values.Services.map(f => {\r\n return {\r\n Id: f.ServiceTypeId,\r\n Name: f.ServiceTypeName,\r\n ServiceTypeId: ServiceType.Offline,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n )\r\n : false;\r\n }, [User]);\r\n const rightActions = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n actions.push(() => (\r\n }\r\n onClick={handleSaveClick}\r\n disabled={busy} // || !submitAllowed\r\n processing={!requestCompleted && busy}\r\n >\r\n {t(translations.Save)}\r\n \r\n ));\r\n actions.push(() => (\r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Close)}\r\n \r\n ));\r\n return actions;\r\n }, [busy, handleCloselClick, handleSaveClick, requestCompleted, t]);\r\n\r\n return (\r\n \r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n pageLink={buildURL(publicUrl + 'stockRenewals', queryParams)}\r\n toPageLink={`stockRenewals?${toQueryString(queryParams)}`}\r\n isCover={isCover}\r\n cover={cover}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n coverClosed={coverClosed}\r\n />\r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n});\r\n","import { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { Formik, FormikProps } from 'formik';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { RenewStockState } from '../Details/slice/types';\r\nimport React from 'react';\r\nimport * as Yup from 'yup';\r\nimport { translations } from 'locales/translations';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\n\r\nimport {\r\n selectInventoryBatchEditable,\r\n selectRenewStockHasErrors,\r\n selectRenewStockValueHandler,\r\n} from '../Details/slice/selectors';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport { isEmpty } from 'lodash';\r\nimport {\r\n FieldHandler,\r\n FormListener,\r\n SubmittingHandler,\r\n} from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { RenewStockRelatedFilter } from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport { ServiceTypeSchema } from 'app/components/Forms/Schemas';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { FormOfflineServiceTypePicker } from 'app/components/Forms/FormOfflineServiceTypePicker';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\nimport { FormInventoryBatchPicker } from 'app/components/Forms/FormInventoryBatchPicker';\r\nimport { FormLabelText } from 'app/components/Forms/FormLabelText';\r\nimport { Box } from '@material-ui/core';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { BatchesByServiceTypeFilter } from 'app/components/pickers/AutocompletePickers/InventoryBatchesPicker';\r\nimport { FormBookitDateTimePicker } from 'app/components/Forms/FormBookitDateTimePicker';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\n\r\nexport interface RenewStockFormProps {\r\n onSubmit: (item: RenewStockState) => void;\r\n initialValues: RenewStockState;\r\n processing?: boolean;\r\n bindSubmitForm: any;\r\n isAdmin: boolean;\r\n user?: AuthenticatedUser;\r\n innerFormRef: React.RefObject>;\r\n globalSettings: GlobalSettingsType;\r\n isEdit: boolean;\r\n editCreatable?: boolean;\r\n onBatchClick: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n}\r\n\r\nexport const RenewStockForm = React.memo(function RenewStockForm({\r\n onSubmit,\r\n processing,\r\n initialValues,\r\n bindSubmitForm,\r\n isAdmin,\r\n user,\r\n globalSettings,\r\n innerFormRef,\r\n isEdit,\r\n editCreatable,\r\n onBatchClick,\r\n}: RenewStockFormProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n\r\n const fieldHandler = useSelector(selectRenewStockValueHandler);\r\n const hasError = useSelector(selectRenewStockHasErrors);\r\n const batchRequested = useSelector(selectInventoryBatchEditable);\r\n const { newDate } = useSystemDate();\r\n const [submitting, setSubmitting] = React.useState(\r\n undefined,\r\n );\r\n const resetSubmitting = () => {\r\n setSubmitting(true);\r\n };\r\n const handleSubmit = (values: RenewStockState) => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(values);\r\n }\r\n };\r\n const resetFieldHandler = () => {\r\n dispatch(actions.resetRenewStockValueHandler());\r\n };\r\n\r\n /// Local State ///\r\n const [serviceChanged, setServiceChanged] = React.useState(false);\r\n const [batchChanged, setBatchChanged] = React.useState(false);\r\n\r\n const [serviceTypeSelected, setServiceTypeSelected] = useAsyncExtendedState<\r\n IOfflineServiceFilterDto | undefined\r\n >(initialValues.ServiceType ?? undefined);\r\n const minStep = React.useMemo(() => {\r\n return !!serviceTypeSelected\r\n ? serviceTypeSelected.IntQuantityOnly === true\r\n ? 1\r\n : 0.01\r\n : 1;\r\n }, [serviceTypeSelected]);\r\n const step = React.useMemo(() => {\r\n return !!serviceTypeSelected\r\n ? serviceTypeSelected.IntQuantityOnly === true\r\n ? 1\r\n : 0.01\r\n : 1;\r\n }, [serviceTypeSelected]);\r\n\r\n const maxStep = 9999;\r\n const inputProps = {\r\n step: step,\r\n min: minStep,\r\n max: maxStep,\r\n 'aria-label': 'Counter',\r\n };\r\n const handleFormChange = React.useCallback(\r\n (values: RenewStockState) => {\r\n if (serviceChanged) {\r\n setServiceTypeSelected(values.ServiceType ?? undefined);\r\n setServiceChanged(false);\r\n }\r\n if (batchChanged) {\r\n setBatchChanged(false);\r\n }\r\n },\r\n [batchChanged, serviceChanged, setServiceTypeSelected],\r\n );\r\n\r\n // useEffects\r\n React.useEffect(() => {\r\n if (innerFormRef.current) {\r\n innerFormRef.current.validateForm();\r\n }\r\n }, [innerFormRef]);\r\n React.useEffect(() => {\r\n if (batchRequested !== undefined) {\r\n dispatch(\r\n actions.setRenewStockValue({\r\n fieldKey: 'InventoryBatch',\r\n fieldValue: batchRequested,\r\n }),\r\n );\r\n dispatch(actions.setInventoryBatchEditable(undefined));\r\n }\r\n }, [actions, batchRequested, dispatch]);\r\n\r\n const computedSchema = React.useMemo(() => {\r\n const renewStockSchema: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().notRequired().default(-1),\r\n ServiceType: ServiceTypeSchema.nullable().required(\r\n t(translations.err_OfflineServiceTypeRequired),\r\n ),\r\n Quantity: Yup.number()\r\n .label(t(translations.Quantity) as string)\r\n .required(t(translations.err_Quantity_required))\r\n .nullable()\r\n .default(null)\r\n .max(maxStep)\r\n .min(minStep)\r\n .test(\r\n 'empty',\r\n t(translations.err_Quantity_required) as string,\r\n (value, context) => {\r\n let currVal = (context as any).from[0].value.Quantity;\r\n if (\r\n currVal === undefined ||\r\n currVal === null ||\r\n isNaN(currVal) ||\r\n currVal === 0\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n )\r\n .test(\r\n 'integerOnly',\r\n t(translations.err_IntQuantityOnly) as string,\r\n (value, context) => {\r\n let currVal = (context as any).from[0].value.Quantity;\r\n if (\r\n !!serviceTypeSelected &&\r\n serviceTypeSelected.IntQuantityOnly &&\r\n currVal % 1 !== 0\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n ),\r\n DateReceived: Yup.date()\r\n .default(newDate())\r\n .label(t(translations.DateReceived) as string)\r\n .required(t(translations.err_DateReceived_required) as string),\r\n Remarks: Yup.string()\r\n .nullable()\r\n .label(t(translations.Remarks) as string),\r\n InventoryBatch: (Yup.mixed() as Yup.SchemaOf)\r\n .nullable()\r\n .label(t(translations.Batch) as string),\r\n });\r\n if (!!serviceTypeSelected && serviceTypeSelected.TrackInventory) {\r\n if (serviceTypeSelected?.NotLessThanZero) {\r\n if (serviceTypeSelected.Inventory === 0) {\r\n renewStockSchema.fields.Quantity.withMutation(schema =>\r\n schema\r\n .label(t(translations.Quantity) as string)\r\n .required(t(translations.err_Quantity_required))\r\n .default(null)\r\n .nullable()\r\n .max(maxStep)\r\n .min(minStep)\r\n .test(\r\n 'empty',\r\n t(translations.err_Quantity_required) as string,\r\n (value, context) => {\r\n let currVal = context.from[0].value.Quantity;\r\n if (\r\n currVal === undefined ||\r\n currVal === null ||\r\n isNaN(currVal) ||\r\n currVal === 0\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n )\r\n .test(\r\n 'minQuantWithZero',\r\n t(\r\n translations.NotAllowNegativeInventory_currentEqualsZero_err,\r\n ) as string,\r\n (value, context) => {\r\n let currVal = context.from[0].value.Quantity;\r\n let current = currVal as number;\r\n if (current < 1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n ),\r\n );\r\n } else {\r\n renewStockSchema.fields.Quantity.withMutation(schema =>\r\n schema\r\n .label(t(translations.Quantity) as string)\r\n .required(t(translations.err_Quantity_required))\r\n .max(maxStep)\r\n .min(minStep)\r\n .test(\r\n 'empty',\r\n t(translations.err_Quantity_required) as string,\r\n (value, context) => {\r\n let currVal = context.from[0].value.Quantity;\r\n if (\r\n currVal === undefined ||\r\n currVal === null ||\r\n isNaN(currVal) ||\r\n currVal === 0\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n )\r\n .test(\r\n 'minQuant',\r\n (\r\n t(\r\n translations.NotAllowNegativeInventory_currentMoreThanZero_err,\r\n ) as string\r\n ).replace('{0}', serviceTypeSelected.Inventory.toString()),\r\n (value, context) => {\r\n let currVal = context.from[0].value.Quantity;\r\n let current = currVal as number;\r\n if (serviceTypeSelected.Inventory - current < 0) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n ),\r\n );\r\n }\r\n }\r\n if (serviceTypeSelected?.InventoryBatchesEnabled) {\r\n renewStockSchema.fields.InventoryBatch.withMutation(schema =>\r\n schema\r\n .label(t(translations.Batch) as string)\r\n .nullable()\r\n .required(t(translations.err_InventoryBatch_required) as string),\r\n );\r\n }\r\n }\r\n return renewStockSchema;\r\n }, [minStep, newDate, serviceTypeSelected, t]);\r\n\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n\r\n formikHelpers.validateForm(values).then(responseErrors => {\r\n if (!isEmpty(responseErrors)) {\r\n formikHelpers.setSubmitting(false);\r\n console.debug('errors', responseErrors);\r\n } else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }\r\n });\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formik.errors) {\r\n console.log('Consumables errors', formik.errors);\r\n }\r\n console.log('Consumables submitting', formik.isSubmitting);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {editCreatable ? (\r\n \r\n \r\n {formik.values.ServiceType !== undefined &&\r\n formik.values.ServiceType !== null\r\n ? formik.values.ServiceType.Name\r\n : (t(translations.NA) as string)}\r\n \r\n }\r\n />\r\n \r\n ) : (\r\n \r\n {\r\n setServiceChanged(true);\r\n }}\r\n />\r\n \r\n )}\r\n \r\n \r\n {serviceTypeSelected?.UnitTypeName}\r\n \r\n }\r\n onChange={event => {\r\n const precision =\r\n formik.values.ServiceType?.IntQuantityOnly === false\r\n ? 2\r\n : 0;\r\n const value = +(+event.target.value).toFixed(\r\n precision,\r\n );\r\n console.log('qyt', value);\r\n }}\r\n inputProps={inputProps}\r\n />\r\n \r\n \r\n \r\n \r\n {!!serviceTypeSelected &&\r\n serviceTypeSelected?.InventoryBatchesEnabled && (\r\n \r\n \r\n {\r\n setBatchChanged(true);\r\n }}\r\n predicates={BatchesByServiceTypeFilter(\r\n serviceTypeSelected.Id,\r\n )}\r\n />\r\n \r\n {formik.values.ServiceType !== null &&\r\n formik.values.ServiceType !== undefined && (\r\n \r\n \r\n onBatchClick(\r\n null,\r\n formik.values.ServiceType?.Id ?? 0,\r\n )\r\n }\r\n >\r\n {t(translations.AddNewBatch)}\r\n \r\n {formik.values.InventoryBatch !== null &&\r\n formik.values.InventoryBatch !==\r\n undefined && (\r\n \r\n onBatchClick(\r\n formik.values.InventoryBatch ?? null,\r\n formik.values.ServiceType?.Id ?? 0,\r\n )\r\n }\r\n >\r\n {t(translations.EditSelectedBatch)}\r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n RenderPageType,\r\n SidePanelContentProps,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { push } from 'connected-react-router';\r\nimport { FormikProps } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport {\r\n selectIsEdit,\r\n selectRenewStockCompleted,\r\n selectRenewStockData,\r\n selectRenewStockHasErrors,\r\n selectRenewStockProcessing,\r\n} from '../Details/slice/selectors';\r\nimport { RenewStockParams, RenewStockState } from '../Details/slice/types';\r\nimport useGlobalSettingsHook from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport { RenewStockForm } from './RenewStockForm';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\n\r\nexport interface RenewStockProps extends CoverProps, SidePanelContentProps {\r\n queryParams: RenewStockParams;\r\n initialService?: IOtherServices;\r\n editCreatable?: boolean;\r\n saveCreatable?: boolean;\r\n preventRefreshTable?: boolean;\r\n onClose?: () => void;\r\n}\r\nexport const RenewStock = React.memo(function RenewStock(\r\n props: RenewStockProps,\r\n) {\r\n const {\r\n useSidePanel,\r\n queryParams,\r\n initialService,\r\n editCreatable,\r\n preventRefreshTable,\r\n saveCreatable,\r\n isCover,\r\n onClose,\r\n closeCover,\r\n } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const processing = useSelector(selectRenewStockProcessing);\r\n const actionCompleted = useSelector(selectRenewStockCompleted);\r\n const User = useSelector(selectAuthenticatedUser);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const hasError = useSelector(selectRenewStockHasErrors);\r\n const renewStockData = useSelector(selectRenewStockData);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const isEdit = useSelector(selectIsEdit);\r\n // const { checkIsMobile } = useIsMobile();\r\n // const mobile = checkIsMobile();\r\n const globalSettings = useGlobalSettingsHook();\r\n //Local State\r\n // const [cover, setCover] = React.useState();\r\n const { cover, openPanel, closePanel, coverClosed, onCloseCover } =\r\n useSidePanelState(\r\n () => {\r\n dispatch(actions.resetRenewStockState());\r\n if (!!onClose) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n undefined,\r\n useSidePanel,\r\n isCover,\r\n );\r\n const [busy, setBusy] = React.useState(false);\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n const [requestCompleted, setRequestCompleted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n\r\n //Refs\r\n const submitFormRef = React.useRef(null);\r\n const innerFormRef = React.useRef>(null);\r\n\r\n const isReadOnlyUser = React.useMemo(() => {\r\n return (\r\n User !== undefined &&\r\n (User.Roles.includes(Roles.CalendarOnly) ||\r\n User.Roles.includes(Roles.Readonly) ||\r\n User.Roles.includes(Roles.RoomOnly))\r\n );\r\n }, [User]);\r\n\r\n //Methods\r\n // const closeCover = () => {\r\n // setCover(undefined);\r\n // };\r\n // const handleClose = () => {\r\n // if (hasChanges) {\r\n // dispatch(layoutActions.setConfirmOpen(true));\r\n // } else {\r\n // handleCloselClick();\r\n // }\r\n // };\r\n const handleCloselClick = React.useCallback(() => {\r\n if (useSidePanel) {\r\n if (!!onClose) {\r\n onClose();\r\n dispatch(actions.resetRenewStockState());\r\n } else {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n onClose: () => {\r\n dispatch(actions.resetRenewStockState());\r\n },\r\n } as SidePanelCloseState);\r\n }\r\n } else {\r\n dispatch(push('/otherServices'));\r\n }\r\n\r\n // if (!!onClose) {\r\n // onClose();\r\n // } else {\r\n // if (useSidePanel) {\r\n // dispatch(layoutActions.resetSidePanel());\r\n // } else {\r\n // dispatch(push('/otherServices'));\r\n // }\r\n // }\r\n // dispatch(actions.resetRenewStockState());\r\n }, [\r\n actions,\r\n closePanel,\r\n dispatch,\r\n hasChanges,\r\n isCover,\r\n onClose,\r\n useSidePanel,\r\n ]);\r\n const handleSaveClick = React.useCallback((e: any) => {\r\n handleSubmitForm(e);\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: RenewStockState) => {\r\n setBusy(true);\r\n if (isEdit) {\r\n dispatch(\r\n actions.updateRenewStock({\r\n current: values,\r\n original: renewStockData || values,\r\n editCreatable: editCreatable ?? false,\r\n autoGenerateBatch: initialService?.AutoGenerateNewBatches,\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n actions.createRenewStock({\r\n model: values,\r\n editCreatable: editCreatable ?? false,\r\n preventRefreshTable: preventRefreshTable,\r\n autoGenerateBatch: initialService?.AutoGenerateNewBatches,\r\n saveCreatable: saveCreatable,\r\n }),\r\n );\r\n }\r\n },\r\n [\r\n actions,\r\n dispatch,\r\n editCreatable,\r\n initialService?.AutoGenerateNewBatches,\r\n isEdit,\r\n preventRefreshTable,\r\n renewStockData,\r\n saveCreatable,\r\n ],\r\n );\r\n\r\n React.useEffect(() => {\r\n let active = firstLoad;\r\n if (globalSettings.loadCompleted && active) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.initRenewStock({\r\n query: queryParams,\r\n service: initialService,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n dispatch,\r\n firstLoad,\r\n globalSettings,\r\n initialService,\r\n queryParams,\r\n ]);\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n if (actionCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n if (!hasError) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n handleCloselClick();\r\n }\r\n } else if (actionCompleted === false) {\r\n setRequestCompleted(undefined);\r\n setBusy(false);\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actionCompleted,\r\n dispatch,\r\n handleCloselClick,\r\n hasError,\r\n layoutActions,\r\n processing,\r\n ]);\r\n const onBatchClick = React.useCallback(\r\n (batch: IInventoryBatchDto | null, serviceType: number) => {\r\n let batchProps = {\r\n initialBatch:\r\n batch?.OfflineServiceTypeId === undefined ? undefined : batch,\r\n queryParams: {\r\n id: '' + (batch?.Id ?? -1),\r\n stid: '' + serviceType,\r\n },\r\n saveCreatable: true,\r\n useSidePanel: true,\r\n };\r\n openPanel({\r\n renderPageType: RenderPageType.InventoryBatch,\r\n renderPageProps: batchProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [openPanel, useSidePanel],\r\n );\r\n // React.useEffect(() => {\r\n // if (confirmApproved) {\r\n // dispatch(actions.resetRenewStockState());\r\n // if (continueToOther.continueOnApprove) {\r\n // dispatch(layoutActions.resetSidePanel());\r\n // setTimeout(() => {\r\n // dispatch(\r\n // layoutActions.openSidePanel({\r\n // type: continueToOther.pageType,\r\n // props: continueToOther.pageProps,\r\n // expanded: continueToOther.expanded,\r\n // }),\r\n // );\r\n // dispatch(layoutActions.resetContinueState());\r\n // }, 200);\r\n // } else if (continueLink !== undefined) {\r\n // dispatch(appSettingsActions.navigate(continueLink));\r\n // dispatch(layoutActions.resetSidePanel());\r\n // } else {\r\n // dispatch(layoutActions.resetSidePanel());\r\n // }\r\n // //dispatch(actions.setChangedState(false));\r\n // }\r\n // if (confirmRejected) {\r\n // dispatch(layoutActions.resetConfirmState());\r\n // }\r\n\r\n // return () => undefined;\r\n // }, [\r\n // actions,\r\n // appSettingsActions,\r\n // confirmApproved,\r\n // confirmRejected,\r\n // continueLink,\r\n // continueToOther,\r\n // dispatch,\r\n // layoutActions,\r\n // ]);\r\n\r\n //memo\r\n const IsAdmin = React.useMemo(() => {\r\n return !!innerFormRef.current &&\r\n innerFormRef.current.values.ServiceType !== null\r\n ? User?.IsAllGroupOrLabTechAdmin(\r\n [innerFormRef.current.values.ServiceType.ServiceGroupId],\r\n [\r\n {\r\n Id: innerFormRef.current.values.ServiceType.Id,\r\n Name: innerFormRef.current.values.ServiceType.Name,\r\n ServiceTypeId: ServiceType.Offline,\r\n } as IServiceTypeFilterDto,\r\n ],\r\n )\r\n : false;\r\n }, [User]);\r\n const rightActions = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n actions.push(() => (\r\n }\r\n onClick={handleSaveClick}\r\n disabled={\r\n busy ||\r\n !(\r\n !!innerFormRef.current &&\r\n (innerFormRef.current.values.ServiceType ?? null) !== null\r\n )\r\n }\r\n processing={!requestCompleted && busy}\r\n >\r\n {t(translations.Save)}\r\n \r\n ));\r\n actions.push(() => (\r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Close)}\r\n \r\n ));\r\n return actions;\r\n }, [busy, handleCloselClick, handleSaveClick, requestCompleted, t]);\r\n\r\n return (\r\n \r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n pageLink={buildURL(publicUrl + '/renwestock', queryParams)}\r\n toPageLink={`renwestock?${toQueryString(queryParams)}`}\r\n isCover={isCover}\r\n cover={cover}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n coverClosed={coverClosed}\r\n />\r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n});\r\n","import { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { Formik, FormikProps } from 'formik';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { InventoryBatchState } from '../Details/slice/types';\r\nimport React from 'react';\r\nimport * as Yup from 'yup';\r\nimport { translations } from 'locales/translations';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\n\r\nimport {\r\n selectInventoryBatchHasErrors,\r\n selectInventoryBatchValueHandler,\r\n} from '../Details/slice/selectors';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport { isEmpty } from 'lodash';\r\nimport {\r\n FieldHandler,\r\n FormListener,\r\n SubmittingHandler,\r\n} from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { InventoryBatchRelatedFilter } from 'app/components/pickers/AutocompletePickers/OfflineServiceTypePicker';\r\nimport { ServiceTypeSchema } from 'app/components/Forms/Schemas';\r\nimport { FormOfflineServiceTypePicker } from 'app/components/Forms/FormOfflineServiceTypePicker';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { FormBookitDatePicker } from 'app/components/Forms/FormBookitDatePicker';\r\n\r\nexport interface InventoryBatchFormProps {\r\n onSubmit: (item: InventoryBatchState) => void;\r\n initialValues: InventoryBatchState;\r\n processing?: boolean;\r\n bindSubmitForm: any;\r\n isAdmin: boolean;\r\n user?: AuthenticatedUser;\r\n innerFormRef: React.RefObject>;\r\n globalSettings: GlobalSettingsType;\r\n isEdit: boolean;\r\n}\r\n\r\nexport const InventoryBatchForm = React.memo(function InventoryBatchForm({\r\n onSubmit,\r\n processing,\r\n initialValues,\r\n bindSubmitForm,\r\n isAdmin,\r\n user,\r\n globalSettings,\r\n innerFormRef,\r\n isEdit,\r\n}: InventoryBatchFormProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n\r\n const fieldHandler = useSelector(selectInventoryBatchValueHandler);\r\n const hasError = useSelector(selectInventoryBatchHasErrors);\r\n const { newDate } = useSystemDate();\r\n // const readonly = !isAdmin;\r\n const [submitting, setSubmitting] = React.useState(\r\n undefined,\r\n );\r\n const resetSubmitting = () => {\r\n setSubmitting(true);\r\n };\r\n const handleSubmit = (values: InventoryBatchState) => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(values);\r\n }\r\n };\r\n const resetFieldHandler = () => {\r\n dispatch(actions.resetInventoryBatchValueHandler());\r\n };\r\n\r\n /// Local State ///\r\n const [serviceChanged, setServiceChanged] = React.useState(false);\r\n const [batchChanged, setBatchChanged] = React.useState(false);\r\n\r\n const [serviceTypeSelected, setServiceTypeSelected] = useAsyncExtendedState<\r\n IOfflineServiceFilterDto | undefined\r\n >(initialValues.ServiceType ?? undefined);\r\n const minStep = React.useMemo(() => {\r\n return !!serviceTypeSelected\r\n ? serviceTypeSelected.NotLessThanZero === true\r\n ? 0\r\n : -9999\r\n : -9999;\r\n }, [serviceTypeSelected]);\r\n const maxStep = 9999;\r\n const inputProps = {\r\n step: 1,\r\n min: minStep,\r\n max: maxStep,\r\n 'aria-label': 'Inventory',\r\n };\r\n\r\n // const IsAdmin = React.useCallback(\r\n // (service: IOfflineServiceFilterDto) => {\r\n // return user?.IsAllGroupOrLabTechAdmin(\r\n // [service.ServiceGroupId ?? 0],\r\n // [\r\n // {\r\n // Id: service.Id,\r\n // Name: service.Name,\r\n // ServiceTypeId: ServiceType.Offline,\r\n // } as IServiceTypeFilterDto,\r\n // ],\r\n // );\r\n // },\r\n // [user],\r\n // );\r\n\r\n const handleFormChange = React.useCallback(\r\n (values: InventoryBatchState) => {\r\n if (serviceChanged) {\r\n setServiceTypeSelected(values.ServiceType ?? undefined);\r\n setServiceChanged(false);\r\n }\r\n if (batchChanged) {\r\n setBatchChanged(false);\r\n }\r\n },\r\n [batchChanged, serviceChanged, setServiceTypeSelected],\r\n );\r\n\r\n // useEffects\r\n React.useEffect(() => {\r\n if (innerFormRef.current) {\r\n innerFormRef.current.validateForm();\r\n }\r\n }, [innerFormRef]);\r\n\r\n const computedSchema = React.useMemo(() => {\r\n const inventoryBatchSchema: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().notRequired().default(-1),\r\n Name: Yup.string()\r\n .label(t(translations.BatchName) as string)\r\n .required(t(translations.err_BatchName_required) as string),\r\n ServiceType: ServiceTypeSchema.nullable().required(\r\n t(translations.err_OfflineServiceTypeRequired),\r\n ),\r\n ExpirationDate: Yup.date()\r\n .label(t(translations.BatchExpirationDate) as string)\r\n .nullable()\r\n .default(null),\r\n PurchaseDate: Yup.date()\r\n .default(newDate())\r\n .label(t(translations.BatchPurchaseDate) as string)\r\n .required(t(translations.err_BatchPurchaseDate_required) as string),\r\n Inventory: Yup.number()\r\n .label(t(translations.BatchInventory) as string)\r\n .required(t(translations.err_BatchInventory_required) as string)\r\n .max(maxStep)\r\n .min(minStep)\r\n .default(0)\r\n .test(\r\n 'empty',\r\n t(translations.err_BatchInventory_required) as string,\r\n (value, context) => {\r\n let currVal = (context as any).from[0].value.Inventory;\r\n if (currVal === undefined || currVal === null || isNaN(currVal)) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n ),\r\n Lot: Yup.string()\r\n .nullable()\r\n .label(t(translations.BatchLot) as string),\r\n PurchasePricePerUnit: Yup.number()\r\n .label(t(translations.BatchPurchasePricePerUnit) as string)\r\n .nullable(true)\r\n .default(null),\r\n });\r\n\r\n if (!!serviceTypeSelected && serviceTypeSelected.TrackInventory) {\r\n if (serviceTypeSelected?.NotLessThanZero) {\r\n inventoryBatchSchema.fields.Inventory.withMutation(schema =>\r\n schema\r\n .label(t(translations.BatchInventory) as string)\r\n .required(t(translations.err_BatchInventory_required))\r\n .max(maxStep)\r\n .min(minStep)\r\n .default(0)\r\n .test(\r\n 'empty',\r\n t(translations.err_BatchInventory_required) as string,\r\n (value, context) => {\r\n let currVal = context.from[0].value.Inventory;\r\n if (\r\n currVal === undefined ||\r\n currVal === null ||\r\n isNaN(currVal)\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n )\r\n .test(\r\n 'noLessThanZero',\r\n t(translations.NotAllowNegativeInventory_err) as string,\r\n (value, context) => {\r\n let currVal = context.from[0].value.Inventory;\r\n if (\r\n currVal === undefined ||\r\n currVal === null ||\r\n isNaN(currVal) ||\r\n currVal >= 0\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n ),\r\n );\r\n }\r\n }\r\n return inventoryBatchSchema;\r\n }, [minStep, newDate, serviceTypeSelected, t]);\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n formikHelpers.validateForm(values).then(responseErrors => {\r\n if (!isEmpty(responseErrors)) {\r\n formikHelpers.setSubmitting(false);\r\n console.debug('errors', responseErrors);\r\n } else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }\r\n });\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formik.errors) {\r\n console.log('Consumables errors', formik.errors);\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setServiceChanged(true);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n const value = +(+event.target.value).toFixed(0);\r\n console.log('qyt', value);\r\n }}\r\n inputProps={inputProps}\r\n />\r\n \r\n \r\n {\r\n const value = +(+event.target.value).toFixed(2);\r\n console.log('qyt', value);\r\n }}\r\n inputProps={{\r\n step: 1,\r\n min: 0,\r\n 'aria-label': 'PurchasePricePerUnit',\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { push } from 'connected-react-router';\r\nimport { FormikProps } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport {\r\n selectInventoryBatchCompleted,\r\n selectInventoryBatchData,\r\n selectInventoryBatchHasErrors,\r\n selectInventoryBatchIsEdit,\r\n selectInventoryBatchProcessing,\r\n} from '../Details/slice/selectors';\r\nimport {\r\n InventoryBatchParams,\r\n InventoryBatchState,\r\n} from '../Details/slice/types';\r\nimport useGlobalSettingsHook from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { InventoryBatchForm } from './InventoryBatchForm';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\n\r\nexport interface InventoryBatchProps extends CoverProps, SidePanelContentProps {\r\n queryParams: InventoryBatchParams;\r\n initialBatch?: IInventoryBatchDto;\r\n onClose?: () => void;\r\n saveCreatable?: boolean;\r\n preventRefreshTable?: boolean;\r\n}\r\nexport const InventoryBatch = React.memo(function InventoryBatch(\r\n props: InventoryBatchProps,\r\n) {\r\n const {\r\n useSidePanel,\r\n queryParams,\r\n initialBatch,\r\n saveCreatable,\r\n preventRefreshTable,\r\n closeCover,\r\n isCover,\r\n } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n const processing = useSelector(selectInventoryBatchProcessing);\r\n const actionCompleted = useSelector(selectInventoryBatchCompleted);\r\n const User = useSelector(selectAuthenticatedUser);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const hasError = useSelector(selectInventoryBatchHasErrors);\r\n const inventoryBatchData = useSelector(selectInventoryBatchData);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const isEdit = useSelector(selectInventoryBatchIsEdit);\r\n // const { checkIsMobile } = useIsMobile();\r\n // const mobile = checkIsMobile();\r\n const globalSettings = useGlobalSettingsHook();\r\n //Local State\r\n // const [cover, setCover] = React.useState();\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState(\r\n () => {\r\n dispatch(actions.resetInventoryBatchState());\r\n return true;\r\n },\r\n undefined,\r\n useSidePanel,\r\n isCover,\r\n );\r\n const [busy, setBusy] = React.useState(false);\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n const [requestCompleted, setRequestCompleted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n\r\n //Refs\r\n const submitFormRef = React.useRef(null);\r\n const innerFormRef = React.useRef>(null);\r\n\r\n const isReadOnlyUser = React.useMemo(() => {\r\n return (\r\n User !== undefined &&\r\n (User.Roles.includes(Roles.CalendarOnly) ||\r\n User.Roles.includes(Roles.Readonly) ||\r\n User.Roles.includes(Roles.RoomOnly))\r\n );\r\n }, [User]);\r\n\r\n //Methods\r\n // const closeCover = () => {\r\n // setCover(undefined);\r\n // };\r\n // const handleClose = () => {\r\n // if (hasChanges) {\r\n // dispatch(layoutActions.setConfirmOpen(true));\r\n // } else {\r\n // handleCloselClick();\r\n // }\r\n // };\r\n const handleCloselClick = React.useCallback(() => {\r\n // if (!!onClose) {\r\n // onClose();\r\n // } else {\r\n // if (useSidePanel) {\r\n // dispatch(layoutActions.resetSidePanel());\r\n // } else {\r\n // dispatch(push('/otherServices'));\r\n // }\r\n // }\r\n if (useSidePanel) {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n onClose: () => {\r\n dispatch(actions.resetInventoryBatchState());\r\n },\r\n } as SidePanelCloseState);\r\n } else {\r\n dispatch(push('/otherServices'));\r\n }\r\n }, [actions, closePanel, dispatch, hasChanges, isCover, useSidePanel]);\r\n const handleSaveClick = React.useCallback((e: any) => {\r\n handleSubmitForm(e);\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: InventoryBatchState) => {\r\n setBusy(true);\r\n if (isEdit) {\r\n dispatch(\r\n actions.updateInventoryBatch({\r\n current: values,\r\n original: inventoryBatchData || values,\r\n saveCreatable: saveCreatable,\r\n preventRefreshTable: preventRefreshTable,\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n actions.createInventoryBatch({\r\n model: values,\r\n saveCreatable: saveCreatable,\r\n preventRefreshTable: preventRefreshTable,\r\n }),\r\n );\r\n }\r\n },\r\n [\r\n actions,\r\n dispatch,\r\n inventoryBatchData,\r\n isEdit,\r\n preventRefreshTable,\r\n saveCreatable,\r\n ],\r\n );\r\n\r\n React.useEffect(() => {\r\n let active = firstLoad;\r\n if (globalSettings.loadCompleted && active) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.initInventoryBatch({\r\n query: queryParams,\r\n batch: initialBatch,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [actions, dispatch, firstLoad, globalSettings, initialBatch, queryParams]);\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n if (actionCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n if (!hasError) {\r\n handleCloselClick();\r\n }\r\n } else if (actionCompleted === false) {\r\n setRequestCompleted(undefined);\r\n setBusy(false);\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [actionCompleted, handleCloselClick, hasError, processing]);\r\n // React.useEffect(() => {\r\n // if (confirmApproved) {\r\n // dispatch(actions.resetInventoryBatchState());\r\n // if (continueToOther.continueOnApprove) {\r\n // dispatch(layoutActions.resetSidePanel());\r\n // setTimeout(() => {\r\n // dispatch(\r\n // layoutActions.openSidePanel({\r\n // type: continueToOther.pageType,\r\n // props: continueToOther.pageProps,\r\n // expanded: continueToOther.expanded,\r\n // }),\r\n // );\r\n // dispatch(layoutActions.resetContinueState());\r\n // }, 200);\r\n // } else if (continueLink !== undefined) {\r\n // dispatch(appSettingsActions.navigate(continueLink));\r\n // dispatch(layoutActions.resetSidePanel());\r\n // } else {\r\n // dispatch(layoutActions.resetSidePanel());\r\n // }\r\n // //dispatch(actions.setChangedState(false));\r\n // }\r\n // if (confirmRejected) {\r\n // dispatch(layoutActions.resetConfirmState());\r\n // }\r\n\r\n // return () => undefined;\r\n // }, [\r\n // actions,\r\n // appSettingsActions,\r\n // confirmApproved,\r\n // confirmRejected,\r\n // continueLink,\r\n // continueToOther,\r\n // dispatch,\r\n // layoutActions,\r\n // ]);\r\n\r\n //memo\r\n const IsAdmin = React.useMemo(() => {\r\n return !!innerFormRef.current &&\r\n innerFormRef.current.values.ServiceType !== null\r\n ? User?.IsAllGroupOrLabTechAdmin(\r\n [innerFormRef.current.values.ServiceType.ServiceGroupId],\r\n [\r\n {\r\n Id: innerFormRef.current.values.ServiceType.Id,\r\n Name: innerFormRef.current.values.ServiceType.Name,\r\n ServiceTypeId: ServiceType.Offline,\r\n } as IServiceTypeFilterDto,\r\n ],\r\n )\r\n : false;\r\n }, [User]);\r\n const rightActions = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n actions.push(() => (\r\n }\r\n onClick={handleSaveClick}\r\n disabled={\r\n busy ||\r\n !(\r\n !!innerFormRef.current &&\r\n (innerFormRef.current.values.ServiceType ?? null) !== null\r\n )\r\n }\r\n processing={!requestCompleted && busy}\r\n >\r\n {t(translations.Save)}\r\n \r\n ));\r\n actions.push(() => (\r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Close)}\r\n \r\n ));\r\n return actions;\r\n }, [busy, handleCloselClick, handleSaveClick, requestCompleted, t]);\r\n\r\n return (\r\n \r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n pageLink={buildURL(publicUrl + '/inventoryBatch', queryParams)}\r\n toPageLink={`inventoryBatch?${toQueryString(queryParams)}`}\r\n isCover={isCover}\r\n cover={cover}\r\n coverClosed={coverClosed}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n />\r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n});\r\n","/**\r\n *\r\n * ArticleAssociationForm\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport * as Yup from 'yup';\r\nimport {\r\n selectArticleDetails,\r\n selectArticleDetailsForm,\r\n selectArticles,\r\n selectEditArticleAssociationBusy,\r\n} from '../slice/selectors';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { Formik } from 'formik';\r\nimport {\r\n FormFieldsSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormAssetsPicker } from 'app/components/Forms/FormAssetsPicker';\r\nimport { useArticlesSlice } from '../slice';\r\nimport { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { FormUserPicker } from 'app/components/Forms/FormUserPicker';\r\nimport { FormAssetPicker } from 'app/components/Forms/FormAssetPicker';\r\nimport { FormListener } from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { GetCalibrationRecordFilter, GetInstrumentFilter } from '../utils';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { useAllowedToChangeStatus } from '../Hooks/useAllowedToChangeStatus';\r\nimport { ArticleStatus } from 'enums/Article';\r\nimport { ArticleComments } from '../ArticleComments';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { ArticleFormPicker } from '../ArticleFormPickers';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\n\r\nexport interface ArticleAssociationFormProps\r\n extends SidePanelContentProps,\r\n CoverProps {}\r\nexport interface IArticleAssociationForm {\r\n RelatedUser: Entity | null;\r\n ServiceGroupAsset: IAssetDto | null;\r\n //ServiceGroupAssets: Array;\r\n InstrumentAssets: Array;\r\n CalibrationRecord: Entity | null;\r\n PageNumber?: number | null;\r\n}\r\n\r\nconst assetSchema = Yup.mixed();\r\nconst assetsSchema = Yup.array().of(Yup.mixed() as Yup.SchemaOf);\r\n\r\nexport function ArticleAssociationForm(props: ArticleAssociationFormProps) {\r\n const { useSidePanel = true, closeCover, isCover } = props;\r\n const { t } = useTranslation();\r\n const state = useSelector(selectArticles);\r\n const articleDetails = useSelector(selectArticleDetails);\r\n const articleDetailsForm = useSelector(selectArticleDetailsForm);\r\n const user = useSelector(selectAuthenticatedUser);\r\n const editProcessing = useSelector(selectEditArticleAssociationBusy);\r\n const allowedToChangeStatus = useAllowedToChangeStatus();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const [canEditStatus, setCanEditStatus] = React.useState(false);\r\n const submitCommentRef = React.useRef(null);\r\n const dispatch = useDispatch();\r\n const { actions } = useArticlesSlice();\r\n const schema: Yup.SchemaOf = Yup.object().shape(\r\n {\r\n CalibrationRecord: Yup.mixed().nullable().notRequired(),\r\n RelatedUser: Yup.mixed().nullable().notRequired(),\r\n //ServiceGroupAssets: assetsSchema.required(),\r\n /*ServiceGroupAsset: assetSchema.nullable().required(),\r\n InstrumentAssets: assetsSchema.required(),*/\r\n ServiceGroupAsset: assetSchema.when(['InstrumentAssets'], {\r\n is: v => (v === undefined ? true : v.length === 0),\r\n then: assetSchema.required().nullable(),\r\n otherwise: assetSchema.nullable().notRequired(),\r\n }),\r\n InstrumentAssets: assetsSchema.when(['ServiceGroupAsset'], {\r\n is: v => v === null,\r\n then: assetsSchema.required().min(1),\r\n otherwise: assetsSchema.notRequired(),\r\n }),\r\n PageNumber: Yup.number().nullable().default(null),\r\n },\r\n [['ServiceGroupAsset', 'InstrumentAssets']],\r\n );\r\n const GetServiceGroupAsset = React.useCallback(asset => {\r\n /*if (asset !== undefined && asset !== null) {\r\n return asset.ServiceGroupId !== null &&\r\n asset.ServiceGroupId !== undefined &&\r\n (authenticatedUser?.HasAdminGroupOnlyPermissions(\r\n asset.ServiceGroupId,\r\n ) ||\r\n authenticatedUser?.HasLabTechGroupPermissions(asset.ServiceGroupId))\r\n ? asset\r\n : null;\r\n } else {\r\n return null;\r\n }*/\r\n return asset;\r\n }, []);\r\n const initialValues: IArticleAssociationForm = React.useMemo(\r\n () => ({\r\n CalibrationRecord: {\r\n Id: articleDetails?.CalibrationRecord,\r\n Name: !!articleDetails?.CalibrationRecord\r\n ? '#' +\r\n articleDetails?.CalibrationRecord?.toString() +\r\n ': ' +\r\n articleDetails?.CalibrationRecordName\r\n : '',\r\n } as Entity,\r\n RelatedUser: {\r\n Id: articleDetails?.RelatedUser,\r\n Name: articleDetails?.RelatedUserDisplayName,\r\n } as Entity,\r\n PageNumber: articleDetails?.PageNumber,\r\n InstrumentAssets: articleDetailsForm?.InstrumentAssets,\r\n /*articleDetailsForm?.InstrumentAssets.filter(\r\n asset =>\r\n asset.ServiceId !== null &&\r\n asset.ServiceId !== undefined &&\r\n (authenticatedUser?.HasAdminServicePermissions(\r\n asset.ServiceTypeId ?? 1,\r\n asset.ServiceId,\r\n ) ||\r\n authenticatedUser?.HasLabTechServicePermissions(\r\n asset.ServiceTypeId ?? 1,\r\n asset.ServiceId,\r\n ) ||\r\n authenticatedUser?.HasAdminGroupPermissions(\r\n asset.ServiceGroupId ?? undefined,\r\n ) ||\r\n authenticatedUser?.HasLabTechGroupPermissions(\r\n asset.ServiceGroupId ?? undefined,\r\n )),\r\n ),*/\r\n /*ServiceGroupAssets: articleDetailsForm?.ServiceGroupAssets.filter(\r\n asset =>\r\n asset.ServiceGroupId !== null &&\r\n asset.ServiceGroupId !== undefined &&\r\n (authenticatedUser?.HasAdminGroupPermissions(asset.ServiceGroupId) ||\r\n authenticatedUser?.HasLabTechGroupPermissions(\r\n asset.ServiceGroupId,\r\n )),\r\n ),*/\r\n ServiceGroupAsset:\r\n articleDetailsForm !== undefined\r\n ? GetServiceGroupAsset(articleDetailsForm?.ServiceGroupAssets[0])\r\n : null,\r\n }),\r\n [\r\n GetServiceGroupAsset,\r\n articleDetails?.CalibrationRecord,\r\n articleDetails?.CalibrationRecordName,\r\n articleDetails?.PageNumber,\r\n articleDetails?.RelatedUser,\r\n articleDetails?.RelatedUserDisplayName,\r\n articleDetailsForm,\r\n ],\r\n );\r\n const [oldServiceGroups, setOldServiceGroups] = React.useState(\r\n //initialValues.ServiceGroupAssets,\r\n initialValues.ServiceGroupAsset === null\r\n ? []\r\n : [initialValues.ServiceGroupAsset],\r\n );\r\n const [serviceGroups, setServiceGroups] = React.useState(\r\n //initialValues.ServiceGroupAssets,\r\n initialValues.ServiceGroupAsset === null\r\n ? []\r\n : [initialValues.ServiceGroupAsset],\r\n );\r\n const [instruments, setInstruments] = React.useState(\r\n initialValues.InstrumentAssets,\r\n );\r\n\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState();\r\n\r\n const handleCloseClick = React.useCallback(() => {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: undefined,\r\n onClose: () => {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n dispatch(actions.resetArticleAssociationState());\r\n },\r\n } as SidePanelCloseState);\r\n }, [actions, closePanel, dispatch, isCover, layoutActions, useSidePanel]);\r\n\r\n React.useEffect(() => {\r\n if (editProcessing === false) {\r\n handleCloseClick();\r\n }\r\n return () => undefined;\r\n }, [editProcessing, handleCloseClick]);\r\n\r\n const instrumentFilter = React.useCallback(() => {\r\n return GetInstrumentFilter(serviceGroups);\r\n }, [serviceGroups]);\r\n const CalibrationRecordFilter = React.useCallback(() => {\r\n return GetCalibrationRecordFilter(instruments);\r\n }, [instruments]);\r\n const handleFormChange = React.useCallback(\r\n (\r\n values: IArticleAssociationForm,\r\n isValid,\r\n dirty,\r\n setValue,\r\n setTouched,\r\n validateField,\r\n setError,\r\n validate,\r\n ) => {\r\n if (\r\n serviceGroups.length !== oldServiceGroups.length ||\r\n serviceGroups[0] !== oldServiceGroups[0]\r\n ) {\r\n setOldServiceGroups(serviceGroups);\r\n setValue('InstrumentAssets', []);\r\n return;\r\n }\r\n if (\r\n values.ServiceGroupAsset === null &&\r\n values.InstrumentAssets.length > 0\r\n ) {\r\n setOldServiceGroups(serviceGroups);\r\n setValue('ServiceGroupAsset', {\r\n Id: values.InstrumentAssets[0].ServiceGroupAssetId,\r\n Name: values.InstrumentAssets[0].ServiceGroupName,\r\n ServiceGroupId: values.InstrumentAssets[0].ServiceGroupId,\r\n ServiceGroupName: values.InstrumentAssets[0].ServiceGroupName,\r\n });\r\n }\r\n setCanEditStatus(allowedToChangeStatus(serviceGroups[0]));\r\n },\r\n [allowedToChangeStatus, oldServiceGroups, serviceGroups],\r\n );\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: IArticleAssociationForm) => {\r\n if (articleDetails === undefined) {\r\n return;\r\n }\r\n const payload: IArticleDto = {\r\n ...articleDetails,\r\n ...{\r\n RelatedUser:\r\n values.RelatedUser !== null && !!values.RelatedUser\r\n ? values.RelatedUser?.Id\r\n : null,\r\n },\r\n ...{\r\n CalibrationRecord:\r\n values.CalibrationRecord !== null && !!values.CalibrationRecord\r\n ? values.CalibrationRecord?.Id\r\n : null,\r\n },\r\n ...{\r\n //Assets: values.ServiceGroupAssets.concat(values.InstrumentAssets),\r\n Assets:\r\n values.ServiceGroupAsset !== null && !!values.ServiceGroupAsset\r\n ? values.InstrumentAssets.concat([values.ServiceGroupAsset])\r\n : values.InstrumentAssets,\r\n },\r\n PageNumber:\r\n articleDetails?.ExternalIdSource === 'PubMed'\r\n ? values.PageNumber !== undefined\r\n ? values.PageNumber\r\n : null\r\n : articleDetails?.PageNumber,\r\n Status: allowedToChangeStatus(serviceGroups[0])\r\n ? ArticleStatus.Approved\r\n : ArticleStatus.AwaitingApproval,\r\n };\r\n dispatch(actions.saveArticleAssociation(payload));\r\n },\r\n [actions, allowedToChangeStatus, articleDetails, dispatch, serviceGroups],\r\n );\r\n const processing = state.editArticleAssociationBusy;\r\n\r\n return (\r\n \r\n \r\n {formik => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n ? t(translations.CalibrationRecord)\r\n : t(translations.ArticlePleaseSelectEquipmentFirst)\r\n }\r\n placeholder={\r\n instruments.length > 0\r\n ? t(translations.PleaseSelectWorkOrder)\r\n : t(translations.ArticlePleaseSelectEquipmentFirst)\r\n }\r\n disabled={\r\n formik.isSubmitting ||\r\n !canEditStatus ||\r\n instruments.length === 0\r\n }\r\n filter={CalibrationRecordFilter()}\r\n info={t(translations.CalibrationRecord_info)}\r\n fullWidth\r\n />\r\n \r\n {articleDetails?.ExternalIdSource === 'PubMed' && (\r\n \r\n \r\n \r\n )}\r\n \r\n setAssetChanged(true)}\r\n onChange={(value: any) => {\r\n setOldServiceGroups(serviceGroups);\r\n setServiceGroups([value]);\r\n }}\r\n fullWidth\r\n />\r\n \r\n \r\n setAssetChanged(true)}\r\n fullWidth\r\n withoutServiceGroups={true}\r\n onChange={(value: any) => {\r\n setInstruments(value);\r\n }}\r\n />\r\n \r\n {articleDetails && articleDetails.Id > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * RequestStatusesActions\r\n *\r\n */\r\n\r\nimport { Button, ButtonProps } from 'app/components/BasicButtons/Button';\r\n\r\nexport interface SaveFormButtonProps extends ButtonProps {\r\n edit: boolean;\r\n text: string;\r\n onClick: (e: any) => void;\r\n}\r\n\r\nexport function SaveFormButton({\r\n edit,\r\n text,\r\n onClick,\r\n ...props\r\n}: SaveFormButtonProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import { IRequestStatusesDto } from 'app/pages/RequestStatuses/RequestStatusesPage/IRequestStatusesDto';\r\nimport { AsyncDataState } from 'types/common';\r\nimport { IResponseType } from 'types/ResponseType';\r\n\r\n/* --- STATE --- */\r\nexport interface RequestStatusesState {\r\n createState: AsyncDataState;\r\n updateState: AsyncDataState;\r\n processing: boolean;\r\n}\r\n\r\nexport interface RequestStatusesDetailsState {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport interface RequestStatusesDetailsQStringParameters {\r\n id?: string;\r\n name?: string;\r\n}\r\n\r\nexport interface RequestStatusesDetailsResponse extends IResponseType {\r\n Id?: number;\r\n}\r\n\r\nexport function ConvertModelToEntityRequestStatusesDetails(\r\n entity: IRequestStatusesDto,\r\n): RequestStatusesDetailsState | undefined {\r\n if (!entity) {\r\n return undefined;\r\n } else {\r\n return {\r\n Id: entity.Id,\r\n Name: entity.Name,\r\n } as RequestStatusesDetailsState;\r\n }\r\n}\r\n\r\nexport function ConvertEntityToModelRequestStatusesDetails(\r\n model: RequestStatusesDetailsState,\r\n original: RequestStatusesDetailsState | undefined,\r\n): IRequestStatusesDto {\r\n let entity = {\r\n Id: original?.Id === undefined ? model.Id : original.Id,\r\n Name: model.Name,\r\n } as IRequestStatusesDto;\r\n return entity;\r\n}\r\n","import { RequestStatusesDetailsQStringParameters } from 'app/pages/RequestStatuses/RequestStatusesDetailsPage/Details/slice/types';\r\nimport { IRequestStatusesDto } from 'app/pages/RequestStatuses/RequestStatusesPage/IRequestStatusesDto';\r\nimport { httpClient } from './HttpClient';\r\n\r\nexport const RequestStatusesApi = {\r\n initUpdateData: (payload: RequestStatusesDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/RequestStatuses/InitRequestStatuses';\r\n return httpClient.post(url, data);\r\n },\r\n updateRequestStatusesDetails: (payload: IRequestStatusesDto) => {\r\n const url = `/api/odata/v4/RequestStatuses(${payload.Id})`; //PUT action in Controller\r\n return httpClient.put(url, payload);\r\n },\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { RequestStatusesApi } from 'api/RequestStatusesApi';\r\nimport { IRequestStatusesDto } from 'app/pages/RequestStatuses/RequestStatusesPage/IRequestStatusesDto';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport {\r\n ConvertEntityToModelRequestStatusesDetails,\r\n RequestStatusesDetailsQStringParameters,\r\n RequestStatusesDetailsResponse,\r\n RequestStatusesDetailsState,\r\n} from './types';\r\nimport { requestStatusesDetailsActions as actions } from '.';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport { translations } from 'locales/translations';\r\nimport i18next from 'i18next';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { RequestStatusesDetailsProps } from '..';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { AxiosError } from 'axios';\r\n\r\nfunction* doInitUpdate(\r\n action: PayloadAction,\r\n) {\r\n try {\r\n const data = yield call(RequestStatusesApi.initUpdateData, action.payload);\r\n yield put(actions.initUpdateRequestStatusesDetails_Success(data));\r\n } catch (error: unknown) {\r\n yield put(actions.initUpdateRequestStatusesDetails_Error(Error));\r\n }\r\n}\r\n\r\nfunction* doUpdate(\r\n action: PayloadAction<{\r\n current: RequestStatusesDetailsState;\r\n original: RequestStatusesDetailsState | undefined;\r\n }>,\r\n) {\r\n const httpPayloads: IRequestStatusesDto =\r\n ConvertEntityToModelRequestStatusesDetails(\r\n action.payload.current,\r\n action.payload.original,\r\n );\r\n try {\r\n const results = yield call(\r\n RequestStatusesApi.updateRequestStatusesDetails,\r\n httpPayloads,\r\n );\r\n let response = results as RequestStatusesDetailsResponse;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'RequestStatusesUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'RequestStatusesUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'RequestStatusesUpdate',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id,\r\n created: false,\r\n itemName: i18next.t(translations.menu_RequestStatuses),\r\n detailsType: RenderPageType.RequestStatusesDetails,\r\n detailsTypeProps: {\r\n queryParams: {\r\n id: '' + response.Id,\r\n } as RequestStatusesDetailsQStringParameters,\r\n useSidePanel: true,\r\n } as RequestStatusesDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateRequestStatusesDetails_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'RequestStatusesUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateRequestStatusesDetails_Error(Error));\r\n }\r\n}\r\n\r\nexport function* requestStatusesDetailsSaga() {\r\n yield takeLatest(actions.initUpdateRequestStatusesDetails.type, doInitUpdate);\r\n yield takeLatest(actions.updateRequestStatusesDetails.type, doUpdate);\r\n}\r\n","import {\r\n ConvertModelToEntityRequestStatusesDetails,\r\n RequestStatusesDetailsQStringParameters,\r\n RequestStatusesDetailsState,\r\n RequestStatusesState,\r\n} from './types';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IRequestStatusesDto } from 'app/pages/RequestStatuses/RequestStatusesPage/IRequestStatusesDto';\r\nimport { requestStatusesDetailsSaga } from './saga';\r\n\r\nexport const initialState: RequestStatusesState = {\r\n processing: false,\r\n createState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n updateState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n },\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'requestStatusesDetail',\r\n initialState,\r\n reducers: {\r\n initRequestStatusesDetails(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = true;\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initUpdateRequestStatusesDetails(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = true;\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initRequestStatusesDetails_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = false;\r\n state.createState.data = ConvertModelToEntityRequestStatusesDetails(\r\n action.payload,\r\n );\r\n },\r\n initUpdateRequestStatusesDetails_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.processing = false;\r\n state.updateState.data = ConvertModelToEntityRequestStatusesDetails(\r\n action.payload,\r\n );\r\n },\r\n initRequestStatusesDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n initUpdateRequestStatusesDetails_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n //====================================================================\r\n resetUpdateRequestStatusesDetailsState(state, action: PayloadAction) {\r\n state.updateState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n resetCreateRequestStatusesDetailsState(state, action: PayloadAction) {\r\n state.createState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n //====================================================================\r\n updateRequestStatusesDetails(\r\n state,\r\n action: PayloadAction<{\r\n current: RequestStatusesDetailsState;\r\n original: RequestStatusesDetailsState | undefined;\r\n }>,\r\n ) {\r\n state.updateState.processing = true;\r\n state.updateState.completed = undefined;\r\n state.updateState.hasErrors = undefined;\r\n },\r\n updateRequestStatusesDetails_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.updateState.processing = false;\r\n state.updateState.hasErrors = action.payload.hasErrors;\r\n state.updateState.completed = true;\r\n },\r\n updateRequestStatusesDetails_Error(state, action: PayloadAction) {\r\n state.updateState.processing = false;\r\n state.updateState.completed = true;\r\n state.updateState.hasErrors = true;\r\n },\r\n //====================================================================\r\n createRequestStatusesDetails(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.createState.processing = true;\r\n state.createState.completed = undefined;\r\n state.createState.hasErrors = undefined;\r\n },\r\n createRequestStatusesDetails_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.createState.processing = false;\r\n state.createState.hasErrors = action.payload.hasErrors;\r\n state.createState.completed = true;\r\n },\r\n createRequestStatusesDetails_Error(state, action: PayloadAction) {\r\n state.createState.processing = false;\r\n state.createState.completed = true;\r\n state.createState.hasErrors = true;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: requestStatusesDetailsActions } = slice;\r\n\r\nexport const useRequestStatusesDetailsSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: requestStatusesDetailsSaga });\r\n return { actions: slice.actions };\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) =>\r\n state.requestStatusesDetail || initialState;\r\n\r\nexport const selectRequestStatusesDetails = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\n//====================================================================\r\nexport const selectCreateRequestStatusesDetails = createSelector(\r\n [selectRequestStatusesDetails],\r\n state => state.createState.data,\r\n);\r\n\r\nexport const selectCreateRequestStatusesDetailsCompleted = createSelector(\r\n [selectRequestStatusesDetails],\r\n state => state.createState.completed,\r\n);\r\n\r\nexport const selectCreateRequestStatusesDetailsHasError = createSelector(\r\n [selectRequestStatusesDetails],\r\n state => state.createState.hasErrors,\r\n);\r\n//====================================================================\r\nexport const selectUpdateRequestStatusesDetails = createSelector(\r\n [selectRequestStatusesDetails],\r\n state => state.updateState.data,\r\n);\r\n\r\nexport const selectUpdateRequestStatusesDetailsCompleted = createSelector(\r\n [selectRequestStatusesDetails],\r\n state => state.updateState.completed,\r\n);\r\nexport const selectUpdateRequestStatusesDetailsHasError = createSelector(\r\n [selectRequestStatusesDetails],\r\n state => state.updateState.hasErrors,\r\n);\r\n//====================================================================\r\nexport const selectRequestStatusesDetailsProcessing = createSelector(\r\n [selectRequestStatusesDetails],\r\n state => state.processing,\r\n);\r\n","import * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as Yup from 'yup';\r\nimport { translations } from 'locales/translations';\r\nimport i18next from 'i18next';\r\nimport { Formik } from 'formik';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { RequestStatusesDetailsState } from '../slice/types';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\n\r\nexport interface RequestStatusesFormProps {\r\n initialValues: RequestStatusesDetailsState;\r\n onSubmit: (item: RequestStatusesDetailsState) => void;\r\n isEdit: boolean;\r\n isAdmin: boolean;\r\n bindSubmitForm: any;\r\n}\r\n\r\nexport const RequestStatusesForm = React.memo(function RequestStatusesForm({\r\n initialValues,\r\n onSubmit,\r\n isEdit,\r\n isAdmin,\r\n bindSubmitForm,\r\n}: RequestStatusesFormProps): JSX.Element {\r\n //SETTINGS\r\n const { t } = useTranslation();\r\n\r\n //FUNCTIONS\r\n const handleSubmit = value => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(value);\r\n }\r\n };\r\n\r\n //SCHEMA\r\n const requestStatusesDetailsSchema: Yup.SchemaOf =\r\n Yup.object({\r\n Id: Yup.number().notRequired().default(-1),\r\n Name: Yup.string()\r\n .default('')\r\n .nullable()\r\n .required()\r\n .label(i18next.t(translations.Name)),\r\n });\r\n\r\n //RENDER\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n console.debug('Submitting: ', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formik.errors) {\r\n //console.log('Request Statuses Details Errors: ', formik.errors);\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import { Box } from '@material-ui/core';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { PageWrapper } from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport {\r\n selectConfirmApproved,\r\n selectConfirmRejected,\r\n selectContinueState,\r\n selectContinueToLink,\r\n selectHasNotSavedChanges,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { push } from 'connected-react-router';\r\nimport { translations } from 'locales/translations';\r\nimport { Fragment, useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { SaveFormButton } from './Actions/RequestStatusesActions';\r\nimport { useRequestStatusesDetailsSlice } from './slice';\r\nimport {\r\n selectCreateRequestStatusesDetailsCompleted,\r\n selectRequestStatusesDetailsProcessing,\r\n selectUpdateRequestStatusesDetails,\r\n selectUpdateRequestStatusesDetailsCompleted,\r\n} from './slice/selectors';\r\nimport {\r\n RequestStatusesDetailsQStringParameters,\r\n RequestStatusesDetailsState,\r\n} from './slice/types';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { RequestStatusesForm } from './RequestStatusesForm';\r\n\r\nexport interface RequestStatusesDetailsProps extends SidePanelContentProps {\r\n queryParams: RequestStatusesDetailsQStringParameters;\r\n}\r\n\r\nexport function RequestStatusesDetails(\r\n props: RequestStatusesDetailsProps,\r\n): JSX.Element {\r\n //PROPS\r\n const { queryParams, useSidePanel } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n\r\n //PERMISSIONS\r\n const User = useSelector(selectAuthenticatedUser);\r\n const IsAdmin =\r\n User !== undefined && User.Roles.includes(Roles.Administrators);\r\n\r\n //SLICES\r\n const { actions } = useRequestStatusesDetailsSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n\r\n //SELECTORS\r\n const publicUrl = useSelector(selectPublicUrl);\r\n //====================================================================\r\n const hasUnsavedChanges = useSelector(selectHasNotSavedChanges, shallowEqual);\r\n const continueLink = useSelector(selectContinueToLink);\r\n const loading = useSelector(selectRequestStatusesDetailsProcessing);\r\n //====================================================================\r\n const confirmRejected = useSelector(selectConfirmRejected);\r\n const confirmApproved = useSelector(selectConfirmApproved);\r\n const continueToOther = useSelector(selectContinueState);\r\n //====================================================================\r\n const requestCreateCompleted = useSelector(\r\n selectCreateRequestStatusesDetailsCompleted,\r\n );\r\n const requestUpdateCompleted = useSelector(\r\n selectUpdateRequestStatusesDetailsCompleted,\r\n );\r\n //====================================================================\r\n const editModel = useSelector(\r\n selectUpdateRequestStatusesDetails,\r\n shallowEqual,\r\n );\r\n const baseModel = editModel;\r\n //====================================================================\r\n\r\n //STATES\r\n const [edit, setEdit] = useState(false);\r\n const [busy, setBusy] = useState(false);\r\n const [requestCompleted, setRequestCompleted] = useState(\r\n undefined,\r\n );\r\n\r\n //REF\r\n const submitFormRef = useRef(null);\r\n\r\n //FUNCTIONS\r\n const bindSubmitForm = useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n\r\n const handleSaveClick = (e: any) => {\r\n handleSubmitForm(e);\r\n };\r\n\r\n const handleSubmit = useCallback(\r\n (values: RequestStatusesDetailsState) => {\r\n setBusy(true);\r\n if (edit) {\r\n dispatch(\r\n actions.updateRequestStatusesDetails({\r\n current: values,\r\n original: baseModel,\r\n }),\r\n );\r\n }\r\n },\r\n [actions, baseModel, dispatch, edit],\r\n );\r\n\r\n const handleCancelClick = useCallback(() => {\r\n if (useSidePanel) {\r\n dispatch(layoutActions.resetSidePanel());\r\n } else {\r\n dispatch(push('/RequestStatuses'));\r\n }\r\n if (edit) {\r\n dispatch(actions.resetUpdateRequestStatusesDetailsState());\r\n }\r\n }, [actions, dispatch, edit, layoutActions, useSidePanel]);\r\n\r\n const handleClose = () => {\r\n if (hasUnsavedChanges) {\r\n dispatch(layoutActions.setConfirmOpen(true));\r\n } else {\r\n handleCancelClick();\r\n }\r\n };\r\n\r\n //USE EFFECT ON MOUNT\r\n useEffectOnMount(() => {\r\n if (\r\n queryParams.id !== undefined &&\r\n !isNaN(parseInt(queryParams.id || ''))\r\n ) {\r\n dispatch(actions.initUpdateRequestStatusesDetails(queryParams));\r\n } else {\r\n dispatch(actions.initRequestStatusesDetails(queryParams));\r\n }\r\n setBusy(false);\r\n setEdit(false);\r\n setRequestCompleted(undefined);\r\n return () => {};\r\n });\r\n\r\n //USE EFFECT\r\n useEffect(() => {\r\n let active = loading === false;\r\n if (active) {\r\n if (queryParams.id !== undefined && !isNaN(parseInt(queryParams.id))) {\r\n setEdit(true);\r\n }\r\n if (requestCreateCompleted === true || requestUpdateCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n } else if (\r\n requestCreateCompleted === false ||\r\n requestUpdateCompleted === false\r\n ) {\r\n setRequestCompleted(false);\r\n setBusy(false);\r\n }\r\n if (requestUpdateCompleted === true || requestCreateCompleted === true) {\r\n handleCancelClick();\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n handleCancelClick,\r\n loading,\r\n queryParams.id,\r\n requestCreateCompleted,\r\n requestUpdateCompleted,\r\n ]);\r\n\r\n //USE EFFECT 2\r\n useEffect(() => {\r\n if (confirmApproved) {\r\n if (edit) {\r\n dispatch(actions.resetUpdateRequestStatusesDetailsState());\r\n }\r\n if (continueToOther.continueOnApprove) {\r\n dispatch(layoutActions.resetSidePanel());\r\n setTimeout(() => {\r\n dispatch(\r\n layoutActions.openSidePanel({\r\n type: continueToOther.pageType,\r\n props: continueToOther.pageProps,\r\n expanded: continueToOther.expanded,\r\n }),\r\n );\r\n dispatch(layoutActions.resetContinueState());\r\n }, 200);\r\n } else if (continueLink !== undefined) {\r\n dispatch(appSettingsActions.navigate(continueLink));\r\n dispatch(layoutActions.resetSidePanel());\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n }\r\n if (confirmRejected) {\r\n dispatch(layoutActions.resetConfirmState());\r\n }\r\n return () => undefined;\r\n }, [\r\n actions,\r\n appSettingsActions,\r\n confirmApproved,\r\n confirmRejected,\r\n continueLink,\r\n continueToOther,\r\n dispatch,\r\n edit,\r\n layoutActions,\r\n ]);\r\n\r\n //LEFT ACTIONS\r\n const leftActions = [\r\n () => (\r\n \r\n }\r\n onClick={handleSaveClick}\r\n disabled={busy}\r\n processing={!requestCompleted && busy}\r\n edit={edit}\r\n text={t(translations.Save)}\r\n />\r\n \r\n ),\r\n ] as ActionRenderer[];\r\n\r\n //RIGHT ACTIONS\r\n const rightActions = [\r\n () => (\r\n \r\n }\r\n onClick={handleCancelClick}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n \r\n ),\r\n ] as ActionRenderer[];\r\n\r\n //RENDER\r\n return (\r\n <>\r\n \r\n \r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n {hasUnsavedChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n}\r\n","import { IEditEvent } from 'app/pages/CalendarPage/Scheduler/slice/types';\r\nimport cliTruncate from 'cli-truncate';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { ICalendarReservationDto } from 'api/odata/generated/entities/ICalendarReservationDto';\r\nimport styled from 'styled-components';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\n\r\nexport interface ReservationEventProps {\r\n event: IEditEvent;\r\n}\r\nconst EventContent = styled.div`\r\n display: flex;\r\n align-items: center;\r\n align-self: stretch;\r\n border-radius: 8px;\r\n background: var(--primary-background-c2);\r\n width: 100%;\r\n & .content-columns {\r\n display: flex;\r\n padding: 12px;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n flex: 1 0 0;\r\n gap: 4px;\r\n width: 100%;\r\n }\r\n`;\r\nexport function ReservationEvent(props: ReservationEventProps) {\r\n return (\r\n \r\n
    \r\n \r\n {cliTruncate(props.event.original.EquipmentName, 50, {\r\n position: 'end',\r\n })}\r\n {` by `}\r\n {(props.event.original as ICalendarReservationDto).BookedBy ??\r\n props.event.original.BookedById}\r\n \r\n \r\n {`New Time: ${dateUtils.format(\r\n dateUtils.dateOrStringToDate(props.event.start_date),\r\n 'dd MMM hh:mm',\r\n )} - ${dateUtils.format(\r\n dateUtils.dateOrStringToDate(props.event.end_date),\r\n 'dd MMM hh:mm',\r\n )}`}\r\n \r\n \r\n {`Before: ${dateUtils.format(\r\n dateUtils.dateOrStringToDate(props.event.original.StartTime),\r\n 'dd MMM hh:mm',\r\n )} - ${dateUtils.format(\r\n dateUtils.dateOrStringToDate(props.event.original.EndTime),\r\n 'dd MMM hh:mm',\r\n )}`}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useReservationSlice } from '../slice';\r\nimport { translations } from 'locales/translations';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { useSchedulerSlice } from 'app/pages/CalendarPage/Scheduler/slice';\r\nimport { selectSelectedReservationEvents } from 'app/pages/CalendarPage/Scheduler/slice/selectors';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { selectMultipleProcessing } from '../slice/selectors';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledFormFieldsContainer,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { ReservationEvent } from './ReservationEvent';\r\nimport { ReservationMultiEvent } from '../slice/types';\r\nimport { IEditEvent } from 'app/pages/CalendarPage/Scheduler/slice/types';\r\nimport { ICalendarReservationDto } from 'api/odata/generated/entities/ICalendarReservationDto';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { Beforeunload } from 'react-beforeunload';\r\n\r\nexport interface MultipleReservationsProps\r\n extends SidePanelContentProps,\r\n CoverProps {\r\n initilizedEvents: IEditEvent[];\r\n onClose?: () => void;\r\n}\r\nconst mapEventsToReservations = (events: IEditEvent[]) => {\r\n return events.map(f => {\r\n return {\r\n Id: f.reservation_id ?? 0,\r\n EquipmentId: f.original.EquipmentId,\r\n StartTime: f.start_date,\r\n EndTime: f.end_date,\r\n EquipmentChanged: false,\r\n BookedBy: (f.original as ICalendarReservationDto).BookedBy,\r\n BookedById: f.original.BookedById,\r\n } as ReservationMultiEvent;\r\n });\r\n};\r\n\r\nexport const MultipleReservations = React.memo(function MultipleReservations(\r\n props: MultipleReservationsProps,\r\n) {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const { actions } = useReservationSlice();\r\n const { actions: schedulerActions } = useSchedulerSlice();\r\n const { useSidePanel, closeCover, isCover, onClose } = props;\r\n const selectedEvents = useSelector(selectSelectedReservationEvents);\r\n const processing = useSelector(selectMultipleProcessing);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState(\r\n () => {\r\n return true;\r\n },\r\n undefined,\r\n useSidePanel,\r\n isCover,\r\n () => {\r\n dispatch(schedulerActions.setSelectedReservationEvents([]));\r\n dispatch(actions.setMultipleClosed(true));\r\n },\r\n );\r\n const toSaveEvents = React.useMemo(() => {\r\n return mapEventsToReservations(selectedEvents);\r\n }, [selectedEvents]);\r\n // React.useEffect(() => {\r\n // const savm = mapEventsToReservations(selectedEvents);\r\n // setToSaveEvents(savm);\r\n // // if (\r\n // // selectedEvents.some(\r\n // // f => !toSaveEvents.some(s => s.Id === f.reservation_id),\r\n // // )\r\n // // ) {\r\n // // setToSaveEvents([\r\n // // ...toSaveEvents,\r\n // // ...mapEventsToReservations(\r\n // // selectedEvents.filter(\r\n // // f => !toSaveEvents.some(s => s.Id === f.reservation_id),\r\n // // ),\r\n // // ),\r\n // // ]);\r\n // // } else if (\r\n // // toSaveEvents.some(\r\n // // f => !selectedEvents.some(s => s.reservation_id === f.Id),\r\n // // )\r\n // // ) {\r\n // // setToSaveEvents(\r\n // // toSaveEvents.filter(\r\n // // f => !selectedEvents.some(s => s.reservation_id === f.Id),\r\n // // ),\r\n // // );\r\n // // } else {\r\n // // if (\r\n // // selectedEvents.some(hasEventDateChanges) &&\r\n // // toSaveEvents.some(f =>\r\n // // selectedEvents.some(\r\n // // s =>\r\n // // s.reservation_id === f.Id &&\r\n // // (s.start_date !== f.StartTime || s.end_date !== f.EndTime),\r\n // // ),\r\n // // )\r\n // // ) {\r\n // // const updatedEvents: ReservationMultiEvent[] = [];\r\n // // selectedEvents.forEach((event, index) => {\r\n // // if (hasEventDateChanges(event)) {\r\n // // const saved = toSaveEvents.find(f => f.Id === event.reservation_id);\r\n // // if (!!saved) {\r\n // // let updated = Object.assign({}, saved, {\r\n // // StartTime: event.start_date,\r\n // // EndTime: event.end_date,\r\n // // });\r\n // // updatedEvents.push(updated);\r\n // // }\r\n // // } else {\r\n // // const finded = toSaveEvents.find(\r\n // // f => f.Id === event.reservation_id,\r\n // // );\r\n // // if (!!finded) {\r\n // // updatedEvents.push(finded);\r\n // // }\r\n // // }\r\n // // });\r\n // // setToSaveEvents(updatedEvents);\r\n // // }\r\n // // }\r\n // }, [selectedEvents, toSaveEvents]);\r\n\r\n const handleCloselClick = React.useCallback(() => {\r\n closePanel({\r\n isCover: isCover || !!cover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n onClose: () => {\r\n dispatch(schedulerActions.setSelectedReservationEvents([]));\r\n dispatch(actions.setMultipleClosed(true));\r\n !!onClose && onClose();\r\n },\r\n } as SidePanelCloseState);\r\n }, [\r\n actions,\r\n closePanel,\r\n cover,\r\n dispatch,\r\n hasChanges,\r\n isCover,\r\n onClose,\r\n schedulerActions,\r\n useSidePanel,\r\n ]);\r\n\r\n const handleSaveClick = React.useCallback(\r\n (e: any) => {\r\n if (toSaveEvents.length > 0) {\r\n dispatch(\r\n actions.updateMultiReservations({\r\n reservations: toSaveEvents,\r\n }),\r\n );\r\n }\r\n },\r\n [actions, dispatch, toSaveEvents],\r\n );\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n handleCloselClick();\r\n dispatch(actions.setMultipleProcessing(undefined));\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [actions, dispatch, handleCloselClick, processing]);\r\n const leftActions = React.useMemo(() => {\r\n return [\r\n () => (\r\n \r\n }\r\n processing={processing === true}\r\n disabled={processing === true}\r\n onClick={e => {\r\n handleSaveClick(e);\r\n }}\r\n >\r\n {t(translations.UpdateReservations)}\r\n \r\n \r\n ),\r\n ];\r\n }, [handleSaveClick, processing, t]);\r\n const rightActions = React.useMemo(() => {\r\n return [\r\n () => (\r\n \r\n }\r\n title={t(translations.Cancel)}\r\n disabled={processing === true}\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n \r\n ),\r\n ] as ActionRenderer[];\r\n }, [handleCloselClick, processing, t]);\r\n\r\n return (\r\n \r\n \r\n {/* \r\n \r\n */}\r\n\r\n \r\n \r\n \r\n {t(translations.QuickMultiReservationsAlertExt) as string}\r\n \r\n \r\n ),\r\n showMore: false,\r\n },\r\n ]}\r\n >\r\n \r\n {selectedEvents.map(reservation => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport BaseTextField from '../BasicInputs/BaseTextField';\r\nimport { BaseFieldProps } from '../BasicInputs/BaseTextField/BaseFieldDefinition';\r\n\r\nexport const FormWindowHoursField = ({\r\n label,\r\n onChange,\r\n onBlur,\r\n value,\r\n name,\r\n helperText,\r\n noWarnOnNuN,\r\n ...props\r\n}: FieldHookConfig &\r\n BaseFieldProps &\r\n IFieldProps & { noWarnOnNuN?: boolean }) => {\r\n const [field, meta] = useField({ name, ...props });\r\n const handleChange = e => {\r\n if (onChange !== undefined) {\r\n onChange(e);\r\n }\r\n field.onChange(e);\r\n };\r\n return (\r\n \r\n \r\n {props.info ? : null}\r\n {props.InputProps?.endAdornment}\r\n \r\n ),\r\n }}\r\n variant=\"filled\"\r\n fullWidth\r\n autoFocus={props.autoFocus}\r\n inputProps={{\r\n ...props.inputProps,\r\n type: 'number',\r\n min: 0,\r\n 'aria-label': `${label ? undefined : 'number input'}`,\r\n }}\r\n value={field.value || ''}\r\n onChange={handleChange}\r\n onBlur={field?.onBlur}\r\n id={props.id || 'numberfieldId'}\r\n label={label}\r\n name={name}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error ?? helperText}\r\n {...props}\r\n />\r\n \r\n );\r\n};\r\n","import {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport {\r\n RenderPageType,\r\n SidePanelContentProps,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IReservationWaitingListDto } from '../IReservationWaitingListDto';\r\nimport * as React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { ISignUpModel, ISimpleSignUpModel } from './ISignUpModel';\r\nimport { Formik } from 'formik';\r\nimport { GetSignUpSchema, GetSimpleSignUpSchema } from './SignUpSchema';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormOnlineServicesSinglePicker } from 'app/components/Forms/FormEquipmentsPicker';\r\nimport { FormRadioGroupBase } from 'app/components/Forms/FormRadioGroupBase';\r\nimport {\r\n convertSignUpToModel,\r\n convertSimpleSignUpToModel,\r\n getIsRowSimpleMode,\r\n getNotifyOnEndUsageOptions,\r\n getNotifyOnResCancelationOptions,\r\n getNotifyOnResTerminationOptions,\r\n SimpleModeResults,\r\n} from './utils';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport {\r\n selectConfirmApproved,\r\n selectConfirmRejected,\r\n selectContinueState,\r\n selectContinueToLink,\r\n selectHasNotSavedChanges,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { UserNotificationsApi as api } from 'api/UserNotificationsApi';\r\nimport { AxiosError } from 'axios';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectUsageEnabled,\r\n} from 'app/slice/selectors';\r\nimport { FormWindowHoursField } from 'app/components/Forms/FormWindowHours';\r\nimport { Entity } from 'types/common';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { FormUserPicker } from 'app/components/Forms/FormUserPicker';\r\nimport { FormLabelText } from 'app/components/Forms/FormLabelText';\r\nimport { UserProfileLink } from 'app/pages/UserDetails/OpenUserProfile';\r\nimport { FlexRow } from 'app/components/StyledComponents';\r\n\r\nexport interface SignUpWaitingListDetailsProps\r\n extends SidePanelContentProps,\r\n CoverProps {\r\n Id?: number;\r\n Equipment?: Entity;\r\n SignUpUser?: Entity;\r\n initialDetails?: IReservationWaitingListDto;\r\n}\r\n\r\nexport function SignUpWaitingListDetails(props: SignUpWaitingListDetailsProps) {\r\n const { closeCover, isCover, initialDetails, Id, Equipment, SignUpUser } =\r\n props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const [busy, setBusy] = React.useState(false);\r\n const isEdit =\r\n (initialDetails !== undefined && initialDetails.Id > 0) ||\r\n (Id !== undefined && Id > 0);\r\n const submitRef = React.useRef();\r\n const simplesubmitRef = React.useRef();\r\n const continueLink = useSelector(selectContinueToLink);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const closeApproved = useSelector(selectConfirmApproved);\r\n const closeRejected = useSelector(selectConfirmRejected);\r\n const continueToOther = useSelector(selectContinueState);\r\n const usageEnabled = useSelector(selectUsageEnabled);\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const { actions: notifyActions } = useAppSettingsSlice();\r\n const [loadedDetails, setLoadedDetails] = React.useState<\r\n IReservationWaitingListDto | undefined\r\n >(undefined);\r\n const [initialValues, setInitialValues] = React.useState<\r\n ISignUpModel | undefined\r\n >(undefined);\r\n const termOptions = getNotifyOnResTerminationOptions(t);\r\n const cancelOptions = getNotifyOnResCancelationOptions(t);\r\n const usageOptions = getNotifyOnEndUsageOptions(t);\r\n const [simpleMode, setSimpleMode] = React.useState({\r\n isSimpleMode: isEdit ? false : true,\r\n hoursCount: 0,\r\n notificationsLength: usageEnabled ? 3 : 2,\r\n });\r\n const [isSimpleView, setIsSimpleView] = React.useState(\r\n isEdit ? undefined : true,\r\n );\r\n const [isMounted, setIsMounted] = React.useState(\r\n undefined,\r\n );\r\n const isAdminRole = React.useMemo(() => {\r\n return (\r\n authenticatedUser?.isAdmin() ||\r\n authenticatedUser?.isGroupAdmin() ||\r\n authenticatedUser?.isLabTech()\r\n );\r\n }, [authenticatedUser]);\r\n const isAdminView = React.useMemo(() => {\r\n const details = initialDetails || loadedDetails;\r\n return (\r\n isEdit &&\r\n details &&\r\n authenticatedUser?.IsAllGroupOrLabTechAdmin(undefined, [\r\n {\r\n Id: details.EquipmentID,\r\n Name: details.EquipmentName,\r\n ServiceTypeId: 1,\r\n } as IServiceTypeFilterDto,\r\n ])\r\n );\r\n }, [authenticatedUser, initialDetails, isEdit, loadedDetails]);\r\n const userVisible = React.useMemo(() => {\r\n return !isEdit && isAdminRole;\r\n // formik.values.Equipment !== null &&\r\n // authenticatedUser?.IsAllGroupOrLabTechAdmin(undefined, [\r\n // {\r\n // Id: formik.values.Equipment.Id,\r\n // Name: formik.values.Equipment.Name,\r\n // ServiceTypeId: 1,\r\n // } as IServiceTypeFilterDto,\r\n // ])\r\n }, [isAdminRole, isEdit]);\r\n React.useEffect(() => {\r\n if (isEdit && (!!initialDetails || !!loadedDetails) && !isMounted) {\r\n if (!!initialDetails) {\r\n setSimpleMode(getIsRowSimpleMode(initialDetails, usageEnabled));\r\n } else if (!!loadedDetails) {\r\n setSimpleMode(getIsRowSimpleMode(loadedDetails, usageEnabled));\r\n }\r\n setIsMounted(true);\r\n }\r\n }, [initialDetails, isEdit, isMounted, loadedDetails, usageEnabled]);\r\n\r\n const schema = React.useMemo(() => {\r\n return GetSignUpSchema(t, isEdit);\r\n }, [isEdit, t]);\r\n const simpleschema = React.useMemo(() => {\r\n return GetSimpleSignUpSchema(t);\r\n }, [t]);\r\n const handleClose = React.useCallback(() => {\r\n if (isCover) {\r\n closeCover?.();\r\n } else {\r\n dispatch(actions.resetSidePanel());\r\n }\r\n }, [isCover, closeCover, dispatch, actions]);\r\n const refreshTable = React.useCallback(() => {\r\n dispatch(actions.setRefreshTable(true));\r\n }, [dispatch, actions]);\r\n\r\n React.useEffect(() => {\r\n if (closeApproved) {\r\n if (continueToOther.continueOnApprove) {\r\n dispatch(actions.resetSidePanel());\r\n setTimeout(() => {\r\n dispatch(\r\n actions.openSidePanel({\r\n type: continueToOther.pageType,\r\n props: continueToOther.pageProps,\r\n expanded: continueToOther.expanded,\r\n }),\r\n );\r\n dispatch(actions.resetContinueState());\r\n }, 200);\r\n } else if (continueLink !== undefined) {\r\n dispatch(notifyActions.navigate(continueLink));\r\n dispatch(actions.resetSidePanel());\r\n } else {\r\n dispatch(actions.resetSidePanel());\r\n }\r\n }\r\n if (closeRejected) {\r\n dispatch(actions.resetConfirmState());\r\n }\r\n }, [\r\n actions,\r\n closeApproved,\r\n closeRejected,\r\n continueLink,\r\n continueToOther,\r\n dispatch,\r\n notifyActions,\r\n ]);\r\n React.useEffect(() => {\r\n if (!isEdit) {\r\n setInitialValues({\r\n Id: initialDetails?.Id ?? 0,\r\n Equipment:\r\n initialDetails !== undefined\r\n ? {\r\n Id: initialDetails.EquipmentID,\r\n Name: initialDetails.EquipmentName,\r\n }\r\n : Equipment ?? null,\r\n User:\r\n initialDetails !== undefined\r\n ? {\r\n Id: initialDetails.UserName,\r\n Name: initialDetails.UserDisplayName,\r\n }\r\n : SignUpUser ?? {\r\n Id: authenticatedUser?.Id ?? '',\r\n Name: authenticatedUser?.DisplayName ?? '',\r\n },\r\n BeforeResCancelHour: initialDetails?.BeforeResCancelHour ?? 0,\r\n //BeforeResStartHour: initialDetails?.BeforeResStartHour ?? 0,\r\n //BeforeTrainStartHour: initialDetails?.BeforeTrainStartHour ?? 0,\r\n NextResTermHours: initialDetails?.NextResTermHours ?? 0,\r\n NextReservationHours: initialDetails?.NextReservationHours ?? 0,\r\n NotifyOnEndUsage: initialDetails?.NotifyOnEndUsage\r\n ? (initialDetails?.NextReservationHours ?? 0) > 0\r\n ? 'true'\r\n : 'false'\r\n : '',\r\n NotifyOnResCancelation: (\r\n initialDetails?.NotifyOnResCancelation ?? false\r\n ).toString(),\r\n NotifyOnResTermination: initialDetails?.NotifyOnResTermination\r\n ? (initialDetails?.NextResTermHours ?? 0) > 0\r\n ? 'true'\r\n : 'false'\r\n : '',\r\n // UpcomingReservations: (\r\n // initialDetails?.UpcomingReservations ?? false\r\n // ).toString(),\r\n // UpcomingTrainingSession: (\r\n // initialDetails?.UpcomingTrainingSession ?? false\r\n // ).toString(),\r\n });\r\n return;\r\n } else {\r\n console.log('effect operated');\r\n if (Id === undefined && initialDetails !== undefined) {\r\n setInitialValues({\r\n Id: initialDetails.Id,\r\n Equipment: {\r\n Id: initialDetails.EquipmentID,\r\n Name: initialDetails.EquipmentName,\r\n },\r\n User: {\r\n Id: initialDetails.UserName,\r\n Name: initialDetails.UserDisplayName,\r\n },\r\n BeforeResCancelHour: initialDetails.BeforeResCancelHour ?? 0,\r\n //BeforeResStartHour: initialDetails?.BeforeResStartHour ?? 0,\r\n //BeforeTrainStartHour: initialDetails?.BeforeTrainStartHour ?? 0,\r\n NextResTermHours: initialDetails.NextResTermHours ?? 0,\r\n NextReservationHours: initialDetails.NextReservationHours ?? 0,\r\n NotifyOnEndUsage: initialDetails.NotifyOnEndUsage\r\n ? initialDetails.NextReservationHours > 0\r\n ? 'true'\r\n : 'false'\r\n : '',\r\n NotifyOnResCancelation: (\r\n initialDetails.NotifyOnResCancelation ?? false\r\n ).toString(),\r\n NotifyOnResTermination: initialDetails.NotifyOnResTermination\r\n ? initialDetails.NextResTermHours > 0\r\n ? 'true'\r\n : 'false'\r\n : '',\r\n // UpcomingReservations: (\r\n // initialDetails?.UpcomingReservations ?? false\r\n // ).toString(),\r\n // UpcomingTrainingSession: (\r\n // initialDetails?.UpcomingTrainingSession ?? false\r\n // ).toString(),\r\n });\r\n } else {\r\n setBusy(true);\r\n let mounted = true;\r\n (async () => {\r\n try {\r\n const res = await api.getSignUp(Id ?? 0);\r\n let item = res as IReservationWaitingListDto;\r\n\r\n if (mounted) {\r\n setLoadedDetails(res);\r\n setInitialValues({\r\n Id: item.Id,\r\n Equipment: {\r\n Id: item.EquipmentID,\r\n Name: item.EquipmentName,\r\n },\r\n User: {\r\n Id: item.UserName,\r\n Name: item.UserDisplayName,\r\n },\r\n BeforeResCancelHour: item.BeforeResCancelHour ?? 0,\r\n //BeforeResStartHour: initialDetails?.BeforeResStartHour ?? 0,\r\n //BeforeTrainStartHour: initialDetails?.BeforeTrainStartHour ?? 0,\r\n NextResTermHours: item.NextResTermHours ?? 0,\r\n NextReservationHours: item.NextReservationHours ?? 0,\r\n NotifyOnEndUsage: item.NotifyOnEndUsage\r\n ? item.NextReservationHours > 0\r\n ? 'true'\r\n : 'false'\r\n : '',\r\n NotifyOnResCancelation: (\r\n item.NotifyOnResCancelation ?? false\r\n ).toString(),\r\n NotifyOnResTermination: item.NotifyOnResTermination\r\n ? item.NextResTermHours > 0\r\n ? 'true'\r\n : 'false'\r\n : '',\r\n // UpcomingReservations: (\r\n // initialDetails?.UpcomingReservations ?? false\r\n // ).toString(),\r\n // UpcomingTrainingSession: (\r\n // initialDetails?.UpcomingTrainingSession ?? false\r\n // ).toString(),\r\n });\r\n\r\n setBusy(false);\r\n }\r\n } catch (error) {\r\n setBusy(false);\r\n console.error(error);\r\n }\r\n })();\r\n return () => {\r\n mounted = false;\r\n };\r\n }\r\n }\r\n }, [\r\n Equipment,\r\n Id,\r\n SignUpUser,\r\n authenticatedUser?.DisplayName,\r\n authenticatedUser?.Id,\r\n initialDetails,\r\n isEdit,\r\n ]);\r\n const handleSubmit = React.useCallback(\r\n (model: ISignUpModel) => {\r\n setBusy(true);\r\n const insertModel = convertSignUpToModel(\r\n model,\r\n initialDetails ?? loadedDetails,\r\n );\r\n if (!isEdit) {\r\n api\r\n .insertSignUp(insertModel)\r\n .then(res => {\r\n setBusy(false);\r\n if (res.ErrorMessages.length > 0) {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpError',\r\n message: res.ErrorMessages[0],\r\n variant: 'error',\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpSuccess',\r\n message: res.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: res.Id ?? undefined,\r\n closeMessageOnPanelOpen: true,\r\n created: true,\r\n itemName: t(\r\n translations.UserNotificationsSignUpToWaitingList,\r\n ),\r\n detailsType: RenderPageType.SignUpWaitingListDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n Id: res.Id,\r\n // initialDetails: Object.assign({}, insertModel, {\r\n // Id: res.Id,\r\n // }),\r\n } as SignUpWaitingListDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n handleClose();\r\n refreshTable();\r\n }\r\n })\r\n .catch((error: unknown) => {\r\n setBusy(false);\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror\r\n ?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? t(translations.Forbidden)\r\n : undefined) ??\r\n t(translations.errormessage);\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpError',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n });\r\n } else {\r\n api\r\n .updateSignUp(insertModel, insertModel.Id)\r\n .then(res => {\r\n setBusy(false);\r\n if (res.ErrorMessages.length > 0) {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpUpdateError',\r\n message: res.ErrorMessages[0],\r\n variant: 'error',\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpSuccess',\r\n message: res.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: res.Id ?? undefined,\r\n closeMessageOnPanelOpen: true,\r\n created: false,\r\n itemName: t(\r\n translations.UserNotificationsSignUpToWaitingList,\r\n ),\r\n detailsType: RenderPageType.SignUpWaitingListDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n Id: res.Id,\r\n // initialDetails: insertModel,\r\n } as SignUpWaitingListDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n handleClose();\r\n refreshTable();\r\n }\r\n })\r\n .catch((error: unknown) => {\r\n setBusy(false);\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror\r\n ?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? t(translations.Forbidden)\r\n : undefined) ??\r\n t(translations.errormessage);\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpUpdateError',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n });\r\n }\r\n },\r\n [\r\n dispatch,\r\n handleClose,\r\n initialDetails,\r\n isEdit,\r\n loadedDetails,\r\n notifyActions,\r\n refreshTable,\r\n t,\r\n ],\r\n );\r\n const handleSimpleSubmit = React.useCallback(\r\n (model: ISimpleSignUpModel) => {\r\n setBusy(true);\r\n const updatedModel = convertSimpleSignUpToModel(\r\n model,\r\n initialDetails ?? loadedDetails,\r\n usageEnabled,\r\n );\r\n if (!isEdit) {\r\n api\r\n .insertSignUp(updatedModel)\r\n .then(res => {\r\n setBusy(false);\r\n if (res.ErrorMessages.length > 0) {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpError',\r\n message: res.ErrorMessages[0],\r\n variant: 'error',\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpSuccess',\r\n message: res.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: res.Id ?? undefined,\r\n created: true,\r\n closeMessageOnPanelOpen: true,\r\n itemName: t(\r\n translations.UserNotificationsSignUpToWaitingList,\r\n ),\r\n detailsType: RenderPageType.SignUpWaitingListDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n initialDetails: Object.assign({}, updatedModel, {\r\n Id: res.Id,\r\n }),\r\n } as SignUpWaitingListDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n handleClose();\r\n refreshTable();\r\n }\r\n })\r\n .catch((error: unknown) => {\r\n setBusy(false);\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror\r\n ?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? t(translations.Forbidden)\r\n : undefined) ??\r\n t(translations.errormessage);\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpError',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n });\r\n } else {\r\n api\r\n .updateSignUp(updatedModel, updatedModel.Id)\r\n .then(res => {\r\n setBusy(false);\r\n if (res.ErrorMessages.length > 0) {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpUpdateError',\r\n message: res.ErrorMessages[0],\r\n variant: 'error',\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpSuccess',\r\n message: res.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: res.Id ?? undefined,\r\n closeMessageOnPanelOpen: true,\r\n created: false,\r\n itemName: t(\r\n translations.UserNotificationsSignUpToWaitingList,\r\n ),\r\n detailsType: RenderPageType.SignUpWaitingListDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n initialDetails: updatedModel,\r\n } as SignUpWaitingListDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n handleClose();\r\n refreshTable();\r\n }\r\n })\r\n .catch((error: unknown) => {\r\n setBusy(false);\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror\r\n ?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? t(translations.Forbidden)\r\n : undefined) ??\r\n t(translations.errormessage);\r\n dispatch(\r\n notifyActions.addNotification({\r\n key: 'signUpUpdateError',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n });\r\n }\r\n },\r\n [\r\n dispatch,\r\n handleClose,\r\n initialDetails,\r\n isEdit,\r\n loadedDetails,\r\n notifyActions,\r\n refreshTable,\r\n t,\r\n usageEnabled,\r\n ],\r\n );\r\n const SignUpForm = React.memo(function SignUpForm() {\r\n const inputProps = {\r\n step: 1,\r\n min: 0,\r\n max: 1000,\r\n 'aria-label': 'Counter',\r\n style: {\r\n minWidth: '30px',\r\n padding: '6px 6px',\r\n textAlign: 'center' as 'center',\r\n },\r\n };\r\n return !!initialValues ? (\r\n \r\n {formik => {\r\n submitRef.current = formik.submitForm;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {userVisible &&\r\n formik.values.Equipment !== null &&\r\n authenticatedUser?.IsAllGroupOrLabTechAdmin(undefined, [\r\n {\r\n Id: formik.values.Equipment.Id,\r\n Name: formik.values.Equipment.Name,\r\n ServiceTypeId: 1,\r\n } as IServiceTypeFilterDto,\r\n ]) && (\r\n \r\n \r\n \r\n )}\r\n {isAdminView && (\r\n \r\n \r\n {formik.values.User !== null && (\r\n \r\n )}\r\n \r\n }\r\n />\r\n \r\n )}\r\n {/* NotifyOnResCancelation */}\r\n \r\n \r\n formik\r\n .getFieldHelpers('NotifyOnResCancelation')\r\n .setValue('true')\r\n }\r\n />\r\n \r\n {/* NotifyOnResTermination */}\r\n \r\n \r\n formik\r\n .getFieldHelpers('NotifyOnResTermination')\r\n .setValue('true')\r\n }\r\n />\r\n \r\n {/* NotifyOnEndUsage */}\r\n {usageEnabled && (\r\n \r\n \r\n formik\r\n .getFieldHelpers('NotifyOnEndUsage')\r\n .setValue('true')\r\n }\r\n />\r\n \r\n )}\r\n {simpleMode.isSimpleMode && isSimpleView === false && (\r\n \r\n {\r\n setIsSimpleView(true);\r\n if (\r\n !isEdit &&\r\n (formik.values.Equipment !== null ||\r\n formik.values.User !== null)\r\n ) {\r\n setInitialValues(\r\n Object.assign({}, initialValues, {\r\n Equipment: formik.values.Equipment,\r\n User: formik.values.User,\r\n }),\r\n );\r\n }\r\n }}\r\n >\r\n {t(translations.UserNotificationsResetToBasic)}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n ) : null;\r\n });\r\n const SimpleSignUpForm = React.memo(function SimpleSignUpForm() {\r\n const inputProps = {\r\n step: 1,\r\n min: 0,\r\n max: 1000,\r\n 'aria-label': 'Counter',\r\n style: {\r\n minWidth: '30px',\r\n padding: '6px 6px',\r\n textAlign: 'center' as 'center',\r\n },\r\n };\r\n return (\r\n \r\n {formik => {\r\n simplesubmitRef.current = formik.submitForm;\r\n return (\r\n \r\n {/* By using FormListener, the fields become not editable */}\r\n {/* {}} /> */}\r\n \r\n \r\n \r\n \r\n \r\n {userVisible &&\r\n formik.values.Equipment !== null &&\r\n authenticatedUser?.IsAllGroupOrLabTechAdmin(undefined, [\r\n {\r\n Id: formik.values.Equipment.Id,\r\n Name: formik.values.Equipment.Name,\r\n ServiceTypeId: 1,\r\n } as IServiceTypeFilterDto,\r\n ]) && (\r\n \r\n \r\n \r\n )}\r\n {isAdminView && (\r\n \r\n \r\n {formik.values.User !== null && (\r\n \r\n )}\r\n \r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n {t(translations.UserNotifications_SimpleMode)}\r\n \r\n \r\n {'hours'}\r\n \r\n \r\n }\r\n onClick={() => {\r\n setIsSimpleView(false);\r\n if (\r\n !isEdit &&\r\n (formik.values.Equipment !== null ||\r\n formik.values.User !== null)\r\n ) {\r\n setInitialValues(\r\n Object.assign({}, initialValues, {\r\n Equipment: formik.values.Equipment,\r\n User: formik.values.User,\r\n }),\r\n );\r\n }\r\n }}\r\n >\r\n {t(translations.UserNotificationsSwitchToAdvanced)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n );\r\n });\r\n const leftActions = [\r\n () => (\r\n <>\r\n \r\n simpleMode.isSimpleMode\r\n ? isSimpleView === undefined || isSimpleView === true\r\n ? simplesubmitRef.current?.()\r\n : submitRef.current?.()\r\n : submitRef.current?.()\r\n }\r\n size=\"small\"\r\n disabled={busy}\r\n >\r\n {t(translations.Submit)}\r\n \r\n \r\n ),\r\n ];\r\n const rightActions = [\r\n () => (\r\n <>\r\n }\r\n onClick={handleClose}\r\n size=\"small\"\r\n disabled={busy}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n \r\n ),\r\n ];\r\n return (\r\n \r\n {simpleMode.isSimpleMode ? (\r\n isSimpleView === undefined || isSimpleView === true ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n \r\n ) : null\r\n }\r\n leftActions={leftActions}\r\n rightActions={rightActions}\r\n disableExpandToggle={true}\r\n closeSidePanel={() => {\r\n if (hasChanges) {\r\n dispatch(actions.setConfirmOpen(true));\r\n } else {\r\n dispatch(actions.resetSidePanel());\r\n }\r\n }}\r\n isCover={props.isCover}\r\n closeCover={props.closeCover}\r\n />\r\n );\r\n}\r\n","import {\r\n OnlineServiceEntitySchema,\r\n UserEntitySchema,\r\n} from 'app/components/Forms/Schemas';\r\nimport { TFunction } from 'i18next';\r\nimport { ISignUpModel, ISimpleSignUpModel } from './ISignUpModel';\r\nimport * as Yup from 'yup';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport function GetSignUpSchema(\r\n t: TFunction,\r\n isEdit: boolean,\r\n): Yup.SchemaOf {\r\n const result: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().notRequired().default(0),\r\n Equipment: OnlineServiceEntitySchema.nullable().required(\r\n t(translations.err_OnlineServiceFieldRequired),\r\n ),\r\n User: UserEntitySchema.nullable().notRequired().optional(),\r\n NextReservationHours: Yup.number()\r\n .notRequired()\r\n .optional()\r\n .when('NotifyOnEndUsage', (val: string, schema: Yup.NumberSchema) => {\r\n return val === 'true'\r\n ? schema\r\n .required(t(translations.err_NotificationHoursNegativeOrZero))\r\n .min(1, t(translations.err_NotificationHoursNegativeOrZero))\r\n : schema.notRequired().optional();\r\n }),\r\n NextResTermHours: Yup.number()\r\n .notRequired()\r\n .optional()\r\n .when(\r\n 'NotifyOnResTermination',\r\n (val: string, schema: Yup.NumberSchema) => {\r\n return val === 'true'\r\n ? schema\r\n .required(t(translations.err_NotificationHoursNegativeOrZero))\r\n .min(1, t(translations.err_NotificationHoursNegativeOrZero))\r\n : schema.notRequired().optional();\r\n },\r\n ),\r\n //BeforeResStartHour: Yup.number().notRequired().optional(),\r\n //BeforeTrainStartHour: Yup.number().notRequired().optional(),\r\n BeforeResCancelHour: Yup.number()\r\n .notRequired()\r\n .optional()\r\n .when(\r\n 'NotifyOnResCancelation',\r\n (val: string, schema: Yup.NumberSchema) => {\r\n return val === 'true'\r\n ? schema\r\n .required(t(translations.err_NotificationHoursNegativeOrZero))\r\n .min(1, t(translations.err_NotificationHoursNegativeOrZero))\r\n : schema.notRequired().optional();\r\n },\r\n ),\r\n NotifyOnResCancelation: Yup.string().defined().default('false'),\r\n\r\n NotifyOnResTermination: Yup.string().defined().default(''),\r\n\r\n NotifyOnEndUsage: Yup.string().defined().default(''),\r\n\r\n //UpcomingReservations: Yup.string().defined().default('false'),\r\n\r\n //UpcomingTrainingSession: Yup.string().defined().default('false'),\r\n // UserGroup: UserGroupEntitySchema.nullable().when(\r\n // 'User',\r\n // (_, schema: Yup.SchemaOf>) =>\r\n // isEdit ? schema.notRequired() : schema.required(),\r\n // ),\r\n // SampleType: OfflineServiceTypeEntitySchema.notRequired().nullable(),\r\n // FeeType: FeeTypeEntitySchema.required().nullable(),\r\n // Quantity: Yup.number().defined(),\r\n // Rate: Yup.number()\r\n // .defined()\r\n // .when('FeeType', (catRateType, schema: Yup.NumberSchema) => {\r\n // return (catRateType as Entity)?.Id === CatRateTypes.Refund\r\n // ? schema.negative().max(0)\r\n // : schema.positive().min(0);\r\n // }),\r\n // Amount: Yup.number()\r\n // .defined()\r\n // .when('FeeType', (catRateType, schema: Yup.NumberSchema) => {\r\n // return (catRateType as Entity)?.Id === CatRateTypes.Refund\r\n // ? schema.negative().max(0)\r\n // : schema.positive().min(0);\r\n // }),\r\n // Manual: Yup.bool().notRequired(),\r\n // ActualRate: Yup.number().notRequired(),\r\n // Remarks: Yup.string().nullable().default('').notRequired(),\r\n });\r\n return result;\r\n}\r\nexport function GetSimpleSignUpSchema(\r\n t: TFunction,\r\n): Yup.SchemaOf {\r\n const result: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().notRequired().default(0),\r\n Equipment: OnlineServiceEntitySchema.nullable().required(\r\n t(translations.err_OnlineServiceFieldRequired),\r\n ),\r\n User: UserEntitySchema.nullable().notRequired().optional(),\r\n WindowHours: Yup.number()\r\n .required(t(translations.err_NotificationHoursNegativeOrZero))\r\n .min(1, t(translations.err_NotificationHoursNegativeOrZero))\r\n .defined(),\r\n });\r\n return result;\r\n}\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { ServiceShortPicker } from '../pickers/AutocompletePickers/ServiceShortPicker';\r\n\r\nexport const FormServiceShortPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & IFieldProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n const handleChange = val => {\r\n props.onChange?.(val);\r\n helpers.setValue(val, true);\r\n };\r\n return (\r\n <>\r\n 0\r\n ? props.predicates.map(f => f.toString()).join(` and `)\r\n : undefined\r\n }\r\n />\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { OfflineReferenceTypePicker } from '../pickers/StaticOptionsPickers/OfflineRefernceTypePicker';\r\n\r\nexport const FormOfflineReferenceTypePicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & IFieldProps) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n const handleChange = val => {\r\n props.onChange?.(val);\r\n helpers.setValue(val, true);\r\n };\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * MandatoryOfflineTypePicker\r\n *\r\n */\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { MandatoryOfflineTypeEnum } from 'enums/MandatoryOfflineTypeEnum';\r\nimport { OfflineReferenceTypeEnum } from 'enums/OfflineReferenceTypeEnum';\r\nimport { Entity } from 'types/common';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface MandatoryOfflineTypePickerProps\r\n extends Omit>, 'getOptions'> {\r\n refTypeId?: number;\r\n}\r\n\r\nexport const initMandatoryOfflineTypeData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n enumToEntityArray(MandatoryOfflineTypeEnum).filter(item => {\r\n return item.Id.toString() === initval || item.Name === initval;\r\n }),\r\n );\r\n });\r\n }\r\n};\r\nconst getOptions = (refTypeId?: number) => (searchTerm: string | null) => {\r\n let items = enumToEntityArray(MandatoryOfflineTypeEnum);\r\n if (refTypeId !== OfflineReferenceTypeEnum.Offline_ServiceRequest) {\r\n items = items.filter(\r\n item => item.Id !== MandatoryOfflineTypeEnum.Mandatory_OnCompletion,\r\n );\r\n }\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\nexport function MandatoryOfflineTypePicker(\r\n props: MandatoryOfflineTypePickerProps,\r\n) {\r\n const { refTypeId, mini, size, value, isOpen, id, ...other } = props;\r\n const getInnerOptions = getOptions(refTypeId);\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { MandatoryOfflineTypePicker } from '../pickers/StaticOptionsPickers/MandatoryOfflineTypePicker';\r\n\r\nexport const FormMandatoryOfflineTypePicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n IFieldProps & { refTypeId?: number }) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n helpers.setValue(value, true)}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n helperText={meta.error}\r\n disabled={props.disabled}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n />\r\n \r\n );\r\n};\r\n","import { Formik, FormikProps } from 'formik';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { useSelector } from 'react-redux';\r\nimport { isEmpty } from 'lodash';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport {\r\n FormListener,\r\n SubmittingHandler,\r\n} from 'app/components/Forms/FormRender/FormRenderer';\r\nimport * as Yup from 'yup';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IOfflineTypeRefsModel } from './slice/types';\r\nimport {\r\n EntityNumberSchema,\r\n ServiceTypeSchema,\r\n} from 'app/components/Forms/Schemas';\r\nimport { FormServiceShortPicker } from 'app/components/Forms/FormServiceShortPicker';\r\nimport { FormOfflineReferenceTypePicker } from 'app/components/Forms/FormOfflineRefernceTypePicker';\r\nimport { FormOfflineServiceTypePicker } from 'app/components/Forms/FormOfflineServiceTypePicker';\r\nimport { FormMandatoryOfflineTypePicker } from 'app/components/Forms/FormMandatoryOfflineTypePicker';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { formChangeHandler } from 'app/components/Forms/FormRender/IFormFieldSetting';\r\nimport { selectDetailsHasError } from './slice/selectors';\r\nimport { OfflineReferenceTypeEnum } from 'enums/OfflineReferenceTypeEnum';\r\nimport { quoteODataValue } from 'api/odata/ODataFilter';\r\nimport { MandatoryOfflineTypeEnum } from 'enums/MandatoryOfflineTypeEnum';\r\nimport { getSingleEnumEntityById } from 'utils/enumKeys';\r\nexport interface OfflineTypeRefsFormProps {\r\n onSubmit: (item: IOfflineTypeRefsModel) => void;\r\n initialValues: IOfflineTypeRefsModel;\r\n processing?: boolean;\r\n bindSubmitForm: any;\r\n isEdit: boolean;\r\n isAdmin: boolean;\r\n user?: AuthenticatedUser;\r\n innerFormRef: React.RefObject>;\r\n}\r\n\r\nexport const OfflineTypeRefsForm = React.memo(function OfflineTypeRefsForm({\r\n onSubmit,\r\n processing,\r\n initialValues,\r\n bindSubmitForm,\r\n isEdit,\r\n isAdmin,\r\n user,\r\n innerFormRef,\r\n}: OfflineTypeRefsFormProps) {\r\n const { t } = useTranslation();\r\n const hasError = useSelector(selectDetailsHasError);\r\n const readonly = isEdit;\r\n const [submitting, setSubmitting] = React.useState(\r\n undefined,\r\n );\r\n const resetSubmitting = () => {\r\n setSubmitting(true);\r\n };\r\n const handleSubmit = (values: IOfflineTypeRefsModel) => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(values);\r\n }\r\n };\r\n /// Local State ///\r\n const [refServiceChanged, setRefServiceChanged] = React.useState(false);\r\n const [offlineTypeChanged, setOfflineTypeChanged] = React.useState(false);\r\n const [refTypeChanged, setRefTypeChanged] = React.useState(false);\r\n\r\n const handleFormChange = React.useCallback<\r\n formChangeHandler\r\n >(\r\n (\r\n values,\r\n isValid,\r\n dirty,\r\n setFieldValue,\r\n setTouched,\r\n validateField,\r\n setError,\r\n validate,\r\n ) => {\r\n if (refServiceChanged) {\r\n setRefServiceChanged(false);\r\n }\r\n if (offlineTypeChanged) {\r\n setOfflineTypeChanged(false);\r\n if (values.OfflineServiceType !== null) {\r\n setFieldValue(\r\n 'DefaultQuantiy',\r\n (values.OfflineServiceType as IOfflineServiceFilterDto)\r\n ?.DefaultQuantity,\r\n );\r\n }\r\n }\r\n if (refTypeChanged) {\r\n setFieldValue('RefService', null);\r\n setFieldValue('OfflineServiceType', null);\r\n setFieldValue(\r\n 'Mandatory',\r\n getSingleEnumEntityById(\r\n MandatoryOfflineTypeEnum.Mandatory_Optional,\r\n MandatoryOfflineTypeEnum,\r\n t,\r\n ),\r\n );\r\n setRefTypeChanged(false);\r\n }\r\n },\r\n [refServiceChanged, offlineTypeChanged, refTypeChanged, t],\r\n );\r\n\r\n /// useEffects\r\n React.useEffect(() => {\r\n if (innerFormRef.current) {\r\n innerFormRef.current.validateForm();\r\n }\r\n }, [innerFormRef]);\r\n\r\n const computedSchema = React.useMemo(() => {\r\n const offlineRefsSchema: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().notRequired().default(-1),\r\n OfflineServiceType: ServiceTypeSchema.label(\r\n t(translations.OfflineServiceType) as string,\r\n )\r\n .nullable()\r\n .required(t(translations.err_OfflineServiceTypeRequired) as string),\r\n RefService: ServiceTypeSchema.label(\r\n t(translations.RelatedService) as string,\r\n )\r\n .nullable()\r\n .required(t(translations.RelatedServiceRequired_err) as string),\r\n RefType: EntityNumberSchema.nullable().required(\r\n t(translations.RefernceTypeRequired_err) as string,\r\n ),\r\n Mandatory: EntityNumberSchema.nullable()\r\n .label(t(translations.MandatoryOfflineRef) as string)\r\n .required(t(translations.MandatoryOfflineRef_required) as string),\r\n DefaultQuantity: Yup.number()\r\n .nullable()\r\n .notRequired()\r\n .default(null)\r\n .test(\r\n 'integerOnly',\r\n t(translations.err_IntQuantityOnly) as string,\r\n (value, context) => {\r\n let currVal = (context as any).from[0].value.DefaultQuantity;\r\n let offService = (context as any).from[0].value.OfflineServiceType;\r\n if (\r\n !!currVal &&\r\n currVal !== null &&\r\n currVal !== '' &&\r\n !!offService &&\r\n offService !== null\r\n ) {\r\n if (offService.IntQuantityOnly === true) {\r\n return Number(currVal) % 1 === 0;\r\n }\r\n }\r\n return true;\r\n },\r\n ),\r\n });\r\n return offlineRefsSchema;\r\n }, [t]);\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n formikHelpers.validateForm(values).then(responseErrors => {\r\n if (!isEmpty(responseErrors)) {\r\n formikHelpers.setSubmitting(false);\r\n console.debug('errors', responseErrors);\r\n } else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }\r\n });\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n let refPredicates: string[] = [];\r\n let offlinePredicates: string[] = [];\r\n if (\r\n formik.values.RefType?.Id ===\r\n OfflineReferenceTypeEnum.Offline_ServiceRequest\r\n ) {\r\n refPredicates = [`TypeId eq 3`];\r\n } else {\r\n refPredicates = [`TypeId eq 1`];\r\n }\r\n if (formik.values.OfflineServiceType !== null) {\r\n refPredicates.push(\r\n `ServiceGroupId eq ${\r\n (formik.values.OfflineServiceType as IOfflineServiceFilterDto)\r\n ?.ServiceGroupId\r\n }`,\r\n );\r\n }\r\n if (\r\n !!formik.values.RefService &&\r\n !!formik.values.RefService?.ServiceGroupId &&\r\n formik.values.RefService?.ServiceGroupId !== null\r\n ) {\r\n offlinePredicates = [\r\n `ServiceGroupId eq ${formik.values.RefService?.ServiceGroupId}`,\r\n ];\r\n }\r\n if (\r\n Number(formik.values.RefType?.Id) > 0 &&\r\n Number(formik.values.RefService?.Id) > 0\r\n ) {\r\n let rid = Number(formik.values.RefService?.Id);\r\n let rtid = Number(formik.values.RefType?.Id);\r\n offlinePredicates.push(\r\n `RelatedReferences/any(g: g/ReferenceTypeId eq ${quoteODataValue(\r\n rtid,\r\n )} and g/ReferenceId eq ${quoteODataValue(rid)}) eq false`,\r\n );\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setRefTypeChanged(true);\r\n }}\r\n />\r\n \r\n \r\n {\r\n setRefServiceChanged(true);\r\n }}\r\n predicates={refPredicates}\r\n />\r\n \r\n \r\n {\r\n setOfflineTypeChanged(true);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n (\r\n formik.values\r\n ?.OfflineServiceType as IOfflineServiceFilterDto\r\n )?.UnitTypeName\r\n }\r\n \r\n }\r\n inputProps={{\r\n step:\r\n (\r\n formik.values\r\n ?.OfflineServiceType as IOfflineServiceFilterDto\r\n )?.IntQuantityOnly === true\r\n ? 1\r\n : 0.01,\r\n min:\r\n (\r\n formik.values\r\n ?.OfflineServiceType as IOfflineServiceFilterDto\r\n )?.IntQuantityOnly === true\r\n ? 1\r\n : 0.01,\r\n max: 9999,\r\n 'aria-label': 'Counter',\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import { IOfflineServiceTypeRefsDto } from 'api/odata/generated/entities/IOfflineServiceTypeRefsDto';\r\nimport {\r\n IOfflineTypeRefsModel,\r\n OfflineTypeRefsQueryParams,\r\n} from './slice/types';\r\n\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { push } from 'connected-react-router';\r\nimport { FormikProps } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport {\r\n selectDetails,\r\n selectDetailsCompleted,\r\n selectDetailsHasError,\r\n selectIsEdit,\r\n selectProcessing,\r\n} from './slice/selectors';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useOfflineTypeRefsSlice } from './slice';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { Div100 } from 'app/components/DownloadFileButton';\r\nimport { OfflineTypeRefsForm } from './OfflineTypeRefsForm';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\n\r\nexport interface OfflineTypeReferencesDetailsProps\r\n extends SidePanelContentProps,\r\n CoverProps {\r\n queryParams: OfflineTypeRefsQueryParams;\r\n initialDetails?: IOfflineServiceTypeRefsDto;\r\n onCloseRefs?: () => void;\r\n}\r\n\r\nexport const OfflineTypeReferencesDetails = React.memo(\r\n function OfflineTypeReferencesDetails(\r\n props: OfflineTypeReferencesDetailsProps,\r\n ) {\r\n const {\r\n queryParams,\r\n useSidePanel,\r\n initialDetails,\r\n closeCover,\r\n isCover,\r\n onCloseRefs,\r\n } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineTypeRefsSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n\r\n /// Selectors ///\r\n const processing = useSelector(selectProcessing);\r\n const refsDetails = useSelector(selectDetails);\r\n const User = useSelector(selectAuthenticatedUser);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const edit = useSelector(selectIsEdit);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const actionCompleted = useSelector(selectDetailsCompleted);\r\n const hasError = useSelector(selectDetailsHasError);\r\n /// Refs ///\r\n const submitFormRef = React.useRef(null);\r\n const innerFormRef = React.useRef>(null);\r\n\r\n const { cover, closePanel, coverClosed, onCloseCover } = useSidePanelState(\r\n () => {\r\n dispatch(actions.resetDetailsState());\r\n if (!!onCloseRefs) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n undefined,\r\n useSidePanel,\r\n isCover,\r\n );\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n const [busy, setBusy] = React.useState(false);\r\n\r\n const [requestCompleted, setRequestCompleted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n const fullAdmin = React.useMemo(() => {\r\n return User !== undefined && User.Roles.includes(Roles.Administrators);\r\n }, [User]);\r\n const IsAdmin = React.useMemo(() => {\r\n return (\r\n fullAdmin ||\r\n User?.HasAdminGroupPermissions(\r\n refsDetails?.data?.RefService?.ServiceGroupId ?? undefined,\r\n )\r\n );\r\n }, [fullAdmin, User, refsDetails?.data?.RefService?.ServiceGroupId]);\r\n\r\n React.useEffect(() => {\r\n let active = firstLoad;\r\n if (active) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.initDetails({\r\n query: queryParams,\r\n model: initialDetails,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [actions, dispatch, firstLoad, initialDetails, queryParams]);\r\n /// functions, callbacks ///\r\n\r\n const handleCloselClick = React.useCallback(() => {\r\n if (useSidePanel) {\r\n if (!!onCloseRefs) {\r\n onCloseRefs();\r\n dispatch(actions.resetDetailsState());\r\n } else {\r\n closePanel({\r\n isCover: isCover || !!cover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n onClose: () => {\r\n dispatch(actions.resetDetailsState());\r\n },\r\n } as SidePanelCloseState);\r\n }\r\n } else {\r\n dispatch(push('/ServiceRelatedRefs'));\r\n }\r\n }, [\r\n actions,\r\n closePanel,\r\n cover,\r\n dispatch,\r\n hasChanges,\r\n isCover,\r\n onCloseRefs,\r\n useSidePanel,\r\n ]);\r\n\r\n const handleSaveClick = React.useCallback((e: any) => {\r\n handleSubmitForm(e);\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: IOfflineTypeRefsModel) => {\r\n setBusy(true);\r\n if (edit) {\r\n dispatch(\r\n actions.updateRefs({\r\n current: values,\r\n original: refsDetails.data || values,\r\n }),\r\n );\r\n } else {\r\n dispatch(actions.createRefs(values));\r\n }\r\n },\r\n [actions, dispatch, edit, refsDetails.data],\r\n );\r\n /// Use Effects ///\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n // if (queryParams.id !== undefined && !isNaN(parseInt(queryParams.id))) {\r\n // setEdit(true);\r\n // } else {\r\n // setEdit(false);\r\n // }\r\n if (actionCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n if (!hasError) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n handleCloselClick();\r\n }\r\n } else if (actionCompleted === false) {\r\n setRequestCompleted(undefined);\r\n setBusy(false);\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actionCompleted,\r\n dispatch,\r\n handleCloselClick,\r\n hasError,\r\n layoutActions,\r\n processing,\r\n queryParams.id,\r\n ]);\r\n\r\n const leftActions = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n actions.push(() => (\r\n }\r\n onClick={handleSaveClick}\r\n disabled={busy || !IsAdmin}\r\n processing={!requestCompleted && busy}\r\n >\r\n {t(translations.Save)}\r\n \r\n ));\r\n return actions;\r\n }, [IsAdmin, busy, handleSaveClick, requestCompleted, t]);\r\n const rightActions = React.useMemo(() => {\r\n return [\r\n () => (\r\n \r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Close)}\r\n \r\n \r\n ),\r\n ] as ActionRenderer[];\r\n }, [handleCloselClick, t]);\r\n const titlePage = React.useMemo(() => {\r\n return refsDetails?.data\r\n ? ` ${t(translations.RelatedService)} to ${\r\n refsDetails?.data.RefType?.Name ||\r\n innerFormRef?.current?.values?.RefType?.Name\r\n }`\r\n : undefined;\r\n }, [refsDetails?.data, t]);\r\n return (\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n pageLink={buildURL(\r\n publicUrl + 'ServiceRelatedRefs/details',\r\n queryParams,\r\n )}\r\n toPageLink={`ServiceRelatedRefs/details?${toQueryString(\r\n queryParams,\r\n )}`}\r\n rightActions={rightActions}\r\n isCover={isCover}\r\n cover={cover}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n coverClosed={coverClosed}\r\n />\r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n },\r\n);\r\n","import { PageTypeProps, RenderPageType } from '../../slice/type';\r\nimport * as React from 'react';\r\nimport {\r\n TrainingDetails,\r\n TrainingDetailsProps,\r\n} from 'app/pages/UserTrainings/TrainingDetailsPage/Details';\r\nimport { StartQuiz, StartQuizProps } from 'app/pages/QuizPage/StartQuiz';\r\nimport {\r\n QuizDetails,\r\n QuizDetailsProps,\r\n} from 'app/pages/QuizDetailsPage/QuizDetails';\r\nimport { AssetPopUp, AssetPopUpProps } from 'app/pages/AssetPopUp';\r\nimport {\r\n LocationDetails,\r\n LocationDetailsProps,\r\n} from 'app/pages/LocationsPage/Details';\r\nimport {\r\n WorkOrderDetails,\r\n WorkOrderDetailsProps,\r\n} from 'app/pages/WorkOrders/WorkOrderDetailsPage/Details';\r\nimport { AddPayment, PaymentProps } from 'app/pages/AddPaymentPage';\r\nimport { AddCharge, ChargeProps } from 'app/pages/AddChargePage';\r\nimport {\r\n BillingActionsDetails,\r\n BillingActionsDetailsProps,\r\n} from 'app/pages/BillingActions/BillingActionsDetailsPage/Details';\r\nimport {\r\n SavedViewDetails,\r\n SavedViewDetailsProps,\r\n} from 'app/pages/SavedViewsPage/SavedViewPage/Details';\r\nimport { LabelTypePage } from 'app/pages/LabelTypesPage/LabelTypeEdit/Loadable';\r\nimport { LabelTypeEditProps } from 'app/pages/LabelTypesPage/LabelTypeEdit';\r\nimport {\r\n InstrumentRestrictions,\r\n InstrumentRestrictionsProps,\r\n} from 'app/pages/InstrumentRestrictionsPage/Details/InstrumentRestrictions';\r\nimport {\r\n ReservationDetails,\r\n ReservationDetailsProps,\r\n} from 'app/pages/ReservationDetails/Details';\r\nimport {\r\n InvoiceTemplatePopUp,\r\n InvoiceTemplatePopUpProps,\r\n} from 'app/pages/InvoiceTemplates/InvoiceTemplatePopUp';\r\nimport {\r\n OtherServiceDetails,\r\n OtherServiceDetailsProps,\r\n} from 'app/pages/OtherServiceDetails/Details';\r\nimport {\r\n PricePeriodDetails,\r\n PricePeriodDetailsProps,\r\n} from 'app/pages/PriceSheetPeriodDetails/Details';\r\nimport {\r\n ArticleDetails,\r\n ArticleDetailsProps,\r\n} from 'app/pages/ArticlesPage/ArticleDetails';\r\nimport {\r\n CoreSelection,\r\n CoreSelectionProps,\r\n} from 'app/pages/CoreSelectionPage/CoreSelection';\r\nimport {\r\n AssetsSelection,\r\n AssetsSelectionProps,\r\n} from 'app/pages/MyAssetsPage/AssetsSelection/AssetsSelection';\r\nimport {\r\n NewArticleDetailsForm,\r\n NewArticleDetailsFormProps,\r\n} from 'app/pages/ArticlesPage/NewArticleDetailsForm';\r\nimport {\r\n EditArticleDetailsForm,\r\n EditArticleDetailsFormProps,\r\n} from 'app/pages/ArticlesPage/EditArticleDetailsForm';\r\nimport {\r\n UserAttributesDetails,\r\n UserAttributesDetailsProps,\r\n} from 'app/pages/UserAttributes/UserAttributesDetailsPage/Details';\r\nimport {\r\n ServiceRequestDetails,\r\n ServiceRequestDetailsProps,\r\n} from 'app/pages/Samples/RequestSamplesPage';\r\nimport {\r\n ServiceRequestTicketDetails,\r\n ServiceRequestTicketDetailsProps,\r\n} from 'app/pages/ServiceRequestTicketDetailsPage/ServiceRequestTicketDetails';\r\nimport {\r\n ReportConsumables,\r\n ReportConsumablesProps,\r\n} from 'app/pages/OtherServiceDetails/ReportConsumables';\r\nimport {\r\n CalendarMessagesDetails,\r\n CalendarMessagesDetailsProps,\r\n} from 'app/pages/CalendarMessages/CalendarMessagesDetails/Details';\r\nimport {\r\n ServiceRequestMilestoneChargeDetails,\r\n ServiceRequestMilestoneChargeDetailsProps,\r\n} from 'app/pages/Samples/components/ServiceRequestMilestoneChargeDetails';\r\nimport {\r\n ServiceRequestMilestoneDetails,\r\n ServiceRequestMilestoneDetailsProps,\r\n} from 'app/pages/Samples/components/ServiceRequestMilestoneDetails';\r\nimport {\r\n StockRenewal,\r\n StockRenewalProps,\r\n} from 'app/pages/OtherServiceDetails/StockRenewal';\r\nimport {\r\n RenewStock,\r\n RenewStockProps,\r\n} from 'app/pages/OtherServiceDetails/RenewStock';\r\nimport {\r\n InventoryBatch,\r\n InventoryBatchProps,\r\n} from 'app/pages/OtherServiceDetails/InventoryBatch';\r\nimport {\r\n InvoiceBatchesComments,\r\n InvoiceBatchesCommentsProps,\r\n} from 'app/pages/InvoiceBatches/InvoiceBatchesComments';\r\nimport {\r\n InventoryLog,\r\n InventoryLogProps,\r\n} from 'app/pages/AssetsInventoryLog/InventoryLog';\r\nimport {\r\n ArticleAssociationForm,\r\n ArticleAssociationFormProps,\r\n} from 'app/pages/ArticlesPage/ArticleAssociationForm';\r\nimport {\r\n RequestStatusesDetails,\r\n RequestStatusesDetailsProps,\r\n} from 'app/pages/RequestStatuses/RequestStatusesDetailsPage/Details';\r\nimport {\r\n MultipleReservations,\r\n MultipleReservationsProps,\r\n} from 'app/pages/ReservationDetails/Details/MultipleReservations';\r\nimport {\r\n SignUpWaitingListDetails,\r\n SignUpWaitingListDetailsProps,\r\n} from 'app/pages/ReservationWaitingListPage/SignUpWaitingListDetails';\r\nimport { InvoiceDetails, InvoiceDetailsProps } from 'app/pages/InvoiceDetails';\r\nimport {\r\n SamplePlatesDetails,\r\n SamplePlatesDetailsProps,\r\n} from 'app/pages/Samples/SamplePlatesDetailsPage/Details';\r\nimport { AssetFile, AssetFileProps } from 'app/pages/AssetFile';\r\nimport {\r\n UsageDetails,\r\n UsageDetailsProps,\r\n} from 'app/pages/UsageDetails/Details';\r\nimport {\r\n RegionDetails,\r\n RegionDetailsProps,\r\n} from 'app/pages/Regions/RegionsDetailsPage/Details';\r\nimport { UserDetails, UserDetailsProps } from 'app/pages/UserDetails/Details';\r\nimport {\r\n SubscribersDetails,\r\n SubscribersDetailsProps,\r\n} from 'app/pages/SubscribersDetailsPage/Details';\r\nimport {\r\n CostCentersDetails,\r\n CostCentersDetailsProps,\r\n} from 'app/pages/CostCentersDetailsPage/Details';\r\nimport {\r\n OfflineTypeReferencesDetails,\r\n OfflineTypeReferencesDetailsProps,\r\n} from 'app/pages/OfflineTypeReferencesDetails/Details';\r\nimport {\r\n OfflineTypeReferencesPopUp,\r\n OfflineTypeReferencesPopUpProps,\r\n} from 'app/pages/OfflineTypeReferencesPage/OfflineTypeReferencesPopUp';\r\nimport {\r\n CustomFormPreview,\r\n CustomFormPreviewProps,\r\n} from 'app/pages/CustomFormPreviewPage/CustomFormPreview';\r\n\r\nexport interface SidePanelRendererProps {\r\n renderPageType?: RenderPageType;\r\n renderPageProps: PageTypeProps;\r\n}\r\n\r\nexport function SidePanelRenderer(props: SidePanelRendererProps) {\r\n const { renderPageType, renderPageProps } = props;\r\n\r\n switch (renderPageType) {\r\n case RenderPageType.TrainingDetails:\r\n return ;\r\n case RenderPageType.QuizCreate:\r\n return ;\r\n case RenderPageType.QuizzDetails:\r\n return ;\r\n case RenderPageType.LocationDetails:\r\n return ;\r\n case RenderPageType.AssetDetails:\r\n return ;\r\n case RenderPageType.WorkOrderDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.AddCharge:\r\n return ;\r\n case RenderPageType.AddPayment:\r\n return ;\r\n case RenderPageType.InvoiceDetails:\r\n return ;\r\n case RenderPageType.AddBillingAction:\r\n return (\r\n \r\n );\r\n case RenderPageType.SavedViewDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.LabelType:\r\n return ;\r\n case RenderPageType.OtherServiceDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.RestrictionDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.ReservationDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.PricePeriodsDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.Article:\r\n return ;\r\n case RenderPageType.ArticleNew:\r\n return (\r\n \r\n );\r\n case RenderPageType.ArticleEdit:\r\n return (\r\n \r\n );\r\n case RenderPageType.InvoiceTemplatePopUp:\r\n return (\r\n \r\n );\r\n case RenderPageType.CoreSelection:\r\n return ;\r\n case RenderPageType.AssetsSelection:\r\n return ;\r\n case RenderPageType.UserAttributesDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.ServiceRequestDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.ServiceRequestTicketDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.CalendarMessagesDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.ReportConsumables:\r\n return (\r\n \r\n );\r\n case RenderPageType.ServiceRequestMilestone:\r\n return (\r\n \r\n );\r\n case RenderPageType.ServiceRequestMilestoneCharge:\r\n return (\r\n \r\n );\r\n case RenderPageType.StockRenewal:\r\n return ;\r\n case RenderPageType.RenewStock:\r\n return ;\r\n case RenderPageType.InventoryBatch:\r\n return ;\r\n case RenderPageType.InvoiceBatchesComments:\r\n return (\r\n \r\n );\r\n case RenderPageType.AssetInventoryLog:\r\n return ;\r\n case RenderPageType.ArticleForm:\r\n return (\r\n \r\n );\r\n case RenderPageType.RequestStatusesDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.MultiReservations:\r\n return (\r\n \r\n );\r\n case RenderPageType.SignUpWaitingListDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.SamplePlatesDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.AssetFile:\r\n return (\r\n \r\n );\r\n case RenderPageType.UsageDetails:\r\n return ;\r\n case RenderPageType.RegionDetails:\r\n return ;\r\n case RenderPageType.UserProfile:\r\n return (\r\n \r\n );\r\n case RenderPageType.SubscribersDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.CostCentersDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.OfflineTypeRefDetails:\r\n return (\r\n \r\n );\r\n case RenderPageType.OfflineTypeRefs:\r\n return (\r\n \r\n );\r\n case RenderPageType.CustomFormPreview:\r\n return (\r\n \r\n );\r\n default:\r\n return ;\r\n }\r\n}\r\n","/**\r\n *\r\n * PriorityFilter\r\n *\r\n */\r\n\r\nimport { PrioritiesUnion } from 'api/odata/generated/enums/Priorities';\r\nimport {\r\n PriorityMultiPicker,\r\n PriorityPicker,\r\n} from 'app/components/pickers/StaticOptionsPickers/PriorityPicker';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IFilterComponentProps } from '..';\r\n\r\nexport const PriorityFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: PrioritiesUnion | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const PriorityMultiFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: PrioritiesUnion[]) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\n","import { ODataOperators } from 'api/odata/ODataFilter';\r\nimport { GetPageFilters } from 'app/components/BasicTable/BasicFilter/GetPageFilters';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport {\r\n URLSearchParamsCI,\r\n arrayToQueryString,\r\n getNumberEntityArray,\r\n initMultiPickerValue,\r\n GetRawValue,\r\n getStringUnionArrayOrUndefined,\r\n} from 'app/components/BasicTable/types/FilterParam';\r\nimport {\r\n ServiceRequestStatusMultiPicker,\r\n initServiceRequestStatusMultiDataBySelectOrder,\r\n} from 'app/components/pickers/AutocompletePickers/ServiceRequestStatusMultiPicker';\r\nimport { translations } from 'locales/translations';\r\nimport { PrioritiesUnionArray } from 'api/odata/generated/enums/Priorities';\r\nimport { PriorityMultiFilter } from 'app/components/BasicTable/Filters/PriorityFilter';\r\nimport { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\n//import { IServiceRequestDto } from 'api/odata/generated/entities/IServiceRequestDto';\r\n\r\nexport const StatusFilterId = 'Status';\r\nexport const PriorityFilterId = 'Priority';\r\nexport const GetFilters: GetPageFilters<\r\n IServiceRequestTicketDto /* IServiceRequestDto */\r\n> = (t, appSettings, user, settings) => search => {\r\n const params = new URLSearchParamsCI(search);\r\n const result: IFilterSettings[] =\r\n [\r\n {\r\n id: StatusFilterId,\r\n fieldName: 'Status',\r\n queryStringSerializer: arrayToQueryString('RequestStatusInclude'),\r\n displayNameKey: translations.IncludeStatus,\r\n operator: ODataOperators.Includes,\r\n value: getNumberEntityArray(params, 'RequestStatusInclude'),\r\n component: ServiceRequestStatusMultiPicker,\r\n initData: initMultiPickerValue(\r\n initServiceRequestStatusMultiDataBySelectOrder,\r\n ),\r\n urlKey: 'RequestStatusInclude',\r\n },\r\n {\r\n id: PriorityFilterId,\r\n fieldName: 'Priority',\r\n displayNameKey: translations.Priority,\r\n operator: ODataOperators.Includes,\r\n queryStringSerializer: arrayToQueryString('Priority'),\r\n value: getStringUnionArrayOrUndefined(\r\n GetRawValue(params, 'Priority'),\r\n PrioritiesUnionArray,\r\n ),\r\n component: PriorityMultiFilter,\r\n urlKey: 'Priority',\r\n },\r\n ];\r\n return result;\r\n};\r\n","import * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompleteMultiPicker,\r\n AutocompleteMultiPickerProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPicker';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport { InternalServiceRequestStatusesUnion } from 'enums/InternalServiceRequestStatuses';\r\nimport { orderBy } from 'lodash';\r\n\r\nconst url = '/api/odata/v4/ServiceRequestStatusFilter';\r\n\r\nexport interface ServiceRequestStatusMultiPickerProps\r\n extends Omit<\r\n AutocompleteMultiPickerProps,\r\n 'loadData'\r\n > {\r\n exclude?: InternalServiceRequestStatusesUnion[];\r\n}\r\n\r\nexport const initServiceRequestStatusMultiData = (\r\n initialValue: string | undefined,\r\n) => {\r\n if (initialValue === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IServiceRequestStatusDto[]);\r\n });\r\n } else {\r\n const ids = initialValue.split('|').map(v => parseInt(v));\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id in (' + ids.join(',') + '))',\r\n $select: 'Id,Name,InternalStatusId',\r\n $skip: 0,\r\n $top: ids.length,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as IServiceRequestStatusDto[]);\r\n }\r\n};\r\n\r\nexport const initServiceRequestStatusMultiDataBySelectOrder = (\r\n initialValue: string | undefined,\r\n) => {\r\n const result = initServiceRequestStatusMultiData(initialValue);\r\n const ids = initialValue?.split('|').map(v => parseInt(v));\r\n if (ids === undefined) return result;\r\n return result.then(results =>\r\n orderBy(results, r => ids.findIndex(v => v === r.Id)),\r\n );\r\n};\r\n\r\nconst getLoadDataFn =\r\n (exclude?: InternalServiceRequestStatusesUnion[]) =>\r\n (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n const predicates: Array> = [];\r\n if (exclude !== undefined && exclude.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'InternalStatusId',\r\n ODataOperators.Excludes,\r\n exclude,\r\n ),\r\n );\r\n }\r\n params.$filter = new ODataFilterBuilder({\r\n predicates: predicates,\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as IServiceRequestStatusDto[]);\r\n };\r\n\r\nexport function ServiceRequestStatusMultiPicker(\r\n props: ServiceRequestStatusMultiPickerProps,\r\n) {\r\n const loadData = React.useMemo(\r\n () => getLoadDataFn(props.exclude),\r\n [props.exclude],\r\n );\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * Popover\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Popover as MuiPopover } from '@material-ui/core';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { PopperTitle } from '../Popper/PopperTitle';\r\nimport styled from 'styled-components';\r\n\r\nexport interface PopperProps {\r\n id?: string;\r\n title: React.ReactNode;\r\n open: boolean;\r\n anchorEl?: EventTarget & HTMLDivElement;\r\n children: React.ReactNode;\r\n onClose: React.MouseEventHandler;\r\n className?: string;\r\n closeTitle?: string;\r\n}\r\n\r\nexport function Popover(props: PopperProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const isMobile = DetectIsMobile();\r\n // const classes = useStyles({ isMobile: isMobile });\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    {props.children}
    \r\n
    \r\n \r\n );\r\n}\r\n\r\nconst StyledDiv = styled.div`\r\n height: 100%;\r\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\r\n & .select-root {\r\n padding: 0 0 16px 0;\r\n }\r\n & .select-title {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0 24px 0 8px;\r\n justify-content: space-between;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const PopoverPaddingWrapper = styled.div`\r\n padding: 0 16px 0 16px;\r\n`;\r\n","import { BillingActionsDetailsQStringParameters } from 'app/pages/BillingActions/BillingActionsDetailsPage/Details/slice/types';\r\nimport { httpClient } from './HttpClient';\r\nimport { IBillingActionsDto } from '../app/pages/BillingActions/BillingActionsPage/IBillingActionsDto';\r\nimport { IResponseType } from '../types/ResponseType';\r\nimport { IBillingDto } from 'app/pages/InvoiceBillingPage/IBillingDto';\r\nimport { IInvoiceBatchesDto } from 'app/pages/InvoiceBatches/IInvoiceBatchesDto';\r\nimport { IBillingActionInvoice } from 'app/pages/InvoiceBillingPage/SelectedRowActions/BillingActionsPopup/BillingActionsPopupTable/IBillingActionInvoice';\r\n\r\nexport const BillingActionsApi = {\r\n initCreateData: (payload: BillingActionsDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/BillingActions/InitBillingActions';\r\n return httpClient.post(url, data);\r\n },\r\n initUpdateData: (payload: BillingActionsDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/BillingActions/InitBillingActions';\r\n return httpClient.post(url, data);\r\n },\r\n insertBillingActionsDetails: (payload: IBillingActionsDto) => {\r\n const url = '/api/odata/v4/BillingActions'; //POST action in Controller\r\n return httpClient.post(url, payload);\r\n },\r\n updateBillingActionsDetails: (payload: IBillingActionsDto) => {\r\n const url = `/api/odata/v4/BillingActions(${payload.Id})`; //PUT action in Controller\r\n return httpClient.put(url, payload);\r\n },\r\n deleteBillingActionsDetails: (\r\n rows: IBillingActionsDto[],\r\n ): Promise => {\r\n const billingActionIds: number[] = rows.map(item => item.Id);\r\n const data = { billingActionIds };\r\n const url = '/api/odata/v4/BillingActions/DeleteBillingActions';\r\n return httpClient.post(url, data);\r\n },\r\n getBillingActions: (screen: number) => {\r\n const url = `/api/odata/v4/BillingActions(${screen})`;\r\n return httpClient.get(url, {\r\n $expand: ['EmailAttachmentTypes', 'EmailRecipientTypes'].join(','),\r\n });\r\n },\r\n getBillingActionById: (screen: number, billingActionId: number) => {\r\n const url = `/api/odata/v4/BillingActions(${screen})`;\r\n const params: {\r\n $filter?: string;\r\n $expand?: string;\r\n } = {\r\n $filter: '(Id eq ' + billingActionId + ')',\r\n $expand: ['EmailAttachmentTypes', 'EmailRecipientTypes'].join(','),\r\n };\r\n return httpClient.get(url, params);\r\n },\r\n getBillingActionInvoices: (\r\n batchInvoiceIds: IBillingDto[] | IInvoiceBatchesDto[],\r\n screen: number,\r\n ) => {\r\n const ids: string = batchInvoiceIds.map(item => item.Id).join(',');\r\n const data = { ids, screen };\r\n const url = '/api/odata/v4/BillingActions/GetBillingActionInvoices';\r\n return httpClient.post(url, data);\r\n },\r\n processEmailAction: (\r\n billingActionsParams: IBillingActionsDto,\r\n rows: IBillingDto[] | IInvoiceBatchesDto[],\r\n ) => {\r\n const billingActionId: number = billingActionsParams.Id;\r\n const invoiceIds: string = rows.map(item => item.Id).join(',');\r\n const data = { billingActionId, invoiceIds };\r\n const url = '/api/odata/v4/BillingActions/ProcessEmailAction';\r\n return httpClient.post(url, data);\r\n },\r\n ProcessSftpUploadAction: (\r\n billingActionsParams: IBillingActionsDto,\r\n rows: IBillingDto[] | IInvoiceBatchesDto[],\r\n ) => {\r\n const billingActionId: number = billingActionsParams.Id;\r\n const invoiceIds: string = rows.map(item => item.Id).join(',');\r\n const data = { billingActionId, invoiceIds };\r\n const url = '/api/odata/v4/BillingActions/ProcessSftpUploadAction';\r\n return httpClient.post(url, data);\r\n },\r\n processStatusAction: (\r\n billingActionsParams: IBillingActionsDto,\r\n rows: IBillingActionInvoice[],\r\n ) => {\r\n const billingActionId: number = billingActionsParams.Id;\r\n const invoiceIds: string = rows.map(item => item.Id).join(',');\r\n const data = { billingActionId, invoiceIds };\r\n const url = '/api/odata/v4/BillingActions/ProcessStatusAction';\r\n return httpClient.post(url, data);\r\n },\r\n getRecipientsEmailAddresses: (\r\n rows: IBillingDto[] | IInvoiceBatchesDto[],\r\n billingActionsRow: IBillingActionsDto,\r\n ) => {\r\n const invoiceIds: number[] = rows.map(item => item.Id);\r\n const emailTypes: number[] = billingActionsRow.EmailRecipientTypes.map(\r\n item => item.Id,\r\n );\r\n const screen: number = billingActionsRow.ShowOn;\r\n const specEmailAddresses: string | null =\r\n billingActionsRow.SpecificEmailAddresses;\r\n const data = { invoiceIds, emailTypes, screen, specEmailAddresses };\r\n const url = '/api/odata/v4/BillingActions/GetRecipientsEmailAddresses';\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import { IInvoiceBudgetBalanceDto } from 'api/odata/generated/entities/IInvoiceBudgetBalanceDto';\r\nimport { AsyncDataState, AsyncProgressState } from 'types/common';\r\nimport { IResponseType } from 'types/ResponseType';\r\n\r\nexport interface IChargeOnlineBudgetState\r\n extends AsyncProgressState> {\r\n currentRecord?: IInvoiceBudgetBalanceDto;\r\n errors?: string[];\r\n}\r\n\r\n/* --- STATE --- */\r\nexport interface OnlineBudgetsStatusState {\r\n endDate: string | null;\r\n needTableRefresh: boolean;\r\n tableState: AsyncDataState>;\r\n selected: IInvoiceBudgetBalanceDto[];\r\n generateInvoicesState: AsyncDataState;\r\n charge: IChargeOnlineBudgetState;\r\n pay: IPayState;\r\n generateInvoicesAndSendToSap: IGenerateInvoicesAndSendToSapState;\r\n}\r\n\r\nexport interface IPayState {\r\n currentRecord?: IInvoiceBudgetBalanceDto;\r\n selected?: IInvoiceBudgetBalanceDto[];\r\n progress?: number;\r\n status?: PromiseStatus;\r\n dialogOpen?: boolean;\r\n data?: IPayActionPayload;\r\n messages?: IResponseType[];\r\n}\r\nexport type PromiseStatus = `pending` | `resolved` | `rejected`;\r\n\r\nexport enum PaymentMethods {\r\n BudgetTransfer = 1,\r\n CreditCard = 2,\r\n Wire = 3,\r\n Cash = 4,\r\n Check = 5,\r\n Other = 6,\r\n}\r\n\r\nexport interface IPayActionPayload {\r\n PaymentMethod: PaymentMethods;\r\n EndDate: Date;\r\n Rows: Array;\r\n}\r\n\r\nexport interface IProgressAction {\r\n selected: T[];\r\n progress?: number;\r\n status?: PromiseStatus;\r\n}\r\n\r\nexport interface ChargeOnlineBudgetResponse {\r\n Messages: string[];\r\n SuccessTransactionsCount: number;\r\n TransactionsCount: number;\r\n FailedTransactionsCount: number;\r\n}\r\n\r\nexport interface IGenerateInvoicesAndSendToSapState {\r\n processing?: boolean;\r\n dialogOpen?: boolean;\r\n progress?: number;\r\n selected?: IInvoiceBudgetBalanceDto[];\r\n endDate?: Date;\r\n currentRecord?: IInvoiceBudgetBalanceDto;\r\n}\r\n","export enum ServiceGroupAdminsManageUsersEnum {\r\n ServiceGroupAdminsCanManageUsers_NA = 1,\r\n ServiceGroupAdminsCanManageUsers_CanAssignOnlySSOusers = 2,\r\n ServiceGroupAdminsCanManageUsers_CanAssignAnyUser = 3,\r\n}\r\n","import {\r\n Input,\r\n InputBaseProps,\r\n InputClassKey,\r\n StandardProps,\r\n} from '@material-ui/core';\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nexport interface StandardInputProps\r\n extends StandardProps {\r\n disableUnderline?: boolean;\r\n className?: string;\r\n fullWidth?: boolean;\r\n multiline?: boolean;\r\n noBorder?: boolean;\r\n info?: string;\r\n}\r\n// export function StandardInput(\r\n// {\r\n// classes,\r\n// className,\r\n// fullWidth,\r\n// inputComponent,\r\n// multiline,\r\n// noBorder,\r\n// type,\r\n// ...rest\r\n// }: StandardInputProps,\r\n// ref: React.Ref,\r\n// ) {\r\n// const innerClasses = styles();\r\n// fullWidth = false;\r\n// inputComponent = 'input';\r\n// multiline = false;\r\n// noBorder = false;\r\n// type = 'text';\r\n\r\n// return (\r\n// \r\n// );\r\n// }\r\nexport const StandardInput = React.forwardRef<\r\n React.HTMLAttributes,\r\n StandardInputProps\r\n>(function StandardInput(props, ref) {\r\n const {\r\n disableUnderline = true,\r\n className,\r\n fullWidth = false,\r\n inputComponent = 'input',\r\n multiline = false,\r\n type = 'text',\r\n ...rest\r\n } = props;\r\n return (\r\n \r\n );\r\n});\r\nexport default StandardInput;\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { IPayment } from 'app/pages/AddPaymentPage/IPayment';\r\n//import { IResponseType } from 'types/ResponseType';\r\nconst url = '/api/odata/v4/Payment';\r\nexport interface IPaymentPayload extends IPayment {\r\n ShouldCloseInvoice?: boolean;\r\n}\r\nexport const PaymentApi = {\r\n AddPayment: (payment: IPaymentPayload) => {\r\n const data = {\r\n InvoiceId: payment.InvoiceId,\r\n MethodId: payment.Method?.Id,\r\n Amount: payment.Amount,\r\n Date: payment.Date,\r\n Remarks: payment.Remarks,\r\n Reference: payment.Reference,\r\n BudgetId: payment.Budget?.Id,\r\n ServiceGroupId: payment.ServiceGroup?.Id,\r\n ShouldCloseInvoice: payment.ShouldCloseInvoice,\r\n };\r\n return httpClient.post(url, data);\r\n },\r\n UpdatePayment: (paymentId: number, payment: IPaymentPayload) => {\r\n const data = {\r\n InvoiceId: payment.InvoiceId,\r\n MethodId: payment.Method?.Id,\r\n Amount: payment.Amount,\r\n Date: payment.Date,\r\n Remarks: payment.Remarks,\r\n Reference: payment.Reference,\r\n BudgetId: payment.Budget?.Id,\r\n ServiceGroupId: payment.ServiceGroup?.Id,\r\n ShouldCloseInvoice: payment.ShouldCloseInvoice,\r\n };\r\n return httpClient.put(url + '(' + paymentId + ')', data);\r\n },\r\n};\r\n","import * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport clsx from 'clsx';\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport { RowSection } from '../wrappers';\r\n\r\nexport interface FormRowProps {\r\n children: React.ReactNode;\r\n fullRow?: boolean;\r\n minRow?: boolean;\r\n hide?: boolean;\r\n wrapOnMobile?: boolean;\r\n isCover?: boolean;\r\n shrink?: '1' | '2' | '3';\r\n}\r\nexport const FormRow = (props: FormRowProps) => {\r\n const { children, fullRow, hide, minRow, wrapOnMobile, isCover, shrink } =\r\n props;\r\n const isMobile = DetectIsMobile();\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const showShortView =\r\n isMobile || (sidePanelOpen && !sidePanelExpanded) || isCover;\r\n const shrinkClass = shrink ? `shrink-${shrink}` : '';\r\n const theme = useTheme();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.samplePlates || initialState;\r\n\r\nexport const selectSamplePlates = createSelector([selectSlice], state => state);\r\n\r\nexport const selectSamplePlatesData = createSelector(\r\n [selectSamplePlates],\r\n state => state.data,\r\n);\r\nexport const selectSamplePlatesTableState = createSelector(\r\n [selectSamplePlates],\r\n state => state.tableState,\r\n);\r\n/* export const selectSamplePlatesCreate = createSelector(\r\n [selectSamplePlates],\r\n state => state.create,\r\n); */\r\n\r\nexport const selectBulkSamplePlatesCreate = createSelector(\r\n [selectSamplePlates],\r\n state => state.bulckCreate,\r\n);\r\n\r\n/* export const selectSamplePlatesUpdate = createSelector(\r\n [selectSamplePlates],\r\n state => state.update,\r\n); */\r\n","/*\r\n * Asynchronously loads the component for NotAvailable\r\n */\r\n\r\nimport { lazyLoad } from 'utils/loadable';\r\n\r\nexport const NotAvailable = lazyLoad(\r\n () => import('./index'),\r\n module => module.NotAvailable,\r\n);\r\n","/**\r\n *\r\n * FilterBox\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport clsx from 'clsx';\r\nimport { FilterBoxRoot } from '../styled';\r\nimport { useIsMobile } from 'app/hooks/useIsMobile';\r\n\r\nexport type Directions = 'vertical' | 'horizontal';\r\nexport interface FilterBoxCoreProps {\r\n direction: Directions;\r\n}\r\nexport interface FilterBoxProps\r\n extends React.PropsWithChildren<\r\n FilterBoxCoreProps & React.HTMLAttributes\r\n > {}\r\n\r\nexport const FilterBox = React.forwardRef(function FilterBox(\r\n props: FilterBoxProps,\r\n ref: any,\r\n) {\r\n const { checkIsMobile, isLandscape } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import { Button, ButtonProps } from 'app/components/BasicButtons/Button';\r\nimport { selectglobalSettings } from 'app/slice/selectors';\r\nimport { useSelector } from 'react-redux';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport * as React from 'react';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport interface SaveFormButtonProps extends ButtonProps {\r\n edit: boolean;\r\n text: string;\r\n onClick: (e: any) => void;\r\n}\r\nexport interface ActivateButtonProps extends ButtonProps {\r\n edit: boolean;\r\n text: string;\r\n onClick: () => void;\r\n ServiceGroupId?: number;\r\n Active: boolean;\r\n}\r\n\r\nexport function SaveFormButton({\r\n edit,\r\n text,\r\n onClick,\r\n ...props\r\n}: SaveFormButtonProps) {\r\n const { t } = useTranslation();\r\n const settings = useSelector(selectglobalSettings);\r\n const [showConfirm, setShowConfirm] = React.useState(false);\r\n\r\n return edit &&\r\n settings.GetBooleanByKey(\r\n AllowedSettings.TrainingActivationAllowedBySGAOnly,\r\n ) ? (\r\n \r\n \r\n setShowConfirm(false)}\r\n />\r\n \r\n ) : (\r\n \r\n );\r\n}\r\nexport function ActivateButton({\r\n edit,\r\n text,\r\n onClick,\r\n ServiceGroupId,\r\n Active,\r\n ...props\r\n}: ActivateButtonProps) {\r\n const { t } = useTranslation();\r\n const [showConfirm, setShowConfirm] = React.useState(false);\r\n\r\n return (\r\n \r\n {Active ? (\r\n \r\n \r\n setShowConfirm(false)}\r\n />\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { CircularProgress } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport {\r\n getDefaultImage,\r\n getDefaultImgSize,\r\n ImageSize,\r\n} from '../AssetThumbImage/getAssetImageSrc';\r\nimport { DemSize } from '../BasicCards';\r\nimport { Tooltip } from '../BasicTooltips/Tooltip';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\n\r\nexport interface ImageRenderProps {\r\n size: ImageSize;\r\n imgPath?: string;\r\n tooltip?: string;\r\n onClose?: (index: number) => void;\r\n deletIndex?: number;\r\n}\r\nexport const ImageRender = ({\r\n size,\r\n imgPath,\r\n tooltip,\r\n onClose,\r\n deletIndex,\r\n}: ImageRenderProps) => {\r\n const defaultImg = React.useMemo(() => {\r\n return toRootedURL(getDefaultImage(size));\r\n }, [size]);\r\n\r\n const [pathSrc, setPathSrc] = React.useState(defaultImg);\r\n\r\n const [loadingImg, setLoadingImg] = React.useState(\r\n undefined,\r\n );\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [imageDimensions, setImageDimensions] = React.useState<\r\n DemSize | undefined\r\n >(undefined);\r\n\r\n const checkImage = React.useCallback(\r\n async (path: any) =>\r\n new Promise<{\r\n path?: string;\r\n status: string;\r\n height: number;\r\n width: number;\r\n }>(resolve => {\r\n const img = new Image();\r\n img.src = path ?? '';\r\n img.onload = () =>\r\n resolve({ path, status: 'ok', height: img.height, width: img.width });\r\n img.onerror = () =>\r\n resolve({\r\n path,\r\n status: 'error',\r\n height: getDefaultImgSize(size).height,\r\n width: getDefaultImgSize(size).width,\r\n });\r\n }),\r\n [size],\r\n );\r\n React.useEffect(() => {\r\n let active = imgPath !== undefined && loadingImg === undefined;\r\n if (active) {\r\n if (loadingImg) return;\r\n setLoadingImg(true);\r\n (async () => {\r\n try {\r\n const res = await checkImage(imgPath);\r\n if (res.status === 'ok') {\r\n setPathSrc(res.path);\r\n setImageDimensions({\r\n height: res.height,\r\n width: res.width,\r\n });\r\n setLoadingImg(false);\r\n } else {\r\n setPathSrc(defaultImg);\r\n setImageDimensions({\r\n height: res.height,\r\n width: res.width,\r\n });\r\n setLoadingImg(false);\r\n }\r\n } catch {\r\n setPathSrc(defaultImg);\r\n setImageDimensions({\r\n height: getDefaultImgSize(size).height,\r\n width: getDefaultImgSize(size).width,\r\n });\r\n setLoadingImg(false);\r\n }\r\n })();\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [checkImage, defaultImg, imgPath, loadingImg, size]);\r\n\r\n return loadingImg === true ? (\r\n
    \r\n \r\n
    \r\n ) : !!pathSrc && loadingImg === false ? (\r\n \r\n {!!tooltip ? (\r\n \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \"\"\r\n {deletIndex !== undefined && onClose !== undefined && (\r\n {\r\n if (onClose !== undefined) {\r\n onClose(deletIndex);\r\n }\r\n }}\r\n >\r\n \r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n ) : null;\r\n};\r\n","/**\r\n *\r\n * AssetThumbImage\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Avatar, Theme, useTheme } from '@material-ui/core';\r\nimport { getAssetImageThumbSrc, getDefaultImage } from './getAssetImageSrc';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectImageExist } from 'app/slice/selectors';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport styled from 'styled-components';\r\nimport { capitalize } from 'lodash';\r\nimport clsx from 'clsx';\r\n\r\nexport interface AssetThumbImageProps {\r\n size?: 'small' | 'medium' | 'large';\r\n imageName: string | null;\r\n}\r\n\r\nexport const defaultImgSrc =\r\n process.env.PUBLIC_URL + `/images/DefaultImage.png`;\r\n\r\nexport function AssetThumbImage(props: AssetThumbImageProps) {\r\n const { imageName, size = 'medium' } = props;\r\n const [hasImgeBroken, setHasImgeBroken] = React.useState(\r\n undefined,\r\n );\r\n const handleImgError = event => {\r\n setHasImgeBroken(true);\r\n };\r\n const imageExist = useSelector(state => selectImageExist(state, imageName));\r\n const thumbSizeClass = React.useMemo(() => {\r\n return `thumbSize${capitalize(size)}`;\r\n }, [size]);\r\n const theme = useTheme();\r\n const src = imageExist\r\n ? getAssetImageThumbSrc(\r\n imageName,\r\n size === 'large' ? 'thumbLarge' : 'thumb',\r\n undefined,\r\n getDefaultImage(size === 'large' ? 'thumbLarge' : 'thumb'),\r\n )\r\n : null;\r\n\r\n return (\r\n \r\n {src === null || hasImgeBroken ? (\r\n \r\n {'A'}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\nconst ThumbRoot = styled.div<{ theme: Theme }>`\r\n &.thumb-root {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n &.thumbSizeSmall {\r\n max-width: 32px;\r\n max-height: 32px;\r\n }\r\n &.thumbSizeMedium {\r\n max-width: 64px;\r\n max-height: 64px;\r\n }\r\n &.thumbSizeLarge {\r\n max-width: 80px;\r\n max-height: 80px;\r\n }\r\n & img {\r\n border-radius: 4px;\r\n &.thumbSizeSmall {\r\n max-width: 32px;\r\n max-height: 32px;\r\n }\r\n &.thumbSizeMedium {\r\n max-width: 64px;\r\n max-height: 64px;\r\n }\r\n &.thumbSizeLarge {\r\n max-width: 80px;\r\n max-height: 80px;\r\n }\r\n }\r\n & .thumb-avatar {\r\n color: ${props =>\r\n props.theme.palette.getContrastText(\r\n bookitColors.grayscale.grayBorders,\r\n )};\r\n background-color: ${bookitColors.grayscale.grayBackground};\r\n width: 32px;\r\n height: 32px;\r\n border-radius: 4px;\r\n }\r\n }\r\n`;\r\n","import { IAssetRangeDto } from 'api/odata/generated/complexTypes/IAssetRangeDto';\r\nimport { Entity } from 'types/common';\r\nimport { AlertInfo, IAsset } from '../IAsset';\r\nimport { IAssetAssemblyStructure } from '../IAssetAssemblyStructure';\r\nimport { IAssetRow } from '../IAssetRow';\r\n\r\nexport interface RawSection {\r\n Id: string;\r\n Index: number;\r\n SectionName: boolean;\r\n remove: boolean;\r\n}\r\nexport interface Section {\r\n Id: string;\r\n row: IAssetRow;\r\n rows: IAssetRow[];\r\n}\r\nexport interface Sections {\r\n leftSections: Section[];\r\n rightSections: Section[];\r\n}\r\nexport interface SectionsProps {\r\n sections: Section[];\r\n data?: IAsset;\r\n}\r\nexport interface AssetDetailsAdditionalData {\r\n Id: number;\r\n ApprovalRequired: boolean;\r\n Status: string;\r\n StatusId: number;\r\n AssemblyStructure?: IAssetAssemblyStructure;\r\n HideTrainingSession: boolean;\r\n Range: IAssetRangeDto[];\r\n ForceTutoring: boolean;\r\n AutoMode?: number;\r\n Allowed_ByTraining?: boolean;\r\n CanStartUsage: boolean;\r\n CanEndUsage: boolean;\r\n UsageId?: number;\r\n EndUsageIds?: number[];\r\n Alerts?: Entity[];\r\n PlanedEventsEnabled: boolean;\r\n AlertInfo?: AlertInfo;\r\n NotifyExists?: boolean;\r\n CanBeCreatedFromLinkOnly?: boolean;\r\n NotAllowReservations: boolean | null;\r\n ShowFeed?: boolean;\r\n AssemblyId: number | null;\r\n CanRequestAccess: boolean;\r\n ApprovalStatusId: number | null;\r\n NotActiveSince?: Date;\r\n AssetImageNames?: string[];\r\n InternalId: string;\r\n IncidentSettings: boolean;\r\n PublicationSettings: boolean;\r\n}\r\n\r\nexport class CountersForTabs {\r\n Reservations: { Enabled: boolean; Count: number } = {\r\n Enabled: true,\r\n Count: 0,\r\n };\r\n Schedule: { Enabled: boolean; Count: number } = {\r\n Enabled: true,\r\n Count: 0,\r\n };\r\n WorkOrders: { Enabled: boolean; Count: number } = {\r\n Enabled: true,\r\n Count: 0,\r\n };\r\n Calibrations: { enabled: boolean; Count: number } = {\r\n enabled: true,\r\n Count: 0,\r\n };\r\n Publications: { Enabled: boolean; Count: number } = {\r\n Enabled: true,\r\n Count: 0,\r\n };\r\n TrainingSessions: { Enabled: boolean; Count: number } = {\r\n Enabled: true,\r\n Count: 0,\r\n };\r\n WaitingList: { Enabled: boolean; Count: number } = {\r\n Enabled: true,\r\n Count: 0,\r\n };\r\n}\r\nexport const ExpandableRows: Array = [\r\n //'Alerts',\r\n 'Tags',\r\n 'Suppliers',\r\n 'Contacts',\r\n 'Experts',\r\n 'AssetAccessories',\r\n 'ServiceGroup',\r\n 'AssetCat',\r\n 'AssetCatGroup',\r\n 'AvailabilityType',\r\n 'LocationsList',\r\n 'ExtraDDL0',\r\n 'ExtraDDL1',\r\n 'ExtraDDL2',\r\n 'ExtraDDL3',\r\n 'ExtraDDL4',\r\n 'ExtraDDL5',\r\n 'ExtraDDL6',\r\n 'ExtraDDL7',\r\n 'ExtraDDL8',\r\n 'ExtraDDL9',\r\n 'ExtraDDL10',\r\n 'ExtraDDL11',\r\n 'ExtraDDL12',\r\n 'ExtraDDL13',\r\n 'ExtraDDL14',\r\n 'ExtraDDL15',\r\n 'Campus',\r\n 'Range',\r\n //'Articles',\r\n];\r\nexport const DefaultRows: Array = [\r\n //'ImageName',\r\n //'DivisionName',\r\n //'AvailabilityType',\r\n 'Articles',\r\n 'Comments',\r\n];\r\nexport const DefaultAttributes: Array = [\r\n 'Id',\r\n 'Name',\r\n 'ImageName',\r\n 'ServiceId',\r\n 'ServiceType',\r\n 'AvailabilityType',\r\n 'CommentsAreStaffonly',\r\n 'ServiceGroup',\r\n 'InternalCode',\r\n];\r\n","/**\r\n *\r\n * WorkOrderPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface WorkOrderPickerProps\r\n extends Omit, 'loadData'> {\r\n name?: string;\r\n placeholder?: string;\r\n onBlur?: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n useSearchOrPredicate?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/WorkOrders';\r\nexport const initWorkOrdersData = (\r\n initval: string | undefined,\r\n select?: (keyof IWorkOrderDetailsDto)[],\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n $select: string;\r\n $expand?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $skip: 0,\r\n $top: 1,\r\n $select: !!select\r\n ? select.join(',')\r\n : [\r\n 'Id',\r\n 'Name',\r\n 'AssetName',\r\n 'AssetId',\r\n 'ServiceGroup',\r\n 'ServiceGroupId',\r\n 'ServiceId',\r\n 'ServiceTypeId',\r\n 'AssetCatId',\r\n 'AssetCatGroupId',\r\n 'AssetCatName',\r\n 'AssetCatGroupName',\r\n 'AlertTypeId',\r\n 'AlertTitle',\r\n 'AlertDescription',\r\n 'StatusName',\r\n 'AlertType',\r\n 'EventStart',\r\n 'ReportedBy',\r\n 'ReportedByDisplayName',\r\n 'LastUpdated',\r\n 'Reservation',\r\n 'AlertOfflineTime',\r\n 'OfflineEventEnd',\r\n 'OfflineEventStart',\r\n 'OfflineRemarks',\r\n 'ReasonTypeId',\r\n 'ReasonTypeName',\r\n 'StatusId',\r\n 'IsClosed',\r\n 'UserTicket',\r\n 'InstrumentWasDown',\r\n 'IsAutoCreatedType',\r\n 'AlertStart',\r\n 'CreateDate',\r\n 'DoneDate',\r\n 'RecurringGroupId',\r\n 'RecurringAssetId',\r\n 'WorkOrderType',\r\n 'StaffOnly',\r\n 'WorkingHoursId',\r\n 'ShowOnCalibrationHistory',\r\n 'NotEditable',\r\n ].join(','),\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n queryUrl?: string,\r\n useSearchOrPredicate?: boolean,\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url: url ?? queryUrl,\r\n predicates: predicates,\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'AssetName',\r\n 'AssetId',\r\n 'ServiceGroup',\r\n 'ServiceGroupId',\r\n 'ServiceId',\r\n 'ServiceTypeId',\r\n 'AssetCatId',\r\n 'AssetCatGroupId',\r\n 'AssetCatName',\r\n 'AssetCatGroupName',\r\n 'AlertTypeId',\r\n 'AlertTitle',\r\n 'AlertDescription',\r\n 'StatusName',\r\n 'AlertType',\r\n 'EventStart',\r\n 'ReportedBy',\r\n 'ReportedByDisplayName',\r\n 'LastUpdated',\r\n 'Reservation',\r\n 'AlertOfflineTime',\r\n 'OfflineEventEnd',\r\n 'OfflineEventStart',\r\n 'OfflineRemarks',\r\n 'ReasonTypeId',\r\n 'ReasonTypeName',\r\n 'StatusId',\r\n 'IsClosed',\r\n 'UserTicket',\r\n 'InstrumentWasDown',\r\n 'IsAutoCreatedType',\r\n 'AlertStart',\r\n 'CreateDate',\r\n 'DoneDate',\r\n 'RecurringGroupId',\r\n 'RecurringAssetId',\r\n 'WorkOrderType',\r\n 'StaffOnly',\r\n 'WorkingHoursId',\r\n 'ShowOnCalibrationHistory',\r\n 'NotEditable',\r\n ],\r\n useSearchOrPredicate: useSearchOrPredicate,\r\n });\r\nexport function WorkOrderPicker(props: WorkOrderPickerProps) {\r\n const innerLoadData = (predicates, queryUrl) =>\r\n loadData(props.predicates, queryUrl, props.useSearchOrPredicate);\r\n const queryUrl = '/api/odata/v4/WorkOrders';\r\n\r\n return (\r\n \r\n );\r\n}\r\nexport const WorkOrdersCalibrationFilter = (\r\n assetId?: number,\r\n woTypeId?: number,\r\n excludeIds?: number[],\r\n) => {\r\n const predicates: (string | Condition)[] = [];\r\n if (!!assetId) {\r\n predicates.push(\r\n new Condition(\r\n 'AssetId',\r\n ODataOperators.Equals,\r\n assetId,\r\n ),\r\n );\r\n }\r\n if (!!woTypeId) {\r\n predicates.push(\r\n new Condition(\r\n 'AlertTypeId',\r\n ODataOperators.Equals,\r\n woTypeId,\r\n ),\r\n );\r\n }\r\n if (!!excludeIds && excludeIds?.length > 0) {\r\n predicates.push(\r\n new Condition(\r\n 'Id',\r\n ODataOperators.Excludes,\r\n excludeIds,\r\n ),\r\n );\r\n }\r\n predicates.push(\r\n new Condition(\r\n 'IsClosed',\r\n ODataOperators.NotEquals,\r\n true,\r\n ),\r\n );\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n};\r\nexport const loadWorkOrders = loadData;\r\n","/**\r\n *\r\n * PriorityPicker\r\n *\r\n */\r\n\r\nimport {\r\n PrioritiesUnion,\r\n PrioritiesUnionArray,\r\n} from 'api/odata/generated/enums/Priorities';\r\nimport {\r\n EnumMultiPicker,\r\n withEnumMultiOptions,\r\n} from 'app/components/BasicPickers/EnumMultiPicker';\r\nimport {\r\n EnumPicker,\r\n withEnumOptions,\r\n} from 'app/components/BasicPickers/EnumPicker';\r\n\r\nexport const PriorityPicker =\r\n withEnumOptions(PrioritiesUnionArray)(EnumPicker);\r\n\r\nexport const PriorityMultiPicker =\r\n withEnumMultiOptions(PrioritiesUnionArray)(EnumMultiPicker);\r\n","/**\r\n *\r\n * auto generated interface for Bookit.Data.Enums.Priorities\r\n *\r\n */\r\n\r\nexport enum Priorities {\r\n Lowest = 0,\r\n Low = 1,\r\n Medium = 2,\r\n High = 3,\r\n Highest = 4,\r\n}\r\nexport type PrioritiesUnion = keyof typeof Priorities;\r\nexport const PrioritiesUnionArray: Array = [\r\n 'Lowest',\r\n 'Low',\r\n 'Medium',\r\n 'High',\r\n 'Highest',\r\n];\r\n","import { SubscribersDetailsQStringParameters } from 'app/pages/SubscribersDetailsPage/Details/slice/types';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\nimport { ISubscribersDto } from './odata/generated/entities/ISubscribersDto';\r\n\r\nexport const SubscribersApi = {\r\n initCreateData: (payload: SubscribersDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/Subscribers/InitSubscribers';\r\n return httpClient.post(url, data);\r\n },\r\n initUpdateData: (payload: SubscribersDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/Subscribers/InitSubscribers';\r\n return httpClient.post(url, data);\r\n },\r\n insertSubscribersDetails: (payload: ISubscribersDto) => {\r\n const url = '/api/odata/v4/Subscribers'; //POST action in Controller\r\n return httpClient.post(url, payload);\r\n },\r\n updateSubscribersDetails: (payload: ISubscribersDto) => {\r\n const url = `/api/odata/v4/Subscribers(${payload.Id})`; //PUT action in Controller\r\n return httpClient.put(url, payload);\r\n },\r\n\r\n deleteSubscription: (Id: number): Promise => {\r\n let url = `/api/odata/v4/Subscribers(${Id})`;\r\n return httpClient.delete(url);\r\n },\r\n deleteSelectedRows: (payload: number[]) => {\r\n const url = `/api/odata/v4/Subscribers/DeleteSelected`;\r\n const data = { keys: payload };\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import { CostCentersDetailsQStringParameters } from 'app/pages/CostCentersDetailsPage/Details/slice/types';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\nimport { ICostCentersDto } from './odata/generated/entities/ICostCentersDto';\r\n\r\nexport const CostCentersApi = {\r\n initCreateData: (payload: CostCentersDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/CostCenters/InitCostCenters';\r\n return httpClient.post(url, data);\r\n },\r\n initUpdateData: (payload: CostCentersDetailsQStringParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n const url = '/api/odata/v4/CostCenters/InitCostCenters';\r\n return httpClient.post(url, data);\r\n },\r\n insertCostCentersDetails: (payload: ICostCentersDto) => {\r\n const url = '/api/odata/v4/CostCenters'; //POST action in Controller\r\n return httpClient.post(url, payload);\r\n },\r\n updateCostCentersDetails: (payload: ICostCentersDto) => {\r\n const url = `/api/odata/v4/CostCenters(${payload.Id})`; //PUT action in Controller\r\n return httpClient.put(url, payload);\r\n },\r\n\r\n deleteCostCenter: (Id: number): Promise => {\r\n let url = `/api/odata/v4/CostCenters(${Id})`;\r\n return httpClient.delete(url);\r\n },\r\n deleteSelectedRows: (payload: number[]) => {\r\n const url = `/api/odata/v4/CostCenters/DeleteSelected`;\r\n const data = { keys: payload };\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import React from 'react';\r\n\r\nimport FirstPageIcon from '@material-ui/icons/FirstPage';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\r\nimport LastPageIcon from '@material-ui/icons/LastPage';\r\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n flexShrink: 0,\r\n marginLeft: theme.spacing(2.5),\r\n },\r\n}));\r\n\r\nconst TablePaginationActions = props => {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const { count, page, rowsPerPage, onChangePage } = props;\r\n\r\n const handleFirstPageButtonClick = event => {\r\n onChangePage(event, 0);\r\n };\r\n\r\n const handleBackButtonClick = event => {\r\n onChangePage(event, page - 1);\r\n };\r\n\r\n const handleNextButtonClick = event => {\r\n onChangePage(event, page + 1);\r\n };\r\n\r\n const handleLastPageButtonClick = event => {\r\n onChangePage(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {theme.direction === 'rtl' ? : }\r\n \r\n \r\n {theme.direction === 'rtl' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n = Math.ceil(count / rowsPerPage) - 1}\r\n aria-label=\"next page\"\r\n >\r\n {theme.direction === 'rtl' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n = Math.ceil(count / rowsPerPage) - 1}\r\n aria-label=\"last page\"\r\n >\r\n {theme.direction === 'rtl' ? : }\r\n \r\n
    \r\n );\r\n};\r\n\r\nTablePaginationActions.propTypes = {\r\n count: PropTypes.number.isRequired,\r\n onChangePage: PropTypes.func.isRequired,\r\n page: PropTypes.number.isRequired,\r\n rowsPerPage: PropTypes.number.isRequired,\r\n};\r\n\r\nexport default TablePaginationActions;\r\n","import * as React from 'react';\r\nimport {\r\n Table as MuiTable,\r\n TableBody,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableFooter,\r\n Table,\r\n} from '@material-ui/core/index';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport {\r\n Column,\r\n useTable,\r\n useRowSelect,\r\n usePagination,\r\n PluginHook,\r\n useGlobalFilter,\r\n Row,\r\n} from 'react-table';\r\n\r\nimport TablePaginationActions from './TablePaginationActions';\r\nimport { GlobalFilter } from 'app/components/BasicTable/GlobalFilter';\r\nimport { SelectedActions } from 'app/components/BasicTable/SelectedActions';\r\nimport { BasicTableProps } from 'app/components/BasicTable';\r\nimport { TableToolbar } from 'app/components/BasicTable/BasicFilter/TableToolbar';\r\nimport { useRowActionsColumn } from 'app/components/BasicTable/RowActions';\r\nimport { ConfigureColumnsButton } from 'app/components/BasicTable/components/ConfigureColumnsButton';\r\nimport { ExportButton } from 'app/components/BasicTable/ExportButton';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport clsx from 'clsx';\r\nimport { Check } from 'app/components/BasicInputs/Check';\r\nimport { CheckWrapper } from 'app/components/BasicTable/ControlledTable/addRowSelect';\r\nimport { TableRoot } from 'app/components/BasicTable/styled';\r\n\r\nexport interface EditableTableProps\r\n extends Pick<\r\n BasicTableProps,\r\n | 'columns'\r\n | 'selectedRowsActions'\r\n | 'pageActions'\r\n | 'rowActions'\r\n | 'tablePaddingVariant'\r\n > {\r\n columns: Column[];\r\n // defaultColumn: any;\r\n // skipPageReset: boolean;\r\n updateMyData?: any;\r\n data: TRow[];\r\n toolbar?: (selectedRows: TRow[]) => JSX.Element;\r\n // controlledPageCount: number;\r\n // fetchData: (state: ITableState) => void;\r\n toggleHideColumn?: (columnId: String, value: Boolean) => void;\r\n useRowSelect: boolean;\r\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\r\n useGlobalFilter: boolean;\r\n subHeader?: React.ReactNode;\r\n screenName: string | React.ReactNode;\r\n handleConfigurableColumns: () => void;\r\n handleExport: () => Promise;\r\n useImportLink?: boolean;\r\n importLink?: string;\r\n importHandler?: () => void;\r\n onExportForImport?: (rows: Row[]) => void;\r\n onDownloadTemplate?: () => void;\r\n}\r\n\r\nexport function EditableTable>({\r\n selectedRowsActions,\r\n onSelectedRowsChange,\r\n screenName,\r\n ...props\r\n}: EditableTableProps) {\r\n const { t } = useTranslation();\r\n const {\r\n columns,\r\n data,\r\n // fetchData,\r\n // controlledPageCount,\r\n // skipPageReset,\r\n updateMyData,\r\n } = props;\r\n const isMobile = DetectIsMobile();\r\n const tablePlugins: PluginHook[] = [useGlobalFilter, usePagination];\r\n\r\n if (props.useRowSelect) {\r\n tablePlugins.push(useRowSelect);\r\n tablePlugins.push(hooks => {\r\n hooks.visibleColumns.push(columns => [\r\n // Let's make a column for selection\r\n {\r\n id: 'selection',\r\n // The header can use the table's getToggleAllRowsSelectedProps method\r\n // to render a checkbox\r\n Header: ({ getToggleAllRowsSelectedProps }) => (\r\n \r\n \r\n \r\n ),\r\n // The cell can use the individual row's getToggleRowSelectedProps method\r\n // to the render a checkbox\r\n Cell: ({ row }) => (\r\n e.stopPropagation()}\r\n >\r\n \r\n \r\n ),\r\n },\r\n ...columns,\r\n ]);\r\n });\r\n }\r\n\r\n useRowActionsColumn(props.rowActions, tablePlugins);\r\n const tableInstance = useTable(\r\n {\r\n columns,\r\n data,\r\n\r\n // use the skipPageReset option to disable page resetting temporarily\r\n // autoResetPage: !skipPageReset,\r\n // updateMyData isn't part of the API, but\r\n // anything we put into these options will\r\n // automatically be available on the instance.\r\n // That way we can call this function from our\r\n // cell renderer!\r\n updateMyData,\r\n autoResetPage: false,\r\n // initialState: { pageSize: 10 },\r\n // manualPagination: true, // Tell the usePagination\r\n // pageCount: controlledPageCount,\r\n },\r\n ...tablePlugins,\r\n );\r\n\r\n const {\r\n getTableProps,\r\n getTableBodyProps,\r\n headerGroups,\r\n page, // Instead of using 'rows', we'll use page,\r\n prepareRow,\r\n //pagination\r\n gotoPage,\r\n setPageSize,\r\n state: { pageIndex, pageSize, globalFilter, selectedRowIds },\r\n selectedFlatRows,\r\n toggleAllRowsSelected,\r\n setGlobalFilter,\r\n } = tableInstance;\r\n\r\n const isSomeselected = Object.keys(selectedRowIds || {}).length > 0;\r\n const [selected, setSelected] = React.useState>({});\r\n React.useEffect(\r\n () =>\r\n onSelectedRowsChange?.(Object.entries(selected).map(value => value[1])),\r\n [onSelectedRowsChange, selected],\r\n );\r\n\r\n React.useEffect(() => {\r\n setSelected(state =>\r\n Object.keys(selectedRowIds || {}).reduce((accumulator, key) => {\r\n accumulator[key] =\r\n state[key] ?? selectedFlatRows.find(row => row.id === key)?.original;\r\n return accumulator;\r\n }, {}),\r\n );\r\n }, [selectedRowIds, selectedFlatRows]);\r\n const selectedArray = Object.entries(selected).map(value => value[1]);\r\n\r\n const handleChangePage = (event, newPage) => {\r\n gotoPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = event => {\r\n setPageSize(Number(event.target.value));\r\n };\r\n return (\r\n <>\r\n \r\n (\r\n {item(0, () => void 0)}\r\n )) ?? []\r\n }\r\n />\r\n\r\n {props.subHeader !== undefined &&
    {props.subHeader}
    }\r\n \r\n 0,\r\n 'table-buttons-left-no-wrap':\r\n (isSomeselected &&\r\n selectedRowsActions !== undefined &&\r\n selectedRowsActions.length > 0) === false,\r\n })}\r\n >\r\n <>\r\n {isSomeselected && selectedRowsActions !== undefined ? (\r\n \r\n ) : (\r\n <>\r\n {/* {screenId && AuthenticatedUser && (\r\n }\r\n onClick={handleConfigurableColumns}\r\n >\r\n {t(translations.Columns)}\r\n \r\n )} */}\r\n {/* {useExport && (\r\n \r\n )} */}\r\n {/* {useImportLink && importLink && (\r\n }\r\n onClick={() =>\r\n window.open(toRootedURL(importLink), '_self')\r\n }\r\n >\r\n {t(translations.Import)}\r\n \r\n )} */}\r\n\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {props.useImportLink &&\r\n (props.importLink || props.importHandler) && (\r\n }\r\n onClick={() => {\r\n if (props.importHandler) {\r\n props.importHandler();\r\n } else {\r\n if (props.importLink) {\r\n window.open(toRootedURL(props.importLink), '_self');\r\n }\r\n }\r\n }}\r\n >\r\n {t(translations.Import)}\r\n \r\n )}\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {\r\n // Loop over the header rows\r\n headerGroups.map(headerGroup => (\r\n // Apply the header row props\r\n \r\n {\r\n // Loop over the headers in each row\r\n headerGroup.headers.map(column => (\r\n // Apply the header cell props\r\n \r\n {\r\n // Render the header\r\n column.render('Header')\r\n }\r\n \r\n ))\r\n }\r\n \r\n ))\r\n }\r\n \r\n {/* Apply the table body props */}\r\n \r\n {\r\n // Loop over the table rows\r\n page.map(row => {\r\n // Prepare the row for display\r\n\r\n prepareRow(row);\r\n return (\r\n // Apply the row props\r\n \r\n {\r\n // Loop over the rows cells\r\n row.cells.map(cell => {\r\n // Apply the cell props\r\n return (\r\n \r\n {\r\n // Render the cell contents\r\n cell.render('Cell')\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * SamplePlatePositionsPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ISamplePlateDto } from 'api/odata/generated/entities/ISamplePlateDto';\r\nimport { SamplePlatePositionNamingTypes } from 'api/odata/generated/enums/SamplePlatePositionNamingTypes';\r\nimport {\r\n AutocompleteMultiPicker,\r\n AutocompleteMultiPickerProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPicker';\r\nimport {\r\n ISample,\r\n ISampleRun,\r\n} from 'app/pages/Samples/SamplesListPage/slice/types';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface SamplePlatePositionsPickerProps\r\n extends Omit<\r\n AutocompleteMultiPickerProps,\r\n 'loadData' | 'onChange' | 'value' | 'label' | 'multiple' | 'fullWidth'\r\n > {\r\n serviceGroupId?: number;\r\n name?: string;\r\n placeholder?: string;\r\n onBlur?: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n values?: ISample;\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n}\r\n\r\nexport interface ConnectedSamplePlatePositionsPickerProps\r\n extends SamplePlatePositionsPickerProps {\r\n samplePlateId: string | null;\r\n}\r\nfunction range(x) {\r\n return Array.apply(null, Array(x)).map(function (x, i) {\r\n return i;\r\n });\r\n}\r\nconst loadData =\r\n (plateId?: string | null) =>\r\n async (searchTerm: string | null): Promise[]> => {\r\n const plate = await httpClient.get(\r\n `/api/odata/v4/sampleplates('${plateId}')`,\r\n );\r\n\r\n const rowsCount = plate.SamplePlateTypeRows;\r\n const columnsCount = plate.SamplePlateTypeColumns;\r\n const rows = range(columnsCount)\r\n .map(i =>\r\n plate.SamplePlateTypeColumnsNaming ===\r\n SamplePlatePositionNamingTypes.Alpha\r\n ? String.fromCharCode(65 + i)\r\n : i + 1,\r\n )\r\n .flatMap(column =>\r\n range(rowsCount)\r\n .map(i =>\r\n plate.SamplePlateTypeRowsNaming ===\r\n SamplePlatePositionNamingTypes.Alpha\r\n ? String.fromCharCode(65 + i)\r\n : i + 1,\r\n )\r\n .map(row => `${column}${row}`),\r\n );\r\n const options = rows.map(a => ({ Id: a, Name: a }));\r\n return options;\r\n };\r\nexport function SamplePlatePositionsPicker({\r\n serviceGroupId,\r\n samplePlateId,\r\n value,\r\n values,\r\n onChange,\r\n ...props\r\n}: ConnectedSamplePlatePositionsPickerProps) {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const loadDatax = React.useCallback(loadData(samplePlateId), [\r\n serviceGroupId,\r\n samplePlateId,\r\n ]);\r\n const S2Value =\r\n value === null\r\n ? []\r\n : value\r\n .split(';')\r\n .filter(value => value !== '')\r\n .map(value => ({ Id: value, Name: value }));\r\n return (\r\n item.Name}\r\n size={props.size}\r\n onChange={value =>\r\n onChange(value?.map(item => item.Id)?.join(';') ?? null)\r\n }\r\n value={S2Value}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport function TargetSamplePlatePositionsPicker({\r\n values,\r\n\r\n ...props\r\n}: SamplePlatePositionsPickerProps) {\r\n const samplePlateId = (values as ISampleRun)?.TargetPlateId ?? null;\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from '../BasicPickers/AutocompletePicker';\r\nimport { httpClient } from 'api/HttpClient';\r\n\r\nexport interface FormGradientPickerProps\r\n extends Omit<\r\n AutocompletePickerProps,\r\n 'onBlur' | 'value' | 'error' | 'loadData' | 'onChange'\r\n > {\r\n serviceGroupId?: number;\r\n}\r\nexport interface IGradientDto extends Entity {\r\n EstimatedRuntimeMinutes: number;\r\n}\r\nexport const FormGradientPicker = ({\r\n serviceGroupId,\r\n onChange,\r\n onBlur,\r\n ...props\r\n}: FieldHookConfig & FormGradientPickerProps) => {\r\n const [field, meta, helpers] = useField(props);\r\n const handleChange: (value: IGradientDto | null) => void = (\r\n value: IGradientDto | null,\r\n ) => helpers.setValue(value, true);\r\n const loadData = React.useCallback(\r\n async (searchTerm: string | null): Promise => {\r\n const data = await httpClient.get(`/odata.svc/Gradients`, {\r\n $filter:\r\n serviceGroupId === undefined\r\n ? undefined\r\n : `ServiceGroupId eq ${serviceGroupId}`,\r\n $orderby: 'Name',\r\n });\r\n const result: IGradientDto[] = data.d.map(item => ({\r\n Id: item.Id,\r\n Name: item.Name,\r\n EstimatedRuntimeMinutes: item.EstimatedRuntimeMinutes,\r\n }));\r\n return result;\r\n },\r\n [serviceGroupId],\r\n );\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n","import {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n} from '@material-ui/core';\r\nimport { useRef, useState } from 'react';\r\nimport { toQueryString } from 'utils/url-utils';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { IRunDetails, ISample } from '../../SamplesListPage/slice/types';\r\nimport * as Yup from 'yup';\r\nimport { Form, Formik, FormikProps, FormikValues } from 'formik';\r\n//import { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { Entity } from 'types/common';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport {\r\n FormGradientPicker,\r\n IGradientDto,\r\n} from 'app/components/Forms/FormGradientPicker';\r\nimport { FormOnlineServicesSinglePicker } from 'app/components/Forms/FormEquipmentsPicker';\r\nimport { ServiceGroupFilter } from 'app/components/pickers/MultiSelectPickers/OnlineServicesPicker';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { useSamplesListSlice } from '../../SamplesListPage/slice';\r\nimport { useDispatch } from 'react-redux';\r\nimport { push } from 'connected-react-router';\r\nimport { GetSchedulerPagePath } from 'app/pages/CalendarPage/GetCalendarPagePath';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport { TopActionButton } from 'app/components/BasicButtons/TopActionButton';\r\n\r\nexport interface CreateReservationComponentProps {\r\n runDetails?: IRunDetails;\r\n sampleRunId?: number;\r\n rows: ISample[];\r\n}\r\ninterface ICreateReservationOptions {\r\n Gradient?: IGradientDto | null;\r\n SampleOverhead?: number | null;\r\n TotalOverhead?: number | null;\r\n Equipment?: Entity | null;\r\n SecondaryEquipment?: Entity | null;\r\n ACQUISITION_TYPE?: string | null;\r\n}\r\nconst schema: Yup.SchemaOf = Yup.object({\r\n Gradient: Yup.mixed().nullable(),\r\n SampleOverhead: Yup.number().positive().nullable(),\r\n TotalOverhead: Yup.number().positive().nullable(),\r\n Equipment: Yup.mixed().required().nullable(),\r\n SecondaryEquipment: Yup.mixed().notRequired().nullable(),\r\n ACQUISITION_TYPE: Yup.string().notRequired().nullable(),\r\n});\r\n\r\nexport const CreateSampleRunReservation = ({\r\n runDetails,\r\n sampleRunId,\r\n rows,\r\n}: CreateReservationComponentProps) => {\r\n const { t } = useTranslation();\r\n const [open, setOpen] = useState(false);\r\n const [save, setSave] = useState(false);\r\n const dispatch = useDispatch();\r\n const { actions } = useSamplesListSlice();\r\n const formikRef = useRef>(null);\r\n\r\n const serviceRequestId = rows?.map(item => item.ServiceRequestId)[0];\r\n const serviceGroupId = rows?.map(item => item.ServiceGroupId)[0];\r\n const handleCreateReservationButtonClick = (\r\n values: ICreateReservationOptions,\r\n ) => {\r\n if (save) {\r\n setSave(false);\r\n dispatch(\r\n actions.updateRun({\r\n SampleRunId: sampleRunId,\r\n InstrumentId:\r\n values.Equipment !== undefined && values.Equipment !== null\r\n ? values.Equipment.Id\r\n : undefined,\r\n SecondaryInstrumentId:\r\n values.SecondaryEquipment !== undefined &&\r\n values.SecondaryEquipment !== null\r\n ? values.SecondaryEquipment.Id\r\n : undefined,\r\n GradientId:\r\n values.Gradient !== undefined && values.Gradient !== null\r\n ? values.Gradient.Id\r\n : undefined,\r\n ACQUISITION_TYPE:\r\n values.ACQUISITION_TYPE !== null ? values.ACQUISITION_TYPE : null,\r\n }),\r\n );\r\n setOpen(false);\r\n } else {\r\n var p: Record = {\r\n srid: serviceRequestId,\r\n sampleRunId: sampleRunId,\r\n eid: [values.Equipment?.Id, values.SecondaryEquipment?.Id],\r\n srsid:\r\n sampleRunId === undefined\r\n ? rows?.map(r => r.Id).join(',')\r\n : undefined,\r\n duration: getReservationDuration(values, rows),\r\n };\r\n dispatch(\r\n push({\r\n pathname: GetSchedulerPagePath('calendar'),\r\n search: toQueryString(p).toString(),\r\n }),\r\n );\r\n setOpen(false);\r\n }\r\n };\r\n const initialValues: ICreateReservationOptions = {\r\n Gradient: runDetails?.Gradient as IGradientDto,\r\n //SampleOverhead: 0,\r\n //TotalOverhead: 0,\r\n Equipment: runDetails?.Instrument,\r\n SecondaryEquipment: runDetails?.SecondaryInstrument,\r\n ACQUISITION_TYPE: runDetails?.ACQUISITION_TYPE,\r\n };\r\n return (\r\n <>\r\n setOpen(true)}\r\n />\r\n setOpen(false)}>\r\n {\r\n handleCreateReservationButtonClick(values);\r\n }}\r\n >\r\n {formik => (\r\n
    \r\n \r\n {t(translations.RunDetailsCreateReservation)} {' '}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*\r\n \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n setOpen(false)}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n {\r\n setSave(true);\r\n formikRef.current?.handleSubmit();\r\n }}\r\n >\r\n {t(translations.Save)}\r\n \r\n {\r\n setSave(false);\r\n formikRef.current?.handleSubmit();\r\n }}\r\n >\r\n {t(translations.CreateReservation)}\r\n \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n \r\n );\r\n};\r\nfunction getReservationDuration(\r\n values: ICreateReservationOptions,\r\n rows: ISample[],\r\n) {\r\n var timePerSample =\r\n (values.Gradient?.EstimatedRuntimeMinutes ?? 0) +\r\n (values.SampleOverhead ?? 0);\r\n var totalMinutes = timePerSample * rows.length + (values?.TotalOverhead ?? 0);\r\n const duration = totalMinutes > 0 ? totalMinutes : undefined;\r\n return duration;\r\n}\r\n","import { IRow } from 'app/components/BasicTable/IRow';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport { ISampleRun } from '../../SamplesListPage/slice/types';\r\nimport { openExportLink } from 'utils/url-utils';\r\n\r\nexport const ExportRunDetailsSamples = (\r\n id: number,\r\n exportConfigurableColumns: Array | undefined,\r\n): Promise => {\r\n if (exportConfigurableColumns !== undefined) {\r\n try {\r\n const params = {\r\n $format: 'application/xlsx',\r\n $select: exportConfigurableColumns.join(','),\r\n };\r\n const samples_url = `/api/odata/v4/sampleruns(${id})/Samples`;\r\n const exportUrl = toRootedURL(samples_url, params);\r\n return openExportLink(exportUrl);\r\n } catch (error) {\r\n console.error('doRunDetailsExport failed', error);\r\n return new Promise((resolve, reject) => {\r\n resolve();\r\n });\r\n }\r\n } else\r\n return new Promise((resolve, reject) => {\r\n resolve();\r\n });\r\n};\r\nexport const ExportForImportRunDetailsSamples = (\r\n id: number,\r\n rows: ISampleRun[],\r\n exportConfigurableColumns: Array | undefined,\r\n): Promise => {\r\n if (rows?.length === 0)\r\n return new Promise((resolve, reject) => {\r\n resolve();\r\n });\r\n if (exportConfigurableColumns !== undefined) {\r\n const params = {\r\n $format: 'application/xlsx',\r\n $filter: `Id in (${rows.map(f => f.Id).join(',')})`,\r\n $select: exportConfigurableColumns.join(','),\r\n };\r\n const samples_url = `/api/odata/v4/sampleruns(${id})/Samples`;\r\n const exportUrl = toRootedURL(samples_url, params);\r\n return openExportLink(exportUrl);\r\n } else\r\n return new Promise((resolve, reject) => {\r\n resolve();\r\n });\r\n};\r\nexport const DownloadTemplateRunDetailsSamples = (\r\n id: number,\r\n exportConfigurableColumns: Array | undefined,\r\n): Promise | undefined => {\r\n if (exportConfigurableColumns !== undefined) {\r\n try {\r\n const params = {\r\n $format: 'application/xlsx',\r\n $top: 0,\r\n $select: exportConfigurableColumns.join(','),\r\n };\r\n const samples_url = `/api/odata/v4/sampleruns(${id})/Samples`;\r\n const exportUrl = toRootedURL(samples_url, params);\r\n return openExportLink(exportUrl);\r\n } catch (error) {\r\n console.error('doRunDetailsExport failed', error);\r\n }\r\n }\r\n};\r\n","import { SelectedRowsActionIconButton } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionIconButton';\r\nimport { SelectedRowsActionRenderer } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionRenderer';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { ISampleRun } from '../../SamplesListPage/slice/types';\r\nimport { ExportForImportRunDetailsSamples } from '../Actions';\r\n\r\nexport interface GetSelectedActionsProps {}\r\nexport function GetSelectedActions(\r\n t: TFunction,\r\n id: number,\r\n exportConfigurableColumns: Array | undefined,\r\n props: GetSelectedActionsProps,\r\n): SelectedRowsActionRenderer[] {\r\n const [validUpdate] = React.useState(false);\r\n const SelectedActions: SelectedRowsActionRenderer[] =\r\n React.useMemo(\r\n () => [\r\n (rows, onRefresh, toggleAllRowsSelected) => (\r\n {\r\n toggleAllRowsSelected(false);\r\n }}\r\n variantButton=\"button\"\r\n action={() =>\r\n new Promise(async (resolve, reject) => {\r\n await ExportForImportRunDetailsSamples(\r\n id,\r\n rows,\r\n exportConfigurableColumns,\r\n );\r\n let messages: IResponseType = {\r\n SuccessMessages: [],\r\n ErrorMessages: [],\r\n WarningMessages: [],\r\n };\r\n resolve(messages);\r\n })\r\n }\r\n />\r\n ),\r\n ],\r\n [exportConfigurableColumns, id, t, validUpdate],\r\n );\r\n return SelectedActions;\r\n}\r\n","import {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n} from '@material-ui/core';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { translations } from 'locales/translations';\r\nimport { useCallback, useMemo } from 'react';\r\nimport { Form, Formik } from 'formik';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport * as Yup from 'yup';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\n\r\nexport interface PopupSuffixComponentProps {\r\n onSubmit: (value: string) => void;\r\n close: () => void;\r\n}\r\ninterface ISuffixOptions {\r\n Suffix: string;\r\n}\r\nconst schema: Yup.SchemaOf = Yup.object({\r\n Suffix: Yup.string().required(),\r\n});\r\nexport function PopupSuffixComponent(props: PopupSuffixComponentProps) {\r\n const { t } = useTranslation();\r\n const initialValues: ISuffixOptions = useMemo(() => {\r\n return {\r\n Suffix: '',\r\n };\r\n }, []);\r\n const handleSubmitk = useCallback(\r\n values => {\r\n props.onSubmit(values.Suffix);\r\n },\r\n [props],\r\n );\r\n const content = useMemo(() => {\r\n return (\r\n {\r\n handleSubmitk(values);\r\n }}\r\n >\r\n
    \r\n \r\n {t(translations.AnalyticalSampleIDSuffix)} {' '}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n }, [handleSubmitk, initialValues, props.close, t]);\r\n return <>{content};\r\n}\r\nexport interface AnalyticalSampleIDSuffixPopupProps {\r\n show: boolean;\r\n onClose: () => void;\r\n onSubmit: (value: string) => void;\r\n}\r\nexport function AnalyticalSampleIDSuffixPopup({\r\n show,\r\n onClose,\r\n onSubmit,\r\n}: AnalyticalSampleIDSuffixPopupProps) {\r\n return (\r\n <>\r\n }\r\n />\r\n \r\n );\r\n}\r\nexport interface SuffixDialogProps {\r\n open: boolean;\r\n content: React.ReactNode;\r\n fullWidth: boolean;\r\n}\r\nexport function SuffixDialog(props: SuffixDialogProps) {\r\n return (\r\n \r\n {props.content}\r\n \r\n );\r\n}\r\n","import { Comments } from 'app/components/Comments';\r\nimport { useUploadToNewComment } from 'app/components/LargeFilesUpload/Components/useUploadToNewComment';\r\nimport { CommentReferenceTypes } from 'enums/commentReferenceTypes';\r\nimport styled from 'styled-components';\r\n\r\nexport interface RunCommentsprops {\r\n runId: number;\r\n isAdmin: boolean;\r\n}\r\nexport const RunComments = ({ runId, isAdmin }: RunCommentsprops) => {\r\n const { onCommentAdded } = useUploadToNewComment();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nconst CommentsWrap = styled('div')`\r\n padding: 16px;\r\n`;\r\n","import {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n} from '@material-ui/core';\r\nimport { H4 } from 'app/components/Typography';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { FormCheckbox } from 'app/components/Forms/FormCheckbox';\r\nimport { FormLocationPicker } from 'app/components/Forms/FormLocationPicker';\r\nimport { FormRoomPicker } from 'app/components/Forms/FormRoomPicker';\r\nimport { FormServiceGroupPicker } from 'app/components/Forms/FormServiceGroupPicker';\r\nimport { FormSamplePlateTypePicker } from 'app/components/Forms/FromSamplePlateTypePicker';\r\nimport { Formik } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as Yup from 'yup';\r\nimport { ISampleCreateBase } from '../../SamplePlatesPage/slice/types';\r\nimport { ImportComponent, ImportProps } from './ImportComponent';\r\nimport { Check } from 'app/components/BasicInputs/Check';\r\n\r\nexport interface ImportSamplePlateProps extends ImportProps {\r\n onSubmit: (item: ISampleCreateBase | null, file: File) => void;\r\n onClose: () => void;\r\n initialValues: ISampleCreateBase;\r\n}\r\nfunction GetSchema(f: boolean): Yup.SchemaOf {\r\n if (f) {\r\n const schema: Yup.SchemaOf = Yup.object({\r\n Room: Yup.mixed(),\r\n Location: Yup.mixed(),\r\n ServiceGroup: Yup.mixed().required(),\r\n SamplePlateType: Yup.mixed().required(),\r\n Active: Yup.boolean(),\r\n IsRack: Yup.boolean(),\r\n });\r\n return schema;\r\n } else {\r\n const schema: Yup.SchemaOf = Yup.object({\r\n Room: Yup.mixed(),\r\n Location: Yup.mixed(),\r\n ServiceGroup: Yup.mixed(),\r\n SamplePlateType: Yup.mixed(),\r\n Active: Yup.boolean(),\r\n IsRack: Yup.boolean(),\r\n });\r\n return schema;\r\n }\r\n}\r\nexport function ImportSamplePlateForm({\r\n onSubmit,\r\n onClose,\r\n processing,\r\n initialValues,\r\n ...props\r\n}: ImportSamplePlateProps) {\r\n const { t } = useTranslation();\r\n const [file, setFile] = React.useState();\r\n const [generatePlatesonImport, setGeneratePlatesonImport] =\r\n React.useState(false);\r\n const handleFileChange = (file: File) => {\r\n setFile(file);\r\n };\r\n const handleCheckboxChange = event => {\r\n setGeneratePlatesonImport(event.target.checked);\r\n };\r\n const handleSubmit = value => {\r\n if (file !== undefined) {\r\n if (generatePlatesonImport) {\r\n onSubmit(value, file);\r\n } else {\r\n onSubmit(null, file);\r\n }\r\n }\r\n };\r\n const handleClose = () => {\r\n onClose();\r\n };\r\n return (\r\n \r\n {\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }}\r\n >\r\n {formik => (\r\n <>\r\n
    \r\n \r\n \r\n

    \r\n {props.title ?? t(translations.ImportRecords)}\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {t(translations.GeneratePlatesOnImport)}\r\n
    \r\n {generatePlatesonImport && (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n )}\r\n \r\n
    \r\n );\r\n}\r\n","import { ImportSamplePlateForm } from '../PopupImport';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useSamplesListSlice } from 'app/pages/Samples/SamplesListPage/slice';\r\nimport { ISampleCreateBase } from 'app/pages/Samples/SamplePlatesPage/slice/types';\r\nimport {\r\n selectImportingRunDetails,\r\n selectImportingRunDetailsFinished,\r\n} from 'app/pages/Samples/SamplesListPage/slice/selectors';\r\n\r\nexport interface ImportSamplePlatesProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport function ImportSamplePlates(props: ImportSamplePlatesProps) {\r\n const { isOpen, onClose } = props;\r\n const dispatch = useDispatch();\r\n const { actions } = useSamplesListSlice();\r\n\r\n const importStarted = useSelector(selectImportingRunDetails);\r\n const importFinished = useSelector(selectImportingRunDetailsFinished);\r\n const handleConfirm = (item: ISampleCreateBase | null, file: any) => {\r\n if (file !== undefined) {\r\n dispatch(actions.setShowImportDialog(true));\r\n dispatch(actions.readImportFile({ file: file, plate: item }));\r\n }\r\n };\r\n return (\r\n <>\r\n {isOpen && importFinished === false && (\r\n onClose()}\r\n initialValues={{\r\n IsRack: false,\r\n ServiceGroup: undefined,\r\n SamplePlateType: undefined,\r\n Active: true,\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * RunPage\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { EditableCell } from '../EditableTable/EditableCell';\r\nimport { NumberField } from 'app/pages/Samples/EditableTable/Fields/NumberField';\r\nimport { TextField } from 'app/pages/Samples/EditableTable/Fields/TextField';\r\nimport { EditableTable } from '../EditableTable';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n selectRunDetails,\r\n selectRunDetailsCreatedDate,\r\n selectRunDetailsCompletion,\r\n} from '../SamplesListPage/slice/selectors';\r\nimport {\r\n ISample,\r\n ISampleRun,\r\n ISampleTarget,\r\n} from '../SamplesListPage/slice/types';\r\nimport { useSamplesListSlice } from '../SamplesListPage/slice';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Link } from 'react-router-dom';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { SamplePlatePicker } from 'app/components/pickers/AutocompletePickers/SamplePlatePicker';\r\nimport { getRunTypeValue } from '../components/RunTypePicker';\r\nimport { TargetSamplePlatePositionPicker } from 'app/components/pickers/AutocompletePickers/SamplePlatePositionPicker';\r\nimport { TargetSamplePlatePositionsPicker } from 'app/components/pickers/AutocompletePickers/SamplePlatePositionsPicker';\r\nimport { CreateSampleRunReservation } from '../components/CreateSampleRunReservation';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { PageActionRenderer } from 'app/components/BasicTable/PageActions/PageActionsRenderer';\r\nimport { GetServiceRequestDetailsPath } from '../RequestSamplesPage/slice/path';\r\nimport { ScreensId } from 'enums/ConfigurableTypes';\r\nimport { Column } from 'react-table';\r\nimport { GetSelectedActions } from 'app/pages/Samples/RunDetailsPage/SelectedRowActions/GetSelectaedRowActions';\r\nimport {\r\n DownloadTemplateRunDetailsSamples,\r\n ExportRunDetailsSamples,\r\n} from './Actions';\r\nimport { useConfigurableColumnsAdvanced } from 'app/components/BasicTable/useConfigurableColumnsAdvanced';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { IsModuleEnabled } from 'types/AppSettings';\r\nimport { ImportButton as SamplesImportButton } from '../SamplesListPage/ImportButton';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { selectAppSettings } from 'app/slice/selectors';\r\nimport { useRequestSamplesSlice } from '../RequestSamplesPage/slice';\r\nimport { AnalyticalSampleIDSuffixPopup } from './AnalyticalSampleIDSuffix';\r\nimport { RunComments } from './Components/Comments';\r\nimport { ReservationLink } from 'app/pages/Actions/GlobalSelectedActions/OpenReservation';\r\nimport { TopActionButton } from 'app/components/BasicButtons/TopActionButton';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRightSection,\r\n FormRow,\r\n StyledFormFieldsContainer,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { ReadonlyField } from '../components/ReadonlyField';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { ImportSamplePlates } from './ImportComponents/ImportSamplePlates';\r\nconst Root = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n`;\r\nconst Container = styled.div`\r\n padding: 0px 16px 0px 32px;\r\n`;\r\nexport const RUN_DETAILS_PAGE_PATH = '/samples/runs/details/:id';\r\nexport interface RunPageProps extends RouteComponentProps<{ id: string }> {}\r\nexport function RunDetailsPage(props: RunPageProps) {\r\n const id = +props.match.params.id;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const appSettings = useSelector(selectAppSettings);\r\n const { actions } = useSamplesListSlice();\r\n const completion = useSelector(selectRunDetailsCompletion);\r\n const { actions: requestactions } = useRequestSamplesSlice();\r\n const runDetails = useSelector(selectRunDetails);\r\n //const instrument = useSelector(selectRunDetailsInstrument);\r\n //const secondaryInstrument = useSelector(selectRunDetailsSecondaryInstrument);\r\n //const gradient = useSelector(selectRunDetailsGradient);\r\n const createdDate = useSelector(selectRunDetailsCreatedDate);\r\n //const acquision_type = useSelector(selectRunDetailsAcquision_type);\r\n const [showSuffixDialog, setShowSuffixDialog] =\r\n React.useState(false);\r\n const runType = runDetails?.RunType;\r\n const [samplePlateImportOpen, setSamplePlateImportOpen] =\r\n React.useState(false);\r\n const updateMyData = item => {\r\n // We also turn on the flag to not reset the page\r\n\r\n // setSkipPageReset(true);\r\n const foo: Omit = item as Omit;\r\n console.log('updateMyData', foo);\r\n dispatch(actions.updateRunSampleValue(item));\r\n };\r\n const samples = runDetails?.Samples;\r\n const handleCompleteButtonClick = React.useCallback(\r\n (suffix?: string) => {\r\n const data = samples;\r\n if (data === undefined) {\r\n return;\r\n }\r\n if (runType === undefined) {\r\n return;\r\n }\r\n\r\n dispatch(\r\n actions.completeRun({\r\n Id: id,\r\n RunType: runType,\r\n Samples: data,\r\n AnalyticalSampleIDSuffix: suffix,\r\n }),\r\n );\r\n },\r\n [actions, dispatch, id, samples, runType],\r\n );\r\n const submitSuffixDialog = React.useCallback(\r\n (value: string) => {\r\n setShowSuffixDialog(false);\r\n handleCompleteButtonClick(value);\r\n },\r\n [handleCompleteButtonClick],\r\n );\r\n const showCompleteDialog = React.useCallback(() => {\r\n if (runDetails?.RunType === 'Fractioning') {\r\n setShowSuffixDialog(true);\r\n } else {\r\n handleCompleteButtonClick();\r\n }\r\n }, [handleCompleteButtonClick, runDetails?.RunType]);\r\n const runId = runDetails?.Id;\r\n\r\n const handleExportButtonClick = React.useCallback(() => {\r\n dispatch(actions.exportRun({ Id: runId, data: samples || [] }));\r\n }, [actions, dispatch, runId, samples]);\r\n // const handleDownloadTemplateButtonClick = React.useCallback(() => {\r\n // dispatch(actions.exportRun({ Id: runId, data: [] }));\r\n // }, [actions, dispatch, runId]);\r\n const columns = React.useMemo(() => {\r\n const columns: Array> = [\r\n {\r\n Header: t(translations.SampleId) as string,\r\n accessor: 'Id', // accessor is the \"key\" in the data\r\n },\r\n {\r\n Header: 'Request ID',\r\n accessor: 'ServiceRequestId',\r\n Cell: ({ value }) => (\r\n {value}\r\n ),\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: 'StatusName',\r\n Cell: ({ row, value }) => {\r\n /*switch (value) {\r\n case 0:\r\n return 'New';\r\n case 1:\r\n return 'In Work';\r\n case 2:\r\n return 'Done';\r\n default:\r\n return 'N/A';\r\n }*/\r\n return row.original.StatusName;\r\n },\r\n },\r\n { Header: 'Project ID', accessor: 'BudgetId' },\r\n {\r\n Header: 'Analytical Sample ID',\r\n accessor: 'AnalyticalSampleId',\r\n },\r\n {\r\n Header: 'BiologicalSampleId',\r\n accessor: 'BiologicalSampleId',\r\n },\r\n { Header: t(translations.TMT_Type) as string, accessor: 'TMT_Type' },\r\n {\r\n Header: t(translations.TMT_Label) as string,\r\n accessor: 'TMT_Label',\r\n },\r\n {\r\n id: 'TMT_RunSet',\r\n Header: t(translations.TMT_Set) as string,\r\n accessor: 'TMT_Set',\r\n Cell: ({ row, value }) => {\r\n if (row.ServiceRequestId !== undefined && row.TMT_Set !== undefined) {\r\n return `${row.ServiceRequestId}-${row.TMT_Set}`;\r\n } else {\r\n return <>{value};\r\n }\r\n },\r\n },\r\n {\r\n Header: 'Tube Label',\r\n accessor: 'TubeLabel',\r\n },\r\n {\r\n Header: t(translations.SamplePlateId) as string,\r\n accessor: 'SamplePlateId',\r\n },\r\n {\r\n Header: t(translations.UniquePlateNumber) as string,\r\n accessor: 'UniquePlateNumber',\r\n },\r\n {\r\n Header: t(translations.PlatePosition) as string,\r\n accessor: 'Position',\r\n },\r\n {\r\n Header: t(translations.NumericalPlatePosition) as string,\r\n accessor: 'NumericalPlatePosition',\r\n Cell: ({ row, value }) => {\r\n if (value !== null) {\r\n /*const res = CellPositionToNumber(\r\n value,\r\n row.original.SamplePlateTypeRows,\r\n );*/\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n {\r\n Header: 'Volume (ul)',\r\n accessor: 'Volume',\r\n },\r\n {\r\n Header: 'Concentration (mg/mL)',\r\n accessor: 'Concentration',\r\n },\r\n {\r\n Header: t(translations.SampleType) as string,\r\n accessor: 'SampleType',\r\n },\r\n {\r\n Header: 'Target Tube Label',\r\n accessor: 'TargetTubeLabel',\r\n Cell: React.memo(EditableCell(TextField)),\r\n },\r\n {\r\n Header: 'Target Plate ID',\r\n accessor: 'TargetPlateId',\r\n Cell:\r\n runType === undefined || ['MassSpec'].includes(runType)\r\n ? 'N/A'\r\n : React.memo(EditableCell(SamplePlatePicker)),\r\n },\r\n {\r\n Header: 'Target Plate Position',\r\n accessor: 'TargetPosition',\r\n Cell:\r\n runType === undefined || ['MassSpec'].includes(runType)\r\n ? 'N/A'\r\n : ['Fractioning'].includes(runType)\r\n ? React.memo(EditableCell(TargetSamplePlatePositionsPicker))\r\n : React.memo(EditableCell(TargetSamplePlatePositionPicker)),\r\n },\r\n {\r\n Header: 'Target Volume (ul)',\r\n accessor: 'TargetVolume',\r\n Cell:\r\n runType === undefined || ['MassSpec'].includes(runType)\r\n ? 'N/A'\r\n : React.memo(EditableCell(NumberField)),\r\n },\r\n {\r\n Header: 'Target Concentration (mg/mL)',\r\n accessor: 'TargetConcentration',\r\n Cell:\r\n runType === undefined || ['MassSpec'].includes(runType)\r\n ? 'N/A'\r\n : React.memo(EditableCell(NumberField)),\r\n },\r\n {\r\n Header: 'Target Sample Type',\r\n accessor: 'TargetSampleType',\r\n Cell: React.memo(EditableCell(TextField)),\r\n },\r\n ];\r\n return columns;\r\n }, [runType, t]);\r\n\r\n const pageActions = React.useMemo(() => {\r\n const pactions: PageActionRenderer[] = [\r\n () => (\r\n \r\n ),\r\n ];\r\n pactions.push(() => (\r\n \r\n ));\r\n\r\n pactions.push(() => (\r\n {\r\n dispatch(actions.setShowImportDialog(false));\r\n setSamplePlateImportOpen(true);\r\n }}\r\n >\r\n {t(translations.ImportTargetSamples)}\r\n ,\r\n ,\r\n ]}\r\n >\r\n ));\r\n\r\n return pactions;\r\n }, [\r\n actions,\r\n completion,\r\n dispatch,\r\n handleExportButtonClick,\r\n runDetails,\r\n runId,\r\n samples,\r\n showCompleteDialog,\r\n t,\r\n ]);\r\n const {\r\n configurableColumns,\r\n columnAccessors,\r\n exportConfigurableColumns,\r\n handleConfigurableColumns,\r\n } = useConfigurableColumnsAdvanced(ScreensId.SampleRunsDetails, columns, [\r\n 'TargetTubeLabel',\r\n 'TargetPlateId',\r\n 'TargetPosition',\r\n 'TargetVolume',\r\n 'TargetConcentration',\r\n 'TargetSampleType',\r\n ]);\r\n React.useEffect(() => {\r\n dispatch(actions.loadRunDetqails({ id: id, columns: columnAccessors }));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n const handleExport = (): Promise => {\r\n return ExportRunDetailsSamples(id, exportConfigurableColumns);\r\n };\r\n const handleDownloadTemplateClick = (): Promise => {\r\n const res = DownloadTemplateRunDetailsSamples(\r\n id,\r\n exportConfigurableColumns,\r\n );\r\n if (res !== undefined) {\r\n return res;\r\n } else\r\n return new Promise((resolve, reject) => {\r\n resolve();\r\n });\r\n };\r\n const importHandler = () => {\r\n dispatch(requestactions.toggleImport(true));\r\n };\r\n return (\r\n \r\n \r\n setSamplePlateImportOpen(false)}\r\n />\r\n \r\n {t(translations.RunDetails)} {' '}\r\n \r\n {' #'} {id}\r\n \r\n }\r\n columns={configurableColumns !== undefined ? configurableColumns : []}\r\n data={runDetails?.Samples || []}\r\n useRowSelect={true}\r\n useGlobalFilter={true}\r\n // fetchData={fetchData}\r\n // skipPageReset={skipPageReset}\r\n updateMyData={updateMyData}\r\n pageActions={pageActions}\r\n handleConfigurableColumns={handleConfigurableColumns}\r\n handleExport={handleExport}\r\n useImportLink={true}\r\n importHandler={importHandler}\r\n onDownloadTemplate={handleDownloadTemplateClick}\r\n selectedRowsActions={GetSelectedActions(\r\n t,\r\n id,\r\n exportConfigurableColumns,\r\n {},\r\n )}\r\n subHeader={\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n ? runDetails?.ReservationIds?.map(reservationId => (\r\n <>\r\n \r\n {reservationId}\r\n \r\n  \r\n \r\n ))\r\n : 'N/A'\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n
    \r\n setShowSuffixDialog(false)}\r\n onSubmit={submitSuffixDialog}\r\n />\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import { httpClient } from './HttpClient';\r\n\r\nexport const EmailNotificationsApi = {\r\n deleteSelectedRows: (payload: number[]) => {\r\n const url = `/api/odata/v4/emailnotifications/DeleteSelected`;\r\n const data = { keys: payload };\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import {\r\n selectAuthenticatedUser,\r\n selectglobalSettings,\r\n} from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { ScreensId } from 'enums/ConfigurableTypes';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { Column } from 'react-table';\r\nimport { IBasePageProps, IListPageProps } from '../IBasePageProps';\r\nimport { IEmailNotificationsRow } from './IEmailNotificationsRow';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { DateTimeLabel } from 'app/components/DateTimeLabel';\r\nimport { DescriptionCell } from 'app/components/BasicTable/components/DescriptionCell';\r\nimport { BasicTable, IBasicTableState } from 'app/components/BasicTable';\r\nimport { GetSelectedActions } from './SelectedRowActions/GetSelectedRowActions';\r\nimport { SelectedRowsActionRenderer } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionRenderer';\r\nimport { withSavedHistoryT } from '../../components/BasicTable/withSavedHistory';\r\nimport { withGlobalServiceGroupFilter } from 'app/components/BasicTable/withGlobalServiceGroupFilter';\r\nimport { GetFilters as getFilters } from './Filter';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { AlertContentType } from 'app/components/BasicAlert';\r\nimport AssetRenderer from 'app/components/BasicTable/CellRenderers/AssetRenderer';\r\nimport { UserProfileLink } from '../UserDetails/OpenUserProfile';\r\n\r\nexport const NOTIFICATIONS_LOG_PAGE_PATH = '/emailnotifications';\r\ntype RowType = IEmailNotificationsRow;\r\nexport interface EmailNotificationsPageProps\r\n extends IBasePageProps,\r\n IListPageProps {}\r\n\r\nfunction EmailNotifications(props: EmailNotificationsPageProps) {\r\n const { t } = useTranslation();\r\n const user = useSelector(selectAuthenticatedUser);\r\n const settings = useSelector(selectglobalSettings);\r\n const scopeOfMonth = settings.GetString(\r\n AllowedSettings.DeleteEmailNotficationsMonth,\r\n );\r\n const topMessage = {\r\n type: 'info',\r\n message: t(translations.EmailNotficationsScreenWarning).replace(\r\n '{0}',\r\n scopeOfMonth,\r\n ),\r\n closable: true,\r\n } as AlertContentType;\r\n const isMainAdmin =\r\n user !== undefined && user.Roles.includes(Roles.Administrators);\r\n const columns: Column[] = React.useMemo(\r\n () => [\r\n {\r\n Header: t(translations.Timestamp) as string,\r\n accessor: 'Timestamp',\r\n Cell: ({ value }) => ,\r\n },\r\n {\r\n Header: t(translations.Recipient) as string,\r\n accessor: 'RecipientName',\r\n Cell: ({ value, row }) =>\r\n row.original.Recipient !== null &&\r\n row.original.Recipient !== undefined ? (\r\n <>\r\n \r\n \r\n ) : (\r\n <>{t(translations.NA)}\r\n ),\r\n },\r\n {\r\n Header: t(translations.EmailTo) as string,\r\n accessor: 'EmailTo',\r\n },\r\n {\r\n Header: t(translations.EmailCc) as string,\r\n accessor: 'EmailCc',\r\n },\r\n {\r\n Header: t(translations.EmailBcc) as string,\r\n accessor: 'EmailBcc',\r\n },\r\n {\r\n Header: t(translations.CreatedBy) as string,\r\n accessor: 'CreatedByName',\r\n },\r\n {\r\n Header: t(translations.Subject) as string,\r\n accessor: 'Subject',\r\n },\r\n {\r\n Header: t(translations.EmailMessage) as string,\r\n accessor: 'Message',\r\n Cell: DescriptionCell({ width: 'medium' }),\r\n },\r\n {\r\n Header: t(translations.Asset) as string,\r\n accessor: 'AssetName',\r\n Cell: AssetRenderer,\r\n },\r\n ],\r\n [t],\r\n );\r\n // const k = keys())\r\n const initialState: IBasicTableState = React.useMemo(\r\n () => ({\r\n sortBy: [{ id: 'Timestamp', desc: true }],\r\n }),\r\n [],\r\n );\r\n const selectedRowActions: SelectedRowsActionRenderer[] =\r\n isMainAdmin ? GetSelectedActions({}) : [];\r\n\r\n const url = '/api/odata/v4/emailnotifications';\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\nconst TTable = withSavedHistoryT(\r\n BasicTable,\r\n '~/EmailNotifications',\r\n getFilters,\r\n);\r\n\r\nexport const EmailNotificationsPage = withGlobalServiceGroupFilter(\r\n EmailNotifications,\r\n false,\r\n);\r\n","import { SelectedRowsActionRenderer } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionRenderer';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IEmailNotificationsRow } from '../IEmailNotificationsRow';\r\nimport * as React from 'react';\r\nimport { SelectedRowsActionIconButton } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionIconButton';\r\nimport { translations } from 'locales/translations';\r\nimport { Body } from 'app/components/Typography';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { EmailNotificationsApi } from 'api/EmailNotificationsApi';\r\n\r\nexport interface GetSelectedActionsProps {}\r\n\r\nexport function GetSelectedActions(\r\n props: GetSelectedActionsProps,\r\n): SelectedRowsActionRenderer[] {\r\n const { t } = useTranslation();\r\n const SelectedActions: SelectedRowsActionRenderer[] =\r\n React.useMemo(\r\n () => [\r\n (rows, onRefresh) => (\r\n \r\n {t(translations.ConfirmDeleteEmailNotif_message)}\r\n \r\n }\r\n confirmButtonLabel={t(translations.OK)}\r\n cancelButtonLabel={t(translations.Cancel)}\r\n rows={rows}\r\n onRefresh={onRefresh}\r\n variantButton=\"button\"\r\n validConfirm={true}\r\n action={() =>\r\n new Promise((resolve, reject) => {\r\n const postData = rows.map(item => item.Id);\r\n // do some work on the selected rows\r\n\r\n return EmailNotificationsApi.deleteSelectedRows(postData)\r\n .then(response => {\r\n let success = t(\r\n translations.DeleteNotifications_success,\r\n ) as string;\r\n resolve({\r\n SuccessMessages: [success],\r\n ErrorMessages: [],\r\n WarningMessages: [],\r\n } as IResponseType);\r\n })\r\n .catch(error => {\r\n let err = t(\r\n translations.DeleteNotifications_error,\r\n ) as string;\r\n reject(err);\r\n });\r\n })\r\n }\r\n />\r\n ),\r\n ],\r\n [t],\r\n );\r\n return SelectedActions;\r\n}\r\n","import * as React from 'react';\r\nimport { IBasePageProps } from '../../pages/IBasePageProps';\r\nimport { useGlobalServiceGroupsFilter } from 'app/hooks/useGlobalServiceGroupsFilter';\r\n\r\n/**\r\n * Connects the saved selected global service groups filter with the element:\r\n * 1. Sets the state to show/hide the top service groups filter UI element\r\n * 2. Connects the saved selection to the prop of the wrapped element\r\n * example: export const FooPage = withGlobalServiceGroupFilter(FooPageComponent, true)\r\n * @param Component Page component that extends the IBasePageProps params interface\r\n * @param applyGlobalServiceGroupsFilter enable/disable the global service groups filter on a page\r\n * @returns component that can be passed to the router\r\n */\r\nexport function withGlobalServiceGroupFilter

    (\r\n Component: React.ComponentType

    ,\r\n applyGlobalServiceGroupsFilter: boolean,\r\n): React.FC

    {\r\n return ({ ...props }: IBasePageProps) => {\r\n const { serviceGroups } = useGlobalServiceGroupsFilter(\r\n applyGlobalServiceGroupsFilter,\r\n );\r\n\r\n if (serviceGroups === undefined && applyGlobalServiceGroupsFilter) {\r\n return <>;\r\n }\r\n return ;\r\n };\r\n}\r\n","/**\r\n *\r\n * AssetCatGroupFilter\r\n *\r\n */\r\nimport { AssetCatGroupPicker } from 'app/components/pickers/AutocompletePickers/AssetCatGroupPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { IAssetCatGroupDto } from 'api/odata/generated/entities/IAssetCatGroupDto';\r\n\r\nexport const AssetCatGroupFilter = (props: IFilterComponentProps) => {\r\n const { t } = useTranslation();\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n if (props.readonly === true) {\r\n return <>{props.value?.Name};\r\n }\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AssetCatGroupFilter;\r\n","/**\r\n *\r\n * AssetCatFilter\r\n *\r\n */\r\nimport { AssetCatPicker } from 'app/components/pickers/AutocompletePickers/AssetCatPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const AssetCatFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\nexport default AssetCatFilter;\r\n","/**\r\n *\r\n * AssetCatPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface ProjectPickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/ProjectFilter';\r\nexport const initProjectData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function ProjectPicker(props: ProjectPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AssetPickerFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { BudgetPicker } from 'app/components/pickers/AutocompletePickers/BudgetPicker';\r\n\r\nexport const ProjectFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default ProjectFilter;\r\n","/**\r\n *\r\n * InstituteFilter\r\n *\r\n */\r\nimport { InstitutePicker } from 'app/components/pickers/AutocompletePickers/InstitutePicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const InstituteFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n | undefined}\r\n isOpen={props.open}\r\n placeholder={t(translations.AllValues)}\r\n size=\"small\"\r\n ariaLabel={props.label}\r\n fullWidth={props.fullWidth}\r\n id={props.id}\r\n />\r\n );\r\n};\r\nexport default InstituteFilter;\r\n","/**\r\n *\r\n * DepartmentFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { DepartmentPicker } from 'app/components/pickers/AutocompletePickers/DepartmentPicker';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const DepartmentFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n | undefined}\r\n isOpen={props.open}\r\n placeholder={t(translations.AllValues)}\r\n size=\"small\"\r\n fullWidth={props.fullWidth}\r\n ariaLabel={props.label}\r\n id={props.id}\r\n />\r\n );\r\n};\r\nexport default DepartmentFilter;\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { AutocompleteMultiPickerExProps } from 'app/components/BasicPickers/AutocompleteMultiPickerEx';\r\nimport { AssetsPicker } from '../../MultiSelectPickers/AssetsPicker';\r\n\r\nexport interface AssetMultiPickerProps\r\n extends AutocompleteMultiPickerExProps {}\r\n\r\nconst url = '/api/odata/v4/AssetNames';\r\n\r\nexport const initAssetMultiData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return Promise.resolve([] as IAssetDto[]);\r\n }\r\n const ids = initval.split('|').map(v => parseInt(v));\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n } = {\r\n $orderby: 'Id asc',\r\n $filter: '(Id in (' + ids.join(',') + '))',\r\n $top: ids.length,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as IAssetDto[]);\r\n};\r\n\r\nexport const AssetMultiPicker = (props: AssetMultiPickerProps) => {\r\n return ;\r\n};\r\n","import { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { AssetsPicker } from 'app/components/pickers/MultiSelectPickers/AssetsPicker';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const AssetMultiFilter = (props: IFilterComponentProps) => {\r\n const {\r\n onChange,\r\n value,\r\n additionalItem,\r\n customData,\r\n withoutServiceGroups,\r\n urlType,\r\n dateTimeClear,\r\n label,\r\n labelFunc,\r\n onOpen,\r\n onClose,\r\n open,\r\n fullWidth,\r\n ...other\r\n } = props;\r\n const handleChange = (value: Entity[]) => {\r\n onChange(value);\r\n };\r\n return (\r\n \r\n );\r\n};\r\nexport const AssetWorkOrderMultiFilter = (props: IFilterComponentProps) => {\r\n const {\r\n onChange,\r\n value,\r\n additionalItem,\r\n customData,\r\n withoutServiceGroups,\r\n urlType,\r\n dateTimeClear,\r\n label,\r\n labelFunc,\r\n onOpen,\r\n onClose,\r\n open,\r\n ...other\r\n } = props;\r\n const handleChange = (value: Entity[]) => {\r\n onChange(value);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * UserDisciplinePicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface UserDisciplinePickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/DisciplineFilter';\r\nconst publicUrl = '/api/odata/v4/DisciplineFilter/PublicDisciplines';\r\nexport const initUserDisciplineData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function UserDisciplinePicker(props: UserDisciplinePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst loadPublicData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(publicUrl, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function UserDisciplinePublicPicker(props: UserDisciplinePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * BookitlabLogo\r\n *\r\n */\r\nimport { publicNS } from 'locales/i18n';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { messages } from './messages';\r\n\r\nexport interface BookitlabLogoProps {\r\n width?: number | string;\r\n height?: number | string;\r\n vectorSmallOverlapColor?: string;\r\n vaectorBigCircleColor?: string;\r\n vectorSmallCircleColor?: string;\r\n vectorBigOverlapColor?: string;\r\n vectorBackColor?: string;\r\n size?: '123x34' | '80x24';\r\n}\r\n\r\nexport const BookitlabLogo = React.memo(function BookitlabLogo(\r\n props: BookitlabLogoProps,\r\n) {\r\n const { width, height, size } = props;\r\n const { t } = useTranslation();\r\n\r\n return size === '80x24' ? (\r\n \r\n {t(messages.bookitlab())}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {t(messages.bookitlab())}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport const BookitlabLoginLogo = React.memo(function BookitlabLoginLogo(\r\n props: BookitlabLogoProps,\r\n) {\r\n const { width, height } = props;\r\n const { t } = useTranslation(publicNS);\r\n return (\r\n \r\n {t(messages.bookitlab())}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import styled from 'styled-components';\r\nimport { Theme, Toolbar, ToolbarProps } from '@material-ui/core';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n// margin: ${props =>\r\n// props.variant === 'dense' ? props.theme.spacing(1, 1, 0) : '0px'};\r\nexport const StyledToolbar = styled(\r\n ({\r\n theme,\r\n children,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n children: React.ReactNode;\r\n } & ToolbarProps) => {children},\r\n)`\r\n box-shadow: unset;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n align-self: stretch;\r\n width: 100%;\r\n padding: ${props =>\r\n props.variant === 'dense' ? '0px' : props.theme.spacing(3, 4, 2)};\r\n margin: 0;\r\n\r\n &.shortview {\r\n box-shadow: inset 0px -1px 0px #e0e5ec;\r\n gap: ${props => props.theme.spacing(1)}px;\r\n padding: ${props =>\r\n props.variant === 'dense' ? '0px' : props.theme.spacing(0, 2)};\r\n & .actionsContainer {\r\n gap: ${props => props.theme.spacing(1)}px;\r\n }\r\n & .titleSection {\r\n & .title {\r\n & .titleText {\r\n max-width: 26ch;\r\n white-space: pre;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n display: inline;\r\n }\r\n }\r\n }\r\n }\r\n &.toptoolbar {\r\n background: ${bookitColors.base.white};\r\n margin: 0px;\r\n padding: 12px 32px;\r\n &.isExpanded {\r\n padding: 12px 32px 12px 24px;\r\n }\r\n }\r\n & .titleSection {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0px;\r\n gap: ${props => props.theme.spacing(1)}px;\r\n width: 100%;\r\n &.titleAndIconMobile {\r\n flex-grow: 1;\r\n }\r\n &.titleAsColumn {\r\n flex-direction: column;\r\n align-items: flex-start;\r\n }\r\n & .title {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0px;\r\n width: 100%;\r\n gap: ${props => props.theme.spacing(1)}px;\r\n &.title-with-link {\r\n align-items: flex-start;\r\n }\r\n & .titleText {\r\n white-space: pre;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 30ch;\r\n display: inherit;\r\n }\r\n & .longTitleText {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 45ch;\r\n display: initial;\r\n }\r\n }\r\n }\r\n & .messageContainer {\r\n margin-inline: ${props => props.theme.spacing(6)}px;\r\n flex-grow: 1;\r\n }\r\n & .actionsContainer {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: start;\r\n gap: ${props => props.theme.spacing(2)}px;\r\n padding: 0px;\r\n & span > a {\r\n & > svg {\r\n font-size: 20px;\r\n }\r\n }\r\n }\r\n`;\r\nexport const DashboardToolbar = styled(\r\n ({\r\n theme,\r\n children,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n children: React.ReactNode;\r\n } & ToolbarProps) => {children},\r\n)`\r\n &.dash-toolbar {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n align-self: stretch;\r\n width: 100%;\r\n padding: 0px 16px 0px 32px;\r\n &.short-view {\r\n padding: 0px 8px 0px 16px;\r\n }\r\n & .dash-left-content {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n & .dash-right-content {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n }\r\n`;\r\nexport const DashboardContent = styled.div`\r\n &.dash-content {\r\n padding: 0px 32px;\r\n &.short-view {\r\n padding: 0px 16px;\r\n }\r\n }\r\n`;\r\n","/**\r\n *\r\n * MultiSelectBasicPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Entity } from 'types/common';\r\nimport {\r\n AutocompleteMultiPicker,\r\n AutocompleteMultiPickerProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPicker';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport { undefinedIfIsEmpty } from 'app/components/BasicTable/useProfileSetting/parseProfileUrl';\r\n\r\nexport interface BaseURLMultiPickerProps\r\n extends Omit, 'loadData'> {\r\n url: string;\r\n queryfilter?: string | undefined;\r\n select?: string[];\r\n}\r\n\r\nexport function BaseURLMultiPicker(props: BaseURLMultiPickerProps) {\r\n const { url, queryfilter, select, ...other } = props;\r\n const loadData = async (searchTerm: string | null) => {\r\n const params: {\r\n $orderby: string;\r\n $top: number;\r\n $filter?: string;\r\n $select?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $select: undefinedIfIsEmpty(select?.join(',')),\r\n $top: 100,\r\n };\r\n const predicates: string[] = [];\r\n if (queryfilter !== undefined && queryfilter !== '') {\r\n predicates.push(queryfilter);\r\n }\r\n\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: predicates,\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm !== null ? searchTerm : undefined,\r\n }).toString();\r\n\r\n const response = await httpClient.get(url, params);\r\n return response.value;\r\n };\r\n return ;\r\n}\r\n","/**\r\n *\r\n * InvoiceIdMultiPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompleteMultiPicker,\r\n AutocompleteMultiPickerProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface InvoiceIdProps\r\n extends Omit, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/InvoiceIdFilter';\r\nexport const initInvoiceIdData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const ids = initval.split('|').map(v => parseInt(v));\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Id asc',\r\n $filter: '(Id in (' + ids.join(',') + '))',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: ids.length,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null): Promise[]> => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Id asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function InvoiceIdMultiPicker(props: InvoiceIdProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * InstituteTypeFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { InstituteTypePicker } from 'app/components/pickers/AutocompletePickers/InstituteTypePicker';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const InstituteTypeFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n | undefined}\r\n isOpen={props.open}\r\n placeholder={t(translations.AllValues)}\r\n size=\"small\"\r\n ariaLabel={props.label}\r\n fullWidth={props.fullWidth}\r\n id={props.id}\r\n />\r\n );\r\n};\r\nexport default InstituteTypeFilter;\r\n","import { LabelTypes } from '../slice/types';\r\nimport Handlebars from 'handlebars';\r\n\r\n/**\r\n * Produces a URL used to print QR barcodes\r\n * @param item data record e.g. assetDetails, LocationListDto, etc.\r\n * @param type The type of the URL Template: Asset/LocationList/etc.\r\n * @param urlTemplate The URL template as configured in system settings\r\n * @returns\r\n */\r\nexport function getQrUrl(item: any, type: LabelTypes, urlTemplate: string) {\r\n if (\r\n type === 'Asset' &&\r\n (item as IGetQrURLAssetDetails).InternalCode !== undefined\r\n ) {\r\n return getAssetQrUrl(item, urlTemplate);\r\n } else {\r\n return getQrUrlH(item, urlTemplate);\r\n }\r\n}\r\n\r\ninterface IGetQrURLAssetDetails {\r\n InternalCode: string | null;\r\n}\r\n\r\nfunction getAssetQrUrl(\r\n assetDetails: IGetQrURLAssetDetails,\r\n AssetBarcodeUrlTemplate,\r\n) {\r\n if (assetDetails.InternalCode === null) {\r\n throw new Error('Asset QR: Internal code is empty');\r\n }\r\n return AssetBarcodeUrlTemplate.replace(\r\n /:internalCode/g,\r\n assetDetails.InternalCode,\r\n );\r\n}\r\n\r\n/**\r\n * Produces a URL through Handlebars engine\r\n * @param item data record\r\n * @param urlTemplate url template string\r\n * @returns URL for QR label print\r\n */\r\nfunction getQrUrlH(item: any, urlTemplate) {\r\n const template = Handlebars.compile(urlTemplate);\r\n const url = template(item);\r\n return url;\r\n}\r\n","import { ILabelTypeDto } from 'api/odata/generated/entities/ILabelTypeDto';\r\nimport { IFileResult, ILabelPrinter } from '.';\r\nimport { LabelPrinter } from '../slice/types';\r\nimport { getQrUrl } from './getQrUrl';\r\n\r\nconst generateLabel = (labelXml, assetData, AssetBarcodeUrlTemplate) => {\r\n var label = globalThis.dymo.label.framework.openLabelXml(labelXml);\r\n var objectMapping = getObjectMapping(label, AssetBarcodeUrlTemplate);\r\n Object.keys(objectMapping).forEach(function (objectName) {\r\n var writeData = objectMapping[objectName](assetData);\r\n if (objectName === 'Name') {\r\n var splittedData = writeData.split('-');\r\n writeData = splittedData[0];\r\n if (splittedData.length > 1) {\r\n writeData += '-' + splittedData[1];\r\n }\r\n }\r\n if (objectName === 'Room') {\r\n if (assetData.LocationName) writeData += ', ' + assetData.LocationName;\r\n if (assetData.SubLocationName)\r\n writeData += ', ' + assetData.SubLocationName;\r\n }\r\n console.log('writeData', writeData);\r\n label.setObjectText(objectName, writeData);\r\n });\r\n return label;\r\n};\r\nconst getObjectMapping = (label, AssetBarcodeUrlTemplate) => {\r\n var staticObjectNames = ['CompanyLogo', 'StaticText'];\r\n return label.getObjectNames().reduce(function (previousValue, currentValue) {\r\n var nameParts = currentValue.split('_');\r\n var assetPropertyName = nameParts[0];\r\n if (staticObjectNames.indexOf(assetPropertyName) >= 0) {\r\n return previousValue;\r\n }\r\n if (assetPropertyName.toLowerCase() === 'qr') {\r\n if (nameParts.length > 1 && nameParts[1].toLowerCase() === 'text') {\r\n previousValue[currentValue] = function (assetData) {\r\n return getQrUrl(assetData, 'Asset', AssetBarcodeUrlTemplate);\r\n };\r\n }\r\n } else {\r\n previousValue[currentValue] = function (assetData) {\r\n var value = getValue(assetData, currentValue);\r\n if (value === null || value === undefined) {\r\n return 'N/A';\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n }\r\n return previousValue;\r\n }, {});\r\n};\r\nfunction getValue(obj, path) {\r\n var properties = path.split(/[.[\\]]+/);\r\n while (properties.length) {\r\n var property = properties.shift();\r\n obj = obj[property];\r\n if (obj === null || obj === undefined) {\r\n return null;\r\n }\r\n }\r\n return obj;\r\n}\r\n\r\nexport const Dymo: ILabelPrinter = {\r\n getPrinters: () => {\r\n const dymoLabelPrinterOption = printer => ({\r\n Id: printer.name,\r\n Name: `Dymo - ${printer.name}`,\r\n Type: 'Dymo',\r\n Device: printer,\r\n });\r\n return initDymoFramework()\r\n .then(p => {\r\n return globalThis.dymo.label.framework.getLabelWriterPrintersAsync();\r\n })\r\n .then(dymoPrinters => {\r\n const result = dymoPrinters.map(dymoLabelPrinterOption);\r\n return result;\r\n });\r\n },\r\n\r\n preview: (\r\n printer: LabelPrinter,\r\n labelType: ILabelTypeDto,\r\n data: any[],\r\n options,\r\n ) => {\r\n return new Promise((resolve, reject) => {\r\n const result: IFileResult[] = [];\r\n try {\r\n for (const assetData of data) {\r\n var label = generateLabel(\r\n labelType.Xml,\r\n assetData,\r\n options.AssetBarcodeUrlTemplate,\r\n );\r\n var labelPreview = 'data:image/png;base64,' + label.render();\r\n var blob = dataURItoBlob(labelPreview);\r\n result.push({\r\n fileName: `${assetData.Name}.png`,\r\n content: blob,\r\n });\r\n }\r\n resolve(result);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n },\r\n download: (\r\n printer: LabelPrinter,\r\n labelType: ILabelTypeDto,\r\n data: any[],\r\n options,\r\n ) => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const result: any[] = [];\r\n for (const assetData of data) {\r\n var label = generateLabel(\r\n labelType.Xml,\r\n assetData,\r\n options.AssetBarcodeUrlTemplate,\r\n );\r\n var blob = new Blob([label.getLabelXml()], { type: 'text/xml' });\r\n\r\n result.push({\r\n fileName: `${assetData.Name}.label`,\r\n content: blob,\r\n });\r\n }\r\n resolve(result);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n },\r\n print: (\r\n printer: LabelPrinter,\r\n labelType: ILabelTypeDto,\r\n data: any[],\r\n options,\r\n ) => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n var printParams =\r\n globalThis.dymo.label.framework.createLabelWriterPrintParamsXml({\r\n twinTurboRoll:\r\n globalThis.dymo.label.framework.TwinTurboRoll[\r\n labelType.twinTurboRoll ?? 'Left'\r\n ],\r\n });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var assetData = data[index];\r\n var label = generateLabel(\r\n labelType.Xml,\r\n assetData,\r\n options.AssetBarcodeUrlTemplate,\r\n );\r\n label.print(printer.Id, printParams);\r\n }\r\n resolve(null);\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n },\r\n};\r\nconst initDymoFramework: () => Promise = () => {\r\n return new Promise((resolve, reject) => {\r\n const framework = globalThis.dymo.label.framework;\r\n\r\n framework.init(p => {\r\n if (!!p.errorDetails) {\r\n reject(p.errorDetails);\r\n } else {\r\n resolve(framework);\r\n }\r\n });\r\n });\r\n};\r\n\r\nfunction dataURItoBlob(dataURI) {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\r\n var byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n var ab = new ArrayBuffer(byteString.length);\r\n\r\n // create a view into the buffer\r\n var ia = new Uint8Array(ab);\r\n\r\n // set the bytes of the buffer to the correct values\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n // write the ArrayBuffer to a blob, and you're done\r\n var blob = new Blob([ab], { type: mimeString });\r\n return blob;\r\n}\r\n","import { ILabelTypeDto } from 'api/odata/generated/entities/ILabelTypeDto';\r\nimport Handlebars from 'handlebars';\r\nimport { ILabelPrinter } from '.';\r\nimport { LabelPrinter } from '../slice/types';\r\n\r\nHandlebars.registerHelper('padStart', (context, maxLength, fillString) => {\r\n return String(context).padStart(maxLength, fillString);\r\n});\r\nHandlebars.registerHelper('padEnd', (context, maxLength, fillString) => {\r\n return String(context).padEnd(maxLength, fillString);\r\n});\r\n\r\nexport const zebra: ILabelPrinter = {\r\n getPrinters: () => {\r\n return new Promise((resolve, reject) => {\r\n globalThis.BrowserPrint.getLocalDevices(\r\n device_list => {\r\n try {\r\n if (device_list.printer === undefined) {\r\n resolve([]);\r\n }\r\n if (!Array.isArray(device_list.printer)) {\r\n reject('Zebra Printers list read error');\r\n }\r\n const printers = device_list.printer.map(p => {\r\n var r: LabelPrinter = {\r\n Id: p.uid,\r\n Type: 'Zebra',\r\n Name: `Zebra - ${p.name}`,\r\n Device: p,\r\n };\r\n return r;\r\n });\r\n resolve(printers);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n },\r\n reason => {\r\n const res =\r\n reason.trim() !== ''\r\n ? reason\r\n : 'Zebra Label Framework Plugin is not installed';\r\n reject(res);\r\n },\r\n );\r\n });\r\n },\r\n print: (printer, labelType, data, options) => {\r\n // noEscape: true to prevent the escapeExpression function from being called in handlebars\\utils module,\r\n // which replaces some characters with HTML codes.\r\n const t = Handlebars.compile(labelType.Xml, { noEscape: true });\r\n const labels = data.map(item => t(item));\r\n const zebra = new globalThis.Zebra.Printer(printer.Device);\r\n globalThis.Zebra.stopWatching(printer.Device);\r\n return Promise.all(\r\n labels.map(\r\n item =>\r\n new Promise((resolve, reject) => {\r\n console.debug('Zebra Printer - printing', item, zebra);\r\n\r\n zebra.send(\r\n item,\r\n function (success) {\r\n resolve(success);\r\n },\r\n function (error) {\r\n console.error('Error:' + error);\r\n reject(error);\r\n },\r\n );\r\n }),\r\n ),\r\n );\r\n },\r\n preview: function (\r\n printer: LabelPrinter,\r\n labelType: ILabelTypeDto,\r\n data: any[],\r\n options: {\r\n AssetBarcodeUrlTemplate: string;\r\n RoomBarcodeUrlTemplate: string;\r\n LocationBarcodeUrlTemplate: string;\r\n SubLocationBarcodeUrlTemplate: string;\r\n ConsumableTypeBarcodeUrlTemplate: string;\r\n },\r\n ): Promise {\r\n throw new Error('Function not implemented.');\r\n },\r\n download: function (\r\n printer: LabelPrinter,\r\n labelType: ILabelTypeDto,\r\n data: any[],\r\n options: {\r\n RoomBarcodeUrlTemplate: string;\r\n AssetBarcodeUrlTemplate: string;\r\n LocationBarcodeUrlTemplate: string;\r\n SubLocationBarcodeUrlTemplate: string;\r\n ConsumableTypeBarcodeUrlTemplate: string;\r\n },\r\n ): Promise {\r\n throw new Error('Function not implemented.');\r\n },\r\n};\r\n","import { ILabelTypeDto } from 'api/odata/generated/entities/ILabelTypeDto';\r\nimport { LabelPrinter } from '../slice/types';\r\nimport { Dymo as DymoPrinter } from './Dymo';\r\nimport { zebra as ZebraPrinter } from './Zebra';\r\n\r\nexport type TGetPrinter = () => Promise>;\r\n\r\nexport type TPrint = (\r\n printer: LabelPrinter,\r\n labelType: ILabelTypeDto,\r\n data: Array,\r\n options: {\r\n AssetBarcodeUrlTemplate: string;\r\n RoomBarcodeUrlTemplate: string;\r\n LocationBarcodeUrlTemplate: string;\r\n SubLocationBarcodeUrlTemplate: string;\r\n SamplePlateBarcodeUrlTemplate: string;\r\n ConsumableTypeBarcodeUrlTemplate: string;\r\n },\r\n) => Promise;\r\nexport interface IFileResult {\r\n fileName: string;\r\n content: any;\r\n}\r\nexport type ILabelPrinter = {\r\n getPrinters: TGetPrinter;\r\n print: TPrint;\r\n preview: TPrint;\r\n download: TPrint;\r\n};\r\n\r\nexport const Dymo = DymoPrinter;\r\nexport const Zebra = ZebraPrinter;\r\nexport const getPrinterInterface = (printer: LabelPrinter) => {\r\n switch (printer.Type) {\r\n case 'Dymo':\r\n return Dymo;\r\n case 'Zebra':\r\n return Zebra;\r\n }\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, select, takeLeading, takeLatest } from 'redux-saga/effects';\r\nimport { labelPrintActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\n\r\nimport { selectLabelPrint } from './selectors';\r\nimport {\r\n IPrintAssetLabelArgs,\r\n LabelPrinter,\r\n LabelPrintState,\r\n OpenPrintDialogPayload,\r\n} from './types';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Dymo, getPrinterInterface, TPrint, Zebra } from '../Printers';\r\nimport { selectAppSettings, selectglobalSettings } from 'app/slice/selectors';\r\nimport { getQrUrl } from '../Printers/getQrUrl';\r\nimport fileDownload from 'js-file-download';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { ILabelTypeDto } from 'api/odata/generated/entities/ILabelTypeDto';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\n\r\nfunction* doGetPrinters(action: PayloadAction) {\r\n let printers: Array = [];\r\n const systemSettings = yield select(selectglobalSettings);\r\n if (systemSettings.GetBooleanByKey(AllowedSettings.DymoPrinterSupported)) {\r\n try {\r\n const dymo_printers = yield call(Dymo.getPrinters);\r\n printers = [...printers, ...dymo_printers];\r\n } catch (error: unknown) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: String(error),\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.getPrinters_Error(Error));\r\n }\r\n }\r\n if (systemSettings.GetBooleanByKey(AllowedSettings.ZebraPrinterSupported)) {\r\n try {\r\n const zebra_printers = yield call(Zebra.getPrinters);\r\n printers = [...printers, ...zebra_printers];\r\n } catch (error: unknown) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n message: String(error),\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.getPrinters_Error(Error));\r\n }\r\n }\r\n\r\n const serializablePayload = JSON.parse(JSON.stringify(printers));\r\n yield put(actions.getPrinters_Success(serializablePayload));\r\n}\r\nfunction* doGetLabelTypes(action: PayloadAction) {\r\n try {\r\n var filter = new Condition(\r\n 'Type',\r\n ODataOperators.Equals,\r\n action.payload.type,\r\n );\r\n\r\n const labelTypes = yield call(httpClient.get, '/api/odata/v4/labeltypes', {\r\n $filter: filter.toString(),\r\n });\r\n yield put(actions.getLabelTypes_Success(labelTypes.value));\r\n } catch (error) {\r\n yield put(actions.getLabelTypes_Error(error));\r\n }\r\n}\r\nasync function loadObjects(action: PayloadAction) {\r\n switch (action.payload.type) {\r\n case 'Asset':\r\n const assetResponse = await httpClient.get(`/api/odata/v4/AssetDetails`, {\r\n $filter: `Id in (${action.payload.ids.join(',')})`,\r\n });\r\n return assetResponse.value;\r\n /* const assets = await Promise.allSettled(\r\n action.payload.ids.map(assetId =>\r\n httpClient.get(\r\n `/api/odata/v4/AssetDetails(${assetId})?serviceId=0`,\r\n ),\r\n ),\r\n );\r\n return assets; */\r\n case 'Room':\r\n const roomResponse = await httpClient.get(\r\n `/api/odata/v4/LocationsBuilding`,\r\n {\r\n $filter: `Id in (${action.payload.ids.join(',')})`,\r\n },\r\n );\r\n return roomResponse.value;\r\n case 'LocationList':\r\n const locationlistsResponse = await httpClient.get(\r\n `/api/odata/v4/LocationList`,\r\n {\r\n $filter: `Id in (${action.payload.ids.join(',')})`,\r\n },\r\n );\r\n return locationlistsResponse.value;\r\n case 'SubLocationList':\r\n const sublocationlistsResponse = await httpClient.get(\r\n `/api/odata/v4/SubLocationList`,\r\n {\r\n $filter: `Id in (${action.payload.ids.join(',')})`,\r\n },\r\n );\r\n return sublocationlistsResponse.value;\r\n case 'SamplePlate':\r\n const Ids = action.payload.ids.map(id => \"'\" + id + \"'\");\r\n const samplePlatesResponse = await httpClient.get(\r\n `/api/odata/v4/SamplePlates`,\r\n {\r\n $filter: `Id in (${Ids.join(',')})`,\r\n },\r\n );\r\n return samplePlatesResponse.value;\r\n case 'Consumable':\r\n const consumableTypesResponse = await httpClient.get(\r\n `/api/odata/v4/AssetDetails`,\r\n {\r\n $filter: `Id in (${action.payload.ids.join(',')})`,\r\n },\r\n );\r\n return consumableTypesResponse.value;\r\n default:\r\n throw new Error('loadObjects NotImplemented');\r\n }\r\n}\r\nfunction* doGetObjects(action: PayloadAction) {\r\n try {\r\n const responses = yield call(loadObjects, action);\r\n const assetDetails = responses.map(response => response);\r\n yield put(actions.getAssetDetails_Success(assetDetails));\r\n } catch (error) {\r\n yield put(actions.getAssetDetails_Failure(error));\r\n }\r\n}\r\nfunction* doOpen(action: PayloadAction) {\r\n const state: LabelPrintState = yield select(selectLabelPrint);\r\n if (state.printers.value === undefined) {\r\n yield put(actions.getPrinters());\r\n }\r\n if (state.data.value === undefined) {\r\n yield put(actions.getAssetDetails(action.payload));\r\n }\r\n if (state.labelTypes.value === undefined) {\r\n yield put(actions.getLabelTypes(action.payload));\r\n }\r\n}\r\n\r\nfunction* doPrint(action: PayloadAction) {\r\n if (!action.payload.printer) {\r\n yield put(actions.getAssetDetails_Failure(`Printer not selected.`));\r\n return;\r\n }\r\n\r\n const systemSettings = yield select(selectglobalSettings);\r\n\r\n switch (action.payload.printer.Type) {\r\n case 'Dymo':\r\n if (\r\n !systemSettings.GetBooleanByKey(AllowedSettings.DymoPrinterSupported)\r\n ) {\r\n const msg = i18next.t(translations.DymoPrinterIsNotSupported);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: msg,\r\n }),\r\n );\r\n yield put(actions.print_Error(msg));\r\n return;\r\n }\r\n break;\r\n case 'Zebra':\r\n if (\r\n !systemSettings.GetBooleanByKey(AllowedSettings.ZebraPrinterSupported)\r\n ) {\r\n const msg = i18next.t(translations.ZebraPrinterIsNotSupported);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: msg,\r\n }),\r\n );\r\n yield put(actions.print_Error(msg));\r\n return;\r\n }\r\n break;\r\n }\r\n\r\n const printerInterface = getPrinterInterface(action.payload.printer);\r\n if (printerInterface === undefined) {\r\n yield put(\r\n actions.getAssetDetails_Failure(\r\n `Printer ${action.payload.printer.Type} not supported.`,\r\n ),\r\n );\r\n return;\r\n }\r\n const settings: AppSettings = yield select(selectAppSettings);\r\n const state: LabelPrintState = yield select(selectLabelPrint);\r\n const type = state.type;\r\n const AssetBarcodeUrlTemplate =\r\n type === 'Asset'\r\n ? settings.AssetBarcodeUrlTemplate\r\n : type === 'Room'\r\n ? settings.RoomBarcodeUrlTemplate\r\n : type === 'LocationList'\r\n ? settings.LocationBarcodeUrlTemplate\r\n : type === 'SubLocationList'\r\n ? settings.SubLocationBarcodeUrlTemplate\r\n : type === 'SamplePlate'\r\n ? settings.SamplePlateBarcodeUrlTemplate\r\n : type === 'Consumable'\r\n ? settings.ConsumableTypeBarcodeUrlTemplate\r\n : null;\r\n try {\r\n if (type === undefined) {\r\n throw new Error('Label type is undefined');\r\n }\r\n if (AssetBarcodeUrlTemplate === null) {\r\n throw new Error(`Unsupported label type \"${type}\"`);\r\n }\r\n const data = action.payload.assetDetails.map(assetDetails => ({\r\n ...assetDetails,\r\n ...{ QR: getQrUrl(assetDetails, type, AssetBarcodeUrlTemplate) },\r\n }));\r\n const printAction: TPrint = printerInterface[action.payload.action];\r\n const result = yield call(\r\n printAction,\r\n action.payload.printer,\r\n action.payload.template,\r\n data,\r\n {\r\n AssetBarcodeUrlTemplate: settings.AssetBarcodeUrlTemplate,\r\n RoomBarcodeUrlTemplate: settings.RoomBarcodeUrlTemplate,\r\n LocationBarcodeUrlTemplate: settings.LocationBarcodeUrlTemplate,\r\n SubLocationBarcodeUrlTemplate: settings.SubLocationBarcodeUrlTemplate,\r\n SamplePlateBarcodeUrlTemplate: settings.SamplePlateBarcodeUrlTemplate,\r\n ConsumableTypeBarcodeUrlTemplate:\r\n settings.ConsumableTypeBarcodeUrlTemplate,\r\n },\r\n );\r\n switch (action.payload.action) {\r\n case 'print':\r\n break;\r\n case 'download':\r\n case 'preview':\r\n for (const item of result) {\r\n yield call(fileDownload, item, 'import-result.xlsx');\r\n }\r\n }\r\n yield put(actions.print_Success(null));\r\n } catch (error) {\r\n yield put(actions.print_Error(error));\r\n }\r\n}\r\n\r\nexport function* labelPrintSaga() {\r\n yield takeLeading(actions.getPrinters.type, doGetPrinters);\r\n yield takeLeading(actions.getLabelTypes.type, doGetLabelTypes);\r\n yield takeLatest(actions.getAssetDetails.type, doGetObjects);\r\n yield takeLeading(actions.open.type, doOpen);\r\n yield takeLeading(actions.print.type, doPrint);\r\n //yield takeLeading(actions.preview.type, doPrint);\r\n //yield takeLeading(actions.download.type, doPrint);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IAssetDetailsDto } from 'api/odata/generated/entities/IAssetDetailsDto';\r\nimport { ILabelTypeDto } from 'api/odata/generated/entities/ILabelTypeDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { labelPrintSaga } from './saga';\r\nimport {\r\n LabelPrintState,\r\n LabelPrinter,\r\n IPrintAssetLabelArgs,\r\n AsyncState,\r\n OpenPrintDialogPayload,\r\n} from './types';\r\n\r\nexport const initialState: LabelPrintState = {\r\n ids: [],\r\n labelTypes: {},\r\n printers: {},\r\n printState: {},\r\n data: {},\r\n open: false,\r\n};\r\n\r\nfunction init(state: AsyncState) {\r\n state.status = 'pending';\r\n state.error = undefined;\r\n state.value = undefined;\r\n}\r\nfunction resolve(state: AsyncState, value: T) {\r\n state.status = 'resolved';\r\n state.error = undefined;\r\n state.value = value;\r\n}\r\nfunction reject(state: AsyncState, error: unknown) {\r\n state.status = 'rejected';\r\n state.value = undefined;\r\n state.error = String(error);\r\n}\r\n\r\nconst slice = createSlice({\r\n name: 'labelPrint',\r\n initialState,\r\n reducers: {\r\n getPrinters(state, action: PayloadAction) {\r\n init(state.printers);\r\n },\r\n getPrinters_Success(state, action: PayloadAction>) {\r\n resolve(state.printers, action.payload);\r\n },\r\n getPrinters_Error(state, action: PayloadAction) {\r\n reject(state.printers, action.payload);\r\n },\r\n\r\n getLabelTypes(state, action: PayloadAction) {\r\n init(state.labelTypes);\r\n },\r\n getLabelTypes_Success(state, action: PayloadAction>) {\r\n resolve(state.labelTypes, action.payload);\r\n },\r\n getLabelTypes_Error(state, action: PayloadAction) {\r\n reject(state.labelTypes, action.payload);\r\n },\r\n\r\n getAssetDetails(state, action: PayloadAction) {\r\n init(state.data);\r\n },\r\n getAssetDetails_Success(\r\n state,\r\n action: PayloadAction>,\r\n ) {\r\n resolve(state.data, action.payload);\r\n },\r\n getAssetDetails_Failure(state, action: PayloadAction) {\r\n reject(state.data, action.payload);\r\n },\r\n\r\n open(state, action: PayloadAction) {\r\n state.open = true;\r\n state.ids = action.payload.ids;\r\n state.type = action.payload.type;\r\n state.data = {};\r\n },\r\n closeAssetLabelPrintDialog(state, action: PayloadAction) {\r\n state.open = false;\r\n state.ids = [];\r\n state.data = {};\r\n state.printState = {};\r\n },\r\n\r\n print(state, action: PayloadAction) {\r\n init(state.printState);\r\n state.selectedPrinter = action.payload.printer ?? null;\r\n state.selectedTemplate = action.payload.template ?? null;\r\n },\r\n print_Success(state, action: PayloadAction) {\r\n state.data = {};\r\n state.open = false;\r\n resolve(state.printState, null);\r\n },\r\n print_Error(state, action: PayloadAction) {\r\n reject(state.printState, action.payload);\r\n },\r\n\r\n download(state, action: PayloadAction) {\r\n init(state.printState);\r\n state.selectedPrinter = action.payload.printer ?? null;\r\n state.selectedTemplate = action.payload.template ?? null;\r\n },\r\n download_Success(state, action: PayloadAction) {\r\n state.data = {};\r\n state.open = false;\r\n resolve(state.printState, null);\r\n },\r\n download_Error(state, action: PayloadAction) {\r\n reject(state.printState, action.payload);\r\n },\r\n\r\n preview(state, action: PayloadAction) {\r\n init(state.printState);\r\n state.selectedPrinter = action.payload.printer ?? null;\r\n state.selectedTemplate = action.payload.template ?? null;\r\n },\r\n preview_Success(state, action: PayloadAction) {\r\n state.data = {};\r\n state.open = false;\r\n resolve(state.printState, null);\r\n },\r\n preview_Error(state, action: PayloadAction) {\r\n reject(state.printState, action.payload);\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: labelPrintActions } = slice;\r\n\r\nexport const useLabelPrintSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: labelPrintSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useLabelPrintSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { ITrainingLevelFilterDto } from 'api/odata/generated/entities/ITrainingLevelFilterDto';\r\nimport {\r\n Condition,\r\n ODataOperators,\r\n quoteODataValue,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface TrainingLevelPickerProps\r\n extends Omit, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/TrainingLevelFilter';\r\nexport const initTrainingLevelData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url: url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'ServiceGroupId',\r\n 'ExpiredDays',\r\n 'MustOrderEveryDays',\r\n 'MustUseEveryDays',\r\n 'LevelEquipments',\r\n 'UPGroups',\r\n 'UPEquipments',\r\n ],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n isOptionalServiceGroup: true,\r\n });\r\nexport const loadTrainingLevels = loadData;\r\nexport function TrainingLevelPicker(props: TrainingLevelPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n globalServiceGroupFilter || [],\r\n );\r\n return (\r\n \r\n );\r\n}\r\nexport function TrainingLevelFilter(\r\n equipments: IServiceFilterDto[],\r\n trainingLevelPermissionsEnabled,\r\n userPermissionsEnabled,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (!!equipments && equipments.length > 0) {\r\n if (trainingLevelPermissionsEnabled) {\r\n predicates.push(\r\n equipments\r\n .map(eq => {\r\n if (eq.UseServiceGroupTrainingLevels) {\r\n return `(ServiceGroupId eq null or ServiceGroupId eq ${quoteODataValue(\r\n eq.ServiceGroupId,\r\n )})`;\r\n } else {\r\n return `LevelEquipments/any(g: g eq ${quoteODataValue(eq.Id)})`;\r\n }\r\n })\r\n .join(' or '),\r\n );\r\n } else if (userPermissionsEnabled) {\r\n // noop - clients could not select training level that was not part of user or group permissions on selected equipment they needed on uchicago\r\n // should be properly resolved in https://prog4biz.atlassian.net/browse/BKT-8190\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n } else {\r\n return [];\r\n }\r\n}\r\n","/**\r\n *\r\n * FilterContainer\r\n *\r\n */\r\nimport * as React from 'react';\r\n\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { Popper } from 'app/components/Popper';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IFilterSettings } from '../IFilterSettings';\r\nimport { translations } from 'locales/translations';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport useGlobalDOMEvents from 'app/hooks/useGlobalDomEvents';\r\nimport { IsEmptyArray } from '../AppliedFilterComponent';\r\nimport {\r\n FilterRoot,\r\n StyledDialogContent,\r\n StyledDialog,\r\n StyledDialogTitle,\r\n StyledIconButton,\r\n StyledContentWrapper,\r\n StyledPaper,\r\n} from '../styled';\r\n\r\ninterface FilterContainerProps {\r\n open: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n anchorEl: any;\r\n appliedFilters: IFilterSettings[];\r\n onChange: (items: IFilterSettings[]) => void;\r\n compact?: boolean;\r\n ns?: string;\r\n}\r\n\r\n// const StyledDialogActions = styled(DialogActions)`\r\n// justify-content: space-between;\r\n// `;\r\n\r\nexport function FilterContainer({\r\n anchorEl,\r\n onClose,\r\n onChange,\r\n open,\r\n children,\r\n compact,\r\n ns,\r\n ...props\r\n}: FilterContainerProps) {\r\n const { t } = useTranslation(ns);\r\n const isMobile = DetectIsMobile();\r\n const handleClose = () => {\r\n onClose();\r\n };\r\n // save provided applied filters to be used in change callbacks\r\n const [, setVisibleFilters] = React.useState[]>(\r\n props.appliedFilters,\r\n );\r\n\r\n // refresh applied filters if they were changed from outside\r\n React.useEffect(() => {\r\n setVisibleFilters(props.appliedFilters);\r\n }, [props.appliedFilters]);\r\n\r\n // const handleClearClick = () => {\r\n // setVisibleFilters(currentState => {\r\n // const newState = currentState.map(f => ({ ...f, ...{ value: null } }));\r\n // onChange(newState);\r\n // return newState;\r\n // });\r\n // if (isMobile || compact) {\r\n // onClose();\r\n // }\r\n // };\r\n const elementRef = React.useRef(null);\r\n // manually trigger rerender using a useless usState hook\r\n // this ensures that the popper is rendered only after the div is rendered and have provided the elementRef value to ancor the popper\r\n const countState = React.useState(0);\r\n React.useEffect(() => {\r\n countState[1](c => c + 1);\r\n // setCount (rerender) needs to occur after element elementRef.current value is bound\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [elementRef.current]);\r\n\r\n const appliedFitltersCount = props.appliedFilters.filter(\r\n f =>\r\n f.value !== null &&\r\n f.value !== undefined &&\r\n f.value !== '' &&\r\n !IsEmptyArray(f.value),\r\n ).length;\r\n\r\n useGlobalDOMEvents({\r\n keyup(ev) {\r\n if ((ev as KeyboardEvent).key === 'Escape') {\r\n onClose();\r\n }\r\n },\r\n });\r\n\r\n const title = `${t(translations.Filters)} (${appliedFitltersCount})`;\r\n if (isMobile || compact) {\r\n return (\r\n \r\n \r\n {title}\r\n {\r\n onClose();\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n {/* \r\n \r\n onClose()}\r\n aria-label={t(translations.apply)}\r\n >\r\n {t(translations.apply)}\r\n \r\n \r\n \r\n {t(translations.ClearAll)}\r\n \r\n \r\n */}\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n onClose()}\r\n clickAway={true}\r\n clickAwayFunc={e => {\r\n onClose();\r\n }}\r\n maxWidth={'fit-content'}\r\n >\r\n \r\n <>{children}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { FilterValueType } from './BasicFilter/FilterValueType';\r\n\r\n/**\r\n * Returns current value of the filter based on filter's id\r\n * @param allFilters all filters\r\n * @param id filter id\r\n * @returns filter value\r\n */\r\nexport const getFilterValue = function (\r\n allFilters: Array> | undefined,\r\n id: string,\r\n): FilterValueType | undefined {\r\n if (allFilters === undefined) {\r\n return undefined;\r\n }\r\n var filter = allFilters.find(f => f.id === id);\r\n if (filter === undefined) {\r\n return undefined;\r\n }\r\n const value = filter.value;\r\n return value ?? undefined;\r\n};\r\n","/**\r\n *\r\n * RoomPickerFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { LocationPicker } from 'app/components/pickers/AutocompletePickers/LocationPicker';\r\n\r\nexport const LocationPickerFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default LocationPickerFilter;\r\n","export enum ReservationOrDowntimeEnum {\r\n All = 0,\r\n ReservationsOnly = 1,\r\n DownTimeOnly = 2,\r\n}\r\n","/**\r\n *\r\n * auto generated interface for Default.EmailType\r\n *\r\n */\r\n\r\nexport enum EmailType {\r\n Invoice = 0,\r\n Request = 1,\r\n Reservation = 2,\r\n User = 3,\r\n PaymentLetter = 4,\r\n Budget = 5,\r\n BudgetComment = 6,\r\n OfflineService = 7,\r\n Eln = 8,\r\n Alert = 9,\r\n DataStore = 10,\r\n SAP = 11,\r\n Equipment = 12,\r\n Asset = 13,\r\n TrainingSession = 14,\r\n ServiceGroup = 15,\r\n BudgetExpirement = 16,\r\n InstrumentNotifications = 17,\r\n WorkFlowBooking = 18,\r\n Cage = 19,\r\n InquiryAlert = 20,\r\n UserGroup = 21,\r\n LoanDesk = 22,\r\n Training = 23,\r\n RequestComment = 24,\r\n DownTime = 25,\r\n ExternalBillingError = 26,\r\n GenerateInvoice = 27,\r\n InstituteQuarter = 28,\r\n RequestMilestones = 29,\r\n Custom = 30,\r\n Subscription = 31,\r\n Article = 31,\r\n}\r\nexport type EmailTypeUnion = keyof typeof EmailType;\r\nexport const EmailTypeUnionArray: Array = [\r\n 'Invoice',\r\n 'Request',\r\n 'Reservation',\r\n 'User',\r\n 'PaymentLetter',\r\n 'Budget',\r\n 'BudgetComment',\r\n 'OfflineService',\r\n 'Eln',\r\n 'Alert',\r\n 'DataStore',\r\n 'SAP',\r\n 'Equipment',\r\n 'Asset',\r\n 'TrainingSession',\r\n 'ServiceGroup',\r\n 'BudgetExpirement',\r\n 'InstrumentNotifications',\r\n 'WorkFlowBooking',\r\n 'Cage',\r\n 'InquiryAlert',\r\n 'UserGroup',\r\n 'LoanDesk',\r\n 'Training',\r\n 'RequestComment',\r\n 'DownTime',\r\n 'ExternalBillingError',\r\n 'GenerateInvoice',\r\n 'InstituteQuarter',\r\n 'RequestMilestones',\r\n 'Custom',\r\n 'Subscription',\r\n 'Article',\r\n];\r\n","/**\r\n *\r\n * BasicDialogTitle\r\n *\r\n */\r\nimport { DialogTitle as MuiDialogTitle } from '@material-ui/core';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\nexport interface BasicDialogTitleProps {\r\n id?: string;\r\n children: React.ReactNode;\r\n subtitle?: React.ReactNode;\r\n onClose?: () => void;\r\n}\r\nexport function BasicDialogTitle(props: BasicDialogTitleProps) {\r\n const { id, children, subtitle, onClose, ...other } = props;\r\n return (\r\n \r\n

    \r\n
    \r\n \r\n {children}\r\n \r\n
    \r\n {subtitle && (\r\n
    \r\n {subtitle}\r\n
    \r\n )}\r\n\r\n {onClose ? (\r\n \r\n \r\n \r\n ) : null}\r\n
    \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ServiceTypePicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { selectGlobalServiceGroupFilter } from 'app/slice/selectors';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity } from 'types/common';\r\nimport { IApplyGlobalServiceGroupFilter } from 'types/IApplyGlobalServiceGroupFilter';\r\nimport { IServiceGroupRelated } from 'types/IServiceGroupRelated';\r\n\r\ninterface IServiceDto extends Entity, IServiceGroupRelated {}\r\n\r\nexport interface ServiceTypePickerProps\r\n extends Omit>, 'loadData'>,\r\n IApplyGlobalServiceGroupFilter {}\r\n\r\nconst url = '/api/odata/v4/ServiceTypeFilter';\r\n\r\nexport function withServiceGroupFilter(\r\n globalServiceGroupFilter: Entity[],\r\n) {\r\n return (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n\r\n params.$filter = new ODataFilterBuilder({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm === null ? undefined : searchTerm,\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n }).toString();\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n };\r\n}\r\nexport const initServiceTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,ServiceGroupId',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nexport function ServiceTypePicker(props: ServiceTypePickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const loadData = withServiceGroupFilter(globalServiceGroupFilter || []);\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import { Avatar } from '@material-ui/core';\r\nimport { Link } from 'app/components/ExternalLink';\r\nimport { selectAppSettings, selectLoading } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport clsx from 'clsx';\r\nimport { publicNS } from 'locales/i18n';\r\n\r\nexport interface CustomerLogoProps {\r\n size?: 'defaultLogoSize' | 'emptyPageLogoSize' | 'sidebarLogoSize';\r\n}\r\nexport const CustomerLogo = React.memo(function CustomerLogo(\r\n props: CustomerLogoProps,\r\n) {\r\n const { t } = useTranslation(publicNS);\r\n const appSettings: AppSettings | null = useSelector(selectAppSettings);\r\n const isLoading = useSelector(selectLoading);\r\n const [customerLink, setCustomerLink] = React.useState(\r\n undefined,\r\n );\r\n const [customerImg, setCustomerImg] = React.useState(\r\n undefined,\r\n );\r\n React.useEffect(() => {\r\n let active = !isLoading;\r\n if (active) {\r\n let link = appSettings?.TopCustomerLogoLink;\r\n let img = appSettings?.TopCustomerLogo;\r\n if (link !== undefined && link !== '') {\r\n setCustomerLink(link);\r\n }\r\n if (img !== undefined && img !== '') {\r\n setCustomerImg(img);\r\n console.log(toRootedURL(img));\r\n }\r\n } else {\r\n setCustomerLink(undefined);\r\n setCustomerImg(undefined);\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [appSettings, isLoading]);\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n","import { ViewTypes } from '../slice/types';\r\n\r\nexport const parseType = (s?: ViewTypes) => {\r\n if (s === undefined) {\r\n return undefined;\r\n }\r\n switch (s) {\r\n case 'calendar':\r\n case 'timeline':\r\n return s;\r\n default:\r\n return undefined;\r\n }\r\n};\r\n","/**\r\n *\r\n * auto generated interface for Default.TimelineGroupBy\r\n *\r\n */\r\n\r\nexport enum TimelineGroupBy {\r\n NoTimelineGrouped = 0,\r\n GroupByAssemblyPart = 1,\r\n GroupByAssetCat = 2,\r\n}\r\nexport type TimelineGroupByUnion = keyof typeof TimelineGroupBy;\r\nexport const TimelineGroupByUnionArray: Array = [\r\n 'NoTimelineGrouped',\r\n 'GroupByAssemblyPart',\r\n 'GroupByAssetCat',\r\n];\r\n","import { IViewState } from './Scheduler/slice/types';\r\nimport { match } from 'react-router';\r\nimport { parseType } from './Scheduler/utils/parseType';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { CalendarPageParams } from './index';\r\nimport { presetPeriodToViewLength } from './Scheduler/utils/parseLength';\r\nimport {\r\n getPeriodTypeNameOrUndefined,\r\n GetRawValue,\r\n URLSearchParamsCI,\r\n} from 'app/components/BasicTable/types/FilterParam';\r\nimport { TimelineGroupByUnionArray } from 'api/odata/generated/enums/TimelineGroupBy';\r\n\r\n/** the name of the filter/search/querystring field storing the selected period value */\r\nexport const periodFilterFieldName = 'period';\r\n/**\r\n * the name of the filter/search/querystring field storing the selected period value\r\n */\r\nexport const groupByFilterFieldName = 'groupBy';\r\n/**\r\n * Parse and sanitize scheduler viewstate provided in the URL\r\n * @param match current route match\r\n * @param search route search\r\n * @returns scheduler view state\r\n */\r\nexport const parseCalendarPageParams = (\r\n match: match,\r\n search: string,\r\n isMobile: boolean,\r\n date: Date,\r\n dashView?: boolean,\r\n): IViewState => {\r\n const params = new URLSearchParamsCI(search);\r\n let periodType =\r\n getPeriodTypeNameOrUndefined(GetRawValue(params, periodFilterFieldName)) ??\r\n match.params.period;\r\n const defaultviewType =\r\n isMobile && !dashView\r\n ? 'calendar'\r\n : parseType(match.params.type) ?? 'timeline';\r\n const defaultviewLength = isMobile\r\n ? 'day'\r\n : periodType === undefined\r\n ? 'week'\r\n : presetPeriodToViewLength(periodType, defaultviewType);\r\n const result: IViewState = {\r\n viewType: defaultviewType,\r\n search: search,\r\n preset: null,\r\n viewLength: defaultviewLength,\r\n date: dateUtils.formatISO(date),\r\n groupBy: getTimelineGroupBy(params),\r\n //...parsePosition(match.params.length, match.params.date),\r\n };\r\n return result;\r\n};\r\n\r\nconst getTimelineGroupBy = function (params: URLSearchParamsCI) {\r\n const rawValue = GetRawValue(params, groupByFilterFieldName);\r\n if (rawValue === null || rawValue === undefined) {\r\n return undefined;\r\n }\r\n var result = TimelineGroupByUnionArray.find(\r\n item => item.toLowerCase() === rawValue.toLowerCase(),\r\n );\r\n return result;\r\n};\r\n","import * as React from 'react';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { FilterIconButton } from 'app/components/BasicButtons/FilterIconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport styled from 'styled-components';\r\n\r\nexport interface FiltersButtonProps {\r\n onClick: React.MouseEventHandler;\r\n appliedFiltersLength?: number;\r\n allFiltersLength?: number;\r\n innerRef?: React.RefObject;\r\n ns?: string;\r\n id?: string;\r\n}\r\nconst CounterIcon = styled.span`\r\n &.layers-root {\r\n & .icon-layers-text {\r\n font-size: 9px;\r\n color: ${bookitColors.primary.bgLight};\r\n }\r\n }\r\n`;\r\nexport function FiltersButton({\r\n onClick,\r\n appliedFiltersLength,\r\n allFiltersLength,\r\n ns,\r\n id,\r\n ...props\r\n}: FiltersButtonProps) {\r\n const { t } = useTranslation(ns);\r\n const isMobile = DetectIsMobile();\r\n if (isMobile) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n }\r\n endIcon={\r\n !!appliedFiltersLength && (\r\n \r\n \r\n \r\n {appliedFiltersLength}\r\n \r\n \r\n )\r\n }\r\n >\r\n {t(translations.Filters)}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * CampusPickerFilter\r\n *\r\n */\r\nimport { CampusPicker } from 'app/components/pickers/AutocompletePickers/CampusPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const CampusPickerFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default CampusPickerFilter;\r\n","import { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { downloadFile } from 'utils/url-utils';\r\nimport { SelectedRowsActionIconButton } from '../BasicTable/SelectedRowsActionButton/SelectedRowsActionIconButton';\r\nimport { Identifiable } from 'types/common';\r\n\r\nexport interface ExportQRCodesButtonProps {\r\n url: string;\r\n rows: Array>;\r\n toggleAllRowsSelected?: (value?: boolean) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function ExportQRCodesButton({\r\n url,\r\n rows,\r\n toggleAllRowsSelected,\r\n disabled,\r\n}: ExportQRCodesButtonProps) {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n new Promise(async resolve => {\r\n let ids = rows.map(row => row.Id).join(',');\r\n let path = url + `?id=${ids}`;\r\n try {\r\n await downloadFile({ path: path });\r\n resolve({\r\n ErrorMessages: [],\r\n SuccessMessages: [],\r\n WarningMessages: [],\r\n });\r\n } catch (err) {\r\n console.debug(err);\r\n resolve({\r\n ErrorMessages: [\r\n 'Some thing went wrong, please check the Name or Qr Code of the Asset!',\r\n ],\r\n SuccessMessages: [],\r\n WarningMessages: [],\r\n });\r\n }\r\n })\r\n }\r\n />\r\n );\r\n}\r\n","/**\r\n *\r\n * SymptomCodesPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\n\r\nimport * as React from 'react';\r\n\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface ReasonTypePickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/ReasonType';\r\nexport const initReasonTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: `Id,Name`,\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function ReasonTypePicker(props: ReasonTypePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n RoomPicker,\r\n RoomPickerProps,\r\n RoomsUrl,\r\n} from '../pickers/AutocompletePickers/RoomPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { IRoomDto } from 'api/odata/generated/entities/IRoomDto';\r\n\r\nexport const FormRoomPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n IFieldProps & { variant?: 'standard' | 'filled' | 'outlined' } & {\r\n urlType?: RoomsUrl;\r\n withoutServiceGroups?: boolean;\r\n error?: string;\r\n getOptionSelected?: RoomPickerProps['getOptionSelected'];\r\n getValue?: (val) => Entity | null;\r\n setValue?: (val: Entity | null) => any;\r\n }) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n const handleChange = val => {\r\n const value = !!props.setValue ? props.setValue(val) : val;\r\n helpers.setValue(value, true);\r\n props.onChange?.(value);\r\n };\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * TagsPicker\r\n *\r\n */\r\nimport { InputBaseComponentProps } from '@material-ui/core';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ITagsFilterDto } from 'api/odata/generated/entities/ITagsFilterDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompleteMultiPickerEx,\r\n AutocompleteMultiPickerExProps,\r\n} from 'app/components/BasicPickers/AutocompleteMultiPickerEx';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport {\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { isNumericPositive } from 'utils/string-utils';\r\n\r\nexport type TagsUrl = 'base' | 'assetBase' | 'public';\r\nexport interface TagsPickerProps\r\n extends Omit, 'loadData'> {\r\n inputProps?: InputBaseComponentProps;\r\n urlType?: TagsUrl;\r\n separator?: string;\r\n noServiceGroups?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/TagsFilter';\r\nconst assetTagsUrl = '/api/odata/v4/TagsFilter/AssetTagsFilter';\r\nconst publicAssetTagsUrl = '/api/odata/v4/TagsFilter/PublicAssetTagsFilter';\r\nexport const initTagsData = (\r\n initval: string | undefined,\r\n sourceUrl?: TagsUrl,\r\n separator?: string,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n let ids =\r\n initval.indexOf(separator || '|') !== -1\r\n ? initval.split(separator || '|')\r\n : [initval];\r\n let intIds: Identifiable[] = [];\r\n\r\n if (\r\n ids.filter(f => {\r\n let test = isNumericPositive(f);\r\n return test === true;\r\n }).length === ids.length\r\n ) {\r\n intIds = ids.map(item => {\r\n return { Id: parseInt(item) };\r\n }) as Identifiable[];\r\n }\r\n let strIds =\r\n intIds.length > 0\r\n ? []\r\n : (ids.map(item => {\r\n return { Id: item };\r\n }) as Identifiable[]);\r\n let filters: string | undefined = undefined;\r\n if (intIds.length > 0) {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(new Condition('Id', ODataOperators.Includes, intIds));\r\n filters = predicates.map(f => f.toString()).join(' and ');\r\n } else if (strIds.length > 0) {\r\n const predicates: (string | Condition)[] = [];\r\n predicates.push(new Condition('Name', ODataOperators.ContainsM, strIds));\r\n filters = predicates.map(f => f.toString()).join(' and ');\r\n }\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: filters,\r\n $select: 'Id,Name,ServiceGroups',\r\n };\r\n\r\n let initUrl =\r\n sourceUrl === 'public'\r\n ? publicAssetTagsUrl\r\n : sourceUrl === 'assetBase'\r\n ? assetTagsUrl\r\n : url;\r\n\r\n return httpClient\r\n .get(initUrl, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n globalServiceGroupFilter: Entity[],\r\n isAuthenticated?: boolean,\r\n urlType?: TagsUrl,\r\n) => {\r\n const sourceUrl =\r\n urlType === 'public' || !isAuthenticated\r\n ? publicAssetTagsUrl\r\n : urlType === 'assetBase'\r\n ? assetTagsUrl\r\n : url;\r\n\r\n return getAutoCompleteLoadDataFn({\r\n url: sourceUrl,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: ['Id', 'Name', 'ServiceGroups'],\r\n globalServiceGroupFilter:\r\n !!globalServiceGroupFilter && globalServiceGroupFilter.length > 0\r\n ? [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n globalServiceGroupFilter.map(f => f.Id),\r\n ),\r\n ]\r\n : [],\r\n });\r\n};\r\n\r\nexport function TagsPicker({ noServiceGroups, ...props }: TagsPickerProps) {\r\n const globalServiceGroupFilter = useSelector(selectGlobalServiceGroupFilter);\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n isAuth && !noServiceGroups ? globalServiceGroupFilter || [] : [],\r\n isAuth,\r\n props.urlType,\r\n );\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AreasPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Condition, ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface AreasPickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/AreasFilter';\r\nexport const initAreasData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n searchTerm: string | null,\r\n predicates?: (string | Condition)[],\r\n) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null || predicates !== undefined) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: predicates !== undefined ? predicates : [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm !== null ? searchTerm : undefined,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\n\r\nexport function AreasPicker(props: AreasPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import { Tab, TabProps } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport clsx from 'clsx';\r\nimport { capitalize } from 'lodash';\r\n\r\nexport interface BasicTabProps extends TabProps {\r\n mainIcon?: React.ReactElement;\r\n startIcon?: React.ReactElement;\r\n endIcon?: React.ReactElement;\r\n processing?: boolean;\r\n size?: 'small' | 'medium';\r\n}\r\n\r\nexport const BasicTab = React.forwardRef(function TabButton(\r\n {\r\n disabled,\r\n processing,\r\n size = 'medium',\r\n mainIcon,\r\n startIcon,\r\n endIcon,\r\n label,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n) {\r\n const startIconComponent = startIcon && (\r\n \r\n {startIcon}\r\n \r\n );\r\n const endIconComponent = endIcon && (\r\n \r\n {endIcon}\r\n \r\n );\r\n return (\r\n \r\n {mainIcon}\r\n \r\n ) : undefined\r\n }\r\n disableRipple\r\n label={\r\n \r\n {!!startIcon || !!endIcon ? (\r\n \r\n {!!startIconComponent && startIconComponent}\r\n {label}\r\n {!!endIconComponent && endIconComponent}\r\n \r\n ) : (\r\n {label}\r\n )}\r\n \r\n }\r\n {...props}\r\n />\r\n );\r\n});\r\n","import {\r\n GroupedTab,\r\n GroupedTabContent,\r\n TabContent,\r\n TabType,\r\n isGroupedTab,\r\n} from './TabContent';\r\nimport * as React from 'react';\r\nimport { Collapse, Tabs, useTheme } from '@material-ui/core';\r\nimport { TabPanel, TabPanelProps } from './TabPanel';\r\nimport { BasicTab } from './BasicTab';\r\nimport clsx from 'clsx';\r\nimport { capitalize } from 'lodash';\r\nimport { Divider, SubTabsWrapper, TabsWrapper } from './TabsWrapper';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { FlexRow } from '../StyledComponents';\r\nimport styled from 'styled-components';\r\n\r\nexport interface BasicTabsProps {\r\n tabs: Array;\r\n selectedTabIndex?: number;\r\n tabsId: string;\r\n tabsPanelId: string;\r\n textColor?: 'secondary' | 'primary' | 'inherit';\r\n scrollButtons?: 'auto' | 'desktop' | 'on' | 'off';\r\n indicatorColor?: 'secondary' | 'primary';\r\n variant?: 'standard' | 'scrollable' | 'fullWidth';\r\n selectionFollowsFocus?: boolean;\r\n centered?: boolean;\r\n orientation?: 'horizontal' | 'vertical';\r\n ariaLabel?: string;\r\n size?: 'small' | 'medium';\r\n scrollableContent?: boolean;\r\n className?: string;\r\n handleTabChange?: (tab: TabContent) => void;\r\n tabPanels?: Array>;\r\n selectedTabId?: TabType | null;\r\n withGroups?: boolean;\r\n}\r\n\r\nexport function BasicTabs(props: BasicTabsProps) {\r\n const {\r\n selectedTabIndex,\r\n tabs,\r\n tabsId,\r\n tabsPanelId,\r\n textColor,\r\n scrollButtons,\r\n indicatorColor,\r\n variant,\r\n selectionFollowsFocus,\r\n centered,\r\n orientation,\r\n ariaLabel,\r\n size = 'medium',\r\n className,\r\n scrollableContent,\r\n handleTabChange,\r\n tabPanels,\r\n selectedTabId,\r\n withGroups,\r\n } = props;\r\n const theme = useTheme();\r\n const [tabIndex, setTabIndex] = React.useState(selectedTabIndex ?? 0);\r\n // used for case when state is managed otside this component\r\n React.useEffect(() => {\r\n if (!!handleTabChange && selectedTabIndex !== undefined) {\r\n setTabIndex(selectedTabIndex ?? 0);\r\n }\r\n }, [handleTabChange, selectedTabIndex]);\r\n\r\n const realTabs = React.useMemo(() => {\r\n return tabs.flatMap(t => (isGroupedTab(t) ? t.tabs : [t]));\r\n }, [tabs]);\r\n React.useEffect(() => {\r\n if (isNullOrUndefined(selectedTabId)) return;\r\n setTabIndex(realTabs.findIndex(t => t.Id === selectedTabId));\r\n }, [realTabs, selectedTabId]);\r\n\r\n const handleChange = React.useCallback(\r\n (newValue: number) => {\r\n if (!!handleTabChange) {\r\n handleTabChange(realTabs[newValue]);\r\n } else {\r\n setTabIndex(newValue);\r\n }\r\n },\r\n [handleTabChange, realTabs],\r\n );\r\n const handleSelectedTabIndexChange = (\r\n event: React.ChangeEvent<{}>,\r\n newValue: number,\r\n ) => {\r\n //when state is managed outside the index is come from the parrent component\r\n handleChange(newValue);\r\n };\r\n\r\n const getTabValue = React.useCallback(\r\n (tab: TabContent) => realTabs.findIndex(t => t.Id === tab.Id),\r\n [realTabs],\r\n );\r\n const getTabProps = React.useCallback(\r\n (item: TabContent) => {\r\n return {\r\n id: `${tabsId}-${item.Id}`,\r\n 'aria-controls': `${tabsPanelId}-${item.Id}`,\r\n label: item.Name,\r\n };\r\n },\r\n [tabsId, tabsPanelId],\r\n );\r\n return (\r\n \r\n \r\n {tabs.map(item =>\r\n isGroupedTab(item) ? (\r\n getTabValue(t) === tabIndex)}\r\n />\r\n ) : (\r\n \r\n ),\r\n )}\r\n \r\n {!!tabPanels && tabPanels.length > 0 ? (\r\n {tabPanels}\r\n ) : (\r\n \r\n {realTabs.map((item, index) => (\r\n \r\n {item.Content}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst GroupedTabComponent = ({\r\n setValue,\r\n getTabValue,\r\n ...props\r\n}: GroupedTab & {\r\n size: 'small' | 'medium';\r\n tabsPanelId: string;\r\n tabsId: string;\r\n open?: boolean;\r\n getTabValue: (tab: TabContent) => number;\r\n setValue: (value: number) => void;\r\n selectedValue: number;\r\n}) => {\r\n const [open, setOpen] = React.useState(!!props.open);\r\n const getTabProps = React.useCallback(\r\n (item: TabContent) => {\r\n return {\r\n id: `${props.tabsId}-${item.Id}`,\r\n 'aria-controls': `${props.tabsPanelId}-${item.Id}`,\r\n label: item.Name,\r\n };\r\n },\r\n [props.tabsId, props.tabsPanelId],\r\n );\r\n const selected = props.tabs.some(i => getTabValue(i) === props.selectedValue);\r\n const onClick = React.useCallback(() => {\r\n setOpen(prev => {\r\n if (!prev && !selected && !!props.tabs[0]) {\r\n setValue(getTabValue(props.tabs[0]));\r\n }\r\n return !prev;\r\n });\r\n }, [getTabValue, props.tabs, selected, setValue]);\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {props.tabs.map(item => (\r\n setValue(getTabValue(item))}\r\n />\r\n ))}\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst GroupTabHeader = styled(FlexRow)(() => ({\r\n width: '100%',\r\n justifyContent: 'space-between',\r\n}));\r\n","/**\r\n *\r\n * BooleanPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { AutocompletePickerProps } from '../BasicPickers/AutocompletePicker';\r\nimport { Entity } from 'types/common';\r\nimport { TFunction } from 'i18next';\r\nimport { BaseOptionsPicker } from '../BasicPickers/BaseOptionsPicker';\r\n\r\nexport interface BooleanPickerProps\r\n extends Omit>, 'loadData'> {\r\n trueName?: string;\r\n falseName?: string;\r\n}\r\nexport const GetBooleanFilterOptions = (\r\n t: TFunction,\r\n trueName?: string,\r\n falseName?: string,\r\n) => {\r\n return [\r\n {\r\n Id: true,\r\n Name: !!trueName ? trueName : t(translations.Yes),\r\n },\r\n { Id: false, Name: !!falseName ? falseName : t(translations.No) },\r\n ];\r\n};\r\nexport function BooleanPicker(props: BooleanPickerProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const getOptions = () =>\r\n GetBooleanFilterOptions(t, props.trueName, props.falseName);\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n","import { Skeleton } from '@material-ui/lab';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst SceletonBox = styled('div')`\r\n display: flex;\r\n padding-inline: 16px;\r\n`;\r\nexport const SkeletonIfLoading = ({\r\n loading,\r\n children,\r\n}: React.PropsWithChildren<{ loading: boolean }>) => {\r\n if (loading) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n return <>{children};\r\n};\r\n","import { Check, CheckProps } from '../BasicInputs/Check';\r\nimport * as React from 'react';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport FormControl from '../Forms/FormControls/FormControl';\r\nimport FormControlLabel from '../Forms/FormControls/FormControlLabel';\r\nimport FormHelperText from '../Forms/FormControls/FormHelperText';\r\nimport clsx from 'clsx';\r\nimport FormGroup from '../Forms/FormControls/FormGroup';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { FormLabel } from '@material-ui/core';\r\n\r\nexport interface BasicCheckBoxProps\r\n extends Omit {\r\n label?: string;\r\n error?: string;\r\n helperText?: string;\r\n info?: React.ReactNode;\r\n fullWidth?: boolean;\r\n name?: string;\r\n boxed?: boolean;\r\n maxLabelWidth?: string | number;\r\n onChange?: (\r\n value: boolean,\r\n event: React.ChangeEvent,\r\n ) => void;\r\n}\r\n\r\nexport function BasicCheckBox(props: BasicCheckBoxProps) {\r\n // const StyledInfo = styled(InfoIcon)(({ theme }) => ({\r\n // marginLeft: theme.spacing(1),\r\n // }));\r\n const {\r\n label,\r\n error,\r\n helperText,\r\n info,\r\n name,\r\n onChange,\r\n boxed,\r\n fullWidth,\r\n maxLabelWidth, // = 36,\r\n required,\r\n ...other\r\n } = props;\r\n // const LabelWithInfo = () => {\r\n // return (\r\n // \r\n // {label}\r\n // {info && }\r\n // \r\n // );\r\n // };\r\n const [isChecked, setIsChecked] = React.useState(\r\n props.checked ?? false,\r\n );\r\n const handleChange = (event: React.ChangeEvent) => {\r\n const value = event.target.checked as boolean;\r\n if (onChange !== undefined) {\r\n onChange(value, event);\r\n }\r\n setIsChecked(value);\r\n };\r\n const withInfoLabel = React.useMemo(() => {\r\n return !!label && !!maxLabelWidth && label.length > Number(maxLabelWidth);\r\n }, [label, maxLabelWidth]);\r\n const Label = withInfoLabel ? (\r\n {label}}>\r\n \r\n {label}\r\n \r\n \r\n ) : (\r\n {label}\r\n );\r\n // const baseLabelStyle: React.CSSProperties = React.useMemo(() => {\r\n // return withInfoLabel\r\n // ? { maxWidth: `${maxLabelWidth}ch`, gap: 12 }\r\n // : { gap: 12 };\r\n // }, [maxLabelWidth, withInfoLabel]);\r\n return (\r\n \r\n \r\n \r\n }\r\n />\r\n {info && }\r\n \r\n {((!!error && error !== '') || (!!helperText && helperText !== '')) && (\r\n \r\n {error || helperText}\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { RootState } from 'types';\r\nimport { createSelector } from '@reduxjs/toolkit';\r\n\r\nconst selectRouterSlice = (state: RootState) => {\r\n return state.router;\r\n};\r\nexport const selectRouterLocation = createSelector(\r\n [selectRouterSlice],\r\n state => state?.location,\r\n);\r\nexport const selectRouterAction = createSelector(\r\n [selectRouterSlice],\r\n state => state?.action,\r\n);\r\nexport const selectRouterSearch = createSelector(\r\n [selectRouterLocation],\r\n state => state?.search,\r\n);\r\nexport const selectRouterSearchParams = createSelector(\r\n [selectRouterSearch],\r\n state => new URLSearchParams(state),\r\n);\r\nexport const selectRouterPathname = createSelector(\r\n [selectRouterLocation],\r\n state => state?.pathname,\r\n);\r\n","/**\r\n *\r\n * ServiceFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { IServiceFilterDto } from 'api/odata/generated/entities/IServiceFilterDto';\r\nimport { OnlineServicePicker } from 'app/components/pickers/AutocompletePickers/OnlineServicePicker';\r\n\r\nexport const ServiceFilter = (props: IFilterComponentProps) => {\r\n const handleChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default ServiceFilter;\r\n","import { useCallback, useEffect, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useReactToPrint } from 'react-to-print';\r\nimport { PrintToPDFPopup } from './Components/PrintToPDFPopup';\r\nimport { usePrintPDFSlice } from './slice';\r\nimport styled from 'styled-components';\r\nimport React from 'react';\r\nimport {\r\n selectPrintPDFisLoading,\r\n selectPrintPDFSections,\r\n} from './slice/selectors';\r\nimport { H4 } from '../Typography';\r\n\r\nexport interface Printing {\r\n id: string;\r\n onLoading?: (id: string, loading: boolean) => void;\r\n printing: boolean;\r\n}\r\nexport interface PrintToPDFProps {\r\n title?: string;\r\n children: React.ReactNode;\r\n print: boolean;\r\n printTitle: string;\r\n useSections?: boolean;\r\n saveMarkedSections?: boolean;\r\n noTitlePrinted?: boolean;\r\n hideDisabled?: boolean;\r\n close: () => void;\r\n}\r\nexport function PrintToPDF(props: PrintToPDFProps) {\r\n const dispatch = useDispatch();\r\n const { actions } = usePrintPDFSlice();\r\n const printPDFSections = useSelector(selectPrintPDFSections);\r\n const printPDFFisLoading = useSelector(selectPrintPDFisLoading);\r\n const [startPrinting, setStartPrinting] = React.useState(false);\r\n const [printing, setPrinting] = React.useState(false);\r\n const componentRef = useRef(null);\r\n const promiseResolveRef = useRef<() => void>();\r\n const handlePrint = useReactToPrint({\r\n content: () =>\r\n componentRef.current !== undefined ? componentRef.current : null,\r\n documentTitle: props.printTitle,\r\n onAfterPrint: () => {\r\n setPrinting(false);\r\n setStartPrinting(false);\r\n dispatch(actions.setPrinting(false));\r\n props.close();\r\n },\r\n onBeforeGetContent: () => {\r\n dispatch(actions.setPrinting(true));\r\n return new Promise(resolve => {\r\n dispatch(actions.clearLoading());\r\n setStartPrinting(true);\r\n promiseResolveRef.current = resolve;\r\n });\r\n },\r\n });\r\n useEffect(() => {\r\n if (startPrinting && !printPDFFisLoading) {\r\n setStartPrinting(false);\r\n setPrinting(true);\r\n }\r\n }, [startPrinting, printPDFFisLoading]);\r\n useEffect(() => {\r\n if (printing && promiseResolveRef.current) {\r\n //setPrinting(false);\r\n promiseResolveRef.current();\r\n }\r\n }, [printing]);\r\n\r\n useEffect(() => {\r\n if (!props.useSections) {\r\n dispatch(actions.updateSections(undefined));\r\n dispatch(actions.setUseSections(false));\r\n }\r\n }, [actions, dispatch, props.useSections]);\r\n\r\n const handleSubmit = useCallback(() => {\r\n if (\r\n props.saveMarkedSections !== undefined &&\r\n props.saveMarkedSections === true\r\n ) {\r\n dispatch(actions.saveSections());\r\n }\r\n handlePrint?.();\r\n }, [actions, dispatch, handlePrint, props.saveMarkedSections]);\r\n return (\r\n <>\r\n {props.print ? (\r\n \r\n {!!props.title && !props.noTitlePrinted && (\r\n \r\n

    {props.title}

    \r\n
    \r\n )}\r\n {props.children}\r\n
    \r\n ) : (\r\n <>{props.children}\r\n )}\r\n\r\n {props.print && (\r\n {\r\n props.close();\r\n }}\r\n onSubmit={handleSubmit}\r\n fullWidth={\r\n !!props.useSections &&\r\n printPDFSections !== undefined &&\r\n printPDFSections.length > 0\r\n }\r\n />\r\n )}\r\n \r\n );\r\n}\r\n/**\r\n * without width: 100% the layout of the PageWrapper breaks by overflowing the PageWrapper (service request details)\r\n */\r\nconst PrintContent = styled('div')`\r\n &.print-pdf-content {\r\n width: 100%;\r\n height: 100%;\r\n padding: 16px 32px;\r\n overflow: auto;\r\n\r\n @media print {\r\n html,\r\n body {\r\n height: auto;\r\n }\r\n & button {\r\n display: none;\r\n }\r\n height: auto;\r\n &:last-child {\r\n break-after: auto;\r\n }\r\n }\r\n }\r\n`;\r\nconst TitleSection = styled('div')`\r\n display: flex;\r\n align-items: center;\r\n paddin: 16px;\r\n`;\r\n","/**\r\n *\r\n * RegionFilter\r\n *\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectIsAuthenticated } from 'app/slice/selectors';\r\nimport { RegionPicker } from 'app/components/pickers/AutocompletePickers/RegionPicker';\r\n\r\nexport const RegionFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n const isAuth = useSelector(selectIsAuthenticated);\r\n return (\r\n \r\n );\r\n};\r\nexport default RegionFilter;\r\n","/**\r\n *\r\n * ServiceGroupsFilter\r\n *\r\n */\r\nimport { ServiceGroupsPicker } from 'app/components/pickers/MultiSelectPickers/ServiceGroupsPicker';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '..';\r\n\r\nexport const ServiceGroupsFilter = (props: IFilterComponentProps) => {\r\n const handleChange = (value: Entity[] | undefined) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\n","import { SuperGroupPicker } from 'app/components/pickers/AutocompletePickers/SuperGroupPicker';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const SuperGroupFilter = (props: IFilterComponentProps) => {\r\n const handleChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * LoanablePicker\r\n *\r\n */\r\nimport { AutocompletePickerProps } from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { BaseOptionsPicker } from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport const LoanTypeOptions = [\r\n {\r\n Id: 1,\r\n Name: 'Yes',\r\n },\r\n {\r\n Id: 2,\r\n Name: 'No',\r\n },\r\n];\r\n\r\nexport interface LoanablePickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nexport const getSingleLoanableType = (val: number): Entity => {\r\n return LoanTypeOptions.filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\n\r\nexport const initLoanableData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n LoanTypeOptions.filter(item => {\r\n return item.Id.toString() === initval;\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nconst getOptions = (searchTerm: string | null) => {\r\n let items = LoanTypeOptions;\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\n\r\nexport function LoanablePicker(props: LoanablePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * StatusPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface StatusPickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/StatusFilter';\r\nexport const initStatusData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function StatusPicker(props: StatusPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * LockersPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface LockersPickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/LockersFilter';\r\nexport const initLockersData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function LockersPicker(props: LockersPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * FundingTypePicker\r\n *\r\n */\r\n\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { AssemblyTypes } from 'enums/InstrumentListAssemblyTypes';\r\nimport { Entity } from 'types/common';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface AssemblyTypePickerProps\r\n extends Omit>, 'getOptions'> {}\r\n\r\nexport const getSingleAssemblyType = (val: number): Entity => {\r\n return enumToEntityArray(AssemblyTypes).filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\n\r\nexport const initAssemblyTypeData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n enumToEntityArray(AssemblyTypes).filter(item => {\r\n return item.Id.toString() === initval;\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nconst getOptions = (searchTerm: string | null) => {\r\n let items = enumToEntityArray(AssemblyTypes);\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\n\r\nexport function AssemblyTypePicker(props: AssemblyTypePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * SubLocationFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { SubLocationListPicker } from 'app/components/pickers/AutocompletePickers/SubLocationListPicker';\r\n\r\nexport const SubLocationFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default SubLocationFilter;\r\n","import { TopActionButton } from 'app/components/BasicButtons/TopActionButton';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { GetRawValue } from 'app/components/BasicTable/types/FilterParam';\r\n\r\nimport { AssetsSelectionProps } from 'app/pages/MyAssetsPage/AssetsSelection/AssetsSelection';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { PageTopActionsProps } from '../type';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\n\r\nexport function AddReservation({\r\n size,\r\n text,\r\n variant,\r\n icon,\r\n isIconButton,\r\n useSidePanel,\r\n isExpanded,\r\n compact = true,\r\n ...props\r\n}: PageTopActionsProps) {\r\n const location = useLocation();\r\n const { openPanel } = useSidePanelState();\r\n const isMobile = DetectIsMobile();\r\n const { t } = useTranslation();\r\n\r\n return (\r\n {\r\n let selParams = {\r\n useSidePanel: !isMobile && !useSidePanel,\r\n actionType: 'Reservation',\r\n serviceIds: GetRawValue(\r\n new URLSearchParams(location.search),\r\n 'selectedIds',\r\n ),\r\n } as AssetsSelectionProps;\r\n openPanel({\r\n renderPageType: RenderPageType.AssetsSelection,\r\n renderPageProps: selParams,\r\n expanded: isExpanded,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n }}\r\n {...props}\r\n />\r\n );\r\n}\r\n","/**\r\n *\r\n * ErrorBoundary\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { getLogger } from 'utils/logLevel';\r\n\r\nexport class ErrorBoundary extends React.Component<\r\n { fallBack?: React.ReactElement; onError?: (error) => void },\r\n { hasError: boolean }\r\n> {\r\n private _log = getLogger('ErrorBoundary');\r\n private fallBack?: React.FC;\r\n private onError?: (error) => void;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n this.fallBack = props.fallback;\r\n this.onError = props.onError;\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n componentDidCatch(error, errorInfo) {\r\n // You can also log the error to an error reporting service\r\n this.onError?.(errorInfo);\r\n this._log.error(error, errorInfo);\r\n }\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return this.props.fallBack ||

    Something went wrong.

    ;\r\n }\r\n return this.props.children;\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectExpandedSidePanel,\r\n selectIsCoverExpanded,\r\n selectSidePanelOpen,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { StyledFormProps } from '../StyledForm';\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport clsx from 'clsx';\r\nimport { Section } from '../wrappers';\r\nimport { SIDE_PANEL_WIDTH } from 'styles/constantVariables';\r\n\r\nexport const StyledFormFieldsContainer = (\r\n props: Omit,\r\n) => {\r\n const {\r\n avoidStyles,\r\n children,\r\n useRequestSection,\r\n isCover,\r\n noPadding,\r\n ...other\r\n } = props;\r\n\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const sidePanelOpen = useSelector(selectSidePanelOpen);\r\n const isCoverExpanded = useSelector(selectIsCoverExpanded);\r\n const showShortView =\r\n (sidePanelOpen && !sidePanelExpanded) || (isCover && !isCoverExpanded); // used for side panel view\r\n const theme = useTheme();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import Badge from '@material-ui/core/Badge';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport * as React from 'react';\r\nimport { IconButton } from '../IconButton';\r\n\r\nexport interface FilterIconButtonProps {\r\n filterLength: number;\r\n handleClick: React.MouseEventHandler;\r\n innerRef?: React.RefObject;\r\n id?: string;\r\n}\r\n\r\nexport function FilterIconButton({\r\n filterLength: filterLengs,\r\n handleClick: onClick,\r\n id,\r\n ...props\r\n}: FilterIconButtonProps) {\r\n return (\r\n \r\n \r\n 0 ? 'primary' : 'default'}\r\n colorExtend={filterLengs > 0 ? 'main' : 'dark'}\r\n />\r\n \r\n \r\n );\r\n}\r\n","import { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { PrimaryActionDynamic } from 'app/components/BasicTable/components/TableCard/PrimaryAction';\r\nimport { WorkOrderDetailsProps } from '../WorkOrders/WorkOrderDetailsPage/Details';\r\nimport { allowedToViewAlert } from 'app/permissions/WorkOrders/workOrdersPermissionUtils';\r\n\r\nexport const workOrderPrimaryAction: PrimaryActionDynamic<\r\n IWorkOrderDetailsDto\r\n> = (openPanel, row, toggle, user, useSidePanel) => {\r\n if (allowedToViewAlert(user, row.original)) {\r\n openPanel({\r\n renderPageType: RenderPageType.WorkOrderDetails,\r\n renderPageProps: {\r\n queryParams: { id: '' + row.original.Id },\r\n useSidePanel: true,\r\n } as WorkOrderDetailsProps,\r\n useSidePanel: useSidePanel,\r\n expanded: false,\r\n isCover: useSidePanel,\r\n });\r\n }\r\n};\r\n\r\nexport default workOrderPrimaryAction;\r\n","import { MenuItem } from '@material-ui/core';\r\nimport { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { WorkOrderApi } from 'api/WorkOrderApi';\r\nimport { DropDown } from 'app/components/DropDown';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { useCalendarLink } from 'app/pages/CalendarPage/GetCalendarPagePath';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { toQueryString, toRootedURL } from 'utils/url-utils';\r\nimport { OpenWorkOrderButton } from './OpenWorkOrder';\r\n\r\nexport interface BringBackUpProps {\r\n rows: TRow[];\r\n getAssetIds: (rows: TRow[]) => number[];\r\n getEquipmentIds: (rows: TRow[]) => number[];\r\n useSidePanel?: boolean;\r\n}\r\n\r\nexport function BringBackUp({\r\n rows,\r\n getAssetIds,\r\n getEquipmentIds,\r\n useSidePanel,\r\n}: BringBackUpProps) {\r\n const { t } = useTranslation();\r\n const { newDate } = useSystemDate();\r\n const fetchDownOrders = async (\r\n ids: number[],\r\n ): Promise => {\r\n return WorkOrderApi.DowntimeOrders(ids).then(data => {\r\n return data;\r\n });\r\n };\r\n const [downOrders, setDownOrders] = useAsyncExtendedState<\r\n IWorkOrderDetailsDto[]\r\n >([]);\r\n const [fetchOrdersState, fetchOrdersPromise] = usePromise(fetchDownOrders);\r\n\r\n React.useEffect(() => {\r\n if (\r\n !fetchOrdersState.status ||\r\n (fetchOrdersState.status !== 'pending' &&\r\n fetchOrdersState.status !== 'resolved')\r\n ) {\r\n setDownOrders(fetchOrdersPromise(getAssetIds(rows)));\r\n }\r\n }, [\r\n fetchOrdersPromise,\r\n fetchOrdersState.status,\r\n getAssetIds,\r\n rows,\r\n setDownOrders,\r\n ]);\r\n\r\n const calendarLinkParams = React.useMemo(() => {\r\n if (fetchOrdersState.status === 'resolved' && downOrders.length > 0) {\r\n let date =\r\n downOrders.filter(f => f.OfflineEventStart !== null)[0]\r\n .OfflineEventStart ?? newDate();\r\n\r\n return {\r\n equipments: getEquipmentIds(rows),\r\n Start: dateUtils.formatQueryStringDate(dateUtils.parseISO(date)),\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n }, [downOrders, fetchOrdersState.status, getEquipmentIds, newDate, rows]);\r\n const calendarLink = useCalendarLink({\r\n ...calendarLinkParams,\r\n ...{ viewType: 'calendar' },\r\n });\r\n const alertslink = React.useMemo(() => {\r\n if (fetchOrdersState.status === 'resolved' && downOrders.length > 0) {\r\n return `/workorders?${toQueryString({\r\n aid: getAssetIds(rows)\r\n .map(r => r)\r\n .join('|'),\r\n downTime: 'true',\r\n })}`;\r\n } else {\r\n return undefined;\r\n }\r\n }, [downOrders.length, fetchOrdersState.status, getAssetIds, rows]);\r\n\r\n return fetchOrdersState.status === 'resolved' && downOrders.length > 0 ? (\r\n \r\n {downOrders.length === 1 ? (\r\n \r\n ) : (\r\n [\r\n \r\n {t(translations.BringBackUpOnWorkOrders)}\r\n ,\r\n \r\n {t(translations.BringBackUpOnCalendar)}\r\n ,\r\n ]}\r\n menuProps={{\r\n anchorOrigin: {\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n },\r\n transformOrigin: {\r\n vertical: 'top',\r\n horizontal: 'left',\r\n },\r\n getContentAnchorEl: null,\r\n }}\r\n addChevron\r\n >\r\n {t(translations.BringBackUp)}\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n );\r\n}\r\n","import { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { AddWorkOrder } from './AddWorkOrder';\r\n\r\nexport interface DownWorkOrderProps {\r\n rows: TRow[];\r\n getAssets: (rows: TRow[]) => Promise;\r\n buttonName?: string;\r\n useSidePanel?: boolean;\r\n}\r\n\r\nexport function DownWorkOrder({\r\n rows,\r\n getAssets,\r\n buttonName,\r\n useSidePanel,\r\n}: DownWorkOrderProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import {\r\n CalendarButton,\r\n CalendarButtonProps,\r\n} from 'app/components/CalendarButton';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport interface OpenCalendarProps\r\n extends Omit<\r\n CalendarButtonProps,\r\n | 'variant'\r\n | 'size'\r\n | 'equipments'\r\n | 'openToBook'\r\n | 'viewType'\r\n | 'target'\r\n | 'children'\r\n > {\r\n rows: TRow[];\r\n getEquipmentIds: (rows: TRow[]) => number[];\r\n bookMultiple?: boolean;\r\n primary?: boolean;\r\n}\r\n\r\nexport function OpenCalendar({\r\n rows,\r\n getEquipmentIds,\r\n bookMultiple,\r\n primary,\r\n ...props\r\n}: OpenCalendarProps) {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n {t(translations.Reservation)}\r\n \r\n );\r\n}\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { toQueryString } from 'utils/url-utils';\r\n\r\nexport interface OpenWorkOrdersProps {\r\n rows: TRow[];\r\n getAssetIds: (rows: TRow[]) => number[];\r\n}\r\n\r\nexport function OpenWorkOrders({\r\n rows,\r\n getAssetIds,\r\n}: OpenWorkOrdersProps) {\r\n const { t } = useTranslation();\r\n const alertslink = React.useMemo(() => {\r\n return `/workorders?${toQueryString({\r\n aid: getAssetIds(rows).join('|'),\r\n })}`;\r\n }, [getAssetIds, rows]);\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import { IRow } from 'app/components/BasicTable/IRow';\r\nimport { useConfigurableColumns } from 'app/components/BasicTable/useConfigurableColumns';\r\nimport React from 'react';\r\nimport { Column } from 'react-table';\r\n\r\nconst GetTargetColumns = (\r\n configurableColumns: Column[] | undefined,\r\n target: Column[] | undefined,\r\n): Column[] | undefined => {\r\n if (configurableColumns !== undefined && target !== undefined) {\r\n const res = configurableColumns.map(c => {\r\n const r = target.find(t => t.accessor === c.accessor);\r\n return r !== undefined ? r : c;\r\n });\r\n return res;\r\n } else return undefined;\r\n};\r\nconst ExcludeColumns = (\r\n configurableColumns: Array | undefined,\r\n columnsToRemove: string[] | undefined,\r\n): Array | undefined => {\r\n if (configurableColumns !== undefined) {\r\n if (columnsToRemove !== undefined) {\r\n const res = configurableColumns.filter(\r\n c => columnsToRemove.find(r => r === c) === undefined,\r\n );\r\n return res;\r\n } else {\r\n return configurableColumns;\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n};\r\nexport const useConfigurableColumnsAdvanced = (\r\n screenId: number,\r\n columns: Array>,\r\n excludeFroExport: string[],\r\n) => {\r\n const {\r\n configurableColumns,\r\n configurableColumnsExport: exportConfigurableColumns,\r\n handleConfigurableColumns,\r\n configCompleted,\r\n } = useConfigurableColumns({\r\n screenId: screenId,\r\n columns: columns,\r\n // setGlobalMessage: setGlobalMessage,\r\n });\r\n const getColumnAccessors = React.useCallback(\r\n (columns: Column[] | undefined) =>\r\n columns\r\n ?.filter(c => typeof c.accessor === 'string')\r\n ?.filter(c => c.accessor !== undefined)\r\n ?.map(c => c.accessor as keyof TRow),\r\n [],\r\n );\r\n\r\n const getDisplayColumns = React.useCallback(\r\n ({\r\n screenId,\r\n configurableColumns,\r\n configCompleted,\r\n columns,\r\n }): Column[] | undefined => {\r\n if (screenId === undefined) {\r\n return columns;\r\n } else if (configCompleted) {\r\n return configurableColumns;\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n [],\r\n );\r\n const columnAccessors = React.useMemo(() => {\r\n const result = getColumnAccessors(\r\n getDisplayColumns({\r\n screenId,\r\n configurableColumns,\r\n configCompleted,\r\n columns,\r\n }),\r\n );\r\n return result;\r\n }, [\r\n getColumnAccessors,\r\n getDisplayColumns,\r\n screenId,\r\n configurableColumns,\r\n configCompleted,\r\n columns,\r\n ]);\r\n const targetColumns = React.useMemo(() => {\r\n return GetTargetColumns(configurableColumns, columns);\r\n }, [columns, configurableColumns]);\r\n const exportColumns = React.useMemo(() => {\r\n return ExcludeColumns(exportConfigurableColumns, excludeFroExport);\r\n }, [excludeFroExport, exportConfigurableColumns]);\r\n return {\r\n configurableColumns: targetColumns,\r\n columnAccessors,\r\n exportConfigurableColumns: exportColumns,\r\n handleConfigurableColumns,\r\n configCompleted,\r\n };\r\n};\r\n","import { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { PrimaryActionDynamic } from 'app/components/BasicTable/components/TableCard/PrimaryAction';\r\nimport { ReservationDetailsProps } from '../ReservationDetails/Details';\r\nimport { ReservationQueryStringParameters } from '../ReservationDetails/Details/slice/types';\r\n\r\nexport const reservationsPrimaryAction: PrimaryActionDynamic<{\r\n Id: number;\r\n}> = (openPanel, row, toggle, user, useSidePanel) => {\r\n const params = {\r\n id: String(row.original.Id),\r\n un: user?.Id,\r\n } as ReservationQueryStringParameters;\r\n openPanel({\r\n renderPageType: RenderPageType.ReservationDetails,\r\n renderPageProps: {\r\n useSidePanel: true,\r\n queryParams: params,\r\n } as ReservationDetailsProps,\r\n useSidePanel: useSidePanel,\r\n expanded: false,\r\n isCover: useSidePanel,\r\n });\r\n};\r\n\r\nexport default reservationsPrimaryAction;\r\n","/**\r\n *\r\n * AvailabilityTypePicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { AvailabilityTypes } from 'api/odata/generated/enums/AvailabilityTypes';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface AvailabilityTypePickerProps\r\n extends Omit>, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/AvailabilityTypesFilter';\r\nexport const initAvailabilityTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm !== null ? searchTerm : undefined,\r\n }).toString();\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nconst loadBookableData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string } = {\r\n $orderby: 'Name asc',\r\n };\r\n const predicates: (string | Condition>)[] = [];\r\n const bookable: number[] = [\r\n //AvailabilityTypes.ApprovalRequiredBillable as number,\r\n AvailabilityTypes.BookableWApproval as number,\r\n AvailabilityTypes.FreelyBookable as number,\r\n //AvailabilityTypes.FreelyBookableBillable as number,\r\n AvailabilityTypes.LectureRoom as number,\r\n AvailabilityTypes.LoanableEquipment as number,\r\n AvailabilityTypes.TrainingProgram as number,\r\n ];\r\n let filter = `(${bookable\r\n .map(item =>\r\n new Condition>(\r\n 'Id',\r\n ODataOperators.Equals,\r\n item,\r\n ).toString(),\r\n )\r\n .join(' or ')})`;\r\n predicates.push(filter);\r\n\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: predicates,\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm !== null ? searchTerm : undefined,\r\n }).toString();\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\n\r\nexport function AvailabilityTypePicker(props: AvailabilityTypePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\nexport function AvailabilityTypeBookablePicker(\r\n props: AvailabilityTypePickerProps,\r\n) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * BasicDialogContentWithTitle\r\n *\r\n */\r\nimport {\r\n DialogContent,\r\n DialogContentProps,\r\n LinearProgress,\r\n} from '@material-ui/core';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { H4 } from '../Typography';\r\nimport clsx from 'clsx';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\n\r\nexport interface TitleProps {\r\n titles: React.ReactNode;\r\n subtitle?: React.ReactNode;\r\n onClose?: React.MouseEventHandler;\r\n processing?: boolean;\r\n disabled?: boolean;\r\n}\r\nexport interface BasicDialogContentWithTitleProps extends DialogContentProps {\r\n children: React.ReactNode;\r\n}\r\nexport function BasicDialogContentWithTitle({\r\n titles,\r\n subtitle,\r\n onClose,\r\n children,\r\n processing,\r\n disabled,\r\n}: BasicDialogContentWithTitleProps & TitleProps) {\r\n const isMobile = DetectIsMobile();\r\n return (\r\n \r\n <>\r\n
    \r\n {!!onClose ? (\r\n \r\n ) : null}\r\n {titles &&

    {titles}

    }\r\n {subtitle && (\r\n {subtitle}\r\n )}\r\n {processing && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    {children}
    \r\n \r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * BasicDialog\r\n *\r\n */\r\nimport { Dialog, DialogProps } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { BasicDialogActions } from './BasicDialogActions';\r\nimport { BasicDialogContentWithTitle } from './BasicDialogContentWithTitle';\r\nimport { DialogActionsRenderer } from './DialogActionsRender';\r\nimport clsx from 'clsx';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\n\r\nexport interface BasicDialogProps extends Omit {\r\n id: string;\r\n title: React.ReactNode;\r\n subtitle?: React.ReactNode;\r\n body: React.ReactNode;\r\n processing?: boolean;\r\n isopen: boolean;\r\n leftActions: DialogActionsRenderer[];\r\n rightActions: DialogActionsRenderer[];\r\n onClose?: React.MouseEventHandler;\r\n onCancel?: React.MouseEventHandler;\r\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\r\n disabled?: boolean;\r\n rtl?: boolean;\r\n dialogRootClassName?: string;\r\n paperClassName?: string;\r\n}\r\n\r\nexport function BasicDialog({\r\n id,\r\n title,\r\n body,\r\n isopen,\r\n leftActions,\r\n rightActions,\r\n maxWidth,\r\n subtitle,\r\n processing,\r\n disabled,\r\n rtl,\r\n dialogRootClassName,\r\n paperClassName,\r\n ...props\r\n}: BasicDialogProps) {\r\n const [open, setOpen] = React.useState(isopen);\r\n const isMobile = DetectIsMobile();\r\n React.useEffect(() => {\r\n setOpen(isopen);\r\n }, [isopen]);\r\n\r\n return (\r\n \r\n \r\n {body}\r\n \r\n element)}\r\n rightActions={rightActions.map(element => element)}\r\n />\r\n \r\n );\r\n}\r\n","import { Link } from '@material-ui/core';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { TFunctionResult } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport React, { ReactNode } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { ChargeProps } from './index';\r\n\r\nexport const AddChargeButton = ({\r\n children,\r\n tooltip,\r\n ...props\r\n}: ChargeProps & {\r\n children?: ReactNode;\r\n tooltip?: React.ReactNode | TFunctionResult;\r\n}) => {\r\n const dispatch = useDispatch();\r\n const { actions } = useLayoutSlice();\r\n const { t } = useTranslation();\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const singleAdminServiceGroup =\r\n authenticatedUser?.Roles?.includes(Roles.ServiceGroupBudgetsAdmin) &&\r\n authenticatedUser.AdminServiceGroups.length === 1\r\n ? authenticatedUser.AdminServiceGroups[0]\r\n : null;\r\n props.serviceGroup = props.serviceGroup ?? singleAdminServiceGroup ?? null;\r\n const chargesProps: ChargeProps = React.useMemo(() => {\r\n return {\r\n budget: props.budget,\r\n serviceGroup: props.serviceGroup,\r\n invoiceId: props.invoiceId,\r\n rowId: props.rowId,\r\n serviceGroupPredicate: props.serviceGroupPredicate,\r\n closeCover: props.closeCover,\r\n coverClosed: props.coverClosed,\r\n isCover: props.isCover,\r\n useSidePanel: true,\r\n };\r\n }, [\r\n props.budget,\r\n props.closeCover,\r\n props.coverClosed,\r\n props.invoiceId,\r\n props.isCover,\r\n props.rowId,\r\n props.serviceGroup,\r\n props.serviceGroupPredicate,\r\n ]);\r\n\r\n return (\r\n \r\n {\r\n dispatch(actions.toggleSidePanel(true));\r\n dispatch(actions.setPageType(RenderPageType.AddCharge));\r\n dispatch(actions.setPageProps(chargesProps));\r\n }}\r\n >\r\n {children ?? t(translations.AddManualInvoiceLine)}\r\n \r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * FormTrainingLevelPicker\r\n *\r\n */\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { TrainingLevelPicker } from '../pickers/AutocompletePickers/TrainingLevelPicker';\r\nimport { ITrainingLevelFilterDto } from 'api/odata/generated/entities/ITrainingLevelFilterDto';\r\n\r\nexport const FormTrainingLevelPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig & IFieldProps) => {\r\n const [field, meta, helpers] = useField(\r\n props,\r\n );\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n info={props.info}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n disabled={props.disabled}\r\n fullWidth={props.fullWidth}\r\n />\r\n \r\n );\r\n};\r\n","import { useTheme } from '@material-ui/core';\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\nimport { CardPosition } from 'app/components/BasicCards';\r\nimport styled from 'styled-components';\r\n\r\nexport interface TableCardGridProps {\r\n id?: string;\r\n children: React.ReactNodeArray;\r\n isMobile?: boolean;\r\n cardPosition?: CardPosition;\r\n compact?: boolean;\r\n minCardHeight?: 'md' | 'lg';\r\n}\r\n\r\nexport const TableCardGrid = ({\r\n id,\r\n children,\r\n isMobile,\r\n cardPosition,\r\n compact,\r\n minCardHeight,\r\n}: TableCardGridProps) => {\r\n const theme = useTheme();\r\n const sperItems = React.useMemo(() => {\r\n let sperLength = children.length > 0 ? 5 - (children.length % 5) : 0;\r\n return Array.from(Array(sperLength));\r\n }, [children.length]);\r\n return (\r\n \r\n {children\r\n .filter(f => !!f)\r\n .map((c, ind) => (\r\n \r\n {c}\r\n \r\n ))}\r\n {!isMobile &&\r\n !compact &&\r\n sperItems.map((c, ind) => (\r\n \r\n ))}\r\n {(isMobile || compact) && children.length > 3 && (\r\n
    \r\n )}\r\n \r\n );\r\n};\r\nconst CardGrid = styled('div')(({ theme }) => ({\r\n '&.gridContainer': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n width: '100%',\r\n height: 'auto',\r\n gap: 32,\r\n overflowY: 'auto',\r\n padding: '8px 2px',\r\n // '&::-webkit-scrollbar': {\r\n // width: '6px',\r\n // transition: 'width 0.2s, height 0.2s',\r\n // },\r\n // '&::-webkit-scrollbar-thumb': {\r\n // boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n // borderRadius: '6px',\r\n // backgroundColor: theme.palette.common.grayBorders,\r\n // transition: 'background-color 0.2s',\r\n // },\r\n // '&:hover': {\r\n // '&::-webkit-scrollbar': {\r\n // width: '12px' /* Increase width on hover */,\r\n // },\r\n // '&::-webkit-scrollbar-thumb': {\r\n // backgroundColor: bookitColors.grayscale.grayComponentsLight,\r\n // },\r\n // },\r\n '&.isMobile': {\r\n gap: '16px',\r\n },\r\n '&.cardVertical': {\r\n // gap: 16,\r\n padding: 0,\r\n },\r\n '&.compact-height': {\r\n flex: '1 1 100%',\r\n width: '100%',\r\n height: 120,\r\n },\r\n '& .cardItem': {\r\n //flexBasis: isMobile ? '100%' : '20%',\r\n flex: '1 1 20%',\r\n borderRadius: 8,\r\n width: 0,\r\n //width: 256,\r\n minWidth: '256px',\r\n maxWidth: '360px',\r\n '&.cardHorizontal': {\r\n flex: '1 1 25%',\r\n minWidth: '400px',\r\n maxWidth: '460px',\r\n },\r\n '&.cardVertical': {\r\n flex: '1 1 16%',\r\n },\r\n '&.isMobile': {\r\n flex: '1 1 100%',\r\n maxWidth: '100%',\r\n minWidth: 'unset',\r\n },\r\n '&.minCardHeightMd': {\r\n minHeight: 80,\r\n },\r\n '&.minCardHeightLg': {\r\n minHeight: 100,\r\n },\r\n },\r\n },\r\n}));\r\n","/**\r\n *\r\n * ArticlLink\r\n *\r\n */\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ExternalLink } from 'app/components/ExternalLink';\r\nimport { ValueLabel } from 'app/components/ValueLabel';\r\nimport { ArticleSource } from '../ArticlesSourcePicker';\r\n\r\nexport interface ArticleLinkProps {\r\n doi: string | undefined | null;\r\n externalId?: string | null;\r\n externalIdSource?: string | null;\r\n}\r\n\r\nexport function ArticleDoiLink({\r\n doi,\r\n externalIdSource,\r\n externalId,\r\n}: ArticleLinkProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const doiId = tryGetDoiFromUrl(doi) ?? doi;\r\n const doiURL = `https://doi.org/${doiId}`;\r\n const externalIdSourceType = externalIdSource as ArticleSource;\r\n const linkURL =\r\n // use pubmed link for pubmed articles\r\n externalIdSourceType === 'PubMed'\r\n ? `https://pubmed.ncbi.nlm.nih.gov/${externalId}/`\r\n : // use dtu findit link for dtu orbit sourced articles\r\n externalIdSourceType === 'DTUOrbit'\r\n ? `https://findit.dtu.dk/en/catalog?q=doi:${doiId}`\r\n : // by default shows the doi url\r\n doiURL;\r\n if (doi === undefined) {\r\n return ;\r\n } else {\r\n return (\r\n <>\r\n \r\n {doi}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst tryGetDoiFromUrl = (s: string | null | undefined) => {\r\n try {\r\n if (s === null) {\r\n return undefined;\r\n }\r\n if (s === undefined) {\r\n return undefined;\r\n }\r\n const url = new URL(s);\r\n const result = url.pathname.substr(1);\r\n return result;\r\n } catch (error) {\r\n return undefined;\r\n }\r\n};\r\n","import { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { BasicTable, BasicTableProps } from 'app/components/BasicTable';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport function WorkOrdersTable<\r\n TProps extends Omit<\r\n BasicTableProps,\r\n | 'api'\r\n | 'additionalColumns'\r\n | 'searchColumns'\r\n | 'screenName'\r\n | 'expandedColumns'\r\n | 'savedListSettings'\r\n >,\r\n>({ initialState, rowActions, serviceGroups, ...props }: TProps) {\r\n const { t } = useTranslation();\r\n const newProps = React.useMemo(() => {\r\n const p = { ...props };\r\n Reflect.deleteProperty(p, 'api');\r\n Reflect.deleteProperty(p, 'expandedColumns');\r\n Reflect.deleteProperty(p, 'savedListSettings');\r\n return p;\r\n }, [props]);\r\n const url = '/api/odata/v4/WorkOrders';\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n","import { Button, ButtonProps } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { ExternalLink } from 'app/components/ExternalLink';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { selectGlobalDbSetting_EnableLegacyScheduler } from 'app/slice/globalDbSettingsSelectors';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { useSelector } from 'react-redux';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { ReservationDetailsProps } from '../../pages/ReservationDetails/Details';\r\nimport { ReservationQueryStringParameters } from '../../pages/ReservationDetails/Details/slice/types';\r\n\r\nexport interface ReservationCreateButtonProps extends ButtonProps {\r\n instruments: number[];\r\n useSidePanel?: boolean;\r\n openPanelOrCover?: (state: SidePanelOpenState) => void;\r\n}\r\nexport function ReservationCreateButton({\r\n variant = 'white',\r\n size = 'small',\r\n onClick,\r\n startIcon,\r\n instruments,\r\n useSidePanel,\r\n openPanelOrCover,\r\n ...props\r\n}: ReservationCreateButtonProps) {\r\n const { openPanel } = useSidePanelState();\r\n const User = useSelector(selectAuthenticatedUser);\r\n const EnableLegacyScheduler = useSelector(\r\n selectGlobalDbSetting_EnableLegacyScheduler,\r\n );\r\n\r\n const params = {\r\n selectedIds: String(instruments.join(',')),\r\n un: User?.Id,\r\n } as ReservationQueryStringParameters;\r\n\r\n const handleClick = e => {\r\n if (!EnableLegacyScheduler) {\r\n const openProps = {\r\n renderPageType: RenderPageType.ReservationDetails,\r\n renderPageProps: {\r\n useSidePanel: true,\r\n queryParams: params,\r\n } as ReservationDetailsProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState;\r\n !!openPanelOrCover ? openPanelOrCover(openProps) : openPanel(openProps);\r\n }\r\n onClick?.(e);\r\n };\r\n const legacyURL: IPathAndQuery = {\r\n path: '/Reservation.aspx',\r\n search: { id: instruments.join(',') },\r\n };\r\n const p = EnableLegacyScheduler\r\n ? {\r\n component: ExternalLink,\r\n href: legacyURL,\r\n }\r\n : {};\r\n return (\r\n }\r\n onClick={handleClick}\r\n target={EnableLegacyScheduler ? '_blank' : undefined}\r\n {...p}\r\n {...props}\r\n />\r\n );\r\n}\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { quoteODataValue } from 'api/odata/ODataFilter';\r\nimport {\r\n BaseURLPicker,\r\n BaseURLPickerProps,\r\n} from 'app/components/BasicPickers/BaseURLPicker';\r\nimport { CustomFormTypeEnum } from 'enums/CustomFormType';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\nexport interface CustomFormPickerProps\r\n extends Omit>, 'url' | 'queryfilter'> {\r\n formType: CustomFormTypeEnum;\r\n referenceId?: number;\r\n filter?: string;\r\n}\r\n\r\nexport const initCustomFormData = (\r\n initval: string | undefined,\r\n type: CustomFormTypeEnum,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const url = `/api/odata/v4/CustomForm(${type})`;\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name,FormFields,ServiceGroups,Active,Type',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nexport function AlertFormFilter(\r\n alertTypeId: number,\r\n assetCatId: number,\r\n): string | undefined {\r\n let filter = `(WorkOrderFormMatrices/any(m: m/AlertTypeId eq ${quoteODataValue(\r\n alertTypeId,\r\n )} and m/AssetCatId eq ${assetCatId}))`;\r\n return filter;\r\n}\r\nexport function CustomFormPicker(props: CustomFormPickerProps) {\r\n const { filter, formType } = props;\r\n const url = `/api/odata/v4/CustomForm(${formType})`;\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * PaymentMethodEnumPicker\r\n *\r\n */\r\n\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { PaymentMethods } from 'app/pages/OnlineBudgetsStatusPage/slice/types';\r\nimport { Entity } from 'types/common';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface PaymentMethodEnumPickerProps\r\n extends Omit>, 'getOptions'> {}\r\n\r\nexport const getSinglePaymentMethod = (val: number): Entity => {\r\n return enumToEntityArray(PaymentMethods).filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\n\r\nexport const initPaymentMethodData = (\r\n initval: number | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([getSinglePaymentMethod(initval)]);\r\n });\r\n }\r\n};\r\n\r\nconst getOptions = (searchTerm: string | null) => {\r\n let items = enumToEntityArray(PaymentMethods);\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\n\r\nexport function PaymentMethodEnumPicker(props: PaymentMethodEnumPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * SamplePlatePicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ISamplePlateDto } from 'api/odata/generated/entities/ISamplePlateDto';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { EditorProps } from 'app/pages/Samples/EditableTable/EditableCell';\r\nimport { ISample } from 'app/pages/Samples/SamplesListPage/slice/types';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface SamplePlatePickerProps\r\n extends Omit<\r\n AutocompletePickerProps>,\r\n 'loadData' | 'onChange' | 'onBlur' | 'value' | 'name' | 'error'\r\n >,\r\n EditorProps {\r\n serviceGroupId?: number;\r\n placeholder?: string;\r\n helperText?: string;\r\n values?: ISample;\r\n}\r\n\r\nconst url = '/api/odata/v4/SamplePlates';\r\nexport const initSamplePlateData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (serviceGroupId?: number) => (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string; $select: string } = {\r\n $orderby: 'Id asc',\r\n $select: 'Id',\r\n };\r\n const predicates: Condition[] = [\r\n new Condition('Active', ODataOperators.Equals, true),\r\n ];\r\n if (serviceGroupId !== undefined && serviceGroupId !== null) {\r\n predicates.push(\r\n new Condition('ServiceGroupId', ODataOperators.Equals, serviceGroupId),\r\n );\r\n }\r\n params.$filter = new ODataFilterBuilder({\r\n predicates,\r\n stringColumns: ['Id'],\r\n stringSearch: searchTerm ?? undefined,\r\n }).toString();\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response =>\r\n response.value.map(item => ({ Id: item.Id, Name: item.Id })),\r\n );\r\n};\r\nexport function SamplePlatePicker({\r\n parentValue,\r\n serviceGroupId,\r\n value,\r\n values,\r\n onChange,\r\n ...props\r\n}: SamplePlatePickerProps) {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const loadDatax = React.useCallback(loadData(values?.ServiceGroupId), [\r\n values?.serviceGroupId,\r\n ]);\r\n const S2Value = value === null ? null : { Id: value, Name: value };\r\n return (\r\n onChange(value?.Id ?? null)}\r\n value={S2Value}\r\n {...props}\r\n />\r\n );\r\n}\r\n","/**\r\n *\r\n * SamplePlatePositionPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ISamplePlateDto } from 'api/odata/generated/entities/ISamplePlateDto';\r\nimport { SamplePlatePositionNamingTypes } from 'api/odata/generated/enums/SamplePlatePositionNamingTypes';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { EditorProps } from 'app/pages/Samples/EditableTable/EditableCell';\r\nimport {\r\n ISample,\r\n ISampleRun,\r\n} from 'app/pages/Samples/SamplesListPage/slice/types';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface SamplePlatePositionPickerProps\r\n extends Omit<\r\n AutocompletePickerProps>,\r\n 'loadData' | 'onChange' | 'onBlur' | 'value' | 'name' | 'error'\r\n >,\r\n EditorProps {\r\n serviceGroupId?: number;\r\n placeholder?: string;\r\n helperText?: string;\r\n values?: ISample | ISampleRun;\r\n}\r\n\r\nfunction range(x) {\r\n return Array.apply(null, Array(x)).map(function (x, i) {\r\n return i;\r\n });\r\n}\r\nconst loadData =\r\n (plateId?: string | null) =>\r\n async (searchTerm: string | null): Promise[]> => {\r\n const plate = await httpClient.get(\r\n `/api/odata/v4/sampleplates('${plateId}')`,\r\n );\r\n\r\n const rowsCount = plate.SamplePlateTypeRows;\r\n const columnsCount = plate.SamplePlateTypeColumns;\r\n const rows = range(columnsCount)\r\n .map(i =>\r\n plate.SamplePlateTypeColumnsNaming ===\r\n SamplePlatePositionNamingTypes.Alpha\r\n ? String.fromCharCode(65 + i)\r\n : i + 1,\r\n )\r\n .flatMap(column =>\r\n range(rowsCount)\r\n .map(i =>\r\n plate.SamplePlateTypeRowsNaming ===\r\n SamplePlatePositionNamingTypes.Alpha\r\n ? String.fromCharCode(65 + i)\r\n : i + 1,\r\n )\r\n .map(row => `${column}${row}`),\r\n );\r\n const options = rows.map(a => ({ Id: a, Name: a }));\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return options.filter(\r\n f =>\r\n f.Name.toLowerCase().startsWith(searchTerm.toLowerCase()) ||\r\n f.Name.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1,\r\n );\r\n }\r\n return options;\r\n };\r\n\r\nexport interface ConnectedSamplePlatePositionPickerProps\r\n extends SamplePlatePositionPickerProps {\r\n samplePlateId: string | null;\r\n}\r\nexport function SamplePlatePositionPicker({\r\n serviceGroupId,\r\n samplePlateId,\r\n value,\r\n values,\r\n onChange,\r\n ...props\r\n}: ConnectedSamplePlatePositionPickerProps) {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const loadDatax = React.useCallback(loadData(samplePlateId), [\r\n samplePlateId,\r\n serviceGroupId,\r\n ]);\r\n const S2Value = value === null ? null : { Id: value, Name: value };\r\n return (\r\n onChange(value?.Id ?? null)}\r\n value={S2Value}\r\n {...props}\r\n />\r\n );\r\n}\r\nexport function TargetSamplePlatePositionPicker({\r\n values,\r\n ...props\r\n}: SamplePlatePositionPickerProps) {\r\n const samplePlateId = (values as ISampleRun)?.TargetPlateId ?? null;\r\n return ;\r\n}\r\n\r\nexport function SourceSamplePlatePositionPicker({\r\n values,\r\n ...props\r\n}: SamplePlatePositionPickerProps) {\r\n const samplePlateId = (values as ISample)?.SamplePlateId ?? null;\r\n const { t } = useTranslation();\r\n React.useEffect(() => {\r\n if (samplePlateId === null && props.value !== null) {\r\n props.onChange(null);\r\n }\r\n }, [props, samplePlateId]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n return (\r\n \r\n );\r\n}\r\n","import { PopupImport } from 'app/components/PopupImport';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useRequestSamplesSlice } from '../RequestSamplesPage/slice';\r\nimport { selectImportState } from '../RequestSamplesPage/slice/selectors';\r\n\r\nexport interface ImportButtonProps {\r\n onDownloadTemplateButtonClick?: () => Promise;\r\n disabled?: boolean;\r\n hideImportButton?: boolean;\r\n serviceRequestId?: number;\r\n}\r\n\r\nexport function ImportButton({\r\n onDownloadTemplateButtonClick,\r\n disabled,\r\n hideImportButton,\r\n serviceRequestId,\r\n}: ImportButtonProps) {\r\n const dispatch = useDispatch();\r\n const { actions } = useRequestSamplesSlice();\r\n const state = useSelector(selectImportState);\r\n\r\n const handleConfirm = (_: React.MouseEvent, file: any) => {\r\n if (file !== undefined) {\r\n dispatch(\r\n actions.import({\r\n file: file,\r\n serviceRequestId:\r\n serviceRequestId === undefined ? 0 : serviceRequestId,\r\n }),\r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n dispatch(actions.toggleImport(true))}\r\n onConfirm={handleConfirm}\r\n onCancel={() => dispatch(actions.toggleImport(false))}\r\n open={state.open}\r\n processing={state.processing}\r\n accept=\".xlsx\"\r\n hideImportButton={hideImportButton}\r\n variant=\"white\"\r\n onDownloadTemplateButtonClick={onDownloadTemplateButtonClick}\r\n />\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { LocationPicker } from '../pickers/AutocompletePickers/LocationPicker';\r\nimport { ILocationListDto } from 'api/odata/generated/entities/ILocationListDto';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport const FormLocationPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n IFieldProps & {\r\n label?: string;\r\n fullWidth: boolean;\r\n autoFocus?: boolean;\r\n name: string;\r\n placeholder: string;\r\n disabled?: boolean;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n }) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n {\r\n props.onChange?.(value);\r\n helpers.setValue(value, true);\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value as ILocationListDto}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n variant={props.variant}\r\n predicates={props.predicates}\r\n info={props.info}\r\n />\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * PriceSheetMethodPicker\r\n *\r\n */\r\n\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { PriceSheetBy } from 'enums/enums';\r\nimport { Entity } from 'types/common';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface PriceSheetMethodPickerProps\r\n extends Omit>, 'getOptions'> {}\r\n\r\nexport const getSinglePriceSheetMethod = (val: number): Entity => {\r\n return enumToEntityArray(PriceSheetBy).filter(item => {\r\n return item.Id === val;\r\n })[0];\r\n};\r\n\r\nexport const PriceSheetMethodData = (\r\n initval: number | string | undefined,\r\n): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve(\r\n enumToEntityArray(PriceSheetBy).filter(item => {\r\n return item.Id.toString() === initval;\r\n }),\r\n );\r\n });\r\n }\r\n};\r\n\r\nconst getOptions = (searchTerm: string | null) => {\r\n let items = enumToEntityArray(PriceSheetBy);\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n};\r\n\r\nexport function PriceSheetMethodPicker(props: PriceSheetMethodPickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","import useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport React from 'react';\r\nimport { RegionDetailsProps } from './RegionsDetailsPage/Details';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { IRegionDto } from './IRegionDto';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nexport interface RegionLinkProps {\r\n id: number;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n initialModel?: IRegionDto;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}\r\n\r\nexport const RegionLink = (props: RegionLinkProps) => {\r\n const { t } = useTranslation();\r\n const openRegion = useOpenRegionPopUp();\r\n\r\n const open = () => {\r\n openRegion(\r\n {\r\n id: props.id,\r\n useSidePanel: props.useSidePanel,\r\n initialModel: props.initialModel,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const useOpenRegionPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n\r\n return React.useCallback(\r\n (\r\n props: { id: number; useSidePanel?: boolean; initialModel?: IRegionDto },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n const identifier = props.id;\r\n if (identifier !== undefined) {\r\n const popupProps: RegionDetailsProps = {\r\n id: '' + props.id,\r\n initialModel: props.initialModel,\r\n useSidePanel: props.useSidePanel ?? false,\r\n };\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover({\r\n renderPageType: RenderPageType.RegionDetails,\r\n renderPageProps: popupProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n });\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.RegionDetails,\r\n renderPageProps: popupProps,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n }\r\n },\r\n [openPanel],\r\n );\r\n};\r\n","import { Entity } from 'types/common';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\n\r\nconst SourceUrl = '/api/odata/v4/ServiceRequestList';\r\nexport const ServiceRequestsApi = {\r\n UpdateStatuses: (status: Entity | null, ids: number[]) => {\r\n const data = {\r\n status: status?.Name,\r\n ids,\r\n };\r\n const url = SourceUrl + '/UpdateStatuses';\r\n return httpClient.post(url, data);\r\n },\r\n DeleteRequests: (ids: number[]) => {\r\n const data = { ids };\r\n const url = SourceUrl + '/DeleteRequests';\r\n return httpClient.post(url, data);\r\n },\r\n AddRequest: (\r\n osid: number,\r\n budgetId: number,\r\n userName: string,\r\n userGroupId: string | undefined,\r\n fundingTypeId: number | null,\r\n purchaseOrder: string | null,\r\n ): Promise => {\r\n const data = {\r\n osid,\r\n budgetId,\r\n userName,\r\n userGroupId,\r\n fundingTypeId,\r\n purchaseOrder,\r\n };\r\n const url = SourceUrl + '/AddRequest';\r\n return httpClient.post(url, data);\r\n },\r\n updateAdminOnComment: async (id: number) => {\r\n const url = SourceUrl + '/UpdateAdminOnComment';\r\n try {\r\n await httpClient.post(url, { id });\r\n } catch {}\r\n },\r\n};\r\n","import { IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { isEmptyOrWhitespace } from 'utils/typeUtils';\r\n\r\nexport function DefaultFilter(user: IAuthenticatedUser) {\r\n const result = new URLSearchParams();\r\n\r\n result.set('active', true.toString());\r\n\r\n return result;\r\n}\r\nexport function getRequiredFilter(search: string) {\r\n const result = isEmptyOrWhitespace(search)\r\n ? new URLSearchParams()\r\n : new URLSearchParams(search);\r\n if (\r\n result.has('active') === false ||\r\n result.get('active') === null ||\r\n result.get('active') === ''\r\n ) {\r\n result.set('active', true.toString());\r\n }\r\n const res = result.toString();\r\n return isEmptyOrWhitespace(res) ? undefined : res;\r\n}\r\n","import { CellProps, Renderer } from 'react-table';\r\nimport { AlignRight } from '../AlignRight';\r\n\r\ntype RecordType = Record;\r\nconst DecimalRenderer: Renderer> = ({ value, row }) => (\r\n {value == null ? null : value.toFixed(2)}\r\n);\r\nexport default DecimalRenderer;\r\n","/**\r\n *\r\n * ServiceTypeEnumPicker\r\n *\r\n */\r\n\r\nimport {\r\n BaseOptionsPicker,\r\n BaseOptionsPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsPicker';\r\nimport { selectAppSettings } from 'app/slice/selectors';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { useSelector } from 'react-redux';\r\nimport { AppSettings, IsModuleEnabled } from 'types/AppSettings';\r\nimport { Entity } from 'types/common';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\n\r\nexport interface ServiceTypeEnumPickerProps\r\n extends Omit>, 'getOptions'> {}\r\n\r\nexport const getSingleServiceTypeEnum = (val: number): Entity => {\r\n return enumToEntityArray(ServiceType, undefined, 'ServiceType_').filter(\r\n item => {\r\n return item.Id === val;\r\n },\r\n )[0];\r\n};\r\n\r\nexport const initServiceTypeEnumData = (\r\n initval: string | undefined,\r\n): Promise[]> => {\r\n const val = parseInt(initval ?? '');\r\n if (initval === undefined || isNaN(val)) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([getSingleServiceTypeEnum(val)]);\r\n });\r\n }\r\n};\r\nexport const GetAvailableServiceTypes = (\r\n items: Entity[],\r\n appSettings: AppSettings | null,\r\n) => {\r\n return items.filter(f => {\r\n if (f.Id === ServiceType.Offline) {\r\n return IsModuleEnabled(appSettings, KnownModules.OfflineServices);\r\n }\r\n if (f.Id === ServiceType.Sample) {\r\n return IsModuleEnabled(appSettings, KnownModules.ServiceRequests);\r\n }\r\n if (f.Id === ServiceType.Online) {\r\n return IsModuleEnabled(appSettings, KnownModules.Instruments);\r\n }\r\n return false;\r\n });\r\n};\r\nexport function ServiceTypeEnumPicker(props: ServiceTypeEnumPickerProps) {\r\n const appSettings = useSelector(selectAppSettings);\r\n const getOptions = (searchTerm: string | null) => {\r\n let items = GetAvailableServiceTypes(\r\n enumToEntityArray(ServiceType, undefined, 'ServiceType_'),\r\n appSettings,\r\n );\r\n\r\n if (searchTerm !== null && searchTerm !== '') {\r\n return items.filter(\r\n f => f.Name.startsWith(searchTerm) || f.Name.indexOf(searchTerm) !== -1,\r\n );\r\n }\r\n return items;\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { IServiceRequestStatusDto } from 'api/odata/generated/entities/IServiceRequestStatusDto';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\n\r\nconst url = '/api/odata/v4/ServiceRequestStatusFilter';\r\n\r\nexport interface ServiceRequestStatusPickerProps\r\n extends Omit, 'loadData'> {\r\n predicates?: (string | Condition)[];\r\n}\r\n\r\nexport const initServiceRequestStatusData = (\r\n initialValue: string | undefined,\r\n) => {\r\n if (initialValue === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IServiceRequestStatusDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initialValue);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as IServiceRequestStatusDto[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates?: (string | Condition)[],\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url: url,\r\n predicates: predicates,\r\n // all props of the IAssetDto are listed due to potential use of thes somewhere\r\n // TODO: narrow down used properties list\r\n select: ['Id', 'Name', 'InternalStatusId'],\r\n });\r\n\r\nexport function ServiceRequestStatusPicker(\r\n props: ServiceRequestStatusPickerProps,\r\n) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * DialogForm\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Form, Formik, FormikConfig, FormikProps, FormikValues } from 'formik';\r\nimport { BasicDialogContent } from 'app/components/BasicDialog/BasicDialogContent';\r\nimport { BasicDialogTitle } from 'app/components/BasicDialog/BasicDialogTitle';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Dialog, DialogActions, DialogProps } from '@material-ui/core';\r\nimport { FormRowProps } from '../Forms/FormsLayout/FormRow';\r\n\r\nexport interface DialogFormProps\r\n extends Pick<\r\n FormikConfig,\r\n 'onSubmit' | 'initialValues' | 'validationSchema'\r\n >,\r\n Pick {\r\n /**\r\n * overrides Dialog's onClose to simplify the function signature since the event target & close reason is not in use currently\r\n * @returns\r\n */\r\n onClose: () => void;\r\n title: string;\r\n subTitle?: string;\r\n /**\r\n * Children have to be of type due to layout constraints\r\n */\r\n children:\r\n | Array>\r\n | React.ReactElement;\r\n}\r\n\r\n/**\r\n * Dialog with a form inside the DialogContent. Useful in cases where a confirmation is needed alongside another input from the user.\r\n * For example, quote rejection that requires a confirmation dialog with a reason for rejection, or an entity is added/updated through a dialog UI.\r\n * Props largely composed from a minimum viable props set from Formik & Dialog.\r\n * Children are expected to \r\n * @example\r\n * \r\n \r\n \r\n \r\n \r\n * @param props\r\n * @returns\r\n */\r\nexport function DialogForm(props: DialogFormProps) {\r\n return (\r\n \r\n \r\n {formik => }\r\n \r\n \r\n );\r\n}\r\nfunction FormContent(\r\n props: DialogFormProps & FormikProps,\r\n) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
    \r\n \r\n {props.title}\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n \r\n \r\n {t(translations.Submit)}\r\n \r\n \r\n
    \r\n );\r\n}\r\n","import { Link } from 'app/components/ExternalLink';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { IAuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { GlobalSettings } from 'utils/globalSettings';\r\nimport { IReservationHistoryDto } from 'api/odata/generated/entities/IReservationHistoryDto';\r\nimport { Column } from 'react-table';\r\nimport DurationRenderer from 'app/components/BasicTable/CellRenderers/DurationRenderer';\r\nimport AssetRenderer from 'app/components/BasicTable/CellRenderers/AssetRenderer';\r\nimport BookedByRenderer from 'app/components/BasicTable/CellRenderers/BookedByRenderer';\r\nimport BooleanRenderer from 'app/components/BasicTable/CellRenderers/BooleanRenderer';\r\nimport { Fragment } from 'react';\r\nimport { Guid } from 'guid-typescript';\r\nimport { DateLabel } from 'app/components/DateLabel.tsx';\r\nimport { roundTwoPlacesAfterDecimalPoint } from 'utils/number-utils';\r\nimport DateTimeRenderer from 'app/components/BasicTable/CellRenderers/DateTimeRenderer';\r\nimport { SidePanelOpenState } from 'app/hooks/useSidePanelOpen';\r\nimport { ReservationLink } from '../Actions/GlobalSelectedActions/OpenReservation';\r\nimport React from 'react';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport { ReferenceType } from 'enums/ReferenceType';\r\nimport ReservationStatusRenderer from 'app/components/BasicTable/CellRenderers/ReservationStatusRenderer';\r\n\r\nexport function getColumns(\r\n t: TFunction,\r\n user: IAuthenticatedUser | undefined,\r\n settings: GlobalSettings,\r\n allowedToView: (row: IReservationHistoryDto) => boolean,\r\n useSidePanel?: boolean,\r\n openSidePanel?: (state: SidePanelOpenState) => void,\r\n) {\r\n if (user === undefined) {\r\n return [];\r\n }\r\n\r\n const result: Column[] = [\r\n {\r\n Header: t(translations.Id) as string,\r\n accessor: 'Id',\r\n Cell: ({ value, row: { original } }) =>\r\n allowedToView(original) ? (\r\n \r\n {useSidePanel && openSidePanel ? (\r\n \r\n {value}\r\n \r\n ) : (\r\n {value}\r\n )}\r\n \r\n ) : (\r\n {value}\r\n ),\r\n },\r\n {\r\n Header: t(translations.EquipmentName) as string,\r\n accessor: 'EquipmentName',\r\n Cell: AssetRenderer,\r\n },\r\n {\r\n Header: t(translations.AvailabilityType) as string,\r\n accessor: 'AvailabilityType',\r\n },\r\n {\r\n Header: t(translations.StartTime) as string,\r\n accessor: 'StartTime',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.EndTime) as string,\r\n accessor: 'EndTime',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.UsageStartTime) as string,\r\n accessor: 'UsageStartTime',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.UsageEndTime) as string,\r\n accessor: 'UsageEndTime',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.OngoingUsage) as string,\r\n accessor: 'OngoingUsage',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.Status) as string,\r\n accessor: 'Status',\r\n Cell: ReservationStatusRenderer,\r\n },\r\n {\r\n Header: t(translations.DurationH) as string,\r\n accessor: 'DurationH',\r\n Cell: ({ value }) => {\r\n if (value) return <> {roundTwoPlacesAfterDecimalPoint(value)} ;\r\n return <>;\r\n },\r\n },\r\n {\r\n Header: t(translations.DurationT) as string,\r\n accessor: 'DurationT',\r\n Cell: DurationRenderer,\r\n },\r\n {\r\n Header: t(translations.AccService) as string,\r\n accessor: 'AccService',\r\n },\r\n {\r\n Header: t(translations.RecordDate) as string,\r\n accessor: 'RecordDate',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetNumber) as string,\r\n accessor: 'BudgetNumber',\r\n },\r\n {\r\n Header: t(translations.CancelledBefore) as string,\r\n accessor: 'CancelledBefore',\r\n Cell: DurationRenderer,\r\n /* Cell: ({ value }) =>\r\n value === undefined\r\n ? 'N/A'\r\n : dateUtils.HoursMinutesSecondsFormat(value), */\r\n },\r\n {\r\n Header: t(translations.BudgetTaskName) as string,\r\n accessor: 'BudgetTaskName',\r\n },\r\n {\r\n Header: t(translations.UserGroup) as string,\r\n accessor: 'ADGroupDisplayName',\r\n Cell: ({ value, row }) => {\r\n if (user.Roles.includes(Roles.Administrators)) {\r\n return (\r\n <>\r\n \r\n {value}\r\n \r\n \r\n );\r\n } else {\r\n return <> {value} ;\r\n }\r\n },\r\n },\r\n {\r\n Header: t(translations.BookedBy) as string,\r\n accessor: 'BookedBy',\r\n Cell: BookedByRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetExperiment) as string,\r\n accessor: 'BudgetExperimentName',\r\n },\r\n {\r\n Header: t(translations.Remarks) as string,\r\n accessor: 'Remarks',\r\n // Cell: DescriptonCell({ width: 30 }),\r\n },\r\n {\r\n Header: t(translations.NumberOfUsages) as string,\r\n accessor: 'NumberOfUsages',\r\n },\r\n {\r\n Header: t(translations.LastModifiedAt) as string,\r\n accessor: 'LastModifiedAt',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.WorkflowBookingName) as string,\r\n accessor: 'WorkflowBookingName',\r\n },\r\n {\r\n Header: t(translations.ServiceGroup) as string,\r\n accessor: 'ServiceGroup',\r\n },\r\n {\r\n Header: t(translations.BudgetInternalId) as string,\r\n accessor: 'BudgetInternalId',\r\n },\r\n {\r\n Header: t(translations.RemainingDurationD) as string,\r\n accessor: 'RemainingDurationD',\r\n },\r\n {\r\n Header: t(translations.BookedById) as string,\r\n accessor: 'BookedById',\r\n },\r\n {\r\n Header: t(translations.FullDayReservation) as string,\r\n accessor: 'FullDayReservation',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.ADGroup) as string,\r\n accessor: 'ADGroup',\r\n },\r\n {\r\n Header: t(translations.Tutoring) as string,\r\n accessor: 'Tutoring',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.UserEmail) as string,\r\n accessor: 'UserEmail',\r\n },\r\n {\r\n Header: t(translations.Loanable) as string,\r\n accessor: 'Loanable',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.TrainingSignUp) as string,\r\n accessor: 'TrainingSignUp',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetRemarks) as string,\r\n accessor: 'BudgetRemarks',\r\n },\r\n {\r\n Header: t(translations.UserGroupMail) as string,\r\n accessor: 'UserGroupMail',\r\n },\r\n {\r\n Header: t(translations.InsertedBy) as string,\r\n accessor: 'InsertedBy',\r\n },\r\n {\r\n Header: t(translations.LastUpdateAdmin) as string,\r\n accessor: 'LastUpdateAdmin',\r\n },\r\n {\r\n Header: t(translations.DivisionDescription) as string,\r\n accessor: 'DivisionDescription',\r\n },\r\n {\r\n Header: t(translations.Division) as string,\r\n accessor: 'Division',\r\n },\r\n {\r\n Header: t(translations.AssetId) as string,\r\n accessor: 'AssetId',\r\n },\r\n {\r\n Header: t(translations.BudgetFund) as string,\r\n accessor: 'BudgetFund',\r\n },\r\n {\r\n Header: t(translations.AssetInternalCode) as string,\r\n accessor: 'AssetInternalCode',\r\n },\r\n {\r\n Header: t(translations.AssetRoom) as string,\r\n accessor: 'AssetRoom',\r\n },\r\n {\r\n Header: t(translations.AssetDescription) as string,\r\n accessor: 'AssetDescription',\r\n },\r\n {\r\n Header: t(translations.AssetModel) as string,\r\n accessor: 'AssetModel',\r\n },\r\n {\r\n Header: t(translations.AssetModelNumber) as string,\r\n accessor: 'AssetModelNumber',\r\n },\r\n {\r\n Header: t(translations.TotalReservations) as string,\r\n accessor: 'TotalReservations',\r\n },\r\n {\r\n Header: t(translations.ServiceType) as string,\r\n accessor: 'ServiceType',\r\n },\r\n {\r\n Header: t(translations.Institute) as string,\r\n accessor: 'Institute',\r\n },\r\n {\r\n Header: t(translations.InstituteType) as string,\r\n accessor: 'InstituteType',\r\n },\r\n {\r\n Header: t(translations.Department) as string,\r\n accessor: 'Department',\r\n },\r\n {\r\n Header: t(translations.Units) as string,\r\n accessor: 'Units',\r\n },\r\n {\r\n Header: t(translations.BudgetInitialCost) as string,\r\n accessor: 'BudgetInitialCost',\r\n Cell: ({ value }) => {\r\n if (value) return <> {roundTwoPlacesAfterDecimalPoint(value)} ;\r\n return <>;\r\n },\r\n },\r\n {\r\n Header: t(translations.BudgetLeader) as string,\r\n accessor: 'BudgetLeader',\r\n },\r\n {\r\n Header: t(translations.BudgetExternalUpdatedAt) as string,\r\n accessor: 'BudgetExternalUpdatedAt',\r\n },\r\n {\r\n Header: t(translations.BudgetExternalEndDate) as string,\r\n accessor: 'BudgetExternalEndDate',\r\n },\r\n {\r\n Header: t(translations.BudgetIsOnline) as string,\r\n accessor: 'BudgetIsOnline',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetEndDate) as string,\r\n accessor: 'BudgetEndDate',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetStartDate) as string,\r\n accessor: 'BudgetStartDate',\r\n Cell: DateTimeRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetHideExperiments) as string,\r\n accessor: 'BudgetHideExperiments',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetManager) as string,\r\n accessor: 'BudgetManager',\r\n },\r\n {\r\n Header: t(translations.BudgetSubsProfCostCenter) as string,\r\n accessor: 'BudgetSubsProfCostCenter',\r\n },\r\n {\r\n Header: t(translations.BudgetSubsProfProjectNumber) as string,\r\n accessor: 'BudgetSubsProfProjectNumber',\r\n },\r\n {\r\n Header: t(translations.FacilityProject) as string,\r\n accessor: 'FacilityProject',\r\n },\r\n {\r\n Header: t(translations.AssetCampus) as string,\r\n accessor: 'AssetCampus',\r\n },\r\n {\r\n Header: t(translations.PartialAttendanceStart) as string,\r\n accessor: 'PartialAttendanceStart',\r\n },\r\n {\r\n Header: t(translations.PartialAttendanceEnd) as string,\r\n accessor: 'PartialAttendanceEnd',\r\n },\r\n {\r\n Header: t(translations.BudgetSubsProfActivity) as string,\r\n accessor: 'BudgetSubsProfActivity',\r\n },\r\n {\r\n Header: t(translations.PartialAttendanceDuration) as string,\r\n accessor: 'PartialAttendanceDuration',\r\n },\r\n {\r\n Header: t(translations.AssetCategory) as string,\r\n accessor: 'AssetCategory',\r\n },\r\n {\r\n Header: t(translations.AssetCategoryGroup) as string,\r\n accessor: 'AssetCategoryGroup',\r\n },\r\n {\r\n Header: t(translations.PartialAttendance) as string,\r\n accessor: 'PartialAttendance',\r\n Cell: BooleanRenderer,\r\n },\r\n {\r\n Header: t(translations.BudgetHardLimit) as string,\r\n accessor: 'BudgetHardLimit',\r\n Cell: ({ value }) => {\r\n if (value) return <> {roundTwoPlacesAfterDecimalPoint(value)} ;\r\n return <>;\r\n },\r\n },\r\n {\r\n Header: t(translations.BudgetSoftLimit) as string,\r\n accessor: 'BudgetSoftLimit',\r\n Cell: ({ value }) => {\r\n if (value) return <> {roundTwoPlacesAfterDecimalPoint(value)} ;\r\n return <>;\r\n },\r\n },\r\n {\r\n Header: t(translations.BudgetAmount) as string,\r\n accessor: 'BudgetAmount',\r\n Cell: ({ value }) => {\r\n if (value) return <> {roundTwoPlacesAfterDecimalPoint(value)} ;\r\n return <>;\r\n },\r\n },\r\n {\r\n Header: t(translations.AssetBuilding) as string,\r\n accessor: 'AssetBuilding',\r\n },\r\n {\r\n Header: t(translations.StaffUser) as string,\r\n accessor: 'StaffUser',\r\n },\r\n {\r\n Header: t(translations.ServiceActivityCode) as string,\r\n accessor: 'ServiceActivityCode',\r\n },\r\n {\r\n Header: t(translations.AssetBrandCode) as string,\r\n accessor: 'AssetBrandCode',\r\n },\r\n {\r\n Header: t(translations.Year) as string,\r\n accessor: 'Year',\r\n },\r\n {\r\n Header: t(translations.Month) as string,\r\n accessor: 'Month',\r\n },\r\n {\r\n Header: t(translations.WeekNumber) as string,\r\n accessor: 'WeekNumber',\r\n },\r\n {\r\n Header: t(translations.UserDiscipline) as string,\r\n accessor: 'UserDiscipline',\r\n },\r\n {\r\n Header: t(translations.ServiceGroupAdminEmail) as string,\r\n accessor: 'ServiceGroupAdminEmail',\r\n },\r\n {\r\n Header: t(translations.CollaboratorUsers) as string,\r\n accessor: 'CollaboratorUsers',\r\n Cell: ({ value }) => {\r\n if (value) {\r\n let result = value.map(item => {\r\n return (\r\n \r\n {item}\r\n
    \r\n
    \r\n );\r\n });\r\n if (result) return <>{result};\r\n }\r\n return t(translations.NA) as string;\r\n },\r\n },\r\n {\r\n Header: t(translations.BudgetBudget) as string,\r\n accessor: 'BudgetBudget',\r\n },\r\n {\r\n Header: t(translations.StartDate) as string,\r\n accessor: 'StartDate',\r\n Cell: ({ value }) => ,\r\n },\r\n {\r\n Header: t(translations.EndDate) as string,\r\n accessor: 'EndDate',\r\n Cell: ({ value }) => ,\r\n },\r\n {\r\n Header: t(translations.BudgetPercent) as string,\r\n accessor: 'BudgetPercent',\r\n },\r\n {\r\n Header: t(translations.Charges) as string,\r\n accessor: 'Charges',\r\n Cell: ({ value, row }) =>\r\n !!value && value !== null ? (\r\n \r\n {roundTwoPlacesAfterDecimalPoint(value)}\r\n \r\n ) : null,\r\n },\r\n ];\r\n return result;\r\n}\r\n","import { IReservationHistoryDto } from 'api/odata/generated/entities/IReservationHistoryDto';\r\nimport { BasicTable, BasicTableProps } from 'app/components/BasicTable';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport function ReservationHistoryTable<\r\n TProps extends Omit<\r\n BasicTableProps,\r\n | 'api'\r\n | 'additionalColumns'\r\n | 'searchColumns'\r\n | 'screenName'\r\n | 'expandedColumns'\r\n >,\r\n>({\r\n initialState,\r\n rowActions,\r\n serviceGroups,\r\n savedListSettings,\r\n ...props\r\n}: TProps) {\r\n const { t } = useTranslation();\r\n const newProps = React.useMemo(() => {\r\n const p = { ...props };\r\n Reflect.deleteProperty(p, 'api');\r\n return p;\r\n }, [props]);\r\n const addColumns = React.useMemo<(keyof IReservationHistoryDto)[]>(() => {\r\n const cols: (keyof IReservationHistoryDto)[] = [\r\n 'Id',\r\n 'AssetId',\r\n 'ServiceGroupId',\r\n 'LastUpdateAdminId',\r\n 'InsertedById',\r\n 'AvailabilityTypeId',\r\n 'SessionId',\r\n 'AssetCatId',\r\n 'AssetGroupId',\r\n 'BudgetId',\r\n 'BudgetExperimentId',\r\n 'BookedById',\r\n 'BudgetExperimentId',\r\n 'EquipmentId',\r\n 'InstituteTypeId',\r\n 'DepartmentId',\r\n 'InstituteId',\r\n 'AssetCampusId',\r\n 'StaffUserId',\r\n 'AssetRoomId',\r\n 'AssetBuildingId',\r\n 'UserDisciplineId',\r\n 'TopAssemblyReservationId',\r\n 'ServiceRequestIds',\r\n 'RowsRequestIds',\r\n ];\r\n return cols;\r\n }, []);\r\n const url = '/api/odata/v4/ReservationHistory';\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n","import useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { selectPublicUrl } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { OfflineTypeRefsQueryParams } from 'app/pages/OfflineTypeReferencesDetails/Details/slice/types';\r\nimport { OfflineTypeReferencesDetailsProps } from 'app/pages/OfflineTypeReferencesDetails/Details';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nexport const OfflineTypeRefsLink = (props: {\r\n id?: number;\r\n children: React.ReactNode;\r\n refId?: number;\r\n refTypeId?: number;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n onCloseRefs?: () => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const openDetails = useOpenOfflineRefsPopUp();\r\n const getLink = useOfflineRefsLinkUrl();\r\n const link = getLink({\r\n id: String(props.id),\r\n refId: String(props.refId),\r\n refTypeId: String(props.refTypeId),\r\n });\r\n const open = React.useCallback(() => {\r\n openDetails(\r\n {\r\n id: props.id,\r\n useSidePanel: props.useSidePanel,\r\n refId: props.refId,\r\n refTypeId: props.refTypeId,\r\n },\r\n props.openPanelWithCover,\r\n props.onCloseRefs,\r\n );\r\n }, [\r\n openDetails,\r\n props.id,\r\n props.onCloseRefs,\r\n props.openPanelWithCover,\r\n props.refId,\r\n props.refTypeId,\r\n props.useSidePanel,\r\n ]);\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const useOpenOfflineRefsPopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n return React.useCallback(\r\n (\r\n props: {\r\n id?: number;\r\n useSidePanel?: boolean;\r\n refId?: number;\r\n refTypeId?: number;\r\n },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n onCloseRefs?: () => void,\r\n ) => {\r\n const params = {\r\n id: String(props.id),\r\n refId: String(props.refId),\r\n refTypeId: String(props.refTypeId),\r\n } as OfflineTypeRefsQueryParams;\r\n let resProps = {\r\n queryParams: params,\r\n useSidePanel: true,\r\n onCloseRefs: onCloseRefs,\r\n } as OfflineTypeReferencesDetailsProps;\r\n\r\n const panelState = {\r\n renderPageType: RenderPageType.OfflineTypeRefDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.OfflineTypeRefDetails,\r\n renderPageProps: resProps,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [openPanel],\r\n );\r\n};\r\nexport const useOfflineRefsLinkUrl = () => {\r\n const publicUrl = useSelector(selectPublicUrl);\r\n\r\n return React.useCallback(\r\n (params: OfflineTypeRefsQueryParams) => {\r\n return buildURL(publicUrl + 'ServiceRelatedRefs/details', params);\r\n },\r\n [publicUrl],\r\n );\r\n};\r\n","export enum MinTimeAheadPeriodTypes {\r\n Hours = 0,\r\n Days = 1,\r\n}\r\n","import { httpClient } from './HttpClient';\r\n\r\nconst url = '/api/odata/v4/Restrictions';\r\n\r\nexport const RestrictionsApi = {\r\n getRestrictionByService: (id: number | undefined) => {\r\n return httpClient.get(url + '/' + (id ?? -1));\r\n },\r\n};\r\n","export enum TrainingStatus {\r\n Passed = 1,\r\n Missing = 2,\r\n Expired = 3,\r\n}\r\nexport enum PrerequisiteFor {\r\n NotAllow = 0,\r\n WithinMyCore = 1,\r\n WithinCorAssetCatGroup = 2,\r\n WithinCoreAssetCat = 3,\r\n WithinSpecificCore = 4,\r\n AccrossSystem = 5,\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const AssistedRoot = styled.div`\r\n &.assisted-root {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n margin-bottom: 8px;\r\n & .assisted-list {\r\n padding: 0;\r\n margin: 0;\r\n & .assisted-list-item {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0;\r\n gap: 8px;\r\n }\r\n }\r\n }\r\n`;\r\nexport const StatusText = styled.span`\r\n .status-success {\r\n color: var(--primary-regular-c8);\r\n }\r\n .status-warning {\r\n color: var(--semantic-alert-regular-c8);\r\n }\r\n .status-danger {\r\n color: var(--semantic-danger-regular-c8);\r\n }\r\n`;\r\nexport const TrainingsWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n flex: 1 1 100%;\r\n align-items: flex-start;\r\n gap: 8px;\r\n &.short-view: {\r\n flex-direction: column;\r\n align-items: stretch;\r\n }\r\n`;\r\nexport const ApprovalRequiredLabel = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n gap: 8px;\r\n`;\r\nexport const RestrictWrapper = styled.div`\r\n height: 100%;\r\n padding: 8px 0px;\r\n`;\r\nexport const PermissionsWrapper = styled.div`\r\n &.perm-root {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n & .perm-list {\r\n padding: 0;\r\n margin: 0;\r\n & .perm-list-item {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0;\r\n gap: 8px;\r\n & .text-over {\r\n display: inline-block;\r\n white-space: pre;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 29ch;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","import { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { FormRow } from 'app/components/Forms/FormsLayout';\r\nimport { UserPicker } from 'app/components/pickers/AutocompletePickers/UserPicker';\r\nimport { IRestrictedUserPermissionResult } from 'api/odata/generated/entities/IRestrictedUserPermissionResult';\r\nimport { Entity } from 'types/common';\r\n\r\nimport { translations } from 'locales/translations';\r\nimport { FormLabelText } from 'app/components/Forms/FormLabelText';\r\nimport { Body } from 'app/components/Typography';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { BasicAlert } from 'app/components/BasicAlert';\r\nimport { SimpleList } from 'app/components/BasicList/StyledList';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { PermissionsWrapper } from './styled';\r\n\r\nexport interface UserOwnPermissionsProps {\r\n user: Entity | null;\r\n isAdmin?: boolean;\r\n onUserChange: (value: Entity | null) => void;\r\n permissions: IRestrictedUserPermissionResult[];\r\n permLoading: boolean;\r\n restrictedOption: boolean | null;\r\n EquipmentName: string;\r\n serviceGroupId: number;\r\n serviceId: number;\r\n}\r\n\r\nexport const UserOwnPermissions = React.memo(function UserOwnPermissions(\r\n props: UserOwnPermissionsProps,\r\n) {\r\n const {\r\n user,\r\n isAdmin,\r\n onUserChange,\r\n permissions,\r\n permLoading,\r\n restrictedOption,\r\n EquipmentName,\r\n serviceGroupId,\r\n serviceId,\r\n } = props;\r\n const { t } = useTranslation();\r\n const handleUserChange = React.useCallback(\r\n (value: Entity | null) => {\r\n onUserChange(value);\r\n },\r\n [onUserChange],\r\n );\r\n const userIsAdmin = React.useMemo(() => {\r\n if (user === null) {\r\n return false;\r\n } else {\r\n return (\r\n (user as IUserFilterDto)?.ServiceGroupIds?.some(\r\n f => f === serviceGroupId,\r\n ) ||\r\n (user as IUserFilterDto)?.Services?.some(f => f.Id === serviceId) ||\r\n (user as IUserFilterDto)?.IsAdminPanel\r\n );\r\n }\r\n }, [serviceGroupId, serviceId, user]);\r\n return (\r\n \r\n {isAdmin && (\r\n \r\n handleUserChange(value)}\r\n selectArray={[\r\n 'Id',\r\n 'Name',\r\n 'UserGroups',\r\n 'Budgets',\r\n 'IsAdminPanel',\r\n 'IsEquipmentAdmin',\r\n 'IsGroupAdmin',\r\n 'IsLabTech',\r\n 'Services',\r\n 'ServiceGroupIds',\r\n ]}\r\n />\r\n \r\n )}\r\n\r\n {user !== null && (\r\n \r\n \r\n {permLoading ? (\r\n \r\n \r\n \r\n \r\n ) : restrictedOption === null && !userIsAdmin ? (\r\n \r\n ) : permissions.length > 0 ? (\r\n
    \r\n {permissions.filter(x => x.Valid === true).length > 0 && (\r\n \r\n \r\n {'Allowed on:'}\r\n \r\n \r\n {permissions\r\n .filter(x => x.Valid === true)\r\n .map(item => (\r\n \r\n \r\n \r\n \r\n {`${item.PermissionName} - ${item.TimeSlotTypeName}`}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n {permissions.filter(x => x.Valid === false).length > 0 && (\r\n \r\n \r\n {'Not allowed on:'}\r\n \r\n \r\n {permissions\r\n .filter(x => x.Valid === false)\r\n .map((item, index) => (\r\n \r\n \r\n \r\n \r\n {`${item.TimeSlotTypeName}`}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n
    \r\n ) : (\r\n \r\n {t(translations.NoAdditionalRestrictionsFound)}\r\n \r\n )}\r\n \r\n }\r\n />\r\n
    \r\n )}\r\n
    \r\n );\r\n});\r\n","import { httpClient } from './HttpClient';\r\n\r\nvar restUrl = '/api/odata/v4/RestrictedUserPermissions';\r\n\r\nexport const UserPermissionsApi = {\r\n getUserRestrictions: (payload: { serviceId: number; username: string }) => {\r\n return httpClient.post(restUrl + '/UserPermissions', payload);\r\n },\r\n getUserSlotPermissions: (payload: {\r\n serviceId: number;\r\n username: string;\r\n }) => {\r\n return httpClient.post(restUrl + '/UserSlotPermissions', payload);\r\n },\r\n};\r\n","import { LinearProgress } from '@material-ui/core';\r\nimport { RestrictionsApi } from 'api/RestrictionsApi';\r\nimport { BooleanRender } from 'app/components/BasicTable/components/BooleanRender';\r\nimport { FormLabelText } from 'app/components/Forms/FormLabelText';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledFormFieldsContainer,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { MinTimeAheadPeriodTypes } from 'enums/MinTimeAheadPeriodTypes';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { enumToEntityArray } from 'utils/enumKeys';\r\nimport { IRestrictions } from '../../AssetPopUp/IAsset';\r\nimport {\r\n selectAppSettings,\r\n selectAuthenticatedUser,\r\n} from 'app/slice/selectors';\r\nimport { UserOwnPermissions } from './components/UserOwnPermissions';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IAssetDto } from 'api/odata/generated/entities/IAssetDto';\r\nimport { Entity } from 'types/common';\r\nimport { IUserRestrictionsResult } from 'api/odata/generated/entities/IRestrictedUserPermissionResult';\r\nimport { Body } from 'app/components/Typography';\r\nimport { TrainingStatus } from 'enums/TrainingStatus';\r\nimport { UserPermissionsApi } from 'api/UserPermissionsApi';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport {\r\n convertAuthToIUserFilterDto,\r\n IUserFilterDto,\r\n} from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { initAssetsData } from 'app/components/pickers/MultiSelectPickers/AssetsPicker';\r\nimport { AssetPicker } from 'app/components/pickers/AutocompletePickers/AssetPicker';\r\nimport { BasicCard } from 'app/components/BasicCards';\r\nimport { getAssetImageThumbSrc } from 'app/components/AssetThumbImage/getAssetImageSrc';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { initUserData } from 'app/components/pickers/AutocompletePickers/UserPicker';\r\nimport { IsAssetImageExist } from 'types/AppSettings';\r\nimport clsx from 'clsx';\r\nimport { useOpenAssetPopUp } from 'app/pages/AssetPopUp/OpenAssetDetails';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport {\r\n ApprovalRequiredLabel,\r\n AssistedRoot,\r\n RestrictWrapper,\r\n StatusText,\r\n TrainingsWrapper,\r\n} from './components/styled';\r\nimport { SimpleList } from 'app/components/BasicList/StyledList';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\n\r\nexport interface InstrumentRestrictionsProps\r\n extends CoverProps,\r\n SidePanelContentProps {\r\n serviceId?: number;\r\n serviceGroupId?: number;\r\n initUser?: string;\r\n onClose?: () => void;\r\n showTable?: boolean;\r\n assetPickerDisabled?: boolean;\r\n withNoPadding?: boolean;\r\n useShortView?: boolean;\r\n hideEquipmentFormTitle?: boolean;\r\n withNoWrapper?: boolean;\r\n}\r\nexport interface Prerequisites {\r\n Id: number;\r\n Name: string;\r\n ServiceId: number;\r\n StatusName?: string;\r\n StatusId?: number;\r\n ImageName?: string;\r\n}\r\nexport function InstrumentRestrictions(props: InstrumentRestrictionsProps) {\r\n const {\r\n serviceId,\r\n serviceGroupId,\r\n useSidePanel,\r\n initUser,\r\n assetPickerDisabled,\r\n hideEquipmentFormTitle,\r\n withNoPadding,\r\n useShortView,\r\n isCover,\r\n closeCover,\r\n withNoWrapper,\r\n } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const authuser = useSelector(selectAuthenticatedUser);\r\n const appSettings = useSelector(selectAppSettings);\r\n //const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n const isMobile = DetectIsMobile();\r\n const [equipmentId, setEquipmentId] = React.useState(\r\n serviceId,\r\n );\r\n const [equipmentGroupId, setEquipmentGroupId] = React.useState<\r\n number | undefined\r\n >(serviceGroupId);\r\n const [selectedService, setSelectedService] =\r\n useAsyncExtendedState(null);\r\n const isAdmin = React.useMemo(() => {\r\n return (\r\n authuser !== undefined &&\r\n (authuser.HasAdminServicePermissions(ServiceType.Online, equipmentId) ||\r\n authuser.HasLabTechServicePermissions(\r\n ServiceType.Online,\r\n equipmentId,\r\n ) ||\r\n authuser?.HasAdminGroupPermissions(equipmentGroupId) ||\r\n authuser?.HasLabTechGroupPermissions(equipmentGroupId))\r\n );\r\n }, [equipmentGroupId, equipmentId, authuser]);\r\n const [selectedUser, setSelectedUser] = React.useState(\r\n !!authuser && !isAdmin\r\n ? convertAuthToIUserFilterDto(authuser)\r\n : !!initUser\r\n ? ({ Id: initUser, Name: initUser } as IUserFilterDto)\r\n : null,\r\n );\r\n const { cover, openPanel, closePanel, coverClosed, onCloseCover } =\r\n useSidePanelState();\r\n const fetchRestrictions = async (\r\n serviceId?: number,\r\n ): Promise => {\r\n return RestrictionsApi.getRestrictionByService(serviceId);\r\n };\r\n const [restrictions, setRestriction] = useAsyncExtendedState<\r\n IRestrictions | undefined\r\n >(undefined);\r\n const [fetchRestrictionsState, fetchRestrictionsPromise] =\r\n usePromise(fetchRestrictions);\r\n\r\n const [userRestrictions, setUserRestrictions] = useAsyncExtendedState<\r\n IUserRestrictionsResult | undefined\r\n >(undefined);\r\n\r\n const fetchUserRestrictions = async (\r\n user: Entity,\r\n serviceId: number,\r\n ): Promise => {\r\n return UserPermissionsApi.getUserSlotPermissions({\r\n serviceId: serviceId,\r\n username: user.Id,\r\n });\r\n };\r\n const [fetchUserRestrictionsState, fetchUserRestrictionsPromise] = usePromise(\r\n fetchUserRestrictions,\r\n );\r\n const fetchAsset = async (serviceId: number): Promise => {\r\n return initAssetsData(serviceId.toString(), true, undefined, true).then(\r\n result => result[0],\r\n );\r\n };\r\n const [fetchAssetState, fetchAssetPromise] = usePromise(fetchAsset);\r\n const openAsset = useOpenAssetPopUp();\r\n useEffectOnMount(() => {\r\n setRestriction(fetchRestrictionsPromise(equipmentId));\r\n if (isAdmin) {\r\n if (!!initUser) {\r\n (async () => {\r\n try {\r\n const data = await initUserData(initUser, 'full');\r\n if (!!data && data.length > 0) {\r\n let selected = (data[0] ?? {\r\n Id: initUser,\r\n Name: initUser,\r\n }) as IUserFilterDto;\r\n setSelectedUser(selected);\r\n setUserRestrictions(\r\n fetchUserRestrictionsPromise(selected, equipmentId || -1),\r\n );\r\n }\r\n } catch {}\r\n })();\r\n } else {\r\n setSelectedUser(null);\r\n }\r\n } else {\r\n if (selectedUser !== null) {\r\n setUserRestrictions(\r\n fetchUserRestrictionsPromise(selectedUser, equipmentId || -1),\r\n );\r\n }\r\n }\r\n if (isAdmin) {\r\n setSelectedService(fetchAssetPromise(equipmentId || -1));\r\n }\r\n\r\n return () => {};\r\n });\r\n React.useEffect(() => {\r\n const messageKey = 'QuizLoad';\r\n if (fetchRestrictionsState.error) {\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: 'Something went wrong.',\r\n key: messageKey,\r\n }),\r\n );\r\n }\r\n }, [fetchRestrictionsState.error, actions, dispatch]);\r\n const minTimeAhead = (rest: IRestrictions): string => {\r\n if (rest.MinTimeAheadPeriodValue !== null) {\r\n return `${t(translations.Before)}: ${rest.MinTimeAheadPeriodValue.toFixed(\r\n 2,\r\n )}\r\n ${(t(translations.AdvancedReservation) as string).replace(\r\n '{0}',\r\n enumToEntityArray(MinTimeAheadPeriodTypes).filter(\r\n f => f.Id === rest.MinTimeAheadPeriodType,\r\n )[0].Name,\r\n )}`;\r\n } else if (rest.MinTimeAheadMinutesSinceMidnight !== null) {\r\n const x = dateUtils.format(\r\n new Date(0, 0, 0, 0, rest.MinTimeAheadMinutesSinceMidnight),\r\n dateUtils.DateIOFormats.fullTime,\r\n );\r\n return `${t(translations.OnTheSameDay)}: ${(\r\n t(translations.ToBeBookedBy) as string\r\n ).replace('{0}', x ?? '')}`;\r\n } else {\r\n return '';\r\n }\r\n };\r\n const getStatus = React.useCallback(\r\n (asset: IAssetDto) => {\r\n let validRender =\r\n !!userRestrictions &&\r\n userRestrictions.PrerequisiteTrainingsIndicators.length > 0 &&\r\n userRestrictions.PrerequisiteTrainingsIndicators.some(\r\n f => f.Id === asset.ServiceId,\r\n );\r\n if (!!userRestrictions && validRender) {\r\n let found = userRestrictions.PrerequisiteTrainingsIndicators.find(\r\n f => f.Id === asset.ServiceId,\r\n );\r\n let status = enumToEntityArray(TrainingStatus).find(\r\n f => f.Id === found?.Status,\r\n )?.Name;\r\n let statusName = `${status} ${\r\n asset.PrerequisiteFor === 1\r\n ? ' - ( ' + t(translations.CoreWideRequirement) + ' )'\r\n : ''\r\n }`;\r\n return {\r\n StatusName: statusName,\r\n Status: found?.Status,\r\n };\r\n }\r\n return undefined;\r\n },\r\n [t, userRestrictions],\r\n );\r\n const prerequisites: Prerequisites[] = React.useMemo(() => {\r\n let results: Prerequisites[] = [];\r\n if (!!restrictions && restrictions.PrerequisiteEquipments.length > 0) {\r\n results = restrictions.PrerequisiteEquipments.map(preq => {\r\n let usrrest = getStatus(preq);\r\n return {\r\n Id: preq.Id,\r\n Name: preq.Name,\r\n ServiceId: preq.ServiceId,\r\n ImageName: preq.Image,\r\n StatusId: usrrest?.Status,\r\n StatusName: usrrest?.StatusName,\r\n } as Prerequisites;\r\n });\r\n }\r\n return results;\r\n }, [getStatus, restrictions]);\r\n\r\n // const PrerequisiteWithStatus = ({ asset }: { asset: IAssetDto }) => {\r\n // let validRender =\r\n // !!userRestrictions &&\r\n // userRestrictions.PrerequisiteTrainingsIndicators.length > 0 &&\r\n // userRestrictions.PrerequisiteTrainingsIndicators.some(\r\n // f => f.Id === asset.ServiceId,\r\n // );\r\n\r\n // if (!!userRestrictions && validRender) {\r\n // let found = userRestrictions.PrerequisiteTrainingsIndicators.find(\r\n // f => f.Id === asset.ServiceId,\r\n // );\r\n // let status = enumToEntityArray(TrainingStatus).find(\r\n // f => f.Id === found?.Status,\r\n // )?.Name;\r\n // let statusName = `${status} - ${\r\n // asset.PrerequisiteFor === 1\r\n // ? '( ' + t(translations.CoreWideRequirement) + ' )'\r\n // : ''\r\n // }`;\r\n // return (\r\n // \r\n // {cliTruncate(statusName, 25, { position: 'end' })}\r\n // \r\n // );\r\n // } else {\r\n // return <>;\r\n // }\r\n // };\r\n const handleCloselClick = React.useCallback(() => {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n } as SidePanelCloseState);\r\n }, [closePanel, isCover, useSidePanel]);\r\n const userOnChange = (value: Entity | null) => {\r\n setSelectedUser(value as IUserFilterDto);\r\n if (value === null) {\r\n setUserRestrictions(undefined);\r\n } else {\r\n setUserRestrictions(\r\n fetchUserRestrictionsPromise(value, equipmentId || -1),\r\n );\r\n }\r\n };\r\n const assetOnChange = (value: IAssetDto | null) => {\r\n setSelectedService(value);\r\n setRestriction(fetchRestrictionsPromise(value?.ServiceId ?? undefined));\r\n setSelectedUser(null);\r\n setUserRestrictions(undefined);\r\n };\r\n React.useEffect(() => {\r\n if (fetchAssetState.status !== 'pending') {\r\n setEquipmentId(selectedService?.ServiceId ?? undefined);\r\n setEquipmentGroupId(selectedService?.ServiceGroupId ?? undefined);\r\n }\r\n return () => {};\r\n }, [\r\n fetchAssetState.status,\r\n selectedService?.ServiceGroupId,\r\n selectedService?.ServiceId,\r\n ]);\r\n // const minReservationGap = (rest: IRestrictions): string => {\r\n // let gaps = [\r\n // rest.MinReservationOrderGap,\r\n // rest.UserReservationGap,\r\n // rest.UserGroupReservationGap,\r\n // rest.InstituteReservationGap,\r\n // ];\r\n // if (gaps.filter(g => g > 0).length > 0) {\r\n // return Math.min(...gaps.filter(g => g > 0)).toString();\r\n // }\r\n // return '';\r\n // };\r\n const RenderContent = () => {\r\n return fetchRestrictionsState.status === 'resolved' && !!restrictions ? (\r\n \r\n \r\n \r\n {isAdmin && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {prerequisites.length > 0 && (\r\n \r\n \r\n \r\n {t(translations.PrerequisiteTrainings)}\r\n \r\n\r\n \r\n {prerequisites.map(item => {\r\n return (\r\n \r\n \r\n {item.StatusName}\r\n \r\n \r\n //\r\n )\r\n }\r\n imageSrc={getAssetImageThumbSrc(\r\n item.ImageName || null,\r\n 'horizontal',\r\n IsAssetImageExist(\r\n appSettings,\r\n item.ImageName || null,\r\n 'horizontal',\r\n ),\r\n )}\r\n useImage={true}\r\n maxContentHeight={40}\r\n useButtons={false}\r\n primaryAction={() =>\r\n openAsset(\r\n {\r\n id: item.Id,\r\n serviceId: item.ServiceId,\r\n serviceType: 'Online',\r\n useSidePanel: useSidePanel,\r\n },\r\n openPanel,\r\n )\r\n }\r\n backStyle=\"white\"\r\n />\r\n // \r\n // openAsset(item)}\r\n // variant=\"default\"\r\n // size=\"small\"\r\n // label={item.Name}\r\n // key={item.Id}\r\n // />\r\n // \r\n // \r\n );\r\n })}\r\n \r\n \r\n }\r\n />\r\n \r\n )}\r\n\r\n {restrictions.ForceTutoring === true && (\r\n \r\n {t(translations.ApprovalRequired)}\r\n ) : (\r\n \r\n \r\n \r\n {t(translations.PreApproved) as string}\r\n \r\n \r\n \r\n )\r\n }\r\n />\r\n \r\n )}\r\n {restrictions.RestrictToTutoringHours &&\r\n restrictions.AssistedReservationHours.length > 0 && (\r\n \r\n \r\n {restrictions.AssistedReservationHours.filter(\r\n f =>\r\n f.DayOfWeek !== undefined && f.DayOfWeek !== null,\r\n ).length > 0 && (\r\n \r\n \r\n {`${t(translations.WeeklyOn)}:`}\r\n \r\n \r\n {restrictions.AssistedReservationHours.filter(\r\n f =>\r\n f.DayOfWeek !== undefined &&\r\n f.DayOfWeek !== null,\r\n ).map(item => (\r\n \r\n \r\n \r\n \r\n {`${\r\n dateUtils.getLongDaysArray()[\r\n item.DayOfWeek ?? 0\r\n ]\r\n } - ${dateUtils.timeFormat(\r\n item.StartTime,\r\n )} - ${dateUtils.timeFormat(\r\n item.EndTime,\r\n )}`}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n {restrictions.AssistedReservationHours.filter(\r\n f =>\r\n f.DayOfWeek === undefined || f.DayOfWeek === null,\r\n ).length > 0 && (\r\n \r\n \r\n {`${t(translations.SpecificDateOn)}:`}\r\n \r\n \r\n {restrictions.AssistedReservationHours.filter(\r\n f =>\r\n f.DayOfWeek === undefined ||\r\n f.DayOfWeek === null,\r\n ).map(item => (\r\n \r\n \r\n \r\n \r\n {`${dateUtils.shortDateTimeFormat(\r\n item.StartTime,\r\n )} - ${dateUtils.shortDateTimeFormat(\r\n item.EndTime,\r\n )}`}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n }\r\n />\r\n \r\n )}\r\n {restrictions.MinReservationOrder !== null &&\r\n restrictions.MinReservationOrder > 0 && (\r\n \r\n \r\n \r\n )}\r\n\r\n {restrictions.MaxReservationOrder !== null &&\r\n restrictions.MaxReservationOrder > 0 && (\r\n \r\n \r\n \r\n )}\r\n\r\n {restrictions.ReservationMinimumGap !== null &&\r\n restrictions.ReservationMinimumGap > 0 && (\r\n \r\n \r\n \r\n )}\r\n {restrictions.CarryOverTimeSlotTypeId !== null &&\r\n restrictions.CarryOverTimeSlotGap != null && (\r\n \r\n \r\n \r\n )}\r\n {(restrictions.MinTimeAheadPeriodValue !== null ||\r\n restrictions.MinTimeAheadMinutesSinceMidnight != null) && (\r\n \r\n \r\n \r\n )}\r\n {restrictions.RestrictionsOverview !== null &&\r\n restrictions.RestrictionsOverview !== '' && (\r\n \r\n \r\n \r\n )}\r\n {restrictions.BypassQuotas === true && (\r\n \r\n }\r\n />\r\n \r\n )}\r\n {restrictions.BypassUserQuotasAndGaps &&\r\n restrictions.BypassUserQuotasAndGapsD !== null &&\r\n restrictions.BypassUserQuotasAndGapsD > 0 && (\r\n \r\n \r\n \r\n )}\r\n {restrictions.BypassMinResDurationD &&\r\n restrictions.BypassMinResDurationT !== null &&\r\n restrictions.BypassMinResDurationT > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n {!isAdmin && restrictions.LimitlessReservationAllowed !== true && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n {/* this functionallity hidden by the task https://prog4biz.atlassian.net/browse/BKT-6141 */}\r\n {/* {(!showTable || (useSidePanel && !sidePanelExpanded)) && (\r\n \r\n \r\n \r\n }\r\n >\r\n {' '}\r\n \r\n )}\r\n {showTable && (sidePanelExpanded || !useSidePanel) && (\r\n \r\n )} */}\r\n \r\n ) : fetchRestrictionsState.status === 'pending' ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {t(translations.err_Equipment_NotFound)}\r\n \r\n );\r\n };\r\n return withNoWrapper ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n }\r\n closeSidePanel={handleCloselClick}\r\n //rightTopActions={data?.AmAdmin ? [EditButton] : undefined}\r\n isCover={isCover} //&& !showTable\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n />\r\n );\r\n}\r\n","import { cyan } from '@material-ui/core/colors';\r\n\r\ninterface InfoColors {\r\n colorInfoFull: string;\r\n colorInfoDark: string;\r\n colorInfoHover: string;\r\n colorInfoRegular: string;\r\n colorInfoComponents: string;\r\n colorInfoComponentsLight: string;\r\n colorInfoBorders: string;\r\n colorInfoDisabled: string;\r\n colorInfoBgHover: string;\r\n colorInfoBg: string;\r\n colorInfoBgLight: string;\r\n}\r\nconst infoColors: InfoColors = {\r\n colorInfoFull: cyan[900],\r\n colorInfoDark: cyan[900],\r\n colorInfoHover: cyan[800],\r\n colorInfoRegular: cyan[700],\r\n colorInfoComponents: cyan[600],\r\n colorInfoComponentsLight: cyan[500],\r\n colorInfoBorders: cyan[400],\r\n colorInfoDisabled: cyan[300],\r\n colorInfoBgHover: cyan[200],\r\n colorInfoBg: cyan[100],\r\n colorInfoBgLight: cyan[50],\r\n};\r\n\r\nexport default infoColors;\r\n","import { StyleRules } from '@material-ui/styles';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport { buttonS } from 'styles/typography/bookitTypography';\r\n\r\nexport const MuiButtonOverride = {\r\n root: {\r\n ...buttonS,\r\n textTransform: 'none',\r\n display: 'inline-flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '10px',\r\n flexShrink: 1,\r\n boxShadow: 'unset',\r\n lineHeight: 'normal',\r\n border: '1px solid transparent',\r\n padding: '4px 16px',\r\n minWidth: '40px',\r\n height: '40px',\r\n '&.variantMain': {\r\n backgroundColor: bookitColors.primary.regular,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.hover,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.primary.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.variantText': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.regular,\r\n padding: '0px',\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.hover,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n '& .buttonLabel': {\r\n whiteSpace: 'initial',\r\n },\r\n },\r\n '&.variantTextgray': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.graySubtitles,\r\n padding: '0px',\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.blackComponents,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n '&.variantGray': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.regular,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantAccent': {\r\n backgroundColor: bookitColors.grayscale.graySubtitles,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.grayscale.blackRegular,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantDanger': {\r\n backgroundColor: bookitColors.danger.regular,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.danger.hover,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.danger.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.variantWhite': {\r\n backgroundColor: bookitColors.base.white,\r\n color: bookitColors.grayscale.blackRegular,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n border: '1px solid transparent',\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n border: '1px solid transparent',\r\n },\r\n },\r\n '&.variantGhostcolor': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.primary.regular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantGhost': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.blackRegular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '& .buttonLabel': {\r\n height: '18px',\r\n whiteSpace: 'nowrap',\r\n '&.textSizeSmall': {\r\n height: '18px',\r\n },\r\n '&.textSizeMedium': {\r\n height: '20px',\r\n },\r\n '&.textSizeLarge': {\r\n height: '24px',\r\n },\r\n '&.truncateSmall': {\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '16ch',\r\n display: 'inherit',\r\n },\r\n '&.truncateMedium': {\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '32ch',\r\n display: 'inherit',\r\n },\r\n '&.truncateLarge': {\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '64ch',\r\n display: 'inherit',\r\n },\r\n },\r\n '&.fileButton': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '10px',\r\n padding: '6px 8px',\r\n boxShadow: 'unset',\r\n lineHeight: 'normal',\r\n height: '48px',\r\n backgroundColor: bookitColors.base.white,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.grayComponents,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n },\r\n '&>[class*=\"MuiButton-label\"]': {\r\n gap: '8px',\r\n pointerEvents: 'none',\r\n },\r\n '&.shrinkLabel': {\r\n padding: '20px 8px 0px 8px',\r\n },\r\n },\r\n },\r\n contained: {\r\n borderRadius: '8px',\r\n boxShadow: 'none',\r\n color: bookitColors.grayscale.blackRegular,\r\n padding: '4px 16px',\r\n minWidth: '40px',\r\n height: '40px',\r\n '&.hasStartIcon.hasEndIcon': {\r\n padding: '4px 12px',\r\n },\r\n '&.hasStartIcon': {\r\n padding: '4px 16px 4px 12px',\r\n },\r\n '&.hasEndIcon': {\r\n padding: '4px 12px 4px 16px',\r\n },\r\n '&:hover': {\r\n backgroundColor: 'initial',\r\n boxShadow: 'unset',\r\n '@media (hover: none)': {\r\n boxShadow: 'unset',\r\n backgroundColor: 'initial',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'initial',\r\n },\r\n },\r\n '&$focusVisible': {\r\n boxShadow: 'unset',\r\n },\r\n '&:active': {\r\n boxShadow: 'unset',\r\n },\r\n '&$disabled': {\r\n boxShadow: 'unset',\r\n // color: theme.palette.action.disabled,\r\n // boxShadow: theme.shadows[0],\r\n // backgroundColor: theme.palette.action.disabledBackground\r\n },\r\n '&.variantMain': {\r\n backgroundColor: bookitColors.primary.regular,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.hover,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.primary.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.variantText': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.regular,\r\n padding: '0px',\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.hover,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n '&.variantTextgray': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.graySubtitles,\r\n padding: '0px',\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.blackComponents,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n '&.variantGray': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.regular,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantAccent': {\r\n backgroundColor: bookitColors.grayscale.graySubtitles,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.grayscale.blackRegular,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantDanger': {\r\n backgroundColor: bookitColors.danger.regular,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.danger.hover,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.danger.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.variantWhite': {\r\n backgroundColor: bookitColors.base.white,\r\n color: bookitColors.grayscale.blackRegular,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n border: '1px solid transparent',\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n border: '1px solid transparent',\r\n },\r\n },\r\n '&.variantGhostcolor': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.primary.regular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantGhost': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.blackRegular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n },\r\n containedSizeSmall: {\r\n borderRadius: '6px',\r\n padding: '4px 12px',\r\n minWidth: '32px',\r\n height: '32px',\r\n '&.hasStartIcon.hasEndIcon': {\r\n padding: '4px 8px',\r\n },\r\n '&.hasStartIcon': {\r\n padding: '4px 12px 4px 8px',\r\n },\r\n '&.hasEndIcon': {\r\n padding: '4px 8px 4px 12px',\r\n },\r\n },\r\n containedSizeLarge: {\r\n minWidth: '48px',\r\n height: '48px',\r\n borderRadius: '8px',\r\n padding: '4px 20px',\r\n '&.hasStartIcon.hasEndIcon': {\r\n padding: '4px 16px',\r\n },\r\n '&.hasStartIcon': {\r\n padding: '4px 20px 4px 16px',\r\n },\r\n '&.hasEndIcon': {\r\n padding: '4px 16px 4px 20px',\r\n },\r\n },\r\n label: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0px',\r\n margin: 0,\r\n gap: '8px',\r\n '.fileButton &': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0px',\r\n margin: 0,\r\n height: '24px',\r\n justifyContent: 'flex-start',\r\n '& hr': {\r\n backgroundColor: bookitColors.grayscale.grayComponents,\r\n },\r\n },\r\n },\r\n startIcon: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n flex: 'none',\r\n order: 0,\r\n flexGrow: 0,\r\n margin: 0,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n '&$iconSizeSmall': {\r\n marginLeft: 0,\r\n },\r\n },\r\n endIcon: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n flex: 'none',\r\n order: 2,\r\n flexGrow: 0,\r\n margin: 0,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n '&$iconSizeSmall': {\r\n marginRight: 0,\r\n },\r\n '.fileButton &': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0px',\r\n flex: 'none',\r\n order: 2,\r\n flexGrow: 0,\r\n marginLeft: 'auto',\r\n marginRight: 0,\r\n },\r\n },\r\n text: {\r\n padding: '0px',\r\n height: '20px',\r\n },\r\n textSizeSmall: {\r\n fontSize: '14px',\r\n height: '18px',\r\n },\r\n textSizeLarge: {\r\n fontSize: '20px',\r\n height: '24px',\r\n },\r\n sizeSmall: {},\r\n sizeLarge: {\r\n '&>[class*=\"MuiButton-label\"]': {\r\n gap: '12px',\r\n },\r\n },\r\n iconSizeMedium: {\r\n fontSize: '16px',\r\n '&>:first-child': {\r\n fontSize: '16px',\r\n width: '16px',\r\n height: '16px',\r\n },\r\n },\r\n iconSizeLarge: {\r\n fontSize: '20px',\r\n '&>:first-child': {\r\n fontSize: '20px',\r\n width: '20px',\r\n height: '20px',\r\n },\r\n },\r\n iconSizeSmall: {\r\n fontSize: '14px',\r\n '&>:first-child': {\r\n fontSize: '14px',\r\n width: '14px',\r\n height: '14px',\r\n },\r\n },\r\n} as Partial;\r\nexport const MuiIconButtonOverride = {\r\n root: {\r\n display: 'inline-flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '10px',\r\n padding: '0px',\r\n border: '1px solid transparent',\r\n '&.variantMain': {\r\n backgroundColor: bookitColors.primary.regular,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.hover,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.primary.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.variantText': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.regular,\r\n padding: '0px',\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.hover,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n '&.variantTextgray': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.graySubtitles,\r\n padding: '0px',\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.blackComponents,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n '&.variantGray': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.regular,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantAccent': {\r\n backgroundColor: bookitColors.grayscale.graySubtitles,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.grayscale.blackRegular,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantDanger': {\r\n backgroundColor: bookitColors.danger.regular,\r\n color: bookitColors.base.white,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.danger.hover,\r\n color: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.danger.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.absolute-close-button': {\r\n position: 'absolute',\r\n right: 8,\r\n top: 8,\r\n },\r\n '& .iconSizeLarge': {\r\n fontSize: '16px',\r\n '&>:first-child': {\r\n fontSize: '16px',\r\n width: '16px',\r\n height: '16px',\r\n },\r\n },\r\n '&.variantWhite': {\r\n backgroundColor: bookitColors.base.white,\r\n color: bookitColors.grayscale.blackRegular,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n border: '1px solid transparent',\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n border: '1px solid transparent',\r\n },\r\n },\r\n '&.variantGhostcolor': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.primary.regular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantGhost': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.blackRegular,\r\n '&:hover, &:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'unset',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.iconSizeLarge': {\r\n width: '48px',\r\n height: '48px',\r\n fontSize: '16px',\r\n '&.shapeSquare': {\r\n borderRadius: '8px',\r\n },\r\n },\r\n '&.iconSizeMedium': {\r\n width: '40px',\r\n height: '40px',\r\n fontSize: '16px',\r\n '&.shapeSquare': {\r\n borderRadius: '8px',\r\n },\r\n },\r\n '&.iconSizeSmall': {\r\n width: '32px',\r\n height: '32px',\r\n fontSize: '14px',\r\n '&.shapeSquare': {\r\n borderRadius: '6px',\r\n },\r\n },\r\n '&.iconSizeXs': {\r\n width: '24px',\r\n height: '24px',\r\n fontSize: '14px',\r\n padding: '4px 11px 4px 11px',\r\n '&.shapeSquare': {\r\n borderRadius: '4px',\r\n },\r\n },\r\n '&.shapeCircle': {\r\n borderRadius: '50%',\r\n },\r\n '&.absolutePositionSmall': {\r\n position: 'absolute',\r\n right: 8,\r\n top: 8,\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n '&.absolutePositionMedium': {\r\n position: 'absolute',\r\n right: 12,\r\n top: 12,\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n '&.absolutePositionLarge': {\r\n position: 'absolute',\r\n right: 16,\r\n top: 16,\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n '&.collapseButton': {\r\n position: 'absolute',\r\n top: 48,\r\n right: '50%',\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n background: bookitColors.grayscale.graybgComponents,\r\n borderRadius: '1000px',\r\n width: '24px',\r\n '&.collapsedBar': {\r\n width: 'auto',\r\n },\r\n '& .collapseIcon': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n width: '10px',\r\n height: '10px',\r\n },\r\n },\r\n },\r\n label: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: 0,\r\n gap: '12px',\r\n cursor: 'pointer',\r\n },\r\n} as Partial;\r\nexport const MuiToggleButtonGroupOverride = {\r\n root: {\r\n display: 'inline-flex',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n gap: '0px',\r\n backgroundColor: 'transparent',\r\n '&.variantMain': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n },\r\n '&.variantText': {\r\n padding: '0px',\r\n },\r\n '&.variantTextgray': {\r\n padding: '0px',\r\n },\r\n '&.variantGray': {\r\n backgroundColor: bookitColors.primary.bgLight,\r\n },\r\n '&.variantAccent': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n },\r\n '&.variantDanger': {\r\n backgroundColor: bookitColors.danger.background,\r\n },\r\n '&.variantWhite': {\r\n backgroundColor: bookitColors.base.white,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n },\r\n '&.separated': {\r\n gap: '8px',\r\n },\r\n '&.variantGhostcolor': {\r\n '&.separated': {\r\n padding: '0px',\r\n },\r\n },\r\n '&.variantGhost': {\r\n '&.separated': {\r\n padding: '0px',\r\n },\r\n },\r\n '&.sizeLarge': {\r\n borderRadius: '12px',\r\n '&.separated': {\r\n padding: '4px',\r\n gap: '4px',\r\n },\r\n },\r\n '&.sizeMedium': {\r\n borderRadius: '10px',\r\n '&.separated': {\r\n padding: '3px',\r\n gap: '3px',\r\n },\r\n },\r\n '&.sizeSmall': {\r\n borderRadius: '8px',\r\n '&.separated': {\r\n padding: '1px',\r\n gap: '1px',\r\n },\r\n },\r\n '&.errorBorder': {\r\n borderColor: bookitColors.danger.regular,\r\n },\r\n '&.fullWidth': {\r\n width: '100%',\r\n },\r\n },\r\n grouped: {\r\n '&.fullWidthButton': {\r\n flex: '1',\r\n },\r\n },\r\n /* Styles applied to the children if `orientation=\"horizontal\"`. */\r\n groupedHorizontal: {\r\n '&:not(:first-child)': {\r\n marginLeft: '0px', //props => (props.variant === 'white' ? 0 : -1),\r\n borderLeft: '1px solid transparent',\r\n borderTopLeftRadius: 0,\r\n borderBottomLeftRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderTopLeftRadius: 8,\r\n borderBottomLeftRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderTopLeftRadius: 8,\r\n borderBottomLeftRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderTopLeftRadius: 6,\r\n borderBottomLeftRadius: 6,\r\n },\r\n },\r\n },\r\n '&:not(:last-child)': {\r\n borderTopRightRadius: 0,\r\n borderBottomRightRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderTopRightRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderTopRightRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderTopRightRadius: 6,\r\n borderBottomRightRadius: 6,\r\n },\r\n },\r\n },\r\n '&>[class*=\"withTitle\"]:not(:first-child)': {\r\n '&>button': {\r\n marginLeft: '0px', // props => (props.variant === 'white' ? 0 : -1),\r\n borderLeft: '1px solid transparent',\r\n borderTopLeftRadius: 0,\r\n borderBottomLeftRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderTopLeftRadius: 8,\r\n borderBottomLeftRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderTopLeftRadius: 8,\r\n borderBottomLeftRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderTopLeftRadius: 6,\r\n borderBottomLeftRadius: 6,\r\n },\r\n },\r\n },\r\n },\r\n '&>[class*=\"withTitle\"]:not(:last-child)': {\r\n '&>button': {\r\n borderTopRightRadius: 0,\r\n borderBottomRightRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderTopRightRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderTopRightRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderTopRightRadius: 6,\r\n borderBottomRightRadius: 6,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n /* Styles applied to the children if `orientation=\"vertical\"`. */\r\n groupedVertical: {\r\n '&:not(:first-child)': {\r\n marginTop: -1,\r\n borderTop: '1px solid transparent',\r\n borderTopLeftRadius: 0,\r\n borderTopRightRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderTopLeftRadius: 6,\r\n borderTopRightRadius: 6,\r\n },\r\n },\r\n },\r\n '&:not(:last-child)': {\r\n borderBottomLeftRadius: 0,\r\n borderBottomRightRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderBottomLeftRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderBottomLeftRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderBottomLeftRadius: 6,\r\n borderBottomRightRadius: 6,\r\n },\r\n },\r\n },\r\n '&>[class*=\"withTitle\"]:not(:first-child)': {\r\n '&>button': {\r\n marginTop: -1,\r\n borderTop: '1px solid transparent',\r\n borderTopLeftRadius: 0,\r\n borderTopRightRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderTopLeftRadius: 6,\r\n borderTopRightRadius: 6,\r\n },\r\n },\r\n },\r\n },\r\n '&>[class*=\"withTitle\"]:not(:last-child)': {\r\n '&>button': {\r\n borderBottomLeftRadius: 0,\r\n borderBottomRightRadius: 0,\r\n '&.separated': {\r\n '&.sizeLarge': {\r\n borderBottomLeftRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeMedium': {\r\n borderBottomLeftRadius: 8,\r\n borderBottomRightRadius: 8,\r\n },\r\n '&.sizeSmall': {\r\n borderBottomLeftRadius: 6,\r\n borderBottomRightRadius: 6,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n} as Partial;\r\nexport const MuiToggleButtonOverride = {\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '10px',\r\n textTransform: 'none',\r\n boxShadow: 'unset',\r\n boxSizing: 'border-box',\r\n border: '1px solid transparent',\r\n borderRadius: '8px',\r\n minWidth: '40px',\r\n height: '40px',\r\n ...buttonS,\r\n padding: '4px 16px',\r\n '&.hasMainIcon': {\r\n padding: '4px 10px',\r\n },\r\n '&.hasStartIcon.hasEndIcon': {\r\n padding: '4px 12px',\r\n },\r\n '&.hasStartIcon': {\r\n padding: '4px 16px 4px 12px',\r\n },\r\n '&.hasEndIcon': {\r\n padding: '4px 12px 4px 16px',\r\n },\r\n '&.fullWidth': {\r\n width: '100%',\r\n },\r\n '&.variantMain': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n '&$selected': {\r\n color: bookitColors.base.white,\r\n backgroundColor: bookitColors.primary.regular,\r\n border: `1px solid ${bookitColors.primary.borders}`,\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.hover,\r\n border: '1px solid transparent',\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.regular,\r\n color: bookitColors.base.white,\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: bookitColors.primary.regular,\r\n color: bookitColors.base.white,\r\n border: `1px solid ${bookitColors.primary.borders}`,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.primary.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.variantText': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.regular,\r\n padding: '0px',\r\n '&$selected': {\r\n color: bookitColors.primary.hover,\r\n backgroundColor: 'transparent',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.hover,\r\n textDecoration: 'underline',\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.hover,\r\n textDecoration: 'underline',\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.hover,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n '&.variantTextgray': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.graySubtitles,\r\n padding: '0px',\r\n '&$selected': {\r\n color: bookitColors.grayscale.blackComponents,\r\n backgroundColor: 'transparent',\r\n textDecoration: 'underline',\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.blackComponents,\r\n textDecoration: 'underline',\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.blackComponents,\r\n textDecoration: 'underline',\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.blackComponents,\r\n textDecoration: 'underline',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n '&.variantGray': {\r\n backgroundColor: bookitColors.primary.bgLight,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&$selected': {\r\n color: bookitColors.primary.regular,\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n color: bookitColors.primary.regular,\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.primary.regular,\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.primary.regular,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantAccent': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&$selected': {\r\n color: bookitColors.base.white,\r\n backgroundColor: bookitColors.grayscale.graySubtitles,\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.blackRegular,\r\n color: bookitColors.base.white,\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantDanger': {\r\n backgroundColor: bookitColors.danger.background,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&$selected': {\r\n color: bookitColors.base.white,\r\n backgroundColor: bookitColors.danger.regular,\r\n '&:hover': {\r\n backgroundColor: bookitColors.danger.hover,\r\n color: bookitColors.base.white,\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.danger.background,\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: bookitColors.danger.background,\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.danger.disabled,\r\n color: bookitColors.base.white,\r\n },\r\n },\r\n '&.variantWhite': {\r\n backgroundColor: bookitColors.base.white,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&$selected': {\r\n color: bookitColors.grayscale.blackRegular,\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantGhostcolor': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.primary.regular,\r\n '&$selected': {\r\n color: bookitColors.primary.hover,\r\n backgroundColor: bookitColors.primary.bgHover,\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.variantGhost': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.blackRegular,\r\n '&$selected': {\r\n color: bookitColors.primary.hover,\r\n backgroundColor: bookitColors.primary.bgHover,\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '& + &': {\r\n borderLeft: 0,\r\n marginLeft: 0,\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&:active, &:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n color: bookitColors.primary.hover,\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'transparent',\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n },\r\n sizeLarge: {\r\n padding: '4px 20px',\r\n borderRadius: '8px',\r\n minWidth: '48px',\r\n height: '48px',\r\n '&.hasMainIcon': {\r\n padding: '4px 14px',\r\n },\r\n '&.hasStartIcon.hasEndIcon': {\r\n padding: '4px 16px',\r\n },\r\n '&.hasStartIcon': {\r\n padding: '4px 20px 4px 16px',\r\n },\r\n '&.hasEndIcon': {\r\n padding: '4px 16px 4px 20px',\r\n },\r\n '&>$label': {\r\n gap: '12px',\r\n },\r\n },\r\n sizeSmall: {\r\n padding: '4px 12px',\r\n borderRadius: '8px',\r\n minWidth: '32px',\r\n height: '32px',\r\n '&.separated': {\r\n borderRadius: '6px',\r\n },\r\n '&.hasMainIcon': {\r\n padding: '4px 8px',\r\n },\r\n '&.hasStartIcon.hasEndIcon': {\r\n padding: '4px 8px',\r\n },\r\n '&.hasStartIcon': {\r\n padding: '4px 12px 4px 8px',\r\n },\r\n '&.hasEndIcon': {\r\n padding: '4px 8px 4px 12px',\r\n },\r\n },\r\n label: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0px',\r\n margin: 0,\r\n gap: '8px',\r\n '& .startIcon': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n flex: 'none',\r\n order: 0,\r\n flexGrow: 0,\r\n margin: 0,\r\n },\r\n '& .endIcon': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n flex: 'none',\r\n order: 2,\r\n flexGrow: 0,\r\n margin: 0,\r\n },\r\n '& .mainIcon': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n },\r\n '& .buttonLabel': {\r\n height: '18px',\r\n whiteSpace: 'nowrap',\r\n '&.truncateSmall': {\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '16ch',\r\n display: 'inherit',\r\n },\r\n '&.truncateMedium': {\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '32ch',\r\n display: 'inherit',\r\n },\r\n '&.truncateLarge': {\r\n whiteSpace: 'pre',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '64ch',\r\n display: 'inherit',\r\n },\r\n },\r\n '& .iconSizeSmall': {\r\n fontSize: '14px',\r\n '&>:first-child': {\r\n fontSize: '14px',\r\n width: '14px',\r\n height: '14px',\r\n },\r\n },\r\n '& .iconSizeMedium': {\r\n fontSize: '16px',\r\n '&>:first-child': {\r\n fontSize: '16px',\r\n width: '16px',\r\n height: '16px',\r\n },\r\n },\r\n '& .iconSizeLarge': {\r\n fontSize: '16px',\r\n '&>:first-child': {\r\n fontSize: '16px',\r\n width: '16px',\r\n height: '16px',\r\n },\r\n },\r\n },\r\n} as Partial;\r\n","import { CSSProperties } from '@material-ui/styles';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport const verticalScrolling: CSSProperties = {\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n },\r\n};\r\nexport const cssVariables = {\r\n verticalScrolling: verticalScrolling,\r\n};\r\n","import { fade, ThemeOptions } from '@material-ui/core';\r\nimport createBreakpoints from '@material-ui/core/styles/createBreakpoints';\r\nimport { unstable_createMuiStrictModeTheme as createMuiTheme } from '@material-ui/core';\r\n// import convertLength from 'convert-css-length';\r\nimport { grey, green } from '@material-ui/core/colors';\r\nimport { bookitColors } from './colors/bookitColors';\r\nimport infoColors from './colors/info';\r\nimport {\r\n bodyS,\r\n boldS,\r\n bookitTypography,\r\n buttonM,\r\n inputLabelXS,\r\n inputValueS,\r\n tipsRegular,\r\n} from './typography/bookitTypography';\r\nimport {\r\n MuiButtonOverride,\r\n MuiIconButtonOverride,\r\n MuiToggleButtonGroupOverride,\r\n MuiToggleButtonOverride,\r\n} from './MUIExtend/themeOverrides';\r\nimport transitions from '@material-ui/core/styles/transitions';\r\nimport {\r\n COVER_WIDTH,\r\n //DRAWER_MOBILE_WIDTH,\r\n DRAWER_WIDTH,\r\n MAX_COVER_EXPANDED_WIDTH,\r\n} from './constantVariables';\r\nimport {\r\n box_shadow_l,\r\n box_shadow_m,\r\n box_shadow_s,\r\n} from './shadows/bookitShadow';\r\nimport { verticalScrolling } from './CssVariables/variables';\r\n\r\nconst breakpoints = createBreakpoints({});\r\n// xs: 0,\r\n// sm: 600,\r\n// md: 960,\r\n// lg: 1280,\r\n// xl: 1920\r\nconst lato_Light = {\r\n fontFamily: `'Lato', sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 300,\r\n src: `\r\n local(''),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Light.woff') format('woff'),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Light.woff2') format('woff2'),\r\n `,\r\n};\r\nconst lato_Regular = {\r\n fontFamily: `'Lato', sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 400,\r\n src: `\r\n local(''),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Regular.woff') format('woff'),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Regular.woff2') format('woff2'),\r\n `,\r\n};\r\nconst lato_Bold = {\r\n fontFamily: `'Lato', sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 700,\r\n src: `\r\n local(''),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Bold.woff') format('woff'),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Bold.woff2') format('woff2'),\r\n `,\r\n};\r\nconst lato_Black = {\r\n fontFamily: `'Lato', sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 900,\r\n src: `\r\n local(''),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Black.woff') format('woff'),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Black.woff2') format('woff2'),\r\n `,\r\n};\r\nconst lato = {\r\n fontFamily: `'Lato', sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 400,\r\n src: `\r\n local(''),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Regular.woff') format('woff'),\r\n url('${process.env.PUBLIC_URL}/fonts/Lato/Lato-Regular.woff2') format('woff2'),\r\n `,\r\n unicodeRange:\r\n 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF',\r\n};\r\n//const convert = convertLength('16px');\r\nexport type BaseTheme = 'default' | 'animals' | 'bookit' | 'dark' | undefined;\r\n// customizes the mui theme defaults/overrides\r\n// colors: https://material-ui.com/customization/color/#color\r\nexport const DefaultThemeSettings: ThemeOptions = {\r\n typography: {\r\n fontFamily: `'Lato', sans-serif`,\r\n },\r\n overrides: {\r\n MuiCssBaseline: {\r\n '@global': {\r\n '@font-face': [lato],\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const BookitThemeSettings: ThemeOptions = {\r\n zIndex: {\r\n mobileStepper: 1000,\r\n speedDial: 1050,\r\n appBar: 1100,\r\n drawer: 1200,\r\n modal: 1300,\r\n snackbar: 1400,\r\n tooltip: 1500,\r\n },\r\n palette: {\r\n primary: {\r\n dark: bookitColors.primary.dark,\r\n main: bookitColors.primary.regular,\r\n light: bookitColors.primary.background,\r\n textHover: bookitColors.primary.hover,\r\n bgHover: bookitColors.primary.bgHover,\r\n contrastText: bookitColors.base.white,\r\n },\r\n\r\n secondary: {\r\n dark: '#BFA44A',\r\n main: '#FFDB63',\r\n light: '#F4ECCE',\r\n textHover: '#E0BC40',\r\n bgHover: '#FFEBA9',\r\n contrastText: '#000',\r\n },\r\n info: {\r\n dark: infoColors.colorInfoDark,\r\n main: infoColors.colorInfoRegular,\r\n light: infoColors.colorInfoBg,\r\n textHover: infoColors.colorInfoBgHover,\r\n bgHover: infoColors.colorInfoHover,\r\n contrastText: bookitColors.base.white,\r\n },\r\n accent: {\r\n dark: bookitColors.secondary.violet.dark,\r\n main: bookitColors.secondary.violet.regular,\r\n light: bookitColors.secondary.violet.background,\r\n bgHover: bookitColors.secondary.violet.bgHover,\r\n textHover: bookitColors.secondary.violet.hover,\r\n contrastText: bookitColors.base.white,\r\n },\r\n danger: {\r\n dark: bookitColors.danger.dark,\r\n main: bookitColors.danger.regular,\r\n light: bookitColors.danger.background,\r\n textHover: bookitColors.danger.hover,\r\n bgHover: bookitColors.danger.bgHover,\r\n contrastText: bookitColors.base.white,\r\n },\r\n success: {\r\n dark: bookitColors.success.dark,\r\n main: bookitColors.success.regular,\r\n light: bookitColors.success.background,\r\n textHover: bookitColors.success.hover,\r\n bgHover: bookitColors.success.bgHover,\r\n contrastText: bookitColors.base.white,\r\n },\r\n error: {\r\n dark: bookitColors.danger.dark,\r\n main: bookitColors.danger.regular,\r\n light: bookitColors.danger.background,\r\n bgHover: bookitColors.danger.bgHover,\r\n textHover: bookitColors.danger.hover,\r\n contrastText: bookitColors.base.white,\r\n },\r\n default: {\r\n dark: bookitColors.grayscale.blackComponents,\r\n main: bookitColors.grayscale.graybgComponents,\r\n light: bookitColors.grayscale.grayBackground,\r\n bgHover: bookitColors.base.white,\r\n textHover: bookitColors.grayscale.graySubtitles,\r\n contrastText: bookitColors.base.black,\r\n },\r\n filters: {\r\n dark: bookitColors.primary.dark,\r\n main: bookitColors.grayscale.graySelection,\r\n textHover: bookitColors.primary.dark,\r\n bgHover: bookitColors.primary.bgHover,\r\n light: bookitColors.grayscale.grayComponents,\r\n contrastText: bookitColors.grayscale.blackRegular,\r\n },\r\n common: {\r\n black: bookitColors.base.black,\r\n blackRegular: bookitColors.grayscale.blackRegular,\r\n blackComponent: bookitColors.grayscale.blackComponents,\r\n graySubtitle: bookitColors.grayscale.graySubtitles,\r\n grayComponents: bookitColors.grayscale.grayComponents,\r\n grayComponentsLight: bookitColors.grayscale.grayComponentsLight,\r\n background: bookitColors.grayscale.grayBackground,\r\n backgroundHover: bookitColors.grayscale.graybgComponents,\r\n grayBorders: bookitColors.grayscale.grayBorders,\r\n grayDividers: bookitColors.grayscale.graySelection,\r\n white: bookitColors.base.white,\r\n },\r\n background: {\r\n default: bookitColors.grayscale.grayBackground,\r\n paper: bookitColors.base.white,\r\n },\r\n },\r\n shape: {\r\n borderRadius: 8,\r\n },\r\n typography: {\r\n fontFamily: ['Lato', 'sans-serif'].join(','),\r\n h1: bookitTypography.h1,\r\n h2: bookitTypography.h2,\r\n h3: bookitTypography.h3,\r\n h4: bookitTypography.h4,\r\n bodyL: bookitTypography.bodyL,\r\n bodyM: bookitTypography.bodyM,\r\n bodyS: bookitTypography.bodyS,\r\n boldL: bookitTypography.boldL,\r\n boldM: bookitTypography.boldM,\r\n boldS: bookitTypography.boldS,\r\n buttonM: bookitTypography.buttonM,\r\n buttonS: bookitTypography.buttonS,\r\n captionRegular: bookitTypography.captionRegular,\r\n captionBold: bookitTypography.captionBold,\r\n\r\n subtitle1: bookitTypography.subtitle1,\r\n subtitle2: bookitTypography.subtitle2,\r\n tipsRegular: bookitTypography.tipsRegular,\r\n tipsBold: bookitTypography.tipsBold,\r\n inputLabelM: bookitTypography.inputLabelM,\r\n inputLabelXS: bookitTypography.inputLabelXS,\r\n inputValueM: bookitTypography.inputValueM,\r\n inputValueS: bookitTypography.inputValueS,\r\n uppercase: bookitTypography.uppercase,\r\n },\r\n overrides: {\r\n MuiTypography: {\r\n root: {\r\n '&.variantH1': {\r\n ...bookitTypography.h1,\r\n },\r\n '&.variantH2': {\r\n ...bookitTypography.h2,\r\n },\r\n '&.variantH3': {\r\n ...bookitTypography.h3,\r\n },\r\n '&.variantH4': {\r\n ...bookitTypography.h4,\r\n },\r\n '&.variantSubtitle1': {\r\n ...bookitTypography.subtitle1,\r\n },\r\n '&.variantSubtitle2': {\r\n ...bookitTypography.subtitle2,\r\n },\r\n '&.variantBodyl': {\r\n ...bookitTypography.bodyL,\r\n },\r\n '&.variantBodym': {\r\n ...bookitTypography.bodyM,\r\n },\r\n '&.variantBodys': {\r\n ...bookitTypography.bodyS,\r\n },\r\n '&.variantBoldl': {\r\n ...bookitTypography.boldL,\r\n },\r\n '&.variantBoldm': {\r\n ...bookitTypography.boldM,\r\n },\r\n '&.variantBolds': {\r\n ...bookitTypography.boldS,\r\n },\r\n '&.variantCaptionbold': {\r\n ...bookitTypography.captionBold,\r\n },\r\n '&.variantCaptionregular': {\r\n ...bookitTypography.captionRegular,\r\n },\r\n '&.variantUppercase': {\r\n ...bookitTypography.uppercase,\r\n },\r\n '&.variantTipsbold': {\r\n ...bookitTypography.tipsBold,\r\n },\r\n '&.variantTipsregular': {\r\n ...bookitTypography.tipsRegular,\r\n },\r\n '&.variantInputlabelm': {\r\n ...bookitTypography.inputLabelM,\r\n },\r\n '&.variantInputlabelxs': {\r\n ...bookitTypography.inputLabelXS,\r\n },\r\n '&.variantInputvaluem': {\r\n ...bookitTypography.inputValueM,\r\n },\r\n '&.variantInputvalues': {\r\n ...bookitTypography.inputValueS,\r\n },\r\n '&.variantButtonm': {\r\n ...bookitTypography.buttonM,\r\n },\r\n '&.variantButtons': {\r\n ...bookitTypography.buttonS,\r\n },\r\n '&.italic': {\r\n fontStyle: 'italic',\r\n },\r\n '&.bold': {\r\n fontWeight: 700,\r\n },\r\n '&.uppercase': {\r\n textTransform: 'uppercase',\r\n },\r\n '&.truncate10': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '10ch',\r\n },\r\n '&.truncate15': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '15ch',\r\n },\r\n '&.truncate20': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '20ch',\r\n },\r\n '&.truncate25': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '25ch',\r\n },\r\n '&.truncate30': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '30ch',\r\n },\r\n '&.truncate40': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '40ch',\r\n },\r\n '&.truncate50': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n maxWidth: '50ch',\r\n },\r\n },\r\n colorError: {\r\n color: bookitColors.danger.regular,\r\n },\r\n colorPrimary: {\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n colorSecondary: { color: bookitColors.grayscale.grayComponents },\r\n colorTextPrimary: { color: bookitColors.primary.regular },\r\n colorTextSecondary: { color: bookitColors.success.regular },\r\n },\r\n MuiPaper: {\r\n root: {\r\n '&.PopUpListItemsPaper': {\r\n padding: '16px',\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n border: '1px solid #E3E3E3',\r\n },\r\n },\r\n },\r\n MuiAppBar: {\r\n colorDefault: { backgroundColor: bookitColors.grayscale.grayBackground },\r\n root: {\r\n '.asset-wrapper-root &': {\r\n width: '100%',\r\n backgroundColor: bookitColors.base.white,\r\n color: bookitColors.base.black,\r\n boxShadow: box_shadow_s,\r\n borderRadius: 8,\r\n border: `1px solid ${bookitColors.grayscale.graySelection}`,\r\n padding: '20px 24px',\r\n gap: 24,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n '&.wrapper-root-auth': {\r\n padding: '8px 24px',\r\n },\r\n '& .app-bar-title': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n },\r\n MuiLink: {\r\n root: {\r\n color: bookitColors.primary.regular,\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n },\r\n '&:focus': {\r\n textDecoration: 'underline',\r\n },\r\n cursor: 'pointer',\r\n '&.base-link': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n },\r\n MuiCssBaseline: {\r\n '@global': {\r\n '@font-face': [lato_Light, lato_Regular, lato_Bold, lato_Black],\r\n ':root': {\r\n '--drawer-width': 240,\r\n },\r\n },\r\n },\r\n MuiSelect: {\r\n select: {\r\n '&:focus': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n MuiInputBase: {\r\n root: {\r\n ...inputValueS,\r\n color: bookitColors.grayscale.blackRegular,\r\n '&.text-box-width-xs': {\r\n width: '32px',\r\n '&.number-field': {\r\n width: `${32 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-small': {\r\n width: '48px',\r\n '&.number-field': {\r\n width: `${48 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-medium': {\r\n width: '56px',\r\n '&.number-field': {\r\n width: `${56 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-large': {\r\n width: '72px',\r\n '&.number-field': {\r\n width: `${72 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-default': {\r\n width: '300px',\r\n '&.number-field': {\r\n width: `${300 + 16}px`,\r\n },\r\n },\r\n '&.file-input-hidden': {\r\n display: 'none',\r\n },\r\n },\r\n adornedStart: {\r\n paddingLeft: 12,\r\n },\r\n adornedEnd: {\r\n paddingRight: 12,\r\n },\r\n input: {\r\n '.textTable &': {\r\n minWidth: '80px',\r\n },\r\n '&.min-width-xs': {\r\n minWidth: '32px',\r\n paddingRight: '6px',\r\n },\r\n '&.min-width-small': {\r\n minWidth: '38px',\r\n paddingRight: '6px',\r\n },\r\n '&.min-width-medium': {\r\n minWidth: '56px',\r\n paddingRight: '6px',\r\n },\r\n '&.min-width-large': {\r\n minWidth: '72px',\r\n paddingRight: '6px',\r\n },\r\n '&.min-width-default': {\r\n minWidth: '300px',\r\n },\r\n },\r\n // marginDense: {\r\n // width: '100px',\r\n // }\r\n },\r\n MuiInput: {\r\n root: {\r\n '&.standard': {\r\n position: 'relative',\r\n height: 40,\r\n //backgroundColor: theme.palette.common.white,\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n gap: 4,\r\n borderRadius: 8,\r\n '&.inputSizeSmall': {\r\n gap: 0,\r\n paddingRight: 8,\r\n height: 32,\r\n },\r\n '&.inputSizeMedium': {\r\n height: 40,\r\n },\r\n '&.inputSizeLarge': {\r\n height: 48,\r\n },\r\n '&.inputSizeXl': {\r\n height: 56,\r\n },\r\n 'label + &': {\r\n marginTop: '0px',\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.10)',\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.90)',\r\n },\r\n },\r\n '&$focused': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.10)',\r\n },\r\n '&$disabled': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.70)',\r\n },\r\n '&.with-end-label': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n },\r\n // '&$error': {\r\n\r\n // }\r\n },\r\n },\r\n formControl: {\r\n 'label + &': {\r\n marginTop: '21px',\r\n },\r\n },\r\n colorSecondary: {\r\n '&$underline:after': {\r\n borderBottomColor: bookitColors.primary.borders,\r\n },\r\n },\r\n underline: {\r\n '&.standard': {\r\n '&:after': {\r\n borderBottom: `1px solid ${bookitColors.primary.regular}`,\r\n left: 0,\r\n bottom: -1,\r\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\r\n content: '\"\"',\r\n position: 'absolute',\r\n right: 0,\r\n transform: 'scaleX(0)',\r\n pointerEvents: 'none', // Transparent to the hover style.\r\n transition: transitions.create('transform', {\r\n duration: transitions.duration.shorter,\r\n easing: transitions.easing.easeOut,\r\n }),\r\n marginInline: 8,\r\n },\r\n '&$focused:after': {\r\n transform: 'scaleX(1)',\r\n },\r\n '&$error:after': {\r\n borderBottomColor: bookitColors.danger.regular,\r\n transform: 'scaleX(1)', // error is always underlined in red\r\n },\r\n '&:before': {\r\n borderBottom: 'none',\r\n left: 0,\r\n bottom: -1,\r\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\r\n content: '\"\\\\00a0\"',\r\n // content: '\"\"',\r\n position: 'absolute',\r\n right: 0,\r\n transition: transitions.create('border-bottom-color', {\r\n duration: transitions.duration.shorter,\r\n }),\r\n pointerEvents: 'none', // Transparent to the hover style.\r\n marginInline: 8,\r\n },\r\n '&:hover:before': {\r\n borderBottom: 'none',\r\n },\r\n '&$disabled:before': {\r\n borderBottomStyle: 'none',\r\n },\r\n '&$focused:before': {\r\n borderBottom: `1px solid ${bookitColors.primary.regular}`,\r\n transform: 'scaleX(1)',\r\n },\r\n '&$error:before': {\r\n borderBottom: `1px solid ${bookitColors.danger.regular}`,\r\n transform: 'scaleX(1)',\r\n },\r\n '&:hover:not($disabled):before': {\r\n borderBottom: `1px solid ${bookitColors.primary.regular}`,\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n borderBottom: `1px solid ${bookitColors.primary.regular}`,\r\n },\r\n },\r\n },\r\n },\r\n // error: {\r\n // border: `1px solid ${bookitColors.danger.borders}`,\r\n // },\r\n marginDense: {\r\n borderRadius: 8,\r\n height: 24,\r\n },\r\n multiline: {\r\n padding: '6px 12px',\r\n '&$marginDense': {\r\n paddingTop: 1,\r\n paddingBottom: 1,\r\n },\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.primary.borders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.primary.borders,\r\n },\r\n },\r\n input: {\r\n //minWidth: '48px',\r\n minWidth: '80px',\r\n padding: '6px 12px',\r\n height: '20px',\r\n borderRadius: 8,\r\n\r\n // '&:-webkit-autofill': {\r\n // WebkitBoxShadow:\r\n // theme.palette.type === 'light' ? null : '0 0 0 100px #266798 inset',\r\n // WebkitTextFillColor: theme.palette.type === 'light' ? null : '#fff',\r\n // caretColor: theme.palette.type === 'light' ? null : '#fff',\r\n // },\r\n '&&.inputSizeSmall &': {\r\n padding: '6px 8px',\r\n },\r\n '.standard &': {\r\n '.inputSizeLarge &': {\r\n paddingTop: 22,\r\n paddingBottom: 4,\r\n },\r\n '.inputSizeLarge.noLabel &': {\r\n paddingTop: 14,\r\n paddingBottom: 12,\r\n },\r\n '.inputSizeMedium &': {\r\n paddingTop: 9,\r\n paddingBottom: 9,\r\n },\r\n '.inputSizeSmall &': {\r\n paddingTop: 5,\r\n paddingBottom: 5,\r\n },\r\n '.inputSizeXl &': {\r\n padding: '26px 12px 8px',\r\n },\r\n '.with-end-label &': {\r\n backgroundColor: bookitColors.base.white,\r\n },\r\n },\r\n },\r\n inputMarginDense: {\r\n paddingTop: 1,\r\n paddingBottom: 1,\r\n },\r\n inputMultiline: {\r\n padding: 0,\r\n height: 'auto',\r\n },\r\n inputTypeSearch: {},\r\n },\r\n MuiFilledInput: {\r\n root: {\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n backgroundColor: bookitColors.base.white,\r\n borderRadius: 8,\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n '&:hover': {\r\n backgroundColor: bookitColors.base.white,\r\n '@media (hover: none)': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.90)',\r\n },\r\n },\r\n '&$focused': {\r\n backgroundColor: bookitColors.base.white,\r\n },\r\n '&$disabled': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n },\r\n /* Styles applied to the root element if color secondary. */\r\n colorSecondary: {\r\n '&$underline:after': {\r\n borderBottomColor: bookitColors.danger.regular,\r\n },\r\n },\r\n underline: {\r\n '&:after': {\r\n borderBottom: `1px solid ${bookitColors.primary.regular}`,\r\n left: 0,\r\n bottom: -1,\r\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\r\n content: '\"\"',\r\n position: 'absolute',\r\n right: 0,\r\n transform: 'scaleX(0)',\r\n pointerEvents: 'none', // Transparent to the hover style.\r\n transition: transitions.create('transform', {\r\n duration: transitions.duration.shorter,\r\n easing: transitions.easing.easeOut,\r\n }),\r\n marginInline: 8,\r\n },\r\n '&$focused:after': {\r\n transform: 'scaleX(1)',\r\n },\r\n '&$error:after': {\r\n borderBottomColor: bookitColors.danger.regular,\r\n transform: 'scaleX(1)', // error is always underlined in red\r\n },\r\n '&:before': {\r\n borderBottom: 'none',\r\n left: 0,\r\n bottom: -1,\r\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\r\n content: '\"\\\\00a0\"',\r\n // content: '\"\"',\r\n position: 'absolute',\r\n right: 0,\r\n transition: transitions.create('border-bottom-color', {\r\n duration: transitions.duration.shorter,\r\n }),\r\n pointerEvents: 'none', // Transparent to the hover style.\r\n marginInline: 8,\r\n },\r\n '&:hover:before': {\r\n borderBottom: 'none',\r\n },\r\n '&$disabled:before': {\r\n borderBottomStyle: 'none',\r\n },\r\n '&$focused:before': {\r\n borderBottom: `1px solid ${bookitColors.primary.regular}`,\r\n transform: 'scaleX(1)',\r\n },\r\n '&$error:before': {\r\n borderBottom: `1px solid ${bookitColors.danger.regular}`,\r\n transform: 'scaleX(1)',\r\n },\r\n },\r\n /* Pseudo-class applied to the root element if the component is focused. */\r\n focused: {},\r\n\r\n /* Pseudo-class applied to the root element if `disabled={true}`. */\r\n disabled: {},\r\n\r\n /* Styles applied to the root element if `startAdornment` is provided. */\r\n adornedStart: {\r\n paddingLeft: 12,\r\n },\r\n\r\n /* Styles applied to the root element if `endAdornment` is provided. */\r\n adornedEnd: {\r\n paddingRight: 12,\r\n },\r\n\r\n /* Pseudo-class applied to the root element if `error={true}`. */\r\n error: {},\r\n\r\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\r\n marginDense: {},\r\n\r\n /* Styles applied to the root element if `multiline={true}`. */\r\n multiline: {\r\n padding: '4px 12px 4px',\r\n '&$marginDense': {\r\n paddingTop: 23,\r\n paddingBottom: 6,\r\n },\r\n },\r\n // input: {\r\n // height: '20px',\r\n // padding: '22px 12px 4px',\r\n // },\r\n // inputMarginDense: {\r\n // paddingTop: '16px',\r\n // paddingBottom: '6px',\r\n // },\r\n /* Styles applied to the `input` element. */\r\n input: {\r\n height: '20px',\r\n padding: '26px 12px 8px',\r\n '&:-webkit-autofill': {\r\n // WebkitBoxShadow:\r\n // theme.palette.type === 'light' ? null : '0 0 0 100px #266798 inset',\r\n // WebkitTextFillColor: theme.palette.type === 'light' ? null : '#fff',\r\n // caretColor: theme.palette.type === 'light' ? null : '#fff',\r\n borderTopLeftRadius: 'inherit',\r\n borderTopRightRadius: 'inherit',\r\n },\r\n '.inputSizeLarge &': {\r\n paddingTop: 22,\r\n paddingBottom: 4,\r\n },\r\n '.inputSizeLarge.noLabel &': {\r\n paddingTop: 14,\r\n paddingBottom: 12,\r\n },\r\n '.inputSizeMedium &': {\r\n paddingTop: 9,\r\n paddingBottom: 9,\r\n },\r\n '.inputSizeSmall &': {\r\n paddingTop: 5,\r\n paddingBottom: 5,\r\n },\r\n '.inputSizeXl &': {\r\n padding: '26px 12px 8px',\r\n },\r\n },\r\n\r\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\r\n inputMarginDense: {\r\n paddingTop: 22,\r\n paddingBottom: 4,\r\n },\r\n\r\n /* Styles applied to the `input` if in ``. */\r\n inputHiddenLabel: {\r\n paddingTop: 17,\r\n paddingBottom: 17,\r\n '&$inputMarginDense': {\r\n paddingTop: 9,\r\n paddingBottom: 9,\r\n },\r\n },\r\n\r\n /* Styles applied to the `input` element if `multiline={true}`. */\r\n inputMultiline: {\r\n padding: 0,\r\n '.inputSizeLarge &': {\r\n paddingTop: 14,\r\n paddingBottom: 4,\r\n },\r\n height: 'auto',\r\n },\r\n\r\n /* Styles applied to the `input` element if `startAdornment` is provided. */\r\n inputAdornedStart: {\r\n paddingLeft: 0,\r\n },\r\n\r\n /* Styles applied to the `input` element if `endAdornment` is provided. */\r\n inputAdornedEnd: {\r\n paddingRight: 0,\r\n },\r\n },\r\n MuiFormHelperText: {\r\n /* Styles applied to the root element. */\r\n root: {\r\n display: 'flex',\r\n paddingLeft: '4px',\r\n alignItems: 'center',\r\n gap: 0,\r\n alignSelf: 'stretch',\r\n color: bookitColors.grayscale.blackRegular,\r\n ...tipsRegular,\r\n textAlign: 'left',\r\n marginTop: 0,\r\n margin: 0,\r\n '&$disabled': {\r\n color: bookitColors.grayscale.graySelection,\r\n },\r\n '&$error': {\r\n color: bookitColors.danger.regular,\r\n },\r\n '&.boxed': {\r\n gap: 0,\r\n },\r\n '&.shiftRight': {\r\n gap: 28,\r\n },\r\n // '&.separate-picker': {\r\n // position: 'absolute',\r\n // top: 0,\r\n // left: 0,\r\n // '&.inputSizeLarge': {\r\n // transform: 'translate(0px, 54px) scale(1)',\r\n // },\r\n // '&.inputSizeMedium': {\r\n // transform: 'translate(0px, 46px) scale(1)',\r\n // },\r\n // '&.inputSizeSmall': {\r\n // transform: 'translate(0px, 38px) scale(1)',\r\n // },\r\n // },\r\n // empty helperText results in zero element height. So when field is validated the appearance of the\r\n // error message in the helperText causes the form element to increase in height and forces a redraw\r\n // empty char \\00a0 causes the FormHelperText to always occupy one line height and prevents reflows\r\n '&::before': {\r\n content: '\"\\\\00a0\"',\r\n },\r\n // marginLeft: '6px',\r\n // ...tipsRegular,\r\n },\r\n\r\n /* Pseudo-class applied to the root element if `error={true}`. */\r\n error: {},\r\n\r\n /* Pseudo-class applied to the root element if `disabled={true}`. */\r\n disabled: {},\r\n\r\n /* Styles applied to the root element if `margin=\"dense\"`. */\r\n marginDense: {\r\n marginTop: 4,\r\n },\r\n\r\n /* Styles applied to the root element if `variant=\"filled\"` or `variant=\"outlined\"`. */\r\n contained: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n\r\n /* Pseudo-class applied to the root element if `focused={true}`. */\r\n focused: {},\r\n\r\n /* Pseudo-class applied to the root element if `filled={true}`. */\r\n filled: {},\r\n\r\n /* Pseudo-class applied to the root element if `required={true}`. */\r\n required: {},\r\n },\r\n MuiFormGroup: {\r\n /* Styles applied to the root element. */\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexWrap: 'wrap',\r\n '&.shortLabel': {\r\n flexWrap: 'initial',\r\n },\r\n gap: 8,\r\n '&.boxed': {\r\n display: 'flex',\r\n height: 'auto',\r\n minHeight: '56px',\r\n //justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '10px',\r\n alignSelf: 'stretch',\r\n padding: '16px',\r\n borderRadius: '8px',\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n background: bookitColors.base.white,\r\n '&.toggleSizeSmall': {\r\n minHeight: '48px',\r\n padding: '12px',\r\n },\r\n '&.boxedError': {\r\n border: `1px solid ${bookitColors.danger.borders}`,\r\n },\r\n '&.boxedChecked': {\r\n border: `1px solid ${bookitColors.primary.borders}`,\r\n background: bookitColors.primary.background,\r\n // '&.boxedSecondary': {\r\n // border: `1px solid ${bookitColors.success.borders}`,\r\n // background: bookitColors.success.background,\r\n // },\r\n '&.boxedError': {\r\n border: `1px solid ${bookitColors.danger.borders}`,\r\n background: bookitColors.danger.background,\r\n },\r\n },\r\n },\r\n '&.horizontal': {\r\n gap: '16px',\r\n },\r\n '&.vertical': {\r\n gap: '16px',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n },\r\n '&.chip-form-group': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n flexWrap: 'wrap',\r\n justifyContent: 'flex-start',\r\n gap: '6px',\r\n },\r\n },\r\n /* Styles applied to the root element if `row={true}`. */\r\n row: {\r\n flexDirection: 'row',\r\n '&.boxed': {\r\n justifyContent: 'space-between',\r\n },\r\n },\r\n },\r\n MuiFormLabel: {\r\n root: {\r\n color: bookitColors.grayscale.graySubtitles,\r\n ...bodyS,\r\n '&$focused': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n '&$error': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n '&$disabled': {\r\n color: bookitColors.grayscale.grayComponents,\r\n },\r\n '&.ghosInputLabel': {\r\n display: 'flex',\r\n height: '17px',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignSelf: 'stretch',\r\n color: bookitColors.grayscale.graySubtitles,\r\n ...bookitTypography.captionRegular,\r\n '&.ghosInputLabelBold': {\r\n fontWeight: '900',\r\n },\r\n },\r\n '&.chip-label': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n ...inputLabelXS,\r\n '.Mui-focused &': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n },\r\n '&.file-label': {\r\n color: bookitColors.grayscale.blackRegular,\r\n ...buttonM,\r\n '.Mui-focused &': {\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n marginBottom: '8px',\r\n },\r\n '&.radio-group-base-label': {\r\n marginBottom: '24px',\r\n color: bookitColors.grayscale.blackRegular,\r\n ...buttonM,\r\n '&$focused': {\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&.withLabel': {\r\n marginBottom: '8px',\r\n },\r\n '&.boldLabel': {\r\n fontWeight: 700,\r\n },\r\n },\r\n '&.paragraph': {\r\n ...inputLabelXS,\r\n color: bookitColors.grayscale.grayComponents,\r\n },\r\n },\r\n focused: {}, // Define focused here\r\n error: {}, // Define error here\r\n disabled: {}, // Define disabled here\r\n asterisk: {\r\n color: bookitColors.danger.regular,\r\n },\r\n },\r\n MuiInputLabel: {\r\n root: {\r\n color: bookitColors.grayscale.grayComponents,\r\n ...inputValueS,\r\n display: 'block',\r\n transformOrigin: 'top left',\r\n '&.datetime-picker': {\r\n position: 'relative',\r\n transform: 'unset',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n width: '13ch',\r\n display: 'inline-block',\r\n },\r\n '&.shrinkFile': {\r\n transform: 'translate(12px, 4px) scale(0.85)',\r\n },\r\n },\r\n /* Pseudo-class applied to the root element if `focused={true}`. */\r\n focused: {},\r\n\r\n /* Pseudo-class applied to the root element if `disabled={true}`. */\r\n disabled: {},\r\n\r\n /* Pseudo-class applied to the root element if `error={true}`. */\r\n error: {},\r\n\r\n /* Pseudo-class applied to the root element if `required={true}`. */\r\n required: {},\r\n\r\n /* Pseudo-class applied to the asterisk element. */\r\n asterisk: {},\r\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\r\n formControl: {\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n // slight alteration to spec spacing to match visual spec result\r\n transform: 'translate(0, 24px) scale(1)',\r\n '&.standard': {\r\n transform: 'translate(12px, 10px) scale(1)',\r\n '&.inputSizeSmall': {\r\n transform: 'translate(12px, 5px) scale(1)',\r\n },\r\n '&.inputSizeLarge': {\r\n transform: 'translate(12px, 14px) scale(1)',\r\n },\r\n '&.inputSizeXl': {\r\n transform: 'translate(12px, 18px) scale(1)',\r\n },\r\n '&.inputSizeMedium': {\r\n transform: 'translate(12px, 10px) scale(1)',\r\n },\r\n },\r\n '&.date-dropdown-picker': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.time-options-picker': {\r\n transform: 'translate(0px, -26px) scale(1)',\r\n },\r\n '&.noLabelInline': {\r\n transform: 'translate(0px, 0px) scale(1)',\r\n },\r\n },\r\n /* Styles applied to the root element if `margin=\"dense\"`. */\r\n marginDense: {\r\n // Compensation for the `Input.inputDense` style.\r\n transform: 'translate(0, 21px) scale(1)',\r\n },\r\n /* Styles applied to the `input` element if `disableAnimation={false}`. */\r\n animated: {\r\n transition: transitions.create(['color', 'transform'], {\r\n duration: transitions.duration.shorter,\r\n easing: transitions.easing.easeOut,\r\n }),\r\n },\r\n /* Styles applied to the `input` element if `shrink={true}`. */\r\n shrink: {\r\n transform: 'translate(0, -2.5px) scale(1.1)',\r\n //transform: 'translate(0, 1.5px) scale(0.75)',\r\n transformOrigin: 'top left',\r\n ...inputLabelXS,\r\n '&.standard': {\r\n transform: 'translate(12px, 8px) scale(1)',\r\n '&.inputSizeSmall': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.inputSizeLarge': {\r\n transform: 'translate(12px, 6px) scale(1)',\r\n },\r\n '&.inputSizeMedium': {\r\n transform: 'translate(12px, 2px) scale(1)',\r\n },\r\n '&.inputSizeXl': {\r\n transform: 'translate(12px, 8px) scale(1)',\r\n },\r\n },\r\n },\r\n /* Styles applied to the root element if `variant=\"filled\"`. */\r\n filled: {\r\n // Chrome's autofill feature gives the input field a yellow background.\r\n // Since the input field is behind the label in the HTML tree,\r\n // the input field is drawn last and hides the label with an opaque background color.\r\n // zIndex: 1 will raise the label above opaque background-colors of input.\r\n zIndex: 1,\r\n pointerEvents: 'none',\r\n height: '20px',\r\n paddingTop: 0,\r\n maxWidth: 'calc(100% - 24px)',\r\n width: '100%',\r\n transform: 'translate(12px, 18px) scale(1)',\r\n '&.hasEndIcon, &.hasStartIcon': {\r\n maxWidth: 'calc(100% - 48px)',\r\n },\r\n '& .base-input-label': {\r\n maxWidth: '100%',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n display: 'inline-block',\r\n },\r\n '&.Mui-required': {\r\n '& .base-input-label': {\r\n maxWidth: 'calc(100% - 12px)',\r\n },\r\n },\r\n '&.inputSizeLarge': {\r\n transform: 'translate(12px, 14px) scale(1)',\r\n '&.separate-picker': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.date-dropdown-picker': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.time-options-picker': {\r\n transform: 'translate(0px, -26px) scale(1)',\r\n },\r\n },\r\n '&.inputSizeMedium': {\r\n transform: 'translate(12px, 10px) scale(1)',\r\n '&.separate-picker': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.date-dropdown-picker': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.time-options-picker': {\r\n transform: 'translate(0px, -26px) scale(1)',\r\n },\r\n },\r\n '&.inputSizeSmall': {\r\n transform: 'translate(12px, 6px) scale(1)',\r\n '&.separate-picker': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.date-dropdown-picker': {\r\n transform: 'translate(0px, -20px) scale(1)',\r\n },\r\n '&.time-options-picker': {\r\n transform: 'translate(0px, -26px) scale(1)',\r\n },\r\n },\r\n '&$marginDense': {\r\n transform: 'translate(12px, 8px) scale(1)',\r\n },\r\n '&$shrink': {\r\n // letterSpacing: '0.2px',\r\n ...inputLabelXS,\r\n '&.inputSizeLarge': {\r\n transform: 'translate(12px, 6px) scale(1)',\r\n },\r\n '&.inputSizeMedium': {\r\n transform: 'translate(12px, 2px) scale(1)',\r\n },\r\n '&.inputSizeSmall': {\r\n transform: 'translate(12px, -18px) scale(1)',\r\n },\r\n transform: 'translate(12px, 6px) scale(1)',\r\n '&$marginDense': {\r\n transform: 'translate(12px, 4px) scale(0.75)',\r\n },\r\n },\r\n '&.datetime-picker': {\r\n transform: 'unset',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n width: '13ch',\r\n display: 'inline-block',\r\n },\r\n '&.rich-text-input-label': {\r\n transform: 'translate(9px, 15px) scale(1)',\r\n '&.rich-text-input-label-focused': {\r\n transform: 'translate(9px, 38px) scale(0.8)',\r\n },\r\n },\r\n // transform: 'translate(12px, 20px) scale(1)',\r\n // '&$marginDense': {\r\n // transform: 'translate(12px, 17px) scale(1)',\r\n // },\r\n // '&$shrink': {\r\n // transform: 'translate(12px, 10px) scale(0.75)',\r\n // '&$marginDense': {\r\n // transform: 'translate(12px, 7px) scale(0.75)',\r\n // },\r\n // },\r\n },\r\n /* Styles applied to the root element if `variant=\"outlined\"`. */\r\n outlined: {\r\n // see comment above on filled.zIndex\r\n zIndex: 1,\r\n pointerEvents: 'none',\r\n transform: 'translate(14px, 20px) scale(1)',\r\n '&$marginDense': {\r\n transform: 'translate(14px, 12px) scale(1)',\r\n },\r\n '&$shrink': {\r\n transform: 'translate(14px, -6px) scale(0.75)',\r\n },\r\n },\r\n },\r\n MuiInputAdornment: {\r\n positionStart: {\r\n cursor: 'pointer',\r\n '& svg': {\r\n width: '16px',\r\n height: '16px',\r\n },\r\n },\r\n positionEnd: {\r\n '&.date-picker': {\r\n marginLeft: 0,\r\n },\r\n },\r\n filled: {\r\n '&$positionStart:not($hiddenLabel)': {\r\n marginTop: 0,\r\n },\r\n width: '18px',\r\n height: '20px',\r\n cursor: 'pointer',\r\n '& svg': {\r\n height: '16px',\r\n width: '16px',\r\n },\r\n '&.text-end': {\r\n width: 'auto',\r\n },\r\n },\r\n marginDense: {\r\n '& svg': {\r\n fontSize: '0.8rem',\r\n cursor: 'pointer',\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n root: {\r\n cursor: 'auto',\r\n },\r\n fontSizeSmall: {\r\n fontSize: '0.8rem',\r\n },\r\n },\r\n MuiList: {\r\n root: {\r\n '&.side-bar-second-menu': {\r\n '&.side-bar-second-menu-open': {\r\n padding: '12px 0px 12px 0px',\r\n '& .side-bar-second-menu-item': {\r\n height: '32px',\r\n padding: '0px 8px 0px 16px',\r\n '& .side-bar-second-item-text': {\r\n '& [class*=\"MuiListItemText-primary\"]': {\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n width: '18ch',\r\n ...bookitTypography.bodyS,\r\n },\r\n },\r\n '&:hover': {\r\n background: bookitColors.primary.bgHover,\r\n },\r\n '&:active, &:focus': {\r\n background: bookitColors.primary.bgHover,\r\n '& .side-bar-second-item-text': {\r\n '& [class*=\"MuiListItemText-primary\"]': {\r\n fontWeight: 600,\r\n },\r\n },\r\n },\r\n '&.Mui-selected': {\r\n background: bookitColors.primary.bgHover,\r\n '& .side-bar-second-item-text': {\r\n '& [class*=\"MuiListItemText-primary\"]': {\r\n fontWeight: 600,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '&.sideBarList': {\r\n '& .sideBarListGroup': {\r\n display: 'flex',\r\n padding: '12px 0px',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n alignSelf: 'stretch',\r\n borderBottom: `1px solid ${bookitColors.grayscale.graySelection}`,\r\n },\r\n '&.sideBarCollapsed': {\r\n alignSelf: 'stretch',\r\n },\r\n '&.sideBarExpanded': {\r\n width: '240px',\r\n '&.sideBarListMobile': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n '&.secondMenuItem': {\r\n display: 'flex',\r\n paddingBottom: '12px',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n background: bookitColors.grayscale.graybgComponents,\r\n '.sideBarListMobile &': {\r\n width: '100%',\r\n },\r\n '& .menuItem': {\r\n display: 'flex',\r\n width: '240px',\r\n height: '32px',\r\n padding: '0px 8px 0px 16px',\r\n alignItems: 'center',\r\n gap: '8px',\r\n '.sideBarListMobile &': {\r\n width: '100%',\r\n },\r\n '&:hover, &:focus': {\r\n background: bookitColors.primary.bgHover,\r\n '& .menuItemContent': {\r\n '& .menuItemText': {\r\n ...bookitTypography.bodyS,\r\n },\r\n },\r\n },\r\n '&:active': {\r\n background: bookitColors.primary.bgHover,\r\n '& .menuItemContent': {\r\n '& .menuItemText': {\r\n ...bookitTypography.bodyS,\r\n },\r\n },\r\n },\r\n '&.Mui-selected': {\r\n background: bookitColors.primary.bgHover,\r\n '& .menuItemContent': {\r\n '& .menuItemText': {\r\n ...bookitTypography.bodyS,\r\n fontWeight: 600,\r\n },\r\n },\r\n },\r\n '& .menuItemContent': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: '8px',\r\n gap: '8px',\r\n flex: '1 0 0',\r\n '& .menuItemIcon': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '7.5px',\r\n width: 'auto',\r\n height: 12,\r\n color: bookitColors.grayscale.grayComponents,\r\n '& > svg': {\r\n width: '12px',\r\n },\r\n },\r\n '& .menuItemText': {\r\n flex: '1 0 0',\r\n color: bookitColors.grayscale.blackRegular,\r\n ...bookitTypography.bodyS,\r\n cursor: 'pointer',\r\n whiteSpace: 'inherit',\r\n },\r\n },\r\n },\r\n },\r\n '&.view-type-length-dropdown': {\r\n minWidth: '240px',\r\n },\r\n '&.batch-list': {\r\n maxHeight: '210px',\r\n overflowY: 'auto',\r\n },\r\n '&.browse-by-unit-root': {\r\n width: '100%',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n '&.invoiceTemplateRightSectionRoot': {\r\n width: '100%',\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n position: 'relative',\r\n overflow: 'auto',\r\n maxHeight: '63vh',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n },\r\n },\r\n MuiListItem: {\r\n root: {\r\n gap: 12,\r\n '&.assetListItemLink': {\r\n display: 'flex',\r\n width: '100%',\r\n padding: '4px 8px',\r\n alignItems: 'center',\r\n gap: '12px',\r\n\r\n borderRadius: '4px',\r\n background: bookitColors.base.white,\r\n '&:hover, &:focus': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n '&:active': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n },\r\n },\r\n '&.side-bar-menu-item': {\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n },\r\n '&.side-bar-menu-item-short': {\r\n justifyContent: 'center',\r\n '& .menuItemIcon': {\r\n justifyContent: 'center',\r\n },\r\n },\r\n },\r\n '&.menuItem': {\r\n padding: 0,\r\n '&.mainTabMenu': {\r\n display: 'flex',\r\n height: '40px',\r\n padding: '0px 16px',\r\n alignItems: 'center',\r\n gap: '8px',\r\n alignSelf: 'stretch',\r\n backgroundColor: 'transparent',\r\n '& .menuItemContent': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n flex: '1 0 0',\r\n '& .menuItemIcon': {\r\n display: 'flex',\r\n paddingBottom: '1px',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n width: 'auto',\r\n height: 20,\r\n color: bookitColors.grayscale.grayComponents,\r\n '& > svg': {\r\n width: '19px',\r\n },\r\n },\r\n '& .menuItemText': {\r\n flex: '1 0 0',\r\n color: bookitColors.grayscale.blackRegular,\r\n ...bookitTypography.buttonS,\r\n cursor: 'pointer',\r\n whiteSpace: 'initial',\r\n },\r\n },\r\n '&:hover, &:focus': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n },\r\n '&:active': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n },\r\n '&.mainTabExpanded': {\r\n '& .menuItemContent': {\r\n '& .menuItemIcon': {\r\n minWidth: 'initial',\r\n },\r\n },\r\n },\r\n '&.mainTabShort': {\r\n '& .menuItemContent': {\r\n '& .menuItemIcon': {\r\n minWidth: '60px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n '.hoverItem &': {\r\n display: 'flex',\r\n width: '60px',\r\n height: '40px',\r\n padding: '0px 16px',\r\n alignItems: 'center',\r\n gap: '8px',\r\n backgroundColor: 'transparent',\r\n '& .menuItemHoverContent': {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '8px',\r\n flex: '1 0 0',\r\n '& .menuItemIcon': {\r\n display: 'flex',\r\n paddingBottom: '1px',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n width: 'auto',\r\n height: 20,\r\n color: bookitColors.grayscale.grayComponents,\r\n '& > svg': {\r\n width: '19px',\r\n },\r\n },\r\n },\r\n '&:hover, &:focus': {\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n '& .menuItemHoverContent': {\r\n '& .menuItemIcon': {\r\n color: bookitColors.grayscale.grayComponents,\r\n },\r\n },\r\n },\r\n '&:focus': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n '& .menuItemHoverContent': {\r\n '& .menuItemIcon': {\r\n color: bookitColors.primary.components,\r\n },\r\n },\r\n },\r\n '&:active': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n '& .menuItemHoverContent': {\r\n '& .menuItemIcon': {\r\n color: bookitColors.primary.components,\r\n },\r\n },\r\n },\r\n '&.Mui-selected': {\r\n backgroundColor: bookitColors.primary.bgHover,\r\n '& .menuItemHoverContent': {\r\n '& .menuItemIcon': {\r\n color: bookitColors.primary.components,\r\n },\r\n },\r\n },\r\n },\r\n '&::before': {\r\n // fixes conflict between the sanitize.css nav>li::before (safari reader fix) and Mui's menu items - causing each menu item in nave to occupy 2 lines\r\n content: 'none',\r\n },\r\n '&.actions-admin': {\r\n '& .actions': {\r\n display: 'flex',\r\n gap: '8px',\r\n },\r\n },\r\n '&.browse-by-unit-division-root': {\r\n paddingInline: 23,\r\n cursor: 'pointer',\r\n },\r\n '&.units-root-cursor': {\r\n cursor: 'pointer',\r\n },\r\n '&.units-paddingInline-cursor': {\r\n cursor: 'pointer',\r\n paddingInline: 31,\r\n },\r\n },\r\n container: {\r\n '&::before': {\r\n // fixes conflict between the sanitize.css nav>li::before (safari reader fix) and Mui's menu items - causing each menu item in nave to occupy 2 lines\r\n content: 'none',\r\n },\r\n },\r\n },\r\n MuiListItemText: {\r\n root: {\r\n '.assetListItemLink &': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '8px',\r\n flex: '1 0 0',\r\n margin: 0,\r\n },\r\n },\r\n primary: {\r\n '.assetListItemLink &': {\r\n display: 'inline-block',\r\n maxWidth: '50%',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n ...boldS,\r\n },\r\n // '&.publicAssetItemTextOpen': {\r\n // fontWeight: 'bold',\r\n // },\r\n // '&.publicAssetItemTextSelected': {\r\n // fontWeight: 'bold',\r\n // color: bookitColors.primary.regular,\r\n // },\r\n },\r\n secondary: {\r\n '.assetListItemLink &': {\r\n display: 'flex',\r\n height: '20px',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n flex: '1 0 0',\r\n color: bookitColors.grayscale.blackRegular,\r\n ...bodyS,\r\n },\r\n },\r\n },\r\n MuiListItemIcon: {\r\n root: {\r\n minWidth: 20,\r\n minHeight: 20,\r\n '.assetListItemLink &': {\r\n display: 'flex',\r\n width: '32px',\r\n height: '32px',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '10px',\r\n flexShrink: 0,\r\n borderRadius: '4px',\r\n },\r\n },\r\n },\r\n MuiDivider: {\r\n root: {\r\n '&.side-bar-menu-divider': {\r\n marginTop: '12px',\r\n marginBottom: '12px',\r\n },\r\n },\r\n },\r\n MuiAvatar: {\r\n root: {\r\n '.assetListItemLink &': {\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '4px',\r\n },\r\n '&.customer-logo': {\r\n '&>img': {\r\n objectFit: 'contain',\r\n },\r\n '&.defaultLogoSize': {\r\n height: '36px',\r\n width: 'auto',\r\n },\r\n '&.emptyPageLogoSize': {\r\n height: '40px',\r\n width: 'auto',\r\n },\r\n '&.sidebarLogoSize': {\r\n height: '24px',\r\n width: '90px',\r\n },\r\n },\r\n '&.user-avatar': {\r\n width: '48px',\r\n height: '48px',\r\n backgroundColor: bookitColors.success.bgLight, //'#DBF9ED',\r\n color: bookitColors.success.regular, //'#10BD79',\r\n '&.pointer': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n },\r\n },\r\n MuiTableContainer: {\r\n root: {\r\n overflowX: 'unset',\r\n height: 'inherit',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflowY: 'hidden',\r\n },\r\n },\r\n MuiTable: {\r\n root: {\r\n //flex test -----\r\n // display: 'flex',\r\n // flexFlow: 'column nowrap',\r\n // flex: '1 1 auto',\r\n //---------------\r\n padding: 0,\r\n borderRadius: '8px',\r\n boxShadow: `inset 0px 0px 1px 1px ${bookitColors.grayscale.grayBorders}`,\r\n // [breakpoints.down('md')]: {\r\n // display: 'block',\r\n // overflowX: 'auto',\r\n // height: '100%',\r\n // },\r\n },\r\n },\r\n MuiTableHead: {\r\n root: {\r\n //flex test -----\r\n // display: 'flex',\r\n // flexFlow: 'row nowrap',\r\n // alignItems: 'flex-start',\r\n //width: 'inherit',\r\n //---------------\r\n padding: 0,\r\n },\r\n },\r\n MuiTableBody: {\r\n root: {\r\n //flex test -----\r\n // display: 'flex',\r\n // flexFlow: 'row wrap',\r\n // width: 'inherit',\r\n //---------------\r\n padding: 0,\r\n },\r\n },\r\n MuiTableRow: {\r\n root: {\r\n //flex test -----\r\n // display: 'flex',\r\n // flex: '1 1 auto',\r\n // width: 'inherit',\r\n //---------------\r\n '& td:first-child ': {\r\n boxShadow: `0px 1px 0px 0px ${bookitColors.grayscale.grayBorders}`,\r\n },\r\n '& th:first-child ': {\r\n boxShadow: `0px 1px 0px 0px ${bookitColors.grayscale.grayBorders}`,\r\n },\r\n '& .row-clickable': {\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n '&.row-pan': {\r\n width: '12px',\r\n height: '12px',\r\n cursor: `url('${process.env.PUBLIC_URL}/images/pen_icon.png') 0 150, pointer`,\r\n },\r\n },\r\n },\r\n },\r\n MuiTableCell: {\r\n root: {\r\n //flex test -----\r\n // display: 'flex',\r\n // flexFlow: 'row nowrap',\r\n // flexGrow: 1,\r\n // flexBasis: 0,\r\n //---------------\r\n //height: '32px',\r\n ...bodyS,\r\n boxShadow: `-1px 1px 0px ${bookitColors.grayscale.grayBorders}`,\r\n borderBottom: 'unset',\r\n height: '56px',\r\n color: bookitColors.grayscale.blackRegular,\r\n [breakpoints.down('md')]: {\r\n whiteSpace: 'nowrap',\r\n },\r\n '&.services-cell': {\r\n // setting the background color on the cell causes it's borders to disappear\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n backgroundClip: 'content-box',\r\n // unsets 56px cell height set on TableCell\r\n height: 'unset',\r\n padding: '1px',\r\n '& .table-root': {\r\n paddingBottom: '24px',\r\n },\r\n },\r\n '&.cell-grouped': {\r\n fontWeight: 'bold',\r\n },\r\n },\r\n head: {\r\n lineHeight: '164%',\r\n fontWeight: 'bold',\r\n padding: '4px 12px',\r\n gap: '10px',\r\n whiteSpace: 'nowrap',\r\n },\r\n body: {\r\n fontWeight: 'normal',\r\n lineHeight: '141%',\r\n padding: '8px 12px',\r\n gap: '10px',\r\n '& > span a': {\r\n color: bookitColors.primary.regular, // accentColors.colorAccentRegular,\r\n },\r\n '& > span > button': {\r\n color: bookitColors.primary.regular, //accentColors.colorAccentRegular,\r\n },\r\n '& > a': {\r\n color: bookitColors.primary.regular, // accentColors.colorAccentRegular,\r\n },\r\n '& > button': {\r\n color: bookitColors.primary.regular, // accentColors.colorAccentRegular,\r\n },\r\n // '& > span': {\r\n // display: 'inline-block',\r\n // whiteSpace: 'break-spaces',\r\n // maxWidth: '25ch',\r\n // minWidth: '6ch',\r\n // //overflow: 'hidden',\r\n // //textOverflow: 'ellipsis',\r\n // },\r\n },\r\n sizeSmall: {\r\n height: '40px',\r\n padding: '0px 12px',\r\n gap: '10px',\r\n },\r\n footer: {\r\n lineHeight: '164%',\r\n fontWeight: 'bold',\r\n padding: '12px',\r\n },\r\n },\r\n MuiTableSortLabel: {\r\n root: {\r\n cursor: 'pointer',\r\n '&$active': {\r\n // && instead of & is a workaround for https://github.com/cssinjs/jss/issues/1045\r\n '&& $icon': {\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n },\r\n '&:focus': {\r\n '&& $icon': {\r\n fontSize: 16,\r\n opacity: 0.5,\r\n },\r\n },\r\n },\r\n icon: {\r\n fontSize: '12px',\r\n cursor: 'pointer',\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n },\r\n MuiTablePagination: {\r\n root: {\r\n fontSize: '14px',\r\n color: bookitColors.grayscale.blackRegular,\r\n backgroundColor: bookitColors.base.white,\r\n '.table-cards &': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n },\r\n caption: {\r\n fontSize: '14px', // convert('14px', 'em'),\r\n fontWeight: 'bold',\r\n letterSpacing: '0.1px',\r\n lineHeight: '151%',\r\n },\r\n spacer: {\r\n flex: 'none',\r\n },\r\n input: {\r\n marginRight: 'auto',\r\n marginLeft: 0,\r\n },\r\n selectRoot: {\r\n fontWeight: 'bold',\r\n },\r\n select: {\r\n '&:focus': {\r\n border: `1px solid ${bookitColors.primary.hover}`,\r\n background: bookitColors.primary.background,\r\n borderRadius: '6px',\r\n fontWeight: 'bold',\r\n color: bookitColors.primary.dark,\r\n },\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: 0,\r\n gap: '16px',\r\n fontWeight: 'bold',\r\n fontSize: '14px',\r\n minHeight: '40px',\r\n '.table-content-short &': {\r\n gap: '0px',\r\n },\r\n },\r\n menuItem: {\r\n padding: '10px 16px',\r\n gap: '12px',\r\n fontSize: '14px',\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n },\r\n MuiTextField: {\r\n root: {\r\n '&.startIcon': {\r\n '& > label': {\r\n marginLeft: '24px',\r\n },\r\n },\r\n '&.invoiceTemplateHtmlTextBox': {\r\n width: '100%',\r\n minWidth: 500,\r\n backgroundColor: bookitColors.base.white,\r\n maxHeight: '63vh',\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n },\r\n },\r\n MuiPopover: {\r\n root: {\r\n '&.root-popover': {\r\n zIndex: 1300,\r\n },\r\n '&.root-mobile': {\r\n width: '100vw',\r\n height: 'calc(100% - 90px)',\r\n overflow: 'auto',\r\n },\r\n },\r\n paper: {\r\n '.full-height &': {\r\n height: '100%',\r\n },\r\n },\r\n },\r\n MuiChip: {\r\n root: {\r\n '&.recentItem': {\r\n display: 'flex',\r\n height: '32px',\r\n padding: '0px 8px',\r\n alignItems: 'center',\r\n gap: '12px',\r\n flexShrink: 0,\r\n justifyContent: 'flex-start',\r\n ...bodyS,\r\n borderRadius: '4px',\r\n background: bookitColors.base.white,\r\n '& [class*=\"MuiChip-avatar\"]': {\r\n margin: 0,\r\n width: 16,\r\n height: 16,\r\n color: bookitColors.grayscale.grayComponents,\r\n },\r\n '&$disabled': {\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n opacity: 1,\r\n },\r\n '&:hover, &:focus': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n '&:active': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n boxShadow: 'none',\r\n },\r\n '& [class*=\"MuiChip-label\"]': {\r\n flex: '1 0 0',\r\n padding: 0,\r\n },\r\n },\r\n },\r\n clickable: {\r\n '&:focus': {\r\n backgroundColor: bookitColors.grayscale.grayComponentsLight,\r\n color: bookitColors.base.black,\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.grayComponentsLight,\r\n color: bookitColors.base.black,\r\n },\r\n },\r\n },\r\n MuiButton: MuiButtonOverride,\r\n MuiIconButton: MuiIconButtonOverride,\r\n MuiToggleButtonGroup: MuiToggleButtonGroupOverride,\r\n MuiToggleButton: MuiToggleButtonOverride,\r\n MuiSwitch: {\r\n //TO DO: set a padding: '0px' after Toggle component will replace a Switch component\r\n /* Styles applied to the root element. */\r\n root: {\r\n display: 'inline-flex',\r\n width: 36,\r\n height: 20,\r\n overflow: 'hidden',\r\n padding: '0px',\r\n boxSizing: 'border-box',\r\n position: 'relative',\r\n flexShrink: 0,\r\n zIndex: 0,\r\n // Reset the stacking context.\r\n verticalAlign: 'middle',\r\n // For correct alignment with the text.\r\n '@media print': {\r\n colorAdjust: 'exact',\r\n },\r\n // '&>[class*=\"PrivateSwitchBase-root\"]': {\r\n // padding: 2,\r\n // },\r\n },\r\n /* Styles applied to the internal `SwitchBase` component's `root` class. */\r\n switchBase: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n zIndex: 1,\r\n // Render above the focus ripple.\r\n color: bookitColors.grayscale.grayComponents,\r\n transition: transitions.create(['left', 'transform'], {\r\n duration: transitions.duration.shortest,\r\n }),\r\n padding: '2px',\r\n border: 0,\r\n '&$checked': {\r\n transform: 'translateX(16px)',\r\n },\r\n '&$disabled': {\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n '&$checked + $track': {\r\n opacity: 'unset',\r\n },\r\n '&$disabled + $track': {\r\n opacity: 'unset',\r\n },\r\n },\r\n /* Pseudo-class applied to the internal `SwitchBase` component's `checked` class. */\r\n checked: {},\r\n\r\n /* Pseudo-class applied to the internal SwitchBase component's disabled class. */\r\n disabled: {},\r\n\r\n /* Styles applied to the internal SwitchBase component's input element. */\r\n input: {\r\n left: '-100%',\r\n width: '300%',\r\n },\r\n /* Styles applied to the internal SwitchBase component's root element if `color=\"primary\"`. */\r\n colorPrimary: {\r\n '&$checked': {\r\n color: bookitColors.primary.components,\r\n '&:hover': {\r\n //backgroundColor: bookitColors.primary.componentsLight,\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n '&$disabled': {\r\n color: bookitColors.grayscale.graySelection,\r\n //backgroundColor: bookitColors.grayscale.graySelection,\r\n },\r\n '&$checked + $track': {\r\n backgroundColor: bookitColors.primary.components,\r\n },\r\n '&.Mui-checked.Mui-disabled + $track': {\r\n backgroundColor: bookitColors.primary.disabled,\r\n },\r\n '&$disabled + $track': {\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n },\r\n },\r\n /* Styles applied to the internal SwitchBase component's root element if `color=\"secondary\"`. */\r\n colorSecondary: {\r\n '&$checked': {\r\n color: bookitColors.danger.regular,\r\n '&:hover': {\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n '&$disabled': {\r\n color: bookitColors.danger.disabled,\r\n },\r\n '&$checked + $track': {\r\n backgroundColor: bookitColors.danger.regular,\r\n },\r\n '&.Mui-checked.Mui-disabled + $track': {\r\n backgroundColor: bookitColors.danger.disabled,\r\n },\r\n '&$disabled + $track': {\r\n backgroundColor: bookitColors.grayscale.graySelection,\r\n border: `1px solid ${bookitColors.danger.borders}`,\r\n },\r\n },\r\n /* Styles applied to the root element if `size=\"small\"`. */\r\n sizeSmall: {\r\n width: 36,\r\n height: 20,\r\n padding: 0,\r\n '& $thumb': {\r\n width: 16,\r\n height: 16,\r\n },\r\n '& $switchBase': {\r\n padding: 2,\r\n '&$checked': {\r\n transform: 'translateX(16px)',\r\n },\r\n },\r\n },\r\n /* Styles used to create the thumb passed to the internal `SwitchBase` component `icon` prop. */\r\n thumb: {\r\n backgroundColor: bookitColors.base.white,\r\n borderRadius: '8px',\r\n height: '16px',\r\n position: 'relative',\r\n width: '16px',\r\n boxShadow: box_shadow_s,\r\n },\r\n /* Styles applied to the track element. */\r\n track: {\r\n borderRadius: '100px',\r\n padding: '0px',\r\n height: '100%',\r\n width: '100%',\r\n zIndex: -1,\r\n transition: 'unset',\r\n backgroundColor: bookitColors.grayscale.grayComponentsLight,\r\n opacity: 'unset',\r\n },\r\n },\r\n MuiFormControl: {\r\n /* Styles applied to the root element. */\r\n root: {\r\n display: 'inline-flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n // Reset fieldset default style.\r\n minWidth: 0,\r\n padding: 0,\r\n margin: 0,\r\n border: 0,\r\n verticalAlign: 'top', // Fix alignment issue on Safari.\r\n\r\n minHeight: '20px',\r\n // alignItems: 'center',\r\n gap: '8px',\r\n flexShrink: 1,\r\n '&.boxed': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'flex-start',\r\n gap: '8px',\r\n },\r\n '&.inputSizeMedium.withLabel': {\r\n marginTop: '16px',\r\n },\r\n '&.inputSizeSmall.withLabel': {\r\n marginTop: '16px',\r\n },\r\n '&.separate-picker': {\r\n // flexDirection: 'row',\r\n // flexShrink: 1,\r\n // marginBottom: '18px',\r\n '& .separate-picker-inputs': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flex: '1 1 auto',\r\n alignSelf: 'stretch',\r\n alignItems: 'center',\r\n gap: 8,\r\n },\r\n '&.withLabel': {\r\n marginTop: '16px',\r\n },\r\n },\r\n '&.separate-time-picker': {\r\n flexShrink: 1,\r\n },\r\n '&.separate-date-picker': {\r\n flexShrink: 1,\r\n },\r\n '&.datetime-picker': {\r\n // flexDirection: 'row',\r\n // flexShrink: 1,\r\n // marginBottom: '18px',\r\n '& .datetime-picker-inputs': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flex: '1 1 auto',\r\n alignSelf: 'stretch',\r\n alignItems: 'center',\r\n gap: 8,\r\n },\r\n // '&.withLabel': {\r\n // marginTop: '16px',\r\n // },\r\n },\r\n '&.datetime-time-picker': {\r\n flexShrink: 1,\r\n },\r\n '&.datetime-date-picker': {\r\n flexShrink: 1,\r\n },\r\n '&.date-dropdown-picker': {\r\n // flexDirection: 'row',\r\n // flexShrink: 1,\r\n // marginBottom: '18px',\r\n '& .date-dropdown-picker-inputs': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flex: '1 1 auto',\r\n alignSelf: 'stretch',\r\n alignItems: 'center',\r\n gap: 8,\r\n },\r\n '&.withLabel': {\r\n marginTop: '16px',\r\n },\r\n },\r\n '&.time-options-picker': {\r\n marginTop: '20px',\r\n '&.withLabel': {\r\n marginTop: '20px',\r\n },\r\n },\r\n '&.formLabelText': {\r\n gap: 0,\r\n },\r\n '&.ghostInput': {\r\n display: 'flex',\r\n minHeight: '48px',\r\n padding: '5px 0px',\r\n alignItems: 'center',\r\n gap: '10px',\r\n flexShrink: 0,\r\n borderRadius: '8px',\r\n '& .ghosInputText': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: '1 1 0',\r\n alignItems: 'flex-start',\r\n alignSelf: 'stretch',\r\n width: '100%',\r\n },\r\n },\r\n '&.radio-group-base': {\r\n marginBottom: 0,\r\n },\r\n '&.base-text-field': {\r\n '&.startIcon': {\r\n '& > label': {\r\n marginLeft: '24px',\r\n },\r\n },\r\n '&.asset-search-input-mobile': {\r\n color: 'inherit',\r\n flexGrow: 1,\r\n flexShrink: 1,\r\n },\r\n '&.asset-search-input': {\r\n color: 'inherit',\r\n flexGrow: 1,\r\n },\r\n },\r\n '&.chip-form-control': {\r\n border: '1px solid #CDD5DF',\r\n borderRadius: '6px',\r\n minHeight: '48px',\r\n backgroundColor: '#ffffffcc',\r\n paddingBlock: '8px',\r\n paddingInline: '6px',\r\n width: '100%',\r\n maxWidth: 'calc(100% - 26px)',\r\n },\r\n '&.text-box-width-xs': {\r\n width: '32px',\r\n '&.number-field': {\r\n width: `${32 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-small': {\r\n width: '48px',\r\n '&.number-field': {\r\n width: `${48 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-medium': {\r\n width: '56px',\r\n '&.number-field': {\r\n width: `${56 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-large': {\r\n width: '72px',\r\n '&.number-field': {\r\n width: `${72 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-default': {\r\n width: '300px',\r\n '&.number-field': {\r\n width: `${300 + 16}px`,\r\n },\r\n },\r\n '&.text-box-width-xl': {\r\n width: '120px',\r\n '&.number-field': {\r\n width: `${120 + 16}px`,\r\n },\r\n },\r\n '&.paragraph-control': {\r\n '& .paragraph-text': {\r\n ...bodyS,\r\n '& > *': {\r\n margin: 0,\r\n },\r\n },\r\n },\r\n },\r\n\r\n /* Styles applied to the root element if `margin=\"normal\"`. */\r\n marginNormal: {\r\n marginTop: 16,\r\n marginBottom: 8,\r\n },\r\n\r\n /* Styles applied to the root element if `margin=\"dense\"`. */\r\n marginDense: {\r\n marginTop: 8,\r\n marginBottom: 4,\r\n },\r\n\r\n /* Styles applied to the root element if `fullWidth={true}`. */\r\n fullWidth: {\r\n width: '100%',\r\n },\r\n },\r\n MuiFormControlLabel: {\r\n /* Styles applied to the root element. */\r\n root: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n // For correct alignment with the text.\r\n verticalAlign: 'middle',\r\n WebkitTapHighlightColor: 'transparent',\r\n marginLeft: 0,\r\n marginRight: 0,\r\n gap: 8,\r\n // used for row presentation of radio/checkbox\r\n '&$disabled': {\r\n cursor: 'default',\r\n },\r\n '&.boldLabel': {\r\n '& $label': {\r\n ...boldS,\r\n '&$disabled': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n },\r\n },\r\n '&.chip-form-label': {\r\n width: '260px',\r\n margin: 0,\r\n },\r\n '&.autoWrap': {\r\n '& $label': {\r\n whiteSpace: 'normal',\r\n overflow: 'visible',\r\n textOverflow: 'unset',\r\n },\r\n },\r\n },\r\n /* Styles applied to the root element if `labelPlacement=\"start\"`. */\r\n labelPlacementStart: {\r\n flexDirection: 'row-reverse',\r\n marginLeft: 16,\r\n // used for row presentation of radio/checkbox\r\n marginRight: -11,\r\n },\r\n\r\n /* Styles applied to the root element if `labelPlacement=\"top\"`. */\r\n labelPlacementTop: {\r\n flexDirection: 'column-reverse',\r\n marginLeft: 0,\r\n marginRight: 2,\r\n },\r\n\r\n /* Styles applied to the root element if `labelPlacement=\"bottom\"`. */\r\n labelPlacementBottom: {\r\n flexDirection: 'column',\r\n marginLeft: 16,\r\n },\r\n\r\n /* Pseudo-class applied to the root element if `disabled={true}`. */\r\n disabled: {},\r\n\r\n /* Styles applied to the label's Typography component. */\r\n label: {\r\n ...bodyS,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n // maxWidth: '25ch',\r\n '&$disabled': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n '&.boldLabel': {\r\n ...boldS,\r\n '&$disabled': {\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n },\r\n '.checkbox-label &': {\r\n whiteSpace: 'pre-wrap',\r\n //maxWidth: '300px',\r\n maxWidth: 'none',\r\n },\r\n '.checkbox-label.fullWidth &': {\r\n whiteSpace: 'normal',\r\n maxWidth: '100%',\r\n },\r\n '.shortLabel &': {\r\n whiteSpace: 'pre-wrap',\r\n maxWidth: '300px',\r\n },\r\n '.shortLabel.withInput &': {\r\n display: 'block',\r\n },\r\n '.withInput &': {\r\n display: 'contents',\r\n },\r\n },\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n color: bookitColors.grayscale.graySelection,\r\n '&.base-check': {\r\n '&[class*=\"PrivateSwitchBase-root\"]': {\r\n '&.with-padding': {\r\n padding: '9px',\r\n },\r\n padding: 0,\r\n },\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n '& .base-check-icon': {\r\n borderRadius: 4,\r\n backgroundColor: bookitColors.base.white,\r\n backgroundImage:\r\n 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\r\n width: '20px',\r\n height: '20px',\r\n '&.checkSizeSmall': {\r\n width: '16px',\r\n height: '16px',\r\n },\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.grayscale.grayBorders}, inset 0 -1px 0 ${bookitColors.grayscale.grayBorders}`,\r\n '&.base-check-danger': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.danger.borders}, inset 0 -1px 0 ${bookitColors.danger.borders}`,\r\n },\r\n\r\n '$root.Mui-focusVisible &': {\r\n // outline: `1px auto ${blackGray.colorGrayComponentsLight}`,\r\n // outlineOffset: 1,\r\n boxShadow: `inset 0 0 0 2px ${bookitColors.grayscale.grayComponentsLight}, inset 0 -1px 0 ${bookitColors.grayscale.grayComponentsLight}`,\r\n '&.base-check-danger': {\r\n boxShadow: `inset 0 0 0 2px ${bookitColors.danger.componentsLight}, inset 0 -1px 0 ${bookitColors.danger.componentsLight}`,\r\n },\r\n },\r\n '&:hover': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.grayscale.grayBorders}, inset 0 -1px 0 ${bookitColors.grayscale.grayBorders}`,\r\n '&.base-check-danger': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.danger.borders}, inset 0 -1px 0 ${bookitColors.danger.borders}`,\r\n },\r\n },\r\n 'input:hover ~ &': {\r\n // backgroundColor: '#ebf1f5',\r\n //border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.grayscale.grayBorders}, inset 0 -1px 0 ${bookitColors.grayscale.grayBorders}`,\r\n '&.base-check-danger': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.danger.borders}, inset 0 -1px 0 ${bookitColors.danger.borders}`,\r\n },\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.grayscale.graySelection}, inset 0 -1px 0 ${bookitColors.grayscale.graySelection}`,\r\n background: bookitColors.grayscale.grayBackground,\r\n '&.base-check-danger': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.danger.disabled}, inset 0 -1px 0 ${bookitColors.danger.disabled}`,\r\n background: bookitColors.danger.background,\r\n },\r\n },\r\n '&.checked-icon': {\r\n boxShadow: 'unset',\r\n backgroundColor: bookitColors.primary.regular,\r\n\r\n '&.base-check-danger': {\r\n backgroundColor: bookitColors.danger.regular,\r\n },\r\n backgroundImage:\r\n 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: '20px',\r\n height: '20px',\r\n '&.checkSizeSmall': {\r\n width: '16px',\r\n height: '16px',\r\n },\r\n backgroundImage:\r\n \"url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath\" +\r\n \" fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 \" +\r\n \"1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z' fill='%23fff'/%3E%3C/svg%3E\\\")\",\r\n content: '\"\"',\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.hover,\r\n boxShadow: 'unset',\r\n '&.base-check-danger': {\r\n backgroundColor: bookitColors.danger.hover,\r\n },\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: bookitColors.primary.hover,\r\n boxShadow: 'unset',\r\n '&.base-check-danger': {\r\n backgroundColor: bookitColors.danger.hover,\r\n },\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'unset', //`inset 0 0 0 1px ${blackGray.colorDividers}, inset 0 -1px 0 ${blackGray.colorDividers}`,\r\n background: bookitColors.primary.disabled,\r\n '&.base-check-danger': {\r\n background: bookitColors.danger.disabled,\r\n },\r\n },\r\n },\r\n '&.indeterminate-icon': {\r\n boxShadow: 'unset',\r\n backgroundColor: bookitColors.primary.regular,\r\n backgroundImage:\r\n 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&.base-check-danger': {\r\n backgroundColor: bookitColors.danger.regular,\r\n },\r\n '&:before': {\r\n display: 'block',\r\n width: '20px',\r\n height: '20px',\r\n '&.checkSizeSmall': {\r\n width: '16px',\r\n height: '16px',\r\n },\r\n backgroundImage:\r\n \"url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-54 -24 516 560'%3E%3Cpath\" +\r\n \" fill-rule='evenodd' clip-rule='evenodd' d='M400 288h-352c-17.69 \" +\r\n \"0-32-14.32-32-32.01s14.31-31.99 32-31.99h352c17.69 0 32 14.3 32 31.99S417.7 288 400 288z' fill='%23fff'/%3E%3C/svg%3E\\\")\",\r\n content: '\"\"',\r\n },\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.hover,\r\n boxShadow: 'unset',\r\n '&.base-check-danger': {\r\n backgroundColor: bookitColors.danger.hover,\r\n },\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: bookitColors.primary.hover,\r\n boxShadow: 'unset',\r\n '&.base-check-danger': {\r\n backgroundColor: bookitColors.danger.hover,\r\n },\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'unset', //`inset 0 0 0 1px ${blackGray.colorDividers}, inset 0 -1px 0 ${blackGray.colorDividers}`,\r\n background: bookitColors.primary.disabled,\r\n '&.base-check-danger': {\r\n background: bookitColors.danger.disabled,\r\n },\r\n },\r\n },\r\n },\r\n '&[class*=\"Mui-disabled\"]': {\r\n '& .base-check-icon': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.grayscale.graySelection}, inset 0 -1px 0 ${bookitColors.grayscale.graySelection}`,\r\n background: bookitColors.grayscale.grayBackground,\r\n '&.base-check-danger': {\r\n boxShadow: `inset 0 0 0 1px ${bookitColors.danger.disabled}, inset 0 -1px 0 ${bookitColors.danger.disabled}`,\r\n background: bookitColors.danger.background,\r\n },\r\n '&.checked-icon': {\r\n boxShadow: 'unset', //`inset 0 0 0 1px ${blackGray.colorDividers}, inset 0 -1px 0 ${blackGray.colorDividers}`,\r\n background: bookitColors.primary.disabled,\r\n '&.base-check-danger': {\r\n background: bookitColors.danger.disabled,\r\n },\r\n },\r\n '&.indeterminate-icon': {\r\n boxShadow: 'unset', //`inset 0 0 0 1px ${blackGray.colorDividers}, inset 0 -1px 0 ${blackGray.colorDividers}`,\r\n background: bookitColors.primary.disabled,\r\n '&.base-check-danger': {\r\n background: bookitColors.danger.disabled,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n // '&[class*=\"PrivateSwitchBase-root\"]': {\r\n // padding: 0,\r\n // },\r\n },\r\n colorPrimary: {\r\n color: bookitColors.primary.borders,\r\n '&$checked': {\r\n color: bookitColors.primary.regular,\r\n '&:hover': {\r\n backgroundColor: bookitColors.base.white,\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n '&$disabled': {\r\n color: bookitColors.primary.disabled,\r\n },\r\n },\r\n /* Styles applied to the root element if `color=\"secondary\"`. */\r\n colorSecondary: {\r\n color: bookitColors.danger.borders,\r\n '&$checked': {\r\n color: bookitColors.danger.regular,\r\n '&:hover': {\r\n backgroundColor: bookitColors.base.white,\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n '&$disabled': {\r\n color: bookitColors.danger.disabled,\r\n },\r\n },\r\n },\r\n MuiRadio: {\r\n /* Styles applied to the root element. */\r\n root: {\r\n color: bookitColors.base.white,\r\n },\r\n\r\n /* Pseudo-class applied to the root element if `checked={true}`. */\r\n checked: {},\r\n\r\n /* Pseudo-class applied to the root element if `disabled={true}`. */\r\n disabled: {},\r\n\r\n /* Styles applied to the root element if `color=\"primary\"`. */\r\n colorPrimary: {\r\n '&$checked': {\r\n color: bookitColors.primary.components,\r\n '&:hover': {\r\n backgroundColor: bookitColors.primary.regular,\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n '&$disabled': {\r\n color: bookitColors.grayscale.grayBorders,\r\n },\r\n },\r\n\r\n /* Styles applied to the root element if `color=\"secondary\"`. */\r\n colorSecondary: {\r\n '&$checked': {\r\n color: bookitColors.danger.components,\r\n '&:hover': {\r\n backgroundColor: bookitColors.danger.regular,\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n '&$disabled': {\r\n color: bookitColors.danger.disabled,\r\n },\r\n },\r\n },\r\n PrivateSwitchBase: {\r\n root: {\r\n padding: 0,\r\n },\r\n checked: {},\r\n disabled: {},\r\n input: {\r\n cursor: 'inherit',\r\n position: 'absolute',\r\n opacity: 0,\r\n width: '100%',\r\n height: '100%',\r\n top: 0,\r\n left: 0,\r\n margin: 0,\r\n padding: 0,\r\n zIndex: 1,\r\n },\r\n },\r\n MuiBadge: {\r\n badge: {\r\n whiteSpace: 'nowrap',\r\n height: '14px',\r\n padding: '2px 0px',\r\n fontSize: '8px',\r\n minWidth: '14px',\r\n lineHeight: '168%',\r\n letterSpacing: '0.8px',\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n padding: '0px 8px 0px 8px',\r\n //textAlign: 'center',\r\n },\r\n // stackedCommon: {\r\n // display: 'flex',\r\n // // alignItems: 'center',\r\n // // flexWrap: 'nowrap',\r\n // // justifyContent: 'center',\r\n // },\r\n },\r\n MUIDataTableBody: {\r\n root: {\r\n border: '1px solid #ccc',\r\n },\r\n },\r\n MUIDataTableHeadCell: {\r\n root: {\r\n border: '1px solid #ccc',\r\n },\r\n contentWrapper: {\r\n //justifyContent: 'center',\r\n },\r\n data: {\r\n fontWeight: 'bold',\r\n },\r\n fixedHeader: {\r\n //textAlign: 'center',\r\n fontWeight: 'bold',\r\n border: '1px solid #ccc',\r\n },\r\n toolButton: {\r\n whiteSpace: 'nowrap',\r\n },\r\n },\r\n MUIDataTableToolbarSelect: {\r\n title: {\r\n paddingRight: '26px',\r\n paddingLe: '26px',\r\n fontSize: '1rem',\r\n fontWeight: 700,\r\n lineHeight: '1.5rem',\r\n },\r\n },\r\n MuiDialog: {\r\n root: {},\r\n paper: {\r\n //width: '100%',\r\n borderRadius: '12px',\r\n '.coverRoot &': {\r\n margin: '0px 4px',\r\n overflowY: 'hidden',\r\n borderRadius: '12px 12px 0px 0px',\r\n },\r\n '.coverRoot.coverExpandedRoot &': {\r\n margin: '4px 4px',\r\n overflowY: 'hidden',\r\n borderRadius: '12px',\r\n },\r\n '.rtl &&': {\r\n direction: 'rtl',\r\n },\r\n '.basic-dialog &&': {\r\n borderRadius: '12px',\r\n },\r\n '.basic-dialog-mobile &&': {\r\n margin: '0px 4px',\r\n borderRadius: '12px 12px 0px 0px',\r\n },\r\n },\r\n container: {\r\n '.basic-dialog-mobile &': {\r\n alignItems: 'flex-end',\r\n },\r\n },\r\n paperWidthXs: {\r\n maxWidth: '480px',\r\n },\r\n scrollPaper: {\r\n '.coverRoot &': {\r\n justifyContent: 'flex-end',\r\n alignItems: 'flex-end',\r\n },\r\n '.coverRoot.coverExpandedRoot &': {\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n },\r\n paperWidthFalse: {\r\n '.coverRoot &': {\r\n maxWidth: COVER_WIDTH,\r\n width: '100%',\r\n },\r\n '.coverRoot.coverExpandedRoot &': {\r\n maxWidth: MAX_COVER_EXPANDED_WIDTH,\r\n width: '100%',\r\n },\r\n '.coverRoot.coverShortRoot &': {\r\n maxWidth: '100%',\r\n width: '100%',\r\n },\r\n },\r\n paperScrollPaper: {\r\n '.coverRoot &': {\r\n maxHeight: 'calc(100% - 50px)',\r\n // height: '100vh',\r\n },\r\n },\r\n paperFullWidth: {\r\n '.coverRoot &': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n MuiDialogContent: {\r\n root: {\r\n '&.basic-dialog-content': {\r\n padding: 32,\r\n borderTop: 'unset',\r\n '&:first-child': {\r\n paddingTop: 32,\r\n },\r\n '&.basic-dialog-content-mobile': {\r\n padding: 16,\r\n '&:first-child': {\r\n paddingTop: 32,\r\n },\r\n },\r\n '& .basic-dialog-title-conteiner': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n '& .basic-dialog-close-button': {\r\n position: 'absolute',\r\n right: 12,\r\n top: 12,\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n '& .basic-dialog-title': {\r\n margin: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .basic-dialog-processing': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n '&.dialog-content': {\r\n padding: '16px 24px',\r\n borderTop: 'unset',\r\n },\r\n },\r\n },\r\n MuiDialogActions: {\r\n root: {\r\n '&.basic-dialog-actions': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n justifyContent: 'space-between',\r\n margin: 0,\r\n padding: '24px 32px',\r\n boxShadow: 'inset 0px 1px 0px #E0E5EC',\r\n '& .actions-left': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: 0,\r\n flexWrap: 'wrap',\r\n gap: 8,\r\n },\r\n '& .actions-right': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: '4px 16px',\r\n flexWrap: 'wrap',\r\n gap: 8,\r\n },\r\n },\r\n },\r\n },\r\n MuiDialogTitle: {\r\n root: {\r\n '&.basic-dialog-title': {\r\n margin: 0,\r\n padding: '24px 24px 8px 32px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n background: bookitColors.grayscale.grayBackground,\r\n '& .title-container': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n '& .title-body': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n padding: '0px',\r\n '& .title-body-subtitle': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n padding: '0px',\r\n },\r\n },\r\n '& .close-button': {\r\n position: 'absolute',\r\n right: '8px',\r\n top: '8px',\r\n color: bookitColors.grayscale.graySubtitles,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiBackdrop: {\r\n root: {\r\n '&.sidePanelBackdrop': {\r\n zIndex: 1201,\r\n },\r\n },\r\n },\r\n MuiAlert: {\r\n root: {\r\n padding: '0px 12px',\r\n '&.showMore': {\r\n alignItems: 'center',\r\n },\r\n },\r\n action: {\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n },\r\n },\r\n MuiCard: {\r\n root: {\r\n '&.file-card': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n borderRadius: '8px',\r\n marginTop: '8px',\r\n border: `2px solid ${bookitColors.grayscale.grayBorders}`,\r\n '&.with-error': {\r\n backgroundColor: bookitColors.danger.background,\r\n border: `2px solid ${bookitColors.danger.borders}`,\r\n },\r\n },\r\n },\r\n },\r\n MuiCardContent: {\r\n root: {\r\n '&.file-card-content-root': {\r\n divSizing: 'border-div',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n '& .file-card-content': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n width: '100%',\r\n '& .file-card-content-body': {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n margin: '5px',\r\n width: '100%',\r\n '& .file-card-text': {\r\n width: '80%',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiCircularProgress: {\r\n root: {\r\n '&.autocomplete': {\r\n position: 'absolute',\r\n right: 32,\r\n top: 'calc(50% - 8px)',\r\n },\r\n },\r\n },\r\n MuiMenu: {\r\n paper: {\r\n '.hoverChildMenu &': {\r\n boxShadow: box_shadow_m,\r\n background: bookitColors.base.white,\r\n borderRadius: '8px',\r\n },\r\n },\r\n list: {\r\n '.hoverChildMenu &': {\r\n display: 'flex',\r\n padding: '8px 0px 12px 0px',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n '& .menuItemName': {\r\n display: 'flex',\r\n padding: '4px 12px 8px 16px',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n alignSelf: 'stretch',\r\n cursor: 'unset',\r\n color: bookitColors.grayscale.blackRegular,\r\n '&:hover': {\r\n background: 'inherit',\r\n },\r\n },\r\n '& .menuItem': {\r\n display: 'flex',\r\n width: '240px',\r\n height: '32px',\r\n padding: '0px 8px',\r\n alignItems: 'center',\r\n gap: '8px',\r\n '& .menuItemContent': {\r\n display: 'flex',\r\n paddingLeft: '8px',\r\n alignItems: 'center',\r\n gap: '8px',\r\n flex: '1 0 0',\r\n '& .menuItemIcon': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '7.5px',\r\n width: 'auto',\r\n height: 16,\r\n color: bookitColors.grayscale.grayComponents,\r\n '& > svg': {\r\n width: '16px',\r\n },\r\n },\r\n '& .menuItemText': {\r\n flex: '1 0 0',\r\n color: bookitColors.grayscale.blackRegular,\r\n ...bookitTypography.bodyS,\r\n cursor: 'pointer',\r\n whiteSpace: 'initial',\r\n },\r\n },\r\n '&:hover, &:focus': {\r\n background: bookitColors.primary.bgHover,\r\n '& .menuItemContent': {\r\n '& .menuItemText': {\r\n ...bookitTypography.bodyS,\r\n },\r\n },\r\n },\r\n '&:active': {\r\n background: bookitColors.primary.bgHover,\r\n '& .menuItemContent': {\r\n '& .menuItemText': {\r\n ...bookitTypography.bodyS,\r\n },\r\n },\r\n },\r\n '&.Mui-selected': {\r\n background: bookitColors.primary.bgHover,\r\n '& .menuItemContent': {\r\n '& .menuItemText': {\r\n ...bookitTypography.bodyS,\r\n fontWeight: 600,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiMenuItem: {\r\n root: {\r\n ...bookitTypography.buttonS,\r\n '&.wrap-text': {\r\n whiteSpace: 'pre-wrap',\r\n },\r\n gap: 12,\r\n '.hoverChildMenu &': {\r\n width: '100%',\r\n },\r\n // [breakpoints.down('md')]: {\r\n // gap: 0,\r\n // },\r\n },\r\n dense: {\r\n paddingTop: '2px',\r\n paddingBottom: '2px',\r\n },\r\n },\r\n MuiPickersDatePickerRoot: {\r\n toolbar: {\r\n alignItems: 'flex-start',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n },\r\n toolbarLandscape: {\r\n padding: 16,\r\n },\r\n dateLandscape: {\r\n marginRight: 16,\r\n },\r\n },\r\n MuiPickerDTToolbar: {\r\n toolbar: {\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n justifyContent: 'space-around',\r\n },\r\n separator: {\r\n margin: '0 4px 0 2px',\r\n cursor: 'default',\r\n ...buttonM,\r\n },\r\n },\r\n MuiDrawer: {\r\n root: {\r\n '&.sideBarDrawer': {\r\n gap: 8,\r\n width: DRAWER_WIDTH,\r\n flexShrink: 0,\r\n whiteSpace: 'nowrap',\r\n backgroundColor: bookitColors.base.white,\r\n zIndex: 1200,\r\n position: 'fixed',\r\n height: '100dvh',\r\n '&.sideBarMobile': {\r\n width: 'calc(100% - 48px)', //DRAWER_MOBILE_WIDTH,\r\n },\r\n '&.drawerOpen': {\r\n width: DRAWER_WIDTH,\r\n transition: transitions.create('width', {\r\n easing: transitions.easing.sharp,\r\n duration: transitions.duration.enteringScreen,\r\n }),\r\n '&.sideBarMobile': {\r\n width: 'calc(100% - 48px)', //DRAWER_MOBILE_WIDTH,\r\n },\r\n },\r\n '&.drawerClose': {\r\n transition: transitions.create('width', {\r\n easing: transitions.easing.sharp,\r\n duration: transitions.duration.leavingScreen,\r\n }),\r\n overflowX: 'hidden',\r\n width: 0,\r\n [breakpoints.up('sm')]: {\r\n width: '60px',\r\n },\r\n },\r\n },\r\n '&.table-layout-drawer': {\r\n width: 300,\r\n flexShrink: 0,\r\n },\r\n '&.asset-drawer': {\r\n '&.asset-drawer-long': {\r\n width: '20%',\r\n borderRadius: 8,\r\n flexShrink: 0,\r\n },\r\n '&.asset-drawer-short': {\r\n display: 'none',\r\n },\r\n '&.asset-drawer-short-open': {\r\n width: '50%', //props => `${props.screenWidth / 2 - 20}px`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n flex: '1 0 0',\r\n height: 'inherit',\r\n },\r\n },\r\n },\r\n paper: {\r\n '.asset-drawer.asset-drawer-long &': {\r\n minWidth: '200px',\r\n width: 'auto', //mainDrawerWidth,\r\n padding: '24px 16px',\r\n // backgroundColor: theme.palette.secondary.light,\r\n position: 'static',\r\n gap: 16,\r\n borderRadius: 8,\r\n backgroundColor: bookitColors.base.white,\r\n border: `1px solid ${bookitColors.grayscale.graySelection}`,\r\n overflow: 'hidden',\r\n },\r\n '.asset-drawer.asset-drawer-short &': {\r\n minWidth: '200px',\r\n width: '100%', //mainDrawerWidth,\r\n padding: '24px 16px',\r\n // backgroundColor: theme.palette.secondary.light,\r\n position: 'static',\r\n gap: 16,\r\n backgroundColor: bookitColors.base.white,\r\n overflow: 'hidden',\r\n },\r\n '.asset-drawer.asset-drawer-short-open &': {\r\n width: '100%',\r\n padding: '24px 16px',\r\n // backgroundColor: theme.palette.secondary.light,\r\n position: 'static',\r\n gap: 16,\r\n backgroundColor: bookitColors.base.white,\r\n overflow: 'hidden',\r\n },\r\n '.sideBarDrawer &': {\r\n background: bookitColors.base.white,\r\n //position: 'fixed',\r\n position: 'relative',\r\n whiteSpace: 'nowrap',\r\n width: DRAWER_WIDTH,\r\n transition: transitions.create('width', {\r\n easing: transitions.easing.sharp,\r\n duration: transitions.duration.enteringScreen,\r\n }),\r\n gap: '16px',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n paddingTop: '12px',\r\n '& .sideBarHeader': {\r\n // minHeight: '48px',\r\n // display: 'flex',\r\n // flexDirection: 'row',\r\n // justifyContent: 'space-between',\r\n // alignItems: 'center',\r\n // padding: props => (props.isOpen ? '0px 16px' : '0px 8px'),\r\n // gap: 16,\r\n display: 'flex',\r\n padding: '0px 8px 0px 16px',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n alignSelf: 'stretch',\r\n height: '32px',\r\n '&.sideBarHeaderMobile': {},\r\n '& .headerButtons': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .headerButtonsMobile': {\r\n gap: '4px',\r\n },\r\n },\r\n '& .sideBarQickAction': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n alignSelf: 'stretch',\r\n padding: '0px 16px',\r\n gap: '10px',\r\n '&.sideBarQickActionMobile': {\r\n padding: '16px 16px 8px 16px',\r\n gap: '12px',\r\n },\r\n },\r\n },\r\n '.sideBarDrawer.sideBarMobile &': {\r\n width: 'calc(100% - 48px)', // DRAWER_MOBILE_WIDTH,\r\n gap: 0,\r\n },\r\n '.sideBarDrawer.drawerClose &': {\r\n overflowX: 'hidden',\r\n transition: transitions.create('width', {\r\n easing: transitions.easing.sharp,\r\n duration: transitions.duration.leavingScreen,\r\n }),\r\n width: '60px',\r\n '& .sideBarHeader': {\r\n padding: '0px 8px',\r\n },\r\n '& .sideBarQickAction': {\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n // [breakpoints.up('sm')]: {\r\n // width: 7 * 8 + 1,\r\n // },\r\n },\r\n '.table-layout-drawer &': {\r\n width: 300,\r\n padding: 8,\r\n backgroundColor: bookitColors.base.white,\r\n },\r\n },\r\n paperAnchorDockedLeft: {\r\n '.sideBarDrawer &': {\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n },\r\n },\r\n },\r\n // MuiPickerDTTabs: {\r\n // tabs: {\r\n // color: theme.palette.getContrastText(tabsBackground),\r\n // backgroundColor: tabsBackground,\r\n // },\r\n // },\r\n MuiPickersToolbar: {\r\n toolbar: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: bookitColors.primary.regular,\r\n // theme.palette.type === 'light'\r\n // ? theme.palette.primary.main\r\n // : theme.palette.background.default,\r\n },\r\n toolbarLandscape: {\r\n height: 'auto',\r\n maxWidth: 150,\r\n padding: 8,\r\n justifyContent: 'flex-start',\r\n },\r\n },\r\n MuiPickersToolbarButton: {\r\n toolbarBtn: {\r\n padding: 0,\r\n minWidth: '32px',\r\n textTransform: 'none',\r\n },\r\n },\r\n MuiPickersToolbarText: {\r\n toolbarTxt: {\r\n color: fade(bookitColors.base.white, 0.54),\r\n ...buttonM,\r\n },\r\n toolbarBtnSelected: {\r\n color: bookitColors.base.white,\r\n // color: theme.palette.type === 'light'\r\n // ? theme.palette.primary.contrastText\r\n // : theme.palette.getContrastText(theme.palette.background.default);,\r\n },\r\n },\r\n MuiAutocomplete: {\r\n root: {\r\n '&.autocomplete': {\r\n '&$focused $clearIndicatorDirty': {\r\n visibility: 'visible',\r\n },\r\n\r\n /* Avoid double tap issue on iOS */\r\n '@media (pointer: fine)': {\r\n '&:hover $clearIndicatorDirty': {\r\n visibility: 'visible',\r\n },\r\n '&:hover [class*=\"infoWidthPlus\"]': {\r\n right: '48px',\r\n },\r\n },\r\n '&>[class*=\"MuiFormControl-root\"]': {\r\n backgroundColor: bookitColors.base.white,\r\n '&>[class*=\"multiSelect\"]': {\r\n // paddingTop: '6px',\r\n // paddingBottom: '6px',\r\n '&>[class*=\"shortView\"]': {\r\n maxWidth: 360,\r\n '.baseRootHeight &': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n // '&.hasLabel': {\r\n // '& > $tag:first-child': {\r\n // marginTop: '6px',\r\n // //marginBottom: '6px',\r\n // },\r\n // },\r\n // [breakpoints.up('sm')]: {\r\n // maxWidth: '100%',\r\n // '&>[class*=\"shortView\"]': {\r\n // maxWidth: '100%',\r\n // },\r\n // },\r\n },\r\n '&>[class*=\"MuiInputLabel-filled\"]': {\r\n //transform: 'translate(12px, 14px) scale(1)',\r\n // long placeholder/label might break in 2+ lines - show only single line here\r\n // setting up width to minimum assuming there might be clear as well as other adornments just in case\r\n // 12px is the left translate value, the other sum equals to max paddingRight of filled inputRoot\r\n maxWidth: 'calc(100% - 12px - (52px + 4px + 9px))',\r\n width: '100%',\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n '& .base-input-label': {\r\n maxWidth: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: 'inline-block',\r\n },\r\n '&.Mui-required': {\r\n '& .base-input-label': {\r\n maxWidth: 'calc(100% - 12px)',\r\n },\r\n },\r\n '&.adornedStart-label': {\r\n transform: 'translate(41px, 14px) scale(0.85)',\r\n },\r\n // '&.inputSizeSmall': {\r\n // transform: 'translate(12px, 6px) scale(1)',\r\n // },\r\n '&[class*=\"MuiInputLabel-shrink\"]': {\r\n letterSpacing: '0.2px',\r\n //transform: 'translate(12px, 8px) scale(1)',\r\n\r\n '&.adornedStart-label': {\r\n transform: 'translate(41px, 27px) scale(0.85)',\r\n },\r\n },\r\n '&[class*=\"multiSelect\"][class*=\"MuiInputLabel-shrink\"]': {\r\n letterSpacing: '0.2px',\r\n //transform: 'translate(12px, 4px) scale(1)',\r\n\r\n '&.adornedStart-label': {\r\n transform: 'translate(41px, 27px) scale(0.85)',\r\n },\r\n },\r\n },\r\n },\r\n '&>[class*=\"MuiInputLabel-shrink\"]': {\r\n transform: 'translate(0, -2.5px) scale(1.1)',\r\n },\r\n '&.Mui-focused [class*=\"infoWidthPlus\"]': {\r\n right: '48px',\r\n },\r\n '& .info': {\r\n padding: '4px',\r\n top: 'calc(50% - 14px)',\r\n position: 'absolute',\r\n cursor: 'auto',\r\n zIndex: 4,\r\n '& > svg': {\r\n width: '12px',\r\n height: '12px',\r\n },\r\n '&.infoWidthPlus': {\r\n right: '48px',\r\n },\r\n '&.infoWidthMinus': {\r\n right: '26px',\r\n },\r\n },\r\n },\r\n },\r\n fullWidth: {\r\n '&.autocomplete': {\r\n width: '100%',\r\n '&>[class*=\"MuiFormControl-root\"]': {\r\n '&>[class*=\"multiSelect\"]': {\r\n maxWidth: '100%',\r\n },\r\n '&>[class*=\"shortView\"]': {\r\n maxWidth: 360,\r\n '.baseRootHeight &': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n // [breakpoints.up('sm')]: {\r\n // maxWidth: '100%',\r\n // '&>[class*=\"shortView\"]': {\r\n // maxWidth: '100%',\r\n // },\r\n // },\r\n },\r\n },\r\n },\r\n tag: {\r\n '.autocomplete &': {\r\n margin: 0,\r\n marginTop: 4,\r\n marginRight: 4,\r\n },\r\n },\r\n tagSizeSmall: {\r\n '.autocomplete &': {\r\n margin: 0,\r\n maxWidth: 'calc(100% - 4px)',\r\n },\r\n },\r\n /* Styles applied when the popup icon is rendered. */\r\n hasPopupIcon: {},\r\n /* Styles applied when the clear icon is rendered. */\r\n hasClearIcon: {\r\n '&.autocomplete': {\r\n '& > * > * > [class*=\"infoWidthPlus\"]': {\r\n right: '48px',\r\n },\r\n },\r\n },\r\n inputRoot: {\r\n flexWrap: 'wrap',\r\n '.atable &': {\r\n flexWrap: 'nowrap',\r\n },\r\n '& $input': {\r\n // width: 'auto',\r\n // minWidth: 56,\r\n minWidth: '80px',\r\n },\r\n '.date-dropdown-picker-inputs &': {\r\n '& $input': {\r\n width: '100%',\r\n minWidth: 30,\r\n },\r\n },\r\n '&.autocompleteInputRoot': {\r\n flexWrap: 'wrap',\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: 6,\r\n cursor: 'auto',\r\n minHeight: 32,\r\n gap: 4,\r\n '$hasPopupIcon &, $hasClearIcon &': {\r\n paddingRight: 56, //26 + 4,\r\n },\r\n '$hasPopupIcon$hasClearIcon &': {\r\n paddingRight: 56, //24 + 4,\r\n },\r\n //gap: 4,\r\n '& $input': {\r\n width: 'auto',\r\n minWidth: 30,\r\n //padding: '6px 12px',\r\n },\r\n '&[class*=\"MuiInput-root\"]': {\r\n paddingBottom: 2,\r\n paddingTop: 2,\r\n paddingLeft: 8,\r\n minHeight: 40,\r\n height: 'auto',\r\n '& $input': {\r\n padding: 4,\r\n width: 'auto',\r\n },\r\n '&.multiSelect.hasSelected': {\r\n paddingTop: 20,\r\n '& .autocompleteInput': {\r\n //padding: 0,\r\n width: 'auto',\r\n },\r\n },\r\n '& $input:first-child': {\r\n padding: '6px 12px',\r\n },\r\n '.inputSizeLarge &': {\r\n paddingBottom: 2,\r\n paddingTop: 2,\r\n minHeight: 40,\r\n height: 'auto',\r\n '&.multiSelect.hasSelected': {\r\n paddingTop: 20,\r\n '& .autocompleteInput': {\r\n padding: '2px 0px',\r\n width: 'auto',\r\n },\r\n },\r\n },\r\n '.inputSizeSmall &': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n minHeight: 32,\r\n '&.multiSelect.hasSelected': {\r\n paddingTop: 2,\r\n paddingBottom: 2,\r\n },\r\n // '& .autocompleteInput': {\r\n // padding: 0,\r\n // },\r\n },\r\n '.inputSizeMedium &': {\r\n paddingTop: 6,\r\n paddingBottom: 2,\r\n minHeight: 40,\r\n '& .autocompleteInput': {\r\n padding: '12px 4px 0px',\r\n },\r\n '&.multiSelect.hasSelected': {\r\n '& .autocompleteInput': {\r\n padding: '4px 0px',\r\n },\r\n },\r\n },\r\n '.inputSizeXl &': {\r\n paddingTop: 16,\r\n paddingBottom: 8,\r\n minHeight: 56,\r\n '& .autocompleteInput': {\r\n padding: '12px 4px 0px',\r\n },\r\n '&.multiSelect.hasSelected': {\r\n '& .autocompleteInput': {\r\n padding: '4px 0px',\r\n },\r\n },\r\n },\r\n '$hasPopupIcon &, $hasClearIcon &': {\r\n paddingRight: 26 + 4 + 9,\r\n },\r\n '$hasPopupIcon$hasClearIcon &': {\r\n paddingRight: 52 + 4 + 9,\r\n },\r\n '& $endAdornment': {\r\n right: 4,\r\n },\r\n },\r\n '&[class*=\"MuiInput-root\"][class*=\"MuiInput-marginDense\"]': {\r\n // '& $input': {\r\n // padding: '4px 4px 5px',\r\n // },\r\n // '& $input:first-child': {\r\n // padding: '4px 4px 5px', //'3px 0 6px',\r\n // },\r\n borderRadius: 6,\r\n '& $input': {\r\n padding: '4px 4px 5px',\r\n },\r\n '& $input:first-child': {\r\n padding: '1px 0px 1px 7px',\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.10)',\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.90)',\r\n },\r\n },\r\n '&[class*=\"Mui-focused\"]': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.10)',\r\n //border: `1px solid ${bookitColors.primary.regular}`,\r\n },\r\n '&[class*=\"Mui-disabled\"]': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n '&[class*=\"MuiOutlinedInput-root\"]': {\r\n padding: 9,\r\n '$hasPopupIcon &, $hasClearIcon &': {\r\n paddingRight: 26 + 4 + 9,\r\n },\r\n '$hasPopupIcon$hasClearIcon &': {\r\n paddingRight: 52 + 4 + 9,\r\n },\r\n '& $input': {\r\n padding: '9.5px 4px',\r\n },\r\n '& $input:first-child': {\r\n paddingLeft: 6,\r\n },\r\n '& $endAdornment': {\r\n right: 9,\r\n },\r\n },\r\n '&[class*=\"MuiOutlinedInput-root\"][class*=\"MuiOutlinedInput-marginDense\"]':\r\n {\r\n padding: 6,\r\n '& $input': {\r\n padding: '4.5px 4px',\r\n },\r\n },\r\n '&[class*=\"MuiFilledInput-root\"]': {\r\n paddingTop: 12,\r\n paddingLeft: 8,\r\n paddingBottom: 4,\r\n minHeight: 40,\r\n height: 'auto',\r\n '$hasPopupIcon &, $hasClearIcon &': {\r\n paddingRight: 26 + 4 + 9,\r\n },\r\n '$hasPopupIcon$hasClearIcon &': {\r\n paddingRight: 52 + 4 + 9,\r\n },\r\n '& .autocompleteInput': {\r\n padding: '10px 4px 0px',\r\n },\r\n '&.multiSelect.hasSelected': {\r\n paddingTop: 20,\r\n '& .autocompleteInput': {\r\n padding: 0,\r\n width: 'auto',\r\n },\r\n },\r\n // '& $input': {\r\n // padding: '6px 4px 4px',\r\n // },\r\n '& $endAdornment': {\r\n right: 4,\r\n },\r\n '.inputSizeMedium &': {\r\n paddingTop: 6,\r\n paddingBottom: 2,\r\n minHeight: 40,\r\n '& .autocompleteInput': {\r\n padding: '12px 4px 0px',\r\n },\r\n },\r\n '.inputSizeSmall &': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n minHeight: 32,\r\n '&.multiSelect.hasSelected': {\r\n paddingTop: 2,\r\n paddingBottom: 2,\r\n },\r\n '& .autocompleteInput': {\r\n padding: 0,\r\n },\r\n },\r\n '.inputSizeXl &': {\r\n paddingTop: 16,\r\n paddingBottom: 8,\r\n minHeight: 56,\r\n },\r\n '&[class*=\"MuiFilledInput-adornedStart\"]': {\r\n //paddingLeft: '36px',\r\n '&>.adornedStart': {\r\n cursor: 'auto',\r\n position: 'absolute',\r\n left: 12,\r\n top: 'calc(50% - 3px)',\r\n },\r\n },\r\n },\r\n '&[class*=\"MuiFilledInput-root\"][class*=\"MuiFilledInput-marginDense\"]':\r\n {\r\n paddingTop: 14,\r\n paddingBottom: 0,\r\n '& $input': {\r\n padding: '4.5px 4px',\r\n },\r\n },\r\n },\r\n },\r\n /* Styles applied to the input element. */\r\n input: {\r\n '&.autocompleteInput': {\r\n flexGrow: 1,\r\n textOverflow: 'ellipsis',\r\n opacity: 0,\r\n padding: '6px 12px',\r\n },\r\n },\r\n /* Styles applied to the input element if tag focused. */\r\n inputFocused: {\r\n '&.autocompleteInput': {\r\n opacity: 1,\r\n },\r\n },\r\n /* Styles applied to the endAdornment element. */\r\n endAdornment: {\r\n '.autocompleteInputRoot &': {\r\n // We use a position absolute to support wrapping tags.\r\n position: 'absolute',\r\n right: 8,\r\n top: 'calc(50% - 11px)', // Center vertically\r\n },\r\n },\r\n /* Styles applied to the clear indicator. */\r\n clearIndicator: {\r\n '.autocompleteInputRoot &': {\r\n marginRight: 2,\r\n padding: 4,\r\n '& > * > svg': {\r\n width: 12,\r\n height: 12,\r\n cursor: 'pointer',\r\n },\r\n visibility: 'hidden',\r\n //display: 'none',\r\n },\r\n },\r\n clearIndicatorDirty: {\r\n '.autocompleteInputRoot &': {\r\n visibility: 'visible',\r\n display: 'inline-flex',\r\n },\r\n },\r\n /* Styles applied to the popup indicator. */\r\n popupIndicator: {\r\n '.autocompleteInputRoot &': {\r\n padding: 4,\r\n marginRight: 0,\r\n '& > * > svg': {\r\n width: 12,\r\n height: 12,\r\n },\r\n },\r\n },\r\n\r\n /* Styles applied to the popup indicator if the popup is open. */\r\n popupIndicatorOpen: {\r\n '.autocompleteInputRoot &': {\r\n transform: 'rotate(180deg)',\r\n },\r\n },\r\n paper: {\r\n ...bookitTypography.buttonS,\r\n overflow: 'hidden',\r\n margin: '0px',\r\n boxShadow: box_shadow_l,\r\n padding: '4px 0px',\r\n '& .autocompleteList': {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: '4px 0',\r\n maxHeight: '40vh',\r\n overflow: 'auto',\r\n ...verticalScrolling,\r\n },\r\n },\r\n listbox: {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: '8px 0',\r\n maxHeight: '40vh',\r\n overflow: 'auto',\r\n },\r\n loading: {\r\n color: bookitColors.grayscale.grayComponents,\r\n padding: '14px 16px',\r\n },\r\n noOptions: {\r\n color: bookitColors.grayscale.grayComponents,\r\n padding: '14px 16px',\r\n },\r\n /* Styles applied to the option elements. */\r\n option: {\r\n minHeight: 40,\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n paddingTop: 6,\r\n boxSizing: 'border-box',\r\n outline: '0',\r\n WebkitTapHighlightColor: 'transparent',\r\n paddingBottom: 6,\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n height: 'auto',\r\n backgroundColor: bookitColors.base.white,\r\n [breakpoints.up('sm')]: {\r\n minHeight: 40,\r\n '.listSizeMedium &': {\r\n minHeight: 44,\r\n },\r\n '.listSizeLarge &': {\r\n minHeight: 64,\r\n },\r\n },\r\n '&[aria-selected=\"true\"]': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n },\r\n '&[data-focus=\"true\"]': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n '&:active': {\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n },\r\n '&[aria-disabled=\"true\"]': {\r\n opacity: 0.7,\r\n pointerEvents: 'none',\r\n },\r\n },\r\n /* Styles applied to the group's label elements. */\r\n groupLabel: {\r\n backgroundColor: bookitColors.base.white,\r\n top: -8,\r\n },\r\n /* Styles applied to the group's ul elements. */\r\n groupUl: {\r\n padding: 0,\r\n '& $option': {\r\n paddingLeft: 24,\r\n },\r\n },\r\n },\r\n MuiTabs: {\r\n root: {\r\n minHeight: '40px',\r\n '&.sizeSmall': {\r\n minHeight: '32px',\r\n },\r\n },\r\n flexContainer: {\r\n // '.tabsHorizontal &': {\r\n // gap: 24,\r\n // },\r\n // '.sizeSmall &': {\r\n // '.tabsHorizontal &': {\r\n // gap: 20,\r\n // },\r\n // },\r\n },\r\n scrollable: {},\r\n indicator: {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n backgroundColor: bookitColors.primary.regular,\r\n // '& > span': {\r\n // maxWidth: 40,\r\n // width: '100%',\r\n // backgroundColor: '#635ee7',\r\n // },\r\n },\r\n },\r\n MuiLinearProgress: {\r\n root: {\r\n '&.import-progress': {\r\n height: 8,\r\n borderRadius: 6,\r\n },\r\n },\r\n },\r\n MuiTab: {\r\n root: {\r\n textTransform: 'none',\r\n ...bookitTypography.boldM,\r\n '.tabsHorizontal &': {\r\n padding: '8px 12px 0px',\r\n minHeight: '40px',\r\n alignItems: 'flex-start',\r\n gap: '4px',\r\n '&.tabSizeSmall': {\r\n minHeight: '32px',\r\n padding: '4px 10px 0px',\r\n ...bookitTypography.boldS,\r\n },\r\n [breakpoints.up('sm')]: {\r\n minWidth: 'auto',\r\n },\r\n },\r\n },\r\n wrapper: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '100%',\r\n flexDirection: 'column',\r\n '.startIcon &': {\r\n flexDirection: 'row',\r\n gap: '8px',\r\n },\r\n '.endIcon &': {\r\n flexDirection: 'row',\r\n gap: '8px',\r\n },\r\n },\r\n textColorInherit: {\r\n color: bookitColors.grayscale.graySubtitles,\r\n opacity: 1,\r\n '&$selected': {\r\n color: bookitColors.grayscale.blackRegular,\r\n },\r\n '&$disabled': {\r\n color: bookitColors.grayscale.grayComponentsLight,\r\n },\r\n },\r\n },\r\n MuiTooltip: {\r\n tooltip: {\r\n display: 'flex',\r\n padding: 12,\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n color: bookitColors.base.white,\r\n backgroundColor: bookitColors.overlays.overlayBlack,\r\n flex: '1 0 0',\r\n ...bookitTypography.bodyS,\r\n '.colorDark &': {\r\n color: bookitColors.base.white,\r\n backgroundColor: bookitColors.overlays.overlayBlack,\r\n },\r\n '.colorLight &': {\r\n color: bookitColors.base.black,\r\n backgroundColor: bookitColors.base.white,\r\n boxShadow: box_shadow_s,\r\n },\r\n '& .content': {\r\n maxHeight: 360,\r\n overflowY: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '6px',\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n boxShadow: `inset 0 0 2px ${bookitColors.grayscale.grayBorders}`,\r\n borderRadius: '6px',\r\n backgroundColor: bookitColors.grayscale.grayBorders,\r\n '.colorDark &': {\r\n backgroundColor: bookitColors.overlays.overlayBlack,\r\n },\r\n },\r\n },\r\n },\r\n arrow: {\r\n color: bookitColors.overlays.overlayBlack,\r\n '.colorDark &': {\r\n color: bookitColors.overlays.overlayBlack,\r\n },\r\n '.colorLight &': {\r\n color: bookitColors.base.white,\r\n '&::before': {\r\n border: `1px solid ${bookitColors.grayscale.graySelection}`,\r\n },\r\n },\r\n },\r\n },\r\n MuiCollapse: {\r\n container: {\r\n '& .collapse-container': {\r\n width: '100%',\r\n padding: '0px 32px',\r\n },\r\n '&. units-collapse-container': {\r\n marginLeft: 8,\r\n },\r\n },\r\n },\r\n MuiGrid: {\r\n root: {\r\n '&.grid-item-draggable': {\r\n position: 'relative',\r\n },\r\n },\r\n },\r\n MuiTreeView: {\r\n root: {\r\n backgroundColor: bookitColors.base.white,\r\n padding: '0px 24px 0px 24px',\r\n '&.short-view': {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n MuiTreeItem: {\r\n root: {\r\n '&.compact': {\r\n '&>[class*=\"MuiCollapse-container\"]': {\r\n '&>[class*=\"MuiCollapse-wrapper\"]': {\r\n '&>[class*=\"MuiCollapse-wrapperInner\"]': {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(2, 1fr)',\r\n columnGap: '12px',\r\n '&>li': {\r\n gridColumn: 'span 1',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n content: {\r\n gap: '8px',\r\n marginBottom: '12px',\r\n },\r\n group: {\r\n marginLeft: '27px',\r\n '.dash-content.short-view &': {\r\n marginLeft: '8px',\r\n },\r\n },\r\n label: {\r\n border: `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n backgroundColor: bookitColors.grayscale.grayBackground,\r\n borderRadius: '4px',\r\n height: '56px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n justifyContent: 'flex-start',\r\n paddingLeft: 0,\r\n '&:hover': {\r\n backgroundColor: bookitColors.grayscale.graybgComponents,\r\n // Reset on touch devices, it doesn't add specificity\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent',\r\n },\r\n '& .tree-label-content': {\r\n '& .hover-over': {\r\n display: 'flex',\r\n },\r\n },\r\n },\r\n '& .tree-label-img': {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n background: bookitColors.grayscale.graybgComponents,\r\n width: '54px',\r\n //height: '54px',\r\n borderTopLeftRadius: '4px',\r\n borderBottomLeftRadius: '4px',\r\n '& img': {\r\n maxHeight: '54px',\r\n maxWidth: '54px',\r\n borderTopLeftRadius: '4px',\r\n borderBottomLeftRadius: '4px',\r\n },\r\n },\r\n '& .tree-label-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n width: '100%',\r\n paddingLeft: '12px',\r\n paddingRight: '12px',\r\n '&.has-img': {\r\n paddingLeft: '0px',\r\n },\r\n '& .tree-label-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n gap: '4px',\r\n },\r\n '& .tree-label-actions': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '8px',\r\n '&.hover-over': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n};\r\nexport const darkTheme: ThemeOptions = {\r\n palette: {\r\n background: { default: grey[400], paper: grey[100] },\r\n primary: { main: green[100] },\r\n secondary: {\r\n main: '#4a4a4a',\r\n },\r\n text: {\r\n primary: '#e1dada',\r\n secondary: 'rgba(255, 255, 255, 0.54)',\r\n disabled: '#757575',\r\n },\r\n },\r\n};\r\nexport const animalsThemeSettings: ThemeOptions = {\r\n palette: {\r\n primary: {\r\n main: '#ffdc64',\r\n dark: '#c9ab33',\r\n light: '#ffff95',\r\n contrastText: '#000000',\r\n },\r\n secondary: {\r\n main: '#3247e1',\r\n dark: '#001fae',\r\n light: '#7673ff',\r\n contrastText: '#ffffff',\r\n },\r\n error: {\r\n main: '#E53F58',\r\n dark: '#AC2F42',\r\n light: '#F195A3',\r\n contrastText: '#ffffff',\r\n },\r\n background: {\r\n default: '#F3F3F3',\r\n paper: '#FFF',\r\n },\r\n default: {\r\n main: '#ffdc64',\r\n dark: '#c9ab33',\r\n light: '#ffff95',\r\n contrastText: '#000000',\r\n },\r\n },\r\n shape: {\r\n borderRadius: 12,\r\n },\r\n\r\n typography: {\r\n fontFamily: [\"'Open Sans Hebrew'\", 'system-ui'].join(','),\r\n h1: {\r\n //styleName: Bkt/Header 1;\r\n fontSize: '2.5rem',\r\n fontWeight: 700,\r\n lineHeight: '3rem',\r\n },\r\n h2: {\r\n //styleName: Bkt/Header 2;\r\n fontSize: '2rem',\r\n fontWeight: 700,\r\n lineHeight: '2.875rem', //46/16\r\n },\r\n h3: {\r\n //styleName: Bkt/Header 3;\r\n fontSize: '1.5rem',\r\n fontWeight: 700,\r\n lineHeight: '2.375rem', //46/16\r\n },\r\n h4: {\r\n //styleName: Bkt/Header 4:\r\n fontSize: '1.5rem',\r\n fontWeight: 700,\r\n lineHeight: '2rem',\r\n },\r\n h5: {\r\n fontSize: '1.25rem',\r\n fontWeight: 700,\r\n lineHeight: '1.5rem',\r\n },\r\n h6: {\r\n fontSize: '1rem',\r\n fontWeight: 700,\r\n lineHeight: '1.375rem',\r\n },\r\n subtitle1: {\r\n fontSize: '1.25rem',\r\n lineHeight: '2rem',\r\n fontWeight: 700,\r\n },\r\n subtitle2: {\r\n fontSize: '1.25rem',\r\n lineHeight: '2rem',\r\n fontWeight: 400,\r\n },\r\n body1: {\r\n fontSize: '1rem',\r\n lineHeight: '1.375rem',\r\n fontWeight: 400,\r\n },\r\n body2: {\r\n fontSize: '1rem',\r\n lineHeight: '1.375rem',\r\n fontWeight: 400,\r\n //color: grey[600],\r\n },\r\n },\r\n overrides: {\r\n MuiTextField: {},\r\n MuiAppBar: {},\r\n MuiDrawer: {\r\n root: {\r\n '&.table-layout-drawer': {\r\n width: 300,\r\n flexShrink: 0,\r\n },\r\n '&.table-layout-secondary-drawer': {\r\n width: 300,\r\n flexShrink: 0,\r\n '&.secondary-drawer-width-zero': {\r\n width: 0,\r\n },\r\n },\r\n },\r\n paper: {\r\n '.table-layout-drawer &': {\r\n width: 300,\r\n padding: 8,\r\n backgroundColor: bookitColors.base.white,\r\n },\r\n '.table-layout-secondary-drawer &': {\r\n width: 300,\r\n padding: 8,\r\n },\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const CreateTheme = (direction, baseTheme: BaseTheme) =>\r\n createMuiTheme(getBaseTheme(baseTheme), { direction: direction }); //DefaultThemeSettings\r\n\r\nconst getBaseTheme = (type: BaseTheme) => {\r\n switch (type) {\r\n case 'bookit':\r\n return BookitThemeSettings;\r\n case 'animals':\r\n return animalsThemeSettings;\r\n case 'dark':\r\n return darkTheme;\r\n case 'default':\r\n default:\r\n return DefaultThemeSettings;\r\n }\r\n};\r\n","/**\r\n * This file is only need if you want to extract messages into JSON files in locales folder\r\n * AND if you are also using the object syntax instead of string syntax. \\\r\n * Check the documentation section i18n for details\r\n */\r\nimport { translations } from 'locales/translations';\r\nimport { _t } from 'utils/messages';\r\n\r\nexport const messages = {\r\n prog4biz: () => _t(translations.Prog4biz),\r\n bookitlabCopyrightNotice: () =>\r\n _t(translations.BookitlabCopyrightNoticeTitle),\r\n softwareBy: () => _t(translations.SoftwareBy),\r\n systemTime: () => _t(translations.SystemTime),\r\n lastCodeUpdate: () => _t(translations.LastCodeUpdate),\r\n termOfUse: () => _t(translations.TermsOfUse),\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const CopyrightSection = styled('div')(({ theme }) => ({\r\n '&.copyrightSection': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n gap: 8,\r\n alignSelf: 'stretch',\r\n width: 'calc(100% - 16px)',\r\n padding: '0px 16px 0px 32px',\r\n [theme.breakpoints.down('sm')]: {\r\n flexDirection: 'column',\r\n justifyContent: 'flex-start',\r\n padding: '0px 0px',\r\n width: '100%',\r\n gap: 4,\r\n },\r\n },\r\n}));\r\n","/**\r\n *\r\n * Copyright\r\n *\r\n */\r\nimport { useTheme } from '@material-ui/core';\r\nimport {\r\n selectLastCodeUpdate,\r\n selectWebVersion,\r\n selectAuthenticatedUser,\r\n} from 'app/slice/selectors';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { Link } from '../ExternalLink';\r\nimport BasicTypography from '../Typography/BasicTypography';\r\nimport { messages } from './messages';\r\nimport { CopyrightSection } from './styled';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\n\r\nexport interface CopyrightProps {\r\n disableVersionOnMobile?: boolean;\r\n}\r\n\r\nexport function Copyright(props: CopyrightProps) {\r\n const { t } = useTranslation();\r\n const webVersion = useSelector(selectWebVersion);\r\n const lastUpdate = useSelector(selectLastCodeUpdate);\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const theme = useTheme();\r\n return (\r\n \r\n \r\n \r\n {t(messages.bookitlabCopyrightNotice())}\r\n \r\n <>{` `}\r\n {t(messages.softwareBy())}\r\n <>{` `}\r\n \r\n {t(messages.prog4biz())}\r\n {' '}\r\n {new Date().getFullYear()}\r\n {'.'}\r\n \r\n {!props.disableVersionOnMobile && (\r\n \r\n v{webVersion} \r\n \r\n {t(messages.systemTime())}: \r\n \r\n  \r\n {lastUpdate && (\r\n \r\n {t(messages.lastCodeUpdate())}:\r\n {dateUtils.fullDateTimeFormat(lastUpdate)}\r\n \r\n )}\r\n \r\n )}\r\n {!!authenticatedUser && (\r\n \r\n \r\n \r\n {t(messages.termOfUse())}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nfunction Clock() {\r\n const [now, setNow] = React.useState(new Date());\r\n useEffectOnMount(() => {\r\n const interval = setInterval(() => {\r\n setNow(new Date());\r\n }, 60000);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n });\r\n\r\n return <>{dateUtils.fullDateTimeFormat(now)};\r\n}\r\n","import { AssetBarcodeScanParameters } from 'app/pages/AssetsInventory/Details/slice/types';\r\nimport { httpClient } from './HttpClient';\r\n\r\nconst url = '/api/odata/v4/BarcodeScanLog';\r\nexport const BarcodeScanApi = {\r\n scanBarcode: (payload: AssetBarcodeScanParameters) => {\r\n const data = {\r\n params: payload,\r\n };\r\n return httpClient.post(`${url}/BarcodeScan`, data);\r\n },\r\n logNoRoomAccess: (payload: number) => {\r\n const data = {\r\n roomId: payload,\r\n };\r\n return httpClient.post(`${url}/LogNoRoomAccess`, data);\r\n },\r\n logRoomScan: (payload: number) => {\r\n const data = {\r\n roomId: payload,\r\n };\r\n return httpClient.post(`${url}/LogRoomScann`, data);\r\n },\r\n logLocationScan: (roomId: number, locationId: number) => {\r\n const data = {\r\n roomId: roomId,\r\n locationId: locationId,\r\n };\r\n return httpClient.post(`${url}/LogLocationScann`, data);\r\n },\r\n logSubLocationScan: (\r\n roomId: number,\r\n locationId: number,\r\n sublocationId: number,\r\n ) => {\r\n const data = {\r\n roomId: roomId,\r\n locationId: locationId,\r\n sublocationId: sublocationId,\r\n };\r\n return httpClient.post(`${url}/LogSubLocationScann`, data);\r\n },\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { ILocationListDto } from 'api/odata/generated/entities/ILocationListDto';\r\nimport { IRoomDto } from 'api/odata/generated/entities/IRoomDto';\r\nimport { ISubLocationListDto } from 'api/odata/generated/entities/ISubLocationListDto';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport {\r\n selectAppSettings,\r\n selectBarcodeScanTarget,\r\n selectGlobalSetting,\r\n} from 'app/slice/selectors';\r\nimport { parseBarcode, ScanTarget, ScanTemplateResult } from 'app/slice/types';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { BARCODE_SCANNED } from 'react-usb-barcode-scanner';\r\nimport { call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { assetInventoryActions as actions } from '.';\r\nimport {\r\n selectLocationSelected,\r\n selectRoomSelected,\r\n selectScanProcessing,\r\n selectSubLocationSelected,\r\n} from './selectors';\r\nimport { AssetBarcodeScanParameters, AssetBarcodeScanResult } from './types';\r\nimport { BarcodeScanApi as api } from 'api/BarcodeScanApi';\r\n\r\nfunction* doSetSelectedRoom(action: PayloadAction) {\r\n yield put(actions.setSelectedRoom_Success(action.payload));\r\n}\r\nfunction* doSetSelectedLocation(\r\n action: PayloadAction,\r\n) {\r\n yield put(actions.setSelectedLocation_Success(action.payload));\r\n}\r\nfunction* doSetSelectedSubLocation(\r\n action: PayloadAction,\r\n) {\r\n yield put(actions.setSelectedSubLocation_Success(action.payload));\r\n}\r\nfunction* doBarcodeScan(action: PayloadAction<{ data: string }>) {\r\n // const MIN_LENGTH_DEFAULT = 6;\r\n // const minBarcodeLengthString: string | undefined = yield select(state =>\r\n // selectGlobalSetting(state, AllowedSettings.MinBarcodeLength),\r\n // );\r\n const minBarcodeAssetLengthString: string | undefined = yield select(state =>\r\n selectGlobalSetting(state, AllowedSettings.QRCodeBaseLength),\r\n );\r\n // const MinBarcodeLength =\r\n // tryParseInt(minBarcodeLengthString) ?? MIN_LENGTH_DEFAULT;\r\n const MinAssetQRLength = tryParseInt(minBarcodeAssetLengthString) ?? 0;\r\n // prevent accidental barcode detection on fast user input\r\n if (action.payload.data.length < MinAssetQRLength) {\r\n return;\r\n }\r\n const scannTarget: ScanTarget | undefined = yield select(\r\n selectBarcodeScanTarget,\r\n );\r\n if (scannTarget === undefined || scannTarget !== ScanTarget.Inventory) {\r\n return;\r\n }\r\n const isScanning = yield select(selectScanProcessing);\r\n if (isScanning === true) {\r\n return;\r\n }\r\n yield put(actions.setScanProcessing(true));\r\n const appSettings: AppSettings = yield select(selectAppSettings);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'info',\r\n message:\r\n i18next.t(translations.BarcodeScanModalBody) +\r\n ' ' +\r\n action.payload.data,\r\n }),\r\n );\r\n try {\r\n const scanResult = parseBarcode(action.payload.data, appSettings);\r\n if (scanResult === undefined) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: (\r\n i18next.t(translations.BarcodeNotFoundEx) as string\r\n ).replace('{{barcode}}', action.payload.data),\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n } else {\r\n const room: IRoomDto | null = yield select(selectRoomSelected);\r\n const location: ILocationListDto | null = yield select(\r\n selectLocationSelected,\r\n );\r\n const subLocation: ISubLocationListDto | null = yield select(\r\n selectSubLocationSelected,\r\n );\r\n // in case when barcode is entered manually\r\n if (\r\n scanResult.type === ScanTemplateResult.Internal ||\r\n scanResult.type === ScanTemplateResult.Asset\r\n ) {\r\n let params = {\r\n Barcode: scanResult.InternalCode ?? '',\r\n RoomId: room?.Id,\r\n LocationId: location?.Id,\r\n SubLocationId: subLocation?.Id,\r\n } as AssetBarcodeScanParameters;\r\n const result = yield call(api.scanBarcode, params);\r\n let response = result as AssetBarcodeScanResult;\r\n if (response.SuccessMessages.length > 0) {\r\n if (!!response.RoomDetails) {\r\n if (room !== null && room !== undefined) {\r\n if (room.Id !== response.RoomDetails.Id) {\r\n yield put(\r\n actions.setSelectedRoom_Success(response.RoomDetails),\r\n );\r\n yield put(actions.setSelectedLocation_Success(null));\r\n yield put(actions.setSelectedSubLocation_Success(null));\r\n }\r\n } else {\r\n yield put(actions.setSelectedRoom_Success(response.RoomDetails));\r\n yield put(actions.setSelectedLocation_Success(null));\r\n yield put(actions.setSelectedSubLocation_Success(null));\r\n }\r\n }\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: response.SuccessMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_Success());\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: response.ErrorMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n } else if (scanResult.type === ScanTemplateResult.Room) {\r\n if (\r\n room !== null &&\r\n room !== undefined &&\r\n room.Id === tryParseInt(scanResult.RoomId)\r\n ) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'warning',\r\n message: `Room: ${room.Name} already selected`,\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n } else {\r\n // const roomData = yield call(\r\n // initRoomData,\r\n // scanResult.RoomId,\r\n // undefined,\r\n // undefined,\r\n // [\r\n // 'Id',\r\n // 'Name',\r\n // 'AreaId',\r\n // 'Areaname',\r\n // 'Barcode',\r\n // 'BuildingDescription',\r\n // 'BuildingId',\r\n // 'BuildingName',\r\n // 'Description',\r\n // 'Floor',\r\n // 'CampusId',\r\n // 'CampusName',\r\n // ],\r\n // );\r\n if (scanResult.RoomId !== undefined) {\r\n const roomResult = yield call(\r\n api.logRoomScan,\r\n parseInt(scanResult.RoomId),\r\n );\r\n let response = roomResult as AssetBarcodeScanResult;\r\n if (response.SuccessMessages.length > 0) {\r\n if (!!response.RoomDetails) {\r\n yield put(\r\n actions.setSelectedRoom_Success(response.RoomDetails),\r\n );\r\n yield put(actions.setSelectedLocation_Success(null));\r\n yield put(actions.setSelectedSubLocation_Success(null));\r\n }\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: response.SuccessMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_Success());\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: response.ErrorMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n // yield put(actions.setSelectedRoom_Success(roomData[0]));\r\n // yield put(actions.setSelectedLocation_Success(null));\r\n // yield put(actions.setSelectedSubLocation_Success(null));\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'success',\r\n // message: i18next.t(translations.RoomScanned),\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_Success());\r\n }\r\n }\r\n } else if (scanResult.type === ScanTemplateResult.Location) {\r\n if (\r\n location !== null &&\r\n location !== undefined &&\r\n location.Id === tryParseInt(scanResult.LocationId) &&\r\n room?.Id === tryParseInt(scanResult.RoomId)\r\n ) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'warning',\r\n message: `Location: ${location.Name} already selected`,\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n } else {\r\n if (\r\n scanResult.LocationId !== undefined &&\r\n scanResult.RoomId !== undefined\r\n ) {\r\n const roomResult = yield call(\r\n api.logLocationScan,\r\n parseInt(scanResult.RoomId),\r\n parseInt(scanResult.LocationId),\r\n );\r\n let response = roomResult as AssetBarcodeScanResult;\r\n if (response.SuccessMessages.length > 0) {\r\n if (!!response.RoomDetails && !!response.LocationDetails) {\r\n yield put(\r\n actions.setSelectedRoom_Success(response.RoomDetails),\r\n );\r\n yield put(\r\n actions.setSelectedLocation_Success(response.LocationDetails),\r\n );\r\n yield put(actions.setSelectedSubLocation_Success(null));\r\n }\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: response.SuccessMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_Success());\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: response.ErrorMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: `Scanned Location not found`,\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n // const locationData = yield call(\r\n // initLocationData,\r\n // scanResult.LocationId,\r\n // );\r\n // let locationResults = locationData as ILocationListDto[];\r\n // if (!locationResults || locationResults.length === 0) {\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'error',\r\n // message: `Scanned Location not found`,\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_error());\r\n // } else {\r\n // let loc = locationResults[0];\r\n // if (\r\n // room === null ||\r\n // room === undefined ||\r\n // (loc.RoomId ?? 0) !== room.Id\r\n // ) {\r\n // if (loc.RoomId !== null && loc.RoomId !== undefined) {\r\n // const roomLocationData = yield call(\r\n // initRoomData,\r\n // loc.RoomId.toString(),\r\n // undefined,\r\n // undefined,\r\n // [\r\n // 'Id',\r\n // 'Name',\r\n // 'AreaId',\r\n // 'Areaname',\r\n // 'Barcode',\r\n // 'BuildingDescription',\r\n // 'BuildingId',\r\n // 'BuildingName',\r\n // 'Description',\r\n // 'Floor',\r\n // 'CampusId',\r\n // 'CampusName',\r\n // ],\r\n // );\r\n // let roomLocData = roomLocationData[0];\r\n // if (!roomLocData) {\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'error',\r\n // message: `No related Room found, Please select a Room first`,\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_error());\r\n // } else {\r\n // yield put(actions.setSelectedRoom_Success(roomLocData));\r\n // yield put(actions.setSelectedLocation_Success(loc));\r\n // yield put(actions.setSelectedSubLocation_Success(null));\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'success',\r\n // message: 'Location Scanned',\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_Success());\r\n // }\r\n // } else {\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'error',\r\n // message: `No related Room found for scanned Location, Please select a Room first`,\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_error());\r\n // }\r\n // } else {\r\n // yield put(actions.setSelectedLocation_Success(loc));\r\n // yield put(actions.setSelectedSubLocation_Success(null));\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'success',\r\n // message: 'Location Scanned',\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_Success());\r\n // }\r\n // }\r\n }\r\n } else if (scanResult.type === ScanTemplateResult.SubLocation) {\r\n if (\r\n subLocation !== null &&\r\n subLocation !== undefined &&\r\n subLocation.Id === tryParseInt(scanResult.SubLocationId) &&\r\n subLocation.LocationListId === tryParseInt(scanResult.LocationId) &&\r\n subLocation.RoomId === tryParseInt(scanResult.RoomId)\r\n ) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'warning',\r\n message: `Sub Location: ${subLocation.Name} already selected`,\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n } else {\r\n if (\r\n scanResult.SubLocationId !== undefined &&\r\n scanResult.LocationId !== undefined &&\r\n scanResult.RoomId !== undefined\r\n ) {\r\n const roomResult = yield call(\r\n api.logSubLocationScan,\r\n parseInt(scanResult.RoomId),\r\n parseInt(scanResult.LocationId),\r\n parseInt(scanResult.SubLocationId),\r\n );\r\n let response = roomResult as AssetBarcodeScanResult;\r\n if (response.SuccessMessages.length > 0) {\r\n if (\r\n !!response.RoomDetails &&\r\n !!response.LocationDetails &&\r\n !!response.SubLocationDetails\r\n ) {\r\n yield put(\r\n actions.setSelectedRoom_Success(response.RoomDetails),\r\n );\r\n yield put(\r\n actions.setSelectedLocation_Success(response.LocationDetails),\r\n );\r\n yield put(\r\n actions.setSelectedSubLocation_Success(\r\n response.SubLocationDetails,\r\n ),\r\n );\r\n }\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: response.SuccessMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_Success());\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: response.ErrorMessages[0],\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: `Scanned Sub Location not found`,\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n // const subLocationData = yield call(\r\n // initSubLocationListData,\r\n // scanResult.SubLocationId,\r\n // );\r\n // let subResults = subLocationData as ISubLocationListDto[];\r\n // if (!subResults || subResults.length === 0) {\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'error',\r\n // message: `Scanned Sub Location not found`,\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_error());\r\n // } else {\r\n // let sub = subResults[0];\r\n // if (\r\n // room === null ||\r\n // room === undefined ||\r\n // (sub.RoomId ?? 0) !== room.Id\r\n // ) {\r\n // if (sub.RoomId !== null && sub.RoomId !== undefined) {\r\n // const roomSubLocData = yield call(\r\n // initRoomData,\r\n // sub.RoomId.toString(),\r\n // undefined,\r\n // undefined,\r\n // [\r\n // 'Id',\r\n // 'Name',\r\n // 'AreaId',\r\n // 'Areaname',\r\n // 'Barcode',\r\n // 'BuildingDescription',\r\n // 'BuildingId',\r\n // 'BuildingName',\r\n // 'Description',\r\n // 'Floor',\r\n // 'CampusId',\r\n // 'CampusName',\r\n // ],\r\n // );\r\n // let roomSubData = roomSubLocData[0];\r\n // if (!roomSubData) {\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'error',\r\n // message: `No related Room found, Please select a Room first`,\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_error());\r\n // } else {\r\n // const locSubData = yield call(\r\n // initLocationData,\r\n // sub.LocationListId.toString(),\r\n // );\r\n // yield put(actions.setSelectedRoom_Success(roomSubData));\r\n // yield put(actions.setSelectedLocation_Success(locSubData[0]));\r\n // yield put(actions.setSelectedSubLocation_Success(sub));\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'success',\r\n // message: 'Sub Location Scanned',\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_Success());\r\n // }\r\n // } else {\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'error',\r\n // message: `No related Room found for scanned Sub Location, Please select a Room first`,\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_error());\r\n // }\r\n // } else if (location === null || location === undefined) {\r\n // const locSubData = yield call(\r\n // initLocationData,\r\n // sub.LocationListId.toString(),\r\n // );\r\n // yield put(actions.setSelectedLocation_Success(locSubData[0]));\r\n // yield put(actions.setSelectedSubLocation_Success(sub));\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'success',\r\n // message: 'Sub Location Scanned',\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_Success());\r\n // } else {\r\n // yield put(actions.setSelectedSubLocation_Success(sub));\r\n // yield put(\r\n // appSettingsActions.addNotification({\r\n // variant: 'success',\r\n // message: 'Sub Location Scanned',\r\n // }),\r\n // );\r\n // yield put(actions.scanManualBarcode_Success());\r\n // }\r\n // }\r\n }\r\n } else {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: (\r\n i18next.t(translations.BarcodeNotFoundEx) as string\r\n ).replace('{{barcode}}', action.payload.data),\r\n }),\r\n );\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n }\r\n } catch (error) {\r\n console.error(`${action.type}`, action.payload, error);\r\n yield put(actions.scanManualBarcode_error());\r\n }\r\n}\r\nfunction* doSetNoRoomAccess() {\r\n const roomSelected: IRoomDto | null = yield select(selectRoomSelected);\r\n if (roomSelected === null || roomSelected === undefined) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: 'Please select a Room first',\r\n }),\r\n );\r\n yield put(actions.setNoRoomAccess_error());\r\n } else {\r\n const result = yield call(api.logNoRoomAccess, roomSelected.Id);\r\n let response = result as AssetBarcodeScanResult;\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'success',\r\n message: response.SuccessMessages[0],\r\n }),\r\n );\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'warning',\r\n message: response.WarningMessages[0],\r\n }),\r\n );\r\n }\r\n yield put(actions.setNoRoomAccess_success());\r\n }\r\n if (response.ErrorMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: response.ErrorMessages[0],\r\n }),\r\n );\r\n yield put(actions.setNoRoomAccess_error());\r\n }\r\n }\r\n}\r\nexport function* assetInventoryStateSaga() {\r\n yield takeLatest(\r\n actions.setSelectedSubLocation.type,\r\n doSetSelectedSubLocation,\r\n );\r\n yield takeLatest(actions.setSelectedLocation.type, doSetSelectedLocation);\r\n yield takeLatest(actions.setSelectedRoom.type, doSetSelectedRoom);\r\n yield takeLatest(BARCODE_SCANNED, doBarcodeScan);\r\n yield takeLatest(actions.scanManualBarcode, doBarcodeScan);\r\n yield takeLatest(actions.setNoRoomAccess, doSetNoRoomAccess);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { ILocationListDto } from 'api/odata/generated/entities/ILocationListDto';\r\nimport { IRoomDto } from 'api/odata/generated/entities/IRoomDto';\r\nimport { ISubLocationListDto } from 'api/odata/generated/entities/ISubLocationListDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { assetInventoryStateSaga } from './saga';\r\nimport { AssetInventoryState } from './types';\r\n\r\nexport const initialState: AssetInventoryState = {\r\n selectedRoomState: null,\r\n selectedLocationState: null,\r\n selectedSubLocationState: null,\r\n scanProcessing: undefined,\r\n noRoomAccessProcessing: undefined,\r\n logFilters: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'assetInventory',\r\n initialState,\r\n reducers: {\r\n setSelectedRoom(state, action: PayloadAction) {},\r\n setSelectedRoom_Success(state, action: PayloadAction) {\r\n state.selectedRoomState = action.payload;\r\n },\r\n setSelectedLocation(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n setSelectedLocation_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.selectedLocationState = action.payload;\r\n },\r\n setSelectedSubLocation(\r\n state,\r\n action: PayloadAction,\r\n ) {},\r\n setSelectedSubLocation_Success(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.selectedSubLocationState = action.payload;\r\n },\r\n scanManualBarcode(state, action: PayloadAction<{ data: string }>) {},\r\n scanManualBarcode_Success(state, action: PayloadAction) {\r\n state.scanProcessing = false;\r\n },\r\n scanManualBarcode_error(state, action: PayloadAction) {\r\n state.scanProcessing = false;\r\n },\r\n setNoRoomAccess(state, action: PayloadAction) {\r\n state.noRoomAccessProcessing = true;\r\n },\r\n setNoRoomAccess_success(state, action: PayloadAction) {\r\n state.noRoomAccessProcessing = false;\r\n },\r\n setNoRoomAccess_error(state, action: PayloadAction) {\r\n state.noRoomAccessProcessing = false;\r\n },\r\n setNoRoomAccessProcessing(\r\n state,\r\n action: PayloadAction,\r\n ) {\r\n state.noRoomAccessProcessing = action.payload;\r\n },\r\n setScanProcessing(state, action: PayloadAction) {\r\n state.scanProcessing = action.payload;\r\n },\r\n setLogFilters(\r\n state,\r\n action: PayloadAction | undefined>,\r\n ) {\r\n state.logFilters = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: assetInventoryActions } = slice;\r\n\r\nexport const useAssetInventorySlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: assetInventoryStateSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useAssetInventorySlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { Chip, ChipProps, Theme, withStyles } from '@material-ui/core';\r\n\r\nexport interface StatusChipProps extends ChipProps {}\r\n\r\nconst StyledChip = withStyles((theme: Theme) => ({\r\n // root: {\r\n // borderRadius: 4,\r\n // backgroundColor: theme.palette.primary.main,\r\n // height: 24,\r\n // color: theme.palette.common.white,\r\n // gap: 4,\r\n // paddingBlock: '2px',\r\n // '&$disabled': {\r\n // opacity: 1,\r\n // backgroundColor: theme.palette.common.grayComponents,\r\n // color: theme.palette.common.white,\r\n // pointerEvents: 'none',\r\n // },\r\n // '&:hover, &:focus': {\r\n // backgroundColor: theme.palette.primary.dark,\r\n // color: theme.palette.common.white,\r\n // },\r\n // },\r\n // disabled: {\r\n // backgroundColor: theme.palette.common.grayComponents,\r\n // color: theme.palette.common.white,\r\n // },\r\n // label: {\r\n // fontFamily: `'Lato', sans-serif`,\r\n // fontStyle: 'normal',\r\n // fontWeight: 400,\r\n // fontSize: '14px',\r\n // lineHeight: '141%',\r\n // letterSpacing: '0.1px',\r\n // },\r\n // labelSmall: {\r\n // fontFamily: `'Lato', sans-serif`,\r\n // fontStyle: 'normal',\r\n // fontWeight: 400,\r\n // fontSize: '14px',\r\n // lineHeight: '141%',\r\n // letterSpacing: '0.1px',\r\n // },\r\n // clickable: {\r\n // backgroundColor: theme.palette.primary.main,\r\n // color: theme.palette.common.white,\r\n // },\r\n // sizeSmall: {\r\n // height: 20,\r\n // },\r\n // deleteIcon: {\r\n // color: theme.palette.primary.contrastText,\r\n // height: 18,\r\n // width: 18,\r\n // '&:hover': {\r\n // color: fade(theme.palette.primary.contrastText, 0.8),\r\n // },\r\n // },\r\n}))(Chip);\r\n\r\nexport const StatusChip = (props: StatusChipProps) => {\r\n return ;\r\n};\r\n","import { IWorkOrderDetailsDto } from 'api/odata/generated/entities/IWorkOrderDetailsDto';\r\nimport { StatusChip } from 'app/components/BasicChip/StatusChip';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { DescriptionCell } from 'app/components/BasicTable/components/DescriptionCell';\r\nimport { UserProfileLink } from 'app/pages/UserDetails/OpenUserProfile';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Column } from 'react-table';\r\nimport { AppSettings } from 'types/AppSettings';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { GlobalSettings } from 'utils/globalSettings';\r\nimport { SidePanelOpenState } from 'app/hooks/useSidePanelOpen';\r\nimport { AssetLink } from '../AssetPopUp/OpenAssetDetails';\r\nimport {\r\n allowedToViewAlert,\r\n IAlertPermissionCheckRecord,\r\n} from 'app/permissions/WorkOrders/workOrdersPermissionUtils';\r\nimport { WorkOrderLink } from '../Actions/GlobalSelectedActions/OpenWorkOrder';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\n\r\nexport const getColumns = (\r\n t: TFunction,\r\n appSettings?: AppSettings,\r\n globalSettings?: GlobalSettings,\r\n user?: AuthenticatedUser,\r\n useSidePanel?: boolean,\r\n openPanel?: (state: SidePanelOpenState) => void,\r\n): Column[] => {\r\n return [\r\n {\r\n Header: t(translations.Id) as string,\r\n accessor: 'Id',\r\n //for testing comments component\r\n //Cell: WorkOrderIdRenderer,\r\n Cell: ({ value, row }) => {\r\n return allowedToViewAlert(\r\n user,\r\n row.original as IAlertPermissionCheckRecord,\r\n ) && value !== null ? (\r\n \r\n {value}\r\n \r\n ) : (\r\n <>{value}\r\n );\r\n },\r\n },\r\n //Attachment of Comment\r\n {\r\n Header: () => (\r\n <>\r\n {t(translations.Attachment) as string} \r\n \r\n ),\r\n accessor: 'AttachmentExist',\r\n Cell: ({ value, row }) => (\r\n <>{value === true ? : <>}\r\n ),\r\n },\r\n {\r\n Header: t(translations.AssetName) as string,\r\n accessor: 'AssetName', // AssetName\r\n Cell: ({ value, row }) =>\r\n !!row.original.AssetId ? (\r\n \r\n {value}\r\n \r\n ) : (\r\n <>{value}\r\n ),\r\n },\r\n {\r\n Header: t(translations.ServiceGroup) as string,\r\n accessor: 'ServiceGroup', // Laboratory\r\n },\r\n {\r\n Header: t(translations.AlertDescription) as string,\r\n accessor: 'AlertDescription', // Description\r\n Cell: DescriptionCell({ width: 'short' }),\r\n },\r\n {\r\n Header: t(translations.AlertTitle) as string,\r\n accessor: 'AlertTitle', // Subject\r\n },\r\n {\r\n Header: t(translations.StatusName) as string,\r\n accessor: 'StatusName', // StatusName\r\n },\r\n {\r\n Header: t(translations.AlertType) as string,\r\n accessor: 'AlertType', // WorkOrderType\r\n },\r\n {\r\n Header: t(translations.EventDueDate) as string,\r\n accessor: 'EventStart', // WorkOrderStart\r\n Cell: ({ value }) => <>{dateUtils.shortDateTimeFormat(value)},\r\n },\r\n {\r\n Header: t(translations.EventEnd) as string,\r\n accessor: 'EventEnd', // WorkOrderEnd\r\n Cell: ({ value }) => {\r\n if (value !== null) {\r\n return <>{dateUtils.shortDateTimeFormat(value)};\r\n } else {\r\n return <>;\r\n }\r\n },\r\n },\r\n {\r\n Header: t(translations.ReportedBy) as string,\r\n accessor: 'ReportedBy',\r\n Cell: ({ value, row }) => (\r\n <>\r\n \r\n \r\n ),\r\n },\r\n {\r\n Header: t(translations.AssignedUsers) as string,\r\n accessor: 'AssignedUsers',\r\n Cell: ({ value, row }) => {\r\n if (value !== undefined) {\r\n let users = value.map((item, i) => {\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n });\r\n return <>{users};\r\n }\r\n return t(translations.NA) as string;\r\n },\r\n },\r\n {\r\n Header: t(translations.LastUpdated) as string,\r\n accessor: 'LastUpdated', // UpdatedAt\r\n Cell: ({ value }) => <>{dateUtils.shortDateTimeFormat(value)},\r\n },\r\n {\r\n Header: t(translations.Reservation) as string,\r\n accessor: 'Reservation', // ReservationId\r\n },\r\n {\r\n Header: t(translations.LastComment) as string,\r\n accessor: 'LastComment',\r\n Cell: DescriptionCell({ width: 'medium' }),\r\n },\r\n {\r\n Header: t(translations.LastCommentBy) as string,\r\n accessor: 'LastCommentBy',\r\n },\r\n {\r\n Header: t(translations.LastCommentAt) as string,\r\n accessor: 'LastCommentAt',\r\n Cell: ({ value }) => <>{dateUtils.shortDateTimeFormat(value)},\r\n },\r\n {\r\n Header: t(translations.AlertOfflineTime) as string,\r\n accessor: 'AlertOfflineTime', // OfflineTime (h)\r\n Cell: ({ value, row }) => {\r\n if (value) {\r\n if (value > 69000000) {\r\n return (\r\n }\r\n variant=\"outlined\"\r\n />\r\n );\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n return <>{'N/A'};\r\n }\r\n // let startTime: Date | null = value;\r\n // let endTime: Date | null = row.original.OfflineEnd;\r\n // if (startTime !== null && endTime !== null) {\r\n // let newStartTime = new Date(startTime);\r\n // let newEndTime = new Date(endTime);\r\n // let timeDiff =\r\n // (newEndTime.getTime() - newStartTime.getTime()) / 36e5;\r\n // return <> {roundTwoPlacesAfterDecimalPoint(value)} ;\r\n // } else return <>;\r\n },\r\n },\r\n {\r\n Header: t(translations.ReasonTypeName) as string,\r\n accessor: 'ReasonTypeName',\r\n },\r\n ];\r\n};\r\n","import { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { Formik, FormikProps } from 'formik';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport {\r\n ErrorServices,\r\n ReportConsumablesState,\r\n ReportedFrom,\r\n ServiceChangeStateParameters,\r\n} from '../Details/slice/types';\r\nimport React from 'react';\r\nimport * as Yup from 'yup';\r\nimport { translations } from 'locales/translations';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport {\r\n selectConnectedFiltersData,\r\n selectConnectedSettings,\r\n} from 'app/components/Forms/FormConnectedFilters/slice/selectors';\r\nimport {\r\n selectConnectedInitState,\r\n selectConsumablesHasErrors,\r\n selectConsumablesValueHandler,\r\n selectEditCreatableService,\r\n selectServiceChangeState,\r\n} from '../Details/slice/selectors';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport { useConnectedFiltersSlice } from 'app/components/Forms/FormConnectedFilters/slice';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { isEmpty } from 'lodash';\r\nimport { ConnectedFiltersControl } from 'app/components/Forms/FormConnectedFilters/ConnectedFiltersControl';\r\nimport {\r\n FieldHandler,\r\n FormListener,\r\n SubmittingHandler,\r\n} from 'app/components/Forms/FormRender/FormRenderer';\r\nimport { BookQuickServices } from '../Details/components/BookQuickServices';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { IConnectedFiltersDto } from 'types/IConnectedFiltersDto';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { ErrorsSummury } from 'app/components/Forms/FormsLayout/FormErrorSummury';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport {\r\n ListMessagesProps,\r\n SingleMessagesProps,\r\n} from 'app/Layout/FrontendLayout/components/Snackbar/Actions';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\nimport BaseTextField from 'app/components/BasicInputs/BaseTextField';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\nimport { OfflineReferenceTypeEnum } from 'enums/OfflineReferenceTypeEnum';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\n\r\nexport interface ConsumablesFormProps {\r\n onSubmit: (\r\n item: ReportConsumablesState,\r\n factor?: number,\r\n remarks?: string,\r\n ) => void;\r\n onAddServiceClick: (services: number[]) => void;\r\n initialValues: ReportConsumablesState;\r\n processing?: boolean;\r\n bindSubmitForm: any;\r\n isAdmin: boolean;\r\n user?: AuthenticatedUser;\r\n innerFormRef: React.RefObject>;\r\n connectedFiltersFormRef: React.MutableRefObject;\r\n globalSettings: GlobalSettingsType;\r\n onOfflineServiceClick?: (\r\n service: IOtherServices,\r\n discountFactor?: number,\r\n remarks?: string,\r\n ) => void;\r\n editCreatable?: boolean;\r\n onAddBatchClick: (\r\n batch: IInventoryBatchDto | null,\r\n serviceTypeId: number,\r\n ) => void;\r\n onRenewStockClick?: (service: IOtherServices) => void;\r\n setError?: (errors: ErrorServices) => void;\r\n offlineServicesErrors: ErrorServices[];\r\n isCover?: boolean;\r\n reportFrom?: ReportedFrom;\r\n offlineTypeFilter?:\r\n | (string | Condition)[]\r\n | undefined;\r\n}\r\n\r\nexport const ConsumablesForm = React.memo(function ConsumablesForm({\r\n onSubmit,\r\n processing,\r\n initialValues,\r\n bindSubmitForm,\r\n isAdmin,\r\n user,\r\n connectedFiltersFormRef,\r\n globalSettings,\r\n innerFormRef,\r\n onOfflineServiceClick,\r\n onAddServiceClick,\r\n editCreatable,\r\n onAddBatchClick,\r\n onRenewStockClick,\r\n offlineServicesErrors,\r\n setError,\r\n isCover,\r\n reportFrom,\r\n offlineTypeFilter,\r\n}: ConsumablesFormProps) {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n const { actions: connectedFiltersActions } = useConnectedFiltersSlice();\r\n const { actions: appActions } = useAppSettingsSlice();\r\n\r\n const fieldHandler = useSelector(selectConsumablesValueHandler);\r\n const hasError = useSelector(selectConsumablesHasErrors);\r\n const serviceSettings = useSelector(selectConnectedSettings);\r\n const connectedData = useSelector(selectConnectedFiltersData);\r\n const connectedInit = useSelector(selectConnectedInitState);\r\n const serviceChangeState = useSelector(selectServiceChangeState);\r\n const editCreatableService = useSelector(selectEditCreatableService);\r\n const { newDate } = useSystemDate();\r\n // const readonly = !isAdmin;\r\n const [submitting, setSubmitting] = React.useState(\r\n undefined,\r\n );\r\n const fundingTypeVisible = React.useMemo(() => {\r\n return (\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n globalSettings.fundingTypeBudgetEnabled\r\n );\r\n }, [globalSettings]);\r\n const resetSubmitting = () => {\r\n setSubmitting(true);\r\n };\r\n const handleSubmit = (\r\n values: ReportConsumablesState,\r\n factor?: number,\r\n remarks?: string,\r\n ) => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(values, factor, remarks);\r\n }\r\n };\r\n const resetFieldHandler = () => {\r\n dispatch(actions.resetConsumableValueHandler());\r\n };\r\n /// Local State ///\r\n const [serviceChanged, setServiceChanged] = React.useState(false);\r\n const [allIsValid, setAllIsValid] = React.useState(true);\r\n const [innerDiscountFactor, setDiscountFactor] = React.useState<\r\n number | null\r\n >(1);\r\n const [innerRemarks, setRemarks] = React.useState(null);\r\n const [servicesSelected, setServicesSelected] = useAsyncExtendedState<\r\n IOtherServices[]\r\n >(initialValues.Services ?? []);\r\n\r\n const validateForms = React.useCallback((isValid: boolean) => {\r\n setAllIsValid(isValid);\r\n }, []);\r\n\r\n /// useEffects\r\n React.useEffect(() => {\r\n if (innerFormRef.current) {\r\n innerFormRef.current.validateForm();\r\n }\r\n }, [innerFormRef]);\r\n React.useEffect(() => {\r\n if (!!serviceChangeState) {\r\n console.log('service settings: ', serviceSettings);\r\n if (!!serviceChangeState) {\r\n if (serviceSettings.budgetVisible) {\r\n dispatch(\r\n connectedFiltersActions.setConnectedValue({\r\n fieldKey: 'Budget',\r\n fieldValue: serviceChangeState.DefaultBudget,\r\n }),\r\n );\r\n if (\r\n fundingTypeVisible &&\r\n serviceChangeState.DefaultBudget?.FundingTypeId !== undefined &&\r\n serviceChangeState.DefaultBudget?.FundingTypeId !== null\r\n ) {\r\n dispatch(\r\n connectedFiltersActions.setConnectedValue({\r\n fieldKey: 'FundingType',\r\n fieldValue: getSingleInvoiceFundingType(\r\n serviceChangeState.DefaultBudget.FundingTypeId,\r\n ),\r\n }),\r\n );\r\n }\r\n if (serviceSettings.ReservationUserGroupGroupByBudgetUserGroup) {\r\n if (serviceChangeState.DefaultBudget !== null) {\r\n dispatch(\r\n connectedFiltersActions.setConnectedValue({\r\n fieldKey: 'UserGroup',\r\n fieldValue: {\r\n Id: serviceChangeState.DefaultBudget.UserGroupId,\r\n Name: serviceChangeState.DefaultBudget.UserGroupName,\r\n },\r\n }),\r\n );\r\n }\r\n } else {\r\n if (\r\n connectedData?.UserGroup === null ||\r\n connectedData?.UserGroup === undefined\r\n ) {\r\n dispatch(\r\n connectedFiltersActions.setConnectedValue({\r\n fieldKey: 'UserGroup',\r\n fieldValue: {\r\n Id:\r\n (connectedData?.User as IUserFilterDto).UserGroupId ??\r\n user?.ActiveUserGroup?.Id,\r\n Name:\r\n (connectedData?.User as IUserFilterDto).UserGroupName ??\r\n user?.ActiveUserGroup?.Name,\r\n },\r\n }),\r\n );\r\n }\r\n }\r\n if (\r\n serviceSettings.budgetExpirementVisible &&\r\n serviceChangeState.DefaultExperiment !== null\r\n ) {\r\n dispatch(\r\n connectedFiltersActions.setConnectedValue({\r\n fieldKey: 'BudgetExperiment',\r\n fieldValue: serviceChangeState.DefaultExperiment,\r\n }),\r\n );\r\n }\r\n } else {\r\n if (serviceSettings.isUserGroupCoordinator) {\r\n dispatch(\r\n connectedFiltersActions.setConnectedValue({\r\n fieldKey: 'UserGroup',\r\n fieldValue: {\r\n Id: user?.ActiveUserGroup?.Id,\r\n Name: user?.ActiveUserGroup?.Name,\r\n },\r\n }),\r\n );\r\n } else if (\r\n connectedData?.UserGroup === null ||\r\n connectedData?.UserGroup === undefined\r\n ) {\r\n dispatch(\r\n connectedFiltersActions.setConnectedValue({\r\n fieldKey: 'UserGroup',\r\n fieldValue: {\r\n Id:\r\n (connectedData?.User as IUserFilterDto).UserGroupId ??\r\n user?.ActiveUserGroup?.Id,\r\n Name:\r\n (connectedData?.User as IUserFilterDto).UserGroupName ??\r\n user?.ActiveUserGroup?.Name,\r\n },\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n dispatch(actions.resetServiceChangeState());\r\n }\r\n }, [\r\n actions,\r\n connectedData?.User,\r\n connectedData?.UserGroup,\r\n connectedFiltersActions,\r\n dispatch,\r\n fundingTypeVisible,\r\n serviceChangeState,\r\n serviceSettings,\r\n user?.ActiveUserGroup?.Id,\r\n user?.ActiveUserGroup?.Name,\r\n ]);\r\n React.useEffect(() => {\r\n dispatch(\r\n actions.setConsumableValue({\r\n fieldKey: 'Services',\r\n fieldValue: servicesSelected,\r\n }),\r\n );\r\n dispatch(actions.extendConsumablesData(servicesSelected));\r\n }, [actions, dispatch, servicesSelected]);\r\n\r\n const otherServicesSchema = Yup.array().of(\r\n Yup.mixed() as Yup.SchemaOf,\r\n );\r\n const reportConsumableSchema: Yup.SchemaOf =\r\n Yup.object({\r\n Services: otherServicesSchema\r\n .min(1)\r\n .label(t(translations.Consumables) as string)\r\n .required(t(translations.err_OfflineServiceTypeRequired) as string),\r\n DiscountFactor: Yup.number()\r\n .nullable()\r\n .label(t(translations.DiscountFactor) as string)\r\n .max(9999)\r\n .min(0.01),\r\n Remarks: Yup.string()\r\n .nullable()\r\n .label(t(translations.Remarks) as string),\r\n });\r\n const changeOfflineServices = React.useCallback(\r\n (services: IOtherServices[], operation: 'add' | 'remove' | 'update') => {\r\n if (operation === 'add') {\r\n let addedServ = services.filter(\r\n f => !servicesSelected.some(s => s.ServiceTypeID === f.ServiceTypeID),\r\n );\r\n setServicesSelected([...servicesSelected, ...addedServ]);\r\n setServiceChanged(true);\r\n }\r\n if (operation === 'remove') {\r\n let otherServices = servicesSelected.filter(f => {\r\n return !services.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n });\r\n setServicesSelected(otherServices);\r\n setServiceChanged(true);\r\n }\r\n if (operation === 'update') {\r\n setServicesSelected(\r\n servicesSelected.map(f => {\r\n let service = services.find(\r\n s => s.ServiceTypeID === f.ServiceTypeID,\r\n );\r\n if (!!service && service !== null) {\r\n return Object.assign({}, f, service);\r\n } else {\r\n return f;\r\n }\r\n }),\r\n );\r\n }\r\n },\r\n [servicesSelected, setServicesSelected],\r\n );\r\n const initServices = async (): Promise => {\r\n return new Promise(async resolve => {\r\n resolve(servicesSelected);\r\n });\r\n };\r\n const sortFunc = (a: IInventoryBatchDto, b: IInventoryBatchDto) => {\r\n return b.Id - a.Id;\r\n };\r\n const prepareService = (\r\n serviceType: IOfflineServiceFilterDto,\r\n otherData?: IConnectedFiltersDto,\r\n discountFactor?: number,\r\n remarks?: string,\r\n reportedFrom?: ReportedFrom,\r\n ) => {\r\n let batch = serviceType.InventoryBatchesEnabled\r\n ? !!serviceType.InventoryBatches &&\r\n serviceType.InventoryBatches.length > 0\r\n ? serviceType.InventoryBatches.filter(\r\n f =>\r\n (f.ExpirationDate === null || f.ExpirationDate > newDate()) &&\r\n (serviceType.NotLessThanZero ? f.Inventory > 0 : true) &&\r\n f.StokRenewed,\r\n ).sort(sortFunc)[0] ?? null\r\n : null\r\n : null;\r\n let relatedService =\r\n !!reportedFrom &&\r\n !!serviceType.RelatedReferences &&\r\n serviceType.RelatedReferences.length > 0\r\n ? serviceType.RelatedReferences.filter(\r\n r =>\r\n ((reportedFrom === 'milestone' &&\r\n r.ReferenceTypeId ===\r\n OfflineReferenceTypeEnum.Offline_ServiceRequest) ||\r\n (reportedFrom === 'reservation' &&\r\n r.ReferenceTypeId ===\r\n OfflineReferenceTypeEnum.Offline_Reservation)) &&\r\n r.ServiceTypeId === serviceType.Id,\r\n )[0]\r\n : undefined;\r\n let data = {\r\n Id: 0,\r\n BookedBy: otherData?.User?.Id,\r\n UserDisplayName: otherData?.User?.Name,\r\n BudgetID: otherData?.Budget?.Id,\r\n Budget: otherData?.Budget?.Name,\r\n BudgetExperimentId: otherData?.BudgetExperiment?.Id,\r\n BudgetExperimentName: otherData?.BudgetExperiment?.Name,\r\n Quantity: relatedService?.DefaultQuantity ?? serviceType.DefaultQuantity,\r\n DefaultQuantity: serviceType.DefaultQuantity,\r\n ExternalCustomerId: otherData?.ExternalCustomer?.Id,\r\n ExternalCustomerName: otherData?.ExternalCustomer?.Name,\r\n FundingType: otherData?.FundingType?.Id,\r\n IntQuantityOnly: serviceType.IntQuantityOnly,\r\n DiscountFactor: Number(discountFactor),\r\n InstituteProjectId: otherData?.InstituteProject?.Id,\r\n InstituteProjectName: otherData?.InstituteProject?.Name,\r\n PurchaseOrder: otherData?.PurchaseOrder,\r\n Reference: otherData?.Reference,\r\n Mandatory: false,\r\n Remarks: remarks ?? null,\r\n ReservationId: null,\r\n ServiceDate: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(otherData?.StartTime ?? newDate()),\r\n ),\r\n ServiceTypeID: serviceType.Id,\r\n ServiceType: serviceType.Name,\r\n ServiceGroupId: serviceType.ServiceGroupId,\r\n Units: serviceType.UnitTypeName,\r\n UserGroup: otherData?.UserGroup?.Id,\r\n UserGroupName: otherData?.UserGroup?.Name,\r\n AllowToUser: serviceType.AllowToUser,\r\n BudgetsTurnedOn: serviceType.BudgetsTurnedOn,\r\n StaffOnly: serviceType.StaffOnly,\r\n HideProjects: serviceType.HideProjects,\r\n InventoryBatchesEnabled: serviceType.InventoryBatchesEnabled,\r\n InventoryBatchId: batch === null ? null : batch.Id,\r\n InventoryBatchName: batch === null ? null : batch.Name,\r\n InventoryBatchAmount: batch === null ? null : batch.Inventory,\r\n } as IOtherServices;\r\n return data;\r\n };\r\n const createService = async (\r\n serviceType: IOfflineServiceFilterDto,\r\n discountFactor?: number,\r\n remarks?: string,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticService = prepareService(\r\n serviceType,\r\n connectedData,\r\n discountFactor,\r\n remarks,\r\n reportFrom,\r\n );\r\n changeOfflineServices([staticService], 'add');\r\n resolve(staticService);\r\n });\r\n };\r\n const createServices = async (\r\n serviceTypes: IOfflineServiceFilterDto[],\r\n discountFactor?: number,\r\n remarks?: string,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticServices = serviceTypes.map(f =>\r\n prepareService(f, connectedData, discountFactor, remarks, reportFrom),\r\n );\r\n changeOfflineServices(staticServices, 'add');\r\n resolve(staticServices);\r\n });\r\n };\r\n const onRemoveService = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices([service], 'remove');\r\n resolve(service);\r\n });\r\n };\r\n const onRemoveServices = async (services: IOtherServices[]) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices(services, 'remove');\r\n resolve(services);\r\n });\r\n };\r\n const onUpdateService = async (service: IOtherServices) => {\r\n return new Promise(async (resolve, reject) => {\r\n changeOfflineServices([service], 'update');\r\n resolve(service);\r\n });\r\n };\r\n const onAddAndRemoveServices = async (\r\n serviceTypes: IOfflineServiceFilterDto[],\r\n removed: IOtherServices[],\r\n discountFactor?: number,\r\n remarks?: string,\r\n ): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n let staticServices = serviceTypes.map(f =>\r\n prepareService(f, connectedData, discountFactor, remarks, reportFrom),\r\n );\r\n let addedServ = staticServices.filter(\r\n f => !servicesSelected.some(s => s.ServiceTypeID === f.ServiceTypeID),\r\n );\r\n let otherServices = servicesSelected.filter(f => {\r\n return !removed.some(a => a.ServiceTypeID === f.ServiceTypeID);\r\n });\r\n setServicesSelected([...otherServices, ...addedServ]);\r\n setServiceChanged(true);\r\n resolve([...otherServices, ...addedServ]);\r\n });\r\n };\r\n React.useEffect(() => {\r\n let active =\r\n editCreatableService !== undefined &&\r\n servicesSelected.some(\r\n f => f.ServiceTypeID === editCreatableService.ServiceTypeID,\r\n );\r\n if (active && editCreatableService !== undefined) {\r\n changeOfflineServices([editCreatableService], 'update');\r\n dispatch(actions.setEditCreatableService(undefined));\r\n dispatch(actions.setRefreshConsumableOfflineServices(true));\r\n setServiceChanged(true);\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n changeOfflineServices,\r\n dispatch,\r\n editCreatableService,\r\n servicesSelected,\r\n ]);\r\n const handleFormChange = React.useCallback(\r\n (\r\n values: ReportConsumablesState,\r\n isValid,\r\n dirty,\r\n setValue,\r\n setTouched,\r\n validateField,\r\n setError,\r\n validate,\r\n ) => {\r\n if (serviceChanged) {\r\n dispatch(\r\n connectedFiltersActions.extendSettingsState({\r\n services:\r\n values.Services.length < 1\r\n ? []\r\n : values.Services.map(f => {\r\n return {\r\n Id: f.ServiceTypeId,\r\n Name: f.ServiceTypeName,\r\n ServiceGroupId: f.ServiceGroupId,\r\n ServiceTypeId: ServiceType.Offline,\r\n Active: true,\r\n BudgetsTurnedOn: f.BudgetsTurnedOn,\r\n HideProject: f.HideProjects,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n globalSettings: globalSettings,\r\n settings: serviceSettings,\r\n isEdit: false,\r\n data: connectedData,\r\n reportFrom: reportFrom,\r\n }),\r\n );\r\n if (\r\n values.Services.length > 0 &&\r\n connectedData?.User !== null &&\r\n reportFrom !== 'milestone'\r\n ) {\r\n const parameters = {\r\n ServiceTypes: values.Services.map(f => f.ServiceTypeID),\r\n ReservationId: null,\r\n UsageId: null,\r\n BookedBy: connectedData?.User?.Id || null,\r\n ADGroup: connectedData?.UserGroup?.Id || null,\r\n Start: dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(\r\n connectedData?.StartTime || newDate(),\r\n ),\r\n ),\r\n BudgetId: connectedData?.Budget?.Id || null,\r\n FundingTypeId: isNullOrUndefined(connectedData?.FundingType)\r\n ? null\r\n : connectedData?.FundingType?.Id,\r\n } as ServiceChangeStateParameters;\r\n dispatch(actions.initServiceChangeStateData(parameters));\r\n // if (!!connectedData) {\r\n // dispatch(connectedFiltersActions.saveState(connectedData));\r\n // }\r\n }\r\n //setServiceTypesSelected(values.Services);\r\n setServiceChanged(false);\r\n }\r\n // if (factorChanged) {\r\n // if (Number(values.DiscountFactor) > 0) {\r\n // changeOfflineServices(\r\n // servicesSelected.map(f => {\r\n // return Object.assign({}, f, {\r\n // DiscountFactor: Number(values.DiscountFactor),\r\n // });\r\n // }),\r\n // 'update',\r\n // );\r\n // }\r\n // setFactorChanged(false);\r\n // }\r\n },\r\n [\r\n serviceChanged,\r\n dispatch,\r\n connectedFiltersActions,\r\n globalSettings,\r\n serviceSettings,\r\n connectedData,\r\n reportFrom,\r\n newDate,\r\n actions,\r\n ],\r\n );\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n if (allIsValid) {\r\n formikHelpers.validateForm(values).then(responseErrors => {\r\n if (!isEmpty(responseErrors)) {\r\n formikHelpers.setSubmitting(false);\r\n console.debug('errors', responseErrors);\r\n } else if (values.Services.length < 1) {\r\n formikHelpers.setErrors({\r\n Services: t(\r\n translations.err_OfflineServiceTypeRequired,\r\n ) as string,\r\n });\r\n formikHelpers.setSubmitting(false);\r\n } else if (offlineServicesErrors.length > 0) {\r\n formikHelpers.setSubmitting(false);\r\n dispatch(\r\n appActions.addNotification({\r\n variant: 'error',\r\n message: '',\r\n messageType: SnackBarMessageType.messageList,\r\n messageTypeProps: {\r\n messages: offlineServicesErrors.map(f => {\r\n return {\r\n Id: f.id.toString(),\r\n message: f.error,\r\n } as SingleMessagesProps;\r\n }),\r\n } as ListMessagesProps,\r\n }),\r\n );\r\n } else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(\r\n values,\r\n innerDiscountFactor ?? undefined,\r\n innerRemarks ?? undefined,\r\n );\r\n }\r\n });\r\n } else {\r\n formikHelpers.setSubmitting(false);\r\n }\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formik.errors) {\r\n console.log('Consumables errors', formik.errors);\r\n }\r\n console.log('Consumables submitting', formik.isSubmitting);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n createService(\r\n st,\r\n innerDiscountFactor ?? undefined,\r\n innerRemarks ?? undefined,\r\n )\r\n }\r\n createServicesFromServiceType={st =>\r\n createServices(\r\n st,\r\n innerDiscountFactor ?? undefined,\r\n innerRemarks ?? undefined,\r\n )\r\n }\r\n onAddAndRemoveServices={(st, removed) =>\r\n onAddAndRemoveServices(\r\n st,\r\n removed,\r\n innerDiscountFactor ?? undefined,\r\n innerRemarks ?? undefined,\r\n )\r\n }\r\n isCover={isCover}\r\n initServicesFunc={initServices}\r\n onServiceRemove={onRemoveService}\r\n onServicesRemove={onRemoveServices}\r\n onServiceUpdate={onUpdateService}\r\n onServiceClick={service =>\r\n onOfflineServiceClick?.(\r\n service,\r\n innerDiscountFactor ?? undefined,\r\n innerRemarks ?? undefined,\r\n )\r\n }\r\n isEditMode={false}\r\n disabled={false}\r\n useAssetSelection={true}\r\n onAddClick={onAddServiceClick}\r\n userName={connectedData?.User?.Id}\r\n createdEditable={editCreatable}\r\n onAddBatchClick={onAddBatchClick}\r\n onRenewStockClick={onRenewStockClick}\r\n setError={setError}\r\n reportFrom={reportFrom}\r\n useDropDownSelectionFirst={reportFrom === 'milestone'}\r\n offlineTypeFilter={offlineTypeFilter}\r\n />\r\n \r\n \r\n {\r\n return {\r\n Id: s.ServiceTypeID,\r\n Name: s.ServiceType,\r\n Active: true,\r\n BudgetsTurnedOn: s.BudgetsTurnedOn,\r\n HideProject: s.HideProjects,\r\n ServiceGroupId: s.ServiceGroupId,\r\n ServiceTypeId: ServiceType.Offline,\r\n } as IServiceTypeFilterDto;\r\n })\r\n }\r\n globalSettings={globalSettings}\r\n formIsValid={validateForms}\r\n startTimeLabel={\r\n t(translations.LogDateTimeLabel) as string\r\n }\r\n startLabelInline={true}\r\n //orderForConsumables={true}\r\n //forceDisabled={servicesSelected.length > 1}\r\n budgetPickerInfo={\r\n t(translations.ConsumableProject_info) as string\r\n }\r\n />\r\n {formik.values.Services.length > 0 &&\r\n isAdmin &&\r\n !globalSettings.priceSheetPricing &&\r\n globalSettings.billingModuleEnabled && (\r\n \r\n {\r\n setDiscountFactor(Number(e.target.value));\r\n if (Number(e.target.value) > 0) {\r\n changeOfflineServices(\r\n servicesSelected.map(f => {\r\n return Object.assign({}, f, {\r\n DiscountFactor: Number(e.target.value),\r\n });\r\n }),\r\n 'update',\r\n );\r\n }\r\n }}\r\n inputMode=\"decimal\"\r\n label={t(translations.DiscountFactor)}\r\n placeholder={t(translations.DiscountFactor)}\r\n disabled={formik.isSubmitting}\r\n />\r\n \r\n )}\r\n \r\n setRemarks(String(val))}\r\n disabled={formik.isSubmitting}\r\n fullWidth={true}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n});\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { useConnectedFiltersSlice } from 'app/components/Forms/FormConnectedFilters/slice';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { selectHasNotSavedChanges } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport {\r\n RenderPageType,\r\n SidePanelContentProps,\r\n} from 'app/Layout/FrontendLayout/slice/type';\r\nimport { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { push } from 'connected-react-router';\r\nimport { FormikProps } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Beforeunload } from 'react-beforeunload';\r\nimport { useOfflineServiceStateSlice } from '../Details/slice';\r\nimport {\r\n selectConsumablesCompleted,\r\n selectConsumablesData,\r\n selectConsumablesHasErrors,\r\n selectCredit,\r\n selectCreditCompleted,\r\n selectCreditProcessing,\r\n selectInitConsumablesProcessing,\r\n} from '../Details/slice/selectors';\r\nimport {\r\n ErrorServices,\r\n OfflineServiceQueryStringParameters,\r\n ReportConsumablesState,\r\n ReportedFrom,\r\n} from '../Details/slice/types';\r\nimport useGlobalSettingsHook from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { ConsumablesForm } from './ConsumablesForm';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport { AssetsSelectionProps } from 'app/pages/MyAssetsPage/AssetsSelection/AssetsSelection';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { ScanTarget } from 'app/slice/types';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport {\r\n selectConnectedFiltersData,\r\n selectConnectedSettings,\r\n} from 'app/components/Forms/FormConnectedFilters/slice/selectors';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { IMyAssetsRow } from 'app/pages/MyAssetsPage/IMyAssetsRow';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\nimport { CalculatePricing } from 'app/pages/ReservationDetails/Details/components/CalculatePricing';\r\nimport { isEmptyOrWhitespace } from 'utils/typeUtils';\r\nimport { IOfflineServiceFilterDto } from 'types/IOfflineServiceFilterDto';\r\n\r\nexport interface ReportConsumablesProps\r\n extends CoverProps,\r\n SidePanelContentProps {\r\n queryParams: OfflineServiceQueryStringParameters;\r\n initialServices: IOtherServices[];\r\n onClose?: () => void;\r\n reportFrom?: ReportedFrom;\r\n assetFilter?: (string | Condition)[] | undefined;\r\n offlineTypeFilter?:\r\n | (string | Condition)[]\r\n | undefined;\r\n serviceRequestMilestoneId?: number;\r\n serviceRequestId?: number;\r\n}\r\nexport const ReportConsumables = React.memo(function ReportConsumables(\r\n props: ReportConsumablesProps,\r\n) {\r\n const {\r\n useSidePanel,\r\n queryParams,\r\n initialServices,\r\n closeCover,\r\n isCover,\r\n onClose,\r\n reportFrom,\r\n assetFilter,\r\n serviceRequestMilestoneId,\r\n serviceRequestId,\r\n offlineTypeFilter,\r\n } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useOfflineServiceStateSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const { actions: connectedFiltersActions } = useConnectedFiltersSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n const processing = useSelector(selectInitConsumablesProcessing);\r\n // const consumablesProcessing = useSelector(selectConsumablesProcessing);\r\n const actionCompleted = useSelector(selectConsumablesCompleted);\r\n const User = useSelector(selectAuthenticatedUser);\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const hasError = useSelector(selectConsumablesHasErrors);\r\n const consumableServicesData = useSelector(selectConsumablesData);\r\n const connectedData = useSelector(selectConnectedFiltersData);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const serviceSettings = useSelector(selectConnectedSettings);\r\n const credit = useSelector(selectCredit);\r\n const creditProccessing = useSelector(selectCreditProcessing);\r\n const creditCompleted = useSelector(selectCreditCompleted);\r\n // const { checkIsMobile } = useIsMobile();\r\n // const mobile = checkIsMobile();\r\n const globalSettings = useGlobalSettingsHook();\r\n //Local State\r\n const { cover, openPanel, closePanel, coverClosed, onCloseCover } =\r\n useSidePanelState(\r\n () => {\r\n dispatch(actions.resetConsumablesState());\r\n dispatch(connectedFiltersActions.resetConnectedState());\r\n if (!!onClose) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n undefined,\r\n useSidePanel,\r\n isCover,\r\n );\r\n const [busy, setBusy] = React.useState(false);\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n const [showCalculateCredit, setShowCalculateCredit] = React.useState(false);\r\n const [requestCompleted, setRequestCompleted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n\r\n //Refs\r\n const submitFormRef = React.useRef(null);\r\n const connectedFiltersFormRef = React.useRef(null);\r\n const innerFormRef = React.useRef>(null);\r\n\r\n const isReadOnlyUser = React.useMemo(() => {\r\n return (\r\n User !== undefined &&\r\n (User.Roles.includes(Roles.CalendarOnly) ||\r\n User.Roles.includes(Roles.Readonly) ||\r\n User.Roles.includes(Roles.RoomOnly))\r\n );\r\n }, [User]);\r\n\r\n //Methods\r\n const handleCloselClick = React.useCallback(() => {\r\n if (useSidePanel) {\r\n if (!!onClose) {\r\n onClose();\r\n dispatch(actions.resetConsumablesState());\r\n dispatch(connectedFiltersActions.resetConnectedState());\r\n } else {\r\n closePanel({\r\n isCover: isCover,\r\n useSidePanel: useSidePanel,\r\n showConfirm: hasChanges,\r\n onClose: () => {\r\n dispatch(actions.resetConsumablesState());\r\n dispatch(connectedFiltersActions.resetConnectedState());\r\n },\r\n } as SidePanelCloseState);\r\n }\r\n } else {\r\n dispatch(push('/otherServices'));\r\n }\r\n }, [\r\n actions,\r\n closePanel,\r\n connectedFiltersActions,\r\n dispatch,\r\n hasChanges,\r\n isCover,\r\n onClose,\r\n useSidePanel,\r\n ]);\r\n const handleSaveClick = React.useCallback((e: any) => {\r\n handleSubmitForm(e);\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (connectedFiltersFormRef.current) {\r\n connectedFiltersFormRef.current(e);\r\n }\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: ReportConsumablesState, factor?: number, remarks?: string) => {\r\n setBusy(true);\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n dispatch(\r\n actions.createConsumables({\r\n Services: values.Services,\r\n DiscountFactor: factor,\r\n Remarks: remarks,\r\n reportFrom: reportFrom,\r\n milestoneData:\r\n !!serviceRequestMilestoneId && !!serviceRequestId\r\n ? {\r\n serviceRequestId: serviceRequestId,\r\n serviceRequestMilestoneId: serviceRequestMilestoneId,\r\n }\r\n : undefined,\r\n }),\r\n );\r\n },\r\n [\r\n actions,\r\n layoutActions,\r\n dispatch,\r\n reportFrom,\r\n serviceRequestId,\r\n serviceRequestMilestoneId,\r\n ],\r\n );\r\n const handleCalculateCredit = React.useCallback(() => {\r\n if (!!innerFormRef?.current?.values?.Services) {\r\n setShowCalculateCredit(true);\r\n dispatch(actions.getTotalCredit(innerFormRef?.current?.values.Services));\r\n }\r\n }, [actions, dispatch]);\r\n const handleCalculateClose = React.useCallback(() => {\r\n setShowCalculateCredit(false);\r\n dispatch(actions.resetTotalCreditState());\r\n }, [actions, dispatch]);\r\n //effects\r\n useEffectOnMount(() => {\r\n dispatch(\r\n appSettingsActions.setBarcodeScannigTarget(ScanTarget.Consumables),\r\n );\r\n return () => {\r\n dispatch(appSettingsActions.setBarcodeScannigTarget(ScanTarget.All));\r\n };\r\n });\r\n React.useEffect(() => {\r\n let active = firstLoad;\r\n if (globalSettings.loadCompleted && active) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.initConsumables({\r\n query: queryParams,\r\n globalSettings: globalSettings,\r\n services: initialServices,\r\n reportFrom: reportFrom,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actions,\r\n dispatch,\r\n firstLoad,\r\n globalSettings,\r\n initialServices,\r\n reportFrom,\r\n queryParams,\r\n ]);\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n if (actionCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n if (!hasError) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n handleCloselClick();\r\n }\r\n } else if (actionCompleted === false) {\r\n setRequestCompleted(undefined);\r\n setBusy(false);\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [\r\n actionCompleted,\r\n dispatch,\r\n handleCloselClick,\r\n hasError,\r\n layoutActions,\r\n processing,\r\n queryParams.id,\r\n ]);\r\n const assetsFilter = React.useMemo(() => {\r\n let filter: (string | Condition)[] = [];\r\n filter.push('ServiceTypeId eq 2');\r\n if (reportFrom === 'milestone' && !!assetFilter) {\r\n assetFilter.forEach(f => filter.push(f));\r\n }\r\n if (globalSettings.budgetModuleEnabled && serviceSettings.budgetVisible) {\r\n if (\r\n connectedData?.Budget === null ||\r\n connectedData?.Budget === undefined\r\n ) {\r\n filter.push(\r\n new Condition(\r\n 'HideProjects',\r\n ODataOperators.Equals,\r\n serviceSettings.budgetInputDisabled ?? false,\r\n ),\r\n );\r\n } else {\r\n let budget = connectedData?.Budget as IBudgetFilterDto;\r\n let byService = '';\r\n let byGroup = '';\r\n if (!budget.ServiceGroupServicesAllowed) {\r\n if (!!budget.AllowedServices && budget.AllowedServices.length > 0) {\r\n byService = `(${new Condition(\r\n 'ServiceId',\r\n ODataOperators.Includes,\r\n budget.AllowedServices.map(f => f.Id),\r\n ).toString()} and ServiceTypeId eq 2)`;\r\n }\r\n if (!!budget.ServiceGroupIds && budget.ServiceGroupIds.length > 0) {\r\n byGroup = `(${new Condition(\r\n 'ServiceGroupId',\r\n ODataOperators.Includes,\r\n budget.ServiceGroupIds,\r\n ).toString()})`;\r\n }\r\n let res = `(${[byService, byGroup]\r\n .filter(f => f !== '')\r\n .join(' or ')})`;\r\n if (res !== '()') {\r\n filter.push(res);\r\n }\r\n }\r\n }\r\n }\r\n return filter.length > 0 ? filter : undefined;\r\n }, [\r\n assetFilter,\r\n connectedData?.Budget,\r\n globalSettings.budgetModuleEnabled,\r\n reportFrom,\r\n serviceSettings.budgetVisible,\r\n serviceSettings.budgetInputDisabled,\r\n ]);\r\n\r\n const onRenewStockClick = React.useCallback(\r\n (service: IOtherServices) => {\r\n let renewProps = {\r\n saveCreatable: true,\r\n preventRefreshTable: true,\r\n initialService: undefined,\r\n queryParams: {\r\n id: '-1',\r\n stid: '' + service.ServiceTypeID,\r\n batchId:\r\n !!service.InventoryBatchId && service.InventoryBatchId !== null\r\n ? '' + service.InventoryBatchId\r\n : undefined,\r\n },\r\n };\r\n if (!useSidePanel) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n }\r\n openPanel({\r\n renderPageType: RenderPageType.RenewStock,\r\n renderPageProps: renewProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [dispatch, layoutActions, openPanel, useSidePanel],\r\n );\r\n const onAddBatchClick = React.useCallback(\r\n (batch: IInventoryBatchDto | null, serviceType: number) => {\r\n let batchProps = {\r\n initialBatch: batch ?? undefined,\r\n preventRefreshTable: true,\r\n queryParams: {\r\n id: '' + (batch?.Id ?? -1),\r\n stid: '' + serviceType,\r\n },\r\n saveCreatable: true,\r\n };\r\n if (!useSidePanel) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n }\r\n openPanel({\r\n renderPageType: RenderPageType.InventoryBatch,\r\n renderPageProps: batchProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [dispatch, layoutActions, openPanel, useSidePanel],\r\n );\r\n const onOfflineServiceClick = React.useCallback(\r\n (service: IOtherServices, discountFactor?: number, remarks?: string) => {\r\n let updatedRemarks = isEmptyOrWhitespace(service.Remarks)\r\n ? remarks ?? null\r\n : service.Remarks;\r\n let factor =\r\n Number(service.DiscountFactor) !== Number(discountFactor)\r\n ? Number(discountFactor)\r\n : Number(service.DiscountFactor);\r\n let otherProps = {\r\n initialService: Object.assign({}, service, {\r\n UserGroup: connectedData?.UserGroup?.Id ?? null,\r\n UserGroupName: connectedData?.UserGroup?.Name ?? null,\r\n Budget: connectedData?.Budget?.Name ?? null,\r\n BudgetID: connectedData?.Budget?.Id ?? null,\r\n UserDisplayName: connectedData?.User?.Name ?? null,\r\n BookedBy: connectedData?.User?.Id ?? null,\r\n Remarks: updatedRemarks,\r\n DiscountFactor: factor,\r\n }),\r\n editCreatable: true,\r\n queryParams: {\r\n id: '' + service.Id ?? -1,\r\n },\r\n };\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n openPanel({\r\n renderPageType: RenderPageType.OtherServiceDetails,\r\n renderPageProps: otherProps,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [\r\n connectedData?.Budget?.Id,\r\n connectedData?.Budget?.Name,\r\n connectedData?.User?.Id,\r\n connectedData?.User?.Name,\r\n connectedData?.UserGroup?.Id,\r\n connectedData?.UserGroup?.Name,\r\n dispatch,\r\n layoutActions,\r\n openPanel,\r\n useSidePanel,\r\n ],\r\n );\r\n const onAddServiceClick = React.useCallback(\r\n (services: number[]) => {\r\n let selParams = {\r\n actionType: 'OfflineService',\r\n offTypeIds: services,\r\n customPredicates: assetsFilter,\r\n } as AssetsSelectionProps;\r\n if (!useSidePanel) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n }\r\n openPanel({\r\n renderPageType: RenderPageType.AssetsSelection,\r\n renderPageProps: selParams,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [assetsFilter, dispatch, layoutActions, openPanel, useSidePanel],\r\n );\r\n\r\n const [offlineServicesErrors, setOfflineServicesErrors] = React.useState<\r\n ErrorServices[]\r\n >([]);\r\n const handleSetError = React.useCallback(\r\n (error: ErrorServices) => {\r\n if (error.error !== undefined) {\r\n setOfflineServicesErrors(prev => [...prev, error]);\r\n } else {\r\n setOfflineServicesErrors([\r\n ...offlineServicesErrors.filter(f => f.id !== error.id),\r\n ]);\r\n }\r\n },\r\n [offlineServicesErrors],\r\n );\r\n //memo\r\n const IsAdmin = React.useMemo(() => {\r\n return !!consumableServicesData &&\r\n consumableServicesData.Services.length > 0\r\n ? User?.IsAllGroupOrLabTechAdmin(\r\n consumableServicesData.Services.map(g => g.ServiceGroupId || 0),\r\n consumableServicesData.Services.map(f => {\r\n return {\r\n Id: f.ServiceTypeId,\r\n Name: f.ServiceTypeName,\r\n ServiceTypeId: ServiceType.Offline,\r\n } as IServiceTypeFilterDto;\r\n }),\r\n )\r\n : false;\r\n }, [User, consumableServicesData]);\r\n const leftActions = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n actions.push(() => (\r\n }\r\n onClick={handleSaveClick}\r\n disabled={\r\n busy ||\r\n !(\r\n !!consumableServicesData &&\r\n consumableServicesData.Services.length > 0\r\n )\r\n }\r\n processing={!requestCompleted && busy}\r\n >\r\n {t(translations.Save)}\r\n \r\n ));\r\n if (\r\n globalSettings.showCalcPriceOnOfflineService &&\r\n !!consumableServicesData &&\r\n consumableServicesData.Services.length > 0 &&\r\n offlineServicesErrors.length < 1\r\n ) {\r\n actions.push(() => (\r\n }\r\n title={t(translations.CalculatePricing_info) as string}\r\n onClick={handleCalculateCredit}\r\n disabled={creditProccessing}\r\n processing={creditProccessing}\r\n >\r\n {t(translations.CalculatePricing)}\r\n \r\n ));\r\n }\r\n return actions;\r\n }, [\r\n busy,\r\n consumableServicesData,\r\n creditProccessing,\r\n globalSettings.showCalcPriceOnOfflineService,\r\n handleCalculateCredit,\r\n handleSaveClick,\r\n offlineServicesErrors.length,\r\n requestCompleted,\r\n t,\r\n ]);\r\n const rightActions = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n\r\n actions.push(() => (\r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Close)}\r\n \r\n ));\r\n\r\n return actions;\r\n }, [handleCloselClick, t]);\r\n\r\n return (\r\n \r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n pageLink={buildURL(publicUrl + 'reportConsumables', queryParams)}\r\n toPageLink={`reportConsumables?${toQueryString(queryParams)}`}\r\n isCover={isCover}\r\n cover={cover}\r\n coverClosed={coverClosed}\r\n closeCover={!isCover ? onCloseCover : closeCover}\r\n confirm={\r\n showCalculateCredit ? (\r\n handleCalculateClose()}\r\n edit={false}\r\n credit={credit}\r\n creditCompleted={creditCompleted}\r\n creditProcessing={creditProccessing}\r\n pricingType={'OtherService'}\r\n />\r\n ) : undefined\r\n }\r\n />\r\n {hasChanges && (\r\n 'Youll lose your data!'} />\r\n )}\r\n \r\n );\r\n});\r\n","import { dateUtils } from 'utils/date-utils';\r\nimport { truncateTime } from './truncateTime';\r\nimport { DatePickerValueProps } from '../index';\r\n\r\n/**\r\n * Handles date-only period end date conversions\r\n * @param props\r\n * @returns\r\n */\r\n\r\nexport const toEndDateDisplayValue = (\r\n props: DatePickerValueProps & { direction: 'toDisplay' | 'fromDisplay' },\r\n) => {\r\n if (props.value === null) {\r\n return null;\r\n }\r\n if (props.value === undefined) {\r\n return null;\r\n }\r\n // first truncate the time part if required\r\n const truncatedDate = truncateTime({\r\n value: dateUtils.dateOrStringToDate(props.value),\r\n truncateTime: props.variant === 'date',\r\n });\r\n\r\n // then either move to one day forward for the underlying value or backward for the display value\r\n // for example, the actual stored value is '2010-11-12T00:00:00' is displayed as 'November 10th 2010' (note that 10th is inclusive till the midnight)\r\n const dir = props.direction === 'toDisplay' ? -1 : 1;\r\n const result = props.endTime\r\n ? dateUtils.addDays(truncatedDate, dir)\r\n : truncatedDate;\r\n return result;\r\n};\r\n","import { dateUtils } from 'utils/date-utils';\r\nimport { DatePickerValueProps } from '../index';\r\n\r\n/**\r\n * Optionally truncates time part to be used in date-only picker\r\n * @param props\r\n * @returns\r\n */\r\nexport function truncateTime(\r\n props: Pick & { value: Date },\r\n) {\r\n return props.truncateTime ? dateUtils.truncateTime(props.value) : props.value;\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectGlobalServiceGroupFilter,\r\n selectIsAuthenticated,\r\n} from 'app/slice/selectors';\r\nimport { call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { messagesActions as actions } from '.';\r\nimport {\r\n CalendarMessageProps,\r\n LoanDesk,\r\n Message,\r\n MessageTypeEnum,\r\n StartedReservation,\r\n UsageReservation,\r\n} from './type';\r\nimport { odataUrlPrefix } from 'utils/url-utils';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport { MessageProps, pageNames } from '..';\r\n\r\nconst reservePrefix = 'reservationStarted_';\r\nconst usagePrefix = 'usageReservation_';\r\nconst loanPrefix = 'LoanDeskReservation_';\r\n// const announcePrefix = 'Announcment_';\r\nconst calendarprefix = 'calendar_';\r\n\r\nconst reservationStartedurl = '/api/odata/v4/ReservationStarted';\r\nconst usageReservationUrl = '/api/odata/v4/UsageReservation';\r\nconst LoanDeskReservationUrl = '/api/odata/v4/LoanDeskReservation';\r\nconst calendarUrl = odataUrlPrefix + 'CalendarMessages/Show';\r\nfunction* doInit(action: PayloadAction) {\r\n const messages: Message[] = [];\r\n const page = action.payload.pageName;\r\n const isAuth: boolean | undefined = yield select(selectIsAuthenticated);\r\n if (isAuth === true) {\r\n const funcs = getPageMessages(page);\r\n for (let index = 0; index < funcs.length; index++) {\r\n const func = funcs[index];\r\n yield* func(messages, action.payload);\r\n }\r\n }\r\n\r\n // if (page !== 'calendar') {\r\n // yield* addReservations(messages);\r\n // yield* addUsages(messages);\r\n // yield* addLoanDesks(messages);\r\n // // yield* doAnnouncement(messages);\r\n // }\r\n // yield* addCalendarMessages(messages, action.payload);\r\n yield put(actions.init_success(messages));\r\n}\r\n\r\ntype MessageGetter = (\r\n messages: Message[],\r\n props: MessageProps,\r\n) => Generator;\r\n\r\nfunction getPageMessages(pageName: pageNames): MessageGetter[] {\r\n switch (pageName) {\r\n case 'calendar':\r\n return [addCalendarMessages];\r\n case 'assetDetails':\r\n return [addReservations, addUsages];\r\n default:\r\n return [addReservations, addUsages, addLoanDesks, addCalendarMessages];\r\n }\r\n}\r\n\r\nfunction* doeRefreshReservations(_action: PayloadAction) {\r\n const messages: Message[] = [];\r\n yield* addReservations(messages);\r\n yield put(actions.init_success(messages));\r\n}\r\n\r\nfunction* addReservations(messages: Message[]) {\r\n const reservationsInValue = yield call(httpClient.get, reservationStartedurl);\r\n const reservations = reservationsInValue.value as StartedReservation[];\r\n messages.push(\r\n ...reservations.map((r, _i) => ({\r\n type: MessageTypeEnum.reservationStarted,\r\n props: r,\r\n key: reservePrefix + r.Id,\r\n })),\r\n );\r\n}\r\n\r\nfunction* addUsages(messages: Message[]) {\r\n const usagesInValue = yield call(httpClient.get, usageReservationUrl);\r\n const usages = usagesInValue.value as UsageReservation[];\r\n messages.push(\r\n ...usages.map((r, _i) => ({\r\n type: MessageTypeEnum.usageReservation,\r\n props: r,\r\n key: usagePrefix + r.Id,\r\n })),\r\n );\r\n}\r\n\r\nfunction* addLoanDesks(messages: Message[]) {\r\n const LoanDeskInValue = yield call(httpClient.get, LoanDeskReservationUrl);\r\n const LoanDesks = LoanDeskInValue.value as LoanDesk[];\r\n messages.push(\r\n ...LoanDesks.map((r, _i) => ({\r\n type: MessageTypeEnum.loadDesk,\r\n props: r,\r\n key: loanPrefix + r.Id,\r\n })),\r\n );\r\n}\r\n\r\nfunction* addCalendarMessages(messages: Message[], props: MessageProps) {\r\n const params: {\r\n $select: string;\r\n $filter?: string;\r\n } = { $select: 'Id,Title,Body,DisplaySeconds' };\r\n const now = new Date();\r\n const groups = yield select(selectGlobalServiceGroupFilter);\r\n params.$filter = new ODataFilterBuilder({\r\n predicates: [\r\n new Condition(\r\n 'StartDate',\r\n ODataOperators.LessThanEqual,\r\n now,\r\n ).withNull() ?? '',\r\n new Condition(\r\n 'EndDate',\r\n ODataOperators.GreaterThanEqual,\r\n now,\r\n ).withNull() ?? '',\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n groups,\r\n 'Id',\r\n ).orEmpty() ?? '',\r\n new Condition('ShowOn', ODataOperators.Contains, props.pageName),\r\n new Condition(\r\n 'EquipmentId',\r\n ODataOperators.Includes,\r\n props.selectedEquipment,\r\n ).withNull() ?? '',\r\n ],\r\n }).toString();\r\n const calendarInValue = yield call(httpClient.get, calendarUrl, params);\r\n const calendars = calendarInValue.value as CalendarMessageProps[];\r\n messages.push(\r\n ...calendars.map(c => ({\r\n type: MessageTypeEnum.calendar,\r\n key: calendarprefix + c.Id,\r\n props: c,\r\n })),\r\n );\r\n}\r\n\r\n// function* doAnnouncement(messages: Message[]) {\r\n// const settings: GlobalSettings = yield select(selectglobalSettings);\r\n// const userSettings: UserProfile = yield select(selectUserProfileSettings);\r\n// if (\r\n// settings.GetBooleanByKey(AllowedSettings.ShowDashboardAnnouncement) &&\r\n// !userSettings.GetSettingByKey(\r\n// AllowedSettings[AllowedSettings.DashboardAnnouncement],\r\n// )\r\n// ) {\r\n// const announcent = settings.GetString(\r\n// AllowedSettings.DashboardAnnouncement,\r\n// );\r\n// if (!!announcent) {\r\n// messages.push({\r\n// type: messageType.removableAnnouncment,\r\n// props: announcent,\r\n// key: announcePrefix + 0,\r\n// });\r\n// }\r\n// }\r\n// const userHelp = settings.GetString(AllowedSettings.Help_Dashboard);\r\n// if (userHelp.trim() !== '') {\r\n// messages.push({\r\n// type: messageType.Announcment,\r\n// props: userHelp,\r\n// key: announcePrefix + 1,\r\n// });\r\n// }\r\n// }\r\n\r\nfunction* doGotIt(action: PayloadAction) {\r\n const authenticatedUser: AuthenticatedUser | undefined = yield select(\r\n selectAuthenticatedUser,\r\n );\r\n yield put(\r\n appSettingsActions.saveUserProfileSetting({\r\n Key: action.payload,\r\n Value: true.toString(),\r\n UserName: authenticatedUser?.Id ?? '',\r\n Enabled: true,\r\n }),\r\n );\r\n}\r\n\r\nexport function* messagesSaga() {\r\n yield takeLatest(actions.init.type, doInit);\r\n yield takeLatest(actions.gotIt.type, doGotIt);\r\n yield takeLatest(actions.refreshUsages.type, doeRefreshReservations);\r\n}\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { SnackbarKey } from 'notistack';\r\nimport { useInjectReducer, useInjectSaga } from 'redux-injectors';\r\nimport { messagesSaga } from './saga';\r\nimport { Message, MessagesState } from './type';\r\nimport { MessageProps } from '..';\r\n\r\nexport const initialState: MessagesState = {\r\n messages: [],\r\n initialized: 0,\r\n processing: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'messagesState',\r\n initialState,\r\n reducers: {\r\n init(state, action: PayloadAction) {\r\n state.initialized = state.initialized + 1;\r\n state.processing = true;\r\n },\r\n init_success(state, action: PayloadAction) {\r\n state.messages.push(...action.payload);\r\n state.processing = false;\r\n },\r\n remove(state, action: PayloadAction) {\r\n state.messages = [\r\n ...state.messages.filter(m => m.key !== action.payload),\r\n ];\r\n },\r\n gotIt(state, action: PayloadAction) {},\r\n clear(state, action: PayloadAction) {\r\n state.messages = [];\r\n state.initialized = state.initialized - 1;\r\n },\r\n refreshUsages(state, action: PayloadAction) {},\r\n },\r\n});\r\nexport const { actions: messagesActions } = slice;\r\n\r\nexport const useMessagesSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: messagesSaga });\r\n return { actions: slice.actions };\r\n};\r\n","/**\r\n *\r\n * SamplePlateTypePicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { ODataFilterBuilder } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface SamplePlateTypePickerProps\r\n extends Omit>, 'loadData'> {\r\n name?: string;\r\n placeholder?: string;\r\n onBlur?: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst url = '/api/odata/v4/SamplePlateTypes';\r\nexport const initSamplePlateTypeData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (searchTerm: string | null) => {\r\n const params: { $orderby: string; $filter?: string; $select: string } = {\r\n $orderby: 'Name asc',\r\n $select: 'Id,Name',\r\n };\r\n if (searchTerm !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: searchTerm,\r\n }).toString();\r\n }\r\n\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\nexport function SamplePlateTypePicker(props: SamplePlateTypePickerProps) {\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * AsyncPicker\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport { Entity } from 'types/common';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { SamplePlateTypePicker } from '../pickers/AutocompletePickers/SamplePlateTypePicker';\r\n\r\nexport const FormSamplePlateTypePicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig | null> & {\r\n label?: string;\r\n fullWidth: boolean;\r\n autoFocus?: boolean;\r\n name: string;\r\n placeholder: string;\r\n disabled?: boolean;\r\n variant?: 'standard' | 'filled' | 'outlined';\r\n}) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n helpers.setValue(value, true)}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n variant={props.variant}\r\n />\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * BasicDialogActions\r\n *\r\n */\r\nimport { DialogActions as MuiDialogActions } from '@material-ui/core';\r\nimport { DialogActionsRenderer } from './DialogActionsRender';\r\nexport interface BasicDialogActionsProps {\r\n leftActions: DialogActionsRenderer[];\r\n rightActions: DialogActionsRenderer[];\r\n}\r\n\r\nexport function BasicDialogActions(props: BasicDialogActionsProps) {\r\n const { leftActions, rightActions } = props;\r\n return (\r\n \r\n {leftActions.length > 0 && (\r\n
    \r\n {leftActions.map((item, index) => (\r\n {item()}\r\n ))}\r\n
    \r\n )}\r\n
    \r\n {rightActions.length > 0 &&\r\n rightActions.map((item, index) => {item()})}\r\n
    \r\n
    \r\n );\r\n}\r\n","/**\r\n *\r\n * RichTextEditor\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { StartRichEditor } from './RichEditor';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectglobalSettings } from 'app/slice/selectors';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\n\r\nexport interface RichTextEditorProps {\r\n value?: string | undefined;\r\n onChange: (value: string | undefined) => void;\r\n placeholder?: string;\r\n autofocus?: boolean;\r\n hasMentions?: boolean;\r\n onChangeMentions?: (mentions: Entity[]) => void;\r\n additionalButtons?: ((classname, key) => React.ReactNode)[];\r\n disabled?: boolean;\r\n isInvoiceTemplateEditor?: boolean;\r\n extendedMode?: boolean;\r\n labelOnTop?: boolean;\r\n info?: NonNullable;\r\n setControlsVisible?: (visible: boolean) => void;\r\n serviceGroups?: Identifiable[];\r\n}\r\n\r\nexport function RichTextEditor(props: RichTextEditorProps) {\r\n const globalSettings = useSelector(selectglobalSettings);\r\n const hasMentions = React.useMemo(() => {\r\n return (\r\n props.hasMentions &&\r\n !globalSettings.GetBooleanByKey(\r\n AllowedSettings.HideCommentSharingForAllUsers,\r\n )\r\n );\r\n }, [globalSettings, props.hasMentions]);\r\n return (\r\n \r\n );\r\n}\r\n","import { useMemo } from 'react';\r\nimport { Entity } from 'types/common';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport { Body } from '../Typography';\r\nimport { Avatar as MuiAvatar } from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport interface UserAvatarProps {\r\n user?: Entity | null;\r\n}\r\nexport const UserAvatar = ({ user }: UserAvatarProps) => {\r\n const { t } = useTranslation();\r\n const initials = useMemo(() => {\r\n const defaultText = t(translations.NA);\r\n if (user === null) {\r\n return defaultText;\r\n }\r\n if (user === undefined) {\r\n return defaultText;\r\n }\r\n const split = user.Name.split(' ');\r\n return (split[0][0] + (split[1] ? split[1][0] : '')).toUpperCase();\r\n }, [t, user]);\r\n\r\n const Id = user?.Id ?? undefined;\r\n return (\r\n \r\n {\r\n if (Id !== undefined) {\r\n window.open(toRootedURL('/Users/Profile?id=' + Id), '_blank');\r\n }\r\n }}\r\n >\r\n \r\n {initials}\r\n \r\n \r\n \r\n );\r\n};\r\n","import { toRootedURL } from 'utils/url-utils';\r\nimport { AvailabilityTypesUnion } from 'api/odata/generated/enums/AvailabilityTypes';\r\n\r\nexport const getAssetEditLink = (\r\n availabilityType?: AvailabilityTypesUnion,\r\n assetId?: number,\r\n serviceId?: number,\r\n serviceGroupId?: number,\r\n divisionId?: number,\r\n) => {\r\n if (!availabilityType || !assetId) {\r\n return undefined;\r\n }\r\n switch (availabilityType) {\r\n case 'NotAvailable':\r\n case 'AvailableNotBookable':\r\n case 'FreelyBookable':\r\n case 'TrainingProgram':\r\n case 'LoanableEquipment':\r\n case 'LectureRoom':\r\n return toRootedURL(\r\n `/NewResource.aspx?Edit=${serviceId}&back=assetdetails&assetid=${assetId}`,\r\n );\r\n case 'ServiceRelated':\r\n return toRootedURL(\r\n `/OfflineServiceType.aspx?ID=${serviceId}&back=assetdetails&assetid=${assetId}`,\r\n );\r\n case 'RequestRelated':\r\n return toRootedURL(\r\n `/SampleType.aspx?ID=${serviceId}&back=assetdetails&assetid=${assetId}`,\r\n );\r\n case 'ServiceGroup':\r\n return toRootedURL(`/newgroup.aspx?edit=${serviceGroupId}`);\r\n case 'SuperGroup':\r\n return toRootedURL(`/newsupergroup.aspx?edit=${divisionId}`);\r\n default:\r\n return undefined;\r\n }\r\n};\r\n","import { UlList } from 'app/components/BasicList/StyledList';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { SidePanelOpenState } from 'app/hooks/useSidePanelOpen';\r\nimport { IAssetAssemblyStructure } from 'app/pages/AssetPopUp/IAssetAssemblyStructure';\r\nimport { AssetLink } from 'app/pages/AssetPopUp/OpenAssetDetails';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components';\r\n\r\nexport interface AssemblyStructureProps {\r\n assemblyStructure: IAssetAssemblyStructure;\r\n openOnNewTab?: boolean;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n showTitle?: boolean;\r\n}\r\n\r\nexport function AssemblyStructure({\r\n assemblyStructure,\r\n openOnNewTab,\r\n useSidePanel,\r\n openPanelWithCover,\r\n showTitle,\r\n}: AssemblyStructureProps) {\r\n const { t } = useTranslation();\r\n const renderItem = (item: IAssetAssemblyStructure) => {\r\n if (item.Children.length > 0) {\r\n let res: React.ReactNode[] = [];\r\n for (const v of item.Children) {\r\n res.push(\r\n
  • \r\n \r\n {v.Name}\r\n \r\n
  • ,\r\n );\r\n let childRes = renderItem(v);\r\n if (childRes !== undefined && childRes.length > 0) {\r\n res.push(\r\n \r\n {childRes.map((v, i) => v)}\r\n ,\r\n );\r\n }\r\n }\r\n return res;\r\n } else return undefined;\r\n };\r\n return (\r\n \r\n {showTitle && (\r\n \r\n {t(translations.AssemblyStructure) as string}\r\n \r\n )}\r\n \r\n {t(translations.SnapshotSelectTitle) as string}\r\n \r\n\r\n \r\n
  • \r\n \r\n {assemblyStructure.Name}\r\n \r\n
  • \r\n {assemblyStructure.Children.length > 0 && (\r\n \r\n {renderItem(assemblyStructure)}\r\n
    \r\n )}\r\n \r\n
    \r\n );\r\n}\r\nconst AssemblyStructureContent = styled.div`\r\n &.structure-root {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n gap: 8px;\r\n }\r\n`;\r\n","/**\r\n *\r\n * AssemblySnapshotPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { IAssemblySnapShotsDto } from 'app/pages/AssemblySnapshots/IAssemblySnapShotsDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\nexport interface AssemblySnapshotPickerProps\r\n extends Omit, 'loadData'> {}\r\n\r\nconst url = '/api/odata/v4/AssemblyShots';\r\nexport const generateAssemblySnapshotName = (\r\n dto: IAssemblySnapShotsDto,\r\n): IAssemblySnapShotsDto => {\r\n let name = `#${dto.Id} - ${dateUtils.shortDateTimeFormat(\r\n dateUtils.dateOrStringToDate(dto.Date),\r\n )}`;\r\n return Object.assign({}, dto, { Name: name });\r\n};\r\nexport const convertAssemblySnapshotName = (\r\n Id: number,\r\n Date: Date | string,\r\n): string => {\r\n let name = `#${Id} - ${dateUtils.shortDateTimeFormat(\r\n dateUtils.dateOrStringToDate(Date),\r\n )}`;\r\n return name;\r\n};\r\nexport const initAssemblySnapshot = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IAssemblySnapShotsDto[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Id desc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select:\r\n 'Id,Name,Date,TakenBy,ServiceGroupId,AssetId,EquipmentId,EquipmentName,SnapshotJson,TakenByName',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response =>\r\n !!response.value && response.value.length > 0\r\n ? response.value.map(f => generateAssemblySnapshotName(f))\r\n : [],\r\n );\r\n }\r\n};\r\nexport const initAssemblySnapshotWithParams = (\r\n equipmentId?: number,\r\n userName?: string,\r\n) => {\r\n const predicates = AssemblySnapshotFilter(equipmentId, userName);\r\n if (predicates.length < 1) {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IAssemblySnapShotsDto[]);\r\n });\r\n } else {\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Id desc',\r\n $filter: predicates.map(f => f.toString()).join(' and '),\r\n $select:\r\n 'Id,Name,Date,TakenBy,ServiceGroupId,AssetId,EquipmentId,EquipmentName,SnapshotJson,TakenByName',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response =>\r\n !!response.value && response.value.length > 0\r\n ? response.value.map(f => generateAssemblySnapshotName(f))\r\n : [],\r\n );\r\n }\r\n};\r\n\r\nconst loadBaseData = (\r\n predicates: (string | Condition)[] | undefined,\r\n select?: (keyof IAssemblySnapShotsDto)[],\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: predicates,\r\n //transformModel: generateInventoryBatchName,\r\n // TODO: narrow down used properties list\r\n select:\r\n !!select && select.length > 0\r\n ? select\r\n : [\r\n 'Id',\r\n 'Name',\r\n 'Date',\r\n 'TakenBy',\r\n 'TakenByName',\r\n 'EquipmentName',\r\n 'EquipmentId',\r\n 'AssetId',\r\n 'ServiceGroupId',\r\n 'SnapshotJson',\r\n ],\r\n globalServiceGroupFilter: undefined,\r\n orderBy: 'Id desc',\r\n });\r\n\r\nexport function AssemblySnapshotPicker(props: AssemblySnapshotPickerProps) {\r\n const innerLoadData = loadBaseData(props.predicates);\r\n return (\r\n \r\n convertAssemblySnapshotName(\r\n (option as IAssemblySnapShotsDto).Id,\r\n (option as IAssemblySnapShotsDto).Date,\r\n )\r\n }\r\n renderOptionName={option =>\r\n convertAssemblySnapshotName(\r\n (option as IAssemblySnapShotsDto).Id,\r\n (option as IAssemblySnapShotsDto).Date,\r\n )\r\n }\r\n {...props}\r\n />\r\n );\r\n}\r\nexport const loadAssemblySnapshotsData = loadBaseData;\r\nexport function AssemblySnapshotFilter(\r\n equipmentId?: number,\r\n userName?: string,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n if (!!equipmentId) {\r\n predicates.push(\r\n new Condition(\r\n 'EquipmentId',\r\n ODataOperators.Equals,\r\n equipmentId,\r\n ),\r\n );\r\n }\r\n if (!!userName) {\r\n predicates.push(\r\n new Condition(\r\n 'TakenBy',\r\n ODataOperators.Equals,\r\n userName,\r\n ),\r\n );\r\n }\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n","import { useAsyncExtendedState } from 'app/hooks/useAsyncAwaitedState';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectIsAuthenticated,\r\n selectPublicUrl,\r\n} from 'app/slice/selectors';\r\nimport { ConfigurableTypes, ScreensId } from 'enums/ConfigurableTypes';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Column } from 'react-table';\r\nimport { Notification } from 'types/Notification';\r\nimport { toRootedURL } from 'utils/url-utils';\r\nimport { IRow } from '.';\r\nimport {\r\n getTableColumns,\r\n GetCachedConfigurableColumnsData,\r\n} from './ConfigurableColumns';\r\n\r\nexport interface IUseConfigurableColumnsProps {\r\n columns: Array>;\r\n /**\r\n * Id of the screen that table related to. Required!\r\n */\r\n screenId?: ScreensId;\r\n ns?: string;\r\n}\r\nexport const useConfigurableColumns = ({\r\n screenId,\r\n columns,\r\n ns,\r\n}: IUseConfigurableColumnsProps) => {\r\n // Configurable columns\r\n // columns will be replaced with configurableColumns\r\n\r\n const { t } = useTranslation(ns);\r\n const isAuthenticated = useSelector(selectIsAuthenticated);\r\n const AuthenticatedUser = useSelector(selectAuthenticatedUser);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const dispatch = useDispatch();\r\n const { actions: globalActions } = useAppSettingsSlice();\r\n const setGlobalMessage = React.useCallback(\r\n (message: Notification) => {\r\n dispatch(globalActions.addNotification(message));\r\n },\r\n [dispatch, globalActions],\r\n );\r\n const [configurableColumns, setConfigurableColumns] = useAsyncExtendedState<\r\n Column[] | undefined\r\n >(screenId === undefined ? columns : undefined);\r\n\r\n const loadConfigurableColumns = React.useCallback(\r\n async (props: {\r\n screenId: ScreensId;\r\n columns: Array>;\r\n isAuthenticated?: boolean;\r\n force?: boolean;\r\n }) => {\r\n try {\r\n const config = await GetCachedConfigurableColumnsData(\r\n props.screenId,\r\n ConfigurableTypes.ColumnScreenConfig,\r\n\r\n isAuthenticated,\r\n props.force,\r\n );\r\n\r\n return getTableColumns({\r\n response: config,\r\n ConfigurableColumnsSetUp: columns,\r\n });\r\n } catch (error) {\r\n setGlobalMessage({\r\n key: 'WrongColumnDefinition',\r\n message: t(translations.WrongColumnDefinition_info) as string,\r\n variant: 'warning',\r\n autoHideDuration: 30000,\r\n closable: true,\r\n });\r\n return getTableColumns({\r\n response: [],\r\n ConfigurableColumnsSetUp: columns,\r\n });\r\n }\r\n },\r\n [columns, isAuthenticated, setGlobalMessage, t],\r\n );\r\n const [fetchConfigState, getConfigurableColumns] = usePromise(\r\n loadConfigurableColumns,\r\n );\r\n\r\n const [configurableColumnsExport, setConfigurableColumnsExport] =\r\n useAsyncExtendedState | undefined>(undefined);\r\n const loadConfigurableColumnsExport = React.useCallback(\r\n async (listId: ScreensId, isAuthenticated: boolean | undefined) => {\r\n const d = await GetCachedConfigurableColumnsData(\r\n listId,\r\n ConfigurableTypes.ColumnExportConfig,\r\n isAuthenticated,\r\n false,\r\n );\r\n const p = d.map(f => f.Id);\r\n return p;\r\n },\r\n [],\r\n );\r\n const [, fetchExport] = usePromise(loadConfigurableColumnsExport);\r\n\r\n // useEffect will only be called once because columns and screenId do not change, it is a trick\r\n React.useEffect(() => {\r\n if (\r\n screenId !== undefined &&\r\n fetchConfigState.status !== 'pending' &&\r\n fetchConfigState.status !== 'resolved'\r\n ) {\r\n setConfigurableColumns(getConfigurableColumns({ screenId, columns }));\r\n }\r\n if (screenId !== undefined) {\r\n setConfigurableColumnsExport(fetchExport(screenId, isAuthenticated));\r\n }\r\n }, [\r\n columns,\r\n fetchConfigState.status,\r\n fetchExport,\r\n getConfigurableColumns,\r\n isAuthenticated,\r\n screenId,\r\n setConfigurableColumns,\r\n setConfigurableColumnsExport,\r\n ]);\r\n\r\n const refreshConfigurableColumns = React.useCallback(() => {\r\n if (screenId !== undefined) {\r\n setConfigurableColumns(\r\n loadConfigurableColumns({\r\n screenId,\r\n columns,\r\n force: true,\r\n isAuthenticated,\r\n }),\r\n );\r\n }\r\n }, [\r\n screenId,\r\n setConfigurableColumns,\r\n loadConfigurableColumns,\r\n columns,\r\n isAuthenticated,\r\n ]);\r\n\r\n const handleConfigurableColumns = React.useCallback(() => {\r\n if (screenId && AuthenticatedUser) {\r\n let targetUrl = '/ConfigurableColumn.aspx';\r\n // eslint-disable-next-line no-restricted-globals\r\n let path = location.pathname.split('/');\r\n // eslint-disable-next-line no-restricted-globals\r\n const search = location.search;\r\n\r\n let publicSub = publicUrl?.split('/');\r\n path.shift();\r\n if (path.length > 1) {\r\n if (\r\n !!publicSub &&\r\n (publicSub[publicSub.length - 1] === ''\r\n ? publicSub[publicSub.length - 2]\r\n : publicSub[publicSub.length - 1]) === path[0]\r\n ) {\r\n path.shift();\r\n }\r\n }\r\n let returnUrl = '~/' + path.join('/') + search;\r\n let redirUrl = toRootedURL(targetUrl, {\r\n id: screenId,\r\n UserName: AuthenticatedUser.Id,\r\n ReturnUrl: returnUrl,\r\n });\r\n // eslint-disable-next-line no-restricted-globals\r\n window.open(redirUrl, '_blank'); // + returnUrl;\r\n }\r\n }, [AuthenticatedUser, publicUrl, screenId]);\r\n\r\n // The configCompleted variable is used to show the loading indicator while the configurable columns data is being loaded\r\n // There's nothing to complete when there's no screenId and this variable does not need a separate state as it's a derivative of the fetch status.\r\n const configCompleted = React.useMemo(() => {\r\n if (screenId === undefined) {\r\n return true;\r\n } else {\r\n return fetchConfigState.status === 'resolved';\r\n }\r\n }, [fetchConfigState.status, screenId]);\r\n return {\r\n configurableColumns,\r\n configurableColumnsExport,\r\n handleConfigurableColumns,\r\n configCompleted,\r\n refreshConfigurableColumns,\r\n };\r\n};\r\n","import React from 'react';\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport { IconButton } from '../BasicButtons/IconButton';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport { TablePaginationActionsProps } from '@material-ui/core/TablePagination/TablePaginationActions';\r\nimport styled from 'styled-components';\r\n\r\nconst PaginationActions = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n padding-inline: 12px;\r\n gap: 12px;\r\n`;\r\nconst TablePaginationActions: React.FC = props => {\r\n const theme = useTheme();\r\n const { count, page, rowsPerPage, onChangePage } = props;\r\n\r\n const handleFirstPageButtonClick = event => {\r\n onChangePage(event, 0);\r\n };\r\n\r\n const handleBackButtonClick = event => {\r\n onChangePage(event, page - 1);\r\n };\r\n\r\n const handleNextButtonClick = event => {\r\n onChangePage(event, page + 1);\r\n };\r\n\r\n const handleLastPageButtonClick = event => {\r\n onChangePage(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\r\n };\r\n\r\n return (\r\n \r\n \r\n {theme.direction === 'rtl' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {theme.direction === 'rtl' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n = Math.ceil(count / rowsPerPage) - 1}\r\n size=\"xs\"\r\n aria-label=\"next page\"\r\n >\r\n {theme.direction === 'rtl' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n = Math.ceil(count / rowsPerPage) - 1}\r\n size=\"xs\"\r\n aria-label=\"last page\"\r\n >\r\n {theme.direction === 'rtl' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\n// TablePaginationActions.propTypes = {\r\n// count: PropTypes.number.isRequired,\r\n// onChangePage: PropTypes.func.isRequired,\r\n// page: PropTypes.number.isRequired,\r\n// rowsPerPage: PropTypes.number.isRequired,\r\n// };\r\n\r\nexport default TablePaginationActions;\r\n","/**\r\n *\r\n * Popper\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport {\r\n ClickAwayListener,\r\n PopperPlacementType,\r\n Theme,\r\n useTheme,\r\n} from '@material-ui/core';\r\nimport styled from 'styled-components';\r\nimport {\r\n Popper as MuiPopper,\r\n PopperProps as MuiPopperProps,\r\n} from '@material-ui/core';\r\nimport { PopperTitle } from './PopperTitle';\r\nimport clsx from 'clsx';\r\nimport { useIsMobile } from 'app/hooks/useIsMobile';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport interface PopperStyleSharedProps {\r\n minWidth?: string | number;\r\n maxWidth?: string | number;\r\n}\r\nexport interface PopperProps extends PopperStyleSharedProps {\r\n id: string;\r\n title: string;\r\n open: boolean;\r\n anchorEl?: EventTarget & HTMLDivElement;\r\n children: React.ReactNode;\r\n onClose: React.MouseEventHandler;\r\n className?: string;\r\n closeTitle?: string;\r\n clickAway?: boolean;\r\n clickAwayFunc?: (e: any) => void;\r\n}\r\n\r\nexport const StyledPopper = styled(\r\n ({\r\n theme,\r\n children,\r\n ...other\r\n }: {\r\n theme: Theme;\r\n children:\r\n | React.ReactNode\r\n | ((props: {\r\n placement: PopperPlacementType;\r\n TransitionProps?: {\r\n in: boolean;\r\n onEnter: () => {};\r\n onExited: () => {};\r\n };\r\n }) => React.ReactNode);\r\n } & MuiPopperProps) => {children},\r\n)`\r\n &.popper-root {\r\n z-index: ${props => props.theme.zIndex.modal};\r\n &.popper-root-mobile {\r\n width: 100vw;\r\n height: 100%;\r\n overflow: auto;\r\n }\r\n &.popper-root-horizontal {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n }\r\n }\r\n`;\r\nconst StyledPaper = styled('div')<{ minWidth: string; maxWidth: string }>`\r\n &.popper-paper {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n padding: 24px;\r\n gap: 16px;\r\n box-shadow: 0px 2px 18px rgba(8, 24, 41, 0.16);\r\n max-height: 100vh;\r\n overflow: hidden;\r\n border-radius: 8px;\r\n background-color: ${bookitColors.base.white};\r\n min-width: ${props => props.minWidth};\r\n max-width: ${props => props.maxWidth};\r\n & .popper-content {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n`;\r\n/**\r\n * A Popper with consistent title + close interface\r\n */\r\nexport const Popper = React.forwardRef(function Popper(\r\n props,\r\n ref,\r\n) {\r\n const {\r\n id,\r\n title,\r\n open,\r\n anchorEl,\r\n children,\r\n onClose,\r\n className,\r\n closeTitle,\r\n clickAway,\r\n clickAwayFunc,\r\n minWidth,\r\n maxWidth,\r\n ...other\r\n } = props;\r\n const { checkIsMobile, isLandscape } = useIsMobile();\r\n const isMobile = checkIsMobile();\r\n const theme = useTheme();\r\n const popperRef = React.useRef(null); // Ref for the Popper element\r\n const handleClickAway = e => {\r\n if (clickAway) {\r\n if (e.target.nodeName === 'BODY' && e.type === 'click') {\r\n return;\r\n }\r\n if (!!clickAwayFunc) {\r\n clickAwayFunc(e);\r\n } else {\r\n onClose(e);\r\n }\r\n }\r\n };\r\n // Focus the Popper element when it is opened\r\n React.useEffect(() => {\r\n if (open && popperRef.current) {\r\n popperRef.current.focus();\r\n }\r\n }, [open]);\r\n return (\r\n \r\n \r\n \r\n \r\n
    {props.children}
    \r\n \r\n
    \r\n \r\n );\r\n});\r\n","/**\r\n *\r\n * Popper\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { translations } from 'locales/translations';\r\nimport styled from 'styled-components';\r\nimport { Body } from '../Typography';\r\n\r\nexport interface PopperTitleProps {\r\n title: React.ReactNode;\r\n onClose: React.MouseEventHandler;\r\n className?: string;\r\n closeButtonTitle?: string;\r\n}\r\n\r\nconst PopperTitleRoot = styled.div`\r\n &.title-root {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 8px;\r\n justify-content: space-between;\r\n width: 100%;\r\n\r\n & > label {\r\n width: 100%;\r\n text-align: center;\r\n }\r\n & .close-icon {\r\n position: absolute;\r\n right: 8px;\r\n top: 8px;\r\n }\r\n }\r\n`;\r\n\r\nexport function PopperTitle({ title, onClose, ...props }: PopperTitleProps) {\r\n const { t } = useTranslation();\r\n\r\n const closeTitle = props.closeButtonTitle ?? t(translations.Close);\r\n return (\r\n \r\n
    \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n","/**\r\n *\r\n * ExportButton\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Menu, MenuItem } from '@material-ui/core';\r\nimport { IRow } from 'app/components/BasicTable';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useDialogAlertSlice } from 'app/components/DialogAlert/slice';\r\nimport { ExportImportActions } from 'app/components/PopupImportExport/Actions';\r\nimport { ScreensId } from 'enums/ConfigurableTypes';\r\nimport fileDownload from 'js-file-download';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { selectglobalSettings } from 'app/slice/selectors';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\n\r\nexport interface ExportButtonProps {\r\n //selectedRows: T[];\r\n onClick: () => Promise;\r\n onDownloadTemplateClick?: () => void;\r\n useExportForImport?: boolean;\r\n getAllFilteredRowsCallback?: (prop: keyof T) => Promise;\r\n selectedFilterRowProp?: keyof T;\r\n screenId?: ScreensId;\r\n}\r\n\r\nexport function ExportButton(props: ExportButtonProps) {\r\n const { t } = useTranslation();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [processing, setProcessing] = React.useState(false);\r\n const dispatch = useDispatch();\r\n const { actions } = useDialogAlertSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n const settings = useSelector(selectglobalSettings);\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n const handleExport = async () => {\r\n handleClose();\r\n setProcessing(true);\r\n await props.onClick();\r\n setProcessing(false);\r\n };\r\n\r\n const handleExportForImportClick = async () => {\r\n handleClose();\r\n if (\r\n !!props.getAllFilteredRowsCallback &&\r\n !!props.selectedFilterRowProp &&\r\n !!props.screenId\r\n ) {\r\n setProcessing(true);\r\n await handleExportForImport(\r\n props.getAllFilteredRowsCallback,\r\n props.selectedFilterRowProp,\r\n props.screenId,\r\n );\r\n setProcessing(false);\r\n } else {\r\n dispatch(actions.showAlert('Import for Export is not configured!'));\r\n }\r\n };\r\n const handleExportForImport = async (\r\n rowsCallback: (prop: keyof T) => Promise,\r\n p: keyof T,\r\n screenId: ScreensId,\r\n ) => {\r\n let toBigQS = '';\r\n try {\r\n const selectedRows = await rowsCallback(p);\r\n const exportRows = !!selectedRows\r\n ? selectedRows.map(item => item[p])\r\n : [];\r\n toBigQS = exportRows.join(',');\r\n const res = await ExportImportActions.ExportForImport(\r\n screenId,\r\n exportRows,\r\n );\r\n const cd = res.headers['content-disposition'];\r\n const filename =\r\n cd !== undefined ? cd.split('filename=')[1] : 'ExportForImport.xlsx';\r\n fileDownload(res.data, filename);\r\n if (ScreensId.MyAssets === screenId) {\r\n const MaxRecordsAllowedAssetImport = parseInt(\r\n settings.GetString(AllowedSettings.MaxRecordsAllowedAssetImport),\r\n );\r\n if (exportRows.length > MaxRecordsAllowedAssetImport) {\r\n dispatch(\r\n appSettingsActions.addNotification({\r\n variant: 'warning',\r\n message: `Only ${MaxRecordsAllowedAssetImport} rows were exported`,\r\n }),\r\n );\r\n }\r\n }\r\n } catch (error) {\r\n let messageLongQS =\r\n toBigQS.length > 5000\r\n ? (t(translations.err_ImportForExportFailed_longQS) as string)\r\n : undefined;\r\n let deffMessage = t(translations.err_ImportForExportFailed) as string;\r\n dispatch(\r\n appSettingsActions.addNotification({\r\n variant: 'error',\r\n message: !!messageLongQS ? messageLongQS : deffMessage,\r\n }),\r\n );\r\n }\r\n };\r\n const handleDownloadTemplateClick = () => {\r\n if (props.onDownloadTemplateClick !== undefined) {\r\n props.onDownloadTemplateClick();\r\n }\r\n };\r\n\r\n const showSingleExportButton = ![\r\n props.useExportForImport === true ? true : undefined,\r\n props.onDownloadTemplateClick,\r\n ].some(item => item !== undefined);\r\n\r\n // render a menu if both set of columns are provided\r\n // render single button if only export columns are present and the \"for import\" is not set\r\n return (\r\n \r\n }\r\n onClick={showSingleExportButton ? handleExport : handleClick}\r\n processing={processing}\r\n title={t(translations.ExportButtonTooltip) as string}\r\n >\r\n {t(translations.Export)}\r\n \r\n {!showSingleExportButton && (\r\n <>\r\n \r\n \r\n {t(translations.ExportToXLSX)}\r\n \r\n {props.useExportForImport === true && (\r\n \r\n {t(translations.ExportForImport)}\r\n \r\n )}\r\n {props.onDownloadTemplateClick !== undefined && (\r\n \r\n {t(translations.DownloadTemplate)}\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { useEffect } from 'react';\r\n\r\ntype ListenerProps = {\r\n [key in keyof WindowEventMap]?: EventListenerOrEventListenerObject;\r\n};\r\n\r\nexport default function useGlobalDOMEvents(props: ListenerProps) {\r\n useEffect(() => {\r\n for (let [key, func] of Object.entries(props)) {\r\n window.addEventListener(key, func, false);\r\n }\r\n return () => {\r\n for (let [key, func] of Object.entries(props)) {\r\n window.removeEventListener(key, func, false);\r\n }\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n}\r\n","import { Box } from '@material-ui/core';\r\nimport { Body } from 'app/components/Typography';\r\nimport { ActionButton } from 'app/components/BasicButtons/ActionButton';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ICanRaiseBasicTableRefreshEvent } from '../ControlledTable/ControlledTableProps';\r\nimport { SelectedRowsActionRenderer } from '../SelectedRowsActionButton/SelectedRowsActionRenderer';\r\nimport { ReactActions } from 'app/components/ReactActions';\r\nimport styled from 'styled-components';\r\n\r\nexport interface SelectedActionsProps\r\n extends ICanRaiseBasicTableRefreshEvent {\r\n actions: SelectedRowsActionRenderer[];\r\n selectedArray: TRow[];\r\n toggleAllRowsSelected: (value?: boolean) => void;\r\n totalRows: number;\r\n shortView?: boolean;\r\n}\r\n\r\nexport function SelectedActions({\r\n actions,\r\n onRefresh,\r\n selectedArray,\r\n toggleAllRowsSelected,\r\n totalRows,\r\n shortView,\r\n ...props\r\n}: SelectedActionsProps) {\r\n const { t } = useTranslation();\r\n const clearSelection = () => {\r\n toggleAllRowsSelected(false);\r\n };\r\n const allActions = React.useMemo(() => {\r\n return actions.filter(f => f !== undefined);\r\n }, [actions]);\r\n return shortView ? (\r\n <>\r\n \r\n {`${selectedArray.length} of ${totalRows} Items`}\r\n \r\n <>{allActions[0](selectedArray, onRefresh, toggleAllRowsSelected)}\r\n {allActions.length > 1 && (\r\n {\r\n return indx > 0 && f !== undefined;\r\n })\r\n .map((item, index) =>\r\n item(selectedArray, onRefresh, toggleAllRowsSelected),\r\n )}\r\n >\r\n )}\r\n {/* */}\r\n \r\n ) : (\r\n <>\r\n \r\n {`${selectedArray.length} of ${totalRows} Items`}\r\n \r\n\r\n {allActions.map((item, index) => (\r\n \r\n {item(selectedArray, onRefresh, toggleAllRowsSelected)}\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nexport const InvisibleEmptySpan = styled('span')`\r\n &.hidden-if-empty:empty {\r\n display: none;\r\n }\r\n`;\r\n","/**\r\n *\r\n * FilterDisplay\r\n *\r\n */\r\nimport { Chip, useTheme } from '@material-ui/core';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { IFilterSettings } from '../IFilterSettings';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\nimport { Entity } from 'types/common';\r\nimport { IsEntity, IsNotEmptyArray } from '../AppliedFilterComponent';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport styled from 'styled-components';\r\n\r\nexport interface FilterDisplayProps {\r\n filter: IFilterSettings;\r\n onDelete: (item: IFilterSettings) => void;\r\n openFilter: () => void;\r\n}\r\nexport const FilterChip = styled(Chip)`\r\n &.filter-display-root {\r\n gap: ${props => props.theme.spacing(1)}px;\r\n max-width: 58ch;\r\n border-radius: 8px;\r\n background-color: ${props => props.theme.palette.common.grayDividers};\r\n & .filter-display-mobile-text {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 10ch;\r\n }\r\n & .filter-display-mobile-value {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 30ch;\r\n }\r\n }\r\n`;\r\nexport function FilterDisplay(props: FilterDisplayProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { t, i18n } = useTranslation();\r\n const theme = useTheme();\r\n const isMobile = DetectIsMobile();\r\n const value = props.filter.value;\r\n const displayValue =\r\n typeof value === 'string'\r\n ? value\r\n : typeof value === 'number'\r\n ? value?.toString()\r\n : value instanceof Date\r\n ? dateUtils.shortDateFormat(value)\r\n : value instanceof PresetDatesRange\r\n ? value?.GetPresetDatesRangeDisplayString(t)\r\n : IsEntity(value)\r\n ? (value as Entity).Name\r\n : IsNotEmptyArray(value)\r\n ? (value as Array>).map(v => v.Name).join(', ')\r\n : props.filter.getDisplay !== undefined\r\n ? props.filter.getDisplay(value)\r\n : t(translations.NA);\r\n const isInversed = props.filter.isInversed ? 'Not ' : '';\r\n\r\n const handleDelete = event => {\r\n props.onDelete(props.filter);\r\n };\r\n return !!props.filter.renderFilterDisplay ? (\r\n <>{props.filter.renderFilterDisplay(props)}\r\n ) : (\r\n <>\r\n \r\n \r\n {t(props.filter.displayNameKey)}\r\n \r\n : \r\n {displayValue === undefined || displayValue === null ? (\r\n \r\n ) : t(props.filter.displayNameKey).length + displayValue.length >\r\n 40 ? (\r\n \r\n \r\n \r\n {isInversed}\r\n {displayValue}\r\n \r\n \r\n \r\n ) : (\r\n \r\n {isInversed}\r\n {displayValue}\r\n \r\n )}\r\n \r\n }\r\n onDelete={handleDelete}\r\n />\r\n \r\n );\r\n}\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nexport interface ConfigureColumnsButtonProps {\r\n onClick?: () => void;\r\n}\r\nexport function ConfigureColumnsButton(props: ConfigureColumnsButtonProps) {\r\n const { t } = useTranslation();\r\n const { onClick } = props;\r\n\r\n return (\r\n }\r\n onClick={onClick}\r\n >\r\n {t(translations.Columns)}\r\n \r\n );\r\n}\r\n","import { useLocation } from 'react-router-dom';\r\nimport { usePrevious } from './usePrevious';\r\nimport { useEffect } from 'react';\r\n//import { Location } from '@types/history';\r\n\r\nexport const useLocationChange = action => {\r\n const location = useLocation();\r\n const prevLocation = usePrevious(location);\r\n useEffect(() => {\r\n action(location, prevLocation);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [location]);\r\n};\r\n","import { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { intersection } from 'lodash';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport useGlobalSettingsHook, {\r\n GlobalSettingsType,\r\n} from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { IUsers } from 'app/pages/UsersPage/IUsers';\r\n\r\nexport function useUserPermissions() {\r\n const user = useSelector(selectAuthenticatedUser);\r\n const globalSettings = useGlobalSettingsHook();\r\n const roles: number[] | undefined = user?.Roles;\r\n const allowedToView = React.useCallback(\r\n (row: IUserPermissionCheckRecord): boolean =>\r\n allowedToViewUserDetails(row, globalSettings, user),\r\n [globalSettings, user],\r\n );\r\n const allowedToEditDetails = React.useCallback(\r\n (row: IUserPermissionCheckRecord): boolean =>\r\n allowedToEditUserDetails(row, globalSettings, user),\r\n [globalSettings, user],\r\n );\r\n const allowedToEditSettings = React.useCallback(\r\n (row: IUserPermissionCheckRecord): boolean =>\r\n allowedToEditUserSettings(globalSettings, user),\r\n [globalSettings, user],\r\n );\r\n const allowedroles = [\r\n Roles.Administrators,\r\n Roles.GroupAdministrators,\r\n Roles.LabTech,\r\n ];\r\n const hasRolePermissions: boolean =\r\n intersection(roles, allowedroles).length > 0;\r\n return {\r\n hasRolePermissions,\r\n allowedToView,\r\n allowedToEditDetails,\r\n allowedToEditSettings,\r\n };\r\n}\r\nexport type IUserPermissionCheckRecord = Pick;\r\nexport const allowedToEditUserDetails = (\r\n row: IUserPermissionCheckRecord,\r\n globalSettings: GlobalSettingsType,\r\n user?: AuthenticatedUser,\r\n): boolean => {\r\n if (!user) return false;\r\n if (row.Name === '') return false;\r\n const IsAdmin = user?.isAdmin();\r\n const GroupAdminAffiliated = user?.Roles.includes(Roles.GroupAdminAffiliated);\r\n const IsGroupAdmin = user?.isGroupAdmin();\r\n\r\n const userIsAffiliatedAdmin =\r\n GroupAdminAffiliated && globalSettings.EnableCoreAffilationManagment;\r\n\r\n const coreManagementEnabled =\r\n IsAdmin ||\r\n (IsGroupAdmin &&\r\n (globalSettings.ServiceGroupAdminsCanManageAllUsers ||\r\n globalSettings.ServiceGroupAdminsCanManageAdUsers));\r\n\r\n const allowEdit =\r\n IsAdmin || (!IsAdmin && (userIsAffiliatedAdmin || coreManagementEnabled));\r\n\r\n return user.Id === row.Name || allowEdit;\r\n};\r\nexport const allowedToEditUserSettings = (\r\n globalSettings: GlobalSettingsType,\r\n user?: AuthenticatedUser,\r\n): boolean => {\r\n if (!user) return false;\r\n const IsAdmin = user?.isAdmin();\r\n const GroupAdminAffiliated = user?.Roles.includes(Roles.GroupAdminAffiliated);\r\n const IsGroupAdmin = user?.isGroupAdmin();\r\n\r\n const userIsAffiliatedAdmin =\r\n GroupAdminAffiliated && globalSettings.EnableCoreAffilationManagment;\r\n\r\n const coreManagementEnabled =\r\n IsAdmin ||\r\n (IsGroupAdmin &&\r\n (globalSettings.ServiceGroupAdminsCanManageAllUsers ||\r\n globalSettings.ServiceGroupAdminsCanManageAdUsers));\r\n\r\n const allowEdit =\r\n IsAdmin || (!IsAdmin && (userIsAffiliatedAdmin || coreManagementEnabled));\r\n\r\n return allowEdit;\r\n};\r\nexport const allowedToViewUserDetails = (\r\n row: IUserPermissionCheckRecord,\r\n globalSettings: GlobalSettingsType,\r\n user?: AuthenticatedUser,\r\n): boolean => {\r\n if (!user) return false;\r\n if (row.Name === '') return false;\r\n const IsAdmin = user?.isAdmin();\r\n const GroupAdminAffiliated = user?.Roles.includes(Roles.GroupAdminAffiliated);\r\n const IsGroupAdmin = user?.isGroupAdmin();\r\n const isLabTech = user?.isLabTech();\r\n const userIsAffiliatedAdmin =\r\n GroupAdminAffiliated && globalSettings.EnableCoreAffilationManagment;\r\n\r\n const allowToView =\r\n IsAdmin ||\r\n userIsAffiliatedAdmin ||\r\n IsGroupAdmin ||\r\n isLabTech ||\r\n user.Id === row.Name;\r\n\r\n return allowToView;\r\n};\r\n","import { AxiosError } from 'axios';\r\nimport i18next from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Identifiable } from 'types/common';\r\nimport { httpClient } from './HttpClient';\r\n\r\nexport interface IDeleteSamplesResult {\r\n successCount: number;\r\n errors: Error[];\r\n}\r\nexport async function deleteSamples(\r\n samples: Identifiable[],\r\n): Promise {\r\n let successCount = 0;\r\n const errors: Error[] = [];\r\n // todo: convert to transaction/batch\r\n for (const sample of samples) {\r\n const url = `/api/odata/v4/samples(${sample.Id})`;\r\n try {\r\n await httpClient.delete(url);\r\n successCount++;\r\n } catch (error) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n i18next.t(translations.errormessage);\r\n errors.push(new Error(message));\r\n }\r\n }\r\n\r\n return {\r\n successCount: successCount,\r\n errors: errors,\r\n };\r\n}\r\n","import { translations } from 'locales/translations';\r\nimport { IServiceRequestDto } from 'api/odata/generated/entities/IServiceRequestDto';\r\n\r\nexport function getServiceRequestBlockedByInvoicedMessage(\r\n requestDetails: Pick,\r\n) {\r\n const isMilestoneAndIncomplete =\r\n requestDetails.Service.MilestonesAddonsType === 'Milestones' &&\r\n requestDetails.Status.InternalStatusId !== 'Completed';\r\n const variant: 'warning' | 'error' = isMilestoneAndIncomplete\r\n ? 'warning'\r\n : 'error';\r\n const messageKey = isMilestoneAndIncomplete\r\n ? translations.requestblockedbyinvoice\r\n : translations.requestblockedbyinvoice_complete;\r\n return { variant, messageKey };\r\n}\r\n","export enum WorkWeekDays {\r\n FirstDay = 1,\r\n SecondsDay = 2,\r\n ThirdDay = 3,\r\n FourthDay = 4,\r\n FifthDay = 5,\r\n SixthDay = 6,\r\n}\r\n","import {\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n MenuItem,\r\n useTheme,\r\n} from '@material-ui/core';\r\nimport { TabContent } from 'app/components/BasicTabs/TabContent';\r\nimport styled from 'styled-components';\r\nimport * as React from 'react';\r\nimport { DropDown } from 'app/components/DropDown';\r\nimport { TabPanel, TabPanelProps } from 'app/components/BasicTabs/TabPanel';\r\n\r\nexport interface MobileDropDownTabsProps {\r\n tabs: TabContent[];\r\n tabsId: string;\r\n tabsPanelId: string;\r\n isMobile?: boolean;\r\n handleTabChange: (tab: TabContent) => void;\r\n selectedTab: TabContent;\r\n tabPanels?: Array>;\r\n}\r\nexport const DropDownTabsWrapper = styled('div')(({ theme }) => ({\r\n '&.drpTabsWrapper': {\r\n display: 'flex',\r\n padding: '0px 8px 0px 16px',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n alignSelf: 'stretch',\r\n gap: '16px',\r\n width: '100%',\r\n overflow: 'hidden',\r\n '& .asset-mobile-tabs': {\r\n '& .asset-mobile-tabs-paper': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport function MobileDropDownTabs(props: MobileDropDownTabsProps) {\r\n const {\r\n tabs,\r\n tabsId,\r\n tabsPanelId,\r\n isMobile,\r\n handleTabChange,\r\n selectedTab,\r\n tabPanels,\r\n } = props;\r\n const theme = useTheme();\r\n // const [selectedOption, setSelectedOption] = React.useState(\r\n // tabs[0],\r\n // );\r\n const handleSelectedTabIndexChange = (newValue: TabContent) => {\r\n handleTabChange(newValue);\r\n };\r\n const getTabProps = React.useCallback(\r\n (item: TabContent) => {\r\n return {\r\n id: `${tabsId}-${item.Id}`,\r\n 'aria-controls': `${tabsPanelId}-${item.Id}`,\r\n label: item.Name,\r\n };\r\n },\r\n [tabsId, tabsPanelId],\r\n );\r\n return (\r\n \r\n \r\n tabs.map(tab => (\r\n {\r\n handleSelectedTabIndexChange(tab);\r\n close();\r\n }}\r\n selected={selectedTab.Id === tab.Id}\r\n {...getTabProps(tab)}\r\n >\r\n \r\n {!!tab.endIcon && (\r\n {tab.endIcon}\r\n )}\r\n \r\n ))\r\n }\r\n menuProps={{\r\n anchorOrigin: {\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n },\r\n transformOrigin: {\r\n vertical: 'top',\r\n horizontal: 'left',\r\n },\r\n getContentAnchorEl: null,\r\n className: 'asset-mobile-tabs',\r\n PaperProps: {\r\n style: { width: isMobile ? '100%' : '340px' },\r\n className: 'asset-mobile-tabs-paper',\r\n },\r\n }}\r\n addChevron\r\n >\r\n {selectedTab.Name}\r\n \r\n {!!tabPanels && tabPanels.length > 0 ? (\r\n {tabPanels}\r\n ) : (\r\n \r\n {tabs.map((item, index) => (\r\n \r\n {item.Content}\r\n \r\n ))}\r\n \r\n )}\r\n {/* {tabs.map((item, index) => (\r\n \r\n {item.Content}\r\n \r\n ))} */}\r\n \r\n );\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { selectglobalSettings } from './selectors';\r\n\r\nexport const selectGlobalDbSetting_EnableLegacyScheduler = createSelector(\r\n [selectglobalSettings],\r\n state =>\r\n state.GetBooleanByKey(AllowedSettings.EnableLegacyScheduler) ?? false,\r\n);\r\n","import { ButtonProps } from 'app/components/BasicButtons/Button';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectglobalSettings,\r\n} from 'app/slice/selectors';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { AllowedSettings } from 'utils/globalSettings';\r\nimport { useLabelPrintSlice } from '../slice';\r\nimport { Identifiable } from 'types/common';\r\nimport { SelectedRowsActionIconButton } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionIconButton';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { ICanRaiseBasicTableRefreshEvent } from 'app/components/BasicTable/ControlledTable/ControlledTableProps';\r\nimport { usePrintScriptTags } from '../usePrintScriptTags';\r\n\r\nexport interface PrintAssetLabelsButtonProps\r\n extends ButtonProps,\r\n ICanRaiseBasicTableRefreshEvent {\r\n rows: Array>;\r\n}\r\n\r\nexport function PrintSelectedAssetLabelsButton({\r\n rows,\r\n onRefresh,\r\n onClick,\r\n ...props\r\n}: PrintAssetLabelsButtonProps) {\r\n const { t } = useTranslation();\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const allowedRoles = [\r\n Roles.Administrators,\r\n Roles.LabTech,\r\n Roles.GroupAdministrators,\r\n Roles.EquipmentAdministrator,\r\n ];\r\n\r\n const systemSettings = useSelector(selectglobalSettings);\r\n // enable print only if any of the supported printers settings has been turned on\r\n\r\n const dymoEnabled = systemSettings.GetBooleanByKey(\r\n AllowedSettings.DymoPrinterSupported,\r\n );\r\n const zebraEnabled = systemSettings.GetBooleanByKey(\r\n AllowedSettings.ZebraPrinterSupported,\r\n );\r\n usePrintScriptTags({ dymoEnabled, zebraEnabled });\r\n const printEnabled = dymoEnabled || zebraEnabled;\r\n\r\n const show =\r\n printEnabled &&\r\n authenticatedUser?.Roles?.some(role => allowedRoles.includes(role));\r\n\r\n const dispatch = useDispatch();\r\n const { actions } = useLabelPrintSlice();\r\n\r\n if (!show) {\r\n return <>;\r\n } else {\r\n const assetIds = rows.map(f => f.Id);\r\n props.children = props.children ?? t(translations.PrintLabels);\r\n props.title = props.title ?? t(translations.PrintLabels);\r\n props.disabled = props.disabled || assetIds.length === 0;\r\n return (\r\n {\r\n dispatch(actions.open({ ids: assetIds, type: 'Asset' }));\r\n return Promise.resolve({\r\n ErrorMessages: [],\r\n SuccessMessages: [],\r\n WarningMessages: [],\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n}\r\n","import { RadioProps as MuiRadioProps, styled } from '@material-ui/core';\r\nimport { Radio as MuiRadio } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nexport interface RadioProps extends MuiRadioProps {\r\n danger?: boolean;\r\n label?: string;\r\n}\r\n\r\nexport default function Radio(props: RadioProps) {\r\n const { color, danger, label, size = 'medium', ...other } = props;\r\n const RadioIconUnchecked = styled('span')(({ theme, ...other }) => ({\r\n borderRadius: '1000px',\r\n width: 20,\r\n height: 20,\r\n backgroundColor: bookitColors.base.white,\r\n border:\r\n danger || color === 'secondary'\r\n ? `1px solid ${bookitColors.danger.borders}`\r\n : `1px solid ${bookitColors.grayscale.grayBorders}`,\r\n 'input:hover ~ &': {\r\n border:\r\n danger || color === 'secondary'\r\n ? `1px solid ${bookitColors.danger.borders}`\r\n : props.disabled\r\n ? `1px solid ${bookitColors.grayscale.grayBorders}`\r\n : `1px solid ${bookitColors.primary.borders}`,\r\n },\r\n 'input:disabled ~ &': {\r\n //boxShadow: 'none',\r\n background:\r\n danger || color === 'secondary'\r\n ? bookitColors.danger.bgHover\r\n : bookitColors.grayscale.graybgComponents,\r\n },\r\n }));\r\n const RadioIconChecked = styled(RadioIconUnchecked)(({ theme }) => ({\r\n backgroundColor:\r\n danger || color === 'secondary'\r\n ? bookitColors.danger.components\r\n : bookitColors.primary.components,\r\n border: 'none',\r\n '&:before': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: 20,\r\n height: 20,\r\n backgroundImage: 'radial-gradient(#fff,#fff 16%,transparent 25%)',\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor:\r\n danger || color === 'secondary'\r\n ? bookitColors.danger.regular\r\n : bookitColors.primary.regular,\r\n border: 'none',\r\n },\r\n 'input:disabled ~ &': {\r\n background:\r\n danger || color === 'secondary'\r\n ? bookitColors.danger.disabled\r\n : bookitColors.grayscale.grayBorders,\r\n },\r\n }));\r\n return (\r\n }\r\n checkedIcon={}\r\n color={danger ? 'secondary' : color === 'default' ? 'primary' : color}\r\n size={size}\r\n inputProps={{ 'aria-label': !!label ? label : 'decorative radio' }}\r\n {...other}\r\n />\r\n );\r\n}\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { IFileDto } from 'api/odata/generated/entities/IFileDto';\r\nimport { IFormFieldDto } from 'api/odata/generated/entities/IFormFieldDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { FormInputFile } from 'app/components/Forms/FormInputFile';\r\nimport React from 'react';\r\nimport { Identifiable } from 'types/common';\r\nimport { CustomFormFieldProps } from '../CustomFormFields';\r\n\r\nexport function CustomFormFileUpload({\r\n formField,\r\n readonly,\r\n disabled,\r\n ...props\r\n}: CustomFormFieldProps) {\r\n return (\r\n \r\n );\r\n}\r\nconst url = '/api/odata/v4/Files';\r\nexport const InitFormFiles = (\r\n id: string,\r\n formField: IFormFieldDto | undefined,\r\n) => {\r\n const initids = id\r\n .split(',')\r\n .filter(f => f !== '')\r\n .map(item => {\r\n return { Id: item };\r\n }) as Identifiable[];\r\n if (initids.length > 0) {\r\n let filter: string | undefined = '';\r\n if (formField) {\r\n if (formField.IsMultiple) {\r\n filter = new Condition(\r\n 'Id',\r\n ODataOperators.Includes,\r\n initids,\r\n ).toString();\r\n } else {\r\n filter = `Id eq ${initids[0].Id}`;\r\n }\r\n }\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: filter,\r\n $select: 'Id,Name,Size,TypeId',\r\n $skip: 0,\r\n $top: initids.length,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as IFileDto[]);\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n resolve([] as IFileDto[]);\r\n });\r\n }\r\n};\r\n","import { IRepetitiveDto, RepetitiveInit } from 'types/IRepetitiveDto';\r\nimport { RepetitiveForm } from '.';\r\nimport * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useRepetitiveSlice } from './slice';\r\nimport { Portal } from '@material-ui/core';\r\nimport { useRef } from 'react';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { MutableRefObject } from 'react';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { RepetitiveFor } from './slice/types';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\nexport interface RepetitiveControlProps {\r\n startDate?: Date | null;\r\n saveRepetitive?: (values: IRepetitiveDto) => void;\r\n submitFormRef: MutableRefObject;\r\n title?: string;\r\n type: RepetitiveFor;\r\n disabled?: boolean;\r\n formIsValid?: (isValid: boolean) => void;\r\n withTopSeparator?: boolean;\r\n withBottomSeparator?: boolean;\r\n}\r\n\r\nexport function RepetitiveControl(props: RepetitiveControlProps) {\r\n const {\r\n saveRepetitive,\r\n submitFormRef,\r\n startDate,\r\n title,\r\n type,\r\n disabled,\r\n formIsValid,\r\n withTopSeparator,\r\n withBottomSeparator,\r\n } = props;\r\n const dispatch = useDispatch();\r\n const { actions } = useRepetitiveSlice();\r\n const [initData, setInitData] = React.useState(\r\n undefined,\r\n );\r\n const { newDate } = useSystemDate();\r\n useEffectOnMount(() => {\r\n setInitData(() => RepetitiveInit(startDate ?? newDate()));\r\n return () => {};\r\n });\r\n\r\n const portalRef = useRef(null);\r\n const bindSubmitForm = React.useCallback(\r\n submitForm => {\r\n submitFormRef.current = submitForm;\r\n },\r\n [submitFormRef],\r\n );\r\n const handleSubmit = React.useCallback(\r\n (values: IRepetitiveDto) => {\r\n if (saveRepetitive) {\r\n saveRepetitive(values);\r\n } else {\r\n var d = {\r\n StartDate:\r\n values.StartDate === undefined\r\n ? undefined\r\n : dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(values.StartDate),\r\n ),\r\n RecurringEvents: values.RecurringEvents,\r\n RepeatsOnDays: values.RepeatsOnDays,\r\n RecurringEndDate:\r\n values.RecurringEndDate === undefined\r\n ? undefined\r\n : dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(values.RecurringEndDate),\r\n ),\r\n RepeatsEveryDay: values.RepeatsEveryDay,\r\n RepeatsEveryPeriod: values.RepeatsEveryPeriod,\r\n RepeatsMonthlyBy: values.RepeatsMonthlyBy,\r\n } as IRepetitiveDto;\r\n dispatch(actions.saveState(d));\r\n }\r\n },\r\n [actions, dispatch, saveRepetitive],\r\n );\r\n return initData ? (\r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n ) : (\r\n \r\n \r\n \r\n );\r\n}\r\n","import { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { IUserGroupDto } from 'api/odata/generated/entities/IUserGroupDto';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\n\r\nexport interface BudgetListenerProps {\r\n budget: Entity | null;\r\n ReservationUserGroupGroupByBudgetUserGroup: boolean;\r\n values: T;\r\n setUserGroup: (value: Entity | null) => void;\r\n wait?: boolean;\r\n fundingTypeVisible?: boolean;\r\n setFundingType: (value: Entity | null) => void;\r\n handleValidate?: (\r\n userGroup: Entity | null,\r\n budget: IBudgetFilterDto | null,\r\n ) => void;\r\n}\r\n\r\nexport function BudgetListener(props: BudgetListenerProps) {\r\n const {\r\n budget,\r\n ReservationUserGroupGroupByBudgetUserGroup,\r\n setUserGroup,\r\n wait,\r\n handleValidate,\r\n fundingTypeVisible,\r\n setFundingType,\r\n } = props;\r\n const [initilized, setInitilized] = React.useState(true);\r\n React.useEffect(() => {\r\n if (!initilized && !wait) {\r\n if (!!budget?.Id) {\r\n if (ReservationUserGroupGroupByBudgetUserGroup) {\r\n if (!!(budget as IBudgetFilterDto).UserGroupId) {\r\n let ug = {\r\n Id: (budget as IBudgetFilterDto).UserGroupId,\r\n Name: (budget as IBudgetFilterDto).UserGroupName,\r\n } as Entity;\r\n setUserGroup(ug as IUserGroupDto);\r\n handleValidate?.(ug, budget as IBudgetFilterDto);\r\n } else {\r\n handleValidate?.(null, budget as IBudgetFilterDto);\r\n }\r\n }\r\n if (\r\n fundingTypeVisible &&\r\n (budget as IBudgetFilterDto).FundingTypeId !== null\r\n ) {\r\n setFundingType(\r\n getSingleInvoiceFundingType(\r\n (budget as IBudgetFilterDto).FundingTypeId ?? 0,\r\n ),\r\n );\r\n }\r\n } else {\r\n if (ReservationUserGroupGroupByBudgetUserGroup) {\r\n setUserGroup(null);\r\n }\r\n handleValidate?.(null, null);\r\n }\r\n }\r\n setInitilized(false);\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [budget]);\r\n\r\n return null;\r\n}\r\n","import { useFormikContext } from 'formik';\r\nimport { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { GlobalSettingsType } from '../useGlobalSettingsHook';\r\n\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\n\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { getWorkFlowName } from '../utils';\r\nimport { ReservationDetailsState } from '../../slice/types';\r\nimport { isMember } from './isMember';\r\nimport { UsageDetailsState } from 'app/pages/UsageDetails/Details/slice/types';\r\n\r\ntype DetailsState = ReservationDetailsState | UsageDetailsState;\r\nexport interface UserNameListenerProps {\r\n userName: Entity | null;\r\n equipments: Entity[];\r\n globalSettings: GlobalSettingsType;\r\n user: AuthenticatedUser | undefined;\r\n isEdit: boolean;\r\n reservationUserGroupGroupByBudgetUserGroup: boolean;\r\n isReservations?: boolean;\r\n //changeHandler: (values: T, changeStatus?: boolean | undefined) => void;\r\n values: T;\r\n wait?: boolean;\r\n}\r\nexport function UserNameListener(\r\n props: UserNameListenerProps,\r\n) {\r\n const {\r\n userName,\r\n equipments,\r\n globalSettings,\r\n reservationUserGroupGroupByBudgetUserGroup,\r\n isReservations,\r\n wait,\r\n } = props;\r\n\r\n //const equipmentSettings = useSelector(selectEquipmentsSettings);\r\n const [initilized, setInitilized] = React.useState(true);\r\n // const ReservationUserGroupGroupByBudgetUserGroup = React.useMemo(() => {\r\n // return !!equipmentSettings\r\n // ? globalSettings.reservationUserGroupGroupByBudgetUserGroup &&\r\n // !equipmentSettings.HasHideProjects &&\r\n // !equipmentSettings.HasConflictProjects &&\r\n // equipmentSettings.BudgetsTurnedOn\r\n // : globalSettings.reservationUserGroupGroupByBudgetUserGroup;\r\n // }, [\r\n // equipmentSettings,\r\n // globalSettings.reservationUserGroupGroupByBudgetUserGroup,\r\n // ]);\r\n\r\n const { setFieldValue } = useFormikContext();\r\n\r\n React.useEffect(() => {\r\n if (!initilized && !wait) {\r\n if (equipments.length > 0) {\r\n //&& !isEdit\r\n if (userName !== null) {\r\n if (!reservationUserGroupGroupByBudgetUserGroup) {\r\n if (!isMember(userName, props.values.ADGroup))\r\n setFieldValue('ADGroup', {\r\n Id: (userName as IUserFilterDto).UserGroupId,\r\n Name: (userName as IUserFilterDto).UserGroupName,\r\n });\r\n }\r\n if (globalSettings.AllowWorkflowBooking && isReservations) {\r\n setFieldValue('WorkflowBooking', getWorkFlowName(userName.Id));\r\n }\r\n }\r\n }\r\n }\r\n setInitilized(false);\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [userName]);\r\n\r\n return null;\r\n}\r\n","import { useFormikContext } from 'formik';\r\nimport { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { GlobalSettingsType } from '../useGlobalSettingsHook';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { IReservationEquipmentDto } from '../../slice/types';\r\nimport { getBudgetVisible } from '../../slice/getBudgetVisible';\r\nimport { isMember } from './isMember';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\n\r\nexport interface UserGroupListenerProps {\r\n userName: Entity | null;\r\n equipments: Entity[];\r\n userGroup: Entity | null | undefined;\r\n globalSettings: GlobalSettingsType;\r\n user: AuthenticatedUser | undefined;\r\n isEdit: boolean;\r\n settings?: {\r\n HasHideProjects: boolean;\r\n HasConflictProjects: boolean;\r\n BudgetsTurnedOn: boolean;\r\n };\r\n values?: T;\r\n wait?: boolean;\r\n}\r\nexport function UserGroupListener(props: UserGroupListenerProps) {\r\n const {\r\n userName,\r\n equipments,\r\n userGroup,\r\n globalSettings,\r\n isEdit,\r\n settings,\r\n wait,\r\n } = props;\r\n const [initilized, setInitilized] = React.useState(true);\r\n const budgetVisible = React.useMemo(() => {\r\n return getBudgetVisible(\r\n globalSettings,\r\n (equipments as IReservationEquipmentDto[]).map(service => ({\r\n Billable: service.Billable,\r\n BudgetsTurnedOn: service.BudgetsTurnedOn,\r\n HideProjects: service.HideProjects,\r\n ServiceTypeId: ServiceType.Online,\r\n })),\r\n );\r\n }, [equipments, globalSettings]);\r\n\r\n const ReservationUserGroupGroupByBudgetUserGroup = React.useMemo(() => {\r\n return !!settings\r\n ? globalSettings.reservationUserGroupGroupByBudgetUserGroup &&\r\n !settings.HasHideProjects &&\r\n !settings.HasConflictProjects &&\r\n settings.BudgetsTurnedOn\r\n : globalSettings.reservationUserGroupGroupByBudgetUserGroup;\r\n }, [settings, globalSettings.reservationUserGroupGroupByBudgetUserGroup]);\r\n const { setFieldValue } = useFormikContext();\r\n React.useEffect(() => {\r\n if (!initilized && !wait) {\r\n if (userGroup !== null) {\r\n if (\r\n budgetVisible &&\r\n !isEdit &&\r\n equipments.length > 0 &&\r\n userName !== null\r\n ) {\r\n if (!ReservationUserGroupGroupByBudgetUserGroup) {\r\n setFieldValue('Budget', null);\r\n }\r\n } else {\r\n if (!ReservationUserGroupGroupByBudgetUserGroup) {\r\n if (!isMember(userName, userGroup)) {\r\n setFieldValue('BookedBy', null);\r\n }\r\n\r\n if (budgetVisible && !isEdit) {\r\n setFieldValue('Budget', null);\r\n }\r\n }\r\n }\r\n } else {\r\n if (!ReservationUserGroupGroupByBudgetUserGroup) {\r\n setFieldValue('BookedBy', null);\r\n if (budgetVisible && !isEdit) {\r\n setFieldValue('Budget', null);\r\n }\r\n }\r\n }\r\n }\r\n setInitilized(false);\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [userGroup]);\r\n\r\n return null;\r\n}\r\n","/**\r\n *\r\n * FormAccompaniedServicesPicker\r\n *\r\n */\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { IEquipmentAccServicesDto } from 'api/odata/generated/entities/IEquipmentAccServicesDto';\r\nimport {\r\n AccompaniedServicesPicker,\r\n AccompaniedServicesPickerProps,\r\n SingleAccompaniedServicesPicker,\r\n} from '../pickers/MultiSelectPickers/AccompaniedServicesPicker';\r\n\r\nexport const FormAccompaniedServicesPicker = ({\r\n label,\r\n ...props\r\n}: Omit, 'onChange'> &\r\n Omit &\r\n Pick & { multiple: boolean }) => {\r\n const [field, meta, helpers] = useField(\r\n props as FieldHookConfig,\r\n );\r\n if (props.multiple) {\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onChipClick={props.onChipClick}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n />\r\n );\r\n } else {\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onChipClick={props.onChipClick}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n />\r\n );\r\n }\r\n};\r\n","import BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport parse from 'html-react-parser';\r\n\r\nimport { uniqueId } from 'lodash';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\n\r\nexport interface ImportProps {\r\n onDownloadTemplateButtonClick?: React.MouseEventHandler;\r\n processing: boolean;\r\n title?: string;\r\n accept: '.xlsx' | '.xls' | '.csv';\r\n disabled?: boolean;\r\n hideImportButton?: boolean;\r\n hideMessage?: boolean;\r\n}\r\nexport interface ImportComponentProps extends ImportProps {\r\n handleFileChange: (file: File) => void;\r\n}\r\nexport function ImportComponent(props: ImportComponentProps) {\r\n const { t } = useTranslation();\r\n const ref = React.useRef(null);\r\n const handleFileChange = event => {\r\n const file = ref.current?.files?.[0];\r\n if (file !== undefined) {\r\n props.handleFileChange(file);\r\n }\r\n };\r\n\r\n const [fileId] = React.useState(uniqueId('import-file-'));\r\n const [buttonId] = React.useState(uniqueId('import-file-'));\r\n return (\r\n
    \r\n {props.onDownloadTemplateButtonClick !== undefined && (\r\n \r\n {t(translations.ImportRecordsDescription)}\r\n \r\n \r\n )}\r\n {props.onDownloadTemplateButtonClick !== undefined && (\r\n \r\n \r\n  \r\n \r\n \r\n )}\r\n \r\n {props.hideMessage === undefined ||\r\n (props.hideMessage === false && (\r\n \r\n ))}\r\n  \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import { Body } from 'app/components/Typography';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport styled from 'styled-components';\r\nimport { ReservationSettingsState } from '../../slice/types';\r\n\r\nexport interface ReadOnlyDetailsProps {\r\n details: ReservationSettingsState;\r\n}\r\n\r\nexport function ReadOnlyDetails(props: ReadOnlyDetailsProps) {\r\n const { details } = props;\r\n const { t } = useTranslation();\r\n return (\r\n \r\n \r\n {t(translations.ReservationAdvancedDetails)}\r\n
    \r\n
    \r\n {t(translations.RecordDate)}\r\n \r\n {dateUtils.longDateTimeFormat(details.RecordDate)}\r\n \r\n
    \r\n {details.LastUpdateDate !== null && !!details.LastUpdateDate && (\r\n
    \r\n {t(translations.LastUpdated)}\r\n \r\n {dateUtils.longDateTimeFormat(details.LastUpdateDate)}\r\n \r\n
    \r\n )}\r\n {details.LastUpdateAdmin !== null && !!details.LastUpdateAdmin.Id && (\r\n
    \r\n {t(translations.LastUpdatedBy)}\r\n \r\n {details.LastUpdateAdmin?.Name}\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\nexport const DetailsWrapper = styled.div`\r\n &.readonly-root {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n grid-gap: 4px;\r\n padding: 0;\r\n width: 100%;\r\n }\r\n & .readonly-content {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n grid-gap: 16px;\r\n padding: 16px 0px;\r\n width: 100%;\r\n }\r\n & .readonly-row {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 0;\r\n width: inherit;\r\n }\r\n`;\r\n","import { IModificationsDto } from 'api/odata/generated/entities/IModificationsDto';\r\nimport DateTimeRenderer from 'app/components/BasicTable/CellRenderers/DateTimeRenderer';\r\nimport ModificationsValueRenderer from 'app/components/BasicTable/CellRenderers/ModificationsValueRenderer';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Column } from 'react-table';\r\n\r\nexport const getModificationsColumns = (t: TFunction) => {\r\n const res: Column[] = [\r\n {\r\n accessor: 'Field',\r\n Header: t(translations.Field) as string,\r\n },\r\n {\r\n accessor: 'OldValue',\r\n Header: t(translations.OldValue) as string,\r\n Cell: ModificationsValueRenderer,\r\n },\r\n {\r\n accessor: 'NewValue',\r\n Header: t(translations.NewValue) as string,\r\n Cell: ModificationsValueRenderer,\r\n },\r\n {\r\n accessor: 'UserDisplayName',\r\n Header: t(translations.User) as string,\r\n },\r\n {\r\n accessor: 'Date',\r\n Header: t(translations.Date) as string,\r\n Cell: DateTimeRenderer,\r\n },\r\n ];\r\n return res;\r\n};\r\n","import { IInvoiceTemplateDto } from 'app/pages/InvoiceTemplates/InvoiceTemplatesPage/IInvoiceTemplateDto';\r\nimport { Entity } from 'types/common';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\n\r\nconst url = '/api/odata/v4/InvoiceTemplates';\r\nexport const InvoiceTemplatesApi = {\r\n insertInvoiceTemplate: invoiceTemplate => {\r\n const form = new FormData();\r\n Object.keys(invoiceTemplate).forEach(k => {\r\n form.append(k, invoiceTemplate[k]);\r\n });\r\n\r\n if (\r\n !!invoiceTemplate.HeaderFile &&\r\n invoiceTemplate.HeaderFile?.length > 0\r\n ) {\r\n form.append(\r\n 'TemplateHeaderFile',\r\n invoiceTemplate.HeaderFile[0].PostedFile,\r\n );\r\n }\r\n if (\r\n !!invoiceTemplate.FooterFile &&\r\n invoiceTemplate.FooterFile?.length > 0\r\n ) {\r\n form.append(\r\n 'TemplateFooterFile',\r\n invoiceTemplate.FooterFile[0].PostedFile,\r\n );\r\n }\r\n return httpClient.post(url, form);\r\n },\r\n updateInvoiceTemplate: (Id: number, invoiceTemplate) => {\r\n const form = new FormData();\r\n Object.keys(invoiceTemplate).forEach(k => {\r\n form.append(k, invoiceTemplate[k]);\r\n });\r\n\r\n if (\r\n !!invoiceTemplate.HeaderFile &&\r\n invoiceTemplate.HeaderFile?.length > 0\r\n ) {\r\n form.append(\r\n 'TemplateHeaderFile',\r\n invoiceTemplate.HeaderFile[0].PostedFile,\r\n );\r\n }\r\n if (\r\n !!invoiceTemplate.FooterFile &&\r\n invoiceTemplate.FooterFile?.length > 0\r\n ) {\r\n form.append(\r\n 'TemplateFooterFile',\r\n invoiceTemplate.FooterFile[0].PostedFile,\r\n );\r\n }\r\n return httpClient.put(url + '(' + Id + ')', form);\r\n },\r\n deleteInvoiceTemplates: (\r\n rows: IInvoiceTemplateDto[],\r\n ): Promise => {\r\n const invoiceTemplatesIds: number[] = rows.map(item => item.Id);\r\n const data = { invoiceTemplatesIds };\r\n const url = '/api/odata/v4/InvoiceTemplates/DeleteInvoiceTemplates';\r\n return httpClient.post(url, data);\r\n },\r\n getInvoiceTemplateById: (Id: number) => {\r\n const params: {\r\n $filter?: string;\r\n $select: string;\r\n } = {\r\n $filter: '(Id eq ' + Id + ')',\r\n $select: [\r\n 'Id',\r\n 'Name',\r\n 'CreatedAt',\r\n 'LastUpdated',\r\n 'FundingType',\r\n 'ServiceGroupId',\r\n 'ServiceGroup',\r\n 'Html',\r\n 'TableHeaderColor',\r\n 'TableBodyColor',\r\n 'HeaderFileName',\r\n 'FooterFileName',\r\n ].join(','),\r\n };\r\n return httpClient.get(url, params);\r\n },\r\n assignInvoiceTemplateToInvoiceBatch: (\r\n rows: IInvoiceTemplateDto[],\r\n invoiceBatches: Entity[] | [],\r\n ): Promise => {\r\n const invoiceTemplateIds: number[] = rows.map(item => item.Id);\r\n const invoiceBatchIds: number[] = invoiceBatches.map(item => item.Id);\r\n const data = { invoiceTemplateIds, invoiceBatchIds };\r\n const url =\r\n '/api/odata/v4/InvoiceTemplates/AssignInvoiceTemplateToInvoiceBatch';\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import { IInventoryBatchDto } from 'api/odata/generated/entities/IInventoryBatchDto';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n InventoryBatchPicker,\r\n InventoryBatchPickerProps,\r\n} from '../pickers/AutocompletePickers/InventoryBatchesPicker';\r\n\r\nexport const FormInventoryBatchPicker = (\r\n props: FieldHookConfig &\r\n Omit,\r\n) => {\r\n const [field, meta, helpers] = useField(props);\r\n const handleChange = val => {\r\n props.onChange?.(val);\r\n helpers.setValue(val, true);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * DatesRangeFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IFilterComponentProps } from 'app/components/BasicTable/Filters/IFilterComponentProps';\r\n\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\nimport {\r\n getPeriodTypesEntity,\r\n PeriodTypes,\r\n PeriodTypesEntity,\r\n} from 'app/components/DatePeriods';\r\nimport { DatesRange } from 'types/DatesRange';\r\n\r\nimport { DatePeriodsPicker } from 'app/components/pickers/DatePeriodsPicker';\r\nimport { selectTwoDaysTimelineButtonEnabled } from 'app/pages/CalendarPage/Scheduler/slice/selectors';\r\nimport { useSelector } from 'react-redux';\r\n\r\n/**\r\n * Date picker to be used as a BasicTable filter component\r\n */\r\nexport const DatesPeriodFilter = (props: IFilterComponentProps) => {\r\n const { t } = useTranslation();\r\n const twoDaysEnabled = useSelector(selectTwoDaysTimelineButtonEnabled);\r\n const [value, setValue] = React.useState(\r\n props.value !== undefined ? props.value : new PresetDatesRange(),\r\n );\r\n const handleTypeChange = (value: PeriodTypesEntity | null) => {\r\n let changedValue = Object.assign(\r\n new PresetDatesRange(),\r\n {\r\n type:\r\n (value as PeriodTypesEntity) ??\r\n (getPeriodTypesEntity('CustomDate') as PeriodTypesEntity),\r\n },\r\n DatesRange.fromPreset(\r\n (value as PeriodTypesEntity) ??\r\n (getPeriodTypesEntity('CustomDate') as PeriodTypesEntity),\r\n null,\r\n null,\r\n ),\r\n );\r\n setValue(state => changedValue);\r\n props.onChange(changedValue);\r\n };\r\n return (\r\n <>\r\n {value !== undefined && (\r\n <>\r\n twoDaysEnabled === true || f !== 'TodayTomorrow',\r\n )}\r\n value={\r\n props.value instanceof PresetDatesRange\r\n ? (props.value.type as PeriodTypesEntity | undefined)\r\n : (props.value as PeriodTypesEntity | undefined)\r\n }\r\n disableClearable={true}\r\n placeholder={t(translations.Forever)}\r\n fullWidth={props.fullWidth}\r\n size=\"small\"\r\n id=\"datesrangeid\"\r\n aria-label=\"Date Periods select\"\r\n />\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default DatesPeriodFilter;\r\n\r\nexport const SchedulerDatePositionArray: Array = [\r\n 'Today',\r\n 'Tomorrow',\r\n 'Yesterday',\r\n 'TodayTomorrow',\r\n 'ThisWeek',\r\n 'NextWeek',\r\n 'ThisMonth',\r\n 'NextMonth',\r\n 'LastWeek',\r\n 'LastMonth',\r\n 'ThisQuarter',\r\n 'LastQuarter',\r\n 'NextQuarter',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'NextYear',\r\n 'CustomDate',\r\n];\r\ntype Extends = U;\r\nexport type SchedulerDatePositionUnion = Extends<\r\n PeriodTypes,\r\n | 'Today'\r\n | 'Tomorrow'\r\n | 'Yesterday'\r\n | 'TodayTomorrow'\r\n | 'ThisWeek'\r\n | 'NextWeek'\r\n | 'ThisMonth'\r\n | 'NextMonth'\r\n | 'LastWeek'\r\n | 'LastMonth'\r\n | 'ThisQuarter'\r\n | 'LastQuarter'\r\n | 'NextQuarter'\r\n | 'ThisYear'\r\n | 'LastYear'\r\n | 'NextYear'\r\n | 'CustomDate'\r\n>;\r\n","import * as DHTMLX from 'dhtmlx-scheduler';\r\nimport { ISchedulerState } from '../types/ISchedulerState';\r\nimport { ISchedulerParseEvent } from '../types/ISchedulerParseEvent';\r\nimport { ISchedulerEvent } from '../types/ISchedulerEvent';\r\nimport { EventType } from '../slice/types';\r\nimport { omit } from 'lodash';\r\nimport { ITrainingSessionSlotDto } from 'api/odata/generated/entities/ITrainingSessionSlotDto';\r\nimport { IWorkingHoursDto } from 'api/odata/generated/entities/IWorkingHoursDto';\r\nimport { ICalendarReservationDto } from 'api/odata/generated/entities/ICalendarReservationDto';\r\n\r\n/**\r\n * Syncs the event provided from outside of the scheduler (props,state,etc.) into the scheduler instance\r\n * @param scheduler Scheduler instance\r\n * @param type event type\r\n * @param items events array\r\n * @param mapfn mapping from event to the type parsable by the scheduler\r\n * @returns nothing\r\n */\r\nexport function syncSchedulerEvents(\r\n scheduler: DHTMLX.SchedulerStatic | undefined,\r\n items: Array | undefined,\r\n) {\r\n if (scheduler === undefined) {\r\n return;\r\n }\r\n\r\n // events internally stored on the scheduler instance (not a part of a public API)\r\n const _events = (scheduler as any)['_events'] as Record;\r\n const mappedEvents = items ?? [];\r\n\r\n //cleanup events\r\n const mappedEventIds = new Set(mappedEvents.map(f => f.id));\r\n // clear currently displayed items on the current period\r\n // and replace these with the fresh data from the store\r\n // events need to be deleted in case and new filter has been applied\r\n const state: ISchedulerState = scheduler.getState();\r\n scheduler\r\n .getEvents(state.min_date, state.max_date)\r\n .filter(\r\n (f: ISchedulerEvent) =>\r\n typeof f.id === 'number' || !mappedEventIds.has(f.id),\r\n )\r\n .filter(event => event.type !== undefined)\r\n .forEach(event => delete _events[event.id]);\r\n if (items !== undefined && items.length > 0) {\r\n //push items into the the scheduler\r\n scheduler.parse(mappedEvents);\r\n }\r\n}\r\n\r\nexport function mapEvents<\r\n TIn extends object =\r\n | ITrainingSessionSlotDto\r\n | IWorkingHoursDto\r\n | ICalendarReservationDto,\r\n>(\r\n type: EventType,\r\n items: Array | undefined,\r\n mapfn: (\r\n item: TIn,\r\n ) => Omit<\r\n ISchedulerParseEvent,\r\n 'original' | 'readonly' | 'notClickable' | 'selectable'\r\n >,\r\n) {\r\n const mappedEvents =\r\n items?.map(item => {\r\n const original: Omit = omit(item, 'Id') as Omit<\r\n TIn,\r\n 'Id'\r\n >;\r\n const result = {\r\n type: type,\r\n ...mapfn(item),\r\n\r\n original: original,\r\n };\r\n return result;\r\n }) ?? [];\r\n return mappedEvents;\r\n}\r\n","/**\r\n *\r\n * BasicDialogContent\r\n *\r\n */\r\nimport {\r\n DialogContent,\r\n DialogContentProps as MuiDialogContentProps,\r\n} from '@material-ui/core';\r\nexport interface BasicDialogContentProps extends MuiDialogContentProps {\r\n children: React.ReactNode;\r\n}\r\nexport function BasicDialogContent(props: BasicDialogContentProps) {\r\n const { children } = props;\r\n return {children};\r\n}\r\n","import { Caption } from 'app/components/Typography';\r\nimport { FormikErrors } from 'formik';\r\nimport styled from 'styled-components';\r\n\r\nexport interface ErrorsSummuryProps {\r\n errors: FormikErrors;\r\n}\r\nconst SummuryBox = styled('div')`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n`;\r\nexport function ErrorsSummury(props: ErrorsSummuryProps) {\r\n const data = Object.entries(props.errors).map(f => {\r\n return { name: f[0], msg: f[1] };\r\n });\r\n return data.length > 0 ? (\r\n \r\n {data.map(item => {\r\n if (Array.isArray(item.msg)) {\r\n return (item.msg as Array)\r\n .filter(f => !!f)\r\n .map((msgs, index) => (\r\n \r\n {msgs as string}\r\n \r\n ));\r\n } else {\r\n return (\r\n \r\n {item.msg as string}\r\n \r\n );\r\n }\r\n })}\r\n \r\n ) : null;\r\n}\r\n","import { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { toURLSearchParams } from 'app/components/BasicTable/withSavedHistory';\r\n\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { selectAuthenticatedUser, selectPublicUrl } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Column, Row } from 'react-table';\r\nimport { isEmptyOrWhitespace } from 'utils/typeUtils';\r\nimport { buildURL } from 'utils/url-utils';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { Condition } from 'api/odata/ODataFilter';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport useSidePanelState, {\r\n SidePanelCloseState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { selectOfflineRefsFilters } from 'app/pages/OfflineTypeReferencesDetails/Details/slice/selectors';\r\nimport { IOfflineServiceTypeRefsDto } from 'api/odata/generated/entities/IOfflineServiceTypeRefsDto';\r\nimport { OfflineReferenceTypeEnum } from 'enums/OfflineReferenceTypeEnum';\r\nimport { getSingleEnumEntityById } from 'utils/enumKeys';\r\nimport { AddOfflineRefs } from 'app/pages/Actions/PageTopActions/AddOfflineRefs';\r\nimport { useOfflineTypeRefsSlice } from 'app/pages/OfflineTypeReferencesDetails/Details/slice';\r\nimport { OfflineTypeReferencesTable } from '../OfflineTypeReferencesTable';\r\nimport { filterHandler } from 'app/components/BasicTable/UnconfigurableTable/FilterHandler';\r\nimport { GetFilters } from '../Filter';\r\nimport { ScreensId } from 'enums/ConfigurableTypes';\r\nimport { getColumns } from '../Columns';\r\nimport { useAdminPermissions } from 'app/permissions/Asset/assetPermissions';\r\nimport { GetResponseMessages, IResponseType } from 'types/ResponseType';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { SelectedRowsActionIconButton } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionIconButton';\r\nimport { SelectedRowsActionRenderer } from 'app/components/BasicTable/SelectedRowsActionButton/SelectedRowsActionRenderer';\r\n\r\nexport interface OfflineTypeReferencesPopUpProps\r\n extends CoverProps,\r\n SidePanelContentProps {\r\n refId?: number;\r\n refTypeId?: number;\r\n customPredicates?: (string | Condition)[];\r\n pageLink?: string;\r\n onCloseTable?: () => void;\r\n}\r\n\r\nexport function OfflineTypeReferencesPopUp(\r\n props: OfflineTypeReferencesPopUpProps,\r\n) {\r\n const { useSidePanel, refId, refTypeId, onCloseTable, closeCover } = props;\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const filters = useSelector(selectOfflineRefsFilters);\r\n const { actions } = useOfflineTypeRefsSlice();\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const publicUrl = useSelector(selectPublicUrl);\r\n // const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n // const coverExpanded = useSelector(selectIsCoverExpanded);\r\n // const isMobile = DetectIsMobile();\r\n // const [cover, setCover] = React.useState();\r\n const { cover, openPanel, closePanel, coverClosed, onCloseCover } =\r\n useSidePanelState(\r\n () => (!!onCloseTable ? false : true),\r\n undefined,\r\n useSidePanel,\r\n props.isCover,\r\n );\r\n const { allowedToEditGroup } = useAdminPermissions();\r\n\r\n // const showShortView =\r\n // isMobile ||\r\n // (useSidePanel && !sidePanelExpanded) ||\r\n // (props.isCover && !coverExpanded);\r\n const pagelink = React.useMemo(\r\n () =>\r\n !!props.pageLink\r\n ? props.pageLink\r\n : buildURL(\r\n `${publicUrl}ServiceRelatedRefs`,\r\n Object.assign({}, filters, {\r\n refId: refId,\r\n refTypeId: refTypeId,\r\n }),\r\n ),\r\n [filters, props.pageLink, publicUrl, refId, refTypeId],\r\n );\r\n\r\n const closeSidePanel = React.useCallback(() => {\r\n if (useSidePanel) {\r\n if (!!onCloseTable) {\r\n onCloseTable();\r\n dispatch(actions.setFilters(undefined));\r\n } else {\r\n closePanel({\r\n isCover: props.isCover,\r\n useSidePanel: useSidePanel,\r\n onClose: () => {\r\n dispatch(actions.setFilters(undefined));\r\n },\r\n } as SidePanelCloseState);\r\n }\r\n }\r\n }, [\r\n actions,\r\n closePanel,\r\n dispatch,\r\n onCloseTable,\r\n props.isCover,\r\n useSidePanel,\r\n ]);\r\n\r\n // const openAsset = React.useCallback(\r\n // (id: number, serviceType: number) => {\r\n // const assetProps: AssetPopUpProps = {\r\n // identifier: {\r\n // serviceId: id,\r\n // serviceTypeId: serviceType,\r\n // },\r\n // useSidePanel: true,\r\n // };\r\n // openPanel({\r\n // renderPageType: RenderPageType.AssetDetails,\r\n // renderPageProps: assetProps,\r\n // expanded: false,\r\n // useSidePanel: useSidePanel,\r\n // isCover: useSidePanel,\r\n // } as SidePanelOpenState);\r\n // },\r\n // [openPanel, useSidePanel],\r\n // );\r\n // const IsAdmin = React.useCallback(\r\n // (asset: IMyAssetsRow) => {\r\n // return isAuthenticated\r\n // ? authenticatedUser?.IsAllGroupOrLabTechAdmin(\r\n // [asset.ServiceGroupId ?? 0],\r\n // [\r\n // {\r\n // Id: asset.ServiceId,\r\n // Name: asset.Name,\r\n // ServiceTypeId: asset.ServiceTypeId,\r\n // } as IServiceTypeFilterDto,\r\n // ],\r\n // )\r\n // : false;\r\n // },\r\n // [isAuthenticated, authenticatedUser],\r\n // );\r\n const isRowSelectable = React.useCallback(\r\n (row: Row): boolean => {\r\n return (\r\n authenticatedUser?.HasAdminGroupOnlyPermissions(\r\n row.original.ServiceGroupId,\r\n ) || false\r\n );\r\n },\r\n [authenticatedUser],\r\n );\r\n const setfilterCallback = React.useCallback(\r\n (v: IFilterSettings[] | undefined) => {\r\n const res = {};\r\n if (!!v) {\r\n toURLSearchParams(v).forEach((val, name) => {\r\n res[name] = val;\r\n });\r\n }\r\n dispatch(actions.setFilters(!v || v.length === 0 ? undefined : res));\r\n },\r\n [actions, dispatch],\r\n );\r\n const screenName = React.useMemo(() => {\r\n if (refTypeId === undefined || refId === undefined) {\r\n return t(translations.menu_OfflineTypeRefernces);\r\n }\r\n return `${t(translations.menu_OfflineTypeRefernces)} to ${\r\n getSingleEnumEntityById(refTypeId, OfflineReferenceTypeEnum, t)?.Name\r\n }`;\r\n }, [refId, refTypeId, t]);\r\n const requiredFilter = (search: string) => {\r\n const result = new URLSearchParams(search);\r\n if (refTypeId !== undefined) {\r\n if (\r\n result.has('refTypeId') === false ||\r\n result.get('refTypeId') === null ||\r\n result.get('refTypeId') === ''\r\n ) {\r\n result.set('refTypeId', String(refTypeId));\r\n }\r\n }\r\n if (!!refId) {\r\n if (\r\n result.has('refId') === false ||\r\n result.get('refId') === null ||\r\n result.get('refId') === ''\r\n ) {\r\n result.set('refId', String(refId));\r\n }\r\n }\r\n const res = result.toString();\r\n return isEmptyOrWhitespace(res) ? undefined : res;\r\n };\r\n\r\n const pageActions: ActionRenderer[] = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n\r\n if (\r\n !!authenticatedUser &&\r\n (authenticatedUser.Roles.includes(Roles.Administrators) ||\r\n authenticatedUser.Roles.includes(Roles.GroupAdministrators))\r\n ) {\r\n actions.push(() => (\r\n \r\n ));\r\n }\r\n return actions;\r\n }, [\r\n authenticatedUser,\r\n filters,\r\n onCloseCover,\r\n openPanel,\r\n refId,\r\n refTypeId,\r\n useSidePanel,\r\n ]);\r\n const selectedRowActions: SelectedRowsActionRenderer[] =\r\n React.useMemo(\r\n () => [\r\n (rows, onRefresh) =>\r\n rows.every(c =>\r\n allowedToEditGroup({\r\n Id: c.ServiceGroupId,\r\n }),\r\n ) && (\r\n \r\n new Promise((resolve, reject) => {\r\n return httpClient\r\n .post('/api/odata/v4/OfflineServiceTypeRefs/DeleteRefs', {\r\n servicesIds: rows.map(c => c.Id),\r\n })\r\n .then(response => {\r\n //GetResponseMessages is from UsersPage\r\n const messages: IResponseType = GetResponseMessages(\r\n response,\r\n t(translations.Success) as string,\r\n );\r\n resolve(messages);\r\n })\r\n .catch(error => {\r\n console.log('status error', error);\r\n let err = t(translations.Failed) as string;\r\n reject(err);\r\n });\r\n })\r\n }\r\n />\r\n ),\r\n ],\r\n [allowedToEditGroup, t],\r\n );\r\n const TTable = React.useMemo(\r\n () =>\r\n filterHandler(\r\n OfflineTypeReferencesTable,\r\n GetFilters,\r\n {\r\n isSidePanel: useSidePanel,\r\n setFilters: setfilterCallback,\r\n reservedQueryStringParameterNames: ['refTypeId', 'refId'],\r\n getDefaultFilter: undefined,\r\n getRequiredFilter: requiredFilter,\r\n getSelectedViewFilter: undefined,\r\n enableSavedLists: false,\r\n anyDefinition: false,\r\n },\r\n ),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [useSidePanel],\r\n );\r\n const columns: Column[] = React.useMemo(\r\n () =>\r\n getColumns(\r\n t,\r\n item => allowedToEditGroup({ Id: item.ServiceGroupId }),\r\n authenticatedUser,\r\n useSidePanel,\r\n openPanel,\r\n onCloseCover,\r\n ),\r\n [\r\n t,\r\n authenticatedUser,\r\n useSidePanel,\r\n openPanel,\r\n onCloseCover,\r\n allowedToEditGroup,\r\n ],\r\n );\r\n return (\r\n \r\n \r\n \r\n }\r\n />\r\n );\r\n}\r\n","import { IServiceRequestTicketDto } from 'api/odata/generated/entities/IServiceRequestTicketDto';\r\n\r\nexport function getServiceRequestTicketTitle(item: IServiceRequestTicketDto) {\r\n return `#${item.ServiceRequestId} - ${item.ServiceRequest.CreatedFor?.Name}`;\r\n}\r\n","import { Button } from 'app/components/BasicButtons/Button';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useServiceRequestsKanbanSlice } from '../../slice';\r\nimport { Dto } from '../../slice/types';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport interface ParentTicketDetailsButtonProps {\r\n item?: Dto;\r\n}\r\n\r\nexport function ParentTicketDetailsButton({\r\n item,\r\n}: ParentTicketDetailsButtonProps) {\r\n const { t } = useTranslation();\r\n\r\n const dispatch = useDispatch();\r\n const { actions } = useServiceRequestsKanbanSlice();\r\n const handleOpenParentTicketClick = () => {\r\n if (item !== undefined) {\r\n dispatch(actions.showEditParent(item));\r\n }\r\n };\r\n if (\r\n item === undefined ||\r\n item.ParentTicketId === null ||\r\n item.ParentTicketId === undefined\r\n ) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * Asynchronously loads the component for ArticlesExternalSearchPage\r\n *\r\n */\r\n\r\nimport { lazyLoad } from 'utils/loadable';\r\n\r\nexport const ArticlesExternalSearchPagePath = '/articles/search';\r\nexport const ArticlesExternalSearchPage = lazyLoad(\r\n () => import('./index'),\r\n module => module.ArticlesExternalSearchPage,\r\n);\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.sideBar || initialState;\r\n\r\nexport const selectSideBar = createSelector([selectSlice], state => state);\r\nexport const selectMenuItems = createSelector(\r\n [selectSlice],\r\n state => state.menuItems,\r\n);\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { IBudgetExperimentsFilterDto } from 'api/odata/generated/entities/IBudgetExperimentsFilterDto';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport {\r\n Condition,\r\n ODataOperators,\r\n quoteODataValue,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePickerProps,\r\n AutocompletePicker,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { BudgetExperimentStatuses } from 'enums/BudgetExperimentStatuses';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { useSelector } from 'react-redux';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\n\r\nexport function budgetExperimentsFilter(\r\n serviceTypes: IServiceTypeFilterDto[],\r\n serviceType: ServiceType | undefined,\r\n budgetId: number | undefined,\r\n resStart: Date | string | null | undefined,\r\n resEnd: Date | string | null | undefined,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n\r\n predicates.push(\r\n new Condition(\r\n 'Active',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n\r\n predicates.push(\r\n new Condition(\r\n 'StatusId',\r\n ODataOperators.Equals,\r\n BudgetExperimentStatuses.Approved,\r\n ),\r\n );\r\n\r\n predicates.push(\r\n new Condition(\r\n 'BudgetTaskActive',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n\r\n if (!isNullOrUndefined(budgetId)) {\r\n predicates.push(\r\n new Condition(\r\n 'BudgetTaskBudgetId',\r\n ODataOperators.Equals,\r\n budgetId,\r\n ),\r\n );\r\n }\r\n\r\n if (serviceTypes.length > 0) {\r\n let ids = serviceTypes\r\n .filter(f => f.ServiceGroupId !== null)\r\n .map(f => {\r\n return { Id: f.ServiceGroupId } as Identifiable;\r\n });\r\n if (ids.length > 0) {\r\n predicates.push(\r\n `(${new Condition(\r\n 'BudgetTaskAllCoresAllowed',\r\n ODataOperators.Equals,\r\n true,\r\n )} or ${new Condition(\r\n 'BudgetTaskServiceGroupIds',\r\n ODataOperators.AnyIn,\r\n ids,\r\n )})`,\r\n );\r\n predicates.push(\r\n `(BudgetExperimentServiceGroups/any(s: s/ServiceGroupId in ${quoteODataValue(\r\n ids,\r\n )} and s/StatusId eq ${quoteODataValue(\r\n BudgetExperimentStatuses.Approved,\r\n )}))`,\r\n );\r\n }\r\n }\r\n\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\n\r\nexport interface BudgetExperimentsPickerProps\r\n extends Omit<\r\n AutocompletePickerProps,\r\n 'loadData'\r\n > {\r\n username?: string;\r\n name?: string;\r\n placeholder?: string;\r\n onBlur?: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n}\r\nconst url = '/api/odata/v4/BudgetExperimentsFilter';\r\nexport const initBudgetExperimentData = (\r\n initval: string | undefined,\r\n username: string,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: '(Id eq ' + id + ')',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(`${url}?username=${username}`, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\nconst loadData = (\r\n predicates: (string | Condition)[] | undefined,\r\n username: string,\r\n) =>\r\n getAutoCompleteLoadDataFn({\r\n url: `${url}?username=${username}`,\r\n predicates: predicates,\r\n select: ['Id', 'Name', 'Active', 'StatusId'],\r\n });\r\nexport function BudgetExperimentsPicker(props: BudgetExperimentsPickerProps) {\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const { username } = props;\r\n const innerLoadData = loadData(\r\n props.predicates,\r\n username || authenticatedUser?.Id || '',\r\n );\r\n\r\n return (\r\n \r\n );\r\n}\r\nexport const loadBudgetExperiments = loadData;\r\n","import { IBudgetExperimentsFilterDto } from 'api/odata/generated/entities/IBudgetExperimentsFilterDto';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { BudgetExperimentsPicker } from '../pickers/AutocompletePickers/BudgetExperimentsPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\n\r\nexport const FormBudgetExperimentsPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps & {\r\n username: string | undefined;\r\n }) => {\r\n const [field, meta, helpers] = useField(\r\n props,\r\n );\r\n return (\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n onBlur={field?.onBlur}\r\n value={field.value ?? undefined}\r\n error={meta?.error !== undefined}\r\n variant=\"filled\"\r\n disabled={props.disabled}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n info={props.info}\r\n username={props.username}\r\n />\r\n );\r\n};\r\n","import { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectConnectedSettings } from '../slice/selectors';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { isMember } from 'app/pages/ReservationDetails/Details/components/FormFieldListeners/isMember';\r\n\r\nexport interface UserGroupListenerProps {\r\n userName: Entity | null;\r\n services: Entity[];\r\n userGroup: Entity | null | undefined;\r\n isEdit: boolean;\r\n setUser: (value: Entity | null) => void;\r\n setBudget: (value: Entity | null) => void;\r\n values?: T;\r\n forceDisabled?: boolean;\r\n user: AuthenticatedUser | undefined;\r\n}\r\nexport function UserGroupListener({\r\n userName: selectedUser,\r\n services,\r\n userGroup,\r\n isEdit,\r\n setUser,\r\n setBudget,\r\n forceDisabled,\r\n user,\r\n}: UserGroupListenerProps) {\r\n const [initilized, setInitilized] = React.useState(!forceDisabled);\r\n const serviceSettings = useSelector(selectConnectedSettings);\r\n React.useEffect(() => {\r\n if (!initilized) {\r\n if (userGroup !== null) {\r\n if (\r\n serviceSettings.budgetVisible &&\r\n !isEdit &&\r\n services.length > 0 &&\r\n selectedUser !== null\r\n ) {\r\n if (!serviceSettings.ReservationUserGroupGroupByBudgetUserGroup) {\r\n if (!isMember(selectedUser, userGroup)) {\r\n setUser(null);\r\n if (serviceSettings.budgetVisible && !isEdit) {\r\n setBudget(null);\r\n }\r\n }\r\n }\r\n } else if (!serviceSettings.budgetVisible && !isEdit) {\r\n if (!isMember(selectedUser, userGroup)) {\r\n setUser(null);\r\n }\r\n }\r\n } else {\r\n if (!serviceSettings.ReservationUserGroupGroupByBudgetUserGroup) {\r\n setUser(null);\r\n if (serviceSettings.budgetVisible && !isEdit) {\r\n setBudget(null);\r\n }\r\n }\r\n }\r\n }\r\n setInitilized(false);\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [userGroup]);\r\n\r\n return null;\r\n}\r\n","import { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { selectConnectedSettings } from '../slice/selectors';\r\n\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\nimport { isMember } from 'app/pages/ReservationDetails/Details/components/FormFieldListeners/isMember';\r\n\r\nexport interface UserNameListenerProps {\r\n userName: Entity | null;\r\n userGroup: Entity | null;\r\n services: Entity[];\r\n user: AuthenticatedUser | undefined;\r\n globalSettings: GlobalSettingsType;\r\n isEdit: boolean;\r\n startTime: Date | string;\r\n endTime?: Date | string;\r\n setUserGroup: (value: Entity | null) => void;\r\n setBudget: (value: Entity | null) => void;\r\n values?: T;\r\n forceDisabled?: boolean;\r\n}\r\nexport function UserNameListener(props: UserNameListenerProps) {\r\n const {\r\n userName: selectedUser,\r\n services,\r\n isEdit,\r\n userGroup: selectedUserGroupo,\r\n globalSettings,\r\n setUserGroup,\r\n forceDisabled,\r\n } = props;\r\n const serviceSettings = useSelector(selectConnectedSettings);\r\n const ReservationUserGroupGroupByBudgetUserGroup = React.useMemo(() => {\r\n return serviceSettings.budgetVisible\r\n ? globalSettings.reservationUserGroupGroupByBudgetUserGroup\r\n : false;\r\n }, [\r\n globalSettings.reservationUserGroupGroupByBudgetUserGroup,\r\n serviceSettings.budgetVisible,\r\n ]);\r\n\r\n const [initilized, setInitilized] = React.useState(!forceDisabled);\r\n React.useEffect(() => {\r\n if (!initilized) {\r\n var reservationUserGroupGroupByBudgetUserGroup =\r\n services.length === 0\r\n ? globalSettings.reservationUserGroupGroupByBudgetUserGroup\r\n : ReservationUserGroupGroupByBudgetUserGroup;\r\n\r\n if (!isEdit) {\r\n if (selectedUser !== null) {\r\n if (!reservationUserGroupGroupByBudgetUserGroup) {\r\n if (!isMember(selectedUser, selectedUserGroupo)) {\r\n const selectedUserDto = selectedUser as IUserFilterDto;\r\n setUserGroup({\r\n Id: selectedUserDto.UserGroupId,\r\n Name: selectedUserDto.UserGroupName,\r\n } as Entity);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n setInitilized(false);\r\n return () => {};\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedUser]);\r\n\r\n return null;\r\n}\r\n","import { Entity } from 'types/common';\r\nimport * as React from 'react';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { IUserGroupDto } from 'api/odata/generated/entities/IUserGroupDto';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectConnectedSettings } from '../slice/selectors';\r\nimport {\r\n budgetExperimentsFilter,\r\n loadBudgetExperiments,\r\n} from 'app/components/pickers/AutocompletePickers/BudgetExperimentsPicker';\r\nimport { AuthenticatedUser } from 'types/AuthenticatedUser';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { initBudgetData } from 'app/components/pickers/AutocompletePickers/BudgetPicker';\r\nimport { getSingleInvoiceFundingType } from 'app/components/pickers/StaticOptionsPickers/FundingTypeIdPicker';\r\n\r\nexport interface BudgetListenerProps {\r\n budget: Entity | null;\r\n values?: T;\r\n setUserGroup: (value: Entity | null) => void;\r\n setBudgetExperiment: (value: Entity | null) => void;\r\n setBudget: (value: Entity | null) => void;\r\n userName: Entity | null;\r\n services: Entity[];\r\n isEdit: boolean;\r\n startTime: Date | string;\r\n endTime?: Date | string;\r\n user: AuthenticatedUser | undefined;\r\n serviceTypeEnum?: ServiceType;\r\n forceDisabled?: boolean;\r\n userGroup: Entity | null;\r\n fundingTypeVisible?: boolean;\r\n setFundingType: (value: Entity | null) => void;\r\n}\r\n\r\nexport function BudgetListener(props: BudgetListenerProps) {\r\n const {\r\n budget,\r\n setUserGroup,\r\n setBudgetExperiment,\r\n setBudget,\r\n services,\r\n userName,\r\n isEdit,\r\n startTime,\r\n endTime,\r\n serviceTypeEnum,\r\n user,\r\n forceDisabled,\r\n userGroup,\r\n fundingTypeVisible,\r\n setFundingType,\r\n } = props;\r\n const [initilized, setInitilized] = React.useState(!forceDisabled);\r\n const serviceSettings = useSelector(selectConnectedSettings);\r\n const currentUser =\r\n !!userName && userName !== null ? userName.Id : user?.Id || '';\r\n const fetchBudgetExperiment = async () => {\r\n try {\r\n const budgetExperiments = await loadBudgetExperiments(\r\n budgetExperimentsFilter(\r\n services as IServiceTypeFilterDto[],\r\n serviceTypeEnum,\r\n budget?.Id,\r\n startTime,\r\n endTime,\r\n ),\r\n currentUser,\r\n )(null);\r\n return budgetExperiments.value;\r\n } catch {\r\n return [];\r\n }\r\n };\r\n React.useEffect(() => {\r\n let cancel = false;\r\n if (!initilized) {\r\n if (!!budget?.Id) {\r\n if (serviceSettings.ReservationUserGroupGroupByBudgetUserGroup) {\r\n //let budget = values.Budget as IBudgetFilterDto;\r\n if (!!(budget as IBudgetFilterDto).UserGroupId) {\r\n if ((budget as IBudgetFilterDto).UserGroupId !== userGroup?.Id) {\r\n setUserGroup({\r\n Id: (budget as IBudgetFilterDto).UserGroupId,\r\n Name: (budget as IBudgetFilterDto).UserGroupName,\r\n } as IUserGroupDto);\r\n }\r\n }\r\n }\r\n if (serviceSettings.budgetExpirementVisible && !isEdit) {\r\n if ((budget as IBudgetFilterDto).HideExperiments === false) {\r\n (async () => {\r\n await fetchBudgetExperiment()\r\n .then(experiments => {\r\n if (cancel) {\r\n return;\r\n }\r\n if (experiments.length > 0) {\r\n if (experiments.length === 1) {\r\n setBudgetExperiment(experiments[0]);\r\n } else {\r\n setBudgetExperiment(null);\r\n }\r\n } else {\r\n setBudgetExperiment(null);\r\n }\r\n })\r\n .catch(() => {\r\n setBudgetExperiment(null);\r\n });\r\n })();\r\n } else {\r\n setBudgetExperiment(null);\r\n }\r\n }\r\n if (\r\n fundingTypeVisible &&\r\n (budget as IBudgetFilterDto).FundingTypeId !== null\r\n ) {\r\n setFundingType(\r\n getSingleInvoiceFundingType(\r\n (budget as IBudgetFilterDto).FundingTypeId ?? 0,\r\n ),\r\n );\r\n }\r\n } else {\r\n if (serviceSettings.ReservationUserGroupGroupByBudgetUserGroup) {\r\n setUserGroup(null);\r\n }\r\n if (serviceSettings.budgetExpirementVisible) {\r\n setBudgetExperiment(null);\r\n }\r\n }\r\n } else {\r\n if (isEdit && budget !== null && !cancel) {\r\n (async () => {\r\n await initBudgetData(budget.Id.toString())\r\n .then(budg => {\r\n if (cancel) {\r\n return;\r\n }\r\n setBudget(budg[0]);\r\n if (\r\n !!budg[0] &&\r\n fundingTypeVisible &&\r\n (budg[0] as IBudgetFilterDto).FundingTypeId !== null\r\n ) {\r\n setFundingType(\r\n getSingleInvoiceFundingType(\r\n (budg[0] as IBudgetFilterDto).FundingTypeId ?? 0,\r\n ),\r\n );\r\n }\r\n })\r\n .catch(() => {});\r\n })();\r\n }\r\n }\r\n setInitilized(false);\r\n return () => {\r\n cancel = true;\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [budget]);\r\n\r\n return null;\r\n}\r\n","import { translations } from 'locales/translations';\r\nimport { useCallback, useRef, useState, useMemo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IConnectedFiltersDto } from 'types/IConnectedFiltersDto';\r\nimport { FieldHandler, FormListener } from '../FormRender/FormRenderer';\r\nimport * as Yup from 'yup';\r\nimport {\r\n BudgetEntitySechema,\r\n BudgetExperimentEntitySechema,\r\n InstituteProjectEntitySechema,\r\n UserEntitySchema,\r\n UserGroupEntitySchema,\r\n} from '../Schemas';\r\nimport { TransformDate } from '../Schemas/SchemaMethods';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Formik, FormikProps, FormikValues } from 'formik';\r\nimport { FormUserPicker } from '../FormUserPicker';\r\nimport { FormFieldsSection, FormRow } from '../FormsLayout';\r\nimport { FormBudgetExperimentsPicker } from '../FormBudgetExperimentsPicker';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { budgetExperimentsFilter } from 'app/components/pickers/AutocompletePickers/BudgetExperimentsPicker';\r\nimport { FormRestrictedUserGroupPicker } from '../FormRestrictedUserGroupPicker';\r\nimport { RestrictedFilter } from 'app/components/pickers/AutocompletePickers/UserGroupPicker';\r\nimport { FormLabelText } from '../FormLabelText';\r\nimport { Box } from '@material-ui/core';\r\nimport { ServicesFilter } from 'app/components/pickers/AutocompletePickers/UserPicker';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { FormFundingTypePicker } from '../FormFundingTypePicker';\r\nimport { FormBudgetPicker } from '../FormBudgetPicker';\r\nimport { restrictedBudgetFilter } from 'app/components/pickers/AutocompletePickers/BudgetPicker';\r\nimport {\r\n selectConnectedFieldHandler,\r\n selectConnectedFiltersData,\r\n selectConnectedSettings,\r\n} from './slice/selectors';\r\nimport { useConnectedFiltersSlice } from './slice';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { UserGroupListener } from './FormFieldListeners/UserGroupListener';\r\nimport { UserNameListener } from './FormFieldListeners/UserNameListener';\r\nimport { BudgetListener } from './FormFieldListeners/BudgetListener';\r\nimport { IBudgetFilterDto } from 'api/odata/generated/entities/IBudgetFilterDto';\r\nimport { useSystemDate } from 'app/hooks/useSystemDate';\r\nimport React from 'react';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { FormBookitDateTimePicker } from '../FormBookitDateTimePicker';\r\nimport produce from 'immer';\r\nimport { Entity } from 'types/common';\r\nimport { PurchaseOrderOptions } from 'api/odata/generated/enums/PurchaseOrderOptions';\r\nimport { FormTextField } from '../FormTextField';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { ChildEntityProps } from '../../../../types/ChildEntityProps';\r\nimport { ReportedFrom } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\n\r\nexport interface ConnectedFiltersFormProps extends ChildEntityProps {\r\n isEdit: boolean;\r\n onSubmit: (item: IConnectedFiltersDto) => void;\r\n ConnectedFiltersData?: IConnectedFiltersDto;\r\n processing?: boolean;\r\n bindSubmitForm: any;\r\n serviceTypeEnum?: ServiceType;\r\n serviceTypes: IServiceTypeFilterDto[];\r\n globalSettings: GlobalSettingsType;\r\n startTimeLabel?: string;\r\n endTimeLabel?: string;\r\n startLabelInline?: boolean;\r\n endLabelInline?: boolean;\r\n formIsValid?: (isValid: boolean) => void;\r\n orderForConsumables?: boolean;\r\n forceDisabled?: boolean;\r\n budgetPickerInfo?: string;\r\n reportFrom?: ReportedFrom;\r\n}\r\n\r\nexport function ConnectedFiltersForm({\r\n isEdit,\r\n isChildEntry,\r\n onSubmit,\r\n ConnectedFiltersData,\r\n processing,\r\n bindSubmitForm,\r\n serviceTypeEnum,\r\n serviceTypes,\r\n startTimeLabel,\r\n endTimeLabel,\r\n startLabelInline,\r\n endLabelInline,\r\n globalSettings,\r\n formIsValid,\r\n orderForConsumables,\r\n forceDisabled,\r\n budgetPickerInfo,\r\n reportFrom,\r\n}: ConnectedFiltersFormProps): JSX.Element {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useConnectedFiltersSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n //USER AUTH\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const connectedSettings = useSelector(selectConnectedSettings);\r\n const connectedData = useSelector(selectConnectedFiltersData);\r\n //PICKER STATES\r\n const [userChanged, setUserChanged] = useState(false);\r\n const [userGroupChanged, setUserGroupChanged] = useState(false);\r\n const [budgetChanged, setBudgetChanged] = useState(false);\r\n const [budgetExpirementChanged, setBudgetExpirementChanged] =\r\n useState(false);\r\n const [startTimeChanged, setStartTimeChanged] = useState(false);\r\n const [endTimeChanged, setEndTimeChanged] = useState(false);\r\n const { newDate } = useSystemDate();\r\n //REFS\r\n const formikRef = useRef>(null);\r\n //SCHEMA\r\n const computedSchema = useMemo(() => {\r\n const ConnectedFiltersSchema: Yup.SchemaOf =\r\n Yup.object({\r\n StartTime: Yup.date()\r\n .transform(TransformDate)\r\n .default(dateUtils.dateOrStringToDate(newDate())),\r\n EndTime: Yup.date().transform(TransformDate).optional(),\r\n User: UserEntitySchema.label(t(translations.User) as string)\r\n .nullable()\r\n .notRequired(),\r\n UserGroup: UserGroupEntitySchema.label(\r\n t(translations.UserGroup) as string,\r\n )\r\n .nullable()\r\n .default(null),\r\n Budget: BudgetEntitySechema.label(\r\n t(translations.BudgetNumber) as string,\r\n )\r\n .nullable()\r\n .default(null),\r\n //BudgetExperimentId if displayed then should be required\r\n BudgetExperiment:\r\n BudgetExperimentEntitySechema.nullable().default(null),\r\n InstituteProject: InstituteProjectEntitySechema.nullable()\r\n .notRequired()\r\n .optional()\r\n .default(null),\r\n ExternalCustomer: Yup.mixed()\r\n .label(t(translations.ExternalCustomer) as string)\r\n .nullable(true),\r\n FundingType: Yup.mixed()\r\n .nullable()\r\n .default(null)\r\n .label(t(translations.FundingType) as string),\r\n PurchaseOrder: Yup.string()\r\n .label(t(translations.PurchaseOrder) as string)\r\n .nullable(true)\r\n .min(globalSettings.purchaseOrderLengthSetting ?? 0)\r\n .when('Budget', {\r\n is: budget => {\r\n const result =\r\n globalSettings.purchaseOrderBudgetEnabled &&\r\n (budget as IBudgetFilterDto)?.PurchaseOrderOptionId ===\r\n PurchaseOrderOptions.Mandatory;\r\n return result;\r\n },\r\n then: schema => schema.required(),\r\n }),\r\n Reference: Yup.string()\r\n .label(t(translations.Reference) as string)\r\n .nullable(true),\r\n });\r\n if (connectedSettings.budgetVisible === true) {\r\n ConnectedFiltersSchema.fields.Budget.withMutation(schema =>\r\n schema\r\n .required(\r\n `${t(translations.BudgetIsRequired) as string} ${\r\n !!budgetPickerInfo && forceDisabled ? budgetPickerInfo : ''\r\n }`,\r\n )\r\n .label(t(translations.BudgetNumber) as string),\r\n );\r\n if (connectedSettings.fundingTypeVisible) {\r\n ConnectedFiltersSchema.fields.FundingType.withMutation(schema =>\r\n schema.required(t(translations.FundingTypeRequired) as string),\r\n );\r\n }\r\n }\r\n if (!processing) {\r\n if (\r\n connectedSettings.budgetExpirementVisible &&\r\n !!connectedData &&\r\n !!connectedData.Budget &&\r\n connectedData.Budget !== null &&\r\n (connectedData.Budget as IBudgetFilterDto).HideExperiments !==\r\n undefined &&\r\n (connectedData.Budget as IBudgetFilterDto)?.HideExperiments === false\r\n ) {\r\n ConnectedFiltersSchema.fields.BudgetExperiment.withMutation(schema =>\r\n schema.required(\r\n t(translations.res_err_BudgetExperimentRequired) as string,\r\n ),\r\n );\r\n }\r\n if (\r\n !connectedSettings.budgetVisible ||\r\n (connectedSettings.budgetVisible &&\r\n !connectedSettings.ReservationUserGroupGroupByBudgetUserGroup) ||\r\n connectedSettings.userGroupVisible\r\n ) {\r\n ConnectedFiltersSchema.fields.UserGroup.withMutation(schema =>\r\n schema\r\n .label(t(translations.UserGroup) as string)\r\n .required(t(translations.err_UserGroupRequired) as string),\r\n );\r\n ConnectedFiltersSchema.fields.User.withMutation(schema =>\r\n schema\r\n .label(t(translations.User) as string)\r\n .required(t(translations.err_UserFieldRequired) as string),\r\n );\r\n }\r\n if (connectedSettings.endTimeVisible) {\r\n ConnectedFiltersSchema.fields.EndTime.withMutation(schema =>\r\n schema\r\n .label(t(translations.EndTime) as string)\r\n .required(t(translations._errEndTimeRequired) as string)\r\n .min(\r\n Yup.ref('StartTime'),\r\n t(translations.err_EndTimeLowerThanStartTime) as string,\r\n ),\r\n );\r\n }\r\n if (connectedSettings.userVisible) {\r\n ConnectedFiltersSchema.fields.User.withMutation(schema =>\r\n schema\r\n .label(t(translations.User) as string)\r\n .required(t(translations.err_UserFieldRequired) as string),\r\n );\r\n }\r\n }\r\n\r\n return ConnectedFiltersSchema;\r\n }, [\r\n budgetPickerInfo,\r\n connectedData,\r\n connectedSettings.ReservationUserGroupGroupByBudgetUserGroup,\r\n connectedSettings.budgetExpirementVisible,\r\n connectedSettings.budgetVisible,\r\n connectedSettings.endTimeVisible,\r\n connectedSettings.fundingTypeVisible,\r\n connectedSettings.userGroupVisible,\r\n connectedSettings.userVisible,\r\n forceDisabled,\r\n globalSettings.purchaseOrderBudgetEnabled,\r\n globalSettings.purchaseOrderLengthSetting,\r\n newDate,\r\n processing,\r\n t,\r\n ]);\r\n const fieldHandler = useSelector(selectConnectedFieldHandler);\r\n const isRoleAdmin =\r\n authenticatedUser?.Roles.includes(Roles.Administrators) ||\r\n authenticatedUser?.Roles.includes(Roles.GroupAdministrators) ||\r\n authenticatedUser?.Roles.includes(Roles.LabTech);\r\n const reserFieldHandler = () => {\r\n dispatch(actions.resetConnectedHandler());\r\n };\r\n const updateDataState = useCallback(\r\n (value: IConnectedFiltersDto) => {\r\n dispatch(actions.saveState(value));\r\n dispatch(\r\n actions.extendSettingsState({\r\n services: serviceTypes,\r\n globalSettings: globalSettings,\r\n settings: connectedSettings,\r\n isEdit: isEdit,\r\n data: value,\r\n }),\r\n );\r\n },\r\n [\r\n actions,\r\n connectedSettings,\r\n dispatch,\r\n globalSettings,\r\n isEdit,\r\n serviceTypes,\r\n ],\r\n );\r\n const editAllowed = useMemo(() => {\r\n return (\r\n !isEdit ||\r\n (isEdit &&\r\n (connectedSettings.isServiceAdmin === true ||\r\n authenticatedUser?.Id === connectedData?.User?.Id))\r\n );\r\n }, [\r\n authenticatedUser?.Id,\r\n connectedData?.User?.Id,\r\n connectedSettings.isServiceAdmin,\r\n isEdit,\r\n ]);\r\n const createUpdateAllowed = useMemo(() => {\r\n return (\r\n (isEdit && editAllowed) ||\r\n (!isEdit && (connectedSettings.isServiceAdmin || isRoleAdmin))\r\n );\r\n }, [connectedSettings.isServiceAdmin, editAllowed, isEdit, isRoleAdmin]);\r\n //FUNCTIONS\r\n const handleSubmit = value => {\r\n if (onSubmit !== undefined && onSubmit !== null) {\r\n onSubmit(value);\r\n }\r\n };\r\n\r\n //ON FORM CHANGE\r\n const handleFormChange = useCallback(\r\n (values: IConnectedFiltersDto, isValid, dirty, setValue) => {\r\n if (userGroupChanged) {\r\n updateDataState(values);\r\n setUserGroupChanged(false);\r\n }\r\n if (userChanged) {\r\n updateDataState(values);\r\n setUserChanged(false);\r\n }\r\n if (startTimeChanged) {\r\n updateDataState(values);\r\n setStartTimeChanged(false);\r\n }\r\n if (endTimeChanged) {\r\n updateDataState(values);\r\n setEndTimeChanged(false);\r\n }\r\n if (budgetChanged) {\r\n updateDataState(values);\r\n\r\n setBudgetChanged(false);\r\n }\r\n if (budgetExpirementChanged) {\r\n updateDataState(values);\r\n setBudgetExpirementChanged(false);\r\n }\r\n },\r\n [\r\n budgetChanged,\r\n budgetExpirementChanged,\r\n endTimeChanged,\r\n startTimeChanged,\r\n updateDataState,\r\n userChanged,\r\n userGroupChanged,\r\n ],\r\n );\r\n\r\n //RENDER\r\n return (\r\n <>\r\n {\r\n // call setSubmit to finish submit cycle\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n if (formIsValid) {\r\n formIsValid(formik.isValid);\r\n }\r\n /**\r\n * disables all inputs\r\n */\r\n const inputsDisabled =\r\n isChildEntry || // child entry e.g. reservation -> offline service\r\n formik.isSubmitting || // changes during submission won't be saved\r\n !editAllowed || // disable if not allowed to edit\r\n forceDisabled; // force disabled - ???\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n updateDataState(\r\n Object.assign(\r\n {},\r\n formik.values,\r\n value,\r\n ) as IConnectedFiltersDto,\r\n )\r\n }\r\n resetFieldState={reserFieldHandler}\r\n />\r\n {!forceDisabled && reportFrom !== 'milestone' && (\r\n \r\n {\r\n console.debug('setUser', value);\r\n formik.setFieldValue('User', value);\r\n updateDataState(\r\n Object.assign({}, formik.values, {\r\n User: value,\r\n }) as IConnectedFiltersDto,\r\n );\r\n }}\r\n setBudget={value => {\r\n formik.setFieldValue('Budget', value);\r\n updateDataState(\r\n Object.assign({}, formik.values, {\r\n Budget: value,\r\n }) as IConnectedFiltersDto,\r\n );\r\n }}\r\n forceDisabled={forceDisabled}\r\n />\r\n {\r\n formik.setFieldValue('UserGroup', value);\r\n updateDataState(\r\n Object.assign({}, formik.values, {\r\n UserGroup: value,\r\n }) as IConnectedFiltersDto,\r\n );\r\n }}\r\n setBudget={value => {\r\n formik.setFieldValue('Budget', value);\r\n updateDataState(\r\n Object.assign({}, formik.values, {\r\n Budget: value,\r\n }) as IConnectedFiltersDto,\r\n );\r\n }}\r\n user={authenticatedUser}\r\n globalSettings={globalSettings}\r\n startTime={formik.values.StartTime}\r\n endTime={formik.values.EndTime}\r\n userGroup={formik.values.UserGroup}\r\n forceDisabled={forceDisabled}\r\n />\r\n {\r\n formik.setFieldValue('UserGroup', value);\r\n updateDataState(\r\n Object.assign({}, formik.values, {\r\n UserGroup: value,\r\n }) as IConnectedFiltersDto,\r\n );\r\n }}\r\n setBudgetExperiment={value => {\r\n formik.setFieldValue('BudgetExperiment', value);\r\n updateDataState(\r\n Object.assign({}, formik.values, {\r\n BudgetExperiment: value,\r\n }) as IConnectedFiltersDto,\r\n );\r\n }}\r\n setBudget={value => {\r\n formik.setFieldValue('Budget', value);\r\n updateDataState(\r\n Object.assign({}, formik.values, {\r\n Budget: value,\r\n }) as IConnectedFiltersDto,\r\n );\r\n if (isEdit) {\r\n dispatch(layoutActions.setNotSavedChanges(false));\r\n }\r\n }}\r\n budget={formik.values.Budget}\r\n userName={formik.values.User}\r\n services={serviceTypes}\r\n isEdit={isEdit}\r\n startTime={formik.values.StartTime}\r\n endTime={formik.values.EndTime}\r\n user={authenticatedUser}\r\n forceDisabled={forceDisabled}\r\n userGroup={formik.values.UserGroup}\r\n fundingTypeVisible={connectedSettings.fundingTypeVisible}\r\n setFundingType={value => {\r\n formik.setFieldValue('FundingType', value);\r\n updateDataState(formik.values as IConnectedFiltersDto);\r\n }}\r\n />\r\n \r\n )}\r\n\r\n {orderForConsumables ? (\r\n \r\n {connectedSettings.fundingTypeVisible && (\r\n \r\n {\r\n formik.setValues(\r\n produce(values => {\r\n // clear budget selection when funding type is changed to an incompatible value\r\n // for example, if an external budget is selected, and funding type is changed to internal - budget should be reset\r\n if (\r\n (value as Entity | null)?.Id !==\r\n (values.Budget as IBudgetFilterDto)\r\n ?.FundingTypeId\r\n ) {\r\n values.Budget = null;\r\n }\r\n values.FundingType = value;\r\n }),\r\n );\r\n }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {connectedSettings.budgetVisible && (\r\n \r\n setBudgetChanged(true)}\r\n disabled={\r\n connectedSettings.budgetInputDisabled ||\r\n inputsDisabled\r\n }\r\n info={budgetPickerInfo}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {connectedSettings.budgetExpirementVisible &&\r\n formik.values.Budget !== null &&\r\n formik.values.Budget?.HideExperiments !== true && (\r\n \r\n setBudgetExpirementChanged(true)}\r\n disabled={inputsDisabled}\r\n username={\r\n formik.values.User?.Id ?? authenticatedUser?.Id\r\n }\r\n />\r\n \r\n )}\r\n {globalSettings.purchaseOrderBudgetEnabled &&\r\n ((formik.values.Budget as IBudgetFilterDto)\r\n ?.PurchaseOrderOptionId ??\r\n PurchaseOrderOptions.Hidden) !==\r\n PurchaseOrderOptions.Hidden && (\r\n \r\n \r\n \r\n )}\r\n \r\n setStartTimeChanged(true)}\r\n disabled={inputsDisabled}\r\n />\r\n \r\n {connectedSettings.endTimeVisible && (\r\n \r\n setEndTimeChanged(true)}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {connectedSettings.userGroupVisible ? (\r\n \r\n setUserGroupChanged(true)}\r\n fullWidth\r\n />\r\n \r\n ) : (\r\n \r\n \r\n {formik.values.UserGroup !== undefined &&\r\n formik.values.UserGroup !== null\r\n ? formik.values.UserGroup.Name\r\n : (t(translations.NA) as string)}\r\n \r\n }\r\n />\r\n \r\n )}\r\n {connectedSettings.userVisible ? (\r\n \r\n setUserChanged(true)}\r\n fullWidth\r\n />\r\n \r\n ) : (\r\n \r\n \r\n {formik.values.User !== null &&\r\n formik.values.User !== undefined\r\n ? formik.values.User.Name\r\n : (t(translations.NA) as string)}\r\n \r\n }\r\n />\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n setStartTimeChanged(true)}\r\n disabled={inputsDisabled}\r\n />\r\n \r\n {connectedSettings.endTimeVisible && (\r\n \r\n setEndTimeChanged(true)}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {connectedSettings.userGroupVisible ? (\r\n \r\n setUserGroupChanged(true)}\r\n fullWidth\r\n />\r\n \r\n ) : (\r\n \r\n \r\n {formik.values.UserGroup !== undefined &&\r\n formik.values.UserGroup !== null\r\n ? formik.values.UserGroup.Name\r\n : (t(translations.NA) as string)}\r\n \r\n }\r\n />\r\n \r\n )}\r\n {connectedSettings.userVisible ? (\r\n \r\n setUserChanged(true)}\r\n fullWidth\r\n />\r\n \r\n ) : (\r\n \r\n \r\n {formik.values.User !== null &&\r\n formik.values.User !== undefined\r\n ? formik.values.User.Name\r\n : (t(translations.NA) as string)}\r\n \r\n }\r\n />\r\n \r\n )}\r\n {connectedSettings.fundingTypeVisible && (\r\n \r\n {\r\n formik.setValues(\r\n produce(values => {\r\n // clear budget selection when funding type is changed to an incompatible value\r\n // for example, if an external budget is selected, and funding type is changed to internal - budget should be reset\r\n if (\r\n (value as Entity | null)?.Id !==\r\n (values.Budget as IBudgetFilterDto)\r\n ?.FundingTypeId\r\n ) {\r\n values.Budget = null;\r\n }\r\n values.FundingType = value;\r\n }),\r\n );\r\n }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {connectedSettings.budgetVisible && (\r\n \r\n setBudgetChanged(true)}\r\n disabled={\r\n inputsDisabled ||\r\n connectedSettings.budgetInputDisabled\r\n }\r\n useSearchOrPredicate={\r\n globalSettings.hideNonDefaultBudgets\r\n }\r\n info={budgetPickerInfo}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {connectedSettings.budgetExpirementVisible &&\r\n formik.values.Budget !== null &&\r\n formik.values.Budget?.HideExperiments !== true && (\r\n \r\n setBudgetExpirementChanged(true)}\r\n disabled={inputsDisabled}\r\n username={\r\n formik.values.User?.Id ?? authenticatedUser?.Id\r\n }\r\n />\r\n \r\n )}\r\n {globalSettings.purchaseOrderBudgetEnabled &&\r\n ((formik.values.Budget as IBudgetFilterDto)\r\n ?.PurchaseOrderOptionId ??\r\n PurchaseOrderOptions.Hidden) !==\r\n PurchaseOrderOptions.Hidden && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n}\r\n","import { Portal } from '@material-ui/core';\r\nimport { Skeleton } from '@material-ui/lab';\r\nimport { IServiceTypeFilterDto } from 'api/odata/generated/entities/IServiceTypeFilterDto';\r\nimport { GlobalSettingsType } from 'app/pages/ReservationDetails/Details/components/useGlobalSettingsHook';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { Fragment, MutableRefObject, useCallback, useRef } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { IConnectedFiltersDto } from 'types/IConnectedFiltersDto';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { ConnectedFiltersForm } from '.';\r\nimport { ChildEntityProps } from '../../../../types/ChildEntityProps';\r\nimport { useConnectedFiltersSlice } from './slice';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\nimport { ReportedFrom } from 'app/pages/OtherServiceDetails/Details/slice/types';\r\n\r\nexport interface ConnectedFiltersControlProps extends ChildEntityProps {\r\n initialState?: IConnectedFiltersDto;\r\n saveConnectedFilters?: (values: IConnectedFiltersDto) => void;\r\n submitFormRef: MutableRefObject;\r\n isEdit: boolean;\r\n serviceTypeEnum?: ServiceType;\r\n serviceTypes: IServiceTypeFilterDto[];\r\n formIsValid?: (isValid: boolean) => void;\r\n globalSettings: GlobalSettingsType;\r\n startTimeLabel?: string;\r\n endTimeLabel?: string;\r\n startLabelInline?: boolean;\r\n endLabelInline?: boolean;\r\n orderForConsumables?: boolean;\r\n forceDisabled?: boolean;\r\n budgetPickerInfo?: string;\r\n reportFrom?: ReportedFrom;\r\n}\r\n\r\nexport function ConnectedFiltersControl(\r\n props: ConnectedFiltersControlProps,\r\n): JSX.Element {\r\n //PROPS\r\n const {\r\n initialState,\r\n saveConnectedFilters,\r\n submitFormRef,\r\n isEdit,\r\n isChildEntry,\r\n serviceTypeEnum,\r\n serviceTypes,\r\n formIsValid,\r\n globalSettings,\r\n startTimeLabel,\r\n endTimeLabel,\r\n startLabelInline,\r\n endLabelInline,\r\n orderForConsumables,\r\n forceDisabled,\r\n budgetPickerInfo,\r\n reportFrom,\r\n } = props;\r\n //REDUX\r\n const dispatch = useDispatch();\r\n const { actions } = useConnectedFiltersSlice();\r\n\r\n //REFS\r\n const portalRef = useRef(null);\r\n //BIND\r\n const bindSubmitForm = useCallback(\r\n submitForm => {\r\n submitFormRef.current = submitForm;\r\n },\r\n [submitFormRef],\r\n );\r\n //ON SUBMIT\r\n const handleSubmit = useCallback(\r\n (values: IConnectedFiltersDto) => {\r\n if (saveConnectedFilters) {\r\n saveConnectedFilters(values);\r\n } else {\r\n var d = {\r\n StartTime:\r\n values.StartTime === undefined\r\n ? undefined\r\n : dateUtils.formatISO(\r\n dateUtils.dateOrStringToDate(values.StartTime),\r\n ),\r\n User: values.User,\r\n UserGroup: values.UserGroup,\r\n Budget: values.Budget,\r\n BudgetExperiment: values.BudgetExperiment,\r\n InstituteProject: values.InstituteProject,\r\n EndTime: values.EndTime,\r\n ExternalCustomer: values.ExternalCustomer,\r\n FundingType: values.FundingType,\r\n PurchaseOrder: values.PurchaseOrder,\r\n Reference: values.Reference,\r\n } as IConnectedFiltersDto;\r\n dispatch(actions.saveState(d));\r\n }\r\n },\r\n [actions, dispatch, saveConnectedFilters],\r\n );\r\n\r\n //RENDER\r\n return initialState ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n );\r\n}\r\n","import { IRegionDto } from 'app/pages/Regions/IRegionDto';\r\nimport { IResponseType, IResponseTypeWithId } from 'types/ResponseType';\r\nimport { httpClient } from './HttpClient';\r\n\r\nexport const RegionsApi = {\r\n getRegion: (payload: { id: number }) => {\r\n const url = '/api/odata/v4/Regions';\r\n const params: {\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $filter: '(Id eq ' + payload.id + ')',\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient.get(url, params);\r\n },\r\n getRegions: () => {\r\n const url = '/api/odata/v4/Regions';\r\n const params: {\r\n $select: string;\r\n } = {\r\n $select: 'Id,Name',\r\n };\r\n return httpClient.get(url, params);\r\n },\r\n insertRegion: (data: IRegionDto) => {\r\n const url = '/api/odata/v4/Regions';\r\n return httpClient.post(url, data);\r\n },\r\n updateRegion: (data: IRegionDto, rowId: number) => {\r\n const url = '/api/odata/v4/Regions';\r\n return httpClient.put(\r\n url + '(' + rowId + ')',\r\n data,\r\n );\r\n },\r\n deleteRegion: (Id: number) => {\r\n const url = `/api/odata/v4/Regions/${Id}`;\r\n return httpClient.deleteCustom(url);\r\n },\r\n deleteSelectedRows: (payload: number[]) => {\r\n const url = `/api/odata/v4/Regions/DeleteIds`;\r\n const data = { ids: payload };\r\n return httpClient.post(url, data);\r\n },\r\n};\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { regionsActions as actions } from '.';\r\nimport { appSettingsActions } from 'app/slice';\r\nimport { translations } from 'locales/translations';\r\nimport i18next from 'i18next';\r\nimport { IRegionDto } from 'app/pages/Regions/IRegionDto';\r\nimport { RegionsApi as api } from 'api/RegionsApi';\r\nimport { SnackBarMessageType } from 'app/Layout/FrontendLayout/components/Snackbar/types';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { layoutActions } from 'app/Layout/FrontendLayout/slice';\r\nimport { RegionDetailsProps } from '..';\r\nimport { AxiosError } from 'axios';\r\nimport { IResponseTypeWithId } from 'types/ResponseType';\r\n\r\nfunction* doInitRegion(\r\n action: PayloadAction<{\r\n id: number;\r\n initial?: IRegionDto;\r\n }>,\r\n) {\r\n try {\r\n let data: IRegionDto | undefined = action.payload.initial;\r\n if (data === undefined) {\r\n const result = yield call(api.getRegion, { id: action.payload.id });\r\n console.debug('region result: ', result);\r\n data = result.value[0];\r\n }\r\n yield put(\r\n actions.initRegion_Success({\r\n hasErrors: data === undefined,\r\n data: data ?? { Id: 0, Name: '' },\r\n isEdit: action.payload.id > 0,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n yield put(actions.initRegion_Error(error));\r\n }\r\n}\r\nfunction* doCreateRegion(action: PayloadAction<{ model: IRegionDto }>) {\r\n try {\r\n const result = yield call(api.insertRegion, action.payload.model);\r\n let response = result as IResponseTypeWithId;\r\n let responseErrors = response.ErrorMessages;\r\n let responseWarnings = response.WarningMessages;\r\n let responseSuccess = response.SuccessMessages;\r\n if (responseErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseErrors.map(item => {\r\n return {\r\n key: 'regionInsertError',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (responseSuccess.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'regionInsertSuccess',\r\n message: responseSuccess[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: true,\r\n itemName: i18next.t(translations.Region),\r\n detailsType: RenderPageType.RegionDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n id: '' + response.Id ?? -1,\r\n initialModel: {\r\n Id: response.Id ?? -1,\r\n Name: action.payload.model.Name,\r\n },\r\n } as RegionDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (responseWarnings.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n responseWarnings.map(item => {\r\n return {\r\n key: 'regionInsertWarning',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = responseErrors.length > 0;\r\n yield put(\r\n actions.createRegion_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'regionInsert',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.createRegion_Error(Error));\r\n }\r\n}\r\nfunction* doUpdateRegion(\r\n action: PayloadAction<{\r\n current: IRegionDto;\r\n original: IRegionDto;\r\n }>,\r\n) {\r\n try {\r\n const results = yield call(\r\n api.updateRegion,\r\n action.payload.current,\r\n action.payload.current.Id,\r\n );\r\n let response = results as IResponseTypeWithId;\r\n let respErrors = response.ErrorMessages;\r\n if (respErrors.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n respErrors.map(item => {\r\n return {\r\n key: 'regionUpdateErr',\r\n message: item,\r\n variant: 'error',\r\n };\r\n }),\r\n ),\r\n );\r\n } else {\r\n if (response.SuccessMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'regionUpdateSuccess',\r\n message: response.SuccessMessages[0],\r\n messageType: SnackBarMessageType.openSidepanelDetails,\r\n messageTypeProps: {\r\n Id: response.Id ?? undefined,\r\n created: false,\r\n itemName: i18next.t(translations.Region),\r\n detailsType: RenderPageType.RegionDetails,\r\n detailsTypeProps: {\r\n useSidePanel: true,\r\n queryParams: {\r\n id: '' + response.Id ?? -1,\r\n },\r\n initialModel: action.payload.current,\r\n } as RegionDetailsProps,\r\n },\r\n variant: 'success',\r\n }),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n yield put(\r\n appSettingsActions.addNotifications(\r\n response.WarningMessages.map(item => {\r\n return {\r\n key: 'regionUpdateWarn',\r\n message: item,\r\n variant: 'warning',\r\n };\r\n }),\r\n ),\r\n );\r\n }\r\n yield put(layoutActions.setRefreshTable(true));\r\n }\r\n let hasErrors = response.ErrorMessages.length > 0;\r\n yield put(\r\n actions.updateRegion_Success({\r\n hasErrors: hasErrors,\r\n }),\r\n );\r\n } catch (error: unknown) {\r\n const message =\r\n (error as AxiosError)?.response?.data?.error?.innererror?.message ??\r\n ((error as AxiosError)?.response?.status === 403\r\n ? i18next.t(translations.Forbidden)\r\n : undefined) ??\r\n i18next.t(translations.errormessage);\r\n yield put(\r\n appSettingsActions.addNotification({\r\n key: 'regionUpdateErr',\r\n message: message,\r\n variant: 'error',\r\n }),\r\n );\r\n yield put(actions.updateRegion_Error(Error));\r\n }\r\n}\r\n\r\nexport function* regionsSaga() {\r\n yield takeLatest(actions.initRegion.type, doInitRegion);\r\n yield takeLatest(actions.createRegion.type, doCreateRegion);\r\n yield takeLatest(actions.updateRegion.type, doUpdateRegion);\r\n}\r\n","import { PayloadAction } from '@reduxjs/toolkit';\r\nimport { IRegionDto } from 'app/pages/Regions/IRegionDto';\r\nimport { createSlice } from 'utils/@reduxjs/toolkit';\r\nimport { useInjectReducer, useInjectSaga } from 'utils/redux-injectors';\r\nimport { regionsSaga } from './saga';\r\nimport { RegionsState } from './types';\r\n\r\nexport const initialState: RegionsState = {\r\n detailsState: {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n error: undefined,\r\n },\r\n processing: false,\r\n isEdit: undefined,\r\n};\r\n\r\nconst slice = createSlice({\r\n name: 'regions',\r\n initialState,\r\n reducers: {\r\n initRegion(\r\n state,\r\n action: PayloadAction<{\r\n id: number;\r\n initial?: IRegionDto;\r\n }>,\r\n ) {\r\n state.processing = true;\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n },\r\n initRegion_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n data: IRegionDto;\r\n isEdit: boolean;\r\n }>,\r\n ) {\r\n state.processing = false;\r\n state.detailsState.data = action.payload.data;\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.isEdit = action.payload.isEdit;\r\n },\r\n initRegion_Error(state, action: PayloadAction) {\r\n state.processing = false;\r\n },\r\n resetRegionState(state, action: PayloadAction) {\r\n state.detailsState = {\r\n data: undefined,\r\n processing: undefined,\r\n completed: undefined,\r\n hasErrors: undefined,\r\n };\r\n state.processing = false;\r\n },\r\n createRegion(\r\n state,\r\n action: PayloadAction<{\r\n model: IRegionDto;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n createRegion_Success(state, action: PayloadAction<{ hasErrors: boolean }>) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n },\r\n createRegion_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n updateRegion(\r\n state,\r\n action: PayloadAction<{\r\n current: IRegionDto;\r\n original: IRegionDto;\r\n }>,\r\n ) {\r\n state.detailsState.processing = true;\r\n state.detailsState.completed = undefined;\r\n state.detailsState.hasErrors = undefined;\r\n },\r\n updateRegion_Success(\r\n state,\r\n action: PayloadAction<{\r\n hasErrors: boolean;\r\n }>,\r\n ) {\r\n state.detailsState.processing = false;\r\n state.detailsState.hasErrors = action.payload.hasErrors;\r\n state.detailsState.completed = true;\r\n },\r\n updateRegion_Error(state, action: PayloadAction) {\r\n state.detailsState.processing = false;\r\n state.detailsState.completed = true;\r\n state.detailsState.hasErrors = true;\r\n },\r\n },\r\n});\r\n\r\nexport const { actions: regionsActions } = slice;\r\n\r\nexport const useRegionsSlice = () => {\r\n useInjectReducer({ key: slice.name, reducer: slice.reducer });\r\n useInjectSaga({ key: slice.name, saga: regionsSaga });\r\n return { actions: slice.actions };\r\n};\r\n\r\n/**\r\n * Example Usage:\r\n *\r\n * export function MyComponentNeedingThisSlice() {\r\n * const { actions } = useRegionsSlice();\r\n *\r\n * const onButtonClick = (evt) => {\r\n * dispatch(actions.someAction());\r\n * };\r\n * }\r\n */\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.regions || initialState;\r\n\r\nexport const selectRegions = createSelector([selectSlice], state => state);\r\n\r\nexport const selectRegionsProcessing = createSelector(\r\n [selectRegions],\r\n state => state.processing,\r\n);\r\n\r\nexport const selectDataProcessing = createSelector(\r\n [selectRegions],\r\n state => state.detailsState.processing,\r\n);\r\n\r\nexport const selectRegionsData = createSelector(\r\n [selectRegions],\r\n state => state.detailsState.data,\r\n);\r\nexport const selectRegionsHasErrors = createSelector(\r\n [selectRegions],\r\n state => state.detailsState.hasErrors,\r\n);\r\nexport const selectDetailsCompleted = createSelector(\r\n [selectRegions],\r\n state => state.detailsState.completed,\r\n);\r\n","import { Box } from '@material-ui/core';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { Progress } from 'app/components/LoadingIndicator';\r\nimport {\r\n CoverProps,\r\n PageWrapper,\r\n} from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { ActionRenderer } from 'app/Layout/FrontendLayout/components/PageWrapper/PageActions/ActionRender';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport {\r\n selectConfirmApproved,\r\n selectConfirmRejected,\r\n selectContinueState,\r\n selectContinueToLink,\r\n} from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { selectPublicUrl } from 'app/slice/selectors';\r\nimport { push } from 'connected-react-router';\r\nimport { Formik, FormikProps } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { buildURL, toQueryString } from 'utils/url-utils';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { SidePanelContentProps } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { IRegionDto } from '../../IRegionDto';\r\nimport { useRegionsSlice } from './slice';\r\nimport {\r\n selectDetailsCompleted,\r\n selectRegionsData,\r\n selectRegionsHasErrors,\r\n selectRegionsProcessing,\r\n} from './slice/selectors';\r\nimport { tryParseInt } from 'utils/string-utils';\r\nimport { isEmpty } from 'lodash';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport * as Yup from 'yup';\r\n\r\nexport interface RegionDetailsProps extends CoverProps, SidePanelContentProps {\r\n id?: string;\r\n initialModel?: IRegionDto;\r\n onClose?: () => void;\r\n}\r\n\r\nexport const RegionDetails = React.memo(function RegionDetails(\r\n props: RegionDetailsProps,\r\n) {\r\n const { useSidePanel, id, initialModel, onClose } = props;\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useRegionsSlice();\r\n const { actions: layoutActions } = useLayoutSlice();\r\n const { actions: appSettingsActions } = useAppSettingsSlice();\r\n\r\n /// Selectors ///\r\n const processing = useSelector(selectRegionsProcessing);\r\n const regionData = useSelector(selectRegionsData);\r\n const continueLink = useSelector(selectContinueToLink);\r\n const confirmApproved = useSelector(selectConfirmApproved);\r\n const confirmRejected = useSelector(selectConfirmRejected);\r\n const continueToOther = useSelector(selectContinueState);\r\n const publicUrl = useSelector(selectPublicUrl);\r\n const actionCompleted = useSelector(selectDetailsCompleted);\r\n const hasError = useSelector(selectRegionsHasErrors);\r\n /// Refs ///\r\n const submitFormRef = React.useRef(null);\r\n const innerFormRef = React.useRef>(null);\r\n //cover\r\n const [cover, setCover] = React.useState();\r\n const [firstLoad, setFirstLoad] = React.useState(true);\r\n const [busy, setBusy] = React.useState(false);\r\n const [edit, setEdit] = React.useState(false);\r\n\r\n const [requestCompleted, setRequestCompleted] = React.useState<\r\n boolean | undefined\r\n >(undefined);\r\n\r\n React.useEffect(() => {\r\n let active = firstLoad;\r\n if (active) {\r\n setFirstLoad(false);\r\n dispatch(\r\n actions.initRegion({\r\n id: tryParseInt(id) ?? -1,\r\n initial: initialModel,\r\n }),\r\n );\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [actions, dispatch, firstLoad, initialModel, id]);\r\n /// functions, callbacks ///\r\n const closeCover = () => {\r\n setCover(undefined);\r\n };\r\n const handleClose = () => {\r\n handleCloselClick();\r\n };\r\n const handleCloselClick = React.useCallback(() => {\r\n if (!!onClose) {\r\n onClose();\r\n } else {\r\n if (useSidePanel) {\r\n dispatch(layoutActions.resetSidePanel());\r\n } else {\r\n dispatch(push('/Regions'));\r\n }\r\n }\r\n dispatch(actions.resetRegionState());\r\n }, [actions, dispatch, layoutActions, onClose, useSidePanel]);\r\n const handleSaveClick = React.useCallback((e: any) => {\r\n handleSubmitForm(e);\r\n }, []);\r\n\r\n const handleSubmitForm = (e: any) => {\r\n if (submitFormRef.current) {\r\n submitFormRef.current(e);\r\n }\r\n };\r\n const bindSubmitForm = React.useCallback(submitForm => {\r\n submitFormRef.current = submitForm;\r\n }, []);\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: IRegionDto) => {\r\n setBusy(true);\r\n if (edit) {\r\n dispatch(\r\n actions.updateRegion({\r\n current: values,\r\n original: regionData || values,\r\n }),\r\n );\r\n } else {\r\n dispatch(actions.createRegion({ model: values }));\r\n }\r\n },\r\n [actions, dispatch, edit, regionData],\r\n );\r\n /// Use Effects ///\r\n React.useEffect(() => {\r\n let active = processing === false;\r\n if (active) {\r\n if (id !== undefined && !isNaN(parseInt(id))) {\r\n setEdit(true);\r\n } else {\r\n setEdit(false);\r\n }\r\n if (actionCompleted === true) {\r\n setRequestCompleted(true);\r\n setBusy(false);\r\n if (!hasError) {\r\n handleCloselClick();\r\n }\r\n } else if (actionCompleted === false) {\r\n setRequestCompleted(undefined);\r\n setBusy(false);\r\n }\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [actionCompleted, handleCloselClick, hasError, processing, id]);\r\n React.useEffect(() => {\r\n if (confirmApproved) {\r\n dispatch(actions.resetRegionState());\r\n if (continueToOther.continueOnApprove) {\r\n dispatch(layoutActions.resetSidePanel());\r\n setTimeout(() => {\r\n dispatch(\r\n layoutActions.openSidePanel({\r\n type: continueToOther.pageType,\r\n props: continueToOther.pageProps,\r\n expanded: continueToOther.expanded,\r\n }),\r\n );\r\n dispatch(layoutActions.resetContinueState());\r\n }, 200);\r\n } else if (continueLink !== undefined) {\r\n dispatch(appSettingsActions.navigate(continueLink));\r\n dispatch(layoutActions.resetSidePanel());\r\n } else {\r\n dispatch(layoutActions.resetSidePanel());\r\n }\r\n //dispatch(actions.setChangedState(false));\r\n }\r\n if (confirmRejected) {\r\n dispatch(layoutActions.resetConfirmState());\r\n }\r\n\r\n return () => undefined;\r\n }, [\r\n actions,\r\n appSettingsActions,\r\n confirmApproved,\r\n confirmRejected,\r\n continueLink,\r\n continueToOther,\r\n dispatch,\r\n edit,\r\n layoutActions,\r\n ]);\r\n const regionSchema: Yup.SchemaOf = Yup.object({\r\n Id: Yup.number().notRequired().default(-1),\r\n Name: Yup.string().required(t(translations.RegionNameIsRequired)),\r\n });\r\n const leftActions = React.useMemo(() => {\r\n let actions: ActionRenderer[] = [];\r\n actions.push(() => (\r\n }\r\n onClick={handleSaveClick}\r\n disabled={busy}\r\n processing={!requestCompleted && busy}\r\n >\r\n {t(translations.Save)}\r\n \r\n ));\r\n return actions;\r\n }, [busy, handleSaveClick, requestCompleted, t]);\r\n const rightActions = React.useMemo(() => {\r\n return [\r\n () => (\r\n \r\n }\r\n onClick={handleCloselClick}\r\n >\r\n {t(translations.Close)}\r\n \r\n \r\n ),\r\n ] as ActionRenderer[];\r\n }, [handleCloselClick, t]);\r\n return (\r\n \r\n {\r\n // call setSubmit to finish submit cycle\r\n formikHelpers.validateForm(values).then(responseErrors => {\r\n if (!isEmpty(responseErrors)) {\r\n formikHelpers.setSubmitting(false);\r\n console.debug('errors', responseErrors);\r\n } else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n handleSubmit(values);\r\n }\r\n });\r\n }}\r\n >\r\n {formik => {\r\n bindSubmitForm(formik.submitForm);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n ) : (\r\n \r\n {' '}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n pageLink={buildURL(publicUrl + 'regions/details', { id: id })}\r\n toPageLink={`regions/details?${toQueryString({ id: id })}`}\r\n rightActions={rightActions}\r\n isCover={props.isCover}\r\n cover={cover}\r\n closeCover={props.closeCover || closeCover}\r\n />\r\n \r\n );\r\n});\r\n","/**\r\n *\r\n * PriorityPicker\r\n *\r\n */\r\n\r\nimport {\r\n ServiceRequestMilestoneStatusesUnionArray,\r\n ServiceRequestMilestoneStatusesUnion,\r\n} from 'api/odata/generated/enums/ServiceRequestMilestoneStatuses';\r\nimport {\r\n EnumPicker,\r\n EnumPickerProps,\r\n withEnumOptions,\r\n} from 'app/components/BasicPickers/EnumPicker';\r\n\r\nexport type ServiceRequestMilestoneStatusPickerProps = Omit<\r\n EnumPickerProps,\r\n 'EnumNamesArray'\r\n>;\r\nexport const ServiceRequestMilestoneStatusPicker =\r\n withEnumOptions(\r\n ServiceRequestMilestoneStatusesUnionArray,\r\n )(EnumPicker);\r\n","/**\r\n *\r\n * FormServiceRequestMilestoneStatusPicker\r\n *\r\n */\r\n\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport {\r\n ServiceRequestMilestoneStatusPicker,\r\n ServiceRequestMilestoneStatusPickerProps,\r\n} from '../pickers/StaticOptionsPickers/ServiceRequestMilestoneStatusPicker';\r\nimport { ServiceRequestMilestoneStatusesUnion } from 'api/odata/generated/enums/ServiceRequestMilestoneStatuses';\r\n\r\nexport const FormServiceRequestMilestoneStatusPicker = ({\r\n label,\r\n ...props\r\n}: FieldHookConfig &\r\n Omit &\r\n Pick) => {\r\n const [field, meta, helpers] =\r\n useField(props);\r\n return (\r\n <>\r\n {\r\n helpers.setValue(value, true);\r\n if (props.onChange) {\r\n props.onChange(value);\r\n }\r\n }}\r\n info={props.info}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n error={meta?.error !== undefined}\r\n helperText={meta.error}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n};\r\n","import { PageWrapper } from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { Formik } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as Yup from 'yup';\r\nimport { IServiceRequestMilestoneForm } from '../../RequestSamplesPage/slice/types';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useRequestSamplesSlice } from '../../RequestSamplesPage/slice';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IServiceRequestMilestoneDto } from 'api/odata/generated/entities/IServiceRequestMilestoneDto';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { ServiceRequestMilestoneStatusesUnion } from 'api/odata/generated/enums/ServiceRequestMilestoneStatuses';\r\nimport { ServiceRequestMilestoneStatusesUnionArray } from 'api/odata/generated/enums/ServiceRequestMilestoneStatuses';\r\nimport { FormUsersPicker } from 'app/components/Forms/FormUsersPicker';\r\nimport { FormServiceRequestMilestoneStatusPicker } from 'app/components/Forms/FormServiceRequestMilestoneStatusPicker';\r\nimport { selectServiceRequestMilestoneProcessing } from '../../RequestSamplesPage/slice/selectors';\r\nimport { FormBookitDatePicker } from 'app/components/Forms/FormBookitDatePicker';\r\n\r\nexport interface ServiceRequestMilestoneDetailsProps {\r\n serviceRequestId: number;\r\n type: 'Insert' | 'Update';\r\n value?: IServiceRequestMilestoneDto;\r\n}\r\n\r\nexport function ServiceRequestMilestoneDetails(\r\n props: ServiceRequestMilestoneDetailsProps,\r\n) {\r\n const { t } = useTranslation();\r\n const submitRef = React.useRef<(() => Promise) | undefined>();\r\n const dispatch = useDispatch();\r\n const { actions } = useRequestSamplesSlice();\r\n const processing = useSelector(selectServiceRequestMilestoneProcessing);\r\n\r\n const formType =\r\n props.value?.Id !== undefined && props.value.Id > 0 ? 'Update' : 'Insert';\r\n const insert = React.useCallback(\r\n (value: IServiceRequestMilestoneForm) => {\r\n dispatch(\r\n actions.insertMilestone({\r\n ...toDto(value),\r\n ...{ ServiceRequestId: props.serviceRequestId },\r\n }),\r\n );\r\n },\r\n\r\n [actions, dispatch, props.serviceRequestId],\r\n );\r\n const updateCharge = React.useCallback(\r\n (value: IServiceRequestMilestoneForm) => {\r\n dispatch(\r\n actions.updateMilestone({\r\n ...toDto(value),\r\n ...{ ServiceRequestId: props.serviceRequestId },\r\n }),\r\n );\r\n },\r\n\r\n [actions, dispatch, props.serviceRequestId],\r\n );\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: IServiceRequestMilestoneForm) => {\r\n switch (formType) {\r\n case 'Insert':\r\n insert(values);\r\n break;\r\n case 'Update':\r\n updateCharge(values);\r\n break;\r\n }\r\n },\r\n [formType, insert, updateCharge],\r\n );\r\n const handleSubmitButtonClick = () => {\r\n submitRef.current?.();\r\n };\r\n const initialValues = toInitialValues(props.value);\r\n const title =\r\n props.type === 'Insert'\r\n ? t(translations.AddMilestone)\r\n : t(translations.Milestone);\r\n const handleClose = () => dispatch(actions.closeSidePanel());\r\n return (\r\n (\r\n }\r\n processing={processing}\r\n >\r\n {t(translations.Submit)}\r\n \r\n ),\r\n ]}\r\n rightActions={[\r\n () => (\r\n dispatch(actions.closeSidePanel())}\r\n size=\"small\"\r\n startIcon={}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n ),\r\n ]}\r\n >\r\n \r\n {formik => {\r\n submitRef.current = formik.submitForm;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {\r\n const currentStatus = formik.values.Status;\r\n const newStatus:\r\n | ServiceRequestMilestoneStatusesUnion\r\n | undefined =\r\n value !== null\r\n ? 'Completed'\r\n : currentStatus === 'Completed'\r\n ? 'NotStarted'\r\n : currentStatus;\r\n formik.setFieldValue('Status', newStatus);\r\n }}\r\n fullWidth\r\n />\r\n \r\n \r\n {\r\n switch (value) {\r\n case 'Completed':\r\n if (\r\n formik.values.CompletionDate === null ||\r\n formik.values.CompletionDate === undefined\r\n ) {\r\n formik.setFieldValue(\r\n 'CompletionDate',\r\n new Date(),\r\n );\r\n }\r\n break;\r\n case 'NotStarted':\r\n case 'Started':\r\n formik.setFieldValue('CompletionDate', null);\r\n break;\r\n }\r\n }}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n}\r\n\r\nconst serviceRequestMilestoneSchema: Yup.SchemaOf =\r\n Yup.object({\r\n Assignees: Yup.mixed().optional(),\r\n CompletionDate: Yup.date().optional().nullable(),\r\n Id: Yup.number().optional(),\r\n Name: Yup.string().required(),\r\n Status: Yup.string()\r\n .oneOf(ServiceRequestMilestoneStatusesUnionArray)\r\n .optional() as Yup.SchemaOf,\r\n TargetDate: Yup.date().optional().nullable(),\r\n Description: Yup.string().optional(),\r\n });\r\n\r\nconst toDto = (\r\n value: IServiceRequestMilestoneForm,\r\n): Partial &\r\n Pick => {\r\n return {\r\n Id: value.Id,\r\n Charged: false,\r\n CompletionDate:\r\n value.CompletionDate === null\r\n ? undefined\r\n : value.CompletionDate === undefined\r\n ? undefined\r\n : dateUtils.formatISO(value.CompletionDate),\r\n Description: value.Description,\r\n Name: value.Name ?? null,\r\n Status: value.Status,\r\n TargetDate:\r\n value.TargetDate === null\r\n ? null\r\n : value.TargetDate === undefined\r\n ? null\r\n : dateUtils.formatISO(value.TargetDate),\r\n Assignees: value.Assignees,\r\n };\r\n};\r\nconst toInitialValues = (\r\n value?: IServiceRequestMilestoneDto,\r\n): IServiceRequestMilestoneForm => {\r\n if (value === undefined) {\r\n return {\r\n TargetDate: null,\r\n CompletionDate: null,\r\n };\r\n }\r\n\r\n const result: IServiceRequestMilestoneForm = {\r\n Id: value.Id,\r\n Assignees: value.Assignees,\r\n CompletionDate:\r\n value.CompletionDate === null\r\n ? null\r\n : dateUtils.parseISO(value.CompletionDate),\r\n Description: value.Description ?? undefined,\r\n Name: value.Name ?? undefined,\r\n Status: value.Status ?? undefined,\r\n TargetDate:\r\n value.TargetDate === null\r\n ? null\r\n : dateUtils.parseISO(value.TargetDate) ?? undefined,\r\n };\r\n return result;\r\n};\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n UnitType,\r\n UnitTypePicker,\r\n UnitTypePickerProps,\r\n} from '../pickers/AutocompletePickers/UnitTypePicker';\r\n\r\nexport const FormUnitTypeTypePicker = (\r\n props: FieldHookConfig &\r\n Omit,\r\n) => {\r\n const [field, meta, helpers] = useField(props);\r\n const handleChange = val => {\r\n props.onChange?.(val);\r\n helpers.setValue(val, true);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport {\r\n BaseURLPicker,\r\n BaseURLPickerProps,\r\n} from '../BasicPickers/BaseURLPicker';\r\nimport { Entity } from 'types/common';\r\n\r\nexport const FormServiceRequestMilestoneChargeServicePicker = ({\r\n serviceRequestId,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n Omit>, 'onChange' | 'url'> & {\r\n serviceRequestId: number;\r\n }) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n const handleChange = val => {\r\n props.onChange?.(val);\r\n helpers.setValue(val, true);\r\n };\r\n const url = `/api/odata/v4/ServiceRequests/${serviceRequestId}/ConsumableServices`;\r\n return (\r\n \r\n );\r\n};\r\n","import { PageWrapper } from 'app/Layout/FrontendLayout/components/PageWrapper';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { FormNumberField } from 'app/components/Forms/FormNumberField';\r\nimport { FormRichTextField } from 'app/components/Forms/FormRichTextField';\r\nimport {\r\n FormFieldsSection,\r\n FormLeftSection,\r\n FormRow,\r\n StyledForm,\r\n} from 'app/components/Forms/FormsLayout';\r\nimport { Formik, FormikProps } from 'formik';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport * as Yup from 'yup';\r\nimport { IServiceRequestMilestoneChargeForm } from '../../RequestSamplesPage/slice/types';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useRequestSamplesSlice } from '../../RequestSamplesPage/slice';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IServiceRequestMilestoneChargeDto } from 'api/odata/generated/entities/IServiceRequestMilestoneChargeDto';\r\nimport { FormTextField } from 'app/components/Forms/FormTextField';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { FormUnitTypeTypePicker } from 'app/components/Forms/FormUnitTypePicker';\r\nimport { selectServiceRequestMilestoneProcessing } from '../../RequestSamplesPage/slice/selectors';\r\nimport { FormServiceRequestMilestoneChargeServicePicker } from 'app/components/Forms/FormServiceRequestMilestoneChargeServicePicker';\r\nimport { FormBookitDatePicker } from 'app/components/Forms/FormBookitDatePicker';\r\nimport {\r\n getUnitTypesData,\r\n UnitType,\r\n} from 'app/components/pickers/AutocompletePickers/UnitTypePicker';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\n\r\nexport type ServiceRequestMilestoneChargeType = 'service' | 'charge';\r\nexport interface ServiceRequestMilestoneChargeDetailsProps {\r\n serviceRequestMilestoneId: number;\r\n serviceRequestId: number;\r\n type: ServiceRequestMilestoneChargeType;\r\n enableAddonCharge: boolean;\r\n enableManualCharge: boolean;\r\n value?: IServiceRequestMilestoneChargeDto;\r\n unitType?: Entity;\r\n}\r\nexport function ServiceRequestMilestoneChargeDetails(\r\n props: ServiceRequestMilestoneChargeDetailsProps,\r\n) {\r\n const { t } = useTranslation();\r\n const innerFormRef =\r\n React.useRef | null>(null);\r\n const submitRef = React.useRef<(() => Promise) | undefined>();\r\n const dispatch = useDispatch();\r\n const { actions } = useRequestSamplesSlice();\r\n const processing = useSelector(selectServiceRequestMilestoneProcessing);\r\n const formType = React.useMemo(() => {\r\n return props.value?.Id !== undefined && props.value.Id > 0\r\n ? 'Update'\r\n : 'Insert';\r\n }, [props.value?.Id]);\r\n\r\n const title = React.useMemo(() => {\r\n return formType === 'Insert'\r\n ? props.type === 'charge'\r\n ? t(translations.AddManualCharge)\r\n : t(translations.AddService)\r\n : props.type === 'charge'\r\n ? t(translations.Charge)\r\n : t(translations.Service);\r\n }, [formType, props.type, t]);\r\n\r\n const insertCharge = React.useCallback(\r\n (value: IServiceRequestMilestoneChargeForm) => {\r\n if (value.Type === 'service' && value.Service === undefined) {\r\n return;\r\n }\r\n\r\n switch (value.Type) {\r\n case 'service':\r\n dispatch(\r\n actions.insertMilestoneCharge({\r\n OfflineServiceType: value.Service, // value.Service?.Id,\r\n Quantity: value.Quantity,\r\n Remarks: value.Remarks,\r\n ServiceRequestId: props.serviceRequestId,\r\n ServiceRequestMilestoneId: props.serviceRequestMilestoneId,\r\n Date:\r\n value.Date === null\r\n ? undefined\r\n : value.Date === undefined\r\n ? undefined\r\n : dateUtils.formatISO(value.Date),\r\n }),\r\n );\r\n break;\r\n case 'charge':\r\n dispatch(\r\n actions.insertMilestoneCharge({\r\n Quantity: value.Quantity,\r\n Rate: value.Rate,\r\n Remarks: value.Remarks,\r\n ServiceRequestId: props.serviceRequestId,\r\n ServiceRequestMilestoneId: props.serviceRequestMilestoneId,\r\n Date:\r\n value.Date === null\r\n ? undefined\r\n : value.Date === undefined\r\n ? undefined\r\n : dateUtils.formatISO(value.Date),\r\n // Id: props.value?.Id,\r\n Name: value.Name,\r\n Unit: value.Unit,\r\n }),\r\n );\r\n break;\r\n }\r\n },\r\n\r\n [\r\n actions,\r\n dispatch,\r\n props.serviceRequestId,\r\n props.serviceRequestMilestoneId,\r\n ],\r\n );\r\n const updateCharge = React.useCallback(\r\n (value: IServiceRequestMilestoneChargeForm) => {\r\n if (props.value?.Id === undefined) {\r\n return;\r\n }\r\n switch (value.Type) {\r\n case 'service':\r\n dispatch(\r\n actions.updateMilestoneCharge({\r\n Id: props.value?.Id,\r\n OfflineServiceType: value.Service, // value.Service?.Id,\r\n Quantity: value.Quantity,\r\n Remarks: value.Remarks,\r\n ServiceRequestId: props.serviceRequestId,\r\n ServiceRequestMilestoneId: props.serviceRequestMilestoneId,\r\n Date:\r\n value.Date === null\r\n ? undefined\r\n : value.Date === undefined\r\n ? undefined\r\n : dateUtils.formatISO(value.Date),\r\n }),\r\n );\r\n break;\r\n case 'charge':\r\n dispatch(\r\n actions.updateMilestoneCharge({\r\n Id: props.value?.Id,\r\n Quantity: value.Quantity,\r\n Rate: value.Rate,\r\n Remarks: value.Remarks,\r\n ServiceRequestId: props.serviceRequestId,\r\n ServiceRequestMilestoneId: props.serviceRequestMilestoneId,\r\n Date:\r\n value.Date === null\r\n ? undefined\r\n : value.Date === undefined\r\n ? undefined\r\n : dateUtils.formatISO(value.Date),\r\n // Id: props.value?.Id,\r\n Name: value.Name,\r\n Unit: value.Unit,\r\n }),\r\n );\r\n break;\r\n }\r\n },\r\n\r\n [\r\n actions,\r\n dispatch,\r\n props.serviceRequestId,\r\n props.serviceRequestMilestoneId,\r\n props.value?.Id,\r\n ],\r\n );\r\n\r\n const handleSubmit = React.useCallback(\r\n (values: IServiceRequestMilestoneChargeForm) => {\r\n switch (formType) {\r\n case 'Insert':\r\n insertCharge(values);\r\n break;\r\n case 'Update':\r\n updateCharge(values);\r\n break;\r\n }\r\n },\r\n [formType, insertCharge, updateCharge],\r\n );\r\n\r\n const initialValues = React.useMemo(() => {\r\n return toInitialValues(props.type, props.value);\r\n }, [props.type, props.value]);\r\n\r\n //USE EFFECT ON MOUNT\r\n useEffectOnMount(() => {\r\n let mounted = true;\r\n (async () => {\r\n try {\r\n //According to https://prog4biz.atlassian.net/browse/BKT-10663\r\n if (!!props.unitType) {\r\n if (mounted) {\r\n innerFormRef.current?.setFieldValue(\r\n 'Unit',\r\n props.unitType as UnitType,\r\n );\r\n }\r\n } else {\r\n const initUnitTypeValue: UnitType = await getUnitTypesData().then(\r\n resp => resp.filter(u => u.Name === 'Unit')[0] ?? null,\r\n );\r\n if (mounted) {\r\n innerFormRef.current?.setFieldValue('Unit', initUnitTypeValue);\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n })();\r\n return () => {\r\n mounted = false;\r\n };\r\n });\r\n\r\n return (\r\n \r\n (\r\n {\r\n submitRef.current?.();\r\n }}\r\n size=\"small\"\r\n processing={processing}\r\n startIcon={}\r\n >\r\n {t(translations.Submit)}\r\n \r\n ),\r\n ]}\r\n closeCover={() => dispatch(actions.closeSidePanel())}\r\n closeSidePanel={() => dispatch(actions.closeSidePanel)}\r\n rightActions={[\r\n () => (\r\n dispatch(actions.closeSidePanel())}\r\n size=\"small\"\r\n startIcon={}\r\n >\r\n {t(translations.Cancel)}\r\n \r\n ),\r\n ]}\r\n >\r\n \r\n {formik => {\r\n submitRef.current = formik.submitForm;\r\n if (!formik.isValid) {\r\n console.debug('form errors', formik.errors);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {formik.values.Type === 'charge' && (\r\n \r\n \r\n \r\n )}\r\n {formik.values.Type === 'charge' && (\r\n \r\n \r\n \r\n )}\r\n \r\n {\r\n formik.setFieldValue('Date', value);\r\n }}\r\n />\r\n \r\n {/* todo: filter out the consumable services */}\r\n {formik.values.Type === 'service' && (\r\n \r\n \r\n \r\n )}\r\n {formik.values.Type === 'charge' && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst addServiceSchema: Yup.SchemaOf =\r\n Yup.object({\r\n Id: Yup.number().optional(),\r\n Date: Yup.date().optional().nullable(),\r\n Unit: Yup.mixed().when('Type', {\r\n is: 'charge',\r\n then: Yup.mixed().required(),\r\n }),\r\n Service: Yup.mixed().when('Type', {\r\n is: 'service',\r\n then: Yup.mixed().required(),\r\n }),\r\n Name: Yup.string().when('Type', {\r\n is: 'charge',\r\n then: Yup.string().required(),\r\n }),\r\n Rate: Yup.number().when('Type', {\r\n is: 'charge',\r\n then: Yup.number().required(),\r\n }),\r\n Quantity: Yup.number().positive().required(),\r\n Type: Yup.string()\r\n .oneOf(['charge', 'service'])\r\n .required() as Yup.SchemaOf,\r\n Remarks: Yup.mixed().optional(),\r\n });\r\n\r\nconst toInitialValues = (\r\n type: ServiceRequestMilestoneChargeType,\r\n value?: IServiceRequestMilestoneChargeDto,\r\n) => {\r\n const result: IServiceRequestMilestoneChargeForm =\r\n value === undefined\r\n ? {\r\n Date: null,\r\n }\r\n : {\r\n Id: value.Id,\r\n Service: value.Service ?? undefined,\r\n Quantity: value.Quantity ?? undefined,\r\n Remarks: value.Remarks ?? undefined,\r\n Date: value.Date === null ? null : dateUtils.parseISO(value.Date),\r\n Name: value.Name ?? undefined,\r\n Rate: value.Rate ?? undefined,\r\n Type: type,\r\n Unit: value.UnitType ?? undefined,\r\n };\r\n\r\n result.Type = type;\r\n return result;\r\n};\r\n","import { isEqual } from 'lodash';\r\nimport { Descendant } from 'slate';\r\nimport { jsx } from 'slate-hyperscript';\r\nimport { ParagraphElement } from 'types/Slate';\r\nimport { removeHtml } from 'utils/string-utils';\r\nimport { isEmptyOrWhitespace } from 'utils/typeUtils';\r\n\r\nconst ELEMENT_TAGS = {\r\n A: el => ({ type: 'link', url: el.getAttribute('href') }),\r\n BLOCKQUOTE: () => ({ type: 'quote' }),\r\n H1: () => ({ type: 'heading-one' }),\r\n H2: () => ({ type: 'heading-two' }),\r\n H3: () => ({ type: 'heading-three' }),\r\n H4: () => ({ type: 'heading-four' }),\r\n H5: () => ({ type: 'heading-five' }),\r\n H6: () => ({ type: 'heading-six' }),\r\n IMG: el => ({ type: 'image', url: el.getAttribute('src') }),\r\n LI: () => ({ type: 'list-item' }),\r\n OL: () => ({ type: 'numbered-list' }),\r\n P: () => ({ type: 'paragraph' }),\r\n PRE: () => ({ type: 'code' }),\r\n UL: () => ({ type: 'bulleted-list' }),\r\n MENTION: el => ({\r\n type: 'mention',\r\n user: {\r\n Id: el.getAttribute('id'),\r\n Name: el.getAttribute('name').split('|').join(' '),\r\n },\r\n }),\r\n TABLE: () => ({ type: 'table' }),\r\n TBODY: () => ({ type: 'tbody' }),\r\n THEAD: () => ({ type: 'thead' }),\r\n TR: () => ({ type: 'table-row' }),\r\n TD: () => ({ type: 'table-cell' }),\r\n TH: () => ({ type: 'table-cell-header' }),\r\n};\r\n\r\n// COMPAT: `B` is omitted here because Google Docs uses `` in weird ways.\r\nconst TEXT_TAGS = {\r\n CODE: () => ({ code: true }),\r\n DEL: () => ({ strikethrough: true }),\r\n EM: () => ({ italic: true }),\r\n I: () => ({ italic: true }),\r\n S: () => ({ strikethrough: true }),\r\n STRONG: () => ({ bold: true }),\r\n U: () => ({ underline: true }),\r\n DATA: () => ({ plain: true }),\r\n};\r\n\r\nexport const deserialize = el => {\r\n if (el.nodeType === 3) {\r\n return el.textContent;\r\n } else if (el.nodeType !== 1) {\r\n return null;\r\n } else if (el.nodeName === 'BR') {\r\n return '\\n';\r\n }\r\n\r\n const { nodeName } = el;\r\n let parent = el;\r\n\r\n if (\r\n nodeName === 'PRE' &&\r\n el.childNodes[0] &&\r\n el.childNodes[0].nodeName === 'CODE'\r\n ) {\r\n parent = el.childNodes[0];\r\n }\r\n let children = Array.from(parent.childNodes).map(deserialize).flat();\r\n\r\n if (children.length === 0) {\r\n children = [{ text: '' }];\r\n }\r\n\r\n if (el.nodeName === 'BODY') {\r\n return jsx('fragment', {}, children);\r\n }\r\n\r\n if (ELEMENT_TAGS[nodeName]) {\r\n const attrs = ELEMENT_TAGS[nodeName](el);\r\n return jsx('element', attrs, children);\r\n }\r\n\r\n if (ELEMENT_TAGS[el.className]) {\r\n const attrs = ELEMENT_TAGS[el.className](el);\r\n return jsx('element', attrs, children);\r\n }\r\n\r\n if (TEXT_TAGS[nodeName]) {\r\n try {\r\n const attrs = TEXT_TAGS[nodeName](el);\r\n return children.map(child => jsx('text', attrs, child));\r\n } catch (error) {\r\n //console.log(error); //If have element, error: The hyperscript tag can only contain text content as children.\r\n return children;\r\n }\r\n }\r\n\r\n return children;\r\n};\r\n\r\nconst deserializeHtml = node => {\r\n if (node) {\r\n return deserialize(node);\r\n } else return [];\r\n};\r\n\r\nexport const deserializeHtmlString = (\r\n htmlString: string | undefined | null,\r\n) => {\r\n let currentSring = htmlString || '';\r\n if (isEmptyOrWhitespace(currentSring)) {\r\n currentSring = '

    ';\r\n } else if (removeBR(currentSring).indexOf('<') === -1) {\r\n currentSring = '

    ' + currentSring + '

    ';\r\n }\r\n const parsed = new DOMParser().parseFromString(currentSring, 'text/html');\r\n return deserializeHtml(parsed.body);\r\n};\r\n\r\nexport const removeBR = (htmlString: string) => {\r\n return htmlString.replaceAll(//g, '');\r\n};\r\n\r\nconst elementHtmlString = props => {\r\n const { attributes, children, element } = props;\r\n\r\n switch (element.type) {\r\n default:\r\n return '

    ' + children + '

    ';\r\n case 'quote':\r\n return '' + children + '';\r\n case 'code':\r\n return (\r\n '
    ' +\r\n        '' +\r\n        children +\r\n        ' ' +\r\n        '
    '\r\n );\r\n case 'bulleted-list':\r\n return '
      ' + children + '
    ';\r\n case 'heading-one':\r\n return '

    ' + children + '

    ';\r\n case 'heading-two':\r\n return '

    ' + children + '

    ';\r\n case 'heading-three':\r\n return '

    ' + children + '

    ';\r\n case 'heading-four':\r\n return '

    ' + children + '

    ';\r\n case 'heading-five':\r\n return '
    ' + children + '
    ';\r\n case 'heading-six':\r\n return '
    ' + children + '
    ';\r\n case 'list-item':\r\n return '
  • ' + children + '
  • ';\r\n case 'numbered-list':\r\n return '
      ' + children + '
    ';\r\n case 'link':\r\n return (\r\n '
    ' + children + ''\r\n );\r\n case 'mention':\r\n return (\r\n '' +\r\n children +\r\n ''\r\n );\r\n case 'thead':\r\n return '' + children + '';\r\n case 'tbody':\r\n return '' + children + '';\r\n case 'table':\r\n return (\r\n '' +\r\n children +\r\n '
    '\r\n );\r\n case 'table-row':\r\n return (\r\n '' +\r\n children +\r\n ''\r\n );\r\n case 'table-cell':\r\n return (\r\n '' +\r\n children +\r\n ''\r\n );\r\n case 'table-cell-header':\r\n return '' + children + '';\r\n case 'image':\r\n return '';\r\n //case 'image':\r\n //return ;\r\n }\r\n};\r\n\r\nconst leafHtmlString = ({ attributes, children, leaf }) => {\r\n if (children === '\\n') {\r\n return '
    ';\r\n }\r\n\r\n if (leaf.bold) {\r\n children = '' + children + '';\r\n }\r\n\r\n if (leaf.code) {\r\n children = '' + children + '';\r\n }\r\n\r\n if (leaf.italic) {\r\n children = '' + children + '';\r\n }\r\n\r\n if (leaf.underline) {\r\n children = '' + children + '';\r\n }\r\n\r\n if (leaf.strikethrough) {\r\n children = '' + children + '';\r\n }\r\n if (leaf.plain) {\r\n children = '' + children + '';\r\n }\r\n if (attributes !== '') {\r\n return '' + children + '';\r\n } else {\r\n if (children) return children;\r\n else return '';\r\n }\r\n};\r\n\r\nfunction serializeItemHtmlString(item) {\r\n let children = [];\r\n if (item.children !== undefined) {\r\n children = item.children.map(item => {\r\n if (item.type) {\r\n return serializeItemHtmlString(item);\r\n } else {\r\n return leafHtmlString({\r\n attributes: '',\r\n children: item.text,\r\n leaf: item,\r\n });\r\n }\r\n });\r\n }\r\n return elementHtmlString({\r\n attributes: '',\r\n children: children.join(''),\r\n element: item,\r\n });\r\n}\r\n\r\n/**\r\n * This one serves as an empty placeholder since Slate does not accept undefined. When an empty array is passed it throws one of the following errors:\r\n * * Cannot get the start point in the node at path [] because it has no start text node.\r\n * * Cannot resolve a Slate point from DOM point: [object HTMLDivElement],0\r\n */\r\nconst EMPTY_SLATE_NODE: ParagraphElement[] = [\r\n {\r\n type: 'paragraph',\r\n children: [{ text: '', type: 'text' }],\r\n },\r\n];\r\n\r\nexport function serializeHtmlString(\r\n data: Descendant[] | undefined,\r\n): string | undefined {\r\n const emptyValue = undefined;\r\n // data won't be undefined since Slate does not work with it, but nevertheless\r\n if (data === undefined || data === null) {\r\n return emptyValue;\r\n }\r\n // empty array -> empty value\r\n if (data.length === 0) {\r\n return emptyValue;\r\n }\r\n // default empty slate value -> empty value\r\n if (isEqual(data, EMPTY_SLATE_NODE)) {\r\n return emptyValue;\r\n }\r\n const elements = data.map(item => {\r\n return serializeItemHtmlString(item);\r\n });\r\n const result = elements.join('');\r\n // double check that serialized html does have something typed in and is not just a bunch of html entities\r\n if (isEmptyOrWhitespace(removeHtml(result))) {\r\n return emptyValue;\r\n } else {\r\n return result;\r\n }\r\n}\r\n","import { Theme } from '@material-ui/core';\r\nimport styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\n\r\nexport const RichEditorRoot = styled.div<{\r\n theme: Theme;\r\n}>`\r\n &.rich-editor-root {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n background: ${props => props.theme.palette.common.white};\r\n border: 1px solid ${props => props.theme.palette.common.grayComponentsLight};\r\n box-sizing: border-box;\r\n border-radius: 8px;\r\n .shortView & {\r\n min-width: 340px;\r\n }\r\n & .rich-editor-header {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n width: 100%;\r\n background: ${props => props.theme.palette.common.white};\r\n border-bottom: 1px solid\r\n ${props => props.theme.palette.common.grayComponentsLight};\r\n box-sizing: border-box;\r\n border-radius: 8px 8px 0px 0px;\r\n & .rich-editor-header-controls {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n padding: 0;\r\n width: 100%;\r\n flex-wrap: wrap;\r\n & .rich-editor-header-button {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 10px;\r\n border: none;\r\n border-radius: 0;\r\n box-shadow: inset -1px 0px 0px #e0e5ec;\r\n color: ${props => props.theme.palette.common.blackRegular};\r\n }\r\n }\r\n }\r\n & .rich-editor-text {\r\n padding-left: 8px;\r\n width: 100%;\r\n min-height: 32px;\r\n max-height: 300px;\r\n overflow-y: auto;\r\n &.text-with-info {\r\n padding-right: 24px;\r\n }\r\n &.text-with-controls {\r\n padding-top: 8px;\r\n }\r\n & .info-icon {\r\n position: absolute;\r\n right: 12px;\r\n top: 16px;\r\n &.info-icon-top-label {\r\n top: 42px;\r\n }\r\n &.info-icon-controls {\r\n top: 48px;\r\n }\r\n &.info-icon-top-controls {\r\n top: 72px;\r\n }\r\n }\r\n }\r\n & .rich-editor-body {\r\n width: 100%;\r\n max-height: 42vh;\r\n min-height: 100px;\r\n padding-left: 8px;\r\n overflow-y: auto;\r\n\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n box-shadow: inset 0 0 2px\r\n ${props => props.theme.palette.common.grayBorders};\r\n border-radius: 6px;\r\n background-color: ${props => props.theme.palette.common.grayBorders};\r\n }\r\n & .tr-row {\r\n text-align: center;\r\n }\r\n & .td-row {\r\n border: 1px solid ${props => props.theme.palette.common.grayBorders};\r\n }\r\n & .mention-element {\r\n padding: 3px 3px 2px;\r\n margin: 0 1px;\r\n vertical-align: baseline;\r\n display: inline-block;\r\n border-radius: 10px;\r\n background-color: #eee;\r\n font-size: 0.9em;\r\n box-shadow: none;\r\n &.mention-element-selected {\r\n box-shadow: 0 0 0 2px #b4d5ff;\r\n }\r\n }\r\n & .image-element {\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n max-width: 100%;\r\n max-height: 20em;\r\n box-shadow: none;\r\n &.image-element-selected {\r\n box-shadow: 0 0 0 2px #b4d5ff;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const MentionsWrapper = styled.div`\r\n &.mentions-root {\r\n position: absolute;\r\n padding: 3px;\r\n background: ${bookitColors.base.white};\r\n box-sizing: border-box;\r\n border-radius: 4px;\r\n z-index: 10000;\r\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2);\r\n & .mentions-item {\r\n padding: 1px 3px;\r\n border-radius: 3px;\r\n background: transparent;\r\n &.mentions-item-active {\r\n background: ${bookitColors.primary.background};\r\n }\r\n }\r\n }\r\n`;\r\n","import ToggleButton from '@material-ui/lab/ToggleButton';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport {\r\n Condition,\r\n ODataFilterBuilder,\r\n ODataOperators,\r\n} from 'api/odata/ODataFilter';\r\nimport isHotkey from 'is-hotkey';\r\nimport React, {\r\n ReactNode,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react';\r\nimport {\r\n createEditor,\r\n Descendant,\r\n Editor,\r\n Range,\r\n Transforms,\r\n Point,\r\n Element as SlateElement,\r\n} from 'slate';\r\nimport { withHistory } from 'slate-history';\r\nimport {\r\n Editable,\r\n ReactEditor,\r\n Slate,\r\n useFocused,\r\n useSelected,\r\n useSlate,\r\n withReact,\r\n} from 'slate-react';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { Icon } from '../BasicIcons/FontAwesome';\r\nimport {\r\n deserialize,\r\n deserializeHtmlString,\r\n serializeHtmlString,\r\n} from './RichEditorSerializer';\r\nimport { CustomEditor, MentionElement } from 'types/Slate';\r\nimport ReactDOM from 'react-dom';\r\nimport {\r\n relevantUrl,\r\n UserPicker,\r\n} from '../pickers/AutocompletePickers/UserPicker';\r\nimport { DropDown } from '../DropDown';\r\nimport { MenuItem, useTheme } from '@material-ui/core';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { debounce } from 'lodash';\r\n\r\nimport imageExtensions from 'image-extensions';\r\nimport isUrl from 'is-url';\r\nimport { MentionsWrapper, RichEditorRoot } from './styled';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport clsx from 'clsx';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n selectAuthenticatedUser,\r\n selectGlobalServiceGroupFilter,\r\n} from 'app/slice/selectors';\r\n\r\nconst HOTKEYS = {\r\n 'mod+b': 'bold',\r\n 'mod+i': 'italic',\r\n 'mod+u': 'underline',\r\n 'mod+`': 'code',\r\n};\r\nconst RICH_EDITOR_BUTTON_CLASS = 'rich-editor-header-button';\r\nexport interface RichEditorProps {\r\n value: Descendant[];\r\n setValue: (value: Descendant[]) => void;\r\n onChangeMentions?: (mentions: Entity[]) => void;\r\n placeholder?: string;\r\n info?: NonNullable;\r\n autoFocus?: boolean;\r\n borders?: boolean;\r\n compact?: boolean;\r\n readonly?: boolean;\r\n hasMentions?: boolean;\r\n additionalButtons?: ((className, key) => ReactNode)[];\r\n disabled?: boolean;\r\n useCodeButton?: boolean;\r\n isInvoiceTemplateEditor?: boolean;\r\n extendedMode?: boolean;\r\n setControlsVisible?: (visible: boolean) => void;\r\n labelOnTop?: boolean;\r\n serviceGroups?: Identifiable[];\r\n}\r\n\r\nconst RichTextWithMentions = (props: RichEditorProps) => {\r\n const {\r\n value,\r\n setValue,\r\n placeholder,\r\n info,\r\n autoFocus,\r\n hasMentions,\r\n onChangeMentions,\r\n additionalButtons,\r\n disabled,\r\n useCodeButton,\r\n isInvoiceTemplateEditor,\r\n setControlsVisible,\r\n labelOnTop,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n extendedMode,\r\n } = props;\r\n const { t } = useTranslation();\r\n const theme = useTheme();\r\n const renderElement = useCallback(props => , []);\r\n const renderLeaf = useCallback(props => , []);\r\n const editor = useMemo(() => {\r\n return withMentions(\r\n withImages(withTables(withHtml(withHistory(withReact(createEditor()))))),\r\n );\r\n }, []);\r\n const [initValue, setInitValue] = useState(value);\r\n const ref = useRef(null);\r\n const [target, setTarget] = useState();\r\n const [index, setIndex] = useState(0);\r\n const [search, setSearch] = useState('');\r\n const [users, setUsers] = useState[]>([]);\r\n const [mention, setMention] = useState();\r\n const [mentions, setMentions] = useState[]>([]);\r\n const showControlPanel = React.useMemo(() => {\r\n let stringVal = serializeHtmlString(initValue);\r\n return stringVal !== '' && stringVal !== undefined && stringVal !== null;\r\n }, [initValue]);\r\n const servicegroups = useSelector(selectGlobalServiceGroupFilter);\r\n const serviceGroups = useMemo(\r\n () => props.serviceGroups ?? servicegroups,\r\n [props.serviceGroups, servicegroups],\r\n );\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const withoutServiceGroups =\r\n authenticatedUser?.isLabTech() || authenticatedUser?.isGroupAdmin();\r\n useEffect(() => {\r\n if (setControlsVisible) {\r\n setControlsVisible(showControlPanel);\r\n }\r\n }, [setControlsVisible, showControlPanel]);\r\n useEffect(() => {\r\n if (!hasMentions) return;\r\n let unmounted = false;\r\n (search => {\r\n const url = relevantUrl;\r\n const params: {\r\n $orderby: string;\r\n $top: number;\r\n $filter?: string;\r\n $select?: string;\r\n } = {\r\n $orderby: 'Name asc',\r\n $select: 'Id,Name',\r\n $top: 10,\r\n };\r\n if (search !== null) {\r\n params.$filter = new ODataFilterBuilder>({\r\n predicates: [],\r\n stringColumns: ['Name'],\r\n stringSearch: search,\r\n globalServiceGroupFilter:\r\n !serviceGroups?.length || withoutServiceGroups\r\n ? undefined\r\n : [\r\n new Condition(\r\n 'ServiceGroups',\r\n ODataOperators.AnyIn,\r\n serviceGroups,\r\n 'Id',\r\n ),\r\n ],\r\n }).toString();\r\n }\r\n\r\n httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[])\r\n .then(v => {\r\n if (!unmounted) {\r\n setUsers(v);\r\n }\r\n })\r\n .catch(e => console.error(e));\r\n })(search);\r\n return () => {\r\n unmounted = true;\r\n };\r\n }, [search, hasMentions, serviceGroups, withoutServiceGroups]);\r\n\r\n useEffect(() => {\r\n if (target && mention && hasMentions) {\r\n Transforms.insertNodes(\r\n editor,\r\n [\r\n { text: '', plain: true } as any,\r\n mention as MentionElement,\r\n { text: ' ', plain: true } as any,\r\n ],\r\n {\r\n at: target,\r\n },\r\n );\r\n Transforms.move(editor, { distance: 2 });\r\n setTarget(undefined);\r\n setMention(undefined);\r\n }\r\n }, [target, mention, editor, hasMentions]);\r\n\r\n const onKeyDown = useCallback(\r\n event => {\r\n if (hasMentions && target && users.length) {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n const prevIndex = index >= users.length - 1 ? 0 : index + 1;\r\n setIndex(prevIndex);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n const nextIndex = index <= 0 ? users.length - 1 : index - 1;\r\n setIndex(nextIndex);\r\n break;\r\n case 'Tab':\r\n case 'Enter':\r\n event.preventDefault();\r\n setMention({\r\n type: 'mention',\r\n user: { ...users[index] },\r\n children: [{ text: '' }],\r\n });\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n setTarget(undefined);\r\n break;\r\n }\r\n }\r\n },\r\n [hasMentions, index, target, users],\r\n );\r\n useEffect(() => {\r\n if (target) {\r\n const el = ref.current;\r\n if (!el) return;\r\n const domRange = ReactEditor.toDOMRange(editor, target);\r\n const rect = domRange.getBoundingClientRect();\r\n el.style.top = `${rect.top + window.pageYOffset + 24}px`;\r\n el.style.left = `${rect.left + window.pageXOffset}px`;\r\n }\r\n }, [editor, target]);\r\n const onMentionsChange = () => {\r\n if (!hasMentions) return;\r\n const newMentions = getMentions(editor);\r\n if (newMentions.length !== mentions.length) {\r\n setMentions(newMentions);\r\n onChangeMentions?.(newMentions);\r\n return;\r\n }\r\n if (mentions.every(m => newMentions.map(v => v.Id).includes(m.Id))) return;\r\n setMentions(newMentions);\r\n onChangeMentions?.(newMentions);\r\n };\r\n\r\n //const fileUploadRef = useRef(null);\r\n\r\n /* const onChangeUpload = e => {\r\n fnRemoteImage(editor, e.target.files);\r\n }; */\r\n\r\n const debounceValue = React.useCallback(\r\n value =>\r\n debounce(value => {\r\n setValue(value);\r\n }, 50)(value),\r\n [setValue],\r\n );\r\n return (\r\n \r\n {\r\n const { selection } = editor;\r\n if (selection && Range.isCollapsed(selection)) {\r\n const [start] = Range.edges(selection);\r\n const wordBefore = Editor.before(editor, start, { unit: 'word' });\r\n const before = wordBefore && Editor.before(editor, wordBefore);\r\n const beforeRange = before && Editor.range(editor, before, start);\r\n const beforeText =\r\n beforeRange && Editor.string(editor, beforeRange);\r\n const beforeMatch = beforeText && beforeText.match(/^@(\\w+)$/);\r\n const after = Editor.after(editor, start);\r\n const afterRange = Editor.range(editor, start, after);\r\n const afterText = Editor.string(editor, afterRange);\r\n const afterMatch = afterText.match(/^(\\s|$)/);\r\n if (beforeMatch && afterMatch) {\r\n setTarget(beforeRange);\r\n setSearch(beforeMatch[1]);\r\n setIndex(0);\r\n } else {\r\n setTarget(undefined);\r\n }\r\n }\r\n debounceValue(value);\r\n setInitValue(value);\r\n onMentionsChange();\r\n }}\r\n >\r\n {showControlPanel && (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {useCodeButton && (\r\n \r\n \r\n \r\n )}\r\n \r\n {/* */}\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* {\r\n event.preventDefault();\r\n if (!!fileUploadRef.current) {\r\n (fileUploadRef.current as any).click();\r\n }\r\n }}\r\n >\r\n \r\n */}\r\n {/* */}\r\n {hasMentions && (\r\n <>\r\n {\r\n e.preventDefault();\r\n const end = Editor.end(editor, []);\r\n const { selection } = editor;\r\n setTarget(selection ?? { anchor: end, focus: end });\r\n setUsers([]);\r\n }}\r\n menuChildren={close => [\r\n \r\n {\r\n if (!v) return;\r\n setMention({\r\n type: 'mention',\r\n user: v,\r\n children: [{ text: '' }],\r\n });\r\n close();\r\n }}\r\n />\r\n ,\r\n ]}\r\n >\r\n \r\n \r\n \r\n )}\r\n {additionalButtons &&\r\n additionalButtons.map((b, i) =>\r\n b(RICH_EDITOR_BUTTON_CLASS, 'richtextbutton' + i),\r\n )}\r\n
    \r\n
    \r\n )}\r\n \r\n {\r\n for (const hotkey in HOTKEYS) {\r\n if (isHotkey(hotkey, event.nativeEvent)) {\r\n event.preventDefault();\r\n const mark = HOTKEYS[hotkey];\r\n toggleMark(editor, mark);\r\n }\r\n }\r\n onKeyDown(event);\r\n }}\r\n />\r\n {!!info && (\r\n \r\n \r\n \r\n )}\r\n\r\n {hasMentions && target && users.length > 0 && search !== '' && (\r\n \r\n \r\n {users.map((char, i) => (\r\n {\r\n setIndex(i);\r\n }}\r\n onMouseDown={() =>\r\n setMention({\r\n type: 'mention',\r\n user: char,\r\n children: [{ text: '' }],\r\n })\r\n }\r\n >\r\n {char.Name}\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst toggleMark = (editor: CustomEditor, format) => {\r\n const isActive = isMarkActive(editor, format);\r\n if (isActive) {\r\n Editor.removeMark(editor, format);\r\n } else {\r\n Editor.addMark(editor, format, true);\r\n }\r\n};\r\n\r\nconst MarkButton = ({ format, children, className, ...props }) => {\r\n const editor = useSlate();\r\n return (\r\n {\r\n event.preventDefault();\r\n toggleMark(editor, format);\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst BlockButton = ({ format, children, className, ...props }) => {\r\n const editor = useSlate();\r\n return (\r\n {\r\n event.preventDefault();\r\n toggleBlock(editor, format);\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst isBlockActive = (editor, format) => {\r\n const [match] = Editor.nodes(editor, {\r\n match: n => n.type === format,\r\n });\r\n return !!match;\r\n};\r\n\r\nconst LIST_TYPES = ['numbered-list', 'bulleted-list'];\r\n\r\nconst toggleBlock = (editor, format) => {\r\n const isActive = isBlockActive(editor, format);\r\n const isList = LIST_TYPES.includes(format);\r\n\r\n Transforms.unwrapNodes(editor, {\r\n match: n => LIST_TYPES.includes(n.type),\r\n split: true,\r\n });\r\n\r\n Transforms.setNodes(editor, {\r\n type: isActive ? 'paragraph' : isList ? 'list-item' : format,\r\n });\r\n\r\n if (!isActive && isList) {\r\n const block = { type: format, children: [] };\r\n Transforms.wrapNodes(editor, block);\r\n }\r\n};\r\n\r\nconst isMarkActive = (editor: CustomEditor, format) => {\r\n const [match] = Editor.nodes(editor, {\r\n match(node, path) {\r\n return node[format] === true;\r\n },\r\n });\r\n return !!match;\r\n};\r\n\r\nexport const StartRichEditor: React.FC<{\r\n initialValue: string | undefined;\r\n onChange: (value: string | undefined) => void;\r\n placeholder?: string;\r\n autoFocus?: boolean;\r\n hasMentions?: boolean;\r\n onChangeMentions?: (mentions: Entity[]) => void;\r\n additionalButtons?: ((className, key) => ReactNode)[];\r\n disabled?: boolean;\r\n isInvoiceTemplateEditor?: boolean;\r\n extendedMode?: boolean;\r\n info?: NonNullable;\r\n setControlsVisible?: (visible: boolean) => void;\r\n labelOnTop?: boolean;\r\n serviceGroups?: Identifiable[];\r\n}> = ({\r\n initialValue,\r\n onChange,\r\n placeholder,\r\n autoFocus,\r\n hasMentions,\r\n onChangeMentions,\r\n additionalButtons,\r\n disabled,\r\n isInvoiceTemplateEditor,\r\n extendedMode,\r\n info,\r\n setControlsVisible,\r\n labelOnTop,\r\n serviceGroups,\r\n}) => {\r\n const setValue = value => {\r\n onChange(serializeHtmlString(value));\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst withMentions = (editor: CustomEditor) => {\r\n const { isInline, isVoid } = editor;\r\n\r\n editor.isInline = element => {\r\n return element.type === 'mention' ? true : isInline(element);\r\n };\r\n\r\n editor.isVoid = element => {\r\n return element.type === 'mention' ? true : isVoid(element);\r\n };\r\n\r\n return editor;\r\n};\r\n\r\nconst getMentions = editor => {\r\n const mentions = Editor.nodes(editor, {\r\n match: node => node.type === 'mention',\r\n at: [],\r\n });\r\n const set = new Set();\r\n const res: Entity[] = [];\r\n for (const [node] of mentions) {\r\n if (node.type === 'mention') {\r\n const user = (node as MentionElement).user;\r\n if (!set.has(user.Id)) {\r\n res.push(user);\r\n set.add(user.Id);\r\n }\r\n }\r\n }\r\n return res;\r\n};\r\n\r\nconst Portal = ({ children }) => {\r\n return typeof document === 'object'\r\n ? ReactDOM.createPortal(children, document.body)\r\n : null;\r\n};\r\n\r\nconst fnRemoteImage = (editor, files) => {\r\n for (const file of files) {\r\n const [mime] = file.type.split('/');\r\n if (mime === 'image') {\r\n const formData = new FormData();\r\n formData.append('image', file);\r\n //Need fixing - currently this route is commented on server\r\n fetch('/api/odata/v4/Files/InsertFile', {\r\n method: 'POST',\r\n body: formData,\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n console.log(result);\r\n insertImage(\r\n editor,\r\n result.data\r\n .uri /* 'file:///C:/bookitlab/web-ui/public/favicon.png' */,\r\n );\r\n })\r\n .catch(error => {\r\n alert('Error:' + error);\r\n });\r\n }\r\n }\r\n};\r\n\r\nconst withImages = editor => {\r\n const { insertData, isVoid } = editor;\r\n\r\n editor.isVoid = element => {\r\n return element.type === 'image' ? true : isVoid(element);\r\n };\r\n\r\n editor.insertData = data => {\r\n const text = data.getData('text/plain');\r\n const { files } = data;\r\n console.log('insertData:', files);\r\n if (files && files.length > 0) {\r\n fnRemoteImage(editor, files);\r\n } else if (isImageUrl(text)) {\r\n insertImage(editor, text);\r\n } else {\r\n insertData(data);\r\n }\r\n };\r\n\r\n return editor;\r\n};\r\n\r\nconst isImageUrl = url => {\r\n if (!url) return false;\r\n if (!isUrl(url)) return false;\r\n const ext = new URL(url).pathname.split('.').pop();\r\n return imageExtensions.includes(ext as string);\r\n};\r\n\r\nconst insertImage = (editor, url) => {\r\n const text = { text: '' };\r\n const image = { type: 'image', url, children: [text] };\r\n Transforms.insertNodes(editor, image as any);\r\n};\r\n\r\nconst withTables = editor => {\r\n const { deleteBackward, deleteForward, insertBreak } = editor;\r\n\r\n editor.deleteBackward = unit => {\r\n const { selection } = editor;\r\n\r\n if (selection && Range.isCollapsed(selection)) {\r\n const [cell] = Editor.nodes(editor, {\r\n match: n =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table-cell',\r\n });\r\n\r\n if (cell) {\r\n const [, cellPath] = cell;\r\n const start = Editor.start(editor, cellPath);\r\n\r\n if (Point.equals(selection.anchor, start)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n deleteBackward(unit);\r\n };\r\n\r\n editor.deleteForward = unit => {\r\n const { selection } = editor;\r\n\r\n if (selection && Range.isCollapsed(selection)) {\r\n const [cell] = Editor.nodes(editor, {\r\n match: n =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table-cell',\r\n });\r\n\r\n if (cell) {\r\n const [, cellPath] = cell;\r\n const end = Editor.end(editor, cellPath);\r\n\r\n if (Point.equals(selection.anchor, end)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n deleteForward(unit);\r\n };\r\n\r\n editor.insertBreak = () => {\r\n const { selection } = editor;\r\n\r\n if (selection) {\r\n const [table] = Editor.nodes(editor, {\r\n match: n =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n });\r\n\r\n if (table) {\r\n return;\r\n }\r\n }\r\n\r\n insertBreak();\r\n };\r\n\r\n return editor;\r\n};\r\n\r\nconst withHtml = editor => {\r\n const { insertData, isInline, isVoid } = editor;\r\n\r\n editor.isInline = element => {\r\n return element.type === 'link' ? true : isInline(element);\r\n };\r\n\r\n editor.isVoid = element => {\r\n return element.type === 'image' ? true : isVoid(element);\r\n };\r\n\r\n editor.insertData = data => {\r\n const html = data.getData('text/html');\r\n\r\n if (html) {\r\n const parsed = new DOMParser().parseFromString(html, 'text/html');\r\n const fragment = deserialize(parsed.body);\r\n Transforms.insertFragment(editor, fragment);\r\n return;\r\n }\r\n\r\n insertData(data);\r\n };\r\n\r\n return editor;\r\n};\r\n\r\nconst Element = ({ attributes, children, element }) => {\r\n switch (element.type) {\r\n case 'thead':\r\n return {children};\r\n case 'tbody':\r\n return {children};\r\n case 'table':\r\n return {children}
    ;\r\n case 'table-row':\r\n //return {children};\r\n return (\r\n \r\n );\r\n case 'table-cell':\r\n //return {children};\r\n return (\r\n \r\n );\r\n case 'table-cell-header':\r\n return {children};\r\n case 'block-quote':\r\n return
    {children}
    ;\r\n case 'bulleted-list':\r\n return
      {children}
    ;\r\n case 'heading-one':\r\n return

    {children}

    ;\r\n case 'heading-two':\r\n return

    {children}

    ;\r\n case 'heading-three':\r\n return

    {children}

    ;\r\n case 'heading-four':\r\n return

    {children}

    ;\r\n case 'heading-five':\r\n return
    {children}
    ;\r\n case 'heading-six':\r\n return
    {children}
    ;\r\n case 'list-item':\r\n return
  • {children}
  • ;\r\n case 'numbered-list':\r\n return
      {children}
    ;\r\n case 'link':\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n case 'mention':\r\n return (\r\n \r\n );\r\n case 'image':\r\n return (\r\n \r\n );\r\n default:\r\n return

    {children}

    ;\r\n }\r\n};\r\n\r\nconst Leaf = ({ attributes, children, leaf }) => {\r\n if (leaf.bold) {\r\n children = {children};\r\n }\r\n\r\n if (leaf.code) {\r\n children = {children};\r\n }\r\n\r\n if (leaf.italic) {\r\n children = {children};\r\n }\r\n\r\n if (leaf.underline) {\r\n children = {children};\r\n }\r\n if (leaf.plain) {\r\n children = {children};\r\n }\r\n\r\n return {children};\r\n};\r\n\r\nexport const ImageElement = ({ attributes, children, element }) => {\r\n const selected = useSelected();\r\n const focused = useFocused();\r\n return (\r\n
    \r\n {children}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport const TrStyled = ({ attributes, children, element }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const TdStyled = ({ attributes, children, element }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const Mention = ({ attributes, children, element }) => {\r\n const selected = useSelected();\r\n const focused = useFocused();\r\n return (\r\n \r\n @{element.user.Name}\r\n {children}\r\n \r\n );\r\n};\r\n","import {\r\n BaseURLPicker,\r\n BaseURLPickerProps,\r\n} from 'app/components/BasicPickers/BaseURLPicker';\r\nimport { Entity } from 'types/common';\r\nconst url = '/api/odata/v4/PaymentMethodFilter/WithSystemSettings';\r\nexport interface PaymentMethodPickerProps\r\n extends Omit>, 'url'> {}\r\nexport const PaymentMethodPicker = (props: PaymentMethodPickerProps) => {\r\n return (\r\n \r\n );\r\n};\r\n","import { FieldHookConfig, useField } from 'formik';\r\nimport { Entity } from 'types/common';\r\nimport {\r\n PaymentMethodPicker,\r\n PaymentMethodPickerProps,\r\n} from '../pickers/AutocompletePickers/PaymentMethodPicker';\r\n\r\nexport const FormPaymentMethodPicker = ({\r\n onChange,\r\n ...props\r\n}: FieldHookConfig | null> &\r\n Omit) => {\r\n const [field, meta, helpers] = useField | null>(props);\r\n return (\r\n <>\r\n helpers.setValue(value, true)}\r\n onBlur={field?.onBlur}\r\n value={field.value}\r\n variant=\"filled\"\r\n error={meta?.error !== undefined && meta?.touched}\r\n helperText={meta.error}\r\n {...props}\r\n />\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { IBudgetExperimentsFilterDto } from 'api/odata/generated/entities/IBudgetExperimentsFilterDto';\r\nimport { IBudgetDto } from 'api/odata/generated/entities/IBudgetDto';\r\nimport {\r\n Condition,\r\n ODataOperators,\r\n quoteODataValue,\r\n} from 'api/odata/ODataFilter';\r\nimport {\r\n AutocompletePickerProps,\r\n AutocompletePicker,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { BudgetExperimentStatuses } from 'enums/BudgetExperimentStatuses';\r\nimport { ServiceType } from 'api/odata/generated/enums/ServiceType';\r\nimport { Timestamp } from 'types/Timestamp';\r\nimport { dateUtils } from 'utils/date-utils';\r\nimport { isNullOrUndefined } from 'utils/typeUtils';\r\nimport { IPathAndQuery } from 'utils/url-utils';\r\nimport { Identifiable } from 'types/common';\r\n\r\nexport function budgetExperimentsFilter(\r\n serviceTypes: number[],\r\n serviceGroups: number[],\r\n serviceType: ServiceType | undefined,\r\n budgetId: number | undefined,\r\n resStart: Date | string | null | undefined,\r\n resEnd: Date | string | null | undefined,\r\n): (string | Condition)[] {\r\n const predicates: (string | Condition)[] = [];\r\n\r\n predicates.push(\r\n new Condition(\r\n 'Active',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n\r\n predicates.push(\r\n new Condition(\r\n 'StatusId',\r\n ODataOperators.Equals,\r\n BudgetExperimentStatuses.Approved,\r\n ),\r\n );\r\n\r\n predicates.push(\r\n new Condition(\r\n 'BudgetTaskActive',\r\n ODataOperators.Equals,\r\n true,\r\n ),\r\n );\r\n\r\n if (!isNullOrUndefined(budgetId)) {\r\n predicates.push(\r\n new Condition(\r\n 'BudgetTaskBudgetId',\r\n ODataOperators.Equals,\r\n budgetId,\r\n ),\r\n );\r\n }\r\n\r\n if (serviceGroups.length > 0) {\r\n let ids = serviceGroups.filter(f => f !== null);\r\n if (ids.length > 0) {\r\n predicates.push(\r\n `(${new Condition(\r\n 'BudgetTaskAllCoresAllowed',\r\n ODataOperators.Equals,\r\n true,\r\n )} or ${new Condition(\r\n 'BudgetTaskServiceGroupIds',\r\n ODataOperators.AnyIn,\r\n ids,\r\n )})`,\r\n );\r\n predicates.push(\r\n `(BudgetExperimentServiceGroups/any(s: s/ServiceGroupId in ${quoteODataValue(\r\n ids,\r\n )} and s/StatusId eq ${quoteODataValue(\r\n BudgetExperimentStatuses.Approved,\r\n )}))`,\r\n );\r\n }\r\n }\r\n\r\n if (predicates.length > 0) {\r\n return predicates;\r\n }\r\n return [];\r\n}\r\nexport interface ReservationBudgetExperimentParams {\r\n serviceId: Array>;\r\n userId: string | null;\r\n budgetId: number | null;\r\n start: Timestamp | Date;\r\n end: Timestamp | Date;\r\n selectedExpirementId?: number;\r\n}\r\nexport interface ReservationBudgetExperimentPickerProps\r\n extends ReservationBudgetExperimentParams,\r\n Omit, 'loadData'> {\r\n name?: string;\r\n placeholder?: string;\r\n onBlur?: React.FocusEventHandler;\r\n error?: boolean;\r\n helperText?: string;\r\n}\r\n\r\nconst budgetDtoFields: Array = [\r\n 'Id',\r\n 'Name',\r\n 'UserGroupId',\r\n 'UserGroupName',\r\n 'Active',\r\n 'IsDefault',\r\n 'HideExperiments',\r\n 'ServiceGroupServicesAllowed',\r\n 'StartDate',\r\n 'EndDate',\r\n 'Type',\r\n];\r\nconst budgetExperimentDtoFields: Array = [\r\n 'Id',\r\n 'Name',\r\n 'Active',\r\n 'StatusId',\r\n 'BudgetTaskBudgetId',\r\n];\r\nexport const getLoadData = (p: ReservationBudgetExperimentParams) => {\r\n const { path, search } = getBudgetExperimentsValidForReservationPathInfo(p);\r\n return getAutoCompleteLoadDataFn({\r\n url: path,\r\n queryString: search,\r\n select: budgetExperimentDtoFields,\r\n // expand is needed here for the use on reservation details to auto select the related budget\r\n // otherwise, when the budget is already preselected, expand will just slow things down\r\n expand: getBudgetExpandClause(p),\r\n });\r\n};\r\n\r\nfunction getBudgetExpandClause(\r\n p: ReservationBudgetExperimentParams,\r\n): string | undefined {\r\n return p.budgetId === null\r\n ? `Budget($select=${budgetDtoFields.join(',')})`\r\n : undefined;\r\n}\r\n\r\n/**\r\n * Prepares parameters to fetch budget experiments usable to book something (e.g. reservation, offline service, etc.)\r\n * @param p dependencies used to determine relevant budget experiments\r\n * @returns path/search to fetch the budget experiments\r\n */\r\nexport function getBudgetExperimentsValidForReservationPathInfo(\r\n p: ReservationBudgetExperimentParams,\r\n): IPathAndQuery {\r\n const pp: Record<\r\n keyof Omit,\r\n string | null\r\n > = {\r\n serviceId: JSON.stringify(p.serviceId.map(f => f.Id)),\r\n userId: \"'\" + p.userId?.replaceAll(\"'\", \"''\") + \"'\",\r\n budgetId: JSON.stringify(p.budgetId),\r\n start: '@start',\r\n end: '@end',\r\n };\r\n const BudgetExperimentsValidForReservationURL = `/api/odata/v4/BudgetExperimentsFilter/BudgetExperimentsValidForReservation(serviceId=${pp.serviceId}, budgetId=${pp.budgetId}, userId=${pp.userId}, start=${pp.start}, end=${pp.end})`;\r\n\r\n // start/end parameters are extracted into QueryString to avoid triggering \"A potentially dangerous Request.Path value (:)...\" issue with .net path validation\r\n const params = {\r\n '@start': dateUtils.formatISO(dateUtils.parseISO(p.start)),\r\n '@end': dateUtils.formatISO(dateUtils.parseISO(p.end)),\r\n $select: budgetExperimentDtoFields.join(','),\r\n $expand: getBudgetExpandClause(p),\r\n };\r\n return { path: BudgetExperimentsValidForReservationURL, search: params };\r\n}\r\n\r\nexport function ReservationBudgetExperimentPicker({\r\n serviceId,\r\n budgetId,\r\n userId,\r\n start,\r\n end,\r\n ...props\r\n}: ReservationBudgetExperimentPickerProps) {\r\n const innerLoadData = React.useMemo(\r\n () =>\r\n getLoadData({\r\n serviceId,\r\n budgetId,\r\n userId,\r\n start,\r\n end,\r\n }),\r\n [budgetId, end, serviceId, start, userId],\r\n );\r\n\r\n return (\r\n \r\n );\r\n}\r\nexport const loadBudgetExperiments = getLoadData;\r\n","import * as React from 'react';\r\nimport { IBudgetExperimentsFilterDto } from 'api/odata/generated/entities/IBudgetExperimentsFilterDto';\r\nimport { FieldHookConfig, useField, useFormikContext } from 'formik';\r\nimport {\r\n ReservationBudgetExperimentParams,\r\n ReservationBudgetExperimentPicker,\r\n getBudgetExperimentsValidForReservationPathInfo,\r\n} from '../pickers/AutocompletePickers/ReservationBudgetExperimentPicker';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { usePromise } from 'app/hooks/usePromise';\r\nimport { IODataQueryResponse } from 'api/odata/IODataQueryResponse';\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IWithBudget } from 'app/pages/ReservationDetails/Details/slice/types';\r\n\r\n/**\r\n * Fetches the default budget experiment matching the dependencies\r\n * @see {@link ReservationBudgetExperimentParams}\r\n * @param p relevant dependencies\r\n * @returns default budget experiment if exists, undefined - otherwise\r\n */\r\nconst getDefaultBudgetExperiment = async (\r\n p: ReservationBudgetExperimentParams,\r\n) => {\r\n const { path, search } = getBudgetExperimentsValidForReservationPathInfo(p);\r\n const result = await httpClient.get<\r\n IODataQueryResponse\r\n >(path, { ...search, ...{ $top: 10 } });\r\n if (result.value.length === 1) {\r\n return result.value[0];\r\n } else if (\r\n !!p.selectedExpirementId &&\r\n result.value.length > 0 &&\r\n result.value.some(f => f.Id === p.selectedExpirementId)\r\n ) {\r\n return result.value.filter(f => f.Id === p.selectedExpirementId)[0];\r\n } else {\r\n return undefined;\r\n }\r\n};\r\n\r\nexport const FormReservationBudgetExperimentPicker = ({\r\n label,\r\n isEdit,\r\n serviceId,\r\n budgetId,\r\n userId,\r\n start,\r\n end,\r\n onChange,\r\n ...props\r\n}: FieldHookConfig &\r\n IFieldProps &\r\n ReservationBudgetExperimentParams & { isEdit: boolean }) => {\r\n const formik = useFormikContext();\r\n const [field, meta, { setValue }] =\r\n useField(props);\r\n const [fetchDefaultBudgetExperimentState, fetchDefaultBudgetExperiment] =\r\n usePromise(getDefaultBudgetExperiment);\r\n\r\n // setValue goes nuts inside the Reservation Form and spams if used in useEffect directly\r\n const setValueRef = React.useRef(setValue);\r\n React.useEffect(() => {\r\n setValueRef.current = setValue;\r\n }, [setValue]);\r\n\r\n /**\r\n * Handles the user selected budget experiment.\r\n * The budget can be auto populated when the budget experiment is selected first.\r\n * Formik values - budget experiment & optionally budget (if not yet selected) are updated in one go to prevent unnecessary re renders.\r\n */\r\n const handleChange = React.useCallback(\r\n value => {\r\n const v: Record = {\r\n BudgetExperiment: value,\r\n };\r\n if (formik.values.Budget === null && value.Budget !== undefined) {\r\n v.Budget = value.Budget;\r\n }\r\n formik.setValues(values => ({ ...values, ...v }));\r\n\r\n onChange?.(value);\r\n },\r\n [formik, onChange],\r\n );\r\n\r\n /**\r\n * Services array might go wild with array mutations (e.g. when clearing large number of services selected in the reservation service picker)\r\n * Serialize & then deserializing the service ids is intended to guard the useEffect below from drowning in these mutations\r\n */\r\n const serializedServices = React.useMemo(\r\n () => JSON.stringify(serviceId.map(f => ({ Id: f.Id }))),\r\n [serviceId],\r\n );\r\n const deserializedServices = React.useMemo(\r\n () => JSON.parse(serializedServices),\r\n [serializedServices],\r\n );\r\n\r\n /**\r\n * Ref is used to skip the first effect below\r\n */\r\n const componentDidMount = React.useRef(false);\r\n\r\n // set default budget experiment for the given parent deps (service, budget, start/end, service & user)\r\n // budget experiment is considered to be default if it's the only matching one between relevant active experiments (given the deps)\r\n // if there's no default budget experiment - the value is cleared to prevent conflicts and force user to select one\r\n React.useEffect(() => {\r\n // first effect needs to be skipped for showing reservation details, in which case the budget/experiment should be shown as is without fetching the default budget experiment\r\n // here an additional condition might be needed to distinguish between the \"reservation create\" and \"reservation details\" cases\r\n if (componentDidMount.current === false && isEdit) {\r\n componentDidMount.current = true;\r\n return;\r\n }\r\n\r\n /**\r\n * Skips default budget experiment fetching if:\r\n * * budget experiment (either default or non-default) has been selected by the user with the empty budget\r\n * * budget/budget experiment changed but their connection is valid (e.g. budget is present, budget experiment is changed to another experiment within the same budget)\r\n */\r\n if (\r\n field.value?.BudgetTaskBudgetId === budgetId ||\r\n field.value?.Budget?.Id === budgetId\r\n ) {\r\n return;\r\n }\r\n\r\n // nothing to do if the services weren't selected yet\r\n if (deserializedServices.length === 0) {\r\n return;\r\n }\r\n\r\n // budget has to be selected before the budget experiment\r\n // if the budget was not yet populated - also nothing to see here\r\n if (budgetId === null) {\r\n return;\r\n }\r\n\r\n /**\r\n * BudgetId ->\r\n */\r\n fetchDefaultBudgetExperiment({\r\n budgetId: budgetId,\r\n serviceId: deserializedServices,\r\n start: start,\r\n end: end,\r\n userId: userId,\r\n selectedExpirementId: field.value?.Id,\r\n }).then(value => {\r\n setValueRef.current?.(value ?? null);\r\n if (!!value) {\r\n onChange?.(value);\r\n }\r\n });\r\n\r\n // field.value is exluded from the deps in order to allow clearing the current value\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n fetchDefaultBudgetExperiment,\r\n budgetId,\r\n end,\r\n deserializedServices,\r\n start,\r\n userId,\r\n onChange,\r\n isEdit,\r\n // field.value\r\n ]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","/**\r\n *\r\n * Asynchronously loads the component for FilePreview\r\n *\r\n */\r\n\r\nimport { lazyLoad } from 'utils/loadable';\r\n\r\nexport const FilePreview = lazyLoad(\r\n () => import('./index'),\r\n module => module.FilePreview,\r\n);\r\n","import { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport * as React from 'react';\r\nimport { openExportLink, toRootedURL } from 'utils/url-utils';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport cliTruncate from 'cli-truncate';\r\nimport { Body } from 'app/components/Typography';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport prettyBytes from 'pretty-bytes';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectExpandedSidePanel } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FilePreview } from './FilePreview/Loadable';\r\nimport clsx from 'clsx';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport styled from 'styled-components';\r\n\r\nexport interface FileViewProps {\r\n file: IFormFileValue;\r\n onRemove: (value: any) => void;\r\n withShrinkLabel?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function FileView(props: FileViewProps) {\r\n const { file, onRemove, withShrinkLabel, disabled } = props;\r\n const { t } = useTranslation();\r\n const isMobile = DetectIsMobile();\r\n const fileName =\r\n file.DisplayValue !== null && file.DisplayValue !== undefined\r\n ? file.DisplayValue\r\n : '';\r\n const fileSize =\r\n file.Size == null\r\n ? null\r\n : prettyBytes(file.Size, { maximumFractionDigits: 2 });\r\n\r\n const fileUrl =\r\n file.PostedFile === null || file.PostedFile === undefined\r\n ? toRootedURL(`/file.ashx?id=${file.Value}&ap=true`)\r\n : file.PostedFile.webkitRelativePath;\r\n\r\n const downloadClick = async () => {\r\n if (file.PostedFile === null || file.PostedFile === undefined) {\r\n await openExportLink(fileUrl);\r\n }\r\n };\r\n // const fileDownloadClick = async () => {\r\n // fileDownload(res.data, filename)\r\n // };\r\n\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n return (\r\n \r\n \r\n
    \r\n {file.Value !== null ? (\r\n \r\n
    downloadClick()}>\r\n \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n {cliTruncate(fileName, sidePanelExpanded && !isMobile ? 40 : 25, {\r\n position: 'middle',\r\n })}\r\n \r\n\r\n {fileSize && (\r\n \r\n {fileSize}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n onRemove(fileName)}\r\n >\r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n}\r\nconst PreviwWrapper = styled.div`\r\n &.previw-root {\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n flex-direction: row;\r\n gap: 8px;\r\n height: 48px;\r\n padding: 0px 10px 0px 0px;\r\n\r\n // &.shrinkLabel {\r\n // align-items: flex-end;\r\n // }\r\n\r\n & .preview-icon-text {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0;\r\n gap: 12px;\r\n width: 100%;\r\n\r\n & .preview-icon {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n padding: 12px;\r\n gap: 10px;\r\n cursor: pointer;\r\n background-color: var(--base-white-c0);\r\n border-radius: 8px;\r\n color: var(--grayscale-gray-components-c7);\r\n\r\n & svg {\r\n width: 24px;\r\n height: 24px;\r\n }\r\n\r\n & img {\r\n height: 24px;\r\n }\r\n\r\n .shrinkLabel & {\r\n padding: 0;\r\n }\r\n }\r\n\r\n & .preview-text {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n padding: 0;\r\n width: 100%;\r\n }\r\n }\r\n\r\n & .preview-button {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n padding: 2;\r\n gap: 10px;\r\n & .preview-button-icon {\r\n color: var(--grayscale-gray-components-c7);\r\n width: 16px;\r\n height: 16px;\r\n fontsize: 16px;\r\n }\r\n }\r\n }\r\n`;\r\n","export enum RestrictDurationUnitTypes {\r\n LimitMinutes = 1,\r\n LimitHours = 2,\r\n LimitDays = 3,\r\n LimitWeeks = 4,\r\n LimitMonths = 5,\r\n}\r\n","import { dateUtils } from 'utils/date-utils';\r\nimport {\r\n IViewState,\r\n ViewLengths,\r\n ViewModes,\r\n ViewTypes,\r\n WorkingSlot,\r\n} from '../slice/types';\r\nimport { Timestamp } from 'types/Timestamp';\r\nimport { assertExhaustive } from 'utils/assertExhaustive';\r\nimport {\r\n getPeriodTypesEntity,\r\n getPeriodTypesEntityById,\r\n PeriodTypes,\r\n PeriodTypesEntity,\r\n} from 'app/components/DatePeriods';\r\nimport { DatesRange } from 'types/DatesRange';\r\nimport {\r\n SchedulerDatePositionArray,\r\n SchedulerDatePositionUnion,\r\n} from 'app/components/BasicTable/Filters/DatesPeriodFilter';\r\nimport { serializeSchedulerDate } from './formatSchedulerDateOrUndefined';\r\nimport { RestrictDurationUnitTypes } from 'enums/RestrictDurationUnitTypes';\r\nimport { isSameMonth, isSameYear } from 'date-fns';\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\nimport { IEquipmentWorkingHoursDto } from 'api/odata/generated/entities/IEquipmentWorkingHoursDto';\r\nimport { orderBy } from 'lodash';\r\nimport { fromTimZoneToUTC } from 'utils/date-utils-tz';\r\nimport { ITimeZone } from 'types/AppSettings';\r\n\r\n/**\r\n * Returns view length (day/week/etc.) for a given view mode\r\n * @param viewMode scheduler viewMode\r\n * @returns view length\r\n */\r\nexport function getViewLength(viewMode: ViewModes) {\r\n return viewMode.split('_')[0] as ViewLengths;\r\n}\r\n\r\n/**\r\n * Returns the view type part of the viewmode e.g. week_timeline -> timeline\r\n * @param viewMode scheduler viewMode\r\n * @returns view type\r\n */\r\nexport function getViewType(viewMode: ViewModes) {\r\n const parts = viewMode.split('_');\r\n if (parts.length === 1) {\r\n return 'calendar';\r\n } else if (parts[1] === 'unit') {\r\n return 'calendar';\r\n } else {\r\n return parts[1] as ViewTypes;\r\n }\r\n}\r\n\r\n/**\r\n * Returns parsed viewMode\r\n * @param viewMode scheduler viewmode\r\n * @returns\r\n */\r\nexport function parseViewMode(viewMode: ViewModes) {\r\n return {\r\n viewType: getViewType(viewMode),\r\n viewLength: getViewLength(viewMode),\r\n };\r\n}\r\nexport function getNextViewLength(\r\n length: ViewLengths,\r\n customDaysEnabled?: boolean,\r\n twoDaysEnabled?: boolean,\r\n): ViewLengths {\r\n switch (length) {\r\n case 'day':\r\n return twoDaysEnabled\r\n ? 'twodays'\r\n : customDaysEnabled\r\n ? 'customdays'\r\n : 'week';\r\n case 'twodays':\r\n return customDaysEnabled ? 'customdays' : 'week';\r\n case 'customdays':\r\n return 'week';\r\n case 'week':\r\n return 'month';\r\n case 'month':\r\n return 'quarter';\r\n case 'quarter':\r\n return 'year';\r\n default:\r\n return length;\r\n }\r\n}\r\nexport function getPrevViewLength(\r\n length: ViewLengths,\r\n customDaysEnabled?: boolean,\r\n twoDaysEnabled?: boolean,\r\n): ViewLengths {\r\n switch (length) {\r\n case 'twodays':\r\n return 'day';\r\n case 'customdays':\r\n return twoDaysEnabled ? 'twodays' : 'day';\r\n case 'week':\r\n return customDaysEnabled\r\n ? 'customdays'\r\n : twoDaysEnabled\r\n ? 'twodays'\r\n : 'day';\r\n case 'month':\r\n return 'week';\r\n case 'quarter':\r\n return 'month';\r\n case 'year':\r\n return 'quarter';\r\n default:\r\n return length;\r\n }\r\n}\r\n/**\r\n * Combines view mode and view type into scheduler view mode e.g. 'weekly' & 'calendar' -> 'weekly'\r\n * @param param0 view mode and view type\r\n * @returns\r\n */\r\nexport const getSchedulerViewMode = (\r\n viewType: 'calendar' | 'timeline',\r\n viewlength: ViewLengths,\r\n isMobile: boolean,\r\n): ViewModes => {\r\n switch (viewType) {\r\n case 'calendar':\r\n switch (viewlength) {\r\n case 'day':\r\n case 'twodays':\r\n case 'customdays':\r\n return isMobile ? 'day' : 'day_unit';\r\n case 'week':\r\n return 'week';\r\n case 'month':\r\n return 'month';\r\n case 'quarter':\r\n return 'quarter';\r\n case 'year':\r\n return 'year';\r\n case 'customPeriod':\r\n return 'day_unit';\r\n default:\r\n assertExhaustive(viewlength);\r\n }\r\n break;\r\n case 'timeline':\r\n return `${viewlength}_${viewType}`;\r\n default:\r\n assertExhaustive(viewType);\r\n }\r\n};\r\n/**\r\n * Gets the schedulr view type\r\n * @param viewType view type\r\n * @param viewlength view length\r\n * @param isMobile mobile\r\n * @returns\r\n */\r\nexport const getSchedulerViewType = (\r\n viewType: 'calendar' | 'timeline',\r\n viewlength: ViewLengths,\r\n isMobile: boolean,\r\n): 'calendar' | 'unit' | 'timeline' => {\r\n switch (viewType) {\r\n case 'calendar':\r\n switch (viewlength) {\r\n case 'day':\r\n case 'twodays':\r\n case 'customdays':\r\n return isMobile ? 'calendar' : 'unit';\r\n case 'week':\r\n case 'month':\r\n return viewType;\r\n case 'quarter':\r\n case 'year':\r\n return 'timeline';\r\n case 'customPeriod':\r\n return viewType === 'calendar' ? 'unit' : 'timeline';\r\n default:\r\n assertExhaustive(viewlength);\r\n }\r\n break;\r\n case 'timeline':\r\n return viewType;\r\n default:\r\n assertExhaustive(viewType);\r\n }\r\n};\r\n/**\r\n * Gets the start of the displayed period\r\n * @param viewLength view length\r\n * @param datets date\r\n * @returns start of the period\r\n */\r\nexport const getViewStartDate = (\r\n viewLength: ViewLengths,\r\n datets?: Timestamp,\r\n customStart?: boolean,\r\n) => {\r\n const date = datets === undefined ? undefined : dateUtils.parseISO(datets);\r\n if (date === undefined) {\r\n return undefined;\r\n }\r\n\r\n switch (viewLength) {\r\n case 'day':\r\n case 'twodays':\r\n case 'customdays':\r\n return dateUtils.startOfDay(date);\r\n case 'week':\r\n return customStart\r\n ? dateUtils.startOfDay(date)\r\n : dateUtils.startOfWeek(date);\r\n case 'month':\r\n return customStart\r\n ? dateUtils.startOfDay(date)\r\n : dateUtils.startOfMonth(date);\r\n case 'quarter':\r\n return customStart\r\n ? dateUtils.startOfDay(date)\r\n : dateUtils.startOfQuarter(date);\r\n case 'year':\r\n return customStart\r\n ? dateUtils.startOfDay(date)\r\n : dateUtils.startOfYear(date);\r\n }\r\n};\r\n/**\r\n * Gets the view end date\r\n * @param viewLength\r\n * @param datets\r\n * @returns\r\n */\r\nexport const getViewEndDate = (\r\n viewLength: ViewLengths,\r\n datets?: Timestamp,\r\n days?: number,\r\n customStart?: boolean,\r\n) => {\r\n const date = datets === undefined ? undefined : dateUtils.parseISO(datets);\r\n if (date === undefined) {\r\n return undefined;\r\n }\r\n switch (viewLength) {\r\n case 'day':\r\n return dateUtils.endOfDay(date);\r\n case 'twodays':\r\n return dateUtils.addDays(dateUtils.endOfDay(date), 1);\r\n case 'customdays':\r\n return dateUtils.addDays(dateUtils.endOfDay(date), !!days ? days - 1 : 2);\r\n case 'week':\r\n return customStart\r\n ? dateUtils.addDays(dateUtils.startOfDay(date), 6)\r\n : dateUtils.endOfWeek(date);\r\n case 'month':\r\n return customStart\r\n ? dateUtils.addMonths(date, 1)\r\n : dateUtils.endOfMonth(date);\r\n case 'quarter':\r\n return customStart\r\n ? dateUtils.addQuarters(date, 1)\r\n : dateUtils.endOfQuarter(date);\r\n case 'year':\r\n return customStart\r\n ? dateUtils.addYears(date, 1)\r\n : dateUtils.endOfYear(date);\r\n }\r\n};\r\n/**\r\n * Returns a display label for the dates period display\r\n * @param viewLength view length\r\n * @param date view date\r\n * @returns display label\r\n */\r\nexport const getPeriodDisplayLabel = (\r\n viewLength: ViewLengths,\r\n date: Timestamp,\r\n compact: boolean,\r\n customDays?: number,\r\n customStart?: boolean,\r\n) => {\r\n const start = getViewStartDate(viewLength, date, customStart);\r\n const end = getViewEndDate(viewLength, date, customDays, customStart);\r\n if (start === undefined || end === undefined) {\r\n return undefined;\r\n }\r\n switch (viewLength) {\r\n case 'year':\r\n return `${dateUtils.format(start, 'yyyy')}`;\r\n case 'quarter':\r\n if (isSameYear(start, end)) {\r\n return `${dateUtils.format(start, 'MMM')} - ${dateUtils.format(\r\n end,\r\n 'MMM yyyy',\r\n )}`;\r\n } else {\r\n return `${dateUtils.format(start, 'MMM yyyy')} - ${dateUtils.format(\r\n end,\r\n 'MMM yyyy',\r\n )}`;\r\n }\r\n case 'month':\r\n if (isSameYear(start, end)) {\r\n if (isSameMonth(start, end)) {\r\n return dateUtils.format(date, 'MMM');\r\n } else {\r\n return `${dateUtils.format(start, 'MMM dd')} - ${dateUtils.format(\r\n end,\r\n 'MMM dd yyyy',\r\n )}`;\r\n }\r\n } else {\r\n return `${dateUtils.format(start, 'MMM dd yyyy')} - ${dateUtils.format(\r\n end,\r\n 'MMM dd yyyy',\r\n )}`;\r\n }\r\n case 'day':\r\n return dateUtils.format(date, compact ? 'MMM dd' : 'MMM dd, yyyy');\r\n case 'week':\r\n if (isSameMonth(start, end)) {\r\n return `${dateUtils.format(start, 'MMM dd')} - ${dateUtils.format(\r\n end,\r\n 'dd',\r\n )}`;\r\n } else {\r\n return `${dateUtils.format(start, 'MMM dd')} - ${dateUtils.format(\r\n end,\r\n 'MMM dd',\r\n )}`;\r\n }\r\n case 'twodays':\r\n case 'customdays':\r\n case 'customPeriod':\r\n return `${dateUtils.format(\r\n start,\r\n compact ? 'MMM dd' : 'MMM dd, yyyy',\r\n )} - ${dateUtils.format(end, compact ? 'dd' : 'MMM dd')}`;\r\n default:\r\n assertExhaustive(viewLength);\r\n }\r\n};\r\n\r\nexport const periodTypeToLengthType = (\r\n periodType: PeriodTypes,\r\n): ViewLengths | undefined => {\r\n switch (periodType) {\r\n case 'Today':\r\n case 'Yesterday':\r\n case 'Tomorrow':\r\n return 'day';\r\n case 'TodayTomorrow':\r\n return 'twodays';\r\n case 'ThisWeek':\r\n case 'LastWeek':\r\n case 'NextWeek':\r\n return 'week';\r\n case 'LastMonth':\r\n case 'ThisMonth':\r\n case 'NextMonth':\r\n return 'month';\r\n case 'LastQuarter':\r\n case 'ThisQuarter':\r\n case 'NextQuarter':\r\n return 'quarter';\r\n case 'LastYear':\r\n case 'ThisYear':\r\n case 'NextYear':\r\n return 'year';\r\n default:\r\n return undefined;\r\n }\r\n};\r\nexport const lengthTypeToPeriodType = (\r\n lengthType: ViewLengths,\r\n): PeriodTypes | undefined => {\r\n switch (lengthType) {\r\n case 'day':\r\n return 'Today';\r\n case 'twodays':\r\n return 'TodayTomorrow';\r\n case 'week':\r\n return 'ThisWeek';\r\n case 'month':\r\n return 'ThisMonth';\r\n case 'customdays':\r\n return 'CustomDate';\r\n case 'quarter':\r\n return 'ThisQuarter';\r\n case 'year':\r\n return 'ThisYear';\r\n default:\r\n return undefined;\r\n }\r\n};\r\nexport const viewStateFromFilter = (\r\n periodType: PeriodTypesEntity | SchedulerDatePositionUnion,\r\n): Pick | undefined => {\r\n const periodTypeUnion =\r\n (periodType as PeriodTypesEntity)?.Id ??\r\n (periodType as SchedulerDatePositionUnion);\r\n const schedulerPreset: SchedulerDatePositionUnion | undefined =\r\n SchedulerDatePositionArray.find(\r\n f => f.toLowerCase() === periodTypeUnion.toLowerCase(),\r\n );\r\n if (schedulerPreset === undefined) {\r\n return undefined;\r\n }\r\n const x = DatesRange.fromPreset(\r\n { Id: schedulerPreset as PeriodTypes, Name: '' },\r\n null,\r\n null,\r\n );\r\n\r\n if (x.start === null) {\r\n return undefined;\r\n }\r\n const length = periodTypeToLengthType(periodTypeUnion);\r\n if (length === undefined) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n preset: schedulerPreset,\r\n viewLength: length,\r\n date: serializeSchedulerDate(x.start),\r\n };\r\n};\r\nexport const getPeriodFromViewLength = (\r\n length: ViewLengths,\r\n date: Date,\r\n customDays?: number,\r\n) => {\r\n let value = Object.assign(\r\n new PresetDatesRange(),\r\n {\r\n type:\r\n (getPeriodTypesEntityById(\r\n lengthTypeToPeriodType(length),\r\n ) as PeriodTypesEntity) ??\r\n (getPeriodTypesEntity('CustomDate') as PeriodTypesEntity),\r\n },\r\n DatesRange.fromPreset(\r\n (getPeriodTypesEntityById(\r\n lengthTypeToPeriodType(length),\r\n ) as PeriodTypesEntity) ??\r\n (getPeriodTypesEntity('CustomDate') as PeriodTypesEntity),\r\n length === 'customdays' ? date : date,\r\n length === 'customdays'\r\n ? dateUtils.addDays(date, customDays ?? 3)\r\n : dateUtils.parseISO(date),\r\n ),\r\n );\r\n return value;\r\n};\r\nexport function timelineColumnWidth(isMobile: boolean) {\r\n return isMobile ? 100 : 300;\r\n}\r\nexport const MatchUnitSlotToEnd = (\r\n startTime: Timestamp,\r\n endTime: Timestamp,\r\n unitType: RestrictDurationUnitTypes,\r\n amount: number,\r\n) => {\r\n const start = dateUtils.parseISO(startTime);\r\n const end = dateUtils.parseISO(endTime);\r\n let dateSt = start;\r\n let slotLength = 0;\r\n let lastCorrectEnd = new Date();\r\n let diffDuration = amount;\r\n switch (unitType) {\r\n case RestrictDurationUnitTypes.LimitMinutes:\r\n while (dateSt < end) {\r\n dateSt = dateUtils.addMinutes(dateSt, amount);\r\n slotLength++;\r\n }\r\n lastCorrectEnd = dateUtils.addMinutes(dateSt, -amount);\r\n diffDuration = dateUtils.getMinutesDiff(end, dateSt);\r\n let newMinutesEnd =\r\n slotLength > 1\r\n ? diffDuration <= amount / 2\r\n ? dateSt\r\n : lastCorrectEnd\r\n : dateSt;\r\n return newMinutesEnd;\r\n case RestrictDurationUnitTypes.LimitHours:\r\n while (dateSt < end) {\r\n dateSt = dateUtils.addHours(dateSt, amount);\r\n slotLength++;\r\n }\r\n lastCorrectEnd = dateUtils.addHours(dateSt, -amount);\r\n diffDuration = dateUtils.getHoursDiff(end, dateSt);\r\n let newHoursEnd =\r\n slotLength > 1\r\n ? diffDuration <= amount / 2\r\n ? dateSt\r\n : lastCorrectEnd\r\n : dateSt;\r\n return newHoursEnd;\r\n case RestrictDurationUnitTypes.LimitDays:\r\n while (dateSt < end) {\r\n dateSt = dateUtils.addDays(dateSt, amount);\r\n slotLength++;\r\n }\r\n lastCorrectEnd = dateUtils.addDays(dateSt, -amount);\r\n diffDuration = dateUtils.getDaysDiff(end, dateSt);\r\n let newDaysEnd =\r\n slotLength > 1\r\n ? diffDuration <= amount / 2\r\n ? dateSt\r\n : lastCorrectEnd\r\n : dateSt;\r\n return newDaysEnd;\r\n case RestrictDurationUnitTypes.LimitWeeks:\r\n while (dateSt < end) {\r\n dateSt = dateUtils.addWeeks(dateSt, amount);\r\n slotLength++;\r\n }\r\n lastCorrectEnd = dateUtils.addWeeks(dateSt, -amount);\r\n diffDuration = dateUtils.differenceInWeeks(end, dateSt);\r\n let newWeekEnd =\r\n slotLength > 1\r\n ? diffDuration <= amount / 2\r\n ? dateSt\r\n : lastCorrectEnd\r\n : dateSt;\r\n return newWeekEnd;\r\n case RestrictDurationUnitTypes.LimitMonths:\r\n while (dateSt < end) {\r\n dateSt = dateUtils.addMonths(dateSt, amount);\r\n slotLength++;\r\n }\r\n lastCorrectEnd = dateUtils.addMonths(dateSt, -amount);\r\n diffDuration = dateUtils.getMonthDiff(end, dateSt);\r\n let newMonthEnd =\r\n slotLength > 1\r\n ? diffDuration <= amount / 2\r\n ? dateSt\r\n : lastCorrectEnd\r\n : dateSt;\r\n return newMonthEnd;\r\n }\r\n};\r\nexport function adjustToTimeSlot(\r\n startTime: Date,\r\n endTime: Date,\r\n workingHours: Array,\r\n minDuration?: number,\r\n tz?: ITimeZone,\r\n singleClick?: boolean,\r\n) {\r\n let result = {\r\n start: startTime,\r\n end: endTime,\r\n };\r\n if (workingHours.length > 0) {\r\n // let correctEnd = endTime > correctStart ? endTime : correctStart;\r\n let slots = getSlotsFromWorkingHours(\r\n startTime,\r\n endTime,\r\n workingHours,\r\n tz,\r\n true,\r\n );\r\n let weekStartDay = dateUtils.getDay(startTime);\r\n let startSlots = slots.filter(\r\n s =>\r\n s.DayOfWeek === weekStartDay &&\r\n s.StartTime <= startTime &&\r\n dateUtils.getDayOfYear(s.StartTime) ===\r\n dateUtils.getDayOfYear(startTime),\r\n );\r\n if (startSlots.length === 0) {\r\n startSlots = slots.filter(s => s.StartTime <= startTime);\r\n }\r\n if (startSlots.length > 0) {\r\n let startOrdered = orderBy(startSlots, f => f.StartTime, 'desc');\r\n result.start = startOrdered[0].StartTime;\r\n }\r\n let correctEnd = endTime;\r\n if (!!minDuration && minDuration > 0) {\r\n if (dateUtils.differenceInMinutes(endTime, result.start) < minDuration) {\r\n correctEnd = dateUtils.addMinutes(result.start, minDuration);\r\n }\r\n }\r\n let weekEndDay = dateUtils.getDay(correctEnd);\r\n let endSlots = slots.filter(\r\n s =>\r\n s.DayOfWeek === weekEndDay &&\r\n s.EndTime >= correctEnd &&\r\n s.EndTime > result.start &&\r\n dateUtils.getDayOfYear(s.EndTime) ===\r\n dateUtils.getDayOfYear(correctEnd),\r\n );\r\n if (endSlots.length === 0) {\r\n endSlots = slots.filter(\r\n s => s.EndTime >= correctEnd && s.EndTime > result.start,\r\n );\r\n }\r\n if (endSlots.length > 0) {\r\n let endOrdered = orderBy(endSlots, f => f.EndTime, 'asc');\r\n result.end = endOrdered[0].EndTime;\r\n }\r\n return result;\r\n } else {\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Generates an array of working slots based on the provided working hours within a specified time range.\r\n *\r\n * @param startTime - The start time of the range to generate slots for.\r\n * @param endTime - The end time of the range to generate slots for.\r\n * @param workingHours - An array of working hours data transfer objects (DTOs) that specify the working hours for each day of the week.\r\n * @param tz - (Optional) The time zone information to convert the working hours to UTC.\r\n * @param withEdges - (Optional) A boolean flag indicating whether to include slots at the edges of the specified time range.\r\n * @returns An array of working slots within the specified time range.\r\n */\r\nexport function getSlotsFromWorkingHours(\r\n startTime: Date,\r\n endTime: Date,\r\n workingHours: Array,\r\n tz?: ITimeZone,\r\n withEdges?: boolean,\r\n): Array {\r\n let workingSlots: Array = [];\r\n let startOfWeek = dateUtils.startOfWeek(startTime);\r\n let endOfWeek = dateUtils.endOfWeek(endTime);\r\n let diffDuration = dateUtils.differenceInDays(endOfWeek, startOfWeek);\r\n let startCounter = withEdges ? -1 : 0;\r\n let endCounter = withEdges ? diffDuration + 1 : diffDuration;\r\n for (let i = startCounter; i <= endCounter; i++) {\r\n let day = dateUtils.addDays(startOfWeek, i);\r\n let dayOfWeek = dateUtils.getDay(day);\r\n let slots = workingHours.filter(f => f.DayOfWeek === dayOfWeek);\r\n if (slots.length > 0) {\r\n slots.forEach(f => {\r\n let start = fromTimZoneToUTC(day, f.StartTime, tz?.Iana);\r\n let end = fromTimZoneToUTC(day, f.EndTime, tz?.Iana);\r\n workingSlots.push({\r\n StartTime: start,\r\n EndTime: end,\r\n DayOfWeek: dayOfWeek,\r\n });\r\n });\r\n }\r\n }\r\n return workingSlots;\r\n}\r\n","export enum InvoiceFundingType {\r\n //All,\r\n FundingType_Internal = 0,\r\n FundingType_External = 1,\r\n}\r\n","/**\r\n *\r\n * DateLabel\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { dateUtils } from 'utils/date-utils';\r\n\r\nexport interface DateLabelProps {\r\n value: Date | string | null;\r\n}\r\n\r\nexport function DateLabel(props: DateLabelProps) {\r\n return <>{dateUtils.shortDateFormat(props.value)};\r\n}\r\n","export enum ScreenToShowOn {\r\n ShowOn_InvoicesList = 1,\r\n ShowOn_InvoiceBatches = 2,\r\n}\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { BaseURLPicker } from 'app/components/BasicPickers/BaseURLPicker';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nconst url = '/api/odata/v4/InstrumentCatFilter';\r\nexport const initInstrumentCatData = (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return Promise.resolve([]);\r\n }\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Name asc',\r\n $filter: new Condition>(\r\n 'Id',\r\n ODataOperators.Equals,\r\n initval,\r\n ).toString(),\r\n $select: 'Id,Name',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n};\r\n\r\nexport const InstrumentCatFilter = (props: IFilterComponentProps) => {\r\n const handleChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","import { UserMultiPicker } from 'app/components/pickers/AutocompletePickers/UserMultiPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { IUserFilterDto } from 'api/odata/generated/entities/IUserFilterDto';\r\n\r\nexport const UserAssetContactMultiFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default UserAssetContactMultiFilter;\r\n","import { ReactElement } from 'react';\r\nimport { Entity } from 'types/common';\r\n\r\nexport type TabType = string | number;\r\nexport interface TabContent extends Entity {\r\n icon?: ReactElement;\r\n title?: string;\r\n disabled?: boolean;\r\n startIcon?: ReactElement;\r\n endIcon?: ReactElement;\r\n Content: ReactElement;\r\n}\r\n\r\nexport interface GroupedTab {\r\n groupId: TabType;\r\n groupName: string;\r\n tabs: Array;\r\n}\r\n\r\nexport type GroupedTabContent =\r\n | (TabContent & T)\r\n | GroupedTab;\r\n\r\nexport function isGroupedTab(tab: GroupedTabContent): tab is GroupedTab {\r\n return tab['groupId'] !== undefined;\r\n}\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { VariantType } from 'notistack';\r\nimport { IResponseType } from 'types/ResponseType';\r\n\r\nexport const GetResponseMessages = (\r\n response,\r\n infoText: string,\r\n): IResponseType => {\r\n let messages: IResponseType = {\r\n SuccessMessages: [],\r\n ErrorMessages: [],\r\n WarningMessages: [],\r\n };\r\n if (response.SuccessMessages && response.SuccessMessages.length > 0) {\r\n response.SuccessMessages.forEach(element => {\r\n messages.SuccessMessages.push(element);\r\n });\r\n }\r\n if (response.ErrorMessages && response.ErrorMessages.length > 0) {\r\n response.ErrorMessages.forEach(element => {\r\n messages.ErrorMessages.push(element);\r\n });\r\n }\r\n if (response.WarningMessages && response.WarningMessages.length > 0) {\r\n response.WarningMessages.forEach(element => {\r\n messages.WarningMessages.push(element);\r\n });\r\n }\r\n if (\r\n messages.SuccessMessages.length === 0 &&\r\n response.ErrorMessages.length === 0 &&\r\n response.WarningMessages.length === 0\r\n ) {\r\n messages.SuccessMessages = [infoText];\r\n }\r\n return messages;\r\n};\r\n\r\nconst GetMessagesArray = (response: IResponseType) => {\r\n const res: INotification[] = [];\r\n if (response.ErrorMessages.length > 0) {\r\n response.ErrorMessages.forEach(errmsg =>\r\n res.push({\r\n variant: 'error',\r\n message: errmsg,\r\n }),\r\n );\r\n }\r\n if (response.SuccessMessages.length > 0) {\r\n response.SuccessMessages.forEach(sccmsg =>\r\n res.push({\r\n variant: 'success',\r\n message: sccmsg,\r\n }),\r\n );\r\n }\r\n if (response.WarningMessages.length > 0) {\r\n response.WarningMessages.forEach(wrnmsg =>\r\n res.push({\r\n variant: 'warning',\r\n message: wrnmsg,\r\n }),\r\n );\r\n }\r\n return res;\r\n};\r\n\r\nexport const DoAction1 = (\r\n f: (item: Model) => Promise,\r\n item: Model,\r\n t: TFunction,\r\n): Promise => {\r\n return new Promise((resolve, reject) => {\r\n return f(item)\r\n .then(response => {\r\n const messages: IResponseType = GetResponseMessages(\r\n response,\r\n t(translations.Success) as string,\r\n );\r\n resolve(messages);\r\n })\r\n .catch(error => {\r\n console.log('status error', error);\r\n let err = t(translations.Failed) as string;\r\n reject(err);\r\n });\r\n });\r\n};\r\n\r\nexport interface INotification {\r\n variant?: VariantType;\r\n message: string;\r\n}\r\n\r\nexport const DoAction = async (\r\n f: (item: Model) => Promise,\r\n item: Model,\r\n t: TFunction,\r\n handleSubmitCallResult: (values: INotification[]) => void,\r\n) => {\r\n try {\r\n const response = await DoAction1(f, item, t);\r\n handleSubmitCallResult(GetMessagesArray(response));\r\n } catch (error) {\r\n handleSubmitCallResult([\r\n {\r\n variant: 'error',\r\n message: error as string,\r\n },\r\n ]);\r\n }\r\n};\r\n\r\nexport const insertUserAD = (item: { Name: string }) => {\r\n const params = { Id: -1, Name: item.Name };\r\n return httpClient.post(`/api/odata/v4/UsersADImport`, params);\r\n};\r\n","import { httpClient } from 'api/HttpClient';\r\nimport { PeriodTypes } from 'app/components/DatePeriods';\r\n\r\nexport interface UpdateModel {\r\n Async: boolean;\r\n Recalculate: boolean;\r\n Item: {\r\n ServiceGroupsCsv: string;\r\n UserGroupsCsv?: string;\r\n PeriodType?: PeriodTypes;\r\n Start: Date | string;\r\n End: Date | string;\r\n Remarks: string;\r\n BudgetIds: number[];\r\n BudgetIncluded?: boolean;\r\n invoiceBy?: number;\r\n CoreInvoiceBy: string;\r\n InvoiceCreatedBy: string;\r\n InvoiceVat: string;\r\n FundingTypeId?: number;\r\n CoreBy: number;\r\n ShowZeroAmountInvoices?: boolean;\r\n ShowInvoicePartialEvents: boolean;\r\n };\r\n}\r\nexport class BillingPreviewApi {\r\n FormView1_UpdateItem = (item: UpdateModel) => {\r\n return httpClient.post(`/api/odata/v4/BillingPreview`, item);\r\n };\r\n}\r\n","import { CellProps, Renderer } from 'react-table';\r\nimport { AlignRight } from '../AlignRight';\r\n\r\nconst PercentageRenderer: Renderer>> = ({\r\n value,\r\n}: {\r\n value: number | null;\r\n}) => (value === null ? null : {value?.toFixed(2)} %);\r\n\r\nexport default PercentageRenderer;\r\n","import { IArticleDto } from 'api/odata/generated/entities/IArticleDto';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useArticlesSlice } from 'app/pages/ArticlesPage/slice';\r\nimport { useDispatch } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { AccessibleMuiLink } from 'app/components/BasicLinks/AccessibleMuiLink';\r\n\r\nconst TruncatedLabel = styled('span')({\r\n width: '30ch',\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n});\r\n\r\nexport const ArticleLink = (props: {\r\n value?: IArticleDto;\r\n Id?: number;\r\n externalId?: string;\r\n externalIdSource?: string;\r\n children: React.ReactNode;\r\n title?: string;\r\n useSidePanel?: boolean;\r\n openPanelWithCover?: (state: SidePanelOpenState) => void;\r\n}) => {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { actions } = useArticlesSlice();\r\n const openArticle = useOpenArticlePopUp();\r\n const open = () => {\r\n if (props.Id === 0) {\r\n dispatch(actions.clearArticleDetails());\r\n }\r\n openArticle(\r\n {\r\n value: props.value,\r\n Id: props.Id,\r\n externalId: props.externalId,\r\n externalIdSource: props.externalIdSource,\r\n useSidePanel: props.useSidePanel,\r\n },\r\n props.openPanelWithCover,\r\n );\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const useOpenArticlePopUp = () => {\r\n const { openPanel } = useSidePanelState();\r\n return React.useCallback(\r\n (\r\n props: {\r\n value?: IArticleDto;\r\n Id?: number;\r\n externalId?: string;\r\n externalIdSource?: string;\r\n useSidePanel?: boolean;\r\n },\r\n openPanelWithCover?: (state: SidePanelOpenState) => void,\r\n ) => {\r\n const panelState = {\r\n renderPageType: RenderPageType.Article,\r\n renderPageProps: props,\r\n expanded: false,\r\n useSidePanel: props.useSidePanel,\r\n isCover: props.useSidePanel,\r\n } as SidePanelOpenState;\r\n if (!!openPanelWithCover) {\r\n openPanelWithCover(panelState);\r\n } else {\r\n openPanel({\r\n renderPageType: RenderPageType.Article,\r\n renderPageProps: props,\r\n expanded: false,\r\n useSidePanel: false,\r\n isCover: false,\r\n } as SidePanelOpenState);\r\n }\r\n },\r\n [openPanel],\r\n );\r\n};\r\n","/**\r\n *\r\n * NotAvailable\r\n *\r\n */\r\n// import { Box, Grid, makeStyles, Theme, createStyles } from '@material-ui/core';\r\nimport BasicTypography from 'app/components/Typography/BasicTypography';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { NotAvailableSVG } from 'app/components/BasicIcons/SvgIcons';\r\nimport { Body } from 'app/components/Typography';\r\nimport { translations } from 'locales/translations';\r\nimport * as React from 'react';\r\nimport { Helmet } from 'react-helmet-async';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components/macro';\r\nimport { toRootedURL } from 'utils/url-utils';\r\n// import { ErrorsPageWrapper } from '../NotAllowedPage';\r\n\r\nexport interface NotAvailableProps {}\r\n\r\nexport function NotAvailable(props: NotAvailableProps) {\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n \r\n {t(translations.NotAvailablePage)}\r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n {' '}\r\n {t(translations.NotAvailablePage)}\r\n \r\n \r\n \r\n {t(translations.NotAvailablePageDescription)}\r\n \r\n \r\n\r\n \r\n {' '}\r\n window.open(toRootedURL(`/`), '_self')}\r\n >\r\n {t(translations.GoBackToHome)}\r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n\r\nexport const ErrorsPageWrapper = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n flex-direction: column;\r\n gap: 16px;\r\n padding: 16px;\r\n @media (min-width: 600px) {\r\n flex-direction: row;\r\n gap: 64px;\r\n }\r\n & .icon-section {\r\n font-size: 200px;\r\n @media (min-width: 600px) {\r\n font-size: 400px;\r\n padding-right: 32px;\r\n }\r\n }\r\n & .content-section {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n max-width: 320px;\r\n @media (min-width: 600px) {\r\n max-width: 420px;\r\n }\r\n }\r\n`;\r\n","import { WaitingListSignUpLink } from 'app/pages/Actions/GlobalSelectedActions/OpenWaitingList';\r\nimport { IReservationWaitingListDto } from 'app/pages/ReservationWaitingListPage/IReservationWaitingListDto';\r\nimport { getIsRowSimpleMode } from 'app/pages/ReservationWaitingListPage/SignUpWaitingListDetails/utils';\r\nimport { selectUsageEnabled } from 'app/slice/selectors';\r\nimport { translations } from 'locales/translations';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { CellProps, Renderer } from 'react-table';\r\n\r\ntype RecordType = IReservationWaitingListDto;\r\nconst UserNotificationsStateRenderer: Renderer> = ({\r\n value,\r\n row: { original },\r\n}) => {\r\n const { t } = useTranslation();\r\n const usageEnabled = useSelector(selectUsageEnabled);\r\n\r\n const state = getIsRowSimpleMode(original, usageEnabled);\r\n return (\r\n \r\n {state.isSimpleMode ? (\r\n \r\n {(t(translations.WhenToNotify_SimpleMode) as string).replace(\r\n '{0}',\r\n state.hoursCount.toString(),\r\n )}\r\n \r\n ) : (\r\n \r\n {(t(translations.WhenToNotify_AdvancedMode) as string).replace(\r\n '{0}',\r\n state.notificationsLength.toString(),\r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default UserNotificationsStateRenderer;\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.labelPrint || initialState;\r\n\r\nexport const selectLabelPrint = createSelector([selectSlice], state => state);\r\n","import * as React from 'react';\r\nimport { FieldHookConfig, useField } from 'formik';\r\nimport { FormControl, FormGroup } from '@material-ui/core';\r\nimport { IFieldProps } from './FormRender/IFormFieldSetting';\r\nimport { HexColorPicker } from 'react-colorful';\r\nimport { InfoIcon } from '../BasicIcons/InfoIcon';\r\nimport { TextField, TextFieldProps } from '../TextField';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\n\r\nexport const FormColorPicker = ({\r\n label,\r\n name,\r\n onBlur,\r\n onChange,\r\n value,\r\n ...props\r\n}: TextFieldProps & FieldHookConfig & IFieldProps) => {\r\n const { t } = useTranslation();\r\n const [field, meta, helpers] = useField({ name, ...props });\r\n\r\n const handleChange = e => {\r\n if (onChange !== undefined) {\r\n onChange(e);\r\n }\r\n field.onChange(e);\r\n };\r\n\r\n const handleColorPickerChange = (e: string) => {\r\n helpers.setValue(e);\r\n };\r\n\r\n //RENDER\r\n return (\r\n <>\r\n \r\n \r\n \r\n {props.info ? : null}\r\n {props.InputProps?.endAdornment}\r\n \r\n ),\r\n }}\r\n {...props}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const getRandomColor = () => {\r\n let options = '0123456789ABCDEF';\r\n let color = '#';\r\n for (let index = 0; index < 6; index++) {\r\n color += options[Math.floor(Math.random() * options.length)];\r\n }\r\n return color;\r\n};\r\n","import { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { CellProps, Renderer } from 'react-table';\r\n\r\nexport const DurationRenderer: Renderer>> = ({\r\n value,\r\n}) => {\r\n const { t } = useTranslation();\r\n if (value === null || value === undefined) {\r\n return t(translations.NA);\r\n }\r\n let totalSeconds = parseInt(value);\r\n if (isNaN(totalSeconds)) {\r\n return t(translations.NA);\r\n }\r\n const hours = Math.floor(totalSeconds / 3600);\r\n totalSeconds -= hours * 3600;\r\n const minutes = Math.floor(totalSeconds / 60);\r\n totalSeconds -= minutes * 60;\r\n const seconds = totalSeconds;\r\n\r\n return [hours, minutes, seconds]\r\n .map(f => String(f).padStart(2, '0'))\r\n .join(':');\r\n};\r\nexport default DurationRenderer;\r\n","import React from 'react';\r\nimport {\r\n BaseOptionsMultiPicker,\r\n BaseOptionsMultiPickerProps,\r\n} from '../BaseOptionsMultiPicker';\r\nimport { GetOptionsFilterFunction } from 'utils/enumKeys';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface EnumMultiPickerProps\r\n extends Omit<\r\n BaseOptionsMultiPickerProps,\r\n 'getOptions' | 'value' | 'onChange'\r\n > {\r\n EnumNamesArray: Array;\r\n value: TKey[] | null;\r\n onChange: (value: TKey[]) => void;\r\n nameRender?: (value: TKey) => string;\r\n}\r\n\r\nexport function EnumMultiPicker({\r\n value,\r\n onChange,\r\n nameRender,\r\n EnumNamesArray,\r\n ...props\r\n}: EnumMultiPickerProps) {\r\n const { t } = useTranslation();\r\n const options = React.useMemo(\r\n () =>\r\n EnumNamesArray.map(key => ({\r\n Id: key,\r\n Name: !!nameRender ? nameRender(key) : t(key) ?? key,\r\n })),\r\n [nameRender, EnumNamesArray, t],\r\n );\r\n\r\n const getOptions = React.useMemo(\r\n () => GetOptionsFilterFunction(options),\r\n [options],\r\n );\r\n const selectedOption = React.useMemo(\r\n () => options.filter(f => value?.includes(f.Id)) ?? null,\r\n [options, value],\r\n );\r\n const handleChange = (value: Entity[]) => {\r\n onChange?.(value.map(e => e.Id));\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\n/**\r\n * Provides a picker with the predefined options based on the array of the enum names\r\n * @param array Array of the Union type enum names\r\n * @returns\r\n */\r\nexport function withEnumMultiOptions(\r\n array: Array,\r\n) {\r\n return (Component: React.ComponentType>) => {\r\n return (props: Omit, 'EnumNamesArray'>) => (\r\n \r\n );\r\n };\r\n}\r\n","export enum JoinStatusEnum {\r\n Undefined = 0,\r\n Approved = 1,\r\n Pending = 2,\r\n Disapproved = 3,\r\n}\r\n","export enum DeatilsOperations {\r\n add,\r\n edit,\r\n}\r\n","/**\r\n *\r\n * UserGroupFilter\r\n *\r\n */\r\nimport { UserGroupPicker } from 'app/components/pickers/AutocompletePickers/UserGroupPicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const UserGroupFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default UserGroupFilter;\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.internalIdLogin || initialState;\r\n\r\nexport const selectInternalIdLogin = createSelector(\r\n [selectSlice],\r\n state => state,\r\n);\r\nexport const selectInternalIdLoginUserId = createSelector(\r\n [selectInternalIdLogin],\r\n state => state.identity?.Id,\r\n);\r\nexport const selectInternalIdLoginUserName = createSelector(\r\n [selectInternalIdLogin],\r\n state => state.identity?.Name,\r\n);\r\nexport const selectLoginType = createSelector(\r\n [selectSlice],\r\n state => state.identity?.LoginType,\r\n);\r\n","/**\r\n *\r\n * CustomPickerFilter\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { CustomPicker } from 'app/components/pickers/CustomPicker';\r\n\r\nexport interface CustomPickerFilterProps extends IFilterComponentProps {\r\n disabled?: boolean;\r\n placeholder?: string;\r\n}\r\nexport function CustomPickerFilter(props: CustomPickerFilterProps) {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n []}\r\n isOpen={props.open}\r\n onChange={handleOnChange}\r\n size=\"small\"\r\n placeholder={\r\n props.placeholder !== undefined\r\n ? props.placeholder\r\n : t(translations.AllValues)\r\n }\r\n ariaLabel={props.label}\r\n id={props.id}\r\n fullWidth={props.fullWidth}\r\n disabled={props.disabled}\r\n />\r\n );\r\n}\r\nexport default CustomPickerFilter;\r\n","/**\r\n *\r\n * CustomPicker\r\n *\r\n */\r\nimport * as React from 'react';\r\nimport { Entity } from 'types/common';\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\n\r\nexport interface CustomPickerProps\r\n extends Omit>, 'loadData'> {\r\n disabled?: boolean;\r\n}\r\nexport const initCustomPicker = (initval: string | undefined) => {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n};\r\nexport function CustomPicker(props: CustomPickerProps) {\r\n const loadData = () => {\r\n const options =\r\n props.customData !== undefined\r\n ? (props.customData as unknown as Entity[])\r\n : ([] as Entity[]);\r\n return Promise.resolve[]>(options);\r\n };\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nimport { RootState } from 'types';\r\nimport { initialState } from '.';\r\n\r\nconst selectSlice = (state: RootState) => state.publicAsset || initialState;\r\n\r\nexport const selectPublicAsset = createSelector([selectSlice], state => state);\r\n\r\nexport const selectPublicAssetProcessing = createSelector(\r\n [selectPublicAsset],\r\n state => state.processing,\r\n);\r\n\r\nexport const selectSelectedUnitItem = createSelector(\r\n [selectPublicAsset],\r\n state => state.data,\r\n);\r\nexport const selectSelectedUnits = createSelector(\r\n [selectPublicAsset],\r\n state => state.selectedData,\r\n);\r\nexport const selectSelectedUnitSearch = createSelector(\r\n [selectPublicAsset],\r\n state => state.dataSearch,\r\n);\r\nexport const selectAssetPublicFilter = createSelector(\r\n [selectPublicAsset],\r\n state => state.filters,\r\n);\r\nexport const selectMenuOpen = createSelector(\r\n [selectPublicAsset],\r\n state => state.menuOpen,\r\n);\r\nexport const selectGlobalSearchOpen = createSelector(\r\n [selectPublicAsset],\r\n state => state.globalSearchOpen,\r\n);\r\n","import { UserGroupMultiPicker } from 'app/components/pickers/AutocompletePickers/UserGroupMultiPicker';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const UserGroupMultiFilter = (props: IFilterComponentProps) => {\r\n const handleChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","import { lazyLoad } from 'utils/loadable';\r\n\r\nexport const PopupImportExport = lazyLoad(\r\n () => import('./index'),\r\n module => module.PopupImportExport,\r\n);\r\n","import { Entity } from 'types/common';\r\nimport { httpClient } from './HttpClient';\r\nimport { EmailTypeUnion } from './odata/generated/enums/EmailType';\r\nconst url = '/api/odata/v4/email';\r\nexport const EmailApi = {\r\n SendEmail: ({ Files, Bcc, Cc, To, ...data }: IEmail) => {\r\n const form = new FormData();\r\n Object.keys(data).forEach(k => {\r\n form.append(k, data[k]);\r\n });\r\n form.append('Bcc', Bcc.map(v => v.Id) as any);\r\n form.append('Cc', Cc.map(v => v.Id) as any);\r\n form.append('To', To.map(v => v.Id) as any);\r\n\r\n for (let i = 0; !!Files && i < Files?.length; i++) {\r\n let item = Files?.item(i);\r\n if (!!item) {\r\n form.append('file' + i, item);\r\n }\r\n }\r\n return httpClient.post(url, form);\r\n },\r\n};\r\n\r\nexport interface IEmail {\r\n Id?: number;\r\n Type: EmailTypeUnion;\r\n To: Entity[];\r\n ExtraTo?: string;\r\n Cc: Entity[];\r\n ExtraCc?: string;\r\n Bcc: Entity[];\r\n ExtraBcc?: string;\r\n Subject: string;\r\n Body?: string;\r\n Files?: FileList;\r\n SaveToLog: boolean;\r\n SaveAsTemlate?: boolean;\r\n ServiceGroup?: number;\r\n}\r\n","import { EmailApi, IEmail } from 'api/EmailApi';\r\nimport { extractErrorMessages } from 'api/utils';\r\nimport { useAppSettingsSlice } from 'app/slice';\r\nimport { translations } from 'locales/translations';\r\nimport { useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { IResponseType } from 'types/ResponseType';\r\nimport { useResponseModel } from './useResponseModel';\r\n\r\nexport const useSendMail = (setBusy?: (busy: boolean) => void) => {\r\n const dispatch = useDispatch();\r\n const { actions } = useAppSettingsSlice();\r\n const { t } = useTranslation();\r\n const response = useResponseModel();\r\n\r\n return useCallback(\r\n (email: IEmail) => {\r\n try {\r\n setBusy?.(true);\r\n EmailApi.SendEmail(email)\r\n .then(v => {\r\n const value = v as IResponseType;\r\n response(value);\r\n })\r\n .catch(e => {\r\n //console.log(e);\r\n const error = extractErrorMessages(e);\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: !!error\r\n ? error[0]\r\n : (t(translations.err_SendEmailToUserFailed) as string),\r\n }),\r\n );\r\n setBusy?.(false);\r\n })\r\n .finally(() => setBusy?.(false));\r\n } catch (e) {\r\n const error = extractErrorMessages(e);\r\n dispatch(\r\n actions.addNotification({\r\n variant: 'error',\r\n message: !!error\r\n ? error[0]\r\n : (t(translations.err_SendEmailToUserFailed) as string),\r\n }),\r\n );\r\n setBusy?.(false);\r\n }\r\n },\r\n [actions, dispatch, response, setBusy, t],\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport {\r\n BaseOptionsMultiPicker,\r\n BaseOptionsMultiPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsMultiPicker';\r\nimport { ReservationStatus } from 'api/odata/generated/enums/ReservationStatus';\r\nimport { selectReservationStatuses } from 'app/slice/selectors';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\n\r\nexport interface ReservationStatusMultiProps\r\n extends Omit, 'getOptions'> {}\r\n\r\nexport const initReservationStatusMultiData =\r\n (t: TFunction) => (initialValue: string | undefined) => {\r\n const id =\r\n initialValue\r\n ?.split('|')\r\n ?.map(id => parseInt(id))\r\n ?.filter(id => !isNaN(id) && ReservationStatus[id] !== undefined)\r\n ?.map(id => ({\r\n Id: id,\r\n Name: t(translations[ReservationStatus[id]]),\r\n })) ?? [];\r\n return Promise.resolve(id);\r\n };\r\n\r\nexport function ReservationStatusMultiPicker(\r\n props: ReservationStatusMultiProps,\r\n) {\r\n const { t } = useTranslation();\r\n const options = useSelector(state => selectReservationStatuses(state, t));\r\n const getOptions = React.useCallback(() => options, [options]);\r\n return (\r\n \r\n );\r\n}\r\n","import { ReservationStatusMultiPicker } from 'app/components/pickers/AutocompletePickers/ResrevationStatusMultiPicker';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const ResrvationStatusMultiFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n []}\r\n ariaLabel={props.label}\r\n fullWidth={props.fullWidth}\r\n size=\"small\"\r\n id={props.id}\r\n />\r\n );\r\n};\r\nexport default ResrvationStatusMultiFilter;\r\n","import { BaseOptionsMultiPicker } from 'app/components/BasicPickers/BaseOptionsMultiPicker';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '..';\r\n\r\nconst getOptions: (t: TFunction) => Entity[] = (t: TFunction) => {\r\n return [\r\n {\r\n Id: 1,\r\n Name: t(translations.Future),\r\n },\r\n {\r\n Id: 2,\r\n Name: t(translations.Ongoing),\r\n },\r\n ];\r\n};\r\n\r\nexport const getInitUpcomingReservationfilterMultiData =\r\n (t: TFunction) => (initval: string | undefined) => {\r\n if (initval === undefined) {\r\n return Promise.resolve([]);\r\n }\r\n return Promise.resolve(\r\n getOptions(t).filter(f =>\r\n initval\r\n .split('|')\r\n .map(s => parseInt(s))\r\n .includes(f.Id),\r\n ),\r\n );\r\n };\r\n\r\nexport const UpcomingReservationfilter = (props: IFilterComponentProps) => {\r\n const { t } = useTranslation();\r\n const handleChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n return (\r\n getOptions(t)}\r\n onChange={handleChange}\r\n value={props.value}\r\n fullWidth={props.fullWidth}\r\n placeholder={t(translations.AllReservations)}\r\n size=\"small\"\r\n id={props.id}\r\n />\r\n );\r\n};\r\n","/**\r\n *\r\n * WorkflowBookingFilter\r\n *\r\n */\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { WorkflowBookingPicker } from 'app/components/pickers/AutocompletePickers/WorkflowBookingPicker';\r\n\r\nexport const WorkflowBookingFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\nexport default WorkflowBookingFilter;\r\n","/**\r\n *\r\n * ReservationByIdWithPartsPicker\r\n *\r\n */\r\nimport { httpClient } from 'api/HttpClient';\r\nimport { IReservationByIdFilterDto } from 'api/odata/generated/entities/IReservationByIdFilterDto';\r\n\r\nimport {\r\n AutocompletePicker,\r\n AutocompletePickerProps,\r\n} from 'app/components/BasicPickers/AutocompletePicker';\r\nimport { getAutoCompleteLoadDataFn } from 'app/components/BasicPickers/Utils/autoCompletePickerUtils';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface ReservationByIdWithPartsPickerProps\r\n extends Omit<\r\n AutocompletePickerProps,\r\n 'loadData'\r\n > {}\r\n\r\nconst url = '/api/odata/v4/ReservationByIdFilter/WithParts';\r\nexport const initReservationByIdWithPartsData = (\r\n initval: string | undefined,\r\n) => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n } else {\r\n const id = parseInt(initval);\r\n const params: {\r\n $orderby: string;\r\n $filter?: string;\r\n $select: string;\r\n $top: number;\r\n $skip: number;\r\n } = {\r\n $orderby: 'Id desc',\r\n $filter: '(Id eq ' + id + ')',\r\n $select:\r\n 'Id,Name,FatherId,ParentAssemblyReservationId,TopAssemblyReservationId,Repeat_Period,Repeat,ReservationParts',\r\n $skip: 0,\r\n $top: 1,\r\n };\r\n return httpClient\r\n .get(url, params)\r\n .then(response => response.value as Entity[]);\r\n }\r\n};\r\n\r\nexport function ReservationByIdWithPartsPicker(\r\n props: ReservationByIdWithPartsPickerProps,\r\n) {\r\n const loadData = getAutoCompleteLoadDataFn({\r\n url,\r\n predicates: props.predicates,\r\n select: [\r\n 'Id',\r\n 'Name',\r\n 'FatherId',\r\n 'ParentAssemblyReservationId',\r\n 'TopAssemblyReservationId',\r\n 'Repeat_Period',\r\n 'Repeat',\r\n 'ReservationParts',\r\n ],\r\n });\r\n return (\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * ReservationByIdWithPartsFilter\r\n *\r\n */\r\n\r\nimport { ReservationByIdWithPartsPicker } from 'app/components/pickers/AutocompletePickers/ReservationByIdWithPartsPicker';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const ReservationByIdWithPartsFilter = (\r\n props: IFilterComponentProps,\r\n) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n return (\r\n \r\n );\r\n};\r\nexport default ReservationByIdWithPartsFilter;\r\n","import { Chip, ChipProps, Theme, useTheme } from '@material-ui/core';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { BasicTypography } from 'app/components/Typography/BasicTypography';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components';\r\nimport { bookitColors } from 'styles/colors/bookitColors';\r\nimport { Entity } from 'types/common';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { FilterChip, FilterDisplayProps } from '..';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { FilterValueType } from '../../FilterValueType';\r\nimport clsx from 'clsx';\r\n\r\nconst InstrumentsFilterRoot = styled.div`\r\n &.filter-root {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n gap: 6px;\r\n border: 1px solid ${bookitColors.grayscale.grayBorders};\r\n padding: 0px 12px;\r\n border-radius: 8px;\r\n padding: 0px 12px;\r\n &.more-padding {\r\n padding: 6px 12px;\r\n }\r\n & .display-mobile-text {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 10ch;\r\n }\r\n }\r\n`;\r\nconst InstrumentFilterChip = styled(\r\n ({\r\n color,\r\n theme,\r\n ...other\r\n }: {\r\n color?: string;\r\n theme: Theme;\r\n } & ChipProps) => ,\r\n)`\r\n &.instrument-display-root {\r\n gap: ${props => props.theme.spacing(1)}px;\r\n max-width: 28ch;\r\n border-radius: 8px;\r\n color: white;\r\n background-color: ${props => (!!props.color ? props.color : '#ccc')};\r\n height: 28px;\r\n &::first-child {\r\n margin: 0;\r\n }\r\n & .instrument-display-text {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 20ch;\r\n color: inherit;\r\n }\r\n }\r\n`;\r\nfunction IsNotEmptyArray(\r\n entity: FilterValueType | undefined,\r\n): entity is Extract {\r\n return Array.isArray(entity) && !!entity.length;\r\n}\r\nexport function InstrumentsFilterDisplay(\r\n props: FilterDisplayProps,\r\n) {\r\n const { t } = useTranslation();\r\n const theme = useTheme();\r\n const isMobile = DetectIsMobile();\r\n const value = props.filter.value;\r\n const items = IsNotEmptyArray(value) ? (value as Array>) : [];\r\n\r\n const handleDelete = event => {\r\n props.onDelete(props.filter);\r\n };\r\n return items.length > 0 ? (\r\n 7 })}\r\n >\r\n \r\n {t(props.filter.displayNameKey)}\r\n {':'}\r\n {props.filter.isInversed ? ' Not' : ''}\r\n \r\n\r\n {items\r\n .filter(chip => chip.Name !== undefined)\r\n .map(chip => (\r\n \r\n {chip.Name !== undefined && chip.Name.length > 20 ? (\r\n \r\n \r\n \r\n {chip.Name}\r\n \r\n \r\n \r\n ) : (\r\n \r\n {chip.Name}\r\n \r\n )}\r\n \r\n }\r\n // onDelete={handleDelete}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {t(props.filter.displayNameKey)}\r\n \r\n : \r\n \r\n {t(translations.NA)}\r\n \r\n \r\n }\r\n onDelete={handleDelete}\r\n />\r\n );\r\n}\r\n","import {\r\n BaseOptionsMultiPicker,\r\n BaseOptionsMultiPickerProps,\r\n} from 'app/components/BasicPickers/BaseOptionsMultiPicker';\r\nimport { AssemblyTypesShort } from 'enums/InstrumentListAssemblyTypes';\r\nimport { TFunction } from 'i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\n\r\nexport interface AssemblyTypeShortMultiPickerProps\r\n extends Omit, 'getOptions'> {}\r\n\r\nconst options = (t: TFunction) => [\r\n { Id: AssemblyTypesShort.Normal, Name: t(translations.Normal) },\r\n { Id: AssemblyTypesShort.AssemblyParts, Name: t(translations.AssemblyParts) },\r\n];\r\n\r\nexport const initAssemblyTypeShortData =\r\n (t: TFunction) =>\r\n (initval: string | undefined): Promise[]> => {\r\n if (initval === undefined) {\r\n return new Promise[]>((resolve, reject) => {\r\n resolve([] as Entity[]);\r\n });\r\n }\r\n return Promise.resolve(\r\n options(t).filter(f =>\r\n initval\r\n .split('|')\r\n .map(s => parseInt(s))\r\n .includes(f.Id),\r\n ),\r\n );\r\n };\r\n\r\nexport const AssemblyTypeShortMultiPicker = (\r\n props: AssemblyTypeShortMultiPickerProps,\r\n) => {\r\n const { t } = useTranslation();\r\n const getOptions = useCallback(() => options(t), [t]);\r\n return ;\r\n};\r\n","import { AssemblyTypeShortMultiPicker } from 'app/components/pickers/StaticOptionsPickers/AssemblyTypeshortMultiPicker';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { translations } from 'locales/translations';\r\nimport { Entity } from 'types/common';\r\n\r\nexport const AssemblyTypeShortMultiFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity[]) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n \r\n );\r\n};\r\n","import { translations } from 'locales/translations';\r\nimport { IFilterSettings } from 'app/components/BasicTable/BasicFilter/IFilterSettings';\r\nimport { IReservationHistoryDto } from 'api/odata/generated/entities/IReservationHistoryDto';\r\nimport { Condition, ODataOperators } from 'api/odata/ODataFilter';\r\nimport { getBudgetsFilterSettings } from 'app/components/BasicTable/Filters/ProjectFilter/getBudgetsFilterSettings';\r\nimport { AssetCatGroupFilter } from 'app/components/BasicTable/Filters/AssetCatGroupFilter';\r\nimport { DatesRangeFilter } from 'app/components/BasicTable/Filters/DatesRangeFilter';\r\nimport { InstituteFilter } from 'app/components/BasicTable/Filters/InstituteFilter';\r\nimport { AssetCatFilter } from 'app/components/BasicTable/Filters/AssetCatFilter';\r\nimport { CampusFilter } from 'app/components/BasicTable/Filters/CampusFilter';\r\nimport { PresetDatesRange } from 'types/PresetDatesRange';\r\nimport { getPeriodTypesEntity } from 'app/components/DatePeriods';\r\nimport { BooleanPickerFilter } from 'app/components/BasicTable/Filters/BooleanPickerFilter';\r\nimport {\r\n formatQueryStringDateValue,\r\n GetBooleanEntity,\r\n GetBooleanOrUndefined,\r\n GetDateOrUndefined,\r\n getDefaultFilterDatePeriod,\r\n GetNumberOrUndefined,\r\n GetPartialEntity,\r\n GetRawValue,\r\n presetDatesRangeToQueryString,\r\n initPickerValue,\r\n URLSearchParamsCI,\r\n GetStringOrUndefined,\r\n arrayToQueryString,\r\n getNumberEntityArray,\r\n getDefaultFilterNumberPeriod,\r\n NumebersRangeToQueryString,\r\n initMultiPickerValue,\r\n initMultiExPickerValue,\r\n initExPickerValue,\r\n getStringEntityArray,\r\n} from 'app/components/BasicTable/types/FilterParam';\r\nimport { initAssetCatGroupData } from 'app/components/pickers/AutocompletePickers/AssetCatGroupPicker';\r\nimport { initAssetCatData } from 'app/components/pickers/AutocompletePickers/AssetCatPicker';\r\nimport { initInstituteData } from 'app/components/pickers/AutocompletePickers/InstitutePicker';\r\nimport { initCampusData } from 'app/components/pickers/AutocompletePickers/CampusPicker';\r\nimport { UserFilter } from 'app/components/BasicTable/Filters/UserFilter';\r\nimport { initUserData } from 'app/components/pickers/AutocompletePickers/UserPicker';\r\nimport { CustomDate } from 'types/CustomDate';\r\nimport {\r\n AppSettings,\r\n IsAssetFieldEnabled,\r\n IsModuleEnabled,\r\n} from 'types/AppSettings';\r\nimport { KnownModules } from 'types/KnownModules';\r\nimport { initReservationStatusMultiData } from 'app/components/pickers/AutocompletePickers/ResrevationStatusMultiPicker';\r\nimport ResrvationStatusMultiFilter from 'app/components/BasicTable/Filters/ResrvationStatusMultiFilter';\r\nimport ServiceGroupFilter from 'app/components/BasicTable/Filters/ServiceGroupFilter';\r\nimport NumbersRangeFilter from 'app/components/BasicTable/Filters/NumbersRangeFilter';\r\nimport DepartmentFilter from 'app/components/BasicTable/Filters/DepartmentFilter';\r\nimport { initDepartmentData } from 'app/components/pickers/AutocompletePickers/DepartmentPicker';\r\nimport { initInstituteTypeData } from 'app/components/pickers/AutocompletePickers/InstituteTypePicker';\r\nimport {\r\n DatePickerFilter,\r\n TextFieldFilter,\r\n} from 'app/components/BasicTable/Filters';\r\nimport { initRoomData } from 'app/components/pickers/AutocompletePickers/RoomPicker';\r\nimport { RoomPickerFilter } from 'app/components/BasicTable/Filters/RoomPickerFilter';\r\nimport { initBuildingData } from 'app/components/pickers/AutocompletePickers/BuildingPicker';\r\nimport UserDisciplineFilter from 'app/components/BasicTable/Filters/UserDisciplineFilter';\r\nimport { initUserDisciplineData } from 'app/components/pickers/AutocompletePickers/UserDisciplinePicker';\r\nimport { AssetAttributes } from 'enums/AssetAttributes';\r\nimport { initAvailabilityTypeData } from 'app/components/pickers/AutocompletePickers/AvailabilityTypePicker';\r\nimport { AvailabilityTypeBookableFilter } from 'app/components/BasicTable/Filters/AvailabilityTypeBookableFilter';\r\nimport { GetPageFilters } from 'app/components/BasicTable/BasicFilter/GetPageFilters';\r\nimport {\r\n initOnlineServicesData,\r\n ServiceUrl,\r\n} from 'app/components/pickers/MultiSelectPickers/OnlineServicesPicker';\r\nimport {\r\n ServiceAdminFilter,\r\n ServiceMultiFilter,\r\n ServiceReservationFilter,\r\n} from 'app/components/BasicTable/Filters/ServiceMultiFilter';\r\nimport { TFunction } from 'i18next';\r\nimport {\r\n getInitUpcomingReservationfilterMultiData,\r\n UpcomingReservationfilter,\r\n} from 'app/components/BasicTable/Filters/UpcomingReservationfilter';\r\nimport { isArray } from 'lodash';\r\nimport { IsEntity } from 'app/components/BasicTable/BasicFilter/AppliedFilterComponent';\r\nimport { Entity, Identifiable } from 'types/common';\r\nimport { initWorkflowBookingData } from 'app/components/pickers/AutocompletePickers/WorkflowBookingPicker';\r\nimport WorkflowBookingFilter from 'app/components/BasicTable/Filters/WorkflowBookingFilter';\r\nimport { AllowedSettings, GlobalSettings } from 'utils/globalSettings';\r\nimport NumberFieldFilter from 'app/components/BasicTable/Filters/NumberFieldFilter';\r\nimport InstituteTypeFilter from 'app/components/BasicTable/Filters/InstituteTypeFilter';\r\nimport { BuildingPickerFilter } from 'app/components/BasicTable/Filters/BuildingPickerFilter';\r\nimport { initServiceGroupsData } from 'app/components/pickers/ServiceGroupPicker';\r\nimport ReservationByIdWithPartsFilter from 'app/components/BasicTable/Filters/ReservationByIdWithPartsFilter';\r\nimport { InstrumentsFilterDisplay } from 'app/components/BasicTable/BasicFilter/FilterDisplay/InstrumentsFilterDisplay';\r\nimport { initReservationByIdWithPartsData } from 'app/components/pickers/AutocompletePickers/ReservationByIdWithPartsPicker';\r\nimport { IReservationByIdFilterDto } from 'api/odata/generated/entities/IReservationByIdFilterDto';\r\nimport { UserGroupMultiFilter } from 'app/components/BasicTable/Filters/UserGroupMultiFilter';\r\nimport { initUserGroupMultiData } from 'app/components/pickers/AutocompletePickers/UserGroupMultiPicker';\r\nimport { AssemblyTypeShortMultiFilter } from 'app/components/BasicTable/Filters/AssemblyTypeShortMultiFilter';\r\nimport { initAssemblyTypeShortData } from 'app/components/pickers/StaticOptionsPickers/AssemblyTypeshortMultiPicker';\r\n\r\nexport const GetFilters: GetPageFilters =\r\n (t, appSettings, user, settings) => search => {\r\n const params = new URLSearchParamsCI(search);\r\n var result: IFilterSettings[] = [];\r\n result.push({\r\n id: 'period',\r\n fieldName: 'StartTime',\r\n fieldName1: 'EndTime',\r\n displayNameKey: translations.RG_DatePeriod,\r\n operator: ODataOperators.Between,\r\n defaultValue: PresetDatesRange.fromPreset(\r\n getPeriodTypesEntity('ThisMonth'),\r\n ),\r\n value: getDefaultFilterDatePeriod('period', 'st', 'et', params),\r\n queryStringSerializer: presetDatesRangeToQueryString(\r\n 'period',\r\n 'st',\r\n 'et',\r\n ),\r\n component: DatesRangeFilter,\r\n notNullable: true,\r\n urlKey: 'period',\r\n });\r\n pushServicesFilter(result, t, params, true);\r\n result.push({\r\n id: 'StatusId',\r\n fieldName: 'StatusId',\r\n displayNameKey: translations.Status,\r\n operator: ODataOperators.Includes,\r\n queryStringSerializer: arrayToQueryString('stid'),\r\n value: getNumberEntityArray(params, 'stid'),\r\n initData: initMultiPickerValue(initReservationStatusMultiData(t)),\r\n component: ResrvationStatusMultiFilter,\r\n urlKey: 'stid',\r\n });\r\n pushBookedByFilter(result, t, params);\r\n const budgetsFilter = getBudgetsFilterSettings(\r\n params,\r\n 'BudgetId',\r\n appSettings,\r\n );\r\n if (budgetsFilter !== undefined) {\r\n result.push(budgetsFilter);\r\n }\r\n pushAssetCatGroupFilter(result, t, params, true);\r\n pushAssetCatFilter(result, t, params, true);\r\n pushAssetAvailabilityFilter(result, t, params, true);\r\n result.push({\r\n id: 'InstituteId',\r\n fieldName: 'InstituteId',\r\n displayNameKey: translations.Institute,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'iid',\r\n value: GetPartialEntity(GetNumberOrUndefined(GetRawValue(params, 'iid'))),\r\n initData: initPickerValue(initInstituteData),\r\n component: InstituteFilter,\r\n notDefault: true,\r\n urlKey: 'iid',\r\n });\r\n\r\n result.push({\r\n id: 'StatusIdX',\r\n fieldName: 'StatusId',\r\n displayNameKey: translations.ExcludeStatus,\r\n operator: ODataOperators.Excludes,\r\n queryStringSerializer: arrayToQueryString('stidx'),\r\n value: getNumberEntityArray(params, 'stidx'),\r\n initData: initMultiPickerValue(initReservationStatusMultiData(t)),\r\n component: ResrvationStatusMultiFilter,\r\n notDefault: true,\r\n urlKey: 'stidx',\r\n });\r\n\r\n result.push({\r\n customFilter: (value, setting) => {\r\n //To be able to display records when \"All My Managed Services\" option is selected\r\n if (!!value && setting.fieldName === 'EquipmentId') {\r\n if (\r\n isArray(value) &&\r\n (value as []).find(x => (x as Entity).Id === -999)\r\n ) {\r\n return new Condition(\r\n setting.fieldName,\r\n ODataOperators.NotEquals,\r\n -999,\r\n ).toString();\r\n } else {\r\n return new Condition(\r\n setting.fieldName,\r\n setting.operator,\r\n value,\r\n ).toString();\r\n }\r\n }\r\n },\r\n id: 'ServiceGroupId',\r\n fieldName: 'ServiceGroupId',\r\n displayNameKey: translations.ServiceGroup,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'ServiceGroupId',\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'ServiceGroupId')),\r\n ),\r\n initData: initExPickerValue(initServiceGroupsData),\r\n component: ServiceGroupFilter,\r\n notDefault: true,\r\n });\r\n result.push({\r\n id: 'ADGroup',\r\n fieldName: 'ADGroup',\r\n displayNameKey: translations.UserGroup,\r\n operator: ODataOperators.Includes,\r\n value: getStringEntityArray(params, 'adg'),\r\n component: UserGroupMultiFilter,\r\n queryStringSerializer: arrayToQueryString('adg'),\r\n initData: initMultiPickerValue(initUserGroupMultiData),\r\n notDefault: true,\r\n urlKey: 'adg',\r\n });\r\n result.push({\r\n id: 'relId',\r\n fieldName: 'Id',\r\n displayNameKey: translations.ReservationsRelatedToReservationId,\r\n operator: ODataOperators.Includes,\r\n queryStringSerializer: 'relId',\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'relId')),\r\n ),\r\n component: ReservationByIdWithPartsFilter,\r\n initData: initExPickerValue(initReservationByIdWithPartsData),\r\n notDefault: true,\r\n urlKey: 'relId',\r\n refreshAfterInit: true,\r\n customFilter: (value, setting) => {\r\n if (!!value && setting.fieldName === 'Id') {\r\n let part = value as IReservationByIdFilterDto;\r\n if (!!part.ReservationParts && part.ReservationParts.length > 0) {\r\n let ids = part.ReservationParts.map(item => {\r\n return { Id: item };\r\n }) as Identifiable[];\r\n\r\n return `${new Condition(\r\n setting.fieldName,\r\n ODataOperators.Includes,\r\n ids,\r\n ).toString()} or ${new Condition(\r\n 'TopAssemblyReservationId',\r\n ODataOperators.Includes,\r\n ids,\r\n ).toString()}`;\r\n } else {\r\n return `${new Condition(\r\n setting.fieldName,\r\n ODataOperators.Equals,\r\n part.Id,\r\n ).toString()} or ${new Condition(\r\n 'TopAssemblyReservationId',\r\n ODataOperators.Equals,\r\n part.Id,\r\n ).toString()}`;\r\n }\r\n }\r\n },\r\n });\r\n result.push({\r\n id: 'LastUpdateAdminId',\r\n fieldName: 'LastUpdateAdminId',\r\n displayNameKey: translations.LastUpdateAdmin,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'LastUpdateAdminId',\r\n value: GetPartialEntity(\r\n GetStringOrUndefined(GetRawValue(params, 'LastUpdateAdminId')),\r\n ),\r\n component: UserFilter,\r\n initData: initPickerValue(initUserData),\r\n notDefault: true,\r\n });\r\n result.push({\r\n id: 'InsertedById',\r\n fieldName: 'InsertedById',\r\n displayNameKey: translations.OrderedBy,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'InsertedById',\r\n value: GetPartialEntity(\r\n GetStringOrUndefined(GetRawValue(params, 'InsertedById')),\r\n ),\r\n component: UserFilter,\r\n initData: initPickerValue(initUserData),\r\n notDefault: true,\r\n });\r\n result.push({\r\n id: 'StartTimeDate',\r\n fieldName: 'StartTime',\r\n queryStringSerializer: formatQueryStringDateValue('startsOn'),\r\n displayNameKey: translations.ReservationStartsOn,\r\n operator: ODataOperators.Equals,\r\n defaultValue: new CustomDate(),\r\n value: GetDateOrUndefined(GetRawValue(params, 'startsOn'), 'date'),\r\n component: DatePickerFilter,\r\n notDefault: true,\r\n urlKey: 'startsOn',\r\n });\r\n result.push({\r\n id: 'EndTimeDate',\r\n fieldName: 'EndTime',\r\n queryStringSerializer: formatQueryStringDateValue('endsOn'),\r\n displayNameKey: translations.ReservationEndsOn,\r\n operator: ODataOperators.Equals,\r\n defaultValue: new Date(),\r\n value: GetDateOrUndefined(GetRawValue(params, 'endsOn'), 'date'),\r\n component: DatePickerFilter,\r\n notDefault: true,\r\n urlKey: 'endsOn',\r\n });\r\n result.push({\r\n id: 'StartTime',\r\n fieldName: 'StartTime',\r\n displayNameKey: translations.StartTime,\r\n operator: ODataOperators.Between,\r\n defaultValue: PresetDatesRange.fromPreset(\r\n getPeriodTypesEntity('ThisMonth'),\r\n ),\r\n value: getDefaultFilterDatePeriod(\r\n 'StartTime-period',\r\n 'StartTime-st',\r\n 'StartTime-et',\r\n params,\r\n ),\r\n queryStringSerializer: presetDatesRangeToQueryString(\r\n 'StartTime-period',\r\n 'StartTime-st',\r\n 'StartTime-et',\r\n ),\r\n component: DatesRangeFilter,\r\n notDefault: true,\r\n urlKey: 'StartTime-period',\r\n });\r\n result.push({\r\n id: 'EndTime',\r\n fieldName: 'EndTime',\r\n displayNameKey: translations.EndTime,\r\n operator: ODataOperators.Between,\r\n defaultValue: PresetDatesRange.fromPreset(\r\n getPeriodTypesEntity('ThisMonth'),\r\n ),\r\n value: getDefaultFilterDatePeriod(\r\n 'EndTime-period',\r\n 'EndTime-st',\r\n 'EndTime-et',\r\n params,\r\n ),\r\n queryStringSerializer: presetDatesRangeToQueryString(\r\n 'EndTime-period',\r\n 'EndTime-st',\r\n 'EndTime-et',\r\n ),\r\n component: DatesRangeFilter,\r\n notDefault: true,\r\n urlKey: 'EndTime-period',\r\n });\r\n\r\n result.push({\r\n id: 'EquipmentId',\r\n fieldName: 'Tutoring',\r\n displayNameKey: translations.Tutoring,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'tr',\r\n value: GetBooleanEntity(\r\n GetBooleanOrUndefined(GetRawValue(params, 'tr')),\r\n t,\r\n ),\r\n component: BooleanPickerFilter,\r\n notDefault: true,\r\n urlKey: 'tr',\r\n });\r\n result.push({\r\n id: 'Loanable',\r\n fieldName: 'Loanable',\r\n displayNameKey: translations.Loanable,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'loan',\r\n value: GetBooleanEntity(\r\n GetBooleanOrUndefined(GetRawValue(params, 'loan')),\r\n t,\r\n ),\r\n component: BooleanPickerFilter,\r\n notDefault: true,\r\n urlKey: 'loan',\r\n });\r\n result.push({\r\n id: 'TrainingSignUp',\r\n fieldName: 'TrainingSignUp',\r\n queryStringSerializer: 'TrainingSignUp',\r\n displayNameKey: translations.TrainingSignUp,\r\n operator: ODataOperators.Equals,\r\n value: GetBooleanEntity(\r\n GetBooleanOrUndefined(GetRawValue(params, 'TrainingSignUp')),\r\n t,\r\n ),\r\n component: BooleanPickerFilter,\r\n notDefault: true,\r\n });\r\n result.push({\r\n id: 'RecordDate',\r\n fieldName: 'RecordDate',\r\n displayNameKey: translations.RecordDate,\r\n operator: ODataOperators.Between,\r\n defaultValue: PresetDatesRange.fromPreset(\r\n getPeriodTypesEntity('ThisMonth'),\r\n ),\r\n value: getDefaultFilterDatePeriod(\r\n 'RecordDate-period',\r\n 'RecordDate-st',\r\n 'RecordDate-et',\r\n params,\r\n ),\r\n queryStringSerializer: presetDatesRangeToQueryString(\r\n 'RecordDate-period',\r\n 'RecordDate-st',\r\n 'RecordDate-et',\r\n ),\r\n component: DatesRangeFilter,\r\n notDefault: true,\r\n urlKey: 'RecordDate-period',\r\n });\r\n result.push({\r\n id: 'DurationH',\r\n fieldName: 'DurationH',\r\n displayNameKey: translations.Duration,\r\n operator: ODataOperators.Between,\r\n value: getDefaultFilterNumberPeriod('DurationH', params),\r\n queryStringSerializer: NumebersRangeToQueryString('DurationH'),\r\n component: NumbersRangeFilter,\r\n notDefault: true,\r\n urlKey: 'DurationH',\r\n });\r\n result.push({\r\n id: 'DepartmentId',\r\n fieldName: 'DepartmentId',\r\n queryStringSerializer: 'DepartmentId',\r\n displayNameKey: translations.Department,\r\n operator: ODataOperators.Equals,\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'DepartmentId')),\r\n ),\r\n initData: initPickerValue(initDepartmentData),\r\n component: DepartmentFilter,\r\n notDefault: true,\r\n });\r\n result.push({\r\n id: 'AssetType',\r\n fieldName: 'AssetTypeId',\r\n displayNameKey: translations.InstrumentType,\r\n operator: ODataOperators.Includes,\r\n queryStringSerializer: arrayToQueryString('AssetType'),\r\n value: getNumberEntityArray(params, 'AssetType'),\r\n initData: initMultiPickerValue(initAssemblyTypeShortData(t)),\r\n component: AssemblyTypeShortMultiFilter,\r\n urlKey: 'AssetType',\r\n notDefault: true,\r\n });\r\n result.push({\r\n notDefault: true,\r\n id: 'InstituteTypeId',\r\n fieldName: 'InstituteTypeId',\r\n queryStringSerializer: 'InstituteTypeId',\r\n displayNameKey: translations.InstituteType,\r\n operator: ODataOperators.Equals,\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'InstituteTypeId')),\r\n ),\r\n initData: initPickerValue(initInstituteTypeData),\r\n component: InstituteTypeFilter,\r\n });\r\n result.push({\r\n id: 'AssetModel',\r\n fieldName: 'AssetModel',\r\n queryStringSerializer: 'AssetModel',\r\n displayNameKey: translations.Model,\r\n operator: ODataOperators.Contains,\r\n value: GetRawValue(params, 'AssetModel'),\r\n component: TextFieldFilter,\r\n notDefault: true,\r\n });\r\n result.push({\r\n id: 'AssetModelNumber',\r\n fieldName: 'AssetModelNumber',\r\n queryStringSerializer: 'AssetModelNumber',\r\n displayNameKey: translations.ModelNumber,\r\n operator: ODataOperators.Contains,\r\n value: GetRawValue(params, 'AssetModelNumber'),\r\n component: TextFieldFilter,\r\n notDefault: true,\r\n });\r\n pushRoomFilter(result, t, params, true);\r\n pushBuildingFilter(result, t, params, true);\r\n result.push({\r\n id: 'UserDisciplineId',\r\n fieldName: 'UserDisciplineId',\r\n displayNameKey: translations.Discipline,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'UserDisciplineId',\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'UserDisciplineId')),\r\n ),\r\n component: UserDisciplineFilter,\r\n initData: initPickerValue(initUserDisciplineData),\r\n notDefault: true,\r\n });\r\n result.push({\r\n fieldName: 'StaffUser',\r\n displayNameKey: translations.StaffUser,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'StaffUser',\r\n value: GetPartialEntity(\r\n GetStringOrUndefined(GetRawValue(params, 'StaffUser')),\r\n ),\r\n initData: initPickerValue(initUserData),\r\n component: UserFilter,\r\n notDefault: true,\r\n });\r\n\r\n pushBudgetManagerFilter(appSettings, result, t, params, true);\r\n pushCampusFilter(appSettings, result, t, params, true);\r\n\r\n result.push({\r\n id: 'upcomingReservations',\r\n fieldName: 'StartTime',\r\n queryStringSerializer: arrayToQueryString('upcomingReservations'),\r\n operator: ODataOperators.Equals,\r\n displayNameKey: translations.UpcomingReservations,\r\n value: getNumberEntityArray(params, 'upcomingReservations'),\r\n component: UpcomingReservationfilter,\r\n initData: initMultiPickerValue(\r\n getInitUpcomingReservationfilterMultiData(t),\r\n ),\r\n notDefault: true,\r\n urlKey: 'upcomingReservations',\r\n customFilter(value, settings) {\r\n if (!isArray(value) || (value ?? []).length === 0) {\r\n return undefined;\r\n }\r\n const now = new Date(); // getOffsetDate(appSettings, new Date());\r\n return (\r\n '(' +\r\n value\r\n .map(v => {\r\n if (!IsEntity(v)) return '';\r\n if (v.Id === 1) {\r\n return new Condition(\r\n 'StartTime',\r\n ODataOperators.GreaterThan,\r\n now,\r\n ).toString();\r\n }\r\n if (v.Id === 2) {\r\n return (\r\n '(' +\r\n new Condition(\r\n 'StartTime',\r\n ODataOperators.LessThanEqual,\r\n now,\r\n ).toString() +\r\n ' and ' +\r\n new Condition(\r\n 'EndTime',\r\n ODataOperators.GreaterThan,\r\n now,\r\n ).toString() +\r\n ')'\r\n );\r\n }\r\n return '';\r\n })\r\n .join(' or ') +\r\n ')'\r\n );\r\n },\r\n });\r\n pushWorkflowBookingFilter(settings, result, t, params, true);\r\n const HideTrainingSessionsSettings = settings?.GetBoolean(\r\n AllowedSettings[AllowedSettings.HideTrainingSessionsSettings],\r\n );\r\n if (!HideTrainingSessionsSettings) {\r\n result.push({\r\n id: 'TrainingSessionId',\r\n fieldName: 'SessionId',\r\n queryStringSerializer: 'TrainingSessionId',\r\n displayNameKey: translations.TrainingSessionId,\r\n operator: ODataOperators.Equals,\r\n value: GetNumberOrUndefined(GetRawValue(params, 'TrainingSessionId')),\r\n component: NumberFieldFilter,\r\n notDefault: true,\r\n });\r\n }\r\n return result;\r\n };\r\nexport function pushAssetCatGroupFilter<\r\n T extends { AssetGroupId: number | null },\r\n>(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n result.push({\r\n id: 'AssetGroupId',\r\n fieldName: 'AssetGroupId',\r\n queryStringSerializer: 'assetCatGroupId',\r\n displayNameKey: translations.AssetCatGroupName,\r\n operator: ODataOperators.Equals,\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'assetCatGroupId')),\r\n ),\r\n initData: initPickerValue(initAssetCatGroupData),\r\n component: AssetCatGroupFilter,\r\n urlType: 'assetBase',\r\n notDefault,\r\n urlKey: 'assetCatGroupId',\r\n });\r\n}\r\n\r\nexport function pushBookedByFilter(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n result.push({\r\n id: 'BookedById',\r\n fieldName: 'BookedById',\r\n displayNameKey: translations.User,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'un',\r\n value: GetPartialEntity(GetStringOrUndefined(GetRawValue(params, 'un'))),\r\n component: UserFilter,\r\n initData: initPickerValue(initUserData),\r\n notDefault,\r\n urlKey: 'un',\r\n });\r\n}\r\n\r\nexport function pushAssetAvailabilityFilter<\r\n T extends { AvailabilityTypeId: number | null },\r\n>(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n result.push({\r\n id: 'AvailabilityTypeId',\r\n fieldName: 'AvailabilityTypeId',\r\n queryStringSerializer: 'atid',\r\n displayNameKey: translations.AvailabilityType,\r\n operator: ODataOperators.Equals,\r\n value: GetPartialEntity(GetNumberOrUndefined(GetRawValue(params, 'atid'))),\r\n // TODO: set value directly instead of the initValue\r\n //initValue: getDefaultFilterValue('atid', params) as FilterValueType,\r\n initData: initPickerValue(initAvailabilityTypeData),\r\n component: AvailabilityTypeBookableFilter,\r\n notDefault,\r\n urlKey: 'atid',\r\n });\r\n}\r\n\r\nexport function pushBudgetManagerFilter<\r\n T extends { BudgetManager: string | null },\r\n>(\r\n appSettings: AppSettings | null,\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n if (IsModuleEnabled(appSettings, KnownModules.Budgets)) {\r\n result.push({\r\n id: 'BudgetManager',\r\n fieldName: 'BudgetManager',\r\n displayNameKey: translations.BudgetManager,\r\n operator: ODataOperators.Equals,\r\n // value: getDefaultFilterValue('bid', params),\r\n queryStringSerializer: 'BudgetManager',\r\n initData: initPickerValue(initUserData),\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'BudgetManager')),\r\n ),\r\n component: UserFilter,\r\n notDefault,\r\n });\r\n }\r\n}\r\n\r\nexport function pushAssetCatFilter(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n result.push({\r\n id: 'AssetCatId',\r\n fieldName: 'AssetCatId',\r\n displayNameKey: translations.AssetCategory,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'assetCatID',\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'assetCatID')),\r\n ),\r\n initData: initPickerValue(initAssetCatData),\r\n component: AssetCatFilter,\r\n urlType: 'assetBase',\r\n urlKey: 'assetCatID',\r\n notDefault,\r\n });\r\n}\r\n\r\nexport function pushRoomFilter(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n options?: Partial>,\r\n) {\r\n result.push({\r\n id: 'AssetRoomId',\r\n fieldName: 'AssetRoomId',\r\n queryStringSerializer: 'AssetRoomId',\r\n displayNameKey: translations.Room,\r\n operator: ODataOperators.Equals,\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'AssetRoomId')),\r\n ),\r\n initData: initPickerValue(initRoomData),\r\n component: RoomPickerFilter,\r\n notDefault,\r\n ...(options ?? {}),\r\n });\r\n}\r\n\r\n//not working\r\n/* export function pushRoomFilter<\r\n T extends {\r\n AssetRoomId: number | null;\r\n AssetBuildingId: number | null;\r\n ServiceGroupId: number | null;\r\n }\r\n>(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n result.push({\r\n id: 'AssetRoomId',\r\n fieldName: 'AssetRoomId',\r\n queryStringSerializer: 'AssetRoomId',\r\n displayName: t(translations.Room),\r\n operator: ODataOperators.Equals,\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'AssetRoomId')),\r\n ),\r\n initData: initExPickerValue(initRoomData, undefined, 'base'),\r\n component: RoomPickerFilter,\r\n dependencyProp: ['AssetBuildingId', 'ServiceGroupId'],\r\n filterPredicates: RoomByBuildingFilter,\r\n urlType: 'base',\r\n notDefault,\r\n });\r\n} */\r\n\r\nexport function pushBuildingFilter<\r\n T extends { AssetBuildingId: number | null },\r\n>(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n result.push({\r\n id: 'AssetBuildingId',\r\n fieldName: 'AssetBuildingId',\r\n queryStringSerializer: 'AssetBuildingId',\r\n displayNameKey: translations.Building,\r\n operator: ODataOperators.Equals,\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'AssetBuildingId')),\r\n ),\r\n initData: initPickerValue(initBuildingData),\r\n component: BuildingPickerFilter,\r\n urlType: 'assetBase',\r\n notDefault,\r\n });\r\n}\r\n\r\nexport function pushServicesFilter(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n includeAllMyManagedServicesOption: boolean,\r\n fieldName?: keyof T,\r\n sourceUrl?: ServiceUrl,\r\n separator?: string,\r\n) {\r\n const allMyManagedServicesOption = {\r\n Id: -999,\r\n Name: t(translations.AllMyManagedServices),\r\n };\r\n result.push({\r\n id: 'service',\r\n fieldName: fieldName || 'EquipmentId',\r\n displayNameKey: translations.Instrument,\r\n operator: ODataOperators.Includes,\r\n queryStringSerializer: arrayToQueryString('eid'),\r\n urlKey: 'eid',\r\n value: getNumberEntityArray(params, 'eid'),\r\n component:\r\n sourceUrl === 'admin'\r\n ? ServiceAdminFilter\r\n : sourceUrl === 'reserved'\r\n ? ServiceReservationFilter\r\n : ServiceMultiFilter,\r\n additionalItem: includeAllMyManagedServicesOption\r\n ? allMyManagedServicesOption\r\n : undefined,\r\n initData: initMultiExPickerValue(\r\n initOnlineServicesData,\r\n [allMyManagedServicesOption],\r\n sourceUrl,\r\n separator,\r\n ),\r\n customFilter: (value, setting) => {\r\n if (!includeAllMyManagedServicesOption) {\r\n return new Condition(\r\n setting.fieldName,\r\n setting.operator,\r\n value,\r\n setting.fieldName1,\r\n ).toString();\r\n }\r\n //To be able to display records when \"All My Managed Services\" option is selected\r\n if (!!value && setting.fieldName === 'EquipmentId') {\r\n if (\r\n isArray(value) &&\r\n (value as []).find(x => (x as Entity).Id === -999)\r\n ) {\r\n return new Condition(\r\n setting.fieldName,\r\n ODataOperators.NotEquals,\r\n -999,\r\n ).toString();\r\n } else {\r\n return new Condition(\r\n setting.fieldName,\r\n setting.operator,\r\n value,\r\n ).toString();\r\n }\r\n }\r\n },\r\n });\r\n}\r\n\r\nexport function pushServicesCalendarFilter(\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n includeAllMyManagedServicesOption: boolean,\r\n fieldName?: keyof T,\r\n sourceUrl?: ServiceUrl,\r\n separator?: string,\r\n) {\r\n const allMyManagedServicesOption = {\r\n Id: -999,\r\n Name: t(translations.AllMyManagedServices),\r\n };\r\n result.push({\r\n id: 'service',\r\n fieldName: fieldName || 'EquipmentId',\r\n displayNameKey: translations.Instrument,\r\n operator: ODataOperators.Includes,\r\n queryStringSerializer: arrayToQueryString('eid'),\r\n urlKey: 'eid',\r\n value: getNumberEntityArray(params, 'eid'),\r\n component:\r\n sourceUrl === 'admin'\r\n ? ServiceAdminFilter\r\n : sourceUrl === 'reserved'\r\n ? ServiceReservationFilter\r\n : ServiceMultiFilter,\r\n additionalItem: includeAllMyManagedServicesOption\r\n ? allMyManagedServicesOption\r\n : undefined,\r\n initData: initMultiExPickerValue(\r\n initOnlineServicesData,\r\n [allMyManagedServicesOption],\r\n sourceUrl,\r\n separator,\r\n ),\r\n renderFilterDisplay: InstrumentsFilterDisplay,\r\n });\r\n}\r\n\r\nexport function pushCampusFilter(\r\n appSettings: AppSettings | null,\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n if (IsAssetFieldEnabled(appSettings, AssetAttributes.Campus)) {\r\n result.push({\r\n id: 'campus',\r\n fieldName: 'AssetCampusId',\r\n displayNameKey: translations.Campus,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'campus',\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'campus')),\r\n ),\r\n initData: initPickerValue(initCampusData),\r\n\r\n component: CampusFilter,\r\n notDefault,\r\n urlKey: 'campus',\r\n });\r\n }\r\n}\r\nexport function pushWorkflowBookingFilter(\r\n settings: GlobalSettings | null,\r\n result: IFilterSettings[],\r\n t: TFunction,\r\n params: URLSearchParamsCI,\r\n notDefault?: boolean,\r\n) {\r\n if (\r\n settings?.GetBoolean(AllowedSettings[AllowedSettings.AllowWorkflowBooking])\r\n ) {\r\n result.push({\r\n id: 'WorkflowBooking',\r\n fieldName: 'WorkflowBookingId',\r\n displayNameKey: translations.WorkflowBooking,\r\n operator: ODataOperators.Equals,\r\n queryStringSerializer: 'wbId',\r\n value: GetPartialEntity(\r\n GetNumberOrUndefined(GetRawValue(params, 'wbId')),\r\n ),\r\n initData: initPickerValue(initWorkflowBookingData),\r\n component: WorkflowBookingFilter,\r\n notDefault,\r\n urlKey: 'wbId',\r\n });\r\n }\r\n}\r\n","import { ISavedViewDto } from 'api/odata/generated/entities/ISavedViewDto';\r\nimport { DropDown } from 'app/components/DropDown';\r\nimport * as React from 'react';\r\nimport { savedViewsApi as api } from 'api/savedViewsApi';\r\nimport { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { useSavedViewSlice } from '../SavedViewPage/slice';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { selectAuthenticatedUser } from 'app/slice/selectors';\r\nimport { Entity } from 'types/common';\r\nimport { Roles } from 'api/odata/generated/enums/Roles';\r\nimport { ListItem, MenuItem } from '@material-ui/core';\r\nimport { Button } from 'app/components/BasicButtons/Button';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { SavedViewDetailsProps } from '../SavedViewPage/Details';\r\nimport { RenderPageType } from 'app/Layout/FrontendLayout/slice/type';\r\nimport { translations } from 'locales/translations';\r\nimport { TextControlField } from 'app/components/BasicInputs/TextControlField';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {\r\n selectUpdateSavedViewCompleted,\r\n selectUpdateSavedViewHasError,\r\n} from '../SavedViewPage/slice/selectors';\r\nimport useSidePanelState, {\r\n SidePanelOpenState,\r\n} from 'app/hooks/useSidePanelOpen';\r\n\r\nexport interface AddToListsProps {\r\n rows: TRow[];\r\n getEquipments: (rows: TRow[]) => Entity[];\r\n getAssets: (rows: TRow[]) => Promise[]>;\r\n useSidePanel?: boolean;\r\n}\r\n\r\nexport function AddToLists({\r\n rows,\r\n getEquipments,\r\n getAssets,\r\n useSidePanel,\r\n}: AddToListsProps) {\r\n const { t } = useTranslation();\r\n const user = useSelector(selectAuthenticatedUser);\r\n const { openPanel } = useSidePanelState();\r\n const isAdmin = React.useMemo(() => {\r\n return (\r\n user !== undefined &&\r\n (user.Roles.indexOf(Roles.Administrators) >= 0 ||\r\n user.Roles.indexOf(Roles.GroupAdministrators) >= 0 ||\r\n user.Roles.indexOf(Roles.LabTech) >= 0)\r\n );\r\n }, [user]);\r\n const dispatch = useDispatch();\r\n const [myViews, setMyViews] = React.useState([]);\r\n const savedActions = useSavedViewSlice();\r\n const [, setLoadingCompleted] = React.useState(false);\r\n const requestUpdateCompleted = useSelector(selectUpdateSavedViewCompleted);\r\n const hasUpdateError = useSelector(selectUpdateSavedViewHasError);\r\n const [input, setInnput] = React.useState();\r\n const options = myViews.filter((item, index) =>\r\n item.Name.toLowerCase().includes((input || '').toLowerCase()),\r\n );\r\n\r\n useEffectOnMount(() => {\r\n api\r\n .getMySavedViews({\r\n user: user,\r\n serviceGroups: undefined,\r\n isAdmin: isAdmin,\r\n onlyMyView: true,\r\n })\r\n .then(response => {\r\n setMyViews(() => {\r\n return response || [];\r\n });\r\n setLoadingCompleted(true);\r\n });\r\n return () => {};\r\n });\r\n const openDetailsList = React.useCallback(\r\n (id?: number) => {\r\n let params = {\r\n id: id,\r\n useSidePanel: true,\r\n eid: getEquipments(rows)\r\n .map(f => f.Id)\r\n .join(','),\r\n } as SavedViewDetailsProps;\r\n openPanel({\r\n renderPageType: RenderPageType.SavedViewDetails,\r\n renderPageProps: params,\r\n expanded: false,\r\n useSidePanel: useSidePanel,\r\n isCover: useSidePanel,\r\n } as SidePanelOpenState);\r\n },\r\n [getEquipments, openPanel, rows, useSidePanel],\r\n );\r\n const updateAssets = React.useCallback(\r\n (id: number) => {\r\n let view = myViews.filter(f => f.Id === id)[0];\r\n getAssets(rows).then(assets => {\r\n dispatch(\r\n savedActions.actions.updateViewAssets({\r\n assets: assets,\r\n view: view,\r\n }),\r\n );\r\n });\r\n },\r\n [dispatch, getAssets, myViews, rows, savedActions.actions],\r\n );\r\n React.useEffect(() => {\r\n let active = requestUpdateCompleted && !hasUpdateError;\r\n if (active) {\r\n dispatch(savedActions.actions.resetUpdateSavedViewState());\r\n }\r\n return () => {\r\n active = false;\r\n };\r\n }, [dispatch, hasUpdateError, requestUpdateCompleted, savedActions.actions]);\r\n return (\r\n [\r\n \r\n \r\n }\r\n value={input || ''}\r\n aria-label={t(translations.SearchFilter)}\r\n inputProps={{ 'aria-label': t(translations.SearchFilter) }}\r\n onChange={e => setInnput(e.target.value)}\r\n autoFocus\r\n fullWidth\r\n />\r\n ,\r\n \r\n }\r\n onClick={() => {\r\n openDetailsList();\r\n onClose();\r\n }}\r\n >\r\n {t(translations.CreateList)}\r\n \r\n ,\r\n ...options.map(s => (\r\n {\r\n updateAssets(s.Id);\r\n onClose();\r\n }}\r\n >\r\n {s.Name}\r\n \r\n )),\r\n ]}\r\n menuProps={{\r\n anchorOrigin: {\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n },\r\n transformOrigin: {\r\n vertical: 'top',\r\n horizontal: 'left',\r\n },\r\n getContentAnchorEl: null,\r\n }}\r\n addChevron\r\n >\r\n {t(translations.AddToList)}\r\n \r\n );\r\n}\r\n","/**\r\n *\r\n * UserDisciplineFilter\r\n *\r\n */\r\nimport { UserDisciplinePicker } from 'app/components/pickers/AutocompletePickers/UserDisciplinePicker';\r\nimport * as React from 'react';\r\nimport { translations } from 'locales/translations';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Entity } from 'types/common';\r\nimport { IFilterComponentProps } from '../IFilterComponentProps';\r\n\r\nexport const UserDisciplineFilter = (props: IFilterComponentProps) => {\r\n const handleOnChange = (value: Entity | null) => {\r\n props.onChange(value);\r\n };\r\n const { t } = useTranslation();\r\n return (\r\n | undefined}\r\n onChange={handleOnChange}\r\n isOpen={props.open}\r\n placeholder={t(translations.AllValues)}\r\n fullWidth={props.fullWidth}\r\n size=\"small\"\r\n ariaLabel={props.label}\r\n id={props.id}\r\n />\r\n );\r\n};\r\nexport default UserDisciplineFilter;\r\n","import { useEffectOnMount } from 'app/hooks/useEffectOnMount';\r\nimport { getLogger } from 'utils/logLevel';\r\nimport { toRootedURL } from 'utils/url-utils';\r\n\r\nexport interface useScriptTagProps {\r\n /**\r\n * Script source - can be false or undefined for conditionally loaded scripts.\r\n * For example useScriptTag({ src: enable && '/Script/foo.js' })\r\n * useScriptTag({ src: enable ? '/Script/foo.js' : undefined })\r\n */\r\n src?: string | false;\r\n /**\r\n * Removes the script when the parent unmounts.\r\n * Default = true. Should be set to false for components that rapidly mount and remount for whatever reason.\r\n */\r\n cleanup?: boolean;\r\n /**\r\n * Async script element property. Default = true.\r\n */\r\n async?: boolean;\r\n}\r\n\r\nconst log = getLogger('useScriptTag');\r\n\r\n/**\r\n * Appends script tags to the document - useful for dynamic load of legacy scripts that live in the browser like dymo printer framework, etc.\r\n * Alternatively such scripts can be converted to esm and loaded in a more conservative way without additional hoops.\r\n * @param param0\r\n */\r\nexport function useScriptTag({\r\n src,\r\n cleanup = true,\r\n async = true,\r\n}: useScriptTagProps) {\r\n useEffectOnMount(() => {\r\n if (src === undefined) {\r\n return;\r\n }\r\n if (typeof src === 'boolean') {\r\n return;\r\n }\r\n const id = encodeURIComponent(src);\r\n let script: HTMLScriptElement | null = document.getElementById(\r\n id,\r\n ) as HTMLScriptElement;\r\n if (script === null) {\r\n script = document.createElement('script');\r\n script.src = toRootedURL(src);\r\n script.id = id;\r\n script.async = async;\r\n try {\r\n document.body.appendChild(script);\r\n log.debug('appended script: ' + src);\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n }\r\n return () => {\r\n if (cleanup && script !== null) {\r\n document.body.removeChild(script);\r\n console.debug('removed script: ' + script.src);\r\n }\r\n };\r\n });\r\n}\r\n","import { useScriptTag } from '../../hooks/useScriptTag';\r\n\r\nexport interface usePrintScriptTagsProps {\r\n dymoEnabled: boolean;\r\n zebraEnabled: boolean;\r\n}\r\n\r\n/**\r\n * Adds the required legacy printer frameworks to the document.\r\n * Required for the Print*** to operate\r\n */\r\nexport function usePrintScriptTags({\r\n dymoEnabled,\r\n zebraEnabled,\r\n}: usePrintScriptTagsProps) {\r\n useScriptTag({\r\n src: dymoEnabled && '/Scripts/dymo.connect.framework.js',\r\n cleanup: false,\r\n });\r\n useScriptTag({\r\n src: zebraEnabled && '/Script/BrowserPrint-3.0.216.min.js',\r\n cleanup: false,\r\n });\r\n useScriptTag({\r\n src: zebraEnabled && '/Script/BrowserPrint-Zebra-1.0.216.min.js',\r\n cleanup: false,\r\n });\r\n}\r\n","import { List, ListItem } from '@material-ui/core';\r\nimport { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport styled from 'styled-components';\r\n\r\nexport interface ListRendererProps {\r\n value: string[];\r\n localized?: boolean;\r\n notLocalizedValue?: string[];\r\n row?: any;\r\n}\r\nconst StyledItem = styled('span')`\r\n &.title-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n gap: 8px;\r\n }\r\n`;\r\nexport const ListRenderer = (props: ListRendererProps) => {\r\n const { value, localized, notLocalizedValue } = props;\r\n const { t } = useTranslation();\r\n const onlyone =\r\n (value.length === 1 &&\r\n (notLocalizedValue === undefined || notLocalizedValue.length === 0)) ||\r\n (value.length === 0 &&\r\n notLocalizedValue !== undefined &&\r\n notLocalizedValue.length === 1);\r\n\r\n const title = (\r\n \r\n {value.length > 0 ? (\r\n <>{localized ? (t(value[0].trim()) as string) : value[0]}\r\n ) : notLocalizedValue !== undefined && notLocalizedValue.length > 0 ? (\r\n <>{notLocalizedValue[0]}\r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n\r\n const tooltipTitle = (\r\n \r\n \r\n {value.map((item, index) => {\r\n return (\r\n \r\n {localized ? (t(item.trim()) as string) : item}\r\n \r\n );\r\n })}\r\n {notLocalizedValue !== undefined && notLocalizedValue.length > 0\r\n ? notLocalizedValue.map((item, index) => {\r\n return {item};\r\n })\r\n : ''}\r\n \r\n \r\n );\r\n\r\n const listOfItems =\r\n value.length > 0 ||\r\n (notLocalizedValue !== undefined && notLocalizedValue.length > 0) ? (\r\n onlyone ? (\r\n <>{title}\r\n ) : (\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n )\r\n ) : (\r\n <>{''}\r\n );\r\n return listOfItems;\r\n};\r\n","/**\r\n * Handy little function to filter out empty elements in array (null/undefined) while preserving type checking\r\n * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates\r\n * Example:\r\n * ```ts\r\n * const array: (string | null)[] = [1, 2, undefined, 3];\r\n * const filteredArray: string[] = array.filter(notEmpty);\r\n * ```\r\n *\r\n * ```\r\n * const array: (number | undefined)[] = [1, 2, undefined, 3];\r\n * const filteredArray: number[] = array.filter(x => x !== undefined);\r\n * Type '(number | undefined)[]' is not assignable to type 'number[]'.\r\n * Type 'number | undefined' is not assignable to type 'number'.\r\n * Type 'undefined' is not assignable to type 'number'.ts(2322) *\r\n * ```\r\n * @param value\r\n * @returns\r\n */\r\n\r\nexport function isDefined(value: TValue | undefined): value is TValue {\r\n return value !== undefined;\r\n}\r\n","import {\r\n Button,\r\n Divider,\r\n FormControl,\r\n FormHelperText,\r\n FormLabel,\r\n Input,\r\n InputLabel,\r\n InputProps,\r\n} from '@material-ui/core';\r\nimport { Body } from 'app/components/Typography';\r\nimport { InfoIcon } from 'app/components/BasicIcons/InfoIcon';\r\nimport * as React from 'react';\r\n\r\nimport cliTruncate from 'cli-truncate';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectExpandedSidePanel } from 'app/Layout/FrontendLayout/slice/selectors';\r\nimport { IconButton } from 'app/components/BasicButtons/IconButton';\r\nimport { Icon } from 'app/components/BasicIcons/FontAwesome';\r\nimport { IFormFileValue } from 'app/components/CustomForm/CustomFormUtils';\r\nimport { FileView } from './FileView';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport clsx from 'clsx';\r\n\r\nexport interface FileInputProps extends InputProps {\r\n className?: string;\r\n onFileChange?: (file: FileList | null) => void;\r\n label?: string;\r\n multiple?: boolean;\r\n uploadLabel?: string;\r\n showPreview?: boolean;\r\n removeable?: boolean;\r\n onRemove?: (value: string) => void;\r\n acceptedFiles?: string;\r\n isRequired?: string;\r\n helperText?: string;\r\n errorMesage?: string;\r\n info?: string;\r\n referenceId?: number;\r\n file?: IFormFileValue;\r\n uploadText?: string;\r\n shrinkLabel?: boolean;\r\n}\r\n\r\nexport function FileInput(props: FileInputProps) {\r\n const {\r\n className,\r\n onFileChange,\r\n onRemove,\r\n id,\r\n multiple,\r\n uploadLabel,\r\n showPreview,\r\n helperText,\r\n errorMesage,\r\n onChange,\r\n label,\r\n file,\r\n uploadText,\r\n required,\r\n shrinkLabel,\r\n acceptedFiles,\r\n } = props;\r\n const sidePanelExpanded = useSelector(selectExpandedSidePanel);\r\n //const [file, setFile] = React.useState(undefined);\r\n const isMobile = DetectIsMobile();\r\n const handleChange = (event: React.ChangeEvent) => {\r\n if (onChange) {\r\n onChange(event);\r\n } else {\r\n const files = event.target.files;\r\n if (onFileChange) {\r\n onFileChange(files);\r\n }\r\n }\r\n // if (event.target.files?.length) {\r\n // setFileName(event.target.files[event.target.files?.length - 1].name);\r\n // }\r\n };\r\n const removeFile = (fileName: string) => {\r\n if (onRemove) {\r\n onRemove(fileName);\r\n }\r\n //setFileName(undefined);\r\n };\r\n return (\r\n \r\n {label && (\r\n //\r\n \r\n {shrinkLabel ? (\r\n \r\n {label}\r\n \r\n ) : (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n )}\r\n removeFile(file.DisplayValue || '')}\r\n children={}\r\n size=\"small\"\r\n />\r\n ) : undefined\r\n }\r\n >\r\n {uploadLabel ? uploadLabel : 'Upload File'}\r\n \r\n {multiple && file ? (\r\n \r\n {cliTruncate(\r\n file.DisplayValue || '',\r\n sidePanelExpanded && !isMobile ? 35 : 22,\r\n {\r\n position: 'middle',\r\n },\r\n )}\r\n \r\n ) : (\r\n \r\n {uploadText ? uploadText : 'Please select a file...'}\r\n \r\n )}\r\n