Skip to content

Latest commit

 

History

History
121 lines (100 loc) · 9.31 KB

changelog.md

File metadata and controls

121 lines (100 loc) · 9.31 KB
                                        Home Task 1

Создал проект shop. Изменил скрипт запуска в package.json

Запуск backend: npm run backend Запуск frontend: npm start

  1. Модуль товаров Страницы: Список товаров (localhost:420/products) Компоненты: ProductsListComponent - Список товаров ProductComponent - Краткое отображение позиции списка

     Страница детализации (localhost:4200/product/:id)
         Компоненты:
             ProductDetailsComponent - Страница с детальным описанием товара
    

    Сервисы: ProductsService - Источник данных для продуктов. Хранилище данных json-server db\db.json

  2. Модуль корзины Страницы: Корзина (localhost:4200/charts) Компоненты: ShoppingCartComponent - Список товаров выбранных для заказа

  3. Корневой модуль Страница не найдена Компонент PageNotFoundComponent Сервисы: ShoppingCartService - сквозной сервис для хранения пользовательского выбора


                                        Home Task 2

Перевел приложение на Pull-Based архитектуру. Модифицировал шаблоны. Вынес все зависимости в корневые компоненты. Дочерние компоненты перевел на OnPush стратегию, общение выполняется через Input Output. Добавил блокировку на событие добавление товара в корзину если товар недоступен. Создал дополнительный модуль shared. В модуль добавил общий компонент ContinueButtonComponent. В соответствии с заданием разместил в модуле новую дерективу SelectedItemDirective стилизации фона элементов корзины. Модифицировал сервис корзины. Перевел с Promise на Observable. Добавил доп. методы позволяющие получить общую стоимость и общее количество товаров, изменить количество выбранных товаров. Внес правки в компонент элемента корзины, теперь можно прям в нем изменять количество выбранных товаров. Завязал инициализацию заголовка в компоненте AppComponent на ViewChild через шаблонную переменную. Добавил интеграцию с ngx-translate. Перенес тексты в ресурсный файл. В модуле корзины перевел компонент заполнения адреса на реактивные формы.

                                        Home Task 3

Добавил директиву ClickDirective изменящую стили HostListener через Renderer2 (меняет цвет фона и размер шрифта) Отрефакторил сервис корзины. Добавил сервис генератор последовательности символов GeneratorService. Завел сервис константу с метаданными приложения ConstantsService. Добавил сервис LocalStorageService для работы с localStorage. Перевел сервис корзины на использование LocalStorageService. Добавил фиктивный сервис ConfigOptionsService для работы с конфигом. Добавил тестовую страницу (localhost:4200/about) для демонстрации новых сущностей, внедрение сущностей выполнил в соответствии с требованиями задания.

                                        Home Task 4

Добавил в компоненты корзины встроенные пайпы. В компонент CartListFooterComponent пайп форматирования цены В компонент CartListItemComponent пайпы форматирования цены и верхний регистр на заголовок товара.

Добавил кастомный пайп OrderByPipe выполняющий сортировку элементов корзины. Аргументы OrderByPipe: field: поле по которому выполняется фильтрация isAsc: признак сортировки по возрастанию Подключил пайп сортировки в модуле корзины. Добавил компонент SortByPanelComponent - панель модификации аргументов сортировки.

                                        Home Task 5

Добавил страницу логина (localhost:4200/login) Добавил сервисы: OrdersService - Источник данных для заказов. Хранилище данных json-server db\db.json AuthService - сервис аунтифекации пользователей.

Добавил модуль админки. Закрыл админку через AuthGuard. Страницы: Список заказов (localhost:4200/admin) Детализация заказа (localhost:4200/admin/order/edit/:id') Список книг (localhost:4200/admin/products) Добавить новую книгу (localhost:4200/admin/products/add) Редактирование книги (localhost:4200/admin/products/edit/:id)


                                        Home Task 6

Добавил TimingInterceptor для логирования длительности запросов к бекэнду. Добавил сервис AppSettings, сервис выполняет доп. попытки запроса данных в случае неудачной инициализации.


                                        Home Task 7

Перевел приложение на ngrx. Добавил состояния: cart - модуль корзины (редюсеры базируются на @ngrx/entity) products - модуль для работы с продуктами (редюсеры базируются на @ngrx/entity) orders - модуль для работы с заказами (редюсеры базируются на @ngrx/entity) router - модуль для взаимодействия с роутером


                                        Home Task 8

Добавил компонент ProcessOrderComponent в модуль CartModule. Определил поля ввода: Имя (обязательное поле) Фамилия Email (обязательное поле) Телефоны (Динамический список) Флаг самовывоз Город доставки / Адрес доставки. Поля обязательные в случае если выставлен флаг самовывоз, иначе поля скрываются. Добавил кастомные валидаторы: customRequiredValidatorFn - проверка обязательности заполнения контрола emailValidator - валидация email. Для данного валидатора реализовал директиву EmailValidatorDirective. Добавил компонент ValidatorMessageComponent для отображения сообщения ошибки.


                                        Home Task 9

Добавил изолированный юнит тест для сервиса [AuthService]. Добавил изолированный юнит тест для пайпа [ToStarsPipe]. Добавил интеграционные юнит тесты для компонент: ProductListComponent, ProductComponent. Добавил юнит тест для [AppComponent]. Изменил package.json под создание отчета покрытия кода тестами. Создал отчет.