From 336dbe55968b00e3ce14562de28901bfee8fddcd Mon Sep 17 00:00:00 2001 From: Guntis Smaukstelis Date: Fri, 9 Feb 2024 15:14:00 +0200 Subject: [PATCH] Disable map views based on params, remove distinct --- web/src/cities/result/ResultView.tsx | 69 +++++++++++----------------- web/src/consts.ts | 3 +- 2 files changed, 28 insertions(+), 44 deletions(-) diff --git a/web/src/cities/result/ResultView.tsx b/web/src/cities/result/ResultView.tsx index 5358f2c..b0373ba 100644 --- a/web/src/cities/result/ResultView.tsx +++ b/web/src/cities/result/ResultView.tsx @@ -1,4 +1,4 @@ -import { Component, createSignal, Resource, Show } from "solid-js"; +import { Component, createSignal, JSXElement, Resource, Show } from "solid-js"; import "../../css/Result.css" import { ResultKeyVal, resultOrder, ResultOrderKeys } from "../../consts"; @@ -7,11 +7,13 @@ import { QueryResult } from "../helpers"; import { MapView } from "../map/MapView"; import { GridResult } from "./GridResult"; +type ResultView = "grid" | "list" | "map_1920x1080" | "map_1920x1080_wind" | "map_3840x1440" | "map_3840x1440_wind"; +const resultViews: Array = ["grid", "list", "map_1920x1080", "map_1920x1080_wind", "map_3840x1440", "map_3840x1440_wind"]; + export const ResultView: Component<{ result: Resource }> = ({ result: resultResource }) => { const [getOrderKey, setOrderKey] = createSignal("A -> Z"); - type ResultView = "grid" | "list" | "map_1920x1080" | "map_1920x1080_wind" | "map_3840x1440" | "map_3840x1440_wind"; const [getResultView, setResultView] = createSignal("grid"); const cityData = () => @@ -19,52 +21,33 @@ export const ResultView: Component<{ .map(keyVal => [...keyVal] as ResultKeyVal) .sort((a, b) => resultOrder[getOrderKey()](a, b)); + function showViewButton(viewName: string): boolean { + if (!resultResource()) return false; + if (["grid", "list"].includes(viewName) && resultResource()!.query.field === "phenomena") return true; + if (["grid", "list"].includes(viewName) && resultResource()!.query.key !== "List") return true; + if (!["grid", "list"].includes(viewName) && resultResource()!.query.key === "List") return false; + if (resultResource()!.query.field === "phenomena") return false; + + return true; + } + return (

Result:

- setResultView("grid")} - /> -   |   - setResultView("list")} - /> -   |   - setResultView("map_1920x1080")} - /> -   |   - setResultView("map_1920x1080_wind")} - /> -   |   - setResultView("map_3840x1440")} - /> -   |   - setResultView("map_3840x1440_wind")} - /> + {resultViews.map(viewName => + <> + setResultView(viewName)} + /> +   |   + + )} diff --git a/web/src/consts.ts b/web/src/consts.ts index 76cf957..c0753ae 100644 --- a/web/src/consts.ts +++ b/web/src/consts.ts @@ -14,7 +14,8 @@ export const weatherField = ["tempMax", "tempMin", "tempAvg", "precipitation", " export const weatherFieldNumeric = weatherField.filter(f => f !== "phenomena"); -export const aggregateKey = ["min", "max", "avg", "sum", "list", "distinct"]; +// export const aggregateKey = ["min", "max", "avg", "sum", "list", "distinct"]; +export const aggregateKey = ["min", "max", "avg", "sum", "list"]; export const aggregateGranularity = ["hour", "day", "month", "year"];