Eulergraph

Форкаемся от ветки dev

MR делаем в ветку dev

npm run install_all

dev в брузере

npm run euler

dev в electron

npm run dev

build win

npm run build:win

build mac

npm run build:mac

build linux

npm run build:linux
npm run doc

unit

npm run euler_test

unit c UI (красота)

npm run euler_test_ui

e2e с красотой (запускается в режиме prevew, поэтому headless режима пока нет, для него нужен playwright или webdriverio)

npm run euler_test_browser

Для дебага конвертера в папке src\renderer\__mock__ должны лежать файлы, полученные в результате работы конвертера

src\renderer\__mock__\vsdx_converted.json чтобы из конвертера получился такой файл его нужно запускать с третьим параметром "saveFull"

  • Отрисовывается всё в пойнтах. Для юзера выводится значение в мм.

  • Подписывайся на все события движка в EulergraphCanvas. Если увидел подписку не там - перенеси туда.

  • Данные, полученные из событий записывай в общий стор, который на прекрасном зустанде.

  • Воздействуй на движок напрямую. Нет метода - напиши. Сделай так, чтобы это изменение сгенерило нужный евент в движке если его нет.

  • Аккуратно с рендерами! Вызывай рендер только когда нужно. Основные рендеры - на изменение параметров вида - положение и масштаб (zoom), на редактирование элементов. Лучше вызов рендера делать внутри движка

  • Написал охуенную фичу? Напиши к ней доку! Исправил охуенную фичу? Исправь и доку!

  • Прежде чем писать в SkiaWasmService, прочти доку! Помни про управление памятью, там нет garbage collector!

В общих чертах

Поподробнее

Дока src\renderer\src\engine\docs

  • После тебя код должен стать лучше.

  • Делай код чистым.

  • SVG не вставляем в компоненты. SVG должны жить в отдельных компонентах.

  • Общие переиспользуемые в нескольких местах компоненты выноси в common.

  • Стилизацию делай в теме и только частный случай - в самом компоненте

  • Делай компоненты верхнего уровня (фичи) по возможности независимыми. это обеспечивает модульность приложения.

  • Соблюдай хотя бы DRY. По возможности KISS и SOLID.

  • названия коммитов и переменных должны быть осмысленными.

  • export default - зло.

  • index.ts - только для экспорта/импорта. Компонент называется CamelCase.

Документация EulergraphEngine

TODO