Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mor-ald/test-task-sws
Тестовое задание в Seven Winds Studio
https://github.com/mor-ald/test-task-sws
Last synced: about 1 month ago
JSON representation
Тестовое задание в Seven Winds Studio
- Host: GitHub
- URL: https://github.com/mor-ald/test-task-sws
- Owner: Mor-ald
- Created: 2024-08-10T13:07:08.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2024-08-10T13:28:19.000Z (5 months ago)
- Last Synced: 2024-08-10T14:37:59.885Z (5 months ago)
- Language: TypeScript
- Homepage: https://test-task-sws.netlify.app/
- Size: 145 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Тестовое задание в Seven Winds Studio
Требуется создать сайт по макету в [Figma](https://www.figma.com/file/yyls8AT1soKQ3Qpfl2Y3Nz?type=design%27&node-id=0:1).
Внимательно прочитайте задание, и особенно раздел Резюме.
После завершения работ создайте репозиторий и отправьте ссылку вашему HR’у.Необходимый стек: TypeScript, React, SASS, а так же всё что вам понадобится (кроме jQuery и node-sass).
Опциональный стек: RTK Query, MUI + styled-components.## Методы API и с чем их есть
### Начало
Вам нужно создать себе общую сущность и получить её ID для дальнейшего взаимодействия с API, для этого нужен метод `/v1/outlay-rows/entity/create`.
Он вернёт вам ID, в методах API он указан как `eID`.💡 Внимание! Эта операция должна происходить единожды, и только на этапе написания, в дальнейшем установите этот ID как константу.
### Получение данных
`/v1/outlay-rows/entity/{eID}/row/list`
💡 Вы должны производить эту операцию только при входе на экран, при каких либо изменениях вам нужно актуализировать информацию локально, не запрашивая каждый раз все данные с сервера.
### Создание строки
`/v1/outlay-rows/entity/{eID}/row/create`
Для создания строки пользователь должен нажать на иконку существующий строки.
После этого вы должны отрисовать строку в том месте, где она должна быть, заполнить все требуемые поля нулями (кроме заголовка, его оставьте пустым), включить у строки режим редактирования (третий экран в макете) и ждать пока пользователь не нажмёт `Enter` в одном из полей ввода, только после этого отправляйте данные на сервер.
> ⚠️ Если в `parentId` будет передан неверный `id` - метод вернёт 404. Поэтому если у строки нет `parent` вам нужно передавать `null`.
> 💡 Обратите внимание - при изменении значений у потомков, значение родителя так же изменится, бекенд вам вернёт новое значение.
> 💡 Для создания строки нужны некоторые другие данные которые вы не отображаете, и пользователь не вводит. Заполните их нулями.
### Обновление строки
`/v1/outlay-rows/entity/{eID}/row/{rID}/update`
Что бы начать редактировать строку нужно дважды нажать на неё мышкой. Тогда она переходит в режим редактирования.
> 💡 Для обновления строки нужны некоторые другие данные которые вы не отображаете, и пользователь не вводит. Заполните их нулями.
### Удаление строки
`/v1/outlay-rows/entity/{eID}/row/{rID}/delete`
Для удаления строки пользователь должен навестись на иконку существующий строки, как на макете там должны появиться дополнительные иконки. При клике на иконку мусорки строка удаляется.
## Резюме
- В самом начале создайте себе общую сущность, и используйте её ID.
- При отсутствии каких либо данных отображайте строку в режиме редактирования.
- Блокируйте создание потомков у строки, если она находится в режиме редактирования или ещё не была отправлена на сервер.
- Запрашивайте все данные с сервера только при первом входе на экран, актуализируйте данные локально.
- При каких либо взаимодействиях (создание, обновление и удаление строки) сервер будет возвращать вам массив изменённых строк, вы должны актуализировать локальные данные с помощью этих.
- Вы должны сверстать всё что есть на макете, но всё что не является таблицей - не должно иметь какого либо функционала.## FAQ
**Можно ли использовать %moduleName%?**
Можете использовать всё что только захотите.**Нужен ли адаптив?**
По желанию.**Какой уровень вложенности может быть?**
Без ограничений.## Результат на локальном сервере
![image](https://github.com/user-attachments/assets/fd7c79eb-9511-45ad-af07-3fab035d229b)