@gen-epix/ui-client-casedb 4.0.0 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/mui.d.ts +1 -1
- package/dist/@types/{ui-casedb.d.ts → ui-client-casedb.d.ts} +1 -1
- package/dist/_chunks/AddCasesToEventDialog.js +74 -74
- package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
- package/dist/_chunks/CaseContentForm.js +2 -2
- package/dist/_chunks/CaseContentForm.js.map +1 -1
- package/dist/_chunks/CaseDbDownloadUtil.js +40 -35
- package/dist/_chunks/CaseDbDownloadUtil.js.map +1 -1
- package/dist/_chunks/CaseInfoDialog.js +195 -195
- package/dist/_chunks/CaseInfoDialog.js.map +1 -1
- package/dist/_chunks/CaseSetInfoDialog.js +131 -131
- package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
- package/dist/_chunks/CaseTypeInfoDialog.js +63 -61
- package/dist/_chunks/CaseTypeInfoDialog.js.map +1 -1
- package/dist/_chunks/CasesAlreadyInCaseSetWarning.js +6 -6
- package/dist/_chunks/CasesAlreadyInCaseSetWarning.js.map +1 -1
- package/dist/_chunks/CompletCaseTypeLoader.js +3 -3
- package/dist/_chunks/CompletCaseTypeLoader.js.map +1 -1
- package/dist/_chunks/CreateEventDialogSuccessNotificationMessage.js +1 -1
- package/dist/_chunks/CreateEventDialogSuccessNotificationMessage.js.map +1 -1
- package/dist/_chunks/CustomTabPanel.js.map +1 -1
- package/dist/_chunks/Dashboard.js +399 -386
- package/dist/_chunks/Dashboard.js.map +1 -1
- package/dist/_chunks/DashboardStoreLoader.js +5 -5
- package/dist/_chunks/DashboardStoreLoader.js.map +1 -1
- package/dist/_chunks/DataCollectionAccessInfo.js +21 -21
- package/dist/_chunks/DataCollectionAccessInfo.js.map +1 -1
- package/dist/_chunks/EpiCurveUtil.js +4 -4
- package/dist/_chunks/EpiCurveUtil.js.map +1 -1
- package/dist/_chunks/EpiCurveWidget.js +189 -183
- package/dist/_chunks/EpiCurveWidget.js.map +1 -1
- package/dist/_chunks/FilterUtil.js +103 -101
- package/dist/_chunks/FilterUtil.js.map +1 -1
- package/dist/_chunks/FindSimilarCasesDialog.js +16 -16
- package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
- package/dist/_chunks/FindSimilarCasesUtil.js +9 -9
- package/dist/_chunks/FindSimilarCasesUtil.js.map +1 -1
- package/dist/_chunks/HomePageTrends.js +8 -8
- package/dist/_chunks/HomePageTrends.js.map +1 -1
- package/dist/_chunks/LegendaItem.js +3 -3
- package/dist/_chunks/LegendaItem.js.map +1 -1
- package/dist/_chunks/LineListWidget.js +23 -21
- package/dist/_chunks/LineListWidget.js.map +1 -1
- package/dist/_chunks/PanelSeparator.js +374 -384
- package/dist/_chunks/PanelSeparator.js.map +1 -1
- package/dist/_chunks/Upload.js +222 -207
- package/dist/_chunks/Upload.js.map +1 -1
- package/dist/_chunks/UploadUtil.js +1970 -841
- package/dist/_chunks/UploadUtil.js.map +1 -1
- package/dist/_chunks/UserRightsDialog.js +12 -12
- package/dist/_chunks/UserRightsDialog.js.map +1 -1
- package/dist/_chunks/_MapCache.js +2 -2
- package/dist/_chunks/_baseGet.js +1 -1
- package/dist/_chunks/_baseGet.js.map +1 -1
- package/dist/_chunks/_baseIteratee.js +1 -1
- package/dist/_chunks/_baseIteratee.js.map +1 -1
- package/dist/_chunks/_setToString.js.map +1 -1
- package/dist/_chunks/{chunk-KS7C4IRE.js → chunk-BV7QT456.js} +330 -495
- package/dist/_chunks/chunk-BV7QT456.js.map +1 -0
- package/dist/_chunks/cloneDeep.js +11 -9
- package/dist/_chunks/cloneDeep.js.map +1 -1
- package/dist/_chunks/dashboardStore.js +259 -261
- package/dist/_chunks/dashboardStore.js.map +1 -1
- package/dist/_chunks/esm.js +2900 -2868
- package/dist/_chunks/esm.js.map +1 -1
- package/dist/_chunks/format.js +8 -8
- package/dist/_chunks/format.js.map +1 -1
- package/dist/_chunks/index.esm.js +919 -796
- package/dist/_chunks/index.esm.js.map +1 -1
- package/dist/_chunks/index.module.js +1 -1
- package/dist/_chunks/index.module.js.map +1 -1
- package/dist/_chunks/protectedTokens.js +79 -81
- package/dist/_chunks/protectedTokens.js.map +1 -1
- package/dist/_chunks/react.js +1 -1
- package/dist/_chunks/react.js.map +1 -1
- package/dist/_chunks/round.js +1 -1
- package/dist/_chunks/round.js.map +1 -1
- package/dist/_chunks/shallow.js +2 -2
- package/dist/_chunks/shallow.js.map +1 -1
- package/dist/_chunks/sync.js +198 -161
- package/dist/_chunks/sync.js.map +1 -1
- package/dist/_chunks/toDate.js +1 -1
- package/dist/_chunks/toDate.js.map +1 -1
- package/dist/_chunks/toString.js +1 -1
- package/dist/_chunks/toString.js.map +1 -1
- package/dist/_chunks/useUnit.js.map +1 -1
- package/dist/_chunks/vanilla.js +1 -1
- package/dist/_chunks/vanilla.js.map +1 -1
- package/dist/_chunks/yup.js +5 -5
- package/dist/_chunks/yup.js.map +1 -1
- package/dist/classes/filters/SelectionFilter.d.ts +2 -2
- package/dist/classes/filters/TreeFilter.d.ts +2 -2
- package/dist/classes/services/DataService/index.js +3 -3
- package/dist/classes/services/DataService/index.js.map +1 -1
- package/dist/classes/services/EventBusService/EventBusService.d.ts +1 -1
- package/dist/classes/services/EventBusService/index.js.map +1 -1
- package/dist/classes/services/LineListService/LineListServiceAbstract/index.js +1 -1
- package/dist/classes/services/LineListService/LineListServiceAbstract/index.js.map +1 -1
- package/dist/components/app/CaseDbApp/index.js +8 -5
- package/dist/components/app/CaseDbApp/index.js.map +1 -1
- package/dist/components/form/fields/ArrangementEditor/index.js +83 -83
- package/dist/components/form/fields/ArrangementEditor/index.js.map +1 -1
- package/dist/components/ui/AddCasesToEventDialog/AddCasesToEventDialog.d.ts +2 -2
- package/dist/components/ui/CaseContentFormDialog/CaseContentFormDialog.d.ts +2 -2
- package/dist/components/ui/CaseContentFormDialog/index.js +1 -1
- package/dist/components/ui/CaseContentFormDialog/index.js.map +1 -1
- package/dist/components/ui/CaseInfoDialog/CaseInfoDialog.d.ts +2 -2
- package/dist/components/ui/CaseSetInfoDialog/CaseSetInfoDialog.d.ts +2 -2
- package/dist/components/ui/CaseSummary/index.js +1 -1
- package/dist/components/ui/CaseSummary/index.js.map +1 -1
- package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialog.d.ts +2 -2
- package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialogContent.d.ts +1 -1
- package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialogWithLoader.d.ts +2 -2
- package/dist/components/ui/ContextMenu/index.js.map +1 -1
- package/dist/components/ui/CreateEventDialog/CreateEventDialog.d.ts +2 -2
- package/dist/components/ui/CreateEventDialog/index.js +9 -9
- package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
- package/dist/components/ui/Dashboard/DashboardDownloadSidebarItem.d.ts +1 -1
- package/dist/components/ui/Dashboard/DashboardSettingsSidebarItem.d.ts +1 -1
- package/dist/components/ui/Dashboard/DashboardWidget.d.ts +1 -1
- package/dist/components/ui/DashboardEditCases/index.js +1 -1
- package/dist/components/ui/DashboardEditCases/index.js.map +1 -1
- package/dist/components/ui/FileSelector/index.js +46 -46
- package/dist/components/ui/FileSelector/index.js.map +1 -1
- package/dist/components/ui/FindSimilarCasesDialog/FindSimilarCasesDialog.d.ts +2 -2
- package/dist/components/ui/Grouping/index.js +50 -50
- package/dist/components/ui/Grouping/index.js.map +1 -1
- package/dist/components/ui/HistogramWidget/index.js +1 -1
- package/dist/components/ui/HistogramWidget/index.js.map +1 -1
- package/dist/components/ui/MapWidget/index.js +7 -3
- package/dist/components/ui/MapWidget/index.js.map +1 -1
- package/dist/components/ui/RemoveCasesFromEventDialog/RemoveCasesFromEventDialog.d.ts +2 -2
- package/dist/components/ui/RemoveCasesFromEventDialog/index.js +6 -6
- package/dist/components/ui/RemoveCasesFromEventDialog/index.js.map +1 -1
- package/dist/components/ui/RemoveFindSimilarCasesResultDialog/RemoveFindSimilarCasesResultDialog.d.ts +2 -2
- package/dist/components/ui/SequenceDownloadDialog/SequenceDownloadDialog.d.ts +2 -2
- package/dist/components/ui/SequenceDownloadDialog/index.js +22 -22
- package/dist/components/ui/SequenceDownloadDialog/index.js.map +1 -1
- package/dist/components/ui/TreeDescription/index.js.map +1 -1
- package/dist/components/ui/TreeWidget/index.js +11 -11
- package/dist/components/ui/TreeWidget/index.js.map +1 -1
- package/dist/components/ui/Upload/UploadCaseResultTable.d.ts +2 -2
- package/dist/components/ui/Upload/UploadEditColumnValuesDialog.d.ts +2 -2
- package/dist/components/ui/UserRightsDialog/UserRightsDialog.d.ts +2 -2
- package/dist/components/ui/UsersEffectiveRightsDetailsDialog/UsersEffectiveRightsDetailsDialog.d.ts +2 -2
- package/dist/components/ui/UsersEffectiveRightsDetailsDialog/index.js +25 -11
- package/dist/components/ui/UsersEffectiveRightsDetailsDialog/index.js.map +1 -1
- package/dist/components/ui/Warning/index.js.map +1 -1
- package/dist/components/ui/WidgetHeaderIconButton/index.js.map +1 -1
- package/dist/components/ui/WidgetMenu/WidgetMenu.d.ts +1 -1
- package/dist/components/ui/WidgetMenu/index.js +2 -2
- package/dist/components/ui/WidgetMenu/index.js.map +1 -1
- package/dist/components/ui/WidgetUnavailable/index.js.map +1 -1
- package/dist/constants/query.d.ts +1 -1
- package/dist/constants/query.js +1 -1
- package/dist/constants/query.js.map +1 -1
- package/dist/context/caseAbac/CaseAbacContext.d.ts +1 -1
- package/dist/dataHooks/useAssemblyProtocolsQuery/index.js +3 -3
- package/dist/dataHooks/useAssemblyProtocolsQuery/index.js.map +1 -1
- package/dist/dataHooks/useAssemblyProtocolsQuery/useAssemblyProtocolsQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseRightsQuery/index.js +2 -2
- package/dist/dataHooks/useCaseRightsQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseSetCategoriesQuery/index.js +3 -3
- package/dist/dataHooks/useCaseSetCategoriesQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseSetCategoriesQuery/useCaseSetCategoriesQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseSetRightsQuery/index.js +2 -2
- package/dist/dataHooks/useCaseSetRightsQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseSetStatsQuery/index.js +3 -3
- package/dist/dataHooks/useCaseSetStatsQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseSetStatsQuery/useCaseSetStatsQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseSetStatusesQuery/index.js +3 -3
- package/dist/dataHooks/useCaseSetStatusesQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseSetStatusesQuery/useCaseSetStatusesQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseSetsQuery/index.js +3 -3
- package/dist/dataHooks/useCaseSetsQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseSetsQuery/useCaseSetsQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseTypeSetCategoriesQuery/index.js +3 -3
- package/dist/dataHooks/useCaseTypeSetCategoriesQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseTypeSetCategoriesQuery/useCaseTypeSetCategoriesQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseTypeSetCategoryPurposeQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseTypeSetCategoryPurposeQuery/useCaseTypeSetCategoryPurposeQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseTypeSetMembersQuery/index.js +2 -2
- package/dist/dataHooks/useCaseTypeSetMembersQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseTypeSetsQuery/index.js +3 -3
- package/dist/dataHooks/useCaseTypeSetsQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseTypeSetsQuery/useCaseTypeSetsQuery.d.ts +1 -1
- package/dist/dataHooks/useCaseTypeStatsQuery/index.js +2 -2
- package/dist/dataHooks/useCaseTypeStatsQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseTypesQuery/index.js +3 -3
- package/dist/dataHooks/useCaseTypesQuery/index.js.map +1 -1
- package/dist/dataHooks/useCaseTypesQuery/useCaseTypesQuery.d.ts +1 -1
- package/dist/dataHooks/useColSetMembersQuery/index.js +2 -2
- package/dist/dataHooks/useColSetMembersQuery/index.js.map +1 -1
- package/dist/dataHooks/useColSetsQuery/index.js +3 -3
- package/dist/dataHooks/useColSetsQuery/index.js.map +1 -1
- package/dist/dataHooks/useColSetsQuery/useColSetsQuery.d.ts +1 -1
- package/dist/dataHooks/useColTypesQuery/index.js.map +1 -1
- package/dist/dataHooks/useColTypesQuery/useColTypesQuery.d.ts +1 -1
- package/dist/dataHooks/useColsQuery/index.js +3 -3
- package/dist/dataHooks/useColsQuery/index.js.map +1 -1
- package/dist/dataHooks/useColsQuery/useColsQuery.d.ts +1 -1
- package/dist/dataHooks/useConceptQuery/index.js +3 -3
- package/dist/dataHooks/useConceptQuery/index.js.map +1 -1
- package/dist/dataHooks/useConceptQuery/useConceptQuery.d.ts +1 -1
- package/dist/dataHooks/useConceptRelationTypeQuery/index.js.map +1 -1
- package/dist/dataHooks/useConceptRelationTypeQuery/useConceptRelationTypeQuery.d.ts +1 -1
- package/dist/dataHooks/useConceptSetTypeQuery/index.js.map +1 -1
- package/dist/dataHooks/useConceptSetTypeQuery/useConceptSetTypeQuery.d.ts +1 -1
- package/dist/dataHooks/useConceptSetsQuery/index.js +3 -3
- package/dist/dataHooks/useConceptSetsQuery/index.js.map +1 -1
- package/dist/dataHooks/useConceptSetsQuery/useConceptSetsQuery.d.ts +1 -1
- package/dist/dataHooks/useDataCollectionSetMembersQuery/index.js +2 -2
- package/dist/dataHooks/useDataCollectionSetMembersQuery/index.js.map +1 -1
- package/dist/dataHooks/useDataCollectionsQuery/index.js +3 -3
- package/dist/dataHooks/useDataCollectionsQuery/index.js.map +1 -1
- package/dist/dataHooks/useDataCollectionsQuery/useDataCollectionsQuery.d.ts +1 -1
- package/dist/dataHooks/useDimTypesQuery/index.js.map +1 -1
- package/dist/dataHooks/useDimTypesQuery/useDimTypesQuery.d.ts +1 -1
- package/dist/dataHooks/useDimsQuery/index.js +3 -3
- package/dist/dataHooks/useDimsQuery/index.js.map +1 -1
- package/dist/dataHooks/useDimsQuery/useDimsQuery.d.ts +1 -1
- package/dist/dataHooks/useDiseasesQuery/index.js +3 -3
- package/dist/dataHooks/useDiseasesQuery/index.js.map +1 -1
- package/dist/dataHooks/useDiseasesQuery/useDiseasesQuery.d.ts +1 -1
- package/dist/dataHooks/useEtiologicalAgentsQuery/index.js +3 -3
- package/dist/dataHooks/useEtiologicalAgentsQuery/index.js.map +1 -1
- package/dist/dataHooks/useEtiologicalAgentsQuery/useEtiologicalAgentsQuery.d.ts +1 -1
- package/dist/dataHooks/useGeneticDistanceProtocolsQuery/index.js +3 -3
- package/dist/dataHooks/useGeneticDistanceProtocolsQuery/index.js.map +1 -1
- package/dist/dataHooks/useGeneticDistanceProtocolsQuery/useGeneticDistanceProtocolsQuery.d.ts +1 -1
- package/dist/dataHooks/useOrganizationAccessCasePoliciesQuery/index.js +2 -2
- package/dist/dataHooks/useOrganizationAccessCasePoliciesQuery/index.js.map +1 -1
- package/dist/dataHooks/useOrganizationShareCasePoliciesQuery/index.js +2 -2
- package/dist/dataHooks/useOrganizationShareCasePoliciesQuery/index.js.map +1 -1
- package/dist/dataHooks/useRefColsQuery/index.js +3 -3
- package/dist/dataHooks/useRefColsQuery/index.js.map +1 -1
- package/dist/dataHooks/useRefColsQuery/useRefColsQuery.d.ts +1 -1
- package/dist/dataHooks/useRefColsValidationRulesQuery/index.js +2 -2
- package/dist/dataHooks/useRefColsValidationRulesQuery/index.js.map +1 -1
- package/dist/dataHooks/useRefDimsQuery/index.js +3 -3
- package/dist/dataHooks/useRefDimsQuery/index.js.map +1 -1
- package/dist/dataHooks/useRefDimsQuery/useRefDimsQuery.d.ts +1 -1
- package/dist/dataHooks/useRegionQuery/index.js +3 -3
- package/dist/dataHooks/useRegionQuery/index.js.map +1 -1
- package/dist/dataHooks/useRegionQuery/useRegionQuery.d.ts +1 -1
- package/dist/dataHooks/useRegionRelationTypeQuery/index.js.map +1 -1
- package/dist/dataHooks/useRegionRelationTypeQuery/useRegionRelationTypeQuery.d.ts +1 -1
- package/dist/dataHooks/useRegionSetsQuery/index.js +3 -3
- package/dist/dataHooks/useRegionSetsQuery/index.js.map +1 -1
- package/dist/dataHooks/useRegionSetsQuery/useRegionSetsQuery.d.ts +1 -1
- package/dist/dataHooks/useSequencingProtocolsQuery/index.js +3 -3
- package/dist/dataHooks/useSequencingProtocolsQuery/index.js.map +1 -1
- package/dist/dataHooks/useSequencingProtocolsQuery/useSequencingProtocolsQuery.d.ts +1 -1
- package/dist/dataHooks/useTreeAlgorithmCodesQuery/index.js.map +1 -1
- package/dist/dataHooks/useTreeAlgorithmCodesQuery/useTreeAlgorithmCodesQuery.d.ts +1 -1
- package/dist/dataHooks/useUnitQuery/useUnit.d.ts +1 -1
- package/dist/dataHooks/useUserAccessCasePoliciesQuery/index.js +2 -2
- package/dist/dataHooks/useUserAccessCasePoliciesQuery/index.js.map +1 -1
- package/dist/dataHooks/useUserEffectiveRightsQuery/index.js +3 -3
- package/dist/dataHooks/useUserEffectiveRightsQuery/index.js.map +1 -1
- package/dist/dataHooks/useUserEffectiveRightsQuery/useUserEffectiveRightsQuery.d.ts +1 -1
- package/dist/dataHooks/useUserShareCasePoliciesQuery/index.js +2 -2
- package/dist/dataHooks/useUserShareCasePoliciesQuery/index.js.map +1 -1
- package/dist/hooks/useOrganizationCasePolicyNameFactory/index.js +2 -2
- package/dist/hooks/useOrganizationCasePolicyNameFactory/index.js.map +1 -1
- package/dist/hooks/useOrganizationCasePolicyNameFactory/useOrganizationCasePolicyNameFactory.d.ts +1 -1
- package/dist/hooks/useUserCasePolicyNameFactory/index.js +3 -3
- package/dist/hooks/useUserCasePolicyNameFactory/index.js.map +1 -1
- package/dist/hooks/useUserCasePolicyNameFactory/useUserCasePolicyNameFactory.d.ts +1 -1
- package/dist/locale/nl.json +1 -1
- package/dist/models/config.d.ts +1 -1
- package/dist/models/dashboard.d.ts +1 -1
- package/dist/models/dashboard.js.map +1 -1
- package/dist/models/theme.d.ts +2 -2
- package/dist/pages/CaseDbUsersAdminPage/index.js +5 -5
- package/dist/pages/CaseDbUsersAdminPage/index.js.map +1 -1
- package/dist/pages/CaseSetCategoryAdminPage/index.js +4 -4
- package/dist/pages/CaseSetCategoryAdminPage/index.js.map +1 -1
- package/dist/pages/CaseSetStatusAdminPage/index.js +4 -4
- package/dist/pages/CaseSetStatusAdminPage/index.js.map +1 -1
- package/dist/pages/CaseTypeSetCategoriesAdminPage/index.js +4 -4
- package/dist/pages/CaseTypeSetCategoriesAdminPage/index.js.map +1 -1
- package/dist/pages/CaseTypeSetsAdminPage/index.js +6 -6
- package/dist/pages/CaseTypeSetsAdminPage/index.js.map +1 -1
- package/dist/pages/CaseTypesAdminPage/index.js +5 -5
- package/dist/pages/CaseTypesAdminPage/index.js.map +1 -1
- package/dist/pages/CasesDetailPage/index.js +5 -5
- package/dist/pages/CasesDetailPage/index.js.map +1 -1
- package/dist/pages/CasesPage/index.js +10 -10
- package/dist/pages/CasesPage/index.js.map +1 -1
- package/dist/pages/ColSetsAdminPage/index.js +6 -6
- package/dist/pages/ColSetsAdminPage/index.js.map +1 -1
- package/dist/pages/ColsAdminPage/index.js +5 -5
- package/dist/pages/ColsAdminPage/index.js.map +1 -1
- package/dist/pages/ConceptRelationsAdminPage/index.js +19 -19
- package/dist/pages/ConceptRelationsAdminPage/index.js.map +1 -1
- package/dist/pages/ConceptSetsAdminPage/index.js +5 -5
- package/dist/pages/ConceptSetsAdminPage/index.js.map +1 -1
- package/dist/pages/ConceptsAdminPage/index.js +5 -5
- package/dist/pages/ConceptsAdminPage/index.js.map +1 -1
- package/dist/pages/DataCollectionSetsAdminPage/index.js +12 -12
- package/dist/pages/DataCollectionSetsAdminPage/index.js.map +1 -1
- package/dist/pages/DataCollectionVisualizationPage/index.js +4 -4
- package/dist/pages/DataCollectionVisualizationPage/index.js.map +1 -1
- package/dist/pages/DataCollectionsAdminPage/index.js +4 -4
- package/dist/pages/DataCollectionsAdminPage/index.js.map +1 -1
- package/dist/pages/DimsAdminPage/index.js +6 -6
- package/dist/pages/DimsAdminPage/index.js.map +1 -1
- package/dist/pages/DiseasesAdminPage/index.js +4 -4
- package/dist/pages/DiseasesAdminPage/index.js.map +1 -1
- package/dist/pages/EtiologicalAgentsAdminPage/index.js +4 -4
- package/dist/pages/EtiologicalAgentsAdminPage/index.js.map +1 -1
- package/dist/pages/EtiologiesAdminPage/index.js +3 -3
- package/dist/pages/EtiologiesAdminPage/index.js.map +1 -1
- package/dist/pages/EventsDetailPage/index.js +5 -5
- package/dist/pages/EventsDetailPage/index.js.map +1 -1
- package/dist/pages/EventsPage/index.js +11 -11
- package/dist/pages/EventsPage/index.js.map +1 -1
- package/dist/pages/HomePage/index.js +2 -2
- package/dist/pages/HomePage/index.js.map +1 -1
- package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js +4 -4
- package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js.map +1 -1
- package/dist/pages/OrganizationShareCasePoliciesAdminPage/index.js +4 -4
- package/dist/pages/OrganizationShareCasePoliciesAdminPage/index.js.map +1 -1
- package/dist/pages/RefColsAdminPage/index.js +7 -7
- package/dist/pages/RefColsAdminPage/index.js.map +1 -1
- package/dist/pages/RefDimsAdminPage/index.js +5 -5
- package/dist/pages/RefDimsAdminPage/index.js.map +1 -1
- package/dist/pages/RegionRelationsAdminPage/index.js +3 -3
- package/dist/pages/RegionRelationsAdminPage/index.js.map +1 -1
- package/dist/pages/RegionSetShapesAdminPage/index.js +4 -4
- package/dist/pages/RegionSetShapesAdminPage/index.js.map +1 -1
- package/dist/pages/RegionSetsAdminPage/index.js +5 -5
- package/dist/pages/RegionSetsAdminPage/index.js.map +1 -1
- package/dist/pages/RegionsAdminPage/index.js +5 -5
- package/dist/pages/RegionsAdminPage/index.js.map +1 -1
- package/dist/pages/TrendsPage/index.js +1 -1
- package/dist/pages/TrendsPage/index.js.map +1 -1
- package/dist/pages/UploadPage/index.js +1 -1
- package/dist/pages/UploadPage/index.js.map +1 -1
- package/dist/pages/UserAccessCasePoliciesAdminPage/index.js +4 -4
- package/dist/pages/UserAccessCasePoliciesAdminPage/index.js.map +1 -1
- package/dist/pages/UserEffectiveRightsAdminPage/index.js +12 -12
- package/dist/pages/UserEffectiveRightsAdminPage/index.js.map +1 -1
- package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +8 -8
- package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
- package/dist/pages/UserShareCasePoliciesAdminPage/index.js +4 -4
- package/dist/pages/UserShareCasePoliciesAdminPage/index.js.map +1 -1
- package/dist/routes/adminRoutes.d.ts +1 -1
- package/dist/routes/index.js +11 -8
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/routes.d.ts +1 -1
- package/dist/setup/setup.js +5 -5
- package/dist/setup/setup.js.map +1 -1
- package/dist/stores/dashboardStore/dashboardStore.d.ts +1 -1
- package/dist/stores/uploadStore/index.js +2 -2
- package/dist/stores/uploadStore/index.js.map +1 -1
- package/dist/stores/uploadStore/uploadStore.d.ts +1 -1
- package/dist/stores/userProfileStore/index.js +2 -2
- package/dist/stores/userProfileStore/index.js.map +1 -1
- package/dist/theme/demoTheme/index.js +2 -2
- package/dist/theme/demoTheme/index.js.map +1 -1
- package/dist/utils/CaseDbDataUtil/CaseDbDataUtil.d.ts +1 -1
- package/dist/utils/CaseDbDataUtil/index.js +1 -1
- package/dist/utils/CaseDbDataUtil/index.js.map +1 -1
- package/dist/utils/CaseDbStandardConfigUtil/index.js +2488 -1408
- package/dist/utils/CaseDbStandardConfigUtil/index.js.map +1 -1
- package/dist/utils/CaseDbTableUtil/CaseDbTableUtil.d.ts +1 -1
- package/dist/utils/CaseDbTableUtil/index.js +1 -1
- package/dist/utils/CaseDbTableUtil/index.js.map +1 -1
- package/dist/utils/CaseSelectionUtil/index.js.map +1 -1
- package/dist/utils/CaseTypeFormUtil/CaseTypeFormUtil.d.ts +1 -1
- package/dist/utils/CaseTypeFormUtil/index.js +7 -10
- package/dist/utils/CaseTypeFormUtil/index.js.map +1 -1
- package/dist/utils/CaseTypeUtil/index.js +1 -1
- package/dist/utils/CaseTypeUtil/index.js.map +1 -1
- package/dist/utils/CaseUtil/index.js +3 -3
- package/dist/utils/CaseUtil/index.js.map +1 -1
- package/dist/utils/DashboardUtil/index.js +1 -1
- package/dist/utils/DashboardUtil/index.js.map +1 -1
- package/dist/utils/DataSetUtil/index.js.map +1 -1
- package/dist/utils/FileUtil/index.js +1 -1
- package/dist/utils/FileUtil/index.js.map +1 -1
- package/dist/utils/FilterUtil/FilterUtil.d.ts +2 -2
- package/dist/utils/HistogramUtil/index.js +1 -1
- package/dist/utils/HistogramUtil/index.js.map +1 -1
- package/dist/utils/MapUtil/index.js +1 -1
- package/dist/utils/MapUtil/index.js.map +1 -1
- package/dist/utils/StratificationUtil/index.js +3 -2
- package/dist/utils/StratificationUtil/index.js.map +1 -1
- package/dist/utils/UploadUtil/UploadUtil.d.ts +1 -1
- package/package.json +19 -11
- package/dist/_chunks/chunk-KS7C4IRE.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CaseTypeSetCategoriesAdminPage/CaseTypeSetCategoriesAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n mixed,\n object,\n} from 'yup';\nimport type {\n CaseDbApiPermission,\n CaseDbCaseTypeSetCategory,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCaseTypeSetCategoryPurpose,\n CaseDbCommandName,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui/models/data';\nimport type { TableColumn } from '@gen-epix/ui/models/table';\nimport { CrudPage } from '@gen-epix/ui/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-form/utils/SchemaUtil';\n\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { useCaseTypeSetCategoryPurposeOptionsQuery } from '../../dataHooks/useCaseTypeSetCategoryPurposeQuery';\n\n\ntype FormFields = OmitWithMetaData<CaseDbCaseTypeSetCategory>;\n\nexport const CaseTypeSetCategoriesAdminPage = () => {\n const { t } = useTranslation();\n\n const caseTypeSetCategoryPurposeOptionsQuery = useCaseTypeSetCategoryPurposeOptionsQuery();\n\n const loadables = useArray([caseTypeSetCategoryPurposeOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().caseTypeSetCategoriesGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbCaseTypeSetCategory) => {\n return await CaseDbCaseApi.getInstance().caseTypeSetCategoriesDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCaseTypeSetCategory) => {\n return (await CaseDbCaseApi.getInstance().caseTypeSetCategoriesPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().caseTypeSetCategoriesPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbCaseTypeSetCategory) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n purpose: mixed<CaseDbCaseTypeSetCategoryPurpose>().required().oneOf(Object.values(CaseDbCaseTypeSetCategoryPurpose)),\n rank: SchemaUtil.rank,\n });\n }, []);\n\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n multiline: true,\n name: 'description',\n rows: 5,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Rank`,\n name: 'rank',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Purpose`,\n loading: caseTypeSetCategoryPurposeOptionsQuery.isLoading,\n name: 'purpose',\n options: caseTypeSetCategoryPurposeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseTypeSetCategoryPurposeOptionsQuery.isLoading, caseTypeSetCategoryPurposeOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCaseTypeSetCategory>[] => {\n return [\n TableUtil.createTextColumn<CaseDbCaseTypeSetCategory>({ id: 'name', name: t`Name` }),\n TableUtil.createNumberColumn<CaseDbCaseTypeSetCategory>({ id: 'rank', name: t`Rank` }),\n TableUtil.createOptionsColumn<CaseDbCaseTypeSetCategory>({ id: 'purpose', name: t`Purpose`, options: caseTypeSetCategoryPurposeOptionsQuery.options }),\n ];\n }, [caseTypeSetCategoryPurposeOptionsQuery.options, t]);\n\n return (\n <CrudPage<FormFields, CaseDbCaseTypeSetCategory, CaseDbCaseTypeSetCategory, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new case type set category`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.CaseTypeSetCategoryCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Case type set category`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CASE_TYPE_SET_CATEGORIES}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('CaseTypeSetCategoriesAdminPage')}\n title={t`Case type set categories`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAkCA,IAAa,UAAuC;CAClD,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAyC,EAA0C,GAEnF,IAAY,EAAS,CAAC,CAAsC,CAAC,GAE7D,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAc,YAAY,CAAC,CAAC,4BAA4B,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MAC/F,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAc,YAAY,CAAC,CAAC,+BAA+B,EAAK,EAAE,GAC9E,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OAClD,MAAM,EAAc,YAAY,CAAC,CAAC,4BAA4B,EAAK,IAAI;EAAE,IAAI,EAAK;EAAI,GAAG;CAAU,CAAC,EAAA,CAAG,MAC9G,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,OAC3B,MAAM,EAAc,YAAY,CAAC,CAAC,6BAA6B,CAAS,EAAA,CAAG,MAClF,CAAC,CAAC,GAEC,IAAU,GAAa,MACpB,EAAK,MACX,CAAC,CAAC,GAEC,IAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,aAAa,EAAW;EACxB,MAAM,EAAW;EACjB,SAAS,EAAwC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,OAAO,OAAO,CAAgC,CAAC;EACnH,MAAM,EAAW;CACnB,CAAC,GACA,CAAC,CAAC,GAGC,IAAuB,QACpB;EACL;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,WAAW;GACX,MAAM;GACN,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;GACN,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAAuC;GAChD,MAAM;GACN,SAAS,EAAuC;EAClD;CACF,GACC;EAAC,EAAuC;EAAW,EAAuC;EAAS;CAAC,CAAC,GAElG,IAAe,QACZ;EACL,EAAU,iBAA4C;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACnF,EAAU,mBAA8C;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACrF,EAAU,oBAA+C;GAAE,IAAI;GAAW,MAAM,CAAC;GAAW,SAAS,EAAuC;EAAQ,CAAC;CACvJ,GACC,CAAC,EAAuC,SAAS,CAAC,CAAC;CAEtD,OACE,kBAAC,GAAD;EACE,uBAAuB,CAAC;EACb;EACX,iBAAiB,EAAkB;EACnC,oBAAoB;EACpB,sBAAsB;EACX;EACD;EACY;EACb;EACT,UAAU,CAAC;EACA;EACX,sBAAsB,EAAiB;EAC/B;EACM;EACd,kBAAkB,EAAW,iBAAiB,gCAAgC;EAC9E,OAAO,CAAC;EACG;CACZ,CAAA;AAEL"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CaseTypeSetCategoriesAdminPage/CaseTypeSetCategoriesAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n mixed,\n object,\n} from 'yup';\nimport type {\n CaseDbApiPermission,\n CaseDbCaseTypeSetCategory,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCaseTypeSetCategoryPurpose,\n CaseDbCommandName,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { useCaseTypeSetCategoryPurposeOptionsQuery } from '../../dataHooks/useCaseTypeSetCategoryPurposeQuery';\n\n\ntype FormFields = OmitWithMetaData<CaseDbCaseTypeSetCategory>;\n\nexport const CaseTypeSetCategoriesAdminPage = () => {\n const { t } = useTranslation();\n\n const caseTypeSetCategoryPurposeOptionsQuery = useCaseTypeSetCategoryPurposeOptionsQuery();\n\n const loadables = useArray([caseTypeSetCategoryPurposeOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().caseTypeSetCategoriesGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbCaseTypeSetCategory) => {\n return await CaseDbCaseApi.getInstance().caseTypeSetCategoriesDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCaseTypeSetCategory) => {\n return (await CaseDbCaseApi.getInstance().caseTypeSetCategoriesPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().caseTypeSetCategoriesPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbCaseTypeSetCategory) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n purpose: mixed<CaseDbCaseTypeSetCategoryPurpose>().required().oneOf(Object.values(CaseDbCaseTypeSetCategoryPurpose)),\n rank: SchemaUtil.rank,\n });\n }, []);\n\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n multiline: true,\n name: 'description',\n rows: 5,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Rank`,\n name: 'rank',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Purpose`,\n loading: caseTypeSetCategoryPurposeOptionsQuery.isLoading,\n name: 'purpose',\n options: caseTypeSetCategoryPurposeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseTypeSetCategoryPurposeOptionsQuery.isLoading, caseTypeSetCategoryPurposeOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCaseTypeSetCategory>[] => {\n return [\n TableUtil.createTextColumn<CaseDbCaseTypeSetCategory>({ id: 'name', name: t`Name` }),\n TableUtil.createNumberColumn<CaseDbCaseTypeSetCategory>({ id: 'rank', name: t`Rank` }),\n TableUtil.createOptionsColumn<CaseDbCaseTypeSetCategory>({ id: 'purpose', name: t`Purpose`, options: caseTypeSetCategoryPurposeOptionsQuery.options }),\n ];\n }, [caseTypeSetCategoryPurposeOptionsQuery.options, t]);\n\n return (\n <CrudPage<FormFields, CaseDbCaseTypeSetCategory, CaseDbCaseTypeSetCategory, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new case type set category`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.CaseTypeSetCategoryCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Case type set category`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CASE_TYPE_SET_CATEGORIES}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('CaseTypeSetCategoriesAdminPage')}\n title={t`Case type set categories`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAkCA,IAAa,UAAuC;CAClD,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAyC,EAA0C,GAEnF,IAAY,EAAS,CAAC,CAAsC,CAAC,GAE7D,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAc,YAAY,CAAC,CAAC,4BAA4B,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MAC/F,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAc,YAAY,CAAC,CAAC,+BAA+B,EAAK,EAAE,GAC9E,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OAClD,MAAM,EAAc,YAAY,CAAC,CAAC,4BAA4B,EAAK,IAAI;EAAE,IAAI,EAAK;EAAI,GAAG;CAAU,CAAC,EAAA,CAAG,MAC9G,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,OAC3B,MAAM,EAAc,YAAY,CAAC,CAAC,6BAA6B,CAAS,EAAA,CAAG,MAClF,CAAC,CAAC,GAEC,IAAU,GAAa,MACpB,EAAK,MACX,CAAC,CAAC,GAEC,IAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,aAAa,EAAW;EACxB,MAAM,EAAW;EACjB,SAAS,EAAwC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,OAAO,OAAO,CAAgC,CAAC;EACnH,MAAM,EAAW;CACnB,CAAC,GACA,CAAC,CAAC,GAGC,IAAuB,QACpB;EACL;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,WAAW;GACX,MAAM;GACN,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;GACN,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAAuC;GAChD,MAAM;GACN,SAAS,EAAuC;EAClD;CACF,GACC;EAAC,EAAuC;EAAW,EAAuC;EAAS;CAAC,CAAC,GAElG,IAAe,QACZ;EACL,EAAU,iBAA4C;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACnF,EAAU,mBAA8C;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACrF,EAAU,oBAA+C;GAAE,IAAI;GAAW,MAAM,CAAC;GAAW,SAAS,EAAuC;EAAQ,CAAC;CACvJ,GACC,CAAC,EAAuC,SAAS,CAAC,CAAC;CAEtD,OACE,kBAAC,GAAD;EACE,uBAAuB,CAAC;EACb;EACX,iBAAiB,EAAkB;EACnC,oBAAoB;EACpB,sBAAsB;EACX;EACD;EACY;EACb;EACT,UAAU,CAAC;EACA;EACX,sBAAsB,EAAiB;EAC/B;EACM;EACd,kBAAkB,EAAW,iBAAiB,gCAAgC;EAC9E,OAAO,CAAC;EACG;CACZ,CAAA;AAEL"}
|
|
@@ -6,15 +6,15 @@ import { useCaseTypeSetCategoryOptionsQuery as i } from "../../dataHooks/useCase
|
|
|
6
6
|
import { useCaseTypeSetMembersQuery as a } from "../../dataHooks/useCaseTypeSetMembersQuery/index.js";
|
|
7
7
|
import { array as o, object as s, string as c } from "yup";
|
|
8
8
|
import { CaseDbCaseApi as l, CaseDbCommandName as u, CaseDbPermissionType as d } from "@gen-epix/api-casedb";
|
|
9
|
-
import { FORM_FIELD_DEFINITION_TYPE as f } from "@gen-epix/ui-form/models/form";
|
|
9
|
+
import { FORM_FIELD_DEFINITION_TYPE as f } from "@gen-epix/ui-core-form/models/form";
|
|
10
10
|
import { useCallback as p, useMemo as m } from "react";
|
|
11
11
|
import { useTranslation as h } from "react-i18next";
|
|
12
12
|
import { jsx as g } from "react/jsx-runtime";
|
|
13
13
|
import { useArray as _ } from "@gen-epix/ui-core/hooks/useArray";
|
|
14
|
-
import { TableUtil as v } from "@gen-epix/ui/utils/TableUtil";
|
|
14
|
+
import { TableUtil as v } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
15
15
|
import { TestIdUtil as y } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
16
|
-
import { SchemaUtil as b } from "@gen-epix/ui-form/utils/SchemaUtil";
|
|
17
|
-
import { CrudPage as x } from "@gen-epix/ui/pages/CrudPage";
|
|
16
|
+
import { SchemaUtil as b } from "@gen-epix/ui-core-form/utils/SchemaUtil";
|
|
17
|
+
import { CrudPage as x } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
18
18
|
//#region src/pages/CaseTypeSetsAdminPage/CaseTypeSetsAdminPage.tsx
|
|
19
19
|
var S = /* @__PURE__ */ e(r(), 1), C = () => {
|
|
20
20
|
let { t: e } = h(), r = i(), C = a(), w = n(), T = _([w, r]), E = p(async (e) => (await l.getInstance().caseTypeSetsGetAll(null, null, { signal: e }))?.data, []), D = p(async (e) => await l.getInstance().caseTypeSetsDeleteOne(e.id), []), O = p(async (e, t) => (await l.getInstance().caseTypeSetsPutCaseTypes(t.id, { case_type_set_members: e.caseTypeIds.map((e) => ({
|
|
@@ -116,9 +116,9 @@ var S = /* @__PURE__ */ e(r(), 1), C = () => {
|
|
|
116
116
|
...e,
|
|
117
117
|
caseTypeIds: t
|
|
118
118
|
};
|
|
119
|
-
}), [C.data]);
|
|
119
|
+
}), [C.data]), R = m(() => [[t.CASE_TYPE_SET_MEMBERS]], []);
|
|
120
120
|
return /* @__PURE__ */ g(x, {
|
|
121
|
-
associationQueryKeys:
|
|
121
|
+
associationQueryKeys: R,
|
|
122
122
|
convertToTableData: L,
|
|
123
123
|
createItemDialogTitle: e`Create new case type set`,
|
|
124
124
|
createOne: k,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CaseTypeSetsAdminPage/CaseTypeSetsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport omit from 'lodash/omit';\nimport type {\n CaseDbApiPermission,\n CaseDbCaseTypeSet,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCommandName,\n CaseDbPermissionType,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui/models/data';\nimport type { TableColumn } from '@gen-epix/ui/models/table';\nimport { CrudPage } from '@gen-epix/ui/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-form/utils/SchemaUtil';\n\nimport { useCaseTypeOptionsQuery } from '../../dataHooks/useCaseTypesQuery';\nimport { useCaseTypeSetCategoryOptionsQuery } from '../../dataHooks/useCaseTypeSetCategoriesQuery';\nimport { useCaseTypeSetMembersQuery } from '../../dataHooks/useCaseTypeSetMembersQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<TableData, 'case_type_set_category'>;\n\ninterface TableData extends CaseDbCaseTypeSet {\n caseTypeIds?: string[];\n}\n\nexport const CaseTypeSetsAdminPage = () => {\n const { t } = useTranslation();\n const caseTypeSetCategoryOptionsQuery = useCaseTypeSetCategoryOptionsQuery();\n const caseTypeSetMembersQuery = useCaseTypeSetMembersQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n\n const loadables = useArray([caseTypeOptionsQuery, caseTypeSetCategoryOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal): Promise<CaseDbCaseTypeSet[]> => {\n const caseTypesSets = (await CaseDbCaseApi.getInstance().caseTypeSetsGetAll(null, null, { signal }))?.data;\n return caseTypesSets;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbCaseTypeSet) => {\n return await CaseDbCaseApi.getInstance().caseTypeSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCaseTypeSet) => {\n await CaseDbCaseApi.getInstance().caseTypeSetsPutCaseTypes(item.id, {\n case_type_set_members: variables.caseTypeIds.map(case_type_id => ({\n case_type_id,\n case_type_set_id: item.id,\n })),\n });\n return (await CaseDbCaseApi.getInstance().caseTypeSetsPutOne(item.id, omit({ id: item.id, ...variables }, ['caseTypeIds']))).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n const resultItem = (await CaseDbCaseApi.getInstance().caseTypeSetsPostOne(omit(variables, ['caseTypeIds']))).data;\n await CaseDbCaseApi.getInstance().caseTypeSetsPutCaseTypes(resultItem.id, {\n case_type_set_members: variables.caseTypeIds.map(case_type_id => ({\n case_type_id,\n case_type_set_id: resultItem.id,\n })),\n });\n return resultItem;\n }, []);\n\n const getName = useCallback((item: CaseDbCaseTypeSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n case_type_set_category_id: string().uuid4().required(),\n caseTypeIds: array(),\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n rank: SchemaUtil.rank,\n });\n }, []);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseTypeSetCategoryOptionsQuery.isLoading,\n name: 'case_type_set_category_id',\n options: caseTypeSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Rank`,\n name: 'rank',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n multiline: true,\n name: 'description',\n rows: 5,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST,\n label: t`Case types`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'caseTypeIds',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, caseTypeSetCategoryOptionsQuery.isLoading, caseTypeSetCategoryOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<TableData>[] => {\n return [\n TableUtil.createOptionsColumn<TableData>({ id: 'case_type_set_category_id', name: t`Category`, options: caseTypeSetCategoryOptionsQuery.options }),\n TableUtil.createTextColumn<TableData>({ id: 'name', name: t`Name` }),\n TableUtil.createNumberColumn<TableData>({ id: 'rank', name: t`Rank` }),\n {\n displayValueGetter: (item) => `${item.row.caseTypeIds.length} / ${caseTypeOptionsQuery.options.length}`,\n headerName: t`Case type count`,\n id: 'caseTypeCount',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (item) => item.row.caseTypeIds.length,\n widthFlex: 0.5,\n },\n ];\n }, [caseTypeOptionsQuery.options.length, caseTypeSetCategoryOptionsQuery.options, t]);\n\n const extraCreateOnePermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.CaseTypeSetCaseTypeUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n const extraDeleteOnePermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.CaseTypeSetCaseTypeUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n const extraUpdateOnePermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.CaseTypeSetCaseTypeUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n\n\n const convertToTableData = useCallback((items: CaseDbCaseTypeSet[]) => {\n if (!items || !caseTypeSetMembersQuery.data) {\n return [];\n }\n return items.map<TableData>((item) => {\n const caseTypeIds = caseTypeSetMembersQuery.data.filter(member => member.case_type_set_id === item.id).map(member => member.case_type_id);\n return {\n ...item,\n caseTypeIds,\n } satisfies TableData;\n });\n }, [caseTypeSetMembersQuery.data]);\n\n const associationQueryKeys = useMemo(() => [\n [CASEDB_QUERY_KEY.CASE_TYPE_SET_MEMBERS],\n ], []);\n\n return (\n <CrudPage<FormFields, CaseDbCaseTypeSet, TableData, CASEDB_QUERY_KEY, CaseDbApiPermission>\n associationQueryKeys={associationQueryKeys}\n convertToTableData={convertToTableData}\n createItemDialogTitle={t`Create new case type set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.CaseTypeSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n extraCreateOnePermissions={extraCreateOnePermissions}\n extraDeleteOnePermissions={extraDeleteOnePermissions}\n extraUpdateOnePermissions={extraUpdateOnePermissions}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Case type set`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CASE_TYPE_SETS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('CaseTypeSetsAdminPage')}\n title={t`Case types sets`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CaseTypeSetsAdminPage/CaseTypeSetsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport omit from 'lodash/omit';\nimport type {\n CaseDbApiPermission,\n CaseDbCaseTypeSet,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCommandName,\n CaseDbPermissionType,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { useCaseTypeOptionsQuery } from '../../dataHooks/useCaseTypesQuery';\nimport { useCaseTypeSetCategoryOptionsQuery } from '../../dataHooks/useCaseTypeSetCategoriesQuery';\nimport { useCaseTypeSetMembersQuery } from '../../dataHooks/useCaseTypeSetMembersQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<TableData, 'case_type_set_category'>;\n\ninterface TableData extends CaseDbCaseTypeSet {\n caseTypeIds?: string[];\n}\n\nexport const CaseTypeSetsAdminPage = () => {\n const { t } = useTranslation();\n const caseTypeSetCategoryOptionsQuery = useCaseTypeSetCategoryOptionsQuery();\n const caseTypeSetMembersQuery = useCaseTypeSetMembersQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n\n const loadables = useArray([caseTypeOptionsQuery, caseTypeSetCategoryOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal): Promise<CaseDbCaseTypeSet[]> => {\n const caseTypesSets = (await CaseDbCaseApi.getInstance().caseTypeSetsGetAll(null, null, { signal }))?.data;\n return caseTypesSets;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbCaseTypeSet) => {\n return await CaseDbCaseApi.getInstance().caseTypeSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCaseTypeSet) => {\n await CaseDbCaseApi.getInstance().caseTypeSetsPutCaseTypes(item.id, {\n case_type_set_members: variables.caseTypeIds.map(case_type_id => ({\n case_type_id,\n case_type_set_id: item.id,\n })),\n });\n return (await CaseDbCaseApi.getInstance().caseTypeSetsPutOne(item.id, omit({ id: item.id, ...variables }, ['caseTypeIds']))).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n const resultItem = (await CaseDbCaseApi.getInstance().caseTypeSetsPostOne(omit(variables, ['caseTypeIds']))).data;\n await CaseDbCaseApi.getInstance().caseTypeSetsPutCaseTypes(resultItem.id, {\n case_type_set_members: variables.caseTypeIds.map(case_type_id => ({\n case_type_id,\n case_type_set_id: resultItem.id,\n })),\n });\n return resultItem;\n }, []);\n\n const getName = useCallback((item: CaseDbCaseTypeSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n case_type_set_category_id: string().uuid4().required(),\n caseTypeIds: array(),\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n rank: SchemaUtil.rank,\n });\n }, []);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseTypeSetCategoryOptionsQuery.isLoading,\n name: 'case_type_set_category_id',\n options: caseTypeSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Rank`,\n name: 'rank',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n multiline: true,\n name: 'description',\n rows: 5,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST,\n label: t`Case types`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'caseTypeIds',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, caseTypeSetCategoryOptionsQuery.isLoading, caseTypeSetCategoryOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<TableData>[] => {\n return [\n TableUtil.createOptionsColumn<TableData>({ id: 'case_type_set_category_id', name: t`Category`, options: caseTypeSetCategoryOptionsQuery.options }),\n TableUtil.createTextColumn<TableData>({ id: 'name', name: t`Name` }),\n TableUtil.createNumberColumn<TableData>({ id: 'rank', name: t`Rank` }),\n {\n displayValueGetter: (item) => `${item.row.caseTypeIds.length} / ${caseTypeOptionsQuery.options.length}`,\n headerName: t`Case type count`,\n id: 'caseTypeCount',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (item) => item.row.caseTypeIds.length,\n widthFlex: 0.5,\n },\n ];\n }, [caseTypeOptionsQuery.options.length, caseTypeSetCategoryOptionsQuery.options, t]);\n\n const extraCreateOnePermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.CaseTypeSetCaseTypeUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n const extraDeleteOnePermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.CaseTypeSetCaseTypeUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n const extraUpdateOnePermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.CaseTypeSetCaseTypeUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n\n\n const convertToTableData = useCallback((items: CaseDbCaseTypeSet[]) => {\n if (!items || !caseTypeSetMembersQuery.data) {\n return [];\n }\n return items.map<TableData>((item) => {\n const caseTypeIds = caseTypeSetMembersQuery.data.filter(member => member.case_type_set_id === item.id).map(member => member.case_type_id);\n return {\n ...item,\n caseTypeIds,\n } satisfies TableData;\n });\n }, [caseTypeSetMembersQuery.data]);\n\n const associationQueryKeys = useMemo(() => [\n [CASEDB_QUERY_KEY.CASE_TYPE_SET_MEMBERS],\n ], []);\n\n return (\n <CrudPage<FormFields, CaseDbCaseTypeSet, TableData, CASEDB_QUERY_KEY, CaseDbApiPermission>\n associationQueryKeys={associationQueryKeys}\n convertToTableData={convertToTableData}\n createItemDialogTitle={t`Create new case type set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.CaseTypeSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n extraCreateOnePermissions={extraCreateOnePermissions}\n extraDeleteOnePermissions={extraDeleteOnePermissions}\n extraUpdateOnePermissions={extraUpdateOnePermissions}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Case type set`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CASE_TYPE_SETS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('CaseTypeSetsAdminPage')}\n title={t`Case types sets`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -8,16 +8,16 @@ import { useEtiologicalAgentOptionsQuery as d } from "../../dataHooks/useEtiolog
|
|
|
8
8
|
import { n as f, t as p } from "../../_chunks/omit.js";
|
|
9
9
|
import { object as m, string as h } from "yup";
|
|
10
10
|
import { CaseDbCaseApi as g, CaseDbCommandName as _, CaseDbPermissionType as v } from "@gen-epix/api-casedb";
|
|
11
|
-
import { FORM_FIELD_DEFINITION_TYPE as y } from "@gen-epix/ui-form/models/form";
|
|
11
|
+
import { FORM_FIELD_DEFINITION_TYPE as y } from "@gen-epix/ui-core-form/models/form";
|
|
12
12
|
import { useCallback as b, useMemo as x } from "react";
|
|
13
13
|
import { useTranslation as S } from "react-i18next";
|
|
14
14
|
import { jsx as C } from "react/jsx-runtime";
|
|
15
15
|
import { useArray as w } from "@gen-epix/ui-core/hooks/useArray";
|
|
16
|
-
import { TableUtil as T } from "@gen-epix/ui/utils/TableUtil";
|
|
16
|
+
import { TableUtil as T } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
17
17
|
import { TestIdUtil as E } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
18
|
-
import { SchemaUtil as D } from "@gen-epix/ui-form/utils/SchemaUtil";
|
|
19
|
-
import { AuthorizationService as O } from "@gen-epix/ui/classes/services/AuthorizationService";
|
|
20
|
-
import { CrudPage as k } from "@gen-epix/ui/pages/CrudPage";
|
|
18
|
+
import { SchemaUtil as D } from "@gen-epix/ui-core-form/utils/SchemaUtil";
|
|
19
|
+
import { AuthorizationService as O } from "@gen-epix/ui-client-common/classes/services/AuthorizationService";
|
|
20
|
+
import { CrudPage as k } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
21
21
|
//#region ../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseSet.js
|
|
22
22
|
var A = /* @__PURE__ */ n(((t, n) => {
|
|
23
23
|
var r = l(), s = o(), c = a(), u = e(), d = i();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseSet.js","../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_basePickBy.js","../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_basePick.js","../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/pick.js","../../../src/pages/CaseTypesAdminPage/CaseTypesAdminPage.tsx"],"sourcesContent":["var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n object,\n string,\n} from 'yup';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport type {\n CaseDbApiPermission,\n CaseDbCaseType,\n CaseDbCaseTypeProps,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCommandName,\n CaseDbPermissionType,\n} from '@gen-epix/api-casedb';\nimport type { CrudPageSubPage } from '@gen-epix/ui/pages/CrudPage';\nimport type { OmitWithMetaData } from '@gen-epix/ui/models/data';\nimport type { TableColumn } from '@gen-epix/ui/models/table';\nimport { AuthorizationService } from '@gen-epix/ui/classes/services/AuthorizationService';\nimport { CrudPage } from '@gen-epix/ui/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-form/utils/SchemaUtil';\n\nimport { useDiseaseOptionsQuery } from '../../dataHooks/useDiseasesQuery';\nimport { useEtiologicalAgentOptionsQuery } from '../../dataHooks/useEtiologicalAgentsQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = CaseDbCaseTypeProps & OmitWithMetaData<CaseDbCaseType, 'disease' | 'etiological_agent' | 'props'>;\n\nexport const CaseTypesAdminPage = () => {\n const { t } = useTranslation();\n const diseaseOptionsQuery = useDiseaseOptionsQuery();\n const etiologicalAgentOptionsQuery = useEtiologicalAgentOptionsQuery();\n\n const loadables = useArray([diseaseOptionsQuery, etiologicalAgentOptionsQuery]);\n\n const getCaseTypeFromVariables = useCallback((variables: FormFields, id?: string) => {\n const itemForUpdate: CaseDbCaseType = {\n ...omit(variables, ['create_max_n_cases', 'delete_max_n_cases', 'read_max_n_cases', 'read_max_tree_size', 'update_max_n_cases']),\n props: {\n ...pick(variables, ['create_max_n_cases', 'delete_max_n_cases', 'read_max_n_cases', 'read_max_tree_size', 'update_max_n_cases']),\n },\n };\n if (id) {\n itemForUpdate.id = id;\n }\n return itemForUpdate;\n }, []);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().caseTypesGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbCaseType) => {\n return await CaseDbCaseApi.getInstance().caseTypesDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCaseType) => {\n return (await CaseDbCaseApi.getInstance().caseTypesPutOne(item.id, getCaseTypeFromVariables(variables, item.id))).data;\n }, [getCaseTypeFromVariables]);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().caseTypesPostOne(getCaseTypeFromVariables(variables))).data;\n }, [getCaseTypeFromVariables]);\n\n const getName = useCallback((item: CaseDbCaseType) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n create_max_n_cases: SchemaUtil.number.min(0),\n delete_max_n_cases: SchemaUtil.number.min(0),\n description: SchemaUtil.description,\n disease_id: string().uuid4().nullable().test(function(value: string) {\n const { etiological_agent_id } = this.parent as FormFields;\n if (value !== null || !!etiological_agent_id) {\n return true;\n }\n return this.createError({\n message: t`Disease is required when no etiological agent is selected`,\n path: 'disease_id',\n });\n }),\n etiological_agent_id: string().uuid4().nullable().test(function(value: string) {\n const { disease_id } = this.parent as FormFields;\n if (value !== null || !!disease_id) {\n return true;\n }\n return this.createError({\n message: t`Etiological agent is required when no disease is selected`,\n path: 'etiological_agent_id',\n });\n }),\n name: SchemaUtil.name,\n read_max_n_cases: SchemaUtil.number.min(0),\n read_max_tree_size: SchemaUtil.number.min(0),\n update_max_n_cases: SchemaUtil.number.min(0),\n });\n }, [t]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Disease`,\n loading: diseaseOptionsQuery.isLoading,\n name: 'disease_id',\n options: diseaseOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Etiological agent`,\n loading: etiologicalAgentOptionsQuery.isLoading,\n name: 'etiological_agent_id',\n options: etiologicalAgentOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Read max number of cases`,\n name: 'read_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Create max number of cases`,\n name: 'create_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Update max number of cases`,\n name: 'update_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Delete max number of cases`,\n name: 'delete_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Read max tree size`,\n name: 'read_max_tree_size',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [etiologicalAgentOptionsQuery.isLoading, etiologicalAgentOptionsQuery.options, diseaseOptionsQuery, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCaseType>[] => {\n return [\n TableUtil.createTextColumn<CaseDbCaseType>({ id: 'name', name: t`Name` }),\n TableUtil.createOptionsColumn<CaseDbCaseType>({ id: 'disease_id', name: t`Disease`, options: diseaseOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbCaseType>({ id: 'etiological_agent_id', name: t`Etiological agent`, options: etiologicalAgentOptionsQuery.options }),\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Read max number of cases`,\n id: 'read_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.read_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Create max number of cases`,\n id: 'create_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.create_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Update max number of cases`,\n id: 'update_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.update_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Delete max number of cases`,\n id: 'delete_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.delete_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Read max tree size`,\n id: 'read_max_tree_size',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.read_max_tree_size,\n widthFlex: 1,\n },\n ];\n }, [etiologicalAgentOptionsQuery.options, diseaseOptionsQuery.options, t]);\n\n const subPages = useMemo<CrudPageSubPage<CaseDbCaseType>[]>(() => {\n if (!AuthorizationService.getInstance().doesUserHavePermission<CaseDbApiPermission>([\n { command_name: CaseDbCommandName.DimCrudCommand, permission_type: CaseDbPermissionType.READ },\n ])) {\n return [];\n }\n\n return [\n {\n getPathName: (item: CaseDbCaseType) => `/management/case-types/${item.id}/dimensions`,\n label: t`Manage dimensions`,\n } satisfies CrudPageSubPage<CaseDbCaseType>,\n ];\n }, [t]);\n\n const getFormValuesFromItem = useCallback((item: CaseDbCaseType): Partial<FormFields> => {\n if (!item) {\n return {};\n }\n return {\n create_max_n_cases: item.props?.create_max_n_cases,\n delete_max_n_cases: item.props?.delete_max_n_cases,\n description: item.description,\n disease_id: item.disease_id,\n etiological_agent_id: item.etiological_agent_id,\n name: item.name,\n read_max_n_cases: item.props?.read_max_n_cases,\n read_max_tree_size: item.props?.read_max_tree_size,\n update_max_n_cases: item.props?.update_max_n_cases,\n };\n }, []);\n\n const getIntermediateItem = useCallback((variables: FormFields, currentItem: CaseDbCaseType): CaseDbCaseType => {\n return {\n ...currentItem,\n description: variables.description,\n disease_id: variables.disease_id,\n etiological_agent_id: variables.etiological_agent_id,\n name: variables.name,\n props: {\n create_max_n_cases: variables.create_max_n_cases,\n delete_max_n_cases: variables.delete_max_n_cases,\n read_max_n_cases: variables.read_max_n_cases,\n read_max_tree_size: variables.read_max_tree_size,\n update_max_n_cases: variables.update_max_n_cases,\n },\n };\n }, []);\n\n return (\n <CrudPage<FormFields, CaseDbCaseType, CaseDbCaseType, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new case type`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.CaseTypeCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getFormValuesFromItem={getFormValuesFromItem}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getIntermediateItem}\n itemName={t`Case type`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CASE_TYPES}\n schema={schema}\n subPages={subPages}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('CaseTypesAdminPage')}\n title={t`Case types`}\n updateOne={updateOne}\n />\n );\n};\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_baseSet.js","../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_basePickBy.js","../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/_basePick.js","../../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/pick.js","../../../src/pages/CaseTypesAdminPage/CaseTypesAdminPage.tsx"],"sourcesContent":["var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n object,\n string,\n} from 'yup';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport type {\n CaseDbApiPermission,\n CaseDbCaseType,\n CaseDbCaseTypeProps,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCommandName,\n CaseDbPermissionType,\n} from '@gen-epix/api-casedb';\nimport type { CrudPageSubPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { AuthorizationService } from '@gen-epix/ui-client-common/classes/services/AuthorizationService';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { useDiseaseOptionsQuery } from '../../dataHooks/useDiseasesQuery';\nimport { useEtiologicalAgentOptionsQuery } from '../../dataHooks/useEtiologicalAgentsQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = CaseDbCaseTypeProps & OmitWithMetaData<CaseDbCaseType, 'disease' | 'etiological_agent' | 'props'>;\n\nexport const CaseTypesAdminPage = () => {\n const { t } = useTranslation();\n const diseaseOptionsQuery = useDiseaseOptionsQuery();\n const etiologicalAgentOptionsQuery = useEtiologicalAgentOptionsQuery();\n\n const loadables = useArray([diseaseOptionsQuery, etiologicalAgentOptionsQuery]);\n\n const getCaseTypeFromVariables = useCallback((variables: FormFields, id?: string) => {\n const itemForUpdate: CaseDbCaseType = {\n ...omit(variables, ['create_max_n_cases', 'delete_max_n_cases', 'read_max_n_cases', 'read_max_tree_size', 'update_max_n_cases']),\n props: {\n ...pick(variables, ['create_max_n_cases', 'delete_max_n_cases', 'read_max_n_cases', 'read_max_tree_size', 'update_max_n_cases']),\n },\n };\n if (id) {\n itemForUpdate.id = id;\n }\n return itemForUpdate;\n }, []);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().caseTypesGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbCaseType) => {\n return await CaseDbCaseApi.getInstance().caseTypesDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCaseType) => {\n return (await CaseDbCaseApi.getInstance().caseTypesPutOne(item.id, getCaseTypeFromVariables(variables, item.id))).data;\n }, [getCaseTypeFromVariables]);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().caseTypesPostOne(getCaseTypeFromVariables(variables))).data;\n }, [getCaseTypeFromVariables]);\n\n const getName = useCallback((item: CaseDbCaseType) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n create_max_n_cases: SchemaUtil.number.min(0),\n delete_max_n_cases: SchemaUtil.number.min(0),\n description: SchemaUtil.description,\n disease_id: string().uuid4().nullable().test(function(value: string) {\n const { etiological_agent_id } = this.parent as FormFields;\n if (value !== null || !!etiological_agent_id) {\n return true;\n }\n return this.createError({\n message: t`Disease is required when no etiological agent is selected`,\n path: 'disease_id',\n });\n }),\n etiological_agent_id: string().uuid4().nullable().test(function(value: string) {\n const { disease_id } = this.parent as FormFields;\n if (value !== null || !!disease_id) {\n return true;\n }\n return this.createError({\n message: t`Etiological agent is required when no disease is selected`,\n path: 'etiological_agent_id',\n });\n }),\n name: SchemaUtil.name,\n read_max_n_cases: SchemaUtil.number.min(0),\n read_max_tree_size: SchemaUtil.number.min(0),\n update_max_n_cases: SchemaUtil.number.min(0),\n });\n }, [t]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Disease`,\n loading: diseaseOptionsQuery.isLoading,\n name: 'disease_id',\n options: diseaseOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Etiological agent`,\n loading: etiologicalAgentOptionsQuery.isLoading,\n name: 'etiological_agent_id',\n options: etiologicalAgentOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Read max number of cases`,\n name: 'read_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Create max number of cases`,\n name: 'create_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Update max number of cases`,\n name: 'update_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Delete max number of cases`,\n name: 'delete_max_n_cases',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Read max tree size`,\n name: 'read_max_tree_size',\n type: 'number',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [etiologicalAgentOptionsQuery.isLoading, etiologicalAgentOptionsQuery.options, diseaseOptionsQuery, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCaseType>[] => {\n return [\n TableUtil.createTextColumn<CaseDbCaseType>({ id: 'name', name: t`Name` }),\n TableUtil.createOptionsColumn<CaseDbCaseType>({ id: 'disease_id', name: t`Disease`, options: diseaseOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbCaseType>({ id: 'etiological_agent_id', name: t`Etiological agent`, options: etiologicalAgentOptionsQuery.options }),\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Read max number of cases`,\n id: 'read_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.read_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Create max number of cases`,\n id: 'create_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.create_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Update max number of cases`,\n id: 'update_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.update_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Delete max number of cases`,\n id: 'delete_max_n_cases',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.delete_max_n_cases,\n widthFlex: 1,\n },\n {\n comparatorFactory: TableUtil.createNumberCellRowComperator,\n headerName: t`Read max tree size`,\n id: 'read_max_tree_size',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (params) => params.row.props?.read_max_tree_size,\n widthFlex: 1,\n },\n ];\n }, [etiologicalAgentOptionsQuery.options, diseaseOptionsQuery.options, t]);\n\n const subPages = useMemo<CrudPageSubPage<CaseDbCaseType>[]>(() => {\n if (!AuthorizationService.getInstance().doesUserHavePermission<CaseDbApiPermission>([\n { command_name: CaseDbCommandName.DimCrudCommand, permission_type: CaseDbPermissionType.READ },\n ])) {\n return [];\n }\n\n return [\n {\n getPathName: (item: CaseDbCaseType) => `/management/case-types/${item.id}/dimensions`,\n label: t`Manage dimensions`,\n } satisfies CrudPageSubPage<CaseDbCaseType>,\n ];\n }, [t]);\n\n const getFormValuesFromItem = useCallback((item: CaseDbCaseType): Partial<FormFields> => {\n if (!item) {\n return {};\n }\n return {\n create_max_n_cases: item.props?.create_max_n_cases,\n delete_max_n_cases: item.props?.delete_max_n_cases,\n description: item.description,\n disease_id: item.disease_id,\n etiological_agent_id: item.etiological_agent_id,\n name: item.name,\n read_max_n_cases: item.props?.read_max_n_cases,\n read_max_tree_size: item.props?.read_max_tree_size,\n update_max_n_cases: item.props?.update_max_n_cases,\n };\n }, []);\n\n const getIntermediateItem = useCallback((variables: FormFields, currentItem: CaseDbCaseType): CaseDbCaseType => {\n return {\n ...currentItem,\n description: variables.description,\n disease_id: variables.disease_id,\n etiological_agent_id: variables.etiological_agent_id,\n name: variables.name,\n props: {\n create_max_n_cases: variables.create_max_n_cases,\n delete_max_n_cases: variables.delete_max_n_cases,\n read_max_n_cases: variables.read_max_n_cases,\n read_max_tree_size: variables.read_max_tree_size,\n update_max_n_cases: variables.update_max_n_cases,\n },\n };\n }, []);\n\n return (\n <CrudPage<FormFields, CaseDbCaseType, CaseDbCaseType, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new case type`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.CaseTypeCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getFormValuesFromItem={getFormValuesFromItem}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getIntermediateItem}\n itemName={t`Case type`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CASE_TYPES}\n schema={schema}\n subPages={subPages}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('CaseTypesAdminPage')}\n title={t`Case types`}\n updateOne={updateOne}\n />\n );\n};\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { CASEDB_QUERY_KEY as e } from "../../constants/query.js";
|
|
2
2
|
import { n as t } from "../../_chunks/Dashboard.js";
|
|
3
|
-
import { t as n } from "../../_chunks/chunk-
|
|
3
|
+
import { t as n } from "../../_chunks/chunk-BV7QT456.js";
|
|
4
4
|
import { CaseDbCaseApi as r } from "@gen-epix/api-casedb";
|
|
5
5
|
import { useEffect as i, useMemo as a } from "react";
|
|
6
6
|
import { useTranslation as o } from "react-i18next";
|
|
7
7
|
import { jsx as s } from "react/jsx-runtime";
|
|
8
|
-
import { ResponseHandler as c } from "@gen-epix/ui/components/ui/ResponseHandler";
|
|
9
|
-
import { useItemQuery as l } from "@gen-epix/ui/hooks/useItemQuery";
|
|
8
|
+
import { ResponseHandler as c } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
|
|
9
|
+
import { useItemQuery as l } from "@gen-epix/ui-client-common/hooks/useItemQuery";
|
|
10
10
|
import { TestIdUtil as u } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
11
|
-
import { PageContainer as d } from "@gen-epix/ui/components/ui/PageContainer";
|
|
12
|
-
import { useUpdateBreadcrumb as f } from "@gen-epix/ui/hooks/useUpdateBreadcrumb";
|
|
11
|
+
import { PageContainer as d } from "@gen-epix/ui-client-common/components/ui/PageContainer";
|
|
12
|
+
import { useUpdateBreadcrumb as f } from "@gen-epix/ui-client-common/hooks/useUpdateBreadcrumb";
|
|
13
13
|
//#region src/pages/CasesDetailPage/CasesDetailPage.tsx
|
|
14
14
|
var p = () => {
|
|
15
15
|
let { t: p } = o(), { caseTypeId: m, slug: h } = n(), g = f("Case type"), { data: _, error: v, isLoading: y } = l({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CasesDetailPage/CasesDetailPage.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport {\n useEffect,\n useMemo,\n} from 'react';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport { PageContainer } from '@gen-epix/ui/components/ui/PageContainer';\nimport { ResponseHandler } from '@gen-epix/ui/components/ui/ResponseHandler';\nimport { useItemQuery } from '@gen-epix/ui/hooks/useItemQuery';\nimport { useUpdateBreadcrumb } from '@gen-epix/ui/hooks/useUpdateBreadcrumb';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\n\nimport { Dashboard } from '../../components/ui/Dashboard';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\n\nexport const CasesDetailPage = () => {\n const { t } = useTranslation();\n const { caseTypeId, slug } = useParams();\n\n const updateBreadcrumb = useUpdateBreadcrumb('Case type');\n\n const { data: caseType, error, isLoading } = useItemQuery({\n baseQueryKey: CASEDB_QUERY_KEY.CASE_TYPES,\n itemId: caseTypeId,\n useQueryOptions: {\n queryFn: async ({ signal }) => (await CaseDbCaseApi.getInstance().caseTypesGetOne(caseTypeId, { signal })).data,\n },\n });\n\n const title = useMemo(() => {\n return caseType?.name ? caseType?.name : t`Case`;\n }, [caseType, t]);\n\n useEffect(() => {\n updateBreadcrumb(title);\n }, [title, updateBreadcrumb]);\n\n return (\n <PageContainer\n fullHeight\n fullWidth\n showBreadcrumbs\n testIdAttributes={TestIdUtil.createAttributes('CasesDetailPage', { 'case-type-id': caseTypeId, slug })}\n title={title}\n >\n <ResponseHandler\n error={error}\n isLoading={isLoading}\n >\n <Dashboard\n caseTypeId={caseTypeId}\n />\n </ResponseHandler>\n </PageContainer>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAiBA,IAAa,UAAwB;CACnC,IAAM,EAAE,SAAM,EAAe,GACvB,EAAE,eAAY,YAAS,EAAU,GAEjC,IAAmB,EAAoB,WAAW,GAElD,EAAE,MAAM,GAAU,UAAO,iBAAc,EAAa;EACxD,cAAc,EAAiB;EAC/B,QAAQ;EACR,iBAAiB,EACf,SAAS,OAAO,EAAE,iBAAc,MAAM,EAAc,YAAY,CAAC,CAAC,gBAAgB,GAAY,EAAE,UAAO,CAAC,EAAA,CAAG,KAC7G;CACF,CAAC,GAEK,IAAQ,QACL,GAAU,OAAO,GAAU,OAAO,CAAC,QACzC,CAAC,GAAU,CAAC,CAAC;CAMhB,OAJA,QAAgB;EACd,EAAiB,CAAK;CACxB,GAAG,CAAC,GAAO,CAAgB,CAAC,GAG1B,kBAAC,GAAD;EACE,YAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAkB,EAAW,iBAAiB,mBAAmB;GAAE,gBAAgB;GAAY;EAAK,CAAC;EAC9F;
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CasesDetailPage/CasesDetailPage.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport {\n useEffect,\n useMemo,\n} from 'react';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport { PageContainer } from '@gen-epix/ui-client-common/components/ui/PageContainer';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useItemQuery } from '@gen-epix/ui-client-common/hooks/useItemQuery';\nimport { useUpdateBreadcrumb } from '@gen-epix/ui-client-common/hooks/useUpdateBreadcrumb';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\n\nimport { Dashboard } from '../../components/ui/Dashboard';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\n\nexport const CasesDetailPage = () => {\n const { t } = useTranslation();\n const { caseTypeId, slug } = useParams();\n\n const updateBreadcrumb = useUpdateBreadcrumb('Case type');\n\n const { data: caseType, error, isLoading } = useItemQuery({\n baseQueryKey: CASEDB_QUERY_KEY.CASE_TYPES,\n itemId: caseTypeId,\n useQueryOptions: {\n queryFn: async ({ signal }) => (await CaseDbCaseApi.getInstance().caseTypesGetOne(caseTypeId, { signal })).data,\n },\n });\n\n const title = useMemo(() => {\n return caseType?.name ? caseType?.name : t`Case`;\n }, [caseType, t]);\n\n useEffect(() => {\n updateBreadcrumb(title);\n }, [title, updateBreadcrumb]);\n\n return (\n <PageContainer\n fullHeight\n fullWidth\n showBreadcrumbs\n testIdAttributes={TestIdUtil.createAttributes('CasesDetailPage', { 'case-type-id': caseTypeId, slug })}\n title={title}\n >\n <ResponseHandler\n error={error}\n isLoading={isLoading}\n >\n <Dashboard\n caseTypeId={caseTypeId}\n />\n </ResponseHandler>\n </PageContainer>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAiBA,IAAa,UAAwB;CACnC,IAAM,EAAE,SAAM,EAAe,GACvB,EAAE,eAAY,YAAS,EAAU,GAEjC,IAAmB,EAAoB,WAAW,GAElD,EAAE,MAAM,GAAU,UAAO,iBAAc,EAAa;EACxD,cAAc,EAAiB;EAC/B,QAAQ;EACR,iBAAiB,EACf,SAAS,OAAO,EAAE,iBAAc,MAAM,EAAc,YAAY,CAAC,CAAC,gBAAgB,GAAY,EAAE,UAAO,CAAC,EAAA,CAAG,KAC7G;CACF,CAAC,GAEK,IAAQ,QACL,GAAU,OAAO,GAAU,OAAO,CAAC,QACzC,CAAC,GAAU,CAAC,CAAC;CAMhB,OAJA,QAAgB;EACd,EAAiB,CAAK;CACxB,GAAG,CAAC,GAAO,CAAgB,CAAC,GAG1B,kBAAC,GAAD;EACE,YAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAkB,EAAW,iBAAiB,mBAAmB;GAAE,gBAAgB;GAAY;EAAK,CAAC;EAC9F;EAEP,UAAA,kBAAC,GAAD;GACS;GACI;GAEX,UAAA,kBAAC,GAAD,EACc,cACb,CAAA;EACc,CAAA;CACJ,CAAA;AAEnB"}
|
|
@@ -5,25 +5,25 @@ import { t as r } from "../../_chunks/CaseTypeInfoDialog.js";
|
|
|
5
5
|
import { useCaseTypeSetCategoriesQuery as i } from "../../dataHooks/useCaseTypeSetCategoriesQuery/index.js";
|
|
6
6
|
import { useCaseTypeStatsQuery as a } from "../../dataHooks/useCaseTypeStatsQuery/index.js";
|
|
7
7
|
import { CaseDbCaseApi as o, CaseDbCaseTypeSetCategoryPurpose as s } from "@gen-epix/api-casedb";
|
|
8
|
-
import { QueryClientService as c } from "@gen-epix/ui/classes/services/QueryClientService";
|
|
8
|
+
import { QueryClientService as c } from "@gen-epix/ui-client-common/classes/services/QueryClientService";
|
|
9
9
|
import { DATE_FORMAT as l } from "@gen-epix/ui-core/constants/date";
|
|
10
|
-
import { ConfigService as u } from "@gen-epix/ui/classes/services/ConfigService";
|
|
10
|
+
import { ConfigService as u } from "@gen-epix/ui-client-common/classes/services/ConfigService";
|
|
11
11
|
import { Box as d, ListItemIcon as f, ListItemText as p, MenuItem as m, Typography as h, useTheme as ee } from "@mui/material";
|
|
12
12
|
import { useCallback as g, useMemo as _, useRef as v } from "react";
|
|
13
13
|
import { useTranslation as y } from "react-i18next";
|
|
14
|
-
import { TableStoreContextProvider as b, createTableStore as x } from "@gen-epix/ui/stores/tableStore";
|
|
14
|
+
import { TableStoreContextProvider as b, createTableStore as x } from "@gen-epix/ui-client-common/stores/tableStore";
|
|
15
15
|
import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
16
|
-
import { ResponseHandler as T } from "@gen-epix/ui/components/ui/ResponseHandler";
|
|
17
|
-
import { useQueryMemo as E } from "@gen-epix/ui/hooks/useQueryMemo";
|
|
16
|
+
import { ResponseHandler as T } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
|
|
17
|
+
import { useQueryMemo as E } from "@gen-epix/ui-client-common/hooks/useQueryMemo";
|
|
18
18
|
import { DataUtil as te } from "@gen-epix/ui-core/utils/DataUtil";
|
|
19
|
-
import { Table as ne, TableCaption as re, TableMenu as ie, TableSidebarMenu as ae } from "@gen-epix/ui/components/ui/Table";
|
|
20
|
-
import { TableUtil as D } from "@gen-epix/ui/utils/TableUtil";
|
|
21
|
-
import { useInitializeTableStore as oe } from "@gen-epix/ui/hooks/useInitializeTableStore";
|
|
19
|
+
import { Table as ne, TableCaption as re, TableMenu as ie, TableSidebarMenu as ae } from "@gen-epix/ui-client-common/components/ui/Table";
|
|
20
|
+
import { TableUtil as D } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
21
|
+
import { useInitializeTableStore as oe } from "@gen-epix/ui-client-common/hooks/useInitializeTableStore";
|
|
22
22
|
import { TestIdUtil as se } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
23
|
-
import { RouterService as O } from "@gen-epix/ui/classes/services/RouterService";
|
|
23
|
+
import { RouterService as O } from "@gen-epix/ui-client-common/classes/services/RouterService";
|
|
24
24
|
import k from "@mui/icons-material/Info";
|
|
25
25
|
import A from "@mui/icons-material/ArrowCircleRight";
|
|
26
|
-
import { PageContainer as j } from "@gen-epix/ui/components/ui/PageContainer";
|
|
26
|
+
import { PageContainer as j } from "@gen-epix/ui-client-common/components/ui/PageContainer";
|
|
27
27
|
import M from "@mui/icons-material/FileDownload";
|
|
28
28
|
//#region src/pages/CasesPage/CasesPage.tsx
|
|
29
29
|
var N = (e) => `caseTypeSetCategory-${e}`, P = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CasesPage/CasesPage.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport {\n Box,\n ListItemIcon,\n ListItemText,\n MenuItem,\n Typography,\n useTheme,\n} from '@mui/material';\nimport ArrowCircleRightIcon from '@mui/icons-material/ArrowCircleRight';\nimport InfoIcon from '@mui/icons-material/Info';\nimport FileDownloadIcon from '@mui/icons-material/FileDownload';\nimport {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport type {\n CaseDbCaseStats,\n CaseDbCaseTypeSet,\n CaseDbCaseTypeSetCategory,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCaseTypeSetCategoryPurpose,\n} from '@gen-epix/api-casedb';\nimport type {\n TableColumn,\n TableRowParams,\n} from '@gen-epix/ui/models/table';\nimport { ConfigService } from '@gen-epix/ui/classes/services/ConfigService';\nimport {\n createTableStore,\n TableStoreContextProvider,\n} from '@gen-epix/ui/stores/tableStore';\nimport { PageContainer } from '@gen-epix/ui/components/ui/PageContainer';\nimport { QueryClientService } from '@gen-epix/ui/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui/components/ui/ResponseHandler';\nimport { RouterService } from '@gen-epix/ui/classes/services/RouterService';\nimport {\n Table,\n TableCaption,\n TableMenu,\n TableSidebarMenu,\n} from '@gen-epix/ui/components/ui/Table';\nimport { TableUtil } from '@gen-epix/ui/utils/TableUtil';\nimport { useInitializeTableStore } from '@gen-epix/ui/hooks/useInitializeTableStore';\nimport { useQueryMemo } from '@gen-epix/ui/hooks/useQueryMemo';\nimport { DataUtil } from '@gen-epix/ui-core/utils/DataUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\nimport type { OptionBase } from '@gen-epix/ui-form/models/form';\n\nimport type { CaseTypeInfoDialogWithLoaderRefMethods } from '../../components/ui/CaseTypeInfoDialog';\nimport { CaseTypeInfoDialogWithLoader } from '../../components/ui/CaseTypeInfoDialog';\nimport { useCaseTypeSetCategoriesQuery } from '../../dataHooks/useCaseTypeSetCategoriesQuery';\nimport { useCaseTypeStatsQuery } from '../../dataHooks/useCaseTypeStatsQuery';\nimport { CaseTypeUtil } from '../../utils/CaseTypeUtil';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { CaseDbDownloadUtil } from '../../utils/CaseDbDownloadUtil';\n\n\ntype Row = {\n [key: string]: boolean | number | string | string[];\n hasCases: boolean;\n id: string;\n name: string;\n} & Omit<CaseDbCaseStats, 'case_type_id'>;\n\nconst getCaseTypeSetCategoryRowId = (id: string) => `caseTypeSetCategory-${id}`;\n\nexport const CasesPage = () => {\n const { t } = useTranslation();\n const theme = useTheme();\n const caseTypeInfoDialogWithLoaderRef = useRef<CaseTypeInfoDialogWithLoaderRefMethods>(null);\n const caseTypeStatsQuery = useCaseTypeStatsQuery();\n const caseTypeSetCategoriesQuery = useCaseTypeSetCategoriesQuery();\n\n const { data: caseTypes, error: caseTypesError, isLoading: isCaseTypesLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseTypesGetAll(null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_TYPES),\n });\n\n const caseTypeStatsMap = useMemo(() => {\n return new Map<string, CaseDbCaseStats>(caseTypeStatsQuery.data?.map(stat => [stat.case_type_id, stat]));\n }, [caseTypeStatsQuery]);\n\n\n const { data: caseTypeSets, error: caseTypeSetsError, isLoading: isCaseTypeSetsLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseTypeSetsGetAll(null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_TYPE_SETS),\n });\n\n const { data: caseTypeSetMembers, error: caseTypeSetMembersError, isLoading: isCaseTypeSetMembersLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseTypeSetMembersGetAll(null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_TYPE_SET_MEMBERS),\n });\n\n const isLoading = isCaseTypesLoading || isCaseTypeSetsLoading || isCaseTypeSetMembersLoading || caseTypeSetCategoriesQuery.isLoading || caseTypeStatsQuery.isLoading;\n const error = caseTypesError || caseTypeSetsError || caseTypeSetMembersError || caseTypeSetCategoriesQuery.error || caseTypeStatsQuery.error;\n\n const handleCellNavigation = useCallback(async (caseType: Row) => {\n await RouterService.getInstance().router.navigate(CaseTypeUtil.createCaseTypeLink(caseType));\n }, []);\n\n const onRowClick = useCallback(async (params: TableRowParams<Row>) => {\n await handleCellNavigation(params.row);\n }, [handleCellNavigation]);\n\n const onShowItemClick = useCallback(async (params: TableRowParams<Row>) => {\n await handleCellNavigation(params.row);\n }, [handleCellNavigation]);\n\n const onShowCaseTypeInformationClick = useCallback((params: TableRowParams<Row>) => {\n caseTypeInfoDialogWithLoaderRef.current.open({\n caseTypeId: params.row.id,\n });\n }, []);\n\n const onDownloadExcelTemplateButtonClick = useCallback(async (params: TableRowParams<Row>) => {\n await CaseDbDownloadUtil.downloadExcelTemplate(params.row.id, t);\n }, [t]);\n\n const onIndexCellClick = useCallback((row: Row) => {\n caseTypeInfoDialogWithLoaderRef.current.open({\n caseTypeId: row.id,\n });\n }, []);\n\n const data = useMemo<Row[]>(() => {\n if (isLoading || error) {\n return;\n }\n\n const caseTypeSetCache = new Map<string, CaseDbCaseTypeSet>();\n caseTypeSets.forEach(caseTypeSet => {\n caseTypeSetCache.set(caseTypeSet.id, caseTypeSet);\n });\n\n const caseTypeMemberCache = new Map<string, string[]>();\n caseTypeSetMembers.forEach(caseTypeSetMember => {\n const caseTypeMemberCacheEntry = caseTypeMemberCache.get(caseTypeSetMember.case_type_id);\n\n if (caseTypeMemberCacheEntry) {\n if (!caseTypeMemberCacheEntry.includes(caseTypeSetMember.case_type_set_id)) {\n caseTypeMemberCacheEntry.push(caseTypeSetMember.case_type_set_id);\n }\n } else {\n caseTypeMemberCache.set(caseTypeSetMember.case_type_id, [caseTypeSetMember.case_type_set_id]);\n }\n });\n\n const rows = caseTypes.map<Row>(caseType => {\n const row: Row = {\n first_case_date: caseTypeStatsMap.get(caseType.id)?.first_case_date,\n hasCases: caseTypeStatsMap.get(caseType.id)?.n_cases > 0,\n id: caseType.id,\n last_case_date: caseTypeStatsMap.get(caseType.id)?.last_case_date,\n n_cases: caseTypeStatsMap.get(caseType.id)?.n_cases ?? 0,\n n_own_cases: caseTypeStatsMap.get(caseType.id)?.n_own_cases ?? 0,\n name: caseType.name,\n };\n caseTypeSetCategoriesQuery.data.forEach((caseTypeSetCategorie) => {\n row[getCaseTypeSetCategoryRowId(caseTypeSetCategorie.id)] = [];\n });\n\n (caseTypeMemberCache.get(caseType.id) ?? []).forEach(caseTypeSetId => {\n const caseTypeSet = caseTypeSetCache.get(caseTypeSetId);\n if (caseTypeSet) {\n (row[getCaseTypeSetCategoryRowId(caseTypeSet.case_type_set_category_id)] as string[]).push(caseTypeSetId);\n }\n });\n return row;\n });\n return rows;\n }, [caseTypeSetCategoriesQuery, caseTypeSetMembers, caseTypeSets, caseTypeStatsMap, caseTypes, error, isLoading]);\n\n const caseTypeSetCategoryOptions = useMemo(() => {\n const options: { [key: string]: OptionBase<string>[] } = {};\n\n caseTypeSetCategoriesQuery.data?.forEach(category => {\n options[category.id] = caseTypeSets?.filter(set => set.case_type_set_category_id === category.id).sort(DataUtil.rankSortComperatorFactory('name')).map<OptionBase<string>>(set => ({ label: set.name, value: set.id }));\n });\n return options;\n }, [caseTypeSetCategoriesQuery, caseTypeSets]);\n\n const columns = useMemo<TableColumn<Row>[]>(() => {\n if (isLoading || error) {\n return;\n }\n\n return [\n TableUtil.createReadableIndexColumn({\n getAriaLabel: (params: TableRowParams<Row>) => t('Open case type information for {{name}}', { name: params.row.name }),\n }),\n TableUtil.createTextColumn({\n flex: 1.5,\n id: 'name',\n name: t('Name'),\n }),\n ...caseTypeSetCategoriesQuery.data.filter(c => c.purpose === CaseDbCaseTypeSetCategoryPurpose.CONTENT).map<TableColumn<Row>>((caseTypeSetCategory: CaseDbCaseTypeSetCategory) => {\n return {\n comparatorFactory: TableUtil.createOptionsCellRowComperator,\n headerName: caseTypeSetCategory.name,\n id: getCaseTypeSetCategoryRowId(caseTypeSetCategory.id),\n isInitiallyVisible: true,\n maxNumOptionsExpanded: Infinity,\n options: caseTypeSetCategoryOptions[caseTypeSetCategory.id] ?? [],\n type: 'options',\n widthFlex: 1,\n };\n }),\n TableUtil.createNumberColumn({ flex: 0.5, id: 'n_cases', name: t('Cases') }),\n TableUtil.createNumberColumn({ flex: 0.5, id: 'n_own_cases', name: t('Own cases') }),\n TableUtil.createDateColumn({ dateFormat: DATE_FORMAT.DATE, flex: 0.5, id: 'first_case_date', name: t('First case date') }),\n TableUtil.createDateColumn({ dateFormat: DATE_FORMAT.DATE, flex: 0.5, id: 'last_case_date', name: t('Last case date') }),\n TableUtil.createActionsColumn({\n getActions: (params) => {\n return [\n (\n <MenuItem\n disabled={!params.row.hasCases}\n key={'actions1'}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={async () => onShowItemClick(params)}\n >\n <ListItemIcon>\n <ArrowCircleRightIcon />\n </ListItemIcon>\n <ListItemText>\n {t`Go to cases`}\n </ListItemText>\n </MenuItem>\n ),\n (\n <MenuItem\n key={'actions2'}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={() => onShowCaseTypeInformationClick(params)}\n >\n <ListItemIcon>\n <InfoIcon />\n </ListItemIcon>\n <ListItemText>\n {t`Show case type information`}\n </ListItemText>\n </MenuItem>\n ),\n (\n <MenuItem\n key={'actions3'}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={async () => onDownloadExcelTemplateButtonClick(params)}\n >\n <ListItemIcon>\n <FileDownloadIcon />\n </ListItemIcon>\n <ListItemText>\n {t`Download Excel template`}\n </ListItemText>\n </MenuItem>\n ),\n ];\n },\n t,\n }),\n ] satisfies TableColumn<Row>[];\n }, [caseTypeSetCategoriesQuery.data, caseTypeSetCategoryOptions, error, isLoading, onDownloadExcelTemplateButtonClick, onShowCaseTypeInformationClick, onShowItemClick, t]);\n\n const tableStore = useMemo(() => createTableStore<Row>({\n defaultSortByField: 'name',\n defaultSortDirection: 'asc',\n idSelectorCallback: (row) => row.id,\n isRowEnabledCallback: (row) => row.n_cases > 0,\n navigatorFunction: RouterService.getInstance().router.navigate,\n storageNamePostFix: 'cases',\n storageVersion: 1,\n }), []);\n\n useInitializeTableStore({ columns, createFiltersFromColumns: true, rows: data, store: tableStore });\n\n const getRowName = useCallback((row: Row) => {\n return row.name;\n }, []);\n\n return (\n <TableStoreContextProvider store={tableStore}>\n <PageContainer\n contentActions={(<TableMenu />)}\n contentHeader={(\n <TableCaption\n caption={t`Cases`}\n component={'h2'}\n variant={'h2'}\n />\n )}\n fullWidth\n showBreadcrumbs\n testIdAttributes={TestIdUtil.createAttributes('CasesPage')}\n title={t`Cases`}\n >\n <Box\n sx={{\n height: '100%',\n position: 'relative',\n }}\n >\n <ResponseHandler\n error={error}\n isLoading={isLoading}\n >\n {caseTypes?.length === 0 && (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <Typography variant={'h6'}>\n {t`No cases found`}\n </Typography>\n </Box>\n )}\n {caseTypes?.length > 0 && (\n <>\n <TableSidebarMenu />\n <Box\n sx={{\n height: '100%',\n paddingLeft: theme.spacing(ConfigService.getInstance().config.layout.SIDEBAR_MENU_WIDTH + 1),\n width: '100%',\n }}\n >\n <Table\n getRowName={getRowName}\n onReadableIndexClick={onIndexCellClick}\n onRowClick={onRowClick}\n />\n </Box>\n </>\n )}\n </ResponseHandler>\n </Box>\n <CaseTypeInfoDialogWithLoader ref={caseTypeInfoDialogWithLoaderRef} />\n </PageContainer>\n </TableStoreContextProvider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/CasesPage/CasesPage.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport {\n Box,\n ListItemIcon,\n ListItemText,\n MenuItem,\n Typography,\n useTheme,\n} from '@mui/material';\nimport ArrowCircleRightIcon from '@mui/icons-material/ArrowCircleRight';\nimport InfoIcon from '@mui/icons-material/Info';\nimport FileDownloadIcon from '@mui/icons-material/FileDownload';\nimport {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport type {\n CaseDbCaseStats,\n CaseDbCaseTypeSet,\n CaseDbCaseTypeSetCategory,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCaseTypeSetCategoryPurpose,\n} from '@gen-epix/api-casedb';\nimport type {\n TableColumn,\n TableRowParams,\n} from '@gen-epix/ui-client-common/models/table';\nimport { ConfigService } from '@gen-epix/ui-client-common/classes/services/ConfigService';\nimport {\n createTableStore,\n TableStoreContextProvider,\n} from '@gen-epix/ui-client-common/stores/tableStore';\nimport { PageContainer } from '@gen-epix/ui-client-common/components/ui/PageContainer';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { RouterService } from '@gen-epix/ui-client-common/classes/services/RouterService';\nimport {\n Table,\n TableCaption,\n TableMenu,\n TableSidebarMenu,\n} from '@gen-epix/ui-client-common/components/ui/Table';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { useInitializeTableStore } from '@gen-epix/ui-client-common/hooks/useInitializeTableStore';\nimport { useQueryMemo } from '@gen-epix/ui-client-common/hooks/useQueryMemo';\nimport { DataUtil } from '@gen-epix/ui-core/utils/DataUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\nimport type { OptionBase } from '@gen-epix/ui-core-form/models/form';\n\nimport type { CaseTypeInfoDialogWithLoaderRefMethods } from '../../components/ui/CaseTypeInfoDialog';\nimport { CaseTypeInfoDialogWithLoader } from '../../components/ui/CaseTypeInfoDialog';\nimport { useCaseTypeSetCategoriesQuery } from '../../dataHooks/useCaseTypeSetCategoriesQuery';\nimport { useCaseTypeStatsQuery } from '../../dataHooks/useCaseTypeStatsQuery';\nimport { CaseTypeUtil } from '../../utils/CaseTypeUtil';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { CaseDbDownloadUtil } from '../../utils/CaseDbDownloadUtil';\n\n\ntype Row = {\n [key: string]: boolean | number | string | string[];\n hasCases: boolean;\n id: string;\n name: string;\n} & Omit<CaseDbCaseStats, 'case_type_id'>;\n\nconst getCaseTypeSetCategoryRowId = (id: string) => `caseTypeSetCategory-${id}`;\n\nexport const CasesPage = () => {\n const { t } = useTranslation();\n const theme = useTheme();\n const caseTypeInfoDialogWithLoaderRef = useRef<CaseTypeInfoDialogWithLoaderRefMethods>(null);\n const caseTypeStatsQuery = useCaseTypeStatsQuery();\n const caseTypeSetCategoriesQuery = useCaseTypeSetCategoriesQuery();\n\n const { data: caseTypes, error: caseTypesError, isLoading: isCaseTypesLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseTypesGetAll(null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_TYPES),\n });\n\n const caseTypeStatsMap = useMemo(() => {\n return new Map<string, CaseDbCaseStats>(caseTypeStatsQuery.data?.map(stat => [stat.case_type_id, stat]));\n }, [caseTypeStatsQuery]);\n\n\n const { data: caseTypeSets, error: caseTypeSetsError, isLoading: isCaseTypeSetsLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseTypeSetsGetAll(null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_TYPE_SETS),\n });\n\n const { data: caseTypeSetMembers, error: caseTypeSetMembersError, isLoading: isCaseTypeSetMembersLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseTypeSetMembersGetAll(null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_TYPE_SET_MEMBERS),\n });\n\n const isLoading = isCaseTypesLoading || isCaseTypeSetsLoading || isCaseTypeSetMembersLoading || caseTypeSetCategoriesQuery.isLoading || caseTypeStatsQuery.isLoading;\n const error = caseTypesError || caseTypeSetsError || caseTypeSetMembersError || caseTypeSetCategoriesQuery.error || caseTypeStatsQuery.error;\n\n const handleCellNavigation = useCallback(async (caseType: Row) => {\n await RouterService.getInstance().router.navigate(CaseTypeUtil.createCaseTypeLink(caseType));\n }, []);\n\n const onRowClick = useCallback(async (params: TableRowParams<Row>) => {\n await handleCellNavigation(params.row);\n }, [handleCellNavigation]);\n\n const onShowItemClick = useCallback(async (params: TableRowParams<Row>) => {\n await handleCellNavigation(params.row);\n }, [handleCellNavigation]);\n\n const onShowCaseTypeInformationClick = useCallback((params: TableRowParams<Row>) => {\n caseTypeInfoDialogWithLoaderRef.current.open({\n caseTypeId: params.row.id,\n });\n }, []);\n\n const onDownloadExcelTemplateButtonClick = useCallback(async (params: TableRowParams<Row>) => {\n await CaseDbDownloadUtil.downloadExcelTemplate(params.row.id, t);\n }, [t]);\n\n const onIndexCellClick = useCallback((row: Row) => {\n caseTypeInfoDialogWithLoaderRef.current.open({\n caseTypeId: row.id,\n });\n }, []);\n\n const data = useMemo<Row[]>(() => {\n if (isLoading || error) {\n return;\n }\n\n const caseTypeSetCache = new Map<string, CaseDbCaseTypeSet>();\n caseTypeSets.forEach(caseTypeSet => {\n caseTypeSetCache.set(caseTypeSet.id, caseTypeSet);\n });\n\n const caseTypeMemberCache = new Map<string, string[]>();\n caseTypeSetMembers.forEach(caseTypeSetMember => {\n const caseTypeMemberCacheEntry = caseTypeMemberCache.get(caseTypeSetMember.case_type_id);\n\n if (caseTypeMemberCacheEntry) {\n if (!caseTypeMemberCacheEntry.includes(caseTypeSetMember.case_type_set_id)) {\n caseTypeMemberCacheEntry.push(caseTypeSetMember.case_type_set_id);\n }\n } else {\n caseTypeMemberCache.set(caseTypeSetMember.case_type_id, [caseTypeSetMember.case_type_set_id]);\n }\n });\n\n const rows = caseTypes.map<Row>(caseType => {\n const row: Row = {\n first_case_date: caseTypeStatsMap.get(caseType.id)?.first_case_date,\n hasCases: caseTypeStatsMap.get(caseType.id)?.n_cases > 0,\n id: caseType.id,\n last_case_date: caseTypeStatsMap.get(caseType.id)?.last_case_date,\n n_cases: caseTypeStatsMap.get(caseType.id)?.n_cases ?? 0,\n n_own_cases: caseTypeStatsMap.get(caseType.id)?.n_own_cases ?? 0,\n name: caseType.name,\n };\n caseTypeSetCategoriesQuery.data.forEach((caseTypeSetCategorie) => {\n row[getCaseTypeSetCategoryRowId(caseTypeSetCategorie.id)] = [];\n });\n\n (caseTypeMemberCache.get(caseType.id) ?? []).forEach(caseTypeSetId => {\n const caseTypeSet = caseTypeSetCache.get(caseTypeSetId);\n if (caseTypeSet) {\n (row[getCaseTypeSetCategoryRowId(caseTypeSet.case_type_set_category_id)] as string[]).push(caseTypeSetId);\n }\n });\n return row;\n });\n return rows;\n }, [caseTypeSetCategoriesQuery, caseTypeSetMembers, caseTypeSets, caseTypeStatsMap, caseTypes, error, isLoading]);\n\n const caseTypeSetCategoryOptions = useMemo(() => {\n const options: { [key: string]: OptionBase<string>[] } = {};\n\n caseTypeSetCategoriesQuery.data?.forEach(category => {\n options[category.id] = caseTypeSets?.filter(set => set.case_type_set_category_id === category.id).sort(DataUtil.rankSortComperatorFactory('name')).map<OptionBase<string>>(set => ({ label: set.name, value: set.id }));\n });\n return options;\n }, [caseTypeSetCategoriesQuery, caseTypeSets]);\n\n const columns = useMemo<TableColumn<Row>[]>(() => {\n if (isLoading || error) {\n return;\n }\n\n return [\n TableUtil.createReadableIndexColumn({\n getAriaLabel: (params: TableRowParams<Row>) => t('Open case type information for {{name}}', { name: params.row.name }),\n }),\n TableUtil.createTextColumn({\n flex: 1.5,\n id: 'name',\n name: t('Name'),\n }),\n ...caseTypeSetCategoriesQuery.data.filter(c => c.purpose === CaseDbCaseTypeSetCategoryPurpose.CONTENT).map<TableColumn<Row>>((caseTypeSetCategory: CaseDbCaseTypeSetCategory) => {\n return {\n comparatorFactory: TableUtil.createOptionsCellRowComperator,\n headerName: caseTypeSetCategory.name,\n id: getCaseTypeSetCategoryRowId(caseTypeSetCategory.id),\n isInitiallyVisible: true,\n maxNumOptionsExpanded: Infinity,\n options: caseTypeSetCategoryOptions[caseTypeSetCategory.id] ?? [],\n type: 'options',\n widthFlex: 1,\n };\n }),\n TableUtil.createNumberColumn({ flex: 0.5, id: 'n_cases', name: t('Cases') }),\n TableUtil.createNumberColumn({ flex: 0.5, id: 'n_own_cases', name: t('Own cases') }),\n TableUtil.createDateColumn({ dateFormat: DATE_FORMAT.DATE, flex: 0.5, id: 'first_case_date', name: t('First case date') }),\n TableUtil.createDateColumn({ dateFormat: DATE_FORMAT.DATE, flex: 0.5, id: 'last_case_date', name: t('Last case date') }),\n TableUtil.createActionsColumn({\n getActions: (params) => {\n return [\n (\n <MenuItem\n disabled={!params.row.hasCases}\n key={'actions1'}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={async () => onShowItemClick(params)}\n >\n <ListItemIcon>\n <ArrowCircleRightIcon />\n </ListItemIcon>\n <ListItemText>\n {t`Go to cases`}\n </ListItemText>\n </MenuItem>\n ),\n (\n <MenuItem\n key={'actions2'}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={() => onShowCaseTypeInformationClick(params)}\n >\n <ListItemIcon>\n <InfoIcon />\n </ListItemIcon>\n <ListItemText>\n {t`Show case type information`}\n </ListItemText>\n </MenuItem>\n ),\n (\n <MenuItem\n key={'actions3'}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={async () => onDownloadExcelTemplateButtonClick(params)}\n >\n <ListItemIcon>\n <FileDownloadIcon />\n </ListItemIcon>\n <ListItemText>\n {t`Download Excel template`}\n </ListItemText>\n </MenuItem>\n ),\n ];\n },\n t,\n }),\n ] satisfies TableColumn<Row>[];\n }, [caseTypeSetCategoriesQuery.data, caseTypeSetCategoryOptions, error, isLoading, onDownloadExcelTemplateButtonClick, onShowCaseTypeInformationClick, onShowItemClick, t]);\n\n const tableStore = useMemo(() => createTableStore<Row>({\n defaultSortByField: 'name',\n defaultSortDirection: 'asc',\n idSelectorCallback: (row) => row.id,\n isRowEnabledCallback: (row) => row.n_cases > 0,\n navigatorFunction: RouterService.getInstance().router.navigate,\n storageNamePostFix: 'cases',\n storageVersion: 1,\n }), []);\n\n useInitializeTableStore({ columns, createFiltersFromColumns: true, rows: data, store: tableStore });\n\n const getRowName = useCallback((row: Row) => {\n return row.name;\n }, []);\n\n return (\n <TableStoreContextProvider store={tableStore}>\n <PageContainer\n contentActions={(<TableMenu />)}\n contentHeader={(\n <TableCaption\n caption={t`Cases`}\n component={'h2'}\n variant={'h2'}\n />\n )}\n fullWidth\n showBreadcrumbs\n testIdAttributes={TestIdUtil.createAttributes('CasesPage')}\n title={t`Cases`}\n >\n <Box\n sx={{\n height: '100%',\n position: 'relative',\n }}\n >\n <ResponseHandler\n error={error}\n isLoading={isLoading}\n >\n {caseTypes?.length === 0 && (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <Typography variant={'h6'}>\n {t`No cases found`}\n </Typography>\n </Box>\n )}\n {caseTypes?.length > 0 && (\n <>\n <TableSidebarMenu />\n <Box\n sx={{\n height: '100%',\n paddingLeft: theme.spacing(ConfigService.getInstance().config.layout.SIDEBAR_MENU_WIDTH + 1),\n width: '100%',\n }}\n >\n <Table\n getRowName={getRowName}\n onReadableIndexClick={onIndexCellClick}\n onRowClick={onRowClick}\n />\n </Box>\n </>\n )}\n </ResponseHandler>\n </Box>\n <CaseTypeInfoDialogWithLoader ref={caseTypeInfoDialogWithLoaderRef} />\n </PageContainer>\n </TableStoreContextProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -5,15 +5,15 @@ import { t as r } from "../../_chunks/omit.js";
|
|
|
5
5
|
import { useColSetMembersQuery as i } from "../../dataHooks/useColSetMembersQuery/index.js";
|
|
6
6
|
import { array as a, object as o, string as s } from "yup";
|
|
7
7
|
import { CaseDbCaseApi as c, CaseDbCommandName as l, CaseDbPermissionType as u } from "@gen-epix/api-casedb";
|
|
8
|
-
import { FORM_FIELD_DEFINITION_TYPE as d } from "@gen-epix/ui-form/models/form";
|
|
8
|
+
import { FORM_FIELD_DEFINITION_TYPE as d } from "@gen-epix/ui-core-form/models/form";
|
|
9
9
|
import { useCallback as f, useMemo as p } from "react";
|
|
10
10
|
import { useTranslation as m } from "react-i18next";
|
|
11
11
|
import { jsx as h } from "react/jsx-runtime";
|
|
12
12
|
import { useArray as g } from "@gen-epix/ui-core/hooks/useArray";
|
|
13
|
-
import { TableUtil as _ } from "@gen-epix/ui/utils/TableUtil";
|
|
13
|
+
import { TableUtil as _ } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
14
14
|
import { TestIdUtil as v } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
15
|
-
import { SchemaUtil as y } from "@gen-epix/ui-form/utils/SchemaUtil";
|
|
16
|
-
import { CrudPage as b } from "@gen-epix/ui/pages/CrudPage";
|
|
15
|
+
import { SchemaUtil as y } from "@gen-epix/ui-core-form/utils/SchemaUtil";
|
|
16
|
+
import { CrudPage as b } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
17
17
|
//#region src/pages/ColSetsAdminPage/ColSetsAdminPage.tsx
|
|
18
18
|
var x = /* @__PURE__ */ e(r(), 1), S = () => {
|
|
19
19
|
let { t: e } = m(), r = n(), S = i(), C = g([r, S]), w = f(async (e) => (await c.getInstance().colSetsGetAll(null, null, { signal: e }))?.data, []), T = f(async (e) => await c.getInstance().colSetsDeleteOne(e.id), []), E = f(async (e, t) => (await c.getInstance().colSetsPutCols(t.id, { col_set_members: e.colIds.map((e) => ({
|
|
@@ -77,9 +77,9 @@ var x = /* @__PURE__ */ e(r(), 1), S = () => {
|
|
|
77
77
|
...e,
|
|
78
78
|
colIds: t
|
|
79
79
|
};
|
|
80
|
-
}), [S.data]);
|
|
80
|
+
}), [S.data]), P = p(() => [[t.COL_SET_MEMBERS]], []);
|
|
81
81
|
return /* @__PURE__ */ h(b, {
|
|
82
|
-
associationQueryKeys:
|
|
82
|
+
associationQueryKeys: P,
|
|
83
83
|
convertToTableData: N,
|
|
84
84
|
createItemDialogTitle: e`Create new column set`,
|
|
85
85
|
createOne: D,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ColSetsAdminPage/ColSetsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport omit from 'lodash/omit';\nimport type {\n CaseDbApiPermission,\n CaseDbColSet,\n CaseDbColSetMember,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCommandName,\n CaseDbPermissionType,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui/models/data';\nimport type { TableColumn } from '@gen-epix/ui/models/table';\nimport { CrudPage } from '@gen-epix/ui/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-form/utils/SchemaUtil';\n\nimport { useColOptionsQuery } from '../../dataHooks/useColsQuery';\nimport { useColSetMembersQuery } from '../../dataHooks/useColSetMembersQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<TableData>;\n\ntype TableData = { colIds: string[] } & CaseDbColSet;\n\nexport const ColSetsAdminPage = () => {\n const { t } = useTranslation();\n\n const colOptionsQuery = useColOptionsQuery();\n const colSetMembersQuery = useColSetMembersQuery();\n\n const loadables = useArray([colOptionsQuery, colSetMembersQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().colSetsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbColSet) => {\n return await CaseDbCaseApi.getInstance().colSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbColSet) => {\n await CaseDbCaseApi.getInstance().colSetsPutCols(item.id, {\n col_set_members: variables.colIds.map<CaseDbColSetMember>(col_id => ({\n col_id,\n col_set_id: item.id,\n })),\n });\n\n return (await CaseDbCaseApi.getInstance().colSetsPutOne(item.id, omit({ id: item.id, ...variables }, ['colIds']))).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n const resultItem = (await CaseDbCaseApi.getInstance().colSetsPostOne(omit(variables, ['colIds']))).data;\n await CaseDbCaseApi.getInstance().colSetsPutCols(resultItem.id, {\n col_set_members: variables.colIds.map<CaseDbColSetMember>(col_id => ({\n col_id,\n col_set_id: resultItem.id,\n })),\n });\n\n return resultItem;\n }, []);\n\n const getName = useCallback((item: CaseDbColSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n colIds: array().of(string().uuid4()).min(1).required(),\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n });\n }, []);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n multiline: true,\n name: 'description',\n rows: 5,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST,\n label: t`Columns`,\n loading: colOptionsQuery.isLoading,\n name: 'colIds',\n options: colOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [colOptionsQuery.isLoading, colOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<TableData>[] => {\n return [\n TableUtil.createTextColumn<TableData>({ id: 'name', name: t`Name` }),\n {\n displayValueGetter: (item) => `${item.row.colIds.length} / ${colOptionsQuery.options.length}`,\n headerName: t`Column count`,\n id: 'numCols',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (item) => item.row.colIds.length,\n widthFlex: 0.5,\n },\n ];\n }, [colOptionsQuery.options.length, t]);\n\n const extraPermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.ColSetColUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n\n const convertToTableData = useCallback((items: CaseDbColSet[]) => {\n if (!items || !colSetMembersQuery.data) {\n return [];\n }\n return items.map<TableData>((item) => {\n const colIds = colSetMembersQuery.data.filter(member => member.col_set_id === item.id).map(member => member.col_id);\n return {\n ...item,\n colIds,\n } satisfies TableData;\n });\n }, [colSetMembersQuery.data]);\n\n const associationQueryKeys = useMemo(() => [\n [CASEDB_QUERY_KEY.COL_SET_MEMBERS],\n ], []);\n\n return (\n <CrudPage<FormFields, CaseDbColSet, TableData, CASEDB_QUERY_KEY, CaseDbApiPermission>\n associationQueryKeys={associationQueryKeys}\n convertToTableData={convertToTableData}\n createItemDialogTitle={t`Create new column set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ColSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n extraCreateOnePermissions={extraPermissions}\n extraDeleteOnePermissions={extraPermissions}\n extraUpdateOnePermissions={extraPermissions}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Column set`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.COL_SETS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ColSetsAdminPage')}\n title={t`Column sets`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;mCAuCa,UAAyB;CACpC,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAkB,EAAmB,GACrC,IAAqB,EAAsB,GAE3C,IAAY,EAAS,CAAC,GAAiB,CAAkB,CAAC,GAE1D,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAc,YAAY,CAAC,CAAC,cAAc,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MACjF,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAc,YAAY,CAAC,CAAC,iBAAiB,EAAK,EAAE,GAChE,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OAC1D,MAAM,EAAc,YAAY,CAAC,CAAC,eAAe,EAAK,IAAI,EACxD,iBAAiB,EAAU,OAAO,KAAwB,OAAW;EACnE;EACA,YAAY,EAAK;CACnB,EAAE,EACJ,CAAC,IAEO,MAAM,EAAc,YAAY,CAAC,CAAC,cAAc,EAAK,KAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ColSetsAdminPage/ColSetsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport omit from 'lodash/omit';\nimport type {\n CaseDbApiPermission,\n CaseDbColSet,\n CaseDbColSetMember,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbCommandName,\n CaseDbPermissionType,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { useColOptionsQuery } from '../../dataHooks/useColsQuery';\nimport { useColSetMembersQuery } from '../../dataHooks/useColSetMembersQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<TableData>;\n\ntype TableData = { colIds: string[] } & CaseDbColSet;\n\nexport const ColSetsAdminPage = () => {\n const { t } = useTranslation();\n\n const colOptionsQuery = useColOptionsQuery();\n const colSetMembersQuery = useColSetMembersQuery();\n\n const loadables = useArray([colOptionsQuery, colSetMembersQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().colSetsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbColSet) => {\n return await CaseDbCaseApi.getInstance().colSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbColSet) => {\n await CaseDbCaseApi.getInstance().colSetsPutCols(item.id, {\n col_set_members: variables.colIds.map<CaseDbColSetMember>(col_id => ({\n col_id,\n col_set_id: item.id,\n })),\n });\n\n return (await CaseDbCaseApi.getInstance().colSetsPutOne(item.id, omit({ id: item.id, ...variables }, ['colIds']))).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n const resultItem = (await CaseDbCaseApi.getInstance().colSetsPostOne(omit(variables, ['colIds']))).data;\n await CaseDbCaseApi.getInstance().colSetsPutCols(resultItem.id, {\n col_set_members: variables.colIds.map<CaseDbColSetMember>(col_id => ({\n col_id,\n col_set_id: resultItem.id,\n })),\n });\n\n return resultItem;\n }, []);\n\n const getName = useCallback((item: CaseDbColSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n colIds: array().of(string().uuid4()).min(1).required(),\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n });\n }, []);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n multiline: true,\n name: 'description',\n rows: 5,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST,\n label: t`Columns`,\n loading: colOptionsQuery.isLoading,\n name: 'colIds',\n options: colOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [colOptionsQuery.isLoading, colOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<TableData>[] => {\n return [\n TableUtil.createTextColumn<TableData>({ id: 'name', name: t`Name` }),\n {\n displayValueGetter: (item) => `${item.row.colIds.length} / ${colOptionsQuery.options.length}`,\n headerName: t`Column count`,\n id: 'numCols',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (item) => item.row.colIds.length,\n widthFlex: 0.5,\n },\n ];\n }, [colOptionsQuery.options.length, t]);\n\n const extraPermissions = useMemo<CaseDbApiPermission[]>(() => [\n { command_name: CaseDbCommandName.ColSetColUpdateAssociationCommand, permission_type: CaseDbPermissionType.EXECUTE },\n ], []);\n\n const convertToTableData = useCallback((items: CaseDbColSet[]) => {\n if (!items || !colSetMembersQuery.data) {\n return [];\n }\n return items.map<TableData>((item) => {\n const colIds = colSetMembersQuery.data.filter(member => member.col_set_id === item.id).map(member => member.col_id);\n return {\n ...item,\n colIds,\n } satisfies TableData;\n });\n }, [colSetMembersQuery.data]);\n\n const associationQueryKeys = useMemo(() => [\n [CASEDB_QUERY_KEY.COL_SET_MEMBERS],\n ], []);\n\n return (\n <CrudPage<FormFields, CaseDbColSet, TableData, CASEDB_QUERY_KEY, CaseDbApiPermission>\n associationQueryKeys={associationQueryKeys}\n convertToTableData={convertToTableData}\n createItemDialogTitle={t`Create new column set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ColSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n extraCreateOnePermissions={extraPermissions}\n extraDeleteOnePermissions={extraPermissions}\n extraUpdateOnePermissions={extraPermissions}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Column set`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.COL_SETS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ColSetsAdminPage')}\n title={t`Column sets`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;mCAuCa,UAAyB;CACpC,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAkB,EAAmB,GACrC,IAAqB,EAAsB,GAE3C,IAAY,EAAS,CAAC,GAAiB,CAAkB,CAAC,GAE1D,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAc,YAAY,CAAC,CAAC,cAAc,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MACjF,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAc,YAAY,CAAC,CAAC,iBAAiB,EAAK,EAAE,GAChE,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OAC1D,MAAM,EAAc,YAAY,CAAC,CAAC,eAAe,EAAK,IAAI,EACxD,iBAAiB,EAAU,OAAO,KAAwB,OAAW;EACnE;EACA,YAAY,EAAK;CACnB,EAAE,EACJ,CAAC,IAEO,MAAM,EAAc,YAAY,CAAC,CAAC,cAAc,EAAK,KAAA,GAAI,EAAA,QAAA,CAAK;EAAE,IAAI,EAAK;EAAI,GAAG;CAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAA,CAAG,OAClH,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAA0B;EAC7D,IAAM,KAAc,MAAM,EAAc,YAAY,CAAC,CAAC,gBAAA,GAAe,EAAA,QAAA,CAAK,GAAW,CAAC,QAAQ,CAAC,CAAC,EAAA,CAAG;EAQnG,OAPA,MAAM,EAAc,YAAY,CAAC,CAAC,eAAe,EAAW,IAAI,EAC9D,iBAAiB,EAAU,OAAO,KAAwB,OAAW;GACnE;GACA,YAAY,EAAW;EACzB,EAAE,EACJ,CAAC,GAEM;CACT,GAAG,CAAC,CAAC,GAEC,IAAU,GAAa,MACpB,EAAK,MACX,CAAC,CAAC,GAEC,IAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,QAAQ,EAAM,CAAC,CAAC,GAAG,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;EACrD,aAAa,EAAW;EACxB,MAAM,EAAW;CACnB,CAAC,GACA,CAAC,CAAC,GAEC,IAAuB,QACpB;EACL;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,WAAW;GACX,MAAM;GACN,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAAgB;GACzB,MAAM;GACN,SAAS,EAAgB;EAC3B;CACF,GACC;EAAC,EAAgB;EAAW,EAAgB;EAAS;CAAC,CAAC,GAEpD,IAAe,QACZ,CACL,EAAU,iBAA4B;EAAE,IAAI;EAAQ,MAAM,CAAC;CAAO,CAAC,GACnE;EACE,qBAAqB,MAAS,GAAG,EAAK,IAAI,OAAO,OAAO,KAAK,EAAgB,QAAQ;EACrF,YAAY,CAAC;EACb,IAAI;EACJ,oBAAoB;EACpB,WAAW;EACX,MAAM;EACN,cAAc,MAAS,EAAK,IAAI,OAAO;EACvC,WAAW;CACb,CACF,GACC,CAAC,EAAgB,QAAQ,QAAQ,CAAC,CAAC,GAEhC,IAAmB,QAAqC,CAC5D;EAAE,cAAc,EAAkB;EAAmC,iBAAiB,EAAqB;CAAQ,CACrH,GAAG,CAAC,CAAC,GAEC,IAAqB,GAAa,MAClC,CAAC,KAAS,CAAC,EAAmB,OACzB,CAAC,IAEH,EAAM,KAAgB,MAAS;EACpC,IAAM,IAAS,EAAmB,KAAK,QAAO,MAAU,EAAO,eAAe,EAAK,EAAE,CAAC,CAAC,KAAI,MAAU,EAAO,MAAM;EAClH,OAAO;GACL,GAAG;GACH;EACF;CACF,CAAC,GACA,CAAC,EAAmB,IAAI,CAAC,GAEtB,IAAuB,QAAc,CACzC,CAAC,EAAiB,eAAe,CACnC,GAAG,CAAC,CAAC;CAEL,OACE,kBAAC,GAAD;EACwB;EACF;EACpB,uBAAuB,CAAC;EACb;EACX,iBAAiB,EAAkB;EACnC,oBAAoB;EACpB,sBAAsB;EACX;EACX,2BAA2B;EAC3B,2BAA2B;EAC3B,2BAA2B;EACjB;EACY;EACb;EACT,UAAU,CAAC;EACA;EACX,sBAAsB,EAAiB;EAC/B;EACM;EACd,kBAAkB,EAAW,iBAAiB,kBAAkB;EAChE,OAAO,CAAC;EACG;CACZ,CAAA;AAEL"}
|
|
@@ -3,23 +3,23 @@ import { CaseDbDataUtil as t } from "../../utils/CaseDbDataUtil/index.js";
|
|
|
3
3
|
import { useCaseTypeMapQuery as n, useCaseTypeOptionsQuery as r } from "../../dataHooks/useCaseTypesQuery/index.js";
|
|
4
4
|
import { useDimMapQuery as i, useDimOptionsQuery as a } from "../../dataHooks/useDimsQuery/index.js";
|
|
5
5
|
import { useColMapQuery as o, useColOptionsQuery as s } from "../../dataHooks/useColsQuery/index.js";
|
|
6
|
-
import { t as ee } from "../../_chunks/chunk-
|
|
6
|
+
import { t as ee } from "../../_chunks/chunk-BV7QT456.js";
|
|
7
7
|
import { useRefColMapQuery as c, useRefColOptionsQuery as l } from "../../dataHooks/useRefColsQuery/index.js";
|
|
8
8
|
import { useTreeAlgorithmCodeOptionsQuery as u } from "../../dataHooks/useTreeAlgorithmCodesQuery/index.js";
|
|
9
9
|
import { useRefColsValidationRulesQuery as d } from "../../dataHooks/useRefColsValidationRulesQuery/index.js";
|
|
10
10
|
import { useRefDimMapQuery as f } from "../../dataHooks/useRefDimsQuery/index.js";
|
|
11
11
|
import { array as p, object as m, string as h } from "yup";
|
|
12
12
|
import { CaseDbCaseApi as g, CaseDbColType as _, CaseDbCommandName as v } from "@gen-epix/api-casedb";
|
|
13
|
-
import { FORM_FIELD_DEFINITION_TYPE as y } from "@gen-epix/ui-form/models/form";
|
|
13
|
+
import { FORM_FIELD_DEFINITION_TYPE as y } from "@gen-epix/ui-core-form/models/form";
|
|
14
14
|
import { DATE_FORMAT as b } from "@gen-epix/ui-core/constants/date";
|
|
15
15
|
import { useCallback as x, useMemo as S, useRef as C } from "react";
|
|
16
16
|
import { useTranslation as w } from "react-i18next";
|
|
17
17
|
import { jsx as te } from "react/jsx-runtime";
|
|
18
18
|
import { useArray as T } from "@gen-epix/ui-core/hooks/useArray";
|
|
19
|
-
import { TableUtil as E } from "@gen-epix/ui/utils/TableUtil";
|
|
19
|
+
import { TableUtil as E } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
20
20
|
import { TestIdUtil as ne } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
21
|
-
import { SchemaUtil as D } from "@gen-epix/ui-form/utils/SchemaUtil";
|
|
22
|
-
import { CrudPage as O } from "@gen-epix/ui/pages/CrudPage";
|
|
21
|
+
import { SchemaUtil as D } from "@gen-epix/ui-core-form/utils/SchemaUtil";
|
|
22
|
+
import { CrudPage as O } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
23
23
|
//#region src/pages/ColsAdminPage/ColsAdminPage.tsx
|
|
24
24
|
var k = /^NCBI:txid\d+/, A = () => {
|
|
25
25
|
let { t: A } = w(), { caseTypeId: j, dimId: M } = ee(), N = l(), P = c(), F = f(), I = u(), L = r(), R = s(), z = o(), B = n(), V = i(), H = a(), U = d(), W = T([
|