diff --git a/lib/custom-ui/components/drawer/layers-list/layer-card.js b/lib/custom-ui/components/drawer/layers-list/layer-card.js index 408e8df4c..5da05f450 100644 --- a/lib/custom-ui/components/drawer/layers-list/layer-card.js +++ b/lib/custom-ui/components/drawer/layers-list/layer-card.js @@ -30,7 +30,8 @@ export const LayerCard = ({ setCheckedLayers, checkedLayers, setDisableDelete, - setAddHurricaneLayers + setAddHurricaneLayers, + items }) => { const { activeLayerId, @@ -43,6 +44,7 @@ export const LayerCard = ({ } = useLayers(); const [checked, setChecked] = React.useState(false); const [ch, setCh] = React.useState(true); + const [alreadyExists, setAlreadyExists] = React.useState(false); setAddHurricaneLayers(true); // convert the product type to a readable layer name @@ -69,38 +71,52 @@ export const LayerCard = ({ const currentlyActive = useMemo(() => id === activeLayerId, [activeLayerId]); useEffect(() => { - // if (checkedLayers.includes(layer) == false) { - // console.log(layer) - // let newArr = checkedLayers.filter((o) => o.id !== id); - - // setCheckedLayers([ - // ...newArr, - // { - // id: id, - // delete: handleRemoveLayer, - // checked: checked, - // setChecked: setChecked - // } - // ]); - if (ch) { - console.log(Math.random() + Math.random()); + const containsLayer = checkedLayers.some( + (item) => item.id == layer.uniqueId + ); + if (containsLayer) { + setAlreadyExists(true); + } else if (ch) { setCheckedLayers([ ...checkedLayers, { - id: Math.random() + Math.random(), + id: layer.uniqueId, delete: handleRemoveLayer, checked: checked, setChecked: setChecked } ]); setCh(false); - console.log(checkedLayers); } + }, []); - // } + // useEffect(() => { + // // if (checkedLayers.includes(layer) == false) { + // // console.log(layer) + // // let newArr = checkedLayers.filter((o) => o.id !== id); - // handleChange({ target: { checked: false } }) - }, []); + // // setCheckedLayers([ + // // ...newArr, + // // { + // // id: id, + // // delete: handleRemoveLayer, + // // checked: checked, + // // setChecked: setChecked + // // } + // // ]); + // if (ch) { + // setCheckedLayers([ + // ...checkedLayers, + // { + // id: layer.uniqueId, + // delete: handleRemoveLayer, + // checked: checked, + // setChecked: setChecked + // } + // ]); + // setCh(false); + // } + // }, []); // This function removes the layer from the workbench/map and from the context to sync the changes to the UI const handleRemoveLayer = () => { @@ -183,6 +199,10 @@ export const LayerCard = ({ ]); }; + if (alreadyExists) { + return null; + } + return ( { const handleSelectAll = (e) => { console.log(checkedLayers); + console.log(viewState.terria.workbench.items); if (checked === false) { setChecked(true); setDisableDelete(false); @@ -144,7 +145,7 @@ export const LayersList = ({ viewState, terria }) => { {...provided.droppableProps} ref={provided.innerRef} > - {/*
{ > -
*/} + {viewState.terria && viewState.terria.workbench.items.map( (layer, index) => layer.type !== "csv" && ( @@ -210,6 +211,7 @@ export const LayersList = ({ viewState, terria }) => { setCheckedLayers={setCheckedLayers} setDisableDelete={setDisableDelete} setAddHurricaneLayers={setAddHurricaneLayers} + items={viewState.terria.workbench.items} />