cabloy 5.1.66 → 5.1.68

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.
Files changed (229) hide show
  1. package/.claude/skills/cabloy-resource-field-update/SKILL.md +6 -0
  2. package/CHANGELOG.md +28 -0
  3. package/package.json +1 -1
  4. package/vona/packages-cli/cli/package.json +1 -1
  5. package/vona/packages-cli/cli-set-api/cli/templates/create/module/boilerplate/_package.json +1 -1
  6. package/vona/packages-cli/cli-set-api/package.json +2 -2
  7. package/vona/packages-utils/zod-query/package.json +1 -1
  8. package/vona/packages-utils/zod-query/src/lib/query.ts +4 -0
  9. package/vona/packages-vona/vona/package.json +1 -1
  10. package/vona/packages-vona/vona-core/package.json +1 -1
  11. package/vona/packages-vona/vona-mock/package.json +1 -1
  12. package/vona/pnpm-lock.yaml +777 -840
  13. package/vona/pnpm-workspace.yaml +1 -1
  14. package/vona/src/suite/a-demo/modules/demo-basic/package.json +1 -1
  15. package/vona/src/suite/a-home/modules/home-base/package.json +1 -1
  16. package/vona/src/suite/a-home/modules/home-index/package.json +1 -1
  17. package/vona/src/suite/a-home/modules/home-user/package.json +1 -1
  18. package/vona/src/suite/a-training/modules/training-record/package.json +1 -1
  19. package/vona/src/suite/a-training/modules/training-record/src/.metadata/index.ts +232 -3
  20. package/vona/src/suite/a-training/modules/training-record/src/bean/meta.version.ts +4 -1
  21. package/vona/src/suite/a-training/modules/training-record/src/bean/ssrMenu.record.ts +29 -0
  22. package/vona/src/suite/a-training/modules/training-record/src/config/locale/en-us.ts +14 -3
  23. package/vona/src/suite/a-training/modules/training-record/src/config/locale/zh-cn.ts +14 -3
  24. package/vona/src/suite/a-training/modules/training-record/src/controller/record.ts +59 -0
  25. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectBase.tsx +18 -0
  26. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectMutate.tsx +17 -0
  27. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectResItem.tsx +60 -0
  28. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectView.tsx +17 -0
  29. package/vona/src/suite/a-training/modules/training-record/src/dto/recordCreate.tsx +45 -0
  30. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectReq.tsx +38 -0
  31. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectRes.tsx +11 -0
  32. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +39 -0
  33. package/vona/src/suite/a-training/modules/training-record/src/dto/recordUpdate.tsx +45 -0
  34. package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +42 -0
  35. package/vona/src/suite/a-training/modules/training-record/src/entity/record.tsx +39 -7
  36. package/vona/src/suite/a-training/modules/training-record/src/model/record.ts +15 -2
  37. package/vona/src/suite/a-training/modules/training-record/src/service/record.ts +50 -0
  38. package/vona/src/suite/a-training/modules/training-record/test/record.test.ts +162 -0
  39. package/vona/src/suite/a-training/modules/training-recordsubject/package.json +53 -0
  40. package/vona/src/suite/a-training/modules/training-recordsubject/src/.metadata/index.ts +198 -0
  41. package/vona/src/suite/a-training/modules/training-recordsubject/src/.metadata/locales.ts +18 -0
  42. package/vona/src/suite/a-training/modules/training-recordsubject/src/.metadata/this.ts +2 -0
  43. package/vona/src/suite/a-training/modules/training-recordsubject/src/bean/meta.index.ts +12 -0
  44. package/vona/src/suite/a-training/modules/training-recordsubject/src/bean/meta.version.ts +21 -0
  45. package/vona/src/suite/a-training/modules/training-recordsubject/src/config/locale/en-us.ts +9 -0
  46. package/vona/src/suite/a-training/modules/training-recordsubject/src/config/locale/zh-cn.ts +9 -0
  47. package/vona/src/suite/a-training/modules/training-recordsubject/src/entity/subject.tsx +42 -0
  48. package/vona/src/suite/a-training/modules/training-recordsubject/src/index.ts +2 -0
  49. package/vona/src/suite/a-training/modules/training-recordsubject/src/model/subject.ts +10 -0
  50. package/vona/src/suite/a-training/modules/training-recordsubject/tsconfig.build.json +11 -0
  51. package/vona/src/suite/a-training/modules/training-recordsubject/tsconfig.json +7 -0
  52. package/vona/src/suite/a-training/modules/training-student/package.json +1 -1
  53. package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +1 -1
  54. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -5
  55. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -5
  56. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordBase.tsx +20 -2
  57. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordMutate.tsx +11 -2
  58. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordResItem.tsx +1 -0
  59. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordView.tsx +11 -2
  60. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +1 -1
  61. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +3 -1
  62. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +9 -1
  63. package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +17 -5
  64. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +88 -15
  65. package/vona/src/suite/a-training/package.json +1 -0
  66. package/vona/src/suite/a-training/tsconfig.json +3 -0
  67. package/vona/src/suite/cabloy-basic/modules/basic-siteadmin/package.json +1 -1
  68. package/vona/src/suite/cabloy-basic/modules/basic-siteweb/package.json +1 -1
  69. package/vona/src/suite-vendor/a-auth/modules/a-auth/package.json +2 -2
  70. package/vona/src/suite-vendor/a-auth/modules/auth-oauth/package.json +2 -2
  71. package/vona/src/suite-vendor/a-auth/modules/auth-simple/package.json +2 -2
  72. package/vona/src/suite-vendor/a-auth/package.json +2 -2
  73. package/vona/src/suite-vendor/a-cabloy/modules/a-cabloy/package.json +2 -2
  74. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +2 -2
  75. package/vona/src/suite-vendor/a-cabloy/modules/a-datasource/package.json +2 -2
  76. package/vona/src/suite-vendor/a-cabloy/modules/a-socket/package.json +2 -2
  77. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +2 -2
  78. package/vona/src/suite-vendor/a-cabloy/modules/a-ssrhmr/package.json +2 -2
  79. package/vona/src/suite-vendor/a-cabloy/modules/a-status/package.json +2 -2
  80. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  81. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +2 -2
  82. package/vona/src/suite-vendor/a-captcha/modules/captcha-simple/package.json +2 -2
  83. package/vona/src/suite-vendor/a-captcha/package.json +1 -1
  84. package/vona/src/suite-vendor/a-paypal/modules/a-paypal/package.json +2 -2
  85. package/vona/src/suite-vendor/a-paypal/package.json +1 -1
  86. package/vona/src/suite-vendor/a-vona/modules/a-aspect/package.json +2 -2
  87. package/vona/src/suite-vendor/a-vona/modules/a-aspectutils/package.json +2 -2
  88. package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +2 -2
  89. package/vona/src/suite-vendor/a-vona/modules/a-beanmutate/package.json +2 -2
  90. package/vona/src/suite-vendor/a-vona/modules/a-body/package.json +2 -2
  91. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/package.json +2 -2
  92. package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +2 -2
  93. package/vona/src/suite-vendor/a-vona/modules/a-caching/package.json +2 -2
  94. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +2 -2
  95. package/vona/src/suite-vendor/a-vona/modules/a-election/package.json +2 -2
  96. package/vona/src/suite-vendor/a-vona/modules/a-error/package.json +2 -2
  97. package/vona/src/suite-vendor/a-vona/modules/a-event/package.json +2 -2
  98. package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +2 -2
  99. package/vona/src/suite-vendor/a-vona/modules/a-hmr/package.json +2 -2
  100. package/vona/src/suite-vendor/a-vona/modules/a-hmrbase/package.json +2 -2
  101. package/vona/src/suite-vendor/a-vona/modules/a-index/package.json +2 -2
  102. package/vona/src/suite-vendor/a-vona/modules/a-instance/package.json +2 -2
  103. package/vona/src/suite-vendor/a-vona/modules/a-jwt/package.json +2 -2
  104. package/vona/src/suite-vendor/a-vona/modules/a-locale/package.json +2 -2
  105. package/vona/src/suite-vendor/a-vona/modules/a-logger/package.json +2 -2
  106. package/vona/src/suite-vendor/a-vona/modules/a-mail/package.json +2 -2
  107. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +2 -2
  108. package/vona/src/suite-vendor/a-vona/modules/a-menu/package.json +2 -2
  109. package/vona/src/suite-vendor/a-vona/modules/a-meta/package.json +2 -2
  110. package/vona/src/suite-vendor/a-vona/modules/a-onion/package.json +2 -2
  111. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +2 -2
  112. package/vona/src/suite-vendor/a-vona/modules/a-openapischema/package.json +2 -2
  113. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/package.json +2 -2
  114. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +2 -2
  115. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +4 -0
  116. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +5 -3
  117. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/utils.ts +1 -1
  118. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +5 -0
  119. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +2 -2
  120. package/vona/src/suite-vendor/a-vona/modules/a-ormutils/package.json +2 -2
  121. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +2 -2
  122. package/vona/src/suite-vendor/a-vona/modules/a-play/package.json +2 -2
  123. package/vona/src/suite-vendor/a-vona/modules/a-printtip/package.json +2 -2
  124. package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +2 -2
  125. package/vona/src/suite-vendor/a-vona/modules/a-redis/package.json +2 -2
  126. package/vona/src/suite-vendor/a-vona/modules/a-redlock/package.json +2 -2
  127. package/vona/src/suite-vendor/a-vona/modules/a-runtime/package.json +2 -2
  128. package/vona/src/suite-vendor/a-vona/modules/a-schedule/package.json +2 -2
  129. package/vona/src/suite-vendor/a-vona/modules/a-security/package.json +2 -2
  130. package/vona/src/suite-vendor/a-vona/modules/a-serialization/package.json +2 -2
  131. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +2 -2
  132. package/vona/src/suite-vendor/a-vona/modules/a-static/package.json +2 -2
  133. package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +2 -2
  134. package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +2 -2
  135. package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +2 -2
  136. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +2 -2
  137. package/vona/src/suite-vendor/a-vona/modules/a-validation/package.json +2 -2
  138. package/vona/src/suite-vendor/a-vona/modules/a-version/package.json +2 -2
  139. package/vona/src/suite-vendor/a-vona/modules/a-vona/package.json +2 -2
  140. package/vona/src/suite-vendor/a-vona/modules/a-web/package.json +2 -2
  141. package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +2 -2
  142. package/vona/src/suite-vendor/a-vona/modules/a-zod/package.json +2 -2
  143. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  144. package/zova/packages-cli/cli/package.json +2 -2
  145. package/zova/packages-cli/cli-set-front/cli/templates/create/module/boilerplate/_package.json +1 -1
  146. package/zova/packages-cli/cli-set-front/package.json +2 -2
  147. package/zova/packages-utils/zova-jsx/package.json +2 -2
  148. package/zova/packages-zova/zova/package.json +3 -3
  149. package/zova/packages-zova/zova-core/package.json +2 -2
  150. package/zova/pnpm-lock.yaml +186 -142
  151. package/zova/pnpm-workspace.yaml +1 -1
  152. package/zova/src/suite/a-demo/modules/demo-basic/package.json +1 -1
  153. package/zova/src/suite/a-demo/modules/demo-todo/package.json +1 -1
  154. package/zova/src/suite/a-devui/modules/devui-adapter/package.json +1 -1
  155. package/zova/src/suite/a-home/modules/home-api/package.json +1 -1
  156. package/zova/src/suite/a-home/modules/home-base/package.json +1 -1
  157. package/zova/src/suite/a-home/modules/home-icon/package.json +1 -1
  158. package/zova/src/suite/a-home/modules/home-indexadmin/package.json +1 -1
  159. package/zova/src/suite/a-home/modules/home-indexweb/package.json +1 -1
  160. package/zova/src/suite/a-home/modules/home-layoutadmin/package.json +1 -1
  161. package/zova/src/suite/a-home/modules/home-layoutempty/package.json +1 -1
  162. package/zova/src/suite/a-home/modules/home-layoutweb/package.json +1 -1
  163. package/zova/src/suite/a-home/modules/home-login/package.json +1 -1
  164. package/zova/src/suite/a-home/modules/home-passport/package.json +1 -1
  165. package/zova/src/suite/a-home/modules/home-theme/package.json +1 -1
  166. package/zova/src/suite/a-training/modules/training-student/package.json +1 -1
  167. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +52 -24
  168. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +860 -307
  169. package/zova/src/suite/cabloy-basic/modules/basic-adapter/package.json +1 -1
  170. package/zova/src/suite/cabloy-basic/modules/basic-app/package.json +1 -1
  171. package/zova/src/suite/cabloy-basic/modules/basic-captcha/package.json +1 -1
  172. package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +1 -1
  173. package/zova/src/suite/cabloy-basic/modules/basic-commandssync/package.json +1 -1
  174. package/zova/src/suite/cabloy-basic/modules/basic-currency/package.json +1 -1
  175. package/zova/src/suite/cabloy-basic/modules/basic-date/package.json +1 -1
  176. package/zova/src/suite/cabloy-basic/modules/basic-date/src/.metadata/component/date.ts +61 -0
  177. package/zova/src/suite/cabloy-basic/modules/basic-date/src/.metadata/index.ts +17 -4
  178. package/zova/src/suite/cabloy-basic/modules/basic-date/src/component/date/controller.tsx +44 -0
  179. package/zova/src/suite/cabloy-basic/modules/basic-date/src/component/formFieldDate/controller.tsx +49 -9
  180. package/zova/src/suite/cabloy-basic/modules/basic-date/src/lib/utils.ts +60 -1
  181. package/zova/src/suite/cabloy-basic/modules/basic-date/src/types/date.ts +2 -0
  182. package/zova/src/suite/cabloy-basic/modules/basic-details/package.json +1 -1
  183. package/zova/src/suite/cabloy-basic/modules/basic-form/package.json +1 -1
  184. package/zova/src/suite/cabloy-basic/modules/basic-input/package.json +1 -1
  185. package/zova/src/suite/cabloy-basic/modules/basic-page/package.json +1 -1
  186. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/package.json +1 -1
  187. package/zova/src/suite/cabloy-basic/modules/basic-resource/package.json +52 -0
  188. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/.metadata/component/formFieldResourcePicker.ts +31 -0
  189. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/.metadata/index.ts +103 -0
  190. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/.metadata/this.ts +2 -0
  191. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/bean/tableCell.resourcePicker.tsx +46 -0
  192. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/component/formFieldResourcePicker/controller.tsx +157 -0
  193. package/zova/src/suite/cabloy-basic/modules/basic-resource/src/index.ts +1 -0
  194. package/zova/src/suite/cabloy-basic/modules/basic-resource/tsconfig.build.json +13 -0
  195. package/zova/src/suite/cabloy-basic/modules/basic-resource/tsconfig.json +5 -0
  196. package/zova/src/suite/cabloy-basic/modules/basic-select/package.json +1 -1
  197. package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +1 -1
  198. package/zova/src/suite/cabloy-basic/modules/basic-text/package.json +1 -1
  199. package/zova/src/suite/cabloy-basic/package.json +1 -0
  200. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +2 -2
  201. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
  202. package/zova/src/suite-vendor/a-zova/modules/a-api/package.json +2 -2
  203. package/zova/src/suite-vendor/a-zova/modules/a-app/package.json +2 -2
  204. package/zova/src/suite-vendor/a-zova/modules/a-bean/package.json +2 -2
  205. package/zova/src/suite-vendor/a-zova/modules/a-behavior/package.json +2 -2
  206. package/zova/src/suite-vendor/a-zova/modules/a-behaviors/package.json +2 -2
  207. package/zova/src/suite-vendor/a-zova/modules/a-boundary/package.json +2 -2
  208. package/zova/src/suite-vendor/a-zova/modules/a-command/package.json +2 -2
  209. package/zova/src/suite-vendor/a-zova/modules/a-fetch/package.json +2 -2
  210. package/zova/src/suite-vendor/a-zova/modules/a-form/package.json +2 -2
  211. package/zova/src/suite-vendor/a-zova/modules/a-icon/package.json +2 -2
  212. package/zova/src/suite-vendor/a-zova/modules/a-interceptor/package.json +2 -2
  213. package/zova/src/suite-vendor/a-zova/modules/a-logger/package.json +2 -2
  214. package/zova/src/suite-vendor/a-zova/modules/a-meta/package.json +2 -2
  215. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +2 -2
  216. package/zova/src/suite-vendor/a-zova/modules/a-model/src/bean/bean.model/bean.model.useQuery.ts +2 -1
  217. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +2 -2
  218. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/model/sdk.ts +4 -0
  219. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +2 -2
  220. package/zova/src/suite-vendor/a-zova/modules/a-routerstack/package.json +2 -2
  221. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +2 -2
  222. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +2 -2
  223. package/zova/src/suite-vendor/a-zova/modules/a-ssrhmr/package.json +2 -2
  224. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +2 -2
  225. package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +2 -2
  226. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +2 -2
  227. package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +3 -3
  228. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +3 -3
  229. package/zova/src/suite-vendor/a-zova/package.json +26 -26
@@ -40,7 +40,7 @@ overrides:
40
40
  '@vue/runtime-dom': '3.5.36'
41
41
  '@vue/server-renderer': '3.5.36'
42
42
  '@vue/shared': '3.5.36'
43
- zod: 'npm:@cabloy/zod@4.3.6'
43
+ zod: 'npm:@cabloy/zod@4.3.8'
44
44
 
45
45
  allowBuilds:
46
46
  '@swc/core': true
@@ -28,7 +28,7 @@
28
28
  "tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
29
29
  "prepublishOnly": "npm run tsc:publish",
30
30
  "prepack": "clean-package",
31
- "postpack": "clean-package restore && npm run clean"
31
+ "postpack": "clean-package restore"
32
32
  },
33
33
  "dependencies": {},
34
34
  "devDependencies": {
@@ -29,7 +29,7 @@
29
29
  "tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
30
30
  "prepublishOnly": "npm run tsc:publish",
31
31
  "prepack": "clean-package",
32
- "postpack": "clean-package restore && npm run clean"
32
+ "postpack": "clean-package restore"
33
33
  },
34
34
  "devDependencies": {
35
35
  "clean-package": "^2.2.0",
@@ -29,7 +29,7 @@
29
29
  "tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
30
30
  "prepublishOnly": "npm run tsc:publish",
31
31
  "prepack": "clean-package",
32
- "postpack": "clean-package restore && npm run clean"
32
+ "postpack": "clean-package restore"
33
33
  },
34
34
  "devDependencies": {
35
35
  "clean-package": "^2.2.0",
@@ -29,7 +29,7 @@
29
29
  "tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
30
30
  "prepublishOnly": "npm run tsc:publish",
31
31
  "prepack": "clean-package",
32
- "postpack": "clean-package restore && npm run clean"
32
+ "postpack": "clean-package restore"
33
33
  },
34
34
  "devDependencies": {
35
35
  "clean-package": "^2.2.0",
@@ -28,7 +28,7 @@
28
28
  "tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
29
29
  "prepublishOnly": "npm run tsc:publish",
30
30
  "prepack": "clean-package",
31
- "postpack": "clean-package restore && npm run clean"
31
+ "postpack": "clean-package restore"
32
32
  },
33
33
  "dependencies": {},
34
34
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  // eslint-disable
2
- import type { TypeEntityMeta,TypeModelsClassLikeGeneral,TypeSymbolKeyFieldsMore } from 'vona-module-a-orm';
3
- import type { TypeEntityOptionsFields } from 'vona-module-a-openapi';
2
+ import type { TypeEntityMeta,TypeModelsClassLikeGeneral,TypeSymbolKeyFieldsMore,IModelRelationBelongsTo,IModelRelationHasMany } from 'vona-module-a-orm';
3
+ import type { TypeEntityOptionsFields,TypeControllerOptionsActions } from 'vona-module-a-openapi';
4
4
  import type { TableIdentity } from 'table-identity';
5
5
  /** entity: begin */
6
6
  export * from '../entity/record.tsx';
@@ -84,7 +84,12 @@ declare module 'vona' {
84
84
  import type { IModelGetOptions, IModelMethodOptions, IModelSelectParams, TypeModelSelectAndCount, TypeModelRelationResult, TypeModelWhere, IModelInsertOptions, TypeModelMutateRelationData, IModelDeleteOptions, IModelUpdateOptions, IModelMutateOptions, IModelSelectCountParams, IModelIncrementParams, IModelSelectAggrParams, TypeModelAggrRelationResult, IModelSelectGroupParams, TypeModelGroupRelationResult } from 'vona-module-a-orm';
85
85
  import { SymbolKeyEntity, SymbolKeyEntityMeta, SymbolKeyModelOptions } from 'vona-module-a-orm';
86
86
  declare module 'vona-module-training-record' {
87
-
87
+ export interface IModelOptionsRecord {
88
+ relations: {
89
+ student: IModelRelationBelongsTo<'training-record:record', 'training-student:student', false, 'id'|'name'>;
90
+ trainingRecordSubjects: IModelRelationHasMany<'training-recordsubject:subject', 'recordId', false, 'id'|'name'|'score'|'description', undefined, undefined, undefined>;
91
+ };
92
+ }
88
93
  export interface ModelRecord {
89
94
  [SymbolKeyEntity]: EntityRecord;
90
95
  [SymbolKeyEntityMeta]: EntityRecordMeta;
@@ -121,6 +126,47 @@ declare module 'vona-module-a-orm' {
121
126
  }
122
127
  }
123
128
  /** model: end */
129
+ /** service: begin */
130
+ export * from '../service/record.ts';
131
+
132
+ import 'vona-module-a-bean';
133
+ declare module 'vona-module-a-bean' {
134
+
135
+ export interface IServiceRecord {
136
+ 'training-record:record': never;
137
+ }
138
+
139
+
140
+ }
141
+ declare module 'vona-module-training-record' {
142
+
143
+ export interface ServiceRecord {
144
+ /** @internal */
145
+ get scope(): ScopeModuleTrainingRecord;
146
+ }
147
+
148
+ export interface ServiceRecord {
149
+ get $beanFullName(): 'training-record.service.record';
150
+ get $onionName(): 'training-record:record';
151
+
152
+ }
153
+ }
154
+ /** service: end */
155
+ /** service: begin */
156
+ import type { ServiceRecord } from '../service/record.ts';
157
+ export interface IModuleService {
158
+ 'record': ServiceRecord;
159
+ }
160
+ /** service: end */
161
+ /** service: begin */
162
+
163
+ import 'vona';
164
+ declare module 'vona' {
165
+ export interface IBeanRecordGeneral {
166
+ 'training-record.service.record': ServiceRecord;
167
+ }
168
+ }
169
+ /** service: end */
124
170
  /** meta: begin */
125
171
  export * from '../bean/meta.index.ts';
126
172
  export * from '../bean/meta.version.ts';
@@ -160,6 +206,188 @@ declare module 'vona-module-training-record' {
160
206
  }
161
207
  }
162
208
  /** meta: end */
209
+ /** dto: begin */
210
+ export * from '../dto/detailRecordSubjectBase.tsx';
211
+ export * from '../dto/detailRecordSubjectMutate.tsx';
212
+ export * from '../dto/detailRecordSubjectResItem.tsx';
213
+ export * from '../dto/detailRecordSubjectView.tsx';
214
+ export * from '../dto/recordCreate.tsx';
215
+ export * from '../dto/recordSelectReq.tsx';
216
+ export * from '../dto/recordSelectRes.tsx';
217
+ export * from '../dto/recordSelectResItem.tsx';
218
+ export * from '../dto/recordUpdate.tsx';
219
+ export * from '../dto/recordView.tsx';
220
+ import type { IDtoOptionsDetailRecordSubjectBase } from '../dto/detailRecordSubjectBase.tsx';
221
+ import type { IDtoOptionsDetailRecordSubjectMutate } from '../dto/detailRecordSubjectMutate.tsx';
222
+ import type { IDtoOptionsDetailRecordSubjectResItem } from '../dto/detailRecordSubjectResItem.tsx';
223
+ import type { IDtoOptionsDetailRecordSubjectView } from '../dto/detailRecordSubjectView.tsx';
224
+ import type { IDtoOptionsRecordCreate } from '../dto/recordCreate.tsx';
225
+ import type { IDtoOptionsRecordSelectReq } from '../dto/recordSelectReq.tsx';
226
+ import type { IDtoOptionsRecordSelectRes } from '../dto/recordSelectRes.tsx';
227
+ import type { IDtoOptionsRecordSelectResItem } from '../dto/recordSelectResItem.tsx';
228
+ import type { IDtoOptionsRecordUpdate } from '../dto/recordUpdate.tsx';
229
+ import type { IDtoOptionsRecordView } from '../dto/recordView.tsx';
230
+ import 'vona-module-a-web';
231
+ declare module 'vona-module-a-web' {
232
+
233
+ export interface IDtoRecord {
234
+ 'training-record:detailRecordSubjectBase': IDtoOptionsDetailRecordSubjectBase;
235
+ 'training-record:detailRecordSubjectMutate': IDtoOptionsDetailRecordSubjectMutate;
236
+ 'training-record:detailRecordSubjectResItem': IDtoOptionsDetailRecordSubjectResItem;
237
+ 'training-record:detailRecordSubjectView': IDtoOptionsDetailRecordSubjectView;
238
+ 'training-record:recordCreate': IDtoOptionsRecordCreate;
239
+ 'training-record:recordSelectReq': IDtoOptionsRecordSelectReq;
240
+ 'training-record:recordSelectRes': IDtoOptionsRecordSelectRes;
241
+ 'training-record:recordSelectResItem': IDtoOptionsRecordSelectResItem;
242
+ 'training-record:recordUpdate': IDtoOptionsRecordUpdate;
243
+ 'training-record:recordView': IDtoOptionsRecordView;
244
+ }
245
+
246
+
247
+ }
248
+ declare module 'vona-module-training-record' {
249
+
250
+ }
251
+ /** dto: end */
252
+ /** dto: begin */
253
+ import type { DtoDetailRecordSubjectBase } from '../dto/detailRecordSubjectBase.tsx';
254
+ import type { DtoDetailRecordSubjectMutate } from '../dto/detailRecordSubjectMutate.tsx';
255
+ import type { DtoDetailRecordSubjectResItem } from '../dto/detailRecordSubjectResItem.tsx';
256
+ import type { DtoDetailRecordSubjectView } from '../dto/detailRecordSubjectView.tsx';
257
+ import type { DtoRecordCreate } from '../dto/recordCreate.tsx';
258
+ import type { DtoRecordSelectReq } from '../dto/recordSelectReq.tsx';
259
+ import type { DtoRecordSelectRes } from '../dto/recordSelectRes.tsx';
260
+ import type { DtoRecordSelectResItem } from '../dto/recordSelectResItem.tsx';
261
+ import type { DtoRecordUpdate } from '../dto/recordUpdate.tsx';
262
+ import type { DtoRecordView } from '../dto/recordView.tsx';
263
+ declare module 'vona-module-training-record' {
264
+
265
+ export interface IDtoOptionsDetailRecordSubjectBase {
266
+ fields?: TypeEntityOptionsFields<DtoDetailRecordSubjectBase, IDtoOptionsDetailRecordSubjectBase[TypeSymbolKeyFieldsMore]>;
267
+ }
268
+
269
+ export interface IDtoOptionsDetailRecordSubjectMutate {
270
+ fields?: TypeEntityOptionsFields<DtoDetailRecordSubjectMutate, IDtoOptionsDetailRecordSubjectMutate[TypeSymbolKeyFieldsMore]>;
271
+ }
272
+
273
+ export interface IDtoOptionsDetailRecordSubjectResItem {
274
+ fields?: TypeEntityOptionsFields<DtoDetailRecordSubjectResItem, IDtoOptionsDetailRecordSubjectResItem[TypeSymbolKeyFieldsMore]>;
275
+ }
276
+
277
+ export interface IDtoOptionsDetailRecordSubjectView {
278
+ fields?: TypeEntityOptionsFields<DtoDetailRecordSubjectView, IDtoOptionsDetailRecordSubjectView[TypeSymbolKeyFieldsMore]>;
279
+ }
280
+
281
+ export interface IDtoOptionsRecordCreate {
282
+ fields?: TypeEntityOptionsFields<DtoRecordCreate, IDtoOptionsRecordCreate[TypeSymbolKeyFieldsMore]>;
283
+ }
284
+
285
+ export interface IDtoOptionsRecordSelectReq {
286
+ fields?: TypeEntityOptionsFields<DtoRecordSelectReq, IDtoOptionsRecordSelectReq[TypeSymbolKeyFieldsMore]>;
287
+ }
288
+
289
+ export interface IDtoOptionsRecordSelectRes {
290
+ fields?: TypeEntityOptionsFields<DtoRecordSelectRes, IDtoOptionsRecordSelectRes[TypeSymbolKeyFieldsMore]>;
291
+ }
292
+
293
+ export interface IDtoOptionsRecordSelectResItem {
294
+ fields?: TypeEntityOptionsFields<DtoRecordSelectResItem, IDtoOptionsRecordSelectResItem[TypeSymbolKeyFieldsMore]>;
295
+ }
296
+
297
+ export interface IDtoOptionsRecordUpdate {
298
+ fields?: TypeEntityOptionsFields<DtoRecordUpdate, IDtoOptionsRecordUpdate[TypeSymbolKeyFieldsMore]>;
299
+ }
300
+
301
+ export interface IDtoOptionsRecordView {
302
+ fields?: TypeEntityOptionsFields<DtoRecordView, IDtoOptionsRecordView[TypeSymbolKeyFieldsMore]>;
303
+ }
304
+ }
305
+ /** dto: end */
306
+ /** controller: begin */
307
+ export * from '../controller/record.ts';
308
+ import type { IControllerOptionsRecord } from '../controller/record.ts';
309
+ import 'vona-module-a-web';
310
+ declare module 'vona-module-a-web' {
311
+
312
+ export interface IControllerRecord {
313
+ 'training-record:record': IControllerOptionsRecord;
314
+ }
315
+
316
+
317
+ }
318
+ declare module 'vona-module-training-record' {
319
+
320
+ export interface ControllerRecord {
321
+ /** @internal */
322
+ get scope(): ScopeModuleTrainingRecord;
323
+ }
324
+
325
+ export interface ControllerRecord {
326
+ get $beanFullName(): 'training-record.controller.record';
327
+ get $onionName(): 'training-record:record';
328
+ get $onionOptions(): IControllerOptionsRecord;
329
+ }
330
+ }
331
+ /** controller: end */
332
+ /** controller: begin */
333
+ // @ts-ignore ignore
334
+ import type { ControllerRecord } from '../controller/record.ts';
335
+ declare module 'vona-module-training-record' {
336
+
337
+ export interface IControllerOptionsRecord {
338
+ actions?: TypeControllerOptionsActions<ControllerRecord>;
339
+ }
340
+ }
341
+ declare module 'vona-module-a-web' {
342
+ export interface IApiPathPostRecord{
343
+ '/training/record': undefined;
344
+ }
345
+ export interface IApiPathGetRecord{
346
+ '/training/record': undefined;
347
+ '/training/record/:id': undefined;
348
+ }
349
+ export interface IApiPathPatchRecord{
350
+ '/training/record/:id': undefined;
351
+ }
352
+ export interface IApiPathDeleteRecord{
353
+ '/training/record/:id': undefined;
354
+ }
355
+
356
+ }
357
+ import 'vona-module-a-openapi';
358
+ declare module 'vona-module-a-openapi' {
359
+ export interface IResourceRecord {
360
+ 'training-record:record': never;
361
+ }
362
+ }
363
+
364
+ /** controller: end */
365
+ /** ssrMenu: begin */
366
+ export * from '../bean/ssrMenu.record.ts';
367
+ import type { ISsrMenuOptionsRecord } from '../bean/ssrMenu.record.ts';
368
+ import 'vona-module-a-ssr';
369
+ declare module 'vona-module-a-ssr' {
370
+
371
+ export interface ISsrMenuRecord {
372
+ 'training-record:record': ISsrMenuOptionsRecord;
373
+ }
374
+
375
+
376
+ }
377
+ declare module 'vona-module-training-record' {
378
+
379
+ export interface SsrMenuRecord {
380
+ /** @internal */
381
+ get scope(): ScopeModuleTrainingRecord;
382
+ }
383
+
384
+ export interface SsrMenuRecord {
385
+ get $beanFullName(): 'training-record.ssrMenu.record';
386
+ get $onionName(): 'training-record:record';
387
+ get $onionOptions(): ISsrMenuOptionsRecord;
388
+ }
389
+ }
390
+ /** ssrMenu: end */
163
391
  /** locale: begin */
164
392
  import { locales } from './locales.ts';
165
393
  /** locale: end */
@@ -175,6 +403,7 @@ export interface ScopeModuleTrainingRecord {
175
403
  locale: TypeModuleLocales<(typeof locales)[TypeLocaleBase]>;
176
404
  entity: IModuleEntity;
177
405
  model: IModuleModel;
406
+ service: IModuleService;
178
407
  }
179
408
 
180
409
  import 'vona';
@@ -13,7 +13,10 @@ export class MetaVersion extends BeanBase implements IMetaVersionUpdate {
13
13
  table.basicFields();
14
14
  table.tableIdentity(entityRecord.studentId).comment(entityRecord.$comment.studentId);
15
15
  table.string(entityRecord.name, 50).comment(entityRecord.$comment.name);
16
- table.integer(entityRecord.score).comment(entityRecord.$comment.score);
16
+ table.integer(entityRecord.subjectCount).comment(entityRecord.$comment.subjectCount);
17
+ table.integer(entityRecord.totalScore).comment(entityRecord.$comment.totalScore);
18
+ table.decimal(entityRecord.averageScore, 8, 2).comment(entityRecord.$comment.averageScore);
19
+ table.dateTime(entityRecord.trainingTime).comment(entityRecord.$comment.trainingTime);
17
20
  table.string(entityRecord.description, 255).comment(entityRecord.$comment.description);
18
21
  });
19
22
  }
@@ -0,0 +1,29 @@
1
+ import type { IDecoratorSsrMenuOptions } from 'vona-module-a-ssr';
2
+ import type { ISsrSiteOptionsAdmin } from 'vona-module-basic-siteadmin';
3
+
4
+ import { BeanBase } from 'vona';
5
+ import { $order } from 'vona-module-a-openapiutils';
6
+ import { SsrMenu } from 'vona-module-a-ssr';
7
+
8
+ import { $locale } from '../.metadata/locales.ts';
9
+
10
+ export interface ISsrMenuOptionsRecord extends IDecoratorSsrMenuOptions<ISsrSiteOptionsAdmin> {}
11
+
12
+ @SsrMenu<ISsrMenuOptionsRecord>({
13
+ items: {
14
+ record: {
15
+ title: $locale('TrainingRecord'),
16
+ order: $order(2),
17
+ icon: undefined,
18
+ link: 'presetResource',
19
+ meta: {
20
+ params: {
21
+ resource: 'training-record:record',
22
+ },
23
+ },
24
+ group: 'basic-siteadmin:management',
25
+ },
26
+ },
27
+ site: ['basic-siteadmin:admin'],
28
+ })
29
+ export class SsrMenuRecord extends BeanBase {}
@@ -1,7 +1,18 @@
1
1
  export default {
2
+ AverageScore: 'Average Score',
2
3
  Description: 'Description',
3
- Name: 'Name',
4
4
  Operations: 'Operations',
5
- TrainingRecord: 'Training Record',
6
- Score: 'Score',
5
+ Student: 'Student',
6
+ SubjectCount: 'Subject Count',
7
+ TotalScore: 'Total Score',
8
+ TrainingRecord: 'Student Training Record',
9
+ TrainingRecordName: 'Training Record Name',
10
+ TrainingTime: 'Training Time',
11
+ AddTrainingRecord: 'Add Student Training Record',
12
+ EditTrainingRecord: 'Edit Student Training Record',
13
+ ViewTrainingRecord: 'View Student Training Record',
14
+ TrainingRecordSubjects: 'Student Training Record Details',
15
+ AddTrainingRecordSubject: 'Add Student Training Record Detail',
16
+ EditTrainingRecordSubject: 'Edit Student Training Record Detail',
17
+ ViewTrainingRecordSubject: 'View Student Training Record Detail',
7
18
  };
@@ -1,7 +1,18 @@
1
1
  export default {
2
+ AverageScore: '平均分',
2
3
  Description: '描述',
3
- Name: '名称',
4
4
  Operations: '操作',
5
- TrainingRecord: '培训记录',
6
- Score: '成绩',
5
+ Student: '学生',
6
+ SubjectCount: '科目数量',
7
+ TotalScore: '总得分',
8
+ TrainingRecord: '学生培训记录',
9
+ TrainingRecordName: '培训记录名称',
10
+ TrainingTime: '培训时间',
11
+ AddTrainingRecord: '添加学生培训记录',
12
+ EditTrainingRecord: '编辑学生培训记录',
13
+ ViewTrainingRecord: '查看学生培训记录',
14
+ TrainingRecordSubjects: '学生培训记录明细',
15
+ AddTrainingRecordSubject: '添加学生培训记录明细',
16
+ EditTrainingRecordSubject: '编辑学生培训记录明细',
17
+ ViewTrainingRecordSubject: '查看学生培训记录明细',
7
18
  };
@@ -0,0 +1,59 @@
1
+ import type { TableIdentity } from 'table-identity';
2
+ import type { IQueryParams } from 'vona-module-a-orm';
3
+ import type { IDecoratorControllerOptions } from 'vona-module-a-web';
4
+
5
+ import { BeanBase } from 'vona';
6
+ import { Core } from 'vona-module-a-core';
7
+ import { Api, Resource, v } from 'vona-module-a-openapiutils';
8
+ import { Arg, Controller, Web } from 'vona-module-a-web';
9
+
10
+ import type { ModelRecord } from '../model/record.ts';
11
+
12
+ import { DtoRecordCreate } from '../dto/recordCreate.tsx';
13
+ import { DtoRecordSelectReq } from '../dto/recordSelectReq.tsx';
14
+ import { DtoRecordSelectRes } from '../dto/recordSelectRes.tsx';
15
+ import { DtoRecordUpdate } from '../dto/recordUpdate.tsx';
16
+ import { DtoRecordView } from '../dto/recordView.tsx';
17
+
18
+ export interface IControllerOptionsRecord extends IDecoratorControllerOptions {}
19
+
20
+ @Controller<IControllerOptionsRecord>('record')
21
+ @Resource()
22
+ export class ControllerRecord extends BeanBase {
23
+ @Web.post()
24
+ @Api.body(v.tableIdentity())
25
+ async create(@Arg.body() record: DtoRecordCreate): Promise<TableIdentity> {
26
+ return (await this.scope.service.record.create(record)).id;
27
+ }
28
+
29
+ @Web.get()
30
+ @Api.body(DtoRecordSelectRes)
31
+ @Core.serializer()
32
+ async select(
33
+ @Arg.filter(DtoRecordSelectReq) params: IQueryParams<ModelRecord>,
34
+ ): Promise<DtoRecordSelectRes> {
35
+ return await this.scope.service.record.select(params);
36
+ }
37
+
38
+ @Web.get(':id')
39
+ @Api.body(v.optional(), v.object(DtoRecordView))
40
+ @Core.serializer()
41
+ async view(
42
+ @Arg.param('id', v.tableIdentity()) id: TableIdentity,
43
+ ): Promise<DtoRecordView | undefined> {
44
+ return await this.scope.service.record.view(id);
45
+ }
46
+
47
+ @Web.patch(':id')
48
+ async update(
49
+ @Arg.param('id', v.tableIdentity()) id: TableIdentity,
50
+ @Arg.body() record: DtoRecordUpdate,
51
+ ) {
52
+ return await this.scope.service.record.update(id, record);
53
+ }
54
+
55
+ @Web.delete(':id')
56
+ async delete(@Arg.param('id', v.tableIdentity()) id: TableIdentity) {
57
+ return await this.scope.service.record.delete(id);
58
+ }
59
+ }
@@ -0,0 +1,18 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $makeMetadata } from 'vona-module-a-openapiutils';
4
+ import { $Dto } from 'vona-module-a-orm';
5
+ import { Dto } from 'vona-module-a-web';
6
+ import { ModelSubject } from 'vona-module-training-recordsubject';
7
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
8
+
9
+ export interface IDtoOptionsDetailRecordSubjectBase extends IDecoratorDtoOptions {}
10
+
11
+ @Dto<IDtoOptionsDetailRecordSubjectBase>({
12
+ fields: {
13
+ id: $makeMetadata(ZovaRender.visible(false)),
14
+ },
15
+ })
16
+ export class DtoDetailRecordSubjectBase extends $Dto.get(() => ModelSubject, {
17
+ columns: ['id', 'deleted', 'name', 'score', 'description'],
18
+ }) {}
@@ -0,0 +1,17 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $Dto } from 'vona-module-a-orm';
4
+ import { Dto } from 'vona-module-a-web';
5
+ import { ModelSubject } from 'vona-module-training-recordsubject';
6
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+
8
+ import { DtoDetailRecordSubjectBase } from './detailRecordSubjectBase.tsx';
9
+
10
+ export interface IDtoOptionsDetailRecordSubjectMutate extends IDecoratorDtoOptions {}
11
+
12
+ @Dto<IDtoOptionsDetailRecordSubjectMutate>({
13
+ blocks: [ZovaRender.block('basic-details:blockForm')],
14
+ })
15
+ export class DtoDetailRecordSubjectMutate extends $Dto.mutate(() => ModelSubject, {
16
+ dtoClass: DtoDetailRecordSubjectBase,
17
+ }) {}
@@ -0,0 +1,60 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
4
+ import { $Dto } from 'vona-module-a-orm';
5
+ import { Dto } from 'vona-module-a-web';
6
+ import { ModelSubject } from 'vona-module-training-recordsubject';
7
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
8
+
9
+ import { $locale } from '../.metadata/locales.ts';
10
+ import { DtoDetailRecordSubjectBase } from './detailRecordSubjectBase.tsx';
11
+
12
+ export interface IDtoOptionsDetailRecordSubjectResItem extends IDecoratorDtoOptions {}
13
+
14
+ @Dto<IDtoOptionsDetailRecordSubjectResItem>({
15
+ blocks: [
16
+ ZovaRender.block('basic-details:blockDetails', {
17
+ blocks: [
18
+ ZovaRender.block('basic-details:blockToolbarBulk', {
19
+ actions: [
20
+ ZovaRender.detailsActionBulk('basic-details:actionCreate', {
21
+ dialogOptions: { title: $locale('AddTrainingRecordSubject') },
22
+ permission: { formScene: ['create', 'edit'] },
23
+ }),
24
+ ],
25
+ }),
26
+ ZovaRender.block('basic-details:blockTable'),
27
+ ],
28
+ }),
29
+ ],
30
+ fields: {
31
+ name: $makeMetadata(
32
+ ZovaRender.cell('basic-details:actionView', {
33
+ dialogOptions: { title: $locale('ViewTrainingRecordSubject') },
34
+ }),
35
+ ),
36
+ },
37
+ })
38
+ export class DtoDetailRecordSubjectResItem extends $Dto.get(() => ModelSubject, {
39
+ dtoClass: DtoDetailRecordSubjectBase,
40
+ }) {
41
+ @Api.field(v.title('#'), ZovaRender.order(1, 'core'), ZovaRender.cell('basic-details:lineNumber'))
42
+ _lineNumber?: number;
43
+
44
+ @Api.field(
45
+ v.title($locale('Operations')),
46
+ ZovaRender.order(1, 'max'),
47
+ ZovaRender.cell('basic-details:actionOperationsRow', {
48
+ actions: [
49
+ ZovaRender.detailsActionRow('basic-details:actionUpdate', {
50
+ dialogOptions: { title: $locale('EditTrainingRecordSubject') },
51
+ permission: { formScene: ['create', 'edit'] },
52
+ }),
53
+ ZovaRender.detailsActionRow('basic-details:actionDelete', {
54
+ permission: { formScene: ['create', 'edit'] },
55
+ }),
56
+ ],
57
+ }),
58
+ )
59
+ _operationsRow?: unknown;
60
+ }
@@ -0,0 +1,17 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $Dto } from 'vona-module-a-orm';
4
+ import { Dto } from 'vona-module-a-web';
5
+ import { ModelSubject } from 'vona-module-training-recordsubject';
6
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+
8
+ import { DtoDetailRecordSubjectBase } from './detailRecordSubjectBase.tsx';
9
+
10
+ export interface IDtoOptionsDetailRecordSubjectView extends IDecoratorDtoOptions {}
11
+
12
+ @Dto<IDtoOptionsDetailRecordSubjectView>({
13
+ blocks: [ZovaRender.block('basic-details:blockForm')],
14
+ })
15
+ export class DtoDetailRecordSubjectView extends $Dto.get(() => ModelSubject, {
16
+ dtoClass: DtoDetailRecordSubjectBase,
17
+ }) {}
@@ -0,0 +1,45 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
4
+ import { $Dto } from 'vona-module-a-orm';
5
+ import { Dto } from 'vona-module-a-web';
6
+ import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+
8
+ import { $locale } from '../.metadata/locales.ts';
9
+ import { ModelRecord } from '../model/record.ts';
10
+ import { DtoDetailRecordSubjectMutate } from './detailRecordSubjectMutate.tsx';
11
+ import { DtoDetailRecordSubjectResItem } from './detailRecordSubjectResItem.tsx';
12
+
13
+ export interface IDtoOptionsRecordCreate extends IDecoratorDtoOptions {}
14
+
15
+ @Dto<IDtoOptionsRecordCreate>({
16
+ blocks: [
17
+ ZovaRender.block('basic-pageentry:blockPageEntry', {
18
+ blocks: [
19
+ ZovaRender.block('basic-pageentry:blockForm'),
20
+ ZovaRender.block('basic-pageentry:blockToolbarRow', {
21
+ actions: [
22
+ ZovaRender.formActionRow('basic-form:actionSubmit', {
23
+ permission: { actionInherit: 'update', formScene: ['create', 'edit'] },
24
+ }),
25
+ ZovaRender.formActionRow('basic-form:actionBack', { permission: { public: true } }),
26
+ ],
27
+ }),
28
+ ],
29
+ }),
30
+ ],
31
+ fields: {
32
+ trainingRecordSubjects: $makeMetadata(
33
+ v.title($locale('TrainingRecordSubjects')),
34
+ ZovaRender.order(8),
35
+ ZovaRender.field('basic-details:formFieldDetails'),
36
+ v.optional(),
37
+ ),
38
+ },
39
+ })
40
+ export class DtoRecordCreate extends $Dto.create(() => ModelRecord, {
41
+ include: { trainingRecordSubjects: { dtoClass: DtoDetailRecordSubjectMutate } },
42
+ }) {
43
+ @Api.field(ZovaRender.visible(false), v.optional(), v.array(DtoDetailRecordSubjectResItem))
44
+ _trainingRecordSubjects?: DtoDetailRecordSubjectResItem[];
45
+ }