Задача: разработать простое приложение для учёта личных финансов.
- Angular 18
- Less
- NX
- Taiga UI 3.92.0
- Создать проект при помощи NX;
- Весь проект должен содержаться на одной странице;
- Использовать standalone components;
- Хотя бы раз использовать двустороннее связывание данных (two-way data binding);
- Хотя бы раз применить
@if
и@for
, не использовать структурные директивы по типуngIf
; - Использовать только реактивные формы;
- Реализовать и внедрить хотя бы один пайп;
- Реализовать и внедрить хотя бы одну директиву;
- Резрешено и крайне рекомендовано создавать вспомогательные сервисы, фасады и пр.
Описание: создайте форму, которая позволяет вносить доходы и расходы.
- Реализовать при помощи: Block;
- Назначение: выбор типа транзакции - доход или расход.
- Валидация:
- Обязательно для заполнения;
- Реализовать при помощи: Select;
- Назначение: выбор категории транзакции;
- Валидация:
- Обязательно для заполнения;
- Доп. требования:
- Списки для категорий доходов и расходов должны быть разными;
- Наполнить списки любыми категориями (с учётом пункта выше);
- Реализовать при помощи: InputNumber;
- Назначение: внесение суммы транзакции;
- Валидация:
- Обязательно для заполнения;
- Вносимое значение не меньше 0;
- Вносимое значение не больше 10 000 000;
- Доп. требования:
- Вводить можно только цифры.
- Реализовать при помощи: InputDate;
- Назначение: внесение даты транзакции;
- Валидация:
- Обязательно для заполнения;
- Нельзя выбирать даты из будущего (завтра и так далее).
- Реализовать при помощи: Input или Textarea;
- Назначение: внесение необязательного комментария для транзакции;
- Валидация:
- Обязательно для заполнения если выбран чекбокс "Добавить коментарий";
- Длина не более 100 символов;
- Доп. требования:
- Реализовать директиву для добавления и очищения валидаторов для поля "Коментарий к транзакции". Если чекбокс "Добавить коментарий" включен - директива должна добавлять валидатор "Обязательно для заполнения" и "Длина не более 100 символов", иначе она должна очищать все валидаторы поля;
- Реализовать посредством клика по кнопке;
- Доп. требования:
- Клик по кнопке должен проверять валидацию полей формы;
- Кнопка всегда должна быть активна (не
disabled
); - Если форма невалидна, то под всеми полями формы должны выводиться ошибки с уникальным текстом (придумать самостоятельно). К примеру, если не пройдено требование валидатора
required
, то ошибка должна быть "Заполните это поле", а если не пройдено требование валидатораmin(0)
, то ошибка должна быть "Введите неотрицательное число"; - Если данные формы валидны - выведите алерт об успешном сохранении данных.
Описание: создайте компонент, который отображает все внесенные через форму транзакции.
- Транзакции должны сортироваться по дате;
- Каждая транзакция должна отображать категорию и сумму;
- При наведении курсора на транзакцию должен отображаться коментарий (если он есть);
- Для отображения суммы транзакции напишите кастомный пайп;
- Пайп должен подставлять знак "+" или "-" в зависимости от типа транзакции;
- Пайп должен разбивать сумму на разряды пробелом, отделять дробную часть запятой, добавлять символ валюты (₽), например
- 1 000 000,00 ₽
.
Описание: реализуйте визуальное отображение статистики доходов и расходов.
- С помощью RingChart создайте две диаграммы (для доходов, и расходов), обобщающие информацию по категориям;
- При наведении на сектор диаграммы должен отображаться лейбл с суммой и категорией (см. пункт With Labels в документации к RingChart).
- Реализовать сохранение транзакций в localStorage (5 баллов);
- Добавить анимации при добавлении транзакций (5 баллов);
- Добавить возможность редактирования транзакций (10 баллов).