@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/ColsAdminPage/ColsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport { useParams } from 'react-router-dom';\nimport type { UseFormReturn } from 'react-hook-form';\nimport type {\n CaseDbApiPermission,\n CaseDbCol,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbColType,\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 {\n FormFieldDefinition,\n OptionBase,\n} 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';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport {\n useColMapQuery,\n useColOptionsQuery,\n} from '../../dataHooks/useColsQuery';\nimport {\n useCaseTypeMapQuery,\n useCaseTypeOptionsQuery,\n} from '../../dataHooks/useCaseTypesQuery';\nimport {\n useRefColMapQuery,\n useRefColOptionsQuery,\n} from '../../dataHooks/useRefColsQuery';\nimport { useTreeAlgorithmCodeOptionsQuery } from '../../dataHooks/useTreeAlgorithmCodesQuery';\nimport {\n useDimMapQuery,\n useDimOptionsQuery,\n} from '../../dataHooks/useDimsQuery';\nimport { useRefColsValidationRulesQuery } from '../../dataHooks/useRefColsValidationRulesQuery';\nimport { useRefDimMapQuery } from '../../dataHooks/useRefDimsQuery';\nimport { CaseDbDataUtil } from '../../utils/CaseDbDataUtil';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<CaseDbCol, 'case_type' | 'dim' | 'props' | 'ref_col'>;\n\nconst NCBI_TAXID_REGEX = /^NCBI:txid\\d+/;\n\nexport const ColsAdminPage = () => {\n const { t } = useTranslation();\n const { caseTypeId, dimId } = useParams();\n const refColOptionsQuery = useRefColOptionsQuery();\n const refColMapQuery = useRefColMapQuery();\n const refDimMapQuery = useRefDimMapQuery();\n const treeAlgorithmCodesOptionsQuery = useTreeAlgorithmCodeOptionsQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const colOptionsQuery = useColOptionsQuery();\n const colMapQuery = useColMapQuery();\n const caseTypeMapQuery = useCaseTypeMapQuery();\n const dimMapQuery = useDimMapQuery();\n const dimOptionsQuery = useDimOptionsQuery();\n const colsValidationRulesQuery = useRefColsValidationRulesQuery();\n const loadables = useArray([refDimMapQuery, refColMapQuery, colsValidationRulesQuery, dimOptionsQuery, dimMapQuery, caseTypeMapQuery, caseTypeOptionsQuery, refColOptionsQuery, treeAlgorithmCodesOptionsQuery, colOptionsQuery]);\n const dimOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const refColOptionsByDimIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const geneticSequenceColOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n\n const normalizedCaseTypeId = useMemo(() => {\n if (dimId) {\n return dimMapQuery.map.get(dimId)?.case_type_id ?? null;\n }\n if (caseTypeId) {\n return caseTypeId;\n }\n return null;\n }, [dimId, dimMapQuery.map, caseTypeId]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().colsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const fetchAllSelect = useCallback((cols: CaseDbCol[]) => {\n if (dimId) {\n return cols.filter((col) => col.dim_id === dimId);\n }\n return cols;\n }, [dimId]);\n\n const deleteOne = useCallback(async (item: CaseDbCol) => {\n return await CaseDbCaseApi.getInstance().colsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCol) => {\n return (await CaseDbCaseApi.getInstance().colsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().colsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbCol) => {\n return item.label;\n }, []);\n\n const getDimOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (dimOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return dimOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getDimOptionsForCaseTypeId({\n caseTypeId: id,\n dimMap: dimMapQuery.map,\n dimOptions: dimOptionsQuery.options,\n });\n dimOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, dimOptionsQuery.options]);\n\n const getRefColOptionsForDimId = useCallback((id: string): OptionBase<string>[] => {\n if (refColOptionsByDimIdCacheRef.current.has(id)) {\n return refColOptionsByDimIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getRefColOptionsForDimId({\n colsValidationRules: colsValidationRulesQuery.data?.valid_col_types_by_dim_type ?? {},\n dimId: id,\n dimMap: dimMapQuery.map,\n refColMap: refColMapQuery.map,\n refColOptions: refColOptionsQuery.options,\n refDimMap: refDimMapQuery.map,\n });\n refColOptionsByDimIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, refColMapQuery.map, refColOptionsQuery.options, colsValidationRulesQuery.data?.valid_col_types_by_dim_type, refDimMapQuery.map]);\n\n const getGeneticSequenceColOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (geneticSequenceColOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return geneticSequenceColOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getGeneticSequenceColOptionsForCaseTypeId({\n caseTypeId: id,\n colMap: colMapQuery.map,\n colOptions: colOptionsQuery.options,\n refColMap: refColMapQuery.map,\n });\n geneticSequenceColOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [refColMapQuery.map, colMapQuery.map, colOptionsQuery.options]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n case_type_id: string().uuid4().required().max(100),\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n dim_id: string().uuid4().required().max(100),\n genetic_sequence_col_id: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().nullable().notRequired(),\n then: () => string().uuid4().required(),\n }),\n label: SchemaUtil.label,\n max_datetime: SchemaUtil.isoString.optional(),\n max_length: SchemaUtil.number.integer().positive().max(10000),\n max_value: SchemaUtil.number.positive().max(10000),\n min_datetime: SchemaUtil.isoString.optional(),\n min_length: SchemaUtil.number.integer().positive().max(10000),\n min_value: SchemaUtil.number.positive().max(10000),\n ncbi_taxid: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().notRequired(),\n then: () => string().matches(NCBI_TAXID_REGEX).required(),\n }),\n pattern: string().regex(),\n rank: SchemaUtil.rank,\n ref_col_id: string().uuid4().required().max(100),\n tree_algorithm_codes: array().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => array().nullable().notRequired(),\n then: () => array().min(1).required(),\n }),\n });\n }, [refColMapQuery.map]);\n\n const onFormChange = useCallback((_item: CaseDbCol, values: FormFields, formMethods: UseFormReturn<FormFields>) => {\n if (values.case_type_id && values.dim_id) {\n const validDimOptions = getDimOptionsForCaseTypeId(values.case_type_id);\n if (!validDimOptions.find(option => option.value === values.dim_id)) {\n formMethods.setValue('dim_id', validDimOptions.length === 1 ? validDimOptions[0].value : null);\n formMethods.setValue('ref_col_id', null);\n }\n }\n\n if (values.dim_id && values.ref_col_id) {\n const validColOptions = getRefColOptionsForDimId(values.dim_id);\n if (!validColOptions.find(option => option.value === values.ref_col_id)) {\n formMethods.setValue('ref_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n\n if (values.case_type_id && values.genetic_sequence_col_id) {\n const validColOptions = getGeneticSequenceColOptionsForCaseTypeId(values.case_type_id);\n if (!validColOptions.find(option => option.value === values.genetic_sequence_col_id)) {\n formMethods.setValue('genetic_sequence_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n }, [getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId]);\n\n const formFieldDefinitions = useCallback((item: CaseDbCol, values: FormFields): FormFieldDefinition<FormFields>[] => {\n const normalizedDimId = values?.dim_id ?? item?.dim_id ?? null;\n const caseTypeIdFromDimId = dimMapQuery.map.get(normalizedDimId)?.case_type_id ?? null;\n const normalizedCaseTypeIdWithValues = values?.case_type_id ?? normalizedCaseTypeId ?? caseTypeIdFromDimId;\n\n const dimOptions = getDimOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n const refColOptions = getRefColOptionsForDimId(normalizedDimId);\n const geneticSequenceColOptions = getGeneticSequenceColOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Case type`,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Dimension`,\n name: 'dim_id',\n options: dimOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Reference column`,\n name: 'ref_col_id',\n options: refColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Rank`,\n name: 'rank',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Label`,\n name: 'label',\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.NUMBER,\n label: t`Min value`,\n name: 'min_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max value`,\n name: 'max_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Min datetime`,\n name: 'min_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Max datetime`,\n name: 'max_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Min length`,\n name: 'min_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max length`,\n name: 'max_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Genetic sequence column`,\n name: 'genetic_sequence_col_id',\n options: geneticSequenceColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Tree algorithm codes`,\n multiple: true,\n name: 'tree_algorithm_codes',\n options: treeAlgorithmCodesOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`NCBI TaxID`,\n name: 'ncbi_taxid',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Pattern`,\n name: 'pattern',\n type: 'text',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const satisfies FormFieldDefinition<FormFields>[];\n }, [dimMapQuery.map, caseTypeOptionsQuery.options, getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId, normalizedCaseTypeId, t, treeAlgorithmCodesOptionsQuery.options]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCol>[] => {\n const columns: TableColumn<CaseDbCol>[] = [];\n if (!caseTypeId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'case_type_id', name: t`Case type`, options: caseTypeOptionsQuery.options }));\n }\n if (!dimId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'dim_id', name: t`Dimension`, options: dimOptionsQuery.options }));\n }\n\n columns.push(\n TableUtil.createOptionsColumn<CaseDbCol>({ id: 'ref_col_id', name: t`Column`, options: refColOptionsQuery.options }),\n TableUtil.createTextColumn<CaseDbCol>({ id: 'code', name: t`Code` }),\n TableUtil.createNumberColumn<CaseDbCol>({ id: 'rank', name: t`Rank` }),\n );\n return columns;\n }, [dimId, dimOptionsQuery.options, caseTypeId, caseTypeOptionsQuery.options, refColOptionsQuery.options, t]);\n\n const getOptimisticUpdateIntermediateItem = useCallback((variables: FormFields, previousItem: CaseDbCol): CaseDbCol => {\n return {\n case_type_id: previousItem.case_type_id,\n dim_id: previousItem.dim_id,\n id: previousItem.id,\n ...variables,\n };\n }, []);\n\n const defaultNewItem = useMemo<Partial<FormFields>>(() => {\n return {\n case_type_id: normalizedCaseTypeId,\n dim_id: dimId ?? null,\n };\n }, [dimId, normalizedCaseTypeId]);\n\n const title = useMemo(() => {\n const parts: string[] = [];\n\n if (caseTypeId && caseTypeMapQuery.map.has(caseTypeId)) {\n parts.push(caseTypeMapQuery.map.get(caseTypeId)?.name);\n }\n if (dimId && dimMapQuery.map.has(dimId)) {\n parts.push(dimMapQuery.map.get(dimId)?.label);\n }\n parts.push(t`Columns`);\n\n return parts;\n }, [caseTypeId, dimId, caseTypeMapQuery.map, dimMapQuery.map, t]);\n\n const tableStoreStorageNamePostFix = useMemo(() => {\n const parts: string[] = [];\n if (caseTypeId) {\n parts.push('CaseType');\n }\n if (dimId) {\n parts.push('Dim');\n }\n return parts.join('_');\n }, [dimId, caseTypeId]);\n\n return (\n <CrudPage<FormFields, CaseDbCol, CaseDbCol, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new column`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ColCrudCommand}\n defaultNewItem={defaultNewItem}\n defaultSortByField={(dimId ?? caseTypeId) ? 'rank' : 'case_type_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n fetchAllSelect={fetchAllSelect}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getOptimisticUpdateIntermediateItem}\n itemName={t`Column`}\n loadables={loadables}\n onFormChange={onFormChange}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.COLS}\n schema={schema}\n tableColumns={tableColumns}\n tableStoreStorageNamePostFix={tableStoreStorageNamePostFix}\n testIdAttributes={TestIdUtil.createAttributes('ColsAdminPage')}\n title={title}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA4DA,IAAM,IAAmB,iBAEZ,UAAsB;CACjC,IAAM,EAAE,SAAM,EAAe,GACvB,EAAE,eAAY,aAAU,GAAU,GAClC,IAAqB,EAAsB,GAC3C,IAAiB,EAAkB,GACnC,IAAiB,EAAkB,GACnC,IAAiC,EAAiC,GAClE,IAAuB,EAAwB,GAC/C,IAAkB,EAAmB,GACrC,IAAc,EAAe,GAC7B,IAAmB,EAAoB,GACvC,IAAc,EAAe,GAC7B,IAAkB,EAAmB,GACrC,IAA2B,EAA+B,GAC1D,IAAY,EAAS;EAAC;EAAgB;EAAgB;EAA0B;EAAiB;EAAa;EAAkB;EAAsB;EAAoB;EAAgC;CAAe,CAAC,GAC1N,IAAiC,kBAAO,IAAI,IAAkC,CAAC,GAC/E,IAA+B,kBAAO,IAAI,IAAkC,CAAC,GAC7E,IAAgD,kBAAO,IAAI,IAAkC,CAAC,GAE9F,IAAuB,QACvB,IACK,EAAY,IAAI,IAAI,CAAK,CAAC,EAAE,gBAAgB,OAEjD,KAGG,MACN;EAAC;EAAO,EAAY;EAAK;CAAU,CAAC,GAEjC,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAc,YAAY,CAAC,CAAC,WAAW,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MAC9E,CAAC,CAAC,GAEC,IAAiB,GAAa,MAC9B,IACK,EAAK,QAAQ,MAAQ,EAAI,WAAW,CAAK,IAE3C,GACN,CAAC,CAAK,CAAC,GAEJ,KAAY,EAAY,OAAO,MAC5B,MAAM,EAAc,YAAY,CAAC,CAAC,cAAc,EAAK,EAAE,GAC7D,CAAC,CAAC,GAEC,KAAY,EAAY,OAAO,GAAuB,OAClD,MAAM,EAAc,YAAY,CAAC,CAAC,WAAW,EAAK,IAAI;EAAE,IAAI,EAAK;EAAI,GAAG;CAAU,CAAC,EAAA,CAAG,MAC7F,CAAC,CAAC,GAEC,KAAY,EAAY,OAAO,OAC3B,MAAM,EAAc,YAAY,CAAC,CAAC,YAAY,CAAS,EAAA,CAAG,MACjE,CAAC,CAAC,GAEC,KAAU,GAAa,MACpB,EAAK,OACX,CAAC,CAAC,GAEC,IAA6B,GAAa,MAAqC;EACnF,IAAI,EAA+B,QAAQ,IAAI,CAAE,GAC/C,OAAO,EAA+B,QAAQ,IAAI,CAAE;EAEtD,IAAM,IAAU,EAAe,2BAA2B;GACxD,YAAY;GACZ,QAAQ,EAAY;GACpB,YAAY,EAAgB;EAC9B,CAAC;EAED,OADA,EAA+B,QAAQ,IAAI,GAAI,CAAO,GAC/C;CACT,GAAG,CAAC,EAAY,KAAK,EAAgB,OAAO,CAAC,GAEvC,IAA2B,GAAa,MAAqC;EACjF,IAAI,EAA6B,QAAQ,IAAI,CAAE,GAC7C,OAAO,EAA6B,QAAQ,IAAI,CAAE;EAEpD,IAAM,IAAU,EAAe,yBAAyB;GACtD,qBAAqB,EAAyB,MAAM,+BAA+B,CAAC;GACpF,OAAO;GACP,QAAQ,EAAY;GACpB,WAAW,EAAe;GAC1B,eAAe,EAAmB;GAClC,WAAW,EAAe;EAC5B,CAAC;EAED,OADA,EAA6B,QAAQ,IAAI,GAAI,CAAO,GAC7C;CACT,GAAG;EAAC,EAAY;EAAK,EAAe;EAAK,EAAmB;EAAS,EAAyB,MAAM;EAA6B,EAAe;CAAG,CAAC,GAE9I,IAA4C,GAAa,MAAqC;EAClG,IAAI,EAA8C,QAAQ,IAAI,CAAE,GAC9D,OAAO,EAA8C,QAAQ,IAAI,CAAE;EAErE,IAAM,IAAU,EAAe,0CAA0C;GACvE,YAAY;GACZ,QAAQ,EAAY;GACpB,YAAY,EAAgB;GAC5B,WAAW,EAAe;EAC5B,CAAC;EAED,OADA,EAA8C,QAAQ,IAAI,GAAI,CAAO,GAC9D;CACT,GAAG;EAAC,EAAe;EAAK,EAAY;EAAK,EAAgB;CAAO,CAAC,GAE3D,KAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,cAAc,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG;EACjD,MAAM,EAAW;EACjB,aAAa,EAAW;EACxB,QAAQ,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG;EAC3C,yBAAyB,EAAO,CAAC,CAAC,KAAK,cAAc;GACnD,KAAK,MAAuB,EAAe,IAAI,IAAI,CAAU,CAAC,EAAE,aAAa,EAAc;GAC3F,iBAAiB,EAAO,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY;GACjD,YAAY,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;EACxC,CAAC;EACD,OAAO,EAAW;EAClB,cAAc,EAAW,UAAU,SAAS;EAC5C,YAAY,EAAW,OAAO,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,GAAK;EAC5D,WAAW,EAAW,OAAO,SAAS,CAAC,CAAC,IAAI,GAAK;EACjD,cAAc,EAAW,UAAU,SAAS;EAC5C,YAAY,EAAW,OAAO,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,GAAK;EAC5D,WAAW,EAAW,OAAO,SAAS,CAAC,CAAC,IAAI,GAAK;EACjD,YAAY,EAAO,CAAC,CAAC,KAAK,cAAc;GACtC,KAAK,MAAuB,EAAe,IAAI,IAAI,CAAU,CAAC,EAAE,aAAa,EAAc;GAC3F,iBAAiB,EAAO,CAAC,CAAC,YAAY;GACtC,YAAY,EAAO,CAAC,CAAC,QAAQ,CAAgB,CAAC,CAAC,SAAS;EAC1D,CAAC;EACD,SAAS,EAAO,CAAC,CAAC,MAAM;EACxB,MAAM,EAAW;EACjB,YAAY,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG;EAC/C,sBAAsB,EAAM,CAAC,CAAC,KAAK,cAAc;GAC/C,KAAK,MAAuB,EAAe,IAAI,IAAI,CAAU,CAAC,EAAE,aAAa,EAAc;GAC3F,iBAAiB,EAAM,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY;GAChD,YAAY,EAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;EACtC,CAAC;CACH,CAAC,GACA,CAAC,EAAe,GAAG,CAAC,GAEjB,KAAe,GAAa,GAAkB,GAAoB,MAA2C;EACjH,IAAI,EAAO,gBAAgB,EAAO,QAAQ;GACxC,IAAM,IAAkB,EAA2B,EAAO,YAAY;GACtE,AAAK,EAAgB,MAAK,MAAU,EAAO,UAAU,EAAO,MAAM,MAChE,EAAY,SAAS,UAAU,EAAgB,WAAW,IAAI,EAAgB,EAAE,CAAC,QAAQ,IAAI,GAC7F,EAAY,SAAS,cAAc,IAAI;EAE3C;EAEA,IAAI,EAAO,UAAU,EAAO,YAAY;GACtC,IAAM,IAAkB,EAAyB,EAAO,MAAM;GAC9D,AAAK,EAAgB,MAAK,MAAU,EAAO,UAAU,EAAO,UAAU,KACpE,EAAY,SAAS,cAAc,EAAgB,WAAW,IAAI,EAAgB,EAAE,CAAC,QAAQ,IAAI;EAErG;EAEA,IAAI,EAAO,gBAAgB,EAAO,yBAAyB;GACzD,IAAM,IAAkB,EAA0C,EAAO,YAAY;GACrF,AAAK,EAAgB,MAAK,MAAU,EAAO,UAAU,EAAO,uBAAuB,KACjF,EAAY,SAAS,2BAA2B,EAAgB,WAAW,IAAI,EAAgB,EAAE,CAAC,QAAQ,IAAI;EAElH;CACF,GAAG;EAAC;EAA4B;EAA0B;CAAyC,CAAC,GAE9F,KAAuB,GAAa,GAAiB,MAA0D;EACnH,IAAM,IAAkB,GAAQ,UAAU,GAAM,UAAU,MACpD,IAAsB,EAAY,IAAI,IAAI,CAAe,CAAC,EAAE,gBAAgB,MAC5E,IAAiC,GAAQ,gBAAgB,KAAwB,GAEjF,IAAa,EAA2B,CAA8B,GACtE,IAAgB,EAAyB,CAAe,GACxD,IAA4B,EAA0C,CAA8B;EAE1G,OAAO;GACL;IACE,YAAY,EAA2B;IACvC,UAAU,CAAC,CAAC;IACZ,OAAO,CAAC;IACR,MAAM;IACN,SAAS,EAAqB;GAChC;GACA;IACE,YAAY,EAA2B;IACvC,UAAU,CAAC,CAAC;IACZ,OAAO,CAAC;IACR,MAAM;IACN,SAAS;GACX;GACA;IACE,YAAY,EAA2B;IACvC,UAAU,CAAC,CAAC;IACZ,OAAO,CAAC;IACR,MAAM;IACN,SAAS;GACX;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAAY;IACxB,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAAY;IACxB,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;IACN,SAAS;GACX;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,UAAU;IACV,MAAM;IACN,SAAS,EAA+B;GAC1C;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;GACR;GACA;IACE,YAAY,EAA2B;IACvC,OAAO,CAAC;IACR,MAAM;IACN,MAAM;GACR;EACF;CACF,GAAG;EAAC,EAAY;EAAK,EAAqB;EAAS;EAA4B;EAA0B;EAA2C;EAAsB;EAAG,EAA+B;CAAO,CAAC,GAE9M,KAAe,QAAwC;EAC3D,IAAM,IAAoC,CAAC;EAa3C,OAZK,KACH,EAAQ,KAAK,EAAU,oBAA+B;GAAE,IAAI;GAAgB,MAAM,CAAC;GAAa,SAAS,EAAqB;EAAQ,CAAC,CAAC,GAErI,KACH,EAAQ,KAAK,EAAU,oBAA+B;GAAE,IAAI;GAAU,MAAM,CAAC;GAAa,SAAS,EAAgB;EAAQ,CAAC,CAAC,GAG/H,EAAQ,KACN,EAAU,oBAA+B;GAAE,IAAI;GAAc,MAAM,CAAC;GAAU,SAAS,EAAmB;EAAQ,CAAC,GACnH,EAAU,iBAA4B;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC,GACnE,EAAU,mBAA8B;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC,CACvE,GACO;CACT,GAAG;EAAC;EAAO,EAAgB;EAAS;EAAY,EAAqB;EAAS,EAAmB;EAAS;CAAC,CAAC,GAEtG,KAAsC,GAAa,GAAuB,OACvE;EACL,cAAc,EAAa;EAC3B,QAAQ,EAAa;EACrB,IAAI,EAAa;EACjB,GAAG;CACL,IACC,CAAC,CAAC,GAEC,KAAiB,SACd;EACL,cAAc;EACd,QAAQ,KAAS;CACnB,IACC,CAAC,GAAO,CAAoB,CAAC,GAE1B,KAAQ,QAAc;EAC1B,IAAM,IAAkB,CAAC;EAUzB,OARI,KAAc,EAAiB,IAAI,IAAI,CAAU,KACnD,EAAM,KAAK,EAAiB,IAAI,IAAI,CAAU,CAAC,EAAE,IAAI,GAEnD,KAAS,EAAY,IAAI,IAAI,CAAK,KACpC,EAAM,KAAK,EAAY,IAAI,IAAI,CAAK,CAAC,EAAE,KAAK,GAE9C,EAAM,KAAK,CAAC,SAAS,GAEd;CACT,GAAG;EAAC;EAAY;EAAO,EAAiB;EAAK,EAAY;EAAK;CAAC,CAAC,GAE1D,KAA+B,QAAc;EACjD,IAAM,IAAkB,CAAC;EAOzB,OANI,KACF,EAAM,KAAK,UAAU,GAEnB,KACF,EAAM,KAAK,KAAK,GAEX,EAAM,KAAK,GAAG;CACvB,GAAG,CAAC,GAAO,CAAU,CAAC;CAEtB,OACE,mBAAC,GAAD;EACE,uBAAuB,CAAC;EACb;EACX,iBAAiB,EAAkB;EACnB;EAChB,oBAAqB,KAAS,IAAc,SAAS;EACrD,sBAAsB;EACX;EACD;EACM;EACM;EACb;EAC4B;EACrC,UAAU,CAAC;EACA;EACG;EACd,sBAAsB,EAAiB;EAC/B;EACM;EACgB;EAC9B,kBAAkB,GAAW,iBAAiB,eAAe;EACtD;EACI;CACZ,CAAA;AAEL"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ColsAdminPage/ColsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport { useParams } from 'react-router-dom';\nimport type { UseFormReturn } from 'react-hook-form';\nimport type {\n CaseDbApiPermission,\n CaseDbCol,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbColType,\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 {\n FormFieldDefinition,\n OptionBase,\n} 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';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport {\n useColMapQuery,\n useColOptionsQuery,\n} from '../../dataHooks/useColsQuery';\nimport {\n useCaseTypeMapQuery,\n useCaseTypeOptionsQuery,\n} from '../../dataHooks/useCaseTypesQuery';\nimport {\n useRefColMapQuery,\n useRefColOptionsQuery,\n} from '../../dataHooks/useRefColsQuery';\nimport { useTreeAlgorithmCodeOptionsQuery } from '../../dataHooks/useTreeAlgorithmCodesQuery';\nimport {\n useDimMapQuery,\n useDimOptionsQuery,\n} from '../../dataHooks/useDimsQuery';\nimport { useRefColsValidationRulesQuery } from '../../dataHooks/useRefColsValidationRulesQuery';\nimport { useRefDimMapQuery } from '../../dataHooks/useRefDimsQuery';\nimport { CaseDbDataUtil } from '../../utils/CaseDbDataUtil';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<CaseDbCol, 'case_type' | 'dim' | 'props' | 'ref_col'>;\n\nconst NCBI_TAXID_REGEX = /^NCBI:txid\\d+/;\n\nexport const ColsAdminPage = () => {\n const { t } = useTranslation();\n const { caseTypeId, dimId } = useParams();\n const refColOptionsQuery = useRefColOptionsQuery();\n const refColMapQuery = useRefColMapQuery();\n const refDimMapQuery = useRefDimMapQuery();\n const treeAlgorithmCodesOptionsQuery = useTreeAlgorithmCodeOptionsQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const colOptionsQuery = useColOptionsQuery();\n const colMapQuery = useColMapQuery();\n const caseTypeMapQuery = useCaseTypeMapQuery();\n const dimMapQuery = useDimMapQuery();\n const dimOptionsQuery = useDimOptionsQuery();\n const colsValidationRulesQuery = useRefColsValidationRulesQuery();\n const loadables = useArray([refDimMapQuery, refColMapQuery, colsValidationRulesQuery, dimOptionsQuery, dimMapQuery, caseTypeMapQuery, caseTypeOptionsQuery, refColOptionsQuery, treeAlgorithmCodesOptionsQuery, colOptionsQuery]);\n const dimOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const refColOptionsByDimIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const geneticSequenceColOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n\n const normalizedCaseTypeId = useMemo(() => {\n if (dimId) {\n return dimMapQuery.map.get(dimId)?.case_type_id ?? null;\n }\n if (caseTypeId) {\n return caseTypeId;\n }\n return null;\n }, [dimId, dimMapQuery.map, caseTypeId]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().colsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const fetchAllSelect = useCallback((cols: CaseDbCol[]) => {\n if (dimId) {\n return cols.filter((col) => col.dim_id === dimId);\n }\n return cols;\n }, [dimId]);\n\n const deleteOne = useCallback(async (item: CaseDbCol) => {\n return await CaseDbCaseApi.getInstance().colsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCol) => {\n return (await CaseDbCaseApi.getInstance().colsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().colsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbCol) => {\n return item.label;\n }, []);\n\n const getDimOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (dimOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return dimOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getDimOptionsForCaseTypeId({\n caseTypeId: id,\n dimMap: dimMapQuery.map,\n dimOptions: dimOptionsQuery.options,\n });\n dimOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, dimOptionsQuery.options]);\n\n const getRefColOptionsForDimId = useCallback((id: string): OptionBase<string>[] => {\n if (refColOptionsByDimIdCacheRef.current.has(id)) {\n return refColOptionsByDimIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getRefColOptionsForDimId({\n colsValidationRules: colsValidationRulesQuery.data?.valid_col_types_by_dim_type ?? {},\n dimId: id,\n dimMap: dimMapQuery.map,\n refColMap: refColMapQuery.map,\n refColOptions: refColOptionsQuery.options,\n refDimMap: refDimMapQuery.map,\n });\n refColOptionsByDimIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, refColMapQuery.map, refColOptionsQuery.options, colsValidationRulesQuery.data?.valid_col_types_by_dim_type, refDimMapQuery.map]);\n\n const getGeneticSequenceColOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (geneticSequenceColOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return geneticSequenceColOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getGeneticSequenceColOptionsForCaseTypeId({\n caseTypeId: id,\n colMap: colMapQuery.map,\n colOptions: colOptionsQuery.options,\n refColMap: refColMapQuery.map,\n });\n geneticSequenceColOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [refColMapQuery.map, colMapQuery.map, colOptionsQuery.options]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n case_type_id: string().uuid4().required().max(100),\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n dim_id: string().uuid4().required().max(100),\n genetic_sequence_col_id: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().nullable().notRequired(),\n then: () => string().uuid4().required(),\n }),\n label: SchemaUtil.label,\n max_datetime: SchemaUtil.isoString.optional(),\n max_length: SchemaUtil.number.integer().positive().max(10000),\n max_value: SchemaUtil.number.positive().max(10000),\n min_datetime: SchemaUtil.isoString.optional(),\n min_length: SchemaUtil.number.integer().positive().max(10000),\n min_value: SchemaUtil.number.positive().max(10000),\n ncbi_taxid: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().notRequired(),\n then: () => string().matches(NCBI_TAXID_REGEX).required(),\n }),\n pattern: string().regex(),\n rank: SchemaUtil.rank,\n ref_col_id: string().uuid4().required().max(100),\n tree_algorithm_codes: array().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => array().nullable().notRequired(),\n then: () => array().min(1).required(),\n }),\n });\n }, [refColMapQuery.map]);\n\n const onFormChange = useCallback((_item: CaseDbCol, values: FormFields, formMethods: UseFormReturn<FormFields>) => {\n if (values.case_type_id && values.dim_id) {\n const validDimOptions = getDimOptionsForCaseTypeId(values.case_type_id);\n if (!validDimOptions.find(option => option.value === values.dim_id)) {\n formMethods.setValue('dim_id', validDimOptions.length === 1 ? validDimOptions[0].value : null);\n formMethods.setValue('ref_col_id', null);\n }\n }\n\n if (values.dim_id && values.ref_col_id) {\n const validColOptions = getRefColOptionsForDimId(values.dim_id);\n if (!validColOptions.find(option => option.value === values.ref_col_id)) {\n formMethods.setValue('ref_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n\n if (values.case_type_id && values.genetic_sequence_col_id) {\n const validColOptions = getGeneticSequenceColOptionsForCaseTypeId(values.case_type_id);\n if (!validColOptions.find(option => option.value === values.genetic_sequence_col_id)) {\n formMethods.setValue('genetic_sequence_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n }, [getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId]);\n\n const formFieldDefinitions = useCallback((item: CaseDbCol, values: FormFields): FormFieldDefinition<FormFields>[] => {\n const normalizedDimId = values?.dim_id ?? item?.dim_id ?? null;\n const caseTypeIdFromDimId = dimMapQuery.map.get(normalizedDimId)?.case_type_id ?? null;\n const normalizedCaseTypeIdWithValues = values?.case_type_id ?? normalizedCaseTypeId ?? caseTypeIdFromDimId;\n\n const dimOptions = getDimOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n const refColOptions = getRefColOptionsForDimId(normalizedDimId);\n const geneticSequenceColOptions = getGeneticSequenceColOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Case type`,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Dimension`,\n name: 'dim_id',\n options: dimOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Reference column`,\n name: 'ref_col_id',\n options: refColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Rank`,\n name: 'rank',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Label`,\n name: 'label',\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.NUMBER,\n label: t`Min value`,\n name: 'min_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max value`,\n name: 'max_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Min datetime`,\n name: 'min_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Max datetime`,\n name: 'max_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Min length`,\n name: 'min_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max length`,\n name: 'max_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Genetic sequence column`,\n name: 'genetic_sequence_col_id',\n options: geneticSequenceColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Tree algorithm codes`,\n multiple: true,\n name: 'tree_algorithm_codes',\n options: treeAlgorithmCodesOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`NCBI TaxID`,\n name: 'ncbi_taxid',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Pattern`,\n name: 'pattern',\n type: 'text',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const satisfies FormFieldDefinition<FormFields>[];\n }, [dimMapQuery.map, caseTypeOptionsQuery.options, getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId, normalizedCaseTypeId, t, treeAlgorithmCodesOptionsQuery.options]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCol>[] => {\n const columns: TableColumn<CaseDbCol>[] = [];\n if (!caseTypeId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'case_type_id', name: t`Case type`, options: caseTypeOptionsQuery.options }));\n }\n if (!dimId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'dim_id', name: t`Dimension`, options: dimOptionsQuery.options }));\n }\n\n columns.push(\n TableUtil.createOptionsColumn<CaseDbCol>({ id: 'ref_col_id', name: t`Column`, options: refColOptionsQuery.options }),\n TableUtil.createTextColumn<CaseDbCol>({ id: 'code', name: t`Code` }),\n TableUtil.createNumberColumn<CaseDbCol>({ id: 'rank', name: t`Rank` }),\n );\n return columns;\n }, [dimId, dimOptionsQuery.options, caseTypeId, caseTypeOptionsQuery.options, refColOptionsQuery.options, t]);\n\n const getOptimisticUpdateIntermediateItem = useCallback((variables: FormFields, previousItem: CaseDbCol): CaseDbCol => {\n return {\n case_type_id: previousItem.case_type_id,\n dim_id: previousItem.dim_id,\n id: previousItem.id,\n ...variables,\n };\n }, []);\n\n const defaultNewItem = useMemo<Partial<FormFields>>(() => {\n return {\n case_type_id: normalizedCaseTypeId,\n dim_id: dimId ?? null,\n };\n }, [dimId, normalizedCaseTypeId]);\n\n const title = useMemo(() => {\n const parts: string[] = [];\n\n if (caseTypeId && caseTypeMapQuery.map.has(caseTypeId)) {\n parts.push(caseTypeMapQuery.map.get(caseTypeId)?.name);\n }\n if (dimId && dimMapQuery.map.has(dimId)) {\n parts.push(dimMapQuery.map.get(dimId)?.label);\n }\n parts.push(t`Columns`);\n\n return parts;\n }, [caseTypeId, dimId, caseTypeMapQuery.map, dimMapQuery.map, t]);\n\n const tableStoreStorageNamePostFix = useMemo(() => {\n const parts: string[] = [];\n if (caseTypeId) {\n parts.push('CaseType');\n }\n if (dimId) {\n parts.push('Dim');\n }\n return parts.join('_');\n }, [dimId, caseTypeId]);\n\n return (\n <CrudPage<FormFields, CaseDbCol, CaseDbCol, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new column`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ColCrudCommand}\n defaultNewItem={defaultNewItem}\n defaultSortByField={(dimId ?? caseTypeId) ? 'rank' : 'case_type_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n fetchAllSelect={fetchAllSelect}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getOptimisticUpdateIntermediateItem}\n itemName={t`Column`}\n loadables={loadables}\n onFormChange={onFormChange}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.COLS}\n schema={schema}\n tableColumns={tableColumns}\n tableStoreStorageNamePostFix={tableStoreStorageNamePostFix}\n testIdAttributes={TestIdUtil.createAttributes('ColsAdminPage')}\n title={title}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -3,32 +3,32 @@ import { useConceptMapQuery as t, useConceptNameFactory as n, useConceptOptionsQ
|
|
|
3
3
|
import { useConceptRelationTypeOptionsQuery as i } from "../../dataHooks/useConceptRelationTypeQuery/index.js";
|
|
4
4
|
import { mixed as a, object as o, string as s } from "yup";
|
|
5
5
|
import { CaseDbCommandName as c, CaseDbConceptRelationType as l, CaseDbOntologyApi as u } from "@gen-epix/api-casedb";
|
|
6
|
-
import { FORM_FIELD_DEFINITION_TYPE as d } from "@gen-epix/ui-form/models/form";
|
|
6
|
+
import { FORM_FIELD_DEFINITION_TYPE as d } from "@gen-epix/ui-core-form/models/form";
|
|
7
7
|
import { useCallback as f, useMemo as p } from "react";
|
|
8
8
|
import { useTranslation as m } from "react-i18next";
|
|
9
9
|
import { jsx as h } from "react/jsx-runtime";
|
|
10
10
|
import { useArray as g } from "@gen-epix/ui-core/hooks/useArray";
|
|
11
|
-
import { TableUtil as _ } from "@gen-epix/ui/utils/TableUtil";
|
|
11
|
+
import { TableUtil as _ } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
12
12
|
import { TestIdUtil as v } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
13
|
-
import { CrudPage as y } from "@gen-epix/ui/pages/CrudPage";
|
|
13
|
+
import { CrudPage as y } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
14
14
|
//#region src/pages/ConceptRelationsAdminPage/ConceptRelationsAdminPage.tsx
|
|
15
15
|
var b = () => {
|
|
16
|
-
let { t: b } = m(), x = t(), S = r(), C = i(), w = g([
|
|
16
|
+
let { t: b } = m(), x = t(), S = r(), C = i(), w = n(), T = g([
|
|
17
17
|
S,
|
|
18
18
|
x,
|
|
19
19
|
C,
|
|
20
|
-
|
|
21
|
-
]),
|
|
20
|
+
w
|
|
21
|
+
]), E = f(async (e) => (await u.getInstance().conceptRelationsGetAll(null, null, { signal: e }))?.data, []), D = f(async (e) => await u.getInstance().conceptRelationsDeleteOne(e.id), []), O = f(async (e, t) => (await u.getInstance().conceptRelationsPutOne(t.id, {
|
|
22
22
|
id: t.id,
|
|
23
23
|
...e
|
|
24
|
-
})).data, []),
|
|
24
|
+
})).data, []), k = f(async (e) => (await u.getInstance().conceptRelationsPostOne(e)).data, []), A = f((e) => {
|
|
25
25
|
let t = x.map.get(e.from_concept_id), n = x.map.get(e.to_concept_id);
|
|
26
26
|
return t && n ? `${t.name} -> ${n.name}` : `${e.from_concept_id} -> ${e.to_concept_id}`;
|
|
27
|
-
}, [x.map]),
|
|
27
|
+
}, [x.map]), j = p(() => o().shape({
|
|
28
28
|
from_concept_id: s().uuid4().required(),
|
|
29
29
|
relation: a().required().oneOf(Object.values(l)),
|
|
30
30
|
to_concept_id: s().uuid4().required()
|
|
31
|
-
}), []),
|
|
31
|
+
}), []), M = p(() => [
|
|
32
32
|
{
|
|
33
33
|
definition: d.AUTOCOMPLETE,
|
|
34
34
|
label: b`From Concept`,
|
|
@@ -56,7 +56,7 @@ var b = () => {
|
|
|
56
56
|
C.isLoading,
|
|
57
57
|
C.options,
|
|
58
58
|
b
|
|
59
|
-
]),
|
|
59
|
+
]), N = p(() => [
|
|
60
60
|
_.createOptionsColumn({
|
|
61
61
|
id: "from_concept_id",
|
|
62
62
|
name: b`From Concept`,
|
|
@@ -79,22 +79,22 @@ var b = () => {
|
|
|
79
79
|
]);
|
|
80
80
|
return /* @__PURE__ */ h(y, {
|
|
81
81
|
createItemDialogTitle: b`Create new concept relation`,
|
|
82
|
-
createOne:
|
|
82
|
+
createOne: k,
|
|
83
83
|
crudCommandType: c.ConceptRelationCrudCommand,
|
|
84
84
|
defaultSortByField: "from_concept_id",
|
|
85
85
|
defaultSortDirection: "asc",
|
|
86
|
-
deleteOne:
|
|
87
|
-
fetchAll:
|
|
88
|
-
formFieldDefinitions:
|
|
89
|
-
getName:
|
|
86
|
+
deleteOne: D,
|
|
87
|
+
fetchAll: E,
|
|
88
|
+
formFieldDefinitions: M,
|
|
89
|
+
getName: A,
|
|
90
90
|
itemName: b`Concept relation`,
|
|
91
|
-
loadables:
|
|
91
|
+
loadables: T,
|
|
92
92
|
resourceQueryKeyBase: e.CONCEPT_RELATIONS,
|
|
93
|
-
schema:
|
|
94
|
-
tableColumns:
|
|
93
|
+
schema: j,
|
|
94
|
+
tableColumns: N,
|
|
95
95
|
testIdAttributes: v.createAttributes("ConceptRelationsAdminPage"),
|
|
96
96
|
title: b`Concept Relations`,
|
|
97
|
-
updateOne:
|
|
97
|
+
updateOne: O
|
|
98
98
|
});
|
|
99
99
|
};
|
|
100
100
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ConceptRelationsAdminPage/ConceptRelationsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n mixed,\n object,\n string,\n} from 'yup';\nimport type {\n CaseDbApiPermission,\n CaseDbConceptRelation,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbConceptRelationType,\n CaseDbOntologyApi,\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';\n\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport {\n useConceptMapQuery,\n useConceptNameFactory,\n useConceptOptionsQuery,\n} from '../../dataHooks/useConceptQuery';\nimport { useConceptRelationTypeOptionsQuery } from '../../dataHooks/useConceptRelationTypeQuery';\n\n\ntype FormFields = OmitWithMetaData<CaseDbConceptRelation, 'from_concept' | 'id' | 'to_concept'>;\n\nexport const ConceptRelationsAdminPage = () => {\n const { t } = useTranslation();\n\n const conceptMapQuery = useConceptMapQuery();\n const conceptOptionsQuery = useConceptOptionsQuery();\n const conceptRelationTypeOptionsQuery = useConceptRelationTypeOptionsQuery();\n const nameFactory = useConceptNameFactory();\n\n const loadables = useArray([conceptOptionsQuery, conceptMapQuery, conceptRelationTypeOptionsQuery, nameFactory]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOntologyApi.getInstance().conceptRelationsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbConceptRelation) => {\n return await CaseDbOntologyApi.getInstance().conceptRelationsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbConceptRelation) => {\n return (await CaseDbOntologyApi.getInstance().conceptRelationsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbOntologyApi.getInstance().conceptRelationsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbConceptRelation) => {\n const fromConcept = conceptMapQuery.map.get(item.from_concept_id);\n const toConcept = conceptMapQuery.map.get(item.to_concept_id);\n if (fromConcept && toConcept) {\n return `${fromConcept.name} -> ${toConcept.name}`;\n }\n return `${item.from_concept_id} -> ${item.to_concept_id}`;\n }, [conceptMapQuery.map]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n from_concept_id: string().uuid4().required(),\n relation: mixed<CaseDbConceptRelationType>().required().oneOf(Object.values(CaseDbConceptRelationType)),\n to_concept_id: string().uuid4().required(),\n });\n }, []);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`From Concept`,\n loading: conceptOptionsQuery.isLoading,\n name: 'from_concept_id',\n options: conceptOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`To Concept`,\n loading: conceptOptionsQuery.isLoading,\n name: 'to_concept_id',\n options: conceptOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Relation`,\n loading: conceptRelationTypeOptionsQuery.isLoading,\n name: 'relation',\n options: conceptRelationTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [conceptOptionsQuery.isLoading, conceptOptionsQuery.options, conceptRelationTypeOptionsQuery.isLoading, conceptRelationTypeOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbConceptRelation>[] => {\n return [\n TableUtil.createOptionsColumn<CaseDbConceptRelation>({ id: 'from_concept_id', name: t`From Concept`, options: conceptOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbConceptRelation>({ id: 'to_concept_id', name: t`To Concept`, options: conceptOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbConceptRelation>({ id: 'relation', name: t`Relation`, options: conceptRelationTypeOptionsQuery.options }),\n ];\n }, [conceptOptionsQuery.options, conceptRelationTypeOptionsQuery.options, t]);\n\n\n return (\n <CrudPage<FormFields, CaseDbConceptRelation, CaseDbConceptRelation, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new concept relation`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ConceptRelationCrudCommand}\n defaultSortByField={'from_concept_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Concept relation`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CONCEPT_RELATIONS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ConceptRelationsAdminPage')}\n title={t`Concept Relations`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAuCA,IAAa,UAAkC;CAC7C,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAkB,EAAmB,GACrC,IAAsB,EAAuB,GAC7C,IAAkC,EAAmC,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ConceptRelationsAdminPage/ConceptRelationsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n mixed,\n object,\n string,\n} from 'yup';\nimport type {\n CaseDbApiPermission,\n CaseDbConceptRelation,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbConceptRelationType,\n CaseDbOntologyApi,\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';\n\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport {\n useConceptMapQuery,\n useConceptNameFactory,\n useConceptOptionsQuery,\n} from '../../dataHooks/useConceptQuery';\nimport { useConceptRelationTypeOptionsQuery } from '../../dataHooks/useConceptRelationTypeQuery';\n\n\ntype FormFields = OmitWithMetaData<CaseDbConceptRelation, 'from_concept' | 'id' | 'to_concept'>;\n\nexport const ConceptRelationsAdminPage = () => {\n const { t } = useTranslation();\n\n const conceptMapQuery = useConceptMapQuery();\n const conceptOptionsQuery = useConceptOptionsQuery();\n const conceptRelationTypeOptionsQuery = useConceptRelationTypeOptionsQuery();\n const nameFactory = useConceptNameFactory();\n\n const loadables = useArray([conceptOptionsQuery, conceptMapQuery, conceptRelationTypeOptionsQuery, nameFactory]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOntologyApi.getInstance().conceptRelationsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbConceptRelation) => {\n return await CaseDbOntologyApi.getInstance().conceptRelationsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbConceptRelation) => {\n return (await CaseDbOntologyApi.getInstance().conceptRelationsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbOntologyApi.getInstance().conceptRelationsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbConceptRelation) => {\n const fromConcept = conceptMapQuery.map.get(item.from_concept_id);\n const toConcept = conceptMapQuery.map.get(item.to_concept_id);\n if (fromConcept && toConcept) {\n return `${fromConcept.name} -> ${toConcept.name}`;\n }\n return `${item.from_concept_id} -> ${item.to_concept_id}`;\n }, [conceptMapQuery.map]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n from_concept_id: string().uuid4().required(),\n relation: mixed<CaseDbConceptRelationType>().required().oneOf(Object.values(CaseDbConceptRelationType)),\n to_concept_id: string().uuid4().required(),\n });\n }, []);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`From Concept`,\n loading: conceptOptionsQuery.isLoading,\n name: 'from_concept_id',\n options: conceptOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`To Concept`,\n loading: conceptOptionsQuery.isLoading,\n name: 'to_concept_id',\n options: conceptOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Relation`,\n loading: conceptRelationTypeOptionsQuery.isLoading,\n name: 'relation',\n options: conceptRelationTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [conceptOptionsQuery.isLoading, conceptOptionsQuery.options, conceptRelationTypeOptionsQuery.isLoading, conceptRelationTypeOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbConceptRelation>[] => {\n return [\n TableUtil.createOptionsColumn<CaseDbConceptRelation>({ id: 'from_concept_id', name: t`From Concept`, options: conceptOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbConceptRelation>({ id: 'to_concept_id', name: t`To Concept`, options: conceptOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbConceptRelation>({ id: 'relation', name: t`Relation`, options: conceptRelationTypeOptionsQuery.options }),\n ];\n }, [conceptOptionsQuery.options, conceptRelationTypeOptionsQuery.options, t]);\n\n\n return (\n <CrudPage<FormFields, CaseDbConceptRelation, CaseDbConceptRelation, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new concept relation`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ConceptRelationCrudCommand}\n defaultSortByField={'from_concept_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Concept relation`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CONCEPT_RELATIONS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ConceptRelationsAdminPage')}\n title={t`Concept Relations`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAuCA,IAAa,UAAkC;CAC7C,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAkB,EAAmB,GACrC,IAAsB,EAAuB,GAC7C,IAAkC,EAAmC,GACrE,IAAc,EAAsB,GAEpC,IAAY,EAAS;EAAC;EAAqB;EAAiB;EAAiC;CAAW,CAAC,GAEzG,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAkB,YAAY,CAAC,CAAC,uBAAuB,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MAC9F,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAkB,YAAY,CAAC,CAAC,0BAA0B,EAAK,EAAE,GAC7E,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OAClD,MAAM,EAAkB,YAAY,CAAC,CAAC,uBAAuB,EAAK,IAAI;EAAE,IAAI,EAAK;EAAI,GAAG;CAAU,CAAC,EAAA,CAAG,MAC7G,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,OAC3B,MAAM,EAAkB,YAAY,CAAC,CAAC,wBAAwB,CAAS,EAAA,CAAG,MACjF,CAAC,CAAC,GAEC,IAAU,GAAa,MAAgC;EAC3D,IAAM,IAAc,EAAgB,IAAI,IAAI,EAAK,eAAe,GAC1D,IAAY,EAAgB,IAAI,IAAI,EAAK,aAAa;EAI5D,OAHI,KAAe,IACV,GAAG,EAAY,KAAK,MAAM,EAAU,SAEtC,GAAG,EAAK,gBAAgB,MAAM,EAAK;CAC5C,GAAG,CAAC,EAAgB,GAAG,CAAC,GAElB,IAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,iBAAiB,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;EAC3C,UAAU,EAAiC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,OAAO,OAAO,CAAyB,CAAC;EACtG,eAAe,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;CAC3C,CAAC,GACA,CAAC,CAAC,GAEC,IAAuB,QACpB;EACL;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAAoB;GAC7B,MAAM;GACN,SAAS,EAAoB;EAC/B;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAAoB;GAC7B,MAAM;GACN,SAAS,EAAoB;EAC/B;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAAgC;GACzC,MAAM;GACN,SAAS,EAAgC;EAC3C;CACF,GACC;EAAC,EAAoB;EAAW,EAAoB;EAAS,EAAgC;EAAW,EAAgC;EAAS;CAAC,CAAC,GAEhJ,IAAe,QACZ;EACL,EAAU,oBAA2C;GAAE,IAAI;GAAmB,MAAM,CAAC;GAAgB,SAAS,EAAoB;EAAQ,CAAC;EAC3I,EAAU,oBAA2C;GAAE,IAAI;GAAiB,MAAM,CAAC;GAAc,SAAS,EAAoB;EAAQ,CAAC;EACvI,EAAU,oBAA2C;GAAE,IAAI;GAAY,MAAM,CAAC;GAAY,SAAS,EAAgC;EAAQ,CAAC;CAC9I,GACC;EAAC,EAAoB;EAAS,EAAgC;EAAS;CAAC,CAAC;CAG5E,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,2BAA2B;EACzE,OAAO,CAAC;EACG;CACZ,CAAA;AAEL"}
|
|
@@ -3,16 +3,16 @@ import { n as t } from "../../_chunks/useUnit.js";
|
|
|
3
3
|
import { useConceptSetTypeOptionsQuery as n } from "../../dataHooks/useConceptSetTypeQuery/index.js";
|
|
4
4
|
import { mixed as r, object as i } from "yup";
|
|
5
5
|
import { CaseDbCommandName as a, CaseDbConceptSetType as o, CaseDbOntologyApi as s, CaseDbPermissionType as c, CaseDbUnit as l } from "@gen-epix/api-casedb";
|
|
6
|
-
import { FORM_FIELD_DEFINITION_TYPE as u } from "@gen-epix/ui-form/models/form";
|
|
6
|
+
import { FORM_FIELD_DEFINITION_TYPE as u } from "@gen-epix/ui-core-form/models/form";
|
|
7
7
|
import { useCallback as d, useMemo as f } from "react";
|
|
8
8
|
import { useTranslation as p } from "react-i18next";
|
|
9
9
|
import { jsx as m } from "react/jsx-runtime";
|
|
10
10
|
import { useArray as h } from "@gen-epix/ui-core/hooks/useArray";
|
|
11
|
-
import { TableUtil as g } from "@gen-epix/ui/utils/TableUtil";
|
|
11
|
+
import { TableUtil as g } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
12
12
|
import { TestIdUtil as _ } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
13
|
-
import { SchemaUtil as v } from "@gen-epix/ui-form/utils/SchemaUtil";
|
|
14
|
-
import { AuthorizationService as y } from "@gen-epix/ui/classes/services/AuthorizationService";
|
|
15
|
-
import { CrudPage as b } from "@gen-epix/ui/pages/CrudPage";
|
|
13
|
+
import { SchemaUtil as v } from "@gen-epix/ui-core-form/utils/SchemaUtil";
|
|
14
|
+
import { AuthorizationService as y } from "@gen-epix/ui-client-common/classes/services/AuthorizationService";
|
|
15
|
+
import { CrudPage as b } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
16
16
|
//#region src/pages/ConceptSetsAdminPage/ConceptSetsAdminPage.tsx
|
|
17
17
|
var x = () => {
|
|
18
18
|
let x = t(), S = n(), C = h([x, S]), { t: w } = p(), T = d(async (e) => (await s.getInstance().conceptSetsGetAll(null, null, { signal: e }))?.data, []), E = d(async (e) => await s.getInstance().conceptSetsDeleteOne(e.id), []), D = d(async (e, t) => (await s.getInstance().conceptSetsPutOne(t.id, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ConceptSetsAdminPage/ConceptSetsAdminPage.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 CaseDbConceptSet,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbConceptSetType,\n CaseDbOntologyApi,\n CaseDbPermissionType,\n CaseDbUnit,\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 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';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { UseFormReturn } from 'react-hook-form';\n\nimport { useUnitOptionsQuery } from '../../dataHooks/useUnitQuery/useUnit';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { useConceptSetTypeOptionsQuery } from '../../dataHooks/useConceptSetTypeQuery';\n\n\ntype FormFields = OmitWithMetaData<CaseDbConceptSet>;\n\nexport const ConceptSetsAdminPage = () => {\n const unitOptionsQuery = useUnitOptionsQuery();\n const conceptSetTypeOptionsQuery = useConceptSetTypeOptionsQuery();\n\n const loadables = useArray([unitOptionsQuery, conceptSetTypeOptionsQuery]);\n const { t } = useTranslation();\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOntologyApi.getInstance().conceptSetsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbConceptSet) => {\n return await CaseDbOntologyApi.getInstance().conceptSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbConceptSet) => {\n return (await CaseDbOntologyApi.getInstance().conceptSetsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbOntologyApi.getInstance().conceptSetsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbConceptSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n type: mixed<CaseDbConceptSetType>().required().oneOf(Object.values(CaseDbConceptSetType)),\n unit: mixed<CaseDbUnit>().when('type', {\n is: (type: CaseDbConceptSetType) => type === CaseDbConceptSetType.INTERVAL,\n otherwise: () => mixed<CaseDbUnit>().nullable(),\n then: () => mixed<CaseDbUnit>().required().oneOf(Object.values(CaseDbUnit)),\n }),\n });\n }, []);\n\n const onFormChange = useCallback((_item: CaseDbConceptSet, values: FormFields, formMethods: UseFormReturn<FormFields>) => {\n if (values.type !== CaseDbConceptSetType.INTERVAL) {\n formMethods.setValue('unit', null);\n }\n }, []);\n\n const formFieldDefinitions = useCallback((item: CaseDbConceptSet, values: FormFields): FormFieldDefinition<FormFields>[] => {\n const type = values?.type ?? item?.type ?? null;\n\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`Code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Type`,\n loading: conceptSetTypeOptionsQuery.isLoading,\n name: 'type',\n options: conceptSetTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: type !== CaseDbConceptSetType.INTERVAL,\n label: t`Unit`,\n loading: unitOptionsQuery.isLoading,\n name: 'unit',\n options: unitOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [conceptSetTypeOptionsQuery.isLoading, conceptSetTypeOptionsQuery.options, t, unitOptionsQuery.isLoading, unitOptionsQuery.options]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbConceptSet>[] => {\n return [\n TableUtil.createTextColumn<CaseDbConceptSet>({ id: 'name', name: t`Name` }),\n TableUtil.createOptionsColumn<CaseDbConceptSet>({ id: 'type', name: t`Type`, options: conceptSetTypeOptionsQuery.options }),\n ];\n }, [conceptSetTypeOptionsQuery.options, t]);\n\n const subPages = useMemo<CrudPageSubPage<CaseDbConceptSet>[]>(() => {\n if (!AuthorizationService.getInstance().doesUserHavePermission<CaseDbApiPermission>([\n { command_name: CaseDbCommandName.ConceptCrudCommand, permission_type: CaseDbPermissionType.READ },\n ])) {\n return [];\n }\n\n return [\n {\n getPathName: (item: CaseDbConceptSet) => `/management/concept-sets/${item.id}/concepts`,\n label: t`Manage concepts`,\n } satisfies CrudPageSubPage<CaseDbConceptSet>,\n ];\n }, [t]);\n\n return (\n <CrudPage<FormFields, CaseDbConceptSet, CaseDbConceptSet, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new concept set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ConceptSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Concept set`}\n loadables={loadables}\n onFormChange={onFormChange}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CONCEPT_SETS}\n schema={schema}\n subPages={subPages}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ConceptSetsAdminPage')}\n title={t`Concepts`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ConceptSetsAdminPage/ConceptSetsAdminPage.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 CaseDbConceptSet,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbConceptSetType,\n CaseDbOntologyApi,\n CaseDbPermissionType,\n CaseDbUnit,\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 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';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { UseFormReturn } from 'react-hook-form';\n\nimport { useUnitOptionsQuery } from '../../dataHooks/useUnitQuery/useUnit';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { useConceptSetTypeOptionsQuery } from '../../dataHooks/useConceptSetTypeQuery';\n\n\ntype FormFields = OmitWithMetaData<CaseDbConceptSet>;\n\nexport const ConceptSetsAdminPage = () => {\n const unitOptionsQuery = useUnitOptionsQuery();\n const conceptSetTypeOptionsQuery = useConceptSetTypeOptionsQuery();\n\n const loadables = useArray([unitOptionsQuery, conceptSetTypeOptionsQuery]);\n const { t } = useTranslation();\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOntologyApi.getInstance().conceptSetsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbConceptSet) => {\n return await CaseDbOntologyApi.getInstance().conceptSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbConceptSet) => {\n return (await CaseDbOntologyApi.getInstance().conceptSetsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbOntologyApi.getInstance().conceptSetsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbConceptSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n type: mixed<CaseDbConceptSetType>().required().oneOf(Object.values(CaseDbConceptSetType)),\n unit: mixed<CaseDbUnit>().when('type', {\n is: (type: CaseDbConceptSetType) => type === CaseDbConceptSetType.INTERVAL,\n otherwise: () => mixed<CaseDbUnit>().nullable(),\n then: () => mixed<CaseDbUnit>().required().oneOf(Object.values(CaseDbUnit)),\n }),\n });\n }, []);\n\n const onFormChange = useCallback((_item: CaseDbConceptSet, values: FormFields, formMethods: UseFormReturn<FormFields>) => {\n if (values.type !== CaseDbConceptSetType.INTERVAL) {\n formMethods.setValue('unit', null);\n }\n }, []);\n\n const formFieldDefinitions = useCallback((item: CaseDbConceptSet, values: FormFields): FormFieldDefinition<FormFields>[] => {\n const type = values?.type ?? item?.type ?? null;\n\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`Code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Type`,\n loading: conceptSetTypeOptionsQuery.isLoading,\n name: 'type',\n options: conceptSetTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: type !== CaseDbConceptSetType.INTERVAL,\n label: t`Unit`,\n loading: unitOptionsQuery.isLoading,\n name: 'unit',\n options: unitOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [conceptSetTypeOptionsQuery.isLoading, conceptSetTypeOptionsQuery.options, t, unitOptionsQuery.isLoading, unitOptionsQuery.options]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbConceptSet>[] => {\n return [\n TableUtil.createTextColumn<CaseDbConceptSet>({ id: 'name', name: t`Name` }),\n TableUtil.createOptionsColumn<CaseDbConceptSet>({ id: 'type', name: t`Type`, options: conceptSetTypeOptionsQuery.options }),\n ];\n }, [conceptSetTypeOptionsQuery.options, t]);\n\n const subPages = useMemo<CrudPageSubPage<CaseDbConceptSet>[]>(() => {\n if (!AuthorizationService.getInstance().doesUserHavePermission<CaseDbApiPermission>([\n { command_name: CaseDbCommandName.ConceptCrudCommand, permission_type: CaseDbPermissionType.READ },\n ])) {\n return [];\n }\n\n return [\n {\n getPathName: (item: CaseDbConceptSet) => `/management/concept-sets/${item.id}/concepts`,\n label: t`Manage concepts`,\n } satisfies CrudPageSubPage<CaseDbConceptSet>,\n ];\n }, [t]);\n\n return (\n <CrudPage<FormFields, CaseDbConceptSet, CaseDbConceptSet, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new concept set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ConceptSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Concept set`}\n loadables={loadables}\n onFormChange={onFormChange}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CONCEPT_SETS}\n schema={schema}\n subPages={subPages}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ConceptSetsAdminPage')}\n title={t`Concepts`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { CASEDB_QUERY_KEY as e } from "../../constants/query.js";
|
|
2
|
-
import { t } from "../../_chunks/chunk-
|
|
2
|
+
import { t } from "../../_chunks/chunk-BV7QT456.js";
|
|
3
3
|
import { object as n } from "yup";
|
|
4
4
|
import { CaseDbCommandName as r, CaseDbOntologyApi as i } from "@gen-epix/api-casedb";
|
|
5
|
-
import { FORM_FIELD_DEFINITION_TYPE as a } from "@gen-epix/ui-form/models/form";
|
|
5
|
+
import { FORM_FIELD_DEFINITION_TYPE as a } from "@gen-epix/ui-core-form/models/form";
|
|
6
6
|
import { useCallback as o, useMemo as s } from "react";
|
|
7
7
|
import { useTranslation as c } from "react-i18next";
|
|
8
8
|
import { jsx as l } from "react/jsx-runtime";
|
|
9
|
-
import { TableUtil as u } from "@gen-epix/ui/utils/TableUtil";
|
|
9
|
+
import { TableUtil as u } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
10
10
|
import { TestIdUtil as d } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
11
|
-
import { SchemaUtil as f } from "@gen-epix/ui-form/utils/SchemaUtil";
|
|
12
|
-
import { CrudPage as p } from "@gen-epix/ui/pages/CrudPage";
|
|
11
|
+
import { SchemaUtil as f } from "@gen-epix/ui-core-form/utils/SchemaUtil";
|
|
12
|
+
import { CrudPage as p } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
13
13
|
//#region src/pages/ConceptsAdminPage/ConceptsAdminPage.tsx
|
|
14
14
|
var m = () => {
|
|
15
15
|
let { conceptSetId: m } = t(), { t: h } = c(), g = o(async (e) => (await i.getInstance().conceptsGetAll(null, null, { signal: e }))?.data, []), _ = o((e) => e.filter((e) => e.concept_set_id === m), [m]), v = o(async (e) => await i.getInstance().conceptsDeleteOne(e.id), []), y = o(async (e, t) => (await i.getInstance().conceptsPutOne(t.id, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ConceptsAdminPage/ConceptsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { object } from 'yup';\nimport { useParams } from 'react-router-dom';\nimport type {\n CaseDbApiPermission,\n CaseDbConcept,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbOntologyApi,\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 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';\n\n\ntype FormFields = OmitWithMetaData<CaseDbConcept, 'concept_set_id' | 'concept_set' | 'props'>;\n\nexport const ConceptsAdminPage = () => {\n const { conceptSetId } = useParams();\n const { t } = useTranslation();\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOntologyApi.getInstance().conceptsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const fetchAllSelect = useCallback((concepts: CaseDbConcept[]) => {\n return concepts.filter((concept) => concept.concept_set_id === conceptSetId);\n }, [conceptSetId]);\n\n const deleteOne = useCallback(async (item: CaseDbConcept) => {\n return await CaseDbOntologyApi.getInstance().conceptsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbConcept) => {\n const updatedItem = (await CaseDbOntologyApi.getInstance().conceptsPutOne(item.id, {\n ...variables,\n concept_set_id: conceptSetId,\n id: item.id,\n })).data;\n return updatedItem;\n }, [conceptSetId]);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbOntologyApi.getInstance().conceptsPostOne({\n ...variables,\n concept_set_id: conceptSetId,\n })).data;\n }, [conceptSetId]);\n\n const getName = useCallback((item: FormFields) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n code: SchemaUtil.code,\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.TEXTFIELD,\n label: t`Rank`,\n name: 'rank',\n type: 'number',\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`Code`,\n name: 'code',\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: 4,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbConcept>[] => {\n return [\n TableUtil.createNumberColumn<CaseDbConcept>({ flex: 0.25, id: 'rank', name: t`Rank` }),\n TableUtil.createTextColumn<CaseDbConcept>({ id: 'name', name: t`Name` }),\n TableUtil.createTextColumn<CaseDbConcept>({ id: 'code', name: t`Code` }),\n ];\n }, [t]);\n\n const getOptimisticUpdateIntermediateItem = useCallback((variables: FormFields, previousItem: CaseDbConcept): CaseDbConcept => {\n return {\n concept_set_id: previousItem.concept_set_id,\n id: previousItem.id,\n ...variables,\n };\n }, []);\n\n return (\n <CrudPage<FormFields, CaseDbConcept, CaseDbConcept, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new concept`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ConceptCrudCommand}\n defaultSortByField={'rank'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n fetchAllSelect={fetchAllSelect}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getOptimisticUpdateIntermediateItem}\n itemName={t`Concept`}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CONCEPTS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ConceptsAdminPage')}\n title={t`Concepts`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;AA6BA,IAAa,UAA0B;CACrC,IAAM,EAAE,oBAAiB,EAAU,GAC7B,EAAE,SAAM,EAAe,GAEvB,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAkB,YAAY,CAAC,CAAC,eAAe,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MACtF,CAAC,CAAC,GAEC,IAAiB,GAAa,MAC3B,EAAS,QAAQ,MAAY,EAAQ,mBAAmB,CAAY,GAC1E,CAAC,CAAY,CAAC,GAEX,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAkB,YAAY,CAAC,CAAC,kBAAkB,EAAK,EAAE,GACrE,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OACrC,MAAM,EAAkB,YAAY,CAAC,CAAC,eAAe,EAAK,IAAI;EACjF,GAAG;EACH,gBAAgB;EAChB,IAAI,EAAK;CACX,CAAC,EAAA,CAAG,MAEH,CAAC,CAAY,CAAC,GAEX,IAAY,EAAY,OAAO,OAC3B,MAAM,EAAkB,YAAY,CAAC,CAAC,gBAAgB;EAC5D,GAAG;EACH,gBAAgB;CAClB,CAAC,EAAA,CAAG,MACH,CAAC,CAAY,CAAC,GAEX,IAAU,GAAa,MACpB,EAAK,MACX,CAAC,CAAC,GAEC,IAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,MAAM,EAAW;EACjB,aAAa,EAAW;EACxB,MAAM,EAAW;EACjB,MAAM,EAAW;CACnB,CAAC,GACA,CAAC,CAAC,GAEC,IAAuB,QACpB;EACL;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;GACN,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,WAAW;GACX,MAAM;GACN,MAAM;EACR;CACF,GACC,CAAC,CAAC,CAAC,GAEA,IAAe,QACZ;EACL,EAAU,mBAAkC;GAAE,MAAM;GAAM,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACrF,EAAU,iBAAgC;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACvE,EAAU,iBAAgC;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;CACzE,GACC,CAAC,CAAC,CAAC,GAEA,IAAsC,GAAa,GAAuB,OACvE;EACL,gBAAgB,EAAa;EAC7B,IAAI,EAAa;EACjB,GAAG;CACL,IACC,CAAC,CAAC;CAEL,OACE,kBAAC,GAAD;EACE,uBAAuB,CAAC;EACb;EACX,iBAAiB,EAAkB;EACnC,oBAAoB;EACpB,sBAAsB;EACX;EACD;EACM;EACM;EACb;EAC4B;EACrC,UAAU,CAAC;EACX,sBAAsB,EAAiB;EAC/B;EACM;EACd,kBAAkB,EAAW,iBAAiB,mBAAmB;EACjE,OAAO,CAAC;EACG;CACZ,CAAA;AAEL"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ConceptsAdminPage/ConceptsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { object } from 'yup';\nimport { useParams } from 'react-router-dom';\nimport type {\n CaseDbApiPermission,\n CaseDbConcept,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbOntologyApi,\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 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';\n\n\ntype FormFields = OmitWithMetaData<CaseDbConcept, 'concept_set_id' | 'concept_set' | 'props'>;\n\nexport const ConceptsAdminPage = () => {\n const { conceptSetId } = useParams();\n const { t } = useTranslation();\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOntologyApi.getInstance().conceptsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const fetchAllSelect = useCallback((concepts: CaseDbConcept[]) => {\n return concepts.filter((concept) => concept.concept_set_id === conceptSetId);\n }, [conceptSetId]);\n\n const deleteOne = useCallback(async (item: CaseDbConcept) => {\n return await CaseDbOntologyApi.getInstance().conceptsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbConcept) => {\n const updatedItem = (await CaseDbOntologyApi.getInstance().conceptsPutOne(item.id, {\n ...variables,\n concept_set_id: conceptSetId,\n id: item.id,\n })).data;\n return updatedItem;\n }, [conceptSetId]);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbOntologyApi.getInstance().conceptsPostOne({\n ...variables,\n concept_set_id: conceptSetId,\n })).data;\n }, [conceptSetId]);\n\n const getName = useCallback((item: FormFields) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n code: SchemaUtil.code,\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.TEXTFIELD,\n label: t`Rank`,\n name: 'rank',\n type: 'number',\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`Code`,\n name: 'code',\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: 4,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbConcept>[] => {\n return [\n TableUtil.createNumberColumn<CaseDbConcept>({ flex: 0.25, id: 'rank', name: t`Rank` }),\n TableUtil.createTextColumn<CaseDbConcept>({ id: 'name', name: t`Name` }),\n TableUtil.createTextColumn<CaseDbConcept>({ id: 'code', name: t`Code` }),\n ];\n }, [t]);\n\n const getOptimisticUpdateIntermediateItem = useCallback((variables: FormFields, previousItem: CaseDbConcept): CaseDbConcept => {\n return {\n concept_set_id: previousItem.concept_set_id,\n id: previousItem.id,\n ...variables,\n };\n }, []);\n\n return (\n <CrudPage<FormFields, CaseDbConcept, CaseDbConcept, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new concept`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ConceptCrudCommand}\n defaultSortByField={'rank'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n fetchAllSelect={fetchAllSelect}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getOptimisticUpdateIntermediateItem}\n itemName={t`Concept`}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.CONCEPTS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('ConceptsAdminPage')}\n title={t`Concepts`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;AA6BA,IAAa,UAA0B;CACrC,IAAM,EAAE,oBAAiB,EAAU,GAC7B,EAAE,SAAM,EAAe,GAEvB,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAkB,YAAY,CAAC,CAAC,eAAe,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MACtF,CAAC,CAAC,GAEC,IAAiB,GAAa,MAC3B,EAAS,QAAQ,MAAY,EAAQ,mBAAmB,CAAY,GAC1E,CAAC,CAAY,CAAC,GAEX,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAkB,YAAY,CAAC,CAAC,kBAAkB,EAAK,EAAE,GACrE,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OACrC,MAAM,EAAkB,YAAY,CAAC,CAAC,eAAe,EAAK,IAAI;EACjF,GAAG;EACH,gBAAgB;EAChB,IAAI,EAAK;CACX,CAAC,EAAA,CAAG,MAEH,CAAC,CAAY,CAAC,GAEX,IAAY,EAAY,OAAO,OAC3B,MAAM,EAAkB,YAAY,CAAC,CAAC,gBAAgB;EAC5D,GAAG;EACH,gBAAgB;CAClB,CAAC,EAAA,CAAG,MACH,CAAC,CAAY,CAAC,GAEX,IAAU,GAAa,MACpB,EAAK,MACX,CAAC,CAAC,GAEC,IAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,MAAM,EAAW;EACjB,aAAa,EAAW;EACxB,MAAM,EAAW;EACjB,MAAM,EAAW;CACnB,CAAC,GACA,CAAC,CAAC,GAEC,IAAuB,QACpB;EACL;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;GACN,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,WAAW;GACX,MAAM;GACN,MAAM;EACR;CACF,GACC,CAAC,CAAC,CAAC,GAEA,IAAe,QACZ;EACL,EAAU,mBAAkC;GAAE,MAAM;GAAM,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACrF,EAAU,iBAAgC;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;EACvE,EAAU,iBAAgC;GAAE,IAAI;GAAQ,MAAM,CAAC;EAAO,CAAC;CACzE,GACC,CAAC,CAAC,CAAC,GAEA,IAAsC,GAAa,GAAuB,OACvE;EACL,gBAAgB,EAAa;EAC7B,IAAI,EAAa;EACjB,GAAG;CACL,IACC,CAAC,CAAC;CAEL,OACE,kBAAC,GAAD;EACE,uBAAuB,CAAC;EACb;EACX,iBAAiB,EAAkB;EACnC,oBAAoB;EACpB,sBAAsB;EACX;EACD;EACM;EACM;EACb;EAC4B;EACrC,UAAU,CAAC;EACX,sBAAsB,EAAiB;EAC/B;EACM;EACd,kBAAkB,EAAW,iBAAiB,mBAAmB;EACjE,OAAO,CAAC;EACG;CACZ,CAAA;AAEL"}
|
|
@@ -3,15 +3,15 @@ import { useDataCollectionOptionsQuery as t } from "../../dataHooks/useDataColle
|
|
|
3
3
|
import { useDataCollectionSetMembersQuery as n } from "../../dataHooks/useDataCollectionSetMembersQuery/index.js";
|
|
4
4
|
import { array as r, object as i, string as a } from "yup";
|
|
5
5
|
import { CaseDbCommandName as o, CaseDbOrganizationApi as s } from "@gen-epix/api-casedb";
|
|
6
|
-
import { FORM_FIELD_DEFINITION_TYPE as c } from "@gen-epix/ui-form/models/form";
|
|
6
|
+
import { FORM_FIELD_DEFINITION_TYPE as c } from "@gen-epix/ui-core-form/models/form";
|
|
7
7
|
import { useCallback as l, useMemo as u } from "react";
|
|
8
8
|
import { useTranslation as d } from "react-i18next";
|
|
9
9
|
import { jsx as f } from "react/jsx-runtime";
|
|
10
10
|
import { useArray as p } from "@gen-epix/ui-core/hooks/useArray";
|
|
11
|
-
import { TableUtil as m } from "@gen-epix/ui/utils/TableUtil";
|
|
11
|
+
import { TableUtil as m } from "@gen-epix/ui-client-common/utils/TableUtil";
|
|
12
12
|
import { TestIdUtil as h } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
13
|
-
import { SchemaUtil as g } from "@gen-epix/ui-form/utils/SchemaUtil";
|
|
14
|
-
import { CrudPage as _ } from "@gen-epix/ui/pages/CrudPage";
|
|
13
|
+
import { SchemaUtil as g } from "@gen-epix/ui-core-form/utils/SchemaUtil";
|
|
14
|
+
import { CrudPage as _ } from "@gen-epix/ui-client-common/pages/CrudPage";
|
|
15
15
|
//#region src/pages/DataCollectionSetsAdminPage/DataCollectionSetsAdminPage.tsx
|
|
16
16
|
var v = () => {
|
|
17
17
|
let { t: v } = d(), y = n(), b = t(), x = p([y, b]), S = l(async (e) => (await s.getInstance().dataCollectionSetsGetAll(null, null, { signal: e }))?.data, []), C = l(async (e) => await s.getInstance().dataCollectionSetsDeleteOne(e.id), []), w = l(async (e, t) => (await s.getInstance().dataCollectionSetsPutDataCollections(t.id, { data_collection_set_members: e.dataCollectionIds.map((e) => ({
|
|
@@ -65,15 +65,15 @@ var v = () => {
|
|
|
65
65
|
type: "number",
|
|
66
66
|
valueGetter: (e) => e.row.dataCollectionIds.length,
|
|
67
67
|
widthFlex: .5
|
|
68
|
-
}], [b.options.length, v])
|
|
68
|
+
}], [b.options.length, v]), A = l((e) => !e || !y.data ? [] : e.map((e) => {
|
|
69
|
+
let t = y.data.filter((t) => t.data_collection_set_id === e.id).map((e) => e.data_collection_id);
|
|
70
|
+
return {
|
|
71
|
+
...e,
|
|
72
|
+
dataCollectionIds: t
|
|
73
|
+
};
|
|
74
|
+
}), [y.data]);
|
|
69
75
|
return /* @__PURE__ */ f(_, {
|
|
70
|
-
convertToTableData:
|
|
71
|
-
let t = y.data.filter((t) => t.data_collection_set_id === e.id).map((e) => e.data_collection_id);
|
|
72
|
-
return {
|
|
73
|
-
...e,
|
|
74
|
-
dataCollectionIds: t
|
|
75
|
-
};
|
|
76
|
-
}), [y.data]),
|
|
76
|
+
convertToTableData: A,
|
|
77
77
|
createItemDialogTitle: v`Create new data collection set`,
|
|
78
78
|
createOne: T,
|
|
79
79
|
crudCommandType: o.DataCollectionSetCrudCommand,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/DataCollectionSetsAdminPage/DataCollectionSetsAdminPage.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 type {\n CaseDbApiPermission,\n CaseDbDataCollectionSet,\n CaseDbDataCollectionSetMember,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbOrganizationApi,\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 { useDataCollectionSetMembersQuery } from '../../dataHooks/useDataCollectionSetMembersQuery';\nimport { useDataCollectionOptionsQuery } from '../../dataHooks/useDataCollectionsQuery';\n\n\ntype FormFields = OmitWithMetaData<TableData>;\n\ntype TableData = { dataCollectionIds: string[] } & CaseDbDataCollectionSet;\n\nexport const DataCollectionSetsAdminPage = () => {\n const { t } = useTranslation();\n\n const dataCollectionSetMembersQuery = useDataCollectionSetMembersQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n\n const loadables = useArray([dataCollectionSetMembersQuery, dataCollectionOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOrganizationApi.getInstance().dataCollectionSetsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbDataCollectionSet) => {\n return await CaseDbOrganizationApi.getInstance().dataCollectionSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbDataCollectionSet) => {\n await CaseDbOrganizationApi.getInstance().dataCollectionSetsPutDataCollections(item.id, {\n data_collection_set_members: variables.dataCollectionIds.map<CaseDbDataCollectionSetMember>(data_collection_id => ({\n data_collection_id,\n data_collection_set_id: item.id,\n })),\n });\n return (await CaseDbOrganizationApi.getInstance().dataCollectionSetsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n const resultItem = (await CaseDbOrganizationApi.getInstance().dataCollectionSetsPostOne(variables)).data;\n await CaseDbOrganizationApi.getInstance().dataCollectionSetsPutDataCollections(resultItem.id, {\n data_collection_set_members: variables.dataCollectionIds.map<CaseDbDataCollectionSetMember>(data_collection_id => ({\n data_collection_id,\n data_collection_set_id: resultItem.id,\n })),\n });\n return resultItem;\n }, []);\n\n const getName = useCallback((item: CaseDbDataCollectionSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n dataCollectionIds: 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.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST,\n label: t`Columns`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'dataCollectionIds',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [dataCollectionOptionsQuery.isLoading, dataCollectionOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<TableData>[] => {\n return [\n TableUtil.createTextColumn<TableData>({ advancedSort: true, id: 'name', name: t`Name` }),\n {\n displayValueGetter: (item) => `${item.row.dataCollectionIds.length} / ${dataCollectionOptionsQuery.options.length}`,\n headerName: t`Data collections`,\n id: 'numDataCollections',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (item) => item.row.dataCollectionIds.length,\n widthFlex: 0.5,\n },\n ];\n }, [dataCollectionOptionsQuery.options.length, t]);\n\n const convertToTableData = useCallback((items: CaseDbDataCollectionSet[]) => {\n if (!items || !dataCollectionSetMembersQuery.data) {\n return [];\n }\n return items.map<TableData>((item) => {\n const dataCollectionIds = dataCollectionSetMembersQuery.data.filter(member => member.data_collection_set_id === item.id).map(member => member.data_collection_id);\n return {\n ...item,\n dataCollectionIds,\n } satisfies TableData;\n });\n }, [dataCollectionSetMembersQuery.data]);\n\n return (\n <CrudPage<FormFields, CaseDbDataCollectionSet, TableData, CASEDB_QUERY_KEY, CaseDbApiPermission>\n convertToTableData={convertToTableData}\n createItemDialogTitle={t`Create new data collection set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.DataCollectionSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Data collection set`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.DATA_COLLECTION_SETS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('DataCollectionSetsAdminPage')}\n title={t`Data collection sets`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAsCA,IAAa,UAAoC;CAC/C,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAgC,EAAiC,GACjE,IAA6B,EAA8B,GAE3D,IAAY,EAAS,CAAC,GAA+B,CAA0B,CAAC,GAEhF,IAAW,EAAY,OAAO,OAC1B,MAAM,EAAsB,YAAY,CAAC,CAAC,yBAAyB,MAAM,MAAM,EAAE,UAAO,CAAC,EAAA,EAAI,MACpG,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAC5B,MAAM,EAAsB,YAAY,CAAC,CAAC,4BAA4B,EAAK,EAAE,GACnF,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,GAAuB,OAC1D,MAAM,EAAsB,YAAY,CAAC,CAAC,qCAAqC,EAAK,IAAI,EACtF,6BAA6B,EAAU,kBAAkB,KAAmC,OAAuB;EACjH;EACA,wBAAwB,EAAK;CAC/B,EAAE,EACJ,CAAC,IACO,MAAM,EAAsB,YAAY,CAAC,CAAC,yBAAyB,EAAK,IAAI;EAAE,IAAI,EAAK;EAAI,GAAG;CAAU,CAAC,EAAA,CAAG,OACnH,CAAC,CAAC,GAEC,IAAY,EAAY,OAAO,MAA0B;EAC7D,IAAM,KAAc,MAAM,EAAsB,YAAY,CAAC,CAAC,0BAA0B,CAAS,EAAA,CAAG;EAOpG,OANA,MAAM,EAAsB,YAAY,CAAC,CAAC,qCAAqC,EAAW,IAAI,EAC5F,6BAA6B,EAAU,kBAAkB,KAAmC,OAAuB;GACjH;GACA,wBAAwB,EAAW;EACrC,EAAE,EACJ,CAAC,GACM;CACT,GAAG,CAAC,CAAC,GAEC,IAAU,GAAa,MACpB,EAAK,MACX,CAAC,CAAC,GAEC,IAAS,QACN,EAAmB,CAAC,CAAC,MAAM;EAChC,mBAAmB,EAAM,CAAC,CAAC,GAAG,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;EAChE,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,MAAM;EACR;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAA2B;GACpC,MAAM;GACN,SAAS,EAA2B;EACtC;CACF,GACC;EAAC,EAA2B;EAAW,EAA2B;EAAS;CAAC,CAAC,GAE1E,IAAe,QACZ,CACL,EAAU,iBAA4B;EAAE,cAAc;EAAM,IAAI;EAAQ,MAAM,CAAC;CAAO,CAAC,GACvF;EACE,qBAAqB,MAAS,GAAG,EAAK,IAAI,kBAAkB,OAAO,KAAK,EAA2B,QAAQ;EAC3G,YAAY,CAAC;EACb,IAAI;EACJ,oBAAoB;EACpB,WAAW;EACX,MAAM;EACN,cAAc,MAAS,EAAK,IAAI,kBAAkB;EAClD,WAAW;CACb,CACF,GACC,CAAC,EAA2B,QAAQ,QAAQ,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/DataCollectionSetsAdminPage/DataCollectionSetsAdminPage.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 type {\n CaseDbApiPermission,\n CaseDbDataCollectionSet,\n CaseDbDataCollectionSetMember,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCommandName,\n CaseDbOrganizationApi,\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 { useDataCollectionSetMembersQuery } from '../../dataHooks/useDataCollectionSetMembersQuery';\nimport { useDataCollectionOptionsQuery } from '../../dataHooks/useDataCollectionsQuery';\n\n\ntype FormFields = OmitWithMetaData<TableData>;\n\ntype TableData = { dataCollectionIds: string[] } & CaseDbDataCollectionSet;\n\nexport const DataCollectionSetsAdminPage = () => {\n const { t } = useTranslation();\n\n const dataCollectionSetMembersQuery = useDataCollectionSetMembersQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n\n const loadables = useArray([dataCollectionSetMembersQuery, dataCollectionOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbOrganizationApi.getInstance().dataCollectionSetsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbDataCollectionSet) => {\n return await CaseDbOrganizationApi.getInstance().dataCollectionSetsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbDataCollectionSet) => {\n await CaseDbOrganizationApi.getInstance().dataCollectionSetsPutDataCollections(item.id, {\n data_collection_set_members: variables.dataCollectionIds.map<CaseDbDataCollectionSetMember>(data_collection_id => ({\n data_collection_id,\n data_collection_set_id: item.id,\n })),\n });\n return (await CaseDbOrganizationApi.getInstance().dataCollectionSetsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n const resultItem = (await CaseDbOrganizationApi.getInstance().dataCollectionSetsPostOne(variables)).data;\n await CaseDbOrganizationApi.getInstance().dataCollectionSetsPutDataCollections(resultItem.id, {\n data_collection_set_members: variables.dataCollectionIds.map<CaseDbDataCollectionSetMember>(data_collection_id => ({\n data_collection_id,\n data_collection_set_id: resultItem.id,\n })),\n });\n return resultItem;\n }, []);\n\n const getName = useCallback((item: CaseDbDataCollectionSet) => {\n return item.name;\n }, []);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n dataCollectionIds: 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.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST,\n label: t`Columns`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'dataCollectionIds',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [dataCollectionOptionsQuery.isLoading, dataCollectionOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<TableData>[] => {\n return [\n TableUtil.createTextColumn<TableData>({ advancedSort: true, id: 'name', name: t`Name` }),\n {\n displayValueGetter: (item) => `${item.row.dataCollectionIds.length} / ${dataCollectionOptionsQuery.options.length}`,\n headerName: t`Data collections`,\n id: 'numDataCollections',\n isInitiallyVisible: true,\n textAlign: 'right',\n type: 'number',\n valueGetter: (item) => item.row.dataCollectionIds.length,\n widthFlex: 0.5,\n },\n ];\n }, [dataCollectionOptionsQuery.options.length, t]);\n\n const convertToTableData = useCallback((items: CaseDbDataCollectionSet[]) => {\n if (!items || !dataCollectionSetMembersQuery.data) {\n return [];\n }\n return items.map<TableData>((item) => {\n const dataCollectionIds = dataCollectionSetMembersQuery.data.filter(member => member.data_collection_set_id === item.id).map(member => member.data_collection_id);\n return {\n ...item,\n dataCollectionIds,\n } satisfies TableData;\n });\n }, [dataCollectionSetMembersQuery.data]);\n\n return (\n <CrudPage<FormFields, CaseDbDataCollectionSet, TableData, CASEDB_QUERY_KEY, CaseDbApiPermission>\n convertToTableData={convertToTableData}\n createItemDialogTitle={t`Create new data collection set`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.DataCollectionSetCrudCommand}\n defaultSortByField={'name'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Data collection set`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.DATA_COLLECTION_SETS}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('DataCollectionSetsAdminPage')}\n title={t`Data collection sets`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -8,12 +8,12 @@ import { Autocomplete as p, Box as m, TextField as h, ToggleButton as g, ToggleB
|
|
|
8
8
|
import { useCallback as b, useMemo as x, useState as S } from "react";
|
|
9
9
|
import { useTranslation as C } from "react-i18next";
|
|
10
10
|
import { jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
11
|
-
import { ResponseHandler as E } from "@gen-epix/ui/components/ui/ResponseHandler";
|
|
11
|
+
import { ResponseHandler as E } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
|
|
12
12
|
import { useArray as D } from "@gen-epix/ui-core/hooks/useArray";
|
|
13
13
|
import { TestIdUtil as O } from "@gen-epix/ui-core/utils/TestIdUtil";
|
|
14
|
-
import { LoadableUtil as k } from "@gen-epix/ui/utils/LoadableUtil";
|
|
15
|
-
import { PageContainer as A } from "@gen-epix/ui/components/ui/PageContainer";
|
|
16
|
-
import { useOrganizationMapQuery as j } from "@gen-epix/ui/dataHooks/useOrganizationsQuery";
|
|
14
|
+
import { LoadableUtil as k } from "@gen-epix/ui-client-common/utils/LoadableUtil";
|
|
15
|
+
import { PageContainer as A } from "@gen-epix/ui-client-common/components/ui/PageContainer";
|
|
16
|
+
import { useOrganizationMapQuery as j } from "@gen-epix/ui-client-common/dataHooks/useOrganizationsQuery";
|
|
17
17
|
//#region src/pages/DataCollectionVisualizationPage/DataCollectionVisualizationPage.tsx
|
|
18
18
|
var M = {
|
|
19
19
|
dispose: o,
|