Спецификации

  • Рабочая область, внутри которой создается граф - текущий viewport;✅
  • Необходимо иметь toolbox, в котором можно выбрать тип элемента, который будет добавлен в граф (вершину или ребро);✅
  • Вершины графа добавляются по клику в произвольную точку рабочей области;✅
  • Ребро можно добавлять только между двумя вершинами графа;✅
  • Рёбра и вершины можно удалять;✅
  • Граф должен масштабироваться если изменяются размеры области просмотра;✅
  • При удаление вершины графа, должны автоматически удалятся все рёбра, связанные с ней;✅
  • При клике на вершину графа должен всплывать popover, в котором мы можем пометить вершину как начало или конец пути (сюда же можно и кнопку удаления добавить); ❎
  • В момент когда выбраны 2 вершины должен выстроится кратчайший путь между ними. Рёбра которые формируют этот путь должны быть визуально выделены. Так же, по направлению пути надо анимировать двигающийся маркер;✅
  • Необходимо предотвращать повторное вычисление пути между двумя точками, используя мемоизацию или кэширование в Local Storage;✅