@memberjunction/ng-dashboards 5.30.1 → 5.32.0

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 (424) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  2. package/dist/AI/components/agents/agent-configuration.component.js +4 -4
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.js +8 -6
  7. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +2 -1
  9. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  10. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +6 -5
  11. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  12. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +2 -1
  13. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  14. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +6 -5
  15. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  16. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +2 -1
  17. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  18. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +6 -5
  19. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  20. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts +2 -1
  21. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  22. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +7 -4
  23. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  24. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +3 -2
  25. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/model-performance/model-performance.component.js +10 -6
  27. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  28. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +2 -1
  29. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +6 -5
  31. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  32. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +2 -1
  33. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  34. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +6 -5
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  36. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  37. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +55 -52
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  39. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -15
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  41. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  42. package/dist/AI/components/execution-monitoring.component.js +4 -3
  43. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.js +2 -2
  45. package/dist/AI/components/models/model-management.component.js.map +1 -1
  46. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +2 -1
  47. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  48. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +10 -8
  49. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  51. package/dist/AI/components/prompts/prompt-management.component.js +2 -2
  52. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  53. package/dist/AI/components/prompts/prompt-version-control.component.d.ts +2 -1
  54. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  55. package/dist/AI/components/prompts/prompt-version-control.component.js +13 -10
  56. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  57. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -1
  58. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  59. package/dist/AI/components/tags/tags-resource.component.d.ts +1181 -0
  60. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -0
  61. package/dist/AI/components/tags/tags-resource.component.js +7487 -0
  62. package/dist/AI/components/tags/tags-resource.component.js.map +1 -0
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +25 -21
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/AI/index.d.ts +1 -0
  67. package/dist/AI/index.d.ts.map +1 -1
  68. package/dist/AI/index.js +5 -0
  69. package/dist/AI/index.js.map +1 -1
  70. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  71. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  72. package/dist/AI/services/ai-instrumentation.service.js +12 -4
  73. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  74. package/dist/APIKeys/api-applications-panel.component.d.ts +3 -2
  75. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  76. package/dist/APIKeys/api-applications-panel.component.js +5 -4
  77. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  78. package/dist/APIKeys/api-key-create-dialog.component.d.ts +2 -1
  79. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  80. package/dist/APIKeys/api-key-create-dialog.component.js +5 -5
  81. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  82. package/dist/APIKeys/api-key-edit-panel.component.d.ts +3 -2
  83. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  84. package/dist/APIKeys/api-key-edit-panel.component.js +11 -10
  85. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  86. package/dist/APIKeys/api-key-list.component.d.ts +2 -1
  87. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  88. package/dist/APIKeys/api-key-list.component.js +6 -5
  89. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  90. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  91. package/dist/APIKeys/api-keys-resource.component.js +4 -4
  92. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  93. package/dist/APIKeys/api-scopes-panel.component.d.ts +3 -2
  94. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  95. package/dist/APIKeys/api-scopes-panel.component.js +8 -6
  96. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  97. package/dist/APIKeys/api-usage-panel.component.d.ts +3 -2
  98. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  99. package/dist/APIKeys/api-usage-panel.component.js +10 -8
  100. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  101. package/dist/Actions/components/actions-list-view.component.d.ts +2 -1
  102. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  103. package/dist/Actions/components/actions-list-view.component.js +6 -5
  104. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  105. package/dist/Actions/components/actions-overview.component.js +2 -2
  106. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  107. package/dist/Actions/components/categories-list-view.component.d.ts +2 -1
  108. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  109. package/dist/Actions/components/categories-list-view.component.js +6 -5
  110. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  111. package/dist/Actions/components/execution-monitoring.component.js +1 -1
  112. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  113. package/dist/Actions/components/explorer/action-card.component.d.ts +2 -1
  114. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  115. package/dist/Actions/components/explorer/action-card.component.js +6 -4
  116. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  117. package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
  118. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/new-action-panel.component.d.ts +2 -1
  120. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/new-action-panel.component.js +7 -5
  122. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  123. package/dist/Actions/components/explorer/new-category-panel.component.d.ts +2 -1
  124. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  125. package/dist/Actions/components/explorer/new-category-panel.component.js +7 -5
  126. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  127. package/dist/ApplicationRoles/application-roles-resource.component.js +4 -4
  128. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  129. package/dist/Communication/communication-logs-resource.component.js +1 -1
  130. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  131. package/dist/Communication/communication-monitor-resource.component.js +1 -1
  132. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-providers-resource.component.js +3 -3
  134. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  135. package/dist/Communication/communication-runs-resource.component.js +1 -1
  136. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-templates-resource.component.js +3 -3
  138. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  139. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  140. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  141. package/dist/ComponentStudio/component-studio-dashboard.component.js +5 -4
  142. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  143. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
  144. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  145. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +6 -4
  146. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  147. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +11 -2
  148. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +61 -27
  150. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  151. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -2
  152. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  153. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +19 -11
  154. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  155. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +4 -2
  156. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +11 -3
  158. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +10 -1
  160. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  161. package/dist/ComponentStudio/components/workspace/component-preview.component.js +18 -9
  162. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  163. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +11 -1
  164. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  165. package/dist/ComponentStudio/services/component-studio-state.service.js +23 -3
  166. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  167. package/dist/ComponentStudio/services/component-version.service.d.ts +6 -1
  168. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  169. package/dist/ComponentStudio/services/component-version.service.js +16 -6
  170. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  171. package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
  172. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  173. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  174. package/dist/Credentials/components/credentials-categories-resource.component.js +3 -3
  175. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  176. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  177. package/dist/Credentials/components/credentials-list-resource.component.js +3 -3
  178. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  179. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  180. package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
  181. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  182. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  183. package/dist/Credentials/components/credentials-types-resource.component.js +3 -3
  184. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  185. package/dist/Credentials/credentials-dashboard.component.js +1 -1
  186. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  187. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +13 -13
  188. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  189. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +4 -0
  190. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -1
  191. package/dist/DashboardBrowser/dashboard-share-adapter.js +5 -2
  192. package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -1
  193. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +3 -1
  194. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  195. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -4
  196. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  197. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +3 -2
  198. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  199. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +7 -6
  200. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  201. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +3 -2
  202. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  203. package/dist/DataExplorer/components/view-selector/view-selector.component.js +6 -5
  204. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  205. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  206. package/dist/DataExplorer/data-explorer-dashboard.component.js +10 -9
  207. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  208. package/dist/DataExplorer/services/explorer-state.service.d.ts +6 -1
  209. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  210. package/dist/DataExplorer/services/explorer-state.service.js +15 -5
  211. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  212. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts +64 -0
  213. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts.map +1 -0
  214. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js +400 -0
  215. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js.map +1 -0
  216. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts +42 -0
  217. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts.map +1 -0
  218. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js +232 -0
  219. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js.map +1 -0
  220. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts +14 -0
  221. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts.map +1 -0
  222. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js +38 -0
  223. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js.map +1 -0
  224. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts +24 -0
  225. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts.map +1 -0
  226. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js +77 -0
  227. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js.map +1 -0
  228. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts +88 -0
  229. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts.map +1 -0
  230. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js +404 -0
  231. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js.map +1 -0
  232. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts +12 -0
  233. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts.map +1 -0
  234. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js +116 -0
  235. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js.map +1 -0
  236. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +55 -0
  237. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -0
  238. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +204 -0
  239. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -0
  240. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +61 -0
  241. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -0
  242. package/dist/DatabaseDesigner/components/entity-list.component.js +485 -0
  243. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -0
  244. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +52 -0
  245. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -0
  246. package/dist/DatabaseDesigner/components/modify/database-modify.component.js +320 -0
  247. package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -0
  248. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts +79 -0
  249. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts.map +1 -0
  250. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js +378 -0
  251. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js.map +1 -0
  252. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts +85 -0
  253. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts.map +1 -0
  254. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js +429 -0
  255. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js.map +1 -0
  256. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts +58 -0
  257. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts.map +1 -0
  258. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js +333 -0
  259. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js.map +1 -0
  260. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts +36 -0
  261. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts.map +1 -0
  262. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js +345 -0
  263. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js.map +1 -0
  264. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts +13 -0
  265. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts.map +1 -0
  266. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js +81 -0
  267. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js.map +1 -0
  268. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +30 -0
  269. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -0
  270. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +131 -0
  271. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -0
  272. package/dist/DatabaseDesigner/database-designer-erd.d.ts +19 -0
  273. package/dist/DatabaseDesigner/database-designer-erd.d.ts.map +1 -0
  274. package/dist/DatabaseDesigner/database-designer-erd.js +84 -0
  275. package/dist/DatabaseDesigner/database-designer-erd.js.map +1 -0
  276. package/dist/DatabaseDesigner/database-designer.types.d.ts +167 -0
  277. package/dist/DatabaseDesigner/database-designer.types.d.ts.map +1 -0
  278. package/dist/DatabaseDesigner/database-designer.types.js +26 -0
  279. package/dist/DatabaseDesigner/database-designer.types.js.map +1 -0
  280. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts +94 -0
  281. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts.map +1 -0
  282. package/dist/DatabaseDesigner/services/database-designer.engine.js +392 -0
  283. package/dist/DatabaseDesigner/services/database-designer.engine.js.map +1 -0
  284. package/dist/DatabaseDesigner/services/database-designer.service.d.ts +78 -0
  285. package/dist/DatabaseDesigner/services/database-designer.service.d.ts.map +1 -0
  286. package/dist/DatabaseDesigner/services/database-designer.service.js +273 -0
  287. package/dist/DatabaseDesigner/services/database-designer.service.js.map +1 -0
  288. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts +79 -0
  289. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts.map +1 -0
  290. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js +204 -0
  291. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js.map +1 -0
  292. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  293. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  294. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  295. package/dist/Home/action-pin-config-dialog.component.d.ts +2 -1
  296. package/dist/Home/action-pin-config-dialog.component.d.ts.map +1 -1
  297. package/dist/Home/action-pin-config-dialog.component.js +6 -4
  298. package/dist/Home/action-pin-config-dialog.component.js.map +1 -1
  299. package/dist/Home/action-pin-runner-dialog.component.d.ts +2 -1
  300. package/dist/Home/action-pin-runner-dialog.component.d.ts.map +1 -1
  301. package/dist/Home/action-pin-runner-dialog.component.js +5 -4
  302. package/dist/Home/action-pin-runner-dialog.component.js.map +1 -1
  303. package/dist/Home/home-application.d.ts.map +1 -1
  304. package/dist/Home/home-application.js +10 -12
  305. package/dist/Home/home-application.js.map +1 -1
  306. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  307. package/dist/Home/home-dashboard.component.js +3 -3
  308. package/dist/Home/home-dashboard.component.js.map +1 -1
  309. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  310. package/dist/Integration/components/activity/activity.component.js +1 -0
  311. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  312. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  313. package/dist/Integration/components/connections/connections.component.js +11 -10
  314. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  315. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  316. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -2
  317. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  318. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  319. package/dist/Integration/components/overview/overview.component.js +1 -0
  320. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  321. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  322. package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
  323. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  324. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  325. package/dist/Integration/components/schedules/schedules.component.js +5 -4
  326. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  327. package/dist/Integration/services/integration-data.service.d.ts +5 -1
  328. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  329. package/dist/Integration/services/integration-data.service.js +27 -19
  330. package/dist/Integration/services/integration-data.service.js.map +1 -1
  331. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +6 -6
  332. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  333. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  334. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +8 -6
  335. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  336. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +6 -6
  337. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  338. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +3 -3
  339. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  340. package/dist/Lists/components/lists-browse-resource.component.js +6 -6
  341. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  342. package/dist/Lists/components/lists-categories-resource.component.js +4 -4
  343. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  344. package/dist/Lists/components/lists-my-lists-resource.component.js +6 -6
  345. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  346. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  347. package/dist/Lists/components/lists-operations-resource.component.js +11 -10
  348. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  349. package/dist/Lists/services/list-set-operations.service.d.ts +5 -0
  350. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  351. package/dist/Lists/services/list-set-operations.service.js +11 -3
  352. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  353. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +2 -1
  354. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  355. package/dist/MCP/components/mcp-connection-dialog.component.js +8 -6
  356. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  357. package/dist/MCP/components/mcp-server-dialog.component.d.ts +2 -1
  358. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  359. package/dist/MCP/components/mcp-server-dialog.component.js +7 -5
  360. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  361. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  362. package/dist/MCP/mcp-dashboard.component.js +12 -12
  363. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  364. package/dist/Permissions/permissions-shared.d.ts +3 -3
  365. package/dist/Permissions/permissions-shared.d.ts.map +1 -1
  366. package/dist/Permissions/permissions-shared.js +5 -5
  367. package/dist/Permissions/permissions-shared.js.map +1 -1
  368. package/dist/Permissions/resource-access-resource.component.js +1 -1
  369. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  370. package/dist/Permissions/user-access-resource.component.js +1 -2
  371. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  372. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  373. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  374. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  375. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  376. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  377. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  378. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +5 -0
  379. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  380. package/dist/Scheduling/services/scheduling-instrumentation.service.js +21 -13
  381. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  382. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  383. package/dist/SystemDiagnostics/system-diagnostics.component.js +2 -2
  384. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  385. package/dist/Testing/components/testing-explorer.component.d.ts +2 -1
  386. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-explorer.component.js +9 -7
  388. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  389. package/dist/Testing/services/testing-instrumentation.service.d.ts +6 -1
  390. package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
  391. package/dist/Testing/services/testing-instrumentation.service.js +21 -11
  392. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  393. package/dist/Testing/testing-dashboard.component.d.ts +3 -1
  394. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  395. package/dist/Testing/testing-dashboard.component.js +15 -11
  396. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  397. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  398. package/dist/VersionHistory/components/diff-resource.component.js +5 -5
  399. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  400. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  401. package/dist/VersionHistory/components/graph-resource.component.js +1 -2
  402. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  403. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  404. package/dist/VersionHistory/components/labels-resource.component.js +3 -3
  405. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  406. package/dist/VersionHistory/components/restore-resource.component.js +1 -1
  407. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  408. package/dist/ai-dashboards.module.d.ts +35 -34
  409. package/dist/ai-dashboards.module.d.ts.map +1 -1
  410. package/dist/ai-dashboards.module.js +6 -0
  411. package/dist/ai-dashboards.module.js.map +1 -1
  412. package/dist/module.d.ts +13 -12
  413. package/dist/module.d.ts.map +1 -1
  414. package/dist/module.js +7 -0
  415. package/dist/module.js.map +1 -1
  416. package/dist/public-api.d.ts +3 -1
  417. package/dist/public-api.d.ts.map +1 -1
  418. package/dist/public-api.js +3 -1
  419. package/dist/public-api.js.map +1 -1
  420. package/dist/shared/entity-field-display.d.ts +4 -3
  421. package/dist/shared/entity-field-display.d.ts.map +1 -1
  422. package/dist/shared/entity-field-display.js +9 -9
  423. package/dist/shared/entity-field-display.js.map +1 -1
  424. package/package.json +52 -51
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-pipeline-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/shared/entity-pipeline-panel.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACuB,YAAY,EAAE,aAAa,EAExD,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EACR,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,kCAAkC,CAAC;;AAE1C,KAAK,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5D,qBAOa,4BAA6B,YAAW,aAAa;IAI9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IAIjD,sCAAsC;IACtB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAQ;IAE/D,+EAA+E;IAC/D,gBAAgB,EAAE,QAAQ,GAAG,OAAO,CAAY;IAEhE,uEAAuE;IACvD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEvD,sEAAsE;IACtD,SAAS,UAAS;IAIlC,wDAAwD;IACxD,SAA0B,SAAS,qCAA4C;IAE/E,iDAAiD;IACjD,SAA0B,OAAO,uBAA8B;IAIxD,KAAK,EAAE,UAAU,CAAU;IAC3B,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACnD,YAAY,SAAM;IAClB,KAAK,EAAE,mBAAmB,EAAE,CAAM;IAIzC;;;OAGG;IACH,eAAe,IAAI,IAAI;IAQV,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD5C,oEAAoE;IAC7D,KAAK,IAAI,IAAI;IAUb,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAIzD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAS3C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIzC,8EAA8E;IAC9E,IAAW,oBAAoB,IAAI,MAAM,CAGxC;IAED,IAAW,aAAa,IAAI,MAAM,CAGjC;yCAxIQ,4BAA4B;2CAA5B,4BAA4B;CAyIxC"}
@@ -0,0 +1,333 @@
1
+ /**
2
+ * @module entity-pipeline-panel.component
3
+ * @description Displays pipeline execution progress and results for entity
4
+ * creation/modification. Used in wizard Step 5 and the Modify "Apply" tab.
5
+ *
6
+ * ### Lifecycle
7
+ * The component does NOT start the pipeline automatically on mount — the parent
8
+ * must call `StartExecution()` explicitly. This keeps "panel visible" and
9
+ * "pipeline running" as separate events, which simplifies the host wizard logic.
10
+ *
11
+ * ### States
12
+ * - `idle` → waiting for StartExecution() call
13
+ * - `running` → action in flight, spinner shown
14
+ * - `success` → pipeline returned Success=true, success card shown
15
+ * - `failed` → pipeline returned Success=false, error card shown
16
+ */
17
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, inject, } from '@angular/core';
18
+ import { DatabaseDesignerService } from '../../services/database-designer.service.js';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "@memberjunction/ng-ui-components";
21
+ function EntityPipelinePanelComponent_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵtext(0, " Creating entity\u2026 ");
23
+ } }
24
+ function EntityPipelinePanelComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵtext(0, " Applying changes\u2026 ");
26
+ } }
27
+ function EntityPipelinePanelComponent_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "p", 7);
29
+ i0.ɵɵtext(1);
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ const ctx_r0 = i0.ɵɵnextContext(2);
33
+ i0.ɵɵadvance();
34
+ i0.ɵɵtextInterpolate2(" ", ctx_r0.TableDefinition.SchemaName, ".", ctx_r0.TableDefinition.TableName, " ");
35
+ } }
36
+ function EntityPipelinePanelComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 4);
38
+ i0.ɵɵelement(2, "i", 5);
39
+ i0.ɵɵelementStart(3, "span", 6);
40
+ i0.ɵɵconditionalCreate(4, EntityPipelinePanelComponent_Conditional_1_Conditional_4_Template, 1, 0)(5, EntityPipelinePanelComponent_Conditional_1_Conditional_5_Template, 1, 0);
41
+ i0.ɵɵelementEnd()();
42
+ i0.ɵɵconditionalCreate(6, EntityPipelinePanelComponent_Conditional_1_Conditional_6_Template, 2, 2, "p", 7);
43
+ i0.ɵɵelementStart(7, "p", 8);
44
+ i0.ɵɵtext(8, " This typically takes 5\u201310 minutes. The server is running migrations, regenerating code, and restarting. You can safely close this panel \u2014 check back in Database Designer once it's done. ");
45
+ i0.ɵɵelementEnd()();
46
+ } if (rf & 2) {
47
+ const ctx_r0 = i0.ɵɵnextContext();
48
+ i0.ɵɵadvance(4);
49
+ i0.ɵɵconditional(ctx_r0.ModificationType === "create" ? 4 : 5);
50
+ i0.ɵɵadvance(2);
51
+ i0.ɵɵconditional(ctx_r0.TableDefinition ? 6 : -1);
52
+ } }
53
+ function EntityPipelinePanelComponent_Conditional_2_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementStart(0, "div", 18);
55
+ i0.ɵɵelement(1, "i");
56
+ i0.ɵɵelementStart(2, "span", 19);
57
+ i0.ɵɵtext(3);
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementStart(4, "span", 20);
60
+ i0.ɵɵtext(5);
61
+ i0.ɵɵelementEnd()();
62
+ } if (rf & 2) {
63
+ const step_r2 = ctx.$implicit;
64
+ const ctx_r0 = i0.ɵɵnextContext(3);
65
+ i0.ɵɵclassProp("step-failed", step_r2.Status === "failed")("step-skipped", step_r2.Status === "skipped");
66
+ i0.ɵɵadvance();
67
+ i0.ɵɵclassMap(ctx_r0.StepIcon(step_r2));
68
+ i0.ɵɵadvance(2);
69
+ i0.ɵɵtextInterpolate(step_r2.Name);
70
+ i0.ɵɵadvance(2);
71
+ i0.ɵɵtextInterpolate(ctx_r0.FormatDuration(step_r2.DurationMs));
72
+ } }
73
+ function EntityPipelinePanelComponent_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
74
+ i0.ɵɵelementStart(0, "div", 9);
75
+ i0.ɵɵrepeaterCreate(1, EntityPipelinePanelComponent_Conditional_2_Conditional_1_For_2_Template, 6, 8, "div", 17, i0.ɵɵcomponentInstance().TrackByStep, true);
76
+ i0.ɵɵelementEnd();
77
+ } if (rf & 2) {
78
+ const ctx_r0 = i0.ɵɵnextContext(2);
79
+ i0.ɵɵadvance();
80
+ i0.ɵɵrepeater(ctx_r0.Steps);
81
+ } }
82
+ function EntityPipelinePanelComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
83
+ i0.ɵɵelementStart(0, "div", 2);
84
+ i0.ɵɵconditionalCreate(1, EntityPipelinePanelComponent_Conditional_2_Conditional_1_Template, 3, 0, "div", 9);
85
+ i0.ɵɵelementStart(2, "div", 10);
86
+ i0.ɵɵelement(3, "i", 11);
87
+ i0.ɵɵelementStart(4, "h3", 12);
88
+ i0.ɵɵtext(5);
89
+ i0.ɵɵelementEnd();
90
+ i0.ɵɵelementStart(6, "p", 13);
91
+ i0.ɵɵtext(7);
92
+ i0.ɵɵelementEnd();
93
+ i0.ɵɵelementStart(8, "p", 14);
94
+ i0.ɵɵtext(9);
95
+ i0.ɵɵelementEnd();
96
+ i0.ɵɵelementStart(10, "p", 15);
97
+ i0.ɵɵelement(11, "i", 16);
98
+ i0.ɵɵtext(12, " Don't see it in the entity list? Click ");
99
+ i0.ɵɵelementStart(13, "strong");
100
+ i0.ɵɵtext(14, "Refresh");
101
+ i0.ɵɵelementEnd();
102
+ i0.ɵɵtext(15, " to reload. ");
103
+ i0.ɵɵelementEnd()()();
104
+ } if (rf & 2) {
105
+ const ctx_r0 = i0.ɵɵnextContext();
106
+ i0.ɵɵadvance();
107
+ i0.ɵɵconditional(ctx_r0.Steps.length > 0 ? 1 : -1);
108
+ i0.ɵɵadvance(4);
109
+ i0.ɵɵtextInterpolate1("", ctx_r0.PipelineResult.EntityName, " created!");
110
+ i0.ɵɵadvance(2);
111
+ i0.ɵɵtextInterpolate(ctx_r0.FullTablePath);
112
+ i0.ɵɵadvance(2);
113
+ i0.ɵɵtextInterpolate(ctx_r0.SuccessColumnSummary);
114
+ } }
115
+ function EntityPipelinePanelComponent_Conditional_3_Conditional_1_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "span", 26);
117
+ i0.ɵɵtext(1);
118
+ i0.ɵɵelementEnd();
119
+ } if (rf & 2) {
120
+ const step_r4 = i0.ɵɵnextContext().$implicit;
121
+ i0.ɵɵadvance();
122
+ i0.ɵɵtextInterpolate(step_r4.Message);
123
+ } }
124
+ function EntityPipelinePanelComponent_Conditional_3_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelementStart(0, "div", 18);
126
+ i0.ɵɵelement(1, "i");
127
+ i0.ɵɵelementStart(2, "span", 19);
128
+ i0.ɵɵtext(3);
129
+ i0.ɵɵelementEnd();
130
+ i0.ɵɵconditionalCreate(4, EntityPipelinePanelComponent_Conditional_3_Conditional_1_For_2_Conditional_4_Template, 2, 1, "span", 26);
131
+ i0.ɵɵelementEnd();
132
+ } if (rf & 2) {
133
+ const step_r4 = ctx.$implicit;
134
+ const ctx_r0 = i0.ɵɵnextContext(3);
135
+ i0.ɵɵclassProp("step-failed", step_r4.Status === "failed")("step-skipped", step_r4.Status === "skipped");
136
+ i0.ɵɵadvance();
137
+ i0.ɵɵclassMap(ctx_r0.StepIcon(step_r4));
138
+ i0.ɵɵadvance(2);
139
+ i0.ɵɵtextInterpolate(step_r4.Name);
140
+ i0.ɵɵadvance();
141
+ i0.ɵɵconditional(step_r4.Message ? 4 : -1);
142
+ } }
143
+ function EntityPipelinePanelComponent_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
144
+ i0.ɵɵelementStart(0, "div", 9);
145
+ i0.ɵɵrepeaterCreate(1, EntityPipelinePanelComponent_Conditional_3_Conditional_1_For_2_Template, 5, 8, "div", 17, i0.ɵɵcomponentInstance().TrackByStep, true);
146
+ i0.ɵɵelementEnd();
147
+ } if (rf & 2) {
148
+ const ctx_r0 = i0.ɵɵnextContext(2);
149
+ i0.ɵɵadvance();
150
+ i0.ɵɵrepeater(ctx_r0.Steps);
151
+ } }
152
+ function EntityPipelinePanelComponent_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
153
+ i0.ɵɵtext(0, " Entity creation failed ");
154
+ } }
155
+ function EntityPipelinePanelComponent_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵtext(0, " Apply changes failed ");
157
+ } }
158
+ function EntityPipelinePanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
159
+ const _r3 = i0.ɵɵgetCurrentView();
160
+ i0.ɵɵelementStart(0, "div", 3);
161
+ i0.ɵɵconditionalCreate(1, EntityPipelinePanelComponent_Conditional_3_Conditional_1_Template, 3, 0, "div", 9);
162
+ i0.ɵɵelementStart(2, "div", 21);
163
+ i0.ɵɵelement(3, "i", 22);
164
+ i0.ɵɵelementStart(4, "h3", 23);
165
+ i0.ɵɵconditionalCreate(5, EntityPipelinePanelComponent_Conditional_3_Conditional_5_Template, 1, 0)(6, EntityPipelinePanelComponent_Conditional_3_Conditional_6_Template, 1, 0);
166
+ i0.ɵɵelementEnd();
167
+ i0.ɵɵelementStart(7, "p", 24);
168
+ i0.ɵɵtext(8);
169
+ i0.ɵɵelementEnd();
170
+ i0.ɵɵelementStart(9, "button", 25);
171
+ i0.ɵɵlistener("click", function EntityPipelinePanelComponent_Conditional_3_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.Reset()); });
172
+ i0.ɵɵelement(10, "i", 16);
173
+ i0.ɵɵtext(11, " Try Again ");
174
+ i0.ɵɵelementEnd()()();
175
+ } if (rf & 2) {
176
+ const ctx_r0 = i0.ɵɵnextContext();
177
+ i0.ɵɵadvance();
178
+ i0.ɵɵconditional(ctx_r0.Steps.length > 0 ? 1 : -1);
179
+ i0.ɵɵadvance(4);
180
+ i0.ɵɵconditional(ctx_r0.ModificationType === "create" ? 5 : 6);
181
+ i0.ɵɵadvance(3);
182
+ i0.ɵɵtextInterpolate(ctx_r0.ErrorMessage);
183
+ } }
184
+ export class EntityPipelinePanelComponent {
185
+ // ─── Injected ──────────────────────────────────────────────────────────
186
+ service = inject(DatabaseDesignerService);
187
+ cdr = inject(ChangeDetectorRef);
188
+ // ─── Inputs ────────────────────────────────────────────────────────────
189
+ /** Table spec to create or modify. */
190
+ TableDefinition = null;
191
+ /** Whether this panel is creating a new entity or altering an existing one. */
192
+ ModificationType = 'create';
193
+ /** Required only in 'alter' mode — ID of the entity being modified. */
194
+ ExistingEntityId = null;
195
+ /** When true, `StartExecution()` is called automatically on mount. */
196
+ AutoStart = false;
197
+ // ─── Outputs ───────────────────────────────────────────────────────────
198
+ /** Emitted when the pipeline completes successfully. */
199
+ Completed = new EventEmitter();
200
+ /** Emitted when the pipeline fails or throws. */
201
+ Errored = new EventEmitter();
202
+ // ─── View state ────────────────────────────────────────────────────────
203
+ State = 'idle';
204
+ PipelineResult = null;
205
+ ErrorMessage = '';
206
+ Steps = [];
207
+ // ─── Public API ────────────────────────────────────────────────────────
208
+ /**
209
+ * Kick off the pipeline. Idempotent — calling while already running is a no-op.
210
+ * Called by the parent (wizard step 5 or modify "Apply" tab).
211
+ */
212
+ ngAfterViewInit() {
213
+ if (this.AutoStart) {
214
+ // Defer to next microtask so Angular's current CD cycle finishes before
215
+ // we transition to 'running' (avoids ExpressionChangedAfterItHasBeenCheckedError).
216
+ Promise.resolve().then(() => this.StartExecution());
217
+ }
218
+ }
219
+ async StartExecution() {
220
+ if (this.State === 'running')
221
+ return;
222
+ if (!this.TableDefinition) {
223
+ this.State = 'failed';
224
+ this.ErrorMessage = 'Entity definition is incomplete — required fields (EntityName, TableName, SchemaName) are missing. Go back and complete all steps.';
225
+ this.cdr.detectChanges();
226
+ this.Errored.emit(this.ErrorMessage);
227
+ return;
228
+ }
229
+ this.State = 'running';
230
+ this.ErrorMessage = '';
231
+ this.Steps = [];
232
+ this.PipelineResult = null;
233
+ this.cdr.detectChanges();
234
+ try {
235
+ // SkipRestart: true prevents the server from restarting MJAPI mid-request.
236
+ // The Angular client communicates over a long-lived HTTP connection; a server
237
+ // restart would drop the connection before the response arrives. The agent path
238
+ // (EntitySchemaBuilder) uses the same flag for the same reason.
239
+ const result = this.ModificationType === 'create'
240
+ ? await this.service.createEntity(this.TableDefinition, { skipRestart: true })
241
+ : await this.service.modifyEntity(this.TableDefinition, {
242
+ existingEntityId: this.ExistingEntityId ?? '',
243
+ skipRestart: true,
244
+ });
245
+ this.PipelineResult = result;
246
+ this.Steps = result.PipelineSteps ?? [];
247
+ if (result.Success) {
248
+ this.State = 'success';
249
+ this.Completed.emit(result);
250
+ }
251
+ else {
252
+ this.State = 'failed';
253
+ this.ErrorMessage = result.ErrorMessage ?? 'An unknown error occurred.';
254
+ this.Errored.emit(this.ErrorMessage);
255
+ }
256
+ }
257
+ catch (err) {
258
+ const msg = err instanceof Error ? err.message : String(err);
259
+ this.State = 'failed';
260
+ this.ErrorMessage = msg;
261
+ this.Errored.emit(msg);
262
+ }
263
+ finally {
264
+ this.cdr.detectChanges();
265
+ }
266
+ }
267
+ /** Reset to idle so the panel can be reused (e.g., "Try Again"). */
268
+ Reset() {
269
+ this.State = 'idle';
270
+ this.PipelineResult = null;
271
+ this.ErrorMessage = '';
272
+ this.Steps = [];
273
+ this.cdr.detectChanges();
274
+ }
275
+ // ─── Template helpers ──────────────────────────────────────────────────
276
+ TrackByStep(_, step) {
277
+ return step.Name;
278
+ }
279
+ StepIcon(step) {
280
+ switch (step.Status) {
281
+ case 'success': return 'fa-solid fa-circle-check step-success';
282
+ case 'failed': return 'fa-solid fa-circle-xmark step-failed';
283
+ case 'skipped': return 'fa-solid fa-circle-minus step-skipped';
284
+ default: return 'fa-solid fa-circle step-unknown';
285
+ }
286
+ }
287
+ FormatDuration(ms) {
288
+ return ms >= 1000 ? `${(ms / 1000).toFixed(1)}s` : `${ms}ms`;
289
+ }
290
+ /** Summary line for the success card: "4 custom columns + 3 auto-managed". */
291
+ get SuccessColumnSummary() {
292
+ const custom = this.TableDefinition?.Columns.length ?? 0;
293
+ return `${custom} custom column${custom !== 1 ? 's' : ''} + 3 auto-managed`;
294
+ }
295
+ get FullTablePath() {
296
+ if (!this.PipelineResult)
297
+ return '';
298
+ return `${this.PipelineResult.SchemaName}.${this.PipelineResult.TableName}`;
299
+ }
300
+ static ɵfac = function EntityPipelinePanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntityPipelinePanelComponent)(); };
301
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityPipelinePanelComponent, selectors: [["mj-database-pipeline-panel"]], inputs: { TableDefinition: "TableDefinition", ModificationType: "ModificationType", ExistingEntityId: "ExistingEntityId", AutoStart: "AutoStart" }, outputs: { Completed: "Completed", Errored: "Errored" }, standalone: false, decls: 4, vars: 3, consts: [[1, "pipeline-panel"], ["aria-live", "polite", "aria-label", "Creating entity\u2026", 1, "panel-running"], [1, "panel-success"], [1, "panel-failed"], [1, "running-header"], [1, "fa-solid", "fa-spinner", "fa-spin", "running-spinner"], [1, "running-title"], [1, "running-target"], [1, "running-note"], ["aria-label", "Pipeline steps", 1, "steps-list"], [1, "success-card"], [1, "fa-solid", "fa-circle-check", "success-icon"], [1, "success-title"], [1, "success-path"], [1, "success-cols"], [1, "success-refresh-hint"], [1, "fa-solid", "fa-rotate-right"], [1, "step-item", 3, "step-failed", "step-skipped"], [1, "step-item"], [1, "step-name"], [1, "step-duration"], [1, "error-card"], [1, "fa-solid", "fa-circle-xmark", "error-icon"], [1, "error-title"], [1, "error-message"], ["mjButton", "", "buttonStyle", "secondary", 3, "click"], [1, "step-message"]], template: function EntityPipelinePanelComponent_Template(rf, ctx) { if (rf & 1) {
302
+ i0.ɵɵelementStart(0, "div", 0);
303
+ i0.ɵɵconditionalCreate(1, EntityPipelinePanelComponent_Conditional_1_Template, 9, 2, "div", 1);
304
+ i0.ɵɵconditionalCreate(2, EntityPipelinePanelComponent_Conditional_2_Template, 16, 4, "div", 2);
305
+ i0.ɵɵconditionalCreate(3, EntityPipelinePanelComponent_Conditional_3_Template, 12, 3, "div", 3);
306
+ i0.ɵɵelementEnd();
307
+ } if (rf & 2) {
308
+ i0.ɵɵadvance();
309
+ i0.ɵɵconditional(ctx.State === "idle" || ctx.State === "running" ? 1 : -1);
310
+ i0.ɵɵadvance();
311
+ i0.ɵɵconditional(ctx.State === "success" && ctx.PipelineResult ? 2 : -1);
312
+ i0.ɵɵadvance();
313
+ i0.ɵɵconditional(ctx.State === "failed" ? 3 : -1);
314
+ } }, dependencies: [i1.MJButtonDirective], styles: [".pipeline-panel[_ngcontent-%COMP%] {\n padding: 24px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n\n\n\n.panel-idle[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 32px;\n text-align: center;\n}\n\n.idle-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.idle-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.8rem;\n color: var(--mj-brand-primary);\n}\n\n.idle-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.idle-body[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n max-width: 440px;\n}\n\n\n\n\n.panel-running[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 14px;\n padding: 32px;\n text-align: center;\n}\n\n.running-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.running-spinner[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n color: var(--mj-brand-primary);\n}\n\n.running-title[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.running-target[_ngcontent-%COMP%] {\n margin: 0;\n font-family: monospace;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n}\n\n.running-note[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 440px;\n line-height: 1.5;\n}\n\n\n\n\n.steps-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n padding: 14px 18px;\n}\n\n.step-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 0.875rem;\n color: var(--mj-text-primary);\n}\n\n.step-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1rem;\n flex-shrink: 0;\n width: 18px;\n}\n\n.step-item[_ngcontent-%COMP%] i.step-success[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n.step-item[_ngcontent-%COMP%] i.step-failed[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.step-item[_ngcontent-%COMP%] i.step-skipped[_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n.step-item[_ngcontent-%COMP%] i.step-unknown[_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n\n.step-name[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.step-duration[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n font-variant-numeric: tabular-nums;\n}\n\n.step-message[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--mj-status-error-text);\n flex: 1;\n}\n\n.step-item.step-failed[_ngcontent-%COMP%] .step-name[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text);\n}\n\n.step-item.step-skipped[_ngcontent-%COMP%] .step-name[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n\n.success-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 24px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n text-align: center;\n}\n\n.success-icon[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-status-success);\n}\n\n.success-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 700;\n color: var(--mj-status-success-text);\n}\n\n.success-path[_ngcontent-%COMP%] {\n margin: 0;\n font-family: monospace;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n}\n\n.success-cols[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n}\n\n.success-refresh-hint[_ngcontent-%COMP%] {\n margin: 4px 0 0;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n\n.error-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 24px;\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n border-radius: 8px;\n text-align: center;\n}\n\n.error-icon[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-status-error);\n}\n\n.error-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-status-error-text);\n}\n\n.error-message[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n max-width: 440px;\n line-height: 1.5;\n word-break: break-word;\n overflow-wrap: break-word;\n}"], changeDetection: 0 });
315
+ }
316
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityPipelinePanelComponent, [{
317
+ type: Component,
318
+ args: [{ standalone: false, selector: 'mj-database-pipeline-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"pipeline-panel\">\n\n <!-- \u2500\u2500 Running state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (State === 'idle' || State === 'running') {\n <div class=\"panel-running\" aria-live=\"polite\" aria-label=\"Creating entity\u2026\">\n <div class=\"running-header\">\n <i class=\"fa-solid fa-spinner fa-spin running-spinner\"></i>\n <span class=\"running-title\">\n @if (ModificationType === 'create') { Creating entity\u2026 }\n @else { Applying changes\u2026 }\n </span>\n </div>\n @if (TableDefinition) {\n <p class=\"running-target\">\n {{ TableDefinition.SchemaName }}.{{ TableDefinition.TableName }}\n </p>\n }\n <p class=\"running-note\">\n This typically takes 5\u201310 minutes. The server is running migrations,\n regenerating code, and restarting. You can safely close this panel \u2014\n check back in Database Designer once it's done.\n </p>\n </div>\n }\n\n <!-- \u2500\u2500 Success state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (State === 'success' && PipelineResult) {\n <div class=\"panel-success\">\n\n <!-- Step list -->\n @if (Steps.length > 0) {\n <div class=\"steps-list\" aria-label=\"Pipeline steps\">\n @for (step of Steps; track TrackByStep($index, step)) {\n <div class=\"step-item\" [class.step-failed]=\"step.Status === 'failed'\" [class.step-skipped]=\"step.Status === 'skipped'\">\n <i [class]=\"StepIcon(step)\"></i>\n <span class=\"step-name\">{{ step.Name }}</span>\n <span class=\"step-duration\">{{ FormatDuration(step.DurationMs) }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Success card -->\n <div class=\"success-card\">\n <i class=\"fa-solid fa-circle-check success-icon\"></i>\n <h3 class=\"success-title\">{{ PipelineResult.EntityName }} created!</h3>\n <p class=\"success-path\">{{ FullTablePath }}</p>\n <p class=\"success-cols\">{{ SuccessColumnSummary }}</p>\n <p class=\"success-refresh-hint\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Don't see it in the entity list? Click <strong>Refresh</strong> to reload.\n </p>\n </div>\n </div>\n }\n\n <!-- \u2500\u2500 Failed state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (State === 'failed') {\n <div class=\"panel-failed\">\n\n <!-- Step list (partial results if available) -->\n @if (Steps.length > 0) {\n <div class=\"steps-list\" aria-label=\"Pipeline steps\">\n @for (step of Steps; track TrackByStep($index, step)) {\n <div class=\"step-item\" [class.step-failed]=\"step.Status === 'failed'\" [class.step-skipped]=\"step.Status === 'skipped'\">\n <i [class]=\"StepIcon(step)\"></i>\n <span class=\"step-name\">{{ step.Name }}</span>\n @if (step.Message) {\n <span class=\"step-message\">{{ step.Message }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- Error card -->\n <div class=\"error-card\">\n <i class=\"fa-solid fa-circle-xmark error-icon\"></i>\n <h3 class=\"error-title\">\n @if (ModificationType === 'create') { Entity creation failed }\n @else { Apply changes failed }\n </h3>\n <p class=\"error-message\">{{ ErrorMessage }}</p>\n <button mjButton buttonStyle=\"secondary\" (click)=\"Reset()\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n</div>\n", styles: [".pipeline-panel {\n padding: 24px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n/* \u2500\u2500 Idle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.panel-idle {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 32px;\n text-align: center;\n}\n\n.idle-icon {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.idle-icon i {\n font-size: 1.8rem;\n color: var(--mj-brand-primary);\n}\n\n.idle-title {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.idle-body {\n margin: 0;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n max-width: 440px;\n}\n\n/* \u2500\u2500 Running \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.panel-running {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 14px;\n padding: 32px;\n text-align: center;\n}\n\n.running-header {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.running-spinner {\n font-size: 1.5rem;\n color: var(--mj-brand-primary);\n}\n\n.running-title {\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.running-target {\n margin: 0;\n font-family: monospace;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n}\n\n.running-note {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 440px;\n line-height: 1.5;\n}\n\n/* \u2500\u2500 Steps list (shared between success and failed) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.steps-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 8px;\n padding: 14px 18px;\n}\n\n.step-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 0.875rem;\n color: var(--mj-text-primary);\n}\n\n.step-item i {\n font-size: 1rem;\n flex-shrink: 0;\n width: 18px;\n}\n\n.step-item i.step-success { color: var(--mj-status-success); }\n.step-item i.step-failed { color: var(--mj-status-error); }\n.step-item i.step-skipped { color: var(--mj-text-muted); }\n.step-item i.step-unknown { color: var(--mj-text-muted); }\n\n.step-name {\n flex: 1;\n}\n\n.step-duration {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n font-variant-numeric: tabular-nums;\n}\n\n.step-message {\n font-size: 0.8rem;\n color: var(--mj-status-error-text);\n flex: 1;\n}\n\n.step-item.step-failed .step-name {\n color: var(--mj-status-error-text);\n}\n\n.step-item.step-skipped .step-name {\n color: var(--mj-text-muted);\n}\n\n/* \u2500\u2500 Success card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.success-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 24px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n text-align: center;\n}\n\n.success-icon {\n font-size: 2rem;\n color: var(--mj-status-success);\n}\n\n.success-title {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 700;\n color: var(--mj-status-success-text);\n}\n\n.success-path {\n margin: 0;\n font-family: monospace;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n}\n\n.success-cols {\n margin: 0;\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n}\n\n.success-refresh-hint {\n margin: 4px 0 0;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* \u2500\u2500 Error card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.error-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 24px;\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n border-radius: 8px;\n text-align: center;\n}\n\n.error-icon {\n font-size: 2rem;\n color: var(--mj-status-error);\n}\n\n.error-title {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mj-status-error-text);\n}\n\n.error-message {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n max-width: 440px;\n line-height: 1.5;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n"] }]
319
+ }], null, { TableDefinition: [{
320
+ type: Input
321
+ }], ModificationType: [{
322
+ type: Input
323
+ }], ExistingEntityId: [{
324
+ type: Input
325
+ }], AutoStart: [{
326
+ type: Input
327
+ }], Completed: [{
328
+ type: Output
329
+ }], Errored: [{
330
+ type: Output
331
+ }] }); })();
332
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityPipelinePanelComponent, { className: "EntityPipelinePanelComponent", filePath: "src/DatabaseDesigner/components/shared/entity-pipeline-panel.component.ts", lineNumber: 38 }); })();
333
+ //# sourceMappingURL=entity-pipeline-panel.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-pipeline-panel.component.js","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/shared/entity-pipeline-panel.component.ts","../../../../src/DatabaseDesigner/components/shared/entity-pipeline-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @module entity-pipeline-panel.component\n * @description Displays pipeline execution progress and results for entity\n * creation/modification. Used in wizard Step 5 and the Modify \"Apply\" tab.\n *\n * ### Lifecycle\n * The component does NOT start the pipeline automatically on mount — the parent\n * must call `StartExecution()` explicitly. This keeps \"panel visible\" and\n * \"pipeline running\" as separate events, which simplifies the host wizard logic.\n *\n * ### States\n * - `idle` → waiting for StartExecution() call\n * - `running` → action in flight, spinner shown\n * - `success` → pipeline returned Success=true, success card shown\n * - `failed` → pipeline returned Success=false, error card shown\n */\n\nimport {\n Component, Input, Output, EventEmitter, AfterViewInit,\n ChangeDetectionStrategy, ChangeDetectorRef, inject,\n} from '@angular/core';\nimport { DatabaseDesignerService } from '../../services/database-designer.service.js';\nimport type {\n EntityTableSpec,\n EntityPipelineResult,\n PipelineStepSummary,\n} from '../../database-designer.types.js';\n\ntype PanelState = 'idle' | 'running' | 'success' | 'failed';\n\n@Component({\n standalone: false,\n selector: 'mj-database-pipeline-panel',\n templateUrl: './entity-pipeline-panel.component.html',\n styleUrls: ['./entity-pipeline-panel.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EntityPipelinePanelComponent implements AfterViewInit {\n\n // ─── Injected ──────────────────────────────────────────────────────────\n\n private readonly service = inject(DatabaseDesignerService);\n private readonly cdr = inject(ChangeDetectorRef);\n\n // ─── Inputs ────────────────────────────────────────────────────────────\n\n /** Table spec to create or modify. */\n @Input() public TableDefinition: EntityTableSpec | null = null;\n\n /** Whether this panel is creating a new entity or altering an existing one. */\n @Input() public ModificationType: 'create' | 'alter' = 'create';\n\n /** Required only in 'alter' mode — ID of the entity being modified. */\n @Input() public ExistingEntityId: string | null = null;\n\n /** When true, `StartExecution()` is called automatically on mount. */\n @Input() public AutoStart = false;\n\n // ─── Outputs ───────────────────────────────────────────────────────────\n\n /** Emitted when the pipeline completes successfully. */\n @Output() public readonly Completed = new EventEmitter<EntityPipelineResult>();\n\n /** Emitted when the pipeline fails or throws. */\n @Output() public readonly Errored = new EventEmitter<string>();\n\n // ─── View state ────────────────────────────────────────────────────────\n\n public State: PanelState = 'idle';\n public PipelineResult: EntityPipelineResult | null = null;\n public ErrorMessage = '';\n public Steps: PipelineStepSummary[] = [];\n\n // ─── Public API ────────────────────────────────────────────────────────\n\n /**\n * Kick off the pipeline. Idempotent — calling while already running is a no-op.\n * Called by the parent (wizard step 5 or modify \"Apply\" tab).\n */\n ngAfterViewInit(): void {\n if (this.AutoStart) {\n // Defer to next microtask so Angular's current CD cycle finishes before\n // we transition to 'running' (avoids ExpressionChangedAfterItHasBeenCheckedError).\n Promise.resolve().then(() => this.StartExecution());\n }\n }\n\n public async StartExecution(): Promise<void> {\n if (this.State === 'running') return;\n if (!this.TableDefinition) {\n this.State = 'failed';\n this.ErrorMessage = 'Entity definition is incomplete — required fields (EntityName, TableName, SchemaName) are missing. Go back and complete all steps.';\n this.cdr.detectChanges();\n this.Errored.emit(this.ErrorMessage);\n return;\n }\n\n this.State = 'running';\n this.ErrorMessage = '';\n this.Steps = [];\n this.PipelineResult = null;\n this.cdr.detectChanges();\n\n try {\n // SkipRestart: true prevents the server from restarting MJAPI mid-request.\n // The Angular client communicates over a long-lived HTTP connection; a server\n // restart would drop the connection before the response arrives. The agent path\n // (EntitySchemaBuilder) uses the same flag for the same reason.\n const result = this.ModificationType === 'create'\n ? await this.service.createEntity(this.TableDefinition, { skipRestart: true })\n : await this.service.modifyEntity(this.TableDefinition, {\n existingEntityId: this.ExistingEntityId ?? '',\n skipRestart: true,\n });\n\n this.PipelineResult = result;\n this.Steps = result.PipelineSteps ?? [];\n\n if (result.Success) {\n this.State = 'success';\n this.Completed.emit(result);\n } else {\n this.State = 'failed';\n this.ErrorMessage = result.ErrorMessage ?? 'An unknown error occurred.';\n this.Errored.emit(this.ErrorMessage);\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.State = 'failed';\n this.ErrorMessage = msg;\n this.Errored.emit(msg);\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /** Reset to idle so the panel can be reused (e.g., \"Try Again\"). */\n public Reset(): void {\n this.State = 'idle';\n this.PipelineResult = null;\n this.ErrorMessage = '';\n this.Steps = [];\n this.cdr.detectChanges();\n }\n\n // ─── Template helpers ──────────────────────────────────────────────────\n\n public TrackByStep(_: number, step: PipelineStepSummary): string {\n return step.Name;\n }\n\n public StepIcon(step: PipelineStepSummary): string {\n switch (step.Status) {\n case 'success': return 'fa-solid fa-circle-check step-success';\n case 'failed': return 'fa-solid fa-circle-xmark step-failed';\n case 'skipped': return 'fa-solid fa-circle-minus step-skipped';\n default: return 'fa-solid fa-circle step-unknown';\n }\n }\n\n public FormatDuration(ms: number): string {\n return ms >= 1000 ? `${(ms / 1000).toFixed(1)}s` : `${ms}ms`;\n }\n\n /** Summary line for the success card: \"4 custom columns + 3 auto-managed\". */\n public get SuccessColumnSummary(): string {\n const custom = this.TableDefinition?.Columns.length ?? 0;\n return `${custom} custom column${custom !== 1 ? 's' : ''} + 3 auto-managed`;\n }\n\n public get FullTablePath(): string {\n if (!this.PipelineResult) return '';\n return `${this.PipelineResult.SchemaName}.${this.PipelineResult.TableName}`;\n }\n}\n","<div class=\"pipeline-panel\">\n\n <!-- ── Running state ───────────────────────────────────────────────────── -->\n @if (State === 'idle' || State === 'running') {\n <div class=\"panel-running\" aria-live=\"polite\" aria-label=\"Creating entity…\">\n <div class=\"running-header\">\n <i class=\"fa-solid fa-spinner fa-spin running-spinner\"></i>\n <span class=\"running-title\">\n @if (ModificationType === 'create') { Creating entity… }\n @else { Applying changes… }\n </span>\n </div>\n @if (TableDefinition) {\n <p class=\"running-target\">\n {{ TableDefinition.SchemaName }}.{{ TableDefinition.TableName }}\n </p>\n }\n <p class=\"running-note\">\n This typically takes 5–10 minutes. The server is running migrations,\n regenerating code, and restarting. You can safely close this panel —\n check back in Database Designer once it's done.\n </p>\n </div>\n }\n\n <!-- ── Success state ───────────────────────────────────────────────────── -->\n @if (State === 'success' && PipelineResult) {\n <div class=\"panel-success\">\n\n <!-- Step list -->\n @if (Steps.length > 0) {\n <div class=\"steps-list\" aria-label=\"Pipeline steps\">\n @for (step of Steps; track TrackByStep($index, step)) {\n <div class=\"step-item\" [class.step-failed]=\"step.Status === 'failed'\" [class.step-skipped]=\"step.Status === 'skipped'\">\n <i [class]=\"StepIcon(step)\"></i>\n <span class=\"step-name\">{{ step.Name }}</span>\n <span class=\"step-duration\">{{ FormatDuration(step.DurationMs) }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Success card -->\n <div class=\"success-card\">\n <i class=\"fa-solid fa-circle-check success-icon\"></i>\n <h3 class=\"success-title\">{{ PipelineResult.EntityName }} created!</h3>\n <p class=\"success-path\">{{ FullTablePath }}</p>\n <p class=\"success-cols\">{{ SuccessColumnSummary }}</p>\n <p class=\"success-refresh-hint\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Don't see it in the entity list? Click <strong>Refresh</strong> to reload.\n </p>\n </div>\n </div>\n }\n\n <!-- ── Failed state ────────────────────────────────────────────────────── -->\n @if (State === 'failed') {\n <div class=\"panel-failed\">\n\n <!-- Step list (partial results if available) -->\n @if (Steps.length > 0) {\n <div class=\"steps-list\" aria-label=\"Pipeline steps\">\n @for (step of Steps; track TrackByStep($index, step)) {\n <div class=\"step-item\" [class.step-failed]=\"step.Status === 'failed'\" [class.step-skipped]=\"step.Status === 'skipped'\">\n <i [class]=\"StepIcon(step)\"></i>\n <span class=\"step-name\">{{ step.Name }}</span>\n @if (step.Message) {\n <span class=\"step-message\">{{ step.Message }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- Error card -->\n <div class=\"error-card\">\n <i class=\"fa-solid fa-circle-xmark error-icon\"></i>\n <h3 class=\"error-title\">\n @if (ModificationType === 'create') { Entity creation failed }\n @else { Apply changes failed }\n </h3>\n <p class=\"error-message\">{{ ErrorMessage }}</p>\n <button mjButton buttonStyle=\"secondary\" (click)=\"Reset()\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n</div>\n"]}
@@ -0,0 +1,36 @@
1
+ import type { EntityTableSpec, ColumnSpec, ForeignKeySpec } from '../../database-designer.types.js';
2
+ import * as i0 from "@angular/core";
3
+ /** Internal view model for a row in the review table. */
4
+ interface ReviewRow {
5
+ column: ColumnSpec;
6
+ /** 'existing' | 'new' | 'hidden' — only populated in alter mode. */
7
+ diffState: 'existing' | 'new' | 'hidden' | 'unchanged';
8
+ sqlType: string;
9
+ }
10
+ export declare class EntityReviewPanelComponent {
11
+ /** The table / entity definition being reviewed. */
12
+ set TableDefinition(v: EntityTableSpec | null);
13
+ get TableDefinition(): EntityTableSpec | null;
14
+ private _tableDefinition;
15
+ /** 'create' (all rows are new) vs 'alter' (diff against existingColumns). */
16
+ set ModificationType(v: 'create' | 'alter');
17
+ get ModificationType(): 'create' | 'alter';
18
+ private _modificationType;
19
+ /** Columns already in the DB — used in alter mode to compute the diff. */
20
+ set ExistingColumns(v: ColumnSpec[]);
21
+ get ExistingColumns(): ColumnSpec[];
22
+ private _existingColumns;
23
+ /** Prepared rows ready for the template. */
24
+ Rows: ReviewRow[];
25
+ /** Convenient accessor for the template. */
26
+ get ForeignKeys(): ForeignKeySpec[];
27
+ TrackByName(_: number, row: ReviewRow): string;
28
+ private rebuildRows;
29
+ private diffState;
30
+ /** Resolve a human-readable SQL type from the ColumnSpec. */
31
+ private resolveSqlType;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<EntityReviewPanelComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntityReviewPanelComponent, "mj-database-review-panel", never, { "TableDefinition": { "alias": "TableDefinition"; "required": false; }; "ModificationType": { "alias": "ModificationType"; "required": false; }; "ExistingColumns": { "alias": "ExistingColumns"; "required": false; }; }, {}, never, never, false, never>;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=entity-review-panel.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-review-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/shared/entity-review-panel.component.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;;AAEpG,yDAAyD;AACzD,UAAU,SAAS;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,oEAAoE;IACpE,SAAS,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qBAOa,0BAA0B;IAEnC,oDAAoD;IACpD,IAAoB,eAAe,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,EAG5D;IACD,IAAW,eAAe,IAAI,eAAe,GAAG,IAAI,CAAkC;IACtF,OAAO,CAAC,gBAAgB,CAAgC;IAExD,6EAA6E;IAC7E,IAAoB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,EAGzD;IACD,IAAW,gBAAgB,IAAI,QAAQ,GAAG,OAAO,CAAmC;IACpF,OAAO,CAAC,iBAAiB,CAAgC;IAEzD,0EAA0E;IAC1E,IAAoB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,EAGlD;IACD,IAAW,eAAe,IAAI,UAAU,EAAE,CAAkC;IAC5E,OAAO,CAAC,gBAAgB,CAAoB;IAE5C,4CAA4C;IACrC,IAAI,EAAE,SAAS,EAAE,CAAM;IAE9B,4CAA4C;IAC5C,IAAW,WAAW,IAAI,cAAc,EAAE,CAEzC;IAEM,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM;IAMrD,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,SAAS;IAQjB,6DAA6D;IAC7D,OAAO,CAAC,cAAc;yCAlEb,0BAA0B;2CAA1B,0BAA0B;CAoFtC"}