Skip to content

Модели данных и контракты

Core работает с тремя ключевыми сущностями:

  • Row model — источник строк и их состояния.
  • Column model — описание колонок, сортировок, фильтров.
  • Row node — нормализованная форма строки, которую видит GridApi.

1) Row node — единый формат

ts
import type { DataGridRowNode } from "@affino/datagrid-core"

const node: DataGridRowNode<{ rowId: string }> = {
  kind: "leaf",
  rowId: "1",
  data: { rowId: "1" },
}

kind определяет тип узла (leaf/group/summary), rowId — стабильный идентификатор.

2) Column model

ts
import { createDataGridColumnModel } from "@affino/datagrid-core"

const columnModel = createDataGridColumnModel({
  columns: [
    { key: "service", label: "Service", width: 220 },
    { key: "owner", label: "Owner", width: 180 },
  ],
})

Колонка идентифицируется ключом key, который используется в sort/filter/group.

3) GridApi — фасад для моделей

ts
import { createDataGridApi, createClientRowModel } from "@affino/datagrid-core"

const rowModel = createClientRowModel({ rows })
const api = createDataGridApi({ rowModel, columnModel })
await api.start()

api.setSortModel([{ key: "service", direction: "asc" }])
api.setFilterModel({ columnFilters: { owner: ["NOC"] } })

MIT Licensed