Skip to content

Commit adfead1

Browse files
authored
fix: current query (#890) (#3606)
1 parent 7dbe7f6 commit adfead1

File tree

4 files changed

+74
-102
lines changed

4 files changed

+74
-102
lines changed

explorer/app/viewModelBuilders/azul/anvil-cmg/common/viewModelBuilders.ts

+16-26
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { LABEL } from "@clevercanary/data-explorer-ui/lib/apis/azul/common/entities";
2-
import { Filters } from "@clevercanary/data-explorer-ui/lib/common/entities";
2+
import {
3+
Filters,
4+
SelectedFilter,
5+
} from "@clevercanary/data-explorer-ui/lib/common/entities";
36
import { CallToAction } from "@clevercanary/data-explorer-ui/lib/components/common/Button/components/CallToActionButton/callToActionButton";
47
import { CurrentQuery } from "@clevercanary/data-explorer-ui/lib/components/Export/components/ExportSummary/components/ExportCurrentQuery/exportCurrentQuery";
58
import { Summary } from "@clevercanary/data-explorer-ui/lib/components/Export/components/ExportSummary/components/ExportSelectedDataSummary/exportSelectedDataSummary";
@@ -327,9 +330,9 @@ export const buildExportCurrentQuery = (): React.ComponentProps<
327330
typeof C.ExportCurrentQuery
328331
> => {
329332
return {
330-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- filters is unused.
331-
getExportCurrentQueries: (filters: Filters, filesFacets: FileFacet[]) =>
332-
getExportCurrentQueries(filesFacets),
333+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- filesFacets is unused.
334+
getExportCurrentQueries: (filters: Filters) =>
335+
getExportCurrentQueries(filters),
333336
};
334337
};
335338

@@ -647,20 +650,16 @@ function getDatasetCallToAction(
647650

648651
/**
649652
* Returns current queries from the given selected file facets.
650-
* @param filesFacets - Files facets.
653+
* @param filters - filters.
651654
* @returns current queries.
652655
*/
653-
export function getExportCurrentQueries(
654-
filesFacets: FileFacet[]
655-
): CurrentQuery[] {
656+
export function getExportCurrentQueries(filters: Filters): CurrentQuery[] {
656657
const categoryKeyLabel = mapCategoryKeyLabel(
657658
ANVIL_CMG_CATEGORY_KEY,
658659
ANVIL_CMG_CATEGORY_LABEL
659660
);
660-
// Return all selected facets, as a list of current queries.
661-
return filesFacets
662-
.filter(isFacetSelected)
663-
.map((facet) => mapCurrentQuery(facet, categoryKeyLabel));
661+
// Return all selected filters, as a list of current queries.
662+
return filters.map((filter) => mapCurrentQuery(filter, categoryKeyLabel));
664663
}
665664

666665
/**
@@ -699,28 +698,19 @@ export function getExportSelectedDataSummary(
699698
]);
700699
}
701700

702-
/**
703-
* Returns true if the facet is selected.
704-
* @param facet - Facet.
705-
* @returns returns true if the facet is selected.
706-
*/
707-
function isFacetSelected(facet: FileFacet): boolean {
708-
return facet.selected;
709-
}
710-
711701
/**
712702
* Returns current query for the given facet.
713-
* @param facet - File facet.
703+
* @param filter - Selected filter.
714704
* @param categoryKeyLabel - Map of category key to category label.
715705
* @returns current query.
716706
*/
717707
function mapCurrentQuery(
718-
facet: FileFacet,
708+
filter: SelectedFilter,
719709
categoryKeyLabel: CategoryKeyLabel
720710
): CurrentQuery {
721-
const { name, selectedTerms } = facet;
711+
const { categoryKey, value: values } = filter;
722712
return [
723-
categoryKeyLabel.get(name) || name,
724-
selectedTerms.map(({ name }) => sanitizeString(name)),
713+
categoryKeyLabel.get(categoryKey) || categoryKey,
714+
values.map((value) => sanitizeString(value)),
725715
];
726716
}

explorer/app/viewModelBuilders/azul/hca-dcp/common/viewModelBuilders.ts

+56-74
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { LABEL } from "@clevercanary/data-explorer-ui/lib/apis/azul/common/entities";
2-
import { Filters } from "@clevercanary/data-explorer-ui/lib/common/entities";
2+
import {
3+
Filters,
4+
SelectedFilter,
5+
} from "@clevercanary/data-explorer-ui/lib/common/entities";
36
import { Breadcrumb } from "@clevercanary/data-explorer-ui/lib/components/common/Breadcrumbs/breadcrumbs";
47
import {
58
Key,
@@ -424,27 +427,6 @@ export const buildEstimateCellCount = (
424427
};
425428
};
426429

427-
/**
428-
* Build props for entity related ExportCurrentQuery component.
429-
* @returns model to be used as props for the ExportCurrentQuery component.
430-
*/
431-
export const buildExportEntityCurrentQuery = (): React.ComponentProps<
432-
typeof C.ExportCurrentQuery
433-
> => {
434-
return {
435-
getExportCurrentQueries: (
436-
filters: Filters,
437-
filesFacets: FileFacet[]
438-
): CurrentQuery[] => {
439-
// Grab the project facet.
440-
const projectFacet = getSelectedProjectFacet(filesFacets);
441-
// Initialize the selected facets with the project facet.
442-
const facets = projectFacet ? [projectFacet] : [];
443-
return getExportCurrentQueries(filesFacets, facets);
444-
},
445-
};
446-
};
447-
448430
/**
449431
* Build props for ExportCurrentQuery component.
450432
* @returns model to be used as props for the ExportCurrentQuery component.
@@ -454,7 +436,7 @@ export const buildExportCurrentQuery = (): React.ComponentProps<
454436
> => {
455437
return {
456438
getExportCurrentQueries: (filters: Filters, filesFacets: FileFacet[]) =>
457-
getExportCurrentQueries(filesFacets),
439+
getExportCurrentQueries(filters, filesFacets),
458440
};
459441
};
460442

@@ -1070,28 +1052,23 @@ export function getEstimatedCellCount(
10701052

10711053
/**
10721054
* Returns current queries from the given selected file facets.
1055+
* @param filters - Filters.
10731056
* @param filesFacets - Files facets.
1074-
* @param facets - Selected facets i.e. for entity related queries.
10751057
* @returns current queries.
10761058
*/
10771059
export function getExportCurrentQueries(
1078-
filesFacets: FileFacet[],
1079-
facets: FileFacet[] = []
1060+
filters: Filters,
1061+
filesFacets: FileFacet[]
10801062
): CurrentQuery[] {
10811063
const categoryKeyLabel = mapCategoryKeyLabel(
10821064
HCA_DCP_CATEGORY_KEY,
10831065
HCA_DCP_CATEGORY_LABEL
10841066
);
1085-
// Grab all selected facets.
1086-
// Entity related current queries should always return the project facet as a selected facet as there is no equivalent
1087-
// file facet for project id.
1088-
return filesFacets
1089-
.filter(isFacetSelected)
1090-
.reduce((acc, facet) => {
1091-
acc.push(facet);
1092-
return acc;
1093-
}, facets)
1094-
.map((facet) => mapCurrentQuery(facet, categoryKeyLabel));
1067+
// Return all selected filters, as a list of current queries.
1068+
// Replace any selected filter projectIds with project facet terms.
1069+
return filters
1070+
.map((filter) => mapProjectIdToProject(filter, filesFacets))
1071+
.map((filter) => mapCurrentQuery(filter, categoryKeyLabel));
10951072
}
10961073

10971074
/**
@@ -1135,6 +1112,17 @@ function getExportMethodHero(
11351112
};
11361113
}
11371114

1115+
/**
1116+
* Returns file facet term names.
1117+
* @param facet - File facet.
1118+
* @returns file facet term names.
1119+
*/
1120+
function getFacetTerms(facet: FileFacet | undefined): string[] {
1121+
return (
1122+
facet?.terms.map(({ name }) => sanitizeString(name)) || [LABEL.UNSPECIFIED]
1123+
);
1124+
}
1125+
11381126
/**
11391127
* Returns generated matrices actions column def.
11401128
* @returns actions column def.
@@ -1324,27 +1312,6 @@ export function getProjectBreadcrumbs(
13241312
return breadcrumbs;
13251313
}
13261314

1327-
/**
1328-
* Returns project facet as a selected facet, using the project terms as the selected terms.
1329-
* @param filesFacets - Files facets.
1330-
* @returns selected project facet.
1331-
*/
1332-
function getSelectedProjectFacet(
1333-
filesFacets: FileFacet[]
1334-
): FileFacet | undefined {
1335-
const projectFacet = findProjectFacet(filesFacets);
1336-
if (!projectFacet) {
1337-
return;
1338-
}
1339-
return {
1340-
...projectFacet,
1341-
name: HCA_DCP_CATEGORY_KEY.PROJECT,
1342-
selected: true, // Forcing project facet to be selected.
1343-
selectedTermCount: projectFacet.terms.length, // Selected term count will be equal to the number of terms.
1344-
selectedTerms: projectFacet.terms, // Selected terms will equal all terms.
1345-
};
1346-
}
1347-
13481315
/**
13491316
* Returns project file formats from the projects API response.
13501317
* @param projectsResponse - Response returned from projects API response.
@@ -1383,37 +1350,32 @@ function getProjectTitleUrl(projectsResponse: ProjectsResponse): string {
13831350
}
13841351

13851352
/**
1386-
* Returns project file facet.
1353+
* Returns file facet for the given facet name.
1354+
* @param facetName - Facet name.
13871355
* @param filesFacets - Files facets.
13881356
* @returns project file facet.
13891357
*/
1390-
function findProjectFacet(filesFacets: FileFacet[]): FileFacet | undefined {
1391-
return filesFacets.find(({ name }) => name === HCA_DCP_CATEGORY_KEY.PROJECT);
1392-
}
1393-
1394-
/**
1395-
* Returns true if the facet is selected.
1396-
* @param facet - Facet.
1397-
* @returns returns true if the facet is selected.
1398-
*/
1399-
function isFacetSelected(facet: FileFacet): boolean {
1400-
return facet.selected;
1358+
function findFacet(
1359+
facetName: string,
1360+
filesFacets: FileFacet[]
1361+
): FileFacet | undefined {
1362+
return filesFacets.find(({ name }) => name === facetName);
14011363
}
14021364

14031365
/**
14041366
* Returns current query for the given facet.
1405-
* @param facet - File facet.
1367+
* @param filter - Selected filter.
14061368
* @param categoryKeyLabel - Map of category key to category label.
14071369
* @returns current query.
14081370
*/
14091371
function mapCurrentQuery(
1410-
facet: FileFacet,
1372+
filter: SelectedFilter,
14111373
categoryKeyLabel: CategoryKeyLabel
14121374
): CurrentQuery {
1413-
const { name, selectedTerms } = facet;
1375+
const { categoryKey, value: values } = filter;
14141376
return [
1415-
categoryKeyLabel.get(name) || name,
1416-
selectedTerms.map(({ name }) => sanitizeString(name)),
1377+
categoryKeyLabel.get(categoryKey) || categoryKey,
1378+
values.map((value) => sanitizeString(value)),
14171379
];
14181380
}
14191381

@@ -1441,6 +1403,26 @@ function mapFileTypeCounts(
14411403
);
14421404
}
14431405

1406+
/**
1407+
* Returns the project facet name and terms as a selected filter in lieu of selected filter of category project id.
1408+
* @param filter - Selected filter.
1409+
* @param filesFacets - Files facets.
1410+
* @returns selected filter.
1411+
*/
1412+
function mapProjectIdToProject(
1413+
filter: SelectedFilter,
1414+
filesFacets: FileFacet[]
1415+
): SelectedFilter {
1416+
if (filter.categoryKey === HCA_DCP_CATEGORY_KEY.PROJECT_ID) {
1417+
const projectFacet = findFacet(HCA_DCP_CATEGORY_KEY.PROJECT, filesFacets);
1418+
return {
1419+
categoryKey: HCA_DCP_CATEGORY_KEY.PROJECT,
1420+
value: getFacetTerms(projectFacet),
1421+
};
1422+
}
1423+
return filter;
1424+
}
1425+
14441426
/**
14451427
* Returns the aggregated total cells from cellSuspensions for the given entity response.
14461428
* @param entityResponse - Response model return from entity API.

explorer/site-config/hca-dcp/dev/detail/project/exportSideColumn.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const sideColumn: ComponentConfig[] = [
88
children: [
99
{
1010
component: C.ExportCurrentQuery,
11-
viewBuilder: V.buildExportEntityCurrentQuery,
11+
viewBuilder: V.buildExportCurrentQuery,
1212
} as ComponentConfig<typeof C.ExportCurrentQuery>,
1313
{
1414
component: C.ExportSelectedDataSummary,

explorer/site-config/hca-dcp/dev/detail/project/projectFilesSideColumn.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const sideColumn: ComponentConfig[] = [
88
children: [
99
{
1010
component: C.ExportCurrentQuery,
11-
viewBuilder: V.buildExportEntityCurrentQuery,
11+
viewBuilder: V.buildExportCurrentQuery,
1212
} as ComponentConfig<typeof C.ExportCurrentQuery>,
1313
{
1414
component: C.ExportSelectedDataSummary,

0 commit comments

Comments
 (0)