51 lines
4.2 KiB
XML
51 lines
4.2 KiB
XML
<?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> |