Skip to content

fix(mgr): сортировка секций на странице товара по sort_order - #620

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-611-product-section-sort-order
Open

fix(mgr): сортировка секций на странице товара по sort_order#620
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-611-product-section-sort-order

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

На странице товара секции полей игнорировали порядок из Утилиты → Поля товара и шли по возрастанию ID секции.

getPageFields отдаёт sections объектом с числовыми ключами. Группировка в plain object + v-for в JS перечисляет integer-like keys по id, а не по sort_order.

Исправление: groupProductDataSections собирает секции в массив и сортирует по sort_order (tie-break по id). ProductDataFields рендерит этот массив.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #611

Как это было протестировано?

  • Vitest: vueManager/src/utils/groupProductDataSections.test.js (4/4)
  • ESLint по изменённым Vue/JS файлам
  • Live на project.test, товар id=2021: до фикса … → Дополнительно → Валюта (id-order); после — … → Валюта (sort 25) → Дополнительно (sort 40)

Локальный CI-гейт (без полной установки MODX/MySQL), PHP lint + vueManager jobs из .github/workflows/ci.yml:

cd vueManager
npm test -- --run src/utils/groupProductDataSections.test.js
npx eslint src/utils/groupProductDataSections.js src/utils/groupProductDataSections.test.js src/components/ProductDataFields.vue
  • Ручное тестирование
  • Автоматические тесты (npm test Vitest по util)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: branch fix/issue-611-product-section-sort-order
  • MODX: 3.2.0-pl (project.test)
  • PHP: 8.x (окружение project.test)

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en) — не требуются
  • PHPStan проходит без новых ошибок — PHP не менялся
  • ESLint проходит без ошибок по затронутым путям
  • Обновлён CHANGELOG.md — не трогали (по правилу репо: при релизе)

Дополнительные заметки

Routing issue-to-pr: plan=cursor-grok-4.6-high-fast, make=composer-2.5-fast, review=gpt-5.6-sol-medium + thermo=cursor-grok-4.6-high-fast. Reviews: APPROVE.

Group ProductDataFields sections into a sort_order-ordered array so
Utilities ranking is not lost to JS id-keyed object enumeration (#611).
@Ibochkarev
Ibochkarev requested a review from biz87 August 20, 2026 08:20
@Ibochkarev Ibochkarev added the bug Something isn't working label Aug 20, 2026
@AgelxNash AgelxNash mentioned this pull request Sep 6, 2026
16 tasks
AgelxNash pushed a commit to AgelxNash/MiniShop3 that referenced this pull request Sep 6, 2026
… MODX

Conflict resolution: keep array-based fieldsBySections (merged modx-pro#620/modx-pro#611),
port fieldHtmlId labels + isCheckboxXtype/normalizeCheckboxValue helpers on top.
AgelxNash pushed a commit to AgelxNash/MiniShop3 that referenced this pull request Sep 6, 2026
Conflict resolution: PR 640 supersedes merged modx-pro#621 rework (same author, same
intent) — took PR side for 36 files; manually preserved modx-pro#631 useConfirm grids,
modx-pro#623 datefield dialog styles, modx-pro#643 gallery bits, modx-pro#605 order entry; ProductData
sections rebuilt on groupProductDataSections (keeps modx-pro#611/modx-pro#620 sort_order) under
PR 640 Panel layout.
@AgelxNash

Copy link
Copy Markdown

Этот PR включён в тестовую интеграционную сборку всех открытых PR MiniShop3: AgelxNash/MiniShop3, ветка integration/open-prs-20260906 (28/28 открытых).

Сборка нужна, чтобы проверить совместимость взаимозависимых серий PR до их мержа — при последовательном слиянии они конфликтуют друг с другом. Это не ревью и не конкурирующий PR: авторство сохранено (1 PR = 1 коммит с исходным автором), ветка пересобирается по мере обновления PR.

Как вошёл в сборку: Слился чисто. (Его groupProductDataSections дополнительно сохранён при более позднем #640 — см. там.)

@AgelxNash

Copy link
Copy Markdown

Желаю скорейшего ревью и мержа! Красивый PR 👏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Не работает сортировка секций

2 participants