diff --git a/web/src/cities/chart/CityResult.tsx b/web/src/cities/result/CityResult.tsx similarity index 84% rename from web/src/cities/chart/CityResult.tsx rename to web/src/cities/result/CityResult.tsx index 767ef48..e221725 100644 --- a/web/src/cities/chart/CityResult.tsx +++ b/web/src/cities/result/CityResult.tsx @@ -1,5 +1,6 @@ import { Component } from "solid-js"; -import { CityChart } from "./CityChart"; + +import { CityChart } from "../../components/chart/CityChart"; import { DataQuery } from "../helpers"; export const CityResult: Component<{ city: string, query: DataQuery, result: any }> = ({ city, query, result }) => { @@ -8,7 +9,7 @@ export const CityResult: Component<{ city: string, query: DataQuery, result: any

{ city }

{ isDateNumber(result) - ? + ? city} data={()=>result} query={()=>query}/> : result } diff --git a/web/src/cities/result/Result.tsx b/web/src/cities/result/Result.tsx index 9640546..28e5db2 100644 --- a/web/src/cities/result/Result.tsx +++ b/web/src/cities/result/Result.tsx @@ -3,7 +3,7 @@ import { Component, createSignal, Resource } from "solid-js"; import "../../css/Result.css" import { ResultKeyVal, resultOrder, ResultOrderKeys } from "../../consts"; import { SelectOrder } from "../SelectOrder"; -import { CityResult } from "../chart/CityResult"; +import { CityResult } from "./CityResult"; import { QueryResult } from "../helpers"; import { MapView } from "../map/MapView"; diff --git a/web/src/cities/chart/CityChart.tsx b/web/src/components/chart/CityChart.tsx similarity index 95% rename from web/src/cities/chart/CityChart.tsx rename to web/src/components/chart/CityChart.tsx index 8cbb735..293d33b 100644 --- a/web/src/cities/chart/CityChart.tsx +++ b/web/src/components/chart/CityChart.tsx @@ -1,9 +1,9 @@ import { onMount, onCleanup, createSignal, Component } from "solid-js"; import { Chart } from "chart.js"; -import { DataQuery, formatDateString } from "../helpers"; import { CityLargeChart } from "./CityLargeChart"; import { createCustomChart } from "./CustomChart"; +import { DataQuery, formatDateString } from "../../cities/helpers"; export const CityChart: Component<{ city: () => string; diff --git a/web/src/cities/chart/CityLargeChart.tsx b/web/src/components/chart/CityLargeChart.tsx similarity index 94% rename from web/src/cities/chart/CityLargeChart.tsx rename to web/src/components/chart/CityLargeChart.tsx index 3f0f3e0..0574abb 100644 --- a/web/src/cities/chart/CityLargeChart.tsx +++ b/web/src/components/chart/CityLargeChart.tsx @@ -1,9 +1,9 @@ import { onMount, createSignal, Component } from "solid-js"; import { Chart } from "chart.js"; -import { DataQuery, formatDateString } from "../helpers"; import "../../css/overlay.css" import { createCustomChart } from "./CustomChart"; +import { DataQuery, formatDateString } from "../../cities/helpers"; export const CityLargeChart: Component<{ city: () => string; diff --git a/web/src/cities/chart/CustomChart.ts b/web/src/components/chart/CustomChart.ts similarity index 100% rename from web/src/cities/chart/CustomChart.ts rename to web/src/components/chart/CustomChart.ts diff --git a/web/src/station/Result.tsx b/web/src/station/Result.tsx index 9aafabb..a77ff83 100644 --- a/web/src/station/Result.tsx +++ b/web/src/station/Result.tsx @@ -1,10 +1,10 @@ import { Accessor, Component, createResource } from "solid-js"; import { apiHost } from "../consts"; import moment from "moment"; -import { CityChart } from "../cities/chart/CityChart"; +import { CityChart } from "../components/chart/CityChart"; export const Result: Component<{ - getCity: Accessor, + getCity: Accessor, getField: Accessor, getStart: Accessor, getEnd: Accessor, @@ -12,10 +12,10 @@ export const Result: Component<{ const queryStart = () => moment(props.getStart()).format("YYYYMMDD_HHmm"); const queryEnd = () => moment(props.getEnd()).format("YYYYMMDD_HHmm"); - const fetchList = async (city: string | undefined) => { + const fetchList = async ([city, field]: [string | undefined, string]) => { if (city === undefined) return undefined; await new Promise(resolve => setTimeout(resolve, 500)); - const response = await fetch(`${apiHost}/api/query/city/${props.getCity()}/${queryStart()}-${queryEnd()}/hour/${props.getField()}/list`); + const response = await fetch(`${apiHost}/api/query/city/${city}/${queryStart()}-${queryEnd()}/hour/${field}/list`); const json = await response.json(); return json; } @@ -28,7 +28,8 @@ export const Result: Component<{ return json; } - const [listResource] = createResource(props.getCity, fetchList); + const cityFieldSignal = (): [string | undefined, string] => [props.getCity(), props.getField()]; + const [listResource] = createResource(cityFieldSignal, fetchList); const [meteoResource] = createResource(props.getCity, fetchMeteo); return ( @@ -50,7 +51,7 @@ export const Result: Component<{ { listResource() && listResource() instanceof Error &&
{ listResource().message }
} - { listResource() && props.getCity() && + { listResource() && props.getCity() && !listResource.loading &&

{ props.getCity() }

{ meteoResource().message }
} - { meteoResource() && props.getCity() && + { meteoResource() && props.getCity() && !meteoResource.loading &&
    { Object.entries(meteoResource()) .sort((a, b) => a[0] > b[0] ? 1 : -1) .map(([key, value]: any) => -
  • {key}: {value}
  • +
  • {key}: {toStringFloat(value)}
  • )}
} ); +} + +function toStringFloat(val: any): string { + const numVal = parseFloat(val); + if (isNaN(numVal)) return ""; + + return (Math.round(numVal * 10) / 10) + ""; } \ No newline at end of file