From 531e53e0213b868aef1a94d3e907d5c73b562dea Mon Sep 17 00:00:00 2001 From: Bartosz Prusinowski Date: Tue, 1 Feb 2022 18:15:54 +0100 Subject: [PATCH 1/8] fix: Discrete color scales with < 3 values --- app/charts/map/map-legend.tsx | 7 ++++++- app/charts/map/map-state.tsx | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/charts/map/map-legend.tsx b/app/charts/map/map-legend.tsx index 9bd29b108..e5f0d34fc 100644 --- a/app/charts/map/map-legend.tsx +++ b/app/charts/map/map-legend.tsx @@ -71,10 +71,15 @@ const makeAxis = ( export const MapLegend = () => { const { areaLayer, symbolLayer } = useChartState() as MapState; + const showAreaLegend = + areaLayer.show && + areaLayer.data.length >= 3 && + (areaLayer.colorScaleInterpolationType === "linear" || + areaLayer.colorScale.range().length >= 3); return ( - {areaLayer.show && ( + {showAreaLegend && ( {areaLayer.measureLabel && ( getValue(d) ?? NaN), - nbClass + Math.min(nbClass, data.length) ).map((v) => v.pop() || 0); return scaleThreshold() From 802d9d61e55f42d096ed624ced896997061349bf Mon Sep 17 00:00:00 2001 From: Bartosz Prusinowski Date: Wed, 2 Feb 2022 15:48:26 +0100 Subject: [PATCH 2/8] feat: Add rivers to maps --- app/charts/index.ts | 1 + app/charts/map/map-state.tsx | 2 + app/charts/map/map.tsx | 81 +++++++++++++------ .../components/chart-configurator.tsx | 3 +- app/configurator/config-types.ts | 1 + app/configurator/map/map-chart-options.tsx | 8 ++ 6 files changed, 70 insertions(+), 26 deletions(-) diff --git a/app/charts/index.ts b/app/charts/index.ts index 96f0c177a..8463a120b 100644 --- a/app/charts/index.ts +++ b/app/charts/index.ts @@ -294,6 +294,7 @@ export const getInitialConfig = ({ baseLayer: { showRelief: true, showLakes: true, + showRivers: false, }, }; diff --git a/app/charts/map/map-state.tsx b/app/charts/map/map-state.tsx index bda2bcf69..03b8565a9 100644 --- a/app/charts/map/map-state.tsx +++ b/app/charts/map/map-state.tsx @@ -49,6 +49,7 @@ export interface MapState { features: GeoData; showRelief: boolean; showLakes: boolean; + showRivers: boolean; identicalLayerComponentIris: boolean; areaLayer: { data: Observation[]; @@ -279,6 +280,7 @@ const useMapState = ({ bounds, showRelief: baseLayer.showRelief, showLakes: baseLayer.showLakes, + showRivers: baseLayer.showRivers, identicalLayerComponentIris, areaLayer: { data: areaData, diff --git a/app/charts/map/map.tsx b/app/charts/map/map.tsx index 2ee597de8..554eeca2a 100644 --- a/app/charts/map/map.tsx +++ b/app/charts/map/map.tsx @@ -21,12 +21,15 @@ type TileData = { signal: { aborted: boolean }; }; +const MIN_ZOOM = 2; +const MAX_ZOOM = 16; + const INITIAL_VIEW_STATE = { latitude: 46.8182, longitude: 8.2275, zoom: 5, - maxZoom: 16, - minZoom: 2, + minZoom: MIN_ZOOM, + maxZoom: MAX_ZOOM, pitch: 0, bearing: 0, }; @@ -91,10 +94,38 @@ const constrainZoom = ( } }; +const getTileLayerProps = (props: { id: string; dataUrl: string }) => { + const { id, dataUrl } = props; + + return { + id, + data: dataUrl, + pickable: false, + minZoom: MIN_ZOOM, + maxZoom: MAX_ZOOM, + maxCacheSize: 512, + tileSize: 256, + renderSubLayers: (props: { tile: TileData; data: $FixMe }) => { + const { + bbox: { west, south, east, north }, + } = props.tile; + + return [ + new BitmapLayer(props, { + data: null, + image: props.data, + bounds: [west, south, east, north], + }), + ]; + }, + }; +}; + export const MapComponent = () => { const { showRelief, showLakes, + showRivers, features, identicalLayerComponentIris, areaLayer, @@ -143,6 +174,26 @@ export const MapComponent = () => { [symbolLayer.color] ); + const reliefTileProps = useMemo( + () => + getTileLayerProps({ + id: "relief", + dataUrl: + "https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.leichte-basiskarte_reliefschattierung/default/current/3857/{z}/{x}/{y}.png", + }), + [] + ); + + const riverTileProps = useMemo( + () => + getTileLayerProps({ + id: "rivers", + dataUrl: + "https://wmts100.geo.admin.ch/1.0.0/ch.bafu.vec25-gewaessernetz_2000/default/current/3857/{z}/{x}/{y}.png", + }), + [] + ); + const shapes = useMemo( () => ({ ...features.areaLayer?.shapes, @@ -178,29 +229,9 @@ export const MapComponent = () => { controller={{ type: MapController }} getCursor={() => "default"} > - {showRelief && ( - - `https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.leichte-basiskarte_reliefschattierung/default/current/3857/${z}/${x}/${y}.png` - } - pickable={false} - minZoom={2} - maxZoom={16} - maxCacheSize={512} - renderSubLayers={(props: { tile: TileData; data: $FixMe }) => { - const { - bbox: { west, south, east, north }, - } = props.tile; - return [ - new BitmapLayer(props, { - data: null, - image: props.data, - bounds: [west, south, east, north], - }), - ]; - }} - /> - )} + {showRelief && } + + {showRivers && } {areaLayer.show && ( <> diff --git a/app/configurator/components/chart-configurator.tsx b/app/configurator/components/chart-configurator.tsx index 3661e2b4c..159443207 100644 --- a/app/configurator/components/chart-configurator.tsx +++ b/app/configurator/components/chart-configurator.tsx @@ -432,7 +432,8 @@ const ChartFields = ({ label={Base Layer} active={ chartConfig.baseLayer.showLakes || - chartConfig.baseLayer.showRelief + chartConfig.baseLayer.showRelief || + chartConfig.baseLayer.showRivers } /> ) : ( diff --git a/app/configurator/config-types.ts b/app/configurator/config-types.ts index f53bebeb0..602a01dfb 100644 --- a/app/configurator/config-types.ts +++ b/app/configurator/config-types.ts @@ -510,6 +510,7 @@ export type MapSymbolLayer = t.TypeOf; const BaseLayer = t.type({ showRelief: t.boolean, showLakes: t.boolean, + showRivers: t.boolean, }); export type BaseLayer = t.TypeOf; const MapFields = t.type({ diff --git a/app/configurator/map/map-chart-options.tsx b/app/configurator/map/map-chart-options.tsx index 1d844037b..b98f4ddc0 100644 --- a/app/configurator/map/map-chart-options.tsx +++ b/app/configurator/map/map-chart-options.tsx @@ -76,6 +76,14 @@ export const BaseLayersSettings = memo(() => { field={null} path="baseLayer.showLakes" /> + ); From d2cefcab1b2f580d22cc9e1264631d577ee170d9 Mon Sep 17 00:00:00 2001 From: Bartosz Prusinowski Date: Wed, 2 Feb 2022 15:48:44 +0100 Subject: [PATCH 3/8] feat: Fix shape colors when value is equal to 0 --- app/charts/map/map.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/charts/map/map.tsx b/app/charts/map/map.tsx index 554eeca2a..47f798e35 100644 --- a/app/charts/map/map.tsx +++ b/app/charts/map/map.tsx @@ -279,7 +279,7 @@ export const MapComponent = () => { if (observation) { const value = areaLayer.getValue(observation); - if (value) { + if (value !== null) { return areaLayer.getColor(value); } } From ccac1d880e15766886732d9b9dbfa8063f129c1c Mon Sep 17 00:00:00 2001 From: Bartosz Prusinowski Date: Thu, 3 Feb 2022 13:31:19 +0100 Subject: [PATCH 4/8] feat: Add vector tiles + show water based on them --- app/charts/index.ts | 3 +- app/charts/map/chart-map.tsx | 35 +---- app/charts/map/map-state.tsx | 6 +- app/charts/map/map.tsx | 121 ++++++++---------- .../components/chart-configurator.tsx | 3 +- app/configurator/config-types.ts | 3 +- app/configurator/map/map-chart-options.tsx | 14 +- app/domain/data.ts | 1 - app/locales/de/messages.po | 4 +- app/locales/en/messages.po | 4 +- app/locales/fr/messages.po | 4 +- app/locales/it/messages.po | 4 +- 12 files changed, 72 insertions(+), 130 deletions(-) diff --git a/app/charts/index.ts b/app/charts/index.ts index 8463a120b..5390fdde8 100644 --- a/app/charts/index.ts +++ b/app/charts/index.ts @@ -293,8 +293,7 @@ export const getInitialConfig = ({ }, baseLayer: { showRelief: true, - showLakes: true, - showRivers: false, + showWater: true, }, }; diff --git a/app/charts/map/chart-map.tsx b/app/charts/map/chart-map.tsx index cff31d648..bc533c2d1 100644 --- a/app/charts/map/chart-map.tsx +++ b/app/charts/map/chart-map.tsx @@ -1,5 +1,5 @@ import { geoCentroid } from "d3"; -import React, { memo, useEffect, useMemo, useState } from "react"; +import React, { memo, useMemo } from "react"; import { Box } from "theme-ui"; import { feature as topojsonFeature, @@ -32,11 +32,6 @@ import { MapLegend } from "./map-legend"; import { MapChart } from "./map-state"; import { MapTooltip } from "./map-tooltip"; -type GeoDataState = - | { state: "fetching" } - | { state: "error" } - | (GeoData & { state: "loaded" }); - export const ChartMapVisualization = ({ dataSetIri, chartConfig, @@ -46,7 +41,6 @@ export const ChartMapVisualization = ({ chartConfig: MapConfig; queryFilters: QueryFilters; }) => { - const [geoData, setGeoData] = useState({ state: "fetching" }); const locale = useLocale(); const areaDimensionIri = chartConfig.fields.areaLayer.componentIri; @@ -161,30 +155,11 @@ export const ChartMapVisualization = ({ } }, [areaLayer, dimensions, observations, symbolDimensionIri, geoCoordinates]); - useEffect(() => { - const loadLakes = async () => { - try { - const res = await fetch(`/topojson/ch-2020.json`); - const topo = await res.json(); - const lakes = topojsonFeature( - topo, - topo.objects.lakes - ) as any as GeoJSON.FeatureCollection; - - setGeoData({ state: "loaded", lakes }); - } catch (e) { - setGeoData({ state: "error" }); - } - }; - - loadLakes(); - }, []); - - if (measures && dimensions && observations && geoData.state === "loaded") { + if (measures && dimensions && observations) { return ( ); - } else if (geoData.state === "fetching" || fetching) { + } else if (fetching) { return ; - } else if (geoData.state === "error" || error) { + } else if (error) { return ; } else { return ; diff --git a/app/charts/map/map-state.tsx b/app/charts/map/map-state.tsx index 03b8565a9..f68e12f60 100644 --- a/app/charts/map/map-state.tsx +++ b/app/charts/map/map-state.tsx @@ -48,8 +48,7 @@ export interface MapState { bounds: Bounds; features: GeoData; showRelief: boolean; - showLakes: boolean; - showRivers: boolean; + showWater: boolean; identicalLayerComponentIris: boolean; areaLayer: { data: Observation[]; @@ -279,8 +278,7 @@ const useMapState = ({ features, bounds, showRelief: baseLayer.showRelief, - showLakes: baseLayer.showLakes, - showRivers: baseLayer.showRivers, + showWater: baseLayer.showWater, identicalLayerComponentIris, areaLayer: { data: areaData, diff --git a/app/charts/map/map.tsx b/app/charts/map/map.tsx index 47f798e35..e516532f8 100644 --- a/app/charts/map/map.tsx +++ b/app/charts/map/map.tsx @@ -1,5 +1,5 @@ import { MapController, WebMercatorViewport } from "@deck.gl/core"; -import { TileLayer } from "@deck.gl/geo-layers"; +import { MVTLayer, TileLayer } from "@deck.gl/geo-layers"; import { BitmapLayer, GeoJsonLayer, ScatterplotLayer } from "@deck.gl/layers"; import DeckGL from "@deck.gl/react"; import React, { useCallback, useMemo, useState } from "react"; @@ -21,8 +21,8 @@ type TileData = { signal: { aborted: boolean }; }; -const MIN_ZOOM = 2; -const MAX_ZOOM = 16; +const MIN_ZOOM = 3; +const MAX_ZOOM = 13; const INITIAL_VIEW_STATE = { latitude: 46.8182, @@ -94,38 +94,10 @@ const constrainZoom = ( } }; -const getTileLayerProps = (props: { id: string; dataUrl: string }) => { - const { id, dataUrl } = props; - - return { - id, - data: dataUrl, - pickable: false, - minZoom: MIN_ZOOM, - maxZoom: MAX_ZOOM, - maxCacheSize: 512, - tileSize: 256, - renderSubLayers: (props: { tile: TileData; data: $FixMe }) => { - const { - bbox: { west, south, east, north }, - } = props.tile; - - return [ - new BitmapLayer(props, { - data: null, - image: props.data, - bounds: [west, south, east, north], - }), - ]; - }, - }; -}; - export const MapComponent = () => { const { showRelief, - showLakes, - showRivers, + showWater, features, identicalLayerComponentIris, areaLayer, @@ -174,26 +146,6 @@ export const MapComponent = () => { [symbolLayer.color] ); - const reliefTileProps = useMemo( - () => - getTileLayerProps({ - id: "relief", - dataUrl: - "https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.leichte-basiskarte_reliefschattierung/default/current/3857/{z}/{x}/{y}.png", - }), - [] - ); - - const riverTileProps = useMemo( - () => - getTileLayerProps({ - id: "rivers", - dataUrl: - "https://wmts100.geo.admin.ch/1.0.0/ch.bafu.vec25-gewaessernetz_2000/default/current/3857/{z}/{x}/{y}.png", - }), - [] - ); - const shapes = useMemo( () => ({ ...features.areaLayer?.shapes, @@ -223,15 +175,36 @@ export const MapComponent = () => { "default"} > - {showRelief && } - - {showRivers && } + {showRelief && ( + { + const { + bbox: { west, south, east, north }, + } = props.tile; + + return [ + new BitmapLayer(props, { + data: null, + image: props.data, + bounds: [west, south, east, north], + }), + ]; + }} + /> + )} {areaLayer.show && ( <> @@ -303,21 +276,29 @@ export const MapComponent = () => { )} - {showLakes && ( - - )} + { + return showWater && d.properties.layerName === "water" + ? [148, 198, 240] + : [148, 198, 240, 0]; + }} + getLineWidth={10} + lineWidthMinPixels={0.4} + lineWidthMaxPixels={3} + updateTriggers={{ + getFillColor: [showWater], + }} + /> {symbolLayer.show && ( Base Layer} active={ - chartConfig.baseLayer.showLakes || chartConfig.baseLayer.showRelief || - chartConfig.baseLayer.showRivers + chartConfig.baseLayer.showWater } /> ) : ( diff --git a/app/configurator/config-types.ts b/app/configurator/config-types.ts index 602a01dfb..ecbfcbe4b 100644 --- a/app/configurator/config-types.ts +++ b/app/configurator/config-types.ts @@ -509,8 +509,7 @@ export type MapSymbolLayer = t.TypeOf; const BaseLayer = t.type({ showRelief: t.boolean, - showLakes: t.boolean, - showRivers: t.boolean, + showWater: t.boolean, }); export type BaseLayer = t.TypeOf; const MapFields = t.type({ diff --git a/app/configurator/map/map-chart-options.tsx b/app/configurator/map/map-chart-options.tsx index b98f4ddc0..894da5d9e 100644 --- a/app/configurator/map/map-chart-options.tsx +++ b/app/configurator/map/map-chart-options.tsx @@ -70,19 +70,11 @@ export const BaseLayersSettings = memo(() => { /> - diff --git a/app/domain/data.ts b/app/domain/data.ts index b5dd4ffd9..7fd972f66 100644 --- a/app/domain/data.ts +++ b/app/domain/data.ts @@ -55,7 +55,6 @@ export type SymbolLayer = { }; export type GeoData = { - lakes: GeoJSON.FeatureCollection; areaLayer?: AreaLayer; symbolLayer?: SymbolLayer; }; diff --git a/app/locales/de/messages.po b/app/locales/de/messages.po index da69e3f52..26fa770fa 100644 --- a/app/locales/de/messages.po +++ b/app/locales/de/messages.po @@ -158,8 +158,8 @@ msgid "chart.map.layers.base" msgstr "Basis-Ebene" #: app/configurator/map/map-chart-options.tsx:72 -msgid "chart.map.layers.base.show.lakes" -msgstr "Seen anzeigen" +msgid "chart.map.layers.base.show.water" +msgstr "Wasser anzeigen" #: app/configurator/map/map-chart-options.tsx:64 msgid "chart.map.layers.base.show.relief" diff --git a/app/locales/en/messages.po b/app/locales/en/messages.po index ba0ee096e..53214a090 100644 --- a/app/locales/en/messages.po +++ b/app/locales/en/messages.po @@ -158,8 +158,8 @@ msgid "chart.map.layers.base" msgstr "Base Layer" #: app/configurator/map/map-chart-options.tsx:72 -msgid "chart.map.layers.base.show.lakes" -msgstr "Show lakes" +msgid "chart.map.layers.base.show.water" +msgstr "Show water" #: app/configurator/map/map-chart-options.tsx:64 msgid "chart.map.layers.base.show.relief" diff --git a/app/locales/fr/messages.po b/app/locales/fr/messages.po index cd0dfce64..3960e12cd 100644 --- a/app/locales/fr/messages.po +++ b/app/locales/fr/messages.po @@ -158,8 +158,8 @@ msgid "chart.map.layers.base" msgstr "Couche de base" #: app/configurator/map/map-chart-options.tsx:72 -msgid "chart.map.layers.base.show.lakes" -msgstr "Afficher les lacs" +msgid "chart.map.layers.base.show.water" +msgstr "Afficher de l'eau" #: app/configurator/map/map-chart-options.tsx:64 msgid "chart.map.layers.base.show.relief" diff --git a/app/locales/it/messages.po b/app/locales/it/messages.po index cb2f36daa..939d5676a 100644 --- a/app/locales/it/messages.po +++ b/app/locales/it/messages.po @@ -158,8 +158,8 @@ msgid "chart.map.layers.base" msgstr "Livello di base" #: app/configurator/map/map-chart-options.tsx:72 -msgid "chart.map.layers.base.show.lakes" -msgstr "Mostra i laghi" +msgid "chart.map.layers.base.show.water" +msgstr "Mostra l'acqua" #: app/configurator/map/map-chart-options.tsx:64 msgid "chart.map.layers.base.show.relief" From 2b3d5d5b96c8cb696dfe3e320cc8985f419828fa Mon Sep 17 00:00:00 2001 From: Bartosz Prusinowski Date: Thu, 3 Feb 2022 13:46:33 +0100 Subject: [PATCH 5/8] chore: Update yarn.lock --- yarn.lock | 201 +++++++++++++++++++++++++++++------------------------- 1 file changed, 108 insertions(+), 93 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8bacaed2f..527bf5608 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.0.2.tgz#f3d9760bf30588c51408dbe7c05ff2bb13069307" + integrity sha512-sE8Gx+qSDMLoJvb3QarJJlDQK7SSY4rK3hxp4XsiANeFOmjU46ZI7Y9adAQRJrmbz8zbtZkp3mJTT+rGxtF0XA== + dependencies: + "@jridgewell/trace-mapping" "^0.2.2" + sourcemap-codec "1.4.8" + "@apollo/client@^3.2.5", "@apollo/client@~3.2.5 || ~3.3.0": version "3.3.20" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.3.20.tgz#8f0935fa991857e9cf2e73c9bd378ad7ec97caf8" @@ -103,48 +111,26 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@7.12.9": - version "7.12.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" - integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.5" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.7" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.9" - "@babel/types" "^7.12.7" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.7.7": - version "7.16.12" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" - integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== +"@babel/core@7.12.9", "@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.14.6", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.7.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.0.tgz#16b8772b0a567f215839f689c5ded6bb20e864d5" + integrity sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA== dependencies: + "@ampproject/remapping" "^2.0.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.0" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.12" + "@babel/helpers" "^7.17.0" + "@babel/parser" "^7.17.0" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" "@babel/generator@^7.11.6", "@babel/generator@^7.12.13", "@babel/generator@^7.15.4", "@babel/generator@^7.5.0", "@babel/generator@^7.7.2": version "7.15.8" @@ -155,7 +141,7 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.16.8": +"@babel/generator@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== @@ -164,6 +150,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" + integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" @@ -277,20 +272,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" - integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/helper-module-transforms@^7.14.5": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" @@ -305,6 +286,20 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.6" +"@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-optimise-call-expression@^7.14.5", "@babel/helper-optimise-call-expression@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" @@ -387,7 +382,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helpers@^7.12.5", "@babel/helpers@^7.16.7": +"@babel/helpers@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== @@ -396,6 +391,15 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helpers@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.0.tgz#79cdf6c66a579f3a7b5e739371bc63ca0306886b" + integrity sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -414,15 +418,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.12.16": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4" - integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== - -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.12.13", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.15.4", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7", "@babel/parser@^7.7.2": - version "7.16.12" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" - integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== +"@babel/parser@7.12.16", "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.12.13", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.15.4", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0", "@babel/parser@^7.7.2": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== "@babel/plugin-proposal-class-properties@^7.0.0": version "7.14.5" @@ -741,15 +740,6 @@ resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.14.6.tgz#9070bd3cc2bb997d42e14bdf3b0d24a11b00242b" integrity sha512-oAoSp82jhJFnXKybKTOj5QF04XxiDRyiiqrFToiU1udlBXuZoADlPmmnOcuqBrZxSNNUjzJIVK8vt838Qoqjxg== -"@babel/template@^7.12.7", "@babel/template@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/template@^7.15.4", "@babel/template@^7.3.3": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" @@ -759,6 +749,15 @@ "@babel/parser" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/traverse@7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0" @@ -789,7 +788,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7": +"@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== @@ -805,6 +804,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611" @@ -830,7 +845,7 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@babel/types@^7.12.7", "@babel/types@^7.16.7", "@babel/types@^7.16.8": +"@babel/types@^7.16.7", "@babel/types@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== @@ -838,6 +853,14 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -2141,6 +2164,19 @@ resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" + integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg== + +"@jridgewell/trace-mapping@^0.2.2": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.2.5.tgz#d5061cc513fd3a0a949feb56b8073989865b1abe" + integrity sha512-K+Eths78fXDFOvQ2hgJhCiI5s+g81r2yXmACBpbn+f2+Qt94PNoTgUcAXPT8DZkhXCsZRsHVWVtY5KIBMcpDqQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + sourcemap-codec "1.4.8" + "@juggle/resize-observer@^3.2.0": version "3.3.1" resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" @@ -7953,7 +7989,7 @@ fwd-stream@^1.0.4: dependencies: readable-stream "~1.0.26-4" -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -8905,13 +8941,6 @@ is-core-module@^2.2.0, is-core-module@^2.4.0: dependencies: has "^1.0.3" -is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== - dependencies: - has "^1.0.3" - is-date-object@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" @@ -11530,7 +11559,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -12638,15 +12667,6 @@ resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.1 is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^1.3.2: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - resolve@^2.0.0-next.3: version "2.0.0-next.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" @@ -12872,7 +12892,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -13152,7 +13172,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.4.4: +sourcemap-codec@1.4.8, sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== @@ -13629,11 +13649,6 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - svg-parser@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" From f9c77c85c938edb121a2934c112eeb66856e30a3 Mon Sep 17 00:00:00 2001 From: Bartosz Prusinowski Date: Thu, 3 Feb 2022 17:51:53 +0100 Subject: [PATCH 6/8] feat: Remove redundant MVTLayer props --- app/charts/map/map.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/charts/map/map.tsx b/app/charts/map/map.tsx index e516532f8..d125ccf96 100644 --- a/app/charts/map/map.tsx +++ b/app/charts/map/map.tsx @@ -292,9 +292,6 @@ export const MapComponent = () => { ? [148, 198, 240] : [148, 198, 240, 0]; }} - getLineWidth={10} - lineWidthMinPixels={0.4} - lineWidthMaxPixels={3} updateTriggers={{ getFillColor: [showWater], }} From a6687011e9e49beb85e1297ce2512b341dcd0e84 Mon Sep 17 00:00:00 2001 From: Bartosz Prusinowski Date: Thu, 3 Feb 2022 17:54:04 +0100 Subject: [PATCH 7/8] chore: Update translations --- app/configurator/map/map-chart-options.tsx | 2 +- app/locales/de/messages.po | 50 +++++++++++----------- app/locales/en/messages.po | 50 +++++++++++----------- app/locales/fr/messages.po | 50 +++++++++++----------- app/locales/it/messages.po | 50 +++++++++++----------- 5 files changed, 101 insertions(+), 101 deletions(-) diff --git a/app/configurator/map/map-chart-options.tsx b/app/configurator/map/map-chart-options.tsx index 894da5d9e..bbf2f5ab7 100644 --- a/app/configurator/map/map-chart-options.tsx +++ b/app/configurator/map/map-chart-options.tsx @@ -71,7 +71,7 @@ export const BaseLayersSettings = memo(() => { Date: Tue, 8 Feb 2022 16:45:02 +0100 Subject: [PATCH 8/8] docs: Update changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ba2d40e9..f528ffaec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Features + - Page have improved titles now, depending on where you are on the application. Helpful when you have multiple tabs with visualize.admin or when you bookmark things. [#331](https://github.com/visualize-admin/visualization-tool/pull/331) - Theme and organization navigation counts take into account the search field now. [#329](https://github.com/visualize-admin/visualization-tool/pull/329) +- Added rivers and lakes through vector layer [#309](https://github.com/visualize-admin/visualization-tool/pull/309) + +### Bugs + - Fix selection of optional date filter [#332](https://github.com/visualize-admin/visualization-tool/pull/332) +- Fix discrete color scales with less than 3 observations [#309](https://github.com/visualize-admin/visualization-tool/pull/309)] ## [3.3.0] - 2022-02-07