Сделать элементы «недоступными для выбора» в JointJS
-
21-12-2019 - |
Вопрос
я использовал Джойнтжс библиотека диаграмм в одном из моих проектов.
1) Мне любопытно узнать, предоставляет ли он какой-либо способ запретить пользователям играть с элементами диаграммы.Я имею в виду:пользователь сможет видеть диаграмму как изображение, а не взаимодействовать с ней, например изменять размер, положение, перетаскивать ссылки и т. д.
2) Мое приложение сильно от этого зависит.Хотя я решил проблему автоматического макета, но возможно ли это с Jointjs, можем ли мы просто сказать библиотеке, что нам нужны эти элементы и все такое, и, пожалуйста, помогите нам создать диаграмму с наиболее подходящими, неконфликтующими элементами и с минимумом количество ссылок, сталкивающихся друг с другом и с элементами на своем пути, если ссылки представляют собой непрерывные прямые линии?
3) Наконец, я хочу знать, можем ли мы проверить ссылки, конфликтующие с другими элементами или с другими ссылками на той же диаграмме.Я знаю, что это возможно в случае элементов.
if (element1.getBBox().intersect(element2.getBBox())) {
// elements intersect
}
Решение
1) Используйте либо new joint.dia.Paper({ interactive: false, ... })
или установите для свойства CSS pointer-events значение none непосредственно на бумаге: paper.$el.css('pointer-events', 'none')
2) Вы можете использовать плагин Joint.layout.DirectedGraph.Этот плагин можно скачать здесь: http://jointjs.com/download и сообщение в блоге, описывающее это, находится здесь: http://www.daviddurman.com/automatic-graph-layout-with-jointjs-and-dagre.html.
3) В общем, это непросто.Я бы указал вам на этот сайт для примера вычислительного пересечения двух путей: http://www.kevlindev.com/geometry/2D/intersections/intersect_bezier2_bezier2.svg.Вот библиотека для скачивания: http://www.kevlindev.com/gui/math/intersection/index.htm