import moment from "moment"; import { Accessor, Component, createResource, createSignal } from "solid-js"; import { FETCH_DELAY_MS, apiHost } from "../../../consts"; import { Result } from "./Result"; import { LoadingSpinner } from "../../../components/spinner/LoadingSpinner"; export const QueryResult: Component<{ getStart: Accessor, getEnd: Accessor, getFields: Accessor, }> = (props) => { const queryStart = () => moment(props.getStart()).format("YYYYMMDD_HHmm"); const queryEnd = () => moment(props.getEnd()).format("YYYYMMDD_HHmm"); const [getTimestamp, setTimestamp] = createSignal(0); const fetchQuery = async (timestamp: number) => { if (props.getFields().length === 0) return new Error("ERROR: Select weather parameters!"); await new Promise(resolve => setTimeout(resolve, FETCH_DELAY_MS)) const response = await fetch(`${apiHost}/api/query/country/${queryStart()}-${queryEnd()}/${props.getFields().join(",")}`); const json = await response.json(); return json; } const [queryResource] = createResource(getTimestamp, fetchQuery); return (
setTimestamp(Date.now())} /> { queryResource.loading && } { queryResource.error && (
Error while querying: ${queryResource.error}
)} { queryResource() && queryResource() instanceof Error &&
{ queryResource().message }
} { queryResource() && }
); }