import { Component, createResource, Show } from "solid-js"; import { SampleTable } from "../components/SampleTable"; import { PageChangeEvent, Pager } from "../components/Pager"; import { SearchBox } from "../components/SearchBox"; import { Breadcrumb } from "../components/Breadcrumb"; import { useStore } from "../store"; import { Params, Query, QueryClause, SortOrder } from "@molgenis/vip-report-api"; import { Loader } from "../components/Loader"; import { fetchSamples } from "../utils/api.ts"; import { Checkbox, CheckboxEvent } from "../components/form/Checkbox.tsx"; export const Samples: Component = () => { const [state, actions] = useStore(); function getStateSamples() { return state.samples ? state.samples : undefined; } if (getStateSamples()?.page === undefined) { actions.setSamplePage(0); } const onPageChange = (event: PageChangeEvent) => actions.setSamplePage(event.page); const onSearchChange = (search: string) => { actions.setSampleSearchQuery(search); actions.setSamplePage(0); }; const onProbandFilterChange = (event: CheckboxEvent) => { actions.setSampleProbandFilterValue(event.checked); actions.setSamplePage(0); }; function createQuery(search: string | undefined, probandFilterValue: boolean | undefined): Query | null { const searchQuery: QueryClause | undefined = search !== undefined && search !== "" ? { selector: ["sample", "individualId"], operator: "~=", args: search } : undefined; const probandQuery: QueryClause | undefined = probandFilterValue !== undefined && probandFilterValue ? { selector: ["sample", "proband"], operator: "==", args: probandFilterValue } : undefined; if (searchQuery !== undefined || probandQuery != undefined) { const args: QueryClause[] = []; if (searchQuery !== undefined) { args.push(searchQuery); } if (probandQuery !== undefined) { args.push(probandQuery); } if (args.length > 0) { return { operator: "and", args: args, }; } } return null; } const sortOrder: SortOrder[] = [ { property: ["sample", "familyId"], compare: "asc" }, { property: ["sample", "proband"], compare: "desc" }, { property: ["sample", "individualId"], compare: "asc" }, ]; const params = (): Params => { return { query: createQuery(searchQuery(), probandFilterValue()) || undefined, sort: sortOrder, page: page() || undefined, }; }; const page = () => getStateSamples()?.page; const searchQuery = () => getStateSamples()?.searchQuery; const probandFilterValue = () => getStateSamples()?.probandFilterValue; const [samples] = createResource(params, fetchSamples); return ( <>

Samples

Explore samples and sample variants

} keyed> {(samples) => ( <>
{}
{{samples.page.totalElements} records}

Proband

)}
); };