Files
homebox_lens/tasks/work_order_item_edit_screen.xml

51 lines
4.2 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<WORK_ORDER>
<META>
<ID>WO-ITEMEDIT-FIX</ID>
<TITLE>[ARCHITECT -> DEV] Исправление выбора локации и меток на экране ItemEdit</TITLE>
<DESCRIPTION>В текущей реализации на экране редактирования/создания элемента (ItemEditScreen) поля "Location" и "Labels" неактивны. Необходимо реализовать функционал выбора значения для этих полей из списка доступных.</DESCRIPTION>
<CREATED_BY>architect-agent</CREATED_BY>
<ASSIGNED_TO>developer-agent</ASSIGNED_TO>
<STATUS>pending</STATUS>
</META>
<TASK_BREAKDOWN>
<STEP n="1" file="app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditViewModel.kt">
<ACTION>Загрузка списков локаций и меток.</ACTION>
<DETAILS>
1. Внедрите `GetAllLocationsUseCase` и `GetAllLabelsUseCase` в `ItemEditViewModel`.
2. Обновите `ItemEditUiState`, добавив два новых поля: `val allLocations: List<Location> = emptyList()` и `val allLabels: List<Label> = emptyList()`.
3. В функции `loadItem`, после загрузки основной информации о товаре, вызовите `getAllLocationsUseCase` и `getAllLabelsUseCase` и обновите `uiState` полученными списками.
4. Добавьте публичные методы `updateLocation(location: Location)` и `updateLabels(labels: List<Label>)` для обновления `item` в `uiState`.
</DETAILS>
</STEP>
<STEP n="2" file="app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt">
<ACTION>Реализация UI для выбора локации.</ACTION>
<DETAILS>
1. Замените `OutlinedTextField` для локации на `ExposedDropdownMenuBox`.
2. В качестве `dropdownMenu` используйте `DropdownMenuItem` для каждого элемента из `uiState.allLocations`.
3. При выборе элемента из списка вызывайте `viewModel.updateLocation(selectedLocation)`.
4. В `ExposedDropdownMenuBox` должно отображаться `item.location?.name`.
</DETAILS>
</STEP>
<STEP n="3" file="app/src/main/java/com/homebox/lens/ui/screen/itemedit/ItemEditScreen.kt">
<ACTION>Реализация UI для выбора меток (множественный выбор).</ACTION>
<DETAILS>
1. Поле для меток `Labels` должно оставаться `OutlinedTextField` (read-only), но `onClick` по нему должен открывать диалоговое окно (`AlertDialog`).
2. В `AlertDialog` отобразите список всех меток (`uiState.allLabels`) с `Checkbox`'ами.
3. Состояние `Checkbox`'ов должно соответствовать списку `item.labels`.
4. При нажатии на "OK" в диалоге, вызывайте `viewModel.updateLabels(selectedLabels)`.
</DETAILS>
</STEP>
</TASK_BREAKDOWN>
<ACCEPTANCE_CRITERIA>
<CRITERION>При нажатии на поле "Location" открывается выпадающий список со всеми локациями.</CRITERION>
<CRITERION>Выбранная локация отображается в поле и сохраняется вместе с элементом.</CRITERION>
<CRITERION>При нажатии на поле "Labels" открывается диалоговое окно со списком всех меток и чекбоксами.</CRITERION>
<CRITERION>Выбранные метки отображаются в поле и сохраняются вместе с элементом.</CRITERION>
</ACCEPTANCE_CRITERIA>
</WORK_ORDER>