16 lines
762 B
Python
16 lines
762 B
Python
"""在大屏 JSON 副本上删除组件,用于后端校验,不删除共享数据源"""
|
|
|
|
from app.actions.base import BaseActionHandler
|
|
from app.schemas.actions import DeleteAction
|
|
from app.schemas.screen import Screen
|
|
|
|
|
|
class DeleteHandler(BaseActionHandler[DeleteAction]):
|
|
def apply(self, screen: Screen, action: DeleteAction) -> Screen:
|
|
# 确认删除目标存在,并取得与原始输入隔离的大屏副本及目标节点
|
|
result, target = self.copy_target(screen, action.target_id)
|
|
# 从副本中移除目标组件,保留其余组件及共享数据源
|
|
result.nodes = [node for node in result.nodes if node.id != target.id]
|
|
# 返回删除后的完整大屏,原始输入保持不变
|
|
return result
|