diff --git a/web/src/cities/Cities.tsx b/web/src/cities/Cities.tsx index 09d3eec..055dc07 100644 --- a/web/src/cities/Cities.tsx +++ b/web/src/cities/Cities.tsx @@ -1,6 +1,5 @@ import moment from "moment"; import { createSignal } from "solid-js"; -import { QueryResult } from "./result/QueryResult"; import { SelectCity } from "../components/SelectCity"; import { SelectTimeRange } from "../components/SelectTimeRange"; @@ -8,6 +7,7 @@ import { SelectField } from "../components/SelectField"; import { SelectGranularity } from "./SelectGranularity"; import { SelectKey } from "./SelectKey"; +import { QueryView } from "./result/QueryView"; const nowRounded = new Date(new Date().setMinutes(30)); const dayAgo = moment(nowRounded).subtract(1, "days").subtract(30, "minutes").toDate(); @@ -45,7 +45,7 @@ export function Cities() {
- = ({ city, query, result }) => { +export const GridResult: Component<{ city: string, query: DataQuery, result: any }> = ({ city, query, result }) => { return ( -
+

{ city }

{ isDateNumber(result) ? city} data={()=>result} query={()=>query}/> - : result + :

{ result }

}
); diff --git a/web/src/cities/result/QueryResult.tsx b/web/src/cities/result/QueryView.tsx similarity index 93% rename from web/src/cities/result/QueryResult.tsx rename to web/src/cities/result/QueryView.tsx index e3c842e..46c827e 100644 --- a/web/src/cities/result/QueryResult.tsx +++ b/web/src/cities/result/QueryView.tsx @@ -4,10 +4,10 @@ import { Accessor, Component, createResource, createSignal } from "solid-js"; import "../../css/Result.css" import { FETCH_DELAY_MS, apiHost } from "../../consts"; import { isQueryResult } from "../helpers"; -import { Result } from "./Result"; import { LoadingSpinner } from "../../components/LoadingSpinner"; +import { ResultView } from "./ResultView"; -export const QueryResult: Component<{ +export const QueryView: Component<{ getCities: Accessor>, getStart: Accessor, getEnd: Accessor, @@ -46,7 +46,7 @@ export const QueryResult: Component<{
{ queryResource().message }
} { queryResource() && isQueryResult( queryResource() ) && - + }
); diff --git a/web/src/cities/result/Result.tsx b/web/src/cities/result/ResultView.tsx similarity index 58% rename from web/src/cities/result/Result.tsx rename to web/src/cities/result/ResultView.tsx index 72cd2df..196368c 100644 --- a/web/src/cities/result/Result.tsx +++ b/web/src/cities/result/ResultView.tsx @@ -3,16 +3,16 @@ import { Component, createSignal, Resource, Show } from "solid-js"; import "../../css/Result.css" import { ResultKeyVal, resultOrder, ResultOrderKeys } from "../../consts"; import { SelectOrder } from "../SelectOrder"; -import { CityResult } from "./CityResult"; import { QueryResult } from "../helpers"; import { MapView } from "../map/MapView"; +import { GridResult } from "./GridResult"; -export const Result: Component<{ +export const ResultView: Component<{ result: Resource }> = ({ result: resultResource }) => { const [getOrderKey, setOrderKey] = createSignal("A -> Z"); - type ResultView = "text" | "map_1920x1080" | "map_3840x1440"; - const [getResultView, setResultView] = createSignal("text"); + type ResultView = "grid" | "list" | "map_1920x1080" | "map_3840x1440"; + const [getResultView, setResultView] = createSignal("grid"); const cityData = () => Object.entries(resultResource()!.result) @@ -24,11 +24,18 @@ export const Result: Component<{

Result:

+ setResultView("grid")} + /> +   |   setResultView("text")} + value="list" + onClick={() => setResultView("list")} />   |   setResultView("map_3840x1440")} /> - +
-
- - {cityData().map(([city, data]) => - )} +
+ +
+ {cityData().map(([city, data]) => + )} +
+
+ +
+ {cityData().map(([city, data]) => + )} +
diff --git a/web/src/css/Result.css b/web/src/css/Result.css index da1e468..655cdd7 100644 --- a/web/src/css/Result.css +++ b/web/src/css/Result.css @@ -1,15 +1,3 @@ -.result-container { - display: grid; - grid-template-columns: repeat(3, 1fr); - grid-gap: 10px; -} - -.result-item { - background-color: #f2f2f2; - padding: 10px; - text-align: center; -} - .resultTitle { display: flex; align-items: center; @@ -19,4 +7,33 @@ .resultTitle h3 { margin: 0; -} \ No newline at end of file +} + +.grid-view { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + grid-gap: 10px; +} + +.grid-view .item { + background-color: #f2f2f2; + padding: 10px; + text-align: center; +} + +.list-view { + display: flex; + flex-direction: column; + grid-gap: 10px; +} + +.list-view .item { + background-color: #f2f2f2; + padding: 10px; + max-width: 300px; +} + +.list-view .item h4 { + float: right; + display: block; +}