@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":"EpiCurveWidget.js","names":[],"sources":["../../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfWeek.js","../../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfISOWeek.js","../../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/lastDayOfMonth.js","../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isString.js","../../src/components/ui/EpiCurveWidget/EpiCurveBarChart.tsx","../../src/components/ui/EpiCurveWidget/EpiCurveStackedAreaChart.tsx","../../src/components/ui/EpiCurveWidget/EpiCurveWidget.tsx"],"sourcesContent":["import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","import { endOfWeek } from \"./endOfWeek.js\";\n\n/**\n * The {@link endOfISOWeek} function options.\n */\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfISOWeek(date, options) {\n return endOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default endOfISOWeek;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link lastDayOfMonth} function options.\n */\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function lastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(0, 0, 0, 0);\n return toDate(_date, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default lastDayOfMonth;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","import type { EChartsReactProps } from 'echarts-for-react';\nimport EChartsReact from 'echarts-for-react';\nimport type {\n EChartsOption,\n EChartsType,\n} from 'echarts';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport type { Ref } from 'react';\nimport isString from 'lodash/isString';\nimport intersection from 'lodash/intersection';\nimport { useTheme } from '@mui/material';\n\nimport { EpiCurveUtil } from '../../../utils/EpiCurveUtil';\nimport type { EpiCurveChartItem } from '../../../utils/EpiCurveUtil';\nimport type { Stratification } from '../../../models/stratification';\nimport { DashboardContext } from '../Dashboard/context/DashboardContext';\nimport { DASHBOARD_COMPONENT_NAME } from '../../../constants/dashboard';\n\nexport interface EpiCurveBarChartProps {\n chartRef: Ref<EChartsReact>;\n echarts: unknown;\n getXAxisLabel: (value: Date) => string;\n items: EpiCurveChartItem[];\n onCaseIdsChange?: (caseIds: string[]) => void;\n onChartReady?: (chart: EChartsType) => void;\n onPointMouseUp?: (payload: { caseIds: string[]; focussedDate: string; mouseEvent: MouseEvent }) => void;\n stratification?: Stratification;\n xAxisIntervals: Date[];\n}\n\nexport const EpiCurveBarChart = ({\n chartRef,\n echarts,\n getXAxisLabel,\n items,\n onCaseIdsChange,\n onChartReady,\n onPointMouseUp,\n stratification,\n xAxisIntervals,\n}: EpiCurveBarChartProps) => {\n const theme = useTheme();\n const chartInstanceRef = useRef<EChartsType | null>(null);\n const dashboardContext = use(DashboardContext);\n\n // Calculate series data only when rendering\n const seriesData = useMemo(() => EpiCurveUtil.getBarChartSeriesData(items, xAxisIntervals, getXAxisLabel, stratification, theme), [items, xAxisIntervals, getXAxisLabel, stratification, theme]);\n\n useEffect(() => {\n const unsubscribe = dashboardContext.highlightSubject.subscribe((highlighting) => {\n if (highlighting.origin === DASHBOARD_COMPONENT_NAME.EPI_CURVE) {\n return;\n }\n\n const instance = chartInstanceRef.current;\n if (!instance) {\n return;\n }\n\n if (!highlighting.caseIds.length) {\n instance.dispatchAction({\n type: 'downplay',\n });\n return;\n }\n\n const highlightTargets: Array<{ dataIndex: number; seriesIndex: number }> = [];\n seriesData.series?.forEach((serie, serieIndex) => {\n const serieData = (serie as { data: unknown[] }).data;\n serieData?.forEach((dataArray: unknown, dataIndex: number) => {\n const caseIds = JSON.parse((dataArray as [unknown, unknown, string])[2]) as string[];\n if (intersection(caseIds, highlighting.caseIds).length) {\n highlightTargets.push({\n dataIndex,\n seriesIndex: serieIndex,\n });\n }\n });\n });\n\n instance.dispatchAction({\n type: 'downplay',\n });\n\n highlightTargets.forEach((target) => {\n instance.dispatchAction({\n dataIndex: target.dataIndex,\n seriesIndex: target.seriesIndex,\n type: 'highlight',\n });\n });\n });\n\n return () => {\n unsubscribe();\n };\n }, [dashboardContext, seriesData]);\n\n const onInternalChartReady = useCallback((chart: EChartsType) => {\n chartInstanceRef.current = chart;\n onChartReady?.(chart);\n }, [onChartReady]);\n\n const getOptions = useCallback(() => {\n return {\n grid: {\n bottom: 64,\n left: 48,\n right: 8,\n top: 16,\n },\n series: seriesData.series,\n tooltip: {\n formatter: (params) => {\n const typedParams = params as { name: string; seriesName: string; value: number[] };\n\n // For bar chart, show count\n if (stratification?.legendaItems?.length) {\n return `${typedParams.name} - ${typedParams.seriesName} (n=${typedParams.value[1]})`;\n }\n return `${typedParams.name} (n=${typedParams.value[1]})`;\n },\n show: true,\n trigger: 'item',\n triggerOn: 'mousemove',\n },\n xAxis: {\n axisLabel: {\n height: 100,\n rotate: 45,\n },\n axisTick: {\n alignWithLabel: true,\n show: true,\n },\n data: xAxisIntervals.map(x => getXAxisLabel(x)),\n type: 'category',\n },\n yAxis: {\n max: seriesData.max,\n min: 0,\n minInterval: 1,\n type: 'value',\n },\n } satisfies EChartsOption;\n }, [stratification, seriesData.series, seriesData.max, xAxisIntervals, getXAxisLabel]);\n\n const onEvents = useMemo<EChartsReactProps['onEvents']>(() => {\n const getCaseIdsFromEvent = (event: unknown): string[] => {\n const caseIds = (event as { data?: [unknown, unknown, string] })?.data?.[2];\n if (isString(caseIds)) {\n return JSON.parse(caseIds) as string[];\n }\n return [];\n };\n\n return {\n mouseout: () => {\n onCaseIdsChange?.([]);\n },\n mouseover: (event: unknown) => {\n onCaseIdsChange?.(getCaseIdsFromEvent(event));\n },\n mouseup: (event: unknown) => {\n const mouseEvent = (event as { event?: { event?: MouseEvent } })?.event?.event;\n onPointMouseUp?.({\n caseIds: getCaseIdsFromEvent(event),\n focussedDate: (event as { name?: string })?.name,\n mouseEvent,\n });\n },\n };\n }, [onCaseIdsChange, onPointMouseUp]);\n\n return (\n <EChartsReact\n echarts={echarts}\n notMerge\n onChartReady={onInternalChartReady}\n onEvents={onEvents}\n option={getOptions()}\n ref={chartRef}\n style={{\n height: '100%',\n position: 'absolute',\n width: '100%',\n }}\n />\n );\n};\n","import type { EChartsReactProps } from 'echarts-for-react';\nimport EChartsReact from 'echarts-for-react';\nimport type {\n EChartsOption,\n EChartsType,\n} from 'echarts';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport type { Ref } from 'react';\nimport isString from 'lodash/isString';\nimport intersection from 'lodash/intersection';\nimport { useTheme } from '@mui/material';\n\nimport { EpiCurveUtil } from '../../../utils/EpiCurveUtil';\nimport type { EpiCurveChartItem } from '../../../utils/EpiCurveUtil';\nimport type { Stratification } from '../../../models/stratification';\nimport { StratificationUtil } from '../../../utils/StratificationUtil';\nimport { DashboardContext } from '../Dashboard/context/DashboardContext';\nimport { DASHBOARD_COMPONENT_NAME } from '../../../constants/dashboard';\n\nexport interface EpiCurveStackedAreaChartProps {\n chartRef: Ref<EChartsReact>;\n echarts: unknown;\n getXAxisLabel: (value: Date) => string;\n includeMissingValues: boolean;\n items: EpiCurveChartItem[];\n onCaseIdsChange?: (caseIds: string[]) => void;\n onChartReady?: (chart: EChartsType) => void;\n onPointMouseUp?: (payload: { caseIds: string[]; focussedDate: string; mouseEvent: MouseEvent }) => void;\n stratification?: Stratification;\n xAxisIntervals: Date[];\n}\n\nexport const EpiCurveStackedAreaChart = ({\n chartRef,\n echarts,\n getXAxisLabel,\n includeMissingValues,\n items,\n onCaseIdsChange,\n onChartReady,\n onPointMouseUp,\n stratification,\n xAxisIntervals,\n}: EpiCurveStackedAreaChartProps) => {\n const theme = useTheme();\n const hoveredSeriesIndexRef = useRef<null | number>(null);\n const chartInstanceRef = useRef<EChartsType | null>(null);\n const dashboardContext = use(DashboardContext);\n\n // Calculate series data only when rendering\n const seriesData = useMemo(() =>\n EpiCurveUtil.getAreaChartSeriesData(items, xAxisIntervals, getXAxisLabel, includeMissingValues, stratification),\n [items, xAxisIntervals, getXAxisLabel, includeMissingValues, stratification]);\n\n // Fast lookup table: color -> all caseIds having that stratification color.\n const caseIdsByColor = useMemo(() => {\n const buckets: { [color: string]: string[] } = {};\n const colorMap = stratification?.caseIdColors ?? {};\n\n Object.entries(colorMap).forEach(([caseId, color]) => {\n if (!buckets[color]) {\n buckets[color] = [];\n }\n buckets[color].push(caseId);\n });\n\n return buckets;\n }, [stratification]);\n\n // Fast O(1) lookup: all caseIds for a hovered stratification area (series).\n const caseIdsBySeriesIndex = useMemo(() => {\n if (!seriesData.series?.length) {\n return [] as string[][];\n }\n\n return (seriesData.series as Array<{ color?: string }>).map((series) => {\n const seriesColor = series.color;\n return typeof seriesColor === 'string' ? (caseIdsByColor[seriesColor] ?? []) : [];\n });\n }, [caseIdsByColor, seriesData]);\n\n const getCaseIdsForPoint = useCallback((seriesIndex: number, dataIndex: number): string[] => {\n if (!seriesData.series || seriesIndex < 0 || dataIndex < 0) {\n return [];\n }\n const series = (seriesData.series as Array<{ data?: unknown[] }>)?.[seriesIndex];\n const point = (series?.data as Array<[unknown, unknown, string]>)?.[dataIndex];\n if (point?.[2] && isString(point[2])) {\n return JSON.parse(point[2]) as string[];\n }\n return [];\n }, [seriesData]);\n\n const expandToStratificationColorCaseIds = useCallback((candidateCaseIds: string[]): string[] => {\n if (!candidateCaseIds.length) {\n return [];\n }\n\n const colorMap = stratification?.caseIdColors;\n if (!colorMap) {\n return candidateCaseIds;\n }\n\n const referenceCaseId = candidateCaseIds.find(caseId => !!colorMap[caseId]);\n if (!referenceCaseId) {\n return candidateCaseIds;\n }\n\n const referenceColor = colorMap[referenceCaseId];\n return caseIdsByColor[referenceColor] ?? candidateCaseIds;\n }, [caseIdsByColor, stratification]);\n\n const getOptions = useCallback(() => {\n return {\n color: StratificationUtil.getEchartsColors(stratification, theme),\n grid: {\n bottom: 64,\n left: 48,\n right: 8,\n top: 16,\n },\n series: seriesData.series,\n tooltip: {\n formatter: (params) => {\n const typedParams = params as Array<{ marker?: string; name: string; seriesIndex: number; seriesName: string; value: number[] }>;\n if (!typedParams?.length) {\n return '';\n }\n\n const header = typedParams[0].name;\n const hoveredSeriesIndex = hoveredSeriesIndexRef.current;\n const lines = typedParams.map(param => {\n const line = `${param.marker ?? ''}${param.seriesName} (${Number(param.value[1]).toFixed(1)}%)`;\n if (hoveredSeriesIndex !== null && param.seriesIndex === hoveredSeriesIndex) {\n return `<b>${line}</b>`;\n }\n return line;\n });\n return [header, ...lines].join('<br/>');\n },\n show: true,\n trigger: 'axis',\n triggerOn: 'mousemove',\n },\n xAxis: {\n axisLabel: {\n height: 100,\n rotate: 45,\n },\n axisTick: {\n alignWithLabel: true,\n show: true,\n },\n data: xAxisIntervals.map(x => getXAxisLabel(x)),\n type: 'category',\n },\n yAxis: {\n max: seriesData.max,\n min: 0,\n minInterval: 1,\n type: 'value',\n },\n } satisfies EChartsOption;\n }, [stratification, theme, seriesData.series, seriesData.max, xAxisIntervals, getXAxisLabel]);\n\n const setHighlightedSeries = useCallback((seriesIndex: null | number) => {\n const instance = chartInstanceRef.current;\n if (!instance) {\n return;\n }\n\n instance.dispatchAction({\n type: 'downplay',\n });\n\n if (typeof seriesIndex === 'number' && seriesIndex >= 0) {\n instance.dispatchAction({\n seriesIndex,\n type: 'highlight',\n });\n }\n }, []);\n\n useEffect(() => {\n const unsubscribe = dashboardContext.highlightSubject.subscribe((highlighting) => {\n if (highlighting.origin === DASHBOARD_COMPONENT_NAME.EPI_CURVE) {\n return;\n }\n\n const instance = chartInstanceRef.current;\n if (!instance) {\n return;\n }\n\n if (!highlighting.caseIds.length) {\n instance.dispatchAction({\n type: 'downplay',\n });\n return;\n }\n\n const highlightTargets: Array<{ dataIndex: number; seriesIndex: number }> = [];\n seriesData.series?.forEach((serie, serieIndex) => {\n const serieData = (serie as { data: unknown[] }).data;\n serieData?.forEach((dataArray: unknown, dataIndex: number) => {\n const caseIds = JSON.parse((dataArray as [unknown, unknown, string])[2]) as string[];\n if (intersection(caseIds, highlighting.caseIds).length) {\n highlightTargets.push({\n dataIndex,\n seriesIndex: serieIndex,\n });\n }\n });\n });\n\n instance.dispatchAction({\n type: 'downplay',\n });\n\n highlightTargets.forEach((target) => {\n instance.dispatchAction({\n dataIndex: target.dataIndex,\n seriesIndex: target.seriesIndex,\n type: 'highlight',\n });\n });\n });\n\n return () => {\n unsubscribe();\n };\n }, [dashboardContext, seriesData]);\n\n const onInternalChartReady = useCallback((chart: EChartsType) => {\n chartInstanceRef.current = chart;\n onChartReady?.(chart);\n }, [onChartReady]);\n\n const onEvents = useMemo<EChartsReactProps['onEvents']>(() => {\n const getCaseIdsFromItemEvent = (event: unknown): string[] => {\n const eventData = event as {\n data?: [unknown, unknown, string];\n dataIndex?: number;\n seriesIndex?: number;\n };\n\n if (typeof eventData.seriesIndex === 'number' && eventData.seriesIndex >= 0) {\n return caseIdsBySeriesIndex[eventData.seriesIndex] ?? [];\n }\n\n const caseIdsFromData = eventData?.data?.[2];\n if (isString(caseIdsFromData)) {\n return expandToStratificationColorCaseIds(JSON.parse(caseIdsFromData) as string[]);\n }\n\n if (typeof eventData.seriesIndex === 'number'\n && typeof eventData.dataIndex === 'number'\n && eventData.seriesIndex >= 0\n && eventData.dataIndex >= 0) {\n return expandToStratificationColorCaseIds(getCaseIdsForPoint(eventData.seriesIndex, eventData.dataIndex));\n }\n\n return [];\n };\n\n return {\n globalout: () => {\n hoveredSeriesIndexRef.current = null;\n setHighlightedSeries(null);\n onCaseIdsChange?.([]);\n },\n mouseout: () => {\n hoveredSeriesIndexRef.current = null;\n setHighlightedSeries(null);\n onCaseIdsChange?.([]);\n },\n mouseover: (event: unknown) => {\n const eventData = event as { seriesIndex?: number };\n hoveredSeriesIndexRef.current = typeof eventData.seriesIndex === 'number' ? eventData.seriesIndex : null;\n setHighlightedSeries(hoveredSeriesIndexRef.current);\n const caseIds = getCaseIdsFromItemEvent(event);\n if (caseIds.length) {\n onCaseIdsChange?.(caseIds);\n }\n },\n mouseup: (event: unknown) => {\n const mouseEvent = (event as { event?: { event?: MouseEvent } })?.event?.event;\n onPointMouseUp?.({\n caseIds: getCaseIdsFromItemEvent(event),\n focussedDate: (event as { name?: string })?.name,\n mouseEvent,\n });\n },\n updateAxisPointer: (event: unknown) => {\n const axisEvent = event as {\n seriesDataIndices?: Array<{ seriesIndex?: number }>;\n };\n const hoveredSeriesIndex = axisEvent.seriesDataIndices?.[0]?.seriesIndex;\n if (typeof hoveredSeriesIndex === 'number') {\n hoveredSeriesIndexRef.current = hoveredSeriesIndex;\n }\n setHighlightedSeries(hoveredSeriesIndexRef.current);\n },\n };\n }, [caseIdsBySeriesIndex, expandToStratificationColorCaseIds, getCaseIdsForPoint, onCaseIdsChange, onPointMouseUp, setHighlightedSeries]);\n\n return (\n <EChartsReact\n echarts={echarts}\n notMerge\n onChartReady={onInternalChartReady}\n onEvents={onEvents}\n option={getOptions()}\n ref={chartRef}\n style={{\n height: '100%',\n position: 'absolute',\n width: '100%',\n }}\n />\n );\n};\n","import {\n Box,\n ListItemIcon,\n ListItemText,\n MenuItem,\n} from '@mui/material';\nimport LeaderboardIcon from '@mui/icons-material/Leaderboard';\nimport AreaChartIcon from '@mui/icons-material/AreaChart';\nimport {\n dispose,\n getInstanceByDom,\n init,\n use as registerECharts,\n} from 'echarts/core';\nimport {\n DataZoomComponent,\n GridComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport {\n BarChart,\n LineChart,\n} from 'echarts/charts';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport type EChartsReact from 'echarts-for-react';\nimport type { ReactElement } from 'react';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport isString from 'lodash/isString';\nimport round from 'lodash/round';\nimport type { EChartsType } from 'echarts';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\nimport FilterAltIcon from '@mui/icons-material/FilterAlt';\nimport {\n endOfISOWeek,\n endOfQuarter,\n endOfYear,\n lastDayOfMonth,\n parse,\n startOfISOWeek,\n startOfMonth,\n startOfQuarter,\n startOfYear,\n} from 'date-fns';\nimport type { CaseDbCol } from '@gen-epix/api-casedb';\nimport { CaseDbDimType } from '@gen-epix/api-casedb';\nimport type { MenuItemData } from '@gen-epix/ui/models/nestedMenu';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseTypeUtil } from '../../../utils/CaseTypeUtil';\nimport { EpiCurveUtil } from '../../../utils/EpiCurveUtil';\nimport type { ContextMenuConfigWithPosition } from '../ContextMenu';\nimport { ContextMenu } from '../ContextMenu';\nimport { WidgetUnavailable } from '../WidgetUnavailable';\nimport { EventBusService } from '../../../classes/services/EventBusService';\nimport { CaseDbDownloadUtil } from '../../../utils/CaseDbDownloadUtil';\nimport { DashboardUtil } from '../../../utils/DashboardUtil';\nimport { DashboardWidget } from '../Dashboard';\nimport { DASHBOARD_COMPONENT_NAME } from '../../../constants/dashboard';\nimport { UserProfileStoreContext } from '../../../stores/userProfileStore/userProfileStoreContext';\nimport { DashboardContext } from '../Dashboard/context/DashboardContext';\nimport type {\n DashboardEpiCurveSettings,\n EpiCurveWidgetData,\n} from '../../../models/dashboard';\n\nimport { EpiCurveBarChart } from './EpiCurveBarChart';\nimport { EpiCurveStackedAreaChart } from './EpiCurveStackedAreaChart';\n\nconst echartsCore = {\n dispose,\n getInstanceByDom,\n init,\n};\n\nregisterECharts([TooltipComponent, GridComponent, DataZoomComponent, BarChart, LineChart, CanvasRenderer]);\n\nexport type ChartType = 'area' | 'bar';\n\nexport const EpiCurveWidget = () => {\n const { t } = useTranslation();\n const [contextMenuConfig, setContextMenuConfig] = useState<ContextMenuConfigWithPosition | null>(null);\n const [chartType, setChartType] = useState<ChartType>('bar');\n const chartRef = useRef<EChartsReact>(null);\n const dashboardContext = use(DashboardContext);\n const userProfileStore = use(UserProfileStoreContext);\n\n const dashboardStore = use(DashboardStoreContext);\n const stratification = useStore(dashboardStore, (state) => state.stratification);\n const isDataLoading = useStore(dashboardStore, (state) => state.isDataLoading);\n const sortedData = useStore(dashboardStore, (state) => state.sortedData);\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const updateWidgetData = useStore(dashboardStore, (state) => state.updateWidgetData);\n const epiCurveWidgetData = useStore(dashboardStore, (state) => state.getWidgetData<EpiCurveWidgetData>(DASHBOARD_COMPONENT_NAME.EPI_CURVE));\n const setFilterValue = useStore(dashboardStore, (state) => state.setFilterValue);\n const filterDimensions = useStore(dashboardStore, (state) => state.filterDimensions);\n const timeDims = useMemo(() => CaseTypeUtil.getDims(completeCaseType, [CaseDbDimType.TIME]), [completeCaseType]);\n const isIncludeMissingValuesInAreaChartEnabled = useStore(userProfileStore, (state) => (state.dashboardWidgetSettings[DASHBOARD_COMPONENT_NAME.EPI_CURVE] as DashboardEpiCurveSettings).isIncludeMissingValuesInAreaChartEnabled);\n const [focussedDate, setFocussedDate] = useState<string>(null);\n const [col, setCol] = useState<CaseDbCol>(null);\n const colLabel = col?.label ?? '';\n\n const onEpiContextMenuClose = useCallback(() => {\n setContextMenuConfig(null);\n setFocussedDate(null);\n }, []);\n\n const lineListCaseCount = useMemo(() => {\n return DashboardUtil.getCaseCount(sortedData);\n }, [sortedData]);\n\n\n // Auto-switch to bar chart if stratification is disabled while showing area chart\n useEffect(() => {\n if (!stratification && chartType === 'area') {\n setChartType('bar');\n }\n }, [stratification, chartType]);\n\n const primaryMenu = useMemo<MenuItemData[]>(() => {\n return [\n {\n active: chartType === 'bar',\n callback: () => {\n setChartType('bar');\n },\n label: t`Bar chart`,\n leftIcon: <LeaderboardIcon />,\n },\n {\n active: chartType === 'area',\n callback: () => {\n setChartType('area');\n },\n disabled: !stratification,\n label: t`Normalized stacked area chart`,\n leftIcon: <AreaChartIcon />,\n },\n ];\n }, [t, chartType, stratification]);\n\n const titleMenu = useMemo<MenuItemData>(() => {\n let label: string;\n if (col) {\n label = t('Epi curve: {{label}}', { label: col.label });\n } else {\n label = t`Epi curve`;\n }\n\n const menu: MenuItemData = {\n disabled: !timeDims.length,\n items: [],\n label,\n tooltip: col ? completeCaseType.ref_cols[col.ref_col_id].description : undefined,\n };\n\n completeCaseType.ordered_dim_ids.map(x => completeCaseType.dims[x]).filter(dim => {\n const refDim = completeCaseType.ref_dims[dim.ref_dim_id];\n return refDim.dim_type === CaseDbDimType.TIME;\n }).forEach((dim) => {\n if (menu.items.length) {\n menu.items.at(-1).divider = true;\n }\n completeCaseType.ordered_col_ids_by_dim[dim.id].map(id => completeCaseType.cols[id]).forEach((c) => {\n menu.items.push({\n active: !!(c.id === col?.id),\n callback: () => {\n updateWidgetData<EpiCurveWidgetData>(DASHBOARD_COMPONENT_NAME.EPI_CURVE, { columnId: c.id });\n setCol(c);\n },\n label: c.label,\n tooltip: c.description,\n });\n });\n });\n\n return menu;\n }, [col, completeCaseType, t, timeDims.length, updateWidgetData]);\n\n useEffect(() => {\n if (col) {\n return;\n }\n if (!timeDims.length) {\n return;\n }\n if (epiCurveWidgetData.columnId) {\n setCol(CaseTypeUtil.getCols(completeCaseType).find(c => c.id === epiCurveWidgetData.columnId));\n } else if (sortedData.length) {\n setCol(EpiCurveUtil.getPreferredTimeColumn(\n completeCaseType,\n sortedData,\n CaseTypeUtil.getCols(completeCaseType, completeCaseType.case_date_dim_id),\n ));\n }\n }, [col, completeCaseType, epiCurveWidgetData.columnId, timeDims, sortedData]);\n\n const items = useMemo(() => {\n if (!col) {\n return [];\n }\n return EpiCurveUtil.getSortedItems(completeCaseType, sortedData, [col]);\n }, [col, sortedData, completeCaseType]);\n\n const epiCurveCaseCount = useMemo(() => {\n return items.reduce((prev, current) => {\n return prev + current.value;\n }, 0) ?? 0;\n }, [items]);\n\n const getXAxisLabel = useCallback((value: Date): string => {\n if (!col) {\n return null;\n }\n\n return EpiCurveUtil.getXAxisLabel(completeCaseType.ref_cols[col.ref_col_id].col_type, value);\n }, [col, completeCaseType.ref_cols]);\n\n const xAxisIntervals = useMemo<Date[]>(() => {\n if (!col) {\n return [];\n }\n return EpiCurveUtil.getXAxisIntervals(completeCaseType.ref_cols[col.ref_col_id].col_type, items);\n }, [col, completeCaseType.ref_cols, items]);\n\n const onChartCaseIdsChange = useCallback((caseIds: string[]) => {\n dashboardContext.highlight({\n caseIds,\n origin: DASHBOARD_COMPONENT_NAME.EPI_CURVE,\n });\n }, [dashboardContext]);\n\n const onChartPointMouseUp = useCallback((payload: { caseIds: string[]; focussedDate: string; mouseEvent: MouseEvent }) => {\n setFocussedDate(payload.focussedDate);\n setContextMenuConfig({\n caseIds: payload.caseIds,\n mouseEvent: payload.mouseEvent,\n position: {\n left: payload.mouseEvent?.clientX,\n top: payload.mouseEvent?.clientY,\n },\n });\n }, []);\n\n const onChartReady = useCallback((chart: EChartsType) => {\n const dom = chart.getDom();\n dom?.setAttribute('aria-label', t('Epidemiological curve showing the number of cases over time ({{label}})', { label: colLabel }));\n dom?.setAttribute('role', 'img');\n }, [colLabel, t]);\n\n const onShowOnlySelectedDateMenuItemClick = useCallback(async (onMenuClose: () => void) => {\n if (!isString(focussedDate) || !col?.id) {\n onMenuClose();\n return;\n }\n const dateDimension = filterDimensions.find(filterDimension => filterDimension.filterIds.includes(col.id));\n const dateColumnId = dateDimension.preferredFilterId;\n\n let fromDate: Date;\n let toDate: Date;\n\n if (focussedDate.match(/^\\d{4}$/)) {\n const date = parse(focussedDate, DATE_FORMAT.YEAR, new Date());\n fromDate = startOfYear(date);\n toDate = endOfYear(date);\n // year\n } else if (focussedDate.match(/^\\d{4}-\\d{2}$/)) {\n // month\n const date = parse(focussedDate, DATE_FORMAT.YEAR_MONTH, new Date());\n fromDate = startOfMonth(date);\n toDate = lastDayOfMonth(date);\n } else if (focussedDate.match(/^\\d{4}-\\d{2}-\\d{2}$/)) {\n // full date\n const date = parse(focussedDate, DATE_FORMAT.DATE, new Date());\n fromDate = date;\n toDate = date;\n } else if (focussedDate.match(/^\\d{4}-W\\d{2}$/)) {\n // week\n const date = parse(focussedDate, DATE_FORMAT.YEAR_WEEK, new Date(), {\n useAdditionalWeekYearTokens: true,\n });\n fromDate = startOfISOWeek(date);\n toDate = endOfISOWeek(date);\n } else if (focussedDate.match(/^\\d{4}-Q\\d$/)) {\n // quarter\n const date = parse(focussedDate, DATE_FORMAT.YEAR_QUARTER, new Date());\n fromDate = startOfQuarter(date);\n toDate = endOfQuarter(date);\n }\n\n if (fromDate && toDate) {\n await setFilterValue(dateColumnId, [fromDate, toDate]);\n }\n\n onMenuClose();\n }, [focussedDate, col, filterDimensions, setFilterValue]);\n\n const getEpiContextMenuExtraItems = useCallback((onMenuClose: () => void): ReactElement => {\n if (!focussedDate) {\n return null;\n }\n return (\n <MenuItem\n divider\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={async () => await onShowOnlySelectedDateMenuItemClick(onMenuClose)}\n >\n <ListItemIcon>\n <FilterAltIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t('Filter (show only {{date}})', { date: focussedDate })}\n </ListItemText>\n </MenuItem>\n );\n }, [focussedDate, onShowOnlySelectedDateMenuItemClick, t]);\n\n const missingCasesCount = lineListCaseCount - epiCurveCaseCount;\n const missingCasesPercentage = missingCasesCount > 0 ? round(missingCasesCount / lineListCaseCount * 100, 1) : 0;\n const canShowWidget = epiCurveCaseCount > 0 && timeDims.length > 0;\n\n const widgetUnavailableReason = useMemo<ReactElement | string>(() => {\n if (canShowWidget) {\n return;\n }\n if (!timeDims.length) {\n return t`No time column found.`;\n }\n if (!lineListCaseCount) {\n return t`No cases found.`;\n }\n if (!col) {\n return t`No time column selected.`;\n }\n if (!epiCurveCaseCount) {\n return t`No cases with valid date- / time information found for the selected column.`;\n }\n return null;\n }, [canShowWidget, col, epiCurveCaseCount, lineListCaseCount, t, timeDims.length]);\n\n\n useEffect(() => {\n const emitDownloadOptions = () => {\n EventBusService.getInstance().emit('onDownloadOptionsChanged', {\n disabled: !canShowWidget,\n items: [\n {\n callback: () => CaseDbDownloadUtil.downloadEchartsImage(t`Epi curve`, chartRef.current.getEchartsInstance(), 'png', completeCaseType, t),\n label: t`Save as PNG`,\n },\n {\n callback: () => CaseDbDownloadUtil.downloadEchartsImage(t`Epi curve`, chartRef.current.getEchartsInstance(), 'jpeg', completeCaseType, t),\n label: t`Save as JPEG`,\n },\n ],\n zone: DASHBOARD_COMPONENT_NAME.EPI_CURVE,\n zoneLabel: t`Epi curve`,\n });\n };\n emitDownloadOptions();\n const eventBusManager = EventBusService.getInstance();\n eventBusManager.addEventListener('onDownloadOptionsRequested', emitDownloadOptions);\n return () => {\n eventBusManager.emit('onDownloadOptionsChanged', {\n items: null,\n zone: DASHBOARD_COMPONENT_NAME.EPI_CURVE,\n zoneLabel: t`Epi curve`,\n });\n eventBusManager.removeEventListener('onDownloadOptionsRequested', emitDownloadOptions);\n };\n }, [completeCaseType, canShowWidget, t]);\n\n return (\n <DashboardWidget\n expandDisabled={!canShowWidget}\n isLoading={isDataLoading}\n primaryMenu={primaryMenu}\n title={titleMenu}\n warningMessage={canShowWidget && epiCurveCaseCount > 0 && missingCasesCount > 0 ? t('Missing cases: {{missingCasesCount}} ({{missingCasesPercentage}}%)', { missingCasesCount, missingCasesPercentage }) : undefined}\n widgetName={DASHBOARD_COMPONENT_NAME.EPI_CURVE}\n >\n {!canShowWidget && (\n <WidgetUnavailable\n reason={widgetUnavailableReason}\n widgetLabel={t`epi curve`}\n />\n )}\n {canShowWidget && (\n <Box\n sx={{\n height: '100%',\n position: 'relative',\n }}\n >\n {items?.length > 0 && chartType === 'bar' && (\n <EpiCurveBarChart\n chartRef={chartRef}\n echarts={echartsCore}\n getXAxisLabel={getXAxisLabel}\n items={items}\n onCaseIdsChange={onChartCaseIdsChange}\n onChartReady={onChartReady}\n onPointMouseUp={onChartPointMouseUp}\n stratification={stratification}\n xAxisIntervals={xAxisIntervals}\n />\n )}\n {items?.length > 0 && chartType === 'area' && (\n <EpiCurveStackedAreaChart\n chartRef={chartRef}\n echarts={echartsCore}\n getXAxisLabel={getXAxisLabel}\n includeMissingValues={isIncludeMissingValuesInAreaChartEnabled}\n items={items}\n onCaseIdsChange={onChartCaseIdsChange}\n onChartReady={onChartReady}\n onPointMouseUp={onChartPointMouseUp}\n stratification={stratification}\n xAxisIntervals={xAxisIntervals}\n />\n )}\n <ContextMenu\n config={contextMenuConfig}\n getExtraItems={getEpiContextMenuExtraItems}\n onMenuClose={onEpiContextMenuClose}\n />\n </Box>\n )}\n </DashboardWidget>\n );\n};\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EpiCurveWidget.js","names":[],"sources":["../../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfWeek.js","../../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfISOWeek.js","../../../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/lastDayOfMonth.js","../../../../node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/isString.js","../../src/components/ui/EpiCurveWidget/EpiCurveBarChart.tsx","../../src/components/ui/EpiCurveWidget/EpiCurveStackedAreaChart.tsx","../../src/components/ui/EpiCurveWidget/EpiCurveWidget.tsx"],"sourcesContent":["import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","import { endOfWeek } from \"./endOfWeek.js\";\n\n/**\n * The {@link endOfISOWeek} function options.\n */\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfISOWeek(date, options) {\n return endOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default endOfISOWeek;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link lastDayOfMonth} function options.\n */\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function lastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(0, 0, 0, 0);\n return toDate(_date, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default lastDayOfMonth;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","import type { EChartsReactProps } from 'echarts-for-react';\nimport EChartsReact from 'echarts-for-react';\nimport type {\n EChartsOption,\n EChartsType,\n} from 'echarts';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport type { Ref } from 'react';\nimport isString from 'lodash/isString';\nimport intersection from 'lodash/intersection';\nimport { useTheme } from '@mui/material';\n\nimport { EpiCurveUtil } from '../../../utils/EpiCurveUtil';\nimport type { EpiCurveChartItem } from '../../../utils/EpiCurveUtil';\nimport type { Stratification } from '../../../models/stratification';\nimport { DashboardContext } from '../Dashboard/context/DashboardContext';\nimport { DASHBOARD_COMPONENT_NAME } from '../../../constants/dashboard';\n\nexport interface EpiCurveBarChartProps {\n chartRef: Ref<EChartsReact>;\n echarts: unknown;\n getXAxisLabel: (value: Date) => string;\n items: EpiCurveChartItem[];\n onCaseIdsChange?: (caseIds: string[]) => void;\n onChartReady?: (chart: EChartsType) => void;\n onPointMouseUp?: (payload: { caseIds: string[]; focussedDate: string; mouseEvent: MouseEvent }) => void;\n stratification?: Stratification;\n xAxisIntervals: Date[];\n}\n\nexport const EpiCurveBarChart = ({\n chartRef,\n echarts,\n getXAxisLabel,\n items,\n onCaseIdsChange,\n onChartReady,\n onPointMouseUp,\n stratification,\n xAxisIntervals,\n}: EpiCurveBarChartProps) => {\n const theme = useTheme();\n const chartInstanceRef = useRef<EChartsType | null>(null);\n const dashboardContext = use(DashboardContext);\n\n // Calculate series data only when rendering\n const seriesData = useMemo(() => EpiCurveUtil.getBarChartSeriesData(items, xAxisIntervals, getXAxisLabel, stratification, theme), [items, xAxisIntervals, getXAxisLabel, stratification, theme]);\n\n useEffect(() => {\n const unsubscribe = dashboardContext.highlightSubject.subscribe((highlighting) => {\n if (highlighting.origin === DASHBOARD_COMPONENT_NAME.EPI_CURVE) {\n return;\n }\n\n const instance = chartInstanceRef.current;\n if (!instance) {\n return;\n }\n\n if (!highlighting.caseIds.length) {\n instance.dispatchAction({\n type: 'downplay',\n });\n return;\n }\n\n const highlightTargets: Array<{ dataIndex: number; seriesIndex: number }> = [];\n seriesData.series?.forEach((serie, serieIndex) => {\n const serieData = (serie as { data: unknown[] }).data;\n serieData?.forEach((dataArray: unknown, dataIndex: number) => {\n const caseIds = JSON.parse((dataArray as [unknown, unknown, string])[2]) as string[];\n if (intersection(caseIds, highlighting.caseIds).length) {\n highlightTargets.push({\n dataIndex,\n seriesIndex: serieIndex,\n });\n }\n });\n });\n\n instance.dispatchAction({\n type: 'downplay',\n });\n\n highlightTargets.forEach((target) => {\n instance.dispatchAction({\n dataIndex: target.dataIndex,\n seriesIndex: target.seriesIndex,\n type: 'highlight',\n });\n });\n });\n\n return () => {\n unsubscribe();\n };\n }, [dashboardContext, seriesData]);\n\n const onInternalChartReady = useCallback((chart: EChartsType) => {\n chartInstanceRef.current = chart;\n onChartReady?.(chart);\n }, [onChartReady]);\n\n const getOptions = useCallback(() => {\n return {\n grid: {\n bottom: 64,\n left: 48,\n right: 8,\n top: 16,\n },\n series: seriesData.series,\n tooltip: {\n formatter: (params) => {\n const typedParams = params as { name: string; seriesName: string; value: number[] };\n\n // For bar chart, show count\n if (stratification?.legendaItems?.length) {\n return `${typedParams.name} - ${typedParams.seriesName} (n=${typedParams.value[1]})`;\n }\n return `${typedParams.name} (n=${typedParams.value[1]})`;\n },\n show: true,\n trigger: 'item',\n triggerOn: 'mousemove',\n },\n xAxis: {\n axisLabel: {\n height: 100,\n rotate: 45,\n },\n axisTick: {\n alignWithLabel: true,\n show: true,\n },\n data: xAxisIntervals.map(x => getXAxisLabel(x)),\n type: 'category',\n },\n yAxis: {\n max: seriesData.max,\n min: 0,\n minInterval: 1,\n type: 'value',\n },\n } satisfies EChartsOption;\n }, [stratification, seriesData.series, seriesData.max, xAxisIntervals, getXAxisLabel]);\n\n const onEvents = useMemo<EChartsReactProps['onEvents']>(() => {\n const getCaseIdsFromEvent = (event: unknown): string[] => {\n const caseIds = (event as { data?: [unknown, unknown, string] })?.data?.[2];\n if (isString(caseIds)) {\n return JSON.parse(caseIds) as string[];\n }\n return [];\n };\n\n return {\n mouseout: () => {\n onCaseIdsChange?.([]);\n },\n mouseover: (event: unknown) => {\n onCaseIdsChange?.(getCaseIdsFromEvent(event));\n },\n mouseup: (event: unknown) => {\n const mouseEvent = (event as { event?: { event?: MouseEvent } })?.event?.event;\n onPointMouseUp?.({\n caseIds: getCaseIdsFromEvent(event),\n focussedDate: (event as { name?: string })?.name,\n mouseEvent,\n });\n },\n };\n }, [onCaseIdsChange, onPointMouseUp]);\n\n return (\n <EChartsReact\n echarts={echarts}\n notMerge\n onChartReady={onInternalChartReady}\n onEvents={onEvents}\n option={getOptions()}\n ref={chartRef}\n style={{\n height: '100%',\n position: 'absolute',\n width: '100%',\n }}\n />\n );\n};\n","import type { EChartsReactProps } from 'echarts-for-react';\nimport EChartsReact from 'echarts-for-react';\nimport type {\n EChartsOption,\n EChartsType,\n} from 'echarts';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport type { Ref } from 'react';\nimport isString from 'lodash/isString';\nimport intersection from 'lodash/intersection';\nimport { useTheme } from '@mui/material';\n\nimport { EpiCurveUtil } from '../../../utils/EpiCurveUtil';\nimport type { EpiCurveChartItem } from '../../../utils/EpiCurveUtil';\nimport type { Stratification } from '../../../models/stratification';\nimport { StratificationUtil } from '../../../utils/StratificationUtil';\nimport { DashboardContext } from '../Dashboard/context/DashboardContext';\nimport { DASHBOARD_COMPONENT_NAME } from '../../../constants/dashboard';\n\nexport interface EpiCurveStackedAreaChartProps {\n chartRef: Ref<EChartsReact>;\n echarts: unknown;\n getXAxisLabel: (value: Date) => string;\n includeMissingValues: boolean;\n items: EpiCurveChartItem[];\n onCaseIdsChange?: (caseIds: string[]) => void;\n onChartReady?: (chart: EChartsType) => void;\n onPointMouseUp?: (payload: { caseIds: string[]; focussedDate: string; mouseEvent: MouseEvent }) => void;\n stratification?: Stratification;\n xAxisIntervals: Date[];\n}\n\nexport const EpiCurveStackedAreaChart = ({\n chartRef,\n echarts,\n getXAxisLabel,\n includeMissingValues,\n items,\n onCaseIdsChange,\n onChartReady,\n onPointMouseUp,\n stratification,\n xAxisIntervals,\n}: EpiCurveStackedAreaChartProps) => {\n const theme = useTheme();\n const hoveredSeriesIndexRef = useRef<null | number>(null);\n const chartInstanceRef = useRef<EChartsType | null>(null);\n const dashboardContext = use(DashboardContext);\n\n // Calculate series data only when rendering\n const seriesData = useMemo(() =>\n EpiCurveUtil.getAreaChartSeriesData(items, xAxisIntervals, getXAxisLabel, includeMissingValues, stratification),\n [items, xAxisIntervals, getXAxisLabel, includeMissingValues, stratification]);\n\n // Fast lookup table: color -> all caseIds having that stratification color.\n const caseIdsByColor = useMemo(() => {\n const buckets: { [color: string]: string[] } = {};\n const colorMap = stratification?.caseIdColors ?? {};\n\n Object.entries(colorMap).forEach(([caseId, color]) => {\n if (!buckets[color]) {\n buckets[color] = [];\n }\n buckets[color].push(caseId);\n });\n\n return buckets;\n }, [stratification]);\n\n // Fast O(1) lookup: all caseIds for a hovered stratification area (series).\n const caseIdsBySeriesIndex = useMemo(() => {\n if (!seriesData.series?.length) {\n return [] as string[][];\n }\n\n return (seriesData.series as Array<{ color?: string }>).map((series) => {\n const seriesColor = series.color;\n return typeof seriesColor === 'string' ? (caseIdsByColor[seriesColor] ?? []) : [];\n });\n }, [caseIdsByColor, seriesData]);\n\n const getCaseIdsForPoint = useCallback((seriesIndex: number, dataIndex: number): string[] => {\n if (!seriesData.series || seriesIndex < 0 || dataIndex < 0) {\n return [];\n }\n const series = (seriesData.series as Array<{ data?: unknown[] }>)?.[seriesIndex];\n const point = (series?.data as Array<[unknown, unknown, string]>)?.[dataIndex];\n if (point?.[2] && isString(point[2])) {\n return JSON.parse(point[2]) as string[];\n }\n return [];\n }, [seriesData]);\n\n const expandToStratificationColorCaseIds = useCallback((candidateCaseIds: string[]): string[] => {\n if (!candidateCaseIds.length) {\n return [];\n }\n\n const colorMap = stratification?.caseIdColors;\n if (!colorMap) {\n return candidateCaseIds;\n }\n\n const referenceCaseId = candidateCaseIds.find(caseId => !!colorMap[caseId]);\n if (!referenceCaseId) {\n return candidateCaseIds;\n }\n\n const referenceColor = colorMap[referenceCaseId];\n return caseIdsByColor[referenceColor] ?? candidateCaseIds;\n }, [caseIdsByColor, stratification]);\n\n const getOptions = useCallback(() => {\n return {\n color: StratificationUtil.getEchartsColors(stratification, theme),\n grid: {\n bottom: 64,\n left: 48,\n right: 8,\n top: 16,\n },\n series: seriesData.series,\n tooltip: {\n formatter: (params) => {\n const typedParams = params as Array<{ marker?: string; name: string; seriesIndex: number; seriesName: string; value: number[] }>;\n if (!typedParams?.length) {\n return '';\n }\n\n const header = typedParams[0].name;\n const hoveredSeriesIndex = hoveredSeriesIndexRef.current;\n const lines = typedParams.map(param => {\n const line = `${param.marker ?? ''}${param.seriesName} (${Number(param.value[1]).toFixed(1)}%)`;\n if (hoveredSeriesIndex !== null && param.seriesIndex === hoveredSeriesIndex) {\n return `<b>${line}</b>`;\n }\n return line;\n });\n return [header, ...lines].join('<br/>');\n },\n show: true,\n trigger: 'axis',\n triggerOn: 'mousemove',\n },\n xAxis: {\n axisLabel: {\n height: 100,\n rotate: 45,\n },\n axisTick: {\n alignWithLabel: true,\n show: true,\n },\n data: xAxisIntervals.map(x => getXAxisLabel(x)),\n type: 'category',\n },\n yAxis: {\n max: seriesData.max,\n min: 0,\n minInterval: 1,\n type: 'value',\n },\n } satisfies EChartsOption;\n }, [stratification, theme, seriesData.series, seriesData.max, xAxisIntervals, getXAxisLabel]);\n\n const setHighlightedSeries = useCallback((seriesIndex: null | number) => {\n const instance = chartInstanceRef.current;\n if (!instance) {\n return;\n }\n\n instance.dispatchAction({\n type: 'downplay',\n });\n\n if (typeof seriesIndex === 'number' && seriesIndex >= 0) {\n instance.dispatchAction({\n seriesIndex,\n type: 'highlight',\n });\n }\n }, []);\n\n useEffect(() => {\n const unsubscribe = dashboardContext.highlightSubject.subscribe((highlighting) => {\n if (highlighting.origin === DASHBOARD_COMPONENT_NAME.EPI_CURVE) {\n return;\n }\n\n const instance = chartInstanceRef.current;\n if (!instance) {\n return;\n }\n\n if (!highlighting.caseIds.length) {\n instance.dispatchAction({\n type: 'downplay',\n });\n return;\n }\n\n const highlightTargets: Array<{ dataIndex: number; seriesIndex: number }> = [];\n seriesData.series?.forEach((serie, serieIndex) => {\n const serieData = (serie as { data: unknown[] }).data;\n serieData?.forEach((dataArray: unknown, dataIndex: number) => {\n const caseIds = JSON.parse((dataArray as [unknown, unknown, string])[2]) as string[];\n if (intersection(caseIds, highlighting.caseIds).length) {\n highlightTargets.push({\n dataIndex,\n seriesIndex: serieIndex,\n });\n }\n });\n });\n\n instance.dispatchAction({\n type: 'downplay',\n });\n\n highlightTargets.forEach((target) => {\n instance.dispatchAction({\n dataIndex: target.dataIndex,\n seriesIndex: target.seriesIndex,\n type: 'highlight',\n });\n });\n });\n\n return () => {\n unsubscribe();\n };\n }, [dashboardContext, seriesData]);\n\n const onInternalChartReady = useCallback((chart: EChartsType) => {\n chartInstanceRef.current = chart;\n onChartReady?.(chart);\n }, [onChartReady]);\n\n const onEvents = useMemo<EChartsReactProps['onEvents']>(() => {\n const getCaseIdsFromItemEvent = (event: unknown): string[] => {\n const eventData = event as {\n data?: [unknown, unknown, string];\n dataIndex?: number;\n seriesIndex?: number;\n };\n\n if (typeof eventData.seriesIndex === 'number' && eventData.seriesIndex >= 0) {\n return caseIdsBySeriesIndex[eventData.seriesIndex] ?? [];\n }\n\n const caseIdsFromData = eventData?.data?.[2];\n if (isString(caseIdsFromData)) {\n return expandToStratificationColorCaseIds(JSON.parse(caseIdsFromData) as string[]);\n }\n\n if (typeof eventData.seriesIndex === 'number'\n && typeof eventData.dataIndex === 'number'\n && eventData.seriesIndex >= 0\n && eventData.dataIndex >= 0) {\n return expandToStratificationColorCaseIds(getCaseIdsForPoint(eventData.seriesIndex, eventData.dataIndex));\n }\n\n return [];\n };\n\n return {\n globalout: () => {\n hoveredSeriesIndexRef.current = null;\n setHighlightedSeries(null);\n onCaseIdsChange?.([]);\n },\n mouseout: () => {\n hoveredSeriesIndexRef.current = null;\n setHighlightedSeries(null);\n onCaseIdsChange?.([]);\n },\n mouseover: (event: unknown) => {\n const eventData = event as { seriesIndex?: number };\n hoveredSeriesIndexRef.current = typeof eventData.seriesIndex === 'number' ? eventData.seriesIndex : null;\n setHighlightedSeries(hoveredSeriesIndexRef.current);\n const caseIds = getCaseIdsFromItemEvent(event);\n if (caseIds.length) {\n onCaseIdsChange?.(caseIds);\n }\n },\n mouseup: (event: unknown) => {\n const mouseEvent = (event as { event?: { event?: MouseEvent } })?.event?.event;\n onPointMouseUp?.({\n caseIds: getCaseIdsFromItemEvent(event),\n focussedDate: (event as { name?: string })?.name,\n mouseEvent,\n });\n },\n updateAxisPointer: (event: unknown) => {\n const axisEvent = event as {\n seriesDataIndices?: Array<{ seriesIndex?: number }>;\n };\n const hoveredSeriesIndex = axisEvent.seriesDataIndices?.[0]?.seriesIndex;\n if (typeof hoveredSeriesIndex === 'number') {\n hoveredSeriesIndexRef.current = hoveredSeriesIndex;\n }\n setHighlightedSeries(hoveredSeriesIndexRef.current);\n },\n };\n }, [caseIdsBySeriesIndex, expandToStratificationColorCaseIds, getCaseIdsForPoint, onCaseIdsChange, onPointMouseUp, setHighlightedSeries]);\n\n return (\n <EChartsReact\n echarts={echarts}\n notMerge\n onChartReady={onInternalChartReady}\n onEvents={onEvents}\n option={getOptions()}\n ref={chartRef}\n style={{\n height: '100%',\n position: 'absolute',\n width: '100%',\n }}\n />\n );\n};\n","import {\n Box,\n ListItemIcon,\n ListItemText,\n MenuItem,\n} from '@mui/material';\nimport LeaderboardIcon from '@mui/icons-material/Leaderboard';\nimport AreaChartIcon from '@mui/icons-material/AreaChart';\nimport {\n dispose,\n getInstanceByDom,\n init,\n use as registerECharts,\n} from 'echarts/core';\nimport {\n DataZoomComponent,\n GridComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport {\n BarChart,\n LineChart,\n} from 'echarts/charts';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport type EChartsReact from 'echarts-for-react';\nimport type { ReactElement } from 'react';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport isString from 'lodash/isString';\nimport round from 'lodash/round';\nimport type { EChartsType } from 'echarts';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\nimport FilterAltIcon from '@mui/icons-material/FilterAlt';\nimport {\n endOfISOWeek,\n endOfQuarter,\n endOfYear,\n lastDayOfMonth,\n parse,\n startOfISOWeek,\n startOfMonth,\n startOfQuarter,\n startOfYear,\n} from 'date-fns';\nimport type { CaseDbCol } from '@gen-epix/api-casedb';\nimport { CaseDbDimType } from '@gen-epix/api-casedb';\nimport type { MenuItemData } from '@gen-epix/ui-core-components/models/nestedMenu';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseTypeUtil } from '../../../utils/CaseTypeUtil';\nimport { EpiCurveUtil } from '../../../utils/EpiCurveUtil';\nimport type { ContextMenuConfigWithPosition } from '../ContextMenu';\nimport { ContextMenu } from '../ContextMenu';\nimport { WidgetUnavailable } from '../WidgetUnavailable';\nimport { EventBusService } from '../../../classes/services/EventBusService';\nimport { CaseDbDownloadUtil } from '../../../utils/CaseDbDownloadUtil';\nimport { DashboardUtil } from '../../../utils/DashboardUtil';\nimport { DashboardWidget } from '../Dashboard';\nimport { DASHBOARD_COMPONENT_NAME } from '../../../constants/dashboard';\nimport { UserProfileStoreContext } from '../../../stores/userProfileStore/userProfileStoreContext';\nimport { DashboardContext } from '../Dashboard/context/DashboardContext';\nimport type {\n DashboardEpiCurveSettings,\n EpiCurveWidgetData,\n} from '../../../models/dashboard';\n\nimport { EpiCurveBarChart } from './EpiCurveBarChart';\nimport { EpiCurveStackedAreaChart } from './EpiCurveStackedAreaChart';\n\nconst echartsCore = {\n dispose,\n getInstanceByDom,\n init,\n};\n\nregisterECharts([TooltipComponent, GridComponent, DataZoomComponent, BarChart, LineChart, CanvasRenderer]);\n\nexport type ChartType = 'area' | 'bar';\n\nexport const EpiCurveWidget = () => {\n const { t } = useTranslation();\n const [contextMenuConfig, setContextMenuConfig] = useState<ContextMenuConfigWithPosition | null>(null);\n const [chartType, setChartType] = useState<ChartType>('bar');\n const chartRef = useRef<EChartsReact>(null);\n const dashboardContext = use(DashboardContext);\n const userProfileStore = use(UserProfileStoreContext);\n\n const dashboardStore = use(DashboardStoreContext);\n const stratification = useStore(dashboardStore, (state) => state.stratification);\n const isDataLoading = useStore(dashboardStore, (state) => state.isDataLoading);\n const sortedData = useStore(dashboardStore, (state) => state.sortedData);\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const updateWidgetData = useStore(dashboardStore, (state) => state.updateWidgetData);\n const epiCurveWidgetData = useStore(dashboardStore, (state) => state.getWidgetData<EpiCurveWidgetData>(DASHBOARD_COMPONENT_NAME.EPI_CURVE));\n const setFilterValue = useStore(dashboardStore, (state) => state.setFilterValue);\n const filterDimensions = useStore(dashboardStore, (state) => state.filterDimensions);\n const timeDims = useMemo(() => CaseTypeUtil.getDims(completeCaseType, [CaseDbDimType.TIME]), [completeCaseType]);\n const isIncludeMissingValuesInAreaChartEnabled = useStore(userProfileStore, (state) => (state.dashboardWidgetSettings[DASHBOARD_COMPONENT_NAME.EPI_CURVE] as DashboardEpiCurveSettings).isIncludeMissingValuesInAreaChartEnabled);\n const [focussedDate, setFocussedDate] = useState<string>(null);\n const [col, setCol] = useState<CaseDbCol>(null);\n const colLabel = col?.label ?? '';\n\n const onEpiContextMenuClose = useCallback(() => {\n setContextMenuConfig(null);\n setFocussedDate(null);\n }, []);\n\n const lineListCaseCount = useMemo(() => {\n return DashboardUtil.getCaseCount(sortedData);\n }, [sortedData]);\n\n\n // Auto-switch to bar chart if stratification is disabled while showing area chart\n useEffect(() => {\n if (!stratification && chartType === 'area') {\n setChartType('bar');\n }\n }, [stratification, chartType]);\n\n const primaryMenu = useMemo<MenuItemData[]>(() => {\n return [\n {\n active: chartType === 'bar',\n callback: () => {\n setChartType('bar');\n },\n label: t`Bar chart`,\n leftIcon: <LeaderboardIcon />,\n },\n {\n active: chartType === 'area',\n callback: () => {\n setChartType('area');\n },\n disabled: !stratification,\n label: t`Normalized stacked area chart`,\n leftIcon: <AreaChartIcon />,\n },\n ];\n }, [t, chartType, stratification]);\n\n const titleMenu = useMemo<MenuItemData>(() => {\n let label: string;\n if (col) {\n label = t('Epi curve: {{label}}', { label: col.label });\n } else {\n label = t`Epi curve`;\n }\n\n const menu: MenuItemData = {\n disabled: !timeDims.length,\n items: [],\n label,\n tooltip: col ? completeCaseType.ref_cols[col.ref_col_id].description : undefined,\n };\n\n completeCaseType.ordered_dim_ids.map(x => completeCaseType.dims[x]).filter(dim => {\n const refDim = completeCaseType.ref_dims[dim.ref_dim_id];\n return refDim.dim_type === CaseDbDimType.TIME;\n }).forEach((dim) => {\n if (menu.items.length) {\n menu.items.at(-1).divider = true;\n }\n completeCaseType.ordered_col_ids_by_dim[dim.id].map(id => completeCaseType.cols[id]).forEach((c) => {\n menu.items.push({\n active: !!(c.id === col?.id),\n callback: () => {\n updateWidgetData<EpiCurveWidgetData>(DASHBOARD_COMPONENT_NAME.EPI_CURVE, { columnId: c.id });\n setCol(c);\n },\n label: c.label,\n tooltip: c.description,\n });\n });\n });\n\n return menu;\n }, [col, completeCaseType, t, timeDims.length, updateWidgetData]);\n\n useEffect(() => {\n if (col) {\n return;\n }\n if (!timeDims.length) {\n return;\n }\n if (epiCurveWidgetData.columnId) {\n setCol(CaseTypeUtil.getCols(completeCaseType).find(c => c.id === epiCurveWidgetData.columnId));\n } else if (sortedData.length) {\n setCol(EpiCurveUtil.getPreferredTimeColumn(\n completeCaseType,\n sortedData,\n CaseTypeUtil.getCols(completeCaseType, completeCaseType.case_date_dim_id),\n ));\n }\n }, [col, completeCaseType, epiCurveWidgetData.columnId, timeDims, sortedData]);\n\n const items = useMemo(() => {\n if (!col) {\n return [];\n }\n return EpiCurveUtil.getSortedItems(completeCaseType, sortedData, [col]);\n }, [col, sortedData, completeCaseType]);\n\n const epiCurveCaseCount = useMemo(() => {\n return items.reduce((prev, current) => {\n return prev + current.value;\n }, 0) ?? 0;\n }, [items]);\n\n const getXAxisLabel = useCallback((value: Date): string => {\n if (!col) {\n return null;\n }\n\n return EpiCurveUtil.getXAxisLabel(completeCaseType.ref_cols[col.ref_col_id].col_type, value);\n }, [col, completeCaseType.ref_cols]);\n\n const xAxisIntervals = useMemo<Date[]>(() => {\n if (!col) {\n return [];\n }\n return EpiCurveUtil.getXAxisIntervals(completeCaseType.ref_cols[col.ref_col_id].col_type, items);\n }, [col, completeCaseType.ref_cols, items]);\n\n const onChartCaseIdsChange = useCallback((caseIds: string[]) => {\n dashboardContext.highlight({\n caseIds,\n origin: DASHBOARD_COMPONENT_NAME.EPI_CURVE,\n });\n }, [dashboardContext]);\n\n const onChartPointMouseUp = useCallback((payload: { caseIds: string[]; focussedDate: string; mouseEvent: MouseEvent }) => {\n setFocussedDate(payload.focussedDate);\n setContextMenuConfig({\n caseIds: payload.caseIds,\n mouseEvent: payload.mouseEvent,\n position: {\n left: payload.mouseEvent?.clientX,\n top: payload.mouseEvent?.clientY,\n },\n });\n }, []);\n\n const onChartReady = useCallback((chart: EChartsType) => {\n const dom = chart.getDom();\n dom?.setAttribute('aria-label', t('Epidemiological curve showing the number of cases over time ({{label}})', { label: colLabel }));\n dom?.setAttribute('role', 'img');\n }, [colLabel, t]);\n\n const onShowOnlySelectedDateMenuItemClick = useCallback(async (onMenuClose: () => void) => {\n if (!isString(focussedDate) || !col?.id) {\n onMenuClose();\n return;\n }\n const dateDimension = filterDimensions.find(filterDimension => filterDimension.filterIds.includes(col.id));\n const dateColumnId = dateDimension.preferredFilterId;\n\n let fromDate: Date;\n let toDate: Date;\n\n if (focussedDate.match(/^\\d{4}$/)) {\n const date = parse(focussedDate, DATE_FORMAT.YEAR, new Date());\n fromDate = startOfYear(date);\n toDate = endOfYear(date);\n // year\n } else if (focussedDate.match(/^\\d{4}-\\d{2}$/)) {\n // month\n const date = parse(focussedDate, DATE_FORMAT.YEAR_MONTH, new Date());\n fromDate = startOfMonth(date);\n toDate = lastDayOfMonth(date);\n } else if (focussedDate.match(/^\\d{4}-\\d{2}-\\d{2}$/)) {\n // full date\n const date = parse(focussedDate, DATE_FORMAT.DATE, new Date());\n fromDate = date;\n toDate = date;\n } else if (focussedDate.match(/^\\d{4}-W\\d{2}$/)) {\n // week\n const date = parse(focussedDate, DATE_FORMAT.YEAR_WEEK, new Date(), {\n useAdditionalWeekYearTokens: true,\n });\n fromDate = startOfISOWeek(date);\n toDate = endOfISOWeek(date);\n } else if (focussedDate.match(/^\\d{4}-Q\\d$/)) {\n // quarter\n const date = parse(focussedDate, DATE_FORMAT.YEAR_QUARTER, new Date());\n fromDate = startOfQuarter(date);\n toDate = endOfQuarter(date);\n }\n\n if (fromDate && toDate) {\n await setFilterValue(dateColumnId, [fromDate, toDate]);\n }\n\n onMenuClose();\n }, [focussedDate, col, filterDimensions, setFilterValue]);\n\n const getEpiContextMenuExtraItems = useCallback((onMenuClose: () => void): ReactElement => {\n if (!focussedDate) {\n return null;\n }\n return (\n <MenuItem\n divider\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={async () => await onShowOnlySelectedDateMenuItemClick(onMenuClose)}\n >\n <ListItemIcon>\n <FilterAltIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t('Filter (show only {{date}})', { date: focussedDate })}\n </ListItemText>\n </MenuItem>\n );\n }, [focussedDate, onShowOnlySelectedDateMenuItemClick, t]);\n\n const missingCasesCount = lineListCaseCount - epiCurveCaseCount;\n const missingCasesPercentage = missingCasesCount > 0 ? round(missingCasesCount / lineListCaseCount * 100, 1) : 0;\n const canShowWidget = epiCurveCaseCount > 0 && timeDims.length > 0;\n\n const widgetUnavailableReason = useMemo<ReactElement | string>(() => {\n if (canShowWidget) {\n return;\n }\n if (!timeDims.length) {\n return t`No time column found.`;\n }\n if (!lineListCaseCount) {\n return t`No cases found.`;\n }\n if (!col) {\n return t`No time column selected.`;\n }\n if (!epiCurveCaseCount) {\n return t`No cases with valid date- / time information found for the selected column.`;\n }\n return null;\n }, [canShowWidget, col, epiCurveCaseCount, lineListCaseCount, t, timeDims.length]);\n\n\n useEffect(() => {\n const emitDownloadOptions = () => {\n EventBusService.getInstance().emit('onDownloadOptionsChanged', {\n disabled: !canShowWidget,\n items: [\n {\n callback: () => CaseDbDownloadUtil.downloadEchartsImage(t`Epi curve`, chartRef.current.getEchartsInstance(), 'png', completeCaseType, t),\n label: t`Save as PNG`,\n },\n {\n callback: () => CaseDbDownloadUtil.downloadEchartsImage(t`Epi curve`, chartRef.current.getEchartsInstance(), 'jpeg', completeCaseType, t),\n label: t`Save as JPEG`,\n },\n ],\n zone: DASHBOARD_COMPONENT_NAME.EPI_CURVE,\n zoneLabel: t`Epi curve`,\n });\n };\n emitDownloadOptions();\n const eventBusManager = EventBusService.getInstance();\n eventBusManager.addEventListener('onDownloadOptionsRequested', emitDownloadOptions);\n return () => {\n eventBusManager.emit('onDownloadOptionsChanged', {\n items: null,\n zone: DASHBOARD_COMPONENT_NAME.EPI_CURVE,\n zoneLabel: t`Epi curve`,\n });\n eventBusManager.removeEventListener('onDownloadOptionsRequested', emitDownloadOptions);\n };\n }, [completeCaseType, canShowWidget, t]);\n\n return (\n <DashboardWidget\n expandDisabled={!canShowWidget}\n isLoading={isDataLoading}\n primaryMenu={primaryMenu}\n title={titleMenu}\n warningMessage={canShowWidget && epiCurveCaseCount > 0 && missingCasesCount > 0 ? t('Missing cases: {{missingCasesCount}} ({{missingCasesPercentage}}%)', { missingCasesCount, missingCasesPercentage }) : undefined}\n widgetName={DASHBOARD_COMPONENT_NAME.EPI_CURVE}\n >\n {!canShowWidget && (\n <WidgetUnavailable\n reason={widgetUnavailableReason}\n widgetLabel={t`epi curve`}\n />\n )}\n {canShowWidget && (\n <Box\n sx={{\n height: '100%',\n position: 'relative',\n }}\n >\n {items?.length > 0 && chartType === 'bar' && (\n <EpiCurveBarChart\n chartRef={chartRef}\n echarts={echartsCore}\n getXAxisLabel={getXAxisLabel}\n items={items}\n onCaseIdsChange={onChartCaseIdsChange}\n onChartReady={onChartReady}\n onPointMouseUp={onChartPointMouseUp}\n stratification={stratification}\n xAxisIntervals={xAxisIntervals}\n />\n )}\n {items?.length > 0 && chartType === 'area' && (\n <EpiCurveStackedAreaChart\n chartRef={chartRef}\n echarts={echartsCore}\n getXAxisLabel={getXAxisLabel}\n includeMissingValues={isIncludeMissingValuesInAreaChartEnabled}\n items={items}\n onCaseIdsChange={onChartCaseIdsChange}\n onChartReady={onChartReady}\n onPointMouseUp={onChartPointMouseUp}\n stratification={stratification}\n xAxisIntervals={xAxisIntervals}\n />\n )}\n <ContextMenu\n config={contextMenuConfig}\n getExtraItems={getEpiContextMenuExtraItems}\n onMenuClose={onEpiContextMenuClose}\n />\n </Box>\n )}\n </DashboardWidget>\n );\n};\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, t as i } from "./toDate.js";
|
|
2
|
-
import { a,
|
|
2
|
+
import { a, c as o, d as s, f as c, i as l, l as u, n as d, o as f, p, r as m, s as h, t as ee } from "./protectedTokens.js";
|
|
3
3
|
import { t as g } from "./parseISO.js";
|
|
4
4
|
import { CaseTypeUtil as _, SELECTION_FILTER_GROUP as v, TREE_FILTER_GROUP as y } from "../utils/CaseTypeUtil/index.js";
|
|
5
5
|
import { DataService as b } from "../classes/services/DataService/index.js";
|
|
6
6
|
import { t as x } from "i18next";
|
|
7
7
|
import { CaseDbColType as S, CaseDbDimType as C } from "@gen-epix/api-casedb";
|
|
8
|
-
import { DATE_FORMAT as
|
|
9
|
-
import { DateFilter as
|
|
10
|
-
import { DEFAULT_FILTER_GROUP as D, FILTER_MODE as O, FilterAbstract as k } from "@gen-epix/ui/classes/abstracts/FilterAbstract";
|
|
8
|
+
import { DATE_FORMAT as w } from "@gen-epix/ui-core/constants/date";
|
|
9
|
+
import { DateFilter as te, GeoFilter as ne, MultiSelectFilter as T, NumberRangeFilter as re, TextFilter as E } from "@gen-epix/ui-client-common/classes/filters";
|
|
10
|
+
import { DEFAULT_FILTER_GROUP as D, FILTER_MODE as O, FilterAbstract as k } from "@gen-epix/ui-client-common/classes/abstracts/FilterAbstract";
|
|
11
11
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addDays.js
|
|
12
12
|
function A(e, t, r) {
|
|
13
13
|
let a = i(e, r?.in);
|
|
@@ -15,32 +15,32 @@ function A(e, t, r) {
|
|
|
15
15
|
}
|
|
16
16
|
//#endregion
|
|
17
17
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getDefaultOptions.js
|
|
18
|
-
function
|
|
19
|
-
return Object.assign({},
|
|
18
|
+
function ie() {
|
|
19
|
+
return Object.assign({}, p());
|
|
20
20
|
}
|
|
21
21
|
//#endregion
|
|
22
22
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getISODay.js
|
|
23
|
-
function
|
|
23
|
+
function j(e, t) {
|
|
24
24
|
let n = i(e, t?.in).getDay();
|
|
25
25
|
return n === 0 ? 7 : n;
|
|
26
26
|
}
|
|
27
27
|
//#endregion
|
|
28
28
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/transpose.js
|
|
29
|
-
function
|
|
30
|
-
let r =
|
|
29
|
+
function M(e, t) {
|
|
30
|
+
let r = N(t) ? new t(0) : n(t, 0);
|
|
31
31
|
return r.setFullYear(e.getFullYear(), e.getMonth(), e.getDate()), r.setHours(e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds()), r;
|
|
32
32
|
}
|
|
33
|
-
function
|
|
33
|
+
function N(e) {
|
|
34
34
|
return typeof e == "function" && e.prototype?.constructor === e;
|
|
35
35
|
}
|
|
36
36
|
//#endregion
|
|
37
37
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/parse/_lib/Setter.js
|
|
38
|
-
var
|
|
38
|
+
var P = 10, F = class {
|
|
39
39
|
subPriority = 0;
|
|
40
40
|
validate(e, t) {
|
|
41
41
|
return !0;
|
|
42
42
|
}
|
|
43
|
-
},
|
|
43
|
+
}, I = class extends F {
|
|
44
44
|
constructor(e, t, n, r, i) {
|
|
45
45
|
super(), this.value = e, this.validateValue = t, this.setValue = n, this.priority = r, i && (this.subPriority = i);
|
|
46
46
|
}
|
|
@@ -50,20 +50,20 @@ var F = 10, I = class {
|
|
|
50
50
|
set(e, t, n) {
|
|
51
51
|
return this.setValue(e, t, this.value, n);
|
|
52
52
|
}
|
|
53
|
-
}, ae = class extends
|
|
54
|
-
priority =
|
|
53
|
+
}, ae = class extends F {
|
|
54
|
+
priority = P;
|
|
55
55
|
subPriority = -1;
|
|
56
56
|
constructor(e, t) {
|
|
57
57
|
super(), this.context = e || ((e) => n(t, e));
|
|
58
58
|
}
|
|
59
59
|
set(e, t) {
|
|
60
|
-
return t.timestampIsSet ? e : n(e,
|
|
60
|
+
return t.timestampIsSet ? e : n(e, M(e, this.context));
|
|
61
61
|
}
|
|
62
62
|
}, L = class {
|
|
63
63
|
run(e, t, n, r) {
|
|
64
64
|
let i = this.parse(e, t, n, r);
|
|
65
65
|
return i ? {
|
|
66
|
-
setter: new
|
|
66
|
+
setter: new I(i.value, this.validate, this.set, this.priority, this.subPriority),
|
|
67
67
|
rest: i.rest
|
|
68
68
|
} : null;
|
|
69
69
|
}
|
|
@@ -244,13 +244,13 @@ var se = class extends L {
|
|
|
244
244
|
return t.isTwoDigitYear || t.year > 0;
|
|
245
245
|
}
|
|
246
246
|
set(e, t, n, r) {
|
|
247
|
-
let i =
|
|
247
|
+
let i = f(e, r);
|
|
248
248
|
if (n.isTwoDigitYear) {
|
|
249
249
|
let t = q(n.year, i);
|
|
250
|
-
return e.setFullYear(t, 0, r.firstWeekContainsDate), e.setHours(0, 0, 0, 0),
|
|
250
|
+
return e.setFullYear(t, 0, r.firstWeekContainsDate), e.setHours(0, 0, 0, 0), c(e, r);
|
|
251
251
|
}
|
|
252
252
|
let a = !("era" in t) || t.era === 1 ? n.year : 1 - n.year;
|
|
253
|
-
return e.setFullYear(a, 0, r.firstWeekContainsDate), e.setHours(0, 0, 0, 0),
|
|
253
|
+
return e.setFullYear(a, 0, r.firstWeekContainsDate), e.setHours(0, 0, 0, 0), c(e, r);
|
|
254
254
|
}
|
|
255
255
|
incompatibleTokens = [
|
|
256
256
|
"y",
|
|
@@ -274,7 +274,7 @@ var se = class extends L {
|
|
|
274
274
|
}
|
|
275
275
|
set(e, t, r) {
|
|
276
276
|
let i = n(e, 0);
|
|
277
|
-
return i.setFullYear(r, 0, 4), i.setHours(0, 0, 0, 0),
|
|
277
|
+
return i.setFullYear(r, 0, 4), i.setHours(0, 0, 0, 0), s(i);
|
|
278
278
|
}
|
|
279
279
|
incompatibleTokens = [
|
|
280
280
|
"G",
|
|
@@ -544,7 +544,7 @@ var ge = class extends L {
|
|
|
544
544
|
return t >= 1 && t <= 53;
|
|
545
545
|
}
|
|
546
546
|
set(e, t, n, r) {
|
|
547
|
-
return
|
|
547
|
+
return c(he(e, n, r), r);
|
|
548
548
|
}
|
|
549
549
|
incompatibleTokens = [
|
|
550
550
|
"y",
|
|
@@ -565,7 +565,7 @@ var ge = class extends L {
|
|
|
565
565
|
//#endregion
|
|
566
566
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/setISOWeek.js
|
|
567
567
|
function _e(e, t, n) {
|
|
568
|
-
let r = i(e, n?.in), a =
|
|
568
|
+
let r = i(e, n?.in), a = h(r, n) - t;
|
|
569
569
|
return r.setDate(r.getDate() - a * 7), r;
|
|
570
570
|
}
|
|
571
571
|
//#endregion
|
|
@@ -583,7 +583,7 @@ var ve = class extends L {
|
|
|
583
583
|
return t >= 1 && t <= 53;
|
|
584
584
|
}
|
|
585
585
|
set(e, t, n) {
|
|
586
|
-
return
|
|
586
|
+
return s(_e(e, n));
|
|
587
587
|
}
|
|
588
588
|
incompatibleTokens = [
|
|
589
589
|
"y",
|
|
@@ -696,8 +696,8 @@ var ve = class extends L {
|
|
|
696
696
|
//#endregion
|
|
697
697
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/setDay.js
|
|
698
698
|
function Y(e, t, n) {
|
|
699
|
-
let r =
|
|
700
|
-
return A(o, t < 0 || t > 6 ? t - (
|
|
699
|
+
let r = p(), a = n?.weekStartsOn ?? n?.locale?.options?.weekStartsOn ?? r.weekStartsOn ?? r.locale?.options?.weekStartsOn ?? 0, o = i(e, n?.in), s = o.getDay(), c = (t % 7 + 7) % 7, l = 7 - a;
|
|
700
|
+
return A(o, t < 0 || t > 6 ? t - (s + l) % 7 : (c + l) % 7 - (s + l) % 7, n);
|
|
701
701
|
}
|
|
702
702
|
//#endregion
|
|
703
703
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/parse/_lib/parsers/DayParser.js
|
|
@@ -902,7 +902,7 @@ var Ce = class extends L {
|
|
|
902
902
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/setISODay.js
|
|
903
903
|
function Ee(e, t, n) {
|
|
904
904
|
let r = i(e, n?.in);
|
|
905
|
-
return A(r, t -
|
|
905
|
+
return A(r, t - j(r, n), n);
|
|
906
906
|
}
|
|
907
907
|
//#endregion
|
|
908
908
|
//#region ../../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/parse/_lib/parsers/ISODayParser.js
|
|
@@ -1238,7 +1238,7 @@ var De = class extends L {
|
|
|
1238
1238
|
}
|
|
1239
1239
|
}
|
|
1240
1240
|
set(e, t, r) {
|
|
1241
|
-
return t.timestampIsSet ? e : n(e, e.getTime() -
|
|
1241
|
+
return t.timestampIsSet ? e : n(e, e.getTime() - u(e) - r);
|
|
1242
1242
|
}
|
|
1243
1243
|
incompatibleTokens = [
|
|
1244
1244
|
"t",
|
|
@@ -1257,7 +1257,7 @@ var De = class extends L {
|
|
|
1257
1257
|
}
|
|
1258
1258
|
}
|
|
1259
1259
|
set(e, t, r) {
|
|
1260
|
-
return t.timestampIsSet ? e : n(e, e.getTime() -
|
|
1260
|
+
return t.timestampIsSet ? e : n(e, e.getTime() - u(e) - r);
|
|
1261
1261
|
}
|
|
1262
1262
|
incompatibleTokens = [
|
|
1263
1263
|
"t",
|
|
@@ -1316,22 +1316,22 @@ var De = class extends L {
|
|
|
1316
1316
|
T: new Ve()
|
|
1317
1317
|
}, Ue = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g, We = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g, X = /^'([^]*?)'?$/, Ge = /''/g, Ke = /\S/, qe = /[a-zA-Z]/;
|
|
1318
1318
|
function Z(e, t, r, a) {
|
|
1319
|
-
let
|
|
1320
|
-
if (!t) return e ?
|
|
1321
|
-
let
|
|
1322
|
-
firstWeekContainsDate:
|
|
1323
|
-
weekStartsOn:
|
|
1324
|
-
locale:
|
|
1319
|
+
let s = () => n(a?.in || r, NaN), c = ie(), u = a?.locale ?? c.locale ?? o, f = a?.firstWeekContainsDate ?? a?.locale?.options?.firstWeekContainsDate ?? c.firstWeekContainsDate ?? c.locale?.options?.firstWeekContainsDate ?? 1, p = a?.weekStartsOn ?? a?.locale?.options?.weekStartsOn ?? c.weekStartsOn ?? c.locale?.options?.weekStartsOn ?? 0;
|
|
1320
|
+
if (!t) return e ? s() : i(r, a?.in);
|
|
1321
|
+
let h = {
|
|
1322
|
+
firstWeekContainsDate: f,
|
|
1323
|
+
weekStartsOn: p,
|
|
1324
|
+
locale: u
|
|
1325
1325
|
}, g = [new ae(a?.in, r)], _ = t.match(We).map((e) => {
|
|
1326
1326
|
let t = e[0];
|
|
1327
|
-
if (t in
|
|
1328
|
-
let n =
|
|
1329
|
-
return n(e,
|
|
1327
|
+
if (t in l) {
|
|
1328
|
+
let n = l[t];
|
|
1329
|
+
return n(e, u.formatLong);
|
|
1330
1330
|
}
|
|
1331
1331
|
return e;
|
|
1332
1332
|
}).join("").match(Ue), v = [];
|
|
1333
1333
|
for (let n of _) {
|
|
1334
|
-
!a?.useAdditionalWeekYearTokens &&
|
|
1334
|
+
!a?.useAdditionalWeekYearTokens && d(n) && m(n, t, e), !a?.useAdditionalDayOfYearTokens && ee(n) && m(n, t, e);
|
|
1335
1335
|
let r = n[0], i = He[r];
|
|
1336
1336
|
if (i) {
|
|
1337
1337
|
let { incompatibleTokens: t } = i;
|
|
@@ -1343,22 +1343,22 @@ function Z(e, t, r, a) {
|
|
|
1343
1343
|
token: r,
|
|
1344
1344
|
fullToken: n
|
|
1345
1345
|
});
|
|
1346
|
-
let a = i.run(e, n,
|
|
1347
|
-
if (!a) return
|
|
1346
|
+
let a = i.run(e, n, u.match, h);
|
|
1347
|
+
if (!a) return s();
|
|
1348
1348
|
g.push(a.setter), e = a.rest;
|
|
1349
1349
|
} else {
|
|
1350
1350
|
if (r.match(qe)) throw RangeError("Format string contains an unescaped latin alphabet character `" + r + "`");
|
|
1351
1351
|
if (n === "''" ? n = "'" : r === "'" && (n = Je(n)), e.indexOf(n) === 0) e = e.slice(n.length);
|
|
1352
|
-
else return
|
|
1352
|
+
else return s();
|
|
1353
1353
|
}
|
|
1354
1354
|
}
|
|
1355
|
-
if (e.length > 0 && Ke.test(e)) return
|
|
1355
|
+
if (e.length > 0 && Ke.test(e)) return s();
|
|
1356
1356
|
let y = g.map((e) => e.priority).sort((e, t) => t - e).filter((e, t, n) => n.indexOf(e) === t).map((e) => g.filter((t) => t.priority === e).sort((e, t) => t.subPriority - e.subPriority)).map((e) => e[0]), b = i(r, a?.in);
|
|
1357
|
-
if (isNaN(+b)) return
|
|
1357
|
+
if (isNaN(+b)) return s();
|
|
1358
1358
|
let x = {};
|
|
1359
1359
|
for (let e of y) {
|
|
1360
|
-
if (!e.validate(b,
|
|
1361
|
-
let t = e.set(b, x,
|
|
1360
|
+
if (!e.validate(b, h)) return s();
|
|
1361
|
+
let t = e.set(b, x, h);
|
|
1362
1362
|
Array.isArray(t) ? (b = t[0], Object.assign(x, t[1])) : b = t;
|
|
1363
1363
|
}
|
|
1364
1364
|
return b;
|
|
@@ -1403,7 +1403,7 @@ var Q = class extends k {
|
|
|
1403
1403
|
label: `${e.code} (${e.name})`,
|
|
1404
1404
|
value: e.id
|
|
1405
1405
|
}));
|
|
1406
|
-
return new
|
|
1406
|
+
return new T({
|
|
1407
1407
|
filterDimensionId: n,
|
|
1408
1408
|
filterMode: O.BACKEND,
|
|
1409
1409
|
filterPriority: D,
|
|
@@ -1451,70 +1451,72 @@ var Q = class extends k {
|
|
|
1451
1451
|
let i = t.dims[r], a = t.ref_dims[i.ref_dim_id];
|
|
1452
1452
|
t.ordered_col_ids_by_dim[r].map((e) => t.cols[e]).forEach((i) => {
|
|
1453
1453
|
let o = t.ref_cols[i.ref_col_id];
|
|
1454
|
-
if (!e.colTypeBlackList.has(o.col_type))
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1454
|
+
if (!e.colTypeBlackList.has(o.col_type)) {
|
|
1455
|
+
if (a.dim_type === C.TIME) {
|
|
1456
|
+
let t = new Date(1900, 0, 1);
|
|
1457
|
+
n.push(new te({
|
|
1458
|
+
backendFilterType: o.col_type === S.TIME_DAY ? "DATE_RANGE" : "PARTIAL_DATE_RANGE",
|
|
1459
|
+
dateParser: e.getDateParser(o),
|
|
1460
|
+
filterDimensionId: r,
|
|
1461
|
+
filterMode: O.BACKEND,
|
|
1462
|
+
filterPriority: D,
|
|
1463
|
+
id: i.id,
|
|
1464
|
+
label: i.label,
|
|
1465
|
+
maxDate: /* @__PURE__ */ new Date(),
|
|
1466
|
+
minDate: t
|
|
1467
|
+
}));
|
|
1468
|
+
} else if (a.dim_type === C.GEO) {
|
|
1469
|
+
let e = b.getInstance().data.regionSets[o.region_set_id], t = (b.getInstance().data.regionsByRegionSetId[o.region_set_id]?.map((t) => ({
|
|
1470
|
+
label: e.region_code_as_label ? t.code : t.name,
|
|
1471
|
+
value: t.id
|
|
1472
|
+
})) ?? []).sort((e, t) => e.label.localeCompare(t.label));
|
|
1473
|
+
n.push(new ne({
|
|
1474
|
+
filterDimensionId: r,
|
|
1475
|
+
filterMode: O.BACKEND,
|
|
1476
|
+
filterPriority: D,
|
|
1477
|
+
id: i.id,
|
|
1478
|
+
label: i.label,
|
|
1479
|
+
options: t
|
|
1480
|
+
}));
|
|
1481
|
+
} else if (a.dim_type === C.TEXT) n.push(e.createCategoricalFilter(i, r, t));
|
|
1482
|
+
else if (a.dim_type === C.NUMBER) [
|
|
1483
|
+
S.DECIMAL_0,
|
|
1484
|
+
S.DECIMAL_1,
|
|
1485
|
+
S.DECIMAL_2,
|
|
1486
|
+
S.DECIMAL_3,
|
|
1487
|
+
S.DECIMAL_4,
|
|
1488
|
+
S.DECIMAL_5,
|
|
1489
|
+
S.DECIMAL_6
|
|
1490
|
+
].includes(o.col_type) ? n.push(new re({
|
|
1459
1491
|
filterDimensionId: r,
|
|
1460
1492
|
filterMode: O.BACKEND,
|
|
1461
1493
|
filterPriority: D,
|
|
1462
1494
|
id: i.id,
|
|
1463
1495
|
label: i.label,
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
}));
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1496
|
+
max: i.max_value ?? Infinity,
|
|
1497
|
+
min: i.min_value ?? -Infinity
|
|
1498
|
+
})) : n.push(e.createCategoricalFilter(i, r, t));
|
|
1499
|
+
else if (a.dim_type === C.ORGANIZATION) {
|
|
1500
|
+
let e = b.getInstance().data.organizations.map((e) => ({
|
|
1501
|
+
label: e.name,
|
|
1502
|
+
value: e.id
|
|
1503
|
+
}));
|
|
1504
|
+
n.push(new T({
|
|
1505
|
+
filterDimensionId: r,
|
|
1506
|
+
filterMode: O.BACKEND,
|
|
1507
|
+
filterPriority: D,
|
|
1508
|
+
id: i.id,
|
|
1509
|
+
label: i.label,
|
|
1510
|
+
options: e
|
|
1511
|
+
}));
|
|
1512
|
+
} else n.push(new E({
|
|
1473
1513
|
filterDimensionId: r,
|
|
1474
1514
|
filterMode: O.BACKEND,
|
|
1475
1515
|
filterPriority: D,
|
|
1476
1516
|
id: i.id,
|
|
1477
|
-
label: i.label
|
|
1478
|
-
options: t
|
|
1479
|
-
}));
|
|
1480
|
-
} else if (a.dim_type === C.TEXT) n.push(e.createCategoricalFilter(i, r, t));
|
|
1481
|
-
else if (a.dim_type === C.NUMBER) [
|
|
1482
|
-
S.DECIMAL_0,
|
|
1483
|
-
S.DECIMAL_1,
|
|
1484
|
-
S.DECIMAL_2,
|
|
1485
|
-
S.DECIMAL_3,
|
|
1486
|
-
S.DECIMAL_4,
|
|
1487
|
-
S.DECIMAL_5,
|
|
1488
|
-
S.DECIMAL_6
|
|
1489
|
-
].includes(o.col_type) ? n.push(new T({
|
|
1490
|
-
filterDimensionId: r,
|
|
1491
|
-
filterMode: O.BACKEND,
|
|
1492
|
-
filterPriority: D,
|
|
1493
|
-
id: i.id,
|
|
1494
|
-
label: i.label,
|
|
1495
|
-
max: i.max_value ?? Infinity,
|
|
1496
|
-
min: i.min_value ?? -Infinity
|
|
1497
|
-
})) : n.push(e.createCategoricalFilter(i, r, t));
|
|
1498
|
-
else if (a.dim_type === C.ORGANIZATION) {
|
|
1499
|
-
let e = b.getInstance().data.organizations.map((e) => ({
|
|
1500
|
-
label: e.name,
|
|
1501
|
-
value: e.id
|
|
1502
|
-
}));
|
|
1503
|
-
n.push(new w({
|
|
1504
|
-
filterDimensionId: r,
|
|
1505
|
-
filterMode: O.BACKEND,
|
|
1506
|
-
filterPriority: D,
|
|
1507
|
-
id: i.id,
|
|
1508
|
-
label: i.label,
|
|
1509
|
-
options: e
|
|
1517
|
+
label: i.label
|
|
1510
1518
|
}));
|
|
1511
|
-
}
|
|
1512
|
-
filterDimensionId: r,
|
|
1513
|
-
filterMode: O.BACKEND,
|
|
1514
|
-
filterPriority: D,
|
|
1515
|
-
id: i.id,
|
|
1516
|
-
label: i.label
|
|
1517
|
-
}));
|
|
1519
|
+
}
|
|
1518
1520
|
});
|
|
1519
1521
|
}), n;
|
|
1520
1522
|
}
|
|
@@ -1528,7 +1530,7 @@ var Q = class extends k {
|
|
|
1528
1530
|
});
|
|
1529
1531
|
}
|
|
1530
1532
|
static getDateParser(e) {
|
|
1531
|
-
return e.col_type === S.TIME_QUARTER ? (e) => Z(e,
|
|
1533
|
+
return e.col_type === S.TIME_QUARTER ? (e) => Z(e, w.YEAR_QUARTER, /* @__PURE__ */ new Date()) : (e) => g(e);
|
|
1532
1534
|
}
|
|
1533
1535
|
};
|
|
1534
1536
|
//#endregion
|