Skip to content

pushkingav/parts

Repository files navigation

В браузере открыть "http://localhost:4200/parts"

Реализовать простенькое приложение Parts-list, для отображения списка деталей для сборки компьютеров на складе. Записи хранить в базе данных. Схему таблички для хранения нужно придумать самому (достаточно одной таблицы). Нужно показывать список уже имеющихся деталей (с пейджингом по 10 штук на странице). В списке должно быть наименование детали (String), обязательна ли она для сборки (boolean) и их количество на складе (int). На склад можно добавлять новые детали, редактировать существующие детали (любое из полей), удалять. • Должна быть фильтрация по принципу: все детали, детали, которые необходимы для сборки, опциональные детали. • Должен быть поиск по наименованию детали. Бизнес-требование: ниже списка деталей всегда выводить поле, в котором выводится, сколько компьютеров можно собрать из деталей в наличии. Для сборки одного компьютера должны быть в наличии все детали, которые отмечены как необходимые.

Для запуска:

  1. Пре-реквизиты: Maven, npm, Angular-CLI, mysql. Все про пре-реквизиты более-менее описано тут: https://www.devglan.com/angular/angular-data-table-example
  2. Импортировать проект в idea.
  3. Создать базу скриптом ./create_parts_database.sql. Использовал mysql. Пользователь root, пароль root, база test.
  4. Выполнить ./parts/mvn clean compile
  5. В idea создать npm-конфигурации запуска: "command: run, scripts: build" и "command: run, scripts: start". Приложил гифку с конфигурациями - idea-configs.gif
  6. Создать конфигурацию запуска Spring Boot, class = parts.Application
  7. Запустить Application и Angular CLI-Server - он же 'ng serve' из терминала, он же "command: run, scripts: start". Еще подсказки в README_angular.md
  8. В браузере открыть "http://localhost:4200/parts"
  9. Должно работать.

Release Notes. Вся фильтрация производится на client-side методами Angular-компонентов. В базе только CRUD. Логика бизнес-требования реализована селектом из базы.

Known Issues. Просто уже нет времени фиксить.

  1. Данный проект начинался с предыдущей версии задания на стажировку, там я выбрал Notes. Поэтому тут много чего от Notes осталось. Переименовать до конца не получилось.
  2. В ангуляре получился пустой app-root компонент, из-за этого в браузере надо открывать "http://localhost:4200/parts".
  3. Нужно локализировать пагинатор на русском. В ангулярном компоненте быстро сделать это не получилось - надо разбираться.
  4. Отсутствует валидация форм при добавлении новой детали. В числовые инпуты можно вводить текст - просто не создастся запчасть в базе. Уникальность имен запчастей только констрейнтом в базе. Валидацию форм при редактировании детали добавил.
  5. При редактировании детали изменение "обязательности" запчасти в диалоге сразу отражается в таблице, не дожидаясь нажатия кнопки "Сохранить".
  6. Постоянная загрузка всех запчастей из базы будет выполняться долго на больших объемах данных. Для оптимизации нужно будет переписать приложение с использованием ленивой загрузки, бесконечного скроллинга вместо пагинации и компонента ag-Grid.
  7. Думаю, багов там еще много. Буду благодарен за любой фидбэк на av.pushking@gmail.com.

About

JavaRush internship test project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published