【问题标题】:Is it possible to write a simple custom link that shows or hides all layers on a page?是否可以编写一个简单的自定义链接来显示或隐藏页面上的所有图层?
【发布时间】:2021-06-10 18:42:26
【问题描述】:

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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: draw.io


    【解决方案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"]}}]}
    

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 1970-01-01
        相关资源
        最近更新 更多