diff --git a/web/src/CameraMap.jsx b/web/src/CameraMap.jsx index b84a8137c..35133ab52 100644 --- a/web/src/CameraMap.jsx +++ b/web/src/CameraMap.jsx @@ -185,7 +185,7 @@ ${Object.keys(zonePoints) const handleRemoveObjectMask = useCallback( (key, subkey) => { const newObjectMaskPoints = { ...objectMaskPoints }; - delete newObjectMaskPoints[key]; + delete newObjectMaskPoints[key][subkey]; setObjectMaskPoints(newObjectMaskPoints); }, [objectMaskPoints, setObjectMaskPoints] @@ -205,6 +205,20 @@ ${Object.keys(objectMaskPoints) .join('\n')}`); }, [objectMaskPoints]); + const handleAddToObjectMask = useCallback( + (key) => { + const newObjectMaskPoints = { ...objectMaskPoints, [key]: [...objectMaskPoints[key], []] }; + setObjectMaskPoints(newObjectMaskPoints); + setEditing({ + set: newObjectMaskPoints, + key, + subkey: newObjectMaskPoints[key].length - 1, + fn: setObjectMaskPoints, + }); + }, + [objectMaskPoints, setObjectMaskPoints, setEditing] + ); + const handleChangeSnap = useCallback( (id, value) => { setSnap(value); @@ -268,6 +282,7 @@ ${Object.keys(objectMaskPoints) isMulti editing={editing} title="Object masks" + onAdd={handleAddToObjectMask} onCopy={handleCopyObjectMasks} onCreate={handleAddObjectMask} onEdit={handleEditObjectMask} @@ -397,6 +412,7 @@ function MaskValues({ isMulti = false, editing, title, + onAdd, onCopy, onCreate, onEdit, @@ -438,6 +454,14 @@ function MaskValues({ [onRemove] ); + const handleAdd = useCallback( + (event) => { + const { key } = event.target.dataset; + onAdd(key); + }, + [onAdd] + ); + return (
@@ -454,15 +478,20 @@ function MaskValues({ return (
{` ${mainkey}:\n mask:\n`} + {onAdd && showButtons ? ( + + ) : null} {points[mainkey].map((item, subkey) => ( ))} @@ -473,10 +502,11 @@ function MaskValues({ ); @@ -487,7 +517,7 @@ function MaskValues({ ); } -function Item({ mainkey, subkey, editing, handleEdit, points, showButtons, handleRemove, yamlKeyPrefix }) { +function Item({ mainkey, subkey, editing, handleEdit, points, showButtons, handleAdd, handleRemove, yamlKeyPrefix }) { return (