Zova Table Source Reading Map
This page is a practical map for contributors and AI workflows that need to read Zova Table source code efficiently.
Use this page after Zova Table Under the Hood when your next question is not the runtime model itself, but which files to read first for a specific table-internals topic.
It answers a narrow question:
when I need to understand how Zova Table works internally, which files should I read first, and in what order?
Use this page together with:
- Table Guide
- TableCell Authoring Cookbook
- Table + Resource CRUD Cookbook
- Zova Table Under the Hood
- Zova Table Controller Render Deep Dive
- Rest Resource Under the Hood
- Rest Resource Source Reading Map
- Zova Source Reading Map
- Bean Scene Authoring
- API Schema Guide
- Model Resource Owner Pattern
TIP
Zova Table docs path
- Table Guide — learn the public authoring surface
- Zova Table Under the Hood — learn how the runtime pieces cooperate
- Zova Table Source Reading Map — learn which files to read next
You are here: step 3. Previous page: Zova Table Under the Hood.
Why this page exists
The a-table module sits at the intersection of several Zova concerns at once:
- controller-oriented component design
- schema-driven column metadata
- TanStack Table integration
- bean-scene-based cell rendering
- resource-page integration through
basic-page
This page exists for one narrow job:
- Table Guide explains how to author tables
- Zova Table Under the Hood explains how the runtime pieces cooperate
- this page gives the shortest file-order paths for specific table questions
How to use this page
For each topic below:
- start with the public guide to refresh the architectural intent
- read the first source file to identify the public surface
- continue into the next runtime file only if you still need the implementation detail
- stop as soon as you have enough information for the task
The goal is not to read the entire table stack every time. The goal is to choose the shortest correct path.
1. Public table surface and wrapper entrypoints
Use this path when you are asking questions like:
- what is the public Zova Table surface?
- where does
ZTableenter the runtime? - how does
controllerRefreach the controller instance?
Read the docs first
Then read source in this order
zova/src/suite-vendor/a-zova/modules/a-table/src/.metadata/component/table.tszova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsxzova/src/suite-vendor/a-zova/modules/a-table/src/component/table/render.tsxzova/packages-zova/zova-core/src/composables/useController.ts
What each file clarifies
- metadata wrapper files show how the public component wrapper enters
useController(...) table.tsexposesZTableand its typed controller-facing props surfacecontroller.tsxshows the table runtime ownerrender.tsxshows the default DOM render pathuseController.tsshows how the controller instance is created and bound to the wrapper lifecycle
2. Table controller ownership and TanStack bridge
Use this path when you are asking questions like:
- where is the TanStack table instance created?
- where do
columnsandtableMetacome from? - why does the table runtime live in a controller bean?
Read the docs first
Then read source in this order
zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsxzova/src/suite-vendor/a-zova/modules/a-table/src/lib/beanControllerTableBase.tszova/src/suite-vendor/a-zova/modules/a-table/src/lib/beanControllerPageTableBase.tszova/src/suite-vendor/a-zova/modules/a-table/src/types/table.ts
What each file clarifies
component/table/controller.tsxis the main table runtime ownerbeanControllerTableBase.tsshows the shared$useTable(...)wrapper around TanStackuseVueTable(...)beanControllerPageTableBase.tsshows the page-controller-oriented varianttypes/table.tsshows the exposed type contracts for table, columns, metadata, andgetColumns(...)
3. Schema-driven columns and metadata overlays
Use this path when you are asking questions like:
- how does a row schema become visible columns?
- where do
visible,order,render, andcolumnPropscome from? - how does the table scene differ from form or filter scenes?
Read the docs first
Then read source in this order
zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsxzova/src/suite-vendor/a-zova/modules/a-openapi/src/lib/schema.tszova/src/suite-vendor/a-zova/modules/a-openapi/src/types/rest.ts
What each file clarifies
controller.tsxshows_createProperties(),_createTableMeta(), and_createColumnsMiddle()schema.tsshowsloadSchemaProperties(...),$refresolution, and scene-specificrestoverlaysrest.tsshows the schema extension contract, includingrest.tableand table-related render types
4. tableCell bean-scene contract and decorator surface
Use this path when you are asking questions like:
- what exactly is a
tableCellbean? - where does
@TableCell(...)come from? - how is the scene registered for metadata and typing?
Read the docs first
Then read source in this order
zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.tszova/src/suite-vendor/a-zova/modules/a-table/src/types/tableCell.tszova/src/suite-vendor/a-zova/modules/a-table/package.jsonzova/src/suite-vendor/a-zova/modules/a-table/cli/tableCell/boilerplate/..tsx_zova/src/suite-vendor/a-zova/modules/a-table/cli/tableActionRow/boilerplate/..tsx_
What each file clarifies
tableCell.tsshows the decorator definitiontypes/tableCell.tsshows the runtime contract, scene typing, andNextTableCellRenderpackage.jsonshowszovaModule.onions.tableCelland boilerplate metadata- the boilerplate files show the intended scaffold shape for normal cells and row-action cells
5. Cell render pipeline and CEL/JSX scope
Use this path when you are asking questions like:
- how does one column render become one real cell vnode?
- where do
getValue(...)and cell scope come from? - how are JSX props evaluated for a cell bean?
Read the docs first
Then read source in this order
zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsxzova/src/suite-vendor/a-zova/modules/a-table/src/types/tableColumn.tszova/src/suite-vendor/a-zova/modules/a-table/src/types/tableCell.ts
What each file clarifies
controller.tsxshowsgetColumnJsxRenderContext(...),getCellJsxRenderContext(...),cellRenderPrepare(...),cellRender(...), and_cellRenderInner(...)tableColumn.tsshows column scope, cell scope, and table column render typestableCell.tsshows the render-context contract received by atableCellbean
6. Representative built-in cell renderers
Use this path when you are asking questions like:
- what does a simple formatter-style table cell look like?
- what does a row-action cell look like?
- how should I design my own custom table cell?
Read the docs first
Then read source in this order
zova/src/suite/cabloy-basic/modules/basic-text/src/bean/tableCell.text.tsxzova/src/suite/cabloy-basic/modules/basic-date/src/bean/tableCell.date.tsxzova/src/suite/cabloy-basic/modules/basic-select/src/bean/tableCell.select.tsxzova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionOperationsRow.tsx
What each file clarifies
tableCell.text.tsxshows the minimal pass-through plus optional wrapper patterntableCell.date.tsxshows formatting aroundnext()tableCell.select.tsxshows value-to-item mappingactionOperationsRow.tsxshows advanced visibility checks, nested action rendering, and permission-aware orchestration
7. Custom columns through getColumns(...)
Use this path when you are asking questions like:
- how should I add one page-local operations column?
- how can I reuse the existing cell-render pipeline from custom columns?
- where is
createColumnRender(...)defined?
Read the docs first
Then read source in this order
zova/src/suite-vendor/a-zova/modules/a-table/src/types/table.tszova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsxzova/src/suite/cabloy-basic/modules/basic-table/src/component/table/render.tsx
What each file clarifies
types/table.tsshowsTypeTableGetColumnsandTypeTableCreateColumnRendercontroller.tsxshows how custom columns are givennext(...),createColumnRender(...), and the table controller itselfbasic-table/render.tsxshows a module-level consumer wrappingZTablerather than replacing its runtime
8. Resource-page integration
Use this path when you are asking questions like:
- how does a resource list page feed schema and data into
ZTable? - where do
data,schemaRow, andtableScopecome from? - where should permission-sensitive table refresh be debugged?
Read the docs first
Then read source in this order
zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsxzova/src/suite/cabloy-basic/modules/basic-page/src/component/blockTable/controller.tsxvona/src/suite-vendor/a-test/modules/test-rest/src/dto/productSelectResItem.tsx
What each file clarifies
blockPage/controller.tsxshows resource ownership, query state, page CEL scope, permissions, and table refresh integrationblockTable/controller.tsxshows the direct bridge from page block toZTable- the Vona DTO specimen shows the block-based page composition consumed from backend-owned metadata
9. Representative specimens to read before editing the framework
Use this section when you want one small example before reading framework internals.
Read these specimens first
zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockTable/controller.tsxzova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionOperationsRow.tsxzova/src/suite/cabloy-basic/modules/basic-text/src/bean/tableCell.text.tsx
Why these three specimens matter
blockTableshows the public integration path from a page intoZTableactionOperationsRowshows the advancedtableCellorchestration pathtableCell.textshows the smallest custom-cell authoring shape
Together they give you the public integration, the advanced cell path, and the minimal cell path before you descend into the whole table runtime.
10. A compact reading strategy
When in doubt, use this order:
- Table Guide
- one real usage specimen such as
blockTable - the public wrapper metadata under
src/.metadata/component/table.ts component/table/controller.tsxlib/beanControllerTableBase.tstypes/tableCell.tsand representative cell beans only if you still need more detail
That order usually gets you to the answer faster than starting from the deepest runtime files first.
11. Final takeaway
The fastest way to read Zova Table accurately is not to memorize every file in a-table.
It is to recognize which question you are asking:
- wrapper-entry question
- controller-runtime question
- schema-column question
tableCellscene question- cell-render question
- resource-page integration question
Then start from the smallest public file that matches that question and only descend into deeper runtime files as needed.