feat(hotkeys): h
This commit is contained in:
@@ -1512,27 +1512,37 @@ const LabelPage = ({
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
const handleToggleHideSelectedObject = useCallback(() => {
|
const handleToggleHideAllObjects = useCallback(() => {
|
||||||
const selectedContext = resolveSelectedObjectContext()
|
const activeImageLabel = labelData.get(activeImage)
|
||||||
if (!selectedContext) {
|
if (!activeImageLabel?.size) return
|
||||||
notifications.show({
|
|
||||||
color: "yellow",
|
|
||||||
message: "请先选中单个对象",
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const currentHideStatus =
|
const activeImageOperations = Array.from(activeImageLabel.keys())
|
||||||
useObjectStore.getState().pathStatus[
|
const totalObjectCount = activeImageOperations.reduce(
|
||||||
selectedContext.imageId + selectedContext.objectId
|
(count, operationId) => {
|
||||||
]?.HIDE || false
|
return count + (activeImageLabel.get(operationId)?.length || 0)
|
||||||
toggleObjectHideByShortcut(
|
},
|
||||||
selectedContext.imageId,
|
0
|
||||||
selectedContext.operationId,
|
|
||||||
selectedContext.objectId,
|
|
||||||
!currentHideStatus
|
|
||||||
)
|
)
|
||||||
}, [resolveSelectedObjectContext])
|
if (!totalObjectCount) return
|
||||||
|
|
||||||
|
const pathStatus = useObjectStore.getState().pathStatus
|
||||||
|
const areAllObjectsHidden = activeImageOperations.every((operationId) => {
|
||||||
|
const operationChildren = activeImageLabel.get(operationId) || []
|
||||||
|
return operationChildren.every(
|
||||||
|
([objectId]) => pathStatus[activeImage + objectId]?.HIDE ?? false
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
const nextHide = !areAllObjectsHidden
|
||||||
|
const { updateOperationStatus } = useObjectStore.getState()
|
||||||
|
|
||||||
|
activeImageOperations.forEach((operationId) => {
|
||||||
|
updateOperationStatus(activeImage + operationId, "HIDE", nextHide)
|
||||||
|
activeImageLabel.get(operationId)?.forEach(([objectId]) => {
|
||||||
|
toggleObjectHideByShortcut(activeImage, operationId, objectId, nextHide)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, [activeImage, labelData])
|
||||||
|
|
||||||
const rerenderActiveImageByLabel = useCallback(
|
const rerenderActiveImageByLabel = useCallback(
|
||||||
(
|
(
|
||||||
@@ -2123,7 +2133,7 @@ const LabelPage = ({
|
|||||||
|
|
||||||
if (!e.ctrlKey && !e.metaKey && !e.altKey && lowerKey === "h") {
|
if (!e.ctrlKey && !e.metaKey && !e.altKey && lowerKey === "h") {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
handleToggleHideSelectedObject()
|
handleToggleHideAllObjects()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2424,7 +2434,7 @@ const LabelPage = ({
|
|||||||
enterSelectedObjectDrawMode,
|
enterSelectedObjectDrawMode,
|
||||||
focusInput,
|
focusInput,
|
||||||
getOperationSchema,
|
getOperationSchema,
|
||||||
handleToggleHideSelectedObject,
|
handleToggleHideAllObjects,
|
||||||
handleMergeSelectedObjects,
|
handleMergeSelectedObjects,
|
||||||
handleContinueSelectedPolygon,
|
handleContinueSelectedPolygon,
|
||||||
handleShortcut,
|
handleShortcut,
|
||||||
|
|||||||
Reference in New Issue
Block a user