Ограничения:
- Обязательно использование React, Typescript;
- Желательно использовать UI-библиотеку готовых компонентов (прекрасно если Ant Design, но допустимо также Material UI и любые другие);
- Желательно использовать сервис для подготовки mock API (см. примечания), например Mockoon;
- В остальном разрешено использовать любые библиотеки которые посчитаешь уместными (Redux, Mobx, Axios и др.)
Задача:
-
Подготовить эндпоинты /documents1 и /documents2 С обоих возвращаются данные в формате :
{ id: string, name: string, quantity: number, deliveryDate: string, price: number, currency: ‘USD’ | ‘RUB’, } []
-
Создать таблицу в которой будут данные из обоих запросов, по умолчанию отсортированные по deliveryDate. Все поля кроме id, являются столбцами этой таблицы.
-
Добавить возможность сортировки по всем столбцам этой таблицы.
-
Для каждой строки таблицы нужно добавить галочку выбора товара, а также в заголовке таблицы галочку выбора всех товаров.
-
В последней строке таблицы вывести результирующий показатель «Общее количество» (сумма всех quantity).
-
Добавить кнопку «Аннулировать», при нажатии на которую должно появляться модальное окно с текстом «Вы уверены что хотите аннулировать товар(ы): [названия выбранных товаров через запятую]», и кнопки «Применить», «Отклонить».
Если пользователь нажимает кнопку «Применить» отправить запрос на эндпоинт /cancel с перечислением id товаров которые мы хотим аннулировать. Если пользователь нажимает кнопку «Отклонить» закрыть модальное окно.
Примечания:
- Допустимо захардкодить данные, получаемые с сервера по эндпоинтам /documents1 и /documents2 и отправляемые на сервер по эндпоинту /cancel, но будет плюсом имитировать клиент-серверное взаимодействие через сервис mock API или backend-сервис.
- Требований к дизайну нет, все на усмотрение разработчика.
На данный момент приложение выложено на GitHub Pages. Соответственно, есть два варианта его просмотреть:
1.Перейти по ссылке: ссылка на приложение;
2.Либо установить приложение локально, но стоит учитывать, что сервер запускать больше нет необходимости (п.п 3-4) поскольку данные запрашиваются с сервиса моковых данных mockapi.io.
- Скопировать репозиторий:
git clone git@github.com:BentonFraizer/test-task-gna.git
- Установить зависимости:
npm install
- Установить mockoon-cli:
npm install -g @mockoon/cli
Предупреждение
Для выполнения шага №4 не рекомендуется использовать Windows Powershell. Желательно воспользоваться Git Bash.
- Запустить сервер с моковыми данными:
mockoon-cli start --data ./src/mock/data.json --port 3001
При необходимости, остановить сервер можно с помощью команды:
mockoon-cli stop 0
- Запустить проект в работу:
npm start
- В том случае если браузер не открылся, адресной строке необходимо ввести следующий путь: http://localhost:3000/