operations

Команды

Установить зависимости npm i
Запустить локально npm run serve
Собрать npm run build
Запустить анализ кода npm run lint
Отформатировать JSON npm run format-json
Отформатировать SCSS npm run format-scss
Протестировать npm t

Допущения

Данный проект, по своей сути, является синтетическим. Он призван продемонстрировать техническую сторону решения задачи, но не является попыткой воспроизвести реальное приложение, которым смогли бы пользоваться люди. В связи с этим, в проекте есть допущения — моменты, которые следовало бы переосмыслить в реальном приложении, но в демонстрации я предпочёл оставить как есть. Список основных:

  • Операция считается завершённой, если она запланирована на дату до текущего дня.
  • Даже незавершённой операции можно поставить оценку.
  • Устройство пользователя всегда desktop.
  • Поддержка браузеров ограничена современными.
  • Язык приложения только русский.
  • При работе с сервисом не может возникнуть ошибок.

Внесённые изменения

Сервис операций переработан в угоду современным лучшим практикам разработки программного обеспечения на языке TypeScript. Макет проекта также претерпел изменения. Например, поле "Культура" было удалено из таблицы (перенесено в заголовок), так как "Пшеница озимая" является единственной возможной культурой на поле 112.

Описание

В проекте используются TypeScript, Vue и SCSS. При этом скриптовая часть vue-компонентов написана на JavaScript. Настроены базовые инструменты разработки, такие как ESLint, Prettier и Jest. Покрытие тестами чисто символическое (просто показать, как Jest настроен и работает).

Таблица

Время ответа сервиса увеличено, чтобы можно было рассмотреть прелоадер на старте приложения. По ответу сервиса заполняется таблица.

Данные располагаются на двух вкладках: "Запланированные операции" и "Выполненные операции". Изначально список запланированных операций пуст.

Заголовок каждого столбца является кликабельным и позволяет менять правило сортировки. При клике на заголовок столбца активируется сортировка по значению этого столбца по убыванию. При повторном клике — по возрастанию, при следующем — сортировка отменяется.

Текущие выбранные вкладка и правило сортировки отображаются на URL. Если условный пользователь приложения выбрал вкладку, задал правило сортировки, скопировал адрес страницы и отправил другому пользователю, тот при открытии получит уже настроенную картину.

Модальное окно

Клик по строке в таблице, а также клик по кнопке "Добавить операцию" вызывает модальное окно для редактирования/добавления операции. Заголовок окна зависит от того, редактируем ли мы существующую операцию или добавляем новую.

Кнопка "Сохранить операцию" заблокирована, если не задано одно из трёх обязательных значений для операции.

Оценка является необязательным значением, так что повторный клик на выбранную оценку приведёт к её очищению.

После клика на кнопку "Сохранить операцию", приложение переходит в режим ожидания ответа от сервиса. Пока не придёт ответ, интерактивность заблокирована.