venue-layout v0.8.0
Venue Layout
Компоненты для просмотра и создания схемы зала.
Установка
Убедитесь, что установлен Node.js 5 и выше:
$ node -v
v8.1.3Установите глобальные модули (может потребоваться sudo):
$ npm install -g webpack webpack-dev-serverУстановите модули в папке проекта:
$ npm installЗапуск
Для запуска веб-сервера разработки выполните:
$ npm startСервер запустится по адресу http://localhost:8080
Сборка
После внесения изменений не забывайте обновлять сборку.
Для сборки библиотек в папку ./dist выполните команду:
$ npm run buildОбновление Fabric.js
В проекте используется специальная сборка Fabric.js. При выходе новых версий Fabric может понадобиться обновить сборку.
Для этого нужно склонировать куда-нибудь репозиторий Fabric:
$ git clone git@github.com:kangax/fabric.js.gitЗайти в папку проекта fabric.js:
$ cd fabric.jsПри необходимости можно переключиться на конкретную версию (тег):
$ git checkout tags/v1.7.2Затем выполнить сборку fabric.js:
$ node build.js modules=animation,gestures,interaction no-svg-exportПолученный файл fabric/dist/fabric.js нужно скопировать в папку venue-layout/web_modules
Стандарты кодирования
Для сборки используется webpack с поддержкой ES2015.
Модули
Модули устанавливаются через npm и могут подключаться через require (стиль CommonJS) или через import (стиль ES2015).
Используемые для работы приложения модули лучше устанавливать с флагом --save:
$ npm install javascript-natural-sort --saveИспользуемые для сборки модули лучше устанавливать с флагом --save-dev:
$ npm install babel-preset-es2015 --save-devESLint
Для обнаружения потенциальных ошибок и поддержания стиля кодирования используется ESLint.
ESLint запускается автоматически при сборке и выводит результаты проверки в терминал, но удобнее видеть результаты сразу во время написания кода.
В JetBrains IDE (WebStorm, PhpStorm и т.д.) для этого есть плагин ESLint, который включен по-умолчанию и подчеркивает проблемные места в коде.
В Sublime Text нужно выполнить следующие действия:
- Установить пакет SublimeLinter
- Установить к нему плагин SublimeLinter-eslint
- Найденные ошибки начнут подсвечиваться в коде, а их описание можно вывести по нажатию
Cmd + Ctrl + A(Mac) илиCtrl + K, A(Win).
Подробную информацию по правилам ESLint найти здесь: http://eslint.org/docs/rules/
События
Один из способов взаимодействия с компонентом VenueLayout – перехват событий:
venueLayout.canvas.on('seat:over', event => { ... })Встроенные в fabric события описаны здесь: https://github.com/kangax/fabric.js/wiki/Working-with-events
Помимо этого, VenueLayout определяет свои собственные события.
canvas:move – при сдвиге схемы. Возвращает объект, содержащий delta – смещение схемы по x и y.
category:over – при наведении на категорию VenueGeneralAdmission.
Возвращает объект {e, object, category, point}
category:click – аналогично category:over, но возникает при клике на категорию
category:out – при уводе мыши с категории. Возвращает {e, object, category}
seat:over – при наведении на место, для VenueSeatRows и VenueSeat. Возвращает {e, object, seat, category, point}
seat:click – аналогично seat:over, но возникает при клике
seat:out – при уводе мыши с места для VenueSeatRows и VenueSeat. Возвращает {object, seat}
ticketselection:changed – при изменении выборки билетов объекта {object, tickets, byUser}
ticketobject:over – при наведении на объект с билетами {e, object}
ticketobject:out – при уводе мыши с объекта с билетами {object}
ticketgroup:changed – при изменении выбранной группы билетов {group, prevGroup} (0 – основная группа, 1 – вторичка)
Все события возвращают «логические» координаты объектов.
Чтобы перевести их в физические относительно элемента
— можно использовать фукнцию venueLayout.transformToRealPoint({x, y}): {x, y}
Прочие события
zoom:before – перед выполнением зума, в т.ч. анимированного {startZoom, endZoom, zoom}
zoom:after – после окончания анимации зума {startZoom, endZoom, zoom}
zoom – в случае анимированного зума выполняется для каждой итерации анимации {startZoom, endZoom, zoom}
startZoom – начальный зум, endZoom – финальный, zoom – текущий
mouse:click – событие введено, чтобы отличать клики от перетаскиваний.
Если нужно поймать именно клик, можно использовать его.
8 years ago