feat(dict): таблица справочника — hide tail columns по умолчанию (без H-scroll)

This commit is contained in:
Александр Зимин
2026-06-02 12:14:00 +00:00
parent 071315b058
commit b6190713e4
2 changed files with 44 additions and 10 deletions
@@ -372,9 +372,28 @@ function DictionaryDetail() {
setPage(0)
}, [search, scopeFilter, aoi])
// First-visit defaults: с info-dense schemas (10+ scalar полей) полная
// таблица не помещается в viewport → H-scroll. Hide хвост по умолчанию
// — показываем businessKey, name, scope, validFrom + первые 2 extra
// (обычно самые важные ключи). Юзер открывает menu Колонки и сам
// добавляет нужные — выбор persisted в localStorage и при следующем
// визите fallback уже не применяется.
const defaultHiddenExtras = useMemo<string[]>(() => {
const props = detailQuery.data?.schemaJson?.properties ?? {}
const eligible: string[] = []
for (const [key, prop] of Object.entries(props)) {
if (key === 'name' || key === 'code' || key === 'businessKey') continue
if (Boolean(prop['x-localized'])) continue
const t = prop.type
if (t === 'array' || t === 'object') continue
eligible.push(key)
}
return eligible.slice(2) // первые 2 видны, остальные default-hidden
}, [detailQuery.data?.schemaJson])
// Table state — sort (cycle none→asc→desc) + hidden columns persisted в
// localStorage per dict через useDictTableState.
const dictTable = useDictTableState(name)
const dictTable = useDictTableState(name, defaultHiddenExtras)
// Getter для applySort — извлекает значение по col key из record.
// Изолирован чтобы sort работал унифицировано для всех типов колонок.