From 401dfc343336c01e4c143e418b6df587eaf56e64 Mon Sep 17 00:00:00 2001 From: Nicole Iftekhar Date: Wed, 28 Aug 2024 13:57:32 -0700 Subject: [PATCH 1/2] Undo feature implemented for units --- package-lock.json | 15 ++++ package.json | 1 + .../places-preview-map/indes.style.js | 41 +++++++++++ .../conversion/places-preview-map/index.js | 69 ++++++++++++++++--- 4 files changed, 118 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b7010b..fc69867 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "react-dom": "^18.2.0", "react-hot-toast": "^2.4.1", "react-i18next": "^13.5.0", + "react-icons": "^5.3.0", "react-id-generator": "^3.0.2", "react-json-view": "^1.21.3", "react-router-dom": "^6.20.0", @@ -24595,6 +24596,14 @@ } } }, + "node_modules/react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-id-generator": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/react-id-generator/-/react-id-generator-3.0.2.tgz", @@ -48230,6 +48239,12 @@ "html-parse-stringify": "^3.0.1" } }, + "react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "requires": {} + }, "react-id-generator": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/react-id-generator/-/react-id-generator-3.0.2.tgz", diff --git a/package.json b/package.json index c2f3130..bfb50dd 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "react-dom": "^18.2.0", "react-hot-toast": "^2.4.1", "react-i18next": "^13.5.0", + "react-icons": "^5.3.0", "react-id-generator": "^3.0.2", "react-json-view": "^1.21.3", "react-router-dom": "^6.20.0", diff --git a/src/pages/conversion/places-preview-map/indes.style.js b/src/pages/conversion/places-preview-map/indes.style.js index 6179d5d..4d356d9 100644 --- a/src/pages/conversion/places-preview-map/indes.style.js +++ b/src/pages/conversion/places-preview-map/indes.style.js @@ -36,3 +36,44 @@ export const toolbar = css ` pointerEvents: none `; +export const buttonStyle = css ` + color: #323130; + fill: #323130; + background-color: #fff; + box-shadow: rgba(0, 0, 0, 0.16) 0 0 4px; + background-size: 12px 12px; + position: relative; + user-select: none; + margin: 0; + padding: 0; + border: none; + border-collapse: collapse; + min-width: 32px; + height: 32px; + padding: 0 10px; + text-align: center; + cursor: pointer; + line-height: 32px; + background-position: center center; + background-repeat: no-repeat; + overflow: hidden; + + &:hover { + color: #31acce; + } + + &:disabled, + buttonStyle[disabled]{ + background-color: #e5e5e5; + color: #6c757d; + cursor: not-allowed; + } +`; + +export const idk = css ` + position: absolute; + right: 1%; + bottom: 20%; + z-index: 2; +`; + diff --git a/src/pages/conversion/places-preview-map/index.js b/src/pages/conversion/places-preview-map/index.js index d90d4ec..9c02164 100644 --- a/src/pages/conversion/places-preview-map/index.js +++ b/src/pages/conversion/places-preview-map/index.js @@ -2,16 +2,18 @@ import { Map, layer, source, control, HtmlMarker } from 'azure-maps-control'; import { control as draw_control, drawing } from 'azure-maps-drawing-tools'; import { getDomain, useConversionStore, useLevelsStore, useUserStore } from 'common/store'; import { useEffect, useMemo, useState, useRef } from 'react'; -import { imdfPreviewMap, imdfPreviewMapWrapper, layerSelect, textWrapper, mapTextWrapper } from './indes.style'; +import { imdfPreviewMap, imdfPreviewMapWrapper, layerSelect, textWrapper, mapTextWrapper, buttonStyle, idk } from './indes.style'; import LevelSelector from './level-selector'; import LayerSelector from './layer-selector'; import MapNotification from './map-notification'; import { calculateBoundingBox, getFeatureLabel, getFillStyles, getLineStyles, getTextStyle, processZip } from './utils'; import { currentEditData, groupAndSort, drawingModeChanged, updateLevels, setFields, deleteUnitPrevEdits, grabAndGrabbing, grabToPointer, updateSelectedColor } from './imdf-model-helpers'; import { JsonEditor } from 'json-edit-react' +import { SlActionUndo } from 'react-icons/sl'; import 'azure-maps-drawing-tools/dist/atlas-drawing.min.css'; import 'azure-maps-control/dist/atlas.min.css'; + const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged, buildingChanged }) => { const [geography, subscriptionKey] = useUserStore(s => [s.geography, s.subscriptionKey]); const [imdfPackageLocation] = useConversionStore(s => [s.imdfPackageLocation]); @@ -24,8 +26,9 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged const [jsonData, setJsonData] = useState({}); const newDataRef = useRef(false); + // const [copyData, setCopyData] = useState({}); - // const [prevStates, setPrevStates] = useState([]); // Tracking previous changes for Undo feature + const [prevStates, setPrevStates] = useState([]); // Tracking previous changes for Undo feature useEffect(() => { if (!imdfPackageLocation) return; @@ -148,6 +151,13 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged grabAndGrabbing(map); + if(prevStates.length < 2) { + document.getElementById('undoButton').disabled = true; + } + else { + document.getElementById('undoButton').disabled = false; + } + // Shows change in corresponding feature color when mouse hovers over OR clicks on that feature let selectedFeatureID = null; function featureHoverClick(layerName, hoverLayer, clickLayer, unitSelected=false) { @@ -194,8 +204,10 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged } function handleDeletion(e) { + let window_msg = 'Do you want to proceed with removing feature ' + let feature_name = `${e.shapes[0].data.properties.name.en}`; if (drawingManager.getOptions().mode === 'erase-geometry') { - if (window.confirm('Do you want to proceed with removing this feature?')) { + if (window.confirm(window_msg + feature_name + '?')) { drawingManager.getSource().remove(e.shapes[0]); } } @@ -204,6 +216,8 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged // Entry point when "unit.geojson" is pressed; the following code should be refactored due to redundancy function unitInteractions(units, drawingManager, map) { // Update the units state with the edited features (for updating zip) + let element = document.getElementById('undoButton'); + element.removeAttribute('hidden'); unitsChanged(units); var unitLayer, unitLines, polygonHoverLayer, polygonClickLayer, unitSymbols; @@ -244,15 +258,17 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged layersAdded = [unitLayer, unitLines, polygonHoverLayer, polygonClickLayer, unitSymbols]; // Saving previous states for undo functionality - // if(prevStates.length === 0 || units.features !== prevStates[prevStates.length - 1].features) { - // setPrevStates(prev => [...prev, {...units}]); - // } + if(prevStates.length === 0 || JSON.stringify(units.features) !== JSON.stringify(prevStates[prevStates.length - 1].features)) { + setPrevStates(prev => [...prev, {...units}]); + } map.events.add('drawingmodechanged', drawingManager, (e) => { let dmLayers = drawingManager.getLayers(); layersAdded = [unitLayer, unitLines, polygonHoverLayer, polygonClickLayer, unitSymbols]; if (e === 'idle') { + let element = document.getElementById('undoButton'); + element.removeAttribute('hidden'); setDrawNotif(false); let updatedFeatures = drawingManager.getSource().shapes; @@ -274,6 +290,10 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged drawingModeChanged(layersAdded); dmLayers.polygonLayer.setOptions({ visible: true }); dmLayers.polygonOutlineLayer.setOptions({ visible: true }); + + let element = document.getElementById('undoButton'); + element.setAttribute('hidden', 'hidden'); + if(e === 'draw-polygon') { setDrawNotif(true); @@ -299,6 +319,8 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged // Entry point when "level.geojson" is pressed; the following code should be refactored due to redundancy function levelInteractions(levels, drawingManager, map) { + let element = document.getElementById('undoButton'); + element.setAttribute('hidden', 'hidden'); // Retrieve information about the level currently chosen by user levelsChanged(levels); const selectedLevelDetails = levels.features.filter(item => item.id === selectedLevel.id); @@ -384,6 +406,9 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged // Entry point when "footprint.geojson" is pressed; the following code should be refactored due to redundancy function footprintInteractions(footprint, drawingManager, map) { + let element = document.getElementById('undoButton'); + element.setAttribute('hidden', 'hidden'); + footprintChanged(footprint); var footprintLayer, footprintLines, footprintHoverLayer, footprintClickLayer; var layersAdded = [footprintLayer, footprintLines, footprintHoverLayer, footprintClickLayer]; @@ -462,6 +487,9 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged } function buildingInteractions(building, map) { + let element = document.getElementById('undoButton'); + element.setAttribute('hidden', 'hidden'); + var buildingLayer = new HtmlMarker({ position: building.features[0].properties.display_point.coordinates, }); @@ -535,11 +563,11 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged return () => { map.dispose(); }; - }, [ units, levels, footprint, building, selectedLevel, selectedLayerId, subscriptionKey, geography, language, imdfPackageLocation, unitsChanged, levelsChanged, footprintChanged ]); + }, [ units, levels, footprint, building, selectedLevel, selectedLayerId, subscriptionKey, geography, language, imdfPackageLocation, unitsChanged, levelsChanged, footprintChanged, prevStates ]); const handleLevelChange = levelId => { setSelectedLevelId(levelId); - }; + } const handleLayerChange = layerId => { setSelectedLayerId(layerId); @@ -593,6 +621,28 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged return true; }; + + // Triggered when Undo button is pressed + const handleUndo = () => { + if (prevStates.length > 0) { + // Get the last state + const newArray = prevStates.slice(0, -1); + setPrevStates(newArray); // Update the prevStates state + + const lastState = newArray[newArray.length - 1]; + + // Revert to the last state + units.features = [...lastState.features]; + setUnits(prevUnits => ({ + features: [...lastState.features], + })); + } + }; + + useEffect(() => { + // Perform actions based on the updated state + }, [prevStates]); + return ( @@ -612,9 +662,12 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged /> +
+ Zoom in to see labels and icons. {drawNotif && Click to draw a point. To connect the final lines of current drawing, press 'c'.}
+
From dc717cdee7476baab8ef0c6217246ed9fc4d84ff Mon Sep 17 00:00:00 2001 From: Nicole Iftekhar Date: Wed, 4 Sep 2024 14:19:07 -0700 Subject: [PATCH 2/2] Final changes + cleaned up code --- .../imdf-model-helpers/index.js | 48 +++++++++++++++- .../places-preview-map/indes.style.js | 2 +- .../conversion/places-preview-map/index.js | 56 +++++-------------- .../layer-selector/index.js | 1 - 4 files changed, 59 insertions(+), 48 deletions(-) diff --git a/src/pages/conversion/places-preview-map/imdf-model-helpers/index.js b/src/pages/conversion/places-preview-map/imdf-model-helpers/index.js index ef5b068..f552fe2 100644 --- a/src/pages/conversion/places-preview-map/imdf-model-helpers/index.js +++ b/src/pages/conversion/places-preview-map/imdf-model-helpers/index.js @@ -1,4 +1,5 @@ -import { getFeatureLabel } from '../utils'; +import { getFeatureLabel, getFillStyles, getLineStyles, getTextStyle } from '../utils'; +import { layer } from 'azure-maps-control'; // Sets polygon, line, and symbol layers to invisible function drawingModeChanged(allLayers) { @@ -52,7 +53,7 @@ function grabToPointer(layerName, hoverLayer, map) { }); } -// Changes cursor between grabbing and grabbing when map is clicked and dragged +// Changes cursor between grab and grabbing when map is clicked and dragged function grabAndGrabbing(map) { map.events.add('mousedown', () => { map.getCanvas().style.cursor = 'grabbing'; @@ -63,6 +64,7 @@ function grabAndGrabbing(map) { }); } +// Changes color of clicked feature, changes color of previously clicked feature back to original color function updateSelectedColor(map, unitSelected) { if(unitSelected) { const lineLayer = map.layers.getLayerById('lineClickLayer'); @@ -101,6 +103,7 @@ function updateLevels(levels, selectedLevel, newValue) { return levels; } +// Set GeoJSON fields for a new feature function setFields(feature, selectedLevel) { if (!feature.data.properties.name) { feature.data.properties.name = {}; @@ -136,10 +139,47 @@ function setFields(feature, selectedLevel) { } } +// Deletes all units on level that is currently being changed, so only most recent changes are displayed function deleteUnitPrevEdits(units, selectedLevel) { units.features = units.features.filter(item => item.properties.level_id !== selectedLevel.id); } +// Sets features to be clicked on +function setFeatures(map, e, selectedLayerId) { + var features; + if(selectedLayerId === 'unitButton') + features = map.layers.getRenderedShapes(e.position, 'unitClick'); + else if(selectedLayerId === 'levelButton') + features = map.layers.getRenderedShapes(e.position, 'levelFill'); + else if(selectedLayerId === 'footprintButton') + features = map.layers.getRenderedShapes(e.position, 'footprintClick'); + else + features = map.layers.getRenderedShapes(e.position, ['unitClick', 'levelClick']); + + return features; +} + +// Creates layers for units +function unitLayers(dataSource, category) { + var unitLayer = new layer.PolygonLayer(dataSource, 'unitClick', getFillStyles('unit', category)); + var unitLines = new layer.LineLayer(dataSource, null, getLineStyles('unit', category)); + var polygonHoverLayer = new layer.PolygonLayer(dataSource, null, { + fillColor: 'rgba(135, 206, 250, 0.8)', + filter: ['==', ['get', 'id'], ''], + cursor: 'pointer !important', + }); + + var polygonClickLayer = new layer.PolygonLayer(dataSource, 'unitClickChange', { + fillColor: 'rgba(75, 146, 210, 0.8)', + filter: ['==', ['get', 'id'], ''] , + cursor: 'pointer !important', + }); + + var unitSymbols = new layer.SymbolLayer(dataSource, null, getTextStyle(category)); + + return [unitLayer, unitLines, polygonHoverLayer, polygonClickLayer, unitSymbols]; +} + export { currentEditData, groupAndSort, @@ -149,5 +189,7 @@ export { setFields, deleteUnitPrevEdits, grabAndGrabbing, - updateSelectedColor + updateSelectedColor, + setFeatures, + unitLayers }; \ No newline at end of file diff --git a/src/pages/conversion/places-preview-map/indes.style.js b/src/pages/conversion/places-preview-map/indes.style.js index 4d356d9..cf566c4 100644 --- a/src/pages/conversion/places-preview-map/indes.style.js +++ b/src/pages/conversion/places-preview-map/indes.style.js @@ -70,7 +70,7 @@ export const buttonStyle = css ` } `; -export const idk = css ` +export const undoStyle = css ` position: absolute; right: 1%; bottom: 20%; diff --git a/src/pages/conversion/places-preview-map/index.js b/src/pages/conversion/places-preview-map/index.js index 9c02164..2f56048 100644 --- a/src/pages/conversion/places-preview-map/index.js +++ b/src/pages/conversion/places-preview-map/index.js @@ -2,18 +2,17 @@ import { Map, layer, source, control, HtmlMarker } from 'azure-maps-control'; import { control as draw_control, drawing } from 'azure-maps-drawing-tools'; import { getDomain, useConversionStore, useLevelsStore, useUserStore } from 'common/store'; import { useEffect, useMemo, useState, useRef } from 'react'; -import { imdfPreviewMap, imdfPreviewMapWrapper, layerSelect, textWrapper, mapTextWrapper, buttonStyle, idk } from './indes.style'; +import { imdfPreviewMap, imdfPreviewMapWrapper, layerSelect, textWrapper, mapTextWrapper, buttonStyle, undoStyle } from './indes.style'; import LevelSelector from './level-selector'; import LayerSelector from './layer-selector'; import MapNotification from './map-notification'; import { calculateBoundingBox, getFeatureLabel, getFillStyles, getLineStyles, getTextStyle, processZip } from './utils'; -import { currentEditData, groupAndSort, drawingModeChanged, updateLevels, setFields, deleteUnitPrevEdits, grabAndGrabbing, grabToPointer, updateSelectedColor } from './imdf-model-helpers'; +import { currentEditData, groupAndSort, drawingModeChanged, updateLevels, setFields, deleteUnitPrevEdits, grabAndGrabbing, grabToPointer, updateSelectedColor, setFeatures, unitLayers } from './imdf-model-helpers'; import { JsonEditor } from 'json-edit-react' import { SlActionUndo } from 'react-icons/sl'; import 'azure-maps-drawing-tools/dist/atlas-drawing.min.css'; import 'azure-maps-control/dist/atlas.min.css'; - const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged, buildingChanged }) => { const [geography, subscriptionKey] = useUserStore(s => [s.geography, s.subscriptionKey]); const [imdfPackageLocation] = useConversionStore(s => [s.imdfPackageLocation]); @@ -26,9 +25,8 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged const [jsonData, setJsonData] = useState({}); const newDataRef = useRef(false); - // const [copyData, setCopyData] = useState({}); - const [prevStates, setPrevStates] = useState([]); // Tracking previous changes for Undo feature + const [prevStates, setPrevStates] = useState([]); // Tracking previous changes for undo feature (units) useEffect(() => { if (!imdfPackageLocation) return; @@ -104,7 +102,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged drawingToolbar = new draw_control.DrawingToolbar({ position: 'bottom-right', style: 'light', - buttons: ['edit-geometry'] + buttons: ['edit-geometry'] }); drawingManager = new drawing.DrawingManager(map, { @@ -177,15 +175,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged // Handles the change in color of the feature when clicked (for full view) updateSelectedColor(map, unitSelected) - var features; - if(selectedLayerId === 'unitButton') - features = map.layers.getRenderedShapes(e.position, 'unitClick'); - else if(selectedLayerId === 'levelButton') - features = map.layers.getRenderedShapes(e.position, 'levelFill'); - else if(selectedLayerId === 'footprintButton') - features = map.layers.getRenderedShapes(e.position, 'footprintClick'); - else - features = map.layers.getRenderedShapes(e.position, ['unitClick', 'levelClick']); + var features = setFeatures(map, e, selectedLayerId); features.forEach(function (feature) { const newData = feature.data || {}; @@ -213,7 +203,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged } } - // Entry point when "unit.geojson" is pressed; the following code should be refactored due to redundancy + // Entry point when "unit.geojson" is pressed function unitInteractions(units, drawingManager, map) { // Update the units state with the edited features (for updating zip) let element = document.getElementById('undoButton'); @@ -231,22 +221,8 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged map.sources.add(dataSource); dataSource.add(features); - unitLayer = new layer.PolygonLayer(dataSource, 'unitClick', getFillStyles('unit', category)); - unitLines = new layer.LineLayer(dataSource, null, getLineStyles('unit', category)); - polygonHoverLayer = new layer.PolygonLayer(dataSource, null, { - fillColor: 'rgba(135, 206, 250, 0.8)', - filter: ['==', ['get', 'id'], ''], - cursor: 'pointer !important', - }); - - polygonClickLayer = new layer.PolygonLayer(dataSource, 'unitClickChange', { - fillColor: 'rgba(75, 146, 210, 0.8)', - filter: ['==', ['get', 'id'], ''] , - cursor: 'pointer !important', - }); - - unitSymbols = new layer.SymbolLayer(dataSource, null, getTextStyle(category)); - map.layers.add([unitLayer, polygonHoverLayer, unitLines, polygonClickLayer, unitSymbols], 'roomPolygons'); + var [unitLayer, unitLines, polygonHoverLayer, polygonClickLayer, unitSymbols] = unitLayers(dataSource, category); + map.layers.add([unitLayer, unitLines, polygonHoverLayer, polygonClickLayer, unitSymbols], 'roomPolygons'); featureHoverClick(unitLayer, polygonHoverLayer, polygonClickLayer, true); var drawingSource = drawingManager.getSource(); @@ -317,7 +293,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged }); } - // Entry point when "level.geojson" is pressed; the following code should be refactored due to redundancy + // Entry point when "level.geojson" is pressed function levelInteractions(levels, drawingManager, map) { let element = document.getElementById('undoButton'); element.setAttribute('hidden', 'hidden'); @@ -389,13 +365,6 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged dmLayers.polygonLayer.setOptions({ visible: true }); currentEditData(map, drawingManager, setJsonData); - - document.addEventListener('keydown', function (e) { - // Check if the delete or backspace key is pressed - if (e.key === 'Delete' || e.key === 'Backspace') { - drawingManager.setOptions({ mode: 'idle' }); - } - }); } else { // This will eventually be a visible pop-up @@ -404,7 +373,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged }); } - // Entry point when "footprint.geojson" is pressed; the following code should be refactored due to redundancy + // Entry point when "footprint.geojson" is pressed function footprintInteractions(footprint, drawingManager, map) { let element = document.getElementById('undoButton'); element.setAttribute('hidden', 'hidden'); @@ -486,6 +455,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged }); } + // Entry point when "building.geojson" is pressed function buildingInteractions(building, map) { let element = document.getElementById('undoButton'); element.setAttribute('hidden', 'hidden'); @@ -505,7 +475,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged }); } - // Entry point when "full view" is pressed; the following code may need to be changed to allow fill color of units while editing + // Entry point when "full view" is pressed function fullViewInteractions(units, levels, map) { unitsChanged(units); levelsChanged(levels); @@ -662,7 +632,7 @@ const PlacesPreviewMap = ({ style, unitsChanged, levelsChanged, footprintChanged />
-
+
Zoom in to see labels and icons. {drawNotif && Click to draw a point. To connect the final lines of current drawing, press 'c'.} diff --git a/src/pages/conversion/places-preview-map/layer-selector/index.js b/src/pages/conversion/places-preview-map/layer-selector/index.js index 821da13..ac0ebf0 100644 --- a/src/pages/conversion/places-preview-map/layer-selector/index.js +++ b/src/pages/conversion/places-preview-map/layer-selector/index.js @@ -3,7 +3,6 @@ import { useState } from 'react'; import { buttonStyle, layerSelectorWrapper, selectedButtonStyle } from './index.style'; const layerButtons = [ - // will need to add a "buildingButton" once basemap is loaded {id: 'unitButton', text: 'unit.geojson'}, {id: 'levelButton', text: 'level.geojson'}, {id: 'footprintButton', text: 'footprint.geojson'},