1

我有一个包含 40 多个图层的 draw.io 图表页面。但是因为我不知道用户将在已发布的图表上隐藏/显示哪些层,所以我想提供一个按钮,其中包含一个隐藏所有层的操作集,然后显示 3 个特定层。

是否可以使用通配符或类似名称隐藏所有图层,或者我是否需要手动创建一个巨大的(以手动管理术语)图层 ID JSON 数组?

据我所知,这是不可能的,这让我感到惊讶,因此我提出了要求。对于我的图表,这意味着我需要在许多链接中维护巨大的 JSON 数组。

我尝试了使用单元格和标记操作通配符的各种自定义链接,但我的测试表明标记仅适用于形状(而不是图层),并且单元格包括形状和图层。

data:action/json,{"actions":[{"hide":{"cells":["*"]}}]}

我希望使用上面的自定义链接会导致所有图层都被隐藏,它确实做到了,但它也导致当前选定图层上的形状被隐藏。它还导致当前选定图层上的形状在编辑器中显示为已删除,因此我需要使用撤消功能来恢复形状。我想这是一个错误,除非我做错了什么或我的绘图已损坏。

像这样的东西将是一个非常有用的功能:

data:action/json,{"actions":[{"hide":{"layers":["*"]}}]}

我会考虑编写一个插件,但找不到有关该主题的任何帮助文档。有人可以就此提出建议吗?

4

2 回答 2

1

我解决了无法使用标签通过通配符隐藏页面上所有图层的问题。

可以标记单个形状,或者通过对形状进行分组并在组级别添加 tags 属性。只要形状或组在“编辑数据”屏幕中有一个“标签”属性,其中包含一个值,就可以使用以下自定义链接隐藏所有内容:

data:action/json,{"actions":[{"hide":{"tags":[""]}}]}

在页面上显示所有标签也是如此:

data:action/json,{"actions":[{"show":{"tags":[""]}}]}

要在不使用标签的情况下显示页面上的所有内容,可以使用:

data:action/json,{"actions":[{"show":{"cells":["*"]}}]}

我还需要向管理层添加两个按钮:

  1. 带有“隐藏”/“显示”自定义链接操作的“重置”按钮,用于将图表重置为初始状态。
  2. 带有“显示”自定义链接操作的“全部显示”按钮可让所有形状再次可见,否则在编辑图表时无法访问它们。
于 2019-05-28T11:22:35.573 回答
1

可以将标签添加到图层。为此,编辑图层数据(单击图层,然后单击三个垂直点)并添加“标签”属性:
将“标签”属性添加到图层

之后,您将能够像这样向图层添加标签:

将标签“some_tag”添加到图层

some_tag现在,您可以使用以下自定义链接显示或隐藏带有标签的所有图层:

显示所有图层some_tag

data:action/json,{"actions":[{"show":{"tags":["some_tag"]}}]}

隐藏所有图层some_tag

data:action/json,{"actions":[{"hide":{"tags":["some_tag"]}}]}
于 2021-06-10T10:42:26.400 回答