@memberjunction/ng-dashboards 5.38.0 → 5.40.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 (321) hide show
  1. package/README.md +14 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  31. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  33. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  35. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  37. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  39. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  41. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  43. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  45. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  47. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  49. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  50. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  51. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  53. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  54. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  55. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  57. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  58. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  59. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  61. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  63. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  65. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
  67. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
  69. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  71. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  73. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  74. package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
  75. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
  77. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  78. package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
  79. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  81. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  83. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  85. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
  87. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
  89. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  90. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  91. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  92. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  93. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  94. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
  95. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  96. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
  97. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  98. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
  99. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  100. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
  101. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  102. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
  103. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  104. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
  105. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  106. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  107. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  108. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  109. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  110. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
  111. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  112. package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
  113. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  114. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  115. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  116. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
  117. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  118. package/dist/AI/components/execution-monitoring.component.js +1 -1
  119. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  120. package/dist/AI/components/models/model-management.component.js +209 -208
  121. package/dist/AI/components/models/model-management.component.js.map +1 -1
  122. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  123. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  124. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  125. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  126. package/dist/AI/components/system/system-configuration.component.js +17 -17
  127. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  128. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  129. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  130. package/dist/AI/components/tags/tags-resource.component.js +578 -538
  131. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  132. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  133. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  134. package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
  135. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  136. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  137. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  138. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  139. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  140. package/dist/AI/services/cache-metrics.d.ts +50 -0
  141. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  142. package/dist/AI/services/cache-metrics.js +43 -0
  143. package/dist/AI/services/cache-metrics.js.map +1 -0
  144. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  145. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  146. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  147. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  148. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  149. package/dist/Actions/components/actions-overview.component.js +141 -141
  150. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  151. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  152. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  153. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  154. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  155. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  156. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  157. package/dist/Admin/admin-data-schema.component.js +2 -2
  158. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  159. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  160. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  161. package/dist/Admin/admin-identity-access.component.js +2 -2
  162. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  163. package/dist/Admin/admin-monitoring.component.js +2 -2
  164. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  165. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  166. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  168. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-logs-resource.component.js +72 -50
  170. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  171. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  172. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  173. package/dist/Communication/communication-providers-resource.component.js +52 -51
  174. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  175. package/dist/Communication/communication-runs-resource.component.js +39 -38
  176. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  177. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  178. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  179. package/dist/Communication/communication-templates-resource.component.js +92 -89
  180. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  181. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  182. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  183. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  184. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  185. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  186. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  187. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  188. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  189. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  190. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  191. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  192. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  193. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  194. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  195. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  196. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  197. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  198. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  199. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  200. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  201. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  202. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  203. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  204. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  205. package/dist/DevTools/app-state-inspector.component.js +18 -17
  206. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  207. package/dist/DevTools/class-registry.component.js +88 -85
  208. package/dist/DevTools/class-registry.component.js.map +1 -1
  209. package/dist/DevTools/event-monitor.component.js +155 -150
  210. package/dist/DevTools/event-monitor.component.js.map +1 -1
  211. package/dist/DevTools/graphql-console.component.js +245 -243
  212. package/dist/DevTools/graphql-console.component.js.map +1 -1
  213. package/dist/DevTools/layout-inspector.component.js +18 -17
  214. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  215. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  216. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  217. package/dist/Home/home-dashboard.component.js +2 -2
  218. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  219. package/dist/Integration/components/activity/activity.component.js +236 -229
  220. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  221. package/dist/Integration/components/connections/connections.component.js +390 -389
  222. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  223. package/dist/Integration/components/overview/overview.component.js +2 -2
  224. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  225. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
  226. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  227. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  228. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  229. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
  230. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  231. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  232. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  233. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  234. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  235. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  236. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  237. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  238. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  239. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  240. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  241. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  242. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  243. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  244. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  245. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  246. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  247. package/dist/KnowledgeHub/index.d.ts +3 -0
  248. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  249. package/dist/KnowledgeHub/index.js +3 -0
  250. package/dist/KnowledgeHub/index.js.map +1 -1
  251. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  252. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  253. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  254. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  255. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  256. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  257. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  258. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  259. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  260. package/dist/MCP/mcp-dashboard.component.js +443 -438
  261. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  262. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  264. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  266. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  267. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  268. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  270. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  271. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  272. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  273. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  274. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  275. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  276. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  277. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  278. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  279. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  280. package/dist/Testing/components/testing-explorer.component.js +436 -427
  281. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  282. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  283. package/dist/Testing/components/testing-runs.component.js +116 -115
  284. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  285. package/dist/Testing/testing-dashboard.component.js +6 -7
  286. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  287. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  288. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  289. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  290. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  291. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  292. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  293. package/dist/ai-dashboards.module.d.ts +57 -35
  294. package/dist/ai-dashboards.module.d.ts.map +1 -1
  295. package/dist/ai-dashboards.module.js +80 -1
  296. package/dist/ai-dashboards.module.js.map +1 -1
  297. package/dist/communication-dashboards.module.d.ts +1 -1
  298. package/dist/communication-dashboards.module.d.ts.map +1 -1
  299. package/dist/communication-dashboards.module.js +7 -1
  300. package/dist/communication-dashboards.module.js.map +1 -1
  301. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  302. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  303. package/dist/data-explorer-dashboards.module.js +5 -14
  304. package/dist/data-explorer-dashboards.module.js.map +1 -1
  305. package/dist/public-api.d.ts +3 -0
  306. package/dist/public-api.d.ts.map +1 -1
  307. package/dist/public-api.js +3 -0
  308. package/dist/public-api.js.map +1 -1
  309. package/dist/testing-dashboards.module.d.ts +4 -5
  310. package/dist/testing-dashboards.module.d.ts.map +1 -1
  311. package/dist/testing-dashboards.module.js +7 -5
  312. package/dist/testing-dashboards.module.js.map +1 -1
  313. package/package.json +57 -54
  314. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  315. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  316. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  317. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  318. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  319. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  320. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  321. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-tab.component.js","sourceRoot":"","sources":["../../../../../src/AI/components/autotagging/tabs/health-tab.component.ts","../../../../../src/AI/components/autotagging/tabs/health-tab.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Classify · Tag Health tab.\n *\n * Self-contained sub-page that surfaces the REAL taxonomy-quality signals the\n * server-side TagHealthJob produces as `MJ: Tag Suggestions` rows with\n * `Reason ∈ {MergeCandidate, LowUsage, WideNode}`. The Suggestions Inbox tab\n * deliberately EXCLUDES these 3 reasons; the Health tab OWNS them.\n *\n * NOTE: the underlying signals (which tags are merge candidates, which are\n * low-usage, which are wide nodes) are computed SERVER-SIDE by the TagHealthJob\n * — this tab does not recompute them. It triages the resulting suggestion rows:\n * grouping them into the 3 signal buckets and applying human decisions\n * (Merge / Deprecate / Review-in-Taxonomy / Dismiss) as client-side entity\n * mutations on the suggestion (and, for Deprecate, on the subject Tag).\n *\n * Data is TRANSACTIONAL and grows over time — loaded via RunView (NOT cached),\n * grouped into the 3 buckets in memory. Loads lazily on first activation.\n */\nimport { Component, ChangeDetectorRef, EventEmitter, Output, inject } from '@angular/core';\nimport { RunView } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { MJTagSuggestionEntity, MJTagEntity } from '@memberjunction/core-entities';\nimport { TagEngineBase } from '@memberjunction/tag-engine-base';\n\n/** The three health-signal reasons this tab owns. */\ntype HealthReason = 'MergeCandidate' | 'LowUsage' | 'WideNode';\n\n/** Confidence floor for the \"merge all high-confidence\" bulk action. */\nconst HIGH_CONFIDENCE_THRESHOLD = 0.9;\n\n/** Static descriptor for one of the 3 signal cards. */\ninterface SignalCardMeta {\n Reason: HealthReason;\n Title: string;\n Icon: string;\n /** Semantic status variant driving the card accent color. */\n Variant: 'info' | 'warning' | 'error';\n /** One-line explanation of what the signal means. */\n Explanation: string;\n /** Noun for the headline count (e.g. \"pairs\", \"tags\", \"nodes\"). */\n CountNoun: string;\n}\n\n/** A signal card's live view-model: its meta + the suggestions in its bucket. */\ninterface SignalCard {\n Meta: SignalCardMeta;\n Items: MJTagSuggestionEntity[];\n}\n\n/** Card descriptors in display order (merge → low-usage → wide-node). */\nconst SIGNAL_CARDS: SignalCardMeta[] = [\n {\n Reason: 'MergeCandidate',\n Title: 'Merge candidates',\n Icon: 'fa-solid fa-code-merge',\n Variant: 'info',\n Explanation: 'Near-duplicate tags with high embedding similarity — likely the same concept under two names.',\n CountNoun: 'pairs',\n },\n {\n Reason: 'LowUsage',\n Title: 'Low usage',\n Icon: 'fa-solid fa-arrow-trend-down',\n Variant: 'warning',\n Explanation: 'Tags applied to very few items recently — candidates to deprecate and keep the taxonomy lean.',\n CountNoun: 'tags',\n },\n {\n Reason: 'WideNode',\n Title: 'Wide nodes',\n Icon: 'fa-solid fa-arrows-left-right-to-line',\n Variant: 'error',\n Explanation: 'Tags with too many direct children — likely need splitting into sub-categories.',\n CountNoun: 'nodes',\n },\n];\n\n/** How many example items to surface per card before \"show all\". */\nconst PREVIEW_LIMIT = 5;\n\n@Component({\n standalone: false,\n selector: 'classify-health-tab',\n templateUrl: './health-tab.component.html',\n styleUrls: ['./health-tab.component.css']\n})\nexport class ClassifyHealthTabComponent extends BaseAngularComponent {\n private cdr = inject(ChangeDetectorRef);\n\n public readonly PreviewLimit = PREVIEW_LIMIT;\n public readonly HighConfidenceThreshold = HIGH_CONFIDENCE_THRESHOLD;\n\n // ── Loaded data (NOT cached — transactional) ──\n private allSuggestions: MJTagSuggestionEntity[] = [];\n public Cards: SignalCard[] = [];\n\n public IsLoading = false;\n private hasLoaded = false;\n /** ID of the suggestion currently being acted on (disables its row controls). */\n public ActingID: string | null = null;\n /** True while a bulk action is in flight. */\n public IsBulkActing = false;\n\n /** Emitted after any action so the host can refresh its pending/health badge. */\n @Output() Resolved = new EventEmitter<void>();\n\n /** Emitted with a tag ID so the host can switch to the Taxonomy tab for review. */\n @Output() OpenInTaxonomyRequested = new EventEmitter<string>();\n\n // ════════════════════════════════════════════\n // ACTIVATION + LOAD\n // ════════════════════════════════════════════\n\n /** Lazy-load on first activation (host calls this when the tab becomes active). */\n public async EnsureLoaded(): Promise<void> {\n if (this.hasLoaded) return;\n this.hasLoaded = true;\n await Promise.all([this.loadSuggestions(), this.ensureTagEngine()]);\n }\n\n /** Public refresh — re-pull the health suggestions and rebuild buckets. */\n public async Refresh(): Promise<void> {\n await this.loadSuggestions();\n }\n\n private async ensureTagEngine(): Promise<void> {\n await TagEngineBase.Instance.Config(false, this.ProviderToUse.CurrentUser, this.ProviderToUse);\n }\n\n private async loadSuggestions(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJTagSuggestionEntity>({\n EntityName: 'MJ: Tag Suggestions',\n ExtraFilter: `Status='Pending' AND Reason IN ('MergeCandidate','LowUsage','WideNode')`,\n OrderBy: 'BestMatchScore DESC',\n ResultType: 'entity_object',\n }, this.ProviderToUse.CurrentUser);\n\n this.allSuggestions = result.Success ? result.Results : [];\n this.buildCards();\n\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n\n /** Group the loaded suggestions into the 3 signal buckets, preserving card order. */\n private buildCards(): void {\n this.Cards = SIGNAL_CARDS.map(meta => ({\n Meta: meta,\n Items: this.allSuggestions.filter(s => s.Reason === meta.Reason),\n }));\n }\n\n // ════════════════════════════════════════════\n // DISPLAY HELPERS\n // ════════════════════════════════════════════\n\n public FormatScore(score: number | null): string {\n return score == null ? '—' : score.toFixed(2);\n }\n\n /** Count of high-confidence merge candidates eligible for the bulk merge. */\n public HighConfidenceCount(card: SignalCard): number {\n if (card.Meta.Reason !== 'MergeCandidate') return 0;\n return card.Items.filter(s => (s.BestMatchScore ?? 0) >= HIGH_CONFIDENCE_THRESHOLD).length;\n }\n\n /** Whether a given suggestion's row controls should be disabled. */\n public IsRowBusy(suggestion: MJTagSuggestionEntity): boolean {\n return this.IsBulkActing || (this.ActingID != null && UUIDsEqual(this.ActingID, suggestion.ID));\n }\n\n // ════════════════════════════════════════════\n // ACTIONS — entity-level mutations on the client\n // ════════════════════════════════════════════\n //\n // NOTE: the health signals themselves are computed server-side by the\n // TagHealthJob. These handlers triage the resulting suggestion rows by\n // stamping reviewer fields + resolving status (and, for Deprecate, flipping\n // the subject Tag's Status). Full downstream re-pointing of content-item\n // tags onto the resolved tag is handled by the server-side promotion job.\n\n private stampReviewFields(suggestion: MJTagSuggestionEntity): void {\n suggestion.ReviewedByUserID = this.ProviderToUse.CurrentUser.ID;\n suggestion.ReviewedAt = new Date();\n }\n\n /** Merge candidate → Merge: resolve the suggestion onto its best-match tag. */\n public async Merge(suggestion: MJTagSuggestionEntity): Promise<void> {\n if (this.IsRowBusy(suggestion)) return;\n if (!suggestion.BestMatchTagID) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'No best-match tag to merge into', 'warning', 3000);\n return;\n }\n this.ActingID = suggestion.ID;\n this.cdr.detectChanges();\n\n try {\n const saved = await this.resolveMerge(suggestion);\n if (saved) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Merged \"${suggestion.ProposedName}\" into \"${suggestion.BestMatchTag ?? 'best match'}\"`, 'success', 3000);\n this.finishAction(suggestion);\n }\n } catch (error) {\n this.notifyError(error);\n } finally {\n this.ActingID = null;\n this.cdr.detectChanges();\n }\n }\n\n /** Bulk: merge every high-confidence (score ≥ 0.9) merge candidate at once. */\n public async MergeAllHighConfidence(card: SignalCard): Promise<void> {\n if (card.Meta.Reason !== 'MergeCandidate' || this.IsBulkActing) return;\n const targets = card.Items.filter(s =>\n (s.BestMatchScore ?? 0) >= HIGH_CONFIDENCE_THRESHOLD && s.BestMatchTagID);\n if (targets.length === 0) return;\n\n this.IsBulkActing = true;\n this.cdr.detectChanges();\n\n let succeeded = 0;\n try {\n for (const suggestion of targets) {\n const saved = await this.resolveMerge(suggestion);\n if (saved) {\n this.allSuggestions = this.allSuggestions.filter(s => !UUIDsEqual(s.ID, suggestion.ID));\n succeeded++;\n }\n }\n this.buildCards();\n MJNotificationService.Instance.CreateSimpleNotification(\n `Merged ${succeeded} high-confidence candidate${succeeded === 1 ? '' : 's'}`, 'success', 3000);\n if (succeeded > 0) this.Resolved.emit();\n } catch (error) {\n this.notifyError(error);\n } finally {\n this.IsBulkActing = false;\n this.cdr.detectChanges();\n }\n }\n\n /** Stamp + resolve a single merge suggestion. Returns Save() success. */\n private async resolveMerge(suggestion: MJTagSuggestionEntity): Promise<boolean> {\n this.stampReviewFields(suggestion);\n suggestion.Status = 'Merged';\n suggestion.ResolvedTagID = suggestion.BestMatchTagID;\n const saved = await suggestion.Save();\n if (!saved) {\n this.notifyFailure('Failed to merge suggestion', suggestion.LatestResult?.CompleteMessage);\n }\n return saved;\n }\n\n /** Low usage → Deprecate: flip the subject Tag to Deprecated, then resolve. */\n public async Deprecate(suggestion: MJTagSuggestionEntity): Promise<void> {\n if (this.IsRowBusy(suggestion)) return;\n this.ActingID = suggestion.ID;\n this.cdr.detectChanges();\n\n try {\n const tag = await this.resolveSubjectTag(suggestion);\n if (!tag) {\n this.notifyFailure('Could not find the tag to deprecate', 'no matching MJ: Tags record');\n return;\n }\n\n tag.Status = 'Deprecated';\n const tagSaved = await tag.Save();\n if (!tagSaved) {\n this.notifyFailure('Failed to deprecate tag', tag.LatestResult?.CompleteMessage);\n return;\n }\n\n this.stampReviewFields(suggestion);\n suggestion.Status = 'Approved';\n suggestion.ResolvedTagID = tag.ID;\n const sugSaved = await suggestion.Save();\n if (!sugSaved) {\n this.notifyFailure('Tag deprecated but failed to resolve suggestion', suggestion.LatestResult?.CompleteMessage);\n return;\n }\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Deprecated \"${tag.DisplayName || tag.Name}\"`, 'success', 3000);\n this.finishAction(suggestion);\n } catch (error) {\n this.notifyError(error);\n } finally {\n this.ActingID = null;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Resolve the subject Tag for a low-usage suggestion: prefer the best-match\n * tag (that IS the low-usage tag here), else fall back to the already-resolved\n * tag, else look up by proposed name via the cached TagEngineBase tags.\n */\n private async resolveSubjectTag(suggestion: MJTagSuggestionEntity): Promise<MJTagEntity | null> {\n const tagID = suggestion.BestMatchTagID ?? suggestion.ResolvedTagID ?? this.lookupTagIDByName(suggestion.ProposedName);\n if (!tagID) return null;\n\n const p = this.ProviderToUse;\n const tag = await p.GetEntityObject<MJTagEntity>('MJ: Tags', p.CurrentUser);\n const loaded = await tag.Load(tagID);\n return loaded ? tag : null;\n }\n\n /** Case-insensitive name → tag ID lookup against the cached tag set. */\n private lookupTagIDByName(name: string): string | null {\n const lower = name.trim().toLowerCase();\n const match = TagEngineBase.Instance.Tags.find(t =>\n (t.DisplayName || t.Name).trim().toLowerCase() === lower ||\n t.Name.trim().toLowerCase() === lower);\n return match?.ID ?? null;\n }\n\n /**\n * Wide node → Review in Taxonomy: bubble the tag ID up so the host can switch\n * to the Taxonomy tab. The suggestion stays Pending — review happens there.\n */\n public ReviewInTaxonomy(suggestion: MJTagSuggestionEntity): void {\n const tagID = suggestion.BestMatchTagID ?? suggestion.ResolvedTagID ?? this.lookupTagIDByName(suggestion.ProposedName);\n if (tagID) {\n this.OpenInTaxonomyRequested.emit(tagID);\n } else {\n // No resolvable tag — still let the host open the taxonomy surface.\n this.OpenInTaxonomyRequested.emit('');\n }\n }\n\n /** Dismiss any signal: mark the suggestion Rejected. */\n public async Dismiss(suggestion: MJTagSuggestionEntity): Promise<void> {\n if (this.IsRowBusy(suggestion)) return;\n this.ActingID = suggestion.ID;\n this.cdr.detectChanges();\n\n try {\n this.stampReviewFields(suggestion);\n suggestion.Status = 'Rejected';\n const saved = await suggestion.Save();\n if (!saved) {\n this.notifyFailure('Failed to dismiss suggestion', suggestion.LatestResult?.CompleteMessage);\n return;\n }\n MJNotificationService.Instance.CreateSimpleNotification(\n `Dismissed \"${suggestion.ProposedName}\"`, 'success', 2500);\n this.finishAction(suggestion);\n } catch (error) {\n this.notifyError(error);\n } finally {\n this.ActingID = null;\n this.cdr.detectChanges();\n }\n }\n\n /** Remove a resolved suggestion, rebuild buckets, notify the host. */\n private finishAction(resolved: MJTagSuggestionEntity): void {\n this.allSuggestions = this.allSuggestions.filter(s => !UUIDsEqual(s.ID, resolved.ID));\n this.buildCards();\n this.Resolved.emit();\n this.cdr.detectChanges();\n }\n\n private notifyFailure(prefix: string, detail: string | undefined): void {\n MJNotificationService.Instance.CreateSimpleNotification(`${prefix}: ${detail ?? 'unknown error'}`, 'error', 5000);\n }\n\n private notifyError(error: unknown): void {\n const msg = error instanceof Error ? error.message : String(error);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n }\n}\n","<mj-page-header-interior\n Title=\"Tag Health\"\n Subtitle=\"Automated taxonomy-quality signals from the latest classification runs\">\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"Refresh()\" [disabled]=\"IsLoading\">\n @if (IsLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> <span class=\"mj-action-label\">Refreshing…</span>\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> <span class=\"mj-action-label\">Refresh</span>\n }\n </button>\n </div>\n</mj-page-header-interior>\n\n<mj-page-body-interior [Padding]=\"false\" [Flex]=\"true\">\n <div class=\"at-main-area\">\n @if (IsLoading) {\n <div class=\"at-page-body\">\n <mj-loading text=\"Loading tag-health signals…\"></mj-loading>\n </div>\n } @else {\n <div class=\"ch-grid\">\n @for (card of Cards; track card.Meta.Reason) {\n <div class=\"ch-card\" [class]=\"'ch-' + card.Meta.Variant\">\n\n <!-- Card head: big count + signal title + explanation -->\n <div class=\"ch-top\">\n <div class=\"ch-big\">\n {{ card.Items.length }} <small>{{ card.Meta.CountNoun }}</small>\n </div>\n <h5 class=\"ch-title\">\n <i [class]=\"card.Meta.Icon\"></i> {{ card.Meta.Title }}\n </h5>\n <p class=\"ch-explain\">{{ card.Meta.Explanation }}</p>\n </div>\n\n @if (card.Items.length === 0) {\n <div class=\"ch-empty\">\n <i class=\"fa-solid fa-circle-check\"></i>\n <span>No {{ card.Meta.Title | lowercase }} right now.</span>\n </div>\n } @else {\n <!-- Top examples (capped at PreviewLimit) -->\n <div class=\"ch-list\">\n @for (s of card.Items.slice(0, PreviewLimit); track s.ID) {\n <div class=\"ch-item\" [class.ch-item-busy]=\"IsRowBusy(s)\">\n <div class=\"ch-item-main\">\n <span class=\"ch-item-name\">{{ s.ProposedName }}</span>\n @if (card.Meta.Reason === 'MergeCandidate' && s.BestMatchTag) {\n <span class=\"ch-item-arrow\"><i class=\"fa-solid fa-arrow-right-long\"></i></span>\n <span class=\"ch-item-target\">{{ s.BestMatchTag }}</span>\n }\n </div>\n <div class=\"ch-item-side\">\n <span class=\"ch-score\">{{ FormatScore(s.BestMatchScore) }}</span>\n\n @switch (card.Meta.Reason) {\n @case ('MergeCandidate') {\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"Merge(s)\" [disabled]=\"IsRowBusy(s) || !s.BestMatchTagID\">\n <i class=\"fa-solid fa-code-merge\"></i> Merge\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\"\n (click)=\"Dismiss(s)\" [disabled]=\"IsRowBusy(s)\">\n Dismiss\n </button>\n }\n @case ('LowUsage') {\n <button mjButton variant=\"warning\" size=\"sm\"\n (click)=\"Deprecate(s)\" [disabled]=\"IsRowBusy(s)\">\n <i class=\"fa-solid fa-arrow-trend-down\"></i> Deprecate\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\"\n (click)=\"Dismiss(s)\" [disabled]=\"IsRowBusy(s)\">\n Dismiss\n </button>\n }\n @case ('WideNode') {\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"ReviewInTaxonomy(s)\" [disabled]=\"IsRowBusy(s)\">\n <i class=\"fa-solid fa-sitemap\"></i> Review\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\"\n (click)=\"Dismiss(s)\" [disabled]=\"IsRowBusy(s)\">\n Dismiss\n </button>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Card footer: overflow hint + bulk action -->\n <div class=\"ch-foot\">\n @if (card.Items.length > PreviewLimit) {\n <span class=\"ch-more\">+{{ card.Items.length - PreviewLimit }} more</span>\n } @else {\n <span class=\"ch-more\"></span>\n }\n\n @if (card.Meta.Reason === 'MergeCandidate' && HighConfidenceCount(card) > 0) {\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"MergeAllHighConfidence(card)\" [disabled]=\"IsBulkActing\">\n @if (IsBulkActing) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Merging…\n } @else {\n <i class=\"fa-solid fa-layer-group\"></i>\n Merge all high-confidence ({{ HighConfidenceCount(card) }})\n }\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</mj-page-body-interior>\n"]}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @fileoverview Classify · Run History tab.
3
+ *
4
+ * Self-contained sub-page: owns its header-interior, the run table, filters,
5
+ * and the per-run detail panel. Receives the shared raw run list from the host
6
+ * via `[Runs]` (the host is the data orchestrator); loads per-run detail rows
7
+ * on demand itself. Cross-tab navigation (none today) would bubble via @Output.
8
+ */
9
+ import { EventEmitter } from '@angular/core';
10
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
11
+ import { FilterFieldConfig } from '@memberjunction/ng-ui-components';
12
+ import { RunHistoryRow, RunDetailRow } from '../shared/classify.types';
13
+ import { formatTokenCount } from '../shared/classify.format';
14
+ import * as i0 from "@angular/core";
15
+ export declare class ClassifyHistoryTabComponent extends BaseAngularComponent {
16
+ private cdr;
17
+ /** Shared raw `MJ: Content Process Runs` rows, supplied by the host orchestrator. */
18
+ private _runs;
19
+ set Runs(value: Record<string, unknown>[]);
20
+ get Runs(): Record<string, unknown>[];
21
+ /** Total run count in the DB (from TotalRowCount) — drives the "Showing X of Y" line. */
22
+ TotalRunCount: number;
23
+ /** True while the host is fetching the next page in response to LoadMoreRequested. */
24
+ IsLoadingMore: boolean;
25
+ /** Bubble a "load more" request to the host, which widens the loaded window. */
26
+ LoadMoreRequested: EventEmitter<void>;
27
+ /**
28
+ * Bubble a content-item selection (from the per-run item grid) up to the host,
29
+ * which owns NavigationService + the drilldown slide-in.
30
+ */
31
+ ItemSelected: EventEmitter<string>;
32
+ onItemSelected(itemID: string): void;
33
+ /** Whether more runs exist in the DB than are currently loaded. */
34
+ get HasMoreRuns(): boolean;
35
+ onLoadMore(): void;
36
+ /** Shown while the host reloads the run list in response to RefreshRequested. */
37
+ IsLoading: boolean;
38
+ /**
39
+ * Bubble a refresh request up to the host, which owns the run-history data
40
+ * (`MJ: Content Process Runs`). The host reloads and re-binds `[Runs]`, whose
41
+ * setter rebuilds the rows; the host also clears IsLoading via [Loading].
42
+ */
43
+ RefreshRequested: EventEmitter<void>;
44
+ RunHistoryRows: RunHistoryRow[];
45
+ FilteredRunRows: RunHistoryRow[];
46
+ HistorySourceFilter: string;
47
+ HistoryStatusFilter: string;
48
+ HistorySourceOptions: string[];
49
+ SelectedRunID: string | null;
50
+ RunDetailRows: RunDetailRow[];
51
+ IsLoadingRunDetail: boolean;
52
+ readonly FormatTokenCount: typeof formatTokenCount;
53
+ /**
54
+ * Ask the host to reload the run history. Data is host-owned, so we surface a
55
+ * loading state and emit; the new `[Runs]` binding clears IsLoading.
56
+ */
57
+ Refresh(): void;
58
+ private buildRunHistoryRows;
59
+ private buildHistorySourceOptions;
60
+ FilterRunHistory(): void;
61
+ /**
62
+ * Filter fields for the Run History section, rendered inside an
63
+ * `<mj-filter-popover>` (many values, single-select → popover with dropdown).
64
+ */
65
+ get historyFilterFields(): FilterFieldConfig[];
66
+ get historyFilterValues(): Record<string, unknown>;
67
+ get historyActiveFilterCount(): number;
68
+ onHistoryFilterChange(values: Record<string, unknown>): void;
69
+ onHistoryFilterReset(): void;
70
+ /** Open (or toggle closed) the detail view for a run, loading its per-source detail rows. */
71
+ OpenRunDetail(runID: string): Promise<void>;
72
+ CloseRunDetail(): void;
73
+ private loadRunDetailRows;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClassifyHistoryTabComponent, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClassifyHistoryTabComponent, "classify-history-tab", never, { "Runs": { "alias": "Runs"; "required": false; }; "TotalRunCount": { "alias": "TotalRunCount"; "required": false; }; "IsLoadingMore": { "alias": "IsLoadingMore"; "required": false; }; }, { "LoadMoreRequested": "LoadMoreRequested"; "ItemSelected": "ItemSelected"; "RefreshRequested": "RefreshRequested"; }, never, never, false, never>;
76
+ }
77
+ //# sourceMappingURL=history-tab.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-tab.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/autotagging/tabs/history-tab.component.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAgC,YAAY,EAAyB,MAAM,eAAe,CAAC;AAElG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAA4D,gBAAgB,EAAuB,MAAM,2BAA2B,CAAC;;AAE5I,qBAMa,2BAA4B,SAAQ,oBAAoB;IACjE,OAAO,CAAC,GAAG,CAA6B;IAExC,qFAAqF;IACrF,OAAO,CAAC,KAAK,CAAiC;IAC9C,IACI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAQxC;IACD,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAEpC;IAED,yFAAyF;IAChF,aAAa,SAAK;IAE3B,sFAAsF;IAC7E,aAAa,UAAS;IAE/B,gFAAgF;IACtE,iBAAiB,qBAA4B;IAEvD;;;OAGG;IACO,YAAY,uBAA8B;IAE7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C,mEAAmE;IACnE,IAAW,WAAW,IAAI,OAAO,CAEhC;IAEM,UAAU,IAAI,IAAI;IAIzB,iFAAiF;IAC1E,SAAS,UAAS;IAEzB;;;;OAIG;IACO,gBAAgB,qBAA4B;IAE/C,cAAc,EAAE,aAAa,EAAE,CAAM;IACrC,eAAe,EAAE,aAAa,EAAE,CAAM;IACtC,mBAAmB,SAAM;IACzB,mBAAmB,SAAM;IACzB,oBAAoB,EAAE,MAAM,EAAE,CAAM;IAGpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,aAAa,EAAE,YAAY,EAAE,CAAM;IACnC,kBAAkB,UAAS;IAGlC,SAAgB,gBAAgB,0BAAoB;IAEpD;;;OAGG;IACI,OAAO,IAAI,IAAI;IAMtB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,yBAAyB;IAS1B,gBAAgB,IAAI,IAAI;IAS/B;;;OAGG;IACH,IAAW,mBAAmB,IAAI,iBAAiB,EAAE,CA0BpD;IAED,IAAW,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAExD;IAED,IAAW,wBAAwB,IAAI,MAAM,CAE5C;IAEM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM5D,oBAAoB,IAAI,IAAI;IAMnC,6FAA6F;IAChF,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjD,cAAc,IAAI,IAAI;YAOf,iBAAiB;yCA3MtB,2BAA2B;2CAA3B,2BAA2B;CAuNvC"}