是否可以编写一个简单的自定义 link 来显示或隐藏页面上的所有图层?
Is it possible to write a simple custom link that shows or hides all layers on a page?
我有一个包含 40 多个图层的 draw.io 图页面。但是因为我不知道用户将在发布的图表上有哪些层 hidden/shown,所以我想提供一个带有隐藏所有层的操作集的按钮,然后显示 3 个特定层。
是否可以使用通配符或类似方式隐藏所有图层,或者我是否需要手动创建一个巨大的(在手动管理术语中)图层 ID JSON 数组?
据我所知这是不可能的,这让我感到惊讶,因此我提出了这个问题。对于我的图表,这意味着我需要在许多 link 中维护巨大的 JSON 数组。
我尝试了各种使用单元格和标签操作通配符的自定义 link,但我的测试表明标签仅适用于形状(不适用于图层),而单元格同时包含形状和图层。
data:action/json,{"actions":[{"hide":{"cells":["*"]}}]}
我希望使用上面的自定义 link 会导致所有层被隐藏,确实如此,但它也会导致当前选定层上的形状被隐藏。它还导致当前所选图层上的形状在编辑器中显示为已删除,因此我需要使用撤消功能来恢复形状。我想这是一个错误,除非我做错了什么或者我的绘图已损坏。
像这样的东西将是一个非常有用的功能:
data:action/json,{"actions":[{"hide":{"layers":["*"]}}]}
我会考虑编写一个插件,但找不到关于该主题的任何帮助文档。有人可以就此提出建议吗?
我解决了无法使用标签通过通配符隐藏页面上所有图层的问题。
可以标记单个形状,或者通过对形状进行分组并在组级别添加标签 属性。只要形状或组在 "Edit Data" 屏幕中有一个 "tags" 属性 并且其中有一个值,就可以使用以下自定义 link 隐藏所有形状:
data:action/json,{"actions":[{"hide":{"tags":[""]}}]}
在页面上显示所有标签也是如此:
data:action/json,{"actions":[{"show":{"tags":[""]}}]}
要在页面上显示所有内容而不使用标签,可以只使用:
data:action/json,{"actions":[{"show":{"cells":["*"]}}]}
我还需要向管理层添加两个按钮:
- 带有 "hide"/"show" 自定义 link 操作的 "reset" 按钮可将图表重置为初始状态。
- 带有 "show" 自定义 link 操作的 "show all" 按钮使所有形状再次可见,否则在编辑图表时无法访问它们。
可以向图层添加标签。为此,编辑图层数据(单击图层,然后单击三个垂直点)并添加“标签”属性:
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"]}}]}
我有一个包含 40 多个图层的 draw.io 图页面。但是因为我不知道用户将在发布的图表上有哪些层 hidden/shown,所以我想提供一个带有隐藏所有层的操作集的按钮,然后显示 3 个特定层。
是否可以使用通配符或类似方式隐藏所有图层,或者我是否需要手动创建一个巨大的(在手动管理术语中)图层 ID JSON 数组?
据我所知这是不可能的,这让我感到惊讶,因此我提出了这个问题。对于我的图表,这意味着我需要在许多 link 中维护巨大的 JSON 数组。
我尝试了各种使用单元格和标签操作通配符的自定义 link,但我的测试表明标签仅适用于形状(不适用于图层),而单元格同时包含形状和图层。
data:action/json,{"actions":[{"hide":{"cells":["*"]}}]}
我希望使用上面的自定义 link 会导致所有层被隐藏,确实如此,但它也会导致当前选定层上的形状被隐藏。它还导致当前所选图层上的形状在编辑器中显示为已删除,因此我需要使用撤消功能来恢复形状。我想这是一个错误,除非我做错了什么或者我的绘图已损坏。
像这样的东西将是一个非常有用的功能:
data:action/json,{"actions":[{"hide":{"layers":["*"]}}]}
我会考虑编写一个插件,但找不到关于该主题的任何帮助文档。有人可以就此提出建议吗?
我解决了无法使用标签通过通配符隐藏页面上所有图层的问题。
可以标记单个形状,或者通过对形状进行分组并在组级别添加标签 属性。只要形状或组在 "Edit Data" 屏幕中有一个 "tags" 属性 并且其中有一个值,就可以使用以下自定义 link 隐藏所有形状:
data:action/json,{"actions":[{"hide":{"tags":[""]}}]}
在页面上显示所有标签也是如此:
data:action/json,{"actions":[{"show":{"tags":[""]}}]}
要在页面上显示所有内容而不使用标签,可以只使用:
data:action/json,{"actions":[{"show":{"cells":["*"]}}]}
我还需要向管理层添加两个按钮:
- 带有 "hide"/"show" 自定义 link 操作的 "reset" 按钮可将图表重置为初始状态。
- 带有 "show" 自定义 link 操作的 "show all" 按钮使所有形状再次可见,否则在编辑图表时无法访问它们。
可以向图层添加标签。为此,编辑图层数据(单击图层,然后单击三个垂直点)并添加“标签”属性:
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"]}}]}