fix(editor): 更新dsl,组件树列表不更新

fix #554
This commit is contained in:
roymondchen 2023-11-21 14:05:43 +08:00
parent ad008b66b4
commit e35a963b67

View File

@ -7,7 +7,11 @@ import { LayerNodeStatus, Services } from '@editor/type';
import { traverseNode } from '@editor/utils'; import { traverseNode } from '@editor/utils';
import { updateStatus } from '@editor/utils/tree'; import { updateStatus } from '@editor/utils/tree';
const createPageNodeStatus = (services: Services | undefined, pageId: Id) => { const createPageNodeStatus = (
services: Services | undefined,
pageId: Id,
initalLayerNodeStatus?: Map<Id, LayerNodeStatus>,
) => {
const map = new Map<Id, LayerNodeStatus>(); const map = new Map<Id, LayerNodeStatus>();
map.set(pageId, { map.set(pageId, {
@ -19,12 +23,15 @@ const createPageNodeStatus = (services: Services | undefined, pageId: Id) => {
services?.editorService.getNodeById(pageId)?.items.forEach((node: MNode) => services?.editorService.getNodeById(pageId)?.items.forEach((node: MNode) =>
traverseNode(node, (node) => { traverseNode(node, (node) => {
map.set(node.id, { map.set(
visible: true, node.id,
expand: false, initalLayerNodeStatus?.get(node.id) || {
selected: false, visible: true,
draggable: true, expand: false,
}); selected: false,
draggable: true,
},
);
}), }),
); );
@ -42,17 +49,15 @@ export const useNodeStatus = (services: Services | undefined, page: ComputedRef<
page.value ? nodeStatusMaps.value.get(page.value.id) : new Map<Id, LayerNodeStatus>(), page.value ? nodeStatusMaps.value.get(page.value.id) : new Map<Id, LayerNodeStatus>(),
); );
// 切换页面,重新生成节点状态 // 切换页面或者新增页面,重新生成节点状态
watch( watch(
() => page.value?.id, page,
(pageId) => { (page) => {
// 已经存在,不需要重新生成 if (!page) {
if (!pageId || nodeStatusMaps.value.has(pageId)) {
return; return;
} }
// 生成节点状态
// 新增页面,生成节点状态 nodeStatusMaps.value.set(page.id, createPageNodeStatus(services, page.id, nodeStatusMaps.value.get(page.id)));
nodeStatusMaps.value.set(pageId, createPageNodeStatus(services, pageId));
}, },
{ {
immediate: true, immediate: true,