@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,219 @@
1
+ import React, { useCallback } from 'react';
2
+ import type { CSSProperties } from 'react';
3
+ import { Button, Tooltip, Flex, Dropdown, Checkbox } from 'antd';
4
+ import { HolderOutlined } from '@ant-design/icons';
5
+ import {
6
+ DndContext,
7
+ PointerSensor,
8
+ useSensor,
9
+ useSensors,
10
+ type DragEndEvent,
11
+ } from '@dnd-kit/core';
12
+ import {
13
+ SortableContext,
14
+ arrayMove,
15
+ useSortable,
16
+ verticalListSortingStrategy,
17
+ } from '@dnd-kit/sortable';
18
+ import { CSS } from '@dnd-kit/utilities';
19
+ import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
20
+
21
+ // ─── Types ────────────────────────────────────────────────────────────────────
22
+
23
+ export interface ChartSwitcherItem {
24
+ /** 图表唯一标识,例如 "bar"、"line" */
25
+ key: string;
26
+ /** 显示的标签(Tooltip 文字) */
27
+ label: string;
28
+ /** Ant Design 图标节点,例如 <BarChartOutlined /> */
29
+ icon: React.ReactNode;
30
+ /** 是否在工具栏中显示(右键菜单勾选控制) */
31
+ visible: boolean;
32
+ }
33
+
34
+ export interface ChartSwitcherProps {
35
+ // ── 数据 ────────────────────────────────
36
+ /** 所有图表项(含顺序、visible 状态) */
37
+ items: ChartSwitcherItem[];
38
+ /** 当前选中的图表 key */
39
+ value: string;
40
+
41
+ // ── 事件 ────────────────────────────────
42
+ /** 点击图表按钮时触发 */
43
+ onChange: (key: string) => void;
44
+ /** 右键菜单勾选/拖动后,items 发生变化时触发 */
45
+ onItemsChange: (items: ChartSwitcherItem[]) => void;
46
+
47
+ // ── 样式 ────────────────────────────────
48
+ style?: CSSProperties;
49
+ className?: string;
50
+
51
+ // ── 测试 ────────────────────────────────
52
+ testId: string;
53
+ }
54
+
55
+ // ─── SortableMenuItem ─────────────────────────────────────────────────────────
56
+
57
+ interface SortableMenuItemProps {
58
+ item: ChartSwitcherItem;
59
+ isLastVisible: boolean;
60
+ testId: string;
61
+ onToggle: (key: string, checked: boolean) => void;
62
+ }
63
+
64
+ const SortableMenuItem: React.FC<SortableMenuItemProps> = ({
65
+ item,
66
+ isLastVisible,
67
+ testId,
68
+ onToggle,
69
+ }) => {
70
+ const {
71
+ attributes,
72
+ listeners,
73
+ setNodeRef,
74
+ transform,
75
+ transition,
76
+ isDragging,
77
+ } = useSortable({ id: item.key });
78
+
79
+ const itemStyle: CSSProperties = {
80
+ transform: CSS.Transform.toString(transform),
81
+ transition,
82
+ opacity: isDragging ? 0.5 : 1,
83
+ padding: '4px 0',
84
+ cursor: 'default',
85
+ userSelect: 'none',
86
+ };
87
+
88
+ return (
89
+ <Flex
90
+ ref={setNodeRef}
91
+ align="center"
92
+ gap={8}
93
+ style={itemStyle}
94
+ data-testid={`${testId}-menu-${item.key}`}
95
+ >
96
+ {/* 拖动手柄:仅手柄响应拖拽,避免干扰 Checkbox 点击 */}
97
+ <HolderOutlined
98
+ {...attributes}
99
+ {...listeners}
100
+ style={{ color: '#ccc', cursor: 'grab', touchAction: 'none' }}
101
+ />
102
+ <Checkbox
103
+ checked={item.visible}
104
+ disabled={isLastVisible}
105
+ onChange={(e) => onToggle(item.key, e.target.checked)}
106
+ />
107
+ {item.icon}
108
+ <span style={{ fontSize: 13 }}>{item.label}</span>
109
+ </Flex>
110
+ );
111
+ };
112
+
113
+ // ─── ChartSwitcher ────────────────────────────────────────────────────────────
114
+
115
+ export const ChartSwitcher: React.FC<ChartSwitcherProps> = ({
116
+ items,
117
+ value,
118
+ onChange,
119
+ onItemsChange,
120
+ style,
121
+ className,
122
+ testId,
123
+ }) => {
124
+ const visibleItems = items.filter((item) => item.visible);
125
+ const visibleCount = visibleItems.length;
126
+
127
+ const sensors = useSensors(
128
+ useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),
129
+ );
130
+
131
+ // 切换某项的 visible 状态
132
+ const handleToggleVisible = useCallback(
133
+ (key: string, checked: boolean) => {
134
+ const newItems = items.map((item) =>
135
+ item.key === key ? { ...item, visible: checked } : item,
136
+ );
137
+ onItemsChange(newItems);
138
+ // 若当前选中项被隐藏,自动切换到第一个 visible 项
139
+ if (!checked && key === value) {
140
+ const firstVisible = newItems.find((item) => item.visible);
141
+ if (firstVisible) onChange(firstVisible.key);
142
+ }
143
+ },
144
+ [items, value, onChange, onItemsChange],
145
+ );
146
+
147
+ // 拖拽结束,更新 items 顺序
148
+ const handleDragEnd = useCallback(
149
+ (event: DragEndEvent) => {
150
+ const { active, over } = event;
151
+ if (!over || active.id === over.id) return;
152
+ const oldIndex = items.findIndex((item) => item.key === active.id);
153
+ const newIndex = items.findIndex((item) => item.key === over.id);
154
+ onItemsChange(arrayMove(items, oldIndex, newIndex));
155
+ },
156
+ [items, onItemsChange],
157
+ );
158
+
159
+ // 右键菜单 overlay(自定义渲染,嵌入 DndContext)
160
+ const dropdownOverlay = (
161
+ <div
162
+ style={{
163
+ background: '#fff',
164
+ borderRadius: 8,
165
+ boxShadow: '0 6px 16px rgba(0,0,0,0.12)',
166
+ padding: '4px 0',
167
+ minWidth: 160,
168
+ }}
169
+ >
170
+ <DndContext
171
+ sensors={sensors}
172
+ modifiers={[restrictToVerticalAxis]}
173
+ onDragEnd={handleDragEnd}
174
+ >
175
+ <SortableContext
176
+ items={items.map((item) => item.key)}
177
+ strategy={verticalListSortingStrategy}
178
+ >
179
+ {items.map((item) => (
180
+ <div key={item.key} style={{ padding: '0 12px' }}>
181
+ <SortableMenuItem
182
+ item={item}
183
+ isLastVisible={item.visible && visibleCount === 1}
184
+ testId={testId}
185
+ onToggle={handleToggleVisible}
186
+ />
187
+ </div>
188
+ ))}
189
+ </SortableContext>
190
+ </DndContext>
191
+ </div>
192
+ );
193
+
194
+ return (
195
+ <Dropdown dropdownRender={() => dropdownOverlay} trigger={['contextMenu']}>
196
+ <Flex
197
+ gap={4}
198
+ align="center"
199
+ data-testid={testId}
200
+ style={{ ...style, cursor: 'context-menu' }}
201
+ className={className}
202
+ >
203
+ {visibleItems.map((item) => (
204
+ <Tooltip key={item.key} title={item.label} placement="bottom">
205
+ <Button
206
+ size="small"
207
+ type={value === item.key ? 'primary' : 'text'}
208
+ icon={item.icon}
209
+ onClick={() => onChange(item.key)}
210
+ data-testid={`${testId}-btn-${item.key}`}
211
+ />
212
+ </Tooltip>
213
+ ))}
214
+ </Flex>
215
+ </Dropdown>
216
+ );
217
+ };
218
+
219
+ export default ChartSwitcher;
@@ -0,0 +1,159 @@
1
+ import React, { useState } from 'react';
2
+ import type { CSSProperties } from 'react';
3
+ import { Button, Tooltip, Flex } from 'antd';
4
+ import {
5
+ BarChartOutlined,
6
+ LineChartOutlined,
7
+ PieChartOutlined,
8
+ } from '@ant-design/icons';
9
+ import { BarChart } from '@/components/canvas/BarChart';
10
+ import { LineChart } from '@/components/canvas/LineChart';
11
+ import { PieChart } from '@/components/canvas/PieChart';
12
+
13
+ // ─── Types ────────────────────────────────────────────────────────────────────
14
+
15
+ export type ChartViewerChart = 'bar' | 'line' | 'pie';
16
+
17
+ export interface ChartViewerProps {
18
+ // ── 图表配置 ────────────────────────────
19
+ /** 显示哪些图表及顺序,默认 ["bar", "line", "pie"] */
20
+ charts?: ChartViewerChart[];
21
+
22
+ // ── 布局 ────────────────────────────────
23
+ /** 图表高度,默认 300 */
24
+ height?: number;
25
+
26
+ // ── 初始状态 ────────────────────────────
27
+ /** 初始显示的图表类型,默认 charts[0] */
28
+ defaultVariant?: ChartViewerChart;
29
+
30
+ // ── 样式 ────────────────────────────────
31
+ style?: CSSProperties;
32
+ className?: string;
33
+
34
+ // ── 测试 ────────────────────────────────
35
+ testId: string;
36
+ }
37
+
38
+ // ─── Mock 数据 ────────────────────────────────────────────────────────────────
39
+
40
+ const MOCK_BAR_DATA = [
41
+ { name: 'Q1', value: 820 },
42
+ { name: 'Q2', value: 932 },
43
+ { name: 'Q3', value: 901 },
44
+ { name: 'Q4', value: 1290 },
45
+ ];
46
+
47
+ const MOCK_LINE_DATA = {
48
+ xData: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
49
+ series: [
50
+ { name: 'A 系列', data: [65, 72, 78, 85, 82, 91] },
51
+ { name: 'B 系列', data: [35, 28, 22, 15, 18, 9] },
52
+ ],
53
+ };
54
+
55
+ const MOCK_PIE_DATA = [
56
+ { name: '类目A', value: 335 },
57
+ { name: '类目B', value: 310 },
58
+ { name: '类目C', value: 234 },
59
+ { name: '类目D', value: 135 },
60
+ { name: '其他', value: 100 },
61
+ ];
62
+
63
+ // ─── 所有图表的元信息 ─────────────────────────────────────────────────────────
64
+
65
+ const CHART_META: Record<
66
+ ChartViewerChart,
67
+ { label: string; icon: React.ReactNode }
68
+ > = {
69
+ bar: { label: '柱状图', icon: <BarChartOutlined /> },
70
+ line: { label: '折线图', icon: <LineChartOutlined /> },
71
+ pie: { label: '饼图', icon: <PieChartOutlined /> },
72
+ };
73
+
74
+ const DEFAULT_CHARTS: ChartViewerChart[] = ['bar', 'line', 'pie'];
75
+
76
+ // ─── Component ────────────────────────────────────────────────────────────────
77
+
78
+ export const ChartViewer: React.FC<ChartViewerProps> = ({
79
+ charts = DEFAULT_CHARTS,
80
+ height = 300,
81
+ defaultVariant,
82
+ style,
83
+ className,
84
+ testId,
85
+ }) => {
86
+ const effectiveCharts = charts.length > 0 ? charts : DEFAULT_CHARTS;
87
+ const initialVariant =
88
+ defaultVariant && effectiveCharts.includes(defaultVariant)
89
+ ? defaultVariant
90
+ : effectiveCharts[0];
91
+
92
+ const [activeVariant, setActiveVariant] =
93
+ useState<ChartViewerChart>(initialVariant);
94
+ const active = effectiveCharts.includes(activeVariant)
95
+ ? activeVariant
96
+ : effectiveCharts[0];
97
+
98
+ return (
99
+ <div
100
+ style={{ position: 'relative', ...style }}
101
+ className={className}
102
+ data-testid={testId}
103
+ >
104
+ {/* ── 图表区域 ── */}
105
+ {active === 'bar' && (
106
+ <BarChart
107
+ variant="bar"
108
+ data={MOCK_BAR_DATA}
109
+ height={height}
110
+ testId={`${testId}-bar`}
111
+ />
112
+ )}
113
+ {active === 'line' && (
114
+ <LineChart
115
+ variant="stackLine"
116
+ data={MOCK_LINE_DATA}
117
+ height={height}
118
+ testId={`${testId}-line`}
119
+ />
120
+ )}
121
+ {active === 'pie' && (
122
+ <PieChart
123
+ variant="pie"
124
+ data={MOCK_PIE_DATA}
125
+ height={height}
126
+ testId={`${testId}-pie`}
127
+ />
128
+ )}
129
+
130
+ {/* ── 右上角切换按钮(按 charts 顺序渲染) ── */}
131
+ <Flex
132
+ gap={2}
133
+ style={{
134
+ position: 'absolute',
135
+ top: 8,
136
+ right: 8,
137
+ zIndex: 1,
138
+ }}
139
+ >
140
+ {effectiveCharts.map((key) => {
141
+ const { label, icon } = CHART_META[key];
142
+ return (
143
+ <Tooltip key={key} title={label} placement="bottom">
144
+ <Button
145
+ size="small"
146
+ type={active === key ? 'primary' : 'text'}
147
+ icon={icon}
148
+ onClick={() => setActiveVariant(key)}
149
+ data-testid={`${testId}-btn-${key}`}
150
+ />
151
+ </Tooltip>
152
+ );
153
+ })}
154
+ </Flex>
155
+ </div>
156
+ );
157
+ };
158
+
159
+ export default ChartViewer;
@@ -0,0 +1,192 @@
1
+ import React from 'react';
2
+ import { Button, Card, Form } from 'antd';
3
+ import { useTranslation } from 'react-i18next';
4
+ import type { FormInstance, FormProps } from 'antd';
5
+
6
+ // ─── Types ────────────────────────────────────────────────────────────────────
7
+
8
+ export type FilterLayout = 'card-grid' | 'inline' | 'inline-right';
9
+
10
+ export interface FilterProps {
11
+ // ── 布局 ──────────────────────────────────────────────────────────────────
12
+ /**
13
+ * 布局模式:
14
+ * - `"card-grid"`(默认):Card 包裹 + CSS grid,适用于多字段过滤条(如 software、staff、hardware)
15
+ * - `"inline"`:Form layout=inline 单行,适用于少量字段(如 network、ssc)
16
+ * - `"inline-right"`:右对齐 flex,无搜索/重置按钮,字段变化自动触发(如 soc、tsec)
17
+ */
18
+ layout?: FilterLayout;
19
+
20
+ /**
21
+ * grid 列数,仅在 `layout="card-grid"` 时有效。默认 4。
22
+ */
23
+ columns?: number;
24
+
25
+ // ── 表单 ──────────────────────────────────────────────────────────────────
26
+ /** 透传给 antd Form 的 props(initialValues、onValuesChange 等),layout 和 form 由组件内部管理 */
27
+ formProps?: Omit<FormProps, 'form' | 'layout' | 'onFinish' | 'style'>;
28
+
29
+ /** 外部传入 form 实例(需要在父组件访问 form.resetFields() 等方法时使用) */
30
+ form?: FormInstance;
31
+
32
+ /** 点击"查询"或 Form onFinish 时的回调 */
33
+ onSearch: (values: any) => void;
34
+
35
+ /**
36
+ * 点击"重置"时的回调。
37
+ * 若不传,重置只执行 form.resetFields(),不会触发 onSearch。
38
+ * 若传入,重置后会以初始值重新调用 onSearch。
39
+ */
40
+ onReset?: (form: FormInstance) => void;
41
+
42
+ // ── 按钮 ──────────────────────────────────────────────────────────────────
43
+ /**
44
+ * 是否显示搜索/重置按钮。
45
+ * `layout="inline-right"` 时默认 false,其余默认 true。
46
+ */
47
+ showActions?: boolean;
48
+
49
+ /** 查询按钮文字,默认读 i18n `common.query` */
50
+ searchText?: string;
51
+
52
+ /** 重置按钮文字,默认读 i18n `common.reset` */
53
+ resetText?: string;
54
+
55
+ // ── 样式 ──────────────────────────────────────────────────────────────────
56
+ className?: string;
57
+ style?: React.CSSProperties;
58
+
59
+ // ── 测试 / AI 定位 ────────────────────────────────────────────────────────
60
+ testId: string;
61
+
62
+ // ── 子字段 ────────────────────────────────────────────────────────────────
63
+ children?: React.ReactNode;
64
+ }
65
+
66
+ // ─── 组件 ─────────────────────────────────────────────────────────────────────
67
+
68
+ export const Filter: React.FC<FilterProps> = ({
69
+ layout = 'card-grid',
70
+ columns = 4,
71
+ formProps,
72
+ form: externalForm,
73
+ onSearch,
74
+ onReset,
75
+ showActions,
76
+ searchText,
77
+ resetText,
78
+ className,
79
+ style,
80
+ testId,
81
+ children,
82
+ }) => {
83
+ const { t } = useTranslation();
84
+ const [internalForm] = Form.useForm();
85
+ const form = externalForm ?? internalForm;
86
+
87
+ // inline-right 默认不显示按钮
88
+ const shouldShowActions = showActions ?? layout !== 'inline-right';
89
+
90
+ const handleFinish = (values: any) => {
91
+ onSearch(values);
92
+ };
93
+
94
+ const handleReset = () => {
95
+ if (onReset) {
96
+ onReset(form);
97
+ } else {
98
+ form.resetFields();
99
+ }
100
+ };
101
+
102
+ // ── 搜索/重置按钮 ────────────────────────────────────────────────────────
103
+ const actionsNode = shouldShowActions && (
104
+ <Form.Item shouldUpdate style={{ marginBottom: 0 }}>
105
+ {() => (
106
+ <>
107
+ <Button style={{ marginRight: 8 }} type="primary" htmlType="submit">
108
+ {searchText ?? t('common.query')}
109
+ </Button>
110
+ <Button type="default" onClick={handleReset}>
111
+ {resetText ?? t('common.reset')}
112
+ </Button>
113
+ </>
114
+ )}
115
+ </Form.Item>
116
+ );
117
+
118
+ // ── card-grid 布局 ────────────────────────────────────────────────────────
119
+ if (layout === 'card-grid') {
120
+ return (
121
+ <Form
122
+ form={form}
123
+ layout="inline"
124
+ onFinish={handleFinish}
125
+ style={{ width: '100%', ...style }}
126
+ {...formProps}
127
+ data-testid={testId}
128
+ className={className}
129
+ >
130
+ <Card style={{ width: '100%' }}>
131
+ <div
132
+ style={{
133
+ display: 'grid',
134
+ gridTemplateColumns: `repeat(${columns}, 1fr)`,
135
+ width: '100%',
136
+ gap: '10px 0',
137
+ }}
138
+ >
139
+ {children}
140
+ {actionsNode}
141
+ </div>
142
+ </Card>
143
+ </Form>
144
+ );
145
+ }
146
+
147
+ // ── inline-right 布局 ─────────────────────────────────────────────────────
148
+ if (layout === 'inline-right') {
149
+ return (
150
+ <div
151
+ style={{
152
+ width: '100%',
153
+ display: 'flex',
154
+ justifyContent: 'flex-end',
155
+ ...style,
156
+ }}
157
+ data-testid={testId}
158
+ className={className}
159
+ >
160
+ <Form
161
+ form={form}
162
+ onFinish={handleFinish}
163
+ style={{ marginBottom: 0 }}
164
+ {...formProps}
165
+ >
166
+ <div style={{ display: 'flex', gap: 12, alignItems: 'center' }}>
167
+ {children}
168
+ {actionsNode}
169
+ </div>
170
+ </Form>
171
+ </div>
172
+ );
173
+ }
174
+
175
+ // ── inline 布局(默认 fallback)────────────────────────────────────────────
176
+ return (
177
+ <Form
178
+ form={form}
179
+ layout="inline"
180
+ onFinish={handleFinish}
181
+ style={{ width: '100%', ...style }}
182
+ data-testid={testId}
183
+ className={className}
184
+ {...formProps}
185
+ >
186
+ {children}
187
+ {actionsNode}
188
+ </Form>
189
+ );
190
+ };
191
+
192
+ export default Filter;