@gadmin2n/schematics 0.0.69 → 0.0.70

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 (223) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/canvas.prisma +45 -0
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/example.prisma +24 -23
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +93 -90
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Audit.ts +70 -0
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +3 -3
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Page.ts +70 -0
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/PageResource.ts +70 -0
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Resource.ts +70 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RolePages.ts +70 -0
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RoleResource.ts +70 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/SavedQuery.ts +70 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/User.ts +70 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +95 -2
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +4 -2
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +7 -1
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/config/index.ts +1 -3
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +1 -1
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +6 -5
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +157 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +290 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/permission-manage.ts +184 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/prismaModels.ts +143 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/sync-resources.ts +100 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/syncDataMngtPages.ts +119 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +1 -3
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +109 -143
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +5 -2
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.spec.ts +20 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.ts +81 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.dto.ts +49 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.module.ts +11 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.spec.ts +334 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.ts +249 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +2 -1
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.ts +2 -2
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.ts +17 -4
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +7737 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.env +1 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.eslintrc.json +38 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.prettierignore +2 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/web/dev-shell-entry.html +49 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -2
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +137 -111
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +46 -44
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +32 -12
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +74 -23
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +9 -9
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +57 -31
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +53 -24
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SqlModal.tsx +148 -72
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +190 -16
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +914 -63
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/agentAttributes.ts +17 -8
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/index.ts +0 -10
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +969 -46
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/pagePathUtils.ts +66 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/promptGenerator.ts +85 -25
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/propPatcher.ts +84 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +16 -20
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/index.ts +4 -4
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +13 -13
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +15 -16
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +15 -15
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +2 -2
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/BarChart/index.tsx +896 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartSwitcher/index.tsx +219 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartViewer/index.tsx +159 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Filter/index.tsx +192 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/LineChart/index.tsx +1034 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/NumCard.module.css +8 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +509 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +66 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/PieChart/index.tsx +552 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/RadarChart/index.tsx +263 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Section/index.tsx +35 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Table/index.tsx +207 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/TreemapChart/index.tsx +382 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/WorldMap/index.tsx +135 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/chart-constants.ts +53 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/InfoIcon.tsx +8 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/index.ts +1 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/config.ts +31 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/nameMap.json +9 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/world.geo.json +39349 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/metric-info-tooltip/index.tsx +19 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +12 -12
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +22 -26
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +13 -9
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +4 -4
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +22 -37
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +4 -4
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +10 -10
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +1 -1
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +113 -65
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +14 -14
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +1 -1
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +2 -2
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/index.ts +1 -1
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +21 -21
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +17 -13
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/http.ts +26 -5
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +221 -51
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +3 -3
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +199 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +335 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +56 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +401 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +129 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +202 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/UndoConfirm.tsx +36 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/index.tsx +8 -0
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +835 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/audit-log.enum.ts +8 -8
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/index.ts +1 -1
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +120 -70
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-name-initials.ts +3 -3
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-random-color.ts +11 -11
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +16 -19
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +1 -1
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +99 -73
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +22 -27
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/page-tree.ts +74 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +95 -51
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.tsx +7 -3
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +15 -15
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchDelete.ts +10 -10
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperations.ts +8 -7
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperationsCore.ts +10 -10
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchUpdate.ts +10 -10
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +36 -27
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useECharts.tsx +144 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useFetchData.ts +4 -4
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +34 -34
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRoles.ts +8 -4
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRowSelection.ts +1 -1
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useUserPageAccess.ts +55 -41
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +8 -8
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +9 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +193 -0
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +194 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +81 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +37 -37
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +23 -31
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +34 -35
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +1 -1
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +4 -6
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +41 -34
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +33 -20
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +87 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasEditPage.tsx +192 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +409 -0
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +1372 -0
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +384 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +476 -0
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +135 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/IsolatedLivePreview.tsx +101 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/LivePreview.tsx +236 -0
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +200 -0
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasApi.ts +92 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasConfigRegistry.tsx +25 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +875 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +126 -0
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasI18n.ts +11 -0
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +115 -0
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ChartViewerConfigModal.tsx +217 -0
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +153 -0
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +211 -0
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +90 -0
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +87 -0
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +204 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/demos.ts +1153 -0
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/index.tsx +2 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +45 -0
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +45 -0
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +108 -0
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/create.tsx +105 -0
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +121 -0
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/index.tsx +4 -0
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +237 -0
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +74 -0
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +29 -20
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +3 -3
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +7 -3
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +58 -23
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +206 -122
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +8 -4
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +1 -1
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +345 -190
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +1 -1
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +341 -340
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +2 -2
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +2 -2
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +41 -24
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +64 -36
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +2 -2
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +78 -40
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +3 -3
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +4 -4
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +19 -9
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +45 -47
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +4 -4
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +1 -1
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +121 -147
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/types.ts +1 -1
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +2 -2
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +2 -2
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +25 -19
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/index.ts +5 -5
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +10 -10
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +31 -26
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +1 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +76 -71
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/setupTests.ts +1 -1
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/audit-log.ts +1 -1
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/index.ts +3 -3
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/role.ts +1 -1
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/user.ts +1 -1
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +42 -25
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +1193 -32
  220. package/package.json +1 -1
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/seedDataMngtPages.ts +0 -258
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentPanel.tsx +0 -497
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/skills.ts +0 -464
@@ -0,0 +1,409 @@
1
+ import React, { useState, useEffect, useCallback, useRef } from 'react';
2
+ import { useNavigate } from 'react-router-dom';
3
+ import { Button, message, Tag, Spin, Modal, Input } from 'antd';
4
+ import { PlusOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons';
5
+ import {
6
+ fetchCanvases,
7
+ createCanvas,
8
+ deleteCanvas,
9
+ updateCanvas,
10
+ } from './canvasApi';
11
+ import type { SavedCanvas } from './types';
12
+ import IsolatedLivePreview from './IsolatedLivePreview';
13
+ import { useTranslation } from 'react-i18next';
14
+
15
+ const COLS = 48;
16
+ const ROW_HEIGHT = 10;
17
+ const MARGIN = 8;
18
+
19
+ /**
20
+ * 将 canvas items + layout 转为绝对定位的 JSX,模拟 GridLayout 效果。
21
+ * 使用内联样式绝对定位,无需 import,LivePreview scope 可直接渲染。
22
+ */
23
+ function buildPreviewCode(canvas: SavedCanvas): string {
24
+ const { items, layout } = canvas;
25
+ const itemById = Object.fromEntries(items.map((it) => [it.id, it]));
26
+
27
+ // 用 1200px 作为容器宽度来计算列宽
28
+ const containerWidth = 1200;
29
+ const colWidth = (containerWidth - MARGIN * (COLS + 1)) / COLS;
30
+
31
+ const children = layout
32
+ .map((l) => {
33
+ const item = itemById[l.i];
34
+ if (!item) return '';
35
+ const x = Math.round(MARGIN + l.x * (colWidth + MARGIN));
36
+ const y = Math.round(MARGIN + l.y * (ROW_HEIGHT + MARGIN));
37
+ const w = Math.round(l.w * colWidth + (l.w - 1) * MARGIN);
38
+ const h = Math.round(l.h * ROW_HEIGHT + (l.h - 1) * MARGIN);
39
+ const code = item.code.trim();
40
+ const isFunction =
41
+ code.startsWith('()') ||
42
+ code.startsWith('(props)') ||
43
+ code.startsWith('function ');
44
+ const embeddedCode = isFunction ? `{(${code})()}` : code;
45
+ return `<div style={{ position: 'absolute', left: ${x}, top: ${y}, width: ${w}, height: ${h}, background: '#fff', overflow: 'hidden' }}>\n ${embeddedCode}\n</div>`;
46
+ })
47
+ .filter(Boolean);
48
+
49
+ const totalH =
50
+ layout.reduce((m, l) => Math.max(m, l.y + l.h), 0) * (ROW_HEIGHT + MARGIN);
51
+
52
+ return `<div style={{ position: 'relative', width: ${containerWidth}, height: ${totalH}, background: '#f0f0f0' }}>\n${children.join('\n')}\n</div>`;
53
+ }
54
+
55
+ const CanvasListPage: React.FC = () => {
56
+ const navigate = useNavigate();
57
+ const [canvases, setCanvases] = useState<SavedCanvas[]>([]);
58
+ const [loading, setLoading] = useState(true);
59
+ const { t } = useTranslation();
60
+
61
+ console.log('[CanvasListPage] rendered, pathname:', window.location.pathname);
62
+
63
+ useEffect(() => {
64
+ fetchCanvases()
65
+ .then(setCanvases)
66
+ .catch(() => message.error(t('canvas.list.loadFailed')))
67
+ .finally(() => setLoading(false));
68
+ }, []);
69
+
70
+ const handleCreate = useCallback(async () => {
71
+ try {
72
+ const nextNum =
73
+ Math.max(
74
+ 0,
75
+ ...canvases
76
+ .map((p) => {
77
+ const m = p.name.match(/^Canvas\s+(\d+)$/);
78
+ return m ? parseInt(m[1], 10) : 0;
79
+ })
80
+ .filter((n) => n > 0),
81
+ ) + 1;
82
+ const newCanvas = await createCanvas(`Canvas ${nextNum}`);
83
+ navigate(`/admin/canvas/edit/${newCanvas.id}`);
84
+ } catch {
85
+ message.error(t('canvas.list.createFailed'));
86
+ }
87
+ }, [canvases, navigate]);
88
+
89
+ const handleDelete = useCallback(async (id: string) => {
90
+ try {
91
+ await deleteCanvas(id);
92
+ setCanvases((prev) => prev.filter((c) => c.id !== id));
93
+ message.success(t('canvas.list.deleted'));
94
+ } catch {
95
+ message.error(t('canvas.list.deleteFailed'));
96
+ }
97
+ }, []);
98
+
99
+ // ── 重命名逻辑 ──
100
+ const [renameModal, setRenameModal] = useState<{
101
+ id: string;
102
+ name: string;
103
+ isPublished: boolean;
104
+ } | null>(null);
105
+ const [renameValue, setRenameValue] = useState('');
106
+ const [renameError, setRenameError] = useState('');
107
+ const [renameLoading, setRenameLoading] = useState(false);
108
+ const renameInputRef = useRef<any>(null);
109
+
110
+ const openRename = useCallback((canvas: SavedCanvas) => {
111
+ setRenameModal({
112
+ id: canvas.id,
113
+ name: canvas.name,
114
+ isPublished: !!canvas.publishedPageCode,
115
+ });
116
+ setRenameValue(canvas.name);
117
+ setRenameError('');
118
+ }, []);
119
+
120
+ const handleRename = useCallback(async () => {
121
+ if (!renameModal) return;
122
+ const trimmed = renameValue.trim();
123
+ if (!trimmed) {
124
+ setRenameError(t('canvas.list.renameEmpty'));
125
+ return;
126
+ }
127
+ if (trimmed === renameModal.name) {
128
+ setRenameModal(null);
129
+ return;
130
+ }
131
+ setRenameLoading(true);
132
+ try {
133
+ await updateCanvas(renameModal.id, { name: trimmed });
134
+ setCanvases((prev) =>
135
+ prev.map((c) =>
136
+ c.id === renameModal.id ? { ...c, name: trimmed } : c,
137
+ ),
138
+ );
139
+ setRenameModal(null);
140
+ message.success(t('canvas.list.renamed'));
141
+ // 如果已发布,清除导航缓存并刷新
142
+ if (renameModal.isPublished) {
143
+ sessionStorage.removeItem('oiterpages');
144
+ sessionStorage.removeItem('oiterprolepages');
145
+ window.location.reload();
146
+ }
147
+ } catch (err: any) {
148
+ if (err?.response?.status === 409 || err?.status === 409) {
149
+ setRenameError(t('canvas.list.renameDuplicate'));
150
+ } else {
151
+ message.error(t('canvas.list.renameFailed'));
152
+ }
153
+ } finally {
154
+ setRenameLoading(false);
155
+ }
156
+ }, [renameModal, renameValue]);
157
+
158
+ // ── 删除确认 ──
159
+ const [deleteConfirm, setDeleteConfirm] = useState<SavedCanvas | null>(null);
160
+
161
+ if (loading) {
162
+ return (
163
+ <div
164
+ style={{
165
+ display: 'flex',
166
+ justifyContent: 'center',
167
+ alignItems: 'center',
168
+ minHeight: 400,
169
+ }}
170
+ >
171
+ <Spin size="large" />
172
+ </div>
173
+ );
174
+ }
175
+
176
+ return (
177
+ <div
178
+ style={{
179
+ padding: 24,
180
+ background: '#f0f2f5',
181
+ minHeight: 'calc(100vh - 64px)',
182
+ }}
183
+ >
184
+ {/* Header */}
185
+ <div
186
+ style={{
187
+ display: 'flex',
188
+ justifyContent: 'space-between',
189
+ alignItems: 'center',
190
+ marginBottom: 24,
191
+ }}
192
+ >
193
+ <h2 style={{ margin: 0, fontSize: 20, fontWeight: 600 }}>
194
+ {t('canvas.list.title')}
195
+ </h2>
196
+ <Button type="primary" icon={<PlusOutlined />} onClick={handleCreate}>
197
+ {t('canvas.list.create')}
198
+ </Button>
199
+ </div>
200
+
201
+ {/* Grid */}
202
+ <div
203
+ style={{
204
+ display: 'grid',
205
+ gridTemplateColumns: 'repeat(3, 1fr)',
206
+ gap: 20,
207
+ }}
208
+ >
209
+ {canvases.map((canvas) => (
210
+ <div
211
+ key={canvas.id}
212
+ style={{
213
+ background: '#fff',
214
+ borderRadius: 8,
215
+ overflow: 'hidden',
216
+ border: '1px solid #e5e5e5',
217
+ cursor: 'pointer',
218
+ transition: 'box-shadow 0.2s',
219
+ }}
220
+ onMouseEnter={(e) => {
221
+ (e.currentTarget as HTMLDivElement).style.boxShadow =
222
+ '0 4px 12px rgba(0,0,0,0.1)';
223
+ }}
224
+ onMouseLeave={(e) => {
225
+ (e.currentTarget as HTMLDivElement).style.boxShadow = 'none';
226
+ }}
227
+ onClick={() => navigate(`/admin/canvas/edit/${canvas.id}`)}
228
+ >
229
+ {/* Thumbnail */}
230
+ <div
231
+ style={{
232
+ height: 180,
233
+ overflow: 'hidden',
234
+ background: '#f0f0f0',
235
+ position: 'relative',
236
+ pointerEvents: 'none',
237
+ }}
238
+ >
239
+ {canvas.items.length > 0 ? (
240
+ <div
241
+ style={{
242
+ transform: 'scale(0.28)',
243
+ transformOrigin: 'top left',
244
+ width: 1200,
245
+ height: 640,
246
+ }}
247
+ >
248
+ <IsolatedLivePreview code={buildPreviewCode(canvas)} />
249
+ </div>
250
+ ) : (
251
+ <div
252
+ style={{
253
+ display: 'flex',
254
+ alignItems: 'center',
255
+ justifyContent: 'center',
256
+ height: '100%',
257
+ color: '#bbb',
258
+ fontSize: 14,
259
+ }}
260
+ >
261
+ 空画布
262
+ </div>
263
+ )}
264
+ </div>
265
+
266
+ {/* Info */}
267
+ <div
268
+ style={{ padding: '12px 16px', borderTop: '1px solid #f0f0f0' }}
269
+ >
270
+ <div
271
+ style={{
272
+ display: 'flex',
273
+ justifyContent: 'space-between',
274
+ alignItems: 'center',
275
+ marginBottom: 8,
276
+ }}
277
+ >
278
+ <span
279
+ style={{
280
+ fontWeight: 500,
281
+ fontSize: 14,
282
+ overflow: 'hidden',
283
+ textOverflow: 'ellipsis',
284
+ whiteSpace: 'nowrap',
285
+ maxWidth: 160,
286
+ }}
287
+ >
288
+ {canvas.name}
289
+ </span>
290
+ <Tag color={canvas.publishedPageCode ? 'green' : 'default'}>
291
+ {canvas.publishedPageCode
292
+ ? t('canvas.list.published')
293
+ : t('canvas.list.unpublished')}
294
+ </Tag>
295
+ </div>
296
+ <div
297
+ style={{
298
+ display: 'flex',
299
+ justifyContent: 'space-between',
300
+ alignItems: 'center',
301
+ }}
302
+ >
303
+ <span style={{ fontSize: 12, color: '#999' }}>
304
+ 修改于 {new Date(canvas.updatedAt).toLocaleString('zh-CN')}
305
+ </span>
306
+ <div style={{ display: 'flex', gap: 4 }}>
307
+ <Button
308
+ type="text"
309
+ size="small"
310
+ icon={<EditOutlined />}
311
+ onClick={(e) => {
312
+ e.stopPropagation();
313
+ openRename(canvas);
314
+ }}
315
+ style={{ fontSize: 12, color: '#666' }}
316
+ >
317
+ {t('canvas.list.rename')}
318
+ </Button>
319
+ <Button
320
+ type="text"
321
+ size="small"
322
+ danger
323
+ icon={<DeleteOutlined />}
324
+ onClick={(e) => {
325
+ e.stopPropagation();
326
+ setDeleteConfirm(canvas);
327
+ }}
328
+ style={{ fontSize: 12 }}
329
+ >
330
+ {t('canvas.list.deleteBtn')}
331
+ </Button>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ </div>
336
+ ))}
337
+ </div>
338
+
339
+ {/* Empty state */}
340
+ {canvases.length === 0 && (
341
+ <div style={{ textAlign: 'center', color: '#999', marginTop: 80 }}>
342
+ <p>还没有 Canvas,点击上方按钮新建一个吧</p>
343
+ </div>
344
+ )}
345
+
346
+ {/* 重命名 Modal */}
347
+ <Modal
348
+ title={t('canvas.list.renameTitle')}
349
+ open={!!renameModal}
350
+ onOk={handleRename}
351
+ onCancel={() => setRenameModal(null)}
352
+ confirmLoading={renameLoading}
353
+ okText={t('canvas.list.ok')}
354
+ cancelText={t('canvas.list.cancel')}
355
+ afterOpenChange={(open) => {
356
+ if (open) {
357
+ setTimeout(() => renameInputRef.current?.select(), 50);
358
+ }
359
+ }}
360
+ >
361
+ <Input
362
+ ref={renameInputRef}
363
+ value={renameValue}
364
+ onChange={(e) => {
365
+ setRenameValue(e.target.value);
366
+ setRenameError('');
367
+ }}
368
+ onPressEnter={handleRename}
369
+ status={renameError ? 'error' : undefined}
370
+ placeholder={t('canvas.list.renamePlaceholder')}
371
+ />
372
+ {renameModal?.isPublished && (
373
+ <div style={{ color: '#faad14', fontSize: 12, marginTop: 8 }}>
374
+ {t('canvas.list.renamePublishedWarning')}
375
+ </div>
376
+ )}
377
+ {renameError && (
378
+ <div style={{ color: '#ff4d4f', fontSize: 12, marginTop: 4 }}>
379
+ {renameError}
380
+ </div>
381
+ )}
382
+ </Modal>
383
+
384
+ {/* 删除确认 Modal */}
385
+ <Modal
386
+ title={t('canvas.list.deleteTitle')}
387
+ open={!!deleteConfirm}
388
+ onOk={() => {
389
+ if (deleteConfirm) {
390
+ handleDelete(deleteConfirm.id);
391
+ setDeleteConfirm(null);
392
+ }
393
+ }}
394
+ onCancel={() => setDeleteConfirm(null)}
395
+ okText={t('canvas.list.deleteBtn')}
396
+ okButtonProps={{ danger: true }}
397
+ cancelText={t('canvas.list.cancel')}
398
+ >
399
+ <p>
400
+ {deleteConfirm?.publishedPageCode
401
+ ? t('canvas.list.deletePublishedConfirm')
402
+ : t('canvas.list.deleteConfirm')}
403
+ </p>
404
+ </Modal>
405
+ </div>
406
+ );
407
+ };
408
+
409
+ export default CanvasListPage;