diff --git a/web/src/CameraMap.jsx b/web/src/CameraMap.jsx index d2b2d85510..5c1d7c35c3 100644 --- a/web/src/CameraMap.jsx +++ b/web/src/CameraMap.jsx @@ -198,7 +198,7 @@ ${Object.keys(zonePoints) const handleRemoveObjectMask = useCallback( (key, subkey) => { const newObjectMaskPoints = { ...objectMaskPoints }; - delete newObjectMaskPoints[key]; + delete newObjectMaskPoints[key][subkey]; setObjectMaskPoints(newObjectMaskPoints); }, [objectMaskPoints, setObjectMaskPoints] @@ -218,6 +218,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); @@ -281,6 +295,7 @@ ${Object.keys(objectMaskPoints) isMulti editing={editing} title="Object masks" + onAdd={handleAddToObjectMask} onCopy={handleCopyObjectMasks} onCreate={handleAddObjectMask} onEdit={handleEditObjectMask} @@ -410,6 +425,7 @@ function MaskValues({ isMulti = false, editing, title, + onAdd, onCopy, onCreate, onEdit, @@ -451,6 +467,14 @@ function MaskValues({ [onRemove] ); + const handleAdd = useCallback( + (event) => { + const { key } = event.target.dataset; + onAdd(key); + }, + [onAdd] + ); + return (
@@ -467,15 +491,20 @@ function MaskValues({ return (
{` ${mainkey}:\n mask:\n`} + {onAdd && showButtons ? ( + + ) : null} {points[mainkey].map((item, subkey) => ( ))} @@ -486,10 +515,11 @@ function MaskValues({ ); @@ -500,7 +530,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 (