@memberjunction/ng-dashboards 5.30.0 → 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 +1 @@
1
- {"version":3,"file":"diff-resource.component.js","sourceRoot":"","sources":["../../../src/VersionHistory/components/diff-resource.component.ts","../../../src/VersionHistory/components/diff-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { RunView, Metadata, CompositeKey, EntityRecordNameInput } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine, MJVersionLabelEntityType, MJVersionLabelItemEntityType } from '@memberjunction/core-entities';\n\ninterface VersionDiffPreferences {\n DiffMode: 'label-to-label' | 'label-to-current';\n}\ninterface DiffItemView {\n EntityName: string;\n EntityID: string;\n RecordID: string;\n DisplayName: string;\n ChangeType: 'Added' | 'Removed' | 'Modified' | 'Unchanged';\n FieldChanges: FieldChangeView[];\n IsExpanded: boolean;\n IsLoadingFields: boolean;\n FieldsLoaded: boolean;\n /** RecordChangeID from the \"from\" label (for loading FullRecordJSON). */\n FromRecordChangeID: string;\n /** RecordChangeID from the \"to\" label (for loading FullRecordJSON). */\n ToRecordChangeID: string;\n}\n\ninterface FieldChangeView {\n FieldName: string;\n OldValue: string;\n NewValue: string;\n ChangeType: 'Added' | 'Modified' | 'Removed';\n}\n\ninterface RecordChangeRow {\n ID: string;\n FullRecordJSON: string;\n}\n\ninterface EntityGroupView {\n EntityName: string;\n EntityIcon: string;\n Items: DiffItemView[];\n AddedCount: number;\n RemovedCount: number;\n ModifiedCount: number;\n IsExpanded: boolean;\n NamesLoaded: boolean;\n IsLoadingNames: boolean;\n}\n\n@RegisterClass(BaseResourceComponent, 'VersionHistoryDiffResource')\n@Component({\n standalone: false,\n selector: 'mj-version-history-diff-resource',\n templateUrl: './diff-resource.component.html',\n styleUrls: ['./diff-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionHistoryDiffResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public IsLoading = true;\n public IsDiffLoading = false;\n public HasDiffResult = false;\n\n // Label selection\n public AvailableLabels: MJVersionLabelEntityType[] = [];\n public FromLabelId = '';\n public ToLabelId = '';\n public DiffMode: 'label-to-label' | 'label-to-current' = 'label-to-current';\n\n // Diff results\n public EntityGroups: EntityGroupView[] = [];\n public FilteredEntityGroups: EntityGroupView[] = [];\n public TotalAdded = 0;\n public TotalRemoved = 0;\n public TotalModified = 0;\n public TotalUnchanged = 0;\n\n // Diff result filtering/sorting\n public DiffSortBy: 'name' | 'count' = 'count';\n public DiffSortDir: 'asc' | 'desc' = 'desc';\n public DiffFilterType: 'all' | 'added' | 'removed' | 'modified' = 'all';\n public DiffSearch = '';\n\n // UI state\n public ExpandedEntities = new Set<string>();\n\n private static readonly PREFS_KEY = 'VersionHistory.Diff.UserPreferences';\n private preferencesLoaded = false;\n protected override destroy$ = new Subject<void>();\n private metadata = new Metadata();\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadUserPreferences();\n this.LoadLabels();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Diff Viewer';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-code-compare';\n }\n\n public async LoadLabels(): Promise<void> {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n const rv = new RunView();\n const result = await rv.RunView<MJVersionLabelEntityType>({\n EntityName: 'MJ: Version Labels',\n ExtraFilter: \"Status = 'Active'\",\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 200,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.AvailableLabels = result.Results;\n }\n } catch (error) {\n console.error('Error loading labels for diff:', error);\n } finally {\n this.IsLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n public OnDiffModeChange(mode: 'label-to-label' | 'label-to-current'): void {\n this.DiffMode = mode;\n this.HasDiffResult = false;\n this.EntityGroups = [];\n this.cdr.markForCheck();\n this.persistPreferences();\n }\n\n private loadUserPreferences(): void {\n try {\n const raw = UserInfoEngine.Instance.GetSetting(VersionHistoryDiffResourceComponent.PREFS_KEY);\n if (raw) {\n const prefs: VersionDiffPreferences = JSON.parse(raw);\n if (prefs.DiffMode === 'label-to-label' || prefs.DiffMode === 'label-to-current') {\n this.DiffMode = prefs.DiffMode;\n }\n }\n } catch (error) {\n console.error('Error loading diff preferences:', error);\n this.DiffMode = 'label-to-current';\n }\n this.preferencesLoaded = true;\n }\n\n private persistPreferences(): void {\n if (!this.preferencesLoaded) return;\n const prefs: VersionDiffPreferences = {\n DiffMode: this.DiffMode\n };\n UserInfoEngine.Instance.SetSettingDebounced(VersionHistoryDiffResourceComponent.PREFS_KEY, JSON.stringify(prefs));\n }\n\n public async RunDiff(): Promise<void> {\n if (!this.FromLabelId) return;\n if (this.DiffMode === 'label-to-label' && !this.ToLabelId) return;\n\n try {\n this.IsDiffLoading = true;\n this.HasDiffResult = false;\n this.cdr.markForCheck();\n\n // Load label items for comparison\n const rv = new RunView();\n const fromItems = await this.loadLabelItems(rv, this.FromLabelId);\n\n if (this.DiffMode === 'label-to-label') {\n const toItems = await this.loadLabelItems(rv, this.ToLabelId);\n this.computeDiff(fromItems, toItems);\n } else {\n // Label-to-current: compare label state against live data\n await this.computeDiffToCurrentState(rv, fromItems);\n }\n\n this.HasDiffResult = true;\n } catch (error) {\n console.error('Error running diff:', error);\n } finally {\n this.IsDiffLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n private async loadLabelItems(\n rv: RunView,\n labelId: string\n ): Promise<MJVersionLabelItemEntityType[]> {\n const result = await rv.RunView<MJVersionLabelItemEntityType>({\n EntityName: 'MJ: Version Label Items',\n ExtraFilter: `VersionLabelID = '${labelId}'`,\n ResultType: 'simple'\n });\n return result.Success ? result.Results : [];\n }\n\n private computeDiff(\n fromItems: MJVersionLabelItemEntityType[],\n toItems: MJVersionLabelItemEntityType[]\n ): void {\n const entityMap = new Map<string, DiffItemView[]>();\n\n // Build lookup maps keyed by EntityID + RecordID\n const fromMap = this.buildItemKeyMap(fromItems);\n const toMap = this.buildItemKeyMap(toItems);\n\n // Items in 'to' but not in 'from' = Added\n for (const [key, item] of toMap) {\n const entityName = this.resolveEntityName(item.EntityID ?? '');\n if (!entityMap.has(entityName)) entityMap.set(entityName, []);\n\n if (!fromMap.has(key)) {\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: item.EntityID ?? '',\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: 'Added',\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: '',\n ToRecordChangeID: item.RecordChangeID ?? ''\n });\n }\n }\n\n // Items in 'from' but not in 'to' = Removed\n for (const [key, item] of fromMap) {\n const entityName = this.resolveEntityName(item.EntityID ?? '');\n if (!entityMap.has(entityName)) entityMap.set(entityName, []);\n\n if (!toMap.has(key)) {\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: item.EntityID ?? '',\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: 'Removed',\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: item.RecordChangeID ?? '',\n ToRecordChangeID: ''\n });\n } else {\n // Both exist - check if RecordChangeID differs (= Modified)\n const toItem = toMap.get(key)!;\n const changeType = !UUIDsEqual(item.RecordChangeID, toItem.RecordChangeID)\n ? 'Modified' : 'Unchanged';\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: item.EntityID ?? '',\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: changeType,\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: item.RecordChangeID ?? '',\n ToRecordChangeID: toItem.RecordChangeID ?? ''\n });\n }\n }\n\n this.buildEntityGroups(entityMap);\n }\n\n private async computeDiffToCurrentState(\n rv: RunView,\n labelItems: MJVersionLabelItemEntityType[]\n ): Promise<void> {\n // For label-to-current, compare snapshot RecordChangeIDs against\n // the latest RecordChange for each entity/record combination.\n const entityMap = new Map<string, DiffItemView[]>();\n\n for (const item of labelItems) {\n const entityId = item.EntityID ?? '';\n const entityName = this.resolveEntityName(entityId);\n if (!entityMap.has(entityName)) entityMap.set(entityName, []);\n\n // Load the latest RecordChange for this record\n const latestChangeId = await this.loadLatestRecordChange(rv, entityId, item.RecordID ?? '');\n const isModified = latestChangeId != null && latestChangeId !== item.RecordChangeID;\n\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: entityId,\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: isModified ? 'Modified' : 'Unchanged',\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: item.RecordChangeID ?? '',\n ToRecordChangeID: latestChangeId ?? ''\n });\n }\n\n this.buildEntityGroups(entityMap);\n }\n\n private buildItemKeyMap(\n items: MJVersionLabelItemEntityType[]\n ): Map<string, MJVersionLabelItemEntityType> {\n const map = new Map<string, MJVersionLabelItemEntityType>();\n for (const item of items) {\n const key = `${item.EntityID ?? ''}|${item.RecordID ?? ''}`;\n map.set(key, item);\n }\n return map;\n }\n\n private buildEntityGroups(entityMap: Map<string, DiffItemView[]>): void {\n this.TotalAdded = 0;\n this.TotalRemoved = 0;\n this.TotalModified = 0;\n this.TotalUnchanged = 0;\n\n this.EntityGroups = Array.from(entityMap.entries()).map(([entityName, items]) => {\n const added = items.filter(i => i.ChangeType === 'Added').length;\n const removed = items.filter(i => i.ChangeType === 'Removed').length;\n const modified = items.filter(i => i.ChangeType === 'Modified').length;\n\n this.TotalAdded += added;\n this.TotalRemoved += removed;\n this.TotalModified += modified;\n this.TotalUnchanged += items.filter(i => i.ChangeType === 'Unchanged').length;\n\n // Resolve entity icon from first item's EntityID\n const firstItem = items[0];\n const entityIcon = this.resolveEntityIcon(firstItem?.EntityID ?? '');\n\n return {\n EntityName: entityName,\n EntityIcon: entityIcon,\n Items: items.filter(i => i.ChangeType !== 'Unchanged'),\n AddedCount: added,\n RemovedCount: removed,\n ModifiedCount: modified,\n IsExpanded: false,\n NamesLoaded: false,\n IsLoadingNames: false\n };\n }).filter(g => g.Items.length > 0)\n .sort((a, b) => b.Items.length - a.Items.length);\n\n this.ExpandedEntities.clear();\n this.applySortAndFilterDiff();\n }\n\n private resolveEntityName(entityId: string): string {\n if (!entityId) return 'Unknown';\n const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, entityId));\n return entity ? entity.Name : 'Unknown';\n }\n\n private resolveEntityIcon(entityId: string): string {\n if (!entityId) return 'fa-solid fa-table';\n const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, entityId));\n return entity?.Icon || 'fa-solid fa-table';\n }\n\n // =========================================================================\n // Expand / Collapse\n // =========================================================================\n\n public ToggleEntityGroup(group: EntityGroupView): void {\n group.IsExpanded = !group.IsExpanded;\n if (group.IsExpanded) {\n this.ExpandedEntities.add(group.EntityName);\n // Auto-expand all Modified items so field details show immediately\n for (const item of group.Items) {\n if (item.ChangeType === 'Modified') {\n item.IsExpanded = true;\n }\n }\n // Auto-load field changes for modified items when group opens\n this.loadFieldChangesForGroup(group);\n // Load record display names\n if (!group.NamesLoaded && !group.IsLoadingNames) {\n this.loadGroupRecordNames(group);\n }\n } else {\n this.ExpandedEntities.delete(group.EntityName);\n }\n this.cdr.markForCheck();\n }\n\n public ToggleItem(item: DiffItemView): void {\n if (item.ChangeType !== 'Modified') return;\n item.IsExpanded = !item.IsExpanded;\n if (item.IsExpanded && !item.FieldsLoaded) {\n this.loadFieldChangesForItem(item);\n }\n this.cdr.markForCheck();\n }\n\n public ExpandAllGroups(): void {\n for (const group of this.FilteredEntityGroups) {\n group.IsExpanded = true;\n this.ExpandedEntities.add(group.EntityName);\n this.loadFieldChangesForGroup(group);\n for (const item of group.Items) {\n if (item.ChangeType === 'Modified') {\n item.IsExpanded = true;\n }\n }\n if (!group.NamesLoaded && !group.IsLoadingNames) {\n this.loadGroupRecordNames(group);\n }\n }\n this.cdr.markForCheck();\n }\n\n public CollapseAllGroups(): void {\n for (const group of this.FilteredEntityGroups) {\n group.IsExpanded = false;\n this.ExpandedEntities.delete(group.EntityName);\n for (const item of group.Items) {\n item.IsExpanded = false;\n }\n }\n this.cdr.markForCheck();\n }\n\n public IsEntityExpanded(entityName: string): boolean {\n return this.ExpandedEntities.has(entityName);\n }\n\n /** Open a record in the explorer via NavigationService. */\n public OnOpenRecord(item: DiffItemView): void {\n const rawId = this.extractRawRecordId(item.RecordID);\n const pkey = new CompositeKey([{ FieldName: 'ID', Value: rawId }]);\n this.navigationService.OpenEntityRecord(item.EntityName, pkey);\n }\n\n // =========================================================================\n // Record name resolution\n // =========================================================================\n\n /** Lazy-load record display names for a group using Metadata.GetEntityRecordNames. */\n private async loadGroupRecordNames(group: EntityGroupView): Promise<void> {\n group.IsLoadingNames = true;\n this.cdr.markForCheck();\n\n try {\n const inputs: EntityRecordNameInput[] = group.Items.map(item => {\n const rawId = this.extractRawRecordId(item.RecordID);\n const input = new EntityRecordNameInput();\n input.EntityName = group.EntityName;\n input.CompositeKey = new CompositeKey([{ FieldName: 'ID', Value: rawId }]);\n return input;\n });\n\n const results = await this.metadata.GetEntityRecordNames(inputs);\n\n for (const result of results) {\n if (result.Success && result.RecordName) {\n const resultId = result.CompositeKey?.KeyValuePairs?.[0]?.Value;\n if (resultId) {\n const item = group.Items.find(i =>\n this.extractRawRecordId(i.RecordID) === String(resultId)\n );\n if (item) {\n item.DisplayName = result.RecordName;\n }\n }\n }\n }\n } catch (e) {\n console.error('Error loading record names for group:', group.EntityName, e);\n } finally {\n group.IsLoadingNames = false;\n group.NamesLoaded = true;\n this.cdr.markForCheck();\n }\n }\n\n /** Extract the raw UUID from a RecordID that may be in \"ID|<uuid>\" format. */\n private extractRawRecordId(recordId: string): string {\n if (!recordId) return '';\n const parts = recordId.split('||');\n if (parts.length === 1) {\n const singleParts = recordId.split('|');\n if (singleParts.length === 2) {\n return singleParts[1];\n }\n }\n return recordId;\n }\n\n // =========================================================================\n // Field-level diff loading\n // =========================================================================\n\n /** Auto-load field changes for all modified items in a group (when first expanded). */\n private loadFieldChangesForGroup(group: EntityGroupView): void {\n for (const item of group.Items) {\n if (item.ChangeType === 'Modified' && !item.FieldsLoaded && !item.IsLoadingFields) {\n this.loadFieldChangesForItem(item);\n }\n }\n }\n\n /** Lazy-load field-level changes for a single modified item. */\n private async loadFieldChangesForItem(item: DiffItemView): Promise<void> {\n if (!item.FromRecordChangeID || !item.ToRecordChangeID) {\n item.FieldsLoaded = true;\n return;\n }\n\n item.IsLoadingFields = true;\n this.cdr.markForCheck();\n\n try {\n item.FieldChanges = await this.computeFieldChanges(item.FromRecordChangeID, item.ToRecordChangeID);\n } catch (e) {\n console.error('Error loading field changes:', e);\n } finally {\n item.IsLoadingFields = false;\n item.FieldsLoaded = true;\n this.cdr.markForCheck();\n }\n }\n\n private async loadLatestRecordChange(rv: RunView, entityId: string, recordId: string): Promise<string | null> {\n if (!entityId || !recordId) return null;\n\n const result = await rv.RunView<RecordChangeRow>({\n EntityName: 'MJ: Record Changes',\n ExtraFilter: `EntityID = '${entityId}' AND RecordID = '${recordId}'`,\n OrderBy: 'ChangedAt DESC',\n MaxRows: 1,\n Fields: ['ID'],\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n return result.Results[0].ID;\n }\n return null;\n }\n\n private async computeFieldChanges(oldChangeId: string, newChangeId: string): Promise<FieldChangeView[]> {\n if (!oldChangeId || !newChangeId) return [];\n\n try {\n const rv = new RunView();\n const [oldResult, newResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Record Changes',\n ExtraFilter: `ID = '${oldChangeId}'`,\n Fields: ['FullRecordJSON'],\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: Record Changes',\n ExtraFilter: `ID = '${newChangeId}'`,\n Fields: ['FullRecordJSON'],\n ResultType: 'simple'\n }\n ]);\n\n if (!oldResult.Success || !newResult.Success) return [];\n if (oldResult.Results.length === 0 || newResult.Results.length === 0) return [];\n\n const oldRow = oldResult.Results[0] as RecordChangeRow;\n const newRow = newResult.Results[0] as RecordChangeRow;\n\n return this.diffRecordJson(oldRow.FullRecordJSON, newRow.FullRecordJSON);\n } catch {\n return [];\n }\n }\n\n private diffRecordJson(oldJson: string, newJson: string): FieldChangeView[] {\n const changes: FieldChangeView[] = [];\n\n try {\n const oldData = JSON.parse(oldJson || '{}') as Record<string, unknown>;\n const newData = JSON.parse(newJson || '{}') as Record<string, unknown>;\n const allKeys = new Set([...Object.keys(oldData), ...Object.keys(newData)]);\n\n for (const key of allKeys) {\n if (key.startsWith('__mj_')) continue;\n\n const oldVal = oldData[key];\n const newVal = newData[key];\n\n if (oldVal === undefined && newVal !== undefined) {\n changes.push({ FieldName: key, OldValue: '', NewValue: this.formatFieldValue(newVal), ChangeType: 'Added' });\n } else if (oldVal !== undefined && newVal === undefined) {\n changes.push({ FieldName: key, OldValue: this.formatFieldValue(oldVal), NewValue: '', ChangeType: 'Removed' });\n } else if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {\n changes.push({ FieldName: key, OldValue: this.formatFieldValue(oldVal), NewValue: this.formatFieldValue(newVal), ChangeType: 'Modified' });\n }\n }\n } catch {\n // Invalid JSON - skip\n }\n\n return changes;\n }\n\n private formatFieldValue(value: unknown): string {\n if (value == null) return 'null';\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n }\n\n // =========================================================================\n // Display helpers\n // =========================================================================\n\n public GetChangeTypeClass(changeType: string): string {\n const classes: Record<string, string> = {\n 'Added': 'change-added',\n 'Removed': 'change-removed',\n 'Modified': 'change-modified',\n 'Unchanged': 'change-unchanged'\n };\n return classes[changeType] ?? '';\n }\n\n public GetChangeTypeIcon(changeType: string): string {\n const icons: Record<string, string> = {\n 'Added': 'fa-solid fa-plus',\n 'Removed': 'fa-solid fa-minus',\n 'Modified': 'fa-solid fa-pen',\n 'Unchanged': 'fa-solid fa-equals'\n };\n return icons[changeType] ?? 'fa-solid fa-circle';\n }\n\n public FormatRecordID(recordId: string): string {\n return this.extractRawRecordId(recordId);\n }\n\n public FormatLabelOption(label: MJVersionLabelEntityType): string {\n const dateVal = label.__mj_CreatedAt;\n const date = dateVal instanceof Date\n ? dateVal.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n : new Date(dateVal as unknown as string).toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n return `${label.Name} (${label.Scope}, ${date})`;\n }\n\n public Refresh(): void {\n this.LoadLabels();\n }\n\n public get CanRunDiff(): boolean {\n if (!this.FromLabelId) return false;\n if (this.DiffMode === 'label-to-label' && !this.ToLabelId) return false;\n return true;\n }\n\n public get TotalChanges(): number {\n return this.TotalAdded + this.TotalRemoved + this.TotalModified;\n }\n\n // =========================================================================\n // Label selection helpers\n // =========================================================================\n\n /** From dropdown excludes the currently selected To label. */\n public get FilteredFromLabels(): MJVersionLabelEntityType[] {\n if (!this.ToLabelId) return this.AvailableLabels;\n return this.AvailableLabels.filter(l => !UUIDsEqual(l.ID, this.ToLabelId));\n }\n\n /** To dropdown excludes the currently selected From label. */\n public get FilteredToLabels(): MJVersionLabelEntityType[] {\n if (!this.FromLabelId) return this.AvailableLabels;\n return this.AvailableLabels.filter(l => !UUIDsEqual(l.ID, this.FromLabelId));\n }\n\n /** Swap From and To label selections. */\n public SwapLabels(): void {\n const temp = this.FromLabelId;\n this.FromLabelId = this.ToLabelId;\n this.ToLabelId = temp;\n this.cdr.markForCheck();\n }\n\n // =========================================================================\n // Diff result sorting & filtering\n // =========================================================================\n\n public OnDiffSortChange(sortBy: 'name' | 'count'): void {\n if (this.DiffSortBy === sortBy) {\n this.DiffSortDir = this.DiffSortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this.DiffSortBy = sortBy;\n this.DiffSortDir = sortBy === 'name' ? 'asc' : 'desc';\n }\n this.applySortAndFilterDiff();\n this.cdr.markForCheck();\n }\n\n public OnDiffFilterChange(filterType: 'all' | 'added' | 'removed' | 'modified'): void {\n this.DiffFilterType = filterType;\n this.applySortAndFilterDiff();\n this.cdr.markForCheck();\n }\n\n public OnDiffSearchChange(text: string): void {\n this.DiffSearch = text;\n this.applySortAndFilterDiff();\n this.cdr.markForCheck();\n }\n\n private applySortAndFilterDiff(): void {\n let groups = [...this.EntityGroups];\n\n // Filter by change type\n if (this.DiffFilterType !== 'all') {\n groups = groups.map(g => ({\n ...g,\n Items: g.Items.filter(i => i.ChangeType.toLowerCase() === this.DiffFilterType)\n })).filter(g => g.Items.length > 0);\n }\n\n // Filter by search text\n if (this.DiffSearch) {\n const search = this.DiffSearch.toLowerCase();\n groups = groups\n .filter(g => g.EntityName.toLowerCase().includes(search) ||\n g.Items.some(i => i.RecordID.toLowerCase().includes(search) || i.DisplayName.toLowerCase().includes(search)))\n .map(g => ({\n ...g,\n Items: g.Items.filter(i =>\n i.RecordID.toLowerCase().includes(search) ||\n i.DisplayName.toLowerCase().includes(search) ||\n g.EntityName.toLowerCase().includes(search)\n )\n }))\n .filter(g => g.Items.length > 0);\n }\n\n // Sort\n groups.sort((a, b) => {\n if (this.DiffSortBy === 'name') {\n const cmp = a.EntityName.localeCompare(b.EntityName);\n return this.DiffSortDir === 'asc' ? cmp : -cmp;\n }\n const cmp = a.Items.length - b.Items.length;\n return this.DiffSortDir === 'asc' ? cmp : -cmp;\n });\n\n this.FilteredEntityGroups = groups;\n }\n}\n","<div class=\"diff-container\">\n @if (IsLoading) {\n <mj-loading text=\"Loading diff viewer...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- Header -->\n <div class=\"page-header\">\n <div class=\"header-left\">\n <h2 class=\"page-title\">Diff Viewer</h2>\n <p class=\"page-subtitle\">Compare states between version labels or against current data</p>\n </div>\n </div>\n <!-- Diff Configuration Panel -->\n <div class=\"config-panel\">\n <!-- Mode Selector -->\n <div class=\"mode-selector\">\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-current'\"\n (click)=\"OnDiffModeChange('label-to-current')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n Label vs Current\n </button>\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-label'\"\n (click)=\"OnDiffModeChange('label-to-label')\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Label vs Label\n </button>\n </div>\n <!-- Label Selectors -->\n <div class=\"label-selectors\">\n <div class=\"selector-group\">\n <label class=\"selector-label\">\n {{DiffMode === 'label-to-current' ? 'Compare label' : 'From label'}}\n </label>\n <select class=\"selector-input\"\n [(ngModel)]=\"FromLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredFromLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-arrow\">\n <button class=\"swap-btn\" (click)=\"SwapLabels()\" title=\"Swap direction\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n }\n @if (DiffMode === 'label-to-current') {\n <div class=\"selector-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n <span class=\"current-state-badge\">Current State</span>\n </div>\n }\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-group\">\n <label class=\"selector-label\">To label</label>\n <select class=\"selector-input\"\n [(ngModel)]=\"ToLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredToLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n }\n </div>\n <!-- Run Button -->\n <button class=\"btn-primary\"\n [disabled]=\"!CanRunDiff || IsDiffLoading\"\n (click)=\"RunDiff()\">\n @if (!IsDiffLoading) {\n <i class=\"fa-solid fa-play\"></i>\n }\n @if (IsDiffLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n <span>{{IsDiffLoading ? 'Comparing...' : 'Compare'}}</span>\n </button>\n </div>\n <!-- Diff Results -->\n @if (HasDiffResult) {\n <!-- Summary Stats -->\n <div class=\"diff-summary\">\n <div class=\"diff-stat change-added\">\n <i class=\"fa-solid fa-plus\"></i>\n <span class=\"diff-stat-value\">{{TotalAdded}}</span>\n <span class=\"diff-stat-label\">Added</span>\n </div>\n <div class=\"diff-stat change-removed\">\n <i class=\"fa-solid fa-minus\"></i>\n <span class=\"diff-stat-value\">{{TotalRemoved}}</span>\n <span class=\"diff-stat-label\">Removed</span>\n </div>\n <div class=\"diff-stat change-modified\">\n <i class=\"fa-solid fa-pen\"></i>\n <span class=\"diff-stat-value\">{{TotalModified}}</span>\n <span class=\"diff-stat-label\">Modified</span>\n </div>\n <div class=\"diff-stat change-unchanged\">\n <i class=\"fa-solid fa-equals\"></i>\n <span class=\"diff-stat-value\">{{TotalUnchanged}}</span>\n <span class=\"diff-stat-label\">Unchanged</span>\n </div>\n </div>\n <!-- Results toolbar -->\n @if (EntityGroups.length > 0) {\n <div class=\"diff-toolbar\">\n <div class=\"diff-search\">\n <i class=\"fa-solid fa-search diff-search-icon\"></i>\n <input type=\"text\" class=\"diff-search-input\"\n placeholder=\"Search by entity or record...\"\n [ngModel]=\"DiffSearch\"\n (ngModelChange)=\"OnDiffSearchChange($event)\" />\n </div>\n <div class=\"diff-filter-pills\">\n <button class=\"filter-pill\" [class.active]=\"DiffFilterType === 'all'\"\n (click)=\"OnDiffFilterChange('all')\">All</button>\n <button class=\"filter-pill change-added\" [class.active]=\"DiffFilterType === 'added'\"\n (click)=\"OnDiffFilterChange('added')\">Added</button>\n <button class=\"filter-pill change-removed\" [class.active]=\"DiffFilterType === 'removed'\"\n (click)=\"OnDiffFilterChange('removed')\">Removed</button>\n <button class=\"filter-pill change-modified\" [class.active]=\"DiffFilterType === 'modified'\"\n (click)=\"OnDiffFilterChange('modified')\">Modified</button>\n </div>\n <div class=\"diff-toolbar-right\">\n <button class=\"toolbar-action-btn\" (click)=\"ExpandAllGroups()\" title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n </button>\n <button class=\"toolbar-action-btn\" (click)=\"CollapseAllGroups()\" title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n </button>\n <div class=\"diff-sort-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'name'\"\n (click)=\"OnDiffSortChange('name')\" title=\"Sort by name\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'name' && DiffSortDir === 'desc' ? 'fa-arrow-up-z-a' : 'fa-arrow-down-a-z'\"></i>\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'count'\"\n (click)=\"OnDiffSortChange('count')\" title=\"Sort by count\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'count' && DiffSortDir === 'asc' ? 'fa-arrow-up-1-9' : 'fa-arrow-down-9-1'\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n <!-- Entity Groups -->\n @if (FilteredEntityGroups.length > 0) {\n <div class=\"entity-groups\">\n @for (group of FilteredEntityGroups; track group) {\n <div class=\"entity-group\">\n <div class=\"entity-group-header\" (click)=\"ToggleEntityGroup(group)\">\n <div class=\"entity-group-left\">\n <i class=\"fa-solid fa-chevron-right entity-chevron\"\n [class.expanded]=\"group.IsExpanded\">\n </i>\n <i [class]=\"group.EntityIcon\" class=\"entity-icon\"></i>\n <span class=\"entity-group-name\">{{group.EntityName}}</span>\n </div>\n <div class=\"entity-group-badges\">\n @if (group.AddedCount > 0) {\n <span class=\"badge change-added\">\n +{{group.AddedCount}}\n </span>\n }\n @if (group.RemovedCount > 0) {\n <span class=\"badge change-removed\">\n -{{group.RemovedCount}}\n </span>\n }\n @if (group.ModifiedCount > 0) {\n <span class=\"badge change-modified\">\n ~{{group.ModifiedCount}}\n </span>\n }\n </div>\n </div>\n @if (group.IsExpanded) {\n <div class=\"entity-group-items\">\n @for (item of group.Items; track item) {\n <div class=\"diff-item-wrapper\">\n <div class=\"diff-item\" [ngClass]=\"GetChangeTypeClass(item.ChangeType)\"\n [class.clickable]=\"item.ChangeType === 'Modified'\"\n (click)=\"ToggleItem(item)\">\n <i [class]=\"GetChangeTypeIcon(item.ChangeType)\" class=\"diff-item-icon\"></i>\n <span class=\"diff-item-record\">\n {{FormatRecordID(item.RecordID)}}\n @if (item.DisplayName) {\n <span class=\"diff-item-display-name\"> ({{item.DisplayName}})</span>\n }\n </span>\n <span class=\"diff-item-type\">{{item.ChangeType}}</span>\n <button class=\"diff-item-open-btn\" (click)=\"OnOpenRecord(item); $event.stopPropagation()\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n @if (item.ChangeType === 'Modified') {\n <i class=\"fa-solid fa-chevron-right diff-item-chevron\"\n [class.expanded]=\"item.IsExpanded\"\n ></i>\n }\n </div>\n <!-- Field-level changes -->\n @if (item.IsExpanded && item.ChangeType === 'Modified') {\n <div class=\"diff-fields\">\n @if (item.IsLoadingFields) {\n <mj-loading text=\"Loading changes...\" size=\"small\"></mj-loading>\n }\n @if (!item.IsLoadingFields && item.FieldChanges.length > 0) {\n @for (field of item.FieldChanges; track field) {\n <div class=\"diff-field\"\n [ngClass]=\"GetChangeTypeClass(field.ChangeType)\">\n <span class=\"diff-field-name\">{{field.FieldName}}</span>\n <span class=\"diff-field-values\">\n @if (field.OldValue) {\n <span class=\"diff-field-old\">{{field.OldValue | slice:0:60}}</span>\n }\n @if (field.OldValue && field.NewValue) {\n <i class=\"fa-solid fa-arrow-right diff-field-arrow\"></i>\n }\n @if (field.NewValue) {\n <span class=\"diff-field-new\">{{field.NewValue | slice:0:60}}</span>\n }\n </span>\n </div>\n }\n }\n @if (!item.IsLoadingFields && item.FieldsLoaded && item.FieldChanges.length === 0) {\n <div class=\"diff-fields-empty\">\n <span>No field-level changes available</span>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- No changes -->\n @if (FilteredEntityGroups.length === 0 && TotalChanges === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-check-circle empty-icon\" style=\"color: #10b981;\"></i>\n <h3>No differences found</h3>\n <p>The compared states are identical.</p>\n </div>\n }\n }\n <!-- No results yet -->\n @if (!HasDiffResult && !IsDiffLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-code-compare empty-icon\"></i>\n <h3>Select labels to compare</h3>\n <p>Choose a diff mode and select labels above, then click Compare.</p>\n </div>\n }\n }\n</div>\n"]}
1
+ {"version":3,"file":"diff-resource.component.js","sourceRoot":"","sources":["../../../src/VersionHistory/components/diff-resource.component.ts","../../../src/VersionHistory/components/diff-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { RunView, Metadata, CompositeKey, EntityRecordNameInput } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine, MJVersionLabelEntityType, MJVersionLabelItemEntityType } from '@memberjunction/core-entities';\n\ninterface VersionDiffPreferences {\n DiffMode: 'label-to-label' | 'label-to-current';\n}\ninterface DiffItemView {\n EntityName: string;\n EntityID: string;\n RecordID: string;\n DisplayName: string;\n ChangeType: 'Added' | 'Removed' | 'Modified' | 'Unchanged';\n FieldChanges: FieldChangeView[];\n IsExpanded: boolean;\n IsLoadingFields: boolean;\n FieldsLoaded: boolean;\n /** RecordChangeID from the \"from\" label (for loading FullRecordJSON). */\n FromRecordChangeID: string;\n /** RecordChangeID from the \"to\" label (for loading FullRecordJSON). */\n ToRecordChangeID: string;\n}\n\ninterface FieldChangeView {\n FieldName: string;\n OldValue: string;\n NewValue: string;\n ChangeType: 'Added' | 'Modified' | 'Removed';\n}\n\ninterface RecordChangeRow {\n ID: string;\n FullRecordJSON: string;\n}\n\ninterface EntityGroupView {\n EntityName: string;\n EntityIcon: string;\n Items: DiffItemView[];\n AddedCount: number;\n RemovedCount: number;\n ModifiedCount: number;\n IsExpanded: boolean;\n NamesLoaded: boolean;\n IsLoadingNames: boolean;\n}\n\n@RegisterClass(BaseResourceComponent, 'VersionHistoryDiffResource')\n@Component({\n standalone: false,\n selector: 'mj-version-history-diff-resource',\n templateUrl: './diff-resource.component.html',\n styleUrls: ['./diff-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionHistoryDiffResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public IsLoading = true;\n public IsDiffLoading = false;\n public HasDiffResult = false;\n\n // Label selection\n public AvailableLabels: MJVersionLabelEntityType[] = [];\n public FromLabelId = '';\n public ToLabelId = '';\n public DiffMode: 'label-to-label' | 'label-to-current' = 'label-to-current';\n\n // Diff results\n public EntityGroups: EntityGroupView[] = [];\n public FilteredEntityGroups: EntityGroupView[] = [];\n public TotalAdded = 0;\n public TotalRemoved = 0;\n public TotalModified = 0;\n public TotalUnchanged = 0;\n\n // Diff result filtering/sorting\n public DiffSortBy: 'name' | 'count' = 'count';\n public DiffSortDir: 'asc' | 'desc' = 'desc';\n public DiffFilterType: 'all' | 'added' | 'removed' | 'modified' = 'all';\n public DiffSearch = '';\n\n // UI state\n public ExpandedEntities = new Set<string>();\n\n private static readonly PREFS_KEY = 'VersionHistory.Diff.UserPreferences';\n private preferencesLoaded = false;\n protected override destroy$ = new Subject<void>();\n private metadata = this.ProviderToUse;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadUserPreferences();\n this.LoadLabels();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Diff Viewer';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-code-compare';\n }\n\n public async LoadLabels(): Promise<void> {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJVersionLabelEntityType>({\n EntityName: 'MJ: Version Labels',\n ExtraFilter: \"Status = 'Active'\",\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 200,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.AvailableLabels = result.Results;\n }\n } catch (error) {\n console.error('Error loading labels for diff:', error);\n } finally {\n this.IsLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n public OnDiffModeChange(mode: 'label-to-label' | 'label-to-current'): void {\n this.DiffMode = mode;\n this.HasDiffResult = false;\n this.EntityGroups = [];\n this.cdr.markForCheck();\n this.persistPreferences();\n }\n\n private loadUserPreferences(): void {\n try {\n const raw = UserInfoEngine.Instance.GetSetting(VersionHistoryDiffResourceComponent.PREFS_KEY);\n if (raw) {\n const prefs: VersionDiffPreferences = JSON.parse(raw);\n if (prefs.DiffMode === 'label-to-label' || prefs.DiffMode === 'label-to-current') {\n this.DiffMode = prefs.DiffMode;\n }\n }\n } catch (error) {\n console.error('Error loading diff preferences:', error);\n this.DiffMode = 'label-to-current';\n }\n this.preferencesLoaded = true;\n }\n\n private persistPreferences(): void {\n if (!this.preferencesLoaded) return;\n const prefs: VersionDiffPreferences = {\n DiffMode: this.DiffMode\n };\n UserInfoEngine.Instance.SetSettingDebounced(VersionHistoryDiffResourceComponent.PREFS_KEY, JSON.stringify(prefs));\n }\n\n public async RunDiff(): Promise<void> {\n if (!this.FromLabelId) return;\n if (this.DiffMode === 'label-to-label' && !this.ToLabelId) return;\n\n try {\n this.IsDiffLoading = true;\n this.HasDiffResult = false;\n this.cdr.markForCheck();\n\n // Load label items for comparison\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const fromItems = await this.loadLabelItems(rv, this.FromLabelId);\n\n if (this.DiffMode === 'label-to-label') {\n const toItems = await this.loadLabelItems(rv, this.ToLabelId);\n this.computeDiff(fromItems, toItems);\n } else {\n // Label-to-current: compare label state against live data\n await this.computeDiffToCurrentState(rv, fromItems);\n }\n\n this.HasDiffResult = true;\n } catch (error) {\n console.error('Error running diff:', error);\n } finally {\n this.IsDiffLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n private async loadLabelItems(\n rv: RunView,\n labelId: string\n ): Promise<MJVersionLabelItemEntityType[]> {\n const result = await rv.RunView<MJVersionLabelItemEntityType>({\n EntityName: 'MJ: Version Label Items',\n ExtraFilter: `VersionLabelID = '${labelId}'`,\n ResultType: 'simple'\n });\n return result.Success ? result.Results : [];\n }\n\n private computeDiff(\n fromItems: MJVersionLabelItemEntityType[],\n toItems: MJVersionLabelItemEntityType[]\n ): void {\n const entityMap = new Map<string, DiffItemView[]>();\n\n // Build lookup maps keyed by EntityID + RecordID\n const fromMap = this.buildItemKeyMap(fromItems);\n const toMap = this.buildItemKeyMap(toItems);\n\n // Items in 'to' but not in 'from' = Added\n for (const [key, item] of toMap) {\n const entityName = this.resolveEntityName(item.EntityID ?? '');\n if (!entityMap.has(entityName)) entityMap.set(entityName, []);\n\n if (!fromMap.has(key)) {\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: item.EntityID ?? '',\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: 'Added',\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: '',\n ToRecordChangeID: item.RecordChangeID ?? ''\n });\n }\n }\n\n // Items in 'from' but not in 'to' = Removed\n for (const [key, item] of fromMap) {\n const entityName = this.resolveEntityName(item.EntityID ?? '');\n if (!entityMap.has(entityName)) entityMap.set(entityName, []);\n\n if (!toMap.has(key)) {\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: item.EntityID ?? '',\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: 'Removed',\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: item.RecordChangeID ?? '',\n ToRecordChangeID: ''\n });\n } else {\n // Both exist - check if RecordChangeID differs (= Modified)\n const toItem = toMap.get(key)!;\n const changeType = !UUIDsEqual(item.RecordChangeID, toItem.RecordChangeID)\n ? 'Modified' : 'Unchanged';\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: item.EntityID ?? '',\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: changeType,\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: item.RecordChangeID ?? '',\n ToRecordChangeID: toItem.RecordChangeID ?? ''\n });\n }\n }\n\n this.buildEntityGroups(entityMap);\n }\n\n private async computeDiffToCurrentState(\n rv: RunView,\n labelItems: MJVersionLabelItemEntityType[]\n ): Promise<void> {\n // For label-to-current, compare snapshot RecordChangeIDs against\n // the latest RecordChange for each entity/record combination.\n const entityMap = new Map<string, DiffItemView[]>();\n\n for (const item of labelItems) {\n const entityId = item.EntityID ?? '';\n const entityName = this.resolveEntityName(entityId);\n if (!entityMap.has(entityName)) entityMap.set(entityName, []);\n\n // Load the latest RecordChange for this record\n const latestChangeId = await this.loadLatestRecordChange(rv, entityId, item.RecordID ?? '');\n const isModified = latestChangeId != null && latestChangeId !== item.RecordChangeID;\n\n entityMap.get(entityName)!.push({\n EntityName: entityName,\n EntityID: entityId,\n RecordID: item.RecordID ?? '',\n DisplayName: '',\n ChangeType: isModified ? 'Modified' : 'Unchanged',\n FieldChanges: [],\n IsExpanded: false,\n IsLoadingFields: false,\n FieldsLoaded: false,\n FromRecordChangeID: item.RecordChangeID ?? '',\n ToRecordChangeID: latestChangeId ?? ''\n });\n }\n\n this.buildEntityGroups(entityMap);\n }\n\n private buildItemKeyMap(\n items: MJVersionLabelItemEntityType[]\n ): Map<string, MJVersionLabelItemEntityType> {\n const map = new Map<string, MJVersionLabelItemEntityType>();\n for (const item of items) {\n const key = `${item.EntityID ?? ''}|${item.RecordID ?? ''}`;\n map.set(key, item);\n }\n return map;\n }\n\n private buildEntityGroups(entityMap: Map<string, DiffItemView[]>): void {\n this.TotalAdded = 0;\n this.TotalRemoved = 0;\n this.TotalModified = 0;\n this.TotalUnchanged = 0;\n\n this.EntityGroups = Array.from(entityMap.entries()).map(([entityName, items]) => {\n const added = items.filter(i => i.ChangeType === 'Added').length;\n const removed = items.filter(i => i.ChangeType === 'Removed').length;\n const modified = items.filter(i => i.ChangeType === 'Modified').length;\n\n this.TotalAdded += added;\n this.TotalRemoved += removed;\n this.TotalModified += modified;\n this.TotalUnchanged += items.filter(i => i.ChangeType === 'Unchanged').length;\n\n // Resolve entity icon from first item's EntityID\n const firstItem = items[0];\n const entityIcon = this.resolveEntityIcon(firstItem?.EntityID ?? '');\n\n return {\n EntityName: entityName,\n EntityIcon: entityIcon,\n Items: items.filter(i => i.ChangeType !== 'Unchanged'),\n AddedCount: added,\n RemovedCount: removed,\n ModifiedCount: modified,\n IsExpanded: false,\n NamesLoaded: false,\n IsLoadingNames: false\n };\n }).filter(g => g.Items.length > 0)\n .sort((a, b) => b.Items.length - a.Items.length);\n\n this.ExpandedEntities.clear();\n this.applySortAndFilterDiff();\n }\n\n private resolveEntityName(entityId: string): string {\n if (!entityId) return 'Unknown';\n const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, entityId));\n return entity ? entity.Name : 'Unknown';\n }\n\n private resolveEntityIcon(entityId: string): string {\n if (!entityId) return 'fa-solid fa-table';\n const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, entityId));\n return entity?.Icon || 'fa-solid fa-table';\n }\n\n // =========================================================================\n // Expand / Collapse\n // =========================================================================\n\n public ToggleEntityGroup(group: EntityGroupView): void {\n group.IsExpanded = !group.IsExpanded;\n if (group.IsExpanded) {\n this.ExpandedEntities.add(group.EntityName);\n // Auto-expand all Modified items so field details show immediately\n for (const item of group.Items) {\n if (item.ChangeType === 'Modified') {\n item.IsExpanded = true;\n }\n }\n // Auto-load field changes for modified items when group opens\n this.loadFieldChangesForGroup(group);\n // Load record display names\n if (!group.NamesLoaded && !group.IsLoadingNames) {\n this.loadGroupRecordNames(group);\n }\n } else {\n this.ExpandedEntities.delete(group.EntityName);\n }\n this.cdr.markForCheck();\n }\n\n public ToggleItem(item: DiffItemView): void {\n if (item.ChangeType !== 'Modified') return;\n item.IsExpanded = !item.IsExpanded;\n if (item.IsExpanded && !item.FieldsLoaded) {\n this.loadFieldChangesForItem(item);\n }\n this.cdr.markForCheck();\n }\n\n public ExpandAllGroups(): void {\n for (const group of this.FilteredEntityGroups) {\n group.IsExpanded = true;\n this.ExpandedEntities.add(group.EntityName);\n this.loadFieldChangesForGroup(group);\n for (const item of group.Items) {\n if (item.ChangeType === 'Modified') {\n item.IsExpanded = true;\n }\n }\n if (!group.NamesLoaded && !group.IsLoadingNames) {\n this.loadGroupRecordNames(group);\n }\n }\n this.cdr.markForCheck();\n }\n\n public CollapseAllGroups(): void {\n for (const group of this.FilteredEntityGroups) {\n group.IsExpanded = false;\n this.ExpandedEntities.delete(group.EntityName);\n for (const item of group.Items) {\n item.IsExpanded = false;\n }\n }\n this.cdr.markForCheck();\n }\n\n public IsEntityExpanded(entityName: string): boolean {\n return this.ExpandedEntities.has(entityName);\n }\n\n /** Open a record in the explorer via NavigationService. */\n public OnOpenRecord(item: DiffItemView): void {\n const rawId = this.extractRawRecordId(item.RecordID);\n const pkey = new CompositeKey([{ FieldName: 'ID', Value: rawId }]);\n this.navigationService.OpenEntityRecord(item.EntityName, pkey);\n }\n\n // =========================================================================\n // Record name resolution\n // =========================================================================\n\n /** Lazy-load record display names for a group using Metadata.GetEntityRecordNames. */\n private async loadGroupRecordNames(group: EntityGroupView): Promise<void> {\n group.IsLoadingNames = true;\n this.cdr.markForCheck();\n\n try {\n const inputs: EntityRecordNameInput[] = group.Items.map(item => {\n const rawId = this.extractRawRecordId(item.RecordID);\n const input = new EntityRecordNameInput();\n input.EntityName = group.EntityName;\n input.CompositeKey = new CompositeKey([{ FieldName: 'ID', Value: rawId }]);\n return input;\n });\n\n const results = await this.metadata.GetEntityRecordNames(inputs);\n\n for (const result of results) {\n if (result.Success && result.RecordName) {\n const resultId = result.CompositeKey?.KeyValuePairs?.[0]?.Value;\n if (resultId) {\n const item = group.Items.find(i =>\n this.extractRawRecordId(i.RecordID) === String(resultId)\n );\n if (item) {\n item.DisplayName = result.RecordName;\n }\n }\n }\n }\n } catch (e) {\n console.error('Error loading record names for group:', group.EntityName, e);\n } finally {\n group.IsLoadingNames = false;\n group.NamesLoaded = true;\n this.cdr.markForCheck();\n }\n }\n\n /** Extract the raw UUID from a RecordID that may be in \"ID|<uuid>\" format. */\n private extractRawRecordId(recordId: string): string {\n if (!recordId) return '';\n const parts = recordId.split('||');\n if (parts.length === 1) {\n const singleParts = recordId.split('|');\n if (singleParts.length === 2) {\n return singleParts[1];\n }\n }\n return recordId;\n }\n\n // =========================================================================\n // Field-level diff loading\n // =========================================================================\n\n /** Auto-load field changes for all modified items in a group (when first expanded). */\n private loadFieldChangesForGroup(group: EntityGroupView): void {\n for (const item of group.Items) {\n if (item.ChangeType === 'Modified' && !item.FieldsLoaded && !item.IsLoadingFields) {\n this.loadFieldChangesForItem(item);\n }\n }\n }\n\n /** Lazy-load field-level changes for a single modified item. */\n private async loadFieldChangesForItem(item: DiffItemView): Promise<void> {\n if (!item.FromRecordChangeID || !item.ToRecordChangeID) {\n item.FieldsLoaded = true;\n return;\n }\n\n item.IsLoadingFields = true;\n this.cdr.markForCheck();\n\n try {\n item.FieldChanges = await this.computeFieldChanges(item.FromRecordChangeID, item.ToRecordChangeID);\n } catch (e) {\n console.error('Error loading field changes:', e);\n } finally {\n item.IsLoadingFields = false;\n item.FieldsLoaded = true;\n this.cdr.markForCheck();\n }\n }\n\n private async loadLatestRecordChange(rv: RunView, entityId: string, recordId: string): Promise<string | null> {\n if (!entityId || !recordId) return null;\n\n const result = await rv.RunView<RecordChangeRow>({\n EntityName: 'MJ: Record Changes',\n ExtraFilter: `EntityID = '${entityId}' AND RecordID = '${recordId}'`,\n OrderBy: 'ChangedAt DESC',\n MaxRows: 1,\n Fields: ['ID'],\n ResultType: 'simple'\n });\n\n if (result.Success && result.Results.length > 0) {\n return result.Results[0].ID;\n }\n return null;\n }\n\n private async computeFieldChanges(oldChangeId: string, newChangeId: string): Promise<FieldChangeView[]> {\n if (!oldChangeId || !newChangeId) return [];\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const [oldResult, newResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Record Changes',\n ExtraFilter: `ID = '${oldChangeId}'`,\n Fields: ['FullRecordJSON'],\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: Record Changes',\n ExtraFilter: `ID = '${newChangeId}'`,\n Fields: ['FullRecordJSON'],\n ResultType: 'simple'\n }\n ]);\n\n if (!oldResult.Success || !newResult.Success) return [];\n if (oldResult.Results.length === 0 || newResult.Results.length === 0) return [];\n\n const oldRow = oldResult.Results[0] as RecordChangeRow;\n const newRow = newResult.Results[0] as RecordChangeRow;\n\n return this.diffRecordJson(oldRow.FullRecordJSON, newRow.FullRecordJSON);\n } catch {\n return [];\n }\n }\n\n private diffRecordJson(oldJson: string, newJson: string): FieldChangeView[] {\n const changes: FieldChangeView[] = [];\n\n try {\n const oldData = JSON.parse(oldJson || '{}') as Record<string, unknown>;\n const newData = JSON.parse(newJson || '{}') as Record<string, unknown>;\n const allKeys = new Set([...Object.keys(oldData), ...Object.keys(newData)]);\n\n for (const key of allKeys) {\n if (key.startsWith('__mj_')) continue;\n\n const oldVal = oldData[key];\n const newVal = newData[key];\n\n if (oldVal === undefined && newVal !== undefined) {\n changes.push({ FieldName: key, OldValue: '', NewValue: this.formatFieldValue(newVal), ChangeType: 'Added' });\n } else if (oldVal !== undefined && newVal === undefined) {\n changes.push({ FieldName: key, OldValue: this.formatFieldValue(oldVal), NewValue: '', ChangeType: 'Removed' });\n } else if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {\n changes.push({ FieldName: key, OldValue: this.formatFieldValue(oldVal), NewValue: this.formatFieldValue(newVal), ChangeType: 'Modified' });\n }\n }\n } catch {\n // Invalid JSON - skip\n }\n\n return changes;\n }\n\n private formatFieldValue(value: unknown): string {\n if (value == null) return 'null';\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n }\n\n // =========================================================================\n // Display helpers\n // =========================================================================\n\n public GetChangeTypeClass(changeType: string): string {\n const classes: Record<string, string> = {\n 'Added': 'change-added',\n 'Removed': 'change-removed',\n 'Modified': 'change-modified',\n 'Unchanged': 'change-unchanged'\n };\n return classes[changeType] ?? '';\n }\n\n public GetChangeTypeIcon(changeType: string): string {\n const icons: Record<string, string> = {\n 'Added': 'fa-solid fa-plus',\n 'Removed': 'fa-solid fa-minus',\n 'Modified': 'fa-solid fa-pen',\n 'Unchanged': 'fa-solid fa-equals'\n };\n return icons[changeType] ?? 'fa-solid fa-circle';\n }\n\n public FormatRecordID(recordId: string): string {\n return this.extractRawRecordId(recordId);\n }\n\n public FormatLabelOption(label: MJVersionLabelEntityType): string {\n const dateVal = label.__mj_CreatedAt;\n const date = dateVal instanceof Date\n ? dateVal.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n : new Date(dateVal as unknown as string).toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n return `${label.Name} (${label.Scope}, ${date})`;\n }\n\n public Refresh(): void {\n this.LoadLabels();\n }\n\n public get CanRunDiff(): boolean {\n if (!this.FromLabelId) return false;\n if (this.DiffMode === 'label-to-label' && !this.ToLabelId) return false;\n return true;\n }\n\n public get TotalChanges(): number {\n return this.TotalAdded + this.TotalRemoved + this.TotalModified;\n }\n\n // =========================================================================\n // Label selection helpers\n // =========================================================================\n\n /** From dropdown excludes the currently selected To label. */\n public get FilteredFromLabels(): MJVersionLabelEntityType[] {\n if (!this.ToLabelId) return this.AvailableLabels;\n return this.AvailableLabels.filter(l => !UUIDsEqual(l.ID, this.ToLabelId));\n }\n\n /** To dropdown excludes the currently selected From label. */\n public get FilteredToLabels(): MJVersionLabelEntityType[] {\n if (!this.FromLabelId) return this.AvailableLabels;\n return this.AvailableLabels.filter(l => !UUIDsEqual(l.ID, this.FromLabelId));\n }\n\n /** Swap From and To label selections. */\n public SwapLabels(): void {\n const temp = this.FromLabelId;\n this.FromLabelId = this.ToLabelId;\n this.ToLabelId = temp;\n this.cdr.markForCheck();\n }\n\n // =========================================================================\n // Diff result sorting & filtering\n // =========================================================================\n\n public OnDiffSortChange(sortBy: 'name' | 'count'): void {\n if (this.DiffSortBy === sortBy) {\n this.DiffSortDir = this.DiffSortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this.DiffSortBy = sortBy;\n this.DiffSortDir = sortBy === 'name' ? 'asc' : 'desc';\n }\n this.applySortAndFilterDiff();\n this.cdr.markForCheck();\n }\n\n public OnDiffFilterChange(filterType: 'all' | 'added' | 'removed' | 'modified'): void {\n this.DiffFilterType = filterType;\n this.applySortAndFilterDiff();\n this.cdr.markForCheck();\n }\n\n public OnDiffSearchChange(text: string): void {\n this.DiffSearch = text;\n this.applySortAndFilterDiff();\n this.cdr.markForCheck();\n }\n\n private applySortAndFilterDiff(): void {\n let groups = [...this.EntityGroups];\n\n // Filter by change type\n if (this.DiffFilterType !== 'all') {\n groups = groups.map(g => ({\n ...g,\n Items: g.Items.filter(i => i.ChangeType.toLowerCase() === this.DiffFilterType)\n })).filter(g => g.Items.length > 0);\n }\n\n // Filter by search text\n if (this.DiffSearch) {\n const search = this.DiffSearch.toLowerCase();\n groups = groups\n .filter(g => g.EntityName.toLowerCase().includes(search) ||\n g.Items.some(i => i.RecordID.toLowerCase().includes(search) || i.DisplayName.toLowerCase().includes(search)))\n .map(g => ({\n ...g,\n Items: g.Items.filter(i =>\n i.RecordID.toLowerCase().includes(search) ||\n i.DisplayName.toLowerCase().includes(search) ||\n g.EntityName.toLowerCase().includes(search)\n )\n }))\n .filter(g => g.Items.length > 0);\n }\n\n // Sort\n groups.sort((a, b) => {\n if (this.DiffSortBy === 'name') {\n const cmp = a.EntityName.localeCompare(b.EntityName);\n return this.DiffSortDir === 'asc' ? cmp : -cmp;\n }\n const cmp = a.Items.length - b.Items.length;\n return this.DiffSortDir === 'asc' ? cmp : -cmp;\n });\n\n this.FilteredEntityGroups = groups;\n }\n}\n","<div class=\"diff-container\">\n @if (IsLoading) {\n <mj-loading text=\"Loading diff viewer...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- Header -->\n <div class=\"page-header\">\n <div class=\"header-left\">\n <h2 class=\"page-title\">Diff Viewer</h2>\n <p class=\"page-subtitle\">Compare states between version labels or against current data</p>\n </div>\n </div>\n <!-- Diff Configuration Panel -->\n <div class=\"config-panel\">\n <!-- Mode Selector -->\n <div class=\"mode-selector\">\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-current'\"\n (click)=\"OnDiffModeChange('label-to-current')\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n Label vs Current\n </button>\n <button class=\"mode-btn\"\n [class.active]=\"DiffMode === 'label-to-label'\"\n (click)=\"OnDiffModeChange('label-to-label')\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Label vs Label\n </button>\n </div>\n <!-- Label Selectors -->\n <div class=\"label-selectors\">\n <div class=\"selector-group\">\n <label class=\"selector-label\">\n {{DiffMode === 'label-to-current' ? 'Compare label' : 'From label'}}\n </label>\n <select class=\"selector-input\"\n [(ngModel)]=\"FromLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredFromLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-arrow\">\n <button class=\"swap-btn\" (click)=\"SwapLabels()\" title=\"Swap direction\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n }\n @if (DiffMode === 'label-to-current') {\n <div class=\"selector-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n <span class=\"current-state-badge\">Current State</span>\n </div>\n }\n @if (DiffMode === 'label-to-label') {\n <div class=\"selector-group\">\n <label class=\"selector-label\">To label</label>\n <select class=\"selector-input\"\n [(ngModel)]=\"ToLabelId\">\n <option value=\"\">Select a label...</option>\n @for (label of FilteredToLabels; track label) {\n <option\n [value]=\"label.ID\">\n {{FormatLabelOption(label)}}\n </option>\n }\n </select>\n </div>\n }\n </div>\n <!-- Run Button -->\n <button class=\"btn-primary\"\n [disabled]=\"!CanRunDiff || IsDiffLoading\"\n (click)=\"RunDiff()\">\n @if (!IsDiffLoading) {\n <i class=\"fa-solid fa-play\"></i>\n }\n @if (IsDiffLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n <span>{{IsDiffLoading ? 'Comparing...' : 'Compare'}}</span>\n </button>\n </div>\n <!-- Diff Results -->\n @if (HasDiffResult) {\n <!-- Summary Stats -->\n <div class=\"diff-summary\">\n <div class=\"diff-stat change-added\">\n <i class=\"fa-solid fa-plus\"></i>\n <span class=\"diff-stat-value\">{{TotalAdded}}</span>\n <span class=\"diff-stat-label\">Added</span>\n </div>\n <div class=\"diff-stat change-removed\">\n <i class=\"fa-solid fa-minus\"></i>\n <span class=\"diff-stat-value\">{{TotalRemoved}}</span>\n <span class=\"diff-stat-label\">Removed</span>\n </div>\n <div class=\"diff-stat change-modified\">\n <i class=\"fa-solid fa-pen\"></i>\n <span class=\"diff-stat-value\">{{TotalModified}}</span>\n <span class=\"diff-stat-label\">Modified</span>\n </div>\n <div class=\"diff-stat change-unchanged\">\n <i class=\"fa-solid fa-equals\"></i>\n <span class=\"diff-stat-value\">{{TotalUnchanged}}</span>\n <span class=\"diff-stat-label\">Unchanged</span>\n </div>\n </div>\n <!-- Results toolbar -->\n @if (EntityGroups.length > 0) {\n <div class=\"diff-toolbar\">\n <div class=\"diff-search\">\n <i class=\"fa-solid fa-search diff-search-icon\"></i>\n <input type=\"text\" class=\"diff-search-input\"\n placeholder=\"Search by entity or record...\"\n [ngModel]=\"DiffSearch\"\n (ngModelChange)=\"OnDiffSearchChange($event)\" />\n </div>\n <div class=\"diff-filter-pills\">\n <button class=\"filter-pill\" [class.active]=\"DiffFilterType === 'all'\"\n (click)=\"OnDiffFilterChange('all')\">All</button>\n <button class=\"filter-pill change-added\" [class.active]=\"DiffFilterType === 'added'\"\n (click)=\"OnDiffFilterChange('added')\">Added</button>\n <button class=\"filter-pill change-removed\" [class.active]=\"DiffFilterType === 'removed'\"\n (click)=\"OnDiffFilterChange('removed')\">Removed</button>\n <button class=\"filter-pill change-modified\" [class.active]=\"DiffFilterType === 'modified'\"\n (click)=\"OnDiffFilterChange('modified')\">Modified</button>\n </div>\n <div class=\"diff-toolbar-right\">\n <button class=\"toolbar-action-btn\" (click)=\"ExpandAllGroups()\" title=\"Expand all\">\n <i class=\"fa-solid fa-angles-down\"></i>\n </button>\n <button class=\"toolbar-action-btn\" (click)=\"CollapseAllGroups()\" title=\"Collapse all\">\n <i class=\"fa-solid fa-angles-up\"></i>\n </button>\n <div class=\"diff-sort-toggle\">\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'name'\"\n (click)=\"OnDiffSortChange('name')\" title=\"Sort by name\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'name' && DiffSortDir === 'desc' ? 'fa-arrow-up-z-a' : 'fa-arrow-down-a-z'\"></i>\n </button>\n <button class=\"toggle-btn-sm\" [class.active]=\"DiffSortBy === 'count'\"\n (click)=\"OnDiffSortChange('count')\" title=\"Sort by count\">\n <i class=\"fa-solid\" [ngClass]=\"DiffSortBy === 'count' && DiffSortDir === 'asc' ? 'fa-arrow-up-1-9' : 'fa-arrow-down-9-1'\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n <!-- Entity Groups -->\n @if (FilteredEntityGroups.length > 0) {\n <div class=\"entity-groups\">\n @for (group of FilteredEntityGroups; track group) {\n <div class=\"entity-group\">\n <div class=\"entity-group-header\" (click)=\"ToggleEntityGroup(group)\">\n <div class=\"entity-group-left\">\n <i class=\"fa-solid fa-chevron-right entity-chevron\"\n [class.expanded]=\"group.IsExpanded\">\n </i>\n <i [class]=\"group.EntityIcon\" class=\"entity-icon\"></i>\n <span class=\"entity-group-name\">{{group.EntityName}}</span>\n </div>\n <div class=\"entity-group-badges\">\n @if (group.AddedCount > 0) {\n <span class=\"badge change-added\">\n +{{group.AddedCount}}\n </span>\n }\n @if (group.RemovedCount > 0) {\n <span class=\"badge change-removed\">\n -{{group.RemovedCount}}\n </span>\n }\n @if (group.ModifiedCount > 0) {\n <span class=\"badge change-modified\">\n ~{{group.ModifiedCount}}\n </span>\n }\n </div>\n </div>\n @if (group.IsExpanded) {\n <div class=\"entity-group-items\">\n @for (item of group.Items; track item) {\n <div class=\"diff-item-wrapper\">\n <div class=\"diff-item\" [ngClass]=\"GetChangeTypeClass(item.ChangeType)\"\n [class.clickable]=\"item.ChangeType === 'Modified'\"\n (click)=\"ToggleItem(item)\">\n <i [class]=\"GetChangeTypeIcon(item.ChangeType)\" class=\"diff-item-icon\"></i>\n <span class=\"diff-item-record\">\n {{FormatRecordID(item.RecordID)}}\n @if (item.DisplayName) {\n <span class=\"diff-item-display-name\"> ({{item.DisplayName}})</span>\n }\n </span>\n <span class=\"diff-item-type\">{{item.ChangeType}}</span>\n <button class=\"diff-item-open-btn\" (click)=\"OnOpenRecord(item); $event.stopPropagation()\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n @if (item.ChangeType === 'Modified') {\n <i class=\"fa-solid fa-chevron-right diff-item-chevron\"\n [class.expanded]=\"item.IsExpanded\"\n ></i>\n }\n </div>\n <!-- Field-level changes -->\n @if (item.IsExpanded && item.ChangeType === 'Modified') {\n <div class=\"diff-fields\">\n @if (item.IsLoadingFields) {\n <mj-loading text=\"Loading changes...\" size=\"small\"></mj-loading>\n }\n @if (!item.IsLoadingFields && item.FieldChanges.length > 0) {\n @for (field of item.FieldChanges; track field) {\n <div class=\"diff-field\"\n [ngClass]=\"GetChangeTypeClass(field.ChangeType)\">\n <span class=\"diff-field-name\">{{field.FieldName}}</span>\n <span class=\"diff-field-values\">\n @if (field.OldValue) {\n <span class=\"diff-field-old\">{{field.OldValue | slice:0:60}}</span>\n }\n @if (field.OldValue && field.NewValue) {\n <i class=\"fa-solid fa-arrow-right diff-field-arrow\"></i>\n }\n @if (field.NewValue) {\n <span class=\"diff-field-new\">{{field.NewValue | slice:0:60}}</span>\n }\n </span>\n </div>\n }\n }\n @if (!item.IsLoadingFields && item.FieldsLoaded && item.FieldChanges.length === 0) {\n <div class=\"diff-fields-empty\">\n <span>No field-level changes available</span>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- No changes -->\n @if (FilteredEntityGroups.length === 0 && TotalChanges === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-check-circle empty-icon\" style=\"color: #10b981;\"></i>\n <h3>No differences found</h3>\n <p>The compared states are identical.</p>\n </div>\n }\n }\n <!-- No results yet -->\n @if (!HasDiffResult && !IsDiffLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-code-compare empty-icon\"></i>\n <h3>Select labels to compare</h3>\n <p>Choose a diff mode and select labels above, then click Compare.</p>\n </div>\n }\n }\n</div>\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"graph-resource.component.d.ts","sourceRoot":"","sources":["../../../src/VersionHistory/components/graph-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAY,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAkB,MAAM,+BAA+B,CAAC;;AAK7E,UAAU,UAAU;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,gBAAgB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAQa,oCAAqC,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IA0B5F,OAAO,CAAC,GAAG;IAzBhB,SAAS,UAAQ;IAGjB,WAAW,EAAE,UAAU,EAAE,CAAM;IAC/B,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,UAAU,SAAM;IAChB,YAAY,SAAM;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAGhC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IACzC,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAQ;IAC7C,oBAAoB,EAAE,gBAAgB,EAAE,CAAM;IAC9C,iBAAiB,EAAE,gBAAgB,EAAE,CAAM;IAG3C,aAAa,SAAK;IAClB,sBAAsB,SAAK;IAC3B,kBAAkB,SAAK;IAE9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA0C;IAC3E,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAkB;IAClC,UAAmB,QAAQ,gBAAuB;gBAE9B,GAAG,EAAE,iBAAiB;IAI1C,QAAQ,IAAI,IAAI;IAMhB,WAAW,IAAI,IAAI;IAMb,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD,QAAQ,IAAI,IAAI;IAkCvB,qGAAqG;IACrG,OAAO,CAAC,iBAAiB;IAOzB,6FAA6F;IAC7F,OAAO,CAAC,cAAc;IAUf,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMjD,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,WAAW;IAgBZ,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAsBjD,oFAAoF;IACpF,OAAO,CAAC,qBAAqB;IAe7B,+EAA+E;IAC/E,OAAO,CAAC,kBAAkB;IAwBnB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAY1C,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5C,OAAO,IAAI,IAAI;yCAhPb,oCAAoC;2CAApC,oCAAoC;CAmPhD"}
1
+ {"version":3,"file":"graph-resource.component.d.ts","sourceRoot":"","sources":["../../../src/VersionHistory/components/graph-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAY,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAkB,MAAM,+BAA+B,CAAC;;AAK7E,UAAU,UAAU;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,gBAAgB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAQa,oCAAqC,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IA0B5F,OAAO,CAAC,GAAG;IAzBhB,SAAS,UAAQ;IAGjB,WAAW,EAAE,UAAU,EAAE,CAAM;IAC/B,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,UAAU,SAAM;IAChB,YAAY,SAAM;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAGhC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IACzC,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAQ;IAC7C,oBAAoB,EAAE,gBAAgB,EAAE,CAAM;IAC9C,iBAAiB,EAAE,gBAAgB,EAAE,CAAM;IAG3C,aAAa,SAAK;IAClB,sBAAsB,SAAK;IAC3B,kBAAkB,SAAK;IAE9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA0C;IAC3E,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAsB;IACtC,UAAmB,QAAQ,gBAAuB;gBAE9B,GAAG,EAAE,iBAAiB;IAI1C,QAAQ,IAAI,IAAI;IAMhB,WAAW,IAAI,IAAI;IAMb,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD,QAAQ,IAAI,IAAI;IAkCvB,qGAAqG;IACrG,OAAO,CAAC,iBAAiB;IAOzB,6FAA6F;IAC7F,OAAO,CAAC,cAAc;IAUf,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMjD,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,WAAW;IAgBZ,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAsBjD,oFAAoF;IACpF,OAAO,CAAC,qBAAqB;IAe7B,+EAA+E;IAC/E,OAAO,CAAC,kBAAkB;IAwBnB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAY1C,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5C,OAAO,IAAI,IAAI;yCAhPb,oCAAoC;2CAApC,oCAAoC;CAmPhD"}
@@ -9,7 +9,6 @@ import { Component, ChangeDetectionStrategy } from '@angular/core';
9
9
  import { Subject } from 'rxjs';
10
10
  import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
11
11
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
12
- import { Metadata } from '@memberjunction/core';
13
12
  import { UserInfoEngine } from '@memberjunction/core-entities';
14
13
  import * as i0 from "@angular/core";
15
14
  import * as i1 from "@angular/common";
@@ -315,7 +314,7 @@ let VersionHistoryGraphResourceComponent = class VersionHistoryGraphResourceComp
315
314
  TotalRelationships = 0;
316
315
  static PREFS_KEY = 'VersionHistory.Graph.UserPreferences';
317
316
  preferencesLoaded = false;
318
- metadata = new Metadata();
317
+ metadata = this.ProviderToUse;
319
318
  destroy$ = new Subject();
320
319
  constructor(cdr) {
321
320
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"graph-resource.component.js","sourceRoot":"","sources":["../../../src/VersionHistory/components/graph-resource.component.ts","../../../src/VersionHistory/components/graph-resource.component.html"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,SAAS,EAAwC,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAG,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAc,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAgB,cAAc,EAAE,MAAM,+BAA+B,CAAC;;;;;;ICHzE,gCAA4D;;;;IAkDlD,kCAEyC;IAAvC,0PAAS,sCAA4B,KAAC;IACtC,YACA;IAAA,gCAAgC;IAAA,YAAgC;IAClE,AADkE,iBAAO,EAChE;;;;IAJP,2DAAwC;IAExC,cACA;IADA,0CACA;IAAgC,eAAgC;IAAhC,4DAAgC;;;IANtE,+BAA0B;IACxB,0JAOC;IACH,iBAAM;;;IARJ,cAOC;IAPD,sCAOC;;;IAWK,gCAEoD;IAClD,YAA6B;IAAA,wBAAsC;IACrE,iBAAO;;;;IAHL,gFAAwD;IAExD,cAA6B;IAA7B,4DAA6B;;;IAI/B,gCACgD;IAC9C,YAA0B;IAAA,wBAAoC;IAChE,iBAAO;;;IADL,cAA0B;IAA1B,yDAA0B;;;;IAflC,+BAEiC;IAA/B,yOAAS,8BAAoB,KAAC;IAC9B,+BAA8B;IAAA,YAAe;IAAA,iBAAM;IACnD,+BAAgC;IAC9B,6HAAoC;IAOpC,6HAAiC;IAOrC,AADE,iBAAM,EACF;;;IAlBJ,gDAAoC;IAEN,eAAe;IAAf,oCAAe;IAE3C,eAMC;IAND,0DAMC;IACD,cAKC;IALD,uDAKC;;;IAMH,AADF,+BAAwB,QACnB;IAAA,8CAA8B;IACnC,AADmC,iBAAI,EACjC;;;;IA0BE,AADF,+BAA+B,cAEc;IAAzC,mQAAS,wCAA8B,KAAC;IACxC,wBAA0C;IAC1C,gCAA8B;IAAA,YAAgB;IAAA,iBAAO;IACrD,gCAA6B;IAC3B,wBAAgC;IAChC,YACF;IAEJ,AADE,AADE,iBAAO,EACH,EACF;;;IAN4B,eAAgB;IAAhB,qCAAgB;IAG5C,eACF;IADE,8DACF;;;IAVR,+BAA+B;IAC7B,sKAYC;IACH,iBAAM;;;IAbJ,cAYC;IAZD,0CAYC;;;IAKD,AADF,+BAAiC,QAC5B;IAAA,kDAAkC;IACvC,AADuC,iBAAI,EACrC;;;;IAeA,AADF,+BAA+B,cAEgB;IAA3C,oQAAS,2CAAgC,KAAC;IAC1C,wBAA0C;IAC1C,gCAA8B;IAAA,YAAkB;IAAA,iBAAO;IACvD,gCAA6B;IAC3B,wBAAgC;IAChC,YACF;IAEJ,AADE,AADE,iBAAO,EACH,EACF;;;IAN4B,eAAkB;IAAlB,wCAAkB;IAG9C,eACF;IADE,+DACF;;;IAVR,+BAA+B;IAC7B,sKAYC;IACH,iBAAM;;;IAbJ,cAYC;IAZD,uCAYC;;;IAKD,AADF,+BAAiC,QAC5B;IAAA,4DAA4C;IACjD,AADiD,iBAAI,EAC/C;;;IAlEV,+BAA2B;IACzB,wBAA6C;IAE3C,AADF,+BAAgC,aACL;IAAA,YAAuB;IAAA,iBAAK;IACrD,gCAA4B;IAAA,YAA6B;IAE7D,AADE,AAD2D,iBAAO,EAC5D,EACF;IAGJ,AADF,+BAAkC,cACJ;IAC1B,wBAAsE;IACtE,2BAAI;IAAA,8BAAa;IAAA,iBAAK;IACtB,iCAA4B;IAAA,aAA+B;IAC7D,AAD6D,iBAAO,EAC9D;IACN,8BAAwB;IAAA,6DAA4C;IAAA,+BAAQ;IAAA,aAAuB;IAAS,AAAT,iBAAS,EAAI;IAChH,sIAAuC;IAiBvC,sIAAyC;IAK3C,iBAAM;IAGJ,AADF,gCAAkC,eACJ;IAC1B,yBAAiE;IACjE,2BAAI;IAAA,2BAAU;IAAA,iBAAK;IACnB,iCAA4B;IAAA,aAA4B;IAC1D,AAD0D,iBAAO,EAC3D;IACkB,AAAxB,8BAAwB,cAAQ;IAAA,aAAuB;IAAA,iBAAS;IAAC,6DAA2C;IAAA,iBAAI;IAChH,sIAAoC;IAiBpC,sIAAsC;IAKxC,iBAAM;;;IAjEuB,eAAuB;IAAvB,gDAAuB;IACpB,eAA6B;IAA7B,sDAA6B;IAQ7B,eAA+B;IAA/B,wDAA+B;IAEe,eAAuB;IAAvB,gDAAuB;IACnG,cAgBC;IAhBD,kEAgBC;IACD,cAIC;IAJD,oEAIC;IAO6B,eAA4B;IAA5B,qDAA4B;IAE1B,eAAuB;IAAvB,gDAAuB;IACvD,eAgBC;IAhBD,+DAgBC;IACD,cAIC;IAJD,iEAIC;;;IAGH,+BAA0B;IACxB,wBAA6D;IAC7D,0BAAI;IAAA,gCAAgB;IAAA,iBAAK;IACzB,yBAAG;IAAA,uFAAuE;IAC5E,AAD4E,iBAAI,EAC1E;;;;IA/JR,AADF,AADF,8BAAyB,aACE,YACA;IAAA,uCAAuB;IAAA,iBAAK;IACnD,4BAAyB;IAAA,+EAA+D;IAC1F,AAD0F,iBAAI,EACxF;IAEJ,AADF,8BAA4B,gBACmC;IAApC,wMAAS,gBAAS,KAAC;IAC1C,uBAAmC;IAGzC,AADE,AADE,iBAAS,EACL,EACF;IAGJ,AADF,8BAAuB,eACG;IACtB,yBAAiC;IACjC,6BAAM;IAAA,aAA0B;IAClC,AADkC,iBAAO,EACnC;IACN,gCAAwB;IACtB,yBAA2C;IAC3C,6BAAM;IAAA,aAA0C;IAClD,AADkD,iBAAO,EACnD;IACN,gCAAwB;IACtB,yBAAkD;IAClD,6BAAM;IAAA,aAAoC;IAE9C,AADE,AAD4C,iBAAO,EAC7C,EACF;IAMA,AADF,AADF,AAFF,gCAA0B,eAEO,eACH,cACA;IAAA,yBAAQ;IAClC,AADkC,iBAAK,EACjC;IACN,gCAAwB;IACtB,yBAA8C;IAC9C,kCAI6C;IAA3C,8NAAiB,6BAAsB,KAAC;IAC5C,AALE,iBAI6C,EACzC;IAEN,uHAAmC;IAYnC,gCAAgC;IAC9B,0IAqBC;IACD,uHAAqC;IAMzC,AADE,iBAAM,EACF;IAEN,gCAAiC;IAuE7B,AAtEF,8GAAsB,iGAsEb;IAQb,AADE,iBAAM,EACF;;;IArJI,gBAA0B;IAA1B,4DAA0B;IAI1B,eAA0C;IAA1C,4EAA0C;IAI1C,eAAoC;IAApC,sEAAoC;IAetC,eAAsB;IAAtB,2CAAsB;IAI1B,cAWC;IAXD,8DAWC;IAEC,eAqBC;IArBD,sCAqBC;IACD,eAIC;IAJD,gEAIC;IAKH,eA4EC;IA5ED,iDA4EC;;ADvIF,IAAM,oCAAoC,GAA1C,MAAM,oCAAqC,SAAQ,qBAAqB;;IA0BvD;IAzBb,SAAS,GAAG,IAAI,CAAC;IAExB,iBAAiB;IACV,WAAW,GAAiB,EAAE,CAAC;IAC/B,gBAAgB,GAAiB,EAAE,CAAC;IACpC,UAAU,GAAG,EAAE,CAAC;IAChB,YAAY,GAAG,EAAE,CAAC;IAClB,gBAAgB,GAAa,EAAE,CAAC;IAEvC,yBAAyB;IAClB,cAAc,GAAsB,IAAI,CAAC;IACzC,kBAAkB,GAAsB,IAAI,CAAC;IAC7C,oBAAoB,GAAuB,EAAE,CAAC;IAC9C,iBAAiB,GAAuB,EAAE,CAAC;IAElD,QAAQ;IACD,aAAa,GAAG,CAAC,CAAC;IAClB,sBAAsB,GAAG,CAAC,CAAC;IAC3B,kBAAkB,GAAG,CAAC,CAAC;IAEtB,MAAM,CAAU,SAAS,GAAG,sCAAsC,CAAC;IACnE,iBAAiB,GAAG,KAAK,CAAC;IAC1B,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IACf,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAElD,YAAoB,GAAsB;QACtC,KAAK,EAAE,CAAC;QADQ,QAAG,GAAH,GAAG,CAAmB;IAE1C,CAAC;IAED,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,WAAW;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC3C,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAkB;QACzC,OAAO,6BAA6B,CAAC;IACzC,CAAC;IAEM,QAAQ;QACX,IAAI,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAExC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC5C,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACtC,UAAU,EAAE,KAAK;aACpB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,iCAAiC;YACjC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;YAErD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3F,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YAE5F,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,qGAAqG;IAC7F,iBAAiB,CAAC,MAAkB;QACxC,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa;YAC7C,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,CAClC,CAAC,MAAM,CAAC;IACb,CAAC;IAED,6FAA6F;IACrF,cAAc,CAAC,MAAkB;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;YACtB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa;gBAC7C,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,CAClC,CACJ,CAAC,MAAM,CAAC;IACb,CAAC;IAEM,cAAc,CAAC,IAAY;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEM,oBAAoB,CAAC,MAAc;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,mBAAmB;QACvB,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,sCAAoC,CAAC,SAAS,CAAC,CAAC;YAC/F,IAAI,GAAG,EAAE,CAAC;gBACN,MAAM,KAAK,GAA4B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvD,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;oBAC7B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC3C,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAClC,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACpC,MAAM,KAAK,GAA4B;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC;QACF,cAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC,sCAAoC,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACvH,CAAC;IAEO,WAAW;QACf,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAE9B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,YAAY,CAAC,UAAsB;QACtC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC;QAC3C,CAAC;QAED,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;QAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,kBAAkB,GAAG,UAAU,IAAI,IAAI,CAAC;QAE7C,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,oFAAoF;IAC5E,qBAAqB,CAAC,UAAsB;QAChD,OAAO,UAAU,CAAC,eAAe;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CACR,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa;YAC7C,CAAC,CAAC,aAAa,KAAK,UAAU,CAAC,IAAI,CACtC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,UAAU,EAAE,UAAU,CAAC,IAAI;YAC3B,QAAQ,EAAE,CAAC,CAAC,aAAa;YACzB,sBAAsB,EAAE,CAAC,CAAC,sBAAsB;YAChD,IAAI,EAAE,CAAC,CAAC,IAAI;SACf,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,+EAA+E;IACvE,kBAAkB,CAAC,UAAsB;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;aACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CACR,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;YAC1B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa;gBAC7C,CAAC,CAAC,aAAa,KAAK,UAAU,CAAC,IAAI,CACtC,CACJ;aACA,GAAG,CAAC,CAAC,CAAC,EAAE;YACL,MAAM,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACnC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa;gBAC7C,CAAC,CAAC,aAAa,KAAK,UAAU,CAAC,IAAI,CACrC,CAAC;YACH,OAAO;gBACH,UAAU,EAAE,CAAC,CAAC,IAAI;gBAClB,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;gBAClD,IAAI,EAAE,GAAG,CAAC,IAAI;aACjB,CAAC;QACN,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;IAEM,gBAAgB,CAAC,UAAkB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC/D,IAAI,IAAI,EAAE,CAAC;YACP,+CAA+C;YAC/C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7D,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAEM,kBAAkB,CAAC,KAAa;QACnC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;QACrC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC;QACnC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,cAAc,CAAC;QACvC,OAAO,YAAY,CAAC;IACxB,CAAC;IAEM,oBAAoB,CAAC,MAAc;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACxE,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;8HAlPQ,oCAAoC;6DAApC,oCAAoC;YClCjD,8BAA6B;YAC3B,6GAAiB;YAIjB,6FAAkB;YAwKpB,iBAAM;;YA5KJ,cAEC;YAFD,wCAEC;YAED,cAuKC;YAvKD,yCAuKC;;;AD1IU,oCAAoC;IARhD,aAAa,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;GAQvD,oCAAoC,CAmPhD;;iFAnPY,oCAAoC;cAPhD,SAAS;6BACI,KAAK,YACL,mCAAmC,mBAG5B,uBAAuB,CAAC,MAAM;;kFAEtC,oCAAoC","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { Metadata, EntityInfo } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine } from '@memberjunction/core-entities';\n\ninterface VersionGraphPreferences {\n SchemaFilter: string;\n}\ninterface EntityNode {\n Name: string;\n ID: string;\n SchemaName: string;\n ReferencedByCount: number;\n DependsOnCount: number;\n IsSelected: boolean;\n}\n\ninterface RelationshipEdge {\n FromEntity: string;\n ToEntity: string;\n RelatedEntityJoinField: string;\n Type: string;\n}\n\n@RegisterClass(BaseResourceComponent, 'VersionHistoryGraphResource')\n@Component({\n standalone: false,\n selector: 'mj-version-history-graph-resource',\n templateUrl: './graph-resource.component.html',\n styleUrls: ['./graph-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionHistoryGraphResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public IsLoading = true;\n\n // Entity browser\n public AllEntities: EntityNode[] = [];\n public FilteredEntities: EntityNode[] = [];\n public SearchText = '';\n public SchemaFilter = '';\n public AvailableSchemas: string[] = [];\n\n // Selected entity detail\n public SelectedEntity: EntityNode | null = null;\n public SelectedEntityInfo: EntityInfo | null = null;\n public ReferencedByEntities: RelationshipEdge[] = [];\n public DependsOnEntities: RelationshipEdge[] = [];\n\n // Stats\n public TotalEntities = 0;\n public EntitiesWithDependents = 0;\n public TotalRelationships = 0;\n\n private static readonly PREFS_KEY = 'VersionHistory.Graph.UserPreferences';\n private preferencesLoaded = false;\n private metadata = new Metadata();\n protected override destroy$ = new Subject<void>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadUserPreferences();\n this.LoadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Dependency Graph';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-diagram-project';\n }\n\n public LoadData(): void {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n const entities = this.metadata.Entities;\n\n this.AllEntities = entities.map(e => ({\n Name: e.Name,\n ID: e.ID,\n SchemaName: e.SchemaName,\n ReferencedByCount: this.countReferencedBy(e),\n DependsOnCount: this.countDependsOn(e),\n IsSelected: false\n })).sort((a, b) => a.Name.localeCompare(b.Name));\n\n // Extract unique schemas, sorted\n const schemaSet = new Set(this.AllEntities.map(e => e.SchemaName));\n this.AvailableSchemas = Array.from(schemaSet).sort();\n\n this.TotalEntities = this.AllEntities.length;\n this.EntitiesWithDependents = this.AllEntities.filter(e => e.ReferencedByCount > 0).length;\n this.TotalRelationships = this.AllEntities.reduce((sum, e) => sum + e.ReferencedByCount, 0);\n\n this.applyFilter();\n } catch (error) {\n console.error('Error loading dependency graph data:', error);\n } finally {\n this.IsLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n /** Count entities that reference this entity (have FKs pointing to it), excluding self-references */\n private countReferencedBy(entity: EntityInfo): number {\n return entity.RelatedEntities.filter(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity !== entity.Name\n ).length;\n }\n\n /** Count entities this entity depends on (has FKs pointing to), excluding self-references */\n private countDependsOn(entity: EntityInfo): number {\n return this.metadata.Entities.filter(e =>\n e.Name !== entity.Name &&\n e.RelatedEntities.some(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity === entity.Name\n )\n ).length;\n }\n\n public OnSearchChange(text: string): void {\n this.SearchText = text;\n this.applyFilter();\n }\n\n public OnSchemaFilterChange(schema: string): void {\n this.SchemaFilter = this.SchemaFilter === schema ? '' : schema;\n this.applyFilter();\n this.persistPreferences();\n }\n\n private loadUserPreferences(): void {\n try {\n const raw = UserInfoEngine.Instance.GetSetting(VersionHistoryGraphResourceComponent.PREFS_KEY);\n if (raw) {\n const prefs: VersionGraphPreferences = JSON.parse(raw);\n if (prefs.SchemaFilter != null) {\n this.SchemaFilter = prefs.SchemaFilter;\n }\n }\n } catch (error) {\n console.error('Error loading graph preferences:', error);\n this.SchemaFilter = '';\n }\n this.preferencesLoaded = true;\n }\n\n private persistPreferences(): void {\n if (!this.preferencesLoaded) return;\n const prefs: VersionGraphPreferences = {\n SchemaFilter: this.SchemaFilter\n };\n UserInfoEngine.Instance.SetSettingDebounced(VersionHistoryGraphResourceComponent.PREFS_KEY, JSON.stringify(prefs));\n }\n\n private applyFilter(): void {\n let result = this.AllEntities;\n\n if (this.SchemaFilter) {\n result = result.filter(e => e.SchemaName === this.SchemaFilter);\n }\n\n if (this.SearchText) {\n const search = this.SearchText.toLowerCase();\n result = result.filter(e => e.Name.toLowerCase().includes(search));\n }\n\n this.FilteredEntities = result;\n this.cdr.markForCheck();\n }\n\n public SelectEntity(entityNode: EntityNode): void {\n if (this.SelectedEntity) {\n this.SelectedEntity.IsSelected = false;\n }\n\n entityNode.IsSelected = true;\n this.SelectedEntity = entityNode;\n\n const entityInfo = this.metadata.Entities.find(e => UUIDsEqual(e.ID, entityNode.ID));\n this.SelectedEntityInfo = entityInfo ?? null;\n\n if (entityInfo) {\n this.ReferencedByEntities = this.buildReferencedByList(entityInfo);\n this.DependsOnEntities = this.buildDependsOnList(entityInfo);\n } else {\n this.ReferencedByEntities = [];\n this.DependsOnEntities = [];\n }\n\n this.cdr.markForCheck();\n }\n\n /** Entities that have FKs pointing TO the selected entity (it is the \"one\" side) */\n private buildReferencedByList(entityInfo: EntityInfo): RelationshipEdge[] {\n return entityInfo.RelatedEntities\n .filter(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity !== entityInfo.Name\n )\n .map(r => ({\n FromEntity: entityInfo.Name,\n ToEntity: r.RelatedEntity,\n RelatedEntityJoinField: r.RelatedEntityJoinField,\n Type: r.Type\n }))\n .sort((a, b) => a.ToEntity.localeCompare(b.ToEntity));\n }\n\n /** Entities the selected entity has FKs pointing to (it is the \"many\" side) */\n private buildDependsOnList(entityInfo: EntityInfo): RelationshipEdge[] {\n return this.metadata.Entities\n .filter(e =>\n e.Name !== entityInfo.Name &&\n e.RelatedEntities.some(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity === entityInfo.Name\n )\n )\n .map(e => {\n const rel = e.RelatedEntities.find(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity === entityInfo.Name\n )!;\n return {\n FromEntity: e.Name,\n ToEntity: entityInfo.Name,\n RelatedEntityJoinField: rel.RelatedEntityJoinField,\n Type: rel.Type\n };\n })\n .sort((a, b) => a.FromEntity.localeCompare(b.FromEntity));\n }\n\n public NavigateToEntity(entityName: string): void {\n const node = this.AllEntities.find(e => e.Name === entityName);\n if (node) {\n // Clear schema filter so the entity is visible\n if (this.SchemaFilter && node.SchemaName !== this.SchemaFilter) {\n this.SchemaFilter = '';\n this.applyFilter();\n }\n this.SelectEntity(node);\n }\n }\n\n public GetDependencyLevel(count: number): string {\n if (count === 0) return 'level-none';\n if (count <= 3) return 'level-low';\n if (count <= 10) return 'level-medium';\n return 'level-high';\n }\n\n public GetSchemaEntityCount(schema: string): number {\n return this.AllEntities.filter(e => e.SchemaName === schema).length;\n }\n\n public Refresh(): void {\n this.LoadData();\n }\n}\n","<div class=\"graph-container\">\n @if (IsLoading) {\n <mj-loading text=\"Loading dependency graph...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- Header -->\n <div class=\"page-header\">\n <div class=\"header-left\">\n <h2 class=\"page-title\">Entity Dependency Graph</h2>\n <p class=\"page-subtitle\">Explore entity relationships used by the version history system</p>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"Refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Stats Row -->\n <div class=\"stats-row\">\n <div class=\"stat-badge\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{TotalEntities}} Entities</span>\n </div>\n <div class=\"stat-badge\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <span>{{EntitiesWithDependents}} with Dependents</span>\n </div>\n <div class=\"stat-badge\">\n <i class=\"fa-solid fa-arrow-right-arrow-left\"></i>\n <span>{{TotalRelationships}} Relationships</span>\n </div>\n </div>\n <!-- Main Layout: Entity List + Detail -->\n <div class=\"graph-layout\">\n <!-- Entity List -->\n <div class=\"entity-list-panel\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">Entities</h3>\n </div>\n <div class=\"search-bar\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Filter entities...\"\n [ngModel]=\"SearchText\"\n (ngModelChange)=\"OnSearchChange($event)\" />\n </div>\n <!-- Schema Filter Chips -->\n @if (AvailableSchemas.length > 1) {\n <div class=\"schema-chips\">\n @for (schema of AvailableSchemas; track schema) {\n <button class=\"schema-chip\"\n [class.active]=\"SchemaFilter === schema\"\n (click)=\"OnSchemaFilterChange(schema)\">\n {{schema}}\n <span class=\"schema-chip-count\">{{GetSchemaEntityCount(schema)}}</span>\n </button>\n }\n </div>\n }\n <div class=\"entity-scroll-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-list-item\"\n [class.selected]=\"entity.IsSelected\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-list-name\">{{entity.Name}}</div>\n <div class=\"entity-list-badges\">\n @if (entity.ReferencedByCount > 0) {\n <span class=\"dep-badge\"\n [ngClass]=\"GetDependencyLevel(entity.ReferencedByCount)\"\n title=\"Referenced by (entities with FKs to this)\">\n {{entity.ReferencedByCount}} <i class=\"fa-solid fa-arrow-down\"></i>\n </span>\n }\n @if (entity.DependsOnCount > 0) {\n <span class=\"dep-badge level-depends-on\"\n title=\"Depends on (entities this has FKs to)\">\n {{entity.DependsOnCount}} <i class=\"fa-solid fa-arrow-up\"></i>\n </span>\n }\n </div>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"empty-list\">\n <p>No entities match your search.</p>\n </div>\n }\n </div>\n </div>\n <!-- Detail Panel -->\n <div class=\"entity-detail-panel\">\n @if (SelectedEntity) {\n <div class=\"detail-header\">\n <i class=\"fa-solid fa-table detail-icon\"></i>\n <div class=\"detail-header-text\">\n <h3 class=\"detail-title\">{{SelectedEntity.Name}}</h3>\n <span class=\"detail-schema\">{{SelectedEntity.SchemaName}}</span>\n </div>\n </div>\n <!-- Referenced By (entities that have FKs pointing to this entity) -->\n <div class=\"relationship-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-arrow-down section-icon referenced-by-icon\"></i>\n <h4>Referenced By</h4>\n <span class=\"section-count\">{{ReferencedByEntities.length}}</span>\n </div>\n <p class=\"section-hint\">Entities that have foreign keys pointing to <strong>{{SelectedEntity.Name}}</strong></p>\n @if (ReferencedByEntities.length > 0) {\n <div class=\"relationship-list\">\n @for (rel of ReferencedByEntities; track rel) {\n <div class=\"relationship-item\">\n <div class=\"rel-main\"\n (click)=\"NavigateToEntity(rel.ToEntity)\">\n <i class=\"fa-solid fa-table rel-icon\"></i>\n <span class=\"rel-entity-name\">{{rel.ToEntity}}</span>\n <span class=\"rel-join-field\">\n <i class=\"fa-solid fa-link\"></i>\n {{rel.RelatedEntityJoinField}}\n </span>\n </div>\n </div>\n }\n </div>\n }\n @if (ReferencedByEntities.length === 0) {\n <div class=\"empty-relationships\">\n <p>No entities reference this entity.</p>\n </div>\n }\n </div>\n <!-- Depends On (entities this entity has FKs to) -->\n <div class=\"relationship-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-arrow-up section-icon depends-on-icon\"></i>\n <h4>Depends On</h4>\n <span class=\"section-count\">{{DependsOnEntities.length}}</span>\n </div>\n <p class=\"section-hint\"><strong>{{SelectedEntity.Name}}</strong> has foreign keys pointing to these entities</p>\n @if (DependsOnEntities.length > 0) {\n <div class=\"relationship-list\">\n @for (rel of DependsOnEntities; track rel) {\n <div class=\"relationship-item\">\n <div class=\"rel-main\"\n (click)=\"NavigateToEntity(rel.FromEntity)\">\n <i class=\"fa-solid fa-table rel-icon\"></i>\n <span class=\"rel-entity-name\">{{rel.FromEntity}}</span>\n <span class=\"rel-join-field\">\n <i class=\"fa-solid fa-link\"></i>\n {{rel.RelatedEntityJoinField}}\n </span>\n </div>\n </div>\n }\n </div>\n }\n @if (DependsOnEntities.length === 0) {\n <div class=\"empty-relationships\">\n <p>This entity has no foreign key dependencies.</p>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-selection\">\n <i class=\"fa-solid fa-diagram-project no-selection-icon\"></i>\n <h3>Select an Entity</h3>\n <p>Choose an entity from the list to explore its dependency relationships.</p>\n </div>\n }\n </div>\n </div>\n }\n</div>\n"]}
1
+ {"version":3,"file":"graph-resource.component.js","sourceRoot":"","sources":["../../../src/VersionHistory/components/graph-resource.component.ts","../../../src/VersionHistory/components/graph-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { Metadata, EntityInfo } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine } from '@memberjunction/core-entities';\n\ninterface VersionGraphPreferences {\n SchemaFilter: string;\n}\ninterface EntityNode {\n Name: string;\n ID: string;\n SchemaName: string;\n ReferencedByCount: number;\n DependsOnCount: number;\n IsSelected: boolean;\n}\n\ninterface RelationshipEdge {\n FromEntity: string;\n ToEntity: string;\n RelatedEntityJoinField: string;\n Type: string;\n}\n\n@RegisterClass(BaseResourceComponent, 'VersionHistoryGraphResource')\n@Component({\n standalone: false,\n selector: 'mj-version-history-graph-resource',\n templateUrl: './graph-resource.component.html',\n styleUrls: ['./graph-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionHistoryGraphResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public IsLoading = true;\n\n // Entity browser\n public AllEntities: EntityNode[] = [];\n public FilteredEntities: EntityNode[] = [];\n public SearchText = '';\n public SchemaFilter = '';\n public AvailableSchemas: string[] = [];\n\n // Selected entity detail\n public SelectedEntity: EntityNode | null = null;\n public SelectedEntityInfo: EntityInfo | null = null;\n public ReferencedByEntities: RelationshipEdge[] = [];\n public DependsOnEntities: RelationshipEdge[] = [];\n\n // Stats\n public TotalEntities = 0;\n public EntitiesWithDependents = 0;\n public TotalRelationships = 0;\n\n private static readonly PREFS_KEY = 'VersionHistory.Graph.UserPreferences';\n private preferencesLoaded = false;\n private metadata = this.ProviderToUse;\n protected override destroy$ = new Subject<void>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadUserPreferences();\n this.LoadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Dependency Graph';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-diagram-project';\n }\n\n public LoadData(): void {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n const entities = this.metadata.Entities;\n\n this.AllEntities = entities.map(e => ({\n Name: e.Name,\n ID: e.ID,\n SchemaName: e.SchemaName,\n ReferencedByCount: this.countReferencedBy(e),\n DependsOnCount: this.countDependsOn(e),\n IsSelected: false\n })).sort((a, b) => a.Name.localeCompare(b.Name));\n\n // Extract unique schemas, sorted\n const schemaSet = new Set(this.AllEntities.map(e => e.SchemaName));\n this.AvailableSchemas = Array.from(schemaSet).sort();\n\n this.TotalEntities = this.AllEntities.length;\n this.EntitiesWithDependents = this.AllEntities.filter(e => e.ReferencedByCount > 0).length;\n this.TotalRelationships = this.AllEntities.reduce((sum, e) => sum + e.ReferencedByCount, 0);\n\n this.applyFilter();\n } catch (error) {\n console.error('Error loading dependency graph data:', error);\n } finally {\n this.IsLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n /** Count entities that reference this entity (have FKs pointing to it), excluding self-references */\n private countReferencedBy(entity: EntityInfo): number {\n return entity.RelatedEntities.filter(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity !== entity.Name\n ).length;\n }\n\n /** Count entities this entity depends on (has FKs pointing to), excluding self-references */\n private countDependsOn(entity: EntityInfo): number {\n return this.metadata.Entities.filter(e =>\n e.Name !== entity.Name &&\n e.RelatedEntities.some(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity === entity.Name\n )\n ).length;\n }\n\n public OnSearchChange(text: string): void {\n this.SearchText = text;\n this.applyFilter();\n }\n\n public OnSchemaFilterChange(schema: string): void {\n this.SchemaFilter = this.SchemaFilter === schema ? '' : schema;\n this.applyFilter();\n this.persistPreferences();\n }\n\n private loadUserPreferences(): void {\n try {\n const raw = UserInfoEngine.Instance.GetSetting(VersionHistoryGraphResourceComponent.PREFS_KEY);\n if (raw) {\n const prefs: VersionGraphPreferences = JSON.parse(raw);\n if (prefs.SchemaFilter != null) {\n this.SchemaFilter = prefs.SchemaFilter;\n }\n }\n } catch (error) {\n console.error('Error loading graph preferences:', error);\n this.SchemaFilter = '';\n }\n this.preferencesLoaded = true;\n }\n\n private persistPreferences(): void {\n if (!this.preferencesLoaded) return;\n const prefs: VersionGraphPreferences = {\n SchemaFilter: this.SchemaFilter\n };\n UserInfoEngine.Instance.SetSettingDebounced(VersionHistoryGraphResourceComponent.PREFS_KEY, JSON.stringify(prefs));\n }\n\n private applyFilter(): void {\n let result = this.AllEntities;\n\n if (this.SchemaFilter) {\n result = result.filter(e => e.SchemaName === this.SchemaFilter);\n }\n\n if (this.SearchText) {\n const search = this.SearchText.toLowerCase();\n result = result.filter(e => e.Name.toLowerCase().includes(search));\n }\n\n this.FilteredEntities = result;\n this.cdr.markForCheck();\n }\n\n public SelectEntity(entityNode: EntityNode): void {\n if (this.SelectedEntity) {\n this.SelectedEntity.IsSelected = false;\n }\n\n entityNode.IsSelected = true;\n this.SelectedEntity = entityNode;\n\n const entityInfo = this.metadata.Entities.find(e => UUIDsEqual(e.ID, entityNode.ID));\n this.SelectedEntityInfo = entityInfo ?? null;\n\n if (entityInfo) {\n this.ReferencedByEntities = this.buildReferencedByList(entityInfo);\n this.DependsOnEntities = this.buildDependsOnList(entityInfo);\n } else {\n this.ReferencedByEntities = [];\n this.DependsOnEntities = [];\n }\n\n this.cdr.markForCheck();\n }\n\n /** Entities that have FKs pointing TO the selected entity (it is the \"one\" side) */\n private buildReferencedByList(entityInfo: EntityInfo): RelationshipEdge[] {\n return entityInfo.RelatedEntities\n .filter(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity !== entityInfo.Name\n )\n .map(r => ({\n FromEntity: entityInfo.Name,\n ToEntity: r.RelatedEntity,\n RelatedEntityJoinField: r.RelatedEntityJoinField,\n Type: r.Type\n }))\n .sort((a, b) => a.ToEntity.localeCompare(b.ToEntity));\n }\n\n /** Entities the selected entity has FKs pointing to (it is the \"many\" side) */\n private buildDependsOnList(entityInfo: EntityInfo): RelationshipEdge[] {\n return this.metadata.Entities\n .filter(e =>\n e.Name !== entityInfo.Name &&\n e.RelatedEntities.some(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity === entityInfo.Name\n )\n )\n .map(e => {\n const rel = e.RelatedEntities.find(r =>\n r.Type.trim().toUpperCase() === 'ONE TO MANY' &&\n r.RelatedEntity === entityInfo.Name\n )!;\n return {\n FromEntity: e.Name,\n ToEntity: entityInfo.Name,\n RelatedEntityJoinField: rel.RelatedEntityJoinField,\n Type: rel.Type\n };\n })\n .sort((a, b) => a.FromEntity.localeCompare(b.FromEntity));\n }\n\n public NavigateToEntity(entityName: string): void {\n const node = this.AllEntities.find(e => e.Name === entityName);\n if (node) {\n // Clear schema filter so the entity is visible\n if (this.SchemaFilter && node.SchemaName !== this.SchemaFilter) {\n this.SchemaFilter = '';\n this.applyFilter();\n }\n this.SelectEntity(node);\n }\n }\n\n public GetDependencyLevel(count: number): string {\n if (count === 0) return 'level-none';\n if (count <= 3) return 'level-low';\n if (count <= 10) return 'level-medium';\n return 'level-high';\n }\n\n public GetSchemaEntityCount(schema: string): number {\n return this.AllEntities.filter(e => e.SchemaName === schema).length;\n }\n\n public Refresh(): void {\n this.LoadData();\n }\n}\n","<div class=\"graph-container\">\n @if (IsLoading) {\n <mj-loading text=\"Loading dependency graph...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- Header -->\n <div class=\"page-header\">\n <div class=\"header-left\">\n <h2 class=\"page-title\">Entity Dependency Graph</h2>\n <p class=\"page-subtitle\">Explore entity relationships used by the version history system</p>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"Refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Stats Row -->\n <div class=\"stats-row\">\n <div class=\"stat-badge\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{TotalEntities}} Entities</span>\n </div>\n <div class=\"stat-badge\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <span>{{EntitiesWithDependents}} with Dependents</span>\n </div>\n <div class=\"stat-badge\">\n <i class=\"fa-solid fa-arrow-right-arrow-left\"></i>\n <span>{{TotalRelationships}} Relationships</span>\n </div>\n </div>\n <!-- Main Layout: Entity List + Detail -->\n <div class=\"graph-layout\">\n <!-- Entity List -->\n <div class=\"entity-list-panel\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">Entities</h3>\n </div>\n <div class=\"search-bar\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Filter entities...\"\n [ngModel]=\"SearchText\"\n (ngModelChange)=\"OnSearchChange($event)\" />\n </div>\n <!-- Schema Filter Chips -->\n @if (AvailableSchemas.length > 1) {\n <div class=\"schema-chips\">\n @for (schema of AvailableSchemas; track schema) {\n <button class=\"schema-chip\"\n [class.active]=\"SchemaFilter === schema\"\n (click)=\"OnSchemaFilterChange(schema)\">\n {{schema}}\n <span class=\"schema-chip-count\">{{GetSchemaEntityCount(schema)}}</span>\n </button>\n }\n </div>\n }\n <div class=\"entity-scroll-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-list-item\"\n [class.selected]=\"entity.IsSelected\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-list-name\">{{entity.Name}}</div>\n <div class=\"entity-list-badges\">\n @if (entity.ReferencedByCount > 0) {\n <span class=\"dep-badge\"\n [ngClass]=\"GetDependencyLevel(entity.ReferencedByCount)\"\n title=\"Referenced by (entities with FKs to this)\">\n {{entity.ReferencedByCount}} <i class=\"fa-solid fa-arrow-down\"></i>\n </span>\n }\n @if (entity.DependsOnCount > 0) {\n <span class=\"dep-badge level-depends-on\"\n title=\"Depends on (entities this has FKs to)\">\n {{entity.DependsOnCount}} <i class=\"fa-solid fa-arrow-up\"></i>\n </span>\n }\n </div>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"empty-list\">\n <p>No entities match your search.</p>\n </div>\n }\n </div>\n </div>\n <!-- Detail Panel -->\n <div class=\"entity-detail-panel\">\n @if (SelectedEntity) {\n <div class=\"detail-header\">\n <i class=\"fa-solid fa-table detail-icon\"></i>\n <div class=\"detail-header-text\">\n <h3 class=\"detail-title\">{{SelectedEntity.Name}}</h3>\n <span class=\"detail-schema\">{{SelectedEntity.SchemaName}}</span>\n </div>\n </div>\n <!-- Referenced By (entities that have FKs pointing to this entity) -->\n <div class=\"relationship-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-arrow-down section-icon referenced-by-icon\"></i>\n <h4>Referenced By</h4>\n <span class=\"section-count\">{{ReferencedByEntities.length}}</span>\n </div>\n <p class=\"section-hint\">Entities that have foreign keys pointing to <strong>{{SelectedEntity.Name}}</strong></p>\n @if (ReferencedByEntities.length > 0) {\n <div class=\"relationship-list\">\n @for (rel of ReferencedByEntities; track rel) {\n <div class=\"relationship-item\">\n <div class=\"rel-main\"\n (click)=\"NavigateToEntity(rel.ToEntity)\">\n <i class=\"fa-solid fa-table rel-icon\"></i>\n <span class=\"rel-entity-name\">{{rel.ToEntity}}</span>\n <span class=\"rel-join-field\">\n <i class=\"fa-solid fa-link\"></i>\n {{rel.RelatedEntityJoinField}}\n </span>\n </div>\n </div>\n }\n </div>\n }\n @if (ReferencedByEntities.length === 0) {\n <div class=\"empty-relationships\">\n <p>No entities reference this entity.</p>\n </div>\n }\n </div>\n <!-- Depends On (entities this entity has FKs to) -->\n <div class=\"relationship-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-arrow-up section-icon depends-on-icon\"></i>\n <h4>Depends On</h4>\n <span class=\"section-count\">{{DependsOnEntities.length}}</span>\n </div>\n <p class=\"section-hint\"><strong>{{SelectedEntity.Name}}</strong> has foreign keys pointing to these entities</p>\n @if (DependsOnEntities.length > 0) {\n <div class=\"relationship-list\">\n @for (rel of DependsOnEntities; track rel) {\n <div class=\"relationship-item\">\n <div class=\"rel-main\"\n (click)=\"NavigateToEntity(rel.FromEntity)\">\n <i class=\"fa-solid fa-table rel-icon\"></i>\n <span class=\"rel-entity-name\">{{rel.FromEntity}}</span>\n <span class=\"rel-join-field\">\n <i class=\"fa-solid fa-link\"></i>\n {{rel.RelatedEntityJoinField}}\n </span>\n </div>\n </div>\n }\n </div>\n }\n @if (DependsOnEntities.length === 0) {\n <div class=\"empty-relationships\">\n <p>This entity has no foreign key dependencies.</p>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-selection\">\n <i class=\"fa-solid fa-diagram-project no-selection-icon\"></i>\n <h3>Select an Entity</h3>\n <p>Choose an entity from the list to explore its dependency relationships.</p>\n </div>\n }\n </div>\n </div>\n }\n</div>\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"labels-resource.component.d.ts","sourceRoot":"","sources":["../../../src/VersionHistory/components/labels-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"labels-resource.component.d.ts","sourceRoot":"","sources":["../../../src/VersionHistory/components/labels-resource.component.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { Component, ChangeDetectionStrategy } from '@angular/core';
9
9
  import { Subject } from 'rxjs';
10
10
  import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
11
11
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
12
- import { RunView, Metadata } from '@memberjunction/core';
12
+ import { RunView } from '@memberjunction/core';
13
13
  import { UserInfoEngine } from '@memberjunction/core-entities';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "@angular/common";
@@ -577,7 +577,7 @@ let VersionHistoryLabelsResourceComponent = class VersionHistoryLabelsResourceCo
577
577
  preferencesLoaded = false;
578
578
  // Create Label Wizard
579
579
  ShowCreateWizard = false;
580
- metadata = new Metadata();
580
+ metadata = this.ProviderToUse;
581
581
  destroy$ = new Subject();
582
582
  constructor(cdr) {
583
583
  super();
@@ -606,7 +606,7 @@ let VersionHistoryLabelsResourceComponent = class VersionHistoryLabelsResourceCo
606
606
  try {
607
607
  this.IsLoading = true;
608
608
  this.cdr.markForCheck();
609
- const rv = new RunView();
609
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
610
610
  const [labelsResult, itemsResult] = await rv.RunViews([
611
611
  {
612
612
  EntityName: 'MJ: Version Labels',