feat(preferences): configurable photo info attributes stored in user profile
- backend: users.preferences jsonb (migration 000004), Me returns preferences, PATCH /auth/me/preferences with validation (visible list + labels) - frontend: gear in info section opens PhotoInfoSettingsDialog; base attribute set shown by default, remaining under ellipsis; per-attribute visibility and custom labels persisted to the profile; reset clears settings from the profile - frontend: dialog has select-all/deselect-all icon buttons (no 'show all'); EXIF constants extracted to lib/exif.ts - fix: render modal overlays via portal to document.body so they center in the viewport despite transformed panel/rail ancestors - openspec: sync lightroom-workspace-ui artifacts (spec/design/proposal/tasks 9.8)
This commit is contained in:
@@ -219,21 +219,27 @@ SHALL отображаться вне каркаса, но в общей тем
|
||||
|
||||
### Requirement: Настройки списка атрибутов информации
|
||||
Раздел «Информация» SHALL предоставлять доступ к настройкам (иконка-шестерёнка), открывающим
|
||||
модальное окно, в котором пользователь SHALL выбирать отображаемые EXIF-атрибуты и задавать
|
||||
их подписи. Настройки SHALL применяться ко всем фото и SHALL сохраняться в профиле
|
||||
пользователя. При отсутствии настроек SHALL отображаться все доступные атрибуты.
|
||||
модальное окно со списком EXIF-атрибутов, где пользователь SHALL отмечать отображаемые
|
||||
атрибуты и задавать их подписи. В окне SHALL быть доступны действия «отметить все» и
|
||||
«снять все». Настройки SHALL применяться ко всем фото и SHALL сохраняться в профиле
|
||||
пользователя. При отсутствии сохранённых настроек SHALL отображаться базовый набор атрибутов
|
||||
(камера, объектив, выдержка, диафрагма, ISO, фокусное расстояние).
|
||||
|
||||
#### Scenario: Открытие настроек
|
||||
- **WHEN** пользователь нажимает иконку настроек в разделе «Информация»
|
||||
- **THEN** открывается модальное окно со списком EXIF-атрибутов: переключатели видимости и поля подписей
|
||||
- **THEN** открывается модальное окно со списком EXIF-атрибутов: галочки видимости и поля подписей, а также действия «отметить все»/«снять все»
|
||||
|
||||
#### Scenario: Значения по умолчанию
|
||||
- **WHEN** у пользователя нет сохранённых настроек
|
||||
- **THEN** в разделе «Информация» показан базовый набор атрибутов, а остальные доступны по элементу «…»
|
||||
|
||||
#### Scenario: Сохранение настроек
|
||||
- **WHEN** пользователь скрывает атрибут, задаёт подпись и сохраняет
|
||||
- **WHEN** пользователь отмечает атрибуты, задаёт подпись и сохраняет
|
||||
- **THEN** раздел «Информация» учитывает изменения, а настройки сохраняются в профиле
|
||||
|
||||
#### Scenario: Сброс настроек
|
||||
- **WHEN** пользователь сбрасывает настройки к значениям по умолчанию
|
||||
- **THEN** показываются все атрибуты с исходными подписями
|
||||
- **WHEN** пользователь сбрасывает настройки
|
||||
- **THEN** сохранённые настройки удаляются из профиля, и отображается базовый набор с исходными подписями
|
||||
|
||||
### Requirement: Свёртка скрытых атрибутов
|
||||
Если настройками часть атрибутов скрыта, в конце списка атрибутов SHALL отображаться элемент
|
||||
|
||||
Reference in New Issue
Block a user