跳转到内容

折叠与内嵌

编辑器提供了强大的折叠与内嵌功能,帮助用户在有限的屏幕空间内高效浏览和编辑复杂的配置数据。

  • 任意非叶子节点都可以折叠(收起其所有叶子节点)
  • 通过折叠可以快速聚焦于特定数据分支
  • 支持手动折叠/展开,状态会自动保存
  • 某些叶子节点可以内嵌到其父节点中显示
  • 内嵌后字段直接在父节点卡片中展示,不单独创建节点
  • 根据字段类型和数量智能判断是否可以内嵌

折叠功能允许用户收起不需要查看的节点分支,让界面更加清晰简洁。

  1. 点击卡片左上角的折叠按钮
  2. 节点将被折叠,其所有子节点不再显示

折叠功能示例

图中说明

  • 折叠后的节点只显示核心信息
  • 子节点完全隐藏,但不影响数据
  • 再次点击可展开恢复显示
  • 折叠状态会自动保存到配置中
  • 下次打开相同记录时,折叠状态会自动恢复
  • 支持通过 $fold 字段在数据层面控制默认折叠状态

内嵌功能可以将满足特定条件的字段直接显示在父节点中,避免创建过多的节点,提升信息密度。

内嵌前:每个字段都创建独立节点,树形结构庞大

父节点
├── 子节点1
├── 子节点2
└── 子节点3

内嵌后:字段直接在父节点卡片中显示

父节点 (包含子节点1、2、3的字段)

空的 list 字段自动过滤

  • 如果某个 list 类型的字段值为空数组 []
  • 该字段不会在界面中显示
  • 减少无意义的信息干扰

当字段类型为 struct 时,满足以下任一条件即可内嵌:

条件描述示例
条件1astruct 没有字段空结构体 {}
条件1bstruct 只有 1 个 primitive 字段{ name: string }
条件1cstruct 只有 ≤3 个 number 字段{ x, y, z: int }
条件1dstruct 只有 ≤4 个 bool 字段{ flag1, flag2, flag3, flag4: bool }
条件1estruct 只有 1 个 bool 字段和 1 个 number 字段{ enabled: bool, count: int }

primitive 类型包括:boolintlongfloatstrtext

当字段类型为 interface 时,其 impl 需满足以下任一条件:

条件描述示例
条件2ainterface 的 impl 没有字段空实现 {}
条件2binterface 的 impl 只有 1 个 primitive 字段{ value: string }
条件2cinterface 的 impl 只有 ≤2 个 number 字段{ x, y: float }
条件2dinterface 的 impl 只有 ≤3 个 bool 字段{ a, b, c: bool }
条件2einterface 的 impl 只有 1 个 bool 字段和 1 个 number 字段{ active: bool, priority: int }

注意:interface 的内嵌条件比 struct 更严格,number 字段限制为 2 个(struct 为 3 个),bool 字段限制为 3 个(struct 为 4 个)。

  • 父 node 中类型为 list 的 field,如果 list 只包含一项
  • 且该项满足上述 struct 或 interface 内嵌条件
  • 也可以内嵌显示

示例

// list 只有一个元素,且该元素满足内嵌条件
tags: [{ name: "重要" }] // 可以内嵌
// list 有多个元素,即使单个元素满足条件也不内嵌
tags: [{ name: "重要" }, { name: "紧急" }] // 不内嵌

内嵌功能示例

图中说明

  • 内嵌后,字段直接在父节点中显示
  • 内嵌字段以紧凑的方式展示,节省空间

当字段包含注释(note)时,编辑器提供了友好的提示功能。

  • 如果子节点有 note(注释)
  • 子节点的名称会以黄色显示
  • 快速识别哪些字段有详细说明
  • 将鼠标悬停在黄色名称上
  • 会弹出浮动提示框
  • 显示完整的字段名称注释内容
  • 帮助用户理解字段的含义和用途

Note 浮动提示

图中说明

  • 黄色高亮的字段名表示该字段有 note
  • 鼠标悬浮后显示完整的字段说明
  • 便于快速理解字段的业务含义