Можно ли написать простую пользовательскую ссылку, которая показывает или скрывает все слои на странице?

У меня есть страница диаграммы draw.io, состоящая из более чем 40 слоев. Но поскольку я не знаю, какие слои будут скрыты/отображены пользователем на опубликованной диаграмме, я хочу предоставить кнопку с набором действий, который скрывает все слои, а затем показывает 3 определенных слоя.

Можно ли скрыть все слои с помощью подстановочного знака или подобного, или мне нужно вручную создать огромный (с точки зрения ручного управления) массив идентификаторов слоев JSON?

Из того, что я могу сказать, это невозможно, что меня удивляет, поэтому я и спрашиваю. Для моей диаграммы это означает, что мне нужно поддерживать огромные массивы JSON во многих ссылках.

Я пробовал различные настраиваемые ссылки, используя подстановочные знаки действий ячеек и тегов, но мои тесты показывают, что теги работают только для фигур (а не для слоев), а ячейки включают в себя как фигуры, так и слои.

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

Я надеялся, что использование приведенной выше пользовательской ссылки приведет к скрытию всех слоев, что и произошло, но это также привело к скрытию фигур на текущем выбранном слое. Это также приводило к тому, что фигуры на выбранном в данный момент слое казались удаленными в редакторе, поэтому мне нужно было использовать функцию «Отменить», чтобы вернуть фигуры. Я предполагаю, что это ошибка, если только я не делаю что-то не так или мой рисунок испорчен.

Что-то вроде этого было бы действительно полезной функцией:

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

Я бы подумал о написании плагина, но не могу найти справочной документации по этому вопросу. Может ли кто-нибудь посоветовать по этому поводу?


person Marlau    schedule 24.05.2019    source источник


Ответы (2)


Я работал над проблемой невозможности скрыть все слои на странице с помощью подстановочного знака с помощью тегов.

Можно пометить отдельные фигуры или сгруппировать фигуры и добавить свойство тегов на уровне группы. Пока фигура или группа имеет свойство «теги» на экране «Редактировать данные» со значением в нем, можно скрыть все, используя следующую настраиваемую ссылку:

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

То же самое для отображения всех тегов на странице:

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

Чтобы показать все на странице без использования тегов, можно просто использовать:

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

Мне также нужно было добавить две кнопки на уровень администратора:

  1. Кнопка «сброс» с пользовательскими действиями «скрыть»/«показать» для сброса диаграммы в исходное состояние.
  2. Кнопка «показать все» с действиями настраиваемых ссылок «показать», чтобы снова отобразить все фигуры, в противном случае к ним нельзя было получить доступ при редактировании диаграммы.
person Marlau    schedule 28.05.2019

К слою можно добавлять теги. Для этого отредактируйте данные слоя (нажмите на слой, затем на три вертикальные точки) и добавьте свойство tags:
Добавить свойство тегов к слою

После этого вы сможете добавить тег к слою следующим образом:

Добавить тег some_tag к слою

Теперь вы можете показать или скрыть все слои с тегом some_tag со следующими настраиваемыми ссылками:

Показать все слои с some_tag:

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

Скройте все слои с помощью some_tag:

data:action/json,{"actions":[{"hide":{"tags":["some_tag"]}}]}
person keraldi    schedule 10.06.2021