Propiedades: fix badge display, filters, search, pagination #37

Closed
opened 2026-05-18 15:12:40 +00:00 by NW · 1 comment
Owner

Текущее состояние

Анализ скриншота страницы /admin#properties показывает несколько проблем:

  1. Текст бейджей обрезан - "ACT" вместо "Activo", "Agr" вместо "Agrícola". Бейджи на карточках обрезаются.
  2. Фильтры статичные - дропдауны типа, статуса и кнопка "Filtrar" не подключены к API.
  3. Поиск не работает - поле "Buscar propiedad..." не имеет обработчика.
  4. Пагинация статичная - показывает 1/2/3, но не связана с реальными данными.

Acceptance Criteria

  • Бейджи показывают полный текст (Activo, Inactivo, Vendido, Urbano, Agrícola...) без обрезания
  • Фильтр по типу вызывает API с параметром type
  • Фильтр по статусу вызывает API с параметром status
  • Поиск фильтрует по title/city/reference с debounce
  • Кнопка Filtrar применяет все выбранные фильтры
  • Пагинация показывает реальное количество страниц
  • Кнопки страниц навигации работают
  • Скриншот comparison показывает до/после
## Текущее состояние Анализ скриншота страницы /admin#properties показывает несколько проблем: 1. **Текст бейджей обрезан** - "ACT" вместо "Activo", "Agr" вместо "Agrícola". Бейджи на карточках обрезаются. 2. **Фильтры статичные** - дропдауны типа, статуса и кнопка "Filtrar" не подключены к API. 3. **Поиск не работает** - поле "Buscar propiedad..." не имеет обработчика. 4. **Пагинация статичная** - показывает 1/2/3, но не связана с реальными данными. ## Acceptance Criteria - [ ] Бейджи показывают полный текст (Activo, Inactivo, Vendido, Urbano, Agrícola...) без обрезания - [ ] Фильтр по типу вызывает API с параметром type - [ ] Фильтр по статусу вызывает API с параметром status - [ ] Поиск фильтрует по title/city/reference с debounce - [ ] Кнопка Filtrar применяет все выбранные фильтры - [ ] Пагинация показывает реальное количество страниц - [ ] Кнопки страниц навигации работают - [ ] Скриншот comparison показывает до/после
Author
Owner

Выполнено

Исправления:

  1. Бейджи — убран text-transform: uppercase, добавлен white-space: nowrap, flex-wrap, right: 56px для отступа от actions
  2. Actions — появляются по hover с fallback для touch устройств
  3. Фильтры — dropdown type/status подключены к API
  4. Поиск — debounce 400ms, фильтрует по title/city/reference
  5. Пагинация — реальное количество страниц, навигация next/prev
  6. XSS fixescapeHtml() перед вставкой в innerHTML
  7. Убран статичный HTML — карточки теперь рендерятся через JS с loader spinner

Файлы:

  • public/css/admin.css — стили badges, actions, pagination
  • public/js/admin.jsloadProperties(), renderPropertiesGrid(), renderPropertyPagination(), initPropertyFilters(), escapeHtml()
  • public/admin/properties.html — убран статичный HTML, добавлен loader
  • src/server/index.ts — добавлен search параметр, COUNT с фильтрами

Скриншоты:

Сохранены в tests/visual/admin/properties.png и properties-full.png

Code Review Score: 9/10 (после XSS fix)

Status: Ready to close

## ✅ Выполнено ### Исправления: 1. **Бейджи** — убран `text-transform: uppercase`, добавлен `white-space: nowrap`, `flex-wrap`, `right: 56px` для отступа от actions 2. **Actions** — появляются по hover с fallback для touch устройств 3. **Фильтры** — dropdown type/status подключены к API 4. **Поиск** — debounce 400ms, фильтрует по title/city/reference 5. **Пагинация** — реальное количество страниц, навигация next/prev 6. **XSS fix** — `escapeHtml()` перед вставкой в innerHTML 7. **Убран статичный HTML** — карточки теперь рендерятся через JS с loader spinner ### Файлы: - `public/css/admin.css` — стили badges, actions, pagination - `public/js/admin.js` — `loadProperties()`, `renderPropertiesGrid()`, `renderPropertyPagination()`, `initPropertyFilters()`, `escapeHtml()` - `public/admin/properties.html` — убран статичный HTML, добавлен loader - `src/server/index.ts` — добавлен `search` параметр, COUNT с фильтрами ### Скриншоты: Сохранены в `tests/visual/admin/properties.png` и `properties-full.png` ### Code Review Score: 9/10 (после XSS fix) **Status**: Ready to close
NW closed this issue 2026-05-18 15:51:11 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: UniqueSoft/TenerifeProp#37