From ee790eba831994b7203ac88b3771a1aff6efc098 Mon Sep 17 00:00:00 2001 From: frozenhelium Date: Tue, 12 Mar 2024 14:12:03 +0545 Subject: [PATCH] Remove unused files --- .../components/BarChartContainer/index.tsx | 1 - lib/src/components/ChartAxes/index.tsx | 1 - .../components/Map/Layers/_HexbinLayer.jsx | 166 ---- .../Map/Layers/_MaskLayer/index.tsx | 70 -- .../Map/Layers/_MaskLayer/styles.module.css | 27 - .../components/Map/Layers/_VectorLayer.tsx | 238 ------ .../components/Map/OlMap/styles.module.css | 1 + lib/src/components/Map/assets/logos/cdcf.jpg | Bin 13151 -> 0 bytes lib/src/components/Map/assets/logos/deep.svg | 25 - .../Map/assets/logos/deep_small.png | Bin 31238 -> 0 bytes lib/src/components/Map/assets/logos/dfs.svg | 37 - lib/src/components/Map/assets/logos/drc.jpg | Bin 81866 -> 0 bytes lib/src/components/Map/assets/logos/drc.svg | 6 - lib/src/components/Map/assets/logos/immap.png | Bin 18354 -> 0 bytes .../Map/assets/logos/immap_strapline.png | Bin 32582 -> 0 bytes .../components/Map/assets/logos/unocha.png | Bin 19152 -> 0 bytes lib/src/components/TextNode/index.tsx | 1 - .../MapVizzard/MapLayers/LayerRow.jsx | 120 --- .../MapVizzard/MapLayers/MapLayers.jsx | 52 -- .../MapVizzard/MapLayers/MapLayers.module.css | 119 --- .../components/MapVizzard/MapLayers/index.jsx | 3 - .../MapVizzard/MapOptions/ColorPicker.jsx | 54 -- .../MapOptions/ColorPicker.module.css | 28 - .../MapVizzard/MapOptions/FontPicker.jsx | 159 ---- .../MapVizzard/MapOptions/MapOptions.jsx | 143 ---- .../MapOptions/MapOptions.module.css | 234 ------ .../MapVizzard/MapOptions/OptionsHeatmap.jsx | 233 ------ .../MapVizzard/MapOptions/OptionsHexbin.jsx | 233 ------ .../MapVizzard/MapOptions/OptionsLine.jsx | 155 ---- .../MapOptions/OptionsMapGeneral.jsx | 563 -------------- .../MapVizzard/MapOptions/OptionsMapbox.jsx | 125 ---- .../MapVizzard/MapOptions/OptionsMask.jsx | 310 -------- .../MapVizzard/MapOptions/OptionsSymbol.jsx | 547 -------------- .../MapVizzard/MapOptions/OptionsTile.jsx | 85 --- .../MapVizzard/MapOptions/OptionsVector.jsx | 706 ------------------ .../MapVizzard/MapOptions/index.jsx | 3 - .../src/components/MapVizzard/MapVizzard.jsx | 153 ---- .../MapVizzard/assets/coordinates.svg | 2 - .../src/components/MapVizzard/assets/date.svg | 2 - .../src/components/MapVizzard/assets/down.svg | 2 - .../MapVizzard/assets/fillPattern.svg | 29 - .../MapVizzard/assets/fillSolid.svg | 7 - .../components/MapVizzard/assets/heatmap.svg | 19 - .../components/MapVizzard/assets/hexbin.svg | 4 - .../src/components/MapVizzard/assets/hide.svg | 2 - .../src/components/MapVizzard/assets/mask.svg | 2 - .../components/MapVizzard/assets/nullType.svg | 2 - .../components/MapVizzard/assets/number.svg | 19 - .../components/MapVizzard/assets/point.svg | 2 - .../components/MapVizzard/assets/polygon.svg | 2 - .../components/MapVizzard/assets/raster.svg | 4 - .../components/MapVizzard/assets/refresh.svg | 2 - .../components/MapVizzard/assets/remove.svg | 2 - .../components/MapVizzard/assets/settings.svg | 2 - .../src/components/MapVizzard/assets/show.svg | 2 - .../components/MapVizzard/assets/string.svg | 6 - .../src/components/MapVizzard/assets/up.svg | 2 - storybook/src/components/MapVizzard/index.jsx | 3 - .../src/components/MapVizzard/saveFile.js | 49 -- storybook/src/stories/MapVizzard.temp.js | 45 -- 60 files changed, 1 insertion(+), 4808 deletions(-) delete mode 100644 lib/src/components/Map/Layers/_HexbinLayer.jsx delete mode 100644 lib/src/components/Map/Layers/_MaskLayer/index.tsx delete mode 100644 lib/src/components/Map/Layers/_MaskLayer/styles.module.css delete mode 100644 lib/src/components/Map/Layers/_VectorLayer.tsx delete mode 100644 lib/src/components/Map/assets/logos/cdcf.jpg delete mode 100644 lib/src/components/Map/assets/logos/deep.svg delete mode 100644 lib/src/components/Map/assets/logos/deep_small.png delete mode 100644 lib/src/components/Map/assets/logos/dfs.svg delete mode 100644 lib/src/components/Map/assets/logos/drc.jpg delete mode 100644 lib/src/components/Map/assets/logos/drc.svg delete mode 100644 lib/src/components/Map/assets/logos/immap.png delete mode 100644 lib/src/components/Map/assets/logos/immap_strapline.png delete mode 100644 lib/src/components/Map/assets/logos/unocha.png delete mode 100644 storybook/src/components/MapVizzard/MapLayers/LayerRow.jsx delete mode 100644 storybook/src/components/MapVizzard/MapLayers/MapLayers.jsx delete mode 100644 storybook/src/components/MapVizzard/MapLayers/MapLayers.module.css delete mode 100644 storybook/src/components/MapVizzard/MapLayers/index.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/ColorPicker.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/ColorPicker.module.css delete mode 100644 storybook/src/components/MapVizzard/MapOptions/FontPicker.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/MapOptions.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/MapOptions.module.css delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsHeatmap.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsHexbin.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsLine.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsMapGeneral.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsMapbox.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsMask.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsSymbol.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsTile.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/OptionsVector.jsx delete mode 100644 storybook/src/components/MapVizzard/MapOptions/index.jsx delete mode 100644 storybook/src/components/MapVizzard/MapVizzard.jsx delete mode 100644 storybook/src/components/MapVizzard/assets/coordinates.svg delete mode 100644 storybook/src/components/MapVizzard/assets/date.svg delete mode 100644 storybook/src/components/MapVizzard/assets/down.svg delete mode 100644 storybook/src/components/MapVizzard/assets/fillPattern.svg delete mode 100644 storybook/src/components/MapVizzard/assets/fillSolid.svg delete mode 100644 storybook/src/components/MapVizzard/assets/heatmap.svg delete mode 100644 storybook/src/components/MapVizzard/assets/hexbin.svg delete mode 100644 storybook/src/components/MapVizzard/assets/hide.svg delete mode 100644 storybook/src/components/MapVizzard/assets/mask.svg delete mode 100644 storybook/src/components/MapVizzard/assets/nullType.svg delete mode 100644 storybook/src/components/MapVizzard/assets/number.svg delete mode 100644 storybook/src/components/MapVizzard/assets/point.svg delete mode 100644 storybook/src/components/MapVizzard/assets/polygon.svg delete mode 100644 storybook/src/components/MapVizzard/assets/raster.svg delete mode 100644 storybook/src/components/MapVizzard/assets/refresh.svg delete mode 100644 storybook/src/components/MapVizzard/assets/remove.svg delete mode 100644 storybook/src/components/MapVizzard/assets/settings.svg delete mode 100644 storybook/src/components/MapVizzard/assets/show.svg delete mode 100644 storybook/src/components/MapVizzard/assets/string.svg delete mode 100644 storybook/src/components/MapVizzard/assets/up.svg delete mode 100644 storybook/src/components/MapVizzard/index.jsx delete mode 100644 storybook/src/components/MapVizzard/saveFile.js delete mode 100644 storybook/src/stories/MapVizzard.temp.js diff --git a/lib/src/components/BarChartContainer/index.tsx b/lib/src/components/BarChartContainer/index.tsx index dcacc5de..48f568ee 100644 --- a/lib/src/components/BarChartContainer/index.tsx +++ b/lib/src/components/BarChartContainer/index.tsx @@ -1,4 +1,3 @@ -/* eslint-disable react/require-default-props */ import React from 'react'; import { _cs, isDefined } from '@togglecorp/fujs'; diff --git a/lib/src/components/ChartAxes/index.tsx b/lib/src/components/ChartAxes/index.tsx index b17c6fd3..fffc8503 100644 --- a/lib/src/components/ChartAxes/index.tsx +++ b/lib/src/components/ChartAxes/index.tsx @@ -1,4 +1,3 @@ -/* eslint-disable react/require-default-props */ import React, { Fragment, useCallback, diff --git a/lib/src/components/Map/Layers/_HexbinLayer.jsx b/lib/src/components/Map/Layers/_HexbinLayer.jsx deleted file mode 100644 index 6ed4c8c4..00000000 --- a/lib/src/components/Map/Layers/_HexbinLayer.jsx +++ /dev/null @@ -1,166 +0,0 @@ -import { useEffect, useState } from 'react'; -import OLVectorLayer from 'ol/layer/Vector'; -import HexBin from 'ol-ext/source/HexBin'; -import Feature from 'ol/Feature'; -import Point from 'ol/geom/Point'; -import { - Style, - Fill, -} from 'ol/style'; -import { fromLonLat } from 'ol/proj'; -import * as d3ColorScale from 'd3-scale-chromatic'; -import { scaleLog } from 'd3-scale'; -import { vector } from '../helpers'; - -function HexbinLayer({ - map, - data, - zIndex = 1, - opacity = 1, - radius, - fillPalette, - weighted = false, -}) { - const [hexbinLayer, setHexbinLayer] = useState(undefined); - const [vectorLayer, setVectorLayer] = useState(undefined); - const [max, setMax] = useState(); - const [maxFatalities, setMaxFatalities] = useState(); - const interpolator = d3ColorScale[`interpolate${fillPalette}`]; - const numSteps = 5; - // eslint-disable-next-line - const colors = Array.from({ length: numSteps }, (_, i) => interpolator(i * (1 / numSteps))); - - useEffect(() => { - if (!map) return undefined; - - let points = data; - - if (!Array.isArray(data)) { - points = data.features; - } - - if (typeof points === 'undefined') return undefined; - - points = points.filter((d) => !d.exclude_from_heatmap); - - const features = points.map((row) => { - let item = row; - if (!Array.isArray(data)) { - item = row.properties; - [item.lon, item.lat] = row.geometry.coordinates; - } - const feature = new Feature(new Point(fromLonLat([item.lon, item.lat]))); - feature.setProperties(item); - return feature; - }); - - const hexBinLayer = new HexBin({ - source: vector({ features }), - size: 7000 * radius, - }); - - const hexFeatures = hexBinLayer.getFeatures(); - // Calculate min/ max value - let newMin = Infinity; - let newMax = 0; - let newMaxFatalities = 0; - - // eslint-disable-next-line no-cond-assign, no-plusplus - for (let i = 0, f; f = hexFeatures[i]; i++) { - const arr = f.get('features'); - const n = arr.length; - let fatalities = 0; - let nSdn = 0; - arr.forEach((feature) => { - // eslint-disable-next-line - const iso = feature.values_.adm0_iso3; - // eslint-disable-next-line - if (iso === 'SDN') fatalities += feature.values_.fatalities; - if (iso === 'SDN') nSdn += 1; - }); - if (n < newMin) newMin = n; - if (nSdn > newMax) newMax = nSdn; - if (fatalities > newMaxFatalities) newMaxFatalities = fatalities; - hexFeatures[i].set('fatalities', fatalities); - } - // maxi = max; - // setMin(newMin); - setMax(newMax); - setMaxFatalities(newMaxFatalities); - setHexbinLayer(hexBinLayer); - - return () => { - if (map) { - map.removeLayer(vectorLayer); - } - }; - }, [ - map, - fillPalette, - weighted, - radius, - JSON.stringify(data), - ]); - - useEffect(() => { - if (!hexbinLayer) return undefined; - - const styleFn = (f) => { - const val = f.get('features').length; - const ff = f.get('fatalities'); - let color; - if (weighted) { - const scaleColor = scaleLog() - .domain([1, maxFatalities]) - .range([0, 4]) - .base(2) - .clamp(true); - const colorIndex = Math.ceil(scaleColor(ff)); - if (Number.isNaN(colorIndex)) { - color = 'rgba(255,255,255,0)'; - } else { - color = colors[colorIndex]; - } - } else { - const scaleColor = scaleLog() - .domain([1, max]) - .range([0, 4]) - .base(2) - .clamp(true); - const colorIndex = Math.ceil(scaleColor(val)); - color = colors[colorIndex]; - } - return [new Style({ fill: new Fill({ color }) })]; - }; - - const vLayer = new OLVectorLayer({ - source: hexbinLayer, - renderers: ['SVG', 'VML', 'Canvas'], - style: styleFn, - }); - vLayer.setZIndex(zIndex); - - map.addLayer(vLayer); - setVectorLayer(vLayer); - - return () => { - if (map) { - map.removeLayer(vLayer); - } - }; - }, [hexbinLayer, weighted]); - - useEffect(() => { - if (!hexbinLayer) return; - vectorLayer.setOpacity(opacity); - }, [opacity]); - - useEffect(() => { - if (!vectorLayer) return; - vectorLayer.setZIndex(zIndex); - }, [zIndex]); - - return null; -} - -export default HexbinLayer; diff --git a/lib/src/components/Map/Layers/_MaskLayer/index.tsx b/lib/src/components/Map/Layers/_MaskLayer/index.tsx deleted file mode 100644 index d359c5c0..00000000 --- a/lib/src/components/Map/Layers/_MaskLayer/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { useEffect, useState } from 'react'; -import { Style, Fill } from 'ol/style'; -import OLVectorLayer from 'ol/layer/Vector'; -import WKT from 'ol/format/WKT'; -import Feature from 'ol/Feature'; -// NOTE: We need to include this so that certain features are available -// eslint-disable-next-line no-unused-vars -// import Cspline from 'ol-ext/render/Cspline'; - -import styles from './styles.module.css'; - -function MaskLayer({ - map, id, polygon, source, blur, zIndex = 1, opacity = 1, smoothing, -}) { - const [maskLayer, setMaskLayer] = useState(null); - - useEffect(() => { - if (!map) return undefined; - - const style = new Style({ - fill: new Fill({ - color: '#FFF', - }), - }); - - const vectorLayer = new OLVectorLayer({ - source, - style, - className: `${styles.blur} ${styles[`blur${blur}`]}`, - id, - }); - - if (polygon) { - const format = new WKT(); - const wkt = format.readGeometry(polygon, { dataProjection: 'EPSG:4326', featureProjection: 'EPSG:3857' }); - const feature = new Feature(wkt); - feature.setGeometry(feature.getGeometry().cspline({ tension: smoothing })); - source.addFeature(feature); - map.addLayer(vectorLayer); - vectorLayer.setZIndex(zIndex); - vectorLayer.setOpacity(opacity); - setMaskLayer(vectorLayer); - } - - return () => { - if (map) { - map.removeLayer(vectorLayer); - } - }; - }, [map, id, polygon, smoothing, opacity, zIndex, blur]); - - useEffect(() => { - if (!maskLayer) return; - maskLayer.set('className', `${styles.blur} ${styles[`blur${blur}`]}`); - }, [maskLayer, blur]); - - // useEffect(() => { - // if (!maskLayer) return; - // maskLayer.setOpacity(opacity); - // }, [maskLayer, opacity]); - - useEffect(() => { - if (!maskLayer) return; - maskLayer.setZIndex(zIndex); - }, [maskLayer, zIndex]); - - return null; -} - -export default MaskLayer; diff --git a/lib/src/components/Map/Layers/_MaskLayer/styles.module.css b/lib/src/components/Map/Layers/_MaskLayer/styles.module.css deleted file mode 100644 index 47f47fac..00000000 --- a/lib/src/components/Map/Layers/_MaskLayer/styles.module.css +++ /dev/null @@ -1,27 +0,0 @@ -.blur0 {filter: blur(0px);} -.blur1 {filter: blur(1px);} -.blur2 {filter: blur(2px);} -.blur3 {filter: blur(3px);} -.blur4 {filter: blur(4px);} -.blur5 {filter: blur(5px);} -.blur6 {filter: blur(6px);} -.blur7 {filter: blur(7px);} -.blur8 {filter: blur(8px);} -.blur9 {filter: blur(9px);} -.blur10 {filter: blur(10px);} -.blur11 {filter: blur(11px);} -.blur12 {filter: blur(12px);} -.blur13 {filter: blur(13px);} -.blur14 {filter: blur(14px);} -.blur15 {filter: blur(15px);} -.blur16 {filter: blur(16px);} -.blur17 {filter: blur(17px);} -.blur18 {filter: blur(18px);} -.blur19 {filter: blur(19px);} -.blur20 {filter: blur(20px);} - -.blur { - -webkit-box-shadow: 0px 0px 24px 33px rgba(255,255,255,1); - -moz-box-shadow: 0px 0px 24px 33px rgba(255,255,255,1); - box-shadow: 0px 0px 24px 33px rgba(255,255,255,1); -} diff --git a/lib/src/components/Map/Layers/_VectorLayer.tsx b/lib/src/components/Map/Layers/_VectorLayer.tsx deleted file mode 100644 index 435848fd..00000000 --- a/lib/src/components/Map/Layers/_VectorLayer.tsx +++ /dev/null @@ -1,238 +0,0 @@ -import { useEffect, useState, useMemo } from 'react'; -import OLVectorLayer from 'ol/layer/Vector'; -import { - Style, - Fill, - Stroke, - Text, -} from 'ol/style'; -import FillPattern from 'ol-ext/style/FillPattern'; -import { scalePow, scaleLinear } from 'd3'; -import * as d3ColorScale from 'd3-scale-chromatic'; -import { rgba } from '../helpers'; - -function VectorLayer({ - map, - source, - style, - zIndex = 1, - opacity = 1, - showLabels = false, - labelColumn = '', -}) { - const [vectorLayer, setVectorLayer] = useState(undefined); - const [labelLayer, setLabelLayer] = useState(undefined); - - const colorsArray = useMemo(() => { - if (!style.fillPalette) return []; - let colors; - if ((style.fillType === 'graduated') || (style.fillType === 'continuous')) { - const interpolator = d3ColorScale[`interpolate${style.fillPalette}`]; - let numSteps = style.fillSteps; - if (style.fillScaleType === 'continuous') numSteps = 50; - // eslint-disable-next-line - colors = Array.from({ length: numSteps }, (_, i) => interpolator(i * (1 / numSteps))); - } else if (style.fillType === 'categorical') { - colors = {}; - let i = 0; - let palette = d3ColorScale[`scheme${style.fillPaletteCategorised}`]; - if ((style.fillScaleInvert) && (typeof palette !== 'undefined')) { - palette = [...palette].reverse(); - } - source.forEachFeature((d) => { - // eslint-disable-next-line - const index = d['values_'][style.fillColumn]; - if (typeof palette !== 'undefined') { - colors[index] = palette[i]; - i += 1; - if (i === palette.length) i = 0; - } - }); - } else { - colors = d3ColorScale[`scheme${style.fillPalette}`]; - } - if ((style.fillScaleInvert) && (style.fillType !== 'categorical')) colors.reverse(); - - return colors; - }, [ - source, - style.fillPalette, - style.fillPaletteCategorised, - style.fillScaleInvert, - style.fillType, - style.fillSteps, - style.fillScaleType, - style.fillColumn, - ]); - - // polygon vectors - useEffect(() => { - if (!map) return undefined; - const styles = []; - let polygonStyle; - let numSteps = style.fillSteps; - let { fillPow } = style; - if (style.fillScaleType === 'continuous') numSteps = 50; - if (style.fillScaleType === 'steps') fillPow = 1; - - let fill = new Fill({ - color: rgba(style.fill), - }); - - const stroke = new Stroke({ - width: style.strokeWidth, - color: rgba(style.stroke), - }); - - if (style.fillType === null) { - fill = null; - } - - if (style.fillSingleType === 'pattern') { - fill = new FillPattern({ - pattern: 'hatch', - color: rgba(style.fill), - size: style.fillPatternSize, - spacing: style.fillPatternSpacing, - angle: style.fillPatternAngle, - }); - } - - if (style) { - styles.push( - (polygonStyle = new Style({ stroke, fill })), - ); - } - - const colorsArrayPow = scalePow() - .exponent(fillPow) - .domain([0, numSteps]); - - const colorScale = scaleLinear() - .range([0, numSteps]) - .domain([style.fillDataMin, style.fillDataMax]); - - let colorStrPow = null; - if (style.fillType === 'categorical') { - colorStrPow = null; - } else { - colorStrPow = colorsArray.map((c, i) => { - const colorIndex = Math.ceil(colorsArrayPow(i) * numSteps); - return (colorsArray[colorIndex]); - }); - } - - const vLayer = new OLVectorLayer({ - source, - style(feature) { - // FILL LOGIC - if (style.fillType === 'graduated') { - const colorArrayIndex = Math.floor(colorScale(feature.get(style.fillColumn))) - 1; - const polygonColor = colorStrPow[colorArrayIndex]; - if (typeof polygonColor !== 'undefined') { - polygonStyle.getFill().setColor(polygonColor); - } else { - polygonStyle.getFill().setColor('transparent'); - } - } - if (style.fillType === 'categorical') { - const polygonColor = colorsArray[feature.get(style.fillColumn)]; - if (typeof polygonColor !== 'undefined') { - polygonStyle.getFill().setColor(polygonColor); - } else { - polygonStyle.getFill().setColor('transparent'); - } - } - return styles; - }, - }); - - map.addLayer(vLayer); - vLayer.setZIndex(zIndex); - vLayer.setOpacity(opacity); - setVectorLayer(vLayer); - - return () => { - if (map) { - map.removeLayer(vLayer); - } - }; - }, [map, JSON.stringify(style)]); - - // text labels - useEffect(() => { - if (!map) return undefined; - const labelStyles = []; - let labelStyle; - - if (showLabels && labelColumn) { - // with text labels - let stroke = new Stroke({ - color: 'rgba(255,255,255,0.5)', - width: 2, - }); - if (style.labelStyle.showHalo === false) stroke = null; - labelStyle = new Style({ - text: new Text({ - font: `${style.labelStyle.fontWeight} ${style.labelStyle.fontSize}px/1.07 ${style.labelStyle.fontFamily},sans-serif`, - overflow: true, - fill: new Fill({ - color: rgba(style.labelStyle.color), - }), - stroke, - }), - }); - labelStyles.push(labelStyle); - } - - const textLayer = new OLVectorLayer({ - source, - style(feature) { - if (showLabels && labelColumn) { - let columnName = labelColumn; - if (!feature.get(columnName)) columnName = labelColumn; - let label = String(feature.get(columnName)).split(' ').join('\n'); - if (style.labelStyle.transform === 'uppercase') label = label.toUpperCase(); - labelStyle.getText().setText(label); - } - return labelStyles; - }, - declutter: true, - }); - - map.addLayer(textLayer); - textLayer.setZIndex(zIndex); - textLayer.setOpacity(opacity); - setLabelLayer(textLayer); - - return () => { - if (map) { - map.removeLayer(textLayer); - } - }; - }, [map, showLabels, labelColumn, JSON.stringify(style)]); - - useEffect(() => { - if (!vectorLayer) return; - vectorLayer.setOpacity(opacity); - }, [vectorLayer, opacity]); - - useEffect(() => { - if (!labelLayer) return; - labelLayer.setOpacity(opacity); - }, [labelLayer, opacity]); - - useEffect(() => { - if (!vectorLayer) return; - vectorLayer.setZIndex(zIndex); - }, [vectorLayer, zIndex]); - - useEffect(() => { - if (!labelLayer) return; - labelLayer.setZIndex(zIndex); - }, [labelLayer, zIndex]); - - return null; -} - -export default VectorLayer; diff --git a/lib/src/components/Map/OlMap/styles.module.css b/lib/src/components/Map/OlMap/styles.module.css index d7e1bdd7..058074cd 100644 --- a/lib/src/components/Map/OlMap/styles.module.css +++ b/lib/src/components/Map/OlMap/styles.module.css @@ -1,3 +1,4 @@ +/* stylelint-disable no-descending-specificity */ :root { --ol-background-color: white; --ol-accent-background-color: #F5F5F5; diff --git a/lib/src/components/Map/assets/logos/cdcf.jpg b/lib/src/components/Map/assets/logos/cdcf.jpg deleted file mode 100644 index c765c7e9129e5a0a3b163541f805b6a17ad1bab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13151 zcmcI~cT`hd^konP1vK;yQ9x-@r1yYI69EwcsZmiW5l{i?iGXw=2p>g2qI9H$4niOx z9qGOIUK45{g~|7uw$^X0nKd(O%}dT-x$ouf_x8Q#?ETKg#Ki)D>7lNHE`W-P3Xnwk z04}Bh_W{(GF8%wZ95j^gVIcV868OZ9YDi; zndRnPZCX~-7j%N}*<^#h{=6b|udJE<$skr(?&XKztMnY4T--djZi|SDiOVY}Dk-a| z-hZH@tEX@9(Cn$Xh2=9VYll~_-#9usyLfndef0M6^$YnN8WtWA85N)KPhwJX%D2?a ztn8fJy!?V+;AN~wzYS3c6AR8kBp9uPfSiNE-kODuB~ruZs86NkB(1H z@n`4%;-Ugj|5sT51KEGV#Z19t+!HMO%MXL}9K!O8w{ZVL`wwLQXTXC0pOF0zVE+@>6o8SMit_NNnE_w` z$t*KU6!349e4KACo5uffh3_WF$Lm#ef<52SL5x-X#&vA@k!?2qD9#Ij1A`dH?Ud=_ z_C3R3J&Db)kFFp5?v-vX+sqIhQOH53>Y=%0sufWt{dw$zJd5(6s5q#-sH(|ChUny^ zVA@9miHxl3_geg`Y^M5`qC|iE{|=g*Y?KC)%yI$1KP#x{A-5gUJ@VDGQ0XT?#y)A# zm%SV~5IMPY*8u6;kBC7XXl^;n_1XdAR1dEuhz>F8l=j z5~xNn>pk;3%Xs5|x@~mjJgV%irv~k~RqEEz+^E9sE)QMon%s$8Yig z;qG)z$u4?%zC>aj0W3cB3GT5v!?+!e^Lo^)tb25OU&k$gB%7($<^OG1Ci+yIq~ik@<|D1)pQ^4| zn=KVir};nId0zeX1l@Y®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 vs4h0-jtR - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/src/components/Map/assets/logos/deep_small.png b/lib/src/components/Map/assets/logos/deep_small.png deleted file mode 100644 index 827ea5ed3b01efc26a884471a464e42c9e40f528..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31238 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

+B3i9}WWpPz@rJ^dqGWM^ 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 c&|my7fHWUL1}`sQ> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/src/components/Map/assets/logos/drc.jpg b/lib/src/components/Map/assets/logos/drc.jpg deleted file mode 100644 index 5e011abbdf904d34c7553710662aa2ec84336d10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81866 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%0D?a8u=UKY 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 - - - - - \ No newline at end of file diff --git a/lib/src/components/Map/assets/logos/immap.png b/lib/src/components/Map/assets/logos/immap.png deleted file mode 100644 index b3ffe20c5c31b81fa1adc2d1b29a719ff006c04b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18354 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 DsHW@{ diff --git a/lib/src/components/Map/assets/logos/immap_strapline.png b/lib/src/components/Map/assets/logos/immap_strapline.png deleted file mode 100644 index 7d5bd1199516a09aa256150ed21cbc3686432e99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32582 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 s_l=cUaurB{%^B1cJM}dms?p-E9|G;N9n~Iv>v; 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 MtNX setHovered(true); - const removeHover = () => setHovered(false); - - const clickRow = (e) => { - if (e.target.nodeName === 'IMG') return; - if (setActiveLayer) setActiveLayer(row.id); - }; - - const moveBack = () => { - const newRow = { ...row }; - newRow.zIndex -= 1.001; - update(newRow, newRow.id); - }; - - const moveForward = () => { - const newRow = { ...row }; - newRow.zIndex += 1.001; - update(newRow, newRow.id); - }; - - const remove = () => { - update('remove', row.id); - }; - - const toggleVisibility = () => { - const newRow = { ...row }; - if (newRow.visible === 1) { - newRow.visible = 0; - } else { - newRow.visible = 1; - } - newRow.ts = Math.random(); - update(newRow, newRow.id); - }; - - let icon; - if (row.type === 'osm') { - icon = ; - } else if (row.type === 'mask') { - icon = ; - } else if (row.type === 'symbol') { - icon = ; - } else if (row.type === 'polygon') { - icon = ; - } else { - icon = ; - } - let showIcon; - if (row.visible) { - showIcon = ; - } else { - showIcon = ; - } - - let activeClass = ''; - if (activeLayer === row.id) { - activeClass = styles.active; - } - - return ( -

- ); -} - -export default LayerRow; diff --git a/storybook/src/components/MapVizzard/MapLayers/MapLayers.jsx b/storybook/src/components/MapVizzard/MapLayers/MapLayers.jsx deleted file mode 100644 index dbf8e9b3..00000000 --- a/storybook/src/components/MapVizzard/MapLayers/MapLayers.jsx +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react'; -import styles from './MapLayers.module.css'; -import LayerRow from './LayerRow'; - -function MapLayers({ - layers, - setLayers, - activeLayer, - setActiveLayer, -}) { - const updateLayers = (d, id) => { - const layersClone = [...layers]; - if (d === 'remove') { - const newLayersObj = layersClone.filter((obj) => obj.id !== id); - if (setLayers) setLayers([...newLayersObj]); - } else { - const layerIndex = layersClone.findIndex((layer) => layer.id === id); - if (layerIndex !== -1) { - layersClone[layerIndex] = d; - } - if (setLayers) setLayers([...layersClone]); - } - }; - - function layersBgClick() { - if (setActiveLayer) setActiveLayer(null); - } - - const mLayers = [...layers].sort((a, b) => b.zIndex - a.zIndex); - - const rows = mLayers.map((row) => ( - - )); - - return ( -
-
-

Layers

-
-
{rows}
-
-
- ); -} - -export default MapLayers; diff --git a/storybook/src/components/MapVizzard/MapLayers/MapLayers.module.css b/storybook/src/components/MapVizzard/MapLayers/MapLayers.module.css deleted file mode 100644 index f9b80316..00000000 --- a/storybook/src/components/MapVizzard/MapLayers/MapLayers.module.css +++ /dev/null @@ -1,119 +0,0 @@ -.layersPanel { - background-color:rgb(241, 241, 241); - padding: 6px 8px; - border-right: 1px solid #fbfbfb; - padding-left: 5px; -} - -.layersPanel h1 { - padding: 0px; - margin: 0px; - font-size: 18px; - color: rgb(59, 59, 59); - padding-left: 4px; -} - -.MapLayers_row div { - display: inline-block; -} - -.layersPanelBody { - margin-top: 3px; - padding-left: 5px; -} - -.layersPanelContainer { - height: 100%; -} - -.layersPanelBg { - min-height: 200px; - cursor: pointer; -} - -.MapLayers_row:hover { - background-color: #f7f7f769; -} - -.MapLayers_row { - height: 36px; - font-size: 12px; - padding-left: 2px; - padding-right: 3px; - padding-top: 1px; - cursor: pointer; - white-space: nowrap; -} - -.MapLayers_icon img { - width: 20px; - margin-top: 5px; - margin-left: 5px; - opacity: 0.2 -} - -.MapLayers_icon_container { - display: inline-block; - width: 32px; - height: 33px; - margin: 2px 0px; -} - -.MapLayers_icon { - background-color: #eaeaea; - display: inline-block; - width: 30px; - height: 30px; - /* margin: 3px 0px; */ - font-size: 8px; - border-radius: 30px; -} - -.MapLayers_title { - display: inline-block; - padding-left: 6px; - padding-top: 10px; - vertical-align: top; - width: 185px; - overflow: hidden; -} - -.MapLayers_buttons { - display: block; - font-size: 9px; - float: right; - margin-top: 5px; - cursor: pointer; - opacity: 1; - padding-right: 6px; -} - -.MapLayers_buttons img { - width: 15px; - margin-top: 5px; - margin-left: 5px; - opacity: 0.2 -} - -.MapLayers_buttons_forward, -.MapLayers_buttons_back, -.MapLayers_buttons_show, -.MapLayers_buttons_remove { -opacity: 0; -} - -.hovered .MapLayers_buttons_forward, -.hovered .MapLayers_buttons_back, -.hovered .MapLayers_buttons_show, -.hovered .MapLayers_buttons_remove { - opacity: 1 !important; -} - -.MapLayers_buttons_hidden { - opacity: 1 !important; - -} - -.active { - font-weight: bold; -} \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/MapLayers/index.jsx b/storybook/src/components/MapVizzard/MapLayers/index.jsx deleted file mode 100644 index 151df62a..00000000 --- a/storybook/src/components/MapVizzard/MapLayers/index.jsx +++ /dev/null @@ -1,3 +0,0 @@ -import MapLayers from './MapLayers'; - -export default MapLayers; diff --git a/storybook/src/components/MapVizzard/MapOptions/ColorPicker.jsx b/storybook/src/components/MapVizzard/MapOptions/ColorPicker.jsx deleted file mode 100644 index 7727131b..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/ColorPicker.jsx +++ /dev/null @@ -1,54 +0,0 @@ -import React, { useState } from 'react'; -import { SketchPicker } from 'react-color'; -import styles from './ColorPicker.module.css'; - -function ColorPicker({ color, setColor }) { - const [displayColorPicker, setDisplayColorPicker] = useState(false); - - const handleClick = () => { - setDisplayColorPicker(!displayColorPicker); - }; - - const handleClose = () => { - setDisplayColorPicker(false); - }; - - const handleChange = (c) => { - setColor(c.rgb); - }; - - const presetColors = [ - { color: '#be2126', title: 'iMMAP Primary' }, - { color: '#6d6e71', title: 'iMMAP Grey' }, - { color: '#193661', title: 'iMMAP Secondary' }, - { color: '#BE9D27', title: 'iMMAP Complementary 1' }, - { color: '#35712F', title: 'iMMAP Complementary 2' }, - { color: '#29B29C', title: 'iMMAP Complementary 3' }, - { color: '#E84E15', title: 'iMMAP Complementary 4' }, - { color: '#0D7260', title: 'iMMAP Complementary 5' }, - { color: '#49352E', title: 'iMMAP Complementary 6' }, - { color: '#418FDE', title: 'UNOCHA Primary' }, - { color: '#E56A54', title: 'UNOCHA Secondary' }, - { color: '#999999', title: 'UNOCHA Neutral' }, - { color: '#1a3ed0', title: 'DEEP Primary' }, - { color: '#00125b', title: 'DEEP Secondary' }, - { color: '#008eff', title: 'DEEP Tertiary' }, - { color: '#ff6720', title: 'DFS Primary' }, - ]; - - return ( -
-
-
-
- {displayColorPicker ? ( -
-
- -
- ) : null} -
- ); -} - -export default ColorPicker; diff --git a/storybook/src/components/MapVizzard/MapOptions/ColorPicker.module.css b/storybook/src/components/MapVizzard/MapOptions/ColorPicker.module.css deleted file mode 100644 index 19d0c061..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/ColorPicker.module.css +++ /dev/null @@ -1,28 +0,0 @@ -.cover { - position: fixed; - top: 0px; - right: 0px; - bottom: 0px; - left: 0px; -} - -.color { - width: 36px; - height: 14px; - border-radius: 2px; - /* background: green; */ -} - -.swatch { - padding: 5px; - background: #fff; - border-radius: 1px; - box-shadow: 0 0 0 1px rgba(0,0,0,.1); - display: inline-block; - cursor: pointer; -} - -.popover { - position: absolute; - z-index: 2; -} \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/MapOptions/FontPicker.jsx b/storybook/src/components/MapVizzard/MapOptions/FontPicker.jsx deleted file mode 100644 index 280f1b82..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/FontPicker.jsx +++ /dev/null @@ -1,159 +0,0 @@ -import React, { useState } from 'react'; -import { SketchPicker } from 'react-color'; -import { FormControl } from '@mui/material'; -import Slider from '@mui/material/Slider'; -import Switch from '@mui/material/Switch'; -import Select from '@mui/material/Select'; -import MenuItem from '@mui/material/MenuItem'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import colorPickerStyles from './ColorPicker.module.css'; -import styles from './MapOptions.module.css'; - -function FontPicker({ style, updateFontStyle, variant }) { - const [displayColorPicker, setDisplayColorPicker] = useState(false); - - const handleClick = () => { - setDisplayColorPicker(!displayColorPicker); - }; - - const handleClose = () => { - setDisplayColorPicker(false); - }; - - const updateColor = (c) => { - updateFontStyle('color', c.rgb); - }; - - // materialUI theme - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - return ( -
-
-
Font colour
-
-
-
-
- {displayColorPicker ? ( -
-
- -
- ) : null} -
-
- -
-
Font family
-
- - - -
-
- {(variant !== 'general') && ( -
-
-
Font size (px)
- updateFontStyle('fontSize', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={3} - max={34} - /> -
-
-
Font weight
-
- - - -
-
-
-
Show halo
-
- updateFontStyle('showHalo', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
-
- )} -
- ); -} - -export default FontPicker; diff --git a/storybook/src/components/MapVizzard/MapOptions/MapOptions.jsx b/storybook/src/components/MapVizzard/MapOptions/MapOptions.jsx deleted file mode 100644 index b5f04857..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/MapOptions.jsx +++ /dev/null @@ -1,143 +0,0 @@ -import React, { useMemo } from 'react'; -import OptionsVector from './OptionsVector'; -import OptionsLine from './OptionsLine'; -import OptionsMask from './OptionsMask'; -import OptionsSymbol from './OptionsSymbol'; -import OptionsHeatmap from './OptionsHeatmap'; -import OptionsHexbin from './OptionsHexbin'; -import OptionsTile from './OptionsTile'; -import OptionsMapbox from './OptionsMapbox'; -import OptionsMapGeneral from './OptionsMapGeneral'; -import styles from './MapOptions.module.css'; - -function MapOptions({ - layers, - setLayers, - activeLayer, - mapOptions, - setMapOptions, - mapObj, -}) { - const map = mapObj; - - const render = useMemo(() => { - const updateLayer = (d, id) => { - const layersClone = [...layers]; - layersClone.forEach((dd, ii) => { - if (dd.id === id) { - layersClone[ii] = d; - } - }); - if (setLayers) setLayers([...layersClone]); - }; - const updateMapOptions = (d) => { - setMapOptions({ ...d }); - }; - - const renderLayers = []; - if (activeLayer === null) { - renderLayers.push( - , - ); - } else { - layers.forEach((dd) => { - if (dd.id === activeLayer) { - if (dd.type === 'polygon') { - renderLayers.push( - , - ); - } - if (dd.type === 'line') { - renderLayers.push( - , - ); - } - if (dd.type === 'symbol') { - renderLayers.push( - , - ); - } - if (dd.type === 'heatmap') { - renderLayers.push( - , - ); - } - if (dd.type === 'hexbin') { - renderLayers.push( - , - ); - } - if (dd.type === 'mask') { - renderLayers.push( - , - ); - } - if (dd.type === 'mapbox') { - renderLayers.push( - , - ); - } - if (dd.type === 'osm') { - renderLayers.push( - , - ); - } - } - }); - } - return renderLayers; - }, [map, activeLayer, setLayers, setMapOptions, layers, mapOptions]); - - return
{render}
; -} - -export default MapOptions; - -MapOptions.propTypes = {}; - -MapOptions.defaultProps = {}; diff --git a/storybook/src/components/MapVizzard/MapOptions/MapOptions.module.css b/storybook/src/components/MapVizzard/MapOptions/MapOptions.module.css deleted file mode 100644 index 3e8e83cc..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/MapOptions.module.css +++ /dev/null @@ -1,234 +0,0 @@ -.container { - display: grid; - grid-template-areas: - 'layers options map'; - grid-template-columns: 320px 228px; - /* grid-template-columns: repeat(12, 1fr); */ - /* grid-gap: 20px; */ -} - -.mapOptionsContainer { - grid-area: options; - background-color: #f9f9f9b0; - min-height: 97vh; - padding-left: 0px; - padding-right: 0px; - position: relative; - height: 100%; - min-width: 230px; - max-width: 230px; -} - -.mapOptions { - font-family: Roboto; - min-width: 200px; -} - -.mapOptionsPanel { - background-color:rgb(241, 241, 241); - padding: 0px; - height: 33px; - border-right: 1px solid #fbfbfb; -} - -.mapOptions_icon { - background-color: #fff; - display: inline-block; - width: 27px; - height: 27px; - font-size: 8px; - border-radius: 30px; - position: relative; - left: 4px; - top: 3px; - margin-right: 10px; -} - -.mapOptions_icon img { - width: 20px; - height: 20px; - margin-top: 4px; - margin-left: 4px; - opacity: 0.2; - padding-right: 6px; -} - -.mapOptionsPanel h1 { - padding: 0px; - padding-left: 0px; - margin: 0px; - font-size: 18px; - color: rgb(59, 59, 59); -} - -.MapLayers_row div { - display: inline-block; -} - -.mapToolbar { - position: absolute; - left: 149px; - transform: scale(0.8); - top: 1px; -} - -.mapOptionsPanelBody { - font-size: 12px; - padding: 3px; - padding-right: 16px; - padding-left: 12px; - position: absolute; - top: 33px; - bottom: 0; - left: 0; - overflow-y: scroll; - width: 205px; -} - -.mapOptionsPanelBody input { - font-size: 0.8rem !important; -} - -.mapOptionsPanelBody label { - font-size: 0.9rem !important; -} - -.optionRow { - margin-top: 19px; - margin-bottom: 25px; -} - -.MuiSlider-root { - padding-bottom: 0px !important; - margin-bottom: -8px !important; - padding-top: 17px !important; -} - -.MuiMenu-list li { - font-size: 12px; -} - -.optionLabel { - display: inline-block; - padding-bottom: 3px; - font-size: 1em !important; - color: rgba(0, 0, 0, 0.7); - font-weight: normal; -} - -.optionLabelSm { - display: inline-block; - padding-bottom: 3px; - font-size: 0.9em !important; - color: rgba(0, 0, 0, 0.6); - padding-bottom: 6px; -} - -hr { - opacity: 0.05; - box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.75); - -webkit-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.75); - -moz-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.75); -} - -.optionValueFloat { - font-weight: 600; - float: right; -} - -.optionValue { - font-weight: 600; - /* float: right; */ -} - -.MuiSlider-thumb:not(.MuiSlider-active) { - transition: none; -} - -.MuiSlider-track { - transition: none; -} - -.mapSymbolSelectIcon { - width: 14px; - padding-right: 3px; -} - -.optionPaddingTop { - padding-top: 10px; -} - -.draw { - opacity: 0.2; -} - -.optionRow Button { - font-size: 9px; - padding: 4px 7px; -} - -.columnDataTypeIcon { - height: 18px; - opacity: 0.3; - padding-right: 3px; -} - -.mapPanel { - background-color: #f6f6f6; - padding-top: 15px; - padding-left: 15px; - grid-area: map; -} - -.mapLayersContainer { - padding-right: 0px; - grid-area: layers; - min-width: 320px; -} - -.mapObjectContainer { - grid-area: map; - height: 40vh; - overflow: scroll; - position: absolute; - bottom: 0px; - left: 0px; - background-color: #fbfbfb; - padding-right: 5px; - padding-left: 0px; -} - -.mapObjectBody { - height: 40vh; - overflow: scroll; - font-size: 10px; - padding: 6px 9px; -} - -.mapObjectTitle { - background-color:rgb(241, 241, 241); - padding: 6px 8px; - border-right: 1px solid #fbfbfb; - padding-left: 5px; -} - -.mapObjectTitle h1 { - padding: 0px; - margin: 0px; - font-size: 18px; - color: rgb(59, 59, 59); - padding-left: 4px; -} - -.embed .mapPanel { - padding: 0px; -} - -.embed .container { - display: block !important; -} - -.embed .mapPanel { - background-color: transparent; -} - diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsHeatmap.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsHeatmap.jsx deleted file mode 100644 index 73568e10..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsHeatmap.jsx +++ /dev/null @@ -1,233 +0,0 @@ -import React from 'react'; -import Slider from '@mui/material/Slider'; -import Switch from '@mui/material/Switch'; -import Select from '@mui/material/Select'; -import ListSubheader from '@mui/material/ListSubheader'; -import MenuItem from '@mui/material/MenuItem'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import TextField from '@mui/material/TextField'; -import { - FormControl, -} from '@mui/material'; -import ColorScale from '../../ColorScale'; -import styles from './MapOptions.module.css'; - -const colorPalettes = [ - { - category: 'Sequential (Single-Hue)', - schemes: [ - 'Blues', - 'Greens', - 'Greys', - 'Oranges', - 'Purples', - 'Reds', - ], - }, - { - category: 'Sequential (Multi-Hue)', - schemes: [ - 'BuGn', - 'BuPu', - 'GnBu', - 'OrRd', - 'PuBuGn', - 'PuBu', - 'PuRd', - 'RdPu', - 'YlGnBu', - 'YlGn', - 'YlOrBr', - 'YlOrRd', - 'Cividis', - 'Viridis', - 'Inferno', - 'Magma', - 'Plasma', - 'Warm', - 'Cool', - 'CubehelixDefault', - ], - }, -]; - -function OptionsHeatmap({ layer, activeLayer, updateLayer }) { - const colorScaleSelectOptionsGraduated = colorPalettes.map((category) => { - const elements = []; - elements.push({category.category}); - category.schemes.map((palette) => ( - elements.push( - -
-
- -
- {palette} -
-
, - ) - )); - return elements; - }); - - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = { ...layer }; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - return ( -
-
-

-
- {/* */} -
- Heatmap Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
-
Fill palette
-
- - - -
-
- -
-
Blur
- updateAttr('blur', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={20} - /> -
- -
-
Radius
- updateAttr('radius', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={20} - /> -
- -
-
- Weighted -
-
- updateAttr('weighted', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- -
-
- Show in legend -
-
- updateAttr('showInLegend', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {layer.showInLegend && ( -
- - updateAttr('legendSeriesTitle', e.target.value)} - /> - -
- )} - -
-
-
- ); -} - -export default OptionsHeatmap; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsHexbin.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsHexbin.jsx deleted file mode 100644 index 54d4911f..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsHexbin.jsx +++ /dev/null @@ -1,233 +0,0 @@ -import React from 'react'; -import Slider from '@mui/material/Slider'; -import Switch from '@mui/material/Switch'; -import Select from '@mui/material/Select'; -import ListSubheader from '@mui/material/ListSubheader'; -import MenuItem from '@mui/material/MenuItem'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import TextField from '@mui/material/TextField'; -import { - FormControl, -} from '@mui/material'; -import ColorScale from '../../ColorScale'; -import styles from './MapOptions.module.css'; - -const colorPalettes = [ - { - category: 'Sequential (Single-Hue)', - schemes: [ - 'Blues', - 'Greens', - 'Greys', - 'Oranges', - 'Purples', - 'Reds', - ], - }, - { - category: 'Sequential (Multi-Hue)', - schemes: [ - 'BuGn', - 'BuPu', - 'GnBu', - 'OrRd', - 'PuBuGn', - 'PuBu', - 'PuRd', - 'RdPu', - 'YlGnBu', - 'YlGn', - 'YlOrBr', - 'YlOrRd', - 'Cividis', - 'Viridis', - 'Inferno', - 'Magma', - 'Plasma', - 'Warm', - 'Cool', - 'CubehelixDefault', - ], - }, -]; - -function OptionsHexbin({ layer, activeLayer, updateLayer }) { - const colorScaleSelectOptionsGraduated = colorPalettes.map((category) => { - const elements = []; - elements.push({category.category}); - category.schemes.map((palette) => ( - elements.push( - -
-
- -
- {palette} -
-
, - ) - )); - return elements; - }); - - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = { ...layer }; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - return ( -
-
-

-
- {/* */} -
- Hexbin Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
-
Fill palette
-
- - - -
-
- -
-
Blur
- updateAttr('blur', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={20} - /> -
- -
-
Radius
- updateAttr('radius', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={20} - /> -
- -
-
- Weighted -
-
- updateAttr('weighted', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- -
-
- Show in legend -
-
- updateAttr('showInLegend', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {layer.showInLegend && ( -
- - updateAttr('legendSeriesTitle', e.target.value)} - /> - -
- )} - -
-
-
- ); -} - -export default OptionsHexbin; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsLine.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsLine.jsx deleted file mode 100644 index 199c4f89..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsLine.jsx +++ /dev/null @@ -1,155 +0,0 @@ -import React from 'react'; -import Slider from '@mui/material/Slider'; -// import Switch from '@mui/material/Switch'; -import Select from '@mui/material/Select'; -import MenuItem from '@mui/material/MenuItem'; -// import ListSubheader from '@mui/material/ListSubheader'; -// import Box from '@mui/material/Box'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import TextField from '@mui/material/TextField'; -import { FormControl } from '@mui/material'; -// import { ToggleButton, ToggleButtonGroup, FormControl } from '@mui/material'; -import ColorPicker from './ColorPicker'; -import polygon from '../assets/polygon.svg'; -import styles from './MapOptions.module.css'; - -function OptionsLine({ layer, activeLayer, updateLayer }) { - // materialUI theme - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = { ...layer }; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const updateStyle = (attr, val) => { - const layerClone = { ...layer }; - layerClone.style[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const setStroke = (d) => { - updateStyle('stroke', d); - }; - - return ( -
-
-

-
- -
- Line Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
-
Stroke color
-
- -
-
- -
-
Stroke width
- updateStyle('strokeWidth', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={5} - /> -
- -
-
Stroke type
-
- - - -
-
- - {(layer.style.strokeType === 'dash') && ( -
-
Dash spacing
- updateStyle('dashSpacing', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={5} - /> -
- )} - -
-
-
- ); -} - -export default OptionsLine; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsMapGeneral.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsMapGeneral.jsx deleted file mode 100644 index d36c6e5a..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsMapGeneral.jsx +++ /dev/null @@ -1,563 +0,0 @@ -import Switch from '@mui/material/Switch'; -import Select from '@mui/material/Select'; -import TextField from '@mui/material/TextField'; -import MenuItem from '@mui/material/MenuItem'; -import Checkbox from '@mui/material/Checkbox'; -import ListItemText from '@mui/material/ListItemText'; -import { - FormControl, -} from '@mui/material'; -import ColorPicker from './ColorPicker'; -import FontPicker from './FontPicker'; -import styles from './MapOptions.module.css'; -import settings from '../assets/settings.svg'; - -function OptionsMapGeneral({ mapOptions, updateMapOptions }) { - const logos = [ - { name: 'CDCF', image: 'cdcf' }, - { name: 'Data Friendly Space', image: 'dfs' }, - { name: 'DEEP (small)', image: 'deepSmall' }, - { name: 'DEEP', image: 'deep' }, - { name: 'DRC', image: 'drc' }, - { name: 'iMMAP', image: 'immap' }, - { name: 'UNOCHA', image: 'unocha' }, - ]; - - const updateAttr = (attr, val) => { - const mapOptionsClone = { ...mapOptions }; - mapOptionsClone[attr] = val; - updateMapOptions(mapOptionsClone); - }; - - const updateFontStyle = (attr, val) => { - const mapOptionsClone = { ...mapOptions }; - mapOptionsClone.fontStyle[attr] = val; - updateMapOptions(mapOptionsClone); - }; - - const updateCenter = (attr, val) => { - const mapOptionsClone = { ...mapOptions }; - mapOptionsClone.center[attr] = val; - updateMapOptions(mapOptionsClone); - }; - - const updatePrimaryColor = (val) => { - const mapOptionsClone = { ...mapOptions }; - mapOptionsClone.primaryColor = val; - updateMapOptions(mapOptionsClone); - }; - - return ( -
-
-

-
- -
- Map Options -

-
- -
-
-
- - updateAttr('width', parseInt(e.target.value, 10))} - /> - -
- -
- - updateAttr('height', parseInt(e.target.value, 10))} - /> - -
- -
- - - -
- -
-
Primary color
-
- -
-
- -
- -
-
Layout style
-
- - - -
-
- -
- -
-
- Show header -
-
- updateAttr('showHeader', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {mapOptions.showHeader && ( -
-
- - updateAttr('mainTitle', e.target.value)} - /> - -
- -
- - updateAttr('subTitle', e.target.value)} - /> - -
- -
- - updateAttr('dateText', e.target.value)} - /> - -
-
- )} - -
-
Show logos
-
- - - -
-
- -
- -
- - updateCenter('lat', parseFloat(e.target.value))} - /> - -
- -
- - updateCenter('lon', parseFloat(e.target.value))} - /> - -
- -
- - updateAttr('zoom', parseFloat(e.target.value))} - /> - -
- -
- - updateAttr('minZoom', parseFloat(e.target.value))} - /> - -
- -
- - updateAttr('maxZoom', parseFloat(e.target.value))} - /> - -
- -
- -
-
Show zoom buttons
-
- updateAttr('enableZoomControls', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {mapOptions.enableZoomControls && ( -
-
Zoom buttons position
-
- - - -
-
- )} - -
-
Enable drag/pan
-
- updateAttr('enableDragPan', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- -
-
Mousewheel zoom
-
- updateAttr('enableMouseWheelZoom', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- -
-
Double-click zoom
-
- updateAttr('enableDoubleClickZoom', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- -
- -
-
Show overview
-
- updateAttr('showOverview', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {mapOptions.showOverview && ( -
-
Overview map position
-
- - - -
-
- )} - -
- -
-
Show legend
-
- updateAttr('showLegend', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {mapOptions.showLegend && ( -
-
Legend position
-
- - - -
-
- )} - -
- -
-
Show scale bar
-
- updateAttr('showScale', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {mapOptions.showScale && ( -
-
Scale position
-
- - - -
-
- )} - - {mapOptions.showScale && ( -
-
Scale units
-
- - - -
-
- )} - - {mapOptions.showScale && ( -
-
Scale style
-
- - - -
-
- )} - -
-
- Show footer -
-
- updateAttr('showFooter', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {/* {mapOptions.showFooter && ( */} -
-
- - updateAttr('sources', e.target.value)} - /> - -
-
- {/* )} */} - -
- -
-
-
- ); -} - -export default OptionsMapGeneral; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsMapbox.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsMapbox.jsx deleted file mode 100644 index 29c7a470..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsMapbox.jsx +++ /dev/null @@ -1,125 +0,0 @@ -import Slider from '@mui/material/Slider'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import Select from '@mui/material/Select'; -import MenuItem from '@mui/material/MenuItem'; -import TextField from '@mui/material/TextField'; -import { FormControl } from '@mui/material'; -import styles from './MapOptions.module.css'; -import raster from '../assets/raster.svg'; - -function OptionsMapbox({ - layer, - activeLayer, - updateLayer, -}) { - const styleOptions = [ - { label: 'Streets', value: 'mapbox://styles/mapbox/streets-v12' }, - { label: 'Outdoors', value: 'mapbox://styles/mapbox/outdoors-v12' }, - { label: 'Light', value: 'mapbox://styles/mapbox/light-v11' }, - { label: 'Dark', value: 'mapbox://styles/mapbox/dark-v11' }, - { label: 'Satellite', value: 'mapbox://styles/mapbox/satellite-v9' }, - { label: 'Satellite-Streets', value: 'mapbox://styles/mapbox/satellite-streets-v10' }, - { label: 'Custom', value: 'mapbox://styles/matthewsmawfield/clidxtx3j003p01r0cetzc9iv' }, - ]; - - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = { ...layer }; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - return ( -
-
-

-
- -
- Mapbox Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
-
Style
-
- - - -
-
- -
- - updateAttr('style', e.target.value)} - /> - -
- -
- -
-
-
-
-
- ); -} - -export default OptionsMapbox; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsMask.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsMask.jsx deleted file mode 100644 index f1954255..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsMask.jsx +++ /dev/null @@ -1,310 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import OLVectorLayer from 'ol/layer/Vector'; -import Slider from '@mui/material/Slider'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import { Draw, Modify, Snap } from 'ol/interaction'; -import MultiPoint from 'ol/geom/MultiPoint'; -import WKT from 'ol/format/WKT'; -import Feature from 'ol/Feature'; -import { Vector as VectorSource } from 'ol/source'; -import { - Style, - Fill, - Stroke, - Circle, -} from 'ol/style'; -import { transform } from 'ol/proj'; -import TextField from '@mui/material/TextField'; -import { FormControl } from '@mui/material'; -import styles from './MapOptions.module.css'; -import mask from '../assets/mask.svg'; - -function OptionsMask({ - layer, - activeLayer, - updateLayer, - map, -}) { - const [maskLayer, setMaskLayer] = useState({ ...layer }); - - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = maskLayer; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - setMaskLayer(layerClone); - }; - - useEffect(() => { - if (!map) return undefined; - - let draw; - let snap; - let modify; - - map.getInteractions().forEach((interaction) => { - if (interaction instanceof Draw) { - map.removeInteraction(interaction); - } - if (interaction instanceof Snap) { - map.removeInteraction(interaction); - } - if (interaction instanceof Modify) { - map.removeInteraction(interaction); - } - }); - map.getLayers().forEach((mapLayer) => { - // eslint-disable-next-line no-underscore-dangle - if (mapLayer && mapLayer.values_.id === 'drawLayerMask') { - map.removeLayer(mapLayer); - } - }); - - map.getLayers().forEach(function (el) { - // eslint-disable-next-line no-underscore-dangle - if (el.values_.id && el.values_.id === activeLayer) { - const image = new Circle({ - radius: 4, - fill: new Fill({ - color: 'grey', - }), - stroke: new Stroke({ color: 'white', width: 1.5 }), - }); - - const drawLayerStyle = [ - new Style({ - image, - geometry(feature) { - const { length } = feature.getGeometry().getCoordinates(); - const coordinates = feature.getGeometry().getCoordinates()[length - 1]; - const coords = []; - coordinates.forEach((d) => { - coords.push(transform(d, 'EPSG:3857', 'EPSG:3857')); - }); - return new MultiPoint(coords); - }, - }), - new Style({ - stroke: new Stroke({ - width: 1, - color: '#a3a0a0', - lineDash: [2, 4], - }), - fill: new Fill({ - color: 'transparent', - }), - }), - ]; - - const polygon = layer.mask; - - const source = new VectorSource({ wrapX: false }); - - const drawLayer = new OLVectorLayer({ - source, - style: drawLayerStyle, - id: 'drawLayerMask', - }); - - drawLayer.setZIndex(1000); - - if (polygon) { - const format = new WKT(); - const wkt = format.readGeometry(polygon, { - dataProjection: 'EPSG:4326', - featureProjection: 'EPSG:3857', - }); - const feature = new Feature(wkt); - source.addFeature(feature); - map.addLayer(drawLayer); - } - - draw = new Draw({ - source, - type: 'Polygon', - }); - map.addInteraction(draw); - - // hide/show draw cursor on mouseout - map.getViewport().addEventListener( - 'mouseout', - () => { - draw.setActive(false); - }, - false, - ); - - map.getViewport().addEventListener( - 'mouseover', - () => { - draw.setActive(true); - }, - false, - ); - - modify = new Modify({ source }); - snap = new Snap({ source }); - - map.addInteraction(modify); - map.addInteraction(snap); - - let userCreatedEl = false; - - modify.on('modifyend', (evt) => { - const collection = evt.features; - const feature = collection.item(0); - const format = new WKT(); - const wkt = format.writeGeometry(feature.getGeometry(), { - dataProjection: 'EPSG:4326', - featureProjection: 'EPSG:3857', - }); - const b = '(0 90,180 90,180 -90,0 -90,-180 -90,-180 0,-180 90,0 90),'; - const position = 8; - const invertedPolygon = [wkt.slice(0, position), b, wkt.slice(position)].join(''); - if (userCreatedEl) { - updateAttr('mask', invertedPolygon); - } else { - updateAttr('mask', wkt); - } - }); - - draw.on('drawstart', () => { - source.clear(); - }); - - source.on( - 'addfeature', - (feature) => { - const format = new WKT(); - const wkt = format.writeGeometry(feature.feature.getGeometry(), { - dataProjection: 'EPSG:4326', - featureProjection: 'EPSG:3857', - }); - const b = '(0 90,180 90,180 -90,0 -90,-180 -90,-180 0,-180 90,0 90),'; - const position = 8; - const invertedPolygon = [wkt.slice(0, position), b, wkt.slice(position)].join(''); - updateAttr('mask', invertedPolygon); - userCreatedEl = true; - }, - this, - ); - } - }); - - return () => { - // reset remove all interactions when changing active layer - map.getInteractions().forEach((interaction) => { - if (interaction instanceof Draw) { - map.removeInteraction(interaction); - } - if (interaction instanceof Snap) { - map.removeInteraction(interaction); - } - if (interaction instanceof Modify) { - map.removeInteraction(interaction); - } - }); - map.getLayers().forEach((el) => { - // eslint-disable-next-line no-underscore-dangle - if (el && el.values_.id === 'drawLayerMask') { - map.removeLayer(el); - } - }); - map.getInteractions().forEach((interaction) => { - if (interaction instanceof Modify) { - map.removeInteraction(interaction); - } - }); - }; - }, []); - - return ( -
-
-

-
- -
- Mask Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
-
Blur radius
- updateAttr('blur', val)} - valueLabelDisplay="auto" - step={1} - color="primary" - theme={theme} - min={0} - max={20} - /> -
- -
-
Smoothing
- updateAttr('smoothing', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
-
-
-
-
- ); -} - -export default OptionsMask; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsSymbol.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsSymbol.jsx deleted file mode 100644 index 47010086..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsSymbol.jsx +++ /dev/null @@ -1,547 +0,0 @@ -import { useEffect, useMemo } from 'react'; -import { max as d3max, min as d3min } from 'd3'; -import Slider from '@mui/material/Slider'; -import Switch from '@mui/material/Switch'; -import Select from '@mui/material/Select'; -import Box from '@mui/material/Box'; -import MenuItem from '@mui/material/MenuItem'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import TextField from '@mui/material/TextField'; -import { - ToggleButton, - ToggleButtonGroup, - InputLabel, - FormControl, -} from '@mui/material'; -import FontPicker from './FontPicker'; -import ColorPicker from './ColorPicker'; -import styles from './MapOptions.module.css'; -import point from '../assets/point.svg'; -import capital from '../../Map/assets/map-icons/capital.svg'; -import city from '../../Map/assets/map-icons/city.svg'; -import settlement from '../../Map/assets/map-icons/settlement.svg'; -import marker from '../../Map/assets/map-icons/marker.svg'; -import airport from '../../Map/assets/map-icons/airport.svg'; -import borderCrossing from '../../Map/assets/map-icons/borderCrossing.svg'; -import borderCrossingActive from '../../Map/assets/map-icons/borderCrossingActive.svg'; -import borderCrossingPotential from '../../Map/assets/map-icons/borderCrossingPotential.svg'; -import triangle from '../../Map/assets/map-icons/triangle.svg'; -import idpRefugeeCamp from '../../Map/assets/map-icons/idp-refugee-camp.svg'; -import nullType from '../assets/nullType.svg'; -import string from '../assets/string.svg'; -import number from '../assets/number.svg'; -import date from '../assets/date.svg'; -import coordinates from '../assets/coordinates.svg'; - -function isValidDate(dateString) { - const dt = new Date(dateString); - // eslint-disable-next-line - return dt instanceof Date && !isNaN(dt); -} - -const columnDataTypeIcons = { - nullType, - string, - number, - date, - coordinates, -}; - -const symbolIcons = { - capital, - city, - settlement, - 'idp-refugee-camp': idpRefugeeCamp, - airport, - marker, - borderCrossing, - borderCrossingActive, - borderCrossingPotential, - triangle, - circle: 'circle', -}; - -function OptionsSymbol({ layer, activeLayer, updateLayer }) { - const symbols = Object.keys(symbolIcons); - - const columns = useMemo(() => { - const types = {}; - let obj = layer.data; - if (!Array.isArray(layer.data)) obj = layer.data.features; - - Object.entries(obj).forEach((feature) => { - let f = feature[1]; - if (!Array.isArray(layer.data)) { - f = feature[1].properties; - } - Object.entries(f).forEach((property) => { - const [key, value] = property; - let type = typeof value; - if (type === 'string') { - if (isValidDate(value)) type = 'date'; - } - if (value === '') type = 'nullType'; - if ((key === 'lat') || (key === 'lon') || (key === 'Lat') || (key === 'Lon') || (key === 'LAT') || (key === 'LON') || (key === 'LATITUDE') || (key === 'LONGITUDE') || (key === 'latitude') || (key === 'longitude')) { - type = 'coordinates'; - } - // remove null columns - if (type !== 'nullType') types[key] = type; - }); - }); - return types; - }, [layer.data]); - - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = { ...layer }; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const updateStyle = (attr, val) => { - const layerClone = { ...layer }; - layerClone.style[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const updateFontStyle = (attr, val) => { - const layerClone = { ...layer }; - layerClone.style.labelStyle[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const setFill = (d) => { - updateStyle('fill', d); - }; - - const setStroke = (d) => { - updateStyle('stroke', d); - }; - - useEffect(() => { - let max; - let min; - if (!Array.isArray(layer.data)) { - max = d3max(layer.data.features, (d) => d.properties[layer.scaleColumn]); - min = d3min(layer.data.features, (d) => d.properties[layer.scaleColumn]); - } else { - max = d3max(layer.data, (d) => d[layer.scaleColumn]); - min = d3min(layer.data, (d) => d[layer.scaleColumn]); - } - - // automatic min/max data extent. TODO make option to override automatically calucated values - updateAttr('scaleDataMin', min); - updateAttr('scaleDataMax', max); - }, [layer.scaleColumn]); - - return ( -
-
-

-
- -
- Symbol Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
- - Symbol - - -
- -
-
Fill color
-
- -
-
- -
-
Stroke color
-
- -
-
- -
-
Stroke width
- updateStyle('strokeWidth', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={5} - /> -
- -
-
Scale type
-
- updateAttr('scaleType', val)} - aria-label="Scale type" - > - Fixed size - Proportional - -
-
- - {layer.scaleType === 'fixed' && ( - -
-
Symbol size
- updateAttr('scale', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={5} - /> -
- - )} - - {layer.scaleType === 'proportional' && ( -
-
-
Data column
-
- - - -
-
-
- - - - -       - - - - -
-
-
-
Symbol size
- updateAttr('scale', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={5} - /> -
-
-
-
Scaling method
-
- updateAttr('scaleScaling', val)} - aria-label="Scale method" - > - Absolute - Flannery - -
-
-
- )} - -
- -
-
- Show text labels -
-
- updateAttr('showLabels', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {layer.showLabels && ( -
-
-
Text label column
-
- - - -
-
- -
- - -
- )} - -
- -
-
- Show in legend -
-
- updateAttr('showInLegend', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {layer.showInLegend && ( -
- - updateAttr('legendSeriesTitle', e.target.value)} - /> - -
- )} - -
-
- Show tooltips -
-
- updateAttr('enableTooltips', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {layer.enableTooltips && ( -
-
-
Tooltip title column
-
- - - -
-
- -
-
Tooltip value column
-
- - - -
-
- -
- -
- )} - -
-
-
- ); -} - -export default OptionsSymbol; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsTile.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsTile.jsx deleted file mode 100644 index 88636a5c..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsTile.jsx +++ /dev/null @@ -1,85 +0,0 @@ -import Slider from '@mui/material/Slider'; -import Chip from '@mui/material/Chip'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import TextField from '@mui/material/TextField'; -import { - FormControl, -} from '@mui/material'; -import styles from './MapOptions.module.css'; -import raster from '../assets/raster.svg'; - -function OptionsTile({ - layer, activeLayer, updateLayer, -}) { - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = { ...layer }; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - return ( -
-
-

-
- -
- Raster Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
-
Layer style
-
- -
-
- -
-
-
-
-
- ); -} - -export default OptionsTile; diff --git a/storybook/src/components/MapVizzard/MapOptions/OptionsVector.jsx b/storybook/src/components/MapVizzard/MapOptions/OptionsVector.jsx deleted file mode 100644 index 886b71b9..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/OptionsVector.jsx +++ /dev/null @@ -1,706 +0,0 @@ -import React, { useEffect, useMemo } from 'react'; -import { d3max, d3min } from 'd3'; -import Slider from '@mui/material/Slider'; -import Switch from '@mui/material/Switch'; -import Select from '@mui/material/Select'; -import MenuItem from '@mui/material/MenuItem'; -import ListSubheader from '@mui/material/ListSubheader'; -import Box from '@mui/material/Box'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; -import TextField from '@mui/material/TextField'; -import { ToggleButton, ToggleButtonGroup, FormControl } from '@mui/material'; -import FontPicker from './FontPicker'; -import ColorPicker from './ColorPicker'; -import ColorScale from '../../ColorScale'; -import styles from './MapOptions.module.css'; -import polygon from '../assets/polygon.svg'; -import nullType from '../assets/nullType.svg'; -import string from '../assets/string.svg'; -import number from '../assets/number.svg'; -import date from '../assets/date.svg'; -import coordinates from '../assets/coordinates.svg'; -import fillSolid from '../assets/fillSolid.svg'; -import fillPattern from '../assets/fillPattern.svg'; - -function isValidDate(dateString) { - const dt = new Date(dateString); - // eslint-disable-next-line - return dt instanceof Date && !isNaN(dt); -} - -function OptionsVector({ layer, activeLayer, updateLayer }) { - const columnDataTypeIcons = { - nullType, - string, - number, - date, - coordinates, - }; - - const columns = useMemo(() => { - const types = {}; - Object.entries(layer.data.features).forEach((feature) => { - Object.entries(feature[1].properties).forEach((property) => { - const [key, value] = property; - let type = typeof value; - if (type === 'string') { - if (isValidDate(value)) type = 'date'; - } - if (value === '') type = 'nullType'; - if ((key === 'lat') || (key === 'lon') || (key === 'Lat') || (key === 'Lon') || (key === 'LAT') || (key === 'LON') || (key === 'LATITUDE') || (key === 'LONGITUDE') || (key === 'latitude') || (key === 'longitude')) { - type = 'coordinates'; - } - // remove null columns - if (type !== 'nullType') types[key] = type; - }); - }); - return types; - }, [layer.data]); - - // materialUI theme - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - const updateAttr = (attr, val) => { - const layerClone = { ...layer }; - layerClone[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const updateStyle = (attr, val) => { - const layerClone = { ...layer }; - layerClone.style[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const updateFontStyle = (attr, val) => { - const layerClone = { ...layer }; - layerClone.style.labelStyle[attr] = val; - updateLayer(layerClone, activeLayer); - }; - - const setFill = (d) => { - updateStyle('fill', d); - }; - - const setStroke = (d) => { - updateStyle('stroke', d); - }; - - useEffect(() => { - const max = d3max(layer.data.features, (d) => d.properties[layer.style.fillColumn]); - const min = d3min(layer.data.features, (d) => d.properties[layer.style.fillColumn]); - // automatic min/max data extent. TODO make option to override automatically calucated values - updateStyle('fillDataMin', min); - updateStyle('fillDataMax', max); - }, [layer.style.fillColumn]); - - const colorPalettes = [ - { - category: 'Sequential (Single-Hue)', - schemes: [ - 'Blues', - 'Greens', - 'Greys', - 'Oranges', - 'Purples', - 'Reds', - ], - }, - { - category: 'Sequential (Multi-Hue)', - schemes: [ - 'BuGn', - 'BuPu', - 'GnBu', - 'OrRd', - 'PuBuGn', - 'PuBu', - 'PuRd', - 'RdPu', - 'YlGnBu', - 'YlGn', - 'YlOrBr', - 'YlOrRd', - 'Cividis', - 'Viridis', - 'Inferno', - 'Magma', - 'Plasma', - 'Warm', - 'Cool', - 'CubehelixDefault', - ], - }, - { - category: 'Diverging', - schemes: [ - 'BrBG', - 'PRGn', - 'PiYG', - 'PuOr', - 'RdBu', - 'RdGy', - 'RdYlBu', - 'RdYlGn', - 'Spectral', - ], - }, - { - category: 'Cyclical', - schemes: [ - 'Rainbow', - 'Sinebow', - ], - }, - ]; - - const colorPalettesCategorised = [ - { - category: 'Categorised', - schemes: [ - { name: 'Category10', steps: 10 }, - { name: 'Accent', steps: 8 }, - { name: 'Dark2', steps: 8 }, - { name: 'Paired', steps: 12 }, - { name: 'Pastel1', steps: 9 }, - { name: 'Pastel2', steps: 8 }, - ], - }, - ]; - - const colorScaleSelectOptionsGraduated = colorPalettes.map((category) => { - const elements = []; - elements.push({category.category}); - category.schemes.map((palette) => ( - elements.push( - -
-
- -
- {palette} -
-
, - ) - )); - return elements; - }); - - const colorScaleSelectOptionsCategorised = colorPalettesCategorised.map((category) => { - const elements = []; - elements.push({category.category}); - category.schemes.map((palette) => ( - elements.push( - -
-
- -
- {palette.name} -
-
, - ) - )); - return elements; - }); - - return ( -
-
-

-
- -
- Polygon Options -

-
-
-
-
- - updateAttr('name', e.target.value)} - /> - -
- -
- -
-
Opacity
- updateAttr('opacity', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={0} - max={1} - /> -
- -
- -
-
Stroke color
-
- -
-
- -
-
Stroke width
- updateStyle('strokeWidth', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={5} - /> -
- -
- -
-
Fill type
-
- updateStyle('fillType', val)} - aria-label="Fill type" - > - Single - Graduated - Categorical - -
-
- - {layer.style.fillType === 'single' && ( -
-
-
Color fill type
-
- - - -
-
-
-
Fill color
-
- -
-
- {layer.style.fillSingleType === 'pattern' && ( -
-
-
Spacing
- updateStyle('fillPatternSpacing', val)} - valueLabelDisplay="auto" - step={0.01} - color="primary" - theme={theme} - min={1} - max={8} - /> -
-
-
Size
- updateStyle('fillPatternSize', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={0.1} - max={10} - /> -
-
-
Angle
- updateStyle('fillPatternAngle', val)} - valueLabelDisplay="auto" - step={1} - color="primary" - theme={theme} - min={0} - max={180} - /> -
-
- )} -
- )} - - {(layer.style.fillType === 'graduated') && ( -
-
-
Data column
-
- - - -
-
-
- - - - -       - - - - -
-
-
Scale type
-
- - - -
-
- -
-
Fill palette
-
- - - -
-
- {layer.style.fillScaleType === 'steps' && ( -
-
Steps
- updateStyle('fillSteps', val)} - valueLabelDisplay="auto" - step={1} - color="primary" - marks - theme={theme} - min={1} - max={12} - /> -
- )} - {layer.style.fillScaleType === 'continuous' && ( -
-
Log exponent
- updateStyle('fillPow', val)} - valueLabelDisplay="auto" - step={0.1} - color="primary" - theme={theme} - min={1} - max={5} - /> -
- )} -
-
Invert scale
-
- updateStyle('fillScaleInvert', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
-
- )} - - {(layer.style.fillType === 'categorical') && ( -
-
-
Data column
-
- - - -
-
- -
-
Fill palette
-
- - - -
-
-
-
Invert scale
-
- updateStyle('fillScaleInvert', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
-
- )} - -
- -
-
Show text labels
-
- updateAttr('showLabels', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {layer.showLabels && ( -
-
-
Text label column
-
- - - -
-
- -
- - - -
- )} -
-
-
- Show in legend -
-
- updateAttr('showInLegend', val)} - inputProps={{ 'aria-label': 'controlled' }} - /> -
-
- - {layer.showInLegend && ( -
- - updateAttr('legendSeriesTitle', e.target.value)} - /> - -
- )} -
-
-
- ); -} - -export default OptionsVector; diff --git a/storybook/src/components/MapVizzard/MapOptions/index.jsx b/storybook/src/components/MapVizzard/MapOptions/index.jsx deleted file mode 100644 index ff7cbb57..00000000 --- a/storybook/src/components/MapVizzard/MapOptions/index.jsx +++ /dev/null @@ -1,3 +0,0 @@ -import MapOptions from './MapOptions'; - -export default MapOptions; diff --git a/storybook/src/components/MapVizzard/MapVizzard.jsx b/storybook/src/components/MapVizzard/MapVizzard.jsx deleted file mode 100644 index 414c60be..00000000 --- a/storybook/src/components/MapVizzard/MapVizzard.jsx +++ /dev/null @@ -1,153 +0,0 @@ -import React, { useState, useRef, useEffect } from 'react'; - -import Button from '@mui/material/Button'; -import { createTheme } from '@mui/material/styles'; -import grey from '@mui/material/colors/grey'; - -import saveFile from './saveFile'; -import '../Map/ol.css'; -import styles from './MapOptions/MapOptions.module.css'; -import { rgba } from '../Map/helpers'; -import Map from '../Map'; -import MapLayers from './MapLayers'; -import MapOptions from './MapOptions'; - -function MapVizzard({ - mapConfig, - iframe = false, - dashboard = false, - print = false, - paddingBottom = 0, -}) { - const [layers, setLayers] = useState(mapConfig.layers); - const [mapOptions, setMapOptions] = useState(mapConfig.mapOptions); - const [activeLayer, setActiveLayer] = useState(null); - const [mapObj, setMapObj] = useState(null); - const queryParameters = new URLSearchParams(window.location.search); - const inputFile = useRef(null); - let embed = queryParameters.get('embed') || false; - if (iframe === true) embed = true; - let legendTopPadding = 60; - if (dashboard) legendTopPadding = 135; - const theme = createTheme({ - palette: { - primary: grey, - }, - }); - - function onChangeFile(event) { - event.stopPropagation(); - event.preventDefault(); - const file = event.target.files[0]; - const fileReader = new FileReader(); - fileReader.readAsText(file, 'UTF-8'); - fileReader.onload = (e) => { - const content = JSON.parse(e.target.result); - setMapOptions(content.mapOptions); - setLayers(content.layers); - }; - } - - useEffect(() => { - setLayers(mapConfig.layers); - setMapOptions(mapConfig.mapOptions); - }, [mapConfig]); - - return ( -
-
- {!embed && ( -
- -   - - -
- )} - {!embed && ( -
- -
- )} - {!embed && ( -
- -
- )} -
- -
-
-
- ); -} - -export default MapVizzard; diff --git a/storybook/src/components/MapVizzard/assets/coordinates.svg b/storybook/src/components/MapVizzard/assets/coordinates.svg deleted file mode 100644 index 8d649d14..00000000 --- a/storybook/src/components/MapVizzard/assets/coordinates.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/date.svg b/storybook/src/components/MapVizzard/assets/date.svg deleted file mode 100644 index 7eca52dc..00000000 --- a/storybook/src/components/MapVizzard/assets/date.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/down.svg b/storybook/src/components/MapVizzard/assets/down.svg deleted file mode 100644 index 1b93fac8..00000000 --- a/storybook/src/components/MapVizzard/assets/down.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/fillPattern.svg b/storybook/src/components/MapVizzard/assets/fillPattern.svg deleted file mode 100644 index 39dabfcf..00000000 --- a/storybook/src/components/MapVizzard/assets/fillPattern.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - fillPattern - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/fillSolid.svg b/storybook/src/components/MapVizzard/assets/fillSolid.svg deleted file mode 100644 index 3f2800a9..00000000 --- a/storybook/src/components/MapVizzard/assets/fillSolid.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - fillSolid - - - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/heatmap.svg b/storybook/src/components/MapVizzard/assets/heatmap.svg deleted file mode 100644 index 56cfbe90..00000000 --- a/storybook/src/components/MapVizzard/assets/heatmap.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - heat-map--02 - - - - - - - - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/hexbin.svg b/storybook/src/components/MapVizzard/assets/hexbin.svg deleted file mode 100644 index c856e560..00000000 --- a/storybook/src/components/MapVizzard/assets/hexbin.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/hide.svg b/storybook/src/components/MapVizzard/assets/hide.svg deleted file mode 100644 index baadc20a..00000000 --- a/storybook/src/components/MapVizzard/assets/hide.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/mask.svg b/storybook/src/components/MapVizzard/assets/mask.svg deleted file mode 100644 index 3df1812b..00000000 --- a/storybook/src/components/MapVizzard/assets/mask.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/nullType.svg b/storybook/src/components/MapVizzard/assets/nullType.svg deleted file mode 100644 index 4d80e729..00000000 --- a/storybook/src/components/MapVizzard/assets/nullType.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/number.svg b/storybook/src/components/MapVizzard/assets/number.svg deleted file mode 100644 index f2d39b9c..00000000 --- a/storybook/src/components/MapVizzard/assets/number.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - number_sign [#110] - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/point.svg b/storybook/src/components/MapVizzard/assets/point.svg deleted file mode 100644 index 076d4775..00000000 --- a/storybook/src/components/MapVizzard/assets/point.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/polygon.svg b/storybook/src/components/MapVizzard/assets/polygon.svg deleted file mode 100644 index 4c0c3bdd..00000000 --- a/storybook/src/components/MapVizzard/assets/polygon.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/raster.svg b/storybook/src/components/MapVizzard/assets/raster.svg deleted file mode 100644 index 06371d39..00000000 --- a/storybook/src/components/MapVizzard/assets/raster.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/refresh.svg b/storybook/src/components/MapVizzard/assets/refresh.svg deleted file mode 100644 index 9ed4a081..00000000 --- a/storybook/src/components/MapVizzard/assets/refresh.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/remove.svg b/storybook/src/components/MapVizzard/assets/remove.svg deleted file mode 100644 index 88bbb899..00000000 --- a/storybook/src/components/MapVizzard/assets/remove.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/settings.svg b/storybook/src/components/MapVizzard/assets/settings.svg deleted file mode 100644 index d603d1b5..00000000 --- a/storybook/src/components/MapVizzard/assets/settings.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/show.svg b/storybook/src/components/MapVizzard/assets/show.svg deleted file mode 100644 index 1895b5cf..00000000 --- a/storybook/src/components/MapVizzard/assets/show.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/string.svg b/storybook/src/components/MapVizzard/assets/string.svg deleted file mode 100644 index 03876cea..00000000 --- a/storybook/src/components/MapVizzard/assets/string.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/assets/up.svg b/storybook/src/components/MapVizzard/assets/up.svg deleted file mode 100644 index 396c160b..00000000 --- a/storybook/src/components/MapVizzard/assets/up.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/storybook/src/components/MapVizzard/index.jsx b/storybook/src/components/MapVizzard/index.jsx deleted file mode 100644 index 03a3a175..00000000 --- a/storybook/src/components/MapVizzard/index.jsx +++ /dev/null @@ -1,3 +0,0 @@ -import MapVizzard from './MapVizzard'; - -export default MapVizzard; diff --git a/storybook/src/components/MapVizzard/saveFile.js b/storybook/src/components/MapVizzard/saveFile.js deleted file mode 100644 index f6d873fe..00000000 --- a/storybook/src/components/MapVizzard/saveFile.js +++ /dev/null @@ -1,49 +0,0 @@ -const saveFile = async (blob, suggestedName) => { - const supportsFileSystemAccess = 'showSaveFilePicker' in window && (() => { - try { - return window.self === window.top; - } catch { - return false; - } - })(); - // If the File System Access API is supported… - if (supportsFileSystemAccess) { - try { - // Show the file save dialog. - // eslint-disable-next-line no-undef - const handle = await showSaveFilePicker({ - suggestedName, - }); - // Write the blob to the file. - const writable = await handle.createWritable(); - await writable.write(blob); - await writable.close(); - return; - } catch (err) { - // Fail silently if the user has simply canceled the dialog. - if (err.name !== 'AbortError') { - console.error(err.name, err.message); - return; - } - return; - } - } - // Fallback if the File System Access API is not supported… - // Create the blob URL. - const blobURL = URL.createObjectURL(blob); - // Create the `
` element and append it invisibly. - const a = document.createElement('a'); - a.href = blobURL; - a.download = suggestedName; - a.style.display = 'none'; - document.body.append(a); - // Programmatically click the element. - a.click(); - // Revoke the blob URL and remove the element. - setTimeout(() => { - URL.revokeObjectURL(blobURL); - a.remove(); - }, 1000); -}; - -export default saveFile; diff --git a/storybook/src/stories/MapVizzard.temp.js b/storybook/src/stories/MapVizzard.temp.js deleted file mode 100644 index cd85233d..00000000 --- a/storybook/src/stories/MapVizzard.temp.js +++ /dev/null @@ -1,45 +0,0 @@ -import MapVizzard from '../components/MapVizzard'; - -import defaultConfig from './default.json'; -import sudanMapConfig from './sudan.json'; -import ukraineMapConfig from './ukraine.json'; -import darfurMapConfig from './darfur.json'; - -// Story Config -export default { - title: 'Map/Map Vizzard', - component: MapVizzard, - tags: ['autodocs'], - argTypes: { - mapConfig: { - control: 'object', - description: 'layers object', - table: { type: { summary: 'JSON object' } }, - }, - children: { table: { disable: true } }, - }, -}; - -export const Default = { - args: { - mapConfig: defaultConfig, - }, -}; - -export const Sudan = { - args: { - mapConfig: sudanMapConfig, - }, -}; - -export const Ukraine = { - args: { - mapConfig: ukraineMapConfig, - }, -}; - -export const Darfur = { - args: { - mapConfig: darfurMapConfig, - }, -};