import { Component, Show } from "solid-js"; import { PagedItems } from "@molgenis/vip-report-api"; import { Loader } from "./Loader"; import { Sort, SortChangeCallback, SortClearCallback } from "./Sort"; import { PageChangeCallback, Pager } from "./Pager"; import { RecordsTable } from "./RecordsTable"; import { RecordsPerPage, RecordsPerPageChangeCallback } from "./RecordsPerPage"; import { VcfRecord } from "@molgenis/vip-report-vcf"; import { ButtonDownload } from "./form/ButtonDownload"; import { ConfigCells, ConfigRecordsPerPage } from "../types/config"; import { ConfigCellGroup, ConfigCellInfo } from "../types/configCells"; import { DIRECTION_ASCENDING, DIRECTION_DESCENDING } from "../utils/query/sort.ts"; import { MetadataContainer } from "../utils/api.ts"; import { ConfigSort } from "../types/configSort"; export type RecordsDownloadCallback = () => void; export const VariantResults: Component<{ metadata: MetadataContainer; fieldConfigs: ConfigCells; records: PagedItems; sortOptions: ConfigSort[] | undefined; recordsPerPage: ConfigRecordsPerPage; onRecordsPerPageChange: RecordsPerPageChangeCallback; onRecordsDownload: RecordsDownloadCallback; onPageChange: PageChangeCallback; onSortChange: SortChangeCallback; onSortClear: SortClearCallback; }> = (props) => { const sortOptions = (): ConfigSort[] => { if (props.sortOptions !== undefined && props.sortOptions.length !== 0) { return props.sortOptions; } else { return props.fieldConfigs .flatMap((fieldConfig) => fieldConfig.type === "group" ? (fieldConfig as ConfigCellGroup).fieldConfigs : [fieldConfig], ) .filter((fieldConfig) => fieldConfig.type === "info") .map((fieldConfig) => fieldConfig as ConfigCellInfo) .flatMap((fieldConfig) => [ { orders: [{ field: fieldConfig.field, direction: DIRECTION_ASCENDING }], selected: undefined, }, { orders: [{ field: fieldConfig.field, direction: DIRECTION_DESCENDING }], selected: undefined, }, ]); } }; return ( <>
} keyed> {(records) => ( {records.page.totalElements} records )}
} keyed> {(records) => }
{sortOptions().length > 0 && ( )}
} keyed> {(records) => ( <>
)}
); };