Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: update export summaries with NTag component (#3831) #3843

Merged
merged 1 commit into from
Dec 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
import { stringifyValues } from "@clevercanary/data-explorer-ui/lib/common/utils";
import { LABEL } from "@clevercanary/data-explorer-ui/lib/apis/azul/common/entities";
import { listSelectedTermsOfFacet } from "@clevercanary/data-explorer-ui/lib/components/Export/components/ExportSummary/common/utils";
import { SummaryValue } from "@clevercanary/data-explorer-ui/lib/components/Export/components/ExportSummary/components/ExportSelectedDataSummary/exportSelectedDataSummary";
import { NTagCell } from "@clevercanary/data-explorer-ui/lib/components/Index/components/NTagCell/nTagCell";
import {
displaySummaryTerms,
listSelectedTermsOfFacet,
} from "@clevercanary/data-explorer-ui/lib/components/Export/components/ExportSummary/common/utils";
import { FileFacet } from "@clevercanary/data-explorer-ui/lib/hooks/useFileManifest/common/entities";
FileFacet,
Term,
} from "@clevercanary/data-explorer-ui/lib/hooks/useFileManifest/common/entities";
import { formatCountSize } from "@clevercanary/data-explorer-ui/lib/utils/formatCountSize";
import { ANVIL_CMG_CATEGORY_KEY } from "../../../../../../site-config/anvil-cmg/category";
import { SummaryResponse } from "../../../../../apis/azul/anvil-cmg/common/responses";
import { METADATA_KEY } from "../../../../../components/Index/common/entities";
import { getPluralizedMetadataLabel } from "../../../../../components/Index/common/indexTransformer";
import { DEFAULT_SUMMARY } from "./constants";
import { FileSummary, SUMMARY } from "./entities";

Expand Down Expand Up @@ -52,7 +56,7 @@ export function bindFileSummaryResponse(
export function mapExportSummary(
filesFacets: FileFacet[],
summary: SummaryResponse | undefined
): Map<SUMMARY, string> {
): Map<SUMMARY, SummaryValue> {
const fileSummary = bindFileSummaryResponse(summary);
// Grab summary values.
const biosampleCount = fileSummary.biosampleCount;
Expand All @@ -64,17 +68,38 @@ export function mapExportSummary(
ANVIL_CMG_CATEGORY_KEY.DONOR_ORGANISM_TYPE
);
// Map summary by summary key or display text.
const summaryBySummaryKey = new Map<SUMMARY, string>();
const summaryBySummaryKey = new Map<SUMMARY, SummaryValue>();
summaryBySummaryKey.set(
SUMMARY.BIOSAMPLE_COUNT,
formatCountSize(biosampleCount)
); // BioSamples
summaryBySummaryKey.set(SUMMARY.DONOR_COUNT, formatCountSize(donorCount)); // Donors
summaryBySummaryKey.set(
SUMMARY.ORGANISM_TYPE,
displaySummaryTerms(organismType)
NTagCell({
label: getPluralizedMetadataLabel(METADATA_KEY.ORGANISM_TYPE),
values: getTermValues(organismType),
})
); // Organism Types
summaryBySummaryKey.set(SUMMARY.FILE_COUNT, formatCountSize(fileCount)); // Files
summaryBySummaryKey.set(SUMMARY.FILE_FORMATS, stringifyValues(fileFormats)); // Formats
summaryBySummaryKey.set(
SUMMARY.FILE_FORMATS,
NTagCell({
label: getPluralizedMetadataLabel(METADATA_KEY.FILE_FORMAT),
values: fileFormats,
})
); // Formats
return summaryBySummaryKey;
}

/**
* Returns term values from the given terms.
* @param terms - Terms.
* @returns term values.
*/
function getTermValues(terms: Term[]): string[] {
if (!terms || !terms.length) {
return [LABEL.UNSPECIFIED];
}
return terms.map(({ name }) => name.trim());
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import { LABEL } from "@clevercanary/data-explorer-ui/lib/apis/azul/common/entities";
import {
displaySummaryTerms,
listSelectedTermsOfFacet,
} from "@clevercanary/data-explorer-ui/lib/components/Export/components/ExportSummary/common/utils";
import { FileFacet } from "@clevercanary/data-explorer-ui/lib/hooks/useFileManifest/common/entities";
import { SummaryValue } from "@clevercanary/data-explorer-ui/lib/components/Export/components/ExportSummary/components/ExportSelectedDataSummary/exportSelectedDataSummary";
import { NTagCell } from "@clevercanary/data-explorer-ui/lib/components/Index/components/NTagCell/nTagCell";
import {
FileFacet,
Term,
} from "@clevercanary/data-explorer-ui/lib/hooks/useFileManifest/common/entities";
import { formatCountSize } from "@clevercanary/data-explorer-ui/lib/utils/formatCountSize";
import { formatFileSize } from "@clevercanary/data-explorer-ui/lib/utils/formatFileSize";
import { HCA_DCP_CATEGORY_KEY } from "../../../../../../site-config/hca-dcp/category";
import { SummaryResponse } from "../../../../../apis/azul/hca-dcp/common/responses";
import { METADATA_KEY } from "../../../../../components/Index/common/entities";
import { getPluralizedMetadataLabel } from "../../../../../components/Index/common/indexTransformer";
import { DEFAULT_SUMMARY } from "./constants";
import { FileSummary, SUMMARY } from "./entities";

Expand Down Expand Up @@ -85,7 +93,7 @@ export function bindFileSummaryResponse(
export function mapExportSummary(
filesFacets: FileFacet[],
summary: SummaryResponse | undefined
): Map<SUMMARY | string, string> {
): Map<SUMMARY | string, SummaryValue> {
const fileSummary = bindFileSummaryResponse(summary);
// Grab summary values.
const donorCount = fileSummary.donorCount;
Expand Down Expand Up @@ -124,7 +132,7 @@ export function mapExportSummary(
const totalFileSize = fileSummary.totalFileSize;

// Map summary by summary key or display text.
const summaryBySummaryKey = new Map<SUMMARY | string, string>();
const summaryBySummaryKey = new Map<SUMMARY | string, SummaryValue>();
summaryBySummaryKey.set(
SUMMARY.TOTAL_CELL_COUNT,
formatCountSize(totalCellCount)
Expand All @@ -137,27 +145,65 @@ export function mapExportSummary(
summaryBySummaryKey.set(SUMMARY.PROJECT_COUNT, formatCountSize(projectCount));
summaryBySummaryKey.set(
SUMMARY.GENUS_SPECIES,
displaySummaryTerms(genusSpecies)
NTagCell({
label: getPluralizedMetadataLabel(METADATA_KEY.SPECIES),
values: getTermValues(genusSpecies),
})
);
summaryBySummaryKey.set(SUMMARY.DONOR_COUNT, formatCountSize(donorCount));
summaryBySummaryKey.set(
SUMMARY.DONOR_DISEASE,
displaySummaryTerms(donorDisease)
NTagCell({
label: getPluralizedMetadataLabel(METADATA_KEY.DISEASE_STATUS_DONOR),
values: getTermValues(donorDisease),
})
); // Disease Status (Donor)
summaryBySummaryKey.set(
SUMMARY.SPECIMEN_COUNT,
formatCountSize(specimenCount)
);
summaryBySummaryKey.set(
SUMMARY.SPECIMEN_DISEASE,
displaySummaryTerms(specimenDisease)
NTagCell({
label: getPluralizedMetadataLabel(METADATA_KEY.DISEASE_STATUS_SPECIMEN),
values: getTermValues(specimenDisease),
})
); // Disease Status (Specimen)
summaryBySummaryKey.set(SUMMARY.ORGAN, displaySummaryTerms(organ)); // Anatomical Entity
summaryBySummaryKey.set(SUMMARY.ORGAN_PART, displaySummaryTerms(organPart));
summaryBySummaryKey.set(
SUMMARY.ORGAN,
NTagCell({
label: getPluralizedMetadataLabel(METADATA_KEY.ANATOMICAL_ENTITY),
values: getTermValues(organ),
})
); // Anatomical Entity
summaryBySummaryKey.set(
SUMMARY.ORGAN_PART,
NTagCell({
label: getPluralizedMetadataLabel(METADATA_KEY.ORGAN_PART),
values: getTermValues(organPart),
})
);
summaryBySummaryKey.set(
SUMMARY.LIBRARY_CONSTRUCTION_APPROACH,
displaySummaryTerms(libraryConstructionApproach)
NTagCell({
label: getPluralizedMetadataLabel(
METADATA_KEY.LIBRARY_CONSTRUCTION_APPROACH
),
values: getTermValues(libraryConstructionApproach),
})
); // Library Construction Method
summaryBySummaryKey.set(SUMMARY.PAIRED_END, displaySummaryTerms(pairedEnd)); // Paired End
return summaryBySummaryKey;
}

/**
* Returns term values from the given terms.
* @param terms - Terms.
* @returns term values.
*/
function getTermValues(terms: Term[]): string[] {
if (!terms || !terms.length) {
return [LABEL.UNSPECIFIED];
}
return terms.map(({ name }) => name.trim());
}
Loading