@memberjunction/ng-dashboards 5.30.1 → 5.31.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
@@ -1,9 +1,10 @@
1
- import { Component, Input, Output, EventEmitter, inject } from '@angular/core';
2
- import { RunView, Metadata } from '@memberjunction/core';
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';
2
+ import { RunView } from '@memberjunction/core';
3
3
  import { UUIDsEqual } from '@memberjunction/global';
4
4
  import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
6
6
  import { MJNotificationService } from '@memberjunction/ng-notifications';
7
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/forms";
9
10
  import * as i2 from "@memberjunction/ng-shared-generic";
@@ -243,7 +244,7 @@ function ArtifactSelectionDialogComponent_Conditional_30_Template(rf, ctx) { if
243
244
  i0.ɵɵadvance(5);
244
245
  i0.ɵɵconditional(ctx_r0.artifactVersions.length > 0 ? 5 : 6);
245
246
  } }
246
- export class ArtifactSelectionDialogComponent {
247
+ export class ArtifactSelectionDialogComponent extends BaseAngularComponent {
247
248
  Visible = false;
248
249
  Close = new EventEmitter();
249
250
  // Data
@@ -268,11 +269,12 @@ export class ArtifactSelectionDialogComponent {
268
269
  // New Artifact Form
269
270
  newArtifactName = '';
270
271
  newArtifactDescription = '';
271
- metadata = new Metadata();
272
+ get metadata() { return this.ProviderToUse; }
272
273
  currentUser = null;
273
274
  destroy$ = new Subject();
274
275
  searchSubject = new Subject();
275
276
  notificationService = inject(MJNotificationService);
277
+ cdr = inject(ChangeDetectorRef);
276
278
  async ngOnInit() {
277
279
  // Setup search debouncing
278
280
  this.searchSubject.pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe(() => {
@@ -286,8 +288,9 @@ export class ArtifactSelectionDialogComponent {
286
288
  }
287
289
  async loadArtifacts() {
288
290
  this.isLoading = true;
291
+ this.cdr.detectChanges();
289
292
  try {
290
- const rv = new RunView();
293
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
291
294
  // Calculate StartRow for server-side paging
292
295
  const startRow = this.currentPage * this.pageSize;
293
296
  // Load artifacts with paging
@@ -312,6 +315,7 @@ export class ArtifactSelectionDialogComponent {
312
315
  }
313
316
  finally {
314
317
  this.isLoading = false;
318
+ this.cdr.detectChanges();
315
319
  }
316
320
  }
317
321
  _artifactFilter = undefined;
@@ -330,7 +334,7 @@ export class ArtifactSelectionDialogComponent {
330
334
  }
331
335
  // Filter by user email if provided
332
336
  if (this.userEmail?.trim()) {
333
- const md = new Metadata();
337
+ const md = this.ProviderToUse;
334
338
  const schemaName = md.EntityByName("MJ: Users")?.SchemaName || "__mj";
335
339
  const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`;
336
340
  filters.push(userFilter);
@@ -349,12 +353,13 @@ export class ArtifactSelectionDialogComponent {
349
353
  this.showNewArtifactForm = false;
350
354
  this.versionAction = 'new';
351
355
  this.selectedVersion = null;
356
+ this.cdr.detectChanges();
352
357
  // Load versions for this artifact
353
358
  await this.loadVersions(artifact.ID);
354
359
  }
355
360
  async loadVersions(artifactId) {
356
361
  try {
357
- const rv = new RunView();
362
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
358
363
  const result = await rv.RunView({
359
364
  EntityName: 'MJ: Artifact Versions',
360
365
  ExtraFilter: `ArtifactID = '${artifactId}'`,
@@ -369,6 +374,9 @@ export class ArtifactSelectionDialogComponent {
369
374
  console.error('Error loading versions:', error);
370
375
  this.artifactVersions = [];
371
376
  }
377
+ finally {
378
+ this.cdr.detectChanges();
379
+ }
372
380
  }
373
381
  getNextVersionNumber() {
374
382
  if (this.artifactVersions.length === 0)
@@ -480,7 +488,7 @@ export class ArtifactSelectionDialogComponent {
480
488
  artifact.Name = this.newArtifactName;
481
489
  artifact.Description = this.newArtifactDescription || null;
482
490
  // Get Component artifact type
483
- const rv = new RunView();
491
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
484
492
  const typeResult = await rv.RunView({
485
493
  EntityName: 'MJ: Artifact Types',
486
494
  ExtraFilter: `Name = 'Component'`,
@@ -521,8 +529,8 @@ export class ArtifactSelectionDialogComponent {
521
529
  IsVersionSelected(version) {
522
530
  return UUIDsEqual(this.selectedVersion?.ID, version.ID);
523
531
  }
524
- static ɵfac = function ArtifactSelectionDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ArtifactSelectionDialogComponent)(); };
525
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactSelectionDialogComponent, selectors: [["app-artifact-selection-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, decls: 37, vars: 21, consts: [["Title", "Save Component to Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-selection-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], [1, "create-section"], [1, "divider"], ["mjButton", "", "variant", "primary", 1, "create-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "new-artifact-form"], [1, "version-panel"], ["mjButton", "", 3, "click", "variant", "disabled"], [1, "fa-solid", "fa-save"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "fa-solid", "fa-file-code"], [1, "artifact-description"], [1, "artifact-meta"], ["placeholder", "Artifact name...", 1, "mj-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Description (optional)...", 1, "mj-textarea", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], [1, "info-state"], [1, "version-actions"], [1, "radio-label"], ["type", "radio", "name", "versionAction", "value", "new", 3, "ngModelChange", "change", "ngModel"], ["type", "radio", "name", "versionAction", "value", "update", 3, "ngModelChange", "ngModel"], [1, "version-selection"], [1, "version-item", 3, "selected"], [1, "warning"], [1, "version-item"], ["type", "radio", "name", "selectedVersion", 3, "ngModelChange", "value", "ngModel"], [1, "version-info"], [1, "version-number"], [1, "version-date"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-info-circle"]], template: function ArtifactSelectionDialogComponent_Template(rf, ctx) { if (rf & 1) {
532
+ static ɵfac = /*@__PURE__*/ (() => { let ɵArtifactSelectionDialogComponent_BaseFactory; return function ArtifactSelectionDialogComponent_Factory(__ngFactoryType__) { return (ɵArtifactSelectionDialogComponent_BaseFactory || (ɵArtifactSelectionDialogComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ArtifactSelectionDialogComponent)))(__ngFactoryType__ || ArtifactSelectionDialogComponent); }; })();
533
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactSelectionDialogComponent, selectors: [["app-artifact-selection-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 37, vars: 21, consts: [["Title", "Save Component to Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-selection-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], [1, "create-section"], [1, "divider"], ["mjButton", "", "variant", "primary", 1, "create-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "new-artifact-form"], [1, "version-panel"], ["mjButton", "", 3, "click", "variant", "disabled"], [1, "fa-solid", "fa-save"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "fa-solid", "fa-file-code"], [1, "artifact-description"], [1, "artifact-meta"], ["placeholder", "Artifact name...", 1, "mj-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Description (optional)...", 1, "mj-textarea", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], [1, "info-state"], [1, "version-actions"], [1, "radio-label"], ["type", "radio", "name", "versionAction", "value", "new", 3, "ngModelChange", "change", "ngModel"], ["type", "radio", "name", "versionAction", "value", "update", 3, "ngModelChange", "ngModel"], [1, "version-selection"], [1, "version-item", 3, "selected"], [1, "warning"], [1, "version-item"], ["type", "radio", "name", "selectedVersion", 3, "ngModelChange", "value", "ngModel"], [1, "version-info"], [1, "version-number"], [1, "version-date"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-info-circle"]], template: function ArtifactSelectionDialogComponent_Template(rf, ctx) { if (rf & 1) {
526
534
  i0.ɵɵelementStart(0, "mj-dialog", 0);
527
535
  i0.ɵɵlistener("Close", function ArtifactSelectionDialogComponent_Template_mj_dialog_Close_0_listener() { return ctx.cancel(); });
528
536
  i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
@@ -609,5 +617,5 @@ export class ArtifactSelectionDialogComponent {
609
617
  }], Close: [{
610
618
  type: Output
611
619
  }] }); })();
612
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactSelectionDialogComponent, { className: "ArtifactSelectionDialogComponent", filePath: "src/ComponentStudio/components/artifact-selection-dialog.component.ts", lineNumber: 21 }); })();
620
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactSelectionDialogComponent, { className: "ArtifactSelectionDialogComponent", filePath: "src/ComponentStudio/components/artifact-selection-dialog.component.ts", lineNumber: 22 }); })();
613
621
  //# sourceMappingURL=artifact-selection-dialog.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-selection-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts","../../../src/ComponentStudio/components/artifact-selection-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, inject } from '@angular/core';\nimport { RunView, Metadata, UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\nexport interface ArtifactSelectionResult {\n artifact: MJArtifactEntity;\n action: 'new-version' | 'update-version';\n versionToUpdate?: MJArtifactVersionEntity;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-selection-dialog',\n templateUrl: './artifact-selection-dialog.component.html',\n styleUrl: './artifact-selection-dialog.component.css'\n})\nexport class ArtifactSelectionDialogComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactSelectionResult | undefined>();\n\n // Data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n\n // Paging State\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI State\n isLoading = true;\n searchTerm = '';\n userEmail = '';\n selectedArtifactType = '';\n showNewArtifactForm = false;\n isFilterPanelCollapsed = false;\n\n\n // Selection State\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n versionAction: 'new' | 'update' = 'new';\n \n // New Artifact Form\n newArtifactName = '';\n newArtifactDescription = '';\n \n private metadata = new Metadata();\n private currentUser: UserInfo | null = null;\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n private notificationService = inject(MJNotificationService);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n \n await this.filterArtifacts();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n try {\n const rv = new RunView();\n\n // Calculate StartRow for server-side paging\n const startRow = this.currentPage * this.pageSize;\n\n // Load artifacts with paging\n const result = await rv.RunView<MJArtifactEntity>({\n ExtraFilter: this._artifactFilter,\n EntityName: 'MJ: Artifacts',\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n\n // Calculate total pages using TotalRowCount from server\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n private _artifactFilter: string | undefined= undefined;\n public async filterArtifacts() {\n // Reset to first page when filters change\n this.currentPage = 0;\n \n const filters: string[] = [];\n \n // Filter by search term\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n \n // Filter by artifact type\n if (this.selectedArtifactType) {\n filters.push(`ArtifactTypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n }\n \n // Filter by user email if provided\n if (this.userEmail?.trim()) {\n const md = new Metadata();\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`;\n filters.push(userFilter);\n }\n \n // Combine all filters\n this._artifactFilter = filters.length > 0 ? filters.join(' AND ') : undefined;\n\n await this.loadArtifacts();\n }\n\n selectCreateNew() {\n this.showNewArtifactForm = true;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.showNewArtifactForm = false;\n this.versionAction = 'new';\n this.selectedVersion = null;\n\n // Load versions for this artifact\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n }\n }\n\n getNextVersionNumber(): number {\n if (this.artifactVersions.length === 0) return 1;\n return Math.max(...this.artifactVersions.map(v => v.VersionNumber)) + 1;\n }\n\n // Paging methods\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n // Clear selected artifact when type changes\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canSave(): boolean {\n if (this.showNewArtifactForm) {\n return this.newArtifactName.trim().length > 0;\n }\n \n if (!this.selectedArtifact) return false;\n \n if (this.versionAction === 'update') {\n return this.selectedVersion !== null;\n }\n \n return true;\n }\n\n getSaveButtonText(): string {\n if (this.showNewArtifactForm) {\n return 'Create & Save';\n }\n\n if (this.versionAction === 'update' && this.selectedVersion) {\n return `Update Version ${this.selectedVersion.VersionNumber}`;\n }\n\n return `Save as Version ${this.getNextVersionNumber()}`;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n async save() {\n if (!this.canSave()) return;\n \n // Handle new artifact creation\n if (this.showNewArtifactForm) {\n const newArtifact = await this.createNewArtifact();\n if (newArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: newArtifact,\n action: 'new-version'\n };\n this.Close.emit(result);\n }\n return;\n }\n \n // Handle existing artifact selection\n if (this.selectedArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: this.selectedArtifact,\n action: this.versionAction === 'update' ? 'update-version' : 'new-version',\n versionToUpdate: this.versionAction === 'update' ? this.selectedVersion! : undefined\n };\n \n // If updating, show confirmation\n if (this.versionAction === 'update') {\n const confirm = window.confirm(\n `Are you sure you want to overwrite version ${this.selectedVersion!.VersionNumber}? This action cannot be undone.`\n );\n\n if (!confirm) return;\n }\n\n this.Close.emit(result);\n }\n }\n\n private async createNewArtifact(): Promise<MJArtifactEntity | null> {\n try {\n const artifact = await this.metadata.GetEntityObject<MJArtifactEntity>('MJ: Artifacts');\n artifact.Name = this.newArtifactName;\n artifact.Description = this.newArtifactDescription || null;\n\n // Get Component artifact type\n const rv = new RunView();\n const typeResult = await rv.RunView({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name = 'Component'`,\n MaxRows: 1\n });\n\n if (typeResult.Success && typeResult.Results?.length > 0) {\n artifact.TypeID = typeResult.Results[0].ID;\n }\n\n // Set default environment if available from current user\n // Environment ID is optional - will be set by server if not provided\n const envId = (this.metadata.CurrentUser as any)?.EnvironmentID;\n if (envId) {\n artifact.EnvironmentID = envId;\n }\n\n artifact.Comments = 'Created from Component Studio';\n\n const saveResult = await artifact.Save();\n if (saveResult) {\n this.notificationService.CreateSimpleNotification(\n `Artifact \"${artifact.Name}\" created successfully`,\n 'success',\n 3000\n );\n return artifact;\n } else {\n console.error('Failed to create artifact - Full LatestResult:', artifact.LatestResult);\n this.notificationService.CreateSimpleNotification(\n 'Failed to create artifact',\n 'error'\n );\n return null;\n }\n } catch (error) {\n console.error('Error creating artifact:', error);\n this.notificationService.CreateSimpleNotification(\n 'Error creating artifact',\n 'error'\n );\n return null;\n }\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}","<mj-dialog [Visible]=\"true\" Title=\"Save Component to Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-selection-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <!-- Panel Header -->\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\" \n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\" \n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">All Types</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n \n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\" \n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total items)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Existing Artifacts -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n } \n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n } \n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\" \n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Create New Artifact Section (at bottom) -->\n <div class=\"create-section\">\n <div class=\"divider\">OR CREATE NEW ARTIFACT</div>\n \n <button mjButton\n (click)=\"selectCreateNew()\"\n variant=\"primary\"\n class=\"create-btn\">\n <i class=\"fa-solid fa-plus\"></i> Create New Artifact\n </button>\n \n @if (showNewArtifactForm) {\n <div class=\"new-artifact-form\">\n <input class=\"mj-input\"\n [(ngModel)]=\"newArtifactName\"\n placeholder=\"Artifact name...\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"newArtifactDescription\"\n placeholder=\"Description (optional)...\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version Panel (only show when artifact selected) -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Version</h4>\n </div>\n \n @if (artifactVersions.length > 0) {\n <div class=\"version-content\">\n <div class=\"version-actions\">\n <label>Action</label>\n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"new\"\n [(ngModel)]=\"versionAction\"\n (change)=\"selectedVersion = null\">\n <span>Create New Version (v{{ getNextVersionNumber() }})</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"update\"\n [(ngModel)]=\"versionAction\">\n <span>Update Existing Version</span>\n </label>\n </div>\n \n @if (versionAction === 'update') {\n <div class=\"version-selection\">\n <label>Select Version</label>\n @for (version of artifactVersions; track version.ID) {\n <label class=\"version-item\" \n [class.selected]=\"IsVersionSelected(version)\">\n <input type=\"radio\"\n name=\"selectedVersion\"\n [value]=\"version\"\n [(ngModel)]=\"selectedVersion\">\n <div class=\"version-info\">\n <div class=\"version-number\">Version {{ version.VersionNumber }}</div>\n <div class=\"version-date\">{{ version.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </label>\n }\n </div>\n \n @if (selectedVersion) {\n <div class=\"warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>Warning: This will overwrite version {{ selectedVersion.VersionNumber }}</span>\n </div>\n }\n }\n </div>\n } @else {\n <div class=\"info-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available for this artifact.</p>\n <p>A new version will be created.</p>\n </div>\n }\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n [variant]=\"versionAction === 'update' && selectedVersion ? 'warning' : 'primary'\"\n (click)=\"save()\"\n [disabled]=\"!canSave()\">\n <i class=\"fa-solid fa-save\"></i>\n {{ getSaveButtonText() }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
1
+ {"version":3,"file":"artifact-selection-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts","../../../src/ComponentStudio/components/artifact-selection-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView, UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactSelectionResult {\n artifact: MJArtifactEntity;\n action: 'new-version' | 'update-version';\n versionToUpdate?: MJArtifactVersionEntity;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-selection-dialog',\n templateUrl: './artifact-selection-dialog.component.html',\n styleUrl: './artifact-selection-dialog.component.css'\n})\nexport class ArtifactSelectionDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactSelectionResult | undefined>();\n\n // Data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n\n // Paging State\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI State\n isLoading = true;\n searchTerm = '';\n userEmail = '';\n selectedArtifactType = '';\n showNewArtifactForm = false;\n isFilterPanelCollapsed = false;\n\n\n // Selection State\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n versionAction: 'new' | 'update' = 'new';\n \n // New Artifact Form\n newArtifactName = '';\n newArtifactDescription = '';\n \n private get metadata() { return this.ProviderToUse; }\n private currentUser: UserInfo | null = null;\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n private notificationService = inject(MJNotificationService);\n private cdr = inject(ChangeDetectorRef);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n \n await this.filterArtifacts();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Calculate StartRow for server-side paging\n const startRow = this.currentPage * this.pageSize;\n\n // Load artifacts with paging\n const result = await rv.RunView<MJArtifactEntity>({\n ExtraFilter: this._artifactFilter,\n EntityName: 'MJ: Artifacts',\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n\n // Calculate total pages using TotalRowCount from server\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private _artifactFilter: string | undefined= undefined;\n public async filterArtifacts() {\n // Reset to first page when filters change\n this.currentPage = 0;\n \n const filters: string[] = [];\n \n // Filter by search term\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n \n // Filter by artifact type\n if (this.selectedArtifactType) {\n filters.push(`ArtifactTypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n }\n \n // Filter by user email if provided\n if (this.userEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`;\n filters.push(userFilter);\n }\n \n // Combine all filters\n this._artifactFilter = filters.length > 0 ? filters.join(' AND ') : undefined;\n\n await this.loadArtifacts();\n }\n\n selectCreateNew() {\n this.showNewArtifactForm = true;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.showNewArtifactForm = false;\n this.versionAction = 'new';\n this.selectedVersion = null;\n this.cdr.detectChanges();\n\n // Load versions for this artifact\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n getNextVersionNumber(): number {\n if (this.artifactVersions.length === 0) return 1;\n return Math.max(...this.artifactVersions.map(v => v.VersionNumber)) + 1;\n }\n\n // Paging methods\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n // Clear selected artifact when type changes\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canSave(): boolean {\n if (this.showNewArtifactForm) {\n return this.newArtifactName.trim().length > 0;\n }\n \n if (!this.selectedArtifact) return false;\n \n if (this.versionAction === 'update') {\n return this.selectedVersion !== null;\n }\n \n return true;\n }\n\n getSaveButtonText(): string {\n if (this.showNewArtifactForm) {\n return 'Create & Save';\n }\n\n if (this.versionAction === 'update' && this.selectedVersion) {\n return `Update Version ${this.selectedVersion.VersionNumber}`;\n }\n\n return `Save as Version ${this.getNextVersionNumber()}`;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n async save() {\n if (!this.canSave()) return;\n \n // Handle new artifact creation\n if (this.showNewArtifactForm) {\n const newArtifact = await this.createNewArtifact();\n if (newArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: newArtifact,\n action: 'new-version'\n };\n this.Close.emit(result);\n }\n return;\n }\n \n // Handle existing artifact selection\n if (this.selectedArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: this.selectedArtifact,\n action: this.versionAction === 'update' ? 'update-version' : 'new-version',\n versionToUpdate: this.versionAction === 'update' ? this.selectedVersion! : undefined\n };\n \n // If updating, show confirmation\n if (this.versionAction === 'update') {\n const confirm = window.confirm(\n `Are you sure you want to overwrite version ${this.selectedVersion!.VersionNumber}? This action cannot be undone.`\n );\n\n if (!confirm) return;\n }\n\n this.Close.emit(result);\n }\n }\n\n private async createNewArtifact(): Promise<MJArtifactEntity | null> {\n try {\n const artifact = await this.metadata.GetEntityObject<MJArtifactEntity>('MJ: Artifacts');\n artifact.Name = this.newArtifactName;\n artifact.Description = this.newArtifactDescription || null;\n\n // Get Component artifact type\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const typeResult = await rv.RunView({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name = 'Component'`,\n MaxRows: 1\n });\n\n if (typeResult.Success && typeResult.Results?.length > 0) {\n artifact.TypeID = typeResult.Results[0].ID;\n }\n\n // Set default environment if available from current user\n // Environment ID is optional - will be set by server if not provided\n const envId = (this.metadata.CurrentUser as any)?.EnvironmentID;\n if (envId) {\n artifact.EnvironmentID = envId;\n }\n\n artifact.Comments = 'Created from Component Studio';\n\n const saveResult = await artifact.Save();\n if (saveResult) {\n this.notificationService.CreateSimpleNotification(\n `Artifact \"${artifact.Name}\" created successfully`,\n 'success',\n 3000\n );\n return artifact;\n } else {\n console.error('Failed to create artifact - Full LatestResult:', artifact.LatestResult);\n this.notificationService.CreateSimpleNotification(\n 'Failed to create artifact',\n 'error'\n );\n return null;\n }\n } catch (error) {\n console.error('Error creating artifact:', error);\n this.notificationService.CreateSimpleNotification(\n 'Error creating artifact',\n 'error'\n );\n return null;\n }\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}","<mj-dialog [Visible]=\"true\" Title=\"Save Component to Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-selection-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <!-- Panel Header -->\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\" \n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\" \n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">All Types</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n \n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\" \n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total items)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Existing Artifacts -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n } \n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n } \n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\" \n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Create New Artifact Section (at bottom) -->\n <div class=\"create-section\">\n <div class=\"divider\">OR CREATE NEW ARTIFACT</div>\n \n <button mjButton\n (click)=\"selectCreateNew()\"\n variant=\"primary\"\n class=\"create-btn\">\n <i class=\"fa-solid fa-plus\"></i> Create New Artifact\n </button>\n \n @if (showNewArtifactForm) {\n <div class=\"new-artifact-form\">\n <input class=\"mj-input\"\n [(ngModel)]=\"newArtifactName\"\n placeholder=\"Artifact name...\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"newArtifactDescription\"\n placeholder=\"Description (optional)...\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version Panel (only show when artifact selected) -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Version</h4>\n </div>\n \n @if (artifactVersions.length > 0) {\n <div class=\"version-content\">\n <div class=\"version-actions\">\n <label>Action</label>\n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"new\"\n [(ngModel)]=\"versionAction\"\n (change)=\"selectedVersion = null\">\n <span>Create New Version (v{{ getNextVersionNumber() }})</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"update\"\n [(ngModel)]=\"versionAction\">\n <span>Update Existing Version</span>\n </label>\n </div>\n \n @if (versionAction === 'update') {\n <div class=\"version-selection\">\n <label>Select Version</label>\n @for (version of artifactVersions; track version.ID) {\n <label class=\"version-item\" \n [class.selected]=\"IsVersionSelected(version)\">\n <input type=\"radio\"\n name=\"selectedVersion\"\n [value]=\"version\"\n [(ngModel)]=\"selectedVersion\">\n <div class=\"version-info\">\n <div class=\"version-number\">Version {{ version.VersionNumber }}</div>\n <div class=\"version-date\">{{ version.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </label>\n }\n </div>\n \n @if (selectedVersion) {\n <div class=\"warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>Warning: This will overwrite version {{ selectedVersion.VersionNumber }}</span>\n </div>\n }\n }\n </div>\n } @else {\n <div class=\"info-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available for this artifact.</p>\n <p>A new version will be created.</p>\n </div>\n }\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n [variant]=\"versionAction === 'update' && selectedVersion ? 'warning' : 'primary'\"\n (click)=\"save()\"\n [disabled]=\"!canSave()\">\n <i class=\"fa-solid fa-save\"></i>\n {{ getSaveButtonText() }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
@@ -1,18 +1,20 @@
1
- import { ChangeDetectorRef } from '@angular/core';
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { ComponentStudioStateService } from '../../services/component-studio-state.service';
3
3
  import * as i0 from "@angular/core";
4
- export declare class DataRequirementsEditorComponent {
4
+ export declare class DataRequirementsEditorComponent implements OnInit, OnDestroy {
5
5
  State: ComponentStudioStateService;
6
6
  private cdr;
7
7
  EditableContent: string;
8
8
  IsEditing: boolean;
9
9
  private _parsedRequirements;
10
+ private destroy$;
10
11
  constructor(State: ComponentStudioStateService, cdr: ChangeDetectorRef);
11
12
  get HasDataRequirements(): boolean;
12
13
  get EntityCount(): number;
13
14
  get QueryCount(): number;
14
15
  get DataMode(): string;
15
16
  ngOnInit(): void;
17
+ ngOnDestroy(): void;
16
18
  OnContentChanged(): void;
17
19
  ApplyChanges(): void;
18
20
  CancelChanges(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"data-requirements-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;;AAG5F,qBA+Ia,+BAA+B;IAOjC,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,GAAG;IAPb,eAAe,EAAE,MAAM,CAAM;IAC7B,SAAS,EAAE,OAAO,CAAS;IAE3B,OAAO,CAAC,mBAAmB,CAAwC;gBAG1D,KAAK,EAAE,2BAA2B,EACjC,GAAG,EAAE,iBAAiB;IAGhC,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED,IAAI,UAAU,IAAI,MAAM,CAIvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED,QAAQ,IAAI,IAAI;IAQhB,gBAAgB,IAAI,IAAI;IAKxB,YAAY,IAAI,IAAI;IAYpB,aAAa,IAAI,IAAI;IAMrB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;yCA3ET,+BAA+B;2CAA/B,+BAA+B;CAkF3C"}
1
+ {"version":3,"file":"data-requirements-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGhF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;;AAG5F,qBA+Ia,+BAAgC,YAAW,MAAM,EAAE,SAAS;IAQ9D,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,GAAG;IARb,eAAe,EAAE,MAAM,CAAM;IAC7B,SAAS,EAAE,OAAO,CAAS;IAE3B,OAAO,CAAC,mBAAmB,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAuB;gBAG9B,KAAK,EAAE,2BAA2B,EACjC,GAAG,EAAE,iBAAiB;IAGhC,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED,IAAI,UAAU,IAAI,MAAM,CAIvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED,QAAQ,IAAI,IAAI;IAQhB,WAAW,IAAI,IAAI;IAKnB,gBAAgB,IAAI,IAAI;IAKxB,YAAY,IAAI,IAAI;IAapB,aAAa,IAAI,IAAI;IAMrB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;yCAlFT,+BAA+B;2CAA/B,+BAA+B;CAyF3C"}
@@ -1,4 +1,6 @@
1
1
  import { Component } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
2
4
  import * as i0 from "@angular/core";
3
5
  import * as i1 from "../../services/component-studio-state.service";
4
6
  import * as i2 from "@angular/forms";
@@ -65,6 +67,7 @@ export class DataRequirementsEditorComponent {
65
67
  EditableContent = '';
66
68
  IsEditing = false;
67
69
  _parsedRequirements = null;
70
+ destroy$ = new Subject();
68
71
  constructor(State, cdr) {
69
72
  this.State = State;
70
73
  this.cdr = cdr;
@@ -91,11 +94,15 @@ export class DataRequirementsEditorComponent {
91
94
  }
92
95
  ngOnInit() {
93
96
  this.loadContent();
94
- this.State.StateChanged.subscribe(() => {
97
+ this.State.StateChanged.pipe(takeUntil(this.destroy$)).subscribe(() => {
95
98
  this.loadContent();
96
99
  this.cdr.detectChanges();
97
100
  });
98
101
  }
102
+ ngOnDestroy() {
103
+ this.destroy$.next();
104
+ this.destroy$.complete();
105
+ }
99
106
  OnContentChanged() {
100
107
  this.IsEditing = true;
101
108
  this.parseContent();
@@ -105,8 +112,9 @@ export class DataRequirementsEditorComponent {
105
112
  const spec = JSON.parse(this.State.EditableSpec);
106
113
  const dataReq = JSON.parse(this.EditableContent);
107
114
  spec.dataRequirements = dataReq;
108
- this.State.UpdateSpec(spec);
109
115
  this.IsEditing = false;
116
+ this.State.UpdateSpec(spec);
117
+ this.cdr.detectChanges();
110
118
  }
111
119
  catch (error) {
112
120
  console.error('Error applying data requirements changes:', error);
@@ -212,5 +220,5 @@ export class DataRequirementsEditorComponent {
212
220
  </div>
213
221
  `, styles: ["\n .data-requirements-editor {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n }\n .header-title {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n .header-title i {\n margin-right: 6px;\n color: var(--mj-text-secondary);\n }\n .action-buttons {\n display: flex;\n gap: 6px;\n }\n .summary-bar {\n display: flex;\n gap: 12px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n }\n .summary-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n .mode-badge {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n padding: 1px 8px;\n border-radius: 10px;\n font-weight: 600;\n text-transform: uppercase;\n font-size: 10px;\n }\n .editor-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n .json-editor-container {\n flex: 1;\n overflow: hidden;\n }\n .json-editor-container mj-code-editor {\n display: block;\n height: 100%;\n }\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n flex: 1;\n }\n .empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n .empty-state p {\n margin: 0;\n font-size: 13px;\n text-align: center;\n }\n "] }]
214
222
  }], () => [{ type: i1.ComponentStudioStateService }, { type: i0.ChangeDetectorRef }], null); })();
215
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataRequirementsEditorComponent, { className: "DataRequirementsEditorComponent", filePath: "src/ComponentStudio/components/editors/data-requirements-editor.component.ts", lineNumber: 148 }); })();
223
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataRequirementsEditorComponent, { className: "DataRequirementsEditorComponent", filePath: "src/ComponentStudio/components/editors/data-requirements-editor.component.ts", lineNumber: 150 }); })();
216
224
  //# sourceMappingURL=data-requirements-editor.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-requirements-editor.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectorRef } from '@angular/core';\nimport { ComponentStudioStateService } from '../../services/component-studio-state.service';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\n\n@Component({\n standalone: false,\n selector: 'mj-data-requirements-editor',\n template: `\n <div class=\"data-requirements-editor\">\n <div class=\"editor-header\">\n <span class=\"header-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data Requirements\n </span>\n @if (IsEditing) {\n <div class=\"action-buttons\">\n <button mjButton variant=\"primary\" (click)=\"ApplyChanges()\">\n <i class=\"fa-solid fa-check\"></i> Apply Changes\n </button>\n <button mjButton (click)=\"CancelChanges()\">\n <i class=\"fa-solid fa-times\"></i> Cancel\n </button>\n </div>\n }\n </div>\n\n <div class=\"editor-body\">\n @if (State.SelectedComponent) {\n @if (HasDataRequirements) {\n <div class=\"summary-bar\">\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n {{ EntityCount }} {{ EntityCount === 1 ? 'entity' : 'entities' }}\n </span>\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-search\"></i>\n {{ QueryCount }} {{ QueryCount === 1 ? 'query' : 'queries' }}\n </span>\n <span class=\"summary-item mode-badge\">\n {{ DataMode }}\n </span>\n </div>\n }\n <div class=\"json-editor-container\">\n <mj-code-editor\n [(ngModel)]=\"EditableContent\"\n [language]=\"'json'\"\n [indentWithTab]=\"true\"\n [placeholder]=\"'Enter data requirements JSON...'\"\n (ngModelChange)=\"OnContentChanged()\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Select a component to edit its data requirements.</p>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n .data-requirements-editor {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n }\n .header-title {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n .header-title i {\n margin-right: 6px;\n color: var(--mj-text-secondary);\n }\n .action-buttons {\n display: flex;\n gap: 6px;\n }\n .summary-bar {\n display: flex;\n gap: 12px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n }\n .summary-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n .mode-badge {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n padding: 1px 8px;\n border-radius: 10px;\n font-weight: 600;\n text-transform: uppercase;\n font-size: 10px;\n }\n .editor-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n .json-editor-container {\n flex: 1;\n overflow: hidden;\n }\n .json-editor-container mj-code-editor {\n display: block;\n height: 100%;\n }\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n flex: 1;\n }\n .empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n .empty-state p {\n margin: 0;\n font-size: 13px;\n text-align: center;\n }\n `]\n})\nexport class DataRequirementsEditorComponent {\n EditableContent: string = '';\n IsEditing: boolean = false;\n\n private _parsedRequirements: Record<string, unknown> | null = null;\n\n constructor(\n public State: ComponentStudioStateService,\n private cdr: ChangeDetectorRef\n ) {}\n\n get HasDataRequirements(): boolean {\n return this._parsedRequirements != null;\n }\n\n get EntityCount(): number {\n if (!this._parsedRequirements) return 0;\n const entities = this._parsedRequirements['entities'];\n return Array.isArray(entities) ? entities.length : 0;\n }\n\n get QueryCount(): number {\n if (!this._parsedRequirements) return 0;\n const queries = this._parsedRequirements['queries'];\n return Array.isArray(queries) ? queries.length : 0;\n }\n\n get DataMode(): string {\n if (!this._parsedRequirements) return '';\n return (this._parsedRequirements['mode'] as string) || 'views';\n }\n\n ngOnInit(): void {\n this.loadContent();\n this.State.StateChanged.subscribe(() => {\n this.loadContent();\n this.cdr.detectChanges();\n });\n }\n\n OnContentChanged(): void {\n this.IsEditing = true;\n this.parseContent();\n }\n\n ApplyChanges(): void {\n try {\n const spec: ComponentSpec = JSON.parse(this.State.EditableSpec);\n const dataReq = JSON.parse(this.EditableContent);\n spec.dataRequirements = dataReq;\n this.State.UpdateSpec(spec);\n this.IsEditing = false;\n } catch (error) {\n console.error('Error applying data requirements changes:', error);\n }\n }\n\n CancelChanges(): void {\n this.loadContent();\n this.IsEditing = false;\n this.cdr.detectChanges();\n }\n\n private loadContent(): void {\n try {\n const spec = JSON.parse(this.State.EditableSpec);\n const dataReq = spec.dataRequirements || { mode: 'views', entities: [], queries: [] };\n this.EditableContent = JSON.stringify(dataReq, null, 2);\n this.parseContent();\n } catch {\n this.EditableContent = '';\n this._parsedRequirements = null;\n }\n }\n\n private parseContent(): void {\n try {\n this._parsedRequirements = JSON.parse(this.EditableContent);\n } catch {\n this._parsedRequirements = null;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"data-requirements-editor.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ComponentStudioStateService } from '../../services/component-studio-state.service';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\n\n@Component({\n standalone: false,\n selector: 'mj-data-requirements-editor',\n template: `\n <div class=\"data-requirements-editor\">\n <div class=\"editor-header\">\n <span class=\"header-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data Requirements\n </span>\n @if (IsEditing) {\n <div class=\"action-buttons\">\n <button mjButton variant=\"primary\" (click)=\"ApplyChanges()\">\n <i class=\"fa-solid fa-check\"></i> Apply Changes\n </button>\n <button mjButton (click)=\"CancelChanges()\">\n <i class=\"fa-solid fa-times\"></i> Cancel\n </button>\n </div>\n }\n </div>\n\n <div class=\"editor-body\">\n @if (State.SelectedComponent) {\n @if (HasDataRequirements) {\n <div class=\"summary-bar\">\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n {{ EntityCount }} {{ EntityCount === 1 ? 'entity' : 'entities' }}\n </span>\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-search\"></i>\n {{ QueryCount }} {{ QueryCount === 1 ? 'query' : 'queries' }}\n </span>\n <span class=\"summary-item mode-badge\">\n {{ DataMode }}\n </span>\n </div>\n }\n <div class=\"json-editor-container\">\n <mj-code-editor\n [(ngModel)]=\"EditableContent\"\n [language]=\"'json'\"\n [indentWithTab]=\"true\"\n [placeholder]=\"'Enter data requirements JSON...'\"\n (ngModelChange)=\"OnContentChanged()\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Select a component to edit its data requirements.</p>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n .data-requirements-editor {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n }\n .header-title {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n .header-title i {\n margin-right: 6px;\n color: var(--mj-text-secondary);\n }\n .action-buttons {\n display: flex;\n gap: 6px;\n }\n .summary-bar {\n display: flex;\n gap: 12px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n }\n .summary-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n .mode-badge {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n padding: 1px 8px;\n border-radius: 10px;\n font-weight: 600;\n text-transform: uppercase;\n font-size: 10px;\n }\n .editor-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n .json-editor-container {\n flex: 1;\n overflow: hidden;\n }\n .json-editor-container mj-code-editor {\n display: block;\n height: 100%;\n }\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n flex: 1;\n }\n .empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n .empty-state p {\n margin: 0;\n font-size: 13px;\n text-align: center;\n }\n `]\n})\nexport class DataRequirementsEditorComponent implements OnInit, OnDestroy {\n EditableContent: string = '';\n IsEditing: boolean = false;\n\n private _parsedRequirements: Record<string, unknown> | null = null;\n private destroy$ = new Subject<void>();\n\n constructor(\n public State: ComponentStudioStateService,\n private cdr: ChangeDetectorRef\n ) {}\n\n get HasDataRequirements(): boolean {\n return this._parsedRequirements != null;\n }\n\n get EntityCount(): number {\n if (!this._parsedRequirements) return 0;\n const entities = this._parsedRequirements['entities'];\n return Array.isArray(entities) ? entities.length : 0;\n }\n\n get QueryCount(): number {\n if (!this._parsedRequirements) return 0;\n const queries = this._parsedRequirements['queries'];\n return Array.isArray(queries) ? queries.length : 0;\n }\n\n get DataMode(): string {\n if (!this._parsedRequirements) return '';\n return (this._parsedRequirements['mode'] as string) || 'views';\n }\n\n ngOnInit(): void {\n this.loadContent();\n this.State.StateChanged.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.loadContent();\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n OnContentChanged(): void {\n this.IsEditing = true;\n this.parseContent();\n }\n\n ApplyChanges(): void {\n try {\n const spec: ComponentSpec = JSON.parse(this.State.EditableSpec);\n const dataReq = JSON.parse(this.EditableContent);\n spec.dataRequirements = dataReq;\n this.IsEditing = false;\n this.State.UpdateSpec(spec);\n this.cdr.detectChanges();\n } catch (error) {\n console.error('Error applying data requirements changes:', error);\n }\n }\n\n CancelChanges(): void {\n this.loadContent();\n this.IsEditing = false;\n this.cdr.detectChanges();\n }\n\n private loadContent(): void {\n try {\n const spec = JSON.parse(this.State.EditableSpec);\n const dataReq = spec.dataRequirements || { mode: 'views', entities: [], queries: [] };\n this.EditableContent = JSON.stringify(dataReq, null, 2);\n this.parseContent();\n } catch {\n this.EditableContent = '';\n this._parsedRequirements = null;\n }\n }\n\n private parseContent(): void {\n try {\n this._parsedRequirements = JSON.parse(this.EditableContent);\n } catch {\n this._parsedRequirements = null;\n }\n }\n}\n"]}
@@ -38,6 +38,13 @@ export declare class ComponentPreviewComponent implements OnInit, OnDestroy {
38
38
  GetActivePreset(): ViewportPreset;
39
39
  GetPreviewContainerMaxWidth(): string;
40
40
  OnComponentEvent(event: ReactComponentEvent): void;
41
+ /**
42
+ * Fires once the React bridge has resolved the full component hierarchy from the
43
+ * registry. The bridge stores the resolved spec (with real dependency code, not
44
+ * registry-reference stubs) on its public `resolvedComponentSpec` field — pull it
45
+ * across so the code-editor tabs can render actual source instead of "No code available".
46
+ */
47
+ OnReactInitialized(): void;
41
48
  OnOpenEntityRecord(event: {
42
49
  entityName: string;
43
50
  key: CompositeKey;
@@ -47,7 +54,9 @@ export declare class ComponentPreviewComponent implements OnInit, OnDestroy {
47
54
  private syncSpecFromState;
48
55
  /**
49
56
  * Refresh the preview by nulling the spec, detecting changes,
50
- * then restoring the spec after a short delay.
57
+ * then restoring the spec after a short delay. The bridge's own
58
+ * `initializeComponent` purges the runtime registry + manager fetch cache
59
+ * for the new spec's keys, so consumers don't need to clear anything here.
51
60
  */
52
61
  private refreshPreview;
53
62
  static ɵfac: i0.ɵɵFactoryDeclaration<ComponentPreviewComponent, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"component-preview.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,MAAM,EACN,SAAS,EAET,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACf,MAAM,+CAA+C,CAAC;;AAEvD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAMa,yBAA0B,YAAW,MAAM,EAAE,SAAS;IAqBxD,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,GAAG;IApBgB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAExD,UAAU,+BAAsC;IAGnD,cAAc,EAAE,YAAY,CAAa;IAEhD,SAAgB,eAAe,EAAE,cAAc,EAAE,CAI/C;IAGK,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEvD,OAAO,CAAC,QAAQ,CAAuB;gBAG9B,KAAK,EAAE,2BAA2B,EACjC,GAAG,EAAE,iBAAiB;IAGhC,QAAQ,IAAI,IAAI;IAiBhB,WAAW,IAAI,IAAI;IASZ,oBAAoB,IAAI,IAAI;IAM5B,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;IAOxB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKrC,aAAa,IAAI,IAAI;IAWrB,eAAe,IAAI,cAAc;IAIjC,2BAA2B,IAAI,MAAM;IAQrC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAgBlD,kBAAkB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAQ1E,gBAAgB,IAAI,MAAM;IAK1B,uBAAuB,IAAI,MAAM,GAAG,SAAS;IASpD,OAAO,CAAC,iBAAiB;IAIzB;;;OAGG;IACH,OAAO,CAAC,cAAc;yCA/IX,yBAAyB;2CAAzB,yBAAyB;CAoKrC"}
1
+ {"version":3,"file":"component-preview.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,MAAM,EACN,SAAS,EAET,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACf,MAAM,+CAA+C,CAAC;;AAEvD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAMa,yBAA0B,YAAW,MAAM,EAAE,SAAS;IAqBxD,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,GAAG;IApBgB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAExD,UAAU,+BAAsC;IAGnD,cAAc,EAAE,YAAY,CAAa;IAEhD,SAAgB,eAAe,EAAE,cAAc,EAAE,CAI/C;IAGK,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEvD,OAAO,CAAC,QAAQ,CAAuB;gBAG9B,KAAK,EAAE,2BAA2B,EACjC,GAAG,EAAE,iBAAiB;IAGhC,QAAQ,IAAI,IAAI;IAiBhB,WAAW,IAAI,IAAI;IASZ,oBAAoB,IAAI,IAAI;IAM5B,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;IAOxB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKrC,aAAa,IAAI,IAAI;IAWrB,eAAe,IAAI,cAAc;IAIjC,2BAA2B,IAAI,MAAM;IAQrC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAWzD;;;;;OAKG;IACI,kBAAkB,IAAI,IAAI;IAQ1B,kBAAkB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAQ1E,gBAAgB,IAAI,MAAM;IAK1B,uBAAuB,IAAI,MAAM,GAAG,SAAS;IASpD,OAAO,CAAC,iBAAiB;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;yCA1JX,yBAAyB;2CAAzB,yBAAyB;CA+KrC"}