是否可以编写一个简单的自定义链接来显示或隐藏页面上的所有图层?

时间:2019-05-24 20:16:31

标签: draw.io

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

是否可以使用通配符或类似字符隐藏所有层,还是我需要手动创建一个巨大的(以手动管理的方式)层ID JSON数组?

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

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

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

我希望使用上面的自定义链接可以使所有图层都被隐藏,就像那样,但是也可以使当前所选图层上的形状被隐藏。这也导致当前选定图层上的形状在编辑器中显示为已删除,因此我需要使用“撤消”功能将形状取回。我想这是一个错误,除非我做错了什么或者我的绘图已经损坏。

类似这样的功能将非常有用:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

在页面上显示所有标签的方法相同:

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

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

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

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

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

答案 1 :(得分:1)

可以向图层添加标签。为此,编辑图层数据(单击图层,然后单击三个垂直点)并添加“标签”属性:
Add "tags" property to layer

之后,您就可以像这样向图层添加标签:

Add tag "some_tag" to the layer

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

显示带有 some_tag 的所有图层:

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

使用 some_tag 隐藏所有图层:

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