Skip to content

Latest commit

 

History

History
77 lines (53 loc) · 5.49 KB

File metadata and controls

77 lines (53 loc) · 5.49 KB

Веб приложение для системы мниторинга производства на базе платформы Feecc

Перед началом

Склонируйте репозиторий в нужную вам директорию.

Перейдите в директорию с проектом и в командной строке выполните sudo npm install для установки всех необходимых зависимостей. Это может занять некоторое время, которое зависит от скорости вашего интернета.

Тестовый запуск

Для запуска в режиме разработчика необходимо выполнить команду npm run dev-server

Полноценное разворачивание приложения

Для подготовки приложения к разворачиванию необходимо выполнить команду npm run build. После этого в корневой папке проекта появится папка target. Там будут все необходимые для рабты файлы. Корневым файлом html является index.html.

Docker

Для удобства разворачивания есть Docker контейнер и подготовленный docker-compose.

Использование docker-compose

В корневой директории проекта надо выполнить последовательно две команды: docker-compose build и docker-compose up. После этого контейнер соберётся и будет запущен.

О структуре

Проект на писан с использованием Redux и immutableJS. Вся собрка производится при помощи Webpack. При работе с Redux store важно помнить про ImmutableJS и не пытаться сделать так unitID: store.stages.unit.unit_internal_id. А делать так unitID: store.stages.getIn(['unit', 'unit_internal_id']}. Если не понимаешь как работает ImmutableJS, то stagesReducer лучше не трогать.

Конфиги

Все имеющиеся файлы конфигурации находятся в файле .env. Файл этапов производства находится в папке /configs и называется pages.csv.

Redux

Все данные redux store хранятся в src/reducers. Основной файл компоновки и импорта store - src/reducers/main.js. В файле src/reducers.common.js хранятся типы запросов к store (см. types в файле common.js), fetchWrapper и axiosWrapper. Эти две функции выполняют все запросы к бэку и работают корректно. Туда лезть вообще не надо. Функция reportError существует для удобства разработки и отлова ошибок с redux store.

Все записи в store производятся в src/reducers/stagesReducer.js.

Все запросы к бэку и store обрабатываются в src/reducers/stagesActions.js

Перевод

Для перевода используется модуль i18next и самописный загрузчик для переводов из .csv. Переводы хранятся в /public/translation.csv. Первую строку этого файла, нельзя изменять без изменений в i18next.js!

Базовые стили

Цветовая палитра лежит в файле src/index.scss.

Компоненты

Всё заполнение подгружается в App.js в зависимости от состояния store и pathname. Pathname будет динамически меняться в процессе работы, но это не даёт возможности свободно перемещаться по этапам, так как восстановление сессии вернёт пользователя на текущий этап производства, если оно идёт.

Большая часть логики лежит в Composition.js. Трогать с осторожность и с полным пониманием как оно работает.

Login.js

Компонента с заглушкой и опросом сервера на наличие авторизации пользователя.

Header.js

Компонента для хранения части логики работы перемещения по страницам и шапки страницы.

Menu.js

Компонента с минимумом логики и двумя кнопками для начала сборки и завершения сессии.

Composition.js

Компонента с самым большим количеством логики. Переход по этапам сборки проихводится именно тут.

Notifications.js

Компонента для отображения всплывающих уведомлений.

Stopwatch.js

Компонента для отображения секундомеров для каждого этапа производства.