Pull to refresh

Comments 40

Интереснее всего как вы сделали бэкенд для этой штуки и на каких объемах событий\клиентов это все работает?
Бэкенд там довольно простой и работает он на современном хипстерском PHP. А масштабироваться мы умеем благодаря Voximplant
Зашел: почитать об особенностях реализации редактора и автороутинга.
Увидел:
Взяли библиотеку. Там автороутинг плохо работал.
Взяли вторую библиотеку. О, норм.
Не «плохо работал», а «нужно указывать промежуточные точки вручную». Это же достаточная степень детализации? Что еще интересует? Я gif'ки специально записал, чтобы роутинг показать :)
От статьи на хабре с таким названием я жду одного из 2х:
  1. Описания «внутрянки» Вашего решения. Алгоритмов, диаграмм с кусками кода и т.д.
    После прочтения такой статьи я немножко выросту как программист;
  2. Сравнения готовых решений.
    После прочтения такой статьи у меня в голове останутся имена 2-3 готовых решений и я буду понимать: если мне понадобится реализовать такой редактор, то начать нужно с… (лезу в Вашу статью, нахожу сравнительную таблицу и по моим критериям нахожу подходящее для меня решение).


После прочтения Вашей статьи я понял:
  1. Во фронтенде сейчас много готовых и бесплатных библиотек для рисования блок-схем.
  2. Вы проработали какое-то количество из готовых библиотек.
  3. Среди этих библиотек Вам встретилось две библиотеки с именами JointJS и STORM.
  4. Вы используете одну из них, хотя эта библиотека сложная и несовременная, но рисует связи чуть лучше другой.

А вот вопросы, которые у меня остались после прочтения статьи:
  1. Сколько же Вы все-таки библиотек проработали?
  2. Чем Вас не устроили другие библиотеки?
  3. Почему выбор пал на платный продукт?
  4. Почему не STORM + допилить алгоритм трассировки?
  5. ...
Все верно, оч хорошая выжимка. Фундаментальное сравнение — это work in progress, такую статью не один десяток часов писать!
Довольно дорого. Плюс, как и у любых пропиетарных библиотек, возможны «licensing issues», когда купили, а через пару лет проект вырос и авторы библиотеки решили, что как-то мало им платят для такого крутого проекта :) Должны быть веские причины.
UFO just landed and posted this here
Joint так же может. На скриншоте самый простой сценарий. В примерах есть посложнее, попробуйте!
Вы ваш редактор делали с какой-то целью для какого-то сервиса? А где можно потыкать в готовый результат?
Мы его делали для нашего сервиса smartcalls.io — фидбек приветствуется!
Я правильно понял, чтобы попробовать редактор нужно зарегистрироваться в Вашем сервисе?
Да, это бесплатно и занимает секунд 10. Редактор — это часть сервиса, про который было интересно рассказать на Хабре, а не отдельный продукт. Была бы open source либка — пробовать можно было бы сразу с главной.
Ожидал увидеть, как реализовали такую библиотеку, а не взяли готовую. В итоге опыта я не обнаружил, слишком уж желтушным оказался заголовок.
Пробовали. Для «fully client side JavaScript diagramming library» оно хочет как-то очень много server-side.
Оно там появилось в 5-й версии которая релизнулась, на секундочку, вчера :)
Надо было во vueJs дать возможность пользователям создавать/рисовать воркфлоу свои… Также использовал jointjs (бесплатную версию)… Вебпак не трогал, единственная засада была в подключении библиотечек которые для jontjs авто-лейаут делают и зум диаграм по-простому сделать

Использую визуальный редактор Node-RED для целей домашней автоматизации. Очень доволен.
Я бы на вашем месте придумал бы как его использовать для вашей системы, чем разрабатывать свой.

Мы не разрабатывали свое :)
чем jsPlumb не устроил?
подобное реализовывал на нём ещё год назад. всё отлично работает.
А вот его мы просто не заметили. И как оно, где-нибудь в production используется? Как впечатления?
уже как пол года используется для составления сценариев для менеджеров и сервисного отдела. полёт нормальный. средние блок схемы 50-60 блоков. реализация бек — Laravel, фронт — Vue. Немного не хватает мелкого функционала. Но как для free версии, отлично.
Чувствую, что от большой обзорной статьи «чем рисовать схемы во фронте» мне не отвертеться :)
15 лет назад я видел похожую разработку на Visual Basic, это было голосовое меню для банка. Тогда всё уткнулось в:
— невозможность уместить на экране и в голове больше десяти квадратиков (т.е. не-программист всё равно не может справиться с задачей реального размера);
— отсутствие повторно используемых кусков;
— невозможность отладки;
— невозможность отследить историю изменений по системе контроля версий.
В общем, с тех пор у меня скепсис по поводу графических средств программирования :)
У меня тоже. Но походу это работает! Тот редкий случай, когда сценарии простые и их можно быстро собирать из блоков. А кому мало — делают на Voximplant где обычный JavaScript
Да, но для менеджеров квадратики со стрелочками понятнее, чем ТАКОЕ. Blockly это все же промежуточный вариант между квадратиками и кодом. Нам хотелось именно квадратиков. Потому что для разработчиков у нас есть Voximplant с JavaScript наперевес, где с голосовыми и видеозвонками можно сделать вообще всё.

Ясно.
И все же полезно знать, что в Blockly совершенно необязательно изображать код.
Вполне можно описывать объекты и их связи.
Что именно генерирует Blockly, настраивается.


Out of the box thinking.
Blockly!=imperative code.

Я уже оценил необходимость в обзорной статье «чем рисовать схемы во фронте» с примерами кода. И даже поставил в пайплайн. Но написать такое — это много-много часов работы, которые надо еще отнять у других задач. К лету должно стать поспокойнее с конференциями, и будет возможность заняться!
Настроенная JointJS очень хорошо выполняет свою работу: быстрый движок SVG

К сожалению, SVG достаточно быстро ложится на лопатки при увеличении объёма информации, подлежащей отображению. Например, Draw2D неприемлемо тупит уже на 300 примитивах, а SVG.js — на 800. Под словом «неприемлемо» подразумевается 10 сек и более (на конкретных, далеко не самых дохлых компьютерах). В нашей компании требовалось отображать сразу по несколько тысяч примитивов, в виду чего пришлось отказаться от SVG в пользу растровой графики.

Проблема SVG в том, что скорость обработки данных при увеличении их объёма изменяется далеко не линейно: тынц.
В статье пишут «Performance is better with smaller number of objects (<10k), a larger surface, or both». Возможно это вопрос к Draw2D, а не к SVG?
Я ведь выше ссылку дал, в которой Microsoft демонстрирует наглядные графики, не привязанные к конкретному движку. Draw2D конечно же вносит свою лепту, причём не самую лучшую, но проблема не только в нём. SVG.JS существенно быстрее, но и он не устроил. Используемый вами JointJS я не проверял, но подозреваю, что и он не окажется «серебрянной пулей».

В статье пишут «Performance is better with smaller number of objects (<10k), a larger surface, or both».

Да, но по факту скорость перестала нас устраивать на количестве даже меньшим чем 1k.

Вы тестировали редактор на большом объёме данных (например, 3-5 тыс. примитивов)? Если да, то каково было количество примитивов и какова скорость отображения?
Нет, для наших целей это оверкилл. Визуальная схема более чем из 100 элементов (а это меньше чем 1000 примитивов) уже нечитаема.
Это смотря что за схема. У нас схемы печатались на листы формата A0xN. Схемы предназначались для печати на плоттере и затем вешались на стену. Это были описания бизнес-процессов, а так же технологических процессов проектирования. Очень крупная строительная компания. Всё было очень даже читабельно.
в виду чего пришлось отказаться от SVG в пользу растровой графики.

Какая-то сторонняя библиотека или своя разработка?
Sign up to leave a comment.