@gen3/frontend 0.12.30 → 0.12.32
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/LICENSE +201 -0
- package/dist/dts/components/Content/TextContent.js +3 -3
- package/dist/dts/components/Content/TextContent.js.map +1 -1
- package/dist/dts/components/Login/LoginPanel.js +2 -2
- package/dist/dts/components/Login/LoginPanel.js.map +1 -1
- package/dist/dts/components/Login/LoginProvidersPanel.d.ts +1 -1
- package/dist/dts/components/Login/LoginProvidersPanel.d.ts.map +1 -1
- package/dist/dts/components/Login/LoginProvidersPanel.js +15 -8
- package/dist/dts/components/Login/LoginProvidersPanel.js.map +1 -1
- package/dist/dts/components/Login/types.d.ts +4 -0
- package/dist/dts/components/Login/types.d.ts.map +1 -1
- package/dist/dts/components/Login/types.js.map +1 -1
- package/dist/dts/components/Providers/Gen3Provider.d.ts +1 -1
- package/dist/dts/features/CohortBuilder/ExplorerTable/ArrayCellRenderer.d.ts +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.d.ts +2 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.js +2 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.d.ts +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.js +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.d.ts +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.js +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.js +12 -6
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.js.map +1 -1
- package/dist/dts/features/CohortDiscovery/CohortQueryExpression.d.ts +2 -1
- package/dist/dts/features/CohortDiscovery/CohortQueryExpression.d.ts.map +1 -1
- package/dist/dts/features/CohortDiscovery/CohortQueryExpression.js +2 -1
- package/dist/dts/features/CohortDiscovery/CohortQueryExpression.js.map +1 -1
- package/dist/dts/features/Discovery/Discovery.d.ts.map +1 -1
- package/dist/dts/features/Discovery/Discovery.js +7 -6
- package/dist/dts/features/Discovery/Discovery.js.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryDropdownTagViewer.d.ts +1 -8
- package/dist/dts/features/Discovery/DiscoveryDropdownTagViewer.d.ts.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryDropdownTagViewer.js +23 -27
- package/dist/dts/features/Discovery/DiscoveryDropdownTagViewer.js.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.d.ts +1 -3
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.d.ts.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.js +22 -23
- package/dist/dts/features/Discovery/DiscoveryIndexPanel.js.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryProvider.d.ts +6 -0
- package/dist/dts/features/Discovery/DiscoveryProvider.d.ts.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryProvider.js +7 -2
- package/dist/dts/features/Discovery/DiscoveryProvider.js.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryTable/DiscoveryTable.js +1 -1
- package/dist/dts/features/Discovery/DiscoveryTable/DiscoveryTable.js.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanel.d.ts +1 -3
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanel.d.ts.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanel.js +6 -3
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanel.js.map +1 -1
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanelTags.d.ts +7 -0
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanelTags.d.ts.map +1 -0
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanelTags.js +39 -0
- package/dist/dts/features/Discovery/DiscoveryTable/TableRenderers/RowDetailPanelTags.js.map +1 -0
- package/dist/dts/pages/TabbedCohortBuilder/TabbedCohortBuilderPage.d.ts.map +1 -1
- package/dist/dts/pages/TabbedCohortBuilder/TabbedCohortBuilderPage.js +1 -1
- package/dist/dts/pages/TabbedCohortBuilder/TabbedCohortBuilderPage.js.map +1 -1
- package/dist/index/cjs/{QueryPanel-BwtKHbn1.js → QueryPanel-sz-FVioZ.js} +2 -2
- package/dist/index/cjs/{QueryPanel-BwtKHbn1.js.map → QueryPanel-sz-FVioZ.js.map} +1 -1
- package/dist/index/cjs/{index-BB8seQLc.js → index-Bjn2PM9I.js} +531 -453
- package/dist/index/cjs/index-Bjn2PM9I.js.map +1 -0
- package/dist/index/cjs/index.js +1 -1
- package/dist/index/esm/{QueryPanel-DSqDH3j3.js → QueryPanel-7-YhRPuT.js} +2 -2
- package/dist/index/esm/{QueryPanel-DSqDH3j3.js.map → QueryPanel-7-YhRPuT.js.map} +1 -1
- package/dist/index/esm/{index-Df-CHhZ4.js → index-DxDRynQA.js} +532 -454
- package/dist/index/esm/index-DxDRynQA.js.map +1 -0
- package/dist/index/esm/index.js +1 -1
- package/dist/index.d.ts +64 -52
- package/dist/pages/cjs/{CohortBuilder-BfjTZk0Y.js → CohortBuilder-B-eEUQhE.js} +2 -2
- package/dist/pages/cjs/{CohortBuilder-BfjTZk0Y.js.map → CohortBuilder-B-eEUQhE.js.map} +1 -1
- package/dist/pages/cjs/{index-DOVSswNr.js → index-4CPJ2OlY.js} +323 -246
- package/dist/pages/cjs/index-4CPJ2OlY.js.map +1 -0
- package/dist/pages/cjs/index.js +1 -1
- package/dist/pages/esm/{CohortBuilder-BFRGbSQX.js → CohortBuilder-DAIbe43z.js} +2 -2
- package/dist/pages/esm/{CohortBuilder-BFRGbSQX.js.map → CohortBuilder-DAIbe43z.js.map} +1 -1
- package/dist/pages/esm/{index-DkUVZQPS.js → index-Dy9pEhcC.js} +323 -246
- package/dist/pages/esm/index-Dy9pEhcC.js.map +1 -0
- package/dist/pages/esm/index.js +1 -1
- package/dist/pages.d.ts +3 -0
- package/package.json +3 -3
- package/dist/index/cjs/QueryPanel-D8OUkUib.js +0 -24
- package/dist/index/cjs/QueryPanel-D8OUkUib.js.map +0 -1
- package/dist/index/cjs/index-BB8seQLc.js.map +0 -1
- package/dist/index/cjs/index-DLHpMKGF.js +0 -36786
- package/dist/index/cjs/index-DLHpMKGF.js.map +0 -1
- package/dist/index/esm/QueryPanel-oIjwIvAE.js +0 -22
- package/dist/index/esm/QueryPanel-oIjwIvAE.js.map +0 -1
- package/dist/index/esm/index-BBNceIuo.js +0 -36539
- package/dist/index/esm/index-BBNceIuo.js.map +0 -1
- package/dist/index/esm/index-Df-CHhZ4.js.map +0 -1
- package/dist/pages/cjs/index-DOVSswNr.js.map +0 -1
- package/dist/pages/esm/index-DkUVZQPS.js.map +0 -1
package/dist/index/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AISearchPageGetServerSideProps, a as AccessLevel, b as AccordionPanel, c as ActionBar, d as ActionButton, e as AdminAuthZPageGetServerSideProps, f as AiSearch, g as AiSearchPage, h as AnalysisCenter, i as AnalysisCenterWithSections, j as AnalysisEditorPage, k as AnalysisEditorPageGetServerSideProps, l as AnalysisPage, m as AnalysisPageGetServerSideProps, n as AuthzPage, B as BAD_DATA_MESSAGE, o as Banner, p as BaseModal, C as CardContainer, q as Charts, r as ClinicalDataAnalysisPage, s as ClinicalDataAnalysisServerSideProps, t as CohortActionButton, u as CohortBuilder, v as CohortDropdownActionButton, w as CohortManager, x as CohortManagerAndExpression, y as CollapsableCharts, z as CollapsableSidebar, D as ColorThemePage, E as ColorThemePageGetServerSideProps, F as ContentSource, G as CountsValue, H as CreateCredentialsAPIKeyModal, I as CrosswalkPage, J as CrosswalkPageGetServerSideProps, K as Custom403Page, L as Custom404Page, M as DAYS_IN_YEAR, N as DEFAULT_MAXIMUM, O as DEFAULT_MINIMUM, P as DEFAULT_VISIBLE_ITEMS, Q as DataDictionaryPage, R as DataLibraryPage, S as DataLibraryPageGetServerSideProps, T as DefaultAuthorizedRoutesConfig, U as DictionaryPageGetServerSideProps, V as DictionaryWithContext, W as DiscoveryCellRendererFactory, X as DiscoveryConfigProvider, Y as DiscoveryIndexPanel, Z as DiscoveryPage, _ as DiscoveryPageGetServerSideProps, $ as DownloadButton, a0 as DownloadsPanel, a1 as DropdownButton, a2 as DropdownPanel, a3 as DropdownWithIcon, a4 as EmptyTableMessage, a5 as EnumFacet, a6 as EnumFacetChart, a7 as ErrorCard, a8 as ExactValueFacet, a9 as ExplorerPage, aa as ExplorerPageGetServerSideProps, ab as ExplorerPageGetServerSidePropsForConfigId, ac as ExplorerTable, ad as ExplorerTableCellRendererFactory, ae as ExplorerTableDetailsPanelFactory, af as FacetControlsHeader, ag as FacetExpander, ah as FacetSelector, ai as FacetSortPanel, aj as FacetTabs, ak as FiltersPanel, al as FirstTimeModal, am as Footer, an as Gen3Button, ao as Gen3ButtonReverse, ap as Gen3Link, aq as Gen3ModalsProvider, ar as Gen3Provider, as as GqlQueryEditor, at as Header, au as HoverLink, av as IconButton, aw as JSONObjectDownloadButton, ax as LandingPage, ay as LandingPageGetServerSideProps, az as LoginButton, aA as LoginPage, aB as LoginPageGetServerSideProps, aC as LoginPanel, aD as LoginProvidersPanel, aE as MessageCard, aF as MessagePage, aG as MetadataDictionary, aH as MinutesToMilliseconds, aI as MultiSelectValueFacet, aJ as NavPageLayout, aK as NavigationBar, aL as NavigationButton, aM as NoAccessModal, aN as NotebookLitePage, aO as NotebookLitePageGetStaticProps, aP as Profile, aQ as ProfilePage, aR as ProfilePageGetServerSideProps, aS as ProfileProvider, aT as ProtectedContent, aU as ProtectedContentUI, aV as QueryExpression, aW as QueryExpressionContext, aX as QueryExpressionSection, aY as QueryPage, aZ as QueryPageGetServerSideProps, a_ as RangeFacet, a$ as ReactECharts, b0 as Repository, b1 as RepositoryPage, b2 as RepositoryPageGetServerSideProps, b3 as ResourcesFilters, b4 as SPECIAL_CASE_FIELDS, b5 as SegmentedControl, b6 as SessionExpiredModal, b7 as SinglePageStudyDetailsPanel, b8 as StaticNotebookIFrame, b9 as StudyDetailsPanel, ba as StudyGroup, bb as StudyGroupPanel, bc as StudyProvider, bd as SubmissionPage, be as SubmissionPageGetServerSideProps, bf as TabbedCohortBuilder, bg as TabbedCohortBuilderPage, bh as TabbedCohortBuilderPageGetServerSideProps, bi as TabbedPanel, bj as TableXPositionContext, bk as TagCloud, bl as TailwindConfig, bm as TopBar, bn as UploadJSONButton, bo as User, bp as WarningCard, bq as Workspace, br as WorkspaceNoAccessPage, bs as WorkspaceNoAccessPageServerSideProps, bt as WorkspacePage, bu as WorkspacePageGetServerSideProps, bv as accessibleFieldName, bw as addIntersectionToIncludes, bx as addUnion, by as analysisApiCohortDiscovery, bz as capitalize, bA as classifyFacets, bB as compareKeysAscending, bC as compareKeysDescending, bD as computeRowSpan, bE as convertMinutesToMilliseconds, bF as convertPathsToTree, bG as convertSecondsToMilliseconds, bH as convertToStringArray, bI as createCSSVariables, bJ as createLabelFromHistogramData, bK as createMantineTheme, bL as credentialsLogin, bM as credentialsLogout, bN as extractObjectKey, bO as extractRangeValues, bP as filterAggregationsDataKeys, bQ as focusStyles, bR as gen3Modals, bS as getAllFieldsFromFilterConfigs, bT as getByPath, bU as getCurrentUnixTimestamp, bV as getFormattedTimestamp, bW as getHighResolutionTimestamp, bX as getNavPageLayoutPropsFromConfig, bY as getParamsValueAsString, bZ as getTagInfo, b_ as hasOwnProperty, b$ as isArrayOfString, c0 as isEnumFacetResponse, c1 as isHeaderMetadata, c2 as isPropertyKey, c3 as isTextTransform, c4 as isTimeGreaterThan, c5 as itemsInCart, c6 as mapFacetSortToSortType, c7 as measureExecutionTime, c8 as processBucketData, c9 as processDefinedRangeData, ca as processLabel, cb as processRangeData, cc as processRangeKeyLabel, cd as registerCohortBuilderDefaultPreviewRenderers, ce as registerCohortDiscoveryApp, cf as registerCohortSimilarityApp, cg as registerDefaultDiscoveryDataLoaders, ch as registerDiscoveryDefaultCellRenderers, ci as registerDownloadButtonAction, cj as registerExplorerDefaultCellRenderers, ck as registerIGVApp, cl as registerMetadataSchemaApp, cm as removeIntersectionFromEnum, cn as removeKey, co as removeMultipleSlashes, cp as removeUnion, cq as resourcePathFromProjectID, cr as sessionLogout, cs as sessionToken, ct as stripTrailingSlash, cu as toDisplayName, cv as truncateString, cw as unixTimeToString, cx as updateFacetEnum, cy as useClearFilters, cz as useDiscoveryContext, cA as useExtractEnumFilterValues, cB as useExtractRangeFilterValues, cC as useFieldNameToLabel, cD as useGetFacetFilters, cE as useGuppyActionButton, cF as useUpdateFilters, cG as useUpdateFiltersFlat, cH as userHasMethodForServiceOnResource, cI as validateObjectHasRequiredFields } from './index-
|
|
1
|
+
export { A as AISearchPageGetServerSideProps, a as AccessLevel, b as AccordionPanel, c as ActionBar, d as ActionButton, e as AdminAuthZPageGetServerSideProps, f as AiSearch, g as AiSearchPage, h as AnalysisCenter, i as AnalysisCenterWithSections, j as AnalysisEditorPage, k as AnalysisEditorPageGetServerSideProps, l as AnalysisPage, m as AnalysisPageGetServerSideProps, n as AuthzPage, B as BAD_DATA_MESSAGE, o as Banner, p as BaseModal, C as CardContainer, q as Charts, r as ClinicalDataAnalysisPage, s as ClinicalDataAnalysisServerSideProps, t as CohortActionButton, u as CohortBuilder, v as CohortDropdownActionButton, w as CohortManager, x as CohortManagerAndExpression, y as CollapsableCharts, z as CollapsableSidebar, D as ColorThemePage, E as ColorThemePageGetServerSideProps, F as ContentSource, G as CountsValue, H as CreateCredentialsAPIKeyModal, I as CrosswalkPage, J as CrosswalkPageGetServerSideProps, K as Custom403Page, L as Custom404Page, M as DAYS_IN_YEAR, N as DEFAULT_MAXIMUM, O as DEFAULT_MINIMUM, P as DEFAULT_VISIBLE_ITEMS, Q as DataDictionaryPage, R as DataLibraryPage, S as DataLibraryPageGetServerSideProps, T as DefaultAuthorizedRoutesConfig, U as DictionaryPageGetServerSideProps, V as DictionaryWithContext, W as DiscoveryCellRendererFactory, X as DiscoveryConfigProvider, Y as DiscoveryIndexPanel, Z as DiscoveryPage, _ as DiscoveryPageGetServerSideProps, $ as DownloadButton, a0 as DownloadsPanel, a1 as DropdownButton, a2 as DropdownPanel, a3 as DropdownWithIcon, a4 as EmptyTableMessage, a5 as EnumFacet, a6 as EnumFacetChart, a7 as ErrorCard, a8 as ExactValueFacet, a9 as ExplorerPage, aa as ExplorerPageGetServerSideProps, ab as ExplorerPageGetServerSidePropsForConfigId, ac as ExplorerTable, ad as ExplorerTableCellRendererFactory, ae as ExplorerTableDetailsPanelFactory, af as FacetControlsHeader, ag as FacetExpander, ah as FacetSelector, ai as FacetSortPanel, aj as FacetTabs, ak as FiltersPanel, al as FirstTimeModal, am as Footer, an as Gen3Button, ao as Gen3ButtonReverse, ap as Gen3Link, aq as Gen3ModalsProvider, ar as Gen3Provider, as as GqlQueryEditor, at as Header, au as HoverLink, av as IconButton, aw as JSONObjectDownloadButton, ax as LandingPage, ay as LandingPageGetServerSideProps, az as LoginButton, aA as LoginPage, aB as LoginPageGetServerSideProps, aC as LoginPanel, aD as LoginProvidersPanel, aE as MessageCard, aF as MessagePage, aG as MetadataDictionary, aH as MinutesToMilliseconds, aI as MultiSelectValueFacet, aJ as NavPageLayout, aK as NavigationBar, aL as NavigationButton, aM as NoAccessModal, aN as NotebookLitePage, aO as NotebookLitePageGetStaticProps, aP as Profile, aQ as ProfilePage, aR as ProfilePageGetServerSideProps, aS as ProfileProvider, aT as ProtectedContent, aU as ProtectedContentUI, aV as QueryExpression, aW as QueryExpressionContext, aX as QueryExpressionSection, aY as QueryPage, aZ as QueryPageGetServerSideProps, a_ as RangeFacet, a$ as ReactECharts, b0 as Repository, b1 as RepositoryPage, b2 as RepositoryPageGetServerSideProps, b3 as ResourcesFilters, b4 as SPECIAL_CASE_FIELDS, b5 as SegmentedControl, b6 as SessionExpiredModal, b7 as SinglePageStudyDetailsPanel, b8 as StaticNotebookIFrame, b9 as StudyDetailsPanel, ba as StudyGroup, bb as StudyGroupPanel, bc as StudyProvider, bd as SubmissionPage, be as SubmissionPageGetServerSideProps, bf as TabbedCohortBuilder, bg as TabbedCohortBuilderPage, bh as TabbedCohortBuilderPageGetServerSideProps, bi as TabbedPanel, bj as TableXPositionContext, bk as TagCloud, bl as TailwindConfig, bm as TopBar, bn as UploadJSONButton, bo as User, bp as WarningCard, bq as Workspace, br as WorkspaceNoAccessPage, bs as WorkspaceNoAccessPageServerSideProps, bt as WorkspacePage, bu as WorkspacePageGetServerSideProps, bv as accessibleFieldName, bw as addIntersectionToIncludes, bx as addUnion, by as analysisApiCohortDiscovery, bz as capitalize, bA as classifyFacets, bB as compareKeysAscending, bC as compareKeysDescending, bD as computeRowSpan, bE as convertMinutesToMilliseconds, bF as convertPathsToTree, bG as convertSecondsToMilliseconds, bH as convertToStringArray, bI as createCSSVariables, bJ as createLabelFromHistogramData, bK as createMantineTheme, bL as credentialsLogin, bM as credentialsLogout, bN as extractObjectKey, bO as extractRangeValues, bP as filterAggregationsDataKeys, bQ as focusStyles, bR as gen3Modals, bS as getAllFieldsFromFilterConfigs, bT as getByPath, bU as getCurrentUnixTimestamp, bV as getFormattedTimestamp, bW as getHighResolutionTimestamp, bX as getNavPageLayoutPropsFromConfig, bY as getParamsValueAsString, bZ as getTagInfo, b_ as hasOwnProperty, b$ as isArrayOfString, c0 as isEnumFacetResponse, c1 as isHeaderMetadata, c2 as isPropertyKey, c3 as isTextTransform, c4 as isTimeGreaterThan, c5 as itemsInCart, c6 as mapFacetSortToSortType, c7 as measureExecutionTime, c8 as processBucketData, c9 as processDefinedRangeData, ca as processLabel, cb as processRangeData, cc as processRangeKeyLabel, cd as registerCohortBuilderDefaultPreviewRenderers, ce as registerCohortDiscoveryApp, cf as registerCohortSimilarityApp, cg as registerDefaultDiscoveryDataLoaders, ch as registerDiscoveryDefaultCellRenderers, ci as registerDownloadButtonAction, cj as registerExplorerDefaultCellRenderers, ck as registerIGVApp, cl as registerMetadataSchemaApp, cm as removeIntersectionFromEnum, cn as removeKey, co as removeMultipleSlashes, cp as removeUnion, cq as resourcePathFromProjectID, cr as sessionLogout, cs as sessionToken, ct as stripTrailingSlash, cu as toDisplayName, cv as truncateString, cw as unixTimeToString, cx as updateFacetEnum, cy as useClearFilters, cz as useDiscoveryContext, cA as useExtractEnumFilterValues, cB as useExtractRangeFilterValues, cC as useFieldNameToLabel, cD as useGetFacetFilters, cE as useGuppyActionButton, cF as useUpdateFilters, cG as useUpdateFiltersFlat, cH as userHasMethodForServiceOnResource, cI as validateObjectHasRequiredFields } from './index-DxDRynQA.js';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
4
4
|
import '@mantine/core';
|
package/dist/index.d.ts
CHANGED
|
@@ -82,11 +82,15 @@ interface Gen3LoginPanelConfig {
|
|
|
82
82
|
}
|
|
83
83
|
interface LoginConfig extends Partial<Gen3LoginPanelConfig>, Gen3AppConfigData {
|
|
84
84
|
topContent?: ReadonlyArray<TextContentProps>;
|
|
85
|
+
loginProviderExtra?: {
|
|
86
|
+
[key: string]: ReadonlyArray<TextContentProps>;
|
|
87
|
+
};
|
|
85
88
|
bottomContent?: ReadonlyArray<TextContentProps>;
|
|
86
89
|
showCredentialsLogin?: boolean;
|
|
87
90
|
}
|
|
88
91
|
interface LoginSelectedProps {
|
|
89
92
|
readonly handleLoginSelected: (_url: string) => void;
|
|
93
|
+
readonly loginProviderExtra?: LoginConfig["loginProviderExtra"];
|
|
90
94
|
}
|
|
91
95
|
declare enum LoginButtonVisibility {
|
|
92
96
|
Hidden = "hide",
|
|
@@ -316,7 +320,7 @@ interface LoginButtonProps {
|
|
|
316
320
|
}
|
|
317
321
|
declare const LoginButton: ({ icon, hideText, className, tooltip, visibility, externalLoginUrl, }: LoginButtonProps) => react_jsx_runtime.JSX.Element | null;
|
|
318
322
|
|
|
319
|
-
declare const LoginProvidersPanel: ({ handleLoginSelected }: LoginSelectedProps) => react_jsx_runtime.JSX.Element;
|
|
323
|
+
declare const LoginProvidersPanel: ({ handleLoginSelected, loginProviderExtra }: LoginSelectedProps) => react_jsx_runtime.JSX.Element;
|
|
320
324
|
|
|
321
325
|
declare const LoginPanel: (loginConfig: LoginConfig) => react_jsx_runtime.JSX.Element;
|
|
322
326
|
|
|
@@ -1604,6 +1608,54 @@ declare const NavPageLayout: ({ headerProps, footerProps, mainProps, headerMetad
|
|
|
1604
1608
|
|
|
1605
1609
|
declare const Banner: React__default.FC<BannerProps>;
|
|
1606
1610
|
|
|
1611
|
+
interface DiscoveryIndexPanelProps {
|
|
1612
|
+
indexSelector: ReactNode | null;
|
|
1613
|
+
}
|
|
1614
|
+
/**
|
|
1615
|
+
* DiscoveryIndexPanel is a React functional component that renders a discovery panel interface.
|
|
1616
|
+
* It includes features such as search, sorting, filtering, charts, export functionality, and a discovery table.
|
|
1617
|
+
* The component uses hooks for handling state, API data loading, and interface interactions.
|
|
1618
|
+
*
|
|
1619
|
+
* @param {Object} props - The properties object passed to the component.
|
|
1620
|
+
* @param {Object} props.discoveryConfig - Configuration object for setting up the discovery panel.
|
|
1621
|
+
* @param {Object} props.discoveryConfig.features - Defines enabled features (e.g., search, charts, export).
|
|
1622
|
+
* @param {Object} props.discoveryConfig.minimalFieldMapping - Field mapping configuration, such as `uid`.
|
|
1623
|
+
* @param {JSX.Element} props.indexSelector - React component for selecting an index in the discovery panel.
|
|
1624
|
+
*
|
|
1625
|
+
* @return {JSX.Element} A fully featured discovery interface including search functionality, a table, charts, filters, and more.
|
|
1626
|
+
*/
|
|
1627
|
+
declare const DiscoveryIndexPanel: ({ indexSelector }: DiscoveryIndexPanelProps) => react_jsx_runtime.JSX.Element;
|
|
1628
|
+
|
|
1629
|
+
declare const TagCloud: () => react_jsx_runtime.JSX.Element;
|
|
1630
|
+
|
|
1631
|
+
interface CellRenderFunctionProps<T = any, C extends MRT_RowData = JSONObject> {
|
|
1632
|
+
value: T;
|
|
1633
|
+
cell?: MRT_Cell<C>;
|
|
1634
|
+
row?: MRT_Row<C>;
|
|
1635
|
+
}
|
|
1636
|
+
/**
|
|
1637
|
+
* A Cell Renderer Function is a function that takes a value and returns a ReactElement
|
|
1638
|
+
* This is used to create a custom cell render a cell in the Discovery Table. The Discovery config
|
|
1639
|
+
* is available from the DiscoveryContext.
|
|
1640
|
+
* @param props: value and optional cell object
|
|
1641
|
+
*/
|
|
1642
|
+
type CellRendererFunction<T = JSONObject> = (props: CellRenderFunctionProps, params?: T) => ReactElement;
|
|
1643
|
+
|
|
1644
|
+
declare const registerDiscoveryDefaultCellRenderers: () => void;
|
|
1645
|
+
|
|
1646
|
+
interface CellRendererFunctionCatalogEntry {
|
|
1647
|
+
[key: string]: CellRendererFunction;
|
|
1648
|
+
}
|
|
1649
|
+
declare class DiscoveryCellRendererFactory {
|
|
1650
|
+
private static instance;
|
|
1651
|
+
private cellRendererCatalog;
|
|
1652
|
+
private constructor();
|
|
1653
|
+
static getInstance(): DiscoveryCellRendererFactory;
|
|
1654
|
+
static getCellRenderer(type: string, functionName: string): CellRendererFunction;
|
|
1655
|
+
static registerCellRenderer(type: string, functionName: string, func: CellRendererFunction): void;
|
|
1656
|
+
static registerCellRendererCatalog(catalog: Record<string, CellRendererFunctionCatalogEntry>): void;
|
|
1657
|
+
}
|
|
1658
|
+
|
|
1607
1659
|
interface SummaryStatisticsConfig {
|
|
1608
1660
|
name: string;
|
|
1609
1661
|
field: string;
|
|
@@ -1713,55 +1765,6 @@ interface DiscoveryConfig extends Gen3AppConfigData {
|
|
|
1713
1765
|
metadataConfig: Array<DiscoveryIndexConfig>;
|
|
1714
1766
|
}
|
|
1715
1767
|
|
|
1716
|
-
interface DiscoveryIndexPanelProps {
|
|
1717
|
-
discoveryConfig: DiscoveryIndexConfig;
|
|
1718
|
-
indexSelector: ReactNode | null;
|
|
1719
|
-
}
|
|
1720
|
-
/**
|
|
1721
|
-
* DiscoveryIndexPanel is a React functional component that renders a discovery panel interface.
|
|
1722
|
-
* It includes features such as search, sorting, filtering, charts, export functionality, and a discovery table.
|
|
1723
|
-
* The component uses hooks for handling state, API data loading, and interface interactions.
|
|
1724
|
-
*
|
|
1725
|
-
* @param {Object} props - The properties object passed to the component.
|
|
1726
|
-
* @param {Object} props.discoveryConfig - Configuration object for setting up the discovery panel.
|
|
1727
|
-
* @param {Object} props.discoveryConfig.features - Defines enabled features (e.g., search, charts, export).
|
|
1728
|
-
* @param {Object} props.discoveryConfig.minimalFieldMapping - Field mapping configuration, such as `uid`.
|
|
1729
|
-
* @param {JSX.Element} props.indexSelector - React component for selecting an index in the discovery panel.
|
|
1730
|
-
*
|
|
1731
|
-
* @return {JSX.Element} A fully featured discovery interface including search functionality, a table, charts, filters, and more.
|
|
1732
|
-
*/
|
|
1733
|
-
declare const DiscoveryIndexPanel: ({ discoveryConfig, indexSelector, }: DiscoveryIndexPanelProps) => react_jsx_runtime.JSX.Element;
|
|
1734
|
-
|
|
1735
|
-
declare const TagCloud: () => react_jsx_runtime.JSX.Element;
|
|
1736
|
-
|
|
1737
|
-
interface CellRenderFunctionProps<T = any, C extends MRT_RowData = JSONObject> {
|
|
1738
|
-
value: T;
|
|
1739
|
-
cell?: MRT_Cell<C>;
|
|
1740
|
-
row?: MRT_Row<C>;
|
|
1741
|
-
}
|
|
1742
|
-
/**
|
|
1743
|
-
* A Cell Renderer Function is a function that takes a value and returns a ReactElement
|
|
1744
|
-
* This is used to create a custom cell render a cell in the Discovery Table. The Discovery config
|
|
1745
|
-
* is available from the DiscoveryContext.
|
|
1746
|
-
* @param props: value and optional cell object
|
|
1747
|
-
*/
|
|
1748
|
-
type CellRendererFunction<T = JSONObject> = (props: CellRenderFunctionProps, params?: T) => ReactElement;
|
|
1749
|
-
|
|
1750
|
-
declare const registerDiscoveryDefaultCellRenderers: () => void;
|
|
1751
|
-
|
|
1752
|
-
interface CellRendererFunctionCatalogEntry {
|
|
1753
|
-
[key: string]: CellRendererFunction;
|
|
1754
|
-
}
|
|
1755
|
-
declare class DiscoveryCellRendererFactory {
|
|
1756
|
-
private static instance;
|
|
1757
|
-
private cellRendererCatalog;
|
|
1758
|
-
private constructor();
|
|
1759
|
-
static getInstance(): DiscoveryCellRendererFactory;
|
|
1760
|
-
static getCellRenderer(type: string, functionName: string): CellRendererFunction;
|
|
1761
|
-
static registerCellRenderer(type: string, functionName: string, func: CellRendererFunction): void;
|
|
1762
|
-
static registerCellRendererCatalog(catalog: Record<string, CellRendererFunctionCatalogEntry>): void;
|
|
1763
|
-
}
|
|
1764
|
-
|
|
1765
1768
|
interface ActionBarProps extends ExportFromDiscoveryActions {
|
|
1766
1769
|
selectedResources: any[];
|
|
1767
1770
|
}
|
|
@@ -1780,6 +1783,12 @@ declare const AiSearch: ({ placeholder, uidForStorage, }: AiSearchProps) => reac
|
|
|
1780
1783
|
|
|
1781
1784
|
interface DiscoveryProviderValue {
|
|
1782
1785
|
discoveryConfig: DiscoveryIndexConfig;
|
|
1786
|
+
selectedTags: {
|
|
1787
|
+
[key: string]: boolean;
|
|
1788
|
+
};
|
|
1789
|
+
setSelectedTags: React__default.Dispatch<React__default.SetStateAction<{
|
|
1790
|
+
[key: string]: boolean;
|
|
1791
|
+
}>>;
|
|
1783
1792
|
}
|
|
1784
1793
|
declare const useDiscoveryContext: () => DiscoveryProviderValue;
|
|
1785
1794
|
declare const DiscoveryProvider: ({ children, discoveryIndexConfig, }: {
|
|
@@ -1950,6 +1959,7 @@ interface QueryExpressionContextProps extends QueryExpressionHooks {
|
|
|
1950
1959
|
displayOnly: boolean;
|
|
1951
1960
|
cohortName: string;
|
|
1952
1961
|
cohortId: string | null;
|
|
1962
|
+
fieldsAreFlat: boolean;
|
|
1953
1963
|
shouldShowSummary?: (field: string, count: number) => boolean;
|
|
1954
1964
|
}
|
|
1955
1965
|
declare const QueryExpressionContext: React__default.Context<QueryExpressionContextProps>;
|
|
@@ -1959,6 +1969,7 @@ interface QueryExpressionSectionProps {
|
|
|
1959
1969
|
showImportExport?: boolean;
|
|
1960
1970
|
displayOnly?: boolean;
|
|
1961
1971
|
showTitle?: boolean;
|
|
1972
|
+
fieldsAreFlat?: boolean;
|
|
1962
1973
|
}
|
|
1963
1974
|
declare const QueryExpressionSection: React__default.FC<QueryExpressionSectionProps>;
|
|
1964
1975
|
|
|
@@ -1966,8 +1977,9 @@ interface QueryExpressionProps {
|
|
|
1966
1977
|
index: string;
|
|
1967
1978
|
shouldShowSummary?: (field: string, count: number) => boolean;
|
|
1968
1979
|
hooks?: Partial<QueryExpressionHooks>;
|
|
1980
|
+
fieldsAreFlat?: boolean;
|
|
1969
1981
|
}
|
|
1970
|
-
declare const QueryExpression: ({ index, shouldShowSummary, hooks, }: QueryExpressionProps) => react_jsx_runtime.JSX.Element;
|
|
1982
|
+
declare const QueryExpression: ({ index, shouldShowSummary, hooks, fieldsAreFlat, }: QueryExpressionProps) => react_jsx_runtime.JSX.Element;
|
|
1971
1983
|
|
|
1972
1984
|
interface CohortManagerProps {
|
|
1973
1985
|
size?: string;
|
|
@@ -2650,7 +2662,7 @@ declare const createMantineTheme: (fonts: Fonts, colors: Record<string, TenStrin
|
|
|
2650
2662
|
headings?: {
|
|
2651
2663
|
fontFamily?: string | undefined;
|
|
2652
2664
|
fontWeight?: string | undefined;
|
|
2653
|
-
textWrap?: "wrap" | "nowrap" | "balance" | "
|
|
2665
|
+
textWrap?: "wrap" | "nowrap" | "balance" | "stable" | "pretty" | undefined;
|
|
2654
2666
|
sizes?: {
|
|
2655
2667
|
h1?: {
|
|
2656
2668
|
fontSize?: string | undefined;
|
|
@@ -6,7 +6,7 @@ var useDeepCompare = require('use-deep-compare');
|
|
|
6
6
|
var core$1 = require('@mantine/core');
|
|
7
7
|
var _ = require('lodash');
|
|
8
8
|
var core = require('@gen3/core');
|
|
9
|
-
var index = require('./index-
|
|
9
|
+
var index = require('./index-4CPJ2OlY.js');
|
|
10
10
|
var hooks = require('@mantine/hooks');
|
|
11
11
|
require('victory');
|
|
12
12
|
require('react-icons/bs');
|
|
@@ -488,4 +488,4 @@ const CohortBuilder = ({ explorerConfig, sharedFiltersMap = null, tabsLayout = '
|
|
|
488
488
|
|
|
489
489
|
exports.default = CohortBuilder;
|
|
490
490
|
exports.useGetCurrentCohort = useGetCurrentCohort;
|
|
491
|
-
//# sourceMappingURL=CohortBuilder-
|
|
491
|
+
//# sourceMappingURL=CohortBuilder-B-eEUQhE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CohortBuilder-BfjTZk0Y.js","sources":["../../../src/utils/strings.ts","../../../src/features/CohortBuilder/CohortPanel.tsx","../../../src/utils/layout.tsx","../../../src/features/CohortBuilder/CohortBuilder.tsx"],"sourcesContent":["import { capitalize } from 'lodash';\n\nexport const stripTrailingSlash = (str: string): string => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\nexport const SPECIAL_CASE_FIELDS = {\n icd_10_code: 'ICD-10 Code',\n};\n\nexport const toDisplayName = (field: string): string => {\n const parsed = field.split('.');\n const fieldName = parsed.at(-1);\n\n if (!fieldName) return 'NotSet';\n\n return fieldName\n .split('_')\n .map((w) => capitalize(w))\n .join(' ');\n};\n\nexport const removeMultipleSlashes = (str: string): string => {\n return str.replace(/\\/+/g, '/');\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { partial } from 'lodash';\nimport {\n Accessibility,\n AggregationsData,\n clearCohortFilters,\n CombineMode,\n CoreState,\n extractEnumFilterValue,\n FacetDefinition,\n FacetType,\n isIntersection,\n selectAllCohortFiltersCollapsed,\n selectCurrentCohortId,\n selectIndexFilters,\n selectSharedFilters,\n toggleCohortBuilderAllFilters,\n useCoreDispatch,\n useCoreSelector,\n useGetAggsQuery,\n useGetCountsQuery,\n} from '@gen3/core';\nimport { type CohortPanelConfiguration } from './types';\nimport { Charts, CollapsableCharts, type SummaryChart, } from '../../components/charts';\nimport { ErrorCard } from '../../components/MessageCards';\nimport { useMediaQuery } from '@mantine/hooks';\nimport {\n classifyFacets,\n EnumFacetDataHooks,\n extractRangeValues,\n FacetDataHooks,\n getAllFieldsFromFilterConfigs,\n processBucketData,\n processRangeData,\n removeIntersectionFromEnum,\n useGetFacetFilters,\n useUpdateFilters,\n} from '../../components/facets';\nimport { useClearFilters, useFieldNameToLabel, } from '../../components/facets/hooks';\nimport ExplorerTable from './ExplorerTable/ExplorerTable';\nimport CountsValue from '../../components/counts/CountsValue';\nimport DownloadsPanel from './DownloadsPanel';\nimport { useDeepCompareCallback, useDeepCompareEffect, useDeepCompareMemo, } from 'use-deep-compare';\nimport { toDisplayName } from '../../utils';\nimport {\n useCohortFilterCombineState,\n useFilterExpandedState,\n useSetCohortFilterCombineState,\n useToggleExpandFilter,\n} from './hooks';\nimport DropdownPanel from '../../components/facets/Panels/DropdownPanel';\nimport QueryExpression from './QueryExpression';\n\nconst EmptyData = {};\n\n/**\n * The main component that houses the charts, tabs, modal\n * filters, tables, buttons of the exploration page.\n *\n * All of these params come directly from the top level exploration page configuration file or\n * explorer config in a legacy gitops.json file.\n * @example see packages/sampleCommons/config/gen3/explorer.json\n */\n\ninterface CohortPanelConfigurationWithAccessLevel extends CohortPanelConfiguration {\n showAccessLevel?: boolean;\n}\n\n/**\n * CohortPanel is a React component that provides an interactive interface for cohort exploration and filtering.\n * It integrates with data services and facilitates visualization, filtering, and analysis tasks.\n *\n * @param {Object} props The properties required to configure the CohortPanel component.\n * @param {Object} props.guppyConfig Configuration object for Guppy, including field mappings and data type information.\n * @param {Object} props.filters Configuration for filter tabs, including filter fields and layout.\n * @param {Object} [props.charts={}] Optional set of chart configuration objects for rendering summaries.\n * @param {Object} [props.chartsSection] Optional configuration for an additional section of charts.\n * @param {Object} props.table Reference to the table configuration or component for displaying data.\n * @param {string} props.tabTitle Title for the filter tab section.\n * @param {Object[]|undefined} props.dropdowns Dropdown menu configuration, allowing for additional filter options or actions.\n * @param {Object[]|undefined} props.buttons List of button configurations for actions such as downloads.\n * @param {boolean} props.loginForDownload Determines whether login is required to enable download functionality.\n * @param {boolean} [props.showAccessLevel=false] Indicates if the user access level should be displayed on the panel.\n *\n * @returns {JSX.Element} Returns a JSX element rendering the CohortPanel. This includes filter options,\n * summary charts, cohort manager, and data display components.\n */\nexport const CohortPanel = ({\n guppyConfig,\n filters,\n charts = {},\n chartsSection = undefined,\n table,\n tabTitle,\n dropdowns,\n buttons,\n loginForDownload,\n showAccessLevel = false,\n}: CohortPanelConfigurationWithAccessLevel): JSX.Element => {\n const isSm = useMediaQuery('(min-width: 639px)');\n const isMd = useMediaQuery('(min-width: 1373px)');\n const isXl = useMediaQuery('(min-width: 1600px)');\n const [accessLevel, setAccessLevel] = useState<Accessibility>(\n Accessibility.ALL,\n );\n const sharedFiltersMap = useCoreSelector((state: CoreState) =>\n selectSharedFilters(state),\n );\n\n const defaultDropdowns = useMemo(() => dropdowns ?? {}, [dropdowns]);\n const defaultButtons = useMemo(() => buttons ?? [], [buttons]);\n\n const numCols = useMemo(() => {\n if (isSm) return 1;\n if (isMd) return 2;\n if (isXl) return 4;\n return 3;\n }, [isSm, isMd, isXl]);\n\n const index = guppyConfig.dataType;\n const indexPrefix = guppyConfig?.indexPrefix ?? '';\n const fields = useMemo(\n () => getAllFieldsFromFilterConfigs(filters?.tabs ?? []),\n [filters?.tabs],\n );\n\n const coreDispatch = useCoreDispatch();\n\n const [facetDefinitions, setFacetDefinitions] = useState<\n Record<string, FacetDefinition>\n >({});\n\n const [summaryCharts, setSummaryCharts] = useState<\n Record<string, SummaryChart>\n >({});\n\n const cohortFilters = useCoreSelector((state: CoreState) =>\n selectIndexFilters(state, index),\n );\n\n const cohortId = useCoreSelector((state: CoreState) =>\n selectCurrentCohortId(state),\n );\n\n const allFiltersCollapsed = useCoreSelector((state) =>\n selectAllCohortFiltersCollapsed(state, index),\n );\n\n const toggleAllFiltersExpanded = (expand: boolean) => {\n coreDispatch(toggleCohortBuilderAllFilters({ expand, index }));\n };\n\n const clearAllFilters = useCallback(() => {\n coreDispatch(clearCohortFilters({ index }));\n }, [coreDispatch, index]);\n\n const {\n data,\n isSuccess,\n isFetching: isAggsQueryFetching,\n isError: isAggsQueryError,\n } = useGetAggsQuery({\n type: index,\n fields: fields,\n filters: cohortFilters,\n accessibility: accessLevel,\n queryId: cohortId,\n indexPrefix: indexPrefix,\n });\n\n const chartKeys = useDeepCompareMemo(\n () => [...Object.keys(chartsSection?.charts ?? {}), ...Object.keys(charts)],\n [chartsSection?.charts, charts],\n );\n\n const {\n data: chartData,\n isSuccess: isChartSuccess,\n isFetching: isChartFetching,\n isError: isChartError,\n } = useGetAggsQuery(\n {\n type: index,\n fields: chartKeys,\n filters: cohortFilters,\n accessibility: accessLevel,\n filterSelf: true,\n queryId: cohortId,\n indexPrefix: indexPrefix,\n },\n {\n skip: chartKeys.length === 0,\n },\n );\n\n const cleanChartData = useDeepCompareMemo(() => {\n if (isChartSuccess && chartData) {\n const cleanedData: AggregationsData = {};\n const totalCount = chartData._totalCount[0]?.count;\n Object.keys(summaryCharts).forEach((key) => {\n if (!(key in chartData)) {\n return;\n } // handle missing key in data\n // remove empty keys\n cleanedData[key] = chartData[key].filter((x) =>\n typeof x.key !== 'string' ? true : x.key !== '',\n );\n\n const facetDef = facetDefinitions?.[key];\n if (facetDef?.excludeValues) {\n cleanedData[key] = cleanedData[key].filter((x) =>\n typeof x.key !== 'string'\n ? true\n : facetDef?.excludeValues?.includes(String(x.key)) === false,\n );\n }\n\n if (cleanedData[key].length === 0 && totalCount) {\n // if no keys adds back no data\n cleanedData[key] = [{ key: 'no data', count: totalCount }];\n }\n });\n return cleanedData;\n }\n return chartData;\n }, [chartData, isChartSuccess, summaryCharts]);\n\n const getEnumFacetData = useDeepCompareCallback(\n (field: string) => {\n let filters = undefined;\n let combineMode: CombineMode = 'or';\n if (field in cohortFilters.root) {\n if (isIntersection(cohortFilters.root[field])) {\n const intersectionFilters = removeIntersectionFromEnum(\n cohortFilters.root[field],\n );\n if (intersectionFilters) {\n filters = extractEnumFilterValue(intersectionFilters);\n combineMode = 'and';\n }\n } else {\n filters = extractEnumFilterValue(cohortFilters.root[field]);\n }\n }\n\n return {\n data: processBucketData(data?.[field]),\n enumFilters: filters,\n combineMode: combineMode,\n isSuccess: isSuccess,\n };\n },\n [cohortFilters.root, data, isSuccess],\n );\n\n const getRangeFacetData = useDeepCompareCallback(\n (field: string) => {\n return {\n data: processRangeData(data?.[field]),\n filters: extractRangeValues(cohortFilters.root[field]),\n isSuccess: isSuccess,\n };\n },\n [data, cohortFilters.root, isSuccess],\n );\n\n // Set up the hooks for the facet components to use based on the required index\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const facetDataHooks: Record<FacetType, FacetDataHooks | EnumFacetDataHooks> =\n useDeepCompareMemo(() => {\n return {\n // TODO: see if there a better way to do this\n enum: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useGetCombineMode: partial(useCohortFilterCombineState, index),\n useSetCombineMode: partial(useSetCohortFilterCombineState, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n exact: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n multiselect: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n range: {\n useGetFacetData: getRangeFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n };\n }, [getEnumFacetData, getRangeFacetData, index]);\n\n // Set the facet definitions based on the data only the first time the data is loaded\n useDeepCompareEffect(() => {\n if (isSuccess && Object.keys(facetDefinitions).length === 0) {\n const configFacetDefs = filters?.tabs.reduce(\n (acc: Record<string, FacetDefinition>, tab) => {\n return { ...tab.fieldsConfig, ...acc };\n },\n {},\n );\n\n const facetDefs = classifyFacets(\n data,\n index,\n guppyConfig?.fieldMapping ?? [],\n configFacetDefs ?? {},\n sharedFiltersMap,\n );\n setFacetDefinitions(facetDefs);\n\n // setup summary charts since nested fields can be listed by the split field name\n const chartDefinitions = chartsSection?.charts ?? charts;\n\n const summaryCharts = Object.keys(chartDefinitions).reduce(\n (acc, field) => {\n let chartField = field;\n if (facetDefs?.[field] === undefined) {\n const res = Object.values(facetDefs).filter((def) => {\n return def.dataField === field;\n });\n if (res.length > 0) {\n chartField = res[0].field;\n }\n }\n return {\n ...acc,\n [chartField]: chartDefinitions[field],\n };\n },\n {},\n );\n\n setSummaryCharts(summaryCharts);\n }\n }, [\n isSuccess,\n data,\n facetDefinitions,\n index,\n guppyConfig.fieldMapping,\n charts,\n chartsSection,\n ]);\n\n const {\n data: counts,\n isFetching: isCountsFetching,\n isError: isCountsError,\n } = useGetCountsQuery({\n type: index,\n filters: cohortFilters,\n accessibility: accessLevel,\n queryId: cohortId,\n });\n\n if (isCountsError || isAggsQueryError) {\n return <ErrorCard message=\"Unable to fetch data from server\" />; // TODO: replace with configurable message\n }\n\n return (\n <div className=\"flex flex-col mt-3 relative px-4 bg-base-lightest w-full\">\n <QueryExpression index={index} />\n\n {/* Flex container to ensure proper 25/75 split */}\n <div className=\"flex w-full\">\n {/* Left panel - 25% */}\n <div\n id=\"cohort-builder-filters\"\n className=\"flex-shrink-0 md:w-1/4 lg:w-1/5\"\n >\n {filters?.tabs && (\n <DropdownPanel\n filters={filters}\n tabTitle={tabTitle}\n facetDefinitions={facetDefinitions}\n facetDataHooks={facetDataHooks}\n onAccessChange={setAccessLevel}\n accessLevel={accessLevel}\n showAccessLevel={showAccessLevel}\n allFiltersCollapsed={allFiltersCollapsed}\n toggleAllFiltersExpanded={toggleAllFiltersExpanded}\n clearAllFilters={clearAllFilters}\n />\n )}\n </div>\n\n {/* Right content - 75% */}\n <div\n id=\"cohort-builder-content\"\n className=\"flex flex-col md:w-3/4 lg:w-4/5 pl-4\"\n >\n {/* Top row with DownloadsPanel and CountsValue */}\n <div className=\"flex justify-between mb-2 ml-2\">\n <DownloadsPanel\n dropdowns={defaultDropdowns}\n buttons={defaultButtons}\n loginForDownload={loginForDownload}\n index={index}\n totalCount={counts ?? 0}\n fields={table?.fields ?? []}\n filter={cohortFilters}\n />\n <CountsValue\n label={guppyConfig?.nodeCountTitle || toDisplayName(index)}\n counts={counts}\n isFetching={isCountsFetching}\n isError={isCountsError}\n />\n </div>\n\n {/* Charts Section */}\n {chartsSection?.enabled ? (\n <CollapsableCharts\n config={{ ...chartsSection, charts: summaryCharts }}\n data={cleanChartData ?? EmptyData}\n isSuccess={isChartSuccess}\n isFetching={isChartFetching}\n isError={isChartError}\n />\n ) : (\n <Charts\n charts={summaryCharts}\n data={cleanChartData ?? EmptyData}\n counts={counts}\n isSuccess={isChartSuccess}\n isError={isChartError}\n numCols={numCols}\n />\n )}\n\n {/* Table Section */}\n {table?.enabled && (\n <div className=\"mt-2 flex flex-col\">\n <ExplorerTable\n index={index}\n tableConfig={table}\n accessibility={accessLevel}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","export const TabsLayoutToComponentProp = (\n tabsLayout?: 'left' | 'right' | 'center',\n) => {\n if (!tabsLayout) {\n return 'flex-start';\n }\n switch (tabsLayout) {\n case 'left': {\n return 'flex-start';\n }\n case 'right': {\n return 'flex-end';\n }\n case 'center': {\n return 'center';\n }\n default: {\n return 'flex-start';\n }\n }\n};\n","import React from 'react';\nimport { useDeepCompareMemo } from 'use-deep-compare';\nimport { CohortBuilderProps, CohortPanelConfiguration } from './types';\nimport { Tabs } from '@mantine/core';\nimport { CohortPanel } from './CohortPanel';\nimport {\n selectCurrentCohortId,\n setSharedFilters,\n useCoreDispatch,\n useCoreSelector,\n} from '@gen3/core';\nimport { TabsLayoutToComponentProp } from '../../utils/layout';\nimport CohortManager from './CohortManager/CohortManager';\n\nexport const useGetCurrentCohort = () => {\n return useCoreSelector((state) => selectCurrentCohortId(state));\n};\n\nconst CohortBuilder = ({\n explorerConfig,\n sharedFiltersMap = null,\n tabsLayout = 'left',\n enableCohortManager = true,\n activeTab,\n}: CohortBuilderProps) => {\n const dispatch = useCoreDispatch();\n dispatch(setSharedFilters(sharedFiltersMap ?? {}));\n\n const configuration = useDeepCompareMemo(\n () => explorerConfig,\n [explorerConfig],\n );\n\n return (\n <div className=\"flex flex-col w-full mt-2\">\n {enableCohortManager ? <CohortManager /> : null}\n <Tabs\n color=\"primary.5\"\n variant={explorerConfig[0]?.tabType}\n keepMounted={true}\n defaultValue={activeTab ?? explorerConfig[0].tabTitle}\n >\n <Tabs.List\n className=\"w-full\"\n justify={TabsLayoutToComponentProp(tabsLayout)}\n >\n {configuration.map((panelConfig: CohortPanelConfiguration) => (\n <Tabs.Tab\n value={panelConfig.tabTitle}\n key={`${panelConfig.tabTitle}-tabList`}\n >\n {panelConfig.tabTitle}\n </Tabs.Tab>\n ))}\n </Tabs.List>\n\n {configuration.map((panelConfig: CohortPanelConfiguration) => (\n <Tabs.Panel\n value={panelConfig.tabTitle}\n key={`${panelConfig.tabTitle}-tabPanel`}\n >\n <CohortPanel\n guppyConfig={panelConfig.guppyConfig}\n key={`${panelConfig.tabTitle}-CohortPanel`}\n chartsSection={panelConfig?.chartsSection}\n charts={panelConfig?.charts}\n filters={panelConfig.filters}\n tabTitle={panelConfig.tabTitle}\n table={panelConfig.table}\n dropdowns={panelConfig.dropdowns}\n buttons={panelConfig.buttons}\n loginForDownload={panelConfig.loginForDownload}\n sharedFiltersMap={panelConfig.sharedFiltersMap}\n />\n </Tabs.Panel>\n ))}\n </Tabs>\n </div>\n );\n};\n\nexport default CohortBuilder;\n"],"names":["toDisplayName","field","parsed","split","fieldName","at","map","w","capitalize","join","EmptyData","CohortPanel","guppyConfig","filters","charts","chartsSection","undefined","table","tabTitle","dropdowns","buttons","loginForDownload","showAccessLevel","isSm","useMediaQuery","isMd","isXl","accessLevel","setAccessLevel","useState","Accessibility","ALL","sharedFiltersMap","useCoreSelector","state","selectSharedFilters","defaultDropdowns","useMemo","defaultButtons","numCols","index","dataType","indexPrefix","fields","getAllFieldsFromFilterConfigs","tabs","coreDispatch","useCoreDispatch","facetDefinitions","setFacetDefinitions","summaryCharts","setSummaryCharts","cohortFilters","selectIndexFilters","cohortId","selectCurrentCohortId","allFiltersCollapsed","selectAllCohortFiltersCollapsed","toggleAllFiltersExpanded","expand","toggleCohortBuilderAllFilters","clearAllFilters","useCallback","clearCohortFilters","data","isSuccess","isFetching","isAggsQueryFetching","isError","isAggsQueryError","useGetAggsQuery","type","accessibility","queryId","chartKeys","useDeepCompareMemo","Object","keys","chartData","isChartSuccess","isChartFetching","isChartError","filterSelf","skip","length","cleanChartData","cleanedData","totalCount","_totalCount","count","forEach","key","filter","x","facetDef","excludeValues","includes","String","getEnumFacetData","useDeepCompareCallback","combineMode","root","isIntersection","intersectionFilters","removeIntersectionFromEnum","extractEnumFilterValue","processBucketData","enumFilters","getRangeFacetData","processRangeData","extractRangeValues","facetDataHooks","enum","useGetFacetData","useUpdateFacetFilters","partial","useUpdateFilters","useGetFacetFilters","useClearFilter","useClearFilters","useFilterExpanded","useFilterExpandedState","useToggleExpandFilter","useGetCombineMode","useCohortFilterCombineState","useSetCombineMode","useSetCohortFilterCombineState","useFieldNameToLabel","useTotalCounts","exact","multiselect","range","useDeepCompareEffect","configFacetDefs","reduce","acc","tab","fieldsConfig","facetDefs","classifyFacets","fieldMapping","chartDefinitions","chartField","res","values","def","dataField","counts","isCountsFetching","isCountsError","useGetCountsQuery","_jsx","ErrorCard","message","_jsxs","div","className","QueryExpression","id","DropdownPanel","onAccessChange","DownloadsPanel","CountsValue","label","nodeCountTitle","enabled","CollapsableCharts","config","Charts","ExplorerTable","tableConfig","TabsLayoutToComponentProp","tabsLayout","useGetCurrentCohort","CohortBuilder","explorerConfig","enableCohortManager","activeTab","dispatch","setSharedFilters","configuration","CohortManager","Tabs","color","variant","tabType","keepMounted","defaultValue","List","justify","panelConfig","Tab","value","Panel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CohortBuilder-B-eEUQhE.js","sources":["../../../src/utils/strings.ts","../../../src/features/CohortBuilder/CohortPanel.tsx","../../../src/utils/layout.tsx","../../../src/features/CohortBuilder/CohortBuilder.tsx"],"sourcesContent":["import { capitalize } from 'lodash';\n\nexport const stripTrailingSlash = (str: string): string => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\nexport const SPECIAL_CASE_FIELDS = {\n icd_10_code: 'ICD-10 Code',\n};\n\nexport const toDisplayName = (field: string): string => {\n const parsed = field.split('.');\n const fieldName = parsed.at(-1);\n\n if (!fieldName) return 'NotSet';\n\n return fieldName\n .split('_')\n .map((w) => capitalize(w))\n .join(' ');\n};\n\nexport const removeMultipleSlashes = (str: string): string => {\n return str.replace(/\\/+/g, '/');\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { partial } from 'lodash';\nimport {\n Accessibility,\n AggregationsData,\n clearCohortFilters,\n CombineMode,\n CoreState,\n extractEnumFilterValue,\n FacetDefinition,\n FacetType,\n isIntersection,\n selectAllCohortFiltersCollapsed,\n selectCurrentCohortId,\n selectIndexFilters,\n selectSharedFilters,\n toggleCohortBuilderAllFilters,\n useCoreDispatch,\n useCoreSelector,\n useGetAggsQuery,\n useGetCountsQuery,\n} from '@gen3/core';\nimport { type CohortPanelConfiguration } from './types';\nimport { Charts, CollapsableCharts, type SummaryChart, } from '../../components/charts';\nimport { ErrorCard } from '../../components/MessageCards';\nimport { useMediaQuery } from '@mantine/hooks';\nimport {\n classifyFacets,\n EnumFacetDataHooks,\n extractRangeValues,\n FacetDataHooks,\n getAllFieldsFromFilterConfigs,\n processBucketData,\n processRangeData,\n removeIntersectionFromEnum,\n useGetFacetFilters,\n useUpdateFilters,\n} from '../../components/facets';\nimport { useClearFilters, useFieldNameToLabel, } from '../../components/facets/hooks';\nimport ExplorerTable from './ExplorerTable/ExplorerTable';\nimport CountsValue from '../../components/counts/CountsValue';\nimport DownloadsPanel from './DownloadsPanel';\nimport { useDeepCompareCallback, useDeepCompareEffect, useDeepCompareMemo, } from 'use-deep-compare';\nimport { toDisplayName } from '../../utils';\nimport {\n useCohortFilterCombineState,\n useFilterExpandedState,\n useSetCohortFilterCombineState,\n useToggleExpandFilter,\n} from './hooks';\nimport DropdownPanel from '../../components/facets/Panels/DropdownPanel';\nimport QueryExpression from './QueryExpression';\n\nconst EmptyData = {};\n\n/**\n * The main component that houses the charts, tabs, modal\n * filters, tables, buttons of the exploration page.\n *\n * All of these params come directly from the top level exploration page configuration file or\n * explorer config in a legacy gitops.json file.\n * @example see packages/sampleCommons/config/gen3/explorer.json\n */\n\ninterface CohortPanelConfigurationWithAccessLevel extends CohortPanelConfiguration {\n showAccessLevel?: boolean;\n}\n\n/**\n * CohortPanel is a React component that provides an interactive interface for cohort exploration and filtering.\n * It integrates with data services and facilitates visualization, filtering, and analysis tasks.\n *\n * @param {Object} props The properties required to configure the CohortPanel component.\n * @param {Object} props.guppyConfig Configuration object for Guppy, including field mappings and data type information.\n * @param {Object} props.filters Configuration for filter tabs, including filter fields and layout.\n * @param {Object} [props.charts={}] Optional set of chart configuration objects for rendering summaries.\n * @param {Object} [props.chartsSection] Optional configuration for an additional section of charts.\n * @param {Object} props.table Reference to the table configuration or component for displaying data.\n * @param {string} props.tabTitle Title for the filter tab section.\n * @param {Object[]|undefined} props.dropdowns Dropdown menu configuration, allowing for additional filter options or actions.\n * @param {Object[]|undefined} props.buttons List of button configurations for actions such as downloads.\n * @param {boolean} props.loginForDownload Determines whether login is required to enable download functionality.\n * @param {boolean} [props.showAccessLevel=false] Indicates if the user access level should be displayed on the panel.\n *\n * @returns {JSX.Element} Returns a JSX element rendering the CohortPanel. This includes filter options,\n * summary charts, cohort manager, and data display components.\n */\nexport const CohortPanel = ({\n guppyConfig,\n filters,\n charts = {},\n chartsSection = undefined,\n table,\n tabTitle,\n dropdowns,\n buttons,\n loginForDownload,\n showAccessLevel = false,\n}: CohortPanelConfigurationWithAccessLevel): JSX.Element => {\n const isSm = useMediaQuery('(min-width: 639px)');\n const isMd = useMediaQuery('(min-width: 1373px)');\n const isXl = useMediaQuery('(min-width: 1600px)');\n const [accessLevel, setAccessLevel] = useState<Accessibility>(\n Accessibility.ALL,\n );\n const sharedFiltersMap = useCoreSelector((state: CoreState) =>\n selectSharedFilters(state),\n );\n\n const defaultDropdowns = useMemo(() => dropdowns ?? {}, [dropdowns]);\n const defaultButtons = useMemo(() => buttons ?? [], [buttons]);\n\n const numCols = useMemo(() => {\n if (isSm) return 1;\n if (isMd) return 2;\n if (isXl) return 4;\n return 3;\n }, [isSm, isMd, isXl]);\n\n const index = guppyConfig.dataType;\n const indexPrefix = guppyConfig?.indexPrefix ?? '';\n const fields = useMemo(\n () => getAllFieldsFromFilterConfigs(filters?.tabs ?? []),\n [filters?.tabs],\n );\n\n const coreDispatch = useCoreDispatch();\n\n const [facetDefinitions, setFacetDefinitions] = useState<\n Record<string, FacetDefinition>\n >({});\n\n const [summaryCharts, setSummaryCharts] = useState<\n Record<string, SummaryChart>\n >({});\n\n const cohortFilters = useCoreSelector((state: CoreState) =>\n selectIndexFilters(state, index),\n );\n\n const cohortId = useCoreSelector((state: CoreState) =>\n selectCurrentCohortId(state),\n );\n\n const allFiltersCollapsed = useCoreSelector((state) =>\n selectAllCohortFiltersCollapsed(state, index),\n );\n\n const toggleAllFiltersExpanded = (expand: boolean) => {\n coreDispatch(toggleCohortBuilderAllFilters({ expand, index }));\n };\n\n const clearAllFilters = useCallback(() => {\n coreDispatch(clearCohortFilters({ index }));\n }, [coreDispatch, index]);\n\n const {\n data,\n isSuccess,\n isFetching: isAggsQueryFetching,\n isError: isAggsQueryError,\n } = useGetAggsQuery({\n type: index,\n fields: fields,\n filters: cohortFilters,\n accessibility: accessLevel,\n queryId: cohortId,\n indexPrefix: indexPrefix,\n });\n\n const chartKeys = useDeepCompareMemo(\n () => [...Object.keys(chartsSection?.charts ?? {}), ...Object.keys(charts)],\n [chartsSection?.charts, charts],\n );\n\n const {\n data: chartData,\n isSuccess: isChartSuccess,\n isFetching: isChartFetching,\n isError: isChartError,\n } = useGetAggsQuery(\n {\n type: index,\n fields: chartKeys,\n filters: cohortFilters,\n accessibility: accessLevel,\n filterSelf: true,\n queryId: cohortId,\n indexPrefix: indexPrefix,\n },\n {\n skip: chartKeys.length === 0,\n },\n );\n\n const cleanChartData = useDeepCompareMemo(() => {\n if (isChartSuccess && chartData) {\n const cleanedData: AggregationsData = {};\n const totalCount = chartData._totalCount[0]?.count;\n Object.keys(summaryCharts).forEach((key) => {\n if (!(key in chartData)) {\n return;\n } // handle missing key in data\n // remove empty keys\n cleanedData[key] = chartData[key].filter((x) =>\n typeof x.key !== 'string' ? true : x.key !== '',\n );\n\n const facetDef = facetDefinitions?.[key];\n if (facetDef?.excludeValues) {\n cleanedData[key] = cleanedData[key].filter((x) =>\n typeof x.key !== 'string'\n ? true\n : facetDef?.excludeValues?.includes(String(x.key)) === false,\n );\n }\n\n if (cleanedData[key].length === 0 && totalCount) {\n // if no keys adds back no data\n cleanedData[key] = [{ key: 'no data', count: totalCount }];\n }\n });\n return cleanedData;\n }\n return chartData;\n }, [chartData, isChartSuccess, summaryCharts]);\n\n const getEnumFacetData = useDeepCompareCallback(\n (field: string) => {\n let filters = undefined;\n let combineMode: CombineMode = 'or';\n if (field in cohortFilters.root) {\n if (isIntersection(cohortFilters.root[field])) {\n const intersectionFilters = removeIntersectionFromEnum(\n cohortFilters.root[field],\n );\n if (intersectionFilters) {\n filters = extractEnumFilterValue(intersectionFilters);\n combineMode = 'and';\n }\n } else {\n filters = extractEnumFilterValue(cohortFilters.root[field]);\n }\n }\n\n return {\n data: processBucketData(data?.[field]),\n enumFilters: filters,\n combineMode: combineMode,\n isSuccess: isSuccess,\n };\n },\n [cohortFilters.root, data, isSuccess],\n );\n\n const getRangeFacetData = useDeepCompareCallback(\n (field: string) => {\n return {\n data: processRangeData(data?.[field]),\n filters: extractRangeValues(cohortFilters.root[field]),\n isSuccess: isSuccess,\n };\n },\n [data, cohortFilters.root, isSuccess],\n );\n\n // Set up the hooks for the facet components to use based on the required index\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const facetDataHooks: Record<FacetType, FacetDataHooks | EnumFacetDataHooks> =\n useDeepCompareMemo(() => {\n return {\n // TODO: see if there a better way to do this\n enum: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useGetCombineMode: partial(useCohortFilterCombineState, index),\n useSetCombineMode: partial(useSetCohortFilterCombineState, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n exact: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n multiselect: {\n useGetFacetData: getEnumFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n range: {\n useGetFacetData: getRangeFacetData,\n useUpdateFacetFilters: partial(useUpdateFilters, index),\n useGetFacetFilters: partial(useGetFacetFilters, index),\n useClearFilter: partial(useClearFilters, index),\n useFilterExpanded: partial(useFilterExpandedState, index),\n useToggleExpandFilter: partial(useToggleExpandFilter, index),\n useFieldNameToLabel: useFieldNameToLabel,\n useTotalCounts: undefined,\n },\n };\n }, [getEnumFacetData, getRangeFacetData, index]);\n\n // Set the facet definitions based on the data only the first time the data is loaded\n useDeepCompareEffect(() => {\n if (isSuccess && Object.keys(facetDefinitions).length === 0) {\n const configFacetDefs = filters?.tabs.reduce(\n (acc: Record<string, FacetDefinition>, tab) => {\n return { ...tab.fieldsConfig, ...acc };\n },\n {},\n );\n\n const facetDefs = classifyFacets(\n data,\n index,\n guppyConfig?.fieldMapping ?? [],\n configFacetDefs ?? {},\n sharedFiltersMap,\n );\n setFacetDefinitions(facetDefs);\n\n // setup summary charts since nested fields can be listed by the split field name\n const chartDefinitions = chartsSection?.charts ?? charts;\n\n const summaryCharts = Object.keys(chartDefinitions).reduce(\n (acc, field) => {\n let chartField = field;\n if (facetDefs?.[field] === undefined) {\n const res = Object.values(facetDefs).filter((def) => {\n return def.dataField === field;\n });\n if (res.length > 0) {\n chartField = res[0].field;\n }\n }\n return {\n ...acc,\n [chartField]: chartDefinitions[field],\n };\n },\n {},\n );\n\n setSummaryCharts(summaryCharts);\n }\n }, [\n isSuccess,\n data,\n facetDefinitions,\n index,\n guppyConfig.fieldMapping,\n charts,\n chartsSection,\n ]);\n\n const {\n data: counts,\n isFetching: isCountsFetching,\n isError: isCountsError,\n } = useGetCountsQuery({\n type: index,\n filters: cohortFilters,\n accessibility: accessLevel,\n queryId: cohortId,\n });\n\n if (isCountsError || isAggsQueryError) {\n return <ErrorCard message=\"Unable to fetch data from server\" />; // TODO: replace with configurable message\n }\n\n return (\n <div className=\"flex flex-col mt-3 relative px-4 bg-base-lightest w-full\">\n <QueryExpression index={index} />\n\n {/* Flex container to ensure proper 25/75 split */}\n <div className=\"flex w-full\">\n {/* Left panel - 25% */}\n <div\n id=\"cohort-builder-filters\"\n className=\"flex-shrink-0 md:w-1/4 lg:w-1/5\"\n >\n {filters?.tabs && (\n <DropdownPanel\n filters={filters}\n tabTitle={tabTitle}\n facetDefinitions={facetDefinitions}\n facetDataHooks={facetDataHooks}\n onAccessChange={setAccessLevel}\n accessLevel={accessLevel}\n showAccessLevel={showAccessLevel}\n allFiltersCollapsed={allFiltersCollapsed}\n toggleAllFiltersExpanded={toggleAllFiltersExpanded}\n clearAllFilters={clearAllFilters}\n />\n )}\n </div>\n\n {/* Right content - 75% */}\n <div\n id=\"cohort-builder-content\"\n className=\"flex flex-col md:w-3/4 lg:w-4/5 pl-4\"\n >\n {/* Top row with DownloadsPanel and CountsValue */}\n <div className=\"flex justify-between mb-2 ml-2\">\n <DownloadsPanel\n dropdowns={defaultDropdowns}\n buttons={defaultButtons}\n loginForDownload={loginForDownload}\n index={index}\n totalCount={counts ?? 0}\n fields={table?.fields ?? []}\n filter={cohortFilters}\n />\n <CountsValue\n label={guppyConfig?.nodeCountTitle || toDisplayName(index)}\n counts={counts}\n isFetching={isCountsFetching}\n isError={isCountsError}\n />\n </div>\n\n {/* Charts Section */}\n {chartsSection?.enabled ? (\n <CollapsableCharts\n config={{ ...chartsSection, charts: summaryCharts }}\n data={cleanChartData ?? EmptyData}\n isSuccess={isChartSuccess}\n isFetching={isChartFetching}\n isError={isChartError}\n />\n ) : (\n <Charts\n charts={summaryCharts}\n data={cleanChartData ?? EmptyData}\n counts={counts}\n isSuccess={isChartSuccess}\n isError={isChartError}\n numCols={numCols}\n />\n )}\n\n {/* Table Section */}\n {table?.enabled && (\n <div className=\"mt-2 flex flex-col\">\n <ExplorerTable\n index={index}\n tableConfig={table}\n accessibility={accessLevel}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","export const TabsLayoutToComponentProp = (\n tabsLayout?: 'left' | 'right' | 'center',\n) => {\n if (!tabsLayout) {\n return 'flex-start';\n }\n switch (tabsLayout) {\n case 'left': {\n return 'flex-start';\n }\n case 'right': {\n return 'flex-end';\n }\n case 'center': {\n return 'center';\n }\n default: {\n return 'flex-start';\n }\n }\n};\n","import React from 'react';\nimport { useDeepCompareMemo } from 'use-deep-compare';\nimport { CohortBuilderProps, CohortPanelConfiguration } from './types';\nimport { Tabs } from '@mantine/core';\nimport { CohortPanel } from './CohortPanel';\nimport {\n selectCurrentCohortId,\n setSharedFilters,\n useCoreDispatch,\n useCoreSelector,\n} from '@gen3/core';\nimport { TabsLayoutToComponentProp } from '../../utils/layout';\nimport CohortManager from './CohortManager/CohortManager';\n\nexport const useGetCurrentCohort = () => {\n return useCoreSelector((state) => selectCurrentCohortId(state));\n};\n\nconst CohortBuilder = ({\n explorerConfig,\n sharedFiltersMap = null,\n tabsLayout = 'left',\n enableCohortManager = true,\n activeTab,\n}: CohortBuilderProps) => {\n const dispatch = useCoreDispatch();\n dispatch(setSharedFilters(sharedFiltersMap ?? {}));\n\n const configuration = useDeepCompareMemo(\n () => explorerConfig,\n [explorerConfig],\n );\n\n return (\n <div className=\"flex flex-col w-full mt-2\">\n {enableCohortManager ? <CohortManager /> : null}\n <Tabs\n color=\"primary.5\"\n variant={explorerConfig[0]?.tabType}\n keepMounted={true}\n defaultValue={activeTab ?? explorerConfig[0].tabTitle}\n >\n <Tabs.List\n className=\"w-full\"\n justify={TabsLayoutToComponentProp(tabsLayout)}\n >\n {configuration.map((panelConfig: CohortPanelConfiguration) => (\n <Tabs.Tab\n value={panelConfig.tabTitle}\n key={`${panelConfig.tabTitle}-tabList`}\n >\n {panelConfig.tabTitle}\n </Tabs.Tab>\n ))}\n </Tabs.List>\n\n {configuration.map((panelConfig: CohortPanelConfiguration) => (\n <Tabs.Panel\n value={panelConfig.tabTitle}\n key={`${panelConfig.tabTitle}-tabPanel`}\n >\n <CohortPanel\n guppyConfig={panelConfig.guppyConfig}\n key={`${panelConfig.tabTitle}-CohortPanel`}\n chartsSection={panelConfig?.chartsSection}\n charts={panelConfig?.charts}\n filters={panelConfig.filters}\n tabTitle={panelConfig.tabTitle}\n table={panelConfig.table}\n dropdowns={panelConfig.dropdowns}\n buttons={panelConfig.buttons}\n loginForDownload={panelConfig.loginForDownload}\n sharedFiltersMap={panelConfig.sharedFiltersMap}\n />\n </Tabs.Panel>\n ))}\n </Tabs>\n </div>\n );\n};\n\nexport default CohortBuilder;\n"],"names":["toDisplayName","field","parsed","split","fieldName","at","map","w","capitalize","join","EmptyData","CohortPanel","guppyConfig","filters","charts","chartsSection","undefined","table","tabTitle","dropdowns","buttons","loginForDownload","showAccessLevel","isSm","useMediaQuery","isMd","isXl","accessLevel","setAccessLevel","useState","Accessibility","ALL","sharedFiltersMap","useCoreSelector","state","selectSharedFilters","defaultDropdowns","useMemo","defaultButtons","numCols","index","dataType","indexPrefix","fields","getAllFieldsFromFilterConfigs","tabs","coreDispatch","useCoreDispatch","facetDefinitions","setFacetDefinitions","summaryCharts","setSummaryCharts","cohortFilters","selectIndexFilters","cohortId","selectCurrentCohortId","allFiltersCollapsed","selectAllCohortFiltersCollapsed","toggleAllFiltersExpanded","expand","toggleCohortBuilderAllFilters","clearAllFilters","useCallback","clearCohortFilters","data","isSuccess","isFetching","isAggsQueryFetching","isError","isAggsQueryError","useGetAggsQuery","type","accessibility","queryId","chartKeys","useDeepCompareMemo","Object","keys","chartData","isChartSuccess","isChartFetching","isChartError","filterSelf","skip","length","cleanChartData","cleanedData","totalCount","_totalCount","count","forEach","key","filter","x","facetDef","excludeValues","includes","String","getEnumFacetData","useDeepCompareCallback","combineMode","root","isIntersection","intersectionFilters","removeIntersectionFromEnum","extractEnumFilterValue","processBucketData","enumFilters","getRangeFacetData","processRangeData","extractRangeValues","facetDataHooks","enum","useGetFacetData","useUpdateFacetFilters","partial","useUpdateFilters","useGetFacetFilters","useClearFilter","useClearFilters","useFilterExpanded","useFilterExpandedState","useToggleExpandFilter","useGetCombineMode","useCohortFilterCombineState","useSetCombineMode","useSetCohortFilterCombineState","useFieldNameToLabel","useTotalCounts","exact","multiselect","range","useDeepCompareEffect","configFacetDefs","reduce","acc","tab","fieldsConfig","facetDefs","classifyFacets","fieldMapping","chartDefinitions","chartField","res","values","def","dataField","counts","isCountsFetching","isCountsError","useGetCountsQuery","_jsx","ErrorCard","message","_jsxs","div","className","QueryExpression","id","DropdownPanel","onAccessChange","DownloadsPanel","CountsValue","label","nodeCountTitle","enabled","CollapsableCharts","config","Charts","ExplorerTable","tableConfig","TabsLayoutToComponentProp","tabsLayout","useGetCurrentCohort","CohortBuilder","explorerConfig","enableCohortManager","activeTab","dispatch","setSharedFilters","configuration","CohortManager","Tabs","color","variant","tabType","keepMounted","defaultValue","List","justify","panelConfig","Tab","value","Panel"],"mappings":"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"}
|