feat(dict): records filter — search + scope chips client-side
На странице словаря над таблицей появилась filter bar: - SearchInput (поиск по businessKey + JSON.stringify(data) — покрывает локализованные name, code, описания) - 3 scope chips PUBLIC/INTERNAL/RESTRICTED с цветными dot'ами, toggle включает/исключает scope. Empty Set = все scope видны (default state). - Когда фильтры активны — показываем 'Найдено X из Y' + кнопка Сбросить. - Если фильтр выдал 0 результатов — EmptyState с пояснением что под фильтр ничего не подошло. Фильтрация client-side через useMemo. Записей в одном словаре обычно ≤100, JSON.stringify + includes() мгновенно. AOI остаётся server-side (геометрия требует PostGIS) — фильтры комбинируются. i18n: RU + EN ключи.
This commit is contained in:
@@ -235,6 +235,11 @@ i18n
|
||||
'error.failed': 'Не удалось загрузить данные',
|
||||
'auth.login': 'Войти',
|
||||
'auth.logout': 'Выйти',
|
||||
'dict.filter.searchPlaceholder': 'Поиск по записям…',
|
||||
'dict.filter.scopeLabel': 'Фильтр по scope',
|
||||
'dict.filter.matched': 'Найдено {{count}} из {{total}}',
|
||||
'dict.filter.clear': 'Сбросить',
|
||||
'dict.filter.noMatches': 'По фильтру записей не найдено',
|
||||
'aoi.button': 'AOI фильтр',
|
||||
'aoi.activeBbox': 'AOI: bbox {{value}}',
|
||||
'aoi.activePolygon': 'AOI: полигон ({{points}} точек)',
|
||||
@@ -470,6 +475,11 @@ i18n
|
||||
'error.failed': 'Failed to load data',
|
||||
'auth.login': 'Sign in',
|
||||
'auth.logout': 'Sign out',
|
||||
'dict.filter.searchPlaceholder': 'Search records…',
|
||||
'dict.filter.scopeLabel': 'Filter by scope',
|
||||
'dict.filter.matched': 'Matched {{count}} of {{total}}',
|
||||
'dict.filter.clear': 'Clear',
|
||||
'dict.filter.noMatches': 'No records match the filter',
|
||||
'aoi.button': 'AOI filter',
|
||||
'aoi.activeBbox': 'AOI: bbox {{value}}',
|
||||
'aoi.activePolygon': 'AOI: polygon ({{points}} points)',
|
||||
|
||||
Reference in New Issue
Block a user