{"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","app/components/Forms/FormsLayout/FormRightSection/index.tsx","app/components/Forms/FormsLayout/StyledForm/index.tsx","utils/userProfileSettings.ts","app/slice/selectors.ts","api/HttpClient.ts","app/components/BasicTable/types/FilterParam.ts","styles/colors/types.ts","app/components/BasicIcons/FontAwesome/index.tsx","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","app/Layout/FrontendLayout/slice/type.ts","api/odata/generated/enums/Roles.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","utils/globalSettings/GlobalSettings.ts","enums/UserAttributesEnum.ts","types/AppSettings.ts","app/components/Typography/BasicTypography.tsx","types/KnownModules.ts","app/components/BasicTooltips/Tooltip/index.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/BasicPickers/Utils/autoCompletePickerUtils.ts","app/components/AssetQuickSearch/styled.tsx","app/hooks/useSidePanelOpen.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/pages/OtherServiceDetails/Details/slice/selectors.ts","app/hooks/useAsyncAwaitedState.ts","app/Layout/FrontendLayout/components/Snackbar/types.ts","utils/globalSettings/AllowedSettings.ts","app/hooks/useSystemDate.ts","utils/string-utils.ts","app/components/BasicIcons/InfoIcon/index.tsx","app/pages/ReservationDetails/Details/slice/selectors.ts","app/components/BasicButtons/TopActionButton/index.tsx","app/components/ExternalLink/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/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","utils/logLevel.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","api/OtherServicesApi.ts","app/hooks/useAsyncGetOnMount.ts","app/pages/ReservationDetails/Details/components/useGlobalSettingsHook.ts","enums/commentReferenceTypes.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/components/BasicTable/components/BooleanRender/index.tsx","app/slice/types.ts","styles/constantVariables.ts","enums/OnlineServiceTypeEnum.ts","app/pages/UserDetails/OpenUserProfile/index.tsx","enums/Article.ts","app/components/Forms/FormConnectedFilters/slice/selectors.ts","app/components/pickers/AutocompletePickers/BudgetPicker/index.tsx","app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/selectors.ts","app/components/StyledComponents/index.tsx","app/components/DropDown/index.tsx","app/components/AssetThumbImage/getAssetImageSrc.tsx","api/ReservationsApi.ts","app/pages/Actions/GlobalSelectedActions/ValidToRender/renderTypes.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","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","app/components/BasicInputs/GhostInput/index.tsx","app/components/LargeFilesUpload/Components/useUploadToNewComment.ts","app/components/DatePicker/utils/pickerDateValidate.tsx","api/CommentsApi.ts","app/pages/ArticlesPage/slice/selectors.ts","app/pages/ReservationDetails/Details/ReservationForm/handlers.tsx","app/components/BasicPickers/AutocompleteMultiPickerEx/index.tsx","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","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","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","api/WorkOrderApi.ts","app/components/Messages/slice/type.ts","app/components/Forms/FormCheckbox.tsx","locales/i18n.ts","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/WorkOrders/WorkOrderDetailsPage/Details/slice/saga.ts","app/pages/WorkOrders/WorkOrderDetailsPage/Details/slice/index.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/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/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/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/components/pickers/MultiSelectPickers/EquipmentReservationPicker/index.tsx","app/pages/ReservationDetails/Details/components/CalculatePricing/index.tsx","app/components/Forms/FormOfflineServiceTypePicker.tsx","app/components/CommentsContainer/styled.tsx","app/components/LargeFilesUpload/slice/selectoes.ts","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","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","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","api/odata/generated/enums/FileTypes.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/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","enums/GlobalEnums.ts","app/components/ValueLabel/index.tsx","app/hooks/usePrevious.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/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","app/components/pickers/AutocompletePickers/ReasonTypePicker/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/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","app/pages/ReservationDetails/Details/slice/getBudgetVisible.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/components/CommentsContainer/IComment.ts","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","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/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/hooks/useDebugEffect.ts","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","enums/JoinStatus.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/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/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/pages/UserDetails/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/hooks/useDebugMemo.ts","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/hooks/useRequiredRedirectToCoreSelection.ts","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","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","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","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","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","getBlackColorOption","palette","common","graySubtitle","blackComponent","backgroundHover","getColorOption","color","main","light","textHover","contrastText","Icon","React","icon","colorExtend","info","iconName","defColor","getColor","WithTitle","Tooltip","title","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","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","keyValue","TryGet","GetString","typeEnum","getDefault","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","BasicTypography","italic","style","truncateSize","uppercase","typographyComponentMapping","Boolean","TooltipContent","styled","span","themeColor","headTitle","arrow","interactive","disableContentWrapper","colorText","classes","popper","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","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","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","useSidePanelState","onConfirm","onReject","useSidePanel","confirmRejected","confirmApproved","continueToOther","continueLink","cover","setCover","coverClosed","setCoverClosed","closeCover","onCloseCover","closePanel","showConfirm","openPanel","renderPageType","renderPageProps","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","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","useAsyncExtendedState","useState","setState","useMemo","nextState","initialNextState","mounted","partialState","initialExtendState","SnackBarActionType","SnackBarMessageType","useSystemDate","newDate","useCallback","removeHtml","tryParseWithoutNaN","tryParse","stringSplit","tryParseFloat","tryParseBool","isNumericPositive","test","parseFirstLastName","input","fullName","lastName","secondLastName","nameTokens","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","selectSavedOfflineServices","savedOfflineServices","selectRemovedOfflineServices","removedOfflineServices","selectRefreshOfflineServices","refeshOfflineService","selectTerminateState","terminationState","selectTerminateProcessing","terminatProcessing","selectTerminateCompleted","terminateCompleted","selectCloneReservations","cloneReservation","selectReservationDtoState","reservationDtoState","selectSavedForLater","SaveForLater","selectIsCreditSubmited","submitCredit","selectByApprovalErrors","ByApprovalErrors","selectUserCanRequestApproval","userCanRequestApproval","selectMaxReservationComplexityValidationResult","MaxReservationComplexityValidationResult","selectRefreshWorkOrderLink","refreshWorkOrderLink","selectMultipleProcessing","multipleProcessing","selectMultiPanelClosed","multiPanelClosed","selectReservationNotFound","notFound","selectUserRequestedBackground","userRequestedBackground","TopActionButton","customIcon","noChangeOnMobile","isIconButton","starticon","endicon","LinkBehavior","Link","ExternalLinkRoot","useInlineUrl","rest","history","useHistory","emptyLink","localPath","publicNS","handleLocalPathClick","showIcon","CopyURL","clipboardWrite","URLCopied","clipboardWriteEnabled","navigator","permissions","clipboard","writeText","copyResult","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","selectLastInsertedMilestoneId","lastInsertedMilestoneId","selectServiceRequestSidePanel","SidePanel","ServiceRequestRows","fromDtoValue","formValueDto","tryFormatIso","DisplayValue","selectServiceRequestRowInsertStatus","createServiceRequestRowStatus","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","pick","openPanelWithCover","ShowAssetSidePanel","ctrlKey","openOnNewTab","preventDefault","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","prefix","template","levelFormatter","level","nameFormatter","timestampFormatter","toISOString","globalThis","logLevel","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","CustomRole","page","rootedPage","serviceGroupId","GroupAdministrators","IsLabTech","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","OtherServicesApi","otherService","otherServices","rowId","deleteService","deleteCustom","deleteReservationServices","calculateCreditModel","getReservationOfflineServices","reservationId","repeat","getUsageOfflineServices","usageId","deleteInventoryBatch","loadOfflineServiceData","useAsyncGetWithEffect","load","defaultVal","deps","setBusy","setVal","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","CommentReferenceTypes","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","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","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","DRAWER_WIDTH","DRAWER_WIDTH_SHORT","DRAWER_MOBILE_WIDTH","SIDE_PANEL_WIDTH","COVER_WIDTH","MAX_POPER_WIDTH","MAX_COVER_EXPANDED_WIDTH","OnlineServiceType","UserNameFormatted","twoRows","UserFormatResult","UserNameFormated","UserProfileLink","openProfile","useOpenUserProfilePopUp","useUserProfileLinkUrl","un","userName","allowedToView","useUserPermissions","displayName","openAsSidePanel","userPopupProps","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","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","selectSaveNewComments","doSaveNewComments","selectCreatedOrders","createdOrders","selectSavedLinkedOrders","savedLinkedOrders","selectLinksProcessing","calibrationsChanged","linksProcessing","selectDowntimeOverlaps","downtimeOverlaps","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","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","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","bindTrigger","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","_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","doCreateReservation","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","isCloned","calcCredit","customFormFiles","getFilesModel","FileTypes","ReservationFile","CustomFormTypeEnum","Reservation","FileStoreApi","saveFormFiles","fileRes","fileResponse","errorMessage","addModelError","self","setCloneReservation","warnOnTrainingSession","FirstEquipmentId","ClickHere","afterLinkText","res_futureTrainingSession_LinkTitle","repetitiveActions","resetState","createReservation_Success","reservationIds","insertModel","insertedModel","createReservation_Error","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","resetOperateState","resetAssisteTrainingData","resetEquipmentChangeState","getAnyValue","getAnyValueSuccess","resetRequestedFor","resetTransferState","setSavedOfflineServices","setRemovedOfflineServices","setRefreshOfflineServices","resetTerminateState","setAsyncChangeLoading","setSubmitCredit","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","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","CommentsApi","GetComments","reference","referenceString","$orderBy","SendComment","referenceId","refernceString","commentId","Files","Text","IsInternal","removeFile","delteUrl","DeleteComment","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","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","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","selectSchedulerViewEndDate","getViewEndDate","customDays","selectSchedulerViewCustomStart","selectNotUseLocation","notUseLocation","selectEmptySlotAdminClick","emptySlotAdminClick","selectSchedulerNewEventServices","tempReservation","getSingleServiceEventServices","selectTwoDaysTimelineButtonEnabled","selectCustomDaysTimelineButtonEnabled","selectDefaultCustomDaysTimelineValue","daysString","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","initUpdateData","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","WorkOrderApi","initCreateData","insertWorkOrder","updateWorkOrder","offData","getNewWorkOrderStatus","deleteOrders","DowntimeOrders","assetIds","foo","nowDate","removefromLinks","linkedId","addToLinked","removeLinkedCalibration","addLinkedToCalibration","getLinkedToCalibration","getOverlappingDowntimes","updateWorkOrdersStatus","workOrderStatus","workOrdersIds","statusId","MessageTypeEnum","getDuration","displaySeconds","FormCheckbox","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","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","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","doInitCreate","doInitUpdate","doSendReservationsOfflineEmail","doRemoveFromLinked","doAddToLinked","doRemoveLinkedCalibration","doaddLinkedCalibration","doSetCreatedOrders","doCheckDowntimeOverlaps","workOrderSaga","userTimeZone","formatToTimeZoneUTCDate","EventStart","AlertStart","initWorkOrder_Success","initWorkOrder_Error","offStart","offEnd","initUpdateWorkOrder_Success","initUpdateWorkOrder_Error","ConvertNewWorkOrdersToModel","submissionFormFiles","workOrderDetails","SubmissionFormFiles","savedLinkeCalibrations","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","insert","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","ConvertEntityToModel","ToDown","resetCreateWorkOrderState","resetUpdateWorkOrderState","resetReservationsOfflineState","setUpdateAllRecurrent","LinkedAlerts","setOfflineEventStart","setOfflineEventEnd","setSavedLinkedOrders","resetSavedLinkedOrders","setCalibrationChanged","workOrderActions","useWorkOrderSlice","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","globalActions","changed","setChanged","comments","editComment","newComment","onEditComment","ReferenceId","catch","finally","deleteComment","onDeleteComment","withMentions","Invoice","FormFundingTypePicker","EmptySlotAdminClick","StyledUlList","StyledSimpleList","StyledBulletList","UlList","SimpleList","BulletedList","showBullet","AddFilterButton","filtersSelectionOpen","setInnput","disabledTitle","Popper","SelectFieldToFilterBy","SearchFilter","mobHorizontal","mobVertical","tabIndex","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","onKeyDown","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","take","openSidePanelProps","showEdit_Success","ServiceRequestTicketDetails","showEdit","showEdit_Error","setGlobalFilter","setFilterString","setSectionOrder","getMoreItems","setSelectedStatuses","reorder","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","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","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","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","autoHideDuration","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","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","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","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","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","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","loadAdditionalData","ad","AssetAssemblyStructure","Allowed_ByTraining","EndUsageIds","CanRequestAccess","ApprovalStatusId","CanBeCreatedFromLinkOnly","ReservationEnabled","NotActiveSince","IncidentSettings","PublicationSettings","loadButtonsAdditionalData","loadCounters","TrainingSessions","GetTrainingSessionsTableCount","WorkOrders","Calibrations","Publications","GetArticlesTableCount","GetWaitingListTableCount","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","menu_ReservationWaitingList","handleCloselClick","ConsumableType","RequestType","dataFound","ShowAssetFull","EndUsageConfirm","usageProcessing","Messages","err_Equipment_NotFound","SwitchTarget","updateX","openReservation","ReservationsOnly","openWorkOrder","DownTimeOnly","SwitchToReservationTitle","SwitchToDowntime","setSelectedOption","ActionIconButton","ReservationEquipmentsPicker","ReservationSingleEquipmentPicker","ReservationsEquipmentFilter","firstInitEquipments","mandatoryIds","CreditContainer","CalculatePricing","creditProcessing","creditCompleted","pricingType","pricingBodyKey","PricingConfirmationLabelEditText1","PricingConfirmationUsageLabelEditText1","PricingConfirmationOfflineEditText1","PricingConfirmationLabelText1","PricingConfirmationUsageLabelText1","PricingConfirmationOfflineText1","Pricing_EstimatedCost","Pricing_Balance","Pricing_BalanceResult","FormOfflineServiceTypePicker","CommentsWrapper","CommentSection","selectLargeFilesUpload","largeFilesUpload","selectLargeFilesCanUpload","selectLargeFilesUploading","selectLargeFilesStartedToUpload","selectLargeFilesUploadTargetId","selectLargeFilesUploadFilesNumber","selectLargeFilesUploadSelectedFiles","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","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","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","onMouseEnter","onMouseLeave","Edit","CommentsContainer","emailBody","emailSubject","shouldSendEmail","sectionTitle","setCount","sortedComments","writeCommentOpen","setWriteCommentOpen","sendMail","useSendMail","createEmail","DefaultEmailTemplateBody","DefaultEmailTemplateSubject","DefaultPageName","DefaultReferenceName","CommentsCount","Comments_EmptyMessage","Subject","renderToStaticMarkup","SaveToLog","Cc","Bcc","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","timeEnabled","waitingTransferApproval","transferToUser","terminationEnabled","handleTerminate","allowEditMultipleEquipments","offlineServicesErrors","assistedTrainingData","allowOngoingModifications","fieldHandler","requestedFor","equipmentChangeState","equipmentChangeCompleted","insertUpdateCompleted","savedForLater","isCreditSubmited","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","handleFullDayReservationChange","currentPeriod","adjusted","adjustSchedulerEventTimes","partialReservationDetailsState","enableReinitialize","messageList","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","canBeCanceled","canBeApproved","canSaveForLater","reservationCanceled","confirmPricingEnabled","ConfirmPricing","calculateButtonVisible","not_restricted","noInstumentRestricted","confidential","workOrderSwithProps","eqids","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","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","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","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","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","UserGroupsProviderTypes","ValueLabel","usePrevious","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","notifyActions","submitRef","refreshTable","sendResponse","closeApproved","closeRejected","paymentId","invoiceId","submit","payment","PaymentApi","UpdatePayment","success_EditInvoicePayment","err_EditInvoicePayment","err_InvoicePaymentAdd","amount","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","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","ArticleComments","commentsFormRef","setchanged","newSavedComments","setNewSavedComments","newComments","setNewComments","Article","ConvertNewToComment","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","loadedDetails","setLoadedDetails","termOptions","cancelOptions","usageOptions","simpleMode","setSimpleMode","isSimpleView","setIsSimpleView","setIsMounted","isAdminRole","isGroupAdmin","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","initReasonTypeData","ReasonTypePicker","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","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","AssemblyStructureContent","SnapshotSelectTitle","renderItem","childRes","generateAssemblySnapshotName","convertAssemblySnapshotName","initAssemblySnapshotWithParams","AssemblySnapshotFilter","AssemblySnapshotPicker","setConfigurableColumns","loadConfigurableColumns","WrongColumnDefinition_info","fetchConfigState","getConfigurableColumns","setConfigurableColumnsExport","loadConfigurableColumnsExport","fetchExport","publicSub","redirUrl","ReturnUrl","PaginationActions","StyledPopper","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","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","newcomment","newFiles","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","focus","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","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","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","useDebugEffect","dependencyNames","previousDeps","changedDeps","compareDeps","accum","dependency","keyName","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","JoinStatusEnum","InvoiceComments","divider","InvoiceInReview","notifActions","SentToReview","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","InvoiceWrapper","PayId","disableEnforceFocus","UpdateInvoiceStatus","UpdateInvoiceTemplate","handlePreview","InvoiceDeleteConfirmationMessage","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","doSaveComments","saveComments","referenceIds","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","links","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","DowntimeReasonTypeId","DowntimeDuration","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","reservationSwithProps","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","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","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","ClickToSeeFullDetails","UserNotFound","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","skipCoreSelectionScreen","SkipCoreSelectionScreen","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","isFirstLogin","updateIsFirstLogin","OptOutCoreSelection","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","SubscriptionUser","SubscriptionUserGroup","BudgetFundingType_info","SubscriptionBudget","SubscriptionBudgetDescription","SubscriptionStartDate","SubscriptionStartDateDescription","SubscriptionEndDate","SubscriptionEndDateDescription","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","ShortDescription","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","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","handleBlur","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","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","factory","useDebugMemo","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","disableHoverListener","SeeAllInstruments","reg_ChangePassword","main_master_LogOutLinkText","Help","OptOutNotifications","ServiceGroupRegistration","menu_GoogleCalendar","menu_OutlookCalendar","UserMenuButton","UserMenu","googleCalendarModuleEnabled","GoogleCalendar","multipleAdGroupsModuleEnabled","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","bindFocus","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","globalCoreVisible","termsOfUseAgreementEnabled","TermsOfUseAgreement","joinAdGroupEnabled","JoinAdGroup","UserGroupsProviderType","isFirstActiveUserGroupSelected","usageKioskRoleEnabled","UsageKioskRoleEnabled","roomUserRoleEnabled","redirectToTermsOfUseAgreement","setRedirectToTermsOfUseAgreement","redirectToActiveUserGroup","setRedirectToActiveUserGroup","redirectToCoreSelection","setRedirectToCoreSelection","redirectToUsageKiosk","setRedirectToUsageKiosk","redirectToUsageRoom","setRedirectToUsageRoom","redirectToConsumableKiosk","setRedirectToConsumableKiosk","redirectToJoinAdGroup","setRedirectToJoinAdGroup","SQL","ConsumableKiosk","useRequiredRedirect","isRedirectToTermsOfUseAgreement","isRedirectToActiveUserGroup","isRedirectToCoreSelection","isRedirectToUsageKiosk","isRedirectToUsageRoom","isRedirectToConsumableKiosk","isRedirectToJoinAdGroup","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","fileType","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","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","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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,I,sCAAAA,I,4EAAAA,I,8EAAAA,I,4DAAAA,I,4DAAAA,I,gCAAAA,I,0CAAAA,I,0CAAAA,I,oDAAAA,I,4DAAAA,I,0CAAAA,I,kFAAAA,I,wCAAAA,I,oDAAAA,I,oEAAAA,I,4FAAAA,I,sCAAAA,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,+CAAAA,I,qDAAAA,I,6DAAAA,I,6CAAAA,I,iDAAAA,I,mDAAAA,I,mEAAAA,I,2DAAAA,I,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,iBAAwD,CACtDzxM,SAAS,EACTokK,MAAO,GAvBX,KAyBE4pC,YAAmD,CACjDhuM,SAAS,EACTokK,MAAO,IAGEguC,EAAgC,CAE3C,OACA,YACA,WACA,UACA,mBACA,eACA,WACA,gBACA,mBACA,gBACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,SACA,SAGWE,EAA6B,CAIxC,WACA,YAEWH,EAAmC,CAC9C,KACA,OACA,YACA,YACA,cACA,mBACA,uBACA,iB,2LC5GI/lM,EAAM,2BA6EN6oB,EAAW,SACfh6B,EACA+/F,EACAl/D,GAHe,OAKfN,YAAgD,CAC9CpvB,IAAKA,EACLnR,WAAYA,EACZqa,OAAQ,CACN,KACA,OACA,YACA,UACA,eACA,iBACA,YACA,gBACA,aACA,kBACA,eACA,oBACA,cACA,aACA,mBACA,aACA,YACA,aACA,aACA,wBACA,cACA,cACA,mBACA,kBACA,oBACA,iBACA,eACA,iBACA,WACA,WACA,aACA,oBACA,oBACA,aACA,aACA,WACA,mBACA,mBACA,gBACA,YACA,iBACA,2BACA,eAEFwmB,qBAAsBA,KAEnB,SAASihP,EAAgBh/Q,GAK9B,OACE,cAAC,IAAD,aACEk3B,UAAwBl3B,EAAM9C,WALhCg6B,EAASl3B,EAAM9C,WAAY+/F,EAAUj9F,EAAM+9B,uBAMzCzG,OAAMt3B,EAAMs3B,WAAcziC,EAC1BsyB,KAAMnnB,EAAMmnB,KACZnmB,GAAIhB,EAAMgB,IAAM,gBACZhB,IAIH,IAAMi/Q,EAA8B,SACzC3gF,EACA4gF,EACAC,GAEA,IAAMjiR,EAA2D,GAmCjE,OAlCMohM,GACJphM,EAAWxC,KACT,IAAIN,IACF,UACAZ,IAAe8B,OACfgjM,IAIA4gF,GACJhiR,EAAWxC,KACT,IAAIN,IACF,cACAZ,IAAe8B,OACf4jR,IAIAC,IAAwB,OAAVA,QAAU,IAAVA,OAAA,EAAAA,EAAYrkR,QAAS,GACvCoC,EAAWxC,KACT,IAAIN,IACF,KACAZ,IAAe+C,SACf4iR,IAINjiR,EAAWxC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,EACAz+Y,EACA01B,EACA0sF,IAEF,OACE,cAAChkF,EAAA,EAAD,CACEnS,QAASA,EACTgO,UAAWj6B,EAAE/d,IAAa68Z,gBAC1BppX,aAAcA,EACdgH,YAAaA,GACbrnC,SAAU,kCAAMi9M,EAAW9jL,eAAjB,aAAM,OAAA8jL,IAChBv4K,SAAUrE,EACV2E,qBAAmB,EACnBuC,qBAAsB,EARxB,WAUKmkO,KAAeo8I,KAAgBwB,GAChC,cAAC,EAAD,CACEtB,SAAUA,EACVh7V,cAAe0+M,EACfm8I,WAAYyB,EACZxB,WAAYA,EACZ9nZ,SAAU88M,EACV72L,WAAY2Q,EACZmxX,UAAWgB,EACXl2W,QAAS6yH,EACT5nC,UAAWA,Q,ifC1WrB,IAAItnI,EAAM,CACT,KAAM,CACL,KACA,EACA,KAED,2BAA4B,CAC3B,IACA,GAED,4BAA6B,CAC5B,IACA,GAED,iCAAkC,CACjC,IACA,GAED,oCAAqC,CACpC,IACA,GAED,yBAA0B,CACzB,IACA,GAED,0BAA2B,CAC1B,IACA,GAED,+BAAgC,CAC/B,IACA,GAED,kCAAmC,CAClC,IACA,GAED,sBAAuB,CACtB,IACA,GAED,uBAAwB,CACvB,IACA,GAED,4BAA6B,CAC5B,IACA,GAED,+BAAgC,CAC/B,IACA,GAED,6BAA8B,CAC7B,IACA,GAED,8BAA+B,CAC9B,IACA,GAED,mCAAoC,CACnC,IACA,GAED,sCAAuC,CACtC,IACA,GAED,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,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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AC,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,gBACAC,iBACAC,qBACAC,cACAC,eACAC,mBACAC,oBACAC,kBAEAC,iBACAC,yBACAC,oBACAC,uBACAC,cACAC,cACAC,WACAC,eACAC,YAEAC,eACAC,cACAC,mBACAC,yBACAC,mBACAC,kBAEAC,cACAC,qBACAC,uBACAC,iBACAC,YACAC,iBACAC,qBACAC,cACAC,eACAC,mBACAC,oBACAC,YACAC,aACAC,SACAC,iBACAC,kBAEAC,YACAC,aACAC,WACAC,UACAC,aACAC,eACAC,WACAC,UAIK,I,GChoBDC,GAAsB52Y,IAAOyJ,IAAV,sKAQlB,SAASotY,GAAmB3sa,GAAiC,IAC1DC,EAAaD,EAAbC,SAGR,OACE,eAACysa,GAAD,CAAqB/ra,UAAU,gBAA/B,SACGV,ICxBA,IAAM2sa,GAAmB5hZ,aAC9B,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOs3a,oBCENC,GAAiB7hZ,aAC5B,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOkyF,cCANslV,GAAiB9hZ,aAC5B,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAOw3a,kBCFNC,GAAsB/hZ,aACjC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOy3a,uBCFNC,GAAyBhiZ,aACpC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO03a,0BCFNC,GAAsCjiZ,aACjD,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO23a,uCCFNC,GAASliZ,aACpB,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO43a,UCFNC,GAAwBniZ,aACnC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO63a,yBCRNC,GAAwBpiZ,aACnC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO80F,qBCFNijV,GAAsBriZ,aACjC,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAOg4a,mBCINC,GAAkBviZ,aAC7B,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOk4a,e,mBCCZ,SAASC,GAAkBzta,GAAgC,IAAD,EACzDib,EAAWszF,cACXjgG,EAAS,IAAI4B,gBAAgB+K,EAAS/L,QAEtCw+Z,EACJ1ta,EAAM47B,MAAMttB,OAAZ,eAA6B8B,aAAY9B,EAAQ,aAAjD,aAA0DzZ,GAC5D,OAAO,eAAC,KAAD,CAAemM,GAAI0sa,EAAUpsY,cAAc,ICT7C,IAAMqsY,GAAqB3iZ,aAChC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOq4a,sBCFNC,GAA6B5iZ,aACxC,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAOu4a,0BCRNC,GAAkB9iZ,aAC7B,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOw4a,mBCFNC,GAAkB/iZ,aAC7B,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOy4a,mBCKNC,GAAwBhjZ,aACnC,kBAAM,oCACN,SAAA11B,GAAM,OAAIq8P,aAAgCr8P,EAAO04a,0BCHtCC,GAAoBjjZ,aAC/B,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAO24a,qB,UCFNC,GAA0BljZ,aACrC,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAO44a,2BCRNC,GAAiBnjZ,aAC5B,kBAAM,6CACN,SAAA11B,GAAM,OAAIA,EAAOw0Z,iBCFNskB,GAAoBpjZ,aAC/B,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO+4a,iBCINC,GAAmBtjZ,aAC9B,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAOg5a,oBCRNC,GAAcvjZ,aACzB,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOk5a,WCFNC,GAAkBzjZ,aAC7B,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAOo5a,eCFNC,GAAwB3jZ,aACnC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOq5a,yBCINC,GAAkB5jZ,aAC7B,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAOs5a,mBCFNC,GAAyB7jZ,aACpC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOu5a,0BCRNC,GAAe9jZ,aAC1B,kBAAM,iEACN,SAAA11B,GAAM,OAAIA,EAAOw5a,gBCFNC,GAAoB/jZ,aAC/B,kBAAM,iEACN,SAAA11B,GAAM,OAAIA,EAAOy5a,qBCFNC,GAAmBhkZ,aAC9B,kBAAM,4DACN,SAAA11B,GAAM,OAAIA,EAAO05a,oBCENC,GAAgBjkZ,aAC3B,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAO45a,aCANC,GAAyBnkZ,aACpC,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAO65a,0BCJNC,GAAqBpkZ,aAChC,kBAAM,qCACN,SAAA11B,GAAM,OAAIA,EAAO+5a,kBCUZ,SAASC,GACdC,GAEA,IAAM72X,EAAOr4C,sBAAYoF,KACnBywO,EAAkB71O,sBAAY2I,KAC9Bwma,EAAmDnva,uBACvD,SAAAhH,GAAK,OACHkP,YACElP,EACAqP,KAAgB2rP,wBAIWx4M,GAAS0zX,EAAlCnoZ,UAXY,YAWsBmoZ,EAXtB,gBA0BpB,OAAO,eAAC,IAAD,2BAAW1zX,GAAX,IAAiBu1H,OAbT,WACb,IAAI87O,EAAuBh3K,EAAgBu5L,oBACzC/2X,EACA82X,GAEF,OAAoB,IAAhBtiB,EACK,eAAC,IAAD,CAAU7lY,GAAI,mBACI,IAAhB6lY,EACF,eAAC,IAAD,aAAO9lY,UAAWmoZ,EAAWnoZ,WAAemoZ,SAEnD,M,wBCnCOG,GAAqB1kZ,aAChC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOo6a,sBCFNC,GAA+B3kZ,aAC1C,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOq6a,gCCFNC,GAAkB5kZ,aAC7B,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOu6a,eCFNC,GAAyB9kZ,aACpC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAOw6a,0BCHNC,GAA4B/kZ,aACvC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO06a,yBCDNC,GAA0BjlZ,aACrC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO26a,2BCLNC,GAAwBllZ,aACnC,kBAAM,oCACN,SAAA11B,GAAM,OAAIA,EAAO46a,yBCuObC,GAAMloU,YAAO,CAAEilE,QAAQ,GAAD,mBAAMkjQ,cAAYljQ,SAAlB,CAA2BjmH,UAEhD,SAASopX,KACd,IAAM5oZ,EAAWC,wBACXhgB,EAAkBrH,sBAAYyJ,KAC9Bwma,EAAcjwa,sBAAY2H,KAC1Bo2K,EAAY/9K,sBAAYoH,KACxBtB,EAAkB9F,sBAAYwF,KAC9B0qa,EAAc75Z,WAAc,WAChC,OACEsE,OAAOC,SAASC,SACbriB,MAAM,KACN0E,QAAO,SAAAvH,GAAC,MAAU,KAANA,GAAgC,UAApBA,EAAEsD,iBAA2BwB,OAAS,IAElE,IACG01a,EAAe95Z,WAAc,WACjC,OAAOqiF,KAAajwF,MAClB,SAAA9S,GAAC,OAAIglB,OAAOC,SAASC,SAAS5hB,cAAcqc,QAAQ3f,EAAEsD,gBAAkB,OAEzE,IAEKshB,EAAYgM,cAAZhM,QACR24N,eAEA9iN,eACAuJ,cAAiB,WACVu2Y,EAIH9oZ,EAAS7M,EAAQwI,4BAHjBqE,EAAS7M,EAAQjC,qBAAqB63Z,IACtCx1Z,OAAO+1I,SAAS,EAAG,IAIrBj6H,kBASFpgB,aAAgB,WACT65Z,GACED,QAAmCz7a,IAApB6S,IACdA,GACF+f,EAAS7M,EAAQ0H,iBAAgB,IACjCmF,EAAS7M,EAAQ2H,uBACjBkF,EAAS7M,EAAQ6H,2BACjBgF,EAAS7M,EAAQgI,gCACjB6E,EAAS7M,EAAQoI,kCACjByE,EAAS7M,EAAQuI,sBACjByZ,YAAW,kBAAMnV,EAAS7M,EAAQ4H,qBAAoB,IAElDguZ,EACF/oZ,EAAS7M,EAAQ0H,iBAAgB,IAEjCtH,OAAOC,SAASE,QAAQC,aAAY,cAM3C,CACDR,EACA6M,EACA/f,EACA6oa,EACAC,EACAF,IAMF,IAAMtzH,EAAMyzH,KACNC,EAAc55H,YAAYkG,EAAK,UAC/B2zH,EAAe75H,YAAYkG,EAAK,WAChC4zH,EAAc95H,YAAYkG,EAAK,WAErCl8R,SAASxR,KAAK0tS,IAAMA,EACpB,IAAMzoT,EAASmiB,WAAc,WAC3B,OAASvQ,EAAkBlO,KAAU44a,qBAAkBh8a,IACtD,CAACsR,IACExD,EAAkCtC,sBAAYwC,KAC9C6wB,EAAqCmrD,eAE3C,OACE,eAAC,IAAD,CAAyBtqF,OAAQA,EAAQw/H,MAAOz/H,IAAhD,SACE,eAACw8a,EAAA,EAAD,CAAgBX,IAAKA,GAArB,SACE,gBAAC,IAAD,CAAkB1va,MAAOkwa,EAAzB,UACE,eAACI,GAAA,EAAD,IACA,eAAC9lB,EAAD,IAEA,gBAAC,KAAD,CAAiBnvW,QAASA,GAA1B,UACE,gBAACk1X,GAAD,CAAU5yP,UAAWA,EAArB,WACuB,IAApB12K,GACC,eAAC40Z,GAAD,CAAoB35Z,YAAaA,IAEnC,eAACi5Z,GAAD,QAGa,IAAdx9O,QAEoBvpL,IAApB6S,IAAiC6oa,EAkhChC,eAAC,KAAD,CAAU3+W,WAAYwsH,EAAWj3J,KAAM,KAjhCvC,eAAC,WAAD,WACuB,IAApBzf,EACC,gBAAC,IAAD,WACE,eAAC,IAAD,CACE80Z,OAAK,EACL30Y,KAAM,CAAC,aAAc,mBAAoB,UAF3C,SAIE,eAAC,IAAD,CAAkBpnB,MAAOiwa,EAAzB,SACE,gBAACtT,GAAD,WACE,eAAC,IAAD,CACEZ,OAAK,EACL30Y,KAAM,aACNT,UAAW6nZ,KAEb,eAAC,IAAD,CACEzS,OAAK,EACL30Y,KAAM,mBACNT,UAAWi2Y,KAEb,eAAC,IAAD,CAAOb,OAAK,EAAC30Y,KAAM,SAAUT,UAAW63Y,YAI9C,eAAC,IAAD,CACEp3Y,KAAI,sBACC46J,MADD,CAEFviK,KACA,oBAJJ,SAOE,eAAC,IAAD,CAAkBzf,MAAOiwa,EAAzB,SACE,gBAAC/D,GAAD,WACE,eAAC,IAAD,CACE9kZ,KAAM46J,KACNr7J,UAAWsoZ,KAEb,eAAC,IAAD,CACElT,OAAK,EACL30Y,KAAM3H,KACNkH,UAAWwlZ,KAEb,eAAC,IAAD,CACEpQ,OAAK,EACL30Y,KAAK,kBACLT,UAAWuxY,eAOrB,gBAAC,IAAD,WACE,eAAC,IAAD,CAEE6D,OAAK,EACL30Y,KAAI,CACF,oBACA,oCACA,wBACA,wBACA,cACA,cACA,gBACA,iBACA,iBACA,8BAVE,mBAWC46J,MAXD,CAYF,gBACA,eACA,WACA,WACA5sC,KACA,wBACA,YACAwvF,yBACA,kBACA,yBACA,kBACA,oBACA,uBACA8hD,+BACA,gBACA,yBACA,4BACA,oBACA,6BACA,gCACA,kBACA,cACA,aACA,gBACA,YACA,kBACA,oBACA,WACA,SACA,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,iBACAogC,KACA21G,GACA,kBACA,uBAEAh9Y,KACA,oBACA,wBACA,cACA,mCACA,eACA,qBACA,qBACA,mBACA,eACA,0BA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","file":"static/js/main.f667d9c9.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","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","/**\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 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 { 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 { 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 { 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 },\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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\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 { 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 = 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 {\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\nconst 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): 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: params,\r\n };\r\n if (!!tz) {\r\n Object.assign({}, reqParams, { headers: { 'X-TimeZone': tz?.Iana } });\r\n }\r\n try {\r\n const response = await axios.get(url, reqParams);\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","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","/**\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 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\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 = 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 \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","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 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 { 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","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 {\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,\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","/**\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 { 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 { 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 { 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 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 { 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 { 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 {\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 '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 'ConfirmPricing',\r\n UserAccessToBudgets,\r\n 'HideRepetitiveReservations',\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 * 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 { 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\n\r\nexport interface InfoIconProps {\r\n title: NonNullable;\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 { 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 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 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 selectIsCreditSubmited = createSelector(\r\n [selectSlice],\r\n state => state.submitCredit,\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 { 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","/**\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 { 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 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 } 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(columns, column => column.getFieldName());\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 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 { FormValueType } from 'app/components/BasicTable/BasicFilter/FilterValueType';\r\nimport { useLayoutSlice } from 'app/Layout/FrontendLayout/slice';\r\nimport { FieldHookConfig, useFormikContext } from 'formik';\r\nimport * as React from 'react';\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\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 // const handleClickOpen = () => {\r\n // setOpen(true);\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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { Link as MuiLink } from '@material-ui/core';\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\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 {\r\n if (!!link) {\r\n if (!event.ctrlKey && !props.openOnNewTab) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n }}\r\n color=\"textPrimary\"\r\n target={props.openOnNewTab ? '_blank' : undefined}\r\n href={link}\r\n >\r\n {props.children}\r\n \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 },\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 state.RequestDetails.value.Budget = {\r\n ...state.RequestDetails.value.Budget,\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 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 },\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 * 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 { 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 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","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 { 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 {\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","/**\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 { 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 * 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 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 = 1600;\r\nexport const MAX_COVER_EXPANDED_WIDTH: number = 1400;\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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as React from 'react';\r\nimport { IRow } from 'app/components/BasicTable/IRow';\r\nimport { Link as MuiLink } from '@material-ui/core';\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\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 if (!!link) {\r\n if (!event.ctrlKey && !props.openOnNewTab) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n }}\r\n color=\"textPrimary\"\r\n target={props.openOnNewTab ? '_blank' : undefined}\r\n href={link}\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 \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","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 { 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","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 { 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 { 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 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 (!props.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","/**\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 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 ReservationGlobalState,\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} 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 { IOtherServices } from 'app/pages/OtherServicesPage/IOtherServices';\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\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* doCreateReservation(\r\n action: PayloadAction<{\r\n state: ReservationGlobalState;\r\n calcCredit?: boolean;\r\n }>,\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 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: 'reservationInsertError',\r\n message: item,\r\n variant: 'error',\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(actions.getCredit_Success({ credit: 0, balance: null }));\r\n }\r\n } else {\r\n if (action.payload.calcCredit) {\r\n yield put(\r\n actions.getCredit_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\nfunction* doUpdate(\r\n action: PayloadAction<{\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\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: 'reservationUpdateErr',\r\n message: item,\r\n variant: 'error',\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* doUpdate({\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\nexport function* reservationSaga() {\r\n yield takeLeading(actions.initReservation.type, doInitReservation);\r\n yield takeLatest(actions.createReservation.type, doCreateReservation);\r\n yield takeLatest(actions.updateReservation.type, doUpdate);\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}\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 updateReservationPayload,\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\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 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 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 submitCredit: undefined,\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.removedOfflineServices = [];\r\n state.submitCredit = undefined;\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 resetOperateState(state, action: PayloadAction) {\r\n state.detailsState.hasErrors = false;\r\n state.detailsState.completed = false;\r\n },\r\n\r\n createReservation(\r\n state,\r\n action: PayloadAction<{\r\n state: ReservationGlobalState;\r\n calcCredit?: boolean;\r\n }>,\r\n ) {\r\n if (action.payload.calcCredit === true) {\r\n state.creditState.processing = true;\r\n state.creditState.completed = undefined;\r\n state.creditState.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(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 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 getCredit(state, action: PayloadAction) {\r\n state.creditState.processing = true;\r\n state.creditState.completed = undefined;\r\n state.creditState.hasErrors = undefined;\r\n state.submitCredit = 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 state.submitCredit = undefined;\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 setSubmitCredit(state, action: PayloadAction) {\r\n state.submitCredit = action.payload;\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 creditState: 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 submitCredit?: boolean;\r\n ByApprovalErrors?: Array | null;\r\n MaxReservationComplexityValidationResult?: string | null;\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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport 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 { Link as MuiLink } from '@material-ui/core';\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 {\r\n if (!!link) {\r\n if (!event.ctrlKey) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n }}\r\n color=\"textPrimary\"\r\n href={link}\r\n >\r\n {props.children}\r\n \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 { 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 {\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 ) => {\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 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\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 { 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 * 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 { 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","/**\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 selectSchedulerViewEndDate = createSelector(\r\n [selectSchedulerViewState],\r\n state =>\r\n state === undefined\r\n ? undefined\r\n : getViewEndDate(\r\n state.viewLength,\r\n state.date,\r\n 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 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 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 {\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\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 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 { 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 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 {\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 { 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 //console.log(httpPayloads);\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 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\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}\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(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.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 { 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\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 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 ...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 )\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, 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(commentType, referenceId, c, referenseStringId)\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 {...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.dateOrStringToDate(data.RecurringEndDate);\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 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 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 & * {\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 & > * {\r\n padding: 0px;\r\n }\r\n & .table-footer {\r\n display: none;\r\n }\r\n }\r\n & table {\r\n width: 100%; /* Ensure the table fits within the page */\r\n border-collapse: collapse;\r\n thead {\r\n display: table-header-group; /* Ensure the header repeats on every page */\r\n }\r\n tbody {\r\n display: table-row-group;\r\n }\r\n tr {\r\n page-break-inside: avoid; /* Prevent row splitting */\r\n }\r\n tr > th,\r\n tr > td {\r\n padding: 4px 8px;\r\n height: auto;\r\n }\r\n }\r\n & tr,\r\n td,\r\n th {\r\n page-break-inside: avoid;\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 { 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 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 },\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 '& .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\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 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 } 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 } 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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport 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 { Link as MuiLink } from '@material-ui/core';\r\nimport { UsageQueryStringParameters } from 'app/pages/UsageDetails/Details/slice/types';\r\nimport { UsageDetailsProps } from 'app/pages/UsageDetails/Details';\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 {\r\n if (!!link) {\r\n if (!event.ctrlKey) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n props.onClick?.();\r\n }}\r\n color=\"textPrimary\"\r\n href={link}\r\n >\r\n {props.children}\r\n \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 {\r\n if (!!link) {\r\n if (!event.ctrlKey) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n props.onClick?.();\r\n }}\r\n color=\"textPrimary\"\r\n href={link}\r\n >\r\n {props.children}\r\n \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 {\r\n if (!!link) {\r\n if (!event.ctrlKey) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n }}\r\n color=\"textPrimary\"\r\n href={link}\r\n >\r\n {props.children}\r\n \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 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 }\r\n } finally {\r\n setLoadingAdditionalData(false);\r\n }\r\n }\r\n },\r\n [isAuthenticated, 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 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 (counters.Calibrations.enabled) {\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 (counters.Publications.Enabled) {\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 counters.Calibrations.enabled,\r\n counters.Publications.Enabled,\r\n counters.TrainingSessions.Enabled,\r\n counters.WorkOrders.Enabled,\r\n updateCounters,\r\n ],\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 if (isAuthenticated) {\r\n loadCounters(res);\r\n }\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 loadCounters,\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 (\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.Calibrations),\r\n Id: 'calibrations',\r\n Content: (\r\n \r\n ),\r\n endIcon: ,\r\n });\r\n updateCountersEnable('Calibrations', true);\r\n } else {\r\n updateCountersEnable('Calibrations', false);\r\n }\r\n if (\r\n isAuthenticated &&\r\n !readOnlyUser &&\r\n !hidePublications &&\r\n data.AvailabilityType?.Id !== 'RequestRelated' &&\r\n data.PublicationSettings\r\n ) {\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 updateCountersEnable('Publications', true);\r\n } else {\r\n updateCountersEnable('Publications', false);\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 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 hidePublications,\r\n hideTrainingSessionsSettings,\r\n isAdmin,\r\n isAuthenticated,\r\n isCover,\r\n loadingAdditionalData,\r\n openPanel,\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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\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 \r\n \r\n {customIcon ? customIcon : }\r\n \r\n \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 { LinearProgress, useTheme } from '@material-ui/core';\r\nimport { Div100 } from 'app/components/AssetQuickSearch/styled';\r\nimport { DialogConfirm } from 'app/components/DialogConfirm';\r\nimport { Body, ButtonLabel } from 'app/components/Typography';\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 { PricingState } from '../../slice/types';\r\n\r\nexport interface CalculatePricingProps {\r\n open: boolean;\r\n onClose: () => void;\r\n title: React.ReactNode;\r\n edit: boolean;\r\n credit?: PricingState;\r\n creditProcessing?: boolean;\r\n creditCompleted?: boolean;\r\n pricingType: 'Reservation' | 'Usage' | 'OtherService';\r\n}\r\nconst CreditContainer = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingTop: '16px',\r\n gap: 32,\r\n width: '100%',\r\n '& .creditItem': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: 16,\r\n width: '100%',\r\n },\r\n}));\r\nexport function CalculatePricing(props: CalculatePricingProps) {\r\n const {\r\n open,\r\n onClose,\r\n credit,\r\n creditProcessing,\r\n title,\r\n creditCompleted,\r\n edit,\r\n pricingType,\r\n } = props;\r\n const theme = useTheme();\r\n const { t } = useTranslation();\r\n const pricingBodyKey = React.useMemo(() => {\r\n return edit\r\n ? pricingType === 'Reservation'\r\n ? translations.PricingConfirmationLabelEditText1\r\n : pricingType === 'Usage'\r\n ? translations.PricingConfirmationUsageLabelEditText1\r\n : translations.PricingConfirmationOfflineEditText1\r\n : pricingType === 'Reservation'\r\n ? translations.PricingConfirmationLabelText1\r\n : pricingType === 'Usage'\r\n ? translations.PricingConfirmationUsageLabelText1\r\n : translations.PricingConfirmationOfflineText1;\r\n }, [edit, pricingType]);\r\n return (\r\n onClose()}\r\n body={\r\n creditProcessing && !creditCompleted ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n
    \r\n \r\n {t(translations.Pricing_EstimatedCost)}\r\n \r\n \r\n {(t(pricingBodyKey) as string).replace(\r\n '{0}',\r\n (credit?.credit || 0).toFixed(2),\r\n )}\r\n \r\n
    \r\n {!!credit?.balance && credit?.balance !== null && (\r\n
    \r\n \r\n {t(translations.Pricing_Balance)}\r\n \r\n \r\n {(t(translations.Pricing_BalanceResult) as string).replace(\r\n '{0}',\r\n (credit?.balance || 0).toFixed(2),\r\n )}\r\n \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n maxWidth={'sm'}\r\n />\r\n );\r\n}\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 { 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 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}\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 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 );\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): 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 );\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 });\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 ) => {\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 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\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}\r\nexport const FileCard = ({ file, remorFile }: 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.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\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}\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 ...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\n\r\nexport interface LargeFilesUpdateProps {\r\n maxFilesCount?: number;\r\n disableFileUpload?: boolean;\r\n}\r\nexport function LargeFilesUpdate({\r\n maxFilesCount,\r\n disableFileUpload,\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 />\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\n\r\nexport interface AddCommentProps {\r\n onSubmit: (comment: NewComment) => 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}\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 } = 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 handleSubmit = ({ Files, ...values }: NewComment) => {\r\n const comment: NewComment = {\r\n ...values,\r\n };\r\n onSubmit(comment);\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 {}} 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.Save)}\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\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}: {\r\n file: CommentFile;\r\n canRemove: Boolean;\r\n onDeleteFile: (id: string) => void;\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 />\r\n \r\n \r\n \r\n \r\n {shortenName(file.Name)}}\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\n\r\nexport interface CommentCellProps {\r\n comment: IComment;\r\n onSubmit: (comment: NewComment) => 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}\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 } = 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 />\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 />\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\n\r\nexport interface CommentsContainerProps extends EmailRelated {\r\n Comments: IComment[];\r\n onSubmit: (comment: NewComment) => 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}\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}: 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) => {\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);\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 />\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 />\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 { 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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\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 { Link as MuiLink } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { IReservationWaitingListDto } from 'app/pages/ReservationWaitingListPage/IReservationWaitingListDto';\r\nimport { SignUpWaitingListDetailsProps } from 'app/pages/ReservationWaitingListPage/SignUpWaitingListDetails';\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 open()} color=\"textPrimary\">\r\n {props.children}\r\n \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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport 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 { Link as MuiLink } from '@material-ui/core';\r\nimport { InvoiceDetailsProps } from 'app/pages/InvoiceDetails';\r\nimport { DetectIsMobile } from 'utils/mobileDetect';\r\nimport { selectActiveFilters } from 'app/pages/InvoiceDetails/Slice/selector';\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 {\r\n if (!!link) {\r\n if (!event.ctrlKey) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n }}\r\n color=\"textPrimary\"\r\n href={link}\r\n >\r\n {props.children}\r\n \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\n\r\ninterface DownloadFileButonProps {\r\n id: string;\r\n name?: React.ReactNode;\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 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 selectIsCreditSubmited,\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} 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 timeEnabled?: 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 timeEnabled,\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 isCreditSubmited = useSelector(selectIsCreditSubmited);\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 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 (isCreditSubmited) {\r\n dispatch(actions.setSubmitCredit(false));\r\n }\r\n } else {\r\n if (isCreditSubmited) {\r\n handleSubmit(values);\r\n } else {\r\n console.debug('submitting', values);\r\n formikHelpers.setSubmitting(true);\r\n dispatch(actions.resetOperateState());\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 console.log('Reservation submitting', formik.isSubmitting);\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 formik.isSubmitting ||\r\n (isEdit &&\r\n !(editable && allowEditMultipleEquipments)) ||\r\n readonly\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={\r\n formik.isSubmitting ||\r\n (isEdit && !editable) ||\r\n readonly\r\n }\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={\r\n formik.isSubmitting ||\r\n readonly ||\r\n (isEdit && !editable)\r\n }\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={\r\n formik.isSubmitting ||\r\n readonly ||\r\n (isEdit && !editable)\r\n }\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={\r\n formik.isSubmitting ||\r\n readonly ||\r\n (isEdit && !editable)\r\n }\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={\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\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 selectCredit,\r\n selectCreditCompleted,\r\n selectCreditProcessing,\r\n selectEquipmentChangeCompleted,\r\n selectEquipmentsSettings,\r\n selectIsCreditSubmited,\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} 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 { 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 creditProcessing = useSelector(selectCreditProcessing);\r\n const credit = useSelector(selectCredit);\r\n const creditCompleted = useSelector(selectCreditCompleted);\r\n const isCloned = useSelector(selectCloneReservations);\r\n const edit = useSelector(selectIsEdit);\r\n const asyncChangeLoading = useSelector(selectAsyncChangeLoading);\r\n const isCreditSubmited = useSelector(selectIsCreditSubmited);\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 [edit, setEdit] = 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 [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 return (\r\n reservationSettings?.FutureReservation ||\r\n (reservationSettings?.Ongoing &&\r\n (allowSortenReservation ||\r\n equipmentSettings?.AllowModification ||\r\n equipmentSettings?.AllowExtendReservation))\r\n );\r\n }, [\r\n equipmentSettings?.AllowExtendReservation,\r\n equipmentSettings?.AllowModification,\r\n reservationSettings?.FutureReservation,\r\n reservationSettings?.Ongoing,\r\n allowSortenReservation,\r\n ]);\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 (!globalSettings.budgetModuleEnabled) {\r\n return false;\r\n } else if (equipmentSettings?.BudgetsTurnedOn === false) {\r\n return false;\r\n } else {\r\n return globalSettings.showCalculatePrice || confirmPricingEnabled;\r\n }\r\n }, [\r\n equipmentSettings?.BudgetsTurnedOn,\r\n globalSettings.budgetModuleEnabled,\r\n globalSettings.showCalculatePrice,\r\n confirmPricingEnabled,\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 defaultMulti =\r\n globalSettings.multipleInstrumentsEnabled &&\r\n reservation.data.EquipmentsData.length > 0;\r\n eqids = reservation.data.EquipmentsData.map(f => f.Id).join(',');\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: defaultMulti.toString(),\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 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 /// functions, callbacks ///\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 (!!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 (isCreditSubmited) {\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 isCreditSubmited,\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.setSubmitCredit(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 setRequestCompleted(true);\r\n setBusy(false);\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 (active) {\r\n if (creditCompleted === true && !showCalculateCredit) {\r\n dispatch(actions.resetCreditState());\r\n setBusy(false);\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 ]);\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.resetOperateState());\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.resetOperateState());\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 && IsAdmin && !reservation.data?.TransferFromId && useSwitchButtons\r\n );\r\n }, [IsAdmin, 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 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={credit}\r\n creditCompleted={creditCompleted}\r\n creditProcessing={creditProcessing}\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 canceled,\r\n confirmAssisted,\r\n confirmCloned,\r\n credit,\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 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","/**\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","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}\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 { events: eventFilters, training } = splitFilter(allFilters);\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 return {\r\n ReservationOrDowntime,\r\n training,\r\n sharedFilter,\r\n servicesFilter,\r\n eventFilters,\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(predicates.join(' and ')),\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 { AllowedToRender, RenderTypes } 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 return {\r\n allowedToView,\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 { 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","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 * 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 { useEffect, useRef } from 'react';\r\n\r\nexport function usePrevious(value: T): T | undefined {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n }, [value]);\r\n return ref.current;\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 {\r\n selectConfirmApproved,\r\n selectConfirmRejected,\r\n selectHasNotSavedChanges,\r\n} 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, useEffect, 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\n\r\nexport interface PaymentProps extends 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}\r\n\r\nexport const AddPayment = (props: PaymentProps) => {\r\n const { t } = useTranslation();\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 close = useCallback(() => {\r\n if (props.isCover) {\r\n props.closeCover?.();\r\n } else {\r\n dispatch(actions.resetSidePanel());\r\n }\r\n }, [props, dispatch, actions]);\r\n const refreshTable = useCallback(() => {\r\n dispatch(actions.setRefreshTable(true));\r\n }, [dispatch, actions]);\r\n const sendResponse = useResponseModel();\r\n const hasChanges = useSelector(selectHasNotSavedChanges);\r\n const closeApproved = useSelector(selectConfirmApproved);\r\n const closeRejected = useSelector(selectConfirmRejected);\r\n const authenticatedUser = useSelector(selectAuthenticatedUser);\r\n const isEdit = !!props.paymentId && !!props.invoiceId;\r\n const { newDate } = useSystemDate();\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 close();\r\n refreshTable();\r\n });\r\n } else {\r\n PaymentApi.UpdatePayment(props.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 close();\r\n refreshTable();\r\n });\r\n }\r\n },\r\n [\r\n close,\r\n dispatch,\r\n isEdit,\r\n notifyActions,\r\n props.paymentId,\r\n refreshTable,\r\n sendResponse,\r\n t,\r\n ],\r\n );\r\n const [initialValues, setinitialValues] = useState({\r\n InvoiceId: props.invoiceId,\r\n Budget: props.budget,\r\n ServiceGroup: props.serviceGroup,\r\n Amount: props.amount,\r\n Method: null,\r\n Date: newDate(),\r\n });\r\n useEffect(() => {\r\n if (closeApproved) {\r\n dispatch(actions.resetSidePanel());\r\n }\r\n if (closeRejected) {\r\n dispatch(actions.resetConfirmState());\r\n }\r\n }, [actions, closeApproved, closeRejected, dispatch]);\r\n useEffectOnMount(() => {\r\n //dispatch(layoutActions.setUpSnackBarIndex(true)); // increase snack bar z-index\r\n if (!isEdit) {\r\n if (props.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 })('', props.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(' + props.paymentId + ')',\r\n {\r\n id: props.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: props.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={close}\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\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 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 {\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 {\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\n\r\nexport interface ChargeProps extends 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}\r\n\r\nconst onlyManual = true;\r\n\r\nexport const AddCharge = ({ serviceGroupPredicate, ...props }: 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 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 globalSettings = useGlobalSettingsHook();\r\n\r\n const [insertedAt, setinsertedAt] = useState(null);\r\n const [insertedBy, setinsertedBy] = useState(null);\r\n const isEdit = !!props.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: props.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: props.budget,\r\n ServiceGroup: props.serviceGroup,\r\n Manual: true,\r\n UserGroup: null,\r\n Remarks: '',\r\n FundingType:\r\n fundingTypeVisible &&\r\n !!props.budget &&\r\n props.budget !== null &&\r\n (props.budget as IBudgetFilterDto).FundingTypeId !== null\r\n ? getSingleInvoiceFundingType(\r\n (props.budget as IBudgetFilterDto).FundingTypeId ?? 0,\r\n )\r\n : null,\r\n PurchaseOrder: null,\r\n });\r\n\r\n 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 useEffect(() => {\r\n if (!isEdit) {\r\n if (props.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, props.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 (props.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(' + props.rowId + ')',\r\n {\r\n id: props.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 }, [props.rowId]);\r\n const close = useCallback(() => {\r\n if (props.isCover) {\r\n props.closeCover?.();\r\n } else {\r\n dispatch(actions.resetSidePanel());\r\n }\r\n }, [props, dispatch, actions]);\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 close();\r\n refreshTable();\r\n });\r\n } else {\r\n ChargeApi.UpdateCharge(charge, props.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 close();\r\n refreshTable();\r\n })\r\n .catch(e => console.error(e));\r\n }\r\n },\r\n [close, dispatch, isEdit, notifyActions, props.rowId, refreshTable, t],\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={close}\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={() => {\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 { 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 { 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\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 )\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","/**\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","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 && (\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];\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 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 * 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 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\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 page-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 };\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\nimport { bookitColors } from 'styles/colors/bookitColors';\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 },\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 '&.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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport { translations } from 'locales/translations';\r\nimport { Link as MuiLink } from '@material-ui/core';\r\nimport { IRegionDto } from './IRegionDto';\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 open()} color=\"textPrimary\">\r\n {props.children}\r\n \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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\r\nimport 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 { Link as MuiLink } from '@material-ui/core';\r\nimport { OfflineTypeRefsQueryParams } from 'app/pages/OfflineTypeReferencesDetails/Details/slice/types';\r\nimport { OfflineTypeReferencesDetailsProps } from 'app/pages/OfflineTypeReferencesDetails/Details';\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 {\r\n if (!!link) {\r\n if (!event.ctrlKey) {\r\n event.preventDefault();\r\n open();\r\n }\r\n } else {\r\n open();\r\n }\r\n }}\r\n color=\"textPrimary\"\r\n href={link}\r\n >\r\n {props.children}\r\n \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 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\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","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 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 (equipments.every(f => f.Billable === false)) {\r\n return false;\r\n }\r\n }\r\n\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 if (equipments.some(f => f.ServiceTypeId !== ServiceType.Online)) {\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.HideProjects)) {\r\n return false;\r\n }\r\n }\r\n return true;\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\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}\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 { 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}\r\n\r\nexport function FileView(props: FileViewProps) {\r\n const { file, onRemove, withShrinkLabel } = 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\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 { Tooltip } from 'app/components/BasicTooltips/Tooltip';\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 { Link as MuiLink } from '@material-ui/core';\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\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 \r\n open()} color=\"textPrimary\">\r\n {props.children}\r\n \r\n \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 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