Skip to content

refactor(vueManager): parallelize option field values load in OrderView#447

Open
Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-359-promise-all-field-values
Open

refactor(vueManager): parallelize option field values load in OrderView#447
Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-359-promise-all-field-values

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

В initOptionsFromProduct загрузка значений product option fields выполнялась последовательно: N полей давали N последовательных запросов к /api/mgr/references/product-field-values. Теперь строки сначала собираются в fieldRowsToLoad, затем значения подгружаются параллельно через Promise.all.

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

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

Связанные Issues

Closes #359

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

Локальный гейт:

cd vueManager && npx eslint src/components/OrderView.vue
# exit 0
  • Ручное тестирование — не выполнялось (требуется MODX + заказ с product option fields)
  • Автоматические тесты (npm run lint:ci / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: branch feat/issue-359-promise-all-field-values
  • MODX: n/a
  • PHP: n/a

Скриншоты (если применимо)

До После
n/a n/a

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en) — не требуется
  • PHPStan проходит без новых ошибок (локально; в CI пока нет) — PHP не затронут
  • ESLint проходит без ошибок (npx eslint src/components/OrderView.vue)
  • Обновлён CHANGELOG.md (для значимых изменений) — по политике проекта, только при релизе

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

  • loadFieldValuesForRow по-прежнему обрабатывает ошибки внутри; один неудачный запрос не прерывает остальные.
  • optionsTableData присваивается после завершения всех загрузок — порядок строк в таблице сохранён.
  • Одиночные вызовы loadFieldValuesForRow в onOptionTypeChange / onFieldKeyChange не менялись (не batch-сценарий).

Replace sequential await in initOptionsFromProduct loop with Promise.all
to reduce UI latency when editing order products with many option fields.

Closes #359
@Ibochkarev Ibochkarev changed the title OrderView: параллельная загрузка значений опций (Promise.all) refactor(vueManager): parallelize option field values load in OrderView Jul 24, 2026
@Ibochkarev Ibochkarev added enhancement New feature or request javascript Pull requests that update javascript code priority: low Низкий приоритет, когда будет время tech-debt Maintainability / refactor / architecture debt labels Jul 24, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 July 24, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request javascript Pull requests that update javascript code priority: low Низкий приоритет, когда будет время tech-debt Maintainability / refactor / architecture debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] OrderView: Promise.all для loadFieldValuesForRow (убрать await в цикле)

1 participant