Skip to content

Обновление css и реализация главной страницы - #26

Merged
vladcheck merged 12 commits into
mainfrom
gauzhaev/new_ui
Oct 13, 2026
Merged

vladcheck merged 12 commits into
mainfrom
gauzhaev/new_ui

Conversation

@vladcheck

@vladcheck vladcheck commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Что сделано

Этот PR реализует главную страницу приложения («Госхрон — Архив документов») и страницу создания/редактирования документа, а также приводит весь UI к единой дизайн-системе.

Главная страница — список документов (ResourceList)

  • ResourceListController реализован с нуля (раньше была заглушка Welcome!).
  • Таблица документов: название, описание, даты создания/обновления (формат дд.ММ.гггг ЧЧ:мм).
  • Поиск по названию, сортировка (сначала новые / сначала старые / по названию А–Я / Я–А).
  • Пагинация по 20 записей (Назад / Вперёд, счётчик «Показано N–M»).
  • Асинхронная загрузка через javafx.concurrent.Task, статусы «Загрузка…» и обработка ошибок.
  • Открытие деталей документа по двойному клику.
  • Шапка: название «Госхрон», чип пользователя (имя + роль), кнопка «Выйти».
  • RBAC: кнопка «+ Создать документ» видна только админу и модератору.
  • FXML ResourceList.fxml полностью переписан под новый дизайн.

Создание и редактирование документа (ResourceForm)

  • Новый ResourceFormController + новый ResourceForm.fxml.
  • Два режима: «Новый документ» (create) и «Редактирование документа» (update с предзагрузкой через getById).
  • Валидация: название обязательно, минимум 3 и максимум 255 символов, фокус на поле при ошибке.
  • Кнопки «Сохранить» / «Отмена», возврат к списку после сохранения.
  • Пустое описание сохраняется как null.

Детали документа (ResourceDetails)

  • Колонка размера файлов: человекочитаемый формат (B / KB / MB / GB), выравнивание вправо.
  • Плейсхолдер «У этого документа нет файлов», CONSTRAINED_RESIZE_POLICY для таблицы.
  • Новая кнопка «Редактировать» (видна только админу/модератору), переход в ResourceForm с resourceId.
  • Кнопка «Скачать» переведена на стиль btn-ghost.

Сервисный слой

  • Новый overload ResourceService.search(filter, offset, count, sortBy, sortDir).
  • Реализация в ResourceServiceImpl (прокидывает sortBy/sortDir в ApiClient.findResourcesByFilters).
  • Реализация в MockResourceService: in-memory фильтрация + сортировка (по дате / по названию, asc/desc) + пагинация.
  • Начальная загрузка списка — напрямую в ResourceListController.initialize() (защищённый reloadFromStart()); мёртвый хук onLoad() удалён.

Стили и FXML

  • styles.css переписан (42 → ~410 строк): единая тема «Госхрон» (indigo-акцент #4f46e5, светлый градиентный фон).
  • Новые классы: card, card-lg, card-title/subtitle, text-input, text-area, btn-primary, btn-ghost, modern-table / resource-table, pagination, user-chip, meta-block, combo, alert-danger, кастомные скроллбары.
  • LoginForm.fxml и ResourceDetails.fxml переведены на новые классы (auth-bg, card, text-input и т.д.).
  • Мелочь: в Program.java временно захардкожен MOCK_DATA = true, точка входа — Main.main → Program, убран лишний комментарий в LoginFormController.

Исправления и тесты поверх ревью

  • setResourceId в ResourceDetailsController/ResourceFormController реактивный: поздний id (после загрузки FXML, как ставит Navigator) сам подгружает данные — раньше форма всегда открывалась в режиме создания, а детали оставались пустыми.
  • Список грузит первую страницу сразу при открытии (раньше — только после действий пользователя).
  • Удалена неиспользуемая зависимость bootstrapfx.
  • Тесты: unit ResourceListControllerTest (12), ResourceFormControllerTest (11); интеграционные ResourceListIntegrationTest (5), ResourceFormIntegrationTest (7). mvn verify: 70 тестов, spotless + checkstyle чистые.

Как проверить

  1. Запустить в mock-режиме, залогиниться.
  2. Главная: проверить поиск, все 4 сортировки, пагинацию, дабл-клик → детали.
  3. Создать документ (админ/модератор), проверить валидацию названия.
  4. В деталях проверить формат размеров, кнопку «Редактировать» и возврат в список.
  5. mvn spotless:check, mvn checkstyle:check, mvn test.

@vladcheck
vladcheck requested review from Deatheh and miyagi18 October 11, 2026 12:01
@vladcheck vladcheck added enhancement New feature or request dependencies Pull requests that update a dependency file java Pull requests that update java code labels Oct 11, 2026
@vladcheck
vladcheck marked this pull request as ready for review October 13, 2026 14:10
@vladcheck
vladcheck merged commit 406ccde into main Oct 13, 2026
8 checks passed
@vladcheck
vladcheck deleted the gauzhaev/new_ui branch October 13, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file enhancement New feature or request java Pull requests that update java code

Projects

None yet

2 participants