cabloy 5.1.61 → 5.1.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -1
- package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
- package/CHANGELOG.md +55 -0
- package/CLAUDE.md +1 -0
- package/cabloy-docs/.vitepress/config.mjs +158 -12
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +8 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +2 -0
- package/cabloy-docs/ai/skills.md +1 -0
- package/cabloy-docs/backend/backend-contract-emission-output-inspection.md +189 -0
- package/cabloy-docs/backend/backend-contract-emission-source-reading-map.md +160 -0
- package/cabloy-docs/backend/backend-contract-emission-specimen.md +170 -0
- package/cabloy-docs/backend/backend-resource-module-contract-chain.md +323 -0
- package/cabloy-docs/backend/backend-source-reading-debug-checklist.md +173 -0
- package/cabloy-docs/backend/backend-source-reading-roadmap.md +129 -0
- package/cabloy-docs/backend/backend-source-reading-verify-playbook.md +166 -0
- package/cabloy-docs/backend/bean-scene-authoring.md +4 -4
- package/cabloy-docs/backend/broadcast-guide.md +3 -3
- package/cabloy-docs/backend/cli.md +20 -11
- package/cabloy-docs/backend/config-guide.md +4 -4
- package/cabloy-docs/backend/controller-aop-guide.md +10 -10
- package/cabloy-docs/backend/controller-guide.md +12 -2
- package/cabloy-docs/backend/crud-workflow.md +7 -3
- package/cabloy-docs/backend/dto-guide.md +12 -2
- package/cabloy-docs/backend/dto-infer-generation.md +201 -25
- package/cabloy-docs/backend/election-guide.md +2 -2
- package/cabloy-docs/backend/entity-guide.md +12 -3
- package/cabloy-docs/backend/error-guide.md +3 -3
- package/cabloy-docs/backend/event-guide.md +4 -4
- package/cabloy-docs/backend/external-aop-guide.md +2 -2
- package/cabloy-docs/backend/field-indexes.md +9 -3
- package/cabloy-docs/backend/foundation.md +8 -8
- package/cabloy-docs/backend/i18n-guide.md +6 -6
- package/cabloy-docs/backend/internal-aop-guide.md +2 -2
- package/cabloy-docs/backend/introduction.md +13 -0
- package/cabloy-docs/backend/migration-and-changes.md +3 -3
- package/cabloy-docs/backend/model-guide.md +16 -6
- package/cabloy-docs/backend/openapi-guide.md +3 -0
- package/cabloy-docs/backend/queue-guide.md +3 -3
- package/cabloy-docs/backend/redlock-guide.md +2 -2
- package/cabloy-docs/backend/schedule-guide.md +2 -2
- package/cabloy-docs/backend/scripts.md +8 -0
- package/cabloy-docs/backend/serialization-guide.md +2 -2
- package/cabloy-docs/backend/service-guide.md +18 -9
- package/cabloy-docs/backend/startup-guide.md +5 -5
- package/cabloy-docs/backend/status-guide.md +7 -7
- package/cabloy-docs/backend/unit-testing.md +3 -3
- package/cabloy-docs/backend/vona-source-reading-map.md +157 -0
- package/cabloy-docs/backend/websocket-protocol-guide.md +5 -5
- package/cabloy-docs/backend/websocket-usage-guide.md +15 -8
- package/cabloy-docs/frontend/a-model-under-the-hood.md +281 -0
- package/cabloy-docs/frontend/a-openapi-under-the-hood.md +248 -0
- package/cabloy-docs/frontend/a-router-guide.md +307 -0
- package/cabloy-docs/frontend/api-guide.md +4 -4
- package/cabloy-docs/frontend/api-schema-guide.md +1 -0
- package/cabloy-docs/frontend/app-startup-guide.md +7 -4
- package/cabloy-docs/frontend/bean-scene-authoring.md +1 -1
- package/cabloy-docs/frontend/behavior-guide.md +16 -16
- package/cabloy-docs/frontend/cli.md +5 -5
- package/cabloy-docs/frontend/command-scene-authoring.md +17 -8
- package/cabloy-docs/frontend/component-guide.md +5 -5
- package/cabloy-docs/frontend/component-props-guide.md +1 -1
- package/cabloy-docs/frontend/component-v-model-guide.md +2 -2
- package/cabloy-docs/frontend/filter-query-select-data-flow-guide.md +260 -0
- package/cabloy-docs/frontend/form-guide.md +27 -30
- package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
- package/cabloy-docs/frontend/foundation.md +10 -6
- package/cabloy-docs/frontend/frontend-source-reading-roadmap.md +249 -0
- package/cabloy-docs/frontend/generated-contract-consumption-debug-checklist.md +190 -0
- package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +205 -0
- package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +157 -0
- package/cabloy-docs/frontend/generated-contract-consumption-specimen.md +203 -0
- package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +189 -0
- package/cabloy-docs/frontend/generic-component-guide.md +1 -1
- package/cabloy-docs/frontend/introduction.md +29 -7
- package/cabloy-docs/frontend/model-architecture.md +38 -2
- package/cabloy-docs/frontend/model-resource-cookbook.md +11 -8
- package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
- package/cabloy-docs/frontend/model-resource-owner-pattern.md +22 -2
- package/cabloy-docs/frontend/model-resource-usage-guide.md +22 -6
- package/cabloy-docs/frontend/model-state-guide.md +12 -9
- package/cabloy-docs/frontend/module-scope.md +8 -8
- package/cabloy-docs/frontend/modules-and-suites.md +2 -1
- package/cabloy-docs/frontend/navigation-guards-guide.md +7 -0
- package/cabloy-docs/frontend/openapi-sdk-guide.md +12 -4
- package/cabloy-docs/frontend/page-guide.md +9 -9
- package/cabloy-docs/frontend/page-meta-guide.md +466 -0
- package/cabloy-docs/frontend/page-params-guide.md +3 -3
- package/cabloy-docs/frontend/page-query-guide.md +2 -2
- package/cabloy-docs/frontend/page-route-guide.md +6 -0
- package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +263 -0
- package/cabloy-docs/frontend/quickstart.md +14 -2
- package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +271 -0
- package/cabloy-docs/frontend/resource-list-page-deep-dive.md +279 -0
- package/cabloy-docs/frontend/rest-resource-source-reading-map.md +522 -0
- package/cabloy-docs/frontend/rest-resource-under-the-hood.md +622 -0
- package/cabloy-docs/frontend/root-behaviors-guide.md +282 -0
- package/cabloy-docs/frontend/route-alias-guide.md +6 -0
- package/cabloy-docs/frontend/router-stack-guide.md +229 -0
- package/cabloy-docs/frontend/router-tabs-introduction.md +26 -3
- package/cabloy-docs/frontend/router-tabs-layout-integration.md +367 -0
- package/cabloy-docs/frontend/router-tabs-mechanism.md +6 -0
- package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +7 -0
- package/cabloy-docs/frontend/router-tabs-vs-stack.md +167 -0
- package/cabloy-docs/frontend/router-view-hosts-guide.md +450 -0
- package/cabloy-docs/frontend/server-data.md +2 -1
- package/cabloy-docs/frontend/system-startup-guide.md +2 -2
- package/cabloy-docs/frontend/table-action-visibility-permission-flow-guide.md +263 -0
- package/cabloy-docs/frontend/table-cell-cookbook.md +571 -0
- package/cabloy-docs/frontend/table-guide.md +373 -0
- package/cabloy-docs/frontend/table-resource-crud-cookbook.md +496 -0
- package/cabloy-docs/frontend/zova-app-guide.md +251 -0
- package/cabloy-docs/frontend/zova-form-source-reading-map.md +7 -9
- package/cabloy-docs/frontend/zova-form-under-the-hood.md +5 -0
- package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
- package/cabloy-docs/frontend/zova-source-reading-map.md +101 -7
- package/cabloy-docs/frontend/zova-table-controller-render-supplement.md +225 -0
- package/cabloy-docs/frontend/zova-table-source-reading-map.md +317 -0
- package/cabloy-docs/frontend/zova-table-under-the-hood.md +532 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +245 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +139 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +248 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +511 -0
- package/cabloy-docs/fullstack/contract-loop-playbook.md +8 -2
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
- package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +181 -48
- package/cabloy-docs/fullstack/introduction.md +3 -0
- package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -2
- package/cabloy-docs/fullstack/suites-and-modules.md +333 -0
- package/cabloy-docs/fullstack/tutorial-1-first-module.md +3 -0
- package/cabloy-docs/fullstack/tutorial-2-first-crud.md +4 -0
- package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +4 -0
- package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +31 -19
- package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +5 -0
- package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +4 -0
- package/cabloy-docs/fullstack/tutorials-overview.md +1 -1
- package/cabloy-docs/reference/bean-scene-boilerplates.md +13 -13
- package/cabloy-docs/reference/package-map.md +4 -3
- package/package.json +1 -1
- package/vona/pnpm-lock.yaml +22 -258
- package/vona/src/suite/a-training/modules/training-student/package.json +53 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +400 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +18 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/meta.index.ts +12 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +21 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/ssrMenu.student.ts +29 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +15 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +15 -0
- package/vona/src/suite/a-training/modules/training-student/src/controller/student.ts +74 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +28 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +44 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx +11 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +45 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +42 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +28 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +25 -0
- package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +84 -0
- package/vona/src/suite/a-training/modules/training-student/src/index.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +10 -0
- package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +57 -0
- package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +173 -0
- package/vona/src/suite/a-training/modules/training-student/tsconfig.build.json +11 -0
- package/vona/src/suite/a-training/modules/training-student/tsconfig.json +7 -0
- package/vona/src/suite/a-training/package.json +12 -0
- package/vona/src/suite/a-training/tsconfig.base.json +4 -0
- package/vona/src/suite/a-training/tsconfig.json +10 -0
- package/zova/packages-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +423 -682
- package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolOne/render.tsx +5 -3
- package/zova/src/suite/a-home/modules/home-login/src/page/login/render.tsx +5 -3
- package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/package.json +57 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
- package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +53 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
- package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
- package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
- package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
- package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
- package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
- package/zova/src/suite/a-training/package.json +12 -0
- package/zova/src/suite/a-training/tsconfig.base.json +4 -0
- package/zova/src/suite/a-training/tsconfig.json +4 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/package.json +60 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/index.ts +137 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/locales.ts +7 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/this.ts +2 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/bean/behavior.appModal.tsx +260 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/config.ts +39 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/en-us.ts +7 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/zh-cn.ts +7 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/index.ts +4 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/appModalItem.ts +16 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/index.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkey.ts +38 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkeySys.ts +14 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/service/appModal.ts +89 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/appModal.ts +52 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/index.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.build.json +13 -0
- package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.json +5 -0
- package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +6 -1
- package/zova/src/suite/cabloy-basic/modules/basic-commands/src/.metadata/index.ts +16 -0
- package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.alert.tsx +8 -14
- package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.confirm.tsx +10 -7
- package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.prompt.tsx +30 -0
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx +5 -3
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
- package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +6 -1
- package/zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionDelete.tsx +4 -2
- package/zova/src/suite/cabloy-basic/package.json +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
- package/zova/src/suite-vendor/a-zova/package.json +2 -2
|
@@ -12,14 +12,15 @@ Use this page together with the architectural guides:
|
|
|
12
12
|
- [Design Principles](/frontend/design-principles)
|
|
13
13
|
- [IoC and Beans](/frontend/ioc-and-beans)
|
|
14
14
|
- [Reading Zova for Vue Developers](/frontend/reading-zova-for-vue-developers)
|
|
15
|
+
- [Frontend Source Reading Roadmap](/frontend/frontend-source-reading-roadmap)
|
|
15
16
|
- [Zova Reactivity Under the Hood](/frontend/zova-reactivity-under-the-hood)
|
|
16
17
|
|
|
17
18
|
## Why this page exists
|
|
18
19
|
|
|
19
20
|
In a framework-sized codebase, source reading usually becomes slow for one reason:
|
|
20
21
|
|
|
21
|
-
- you can already find
|
|
22
|
-
- but you do not yet know the shortest path to the
|
|
22
|
+
- you can already find _a_ relevant file
|
|
23
|
+
- but you do not yet know the shortest path to the _next_ file
|
|
23
24
|
|
|
24
25
|
Zova especially benefits from a reading map because several layers cooperate at once:
|
|
25
26
|
|
|
@@ -144,6 +145,9 @@ Use this path when you are asking questions like:
|
|
|
144
145
|
### Read the docs first
|
|
145
146
|
|
|
146
147
|
- [Page Route Guide](/frontend/page-route-guide)
|
|
148
|
+
- [A-Router Guide](/frontend/a-router-guide)
|
|
149
|
+
- [Zova Router Under the Hood](/frontend/zova-router-under-the-hood)
|
|
150
|
+
- [Router View Hosts Guide](/frontend/router-view-hosts-guide)
|
|
147
151
|
- [Page Params Guide](/frontend/page-params-guide)
|
|
148
152
|
- [Page Query Guide](/frontend/page-query-guide)
|
|
149
153
|
- [Navigation Guards Guide](/frontend/navigation-guards-guide)
|
|
@@ -164,7 +168,64 @@ Use this path when you are asking questions like:
|
|
|
164
168
|
- route schema sources show typed parsing behavior for params and query
|
|
165
169
|
- `beanControllerPageBase.ts` shows the page-controller refresh hook surface
|
|
166
170
|
|
|
167
|
-
|
|
171
|
+
### When to continue into routed hosts
|
|
172
|
+
|
|
173
|
+
If your next question becomes any of these:
|
|
174
|
+
|
|
175
|
+
- why this route lands in one shell host rather than another
|
|
176
|
+
- where keep-alive participation is decided after route resolution
|
|
177
|
+
- where `tabKey` / `componentKey` are derived for routed pages
|
|
178
|
+
- how the active layout consumes routed-host state
|
|
179
|
+
|
|
180
|
+
then continue immediately with:
|
|
181
|
+
|
|
182
|
+
- [Router View Hosts Guide](/frontend/router-view-hosts-guide)
|
|
183
|
+
- section 5 on this page for the compact source-reading path
|
|
184
|
+
|
|
185
|
+
## 5. Router-view hosts, routertabs, and routerstack
|
|
186
|
+
|
|
187
|
+
Use this path when you are asking questions like:
|
|
188
|
+
|
|
189
|
+
- why does one routed page use an empty host while another behaves like a tabbed workbench?
|
|
190
|
+
- where do `tabKey`, `componentKey`, and keep-alive inclusion actually come from?
|
|
191
|
+
- how do `routerViewTabs` and `routerViewStack` differ at runtime?
|
|
192
|
+
- which layout files are the real consumers of routed-host behavior?
|
|
193
|
+
|
|
194
|
+
### Read the docs first
|
|
195
|
+
|
|
196
|
+
- [Page Route Guide](/frontend/page-route-guide)
|
|
197
|
+
- [Zova Router Under the Hood](/frontend/zova-router-under-the-hood)
|
|
198
|
+
- [Router View Hosts Guide](/frontend/router-view-hosts-guide)
|
|
199
|
+
- [Router Tabs Introduction](/frontend/router-tabs-introduction)
|
|
200
|
+
- [Router Tabs Overview](/frontend/router-tabs-overview)
|
|
201
|
+
- [Router Tabs Mechanism](/frontend/router-tabs-mechanism)
|
|
202
|
+
- [Router Tabs vs Stack](/frontend/router-tabs-vs-stack)
|
|
203
|
+
- [Router Stack Guide](/frontend/router-stack-guide)
|
|
204
|
+
|
|
205
|
+
### Then read source in this order
|
|
206
|
+
|
|
207
|
+
1. `zova/src/suite-vendor/a-zova/modules/a-router/src/lib/routerViewBase.tsx`
|
|
208
|
+
2. `zova/src/suite-vendor/a-zova/modules/a-router/src/component/routerViewEmpty/controller.tsx`
|
|
209
|
+
3. `zova/src/suite-vendor/a-zova/modules/a-routertabs/src/component/routerViewTabs/controller.tsx`
|
|
210
|
+
4. `zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts`
|
|
211
|
+
5. `zova/src/suite-vendor/a-zova/modules/a-routerstack/src/component/routerViewStack/controller.tsx`
|
|
212
|
+
6. `zova/src/suite-vendor/a-zova/modules/a-routerstack/src/model/stack.ts`
|
|
213
|
+
7. the active layout controller/render pair that consumes the host you care about
|
|
214
|
+
|
|
215
|
+
### What each file clarifies
|
|
216
|
+
|
|
217
|
+
- `routerViewBase.tsx` shows the shared host contract for routed-page render, keep-alive, and host callbacks
|
|
218
|
+
- `routerViewEmpty/controller.tsx` shows the minimal routed host without the richer tabs/stack model
|
|
219
|
+
- `routerViewTabs/controller.tsx` shows the controller-facing tabs host entrypoint
|
|
220
|
+
- `model/tabs.ts` shows workspace grouping, tab-item state, page-meta updates, and keep-alive inclusion
|
|
221
|
+
|
|
222
|
+
If your next question becomes specifically about task-level title, dirty state, or form-scene presentation after the routed item is already open, continue with [Page Meta Guide](/frontend/page-meta-guide).
|
|
223
|
+
|
|
224
|
+
- `routerViewStack/controller.tsx` shows the stack-host entrypoint with a smaller contract than tabs
|
|
225
|
+
- `model/stack.ts` shows the fullPath-based stack identity model and recency-based pruning
|
|
226
|
+
- active layout consumers show how the current shell turns host state into visible Admin or Web behavior
|
|
227
|
+
|
|
228
|
+
## 6. Model state, cache-oriented state, and broader data ownership
|
|
168
229
|
|
|
169
230
|
Use this path when you are asking questions like:
|
|
170
231
|
|
|
@@ -192,7 +253,7 @@ Use this path when you are asking questions like:
|
|
|
192
253
|
- built-in model beans show how the architecture is used in nontrivial cases
|
|
193
254
|
- consuming code shows whether the state really belongs in the model or only uses the model result
|
|
194
255
|
|
|
195
|
-
##
|
|
256
|
+
## 7. Command scene and command-bean invocation
|
|
196
257
|
|
|
197
258
|
Use this path when you are asking questions like:
|
|
198
259
|
|
|
@@ -224,7 +285,40 @@ Use this path when you are asking questions like:
|
|
|
224
285
|
- generated downstream metadata shows the real command names and bean full names exposed by consuming modules
|
|
225
286
|
- representative command beans show when to use the plain, bulk, row, or scene-sensitive command shapes
|
|
226
287
|
|
|
227
|
-
##
|
|
288
|
+
## App-shell root host and `a-app`
|
|
289
|
+
|
|
290
|
+
Use this path when you are asking questions like:
|
|
291
|
+
|
|
292
|
+
- what is the root app host in Zova?
|
|
293
|
+
- where does the routed tree first enter the app controller path?
|
|
294
|
+
- where do app-wide behaviors wrap the routed content?
|
|
295
|
+
- how should I read `a-app` without confusing it with routes, layouts, or SSR orchestration?
|
|
296
|
+
|
|
297
|
+
### Read the docs first
|
|
298
|
+
|
|
299
|
+
- [Zova App Guide](/frontend/zova-app-guide)
|
|
300
|
+
- [Root Behaviors Guide](/frontend/root-behaviors-guide)
|
|
301
|
+
- [App Startup Guide](/frontend/app-startup-guide)
|
|
302
|
+
- [Page Route Guide](/frontend/page-route-guide)
|
|
303
|
+
- [Behavior Guide](/frontend/behavior-guide)
|
|
304
|
+
|
|
305
|
+
### Then read source in this order
|
|
306
|
+
|
|
307
|
+
1. `zova/src/suite-vendor/a-zova/modules/a-app/src/.metadata/this.ts`
|
|
308
|
+
2. `zova/src/suite-vendor/a-zova/modules/a-app/src/.metadata/index.ts`
|
|
309
|
+
3. `zova/src/suite-vendor/a-zova/modules/a-app/src/.metadata/component/app.ts`
|
|
310
|
+
4. `zova/src/suite-vendor/a-zova/modules/a-app/src/component/app/controller.tsx`
|
|
311
|
+
5. `zova/src/suite-vendor/a-zova/modules/a-app/src/config/config.ts`
|
|
312
|
+
|
|
313
|
+
### What each file clarifies
|
|
314
|
+
|
|
315
|
+
- `this.ts` shows the module identity quickly
|
|
316
|
+
- `.metadata/index.ts` shows the generated integration surface for controller, component, config, and scope
|
|
317
|
+
- `.metadata/component/app.ts` shows the thin `ZApp` wrapper that mounts `ControllerApp` through `useController(...)`
|
|
318
|
+
- `controller.tsx` shows app-level meta setup, behavior-holder initialization, and behavior-wrapped `RouterView` render
|
|
319
|
+
- `config.ts` shows the root behavior injection point through `scope.config.behaviors`
|
|
320
|
+
|
|
321
|
+
## 8. Behavior scene and render-time interception
|
|
228
322
|
|
|
229
323
|
Use this path when you are asking questions like:
|
|
230
324
|
|
|
@@ -251,7 +345,7 @@ Use this path when you are asking questions like:
|
|
|
251
345
|
- composer/service files show how behavior chains are normalized and executed
|
|
252
346
|
- host dependencies show why host-scoped injection is part of the behavior design
|
|
253
347
|
|
|
254
|
-
##
|
|
348
|
+
## 9. SSR runtime and hydration handoff
|
|
255
349
|
|
|
256
350
|
Use this path when you are asking questions like:
|
|
257
351
|
|
|
@@ -280,7 +374,7 @@ Use this path when you are asking questions like:
|
|
|
280
374
|
- page/controller/model files show whether the bug is actually page-level logic
|
|
281
375
|
- the Vona side shows whether the problem happens before the Zova runtime is even entered
|
|
282
376
|
|
|
283
|
-
##
|
|
377
|
+
## 10. Modules, suites, and architectural placement
|
|
284
378
|
|
|
285
379
|
Use this path when you are asking questions like:
|
|
286
380
|
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# Zova Table Controller Render Deep Dive
|
|
2
|
+
|
|
3
|
+
This page is a small lower-level supplement for the Zova Table runtime.
|
|
4
|
+
|
|
5
|
+
Use it when you already understand the broader table architecture and now want to inspect the controller micro-pipeline more precisely:
|
|
6
|
+
|
|
7
|
+
- how `ControllerTable` boots
|
|
8
|
+
- how visible columns and render functions are assembled
|
|
9
|
+
- how `tableCell` render providers are normalized and resolved
|
|
10
|
+
- how cell render preparation and transient-object handoff work
|
|
11
|
+
|
|
12
|
+
## Why this supplement exists
|
|
13
|
+
|
|
14
|
+
The existing table docs already cover the broad architecture well:
|
|
15
|
+
|
|
16
|
+
- [Table Guide](/frontend/table-guide)
|
|
17
|
+
- [Zova Table Under the Hood](/frontend/zova-table-under-the-hood)
|
|
18
|
+
- [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map)
|
|
19
|
+
|
|
20
|
+
What those pages do not isolate directly is the controller/render micro-pipeline inside `ControllerTable`.
|
|
21
|
+
|
|
22
|
+
That is the only gap this supplement fills.
|
|
23
|
+
|
|
24
|
+
## The shortest accurate mental model
|
|
25
|
+
|
|
26
|
+
A practical mental model is:
|
|
27
|
+
|
|
28
|
+
1. `BeanControllerTableBase.$useTable(...)` owns the TanStack bridge at controller level
|
|
29
|
+
2. `ControllerTable.__init__()` prepares schema properties, metadata, columns, and the table instance
|
|
30
|
+
3. `_createTableMeta()` decides which properties are visible and which render function each one should use
|
|
31
|
+
4. `_createColumnRender()` resolves either a `tableCell` bean-backed render path or a general render target
|
|
32
|
+
5. `cellRenderPrepare()` can preload nested bean-backed renders
|
|
33
|
+
6. `_cellRender()` / `_cellRenderInner()` hand off row/cell scope, fallback values, and transient `getValue(...)` state into final rendering
|
|
34
|
+
|
|
35
|
+
That means the controller micro-pipeline is where schema, visibility, bean resolution, and render contexts finally converge.
|
|
36
|
+
|
|
37
|
+
## Source-confirmed reading path
|
|
38
|
+
|
|
39
|
+
When reading this topic, use this order:
|
|
40
|
+
|
|
41
|
+
1. `zova/src/suite-vendor/a-zova/modules/a-table/src/lib/beanControllerTableBase.ts`
|
|
42
|
+
2. `zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx`
|
|
43
|
+
3. `zova/src/suite-vendor/a-zova/modules/a-table/src/types/tableCell.ts`
|
|
44
|
+
4. `zova/src/suite-vendor/a-zova/modules/a-table/src/types/tableColumn.ts`
|
|
45
|
+
5. `zova/packages-utils/zova-jsx/src/lib/zovaJsx.ts`
|
|
46
|
+
6. `zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionOperationsRow.tsx`
|
|
47
|
+
|
|
48
|
+
That order moves from the controller/TanStack bridge, to the main controller runtime, to the render contracts, to the JSX runtime handoff, and finally to a concrete `tableCell` specimen.
|
|
49
|
+
|
|
50
|
+
## `BeanControllerTableBase.$useTable(...)`
|
|
51
|
+
|
|
52
|
+
The TanStack bridge lives in:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
zova/src/suite-vendor/a-zova/modules/a-table/src/lib/beanControllerTableBase.ts
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The key source-confirmed behavior is:
|
|
59
|
+
|
|
60
|
+
- `useVueTable(...)` is called inside `instanceScope(...)`
|
|
61
|
+
- the returned table instance is `markRaw(...)`
|
|
62
|
+
|
|
63
|
+
This is the first important lower-level rule:
|
|
64
|
+
|
|
65
|
+
- the table instance is still controller-owned runtime
|
|
66
|
+
- TanStack is the underlying table engine, but the controller remains the effective Zova runtime owner
|
|
67
|
+
|
|
68
|
+
## `ControllerTable.__init__()` boot sequence
|
|
69
|
+
|
|
70
|
+
The main runtime file is:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The source confirms this boot sequence:
|
|
77
|
+
|
|
78
|
+
1. register `$$table`
|
|
79
|
+
2. create the CEL environment and `ZovaJsx` instance
|
|
80
|
+
3. create schema-driven properties
|
|
81
|
+
4. refresh metadata
|
|
82
|
+
5. watch `schema` for meta refresh
|
|
83
|
+
6. create the TanStack table instance
|
|
84
|
+
|
|
85
|
+
That is the core controller-level assembly path.
|
|
86
|
+
|
|
87
|
+
## `_createTableMeta()` as visible-column/render assembly point
|
|
88
|
+
|
|
89
|
+
Inside the same controller, `_createTableMeta()` is the clearest metadata-assembly step.
|
|
90
|
+
|
|
91
|
+
It:
|
|
92
|
+
|
|
93
|
+
- iterates schema-derived properties
|
|
94
|
+
- builds column scope
|
|
95
|
+
- builds render context
|
|
96
|
+
- merges top-level column props
|
|
97
|
+
- checks visibility
|
|
98
|
+
- creates per-column render functions
|
|
99
|
+
- stores the surviving visible properties and render map in `tableMeta`
|
|
100
|
+
|
|
101
|
+
This is the most important micro-pipeline rule:
|
|
102
|
+
|
|
103
|
+
- schema properties do not automatically become rendered columns
|
|
104
|
+
- they are filtered and converted through controller-owned metadata assembly first
|
|
105
|
+
|
|
106
|
+
## `getRenderProvider()` normalization and `_createColumnRender()`
|
|
107
|
+
|
|
108
|
+
The render-resolution path also lives in `ControllerTable`.
|
|
109
|
+
|
|
110
|
+
It decides whether a column render should be treated as:
|
|
111
|
+
|
|
112
|
+
- text fallback
|
|
113
|
+
- a general render target
|
|
114
|
+
- a `tableCell` bean-backed renderer
|
|
115
|
+
|
|
116
|
+
`_createColumnRender()` is the main resolution point where:
|
|
117
|
+
|
|
118
|
+
- render provider is normalized
|
|
119
|
+
- bean-backed providers are resolved
|
|
120
|
+
- decorator options are merged
|
|
121
|
+
- visibility hooks such as `checkVisible(...)` can participate
|
|
122
|
+
|
|
123
|
+
This is the lower-level rule to remember:
|
|
124
|
+
|
|
125
|
+
- render resolution is not only “take whatever the schema says”
|
|
126
|
+
- the controller resolves and normalizes that render contract first
|
|
127
|
+
|
|
128
|
+
## `cellRenderPrepare()` and nested render preloading
|
|
129
|
+
|
|
130
|
+
`cellRenderPrepare()` is the preloading step for bean-backed renderers.
|
|
131
|
+
|
|
132
|
+
This matters most for nested or action-heavy cells, because it lets the controller prepare the concrete `tableCell` beans before final render.
|
|
133
|
+
|
|
134
|
+
A practical reading rule is:
|
|
135
|
+
|
|
136
|
+
- `cellRenderPrepare()` is part of render readiness, not only a cosmetic helper
|
|
137
|
+
|
|
138
|
+
A good current specimen is:
|
|
139
|
+
|
|
140
|
+
- `basic-table/src/bean/tableCell.actionOperationsRow.tsx`
|
|
141
|
+
|
|
142
|
+
because it prepares the nested row-action render set based on visibility.
|
|
143
|
+
|
|
144
|
+
## `_cellRender()` / `_cellRenderInner()` and transient value handoff
|
|
145
|
+
|
|
146
|
+
The final cell rendering path uses:
|
|
147
|
+
|
|
148
|
+
- column scope
|
|
149
|
+
- cell scope
|
|
150
|
+
- fallback value
|
|
151
|
+
- actual cell value
|
|
152
|
+
- transient `getValue(...)` handoff through `ZovaJsx`
|
|
153
|
+
|
|
154
|
+
This is where the lower-level scope handoff matters most.
|
|
155
|
+
|
|
156
|
+
The current runtime uses the `ZovaJsx` transient-object path so cell renderers can see the active value context while still staying inside the controller-driven runtime.
|
|
157
|
+
|
|
158
|
+
A practical reading rule is:
|
|
159
|
+
|
|
160
|
+
- the final cell render is not only a plain function call
|
|
161
|
+
- it is a scoped runtime handoff with controller-owned context
|
|
162
|
+
|
|
163
|
+
## Table-cell contract in types
|
|
164
|
+
|
|
165
|
+
The render contracts live in:
|
|
166
|
+
|
|
167
|
+
- `a-table/src/types/tableCell.ts`
|
|
168
|
+
- `a-table/src/types/tableColumn.ts`
|
|
169
|
+
|
|
170
|
+
These files confirm the lower-level boundary types for:
|
|
171
|
+
|
|
172
|
+
- `ITableCellRender`
|
|
173
|
+
- `checkVisible(...)`
|
|
174
|
+
- column scope vs cell scope
|
|
175
|
+
- render contexts passed into cell renderers
|
|
176
|
+
|
|
177
|
+
That makes them the right files to read when the runtime feels confusing even though the broad table docs are already understood.
|
|
178
|
+
|
|
179
|
+
## Concrete specimen: operations-row tableCell
|
|
180
|
+
|
|
181
|
+
A good concrete specimen is:
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionOperationsRow.tsx
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
This file is useful because it shows several lower-level pieces in one place:
|
|
188
|
+
|
|
189
|
+
- `checkVisible(...)`
|
|
190
|
+
- permission-based render filtering
|
|
191
|
+
- nested render preparation
|
|
192
|
+
- final action-row rendering through the table cell contract
|
|
193
|
+
|
|
194
|
+
So it is the best small specimen for understanding why the micro-pipeline matters in practice.
|
|
195
|
+
|
|
196
|
+
## What this page does not re-explain
|
|
197
|
+
|
|
198
|
+
This supplement does **not** fully re-explain:
|
|
199
|
+
|
|
200
|
+
- broad table authoring -> see [Table Guide](/frontend/table-guide)
|
|
201
|
+
- full runtime architecture -> see [Zova Table Under the Hood](/frontend/zova-table-under-the-hood)
|
|
202
|
+
- general file-order map -> see [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map)
|
|
203
|
+
- row/bulk permission semantics -> see [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
|
|
204
|
+
|
|
205
|
+
Its job is only to explain the controller/render micro-pipeline.
|
|
206
|
+
|
|
207
|
+
## Where to read next
|
|
208
|
+
|
|
209
|
+
Use these next steps depending on your question:
|
|
210
|
+
|
|
211
|
+
- if you want the broad table runtime again, read [Zova Table Under the Hood](/frontend/zova-table-under-the-hood)
|
|
212
|
+
- if you want the file-order map, read [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map)
|
|
213
|
+
- if you want row/bulk visibility behavior, read [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
|
|
214
|
+
- if you want the list-page runtime that feeds `ZTable`, read [Resource List Page Deep Dive](/frontend/resource-list-page-deep-dive)
|
|
215
|
+
|
|
216
|
+
## Final takeaway
|
|
217
|
+
|
|
218
|
+
The most accurate way to read this lower-level table supplement is:
|
|
219
|
+
|
|
220
|
+
- `BeanControllerTableBase` owns the TanStack bridge at controller scope
|
|
221
|
+
- `ControllerTable` owns metadata assembly and render resolution
|
|
222
|
+
- `tableCell` beans participate through explicit controller-managed resolution and scope handoff
|
|
223
|
+
- `cellRenderPrepare()` and `_cellRender()` are part of the real runtime pipeline, not only helper details
|
|
224
|
+
|
|
225
|
+
That is the source-confirmed controller/render micro-pipeline in the current Cabloy Basic table runtime.
|