@memberjunction/ng-dashboards 5.34.1 → 5.36.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 (407) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  40. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
  41. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  44. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  45. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  46. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  47. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  48. package/dist/AI/components/models/model-management.component.js +370 -425
  49. package/dist/AI/components/models/model-management.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  51. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  52. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  53. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  55. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  56. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  57. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  59. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  60. package/dist/AI/components/system/system-configuration.component.js +403 -362
  61. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  62. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  63. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
  65. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  66. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  67. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  69. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  70. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  71. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  72. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  73. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  74. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  75. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  76. package/dist/Actions/components/actions-overview.component.js +202 -158
  77. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  78. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  79. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  80. package/dist/Actions/components/execution-monitoring.component.js +191 -142
  81. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  82. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  83. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  84. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  85. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  86. package/dist/Actions/components/explorer/index.d.ts +0 -1
  87. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  88. package/dist/Actions/components/explorer/index.js +0 -1
  89. package/dist/Actions/components/explorer/index.js.map +1 -1
  90. package/dist/Admin/admin-data-schema.component.js +19 -79
  91. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  92. package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
  93. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  94. package/dist/Admin/admin-identity-access.component.js +19 -79
  95. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  96. package/dist/Admin/admin-monitoring.component.js +19 -79
  97. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  98. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  99. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  100. package/dist/Admin/base-admin-container.component.js +26 -17
  101. package/dist/Admin/base-admin-container.component.js.map +1 -1
  102. package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
  103. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  104. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  105. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  106. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  107. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  108. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  109. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  110. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  111. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  112. package/dist/Communication/communication-logs-resource.component.js +80 -99
  113. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  115. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  116. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  117. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  118. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  119. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  120. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  121. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  122. package/dist/Communication/communication-providers-resource.component.js +44 -45
  123. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  124. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  125. package/dist/Communication/communication-runs-resource.component.js +60 -58
  126. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  127. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  128. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  129. package/dist/Communication/communication-templates-resource.component.js +139 -162
  130. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  131. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  132. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  133. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  134. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  135. package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
  136. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  137. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  138. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  139. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  140. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  141. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  142. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  143. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  144. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  145. package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
  146. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  147. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  148. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  149. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
  150. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  151. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  152. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  153. package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
  154. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  155. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  156. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  157. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
  158. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  159. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  160. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  161. package/dist/DevTools/app-state-inspector.component.js +46 -72
  162. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  163. package/dist/DevTools/class-registry.component.js +88 -100
  164. package/dist/DevTools/class-registry.component.js.map +1 -1
  165. package/dist/DevTools/event-monitor.component.js +158 -168
  166. package/dist/DevTools/event-monitor.component.js.map +1 -1
  167. package/dist/DevTools/graphql-console.component.js +257 -264
  168. package/dist/DevTools/graphql-console.component.js.map +1 -1
  169. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  170. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  171. package/dist/DevTools/layout-inspector.component.js +46 -64
  172. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  173. package/dist/DevTools/lazy-module-status.component.js +75 -84
  174. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  175. package/dist/DevTools/settings-explorer.component.js +76 -85
  176. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  177. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  178. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  179. package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
  180. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  181. package/dist/Home/home-dashboard.component.d.ts +6 -0
  182. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  183. package/dist/Home/home-dashboard.component.js +521 -485
  184. package/dist/Home/home-dashboard.component.js.map +1 -1
  185. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  186. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  187. package/dist/Integration/components/activity/activity.component.js +307 -318
  188. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  189. package/dist/Integration/components/connections/connections.component.js +654 -648
  190. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  191. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  192. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  193. package/dist/Integration/components/overview/overview.component.js +182 -163
  194. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  195. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  196. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  197. package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
  198. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  199. package/dist/Integration/components/schedules/schedules.component.js +230 -241
  200. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  201. package/dist/Integration/integration.module.d.ts +1 -1
  202. package/dist/Integration/integration.module.d.ts.map +1 -1
  203. package/dist/Integration/integration.module.js +28 -1
  204. package/dist/Integration/integration.module.js.map +1 -1
  205. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  206. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  207. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
  208. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  209. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  210. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  211. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  212. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  213. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
  214. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  215. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  216. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  217. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  218. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  219. package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
  220. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  221. package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
  222. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  223. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  224. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  225. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  226. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  227. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  228. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  229. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  230. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  231. package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
  232. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  233. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  234. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  235. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  236. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  237. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  238. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  239. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  240. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  241. package/dist/Lists/index.d.ts +1 -0
  242. package/dist/Lists/index.d.ts.map +1 -1
  243. package/dist/Lists/index.js +1 -0
  244. package/dist/Lists/index.js.map +1 -1
  245. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  246. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  247. package/dist/Lists/services/list-set-operations.service.js +236 -10
  248. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  249. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  250. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  251. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  252. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  253. package/dist/MCP/mcp.module.d.ts +1 -1
  254. package/dist/MCP/mcp.module.d.ts.map +1 -1
  255. package/dist/MCP/mcp.module.js +34 -1
  256. package/dist/MCP/mcp.module.js.map +1 -1
  257. package/dist/Permissions/audit-log-resource.component.js +76 -85
  258. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  259. package/dist/Permissions/resource-access-resource.component.js +64 -69
  260. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  261. package/dist/Permissions/user-access-resource.component.js +63 -74
  262. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  264. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  266. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  267. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  268. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  270. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  271. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  272. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  273. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  274. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  275. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  276. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  277. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  278. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  279. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  280. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  281. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  282. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  283. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  284. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  285. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  286. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  287. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  288. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  289. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  290. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  291. package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
  292. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  293. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  294. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  295. package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
  296. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  297. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  298. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  300. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  301. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  302. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  303. package/dist/Testing/components/testing-analytics.component.js +420 -393
  304. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  305. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  306. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  307. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  308. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  309. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  310. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  311. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  312. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  313. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  314. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  315. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  316. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  317. package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
  318. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  319. package/dist/Testing/components/testing-explorer.component.js +679 -786
  320. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  321. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  322. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  323. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  324. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  325. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  326. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  327. package/dist/Testing/components/testing-review.component.js +310 -274
  328. package/dist/Testing/components/testing-review.component.js.map +1 -1
  329. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  330. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  331. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  332. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  333. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  334. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  335. package/dist/Testing/components/testing-runs.component.js +307 -273
  336. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  337. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  338. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  339. package/dist/Testing/testing-dashboard.component.js +114 -99
  340. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  341. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  342. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  343. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  344. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  345. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  346. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  347. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  348. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  349. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  350. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  351. package/dist/actions-dashboards.module.d.ts +15 -16
  352. package/dist/actions-dashboards.module.d.ts.map +1 -1
  353. package/dist/actions-dashboards.module.js +34 -11
  354. package/dist/actions-dashboards.module.js.map +1 -1
  355. package/dist/ai-dashboards.module.d.ts +45 -48
  356. package/dist/ai-dashboards.module.d.ts.map +1 -1
  357. package/dist/ai-dashboards.module.js +51 -10
  358. package/dist/ai-dashboards.module.js.map +1 -1
  359. package/dist/archiving-dashboards.module.d.ts +2 -1
  360. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  361. package/dist/archiving-dashboards.module.js +12 -2
  362. package/dist/archiving-dashboards.module.js.map +1 -1
  363. package/dist/communication-dashboards.module.d.ts +9 -6
  364. package/dist/communication-dashboards.module.d.ts.map +1 -1
  365. package/dist/communication-dashboards.module.js +37 -7
  366. package/dist/communication-dashboards.module.js.map +1 -1
  367. package/dist/core-dashboards.module.d.ts +1 -1
  368. package/dist/core-dashboards.module.d.ts.map +1 -1
  369. package/dist/core-dashboards.module.js +46 -1
  370. package/dist/core-dashboards.module.js.map +1 -1
  371. package/dist/credentials-dashboards.module.d.ts +1 -1
  372. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  373. package/dist/credentials-dashboards.module.js +28 -1
  374. package/dist/credentials-dashboards.module.js.map +1 -1
  375. package/dist/lists-dashboards.module.d.ts +10 -9
  376. package/dist/lists-dashboards.module.d.ts.map +1 -1
  377. package/dist/lists-dashboards.module.js +40 -2
  378. package/dist/lists-dashboards.module.js.map +1 -1
  379. package/dist/public-api.d.ts +3 -2
  380. package/dist/public-api.d.ts.map +1 -1
  381. package/dist/public-api.js +4 -3
  382. package/dist/public-api.js.map +1 -1
  383. package/dist/scheduling-dashboards.module.d.ts +1 -1
  384. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  385. package/dist/scheduling-dashboards.module.js +31 -1
  386. package/dist/scheduling-dashboards.module.js.map +1 -1
  387. package/dist/testing-dashboards.module.d.ts +8 -7
  388. package/dist/testing-dashboards.module.d.ts.map +1 -1
  389. package/dist/testing-dashboards.module.js +42 -0
  390. package/dist/testing-dashboards.module.js.map +1 -1
  391. package/package.json +53 -52
  392. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  393. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  394. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  395. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  396. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  397. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  398. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  399. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  400. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  401. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  402. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  403. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  404. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  405. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  406. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  407. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -23,641 +23,625 @@ import { BaseResourceComponent, NavigationService } from '@memberjunction/ng-sha
23
23
  import * as i0 from "@angular/core";
24
24
  import * as i1 from "@angular/forms";
25
25
  import * as i2 from "@memberjunction/ng-shared-generic";
26
- const _forTrack0 = ($index, $item) => $item.ID;
27
- const _forTrack1 = ($index, $item) => $item.Name;
28
- const _forTrack2 = ($index, $item) => $item.Label;
29
- const _forTrack3 = ($index, $item) => $item.EntityName;
30
- const _forTrack4 = ($index, $item) => $item.TagAName + $item.TagBName;
31
- const _forTrack5 = ($index, $item) => $item.RunID;
32
- function AnalyticsResourceComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "div", 0);
34
- i0.ɵɵelement(1, "mj-loading", 2);
35
- i0.ɵɵelementEnd();
36
- } }
37
- function AnalyticsResourceComponent_Conditional_1_For_8_Template(rf, ctx) { if (rf & 1) {
38
- const _r1 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "button", 18);
40
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_For_8_Template_button_click_0_listener() { const nav_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SelectTab(nav_r2.ID)); });
41
- i0.ɵɵelement(1, "i");
42
- i0.ɵɵtext(2);
43
- i0.ɵɵelementEnd();
44
- } if (rf & 2) {
45
- const nav_r2 = ctx.$implicit;
46
- const ctx_r2 = i0.ɵɵnextContext(2);
47
- i0.ɵɵclassProp("active", ctx_r2.ActiveTab === nav_r2.ID);
48
- i0.ɵɵadvance();
49
- i0.ɵɵclassMap(nav_r2.Icon);
50
- i0.ɵɵadvance();
51
- i0.ɵɵtextInterpolate1(" ", nav_r2.Label, " ");
52
- } }
53
- function AnalyticsResourceComponent_Conditional_1_For_16_Template(rf, ctx) { if (rf & 1) {
26
+ import * as i3 from "@memberjunction/ng-ui-components";
27
+ const _forTrack0 = ($index, $item) => $item.Name;
28
+ const _forTrack1 = ($index, $item) => $item.Label;
29
+ const _forTrack2 = ($index, $item) => $item.EntityName;
30
+ const _forTrack3 = ($index, $item) => $item.TagAName + $item.TagBName;
31
+ const _forTrack4 = ($index, $item) => $item.RunID;
32
+ function AnalyticsResourceComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "div", 4);
34
+ i0.ɵɵelement(1, "mj-loading", 6);
35
+ i0.ɵɵelementEnd();
36
+ } }
37
+ function AnalyticsResourceComponent_Conditional_6_For_8_Template(rf, ctx) { if (rf & 1) {
54
38
  i0.ɵɵelementStart(0, "span");
55
39
  i0.ɵɵtext(1);
56
40
  i0.ɵɵelementEnd();
57
41
  } if (rf & 2) {
58
- const tag_r4 = ctx.$implicit;
59
- i0.ɵɵstyleProp("font-size", tag_r4.Size, "px")("font-weight", tag_r4.Weight);
42
+ const tag_r3 = ctx.$implicit;
43
+ i0.ɵɵstyleProp("font-size", tag_r3.Size, "px")("font-weight", tag_r3.Weight);
60
44
  i0.ɵɵadvance();
61
- i0.ɵɵtextInterpolate(tag_r4.Name);
45
+ i0.ɵɵtextInterpolate(tag_r3.Name);
62
46
  } }
63
- function AnalyticsResourceComponent_Conditional_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelementStart(0, "span", 13);
47
+ function AnalyticsResourceComponent_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "span", 12);
65
49
  i0.ɵɵtext(1, "No trending tags yet");
66
50
  i0.ɵɵelementEnd();
67
51
  } }
68
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_8_Template(rf, ctx) { if (rf & 1) {
69
- const _r6 = i0.ɵɵgetCurrentView();
70
- i0.ɵɵelementStart(0, "button", 73);
71
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_8_Template_button_click_0_listener() { const range_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SetDateRange(range_r7.Label)); });
52
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_8_Template(rf, ctx) { if (rf & 1) {
53
+ const _r5 = i0.ɵɵgetCurrentView();
54
+ i0.ɵɵelementStart(0, "button", 70);
55
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_8_Template_button_click_0_listener() { const range_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SetDateRange(range_r6.Label)); });
72
56
  i0.ɵɵtext(1);
73
57
  i0.ɵɵelementEnd();
74
58
  } if (rf & 2) {
75
- const range_r7 = ctx.$implicit;
76
- const ctx_r2 = i0.ɵɵnextContext(3);
77
- i0.ɵɵclassProp("active", ctx_r2.ActiveDateRange === range_r7.Label);
59
+ const range_r6 = ctx.$implicit;
60
+ const ctx_r1 = i0.ɵɵnextContext(3);
61
+ i0.ɵɵclassProp("active", ctx_r1.ActiveDateRange === range_r6.Label);
78
62
  i0.ɵɵadvance();
79
- i0.ɵɵtextInterpolate(range_r7.Label);
63
+ i0.ɵɵtextInterpolate(range_r6.Label);
80
64
  } }
81
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_11_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelementStart(0, "option", 25);
65
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_11_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelementStart(0, "option", 21);
83
67
  i0.ɵɵtext(1);
84
68
  i0.ɵɵelementEnd();
85
69
  } if (rf & 2) {
86
- const opt_r8 = ctx.$implicit;
87
- i0.ɵɵproperty("value", opt_r8);
70
+ const opt_r7 = ctx.$implicit;
71
+ i0.ɵɵproperty("value", opt_r7);
88
72
  i0.ɵɵadvance();
89
- i0.ɵɵtextInterpolate(opt_r8);
73
+ i0.ɵɵtextInterpolate(opt_r7);
90
74
  } }
91
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_14_Conditional_7_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵelement(0, "i", 78);
75
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Conditional_7_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelement(0, "i", 75);
93
77
  } }
94
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
95
- i0.ɵɵelement(0, "i", 79);
78
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
79
+ i0.ɵɵelement(0, "i", 76);
96
80
  } }
97
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_14_Template(rf, ctx) { if (rf & 1) {
98
- const _r9 = i0.ɵɵgetCurrentView();
99
- i0.ɵɵelementStart(0, "div", 74);
100
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_14_Template_div_click_0_listener() { const kpi_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenDrillDown(kpi_r10.DrillDownKey)); });
101
- i0.ɵɵelementStart(1, "div")(2, "div", 75);
81
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Template(rf, ctx) { if (rf & 1) {
82
+ const _r8 = i0.ɵɵgetCurrentView();
83
+ i0.ɵɵelementStart(0, "div", 71);
84
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Template_div_click_0_listener() { const kpi_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenDrillDown(kpi_r9.DrillDownKey)); });
85
+ i0.ɵɵelementStart(1, "div")(2, "div", 72);
102
86
  i0.ɵɵtext(3);
103
87
  i0.ɵɵelementEnd();
104
- i0.ɵɵelementStart(4, "div", 76);
88
+ i0.ɵɵelementStart(4, "div", 73);
105
89
  i0.ɵɵtext(5);
106
90
  i0.ɵɵelementEnd();
107
- i0.ɵɵelementStart(6, "div", 77);
108
- i0.ɵɵconditionalCreate(7, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_14_Conditional_7_Template, 1, 0, "i", 78)(8, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_14_Conditional_8_Template, 1, 0, "i", 79);
91
+ i0.ɵɵelementStart(6, "div", 74);
92
+ i0.ɵɵconditionalCreate(7, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Conditional_7_Template, 1, 0, "i", 75)(8, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Conditional_8_Template, 1, 0, "i", 76);
109
93
  i0.ɵɵtext(9);
110
94
  i0.ɵɵelementEnd()();
111
- i0.ɵɵelementStart(10, "div", 80);
95
+ i0.ɵɵelementStart(10, "div", 77);
112
96
  i0.ɵɵnamespaceSVG();
113
- i0.ɵɵelementStart(11, "svg", 81);
114
- i0.ɵɵelement(12, "polyline", 82);
97
+ i0.ɵɵelementStart(11, "svg", 78);
98
+ i0.ɵɵelement(12, "polyline", 79);
115
99
  i0.ɵɵelementEnd()()();
116
100
  } if (rf & 2) {
117
- const kpi_r10 = ctx.$implicit;
101
+ const kpi_r9 = ctx.$implicit;
118
102
  i0.ɵɵadvance(3);
119
- i0.ɵɵtextInterpolate(kpi_r10.Label);
103
+ i0.ɵɵtextInterpolate(kpi_r9.Label);
120
104
  i0.ɵɵadvance(2);
121
- i0.ɵɵtextInterpolate(kpi_r10.Value);
105
+ i0.ɵɵtextInterpolate(kpi_r9.Value);
122
106
  i0.ɵɵadvance();
123
- i0.ɵɵclassProp("up", kpi_r10.DeltaDirection === "up")("down", kpi_r10.DeltaDirection === "down");
107
+ i0.ɵɵclassProp("up", kpi_r9.DeltaDirection === "up")("down", kpi_r9.DeltaDirection === "down");
124
108
  i0.ɵɵadvance();
125
- i0.ɵɵconditional(kpi_r10.DeltaDirection === "up" ? 7 : kpi_r10.DeltaDirection === "down" ? 8 : -1);
109
+ i0.ɵɵconditional(kpi_r9.DeltaDirection === "up" ? 7 : kpi_r9.DeltaDirection === "down" ? 8 : -1);
126
110
  i0.ɵɵadvance(2);
127
- i0.ɵɵtextInterpolate1(" ", kpi_r10.Delta, " ");
111
+ i0.ɵɵtextInterpolate1(" ", kpi_r9.Delta, " ");
128
112
  i0.ɵɵadvance(3);
129
- i0.ɵɵattribute("points", kpi_r10.SparklinePoints)("stroke", kpi_r10.SparklineColor);
113
+ i0.ɵɵattribute("points", kpi_r9.SparklinePoints)("stroke", kpi_r9.SparklineColor);
130
114
  } }
131
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
132
- const _r12 = i0.ɵɵgetCurrentView();
133
- i0.ɵɵelementStart(0, "button", 93);
134
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
135
- i0.ɵɵelement(1, "i", 94);
115
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
116
+ const _r11 = i0.ɵɵgetCurrentView();
117
+ i0.ɵɵelementStart(0, "button", 90);
118
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ExportDrillDownCSV()); });
119
+ i0.ɵɵelement(1, "i", 91);
136
120
  i0.ɵɵtext(2, " CSV ");
137
121
  i0.ɵɵelementEnd();
138
122
  } }
139
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
140
- i0.ɵɵelement(0, "mj-loading", 90);
123
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
124
+ i0.ɵɵelement(0, "mj-loading", 87);
141
125
  } }
142
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
126
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
143
127
  i0.ɵɵelementStart(0, "th");
144
128
  i0.ɵɵtext(1);
145
129
  i0.ɵɵelementEnd();
146
130
  } if (rf & 2) {
147
- const col_r13 = ctx.$implicit;
131
+ const col_r12 = ctx.$implicit;
148
132
  i0.ɵɵadvance();
149
- i0.ɵɵtextInterpolate(col_r13);
133
+ i0.ɵɵtextInterpolate(col_r12);
150
134
  } }
151
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
152
- i0.ɵɵelement(0, "th", 96);
135
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
136
+ i0.ɵɵelement(0, "th", 93);
153
137
  } }
154
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
138
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
155
139
  i0.ɵɵelementStart(0, "td");
156
140
  i0.ɵɵtext(1);
157
141
  i0.ɵɵelementEnd();
158
142
  } if (rf & 2) {
159
- const col_r14 = ctx.$implicit;
160
- const row_r15 = i0.ɵɵnextContext().$implicit;
143
+ const col_r13 = ctx.$implicit;
144
+ const row_r14 = i0.ɵɵnextContext().$implicit;
161
145
  i0.ɵɵadvance();
162
- i0.ɵɵtextInterpolate(row_r15[col_r14]);
146
+ i0.ɵɵtextInterpolate(row_r14[col_r13]);
163
147
  } }
164
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
165
- const _r16 = i0.ɵɵgetCurrentView();
166
- i0.ɵɵelementStart(0, "button", 98);
167
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const row_r15 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OpenDrillDownRecord(row_r15)); });
168
- i0.ɵɵelement(1, "i", 99);
148
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
149
+ const _r15 = i0.ɵɵgetCurrentView();
150
+ i0.ɵɵelementStart(0, "button", 95);
151
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const row_r14 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenDrillDownRecord(row_r14)); });
152
+ i0.ɵɵelement(1, "i", 96);
169
153
  i0.ɵɵelementEnd();
170
154
  } }
171
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
172
- i0.ɵɵelementStart(0, "td", 96);
173
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 97);
155
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelementStart(0, "td", 93);
157
+ i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 94);
174
158
  i0.ɵɵelementEnd();
175
159
  } if (rf & 2) {
176
- const row_r15 = i0.ɵɵnextContext().$implicit;
160
+ const row_r14 = i0.ɵɵnextContext().$implicit;
177
161
  i0.ɵɵadvance();
178
- i0.ɵɵconditional(row_r15["_RecordID"] ? 1 : -1);
162
+ i0.ɵɵconditional(row_r14["_RecordID"] ? 1 : -1);
179
163
  } }
180
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
164
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
181
165
  i0.ɵɵelementStart(0, "tr");
182
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
183
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 96);
166
+ i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
167
+ i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 93);
184
168
  i0.ɵɵelementEnd();
185
169
  } if (rf & 2) {
186
- const ctx_r2 = i0.ɵɵnextContext(5);
170
+ const ctx_r1 = i0.ɵɵnextContext(5);
187
171
  i0.ɵɵadvance();
188
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
172
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
189
173
  i0.ɵɵadvance(2);
190
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
174
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
191
175
  } }
192
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_Template(rf, ctx) { if (rf & 1) {
193
- i0.ɵɵelementStart(0, "div", 91)(1, "table", 95)(2, "thead")(3, "tr");
194
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
195
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_Conditional_6_Template, 1, 0, "th", 96);
176
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_Template(rf, ctx) { if (rf & 1) {
177
+ i0.ɵɵelementStart(0, "div", 88)(1, "table", 92)(2, "thead")(3, "tr");
178
+ i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
179
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_Conditional_6_Template, 1, 0, "th", 93);
196
180
  i0.ɵɵelementEnd()();
197
181
  i0.ɵɵelementStart(7, "tbody");
198
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
182
+ i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
199
183
  i0.ɵɵelementEnd()()();
200
184
  } if (rf & 2) {
201
- const ctx_r2 = i0.ɵɵnextContext(4);
185
+ const ctx_r1 = i0.ɵɵnextContext(4);
202
186
  i0.ɵɵadvance(4);
203
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
187
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
204
188
  i0.ɵɵadvance(2);
205
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
189
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
206
190
  i0.ɵɵadvance(2);
207
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
191
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
208
192
  } }
209
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
210
- i0.ɵɵelementStart(0, "div", 92);
193
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
194
+ i0.ɵɵelementStart(0, "div", 89);
211
195
  i0.ɵɵtext(1, "No data available");
212
196
  i0.ɵɵelementEnd();
213
197
  } }
214
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Template(rf, ctx) { if (rf & 1) {
215
- const _r11 = i0.ɵɵgetCurrentView();
216
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 83)(2, "span", 84);
217
- i0.ɵɵelement(3, "i", 85);
198
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Template(rf, ctx) { if (rf & 1) {
199
+ const _r10 = i0.ɵɵgetCurrentView();
200
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 80)(2, "span", 81);
201
+ i0.ɵɵelement(3, "i", 82);
218
202
  i0.ɵɵtext(4, " Detail View");
219
203
  i0.ɵɵelementEnd();
220
- i0.ɵɵelementStart(5, "div", 86);
221
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_6_Template, 3, 0, "button", 87);
222
- i0.ɵɵelementStart(7, "button", 88);
223
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
224
- i0.ɵɵelement(8, "i", 89);
204
+ i0.ɵɵelementStart(5, "div", 83);
205
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_6_Template, 3, 0, "button", 84);
206
+ i0.ɵɵelementStart(7, "button", 85);
207
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDrillDown()); });
208
+ i0.ɵɵelement(8, "i", 86);
225
209
  i0.ɵɵelementEnd()()();
226
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_9_Template, 1, 0, "mj-loading", 90)(10, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_10_Template, 10, 1, "div", 91)(11, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Conditional_11_Template, 2, 0, "div", 92);
210
+ i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_9_Template, 1, 0, "mj-loading", 87)(10, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_10_Template, 10, 1, "div", 88)(11, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_11_Template, 2, 0, "div", 89);
227
211
  i0.ɵɵelementEnd();
228
212
  } if (rf & 2) {
229
- const ctx_r2 = i0.ɵɵnextContext(3);
213
+ const ctx_r1 = i0.ɵɵnextContext(3);
230
214
  i0.ɵɵadvance(6);
231
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
215
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
232
216
  i0.ɵɵadvance(3);
233
- i0.ɵɵconditional(ctx_r2.IsDrillDownLoading ? 9 : ctx_r2.DrillDownData.length > 0 ? 10 : 11);
217
+ i0.ɵɵconditional(ctx_r1.IsDrillDownLoading ? 9 : ctx_r1.DrillDownData.length > 0 ? 10 : 11);
234
218
  } }
235
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_23_Template(rf, ctx) { if (rf & 1) {
236
- i0.ɵɵelementStart(0, "div", 33)(1, "div", 100);
219
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_23_Template(rf, ctx) { if (rf & 1) {
220
+ i0.ɵɵelementStart(0, "div", 30)(1, "div", 97);
237
221
  i0.ɵɵtext(2);
238
222
  i0.ɵɵelementEnd();
239
- i0.ɵɵelement(3, "div", 101);
240
- i0.ɵɵelementStart(4, "div", 102);
223
+ i0.ɵɵelement(3, "div", 98);
224
+ i0.ɵɵelementStart(4, "div", 99);
241
225
  i0.ɵɵtext(5);
242
226
  i0.ɵɵelementEnd()();
243
227
  } if (rf & 2) {
244
- const bar_r17 = ctx.$implicit;
228
+ const bar_r16 = ctx.$implicit;
245
229
  i0.ɵɵadvance(2);
246
- i0.ɵɵtextInterpolate(bar_r17.Count);
230
+ i0.ɵɵtextInterpolate(bar_r16.Count);
247
231
  i0.ɵɵadvance();
248
- i0.ɵɵstyleProp("height", bar_r17.Percentage, "%")("opacity", 0.5 + bar_r17.Percentage / 200);
232
+ i0.ɵɵstyleProp("height", bar_r16.Percentage, "%")("opacity", 0.5 + bar_r16.Percentage / 200);
249
233
  i0.ɵɵadvance(2);
250
- i0.ɵɵtextInterpolate(bar_r17.Label);
234
+ i0.ɵɵtextInterpolate(bar_r16.Label);
251
235
  } }
252
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_30_Template(rf, ctx) { if (rf & 1) {
253
- i0.ɵɵelementStart(0, "div", 36);
236
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_30_Template(rf, ctx) { if (rf & 1) {
237
+ i0.ɵɵelementStart(0, "div", 33);
254
238
  i0.ɵɵnamespaceSVG();
255
- i0.ɵɵelementStart(1, "svg", 103);
256
- i0.ɵɵelement(2, "circle", 104)(3, "circle", 105);
257
- i0.ɵɵelementStart(4, "text", 106);
239
+ i0.ɵɵelementStart(1, "svg", 100);
240
+ i0.ɵɵelement(2, "circle", 101)(3, "circle", 102);
241
+ i0.ɵɵelementStart(4, "text", 103);
258
242
  i0.ɵɵtext(5);
259
243
  i0.ɵɵelementEnd()();
260
244
  i0.ɵɵnamespaceHTML();
261
- i0.ɵɵelementStart(6, "div")(7, "div", 107);
245
+ i0.ɵɵelementStart(6, "div")(7, "div", 104);
262
246
  i0.ɵɵtext(8);
263
247
  i0.ɵɵelementEnd();
264
- i0.ɵɵelementStart(9, "div", 108);
248
+ i0.ɵɵelementStart(9, "div", 105);
265
249
  i0.ɵɵtext(10);
266
250
  i0.ɵɵelementEnd()()();
267
251
  } if (rf & 2) {
268
- const entity_r18 = ctx.$implicit;
269
- const ctx_r2 = i0.ɵɵnextContext(3);
252
+ const entity_r17 = ctx.$implicit;
253
+ const ctx_r1 = i0.ɵɵnextContext(3);
270
254
  i0.ɵɵadvance(3);
271
- i0.ɵɵattribute("stroke", entity_r18.Color)("stroke-dasharray", entity_r18.StrokeDash);
255
+ i0.ɵɵattribute("stroke", entity_r17.Color)("stroke-dasharray", entity_r17.StrokeDash);
272
256
  i0.ɵɵadvance(2);
273
- i0.ɵɵtextInterpolate1("", entity_r18.Percentage, "%");
257
+ i0.ɵɵtextInterpolate1("", entity_r17.Percentage, "%");
274
258
  i0.ɵɵadvance(3);
275
- i0.ɵɵtextInterpolate(entity_r18.Name);
259
+ i0.ɵɵtextInterpolate(entity_r17.Name);
276
260
  i0.ɵɵadvance(2);
277
- i0.ɵɵtextInterpolate2("", ctx_r2.FormatNumber(entity_r18.Tagged), " / ", ctx_r2.FormatNumber(entity_r18.Total));
261
+ i0.ɵɵtextInterpolate2("", ctx_r1.FormatNumber(entity_r17.Tagged), " / ", ctx_r1.FormatNumber(entity_r17.Total));
278
262
  } }
279
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_31_Template(rf, ctx) { if (rf & 1) {
280
- i0.ɵɵelementStart(0, "div", 37);
263
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_31_Template(rf, ctx) { if (rf & 1) {
264
+ i0.ɵɵelementStart(0, "div", 34);
281
265
  i0.ɵɵtext(1, "No content types found");
282
266
  i0.ɵɵelementEnd();
283
267
  } }
284
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_54_Template(rf, ctx) { if (rf & 1) {
285
- i0.ɵɵelement(0, "div", 109);
268
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_54_Template(rf, ctx) { if (rf & 1) {
269
+ i0.ɵɵelement(0, "div", 106);
286
270
  } if (rf & 2) {
287
- const bin_r19 = ctx.$implicit;
288
- i0.ɵɵstyleProp("height", bin_r19.Height, "px")("background", bin_r19.Color);
289
- i0.ɵɵproperty("title", bin_r19.Title);
271
+ const bin_r18 = ctx.$implicit;
272
+ i0.ɵɵstyleProp("height", bin_r18.Height, "px")("background", bin_r18.Color);
273
+ i0.ɵɵproperty("title", bin_r18.Title);
290
274
  } }
291
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_63_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵelementStart(0, "div", 55)(1, "div", 110);
275
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_63_Template(rf, ctx) { if (rf & 1) {
276
+ i0.ɵɵelementStart(0, "div", 52)(1, "div", 107);
293
277
  i0.ɵɵtext(2);
294
278
  i0.ɵɵelementEnd();
295
- i0.ɵɵelementStart(3, "div", 111)(4, "div", 112);
279
+ i0.ɵɵelementStart(3, "div", 108)(4, "div", 109);
296
280
  i0.ɵɵtext(5);
297
281
  i0.ɵɵelementEnd()()();
298
282
  } if (rf & 2) {
299
- const source_r20 = ctx.$implicit;
283
+ const source_r19 = ctx.$implicit;
300
284
  i0.ɵɵadvance(2);
301
- i0.ɵɵtextInterpolate(source_r20.Name);
285
+ i0.ɵɵtextInterpolate(source_r19.Name);
302
286
  i0.ɵɵadvance(2);
303
- i0.ɵɵstyleProp("width", source_r20.Percentage, "%")("background", source_r20.Color);
287
+ i0.ɵɵstyleProp("width", source_r19.Percentage, "%")("background", source_r19.Color);
304
288
  i0.ɵɵadvance();
305
- i0.ɵɵtextInterpolate(source_r20.AvgTagsPerItem);
289
+ i0.ɵɵtextInterpolate(source_r19.AvgTagsPerItem);
306
290
  } }
307
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_64_Template(rf, ctx) { if (rf & 1) {
308
- i0.ɵɵelementStart(0, "div", 37);
291
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_64_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelementStart(0, "div", 34);
309
293
  i0.ɵɵtext(1, "No source data");
310
294
  i0.ɵɵelementEnd();
311
295
  } }
312
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_73_Template(rf, ctx) { if (rf & 1) {
313
- i0.ɵɵelementStart(0, "div", 113)(1, "span", 114);
296
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_73_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "div", 110)(1, "span", 111);
314
298
  i0.ɵɵtext(2);
315
299
  i0.ɵɵelementEnd()();
316
300
  } if (rf & 2) {
317
- const day_r21 = ctx.$implicit;
318
- i0.ɵɵstyleProp("height", day_r21.Percentage, "%")("background", day_r21.IsError ? "var(--mj-status-error)" : "var(--mj-status-success)");
301
+ const day_r20 = ctx.$implicit;
302
+ i0.ɵɵstyleProp("height", day_r20.Percentage, "%")("background", day_r20.IsError ? "var(--mj-status-error)" : "var(--mj-status-success)");
319
303
  i0.ɵɵadvance(2);
320
- i0.ɵɵtextInterpolate(day_r21.Label);
304
+ i0.ɵɵtextInterpolate(day_r20.Label);
321
305
  } }
322
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_89_Template(rf, ctx) { if (rf & 1) {
306
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_89_Template(rf, ctx) { if (rf & 1) {
323
307
  i0.ɵɵnamespaceSVG();
324
- i0.ɵɵelement(0, "circle", 68);
308
+ i0.ɵɵelement(0, "circle", 65);
325
309
  } if (rf & 2) {
326
- const seg_r22 = ctx.$implicit;
327
- i0.ɵɵattribute("stroke", seg_r22.Color)("stroke-dasharray", seg_r22.StrokeDash)("stroke-dashoffset", seg_r22.StrokeOffset);
310
+ const seg_r21 = ctx.$implicit;
311
+ i0.ɵɵattribute("stroke", seg_r21.Color)("stroke-dasharray", seg_r21.StrokeDash)("stroke-dashoffset", seg_r21.StrokeOffset);
328
312
  } }
329
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_For_96_Template(rf, ctx) { if (rf & 1) {
330
- i0.ɵɵelementStart(0, "div", 115);
313
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_96_Template(rf, ctx) { if (rf & 1) {
314
+ i0.ɵɵelementStart(0, "div", 112);
331
315
  i0.ɵɵtext(1);
332
316
  i0.ɵɵelementStart(2, "small");
333
317
  i0.ɵɵtext(3);
334
318
  i0.ɵɵelementEnd()();
335
319
  } if (rf & 2) {
336
- const stat_r23 = ctx.$implicit;
337
- i0.ɵɵstyleProp("background", stat_r23.BgColor)("color", stat_r23.Color);
320
+ const stat_r22 = ctx.$implicit;
321
+ i0.ɵɵstyleProp("background", stat_r22.BgColor)("color", stat_r22.Color);
338
322
  i0.ɵɵadvance();
339
- i0.ɵɵtextInterpolate1(" ", stat_r23.Count);
323
+ i0.ɵɵtextInterpolate1(" ", stat_r22.Count);
340
324
  i0.ɵɵadvance(2);
341
- i0.ɵɵtextInterpolate(stat_r23.Label);
325
+ i0.ɵɵtextInterpolate(stat_r22.Label);
342
326
  } }
343
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_7_Template(rf, ctx) { if (rf & 1) {
344
- i0.ɵɵelement(0, "mj-loading", 90);
327
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_7_Template(rf, ctx) { if (rf & 1) {
328
+ i0.ɵɵelement(0, "mj-loading", 87);
345
329
  } }
346
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_5_Template(rf, ctx) { if (rf & 1) {
330
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_5_Template(rf, ctx) { if (rf & 1) {
347
331
  i0.ɵɵelementStart(0, "th");
348
332
  i0.ɵɵtext(1);
349
333
  i0.ɵɵelementEnd();
350
334
  } if (rf & 2) {
351
- const col_r25 = ctx.$implicit;
335
+ const col_r24 = ctx.$implicit;
352
336
  i0.ɵɵadvance();
353
- i0.ɵɵtextInterpolate(col_r25);
337
+ i0.ɵɵtextInterpolate(col_r24);
354
338
  } }
355
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
356
- i0.ɵɵelement(0, "th", 96);
339
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
340
+ i0.ɵɵelement(0, "th", 93);
357
341
  } }
358
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
342
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
359
343
  i0.ɵɵelementStart(0, "td");
360
344
  i0.ɵɵtext(1);
361
345
  i0.ɵɵelementEnd();
362
346
  } if (rf & 2) {
363
- const col_r26 = ctx.$implicit;
364
- const row_r27 = i0.ɵɵnextContext().$implicit;
347
+ const col_r25 = ctx.$implicit;
348
+ const row_r26 = i0.ɵɵnextContext().$implicit;
365
349
  i0.ɵɵadvance();
366
- i0.ɵɵtextInterpolate(row_r27[col_r26]);
350
+ i0.ɵɵtextInterpolate(row_r26[col_r25]);
367
351
  } }
368
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
369
- const _r28 = i0.ɵɵgetCurrentView();
370
- i0.ɵɵelementStart(0, "button", 98);
371
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r28); const row_r27 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OpenDrillDownRecord(row_r27)); });
372
- i0.ɵɵelement(1, "i", 99);
352
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
353
+ const _r27 = i0.ɵɵgetCurrentView();
354
+ i0.ɵɵelementStart(0, "button", 95);
355
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const row_r26 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenDrillDownRecord(row_r26)); });
356
+ i0.ɵɵelement(1, "i", 96);
373
357
  i0.ɵɵelementEnd();
374
358
  } }
375
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
376
- i0.ɵɵelementStart(0, "td", 96);
377
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 97);
359
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
360
+ i0.ɵɵelementStart(0, "td", 93);
361
+ i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 94);
378
362
  i0.ɵɵelementEnd();
379
363
  } if (rf & 2) {
380
- const row_r27 = i0.ɵɵnextContext().$implicit;
364
+ const row_r26 = i0.ɵɵnextContext().$implicit;
381
365
  i0.ɵɵadvance();
382
- i0.ɵɵconditional(row_r27["_RecordID"] ? 1 : -1);
366
+ i0.ɵɵconditional(row_r26["_RecordID"] ? 1 : -1);
383
367
  } }
384
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_Template(rf, ctx) { if (rf & 1) {
368
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_Template(rf, ctx) { if (rf & 1) {
385
369
  i0.ɵɵelementStart(0, "tr");
386
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
387
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_Conditional_3_Template, 2, 1, "td", 96);
370
+ i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
371
+ i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_Conditional_3_Template, 2, 1, "td", 93);
388
372
  i0.ɵɵelementEnd();
389
373
  } if (rf & 2) {
390
- const ctx_r2 = i0.ɵɵnextContext(5);
374
+ const ctx_r1 = i0.ɵɵnextContext(5);
391
375
  i0.ɵɵadvance();
392
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
376
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
393
377
  i0.ɵɵadvance(2);
394
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
378
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
395
379
  } }
396
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_Template(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵelementStart(0, "div", 91)(1, "table", 95)(2, "thead")(3, "tr");
398
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
399
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_Conditional_6_Template, 1, 0, "th", 96);
380
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_Template(rf, ctx) { if (rf & 1) {
381
+ i0.ɵɵelementStart(0, "div", 88)(1, "table", 92)(2, "thead")(3, "tr");
382
+ i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
383
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_Conditional_6_Template, 1, 0, "th", 93);
400
384
  i0.ɵɵelementEnd()();
401
385
  i0.ɵɵelementStart(7, "tbody");
402
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
386
+ i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
403
387
  i0.ɵɵelementEnd()()();
404
388
  } if (rf & 2) {
405
- const ctx_r2 = i0.ɵɵnextContext(4);
389
+ const ctx_r1 = i0.ɵɵnextContext(4);
406
390
  i0.ɵɵadvance(4);
407
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
391
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
408
392
  i0.ɵɵadvance(2);
409
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
393
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
410
394
  i0.ɵɵadvance(2);
411
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
395
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
412
396
  } }
413
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_9_Template(rf, ctx) { if (rf & 1) {
414
- i0.ɵɵelementStart(0, "div", 92);
397
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_9_Template(rf, ctx) { if (rf & 1) {
398
+ i0.ɵɵelementStart(0, "div", 89);
415
399
  i0.ɵɵtext(1, "No data available");
416
400
  i0.ɵɵelementEnd();
417
401
  } }
418
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Template(rf, ctx) { if (rf & 1) {
419
- const _r24 = i0.ɵɵgetCurrentView();
420
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 83)(2, "span", 84);
421
- i0.ɵɵelement(3, "i", 85);
402
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Template(rf, ctx) { if (rf & 1) {
403
+ const _r23 = i0.ɵɵgetCurrentView();
404
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 80)(2, "span", 81);
405
+ i0.ɵɵelement(3, "i", 82);
422
406
  i0.ɵɵtext(4);
423
407
  i0.ɵɵelementEnd();
424
- i0.ɵɵelementStart(5, "button", 88);
425
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
426
- i0.ɵɵelement(6, "i", 89);
408
+ i0.ɵɵelementStart(5, "button", 85);
409
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDrillDown()); });
410
+ i0.ɵɵelement(6, "i", 86);
427
411
  i0.ɵɵelementEnd()();
428
- i0.ɵɵconditionalCreate(7, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_7_Template, 1, 0, "mj-loading", 90)(8, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_8_Template, 10, 1, "div", 91)(9, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Conditional_9_Template, 2, 0, "div", 92);
412
+ i0.ɵɵconditionalCreate(7, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_7_Template, 1, 0, "mj-loading", 87)(8, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_8_Template, 10, 1, "div", 88)(9, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_9_Template, 2, 0, "div", 89);
429
413
  i0.ɵɵelementEnd();
430
414
  } if (rf & 2) {
431
- const ctx_r2 = i0.ɵɵnextContext(3);
415
+ const ctx_r1 = i0.ɵɵnextContext(3);
432
416
  i0.ɵɵadvance(4);
433
- i0.ɵɵtextInterpolate1(" ", ctx_r2.DrillDownTarget, " Detail");
417
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.DrillDownTarget, " Detail");
434
418
  i0.ɵɵadvance(3);
435
- i0.ɵɵconditional(ctx_r2.IsDrillDownLoading ? 7 : ctx_r2.DrillDownData.length > 0 ? 8 : 9);
419
+ i0.ɵɵconditional(ctx_r1.IsDrillDownLoading ? 7 : ctx_r1.DrillDownData.length > 0 ? 8 : 9);
436
420
  } }
437
- function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
438
- const _r5 = i0.ɵɵgetCurrentView();
439
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
440
- i0.ɵɵelement(2, "i", 20);
421
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
422
+ const _r4 = i0.ɵɵgetCurrentView();
423
+ i0.ɵɵelementStart(0, "section", 14)(1, "div", 15);
424
+ i0.ɵɵelement(2, "i", 16);
441
425
  i0.ɵɵelementStart(3, "h1");
442
426
  i0.ɵɵtext(4, "Overview");
443
427
  i0.ɵɵelementEnd()();
444
- i0.ɵɵelementStart(5, "div", 21)(6, "div", 22);
445
- i0.ɵɵrepeaterCreate(7, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_8_Template, 2, 3, "button", 23, _forTrack2);
428
+ i0.ɵɵelementStart(5, "div", 17)(6, "div", 18);
429
+ i0.ɵɵrepeaterCreate(7, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_8_Template, 2, 3, "button", 19, _forTrack1);
446
430
  i0.ɵɵelementEnd();
447
- i0.ɵɵelementStart(9, "select", 24);
448
- i0.ɵɵlistener("ngModelChange", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetEntityFilter($event)); });
449
- i0.ɵɵrepeaterCreate(10, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_11_Template, 2, 2, "option", 25, i0.ɵɵrepeaterTrackByIdentity);
431
+ i0.ɵɵelementStart(9, "select", 20);
432
+ i0.ɵɵlistener("ngModelChange", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetEntityFilter($event)); });
433
+ i0.ɵɵrepeaterCreate(10, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_11_Template, 2, 2, "option", 21, i0.ɵɵrepeaterTrackByIdentity);
450
434
  i0.ɵɵelementEnd()();
451
- i0.ɵɵelementStart(12, "div", 26);
452
- i0.ɵɵrepeaterCreate(13, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_14_Template, 13, 10, "div", 27, _forTrack2);
453
- i0.ɵɵelementEnd();
454
- i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_15_Template, 12, 2, "div", 28);
455
- i0.ɵɵelementStart(16, "div", 29)(17, "div", 30);
456
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template_div_click_17_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("tagGrowth")); });
457
- i0.ɵɵelementStart(18, "div", 31);
458
- i0.ɵɵelement(19, "i", 5);
435
+ i0.ɵɵelementStart(12, "div", 22);
436
+ i0.ɵɵrepeaterCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Template, 13, 10, "div", 23, _forTrack1);
437
+ i0.ɵɵelementEnd();
438
+ i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Template, 12, 2, "div", 24);
439
+ i0.ɵɵelementStart(16, "div", 25)(17, "div", 26);
440
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template_div_click_17_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("tagGrowth")); });
441
+ i0.ɵɵelementStart(18, "div", 27);
442
+ i0.ɵɵelement(19, "i", 28);
459
443
  i0.ɵɵtext(20, " Tag Growth");
460
444
  i0.ɵɵelementEnd();
461
- i0.ɵɵelementStart(21, "div", 32);
462
- i0.ɵɵrepeaterCreate(22, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_23_Template, 6, 6, "div", 33, _forTrack2);
445
+ i0.ɵɵelementStart(21, "div", 29);
446
+ i0.ɵɵrepeaterCreate(22, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_23_Template, 6, 6, "div", 30, _forTrack1);
463
447
  i0.ɵɵelementEnd()();
464
- i0.ɵɵelementStart(24, "div", 30);
465
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template_div_click_24_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("contentCoverage")); });
466
- i0.ɵɵelementStart(25, "div", 31);
467
- i0.ɵɵelement(26, "i", 34);
448
+ i0.ɵɵelementStart(24, "div", 26);
449
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template_div_click_24_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("contentCoverage")); });
450
+ i0.ɵɵelementStart(25, "div", 27);
451
+ i0.ɵɵelement(26, "i", 31);
468
452
  i0.ɵɵtext(27, " Content Coverage");
469
453
  i0.ɵɵelementEnd();
470
- i0.ɵɵelementStart(28, "div", 35);
471
- i0.ɵɵrepeaterCreate(29, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_30_Template, 11, 6, "div", 36, _forTrack1);
472
- i0.ɵɵconditionalCreate(31, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_31_Template, 2, 0, "div", 37);
454
+ i0.ɵɵelementStart(28, "div", 32);
455
+ i0.ɵɵrepeaterCreate(29, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_30_Template, 11, 6, "div", 33, _forTrack0);
456
+ i0.ɵɵconditionalCreate(31, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_31_Template, 2, 0, "div", 34);
473
457
  i0.ɵɵelementEnd()();
474
- i0.ɵɵelementStart(32, "div", 30);
475
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template_div_click_32_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("qualityScore")); });
476
- i0.ɵɵelementStart(33, "div", 31);
477
- i0.ɵɵelement(34, "i", 38);
458
+ i0.ɵɵelementStart(32, "div", 26);
459
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template_div_click_32_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("qualityScore")); });
460
+ i0.ɵɵelementStart(33, "div", 27);
461
+ i0.ɵɵelement(34, "i", 35);
478
462
  i0.ɵɵtext(35, " Quality Score");
479
463
  i0.ɵɵelementEnd();
480
- i0.ɵɵelementStart(36, "div", 39);
464
+ i0.ɵɵelementStart(36, "div", 36);
481
465
  i0.ɵɵnamespaceSVG();
482
- i0.ɵɵelementStart(37, "svg", 40);
483
- i0.ɵɵelement(38, "path", 41)(39, "path", 42)(40, "path", 43)(41, "path", 44);
484
- i0.ɵɵelementStart(42, "text", 45);
466
+ i0.ɵɵelementStart(37, "svg", 37);
467
+ i0.ɵɵelement(38, "path", 38)(39, "path", 39)(40, "path", 40)(41, "path", 41);
468
+ i0.ɵɵelementStart(42, "text", 42);
485
469
  i0.ɵɵtext(43);
486
470
  i0.ɵɵelementEnd();
487
- i0.ɵɵelementStart(44, "text", 46);
471
+ i0.ɵɵelementStart(44, "text", 43);
488
472
  i0.ɵɵtext(45, "out of 100");
489
473
  i0.ɵɵelementEnd();
490
- i0.ɵɵelementStart(46, "text", 47);
474
+ i0.ɵɵelementStart(46, "text", 44);
491
475
  i0.ɵɵtext(47, "0");
492
476
  i0.ɵɵelementEnd();
493
- i0.ɵɵelementStart(48, "text", 48);
477
+ i0.ɵɵelementStart(48, "text", 45);
494
478
  i0.ɵɵtext(49, "50");
495
479
  i0.ɵɵelementEnd();
496
- i0.ɵɵelementStart(50, "text", 49);
480
+ i0.ɵɵelementStart(50, "text", 46);
497
481
  i0.ɵɵtext(51, "100");
498
482
  i0.ɵɵelementEnd()()();
499
483
  i0.ɵɵnamespaceHTML();
500
- i0.ɵɵelementStart(52, "div", 50);
501
- i0.ɵɵrepeaterCreate(53, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_54_Template, 1, 5, "div", 51, i0.ɵɵcomponentInstance().TrackByIndex, true);
484
+ i0.ɵɵelementStart(52, "div", 47);
485
+ i0.ɵɵrepeaterCreate(53, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_54_Template, 1, 5, "div", 48, i0.ɵɵcomponentInstance().TrackByIndex, true);
502
486
  i0.ɵɵelementEnd();
503
- i0.ɵɵelementStart(55, "div", 52);
487
+ i0.ɵɵelementStart(55, "div", 49);
504
488
  i0.ɵɵtext(56, "Confidence Distribution");
505
489
  i0.ɵɵelementEnd()();
506
- i0.ɵɵelementStart(57, "div", 30);
507
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template_div_click_57_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("sourcePerformance")); });
508
- i0.ɵɵelementStart(58, "div", 31);
509
- i0.ɵɵelement(59, "i", 53);
490
+ i0.ɵɵelementStart(57, "div", 26);
491
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template_div_click_57_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("sourcePerformance")); });
492
+ i0.ɵɵelementStart(58, "div", 27);
493
+ i0.ɵɵelement(59, "i", 50);
510
494
  i0.ɵɵtext(60, " Source Performance");
511
495
  i0.ɵɵelementEnd();
512
- i0.ɵɵelementStart(61, "div", 54);
513
- i0.ɵɵrepeaterCreate(62, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_63_Template, 6, 6, "div", 55, _forTrack1);
514
- i0.ɵɵconditionalCreate(64, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_64_Template, 2, 0, "div", 37);
496
+ i0.ɵɵelementStart(61, "div", 51);
497
+ i0.ɵɵrepeaterCreate(62, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_63_Template, 6, 6, "div", 52, _forTrack0);
498
+ i0.ɵɵconditionalCreate(64, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_64_Template, 2, 0, "div", 34);
515
499
  i0.ɵɵelementEnd();
516
- i0.ɵɵelementStart(65, "div", 56);
500
+ i0.ɵɵelementStart(65, "div", 53);
517
501
  i0.ɵɵtext(66, "Average tags per item");
518
502
  i0.ɵɵelementEnd()();
519
- i0.ɵɵelementStart(67, "div", 30);
520
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template_div_click_67_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("dailyThroughput")); });
521
- i0.ɵɵelementStart(68, "div", 31);
522
- i0.ɵɵelement(69, "i", 57);
503
+ i0.ɵɵelementStart(67, "div", 26);
504
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template_div_click_67_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("dailyThroughput")); });
505
+ i0.ɵɵelementStart(68, "div", 27);
506
+ i0.ɵɵelement(69, "i", 54);
523
507
  i0.ɵɵtext(70, " Daily Throughput");
524
508
  i0.ɵɵelementEnd();
525
- i0.ɵɵelementStart(71, "div", 58);
526
- i0.ɵɵrepeaterCreate(72, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_73_Template, 3, 5, "div", 59, _forTrack2);
509
+ i0.ɵɵelementStart(71, "div", 55);
510
+ i0.ɵɵrepeaterCreate(72, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_73_Template, 3, 5, "div", 56, _forTrack1);
527
511
  i0.ɵɵelementEnd();
528
- i0.ɵɵelementStart(74, "div", 60)(75, "div", 61);
529
- i0.ɵɵelement(76, "div", 62);
512
+ i0.ɵɵelementStart(74, "div", 57)(75, "div", 58);
513
+ i0.ɵɵelement(76, "div", 59);
530
514
  i0.ɵɵtext(77, " Success");
531
515
  i0.ɵɵelementEnd();
532
- i0.ɵɵelementStart(78, "div", 61);
533
- i0.ɵɵelement(79, "div", 63);
516
+ i0.ɵɵelementStart(78, "div", 58);
517
+ i0.ɵɵelement(79, "div", 60);
534
518
  i0.ɵɵtext(80, " Failures");
535
519
  i0.ɵɵelementEnd()()();
536
- i0.ɵɵelementStart(81, "div", 30);
537
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_22_Template_div_click_81_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("taxonomyHealth")); });
538
- i0.ɵɵelementStart(82, "div", 31);
539
- i0.ɵɵelement(83, "i", 64);
520
+ i0.ɵɵelementStart(81, "div", 26);
521
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_12_Template_div_click_81_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("taxonomyHealth")); });
522
+ i0.ɵɵelementStart(82, "div", 27);
523
+ i0.ɵɵelement(83, "i", 61);
540
524
  i0.ɵɵtext(84, " Taxonomy Health");
541
525
  i0.ɵɵelementEnd();
542
- i0.ɵɵelementStart(85, "div", 65);
526
+ i0.ɵɵelementStart(85, "div", 62);
543
527
  i0.ɵɵnamespaceSVG();
544
- i0.ɵɵelementStart(86, "svg", 66);
545
- i0.ɵɵelement(87, "circle", 67);
546
- i0.ɵɵrepeaterCreate(88, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_89_Template, 1, 3, ":svg:circle", 68, i0.ɵɵcomponentInstance().TrackByIndex, true);
547
- i0.ɵɵelementStart(90, "text", 69);
528
+ i0.ɵɵelementStart(86, "svg", 63);
529
+ i0.ɵɵelement(87, "circle", 64);
530
+ i0.ɵɵrepeaterCreate(88, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_89_Template, 1, 3, ":svg:circle", 65, i0.ɵɵcomponentInstance().TrackByIndex, true);
531
+ i0.ɵɵelementStart(90, "text", 66);
548
532
  i0.ɵɵtext(91);
549
533
  i0.ɵɵelementEnd();
550
- i0.ɵɵelementStart(92, "text", 70);
534
+ i0.ɵɵelementStart(92, "text", 67);
551
535
  i0.ɵɵtext(93, "total tags");
552
536
  i0.ɵɵelementEnd()()();
553
537
  i0.ɵɵnamespaceHTML();
554
- i0.ɵɵelementStart(94, "div", 71);
555
- i0.ɵɵrepeaterCreate(95, AnalyticsResourceComponent_Conditional_1_Conditional_22_For_96_Template, 4, 6, "div", 72, _forTrack2);
538
+ i0.ɵɵelementStart(94, "div", 68);
539
+ i0.ɵɵrepeaterCreate(95, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_96_Template, 4, 6, "div", 69, _forTrack1);
556
540
  i0.ɵɵelementEnd()()();
557
- i0.ɵɵconditionalCreate(97, AnalyticsResourceComponent_Conditional_1_Conditional_22_Conditional_97_Template, 10, 2, "div", 28);
541
+ i0.ɵɵconditionalCreate(97, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Template, 10, 2, "div", 24);
558
542
  i0.ɵɵelementEnd();
559
543
  } if (rf & 2) {
560
- const ctx_r2 = i0.ɵɵnextContext(2);
544
+ const ctx_r1 = i0.ɵɵnextContext(2);
561
545
  i0.ɵɵadvance(7);
562
- i0.ɵɵrepeater(ctx_r2.DateRanges);
546
+ i0.ɵɵrepeater(ctx_r1.DateRanges);
563
547
  i0.ɵɵadvance(2);
564
- i0.ɵɵproperty("ngModel", ctx_r2.EntityFilter);
548
+ i0.ɵɵproperty("ngModel", ctx_r1.EntityFilter);
565
549
  i0.ɵɵadvance();
566
- i0.ɵɵrepeater(ctx_r2.EntityFilterOptions);
550
+ i0.ɵɵrepeater(ctx_r1.EntityFilterOptions);
567
551
  i0.ɵɵadvance(3);
568
- i0.ɵɵrepeater(ctx_r2.KPIs);
552
+ i0.ɵɵrepeater(ctx_r1.KPIs);
569
553
  i0.ɵɵadvance(2);
570
- i0.ɵɵconditional(ctx_r2.DrillDownTarget && ctx_r2.DrillDownTarget.startsWith("kpi-") ? 15 : -1);
554
+ i0.ɵɵconditional(ctx_r1.DrillDownTarget && ctx_r1.DrillDownTarget.startsWith("kpi-") ? 15 : -1);
571
555
  i0.ɵɵadvance(7);
572
- i0.ɵɵrepeater(ctx_r2.TagGrowthData);
556
+ i0.ɵɵrepeater(ctx_r1.TagGrowthData);
573
557
  i0.ɵɵadvance(7);
574
- i0.ɵɵrepeater(ctx_r2.CoverageData);
558
+ i0.ɵɵrepeater(ctx_r1.CoverageData);
575
559
  i0.ɵɵadvance(2);
576
- i0.ɵɵconditional(ctx_r2.CoverageData.length === 0 ? 31 : -1);
560
+ i0.ɵɵconditional(ctx_r1.CoverageData.length === 0 ? 31 : -1);
577
561
  i0.ɵɵadvance(12);
578
- i0.ɵɵtextInterpolate(ctx_r2.QualityScore);
562
+ i0.ɵɵtextInterpolate(ctx_r1.QualityScore);
579
563
  i0.ɵɵadvance(10);
580
- i0.ɵɵrepeater(ctx_r2.MiniConfidenceBins);
564
+ i0.ɵɵrepeater(ctx_r1.MiniConfidenceBins);
581
565
  i0.ɵɵadvance(9);
582
- i0.ɵɵrepeater(ctx_r2.SourcePerfData);
566
+ i0.ɵɵrepeater(ctx_r1.SourcePerfData);
583
567
  i0.ɵɵadvance(2);
584
- i0.ɵɵconditional(ctx_r2.SourcePerfData.length === 0 ? 64 : -1);
568
+ i0.ɵɵconditional(ctx_r1.SourcePerfData.length === 0 ? 64 : -1);
585
569
  i0.ɵɵadvance(8);
586
- i0.ɵɵrepeater(ctx_r2.ThroughputData);
570
+ i0.ɵɵrepeater(ctx_r1.ThroughputData);
587
571
  i0.ɵɵadvance(16);
588
- i0.ɵɵrepeater(ctx_r2.TaxonomyRingSegments);
572
+ i0.ɵɵrepeater(ctx_r1.TaxonomyRingSegments);
589
573
  i0.ɵɵadvance(3);
590
- i0.ɵɵtextInterpolate(ctx_r2.TaxonomyTotal);
574
+ i0.ɵɵtextInterpolate(ctx_r1.TaxonomyTotal);
591
575
  i0.ɵɵadvance(4);
592
- i0.ɵɵrepeater(ctx_r2.TaxonomyStats);
576
+ i0.ɵɵrepeater(ctx_r1.TaxonomyStats);
593
577
  i0.ɵɵadvance(2);
594
- i0.ɵɵconditional(ctx_r2.DrillDownTarget && !ctx_r2.DrillDownTarget.startsWith("kpi-") ? 97 : -1);
578
+ i0.ɵɵconditional(ctx_r1.DrillDownTarget && !ctx_r1.DrillDownTarget.startsWith("kpi-") ? 97 : -1);
595
579
  } }
596
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_10_Template(rf, ctx) { if (rf & 1) {
597
- const _r30 = i0.ɵɵgetCurrentView();
598
- i0.ɵɵelementStart(0, "button", 93);
599
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.ExportTabDataCSV("top-tags")); });
600
- i0.ɵɵelement(1, "i", 94);
580
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_10_Template(rf, ctx) { if (rf & 1) {
581
+ const _r29 = i0.ɵɵgetCurrentView();
582
+ i0.ɵɵelementStart(0, "button", 90);
583
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ExportTabDataCSV("top-tags")); });
584
+ i0.ɵɵelement(1, "i", 91);
601
585
  i0.ɵɵtext(2, " CSV ");
602
586
  i0.ɵɵelementEnd();
603
587
  } }
604
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_11_For_20_Template(rf, ctx) { if (rf & 1) {
605
- const _r31 = i0.ɵɵgetCurrentView();
606
- i0.ɵɵelementStart(0, "tr", 130);
607
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_11_For_20_Template_tr_click_0_listener() { const tag_r32 = i0.ɵɵrestoreView(_r31).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("tag-row:" + tag_r32.Name)); });
588
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_11_For_20_Template(rf, ctx) { if (rf & 1) {
589
+ const _r30 = i0.ɵɵgetCurrentView();
590
+ i0.ɵɵelementStart(0, "tr", 127);
591
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_11_For_20_Template_tr_click_0_listener() { const tag_r31 = i0.ɵɵrestoreView(_r30).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("tag-row:" + tag_r31.Name)); });
608
592
  i0.ɵɵelementStart(1, "td");
609
593
  i0.ɵɵtext(2);
610
594
  i0.ɵɵelementEnd();
611
595
  i0.ɵɵelementStart(3, "td")(4, "strong");
612
596
  i0.ɵɵtext(5);
613
597
  i0.ɵɵelementEnd()();
614
- i0.ɵɵelementStart(6, "td", 128);
598
+ i0.ɵɵelementStart(6, "td", 125);
615
599
  i0.ɵɵtext(7);
616
600
  i0.ɵɵelementEnd();
617
601
  i0.ɵɵelementStart(8, "td");
618
- i0.ɵɵelement(9, "span", 131);
602
+ i0.ɵɵelement(9, "span", 128);
619
603
  i0.ɵɵtext(10);
620
604
  i0.ɵɵelementEnd();
621
605
  i0.ɵɵelementStart(11, "td");
622
606
  i0.ɵɵnamespaceSVG();
623
- i0.ɵɵelementStart(12, "svg", 132);
624
- i0.ɵɵelement(13, "polyline", 133);
607
+ i0.ɵɵelementStart(12, "svg", 129);
608
+ i0.ɵɵelement(13, "polyline", 130);
625
609
  i0.ɵɵelementEnd()();
626
610
  i0.ɵɵnamespaceHTML();
627
611
  i0.ɵɵelementStart(14, "td");
628
612
  i0.ɵɵtext(15);
629
613
  i0.ɵɵelementEnd();
630
- i0.ɵɵelementStart(16, "td", 134);
614
+ i0.ɵɵelementStart(16, "td", 131);
631
615
  i0.ɵɵtext(17);
632
616
  i0.ɵɵelementEnd()();
633
617
  } if (rf & 2) {
634
- const tag_r32 = ctx.$implicit;
635
- const ctx_r2 = i0.ɵɵnextContext(4);
618
+ const tag_r31 = ctx.$implicit;
619
+ const ctx_r1 = i0.ɵɵnextContext(4);
636
620
  i0.ɵɵadvance(2);
637
- i0.ɵɵtextInterpolate(tag_r32.Rank);
621
+ i0.ɵɵtextInterpolate(tag_r31.Rank);
638
622
  i0.ɵɵadvance(3);
639
- i0.ɵɵtextInterpolate(tag_r32.Name);
623
+ i0.ɵɵtextInterpolate(tag_r31.Name);
640
624
  i0.ɵɵadvance(2);
641
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(tag_r32.UsageCount));
625
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(tag_r31.UsageCount));
642
626
  i0.ɵɵadvance(2);
643
- i0.ɵɵstyleProp("width", tag_r32.WeightBarWidth, "px")("background", tag_r32.WeightBarColor);
627
+ i0.ɵɵstyleProp("width", tag_r31.WeightBarWidth, "px")("background", tag_r31.WeightBarColor);
644
628
  i0.ɵɵadvance();
645
- i0.ɵɵtextInterpolate1(" ", tag_r32.AvgWeight, " ");
629
+ i0.ɵɵtextInterpolate1(" ", tag_r31.AvgWeight, " ");
646
630
  i0.ɵɵadvance(3);
647
- i0.ɵɵattribute("points", tag_r32.TrendPoints)("stroke", tag_r32.TrendColor);
631
+ i0.ɵɵattribute("points", tag_r31.TrendPoints)("stroke", tag_r31.TrendColor);
648
632
  i0.ɵɵadvance(2);
649
- i0.ɵɵtextInterpolate(tag_r32.TopEntity);
633
+ i0.ɵɵtextInterpolate(tag_r31.TopEntity);
650
634
  i0.ɵɵadvance(2);
651
- i0.ɵɵtextInterpolate(tag_r32.FirstSeen);
635
+ i0.ɵɵtextInterpolate(tag_r31.FirstSeen);
652
636
  } }
653
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_11_Template(rf, ctx) { if (rf & 1) {
654
- i0.ɵɵelementStart(0, "div", 120)(1, "table", 95)(2, "thead")(3, "tr")(4, "th");
637
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
638
+ i0.ɵɵelementStart(0, "div", 117)(1, "table", 92)(2, "thead")(3, "tr")(4, "th");
655
639
  i0.ɵɵtext(5, "#");
656
640
  i0.ɵɵelementEnd();
657
641
  i0.ɵɵelementStart(6, "th");
658
642
  i0.ɵɵtext(7, "Tag Name");
659
643
  i0.ɵɵelementEnd();
660
- i0.ɵɵelementStart(8, "th", 128);
644
+ i0.ɵɵelementStart(8, "th", 125);
661
645
  i0.ɵɵtext(9, "Usage Count");
662
646
  i0.ɵɵelementEnd();
663
647
  i0.ɵɵelementStart(10, "th");
@@ -673,233 +657,233 @@ function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_11_
673
657
  i0.ɵɵtext(17, "First Seen");
674
658
  i0.ɵɵelementEnd()()();
675
659
  i0.ɵɵelementStart(18, "tbody");
676
- i0.ɵɵrepeaterCreate(19, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_11_For_20_Template, 18, 12, "tr", 129, _forTrack1);
660
+ i0.ɵɵrepeaterCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_11_For_20_Template, 18, 12, "tr", 126, _forTrack0);
677
661
  i0.ɵɵelementEnd()()();
678
662
  } if (rf & 2) {
679
- const ctx_r2 = i0.ɵɵnextContext(3);
663
+ const ctx_r1 = i0.ɵɵnextContext(3);
680
664
  i0.ɵɵadvance(19);
681
- i0.ɵɵrepeater(ctx_r2.TopTags);
665
+ i0.ɵɵrepeater(ctx_r1.TopTags);
682
666
  } }
683
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_12_Template(rf, ctx) { if (rf & 1) {
684
- i0.ɵɵelementStart(0, "div", 121);
685
- i0.ɵɵelement(1, "i", 116);
667
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_12_Template(rf, ctx) { if (rf & 1) {
668
+ i0.ɵɵelementStart(0, "div", 118);
669
+ i0.ɵɵelement(1, "i", 113);
686
670
  i0.ɵɵelementStart(2, "p");
687
671
  i0.ɵɵtext(3, "No tag data available yet. Process content to generate tags.");
688
672
  i0.ɵɵelementEnd()();
689
673
  } }
690
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
691
- const _r34 = i0.ɵɵgetCurrentView();
692
- i0.ɵɵelementStart(0, "button", 93);
693
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
694
- i0.ɵɵelement(1, "i", 94);
674
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
675
+ const _r33 = i0.ɵɵgetCurrentView();
676
+ i0.ɵɵelementStart(0, "button", 90);
677
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ExportDrillDownCSV()); });
678
+ i0.ɵɵelement(1, "i", 91);
695
679
  i0.ɵɵtext(2, " CSV ");
696
680
  i0.ɵɵelementEnd();
697
681
  } }
698
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
699
- i0.ɵɵelement(0, "mj-loading", 90);
682
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
683
+ i0.ɵɵelement(0, "mj-loading", 87);
700
684
  } }
701
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
685
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
702
686
  i0.ɵɵelementStart(0, "th");
703
687
  i0.ɵɵtext(1);
704
688
  i0.ɵɵelementEnd();
705
689
  } if (rf & 2) {
706
- const col_r35 = ctx.$implicit;
690
+ const col_r34 = ctx.$implicit;
707
691
  i0.ɵɵadvance();
708
- i0.ɵɵtextInterpolate(col_r35);
692
+ i0.ɵɵtextInterpolate(col_r34);
709
693
  } }
710
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
711
- i0.ɵɵelement(0, "th", 96);
694
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
695
+ i0.ɵɵelement(0, "th", 93);
712
696
  } }
713
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
697
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
714
698
  i0.ɵɵelementStart(0, "td");
715
699
  i0.ɵɵtext(1);
716
700
  i0.ɵɵelementEnd();
717
701
  } if (rf & 2) {
718
- const col_r36 = ctx.$implicit;
719
- const row_r37 = i0.ɵɵnextContext().$implicit;
702
+ const col_r35 = ctx.$implicit;
703
+ const row_r36 = i0.ɵɵnextContext().$implicit;
720
704
  i0.ɵɵadvance();
721
- i0.ɵɵtextInterpolate(row_r37[col_r36]);
705
+ i0.ɵɵtextInterpolate(row_r36[col_r35]);
722
706
  } }
723
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
724
- const _r38 = i0.ɵɵgetCurrentView();
725
- i0.ɵɵelementStart(0, "button", 136);
726
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r38); const row_r37 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OpenDrillDownRecord(row_r37)); });
727
- i0.ɵɵelement(1, "i", 99);
707
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
708
+ const _r37 = i0.ɵɵgetCurrentView();
709
+ i0.ɵɵelementStart(0, "button", 133);
710
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r37); const row_r36 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenDrillDownRecord(row_r36)); });
711
+ i0.ɵɵelement(1, "i", 96);
728
712
  i0.ɵɵelementEnd();
729
713
  } }
730
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
731
- i0.ɵɵelementStart(0, "td", 96);
732
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 135);
714
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
715
+ i0.ɵɵelementStart(0, "td", 93);
716
+ i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 132);
733
717
  i0.ɵɵelementEnd();
734
718
  } if (rf & 2) {
735
- const row_r37 = i0.ɵɵnextContext().$implicit;
719
+ const row_r36 = i0.ɵɵnextContext().$implicit;
736
720
  i0.ɵɵadvance();
737
- i0.ɵɵconditional(row_r37["_RecordID"] ? 1 : -1);
721
+ i0.ɵɵconditional(row_r36["_RecordID"] ? 1 : -1);
738
722
  } }
739
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
723
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
740
724
  i0.ɵɵelementStart(0, "tr");
741
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
742
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 96);
725
+ i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
726
+ i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 93);
743
727
  i0.ɵɵelementEnd();
744
728
  } if (rf & 2) {
745
- const ctx_r2 = i0.ɵɵnextContext(5);
729
+ const ctx_r1 = i0.ɵɵnextContext(5);
746
730
  i0.ɵɵadvance();
747
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
731
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
748
732
  i0.ɵɵadvance(2);
749
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
733
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
750
734
  } }
751
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_Template(rf, ctx) { if (rf & 1) {
752
- i0.ɵɵelementStart(0, "div", 91)(1, "table", 95)(2, "thead")(3, "tr");
753
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
754
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_Conditional_6_Template, 1, 0, "th", 96);
735
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_Template(rf, ctx) { if (rf & 1) {
736
+ i0.ɵɵelementStart(0, "div", 88)(1, "table", 92)(2, "thead")(3, "tr");
737
+ i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
738
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_Conditional_6_Template, 1, 0, "th", 93);
755
739
  i0.ɵɵelementEnd()();
756
740
  i0.ɵɵelementStart(7, "tbody");
757
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
741
+ i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
758
742
  i0.ɵɵelementEnd()()();
759
743
  } if (rf & 2) {
760
- const ctx_r2 = i0.ɵɵnextContext(4);
744
+ const ctx_r1 = i0.ɵɵnextContext(4);
761
745
  i0.ɵɵadvance(4);
762
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
746
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
763
747
  i0.ɵɵadvance(2);
764
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
748
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
765
749
  i0.ɵɵadvance(2);
766
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
750
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
767
751
  } }
768
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
769
- i0.ɵɵelementStart(0, "div", 92);
752
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
753
+ i0.ɵɵelementStart(0, "div", 89);
770
754
  i0.ɵɵtext(1, "No items found for this tag");
771
755
  i0.ɵɵelementEnd();
772
756
  } }
773
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Template(rf, ctx) { if (rf & 1) {
774
- const _r33 = i0.ɵɵgetCurrentView();
775
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 83)(2, "span", 84);
776
- i0.ɵɵelement(3, "i", 85);
757
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Template(rf, ctx) { if (rf & 1) {
758
+ const _r32 = i0.ɵɵgetCurrentView();
759
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 80)(2, "span", 81);
760
+ i0.ɵɵelement(3, "i", 82);
777
761
  i0.ɵɵtext(4);
778
762
  i0.ɵɵelementEnd();
779
- i0.ɵɵelementStart(5, "div", 86);
780
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_6_Template, 3, 0, "button", 87);
781
- i0.ɵɵelementStart(7, "button", 88);
782
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
783
- i0.ɵɵelement(8, "i", 89);
763
+ i0.ɵɵelementStart(5, "div", 83);
764
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_6_Template, 3, 0, "button", 84);
765
+ i0.ɵɵelementStart(7, "button", 85);
766
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDrillDown()); });
767
+ i0.ɵɵelement(8, "i", 86);
784
768
  i0.ɵɵelementEnd()()();
785
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_9_Template, 1, 0, "mj-loading", 90)(10, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_10_Template, 10, 1, "div", 91)(11, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Conditional_11_Template, 2, 0, "div", 92);
769
+ i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_9_Template, 1, 0, "mj-loading", 87)(10, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_10_Template, 10, 1, "div", 88)(11, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_11_Template, 2, 0, "div", 89);
786
770
  i0.ɵɵelementEnd();
787
771
  } if (rf & 2) {
788
- const ctx_r2 = i0.ɵɵnextContext(3);
772
+ const ctx_r1 = i0.ɵɵnextContext(3);
789
773
  i0.ɵɵadvance(4);
790
- i0.ɵɵtextInterpolate1(" Content Items Tagged \"", ctx_r2.DrillDownTarget.replace("tag-row:", ""), "\"");
774
+ i0.ɵɵtextInterpolate1(" Content Items Tagged \"", ctx_r1.DrillDownTarget.replace("tag-row:", ""), "\"");
791
775
  i0.ɵɵadvance(2);
792
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
776
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
793
777
  i0.ɵɵadvance(3);
794
- i0.ɵɵconditional(ctx_r2.IsDrillDownLoading ? 9 : ctx_r2.DrillDownData.length > 0 ? 10 : 11);
778
+ i0.ɵɵconditional(ctx_r1.IsDrillDownLoading ? 9 : ctx_r1.DrillDownData.length > 0 ? 10 : 11);
795
779
  } }
796
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_For_6_For_5_Template(rf, ctx) { if (rf & 1) {
797
- i0.ɵɵelementStart(0, "div", 144);
780
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_For_6_For_5_Template(rf, ctx) { if (rf & 1) {
781
+ i0.ɵɵelementStart(0, "div", 141);
798
782
  i0.ɵɵtext(1);
799
783
  i0.ɵɵelementEnd();
800
784
  } if (rf & 2) {
801
- const seg_r39 = ctx.$implicit;
802
- i0.ɵɵstyleProp("width", seg_r39.Percentage, "%")("background", seg_r39.Color);
803
- i0.ɵɵproperty("title", seg_r39.Label + ": " + seg_r39.Percentage + "%");
785
+ const seg_r38 = ctx.$implicit;
786
+ i0.ɵɵstyleProp("width", seg_r38.Percentage, "%")("background", seg_r38.Color);
787
+ i0.ɵɵproperty("title", seg_r38.Label + ": " + seg_r38.Percentage + "%");
804
788
  i0.ɵɵadvance();
805
- i0.ɵɵtextInterpolate(seg_r39.Label);
789
+ i0.ɵɵtextInterpolate(seg_r38.Label);
806
790
  } }
807
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_For_6_Template(rf, ctx) { if (rf & 1) {
808
- i0.ɵɵelementStart(0, "div", 139)(1, "div", 141);
791
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_For_6_Template(rf, ctx) { if (rf & 1) {
792
+ i0.ɵɵelementStart(0, "div", 136)(1, "div", 138);
809
793
  i0.ɵɵtext(2);
810
794
  i0.ɵɵelementEnd();
811
- i0.ɵɵelementStart(3, "div", 142);
812
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_For_6_For_5_Template, 2, 6, "div", 143, i0.ɵɵcomponentInstance().TrackByIndex, true);
795
+ i0.ɵɵelementStart(3, "div", 139);
796
+ i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_For_6_For_5_Template, 2, 6, "div", 140, i0.ɵɵcomponentInstance().TrackByIndex, true);
813
797
  i0.ɵɵelementEnd()();
814
798
  } if (rf & 2) {
815
- const row_r40 = ctx.$implicit;
799
+ const row_r39 = ctx.$implicit;
816
800
  i0.ɵɵadvance(2);
817
- i0.ɵɵtextInterpolate(row_r40.EntityName);
801
+ i0.ɵɵtextInterpolate(row_r39.EntityName);
818
802
  i0.ɵɵadvance(2);
819
- i0.ɵɵrepeater(row_r40.Segments);
803
+ i0.ɵɵrepeater(row_r39.Segments);
820
804
  } }
821
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_For_9_Template(rf, ctx) { if (rf & 1) {
822
- i0.ɵɵelementStart(0, "div", 61);
823
- i0.ɵɵelement(1, "div", 145);
805
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_For_9_Template(rf, ctx) { if (rf & 1) {
806
+ i0.ɵɵelementStart(0, "div", 58);
807
+ i0.ɵɵelement(1, "div", 142);
824
808
  i0.ɵɵtext(2);
825
809
  i0.ɵɵelementEnd();
826
810
  } if (rf & 2) {
827
- const item_r41 = ctx.$implicit;
811
+ const item_r40 = ctx.$implicit;
828
812
  i0.ɵɵadvance();
829
- i0.ɵɵstyleProp("background", item_r41.Color);
813
+ i0.ɵɵstyleProp("background", item_r40.Color);
830
814
  i0.ɵɵadvance();
831
- i0.ɵɵtextInterpolate1(" ", item_r41.Label);
815
+ i0.ɵɵtextInterpolate1(" ", item_r40.Label);
832
816
  } }
833
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_Template(rf, ctx) { if (rf & 1) {
834
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
835
- i0.ɵɵelement(2, "i", 137);
817
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_Template(rf, ctx) { if (rf & 1) {
818
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
819
+ i0.ɵɵelement(2, "i", 134);
836
820
  i0.ɵɵtext(3, " Tag Distribution by Entity");
837
821
  i0.ɵɵelementEnd();
838
- i0.ɵɵelementStart(4, "div", 138);
839
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_For_6_Template, 6, 1, "div", 139, _forTrack3);
822
+ i0.ɵɵelementStart(4, "div", 135);
823
+ i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_For_6_Template, 6, 1, "div", 136, _forTrack2);
840
824
  i0.ɵɵelementEnd();
841
- i0.ɵɵelementStart(7, "div", 140);
842
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_For_9_Template, 3, 3, "div", 61, _forTrack2);
825
+ i0.ɵɵelementStart(7, "div", 137);
826
+ i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_For_9_Template, 3, 3, "div", 58, _forTrack1);
843
827
  i0.ɵɵelementEnd()();
844
828
  } if (rf & 2) {
845
- const ctx_r2 = i0.ɵɵnextContext(3);
829
+ const ctx_r1 = i0.ɵɵnextContext(3);
846
830
  i0.ɵɵadvance(5);
847
- i0.ɵɵrepeater(ctx_r2.EntityDistribution);
831
+ i0.ɵɵrepeater(ctx_r1.EntityDistribution);
848
832
  i0.ɵɵadvance(3);
849
- i0.ɵɵrepeater(ctx_r2.DistributionLegend);
833
+ i0.ɵɵrepeater(ctx_r1.DistributionLegend);
850
834
  } }
851
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_15_For_6_Template(rf, ctx) { if (rf & 1) {
852
- i0.ɵɵelementStart(0, "div", 148)(1, "div", 150);
835
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_15_For_6_Template(rf, ctx) { if (rf & 1) {
836
+ i0.ɵɵelementStart(0, "div", 145)(1, "div", 147);
853
837
  i0.ɵɵtext(2);
854
838
  i0.ɵɵelementEnd();
855
- i0.ɵɵelementStart(3, "div", 151);
839
+ i0.ɵɵelementStart(3, "div", 148);
856
840
  i0.ɵɵtext(4);
857
841
  i0.ɵɵelementEnd()();
858
842
  } if (rf & 2) {
859
- const bar_r42 = ctx.$implicit;
843
+ const bar_r41 = ctx.$implicit;
860
844
  i0.ɵɵadvance();
861
- i0.ɵɵstyleProp("height", bar_r42.Percentage, "%")("min-height", bar_r42.Count > 0 ? 24 : 0, "px");
845
+ i0.ɵɵstyleProp("height", bar_r41.Percentage, "%")("min-height", bar_r41.Count > 0 ? 24 : 0, "px");
862
846
  i0.ɵɵadvance();
863
- i0.ɵɵtextInterpolate(bar_r42.Count);
847
+ i0.ɵɵtextInterpolate(bar_r41.Count);
864
848
  i0.ɵɵadvance(2);
865
- i0.ɵɵtextInterpolate(bar_r42.Label);
849
+ i0.ɵɵtextInterpolate(bar_r41.Label);
866
850
  } }
867
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_15_Template(rf, ctx) { if (rf & 1) {
868
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
869
- i0.ɵɵelement(2, "i", 146);
851
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_15_Template(rf, ctx) { if (rf & 1) {
852
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
853
+ i0.ɵɵelement(2, "i", 143);
870
854
  i0.ɵɵtext(3, " Tag Depth Distribution");
871
855
  i0.ɵɵelementEnd();
872
- i0.ɵɵelementStart(4, "div", 147);
873
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_15_For_6_Template, 5, 6, "div", 148, _forTrack2);
856
+ i0.ɵɵelementStart(4, "div", 144);
857
+ i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_15_For_6_Template, 5, 6, "div", 145, _forTrack1);
874
858
  i0.ɵɵelementEnd();
875
- i0.ɵɵelementStart(7, "div", 149);
859
+ i0.ɵɵelementStart(7, "div", 146);
876
860
  i0.ɵɵtext(8, " Taxonomy hierarchy depth -- Most tags at depth 2-3 indicating a healthy mid-level structure ");
877
861
  i0.ɵɵelementEnd()();
878
862
  } if (rf & 2) {
879
- const ctx_r2 = i0.ɵɵnextContext(3);
863
+ const ctx_r1 = i0.ɵɵnextContext(3);
880
864
  i0.ɵɵadvance(5);
881
- i0.ɵɵrepeater(ctx_r2.TagDepthBars);
865
+ i0.ɵɵrepeater(ctx_r1.TagDepthBars);
882
866
  } }
883
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_22_Template(rf, ctx) { if (rf & 1) {
884
- i0.ɵɵelementStart(0, "span", 126);
885
- i0.ɵɵelement(1, "i", 152);
867
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_22_Template(rf, ctx) { if (rf & 1) {
868
+ i0.ɵɵelementStart(0, "span", 123);
869
+ i0.ɵɵelement(1, "i", 149);
886
870
  i0.ɵɵtext(2);
887
871
  i0.ɵɵelementEnd();
888
872
  } if (rf & 2) {
889
- const ctx_r2 = i0.ɵɵnextContext(3);
873
+ const ctx_r1 = i0.ɵɵnextContext(3);
890
874
  i0.ɵɵadvance(2);
891
- i0.ɵɵtextInterpolate1(" Last computed: ", ctx_r2.CoOccurrenceLastComputed, " ");
875
+ i0.ɵɵtextInterpolate1(" Last computed: ", ctx_r1.CoOccurrenceLastComputed, " ");
892
876
  } }
893
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_24_Template(rf, ctx) { if (rf & 1) {
894
- i0.ɵɵelement(0, "i", 153);
877
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_24_Template(rf, ctx) { if (rf & 1) {
878
+ i0.ɵɵelement(0, "i", 150);
895
879
  i0.ɵɵtext(1, " Computing... ");
896
880
  } }
897
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_25_Template(rf, ctx) { if (rf & 1) {
898
- i0.ɵɵelement(0, "i", 154);
881
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_25_Template(rf, ctx) { if (rf & 1) {
882
+ i0.ɵɵelement(0, "i", 151);
899
883
  i0.ɵɵtext(1, " Recompute ");
900
884
  } }
901
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_26_For_16_Template(rf, ctx) { if (rf & 1) {
902
- i0.ɵɵelementStart(0, "tr")(1, "td", 134);
885
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_26_For_16_Template(rf, ctx) { if (rf & 1) {
886
+ i0.ɵɵelementStart(0, "tr")(1, "td", 131);
903
887
  i0.ɵɵtext(2);
904
888
  i0.ɵɵelementEnd();
905
889
  i0.ɵɵelementStart(3, "td")(4, "strong");
@@ -908,29 +892,29 @@ function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_26_
908
892
  i0.ɵɵelementStart(6, "td")(7, "strong");
909
893
  i0.ɵɵtext(8);
910
894
  i0.ɵɵelementEnd()();
911
- i0.ɵɵelementStart(9, "td", 128);
895
+ i0.ɵɵelementStart(9, "td", 125);
912
896
  i0.ɵɵtext(10);
913
897
  i0.ɵɵelementEnd();
914
898
  i0.ɵɵelementStart(11, "td");
915
- i0.ɵɵelement(12, "span", 155);
899
+ i0.ɵɵelement(12, "span", 152);
916
900
  i0.ɵɵelementEnd()();
917
901
  } if (rf & 2) {
918
- const pair_r43 = ctx.$implicit;
919
- const ɵ$index_665_r44 = ctx.$index;
920
- const ctx_r2 = i0.ɵɵnextContext(4);
902
+ const pair_r42 = ctx.$implicit;
903
+ const ɵ$index_655_r43 = ctx.$index;
904
+ const ctx_r1 = i0.ɵɵnextContext(4);
921
905
  i0.ɵɵadvance(2);
922
- i0.ɵɵtextInterpolate(ɵ$index_665_r44 + 1);
906
+ i0.ɵɵtextInterpolate(ɵ$index_655_r43 + 1);
923
907
  i0.ɵɵadvance(3);
924
- i0.ɵɵtextInterpolate(pair_r43.TagAName);
908
+ i0.ɵɵtextInterpolate(pair_r42.TagAName);
925
909
  i0.ɵɵadvance(3);
926
- i0.ɵɵtextInterpolate(pair_r43.TagBName);
910
+ i0.ɵɵtextInterpolate(pair_r42.TagBName);
927
911
  i0.ɵɵadvance(2);
928
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(pair_r43.Count));
912
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(pair_r42.Count));
929
913
  i0.ɵɵadvance(2);
930
- i0.ɵɵstyleProp("width", pair_r43.BarWidth, "px");
914
+ i0.ɵɵstyleProp("width", pair_r42.BarWidth, "px");
931
915
  } }
932
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_26_Template(rf, ctx) { if (rf & 1) {
933
- i0.ɵɵelementStart(0, "div", 120)(1, "table", 95)(2, "thead")(3, "tr")(4, "th");
916
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_26_Template(rf, ctx) { if (rf & 1) {
917
+ i0.ɵɵelementStart(0, "div", 117)(1, "table", 92)(2, "thead")(3, "tr")(4, "th");
934
918
  i0.ɵɵtext(5, "#");
935
919
  i0.ɵɵelementEnd();
936
920
  i0.ɵɵelementStart(6, "th");
@@ -939,151 +923,151 @@ function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_26_
939
923
  i0.ɵɵelementStart(8, "th");
940
924
  i0.ɵɵtext(9, "Tag B");
941
925
  i0.ɵɵelementEnd();
942
- i0.ɵɵelementStart(10, "th", 128);
926
+ i0.ɵɵelementStart(10, "th", 125);
943
927
  i0.ɵɵtext(11, "Co-Occurrences");
944
928
  i0.ɵɵelementEnd();
945
929
  i0.ɵɵelementStart(12, "th");
946
930
  i0.ɵɵtext(13, "Frequency");
947
931
  i0.ɵɵelementEnd()()();
948
932
  i0.ɵɵelementStart(14, "tbody");
949
- i0.ɵɵrepeaterCreate(15, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_26_For_16_Template, 13, 6, "tr", null, _forTrack4);
933
+ i0.ɵɵrepeaterCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_26_For_16_Template, 13, 6, "tr", null, _forTrack3);
950
934
  i0.ɵɵelementEnd()()();
951
935
  } if (rf & 2) {
952
- const ctx_r2 = i0.ɵɵnextContext(3);
936
+ const ctx_r1 = i0.ɵɵnextContext(3);
953
937
  i0.ɵɵadvance(15);
954
- i0.ɵɵrepeater(ctx_r2.CoOccurrencePairs);
938
+ i0.ɵɵrepeater(ctx_r1.CoOccurrencePairs);
955
939
  } }
956
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_27_Template(rf, ctx) { if (rf & 1) {
957
- i0.ɵɵelementStart(0, "div", 121);
958
- i0.ɵɵelement(1, "i", 124);
940
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_27_Template(rf, ctx) { if (rf & 1) {
941
+ i0.ɵɵelementStart(0, "div", 118);
942
+ i0.ɵɵelement(1, "i", 121);
959
943
  i0.ɵɵelementStart(2, "p");
960
944
  i0.ɵɵtext(3, "No co-occurrence data available yet. Process content and recompute to see which tags frequently appear together.");
961
945
  i0.ɵɵelementEnd()();
962
946
  } }
963
- function AnalyticsResourceComponent_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
964
- const _r29 = i0.ɵɵgetCurrentView();
965
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
966
- i0.ɵɵelement(2, "i", 116);
947
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Template(rf, ctx) { if (rf & 1) {
948
+ const _r28 = i0.ɵɵgetCurrentView();
949
+ i0.ɵɵelementStart(0, "section", 14)(1, "div", 15);
950
+ i0.ɵɵelement(2, "i", 113);
967
951
  i0.ɵɵelementStart(3, "h1");
968
952
  i0.ɵɵtext(4, "Tags");
969
953
  i0.ɵɵelementEnd()();
970
- i0.ɵɵelementStart(5, "div", 117)(6, "div", 118)(7, "h3");
971
- i0.ɵɵelement(8, "i", 119);
954
+ i0.ɵɵelementStart(5, "div", 114)(6, "div", 115)(7, "h3");
955
+ i0.ɵɵelement(8, "i", 116);
972
956
  i0.ɵɵtext(9, " Top 20 Tags");
973
957
  i0.ɵɵelementEnd();
974
- i0.ɵɵconditionalCreate(10, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_10_Template, 3, 0, "button", 87);
958
+ i0.ɵɵconditionalCreate(10, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_10_Template, 3, 0, "button", 84);
975
959
  i0.ɵɵelementEnd();
976
- i0.ɵɵconditionalCreate(11, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_11_Template, 21, 0, "div", 120)(12, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_12_Template, 4, 0, "div", 121);
960
+ i0.ɵɵconditionalCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_11_Template, 21, 0, "div", 117)(12, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_12_Template, 4, 0, "div", 118);
977
961
  i0.ɵɵelementEnd();
978
- i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_13_Template, 12, 3, "div", 28);
979
- i0.ɵɵconditionalCreate(14, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_14_Template, 10, 0, "div", 122);
980
- i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_15_Template, 9, 0, "div", 122);
981
- i0.ɵɵelementStart(16, "div", 123)(17, "div", 118)(18, "h3");
982
- i0.ɵɵelement(19, "i", 124);
962
+ i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Template, 12, 3, "div", 24);
963
+ i0.ɵɵconditionalCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_14_Template, 10, 0, "div", 119);
964
+ i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_15_Template, 9, 0, "div", 119);
965
+ i0.ɵɵelementStart(16, "div", 120)(17, "div", 115)(18, "h3");
966
+ i0.ɵɵelement(19, "i", 121);
983
967
  i0.ɵɵtext(20, " Frequently Paired Tags");
984
968
  i0.ɵɵelementEnd();
985
- i0.ɵɵelementStart(21, "div", 125);
986
- i0.ɵɵconditionalCreate(22, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_22_Template, 3, 1, "span", 126);
987
- i0.ɵɵelementStart(23, "button", 127);
988
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_23_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.RecomputeCoOccurrence()); });
989
- i0.ɵɵconditionalCreate(24, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_24_Template, 2, 0)(25, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_25_Template, 2, 0);
969
+ i0.ɵɵelementStart(21, "div", 122);
970
+ i0.ɵɵconditionalCreate(22, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_22_Template, 3, 1, "span", 123);
971
+ i0.ɵɵelementStart(23, "button", 124);
972
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_13_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RecomputeCoOccurrence()); });
973
+ i0.ɵɵconditionalCreate(24, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_24_Template, 2, 0)(25, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_25_Template, 2, 0);
990
974
  i0.ɵɵelementEnd()()();
991
- i0.ɵɵconditionalCreate(26, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_26_Template, 17, 0, "div", 120)(27, AnalyticsResourceComponent_Conditional_1_Conditional_23_Conditional_27_Template, 4, 0, "div", 121);
975
+ i0.ɵɵconditionalCreate(26, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_26_Template, 17, 0, "div", 117)(27, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_27_Template, 4, 0, "div", 118);
992
976
  i0.ɵɵelementEnd()();
993
977
  } if (rf & 2) {
994
- const ctx_r2 = i0.ɵɵnextContext(2);
978
+ const ctx_r1 = i0.ɵɵnextContext(2);
995
979
  i0.ɵɵadvance(10);
996
- i0.ɵɵconditional(ctx_r2.TopTags.length > 0 ? 10 : -1);
980
+ i0.ɵɵconditional(ctx_r1.TopTags.length > 0 ? 10 : -1);
997
981
  i0.ɵɵadvance();
998
- i0.ɵɵconditional(ctx_r2.TopTags.length > 0 ? 11 : 12);
982
+ i0.ɵɵconditional(ctx_r1.TopTags.length > 0 ? 11 : 12);
999
983
  i0.ɵɵadvance(2);
1000
- i0.ɵɵconditional(ctx_r2.DrillDownTarget && ctx_r2.DrillDownTarget.startsWith("tag-row:") ? 13 : -1);
984
+ i0.ɵɵconditional(ctx_r1.DrillDownTarget && ctx_r1.DrillDownTarget.startsWith("tag-row:") ? 13 : -1);
1001
985
  i0.ɵɵadvance();
1002
- i0.ɵɵconditional(ctx_r2.EntityDistribution.length > 0 ? 14 : -1);
986
+ i0.ɵɵconditional(ctx_r1.EntityDistribution.length > 0 ? 14 : -1);
1003
987
  i0.ɵɵadvance();
1004
- i0.ɵɵconditional(ctx_r2.TagDepthBars.length > 0 ? 15 : -1);
988
+ i0.ɵɵconditional(ctx_r1.TagDepthBars.length > 0 ? 15 : -1);
1005
989
  i0.ɵɵadvance(7);
1006
- i0.ɵɵconditional(ctx_r2.CoOccurrenceLastComputed ? 22 : -1);
990
+ i0.ɵɵconditional(ctx_r1.CoOccurrenceLastComputed ? 22 : -1);
1007
991
  i0.ɵɵadvance();
1008
- i0.ɵɵproperty("disabled", ctx_r2.IsRecomputingCoOccurrence);
992
+ i0.ɵɵproperty("disabled", ctx_r1.IsRecomputingCoOccurrence);
1009
993
  i0.ɵɵadvance();
1010
- i0.ɵɵconditional(ctx_r2.IsRecomputingCoOccurrence ? 24 : 25);
994
+ i0.ɵɵconditional(ctx_r1.IsRecomputingCoOccurrence ? 24 : 25);
1011
995
  i0.ɵɵadvance(2);
1012
- i0.ɵɵconditional(ctx_r2.CoOccurrencePairs.length > 0 ? 26 : 27);
996
+ i0.ɵɵconditional(ctx_r1.CoOccurrencePairs.length > 0 ? 26 : 27);
1013
997
  } }
1014
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_9_For_22_Template(rf, ctx) { if (rf & 1) {
1015
- const _r45 = i0.ɵɵgetCurrentView();
1016
- i0.ɵɵelementStart(0, "tr", 130);
1017
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_9_For_22_Template_tr_click_0_listener() { const source_r46 = i0.ɵɵrestoreView(_r45).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); ctx_r2.SelectSource(source_r46.Name); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("source-row:" + source_r46.Name)); });
998
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_9_For_22_Template(rf, ctx) { if (rf & 1) {
999
+ const _r44 = i0.ɵɵgetCurrentView();
1000
+ i0.ɵɵelementStart(0, "tr", 127);
1001
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_9_For_22_Template_tr_click_0_listener() { const source_r45 = i0.ɵɵrestoreView(_r44).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.SelectSource(source_r45.Name); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("source-row:" + source_r45.Name)); });
1018
1002
  i0.ɵɵelementStart(1, "td")(2, "strong");
1019
1003
  i0.ɵɵtext(3);
1020
1004
  i0.ɵɵelementEnd()();
1021
1005
  i0.ɵɵelementStart(4, "td");
1022
- i0.ɵɵelement(5, "i", 158);
1006
+ i0.ɵɵelement(5, "i", 155);
1023
1007
  i0.ɵɵtext(6);
1024
1008
  i0.ɵɵelementEnd();
1025
- i0.ɵɵelementStart(7, "td", 128);
1009
+ i0.ɵɵelementStart(7, "td", 125);
1026
1010
  i0.ɵɵtext(8);
1027
1011
  i0.ɵɵelementEnd();
1028
- i0.ɵɵelementStart(9, "td", 128);
1012
+ i0.ɵɵelementStart(9, "td", 125);
1029
1013
  i0.ɵɵtext(10);
1030
1014
  i0.ɵɵelementEnd();
1031
- i0.ɵɵelementStart(11, "td", 128);
1015
+ i0.ɵɵelementStart(11, "td", 125);
1032
1016
  i0.ɵɵtext(12);
1033
1017
  i0.ɵɵelementEnd();
1034
- i0.ɵɵelementStart(13, "td", 128);
1018
+ i0.ɵɵelementStart(13, "td", 125);
1035
1019
  i0.ɵɵtext(14);
1036
1020
  i0.ɵɵelementEnd();
1037
- i0.ɵɵelementStart(15, "td", 134);
1021
+ i0.ɵɵelementStart(15, "td", 131);
1038
1022
  i0.ɵɵtext(16);
1039
1023
  i0.ɵɵelementEnd();
1040
- i0.ɵɵelementStart(17, "td")(18, "span", 159);
1041
- i0.ɵɵelement(19, "i", 160);
1024
+ i0.ɵɵelementStart(17, "td")(18, "span", 156);
1025
+ i0.ɵɵelement(19, "i", 157);
1042
1026
  i0.ɵɵtext(20);
1043
1027
  i0.ɵɵelementEnd()()();
1044
1028
  } if (rf & 2) {
1045
- const source_r46 = ctx.$implicit;
1046
- const ctx_r2 = i0.ɵɵnextContext(4);
1047
- i0.ɵɵclassProp("source-selected", ctx_r2.SelectedSourceName === source_r46.Name);
1029
+ const source_r45 = ctx.$implicit;
1030
+ const ctx_r1 = i0.ɵɵnextContext(4);
1031
+ i0.ɵɵclassProp("source-selected", ctx_r1.SelectedSourceName === source_r45.Name);
1048
1032
  i0.ɵɵadvance(3);
1049
- i0.ɵɵtextInterpolate(source_r46.Name);
1033
+ i0.ɵɵtextInterpolate(source_r45.Name);
1050
1034
  i0.ɵɵadvance(2);
1051
- i0.ɵɵclassMap(source_r46.TypeIcon);
1052
- i0.ɵɵstyleProp("color", source_r46.TypeColor);
1035
+ i0.ɵɵclassMap(source_r45.TypeIcon);
1036
+ i0.ɵɵstyleProp("color", source_r45.TypeColor);
1053
1037
  i0.ɵɵadvance();
1054
- i0.ɵɵtextInterpolate1(" ", source_r46.Type);
1038
+ i0.ɵɵtextInterpolate1(" ", source_r45.Type);
1055
1039
  i0.ɵɵadvance(2);
1056
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(source_r46.Items));
1040
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(source_r45.Items));
1057
1041
  i0.ɵɵadvance(2);
1058
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(source_r46.TagsGenerated));
1042
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(source_r45.TagsGenerated));
1059
1043
  i0.ɵɵadvance(2);
1060
- i0.ɵɵtextInterpolate(source_r46.AvgTagsPerItem);
1044
+ i0.ɵɵtextInterpolate(source_r45.AvgTagsPerItem);
1061
1045
  i0.ɵɵadvance(2);
1062
- i0.ɵɵtextInterpolate(source_r46.AvgWeight);
1046
+ i0.ɵɵtextInterpolate(source_r45.AvgWeight);
1063
1047
  i0.ɵɵadvance(2);
1064
- i0.ɵɵtextInterpolate(source_r46.LastRun);
1048
+ i0.ɵɵtextInterpolate(source_r45.LastRun);
1065
1049
  i0.ɵɵadvance(2);
1066
- i0.ɵɵclassMap(source_r46.StatusClass);
1050
+ i0.ɵɵclassMap(source_r45.StatusClass);
1067
1051
  i0.ɵɵadvance(2);
1068
- i0.ɵɵtextInterpolate1(" ", source_r46.Status);
1052
+ i0.ɵɵtextInterpolate1(" ", source_r45.Status);
1069
1053
  } }
1070
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1071
- i0.ɵɵelementStart(0, "div", 120)(1, "table", 95)(2, "thead")(3, "tr")(4, "th");
1054
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1055
+ i0.ɵɵelementStart(0, "div", 117)(1, "table", 92)(2, "thead")(3, "tr")(4, "th");
1072
1056
  i0.ɵɵtext(5, "Source Name");
1073
1057
  i0.ɵɵelementEnd();
1074
1058
  i0.ɵɵelementStart(6, "th");
1075
1059
  i0.ɵɵtext(7, "Type");
1076
1060
  i0.ɵɵelementEnd();
1077
- i0.ɵɵelementStart(8, "th", 128);
1061
+ i0.ɵɵelementStart(8, "th", 125);
1078
1062
  i0.ɵɵtext(9, "Items");
1079
1063
  i0.ɵɵelementEnd();
1080
- i0.ɵɵelementStart(10, "th", 128);
1064
+ i0.ɵɵelementStart(10, "th", 125);
1081
1065
  i0.ɵɵtext(11, "Tags Generated");
1082
1066
  i0.ɵɵelementEnd();
1083
- i0.ɵɵelementStart(12, "th", 128);
1067
+ i0.ɵɵelementStart(12, "th", 125);
1084
1068
  i0.ɵɵtext(13, "Avg Tags/Item");
1085
1069
  i0.ɵɵelementEnd();
1086
- i0.ɵɵelementStart(14, "th", 128);
1070
+ i0.ɵɵelementStart(14, "th", 125);
1087
1071
  i0.ɵɵtext(15, "Avg Weight");
1088
1072
  i0.ɵɵelementEnd();
1089
1073
  i0.ɵɵelementStart(16, "th");
@@ -1093,462 +1077,462 @@ function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_9_T
1093
1077
  i0.ɵɵtext(19, "Status");
1094
1078
  i0.ɵɵelementEnd()()();
1095
1079
  i0.ɵɵelementStart(20, "tbody");
1096
- i0.ɵɵrepeaterCreate(21, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_9_For_22_Template, 21, 16, "tr", 157, _forTrack1);
1080
+ i0.ɵɵrepeaterCreate(21, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_9_For_22_Template, 21, 16, "tr", 154, _forTrack0);
1097
1081
  i0.ɵɵelementEnd()()();
1098
1082
  } if (rf & 2) {
1099
- const ctx_r2 = i0.ɵɵnextContext(3);
1083
+ const ctx_r1 = i0.ɵɵnextContext(3);
1100
1084
  i0.ɵɵadvance(21);
1101
- i0.ɵɵrepeater(ctx_r2.SourceComparison);
1085
+ i0.ɵɵrepeater(ctx_r1.SourceComparison);
1102
1086
  } }
1103
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1104
- i0.ɵɵelementStart(0, "div", 121);
1105
- i0.ɵɵelement(1, "i", 156);
1087
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1088
+ i0.ɵɵelementStart(0, "div", 118);
1089
+ i0.ɵɵelement(1, "i", 153);
1106
1090
  i0.ɵɵelementStart(2, "p");
1107
1091
  i0.ɵɵtext(3, "No content sources configured yet.");
1108
1092
  i0.ɵɵelementEnd()();
1109
1093
  } }
1110
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1111
- const _r48 = i0.ɵɵgetCurrentView();
1112
- i0.ɵɵelementStart(0, "button", 93);
1113
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
1114
- i0.ɵɵelement(1, "i", 94);
1094
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1095
+ const _r47 = i0.ɵɵgetCurrentView();
1096
+ i0.ɵɵelementStart(0, "button", 90);
1097
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r47); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ExportDrillDownCSV()); });
1098
+ i0.ɵɵelement(1, "i", 91);
1115
1099
  i0.ɵɵtext(2, " CSV");
1116
1100
  i0.ɵɵelementEnd();
1117
1101
  } }
1118
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1119
- i0.ɵɵelement(0, "mj-loading", 90);
1102
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1103
+ i0.ɵɵelement(0, "mj-loading", 87);
1120
1104
  } }
1121
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
1105
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
1122
1106
  i0.ɵɵelementStart(0, "th");
1123
1107
  i0.ɵɵtext(1);
1124
1108
  i0.ɵɵelementEnd();
1125
1109
  } if (rf & 2) {
1126
- const col_r49 = ctx.$implicit;
1110
+ const col_r48 = ctx.$implicit;
1127
1111
  i0.ɵɵadvance();
1128
- i0.ɵɵtextInterpolate(col_r49);
1112
+ i0.ɵɵtextInterpolate(col_r48);
1129
1113
  } }
1130
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1131
- i0.ɵɵelement(0, "th", 96);
1114
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1115
+ i0.ɵɵelement(0, "th", 93);
1132
1116
  } }
1133
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
1117
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
1134
1118
  i0.ɵɵelementStart(0, "td");
1135
1119
  i0.ɵɵtext(1);
1136
1120
  i0.ɵɵelementEnd();
1137
1121
  } if (rf & 2) {
1138
- const col_r50 = ctx.$implicit;
1139
- const row_r51 = i0.ɵɵnextContext().$implicit;
1122
+ const col_r49 = ctx.$implicit;
1123
+ const row_r50 = i0.ɵɵnextContext().$implicit;
1140
1124
  i0.ɵɵadvance();
1141
- i0.ɵɵtextInterpolate(row_r51[col_r50]);
1125
+ i0.ɵɵtextInterpolate(row_r50[col_r49]);
1142
1126
  } }
1143
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1144
- const _r52 = i0.ɵɵgetCurrentView();
1145
- i0.ɵɵelementStart(0, "button", 136);
1146
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r52); const row_r51 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OpenDrillDownRecord(row_r51)); });
1147
- i0.ɵɵelement(1, "i", 99);
1127
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1128
+ const _r51 = i0.ɵɵgetCurrentView();
1129
+ i0.ɵɵelementStart(0, "button", 133);
1130
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r51); const row_r50 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenDrillDownRecord(row_r50)); });
1131
+ i0.ɵɵelement(1, "i", 96);
1148
1132
  i0.ɵɵelementEnd();
1149
1133
  } }
1150
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1151
- i0.ɵɵelementStart(0, "td", 96);
1152
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 135);
1134
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1135
+ i0.ɵɵelementStart(0, "td", 93);
1136
+ i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 132);
1153
1137
  i0.ɵɵelementEnd();
1154
1138
  } if (rf & 2) {
1155
- const row_r51 = i0.ɵɵnextContext().$implicit;
1139
+ const row_r50 = i0.ɵɵnextContext().$implicit;
1156
1140
  i0.ɵɵadvance();
1157
- i0.ɵɵconditional(row_r51["_RecordID"] ? 1 : -1);
1141
+ i0.ɵɵconditional(row_r50["_RecordID"] ? 1 : -1);
1158
1142
  } }
1159
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1143
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1160
1144
  i0.ɵɵelementStart(0, "tr");
1161
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1162
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 96);
1145
+ i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1146
+ i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 93);
1163
1147
  i0.ɵɵelementEnd();
1164
1148
  } if (rf & 2) {
1165
- const ctx_r2 = i0.ɵɵnextContext(5);
1149
+ const ctx_r1 = i0.ɵɵnextContext(5);
1166
1150
  i0.ɵɵadvance();
1167
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1151
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1168
1152
  i0.ɵɵadvance(2);
1169
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
1153
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
1170
1154
  } }
1171
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1172
- i0.ɵɵelementStart(0, "div", 91)(1, "table", 95)(2, "thead")(3, "tr");
1173
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1174
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_Conditional_6_Template, 1, 0, "th", 96);
1155
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1156
+ i0.ɵɵelementStart(0, "div", 88)(1, "table", 92)(2, "thead")(3, "tr");
1157
+ i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1158
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_Conditional_6_Template, 1, 0, "th", 93);
1175
1159
  i0.ɵɵelementEnd()();
1176
1160
  i0.ɵɵelementStart(7, "tbody");
1177
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
1161
+ i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
1178
1162
  i0.ɵɵelementEnd()()();
1179
1163
  } if (rf & 2) {
1180
- const ctx_r2 = i0.ɵɵnextContext(4);
1164
+ const ctx_r1 = i0.ɵɵnextContext(4);
1181
1165
  i0.ɵɵadvance(4);
1182
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1166
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1183
1167
  i0.ɵɵadvance(2);
1184
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
1168
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
1185
1169
  i0.ɵɵadvance(2);
1186
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
1170
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
1187
1171
  } }
1188
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1189
- i0.ɵɵelementStart(0, "div", 92);
1172
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1173
+ i0.ɵɵelementStart(0, "div", 89);
1190
1174
  i0.ɵɵtext(1, "No run data for this source");
1191
1175
  i0.ɵɵelementEnd();
1192
1176
  } }
1193
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1194
- const _r47 = i0.ɵɵgetCurrentView();
1195
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 83)(2, "span", 84);
1196
- i0.ɵɵelement(3, "i", 85);
1177
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1178
+ const _r46 = i0.ɵɵgetCurrentView();
1179
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 80)(2, "span", 81);
1180
+ i0.ɵɵelement(3, "i", 82);
1197
1181
  i0.ɵɵtext(4);
1198
1182
  i0.ɵɵelementEnd();
1199
- i0.ɵɵelementStart(5, "div", 86);
1200
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_6_Template, 3, 0, "button", 87);
1201
- i0.ɵɵelementStart(7, "button", 88);
1202
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r47); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
1203
- i0.ɵɵelement(8, "i", 89);
1183
+ i0.ɵɵelementStart(5, "div", 83);
1184
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_6_Template, 3, 0, "button", 84);
1185
+ i0.ɵɵelementStart(7, "button", 85);
1186
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDrillDown()); });
1187
+ i0.ɵɵelement(8, "i", 86);
1204
1188
  i0.ɵɵelementEnd()()();
1205
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_9_Template, 1, 0, "mj-loading", 90)(10, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_10_Template, 10, 1, "div", 91)(11, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Conditional_11_Template, 2, 0, "div", 92);
1189
+ i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_9_Template, 1, 0, "mj-loading", 87)(10, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_10_Template, 10, 1, "div", 88)(11, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_11_Template, 2, 0, "div", 89);
1206
1190
  i0.ɵɵelementEnd();
1207
1191
  } if (rf & 2) {
1208
- const ctx_r2 = i0.ɵɵnextContext(3);
1192
+ const ctx_r1 = i0.ɵɵnextContext(3);
1209
1193
  i0.ɵɵadvance(4);
1210
- i0.ɵɵtextInterpolate1(" Recent Runs: ", ctx_r2.DrillDownTarget.replace("source-row:", ""));
1194
+ i0.ɵɵtextInterpolate1(" Recent Runs: ", ctx_r1.DrillDownTarget.replace("source-row:", ""));
1211
1195
  i0.ɵɵadvance(2);
1212
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
1196
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
1213
1197
  i0.ɵɵadvance(3);
1214
- i0.ɵɵconditional(ctx_r2.IsDrillDownLoading ? 9 : ctx_r2.DrillDownData.length > 0 ? 10 : 11);
1198
+ i0.ɵɵconditional(ctx_r1.IsDrillDownLoading ? 9 : ctx_r1.DrillDownData.length > 0 ? 10 : 11);
1215
1199
  } }
1216
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_12_For_11_Template(rf, ctx) { if (rf & 1) {
1217
- i0.ɵɵelementStart(0, "div", 33)(1, "div", 170);
1200
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_12_For_11_Template(rf, ctx) { if (rf & 1) {
1201
+ i0.ɵɵelementStart(0, "div", 30)(1, "div", 167);
1218
1202
  i0.ɵɵtext(2);
1219
1203
  i0.ɵɵelementEnd();
1220
- i0.ɵɵelement(3, "div", 101);
1221
- i0.ɵɵelementStart(4, "div", 102);
1204
+ i0.ɵɵelement(3, "div", 98);
1205
+ i0.ɵɵelementStart(4, "div", 99);
1222
1206
  i0.ɵɵtext(5);
1223
1207
  i0.ɵɵelementEnd()();
1224
1208
  } if (rf & 2) {
1225
- const bar_r53 = ctx.$implicit;
1209
+ const bar_r52 = ctx.$implicit;
1226
1210
  i0.ɵɵadvance(2);
1227
- i0.ɵɵtextInterpolate(bar_r53.Value);
1211
+ i0.ɵɵtextInterpolate(bar_r52.Value);
1228
1212
  i0.ɵɵadvance();
1229
- i0.ɵɵstyleProp("height", bar_r53.Percentage, "%")("opacity", 0.5 + bar_r53.Percentage / 200);
1213
+ i0.ɵɵstyleProp("height", bar_r52.Percentage, "%")("opacity", 0.5 + bar_r52.Percentage / 200);
1230
1214
  i0.ɵɵadvance(2);
1231
- i0.ɵɵtextInterpolate(bar_r53.Label);
1215
+ i0.ɵɵtextInterpolate(bar_r52.Label);
1232
1216
  } }
1233
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_12_For_18_Template(rf, ctx) { if (rf & 1) {
1234
- i0.ɵɵelementStart(0, "div", 167)(1, "span", 171);
1217
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_12_For_18_Template(rf, ctx) { if (rf & 1) {
1218
+ i0.ɵɵelementStart(0, "div", 164)(1, "span", 168);
1235
1219
  i0.ɵɵtext(2);
1236
1220
  i0.ɵɵelementEnd();
1237
- i0.ɵɵelementStart(3, "div", 172)(4, "div", 173);
1221
+ i0.ɵɵelementStart(3, "div", 169)(4, "div", 170);
1238
1222
  i0.ɵɵtext(5);
1239
1223
  i0.ɵɵelementEnd()()();
1240
1224
  } if (rf & 2) {
1241
- const band_r54 = ctx.$implicit;
1225
+ const band_r53 = ctx.$implicit;
1242
1226
  i0.ɵɵadvance(2);
1243
- i0.ɵɵtextInterpolate(band_r54.Label);
1227
+ i0.ɵɵtextInterpolate(band_r53.Label);
1244
1228
  i0.ɵɵadvance(2);
1245
- i0.ɵɵstyleProp("width", band_r54.Percentage, "%")("background", band_r54.Color);
1229
+ i0.ɵɵstyleProp("width", band_r53.Percentage, "%")("background", band_r53.Color);
1246
1230
  i0.ɵɵadvance();
1247
- i0.ɵɵtextInterpolate1("", band_r54.Percentage, "%");
1231
+ i0.ɵɵtextInterpolate1("", band_r53.Percentage, "%");
1248
1232
  } }
1249
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1250
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
1251
- i0.ɵɵelement(2, "i", 161);
1233
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1234
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
1235
+ i0.ɵɵelement(2, "i", 158);
1252
1236
  i0.ɵɵtext(3);
1253
1237
  i0.ɵɵelementEnd();
1254
- i0.ɵɵelementStart(4, "div", 162)(5, "div", 163)(6, "div", 31);
1255
- i0.ɵɵelement(7, "i", 137);
1238
+ i0.ɵɵelementStart(4, "div", 159)(5, "div", 160)(6, "div", 27);
1239
+ i0.ɵɵelement(7, "i", 134);
1256
1240
  i0.ɵɵtext(8, " Items Processed (Last 8 Weeks)");
1257
1241
  i0.ɵɵelementEnd();
1258
- i0.ɵɵelementStart(9, "div", 164);
1259
- i0.ɵɵrepeaterCreate(10, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_12_For_11_Template, 6, 6, "div", 33, _forTrack2);
1242
+ i0.ɵɵelementStart(9, "div", 161);
1243
+ i0.ɵɵrepeaterCreate(10, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_12_For_11_Template, 6, 6, "div", 30, _forTrack1);
1260
1244
  i0.ɵɵelementEnd()();
1261
- i0.ɵɵelementStart(12, "div", 163)(13, "div", 31);
1262
- i0.ɵɵelement(14, "i", 165);
1245
+ i0.ɵɵelementStart(12, "div", 160)(13, "div", 27);
1246
+ i0.ɵɵelement(14, "i", 162);
1263
1247
  i0.ɵɵtext(15, " Tag Quality Distribution");
1264
1248
  i0.ɵɵelementEnd();
1265
- i0.ɵɵelementStart(16, "div", 166);
1266
- i0.ɵɵrepeaterCreate(17, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_12_For_18_Template, 6, 6, "div", 167, _forTrack2);
1249
+ i0.ɵɵelementStart(16, "div", 163);
1250
+ i0.ɵɵrepeaterCreate(17, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_12_For_18_Template, 6, 6, "div", 164, _forTrack1);
1267
1251
  i0.ɵɵelementEnd();
1268
- i0.ɵɵelementStart(19, "div", 168);
1269
- i0.ɵɵelement(20, "i", 169);
1252
+ i0.ɵɵelementStart(19, "div", 165);
1253
+ i0.ɵɵelement(20, "i", 166);
1270
1254
  i0.ɵɵtext(21);
1271
1255
  i0.ɵɵelementEnd()()()();
1272
1256
  } if (rf & 2) {
1273
- const ctx_r2 = i0.ɵɵnextContext(3);
1257
+ const ctx_r1 = i0.ɵɵnextContext(3);
1274
1258
  i0.ɵɵadvance(3);
1275
- i0.ɵɵtextInterpolate1(" Source Detail: ", ctx_r2.SelectedSourceName);
1259
+ i0.ɵɵtextInterpolate1(" Source Detail: ", ctx_r1.SelectedSourceName);
1276
1260
  i0.ɵɵadvance(7);
1277
- i0.ɵɵrepeater(ctx_r2.SourceWeeklyBars);
1261
+ i0.ɵɵrepeater(ctx_r1.SourceWeeklyBars);
1278
1262
  i0.ɵɵadvance(7);
1279
- i0.ɵɵrepeater(ctx_r2.SourceQualityBands);
1263
+ i0.ɵɵrepeater(ctx_r1.SourceQualityBands);
1280
1264
  i0.ɵɵadvance(4);
1281
- i0.ɵɵtextInterpolate1(" ", ctx_r2.SourceQualityNote, " ");
1265
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.SourceQualityNote, " ");
1282
1266
  } }
1283
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_13_For_6_Template(rf, ctx) { if (rf & 1) {
1284
- i0.ɵɵelementStart(0, "div", 177)(1, "div", 178);
1267
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_13_For_6_Template(rf, ctx) { if (rf & 1) {
1268
+ i0.ɵɵelementStart(0, "div", 174)(1, "div", 175);
1285
1269
  i0.ɵɵtext(2);
1286
1270
  i0.ɵɵelementEnd();
1287
- i0.ɵɵelementStart(3, "div", 179);
1271
+ i0.ɵɵelementStart(3, "div", 176);
1288
1272
  i0.ɵɵtext(4);
1289
1273
  i0.ɵɵelementEnd();
1290
- i0.ɵɵelementStart(5, "div", 180);
1274
+ i0.ɵɵelementStart(5, "div", 177);
1291
1275
  i0.ɵɵtext(6, "uptime");
1292
1276
  i0.ɵɵelementEnd()();
1293
1277
  } if (rf & 2) {
1294
- const card_r55 = ctx.$implicit;
1295
- i0.ɵɵstyleProp("border-top-color", card_r55.Color);
1278
+ const card_r54 = ctx.$implicit;
1279
+ i0.ɵɵstyleProp("border-top-color", card_r54.Color);
1296
1280
  i0.ɵɵadvance(2);
1297
- i0.ɵɵtextInterpolate(card_r55.Name);
1281
+ i0.ɵɵtextInterpolate(card_r54.Name);
1298
1282
  i0.ɵɵadvance();
1299
- i0.ɵɵstyleProp("color", card_r55.Color);
1283
+ i0.ɵɵstyleProp("color", card_r54.Color);
1300
1284
  i0.ɵɵadvance();
1301
- i0.ɵɵtextInterpolate1("", card_r55.Uptime, "%");
1285
+ i0.ɵɵtextInterpolate1("", card_r54.Uptime, "%");
1302
1286
  } }
1303
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1304
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
1305
- i0.ɵɵelement(2, "i", 174);
1287
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1288
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
1289
+ i0.ɵɵelement(2, "i", 171);
1306
1290
  i0.ɵɵtext(3, " Source Health Summary");
1307
1291
  i0.ɵɵelementEnd();
1308
- i0.ɵɵelementStart(4, "div", 175);
1309
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_13_For_6_Template, 7, 6, "div", 176, _forTrack1);
1292
+ i0.ɵɵelementStart(4, "div", 172);
1293
+ i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_13_For_6_Template, 7, 6, "div", 173, _forTrack0);
1310
1294
  i0.ɵɵelementEnd()();
1311
1295
  } if (rf & 2) {
1312
- const ctx_r2 = i0.ɵɵnextContext(3);
1296
+ const ctx_r1 = i0.ɵɵnextContext(3);
1313
1297
  i0.ɵɵadvance(4);
1314
- i0.ɵɵstyleProp("grid-template-columns", "repeat(" + ctx_r2.SourceHealthCards.length + ", 1fr)");
1298
+ i0.ɵɵstyleProp("grid-template-columns", "repeat(" + ctx_r1.SourceHealthCards.length + ", 1fr)");
1315
1299
  i0.ɵɵadvance();
1316
- i0.ɵɵrepeater(ctx_r2.SourceHealthCards);
1300
+ i0.ɵɵrepeater(ctx_r1.SourceHealthCards);
1317
1301
  } }
1318
- function AnalyticsResourceComponent_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1319
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
1320
- i0.ɵɵelement(2, "i", 156);
1302
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1303
+ i0.ɵɵelementStart(0, "section", 14)(1, "div", 15);
1304
+ i0.ɵɵelement(2, "i", 153);
1321
1305
  i0.ɵɵelementStart(3, "h1");
1322
1306
  i0.ɵɵtext(4, "Sources");
1323
1307
  i0.ɵɵelementEnd()();
1324
- i0.ɵɵelementStart(5, "div", 117)(6, "h3");
1325
- i0.ɵɵelement(7, "i", 85);
1308
+ i0.ɵɵelementStart(5, "div", 114)(6, "h3");
1309
+ i0.ɵɵelement(7, "i", 82);
1326
1310
  i0.ɵɵtext(8, " Source Comparison");
1327
1311
  i0.ɵɵelementEnd();
1328
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_9_Template, 23, 0, "div", 120)(10, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_10_Template, 4, 0, "div", 121);
1312
+ i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_9_Template, 23, 0, "div", 117)(10, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_10_Template, 4, 0, "div", 118);
1329
1313
  i0.ɵɵelementEnd();
1330
- i0.ɵɵconditionalCreate(11, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_11_Template, 12, 3, "div", 28);
1331
- i0.ɵɵconditionalCreate(12, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_12_Template, 22, 2, "div", 122);
1332
- i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_1_Conditional_24_Conditional_13_Template, 7, 2, "div", 122);
1314
+ i0.ɵɵconditionalCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Template, 12, 3, "div", 24);
1315
+ i0.ɵɵconditionalCreate(12, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_12_Template, 22, 2, "div", 119);
1316
+ i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_13_Template, 7, 2, "div", 119);
1333
1317
  i0.ɵɵelementEnd();
1334
1318
  } if (rf & 2) {
1335
- const ctx_r2 = i0.ɵɵnextContext(2);
1319
+ const ctx_r1 = i0.ɵɵnextContext(2);
1336
1320
  i0.ɵɵadvance(9);
1337
- i0.ɵɵconditional(ctx_r2.SourceComparison.length > 0 ? 9 : 10);
1321
+ i0.ɵɵconditional(ctx_r1.SourceComparison.length > 0 ? 9 : 10);
1338
1322
  i0.ɵɵadvance(2);
1339
- i0.ɵɵconditional(ctx_r2.DrillDownTarget && ctx_r2.DrillDownTarget.startsWith("source-row:") ? 11 : -1);
1323
+ i0.ɵɵconditional(ctx_r1.DrillDownTarget && ctx_r1.DrillDownTarget.startsWith("source-row:") ? 11 : -1);
1340
1324
  i0.ɵɵadvance();
1341
- i0.ɵɵconditional(ctx_r2.SelectedSourceName && ctx_r2.SourceComparison.length > 0 ? 12 : -1);
1325
+ i0.ɵɵconditional(ctx_r1.SelectedSourceName && ctx_r1.SourceComparison.length > 0 ? 12 : -1);
1342
1326
  i0.ɵɵadvance();
1343
- i0.ɵɵconditional(ctx_r2.SourceHealthCards.length > 0 ? 13 : -1);
1327
+ i0.ɵɵconditional(ctx_r1.SourceHealthCards.length > 0 ? 13 : -1);
1344
1328
  } }
1345
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_For_12_Template(rf, ctx) { if (rf & 1) {
1346
- const _r56 = i0.ɵɵgetCurrentView();
1347
- i0.ɵɵelementStart(0, "div", 196);
1348
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_25_For_12_Template_div_click_0_listener() { const $index_r57 = i0.ɵɵrestoreView(_r56).$index; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("pipeline-throughput:" + $index_r57)); });
1329
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_12_Template(rf, ctx) { if (rf & 1) {
1330
+ const _r55 = i0.ɵɵgetCurrentView();
1331
+ i0.ɵɵelementStart(0, "div", 193);
1332
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_12_Template_div_click_0_listener() { const $index_r56 = i0.ɵɵrestoreView(_r55).$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("pipeline-throughput:" + $index_r56)); });
1349
1333
  i0.ɵɵelementEnd();
1350
1334
  } if (rf & 2) {
1351
- const bar_r58 = ctx.$implicit;
1352
- i0.ɵɵstyleProp("height", bar_r58.Percentage, "%")("background", bar_r58.IsError ? "var(--mj-status-error)" : "var(--mj-brand-primary)")("opacity", bar_r58.IsError ? 0.7 : 0.6 + bar_r58.Percentage / 300);
1335
+ const bar_r57 = ctx.$implicit;
1336
+ i0.ɵɵstyleProp("height", bar_r57.Percentage, "%")("background", bar_r57.IsError ? "var(--mj-status-error)" : "var(--mj-brand-primary)")("opacity", bar_r57.IsError ? 0.7 : 0.6 + bar_r57.Percentage / 300);
1353
1337
  } }
1354
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_For_15_Template(rf, ctx) { if (rf & 1) {
1338
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_15_Template(rf, ctx) { if (rf & 1) {
1355
1339
  i0.ɵɵelementStart(0, "span");
1356
1340
  i0.ɵɵtext(1);
1357
1341
  i0.ɵɵelementEnd();
1358
1342
  } if (rf & 2) {
1359
- const label_r59 = ctx.$implicit;
1343
+ const label_r58 = ctx.$implicit;
1360
1344
  i0.ɵɵadvance();
1361
- i0.ɵɵtextInterpolate(label_r59);
1345
+ i0.ɵɵtextInterpolate(label_r58);
1362
1346
  } }
1363
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1364
- const _r61 = i0.ɵɵgetCurrentView();
1365
- i0.ɵɵelementStart(0, "button", 93);
1366
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r61); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
1367
- i0.ɵɵelement(1, "i", 94);
1347
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1348
+ const _r60 = i0.ɵɵgetCurrentView();
1349
+ i0.ɵɵelementStart(0, "button", 90);
1350
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r60); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ExportDrillDownCSV()); });
1351
+ i0.ɵɵelement(1, "i", 91);
1368
1352
  i0.ɵɵtext(2, " CSV");
1369
1353
  i0.ɵɵelementEnd();
1370
1354
  } }
1371
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1372
- i0.ɵɵelement(0, "mj-loading", 90);
1355
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1356
+ i0.ɵɵelement(0, "mj-loading", 87);
1373
1357
  } }
1374
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
1358
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
1375
1359
  i0.ɵɵelementStart(0, "th");
1376
1360
  i0.ɵɵtext(1);
1377
1361
  i0.ɵɵelementEnd();
1378
1362
  } if (rf & 2) {
1379
- const col_r62 = ctx.$implicit;
1363
+ const col_r61 = ctx.$implicit;
1380
1364
  i0.ɵɵadvance();
1381
- i0.ɵɵtextInterpolate(col_r62);
1365
+ i0.ɵɵtextInterpolate(col_r61);
1382
1366
  } }
1383
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1384
- i0.ɵɵelement(0, "th", 96);
1367
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1368
+ i0.ɵɵelement(0, "th", 93);
1385
1369
  } }
1386
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
1370
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
1387
1371
  i0.ɵɵelementStart(0, "td");
1388
1372
  i0.ɵɵtext(1);
1389
1373
  i0.ɵɵelementEnd();
1390
1374
  } if (rf & 2) {
1391
- const col_r63 = ctx.$implicit;
1392
- const row_r64 = i0.ɵɵnextContext().$implicit;
1375
+ const col_r62 = ctx.$implicit;
1376
+ const row_r63 = i0.ɵɵnextContext().$implicit;
1393
1377
  i0.ɵɵadvance();
1394
- i0.ɵɵtextInterpolate(row_r64[col_r63]);
1378
+ i0.ɵɵtextInterpolate(row_r63[col_r62]);
1395
1379
  } }
1396
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1397
- const _r65 = i0.ɵɵgetCurrentView();
1398
- i0.ɵɵelementStart(0, "button", 136);
1399
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r65); const row_r64 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OpenDrillDownRecord(row_r64)); });
1400
- i0.ɵɵelement(1, "i", 99);
1380
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1381
+ const _r64 = i0.ɵɵgetCurrentView();
1382
+ i0.ɵɵelementStart(0, "button", 133);
1383
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r64); const row_r63 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenDrillDownRecord(row_r63)); });
1384
+ i0.ɵɵelement(1, "i", 96);
1401
1385
  i0.ɵɵelementEnd();
1402
1386
  } }
1403
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1404
- i0.ɵɵelementStart(0, "td", 96);
1405
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 135);
1387
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1388
+ i0.ɵɵelementStart(0, "td", 93);
1389
+ i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 132);
1406
1390
  i0.ɵɵelementEnd();
1407
1391
  } if (rf & 2) {
1408
- const row_r64 = i0.ɵɵnextContext().$implicit;
1392
+ const row_r63 = i0.ɵɵnextContext().$implicit;
1409
1393
  i0.ɵɵadvance();
1410
- i0.ɵɵconditional(row_r64["_RecordID"] ? 1 : -1);
1394
+ i0.ɵɵconditional(row_r63["_RecordID"] ? 1 : -1);
1411
1395
  } }
1412
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1396
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1413
1397
  i0.ɵɵelementStart(0, "tr");
1414
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1415
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 96);
1398
+ i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1399
+ i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 93);
1416
1400
  i0.ɵɵelementEnd();
1417
1401
  } if (rf & 2) {
1418
- const ctx_r2 = i0.ɵɵnextContext(5);
1402
+ const ctx_r1 = i0.ɵɵnextContext(5);
1419
1403
  i0.ɵɵadvance();
1420
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1404
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1421
1405
  i0.ɵɵadvance(2);
1422
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
1406
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
1423
1407
  } }
1424
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1425
- i0.ɵɵelementStart(0, "div", 91)(1, "table", 95)(2, "thead")(3, "tr");
1426
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1427
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_Conditional_6_Template, 1, 0, "th", 96);
1408
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1409
+ i0.ɵɵelementStart(0, "div", 88)(1, "table", 92)(2, "thead")(3, "tr");
1410
+ i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1411
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_Conditional_6_Template, 1, 0, "th", 93);
1428
1412
  i0.ɵɵelementEnd()();
1429
1413
  i0.ɵɵelementStart(7, "tbody");
1430
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
1414
+ i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
1431
1415
  i0.ɵɵelementEnd()()();
1432
1416
  } if (rf & 2) {
1433
- const ctx_r2 = i0.ɵɵnextContext(4);
1417
+ const ctx_r1 = i0.ɵɵnextContext(4);
1434
1418
  i0.ɵɵadvance(4);
1435
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1419
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1436
1420
  i0.ɵɵadvance(2);
1437
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
1421
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
1438
1422
  i0.ɵɵadvance(2);
1439
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
1423
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
1440
1424
  } }
1441
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1442
- i0.ɵɵelementStart(0, "div", 92);
1425
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1426
+ i0.ɵɵelementStart(0, "div", 89);
1443
1427
  i0.ɵɵtext(1, "No runs for this day");
1444
1428
  i0.ɵɵelementEnd();
1445
1429
  } }
1446
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1447
- const _r60 = i0.ɵɵgetCurrentView();
1448
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 83)(2, "span", 84);
1449
- i0.ɵɵelement(3, "i", 85);
1430
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1431
+ const _r59 = i0.ɵɵgetCurrentView();
1432
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 80)(2, "span", 81);
1433
+ i0.ɵɵelement(3, "i", 82);
1450
1434
  i0.ɵɵtext(4, " Runs for Selected Day");
1451
1435
  i0.ɵɵelementEnd();
1452
- i0.ɵɵelementStart(5, "div", 86);
1453
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_6_Template, 3, 0, "button", 87);
1454
- i0.ɵɵelementStart(7, "button", 88);
1455
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r60); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
1456
- i0.ɵɵelement(8, "i", 89);
1436
+ i0.ɵɵelementStart(5, "div", 83);
1437
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_6_Template, 3, 0, "button", 84);
1438
+ i0.ɵɵelementStart(7, "button", 85);
1439
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r59); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDrillDown()); });
1440
+ i0.ɵɵelement(8, "i", 86);
1457
1441
  i0.ɵɵelementEnd()()();
1458
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_9_Template, 1, 0, "mj-loading", 90)(10, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_10_Template, 10, 1, "div", 91)(11, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Conditional_11_Template, 2, 0, "div", 92);
1442
+ i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_9_Template, 1, 0, "mj-loading", 87)(10, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_10_Template, 10, 1, "div", 88)(11, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_11_Template, 2, 0, "div", 89);
1459
1443
  i0.ɵɵelementEnd();
1460
1444
  } if (rf & 2) {
1461
- const ctx_r2 = i0.ɵɵnextContext(3);
1445
+ const ctx_r1 = i0.ɵɵnextContext(3);
1462
1446
  i0.ɵɵadvance(6);
1463
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
1447
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
1464
1448
  i0.ɵɵadvance(3);
1465
- i0.ɵɵconditional(ctx_r2.IsDrillDownLoading ? 9 : ctx_r2.DrillDownData.length > 0 ? 10 : 11);
1449
+ i0.ɵɵconditional(ctx_r1.IsDrillDownLoading ? 9 : ctx_r1.DrillDownData.length > 0 ? 10 : 11);
1466
1450
  } }
1467
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_For_24_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1451
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_24_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1468
1452
  i0.ɵɵtext(0);
1469
1453
  } if (rf & 2) {
1470
- const stage_r66 = i0.ɵɵnextContext().$implicit;
1471
- i0.ɵɵtextInterpolate1(" ", stage_r66.Time, "s ");
1454
+ const stage_r65 = i0.ɵɵnextContext().$implicit;
1455
+ i0.ɵɵtextInterpolate1(" ", stage_r65.Time, "s ");
1472
1456
  } }
1473
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_For_24_Template(rf, ctx) { if (rf & 1) {
1474
- i0.ɵɵelementStart(0, "div", 187)(1, "div", 197);
1457
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_24_Template(rf, ctx) { if (rf & 1) {
1458
+ i0.ɵɵelementStart(0, "div", 184)(1, "div", 194);
1475
1459
  i0.ɵɵtext(2);
1476
1460
  i0.ɵɵelementEnd();
1477
- i0.ɵɵelementStart(3, "div", 198)(4, "div", 199);
1478
- i0.ɵɵconditionalCreate(5, AnalyticsResourceComponent_Conditional_1_Conditional_25_For_24_Conditional_5_Template, 1, 1);
1461
+ i0.ɵɵelementStart(3, "div", 195)(4, "div", 196);
1462
+ i0.ɵɵconditionalCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_24_Conditional_5_Template, 1, 1);
1479
1463
  i0.ɵɵelementEnd()();
1480
- i0.ɵɵelementStart(6, "div", 200);
1464
+ i0.ɵɵelementStart(6, "div", 197);
1481
1465
  i0.ɵɵtext(7);
1482
1466
  i0.ɵɵelementEnd()();
1483
1467
  } if (rf & 2) {
1484
- const stage_r66 = ctx.$implicit;
1468
+ const stage_r65 = ctx.$implicit;
1485
1469
  i0.ɵɵadvance(2);
1486
- i0.ɵɵtextInterpolate(stage_r66.Name);
1470
+ i0.ɵɵtextInterpolate(stage_r65.Name);
1487
1471
  i0.ɵɵadvance(2);
1488
- i0.ɵɵstyleProp("width", stage_r66.Percentage, "%")("background", stage_r66.Color);
1472
+ i0.ɵɵstyleProp("width", stage_r65.Percentage, "%")("background", stage_r65.Color);
1489
1473
  i0.ɵɵadvance();
1490
- i0.ɵɵconditional(stage_r66.Percentage > 15 ? 5 : -1);
1474
+ i0.ɵɵconditional(stage_r65.Percentage > 15 ? 5 : -1);
1491
1475
  i0.ɵɵadvance(2);
1492
- i0.ɵɵtextInterpolate1("", stage_r66.Time, "s");
1476
+ i0.ɵɵtextInterpolate1("", stage_r65.Time, "s");
1493
1477
  } }
1494
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1495
- i0.ɵɵelementStart(0, "span", 189);
1496
- i0.ɵɵelement(1, "i", 201);
1478
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1479
+ i0.ɵɵelementStart(0, "span", 186);
1480
+ i0.ɵɵelement(1, "i", 198);
1497
1481
  i0.ɵɵtext(2);
1498
1482
  i0.ɵɵelementEnd();
1499
1483
  } if (rf & 2) {
1500
- const ctx_r2 = i0.ɵɵnextContext(3);
1484
+ const ctx_r1 = i0.ɵɵnextContext(3);
1501
1485
  i0.ɵɵadvance(2);
1502
- i0.ɵɵtextInterpolate2(" ", ctx_r2.BottleneckStage, " stage is the bottleneck (", ctx_r2.BottleneckPercent, "% of total time) ");
1486
+ i0.ɵɵtextInterpolate2(" ", ctx_r1.BottleneckStage, " stage is the bottleneck (", ctx_r1.BottleneckPercent, "% of total time) ");
1503
1487
  } }
1504
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_52_For_22_Template(rf, ctx) { if (rf & 1) {
1505
- i0.ɵɵelementStart(0, "tr")(1, "td", 203);
1488
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_52_For_22_Template(rf, ctx) { if (rf & 1) {
1489
+ i0.ɵɵelementStart(0, "tr")(1, "td", 200);
1506
1490
  i0.ɵɵtext(2);
1507
1491
  i0.ɵɵelementEnd();
1508
1492
  i0.ɵɵelementStart(3, "td");
1509
1493
  i0.ɵɵtext(4);
1510
1494
  i0.ɵɵelementEnd();
1511
- i0.ɵɵelementStart(5, "td", 134);
1495
+ i0.ɵɵelementStart(5, "td", 131);
1512
1496
  i0.ɵɵtext(6);
1513
1497
  i0.ɵɵelementEnd();
1514
- i0.ɵɵelementStart(7, "td")(8, "div", 204);
1515
- i0.ɵɵelement(9, "div", 205);
1498
+ i0.ɵɵelementStart(7, "td")(8, "div", 201);
1499
+ i0.ɵɵelement(9, "div", 202);
1516
1500
  i0.ɵɵelementEnd();
1517
- i0.ɵɵelementStart(10, "span", 206);
1501
+ i0.ɵɵelementStart(10, "span", 203);
1518
1502
  i0.ɵɵtext(11);
1519
1503
  i0.ɵɵelementEnd()();
1520
- i0.ɵɵelementStart(12, "td")(13, "span", 159);
1504
+ i0.ɵɵelementStart(12, "td")(13, "span", 156);
1521
1505
  i0.ɵɵtext(14);
1522
1506
  i0.ɵɵelementEnd()();
1523
- i0.ɵɵelementStart(15, "td", 128);
1507
+ i0.ɵɵelementStart(15, "td", 125);
1524
1508
  i0.ɵɵtext(16);
1525
1509
  i0.ɵɵelementEnd()();
1526
1510
  } if (rf & 2) {
1527
- const run_r67 = ctx.$implicit;
1528
- const ctx_r2 = i0.ɵɵnextContext(4);
1511
+ const run_r66 = ctx.$implicit;
1512
+ const ctx_r1 = i0.ɵɵnextContext(4);
1529
1513
  i0.ɵɵadvance(2);
1530
- i0.ɵɵtextInterpolate(run_r67.RunID);
1514
+ i0.ɵɵtextInterpolate(run_r66.RunID);
1531
1515
  i0.ɵɵadvance(2);
1532
- i0.ɵɵtextInterpolate(run_r67.Source);
1516
+ i0.ɵɵtextInterpolate(run_r66.Source);
1533
1517
  i0.ɵɵadvance(2);
1534
- i0.ɵɵtextInterpolate(run_r67.Started);
1518
+ i0.ɵɵtextInterpolate(run_r66.Started);
1535
1519
  i0.ɵɵadvance(3);
1536
- i0.ɵɵstyleProp("width", run_r67.Progress, "%");
1520
+ i0.ɵɵstyleProp("width", run_r66.Progress, "%");
1537
1521
  i0.ɵɵadvance(2);
1538
- i0.ɵɵtextInterpolate1("", run_r67.Progress, "%");
1522
+ i0.ɵɵtextInterpolate1("", run_r66.Progress, "%");
1539
1523
  i0.ɵɵadvance(2);
1540
- i0.ɵɵclassMap(run_r67.StageClass);
1524
+ i0.ɵɵclassMap(run_r66.StageClass);
1541
1525
  i0.ɵɵadvance();
1542
- i0.ɵɵtextInterpolate(run_r67.Stage);
1526
+ i0.ɵɵtextInterpolate(run_r66.Stage);
1543
1527
  i0.ɵɵadvance(2);
1544
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(run_r67.Items));
1528
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(run_r66.Items));
1545
1529
  } }
1546
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_52_Template(rf, ctx) { if (rf & 1) {
1547
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
1548
- i0.ɵɵelement(2, "i", 202);
1530
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_52_Template(rf, ctx) { if (rf & 1) {
1531
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
1532
+ i0.ɵɵelement(2, "i", 199);
1549
1533
  i0.ɵɵtext(3, " Active Runs");
1550
1534
  i0.ɵɵelementEnd();
1551
- i0.ɵɵelementStart(4, "div", 120)(5, "table", 95)(6, "thead")(7, "tr")(8, "th");
1535
+ i0.ɵɵelementStart(4, "div", 117)(5, "table", 92)(6, "thead")(7, "tr")(8, "th");
1552
1536
  i0.ɵɵtext(9, "Run ID");
1553
1537
  i0.ɵɵelementEnd();
1554
1538
  i0.ɵɵelementStart(10, "th");
@@ -1563,347 +1547,347 @@ function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_52_
1563
1547
  i0.ɵɵelementStart(16, "th");
1564
1548
  i0.ɵɵtext(17, "Stage");
1565
1549
  i0.ɵɵelementEnd();
1566
- i0.ɵɵelementStart(18, "th", 128);
1550
+ i0.ɵɵelementStart(18, "th", 125);
1567
1551
  i0.ɵɵtext(19, "Items");
1568
1552
  i0.ɵɵelementEnd()()();
1569
1553
  i0.ɵɵelementStart(20, "tbody");
1570
- i0.ɵɵrepeaterCreate(21, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_52_For_22_Template, 17, 10, "tr", null, _forTrack5);
1554
+ i0.ɵɵrepeaterCreate(21, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_52_For_22_Template, 17, 10, "tr", null, _forTrack4);
1571
1555
  i0.ɵɵelementEnd()()()();
1572
1556
  } if (rf & 2) {
1573
- const ctx_r2 = i0.ɵɵnextContext(3);
1557
+ const ctx_r1 = i0.ɵɵnextContext(3);
1574
1558
  i0.ɵɵadvance(21);
1575
- i0.ɵɵrepeater(ctx_r2.ActiveRuns);
1559
+ i0.ɵɵrepeater(ctx_r1.ActiveRuns);
1576
1560
  } }
1577
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_53_For_6_Template(rf, ctx) { if (rf & 1) {
1578
- i0.ɵɵelementStart(0, "div", 209)(1, "div", 210);
1561
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_53_For_6_Template(rf, ctx) { if (rf & 1) {
1562
+ i0.ɵɵelementStart(0, "div", 206)(1, "div", 207);
1579
1563
  i0.ɵɵtext(2);
1580
1564
  i0.ɵɵelementEnd();
1581
- i0.ɵɵelementStart(3, "div", 211);
1565
+ i0.ɵɵelementStart(3, "div", 208);
1582
1566
  i0.ɵɵtext(4);
1583
1567
  i0.ɵɵelementEnd();
1584
- i0.ɵɵelementStart(5, "div", 212);
1568
+ i0.ɵɵelementStart(5, "div", 209);
1585
1569
  i0.ɵɵtext(6);
1586
1570
  i0.ɵɵelementEnd()();
1587
1571
  } if (rf & 2) {
1588
- const entry_r68 = ctx.$implicit;
1572
+ const entry_r67 = ctx.$implicit;
1589
1573
  i0.ɵɵadvance(2);
1590
- i0.ɵɵtextInterpolate(entry_r68.Time);
1574
+ i0.ɵɵtextInterpolate(entry_r67.Time);
1591
1575
  i0.ɵɵadvance(2);
1592
- i0.ɵɵtextInterpolate(entry_r68.Source);
1576
+ i0.ɵɵtextInterpolate(entry_r67.Source);
1593
1577
  i0.ɵɵadvance(2);
1594
- i0.ɵɵtextInterpolate(entry_r68.Message);
1578
+ i0.ɵɵtextInterpolate(entry_r67.Message);
1595
1579
  } }
1596
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_53_Template(rf, ctx) { if (rf & 1) {
1597
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
1598
- i0.ɵɵelement(2, "i", 207);
1580
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_53_Template(rf, ctx) { if (rf & 1) {
1581
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
1582
+ i0.ɵɵelement(2, "i", 204);
1599
1583
  i0.ɵɵtext(3, " Recent Errors");
1600
1584
  i0.ɵɵelementEnd();
1601
- i0.ɵɵelementStart(4, "div", 208);
1602
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_53_For_6_Template, 7, 3, "div", 209, i0.ɵɵcomponentInstance().TrackByIndex, true);
1585
+ i0.ɵɵelementStart(4, "div", 205);
1586
+ i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_53_For_6_Template, 7, 3, "div", 206, i0.ɵɵcomponentInstance().TrackByIndex, true);
1603
1587
  i0.ɵɵelementEnd()();
1604
1588
  } if (rf & 2) {
1605
- const ctx_r2 = i0.ɵɵnextContext(3);
1589
+ const ctx_r1 = i0.ɵɵnextContext(3);
1606
1590
  i0.ɵɵadvance(5);
1607
- i0.ɵɵrepeater(ctx_r2.ErrorLog);
1591
+ i0.ɵɵrepeater(ctx_r1.ErrorLog);
1608
1592
  } }
1609
- function AnalyticsResourceComponent_Conditional_1_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1610
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
1611
- i0.ɵɵelement(2, "i", 181);
1593
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1594
+ i0.ɵɵelementStart(0, "section", 14)(1, "div", 15);
1595
+ i0.ɵɵelement(2, "i", 178);
1612
1596
  i0.ɵɵelementStart(3, "h1");
1613
1597
  i0.ɵɵtext(4, "Pipeline");
1614
1598
  i0.ɵɵelementEnd()();
1615
- i0.ɵɵelementStart(5, "div", 117)(6, "h3");
1616
- i0.ɵɵelement(7, "i", 137);
1599
+ i0.ɵɵelementStart(5, "div", 114)(6, "h3");
1600
+ i0.ɵɵelement(7, "i", 134);
1617
1601
  i0.ɵɵtext(8, " Pipeline Throughput (Last 30 Days)");
1618
1602
  i0.ɵɵelementEnd();
1619
- i0.ɵɵelementStart(9, "div", 163)(10, "div", 182);
1620
- i0.ɵɵrepeaterCreate(11, AnalyticsResourceComponent_Conditional_1_Conditional_25_For_12_Template, 1, 6, "div", 183, i0.ɵɵcomponentInstance().TrackByIndex, true);
1603
+ i0.ɵɵelementStart(9, "div", 160)(10, "div", 179);
1604
+ i0.ɵɵrepeaterCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_12_Template, 1, 6, "div", 180, i0.ɵɵcomponentInstance().TrackByIndex, true);
1621
1605
  i0.ɵɵelementEnd();
1622
- i0.ɵɵelementStart(13, "div", 184);
1623
- i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_1_Conditional_25_For_15_Template, 2, 1, "span", null, i0.ɵɵrepeaterTrackByIdentity);
1606
+ i0.ɵɵelementStart(13, "div", 181);
1607
+ i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_15_Template, 2, 1, "span", null, i0.ɵɵrepeaterTrackByIdentity);
1624
1608
  i0.ɵɵelementEnd()()();
1625
- i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_16_Template, 12, 2, "div", 28);
1626
- i0.ɵɵelementStart(17, "div", 122)(18, "h3");
1627
- i0.ɵɵelement(19, "i", 185);
1609
+ i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Template, 12, 2, "div", 24);
1610
+ i0.ɵɵelementStart(17, "div", 119)(18, "h3");
1611
+ i0.ɵɵelement(19, "i", 182);
1628
1612
  i0.ɵɵtext(20, " Processing Time Breakdown (Avg per Item)");
1629
1613
  i0.ɵɵelementEnd();
1630
- i0.ɵɵelementStart(21, "div", 163)(22, "div", 186);
1631
- i0.ɵɵrepeaterCreate(23, AnalyticsResourceComponent_Conditional_1_Conditional_25_For_24_Template, 8, 7, "div", 187, _forTrack1);
1614
+ i0.ɵɵelementStart(21, "div", 160)(22, "div", 183);
1615
+ i0.ɵɵrepeaterCreate(23, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_24_Template, 8, 7, "div", 184, _forTrack0);
1632
1616
  i0.ɵɵelementEnd();
1633
- i0.ɵɵelementStart(25, "div", 188)(26, "span")(27, "strong");
1617
+ i0.ɵɵelementStart(25, "div", 185)(26, "span")(27, "strong");
1634
1618
  i0.ɵɵtext(28, "Total avg:");
1635
1619
  i0.ɵɵelementEnd();
1636
1620
  i0.ɵɵtext(29);
1637
1621
  i0.ɵɵelementEnd();
1638
- i0.ɵɵconditionalCreate(30, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_30_Template, 3, 2, "span", 189);
1622
+ i0.ɵɵconditionalCreate(30, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_30_Template, 3, 2, "span", 186);
1639
1623
  i0.ɵɵelementEnd()()();
1640
- i0.ɵɵelementStart(31, "div", 122)(32, "h3");
1641
- i0.ɵɵelement(33, "i", 5);
1624
+ i0.ɵɵelementStart(31, "div", 119)(32, "h3");
1625
+ i0.ɵɵelement(33, "i", 28);
1642
1626
  i0.ɵɵtext(34, " Success Rate Overview");
1643
1627
  i0.ɵɵelementEnd();
1644
- i0.ɵɵelementStart(35, "div", 163)(36, "div", 190)(37, "div", 191)(38, "div", 192);
1628
+ i0.ɵɵelementStart(35, "div", 160)(36, "div", 187)(37, "div", 188)(38, "div", 189);
1645
1629
  i0.ɵɵtext(39);
1646
1630
  i0.ɵɵelementEnd();
1647
- i0.ɵɵelementStart(40, "div", 193);
1631
+ i0.ɵɵelementStart(40, "div", 190);
1648
1632
  i0.ɵɵtext(41, "Success Rate");
1649
1633
  i0.ɵɵelementEnd()();
1650
- i0.ɵɵelementStart(42, "div", 191)(43, "div", 194);
1634
+ i0.ɵɵelementStart(42, "div", 188)(43, "div", 191);
1651
1635
  i0.ɵɵtext(44);
1652
1636
  i0.ɵɵelementEnd();
1653
- i0.ɵɵelementStart(45, "div", 193);
1637
+ i0.ɵɵelementStart(45, "div", 190);
1654
1638
  i0.ɵɵtext(46, "Failure Rate");
1655
1639
  i0.ɵɵelementEnd()();
1656
- i0.ɵɵelementStart(47, "div", 191)(48, "div", 195);
1640
+ i0.ɵɵelementStart(47, "div", 188)(48, "div", 192);
1657
1641
  i0.ɵɵtext(49);
1658
1642
  i0.ɵɵelementEnd();
1659
- i0.ɵɵelementStart(50, "div", 193);
1643
+ i0.ɵɵelementStart(50, "div", 190);
1660
1644
  i0.ɵɵtext(51, "Total Runs");
1661
1645
  i0.ɵɵelementEnd()()()()();
1662
- i0.ɵɵconditionalCreate(52, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_52_Template, 23, 0, "div", 122);
1663
- i0.ɵɵconditionalCreate(53, AnalyticsResourceComponent_Conditional_1_Conditional_25_Conditional_53_Template, 7, 0, "div", 122);
1646
+ i0.ɵɵconditionalCreate(52, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_52_Template, 23, 0, "div", 119);
1647
+ i0.ɵɵconditionalCreate(53, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_53_Template, 7, 0, "div", 119);
1664
1648
  i0.ɵɵelementEnd();
1665
1649
  } if (rf & 2) {
1666
- const ctx_r2 = i0.ɵɵnextContext(2);
1650
+ const ctx_r1 = i0.ɵɵnextContext(2);
1667
1651
  i0.ɵɵadvance(11);
1668
- i0.ɵɵrepeater(ctx_r2.PipelineThroughputBars);
1652
+ i0.ɵɵrepeater(ctx_r1.PipelineThroughputBars);
1669
1653
  i0.ɵɵadvance(3);
1670
- i0.ɵɵrepeater(ctx_r2.PipelineDateLabels);
1654
+ i0.ɵɵrepeater(ctx_r1.PipelineDateLabels);
1671
1655
  i0.ɵɵadvance(2);
1672
- i0.ɵɵconditional(ctx_r2.DrillDownTarget && ctx_r2.DrillDownTarget.startsWith("pipeline-throughput:") ? 16 : -1);
1656
+ i0.ɵɵconditional(ctx_r1.DrillDownTarget && ctx_r1.DrillDownTarget.startsWith("pipeline-throughput:") ? 16 : -1);
1673
1657
  i0.ɵɵadvance(7);
1674
- i0.ɵɵrepeater(ctx_r2.ProcessingStages);
1658
+ i0.ɵɵrepeater(ctx_r1.ProcessingStages);
1675
1659
  i0.ɵɵadvance(6);
1676
- i0.ɵɵtextInterpolate1(" ", ctx_r2.TotalAvgProcessingTime, "s per item");
1660
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.TotalAvgProcessingTime, "s per item");
1677
1661
  i0.ɵɵadvance();
1678
- i0.ɵɵconditional(ctx_r2.BottleneckStage ? 30 : -1);
1662
+ i0.ɵɵconditional(ctx_r1.BottleneckStage ? 30 : -1);
1679
1663
  i0.ɵɵadvance(9);
1680
- i0.ɵɵtextInterpolate1(" ", ctx_r2.rawProcessRuns.length > 0 ? (100 - ctx_r2.ErrorLog.length / ctx_r2.rawProcessRuns.length * 100).toFixed(1) : "100", "% ");
1664
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.rawProcessRuns.length > 0 ? (100 - ctx_r1.ErrorLog.length / ctx_r1.rawProcessRuns.length * 100).toFixed(1) : "100", "% ");
1681
1665
  i0.ɵɵadvance(5);
1682
- i0.ɵɵtextInterpolate1(" ", ctx_r2.rawProcessRuns.length > 0 ? (ctx_r2.ErrorLog.length / ctx_r2.rawProcessRuns.length * 100).toFixed(1) : "0", "% ");
1666
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.rawProcessRuns.length > 0 ? (ctx_r1.ErrorLog.length / ctx_r1.rawProcessRuns.length * 100).toFixed(1) : "0", "% ");
1683
1667
  i0.ɵɵadvance(5);
1684
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatNumber(ctx_r2.rawProcessRuns.length), " ");
1668
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatNumber(ctx_r1.rawProcessRuns.length), " ");
1685
1669
  i0.ɵɵadvance(3);
1686
- i0.ɵɵconditional(ctx_r2.ActiveRuns.length > 0 ? 52 : -1);
1670
+ i0.ɵɵconditional(ctx_r1.ActiveRuns.length > 0 ? 52 : -1);
1687
1671
  i0.ɵɵadvance();
1688
- i0.ɵɵconditional(ctx_r2.ErrorLog.length > 0 ? 53 : -1);
1672
+ i0.ɵɵconditional(ctx_r1.ErrorLog.length > 0 ? 53 : -1);
1689
1673
  } }
1690
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_For_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1674
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_For_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1691
1675
  i0.ɵɵtext(0);
1692
1676
  } if (rf & 2) {
1693
- const bin_r70 = i0.ɵɵnextContext().$implicit;
1694
- i0.ɵɵtextInterpolate1(" ", bin_r70.Count, " ");
1677
+ const bin_r69 = i0.ɵɵnextContext().$implicit;
1678
+ i0.ɵɵtextInterpolate1(" ", bin_r69.Count, " ");
1695
1679
  } }
1696
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_For_12_Template(rf, ctx) { if (rf & 1) {
1697
- const _r69 = i0.ɵɵgetCurrentView();
1698
- i0.ɵɵelementStart(0, "div", 222);
1699
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_26_For_12_Template_div_click_0_listener() { const bin_r70 = i0.ɵɵrestoreView(_r69).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("quality-bin:" + bin_r70.Label)); });
1700
- i0.ɵɵelementStart(1, "div", 223);
1701
- i0.ɵɵconditionalCreate(2, AnalyticsResourceComponent_Conditional_1_Conditional_26_For_12_Conditional_2_Template, 1, 1);
1680
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_For_12_Template(rf, ctx) { if (rf & 1) {
1681
+ const _r68 = i0.ɵɵgetCurrentView();
1682
+ i0.ɵɵelementStart(0, "div", 219);
1683
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_For_12_Template_div_click_0_listener() { const bin_r69 = i0.ɵɵrestoreView(_r68).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenDrillDown("quality-bin:" + bin_r69.Label)); });
1684
+ i0.ɵɵelementStart(1, "div", 220);
1685
+ i0.ɵɵconditionalCreate(2, AnalyticsResourceComponent_Conditional_6_Conditional_16_For_12_Conditional_2_Template, 1, 1);
1702
1686
  i0.ɵɵelementEnd();
1703
- i0.ɵɵelementStart(3, "div", 224);
1687
+ i0.ɵɵelementStart(3, "div", 221);
1704
1688
  i0.ɵɵtext(4);
1705
1689
  i0.ɵɵelementEnd()();
1706
1690
  } if (rf & 2) {
1707
- const bin_r70 = ctx.$implicit;
1691
+ const bin_r69 = ctx.$implicit;
1708
1692
  i0.ɵɵadvance();
1709
- i0.ɵɵstyleProp("height", bin_r70.Percentage, "%")("background", bin_r70.Color);
1693
+ i0.ɵɵstyleProp("height", bin_r69.Percentage, "%")("background", bin_r69.Color);
1710
1694
  i0.ɵɵadvance();
1711
- i0.ɵɵconditional(bin_r70.Count > 0 ? 2 : -1);
1695
+ i0.ɵɵconditional(bin_r69.Count > 0 ? 2 : -1);
1712
1696
  i0.ɵɵadvance(2);
1713
- i0.ɵɵtextInterpolate(bin_r70.Label);
1697
+ i0.ɵɵtextInterpolate(bin_r69.Label);
1714
1698
  } }
1715
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_For_15_Template(rf, ctx) { if (rf & 1) {
1699
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_For_15_Template(rf, ctx) { if (rf & 1) {
1716
1700
  i0.ɵɵelementStart(0, "span")(1, "strong");
1717
1701
  i0.ɵɵtext(2);
1718
1702
  i0.ɵɵelementEnd();
1719
1703
  i0.ɵɵtext(3);
1720
1704
  i0.ɵɵelementEnd();
1721
1705
  } if (rf & 2) {
1722
- const stat_r71 = ctx.$implicit;
1706
+ const stat_r70 = ctx.$implicit;
1723
1707
  i0.ɵɵadvance(2);
1724
- i0.ɵɵtextInterpolate1("", stat_r71.Label, ":");
1708
+ i0.ɵɵtextInterpolate1("", stat_r70.Label, ":");
1725
1709
  i0.ɵɵadvance();
1726
- i0.ɵɵtextInterpolate1(" ", stat_r71.Value);
1710
+ i0.ɵɵtextInterpolate1(" ", stat_r70.Value);
1727
1711
  } }
1728
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1729
- const _r73 = i0.ɵɵgetCurrentView();
1730
- i0.ɵɵelementStart(0, "button", 93);
1731
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r73); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
1732
- i0.ɵɵelement(1, "i", 94);
1712
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1713
+ const _r72 = i0.ɵɵgetCurrentView();
1714
+ i0.ɵɵelementStart(0, "button", 90);
1715
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r72); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ExportDrillDownCSV()); });
1716
+ i0.ɵɵelement(1, "i", 91);
1733
1717
  i0.ɵɵtext(2, " CSV");
1734
1718
  i0.ɵɵelementEnd();
1735
1719
  } }
1736
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1737
- i0.ɵɵelement(0, "mj-loading", 90);
1720
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1721
+ i0.ɵɵelement(0, "mj-loading", 87);
1738
1722
  } }
1739
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
1723
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_5_Template(rf, ctx) { if (rf & 1) {
1740
1724
  i0.ɵɵelementStart(0, "th");
1741
1725
  i0.ɵɵtext(1);
1742
1726
  i0.ɵɵelementEnd();
1743
1727
  } if (rf & 2) {
1744
- const col_r74 = ctx.$implicit;
1728
+ const col_r73 = ctx.$implicit;
1745
1729
  i0.ɵɵadvance();
1746
- i0.ɵɵtextInterpolate(col_r74);
1730
+ i0.ɵɵtextInterpolate(col_r73);
1747
1731
  } }
1748
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1749
- i0.ɵɵelement(0, "th", 96);
1732
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1733
+ i0.ɵɵelement(0, "th", 93);
1750
1734
  } }
1751
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
1735
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_For_2_Template(rf, ctx) { if (rf & 1) {
1752
1736
  i0.ɵɵelementStart(0, "td");
1753
1737
  i0.ɵɵtext(1);
1754
1738
  i0.ɵɵelementEnd();
1755
1739
  } if (rf & 2) {
1756
- const col_r75 = ctx.$implicit;
1757
- const row_r76 = i0.ɵɵnextContext().$implicit;
1740
+ const col_r74 = ctx.$implicit;
1741
+ const row_r75 = i0.ɵɵnextContext().$implicit;
1758
1742
  i0.ɵɵadvance();
1759
- i0.ɵɵtextInterpolate(row_r76[col_r75]);
1743
+ i0.ɵɵtextInterpolate(row_r75[col_r74]);
1760
1744
  } }
1761
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1762
- const _r77 = i0.ɵɵgetCurrentView();
1763
- i0.ɵɵelementStart(0, "button", 136);
1764
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r77); const row_r76 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OpenDrillDownRecord(row_r76)); });
1765
- i0.ɵɵelement(1, "i", 99);
1745
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1746
+ const _r76 = i0.ɵɵgetCurrentView();
1747
+ i0.ɵɵelementStart(0, "button", 133);
1748
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r76); const row_r75 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenDrillDownRecord(row_r75)); });
1749
+ i0.ɵɵelement(1, "i", 96);
1766
1750
  i0.ɵɵelementEnd();
1767
1751
  } }
1768
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1769
- i0.ɵɵelementStart(0, "td", 96);
1770
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 135);
1752
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1753
+ i0.ɵɵelementStart(0, "td", 93);
1754
+ i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 132);
1771
1755
  i0.ɵɵelementEnd();
1772
1756
  } if (rf & 2) {
1773
- const row_r76 = i0.ɵɵnextContext().$implicit;
1757
+ const row_r75 = i0.ɵɵnextContext().$implicit;
1774
1758
  i0.ɵɵadvance();
1775
- i0.ɵɵconditional(row_r76["_RecordID"] ? 1 : -1);
1759
+ i0.ɵɵconditional(row_r75["_RecordID"] ? 1 : -1);
1776
1760
  } }
1777
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1761
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1778
1762
  i0.ɵɵelementStart(0, "tr");
1779
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1780
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 96);
1763
+ i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1764
+ i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 93);
1781
1765
  i0.ɵɵelementEnd();
1782
1766
  } if (rf & 2) {
1783
- const ctx_r2 = i0.ɵɵnextContext(5);
1767
+ const ctx_r1 = i0.ɵɵnextContext(5);
1784
1768
  i0.ɵɵadvance();
1785
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1769
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1786
1770
  i0.ɵɵadvance(2);
1787
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
1771
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
1788
1772
  } }
1789
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1790
- i0.ɵɵelementStart(0, "div", 91)(1, "table", 95)(2, "thead")(3, "tr");
1791
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1792
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_Conditional_6_Template, 1, 0, "th", 96);
1773
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1774
+ i0.ɵɵelementStart(0, "div", 88)(1, "table", 92)(2, "thead")(3, "tr");
1775
+ i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1776
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_Conditional_6_Template, 1, 0, "th", 93);
1793
1777
  i0.ɵɵelementEnd()();
1794
1778
  i0.ɵɵelementStart(7, "tbody");
1795
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
1779
+ i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_For_9_Template, 4, 1, "tr", null, i0.ɵɵcomponentInstance().TrackByIndex, true);
1796
1780
  i0.ɵɵelementEnd()()();
1797
1781
  } if (rf & 2) {
1798
- const ctx_r2 = i0.ɵɵnextContext(4);
1782
+ const ctx_r1 = i0.ɵɵnextContext(4);
1799
1783
  i0.ɵɵadvance(4);
1800
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1784
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1801
1785
  i0.ɵɵadvance(2);
1802
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
1786
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
1803
1787
  i0.ɵɵadvance(2);
1804
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
1788
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
1805
1789
  } }
1806
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1807
- i0.ɵɵelementStart(0, "div", 92);
1790
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1791
+ i0.ɵɵelementStart(0, "div", 89);
1808
1792
  i0.ɵɵtext(1, "No items in this confidence range");
1809
1793
  i0.ɵɵelementEnd();
1810
1794
  } }
1811
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1812
- const _r72 = i0.ɵɵgetCurrentView();
1813
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 83)(2, "span", 84);
1814
- i0.ɵɵelement(3, "i", 85);
1795
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1796
+ const _r71 = i0.ɵɵgetCurrentView();
1797
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 80)(2, "span", 81);
1798
+ i0.ɵɵelement(3, "i", 82);
1815
1799
  i0.ɵɵtext(4);
1816
1800
  i0.ɵɵelementEnd();
1817
- i0.ɵɵelementStart(5, "div", 86);
1818
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_6_Template, 3, 0, "button", 87);
1819
- i0.ɵɵelementStart(7, "button", 88);
1820
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r72); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
1821
- i0.ɵɵelement(8, "i", 89);
1801
+ i0.ɵɵelementStart(5, "div", 83);
1802
+ i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_6_Template, 3, 0, "button", 84);
1803
+ i0.ɵɵelementStart(7, "button", 85);
1804
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r71); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDrillDown()); });
1805
+ i0.ɵɵelement(8, "i", 86);
1822
1806
  i0.ɵɵelementEnd()()();
1823
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_9_Template, 1, 0, "mj-loading", 90)(10, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_10_Template, 10, 1, "div", 91)(11, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Conditional_11_Template, 2, 0, "div", 92);
1807
+ i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_9_Template, 1, 0, "mj-loading", 87)(10, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_10_Template, 10, 1, "div", 88)(11, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_11_Template, 2, 0, "div", 89);
1824
1808
  i0.ɵɵelementEnd();
1825
1809
  } if (rf & 2) {
1826
- const ctx_r2 = i0.ɵɵnextContext(3);
1810
+ const ctx_r1 = i0.ɵɵnextContext(3);
1827
1811
  i0.ɵɵadvance(4);
1828
- i0.ɵɵtextInterpolate1(" Items in Confidence Range ", ctx_r2.DrillDownTarget.replace("quality-bin:", ""));
1812
+ i0.ɵɵtextInterpolate1(" Items in Confidence Range ", ctx_r1.DrillDownTarget.replace("quality-bin:", ""));
1829
1813
  i0.ɵɵadvance(2);
1830
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
1814
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
1831
1815
  i0.ɵɵadvance(3);
1832
- i0.ɵɵconditional(ctx_r2.IsDrillDownLoading ? 9 : ctx_r2.DrillDownData.length > 0 ? 10 : 11);
1816
+ i0.ɵɵconditional(ctx_r1.IsDrillDownLoading ? 9 : ctx_r1.DrillDownData.length > 0 ? 10 : 11);
1833
1817
  } }
1834
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_17_For_7_Template(rf, ctx) { if (rf & 1) {
1835
- i0.ɵɵelementStart(0, "div", 227)(1, "div", 229);
1836
- i0.ɵɵelement(2, "div", 230)(3, "div", 231)(4, "div", 232);
1818
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_17_For_7_Template(rf, ctx) { if (rf & 1) {
1819
+ i0.ɵɵelementStart(0, "div", 224)(1, "div", 226);
1820
+ i0.ɵɵelement(2, "div", 227)(3, "div", 228)(4, "div", 229);
1837
1821
  i0.ɵɵelementEnd();
1838
- i0.ɵɵelementStart(5, "div", 233);
1822
+ i0.ɵɵelementStart(5, "div", 230);
1839
1823
  i0.ɵɵtext(6);
1840
1824
  i0.ɵɵelementEnd()();
1841
1825
  } if (rf & 2) {
1842
- const entity_r78 = ctx.$implicit;
1826
+ const entity_r77 = ctx.$implicit;
1843
1827
  i0.ɵɵadvance(2);
1844
- i0.ɵɵstyleProp("height", entity_r78.High, "%");
1845
- i0.ɵɵproperty("title", "High: " + entity_r78.High + "%");
1828
+ i0.ɵɵstyleProp("height", entity_r77.High, "%");
1829
+ i0.ɵɵproperty("title", "High: " + entity_r77.High + "%");
1846
1830
  i0.ɵɵadvance();
1847
- i0.ɵɵstyleProp("height", entity_r78.Med, "%");
1848
- i0.ɵɵproperty("title", "Med: " + entity_r78.Med + "%");
1831
+ i0.ɵɵstyleProp("height", entity_r77.Med, "%");
1832
+ i0.ɵɵproperty("title", "Med: " + entity_r77.Med + "%");
1849
1833
  i0.ɵɵadvance();
1850
- i0.ɵɵstyleProp("height", entity_r78.Low, "%");
1851
- i0.ɵɵproperty("title", "Low: " + entity_r78.Low + "%");
1834
+ i0.ɵɵstyleProp("height", entity_r77.Low, "%");
1835
+ i0.ɵɵproperty("title", "Low: " + entity_r77.Low + "%");
1852
1836
  i0.ɵɵadvance(2);
1853
- i0.ɵɵtextInterpolate(entity_r78.Name);
1837
+ i0.ɵɵtextInterpolate(entity_r77.Name);
1854
1838
  } }
1855
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_17_For_10_Template(rf, ctx) { if (rf & 1) {
1856
- i0.ɵɵelementStart(0, "div", 61);
1857
- i0.ɵɵelement(1, "div", 145);
1839
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_17_For_10_Template(rf, ctx) { if (rf & 1) {
1840
+ i0.ɵɵelementStart(0, "div", 58);
1841
+ i0.ɵɵelement(1, "div", 142);
1858
1842
  i0.ɵɵtext(2);
1859
1843
  i0.ɵɵelementEnd();
1860
1844
  } if (rf & 2) {
1861
- const item_r79 = ctx.$implicit;
1845
+ const item_r78 = ctx.$implicit;
1862
1846
  i0.ɵɵadvance();
1863
- i0.ɵɵstyleProp("background", item_r79.Color);
1847
+ i0.ɵɵstyleProp("background", item_r78.Color);
1864
1848
  i0.ɵɵadvance();
1865
- i0.ɵɵtextInterpolate1(" ", item_r79.Label);
1849
+ i0.ɵɵtextInterpolate1(" ", item_r78.Label);
1866
1850
  } }
1867
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1868
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
1869
- i0.ɵɵelement(2, "i", 225);
1851
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1852
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
1853
+ i0.ɵɵelement(2, "i", 222);
1870
1854
  i0.ɵɵtext(3, " Weight Distribution by Entity");
1871
1855
  i0.ɵɵelementEnd();
1872
- i0.ɵɵelementStart(4, "div", 163)(5, "div", 226);
1873
- i0.ɵɵrepeaterCreate(6, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_17_For_7_Template, 7, 10, "div", 227, _forTrack1);
1856
+ i0.ɵɵelementStart(4, "div", 160)(5, "div", 223);
1857
+ i0.ɵɵrepeaterCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_17_For_7_Template, 7, 10, "div", 224, _forTrack0);
1874
1858
  i0.ɵɵelementEnd();
1875
- i0.ɵɵelementStart(8, "div", 228);
1876
- i0.ɵɵrepeaterCreate(9, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_17_For_10_Template, 3, 3, "div", 61, _forTrack2);
1859
+ i0.ɵɵelementStart(8, "div", 225);
1860
+ i0.ɵɵrepeaterCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_17_For_10_Template, 3, 3, "div", 58, _forTrack1);
1877
1861
  i0.ɵɵelementEnd()()();
1878
1862
  } if (rf & 2) {
1879
- const ctx_r2 = i0.ɵɵnextContext(3);
1863
+ const ctx_r1 = i0.ɵɵnextContext(3);
1880
1864
  i0.ɵɵadvance(6);
1881
- i0.ɵɵrepeater(ctx_r2.WeightByEntity);
1865
+ i0.ɵɵrepeater(ctx_r1.WeightByEntity);
1882
1866
  i0.ɵɵadvance(3);
1883
- i0.ɵɵrepeater(ctx_r2.WeightLegend);
1867
+ i0.ɵɵrepeater(ctx_r1.WeightLegend);
1884
1868
  } }
1885
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_18_For_21_Template(rf, ctx) { if (rf & 1) {
1869
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_18_For_21_Template(rf, ctx) { if (rf & 1) {
1886
1870
  i0.ɵɵnamespaceSVG();
1887
- i0.ɵɵelement(0, "circle", 241);
1871
+ i0.ɵɵelement(0, "circle", 238);
1888
1872
  } if (rf & 2) {
1889
- const dot_r80 = ctx.$implicit;
1890
- i0.ɵɵattribute("cx", dot_r80.Cx)("cy", dot_r80.Cy);
1873
+ const dot_r79 = ctx.$implicit;
1874
+ i0.ɵɵattribute("cx", dot_r79.Cx)("cy", dot_r79.Cy);
1891
1875
  } }
1892
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_18_For_24_Template(rf, ctx) { if (rf & 1) {
1876
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_18_For_24_Template(rf, ctx) { if (rf & 1) {
1893
1877
  i0.ɵɵelementStart(0, "span");
1894
1878
  i0.ɵɵtext(1);
1895
1879
  i0.ɵɵelementEnd();
1896
1880
  } if (rf & 2) {
1897
- const label_r81 = ctx.$implicit;
1881
+ const label_r80 = ctx.$implicit;
1898
1882
  i0.ɵɵadvance();
1899
- i0.ɵɵtextInterpolate(label_r81);
1883
+ i0.ɵɵtextInterpolate(label_r80);
1900
1884
  } }
1901
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1902
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
1903
- i0.ɵɵelement(2, "i", 5);
1885
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1886
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
1887
+ i0.ɵɵelement(2, "i", 28);
1904
1888
  i0.ɵɵtext(3, " Tag Accuracy Over Time (Weekly Avg Confidence)");
1905
1889
  i0.ɵɵelementEnd();
1906
- i0.ɵɵelementStart(4, "div", 163)(5, "div", 234)(6, "div", 235)(7, "div");
1890
+ i0.ɵɵelementStart(4, "div", 160)(5, "div", 231)(6, "div", 232)(7, "div");
1907
1891
  i0.ɵɵtext(8, "1.0");
1908
1892
  i0.ɵɵelementEnd();
1909
1893
  i0.ɵɵelementStart(9, "div");
@@ -1915,75 +1899,75 @@ function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_18_
1915
1899
  i0.ɵɵelementStart(13, "div");
1916
1900
  i0.ɵɵtext(14, "0.25");
1917
1901
  i0.ɵɵelementEnd()();
1918
- i0.ɵɵelementStart(15, "div", 236);
1919
- i0.ɵɵelement(16, "div", 237)(17, "div", 238);
1902
+ i0.ɵɵelementStart(15, "div", 233);
1903
+ i0.ɵɵelement(16, "div", 234)(17, "div", 235);
1920
1904
  i0.ɵɵnamespaceSVG();
1921
- i0.ɵɵelementStart(18, "svg", 239);
1922
- i0.ɵɵelement(19, "polyline", 240);
1923
- i0.ɵɵrepeaterCreate(20, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_18_For_21_Template, 1, 2, ":svg:circle", 241, i0.ɵɵcomponentInstance().TrackByIndex, true);
1905
+ i0.ɵɵelementStart(18, "svg", 236);
1906
+ i0.ɵɵelement(19, "polyline", 237);
1907
+ i0.ɵɵrepeaterCreate(20, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_18_For_21_Template, 1, 2, ":svg:circle", 238, i0.ɵɵcomponentInstance().TrackByIndex, true);
1924
1908
  i0.ɵɵelementEnd()()();
1925
1909
  i0.ɵɵnamespaceHTML();
1926
- i0.ɵɵelementStart(22, "div", 242);
1927
- i0.ɵɵrepeaterCreate(23, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_18_For_24_Template, 2, 1, "span", null, i0.ɵɵrepeaterTrackByIdentity);
1910
+ i0.ɵɵelementStart(22, "div", 239);
1911
+ i0.ɵɵrepeaterCreate(23, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_18_For_24_Template, 2, 1, "span", null, i0.ɵɵrepeaterTrackByIdentity);
1928
1912
  i0.ɵɵelementEnd();
1929
- i0.ɵɵelementStart(25, "div", 243);
1930
- i0.ɵɵelement(26, "i", 244);
1913
+ i0.ɵɵelementStart(25, "div", 240);
1914
+ i0.ɵɵelement(26, "i", 241);
1931
1915
  i0.ɵɵtext(27);
1932
1916
  i0.ɵɵelementEnd()()();
1933
1917
  } if (rf & 2) {
1934
- const ctx_r2 = i0.ɵɵnextContext(3);
1918
+ const ctx_r1 = i0.ɵɵnextContext(3);
1935
1919
  i0.ɵɵadvance(19);
1936
- i0.ɵɵattribute("points", ctx_r2.AccuracyLinePoints);
1920
+ i0.ɵɵattribute("points", ctx_r1.AccuracyLinePoints);
1937
1921
  i0.ɵɵadvance();
1938
- i0.ɵɵrepeater(ctx_r2.AccuracyDots);
1922
+ i0.ɵɵrepeater(ctx_r1.AccuracyDots);
1939
1923
  i0.ɵɵadvance(3);
1940
- i0.ɵɵrepeater(ctx_r2.AccuracyMonthLabels);
1924
+ i0.ɵɵrepeater(ctx_r1.AccuracyMonthLabels);
1941
1925
  i0.ɵɵadvance(4);
1942
- i0.ɵɵtextInterpolate1(" ", ctx_r2.AccuracyTrendText, " ");
1926
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.AccuracyTrendText, " ");
1943
1927
  } }
1944
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_19_For_20_Template(rf, ctx) { if (rf & 1) {
1928
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_19_For_20_Template(rf, ctx) { if (rf & 1) {
1945
1929
  i0.ɵɵelementStart(0, "tr")(1, "td")(2, "strong");
1946
1930
  i0.ɵɵtext(3);
1947
1931
  i0.ɵɵelementEnd()();
1948
- i0.ɵɵelementStart(4, "td", 128);
1932
+ i0.ɵɵelementStart(4, "td", 125);
1949
1933
  i0.ɵɵtext(5);
1950
1934
  i0.ɵɵelementEnd();
1951
- i0.ɵɵelementStart(6, "td", 128);
1935
+ i0.ɵɵelementStart(6, "td", 125);
1952
1936
  i0.ɵɵtext(7);
1953
1937
  i0.ɵɵelementEnd();
1954
1938
  i0.ɵɵelementStart(8, "td");
1955
1939
  i0.ɵɵtext(9);
1956
1940
  i0.ɵɵelementEnd();
1957
- i0.ɵɵelementStart(10, "td")(11, "span", 159);
1941
+ i0.ɵɵelementStart(10, "td")(11, "span", 156);
1958
1942
  i0.ɵɵtext(12);
1959
1943
  i0.ɵɵelementEnd()()();
1960
1944
  } if (rf & 2) {
1961
- const tag_r82 = ctx.$implicit;
1945
+ const tag_r81 = ctx.$implicit;
1962
1946
  i0.ɵɵadvance(3);
1963
- i0.ɵɵtextInterpolate(tag_r82.Name);
1947
+ i0.ɵɵtextInterpolate(tag_r81.Name);
1964
1948
  i0.ɵɵadvance(2);
1965
- i0.ɵɵtextInterpolate(tag_r82.AvgWeight);
1949
+ i0.ɵɵtextInterpolate(tag_r81.AvgWeight);
1966
1950
  i0.ɵɵadvance(2);
1967
- i0.ɵɵtextInterpolate(tag_r82.UsageCount);
1951
+ i0.ɵɵtextInterpolate(tag_r81.UsageCount);
1968
1952
  i0.ɵɵadvance(2);
1969
- i0.ɵɵtextInterpolate(tag_r82.TopEntity);
1953
+ i0.ɵɵtextInterpolate(tag_r81.TopEntity);
1970
1954
  i0.ɵɵadvance(2);
1971
- i0.ɵɵclassMap(tag_r82.ActionClass);
1955
+ i0.ɵɵclassMap(tag_r81.ActionClass);
1972
1956
  i0.ɵɵadvance();
1973
- i0.ɵɵtextInterpolate(tag_r82.SuggestedAction);
1957
+ i0.ɵɵtextInterpolate(tag_r81.SuggestedAction);
1974
1958
  } }
1975
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1976
- i0.ɵɵelementStart(0, "div", 122)(1, "h3");
1977
- i0.ɵɵelement(2, "i", 245);
1959
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1960
+ i0.ɵɵelementStart(0, "div", 119)(1, "h3");
1961
+ i0.ɵɵelement(2, "i", 242);
1978
1962
  i0.ɵɵtext(3, " Low-Confidence Tags (Avg Weight < 0.4)");
1979
1963
  i0.ɵɵelementEnd();
1980
- i0.ɵɵelementStart(4, "div", 120)(5, "table", 95)(6, "thead")(7, "tr")(8, "th");
1964
+ i0.ɵɵelementStart(4, "div", 117)(5, "table", 92)(6, "thead")(7, "tr")(8, "th");
1981
1965
  i0.ɵɵtext(9, "Tag Name");
1982
1966
  i0.ɵɵelementEnd();
1983
- i0.ɵɵelementStart(10, "th", 128);
1967
+ i0.ɵɵelementStart(10, "th", 125);
1984
1968
  i0.ɵɵtext(11, "Avg Weight");
1985
1969
  i0.ɵɵelementEnd();
1986
- i0.ɵɵelementStart(12, "th", 128);
1970
+ i0.ɵɵelementStart(12, "th", 125);
1987
1971
  i0.ɵɵtext(13, "Usage Count");
1988
1972
  i0.ɵɵelementEnd();
1989
1973
  i0.ɵɵelementStart(14, "th");
@@ -1993,318 +1977,305 @@ function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_19_
1993
1977
  i0.ɵɵtext(17, "Suggested Action");
1994
1978
  i0.ɵɵelementEnd()()();
1995
1979
  i0.ɵɵelementStart(18, "tbody");
1996
- i0.ɵɵrepeaterCreate(19, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_19_For_20_Template, 13, 7, "tr", null, _forTrack1);
1980
+ i0.ɵɵrepeaterCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_19_For_20_Template, 13, 7, "tr", null, _forTrack0);
1997
1981
  i0.ɵɵelementEnd()()()();
1998
1982
  } if (rf & 2) {
1999
- const ctx_r2 = i0.ɵɵnextContext(3);
1983
+ const ctx_r1 = i0.ɵɵnextContext(3);
2000
1984
  i0.ɵɵadvance(19);
2001
- i0.ɵɵrepeater(ctx_r2.LowConfidenceTags);
1985
+ i0.ɵɵrepeater(ctx_r1.LowConfidenceTags);
2002
1986
  } }
2003
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_For_26_Template(rf, ctx) { if (rf & 1) {
2004
- i0.ɵɵelementStart(0, "div", 220)(1, "div", 246);
2005
- i0.ɵɵelement(2, "i", 158);
1987
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_For_26_Template(rf, ctx) { if (rf & 1) {
1988
+ i0.ɵɵelementStart(0, "div", 217)(1, "div", 243);
1989
+ i0.ɵɵelement(2, "i", 155);
2006
1990
  i0.ɵɵtext(3);
2007
1991
  i0.ɵɵelementEnd();
2008
1992
  i0.ɵɵnamespaceSVG();
2009
- i0.ɵɵelementStart(4, "svg", 247);
2010
- i0.ɵɵelement(5, "circle", 248)(6, "circle", 249);
1993
+ i0.ɵɵelementStart(4, "svg", 244);
1994
+ i0.ɵɵelement(5, "circle", 245)(6, "circle", 246);
2011
1995
  i0.ɵɵelementEnd();
2012
1996
  i0.ɵɵnamespaceHTML();
2013
- i0.ɵɵelementStart(7, "div", 250);
1997
+ i0.ɵɵelementStart(7, "div", 247);
2014
1998
  i0.ɵɵtext(8);
2015
1999
  i0.ɵɵelementEnd();
2016
- i0.ɵɵelementStart(9, "div", 251);
2000
+ i0.ɵɵelementStart(9, "div", 248);
2017
2001
  i0.ɵɵtext(10);
2018
2002
  i0.ɵɵelementEnd();
2019
- i0.ɵɵelementStart(11, "div", 251);
2003
+ i0.ɵɵelementStart(11, "div", 248);
2020
2004
  i0.ɵɵtext(12);
2021
2005
  i0.ɵɵelementEnd();
2022
- i0.ɵɵelementStart(13, "div", 252);
2006
+ i0.ɵɵelementStart(13, "div", 249);
2023
2007
  i0.ɵɵtext(14);
2024
2008
  i0.ɵɵelementEnd()();
2025
2009
  } if (rf & 2) {
2026
- const model_r83 = ctx.$implicit;
2027
- const ctx_r2 = i0.ɵɵnextContext(3);
2010
+ const model_r82 = ctx.$implicit;
2011
+ const ctx_r1 = i0.ɵɵnextContext(3);
2028
2012
  i0.ɵɵadvance(2);
2029
- i0.ɵɵclassMap(model_r83.Icon);
2030
- i0.ɵɵstyleProp("color", model_r83.IconColor);
2013
+ i0.ɵɵclassMap(model_r82.Icon);
2014
+ i0.ɵɵstyleProp("color", model_r82.IconColor);
2031
2015
  i0.ɵɵadvance();
2032
- i0.ɵɵtextInterpolate1(" ", model_r83.Name);
2016
+ i0.ɵɵtextInterpolate1(" ", model_r82.Name);
2033
2017
  i0.ɵɵadvance(3);
2034
- i0.ɵɵattribute("stroke", model_r83.ScoreColor)("stroke-dasharray", model_r83.StrokeDash);
2018
+ i0.ɵɵattribute("stroke", model_r82.ScoreColor)("stroke-dasharray", model_r82.StrokeDash);
2035
2019
  i0.ɵɵadvance();
2036
- i0.ɵɵstyleProp("color", model_r83.ScoreColor);
2020
+ i0.ɵɵstyleProp("color", model_r82.ScoreColor);
2037
2021
  i0.ɵɵadvance();
2038
- i0.ɵɵtextInterpolate1("", model_r83.ScorePercentage, "%");
2022
+ i0.ɵɵtextInterpolate1("", model_r82.ScorePercentage, "%");
2039
2023
  i0.ɵɵadvance(2);
2040
- i0.ɵɵtextInterpolate1("Avg confidence: ", model_r83.AvgConfidence);
2024
+ i0.ɵɵtextInterpolate1("Avg confidence: ", model_r82.AvgConfidence);
2041
2025
  i0.ɵɵadvance(2);
2042
- i0.ɵɵtextInterpolate1("", ctx_r2.FormatNumber(model_r83.TagsGenerated), " tags generated");
2026
+ i0.ɵɵtextInterpolate1("", ctx_r1.FormatNumber(model_r82.TagsGenerated), " tags generated");
2043
2027
  i0.ɵɵadvance();
2044
- i0.ɵɵstyleProp("color", model_r83.RoleColor);
2028
+ i0.ɵɵstyleProp("color", model_r82.RoleColor);
2045
2029
  i0.ɵɵadvance();
2046
- i0.ɵɵtextInterpolate(model_r83.Role);
2030
+ i0.ɵɵtextInterpolate(model_r82.Role);
2047
2031
  } }
2048
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_27_Template(rf, ctx) { if (rf & 1) {
2049
- i0.ɵɵelementStart(0, "div", 221);
2050
- i0.ɵɵelement(1, "i", 253);
2032
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_27_Template(rf, ctx) { if (rf & 1) {
2033
+ i0.ɵɵelementStart(0, "div", 218);
2034
+ i0.ɵɵelement(1, "i", 250);
2051
2035
  i0.ɵɵelementStart(2, "div")(3, "strong");
2052
2036
  i0.ɵɵtext(4, "Recommendation:");
2053
2037
  i0.ɵɵelementEnd();
2054
2038
  i0.ɵɵtext(5);
2055
2039
  i0.ɵɵelementEnd()();
2056
2040
  } if (rf & 2) {
2057
- const ctx_r2 = i0.ɵɵnextContext(3);
2041
+ const ctx_r1 = i0.ɵɵnextContext(3);
2058
2042
  i0.ɵɵadvance(5);
2059
- i0.ɵɵtextInterpolate1(" ", ctx_r2.ModelRecommendation, " ");
2043
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.ModelRecommendation, " ");
2060
2044
  } }
2061
- function AnalyticsResourceComponent_Conditional_1_Conditional_26_Template(rf, ctx) { if (rf & 1) {
2062
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
2063
- i0.ɵɵelement(2, "i", 213);
2045
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Template(rf, ctx) { if (rf & 1) {
2046
+ i0.ɵɵelementStart(0, "section", 14)(1, "div", 15);
2047
+ i0.ɵɵelement(2, "i", 210);
2064
2048
  i0.ɵɵelementStart(3, "h1");
2065
2049
  i0.ɵɵtext(4, "Quality");
2066
2050
  i0.ɵɵelementEnd()();
2067
- i0.ɵɵelementStart(5, "div", 117)(6, "h3");
2068
- i0.ɵɵelement(7, "i", 214);
2051
+ i0.ɵɵelementStart(5, "div", 114)(6, "h3");
2052
+ i0.ɵɵelement(7, "i", 211);
2069
2053
  i0.ɵɵtext(8, " Confidence Distribution");
2070
2054
  i0.ɵɵelementEnd();
2071
- i0.ɵɵelementStart(9, "div", 163)(10, "div", 215);
2072
- i0.ɵɵrepeaterCreate(11, AnalyticsResourceComponent_Conditional_1_Conditional_26_For_12_Template, 5, 6, "div", 216, _forTrack2);
2055
+ i0.ɵɵelementStart(9, "div", 160)(10, "div", 212);
2056
+ i0.ɵɵrepeaterCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_16_For_12_Template, 5, 6, "div", 213, _forTrack1);
2073
2057
  i0.ɵɵelementEnd();
2074
- i0.ɵɵelementStart(13, "div", 217);
2075
- i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_1_Conditional_26_For_15_Template, 4, 2, "span", null, _forTrack2);
2058
+ i0.ɵɵelementStart(13, "div", 214);
2059
+ i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_16_For_15_Template, 4, 2, "span", null, _forTrack1);
2076
2060
  i0.ɵɵelementEnd()()();
2077
- i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_16_Template, 12, 3, "div", 28);
2078
- i0.ɵɵconditionalCreate(17, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_17_Template, 11, 0, "div", 122);
2079
- i0.ɵɵconditionalCreate(18, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_18_Template, 28, 2, "div", 122);
2080
- i0.ɵɵconditionalCreate(19, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_19_Template, 21, 0, "div", 122);
2081
- i0.ɵɵelementStart(20, "div", 122)(21, "h3");
2082
- i0.ɵɵelement(22, "i", 218);
2061
+ i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Template, 12, 3, "div", 24);
2062
+ i0.ɵɵconditionalCreate(17, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_17_Template, 11, 0, "div", 119);
2063
+ i0.ɵɵconditionalCreate(18, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_18_Template, 28, 2, "div", 119);
2064
+ i0.ɵɵconditionalCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_19_Template, 21, 0, "div", 119);
2065
+ i0.ɵɵelementStart(20, "div", 119)(21, "h3");
2066
+ i0.ɵɵelement(22, "i", 215);
2083
2067
  i0.ɵɵtext(23, " Model Performance Comparison");
2084
2068
  i0.ɵɵelementEnd();
2085
- i0.ɵɵelementStart(24, "div", 219);
2086
- i0.ɵɵrepeaterCreate(25, AnalyticsResourceComponent_Conditional_1_Conditional_26_For_26_Template, 15, 15, "div", 220, _forTrack1);
2069
+ i0.ɵɵelementStart(24, "div", 216);
2070
+ i0.ɵɵrepeaterCreate(25, AnalyticsResourceComponent_Conditional_6_Conditional_16_For_26_Template, 15, 15, "div", 217, _forTrack0);
2087
2071
  i0.ɵɵelementEnd();
2088
- i0.ɵɵconditionalCreate(27, AnalyticsResourceComponent_Conditional_1_Conditional_26_Conditional_27_Template, 6, 1, "div", 221);
2072
+ i0.ɵɵconditionalCreate(27, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_27_Template, 6, 1, "div", 218);
2089
2073
  i0.ɵɵelementEnd()();
2090
2074
  } if (rf & 2) {
2091
- const ctx_r2 = i0.ɵɵnextContext(2);
2075
+ const ctx_r1 = i0.ɵɵnextContext(2);
2092
2076
  i0.ɵɵadvance(11);
2093
- i0.ɵɵrepeater(ctx_r2.ConfidenceHistogram);
2077
+ i0.ɵɵrepeater(ctx_r1.ConfidenceHistogram);
2094
2078
  i0.ɵɵadvance(3);
2095
- i0.ɵɵrepeater(ctx_r2.ConfidenceStats);
2079
+ i0.ɵɵrepeater(ctx_r1.ConfidenceStats);
2096
2080
  i0.ɵɵadvance(2);
2097
- i0.ɵɵconditional(ctx_r2.DrillDownTarget && ctx_r2.DrillDownTarget.startsWith("quality-bin:") ? 16 : -1);
2081
+ i0.ɵɵconditional(ctx_r1.DrillDownTarget && ctx_r1.DrillDownTarget.startsWith("quality-bin:") ? 16 : -1);
2098
2082
  i0.ɵɵadvance();
2099
- i0.ɵɵconditional(ctx_r2.WeightByEntity.length > 0 ? 17 : -1);
2083
+ i0.ɵɵconditional(ctx_r1.WeightByEntity.length > 0 ? 17 : -1);
2100
2084
  i0.ɵɵadvance();
2101
- i0.ɵɵconditional(ctx_r2.AccuracyLinePoints ? 18 : -1);
2085
+ i0.ɵɵconditional(ctx_r1.AccuracyLinePoints ? 18 : -1);
2102
2086
  i0.ɵɵadvance();
2103
- i0.ɵɵconditional(ctx_r2.LowConfidenceTags.length > 0 ? 19 : -1);
2087
+ i0.ɵɵconditional(ctx_r1.LowConfidenceTags.length > 0 ? 19 : -1);
2104
2088
  i0.ɵɵadvance(6);
2105
- i0.ɵɵrepeater(ctx_r2.ModelComparisons);
2089
+ i0.ɵɵrepeater(ctx_r1.ModelComparisons);
2106
2090
  i0.ɵɵadvance(2);
2107
- i0.ɵɵconditional(ctx_r2.ModelRecommendation ? 27 : -1);
2091
+ i0.ɵɵconditional(ctx_r1.ModelRecommendation ? 27 : -1);
2108
2092
  } }
2109
- function AnalyticsResourceComponent_Conditional_1_Conditional_27_For_15_Template(rf, ctx) { if (rf & 1) {
2110
- const _r85 = i0.ɵɵgetCurrentView();
2111
- i0.ɵɵelementStart(0, "button", 73);
2112
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_27_For_15_Template_button_click_0_listener() { const range_r86 = i0.ɵɵrestoreView(_r85).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SetDateRange(range_r86.Label)); });
2093
+ function AnalyticsResourceComponent_Conditional_6_Conditional_17_For_15_Template(rf, ctx) { if (rf & 1) {
2094
+ const _r84 = i0.ɵɵgetCurrentView();
2095
+ i0.ɵɵelementStart(0, "button", 70);
2096
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_17_For_15_Template_button_click_0_listener() { const range_r85 = i0.ɵɵrestoreView(_r84).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SetDateRange(range_r85.Label)); });
2113
2097
  i0.ɵɵtext(1);
2114
2098
  i0.ɵɵelementEnd();
2115
2099
  } if (rf & 2) {
2116
- const range_r86 = ctx.$implicit;
2117
- const ctx_r2 = i0.ɵɵnextContext(3);
2118
- i0.ɵɵclassProp("active", ctx_r2.ActiveDateRange === range_r86.Label);
2100
+ const range_r85 = ctx.$implicit;
2101
+ const ctx_r1 = i0.ɵɵnextContext(3);
2102
+ i0.ɵɵclassProp("active", ctx_r1.ActiveDateRange === range_r85.Label);
2119
2103
  i0.ɵɵadvance();
2120
- i0.ɵɵtextInterpolate(range_r86.Label);
2104
+ i0.ɵɵtextInterpolate(range_r85.Label);
2121
2105
  } }
2122
- function AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
2123
- i0.ɵɵelementStart(0, "div", 259)(1, "div", 260);
2106
+ function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
2107
+ i0.ɵɵelementStart(0, "div", 256)(1, "div", 257);
2124
2108
  i0.ɵɵelement(2, "i");
2125
2109
  i0.ɵɵelementEnd();
2126
- i0.ɵɵelementStart(3, "div")(4, "div", 261);
2110
+ i0.ɵɵelementStart(3, "div")(4, "div", 258);
2127
2111
  i0.ɵɵtext(5);
2128
2112
  i0.ɵɵelementEnd();
2129
- i0.ɵɵelementStart(6, "div", 262);
2113
+ i0.ɵɵelementStart(6, "div", 259);
2130
2114
  i0.ɵɵtext(7);
2131
2115
  i0.ɵɵelementEnd();
2132
- i0.ɵɵelementStart(8, "div", 263);
2116
+ i0.ɵɵelementStart(8, "div", 260);
2133
2117
  i0.ɵɵtext(9);
2134
2118
  i0.ɵɵelementEnd()()();
2135
2119
  } if (rf & 2) {
2136
- const kpi_r87 = ctx.$implicit;
2120
+ const kpi_r86 = ctx.$implicit;
2137
2121
  i0.ɵɵadvance(2);
2138
- i0.ɵɵclassMap(kpi_r87.Icon);
2122
+ i0.ɵɵclassMap(kpi_r86.Icon);
2139
2123
  i0.ɵɵadvance(3);
2140
- i0.ɵɵtextInterpolate(kpi_r87.Value);
2124
+ i0.ɵɵtextInterpolate(kpi_r86.Value);
2141
2125
  i0.ɵɵadvance(2);
2142
- i0.ɵɵtextInterpolate(kpi_r87.Label);
2126
+ i0.ɵɵtextInterpolate(kpi_r86.Label);
2143
2127
  i0.ɵɵadvance(2);
2144
- i0.ɵɵtextInterpolate(kpi_r87.SubLabel);
2128
+ i0.ɵɵtextInterpolate(kpi_r86.SubLabel);
2145
2129
  } }
2146
- function AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_16_Template(rf, ctx) { if (rf & 1) {
2147
- i0.ɵɵelementStart(0, "div", 258);
2148
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_16_For_2_Template, 10, 5, "div", 259, _forTrack2);
2130
+ function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_16_Template(rf, ctx) { if (rf & 1) {
2131
+ i0.ɵɵelementStart(0, "div", 255);
2132
+ i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_16_For_2_Template, 10, 5, "div", 256, _forTrack1);
2149
2133
  i0.ɵɵelementEnd();
2150
2134
  } if (rf & 2) {
2151
- const ctx_r2 = i0.ɵɵnextContext(3);
2135
+ const ctx_r1 = i0.ɵɵnextContext(3);
2152
2136
  i0.ɵɵadvance();
2153
- i0.ɵɵrepeater(ctx_r2.CostKPIs);
2137
+ i0.ɵɵrepeater(ctx_r1.CostKPIs);
2154
2138
  } }
2155
- function AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_21_For_16_Template(rf, ctx) { if (rf & 1) {
2156
- i0.ɵɵelementStart(0, "tr")(1, "td", 203);
2139
+ function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_21_For_16_Template(rf, ctx) { if (rf & 1) {
2140
+ i0.ɵɵelementStart(0, "tr")(1, "td", 200);
2157
2141
  i0.ɵɵtext(2);
2158
2142
  i0.ɵɵelementEnd();
2159
2143
  i0.ɵɵelementStart(3, "td");
2160
2144
  i0.ɵɵtext(4);
2161
2145
  i0.ɵɵelementEnd();
2162
- i0.ɵɵelementStart(5, "td", 128);
2146
+ i0.ɵɵelementStart(5, "td", 125);
2163
2147
  i0.ɵɵtext(6);
2164
2148
  i0.ɵɵelementEnd();
2165
- i0.ɵɵelementStart(7, "td", 128);
2149
+ i0.ɵɵelementStart(7, "td", 125);
2166
2150
  i0.ɵɵtext(8);
2167
2151
  i0.ɵɵelementEnd();
2168
- i0.ɵɵelementStart(9, "td", 134);
2152
+ i0.ɵɵelementStart(9, "td", 131);
2169
2153
  i0.ɵɵtext(10);
2170
2154
  i0.ɵɵelementEnd()();
2171
2155
  } if (rf & 2) {
2172
- const row_r88 = ctx.$implicit;
2173
- const ctx_r2 = i0.ɵɵnextContext(4);
2156
+ const row_r87 = ctx.$implicit;
2157
+ const ctx_r1 = i0.ɵɵnextContext(4);
2174
2158
  i0.ɵɵadvance(2);
2175
- i0.ɵɵtextInterpolate(row_r88.RunID);
2159
+ i0.ɵɵtextInterpolate(row_r87.RunID);
2176
2160
  i0.ɵɵadvance(2);
2177
- i0.ɵɵtextInterpolate(row_r88.Source);
2161
+ i0.ɵɵtextInterpolate(row_r87.Source);
2178
2162
  i0.ɵɵadvance(2);
2179
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(row_r88.Tokens));
2163
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(row_r87.Tokens));
2180
2164
  i0.ɵɵadvance(2);
2181
- i0.ɵɵtextInterpolate(row_r88.Cost > 0 ? "$" + row_r88.Cost.toFixed(4) : "$0.00");
2165
+ i0.ɵɵtextInterpolate(row_r87.Cost > 0 ? "$" + row_r87.Cost.toFixed(4) : "$0.00");
2182
2166
  i0.ɵɵadvance(2);
2183
- i0.ɵɵtextInterpolate(row_r88.Started);
2167
+ i0.ɵɵtextInterpolate(row_r87.Started);
2184
2168
  } }
2185
- function AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_21_Template(rf, ctx) { if (rf & 1) {
2186
- i0.ɵɵelementStart(0, "div", 120)(1, "table", 95)(2, "thead")(3, "tr")(4, "th");
2169
+ function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_21_Template(rf, ctx) { if (rf & 1) {
2170
+ i0.ɵɵelementStart(0, "div", 117)(1, "table", 92)(2, "thead")(3, "tr")(4, "th");
2187
2171
  i0.ɵɵtext(5, "Run ID");
2188
2172
  i0.ɵɵelementEnd();
2189
2173
  i0.ɵɵelementStart(6, "th");
2190
2174
  i0.ɵɵtext(7, "Source");
2191
2175
  i0.ɵɵelementEnd();
2192
- i0.ɵɵelementStart(8, "th", 128);
2176
+ i0.ɵɵelementStart(8, "th", 125);
2193
2177
  i0.ɵɵtext(9, "Tokens");
2194
2178
  i0.ɵɵelementEnd();
2195
- i0.ɵɵelementStart(10, "th", 128);
2179
+ i0.ɵɵelementStart(10, "th", 125);
2196
2180
  i0.ɵɵtext(11, "Cost");
2197
2181
  i0.ɵɵelementEnd();
2198
2182
  i0.ɵɵelementStart(12, "th");
2199
2183
  i0.ɵɵtext(13, "Started");
2200
2184
  i0.ɵɵelementEnd()()();
2201
2185
  i0.ɵɵelementStart(14, "tbody");
2202
- i0.ɵɵrepeaterCreate(15, AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_21_For_16_Template, 11, 5, "tr", null, _forTrack5);
2186
+ i0.ɵɵrepeaterCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_21_For_16_Template, 11, 5, "tr", null, _forTrack4);
2203
2187
  i0.ɵɵelementEnd()()();
2204
2188
  } if (rf & 2) {
2205
- const ctx_r2 = i0.ɵɵnextContext(3);
2189
+ const ctx_r1 = i0.ɵɵnextContext(3);
2206
2190
  i0.ɵɵadvance(15);
2207
- i0.ɵɵrepeater(ctx_r2.CostPerRunRows);
2191
+ i0.ɵɵrepeater(ctx_r1.CostPerRunRows);
2208
2192
  } }
2209
- function AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_22_Template(rf, ctx) { if (rf & 1) {
2210
- i0.ɵɵelementStart(0, "div", 121);
2211
- i0.ɵɵelement(1, "i", 254);
2193
+ function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_22_Template(rf, ctx) { if (rf & 1) {
2194
+ i0.ɵɵelementStart(0, "div", 118);
2195
+ i0.ɵɵelement(1, "i", 251);
2212
2196
  i0.ɵɵelementStart(2, "p");
2213
2197
  i0.ɵɵtext(3, "No cost data available yet. Run the pipeline to generate cost and token usage metrics.");
2214
2198
  i0.ɵɵelementEnd();
2215
- i0.ɵɵelementStart(4, "p", 264);
2199
+ i0.ɵɵelementStart(4, "p", 261);
2216
2200
  i0.ɵɵtext(5, "Cost data is aggregated from ContentProcessRunDetail records linked to AI Prompt Runs.");
2217
2201
  i0.ɵɵelementEnd()();
2218
2202
  } }
2219
- function AnalyticsResourceComponent_Conditional_1_Conditional_27_Template(rf, ctx) { if (rf & 1) {
2220
- const _r84 = i0.ɵɵgetCurrentView();
2221
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
2222
- i0.ɵɵelement(2, "i", 254);
2203
+ function AnalyticsResourceComponent_Conditional_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
2204
+ const _r83 = i0.ɵɵgetCurrentView();
2205
+ i0.ɵɵelementStart(0, "section", 14)(1, "div", 15);
2206
+ i0.ɵɵelement(2, "i", 251);
2223
2207
  i0.ɵɵelementStart(3, "h1");
2224
2208
  i0.ɵɵtext(4, "Cost & Usage");
2225
2209
  i0.ɵɵelementEnd();
2226
- i0.ɵɵelementStart(5, "div", 255)(6, "button", 93);
2227
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_27_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r84); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ExportTabDataCSV("cost-usage")); });
2228
- i0.ɵɵelement(7, "i", 94);
2210
+ i0.ɵɵelementStart(5, "div", 252)(6, "button", 90);
2211
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_17_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r83); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ExportTabDataCSV("cost-usage")); });
2212
+ i0.ɵɵelement(7, "i", 91);
2229
2213
  i0.ɵɵtext(8, " CSV ");
2230
2214
  i0.ɵɵelementEnd();
2231
- i0.ɵɵelementStart(9, "button", 256);
2232
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_1_Conditional_27_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r84); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.PrintCurrentTab()); });
2233
- i0.ɵɵelement(10, "i", 257);
2215
+ i0.ɵɵelementStart(9, "button", 253);
2216
+ i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_17_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r83); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.PrintCurrentTab()); });
2217
+ i0.ɵɵelement(10, "i", 254);
2234
2218
  i0.ɵɵtext(11, " Print ");
2235
2219
  i0.ɵɵelementEnd()()();
2236
- i0.ɵɵelementStart(12, "div", 21)(13, "div", 22);
2237
- i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_1_Conditional_27_For_15_Template, 2, 3, "button", 23, _forTrack2);
2220
+ i0.ɵɵelementStart(12, "div", 17)(13, "div", 18);
2221
+ i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_17_For_15_Template, 2, 3, "button", 19, _forTrack1);
2238
2222
  i0.ɵɵelementEnd()();
2239
- i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_16_Template, 3, 0, "div", 258);
2240
- i0.ɵɵelementStart(17, "div", 122)(18, "h3");
2241
- i0.ɵɵelement(19, "i", 85);
2223
+ i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_16_Template, 3, 0, "div", 255);
2224
+ i0.ɵɵelementStart(17, "div", 119)(18, "h3");
2225
+ i0.ɵɵelement(19, "i", 82);
2242
2226
  i0.ɵɵtext(20, " Cost Breakdown by Run");
2243
2227
  i0.ɵɵelementEnd();
2244
- i0.ɵɵconditionalCreate(21, AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_21_Template, 17, 0, "div", 120)(22, AnalyticsResourceComponent_Conditional_1_Conditional_27_Conditional_22_Template, 6, 0, "div", 121);
2228
+ i0.ɵɵconditionalCreate(21, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_21_Template, 17, 0, "div", 117)(22, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_22_Template, 6, 0, "div", 118);
2245
2229
  i0.ɵɵelementEnd()();
2246
2230
  } if (rf & 2) {
2247
- const ctx_r2 = i0.ɵɵnextContext(2);
2231
+ const ctx_r1 = i0.ɵɵnextContext(2);
2248
2232
  i0.ɵɵadvance(14);
2249
- i0.ɵɵrepeater(ctx_r2.DateRanges);
2233
+ i0.ɵɵrepeater(ctx_r1.DateRanges);
2250
2234
  i0.ɵɵadvance(2);
2251
- i0.ɵɵconditional(ctx_r2.CostKPIs.length > 0 ? 16 : -1);
2235
+ i0.ɵɵconditional(ctx_r1.CostKPIs.length > 0 ? 16 : -1);
2252
2236
  i0.ɵɵadvance(5);
2253
- i0.ɵɵconditional(ctx_r2.CostPerRunRows.length > 0 ? 21 : 22);
2237
+ i0.ɵɵconditional(ctx_r1.CostPerRunRows.length > 0 ? 21 : 22);
2254
2238
  } }
2255
- function AnalyticsResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
2256
- i0.ɵɵelementStart(0, "div", 1)(1, "aside", 3)(2, "div", 4)(3, "h2");
2257
- i0.ɵɵelement(4, "i", 5);
2258
- i0.ɵɵtext(5, " Analytics");
2259
- i0.ɵɵelementEnd()();
2260
- i0.ɵɵelementStart(6, "nav", 6);
2261
- i0.ɵɵrepeaterCreate(7, AnalyticsResourceComponent_Conditional_1_For_8_Template, 3, 5, "button", 7, _forTrack0);
2262
- i0.ɵɵelementEnd();
2263
- i0.ɵɵelement(9, "div", 8);
2264
- i0.ɵɵelementStart(10, "div", 9)(11, "h3");
2265
- i0.ɵɵelement(12, "i", 10);
2266
- i0.ɵɵtext(13, " Trending Tags");
2267
- i0.ɵɵelementEnd();
2268
- i0.ɵɵelementStart(14, "div", 11);
2269
- i0.ɵɵrepeaterCreate(15, AnalyticsResourceComponent_Conditional_1_For_16_Template, 2, 5, "span", 12, _forTrack1);
2270
- i0.ɵɵconditionalCreate(17, AnalyticsResourceComponent_Conditional_1_Conditional_17_Template, 2, 0, "span", 13);
2271
- i0.ɵɵelementEnd()();
2272
- i0.ɵɵelementStart(18, "div", 14);
2273
- i0.ɵɵelement(19, "span", 15);
2274
- i0.ɵɵtext(20);
2275
- i0.ɵɵelementEnd()();
2276
- i0.ɵɵelementStart(21, "div", 16);
2277
- i0.ɵɵconditionalCreate(22, AnalyticsResourceComponent_Conditional_1_Conditional_22_Template, 98, 7, "section", 17);
2278
- i0.ɵɵconditionalCreate(23, AnalyticsResourceComponent_Conditional_1_Conditional_23_Template, 28, 9, "section", 17);
2279
- i0.ɵɵconditionalCreate(24, AnalyticsResourceComponent_Conditional_1_Conditional_24_Template, 14, 4, "section", 17);
2280
- i0.ɵɵconditionalCreate(25, AnalyticsResourceComponent_Conditional_1_Conditional_25_Template, 54, 8, "section", 17);
2281
- i0.ɵɵconditionalCreate(26, AnalyticsResourceComponent_Conditional_1_Conditional_26_Template, 28, 5, "section", 17);
2282
- i0.ɵɵconditionalCreate(27, AnalyticsResourceComponent_Conditional_1_Conditional_27_Template, 23, 2, "section", 17);
2283
- i0.ɵɵelementEnd()();
2239
+ function AnalyticsResourceComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
2240
+ const _r1 = i0.ɵɵgetCurrentView();
2241
+ i0.ɵɵelementStart(0, "div", 5)(1, "mj-left-nav", 7);
2242
+ i0.ɵɵlistener("ItemClicked", function AnalyticsResourceComponent_Conditional_6_Template_mj_left_nav_ItemClicked_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onNavItemClicked($event)); });
2243
+ i0.ɵɵelementStart(2, "div", 8)(3, "h3");
2244
+ i0.ɵɵelement(4, "i", 9);
2245
+ i0.ɵɵtext(5, " Trending Tags");
2246
+ i0.ɵɵelementEnd();
2247
+ i0.ɵɵelementStart(6, "div", 10);
2248
+ i0.ɵɵrepeaterCreate(7, AnalyticsResourceComponent_Conditional_6_For_8_Template, 2, 5, "span", 11, _forTrack0);
2249
+ i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_9_Template, 2, 0, "span", 12);
2250
+ i0.ɵɵelementEnd()()();
2251
+ i0.ɵɵelementStart(10, "mj-left-nav-content")(11, "div", 13);
2252
+ i0.ɵɵconditionalCreate(12, AnalyticsResourceComponent_Conditional_6_Conditional_12_Template, 98, 7, "section", 14);
2253
+ i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_13_Template, 28, 9, "section", 14);
2254
+ i0.ɵɵconditionalCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_14_Template, 14, 4, "section", 14);
2255
+ i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_15_Template, 54, 8, "section", 14);
2256
+ i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_16_Template, 28, 5, "section", 14);
2257
+ i0.ɵɵconditionalCreate(17, AnalyticsResourceComponent_Conditional_6_Conditional_17_Template, 23, 2, "section", 14);
2258
+ i0.ɵɵelementEnd()()();
2284
2259
  } if (rf & 2) {
2285
- const ctx_r2 = i0.ɵɵnextContext();
2286
- i0.ɵɵadvance(7);
2287
- i0.ɵɵrepeater(ctx_r2.NavItems);
2288
- i0.ɵɵadvance(8);
2289
- i0.ɵɵrepeater(ctx_r2.TrendingTags);
2290
- i0.ɵɵadvance(2);
2291
- i0.ɵɵconditional(ctx_r2.TrendingTags.length === 0 ? 17 : -1);
2292
- i0.ɵɵadvance(2);
2293
- i0.ɵɵclassProp("status-dot-error", !ctx_r2.PipelineStatusOk);
2260
+ const ctx_r1 = i0.ɵɵnextContext();
2294
2261
  i0.ɵɵadvance();
2295
- i0.ɵɵtextInterpolate1(" ", ctx_r2.PipelineStatusText, " ");
2262
+ i0.ɵɵproperty("Sections", ctx_r1.navSections)("ActiveId", ctx_r1.ActiveTab);
2263
+ i0.ɵɵadvance(6);
2264
+ i0.ɵɵrepeater(ctx_r1.TrendingTags);
2296
2265
  i0.ɵɵadvance(2);
2297
- i0.ɵɵconditional(ctx_r2.ActiveTab === "overview" ? 22 : -1);
2266
+ i0.ɵɵconditional(ctx_r1.TrendingTags.length === 0 ? 9 : -1);
2267
+ i0.ɵɵadvance(3);
2268
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "overview" ? 12 : -1);
2298
2269
  i0.ɵɵadvance();
2299
- i0.ɵɵconditional(ctx_r2.ActiveTab === "tags" ? 23 : -1);
2270
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "tags" ? 13 : -1);
2300
2271
  i0.ɵɵadvance();
2301
- i0.ɵɵconditional(ctx_r2.ActiveTab === "sources" ? 24 : -1);
2272
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "sources" ? 14 : -1);
2302
2273
  i0.ɵɵadvance();
2303
- i0.ɵɵconditional(ctx_r2.ActiveTab === "pipeline" ? 25 : -1);
2274
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "pipeline" ? 15 : -1);
2304
2275
  i0.ɵɵadvance();
2305
- i0.ɵɵconditional(ctx_r2.ActiveTab === "quality" ? 26 : -1);
2276
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "quality" ? 16 : -1);
2306
2277
  i0.ɵɵadvance();
2307
- i0.ɵɵconditional(ctx_r2.ActiveTab === "cost" ? 27 : -1);
2278
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "cost" ? 17 : -1);
2308
2279
  } }
2309
2280
  // ================================================================
2310
2281
  // Component
@@ -2546,6 +2517,16 @@ let AnalyticsResourceComponent = class AnalyticsResourceComponent extends BaseRe
2546
2517
  // ================================================================
2547
2518
  // Public Methods
2548
2519
  // ================================================================
2520
+ /** Wraps `NavItems` for `<mj-left-nav>`. */
2521
+ get navSections() {
2522
+ return [{
2523
+ items: this.NavItems.map(n => ({ id: n.ID, label: n.Label, icon: n.Icon }))
2524
+ }];
2525
+ }
2526
+ /** Adapter for `<mj-left-nav>`'s `(ItemClicked)` output. */
2527
+ onNavItemClicked(item) {
2528
+ this.SelectTab(item.id);
2529
+ }
2549
2530
  SelectTab(tabId) {
2550
2531
  this.ActiveTab = tabId;
2551
2532
  this.CloseDrillDown();
@@ -4245,11 +4226,21 @@ let AnalyticsResourceComponent = class AnalyticsResourceComponent extends BaseRe
4245
4226
  }
4246
4227
  }
4247
4228
  static ɵfac = /*@__PURE__*/ (() => { let ɵAnalyticsResourceComponent_BaseFactory; return function AnalyticsResourceComponent_Factory(__ngFactoryType__) { return (ɵAnalyticsResourceComponent_BaseFactory || (ɵAnalyticsResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AnalyticsResourceComponent)))(__ngFactoryType__ || AnalyticsResourceComponent); }; })();
4248
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsResourceComponent, selectors: [["app-analytics-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "analytics-loading"], [1, "analytics-layout"], ["text", "Loading analytics data...", "size", "medium"], [1, "analytics-sidebar"], [1, "sidebar-header"], [1, "fa-solid", "fa-chart-line"], [1, "sidebar-nav"], [1, "nav-item", 3, "active"], [1, "sidebar-divider"], [1, "trending-section"], [1, "fa-solid", "fa-arrow-trend-up"], [1, "tag-cloud"], [3, "font-size", "font-weight"], [1, "no-trending"], [1, "pipeline-status"], [1, "status-dot"], [1, "main-content"], [1, "tab-section"], [1, "nav-item", 3, "click"], [1, "tab-section-header"], [1, "fa-solid", "fa-grip"], [1, "filter-bar"], [1, "date-chips"], [1, "date-chip", 3, "active"], [1, "filter-dropdown", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "kpi-row"], [1, "kpi-card"], [1, "drill-down-panel"], [1, "cards-grid"], [1, "widget-card", 3, "click"], [1, "widget-title"], [1, "bar-chart"], [1, "bar-col"], [1, "fa-solid", "fa-bullseye"], [1, "rings-grid"], [1, "ring-item"], [1, "widget-empty"], [1, "fa-solid", "fa-gauge-high"], [1, "gauge-container"], ["width", "180", "height", "110", "viewBox", "0 0 180 110"], ["d", "M 20 95 A 70 70 0 0 1 160 95", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "14", "stroke-linecap", "round"], ["d", "M 20 95 A 70 70 0 0 1 48.6 35.2", "fill", "none", "stroke", "var(--mj-status-error)", "stroke-width", "14", "stroke-linecap", "round", "opacity", "0.3"], ["d", "M 48.6 35.2 A 70 70 0 0 1 118 28", "fill", "none", "stroke", "var(--mj-status-warning)", "stroke-width", "14", "opacity", "0.3"], ["d", "M 118 28 A 70 70 0 0 1 160 95", "fill", "none", "stroke", "var(--mj-status-success)", "stroke-width", "14", "stroke-linecap", "round", "opacity", "0.3"], ["x", "90", "y", "88", "text-anchor", "middle", "font-size", "26", "font-weight", "800", "fill", "var(--mj-text-primary)"], ["x", "90", "y", "105", "text-anchor", "middle", "font-size", "10", "fill", "var(--mj-text-muted)"], ["x", "28", "y", "108", "font-size", "8", "fill", "var(--mj-text-muted)"], ["x", "86", "y", "18", "font-size", "8", "fill", "var(--mj-text-muted)"], ["x", "155", "y", "108", "font-size", "8", "fill", "var(--mj-text-muted)"], [1, "mini-histogram"], [1, "mini-hist-bar", 3, "height", "background", "title"], [1, "mini-hist-label"], [1, "fa-solid", "fa-ranking-star"], [1, "h-bar-list"], [1, "h-bar-row"], [1, "widget-footnote"], [1, "fa-solid", "fa-bolt"], [1, "throughput-bars"], [1, "tp-bar", 3, "height", "background"], [1, "legend"], [1, "legend-item"], [1, "legend-dot", 2, "background", "var(--mj-status-success)"], [1, "legend-dot", 2, "background", "var(--mj-status-error)"], [1, "fa-solid", "fa-sitemap"], [1, "taxonomy-ring-container"], ["width", "140", "height", "140", "viewBox", "0 0 140 140"], ["cx", "70", "cy", "70", "r", "54", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "18"], ["cx", "70", "cy", "70", "r", "54", "fill", "none", "stroke-width", "18", "transform", "rotate(-90 70 70)"], ["x", "70", "y", "66", "text-anchor", "middle", "font-size", "22", "font-weight", "800", "fill", "var(--mj-text-primary)"], ["x", "70", "y", "82", "text-anchor", "middle", "font-size", "10", "fill", "var(--mj-text-muted)"], [1, "taxonomy-stats"], [1, "tax-stat", 3, "background", "color"], [1, "date-chip", 3, "click"], [1, "kpi-card", 3, "click"], [1, "kpi-label"], [1, "kpi-value"], [1, "kpi-delta"], [1, "fa-solid", "fa-arrow-up", 2, "font-size", "9px"], [1, "fa-solid", "fa-arrow-down", 2, "font-size", "9px"], [1, "kpi-sparkline"], ["width", "64", "height", "28", "viewBox", "0 0 64 28"], ["fill", "none", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], [1, "drill-down-header"], [1, "drill-down-title"], [1, "fa-solid", "fa-table"], [1, "drill-down-header-actions"], ["title", "Export CSV", 1, "drill-export-btn"], ["aria-label", "Close drill-down", 1, "drill-down-close", 3, "click"], [1, "fa-solid", "fa-times"], ["text", "Loading details...", "size", "small"], [1, "drill-down-table-wrap"], [1, "drill-down-empty"], ["title", "Export CSV", 1, "drill-export-btn", 3, "click"], [1, "fa-solid", "fa-download"], [1, "data-table"], [1, "drill-action-col"], ["title", "Open record", 1, "drill-open-btn"], ["title", "Open record", 1, "drill-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "bar-value"], [1, "bar", 2, "background", "var(--mj-brand-primary)"], [1, "bar-label"], ["width", "48", "height", "48", "viewBox", "0 0 48 48"], ["cx", "24", "cy", "24", "r", "20", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "5"], ["cx", "24", "cy", "24", "r", "20", "fill", "none", "stroke-width", "5", "stroke-dashoffset", "31.4", "stroke-linecap", "round", "transform", "rotate(-90 24 24)"], ["x", "24", "y", "26", "text-anchor", "middle", "font-size", "11", "font-weight", "700", "fill", "var(--mj-text-primary)"], [1, "ring-label"], [1, "ring-stat"], [1, "mini-hist-bar", 3, "title"], [1, "h-bar-name"], [1, "h-bar-track"], [1, "h-bar-fill"], [1, "tp-bar"], [1, "tp-bar-label"], [1, "tax-stat"], [1, "fa-solid", "fa-tags"], [1, "sub-section", 2, "margin-top", "0"], [1, "sub-section-header"], [1, "fa-solid", "fa-trophy"], [1, "table-scroll"], [1, "empty-state"], [1, "sub-section"], [1, "sub-section", "co-occurrence-section"], [1, "fa-solid", "fa-link"], [1, "co-occurrence-actions"], ["title", "Last computed timestamp", 1, "co-occurrence-staleness"], ["title", "Recompute co-occurrence data", 1, "drill-export-btn", 3, "click", "disabled"], [1, "num"], [2, "cursor", "pointer"], [2, "cursor", "pointer", 3, "click"], [1, "weight-bar"], ["width", "48", "height", "16"], ["fill", "none", "stroke-width", "1.5", "stroke-linecap", "round"], [1, "muted"], ["aria-label", "Open record", "title", "Open record", 1, "drill-open-btn"], ["aria-label", "Open record", "title", "Open record", 1, "drill-open-btn", 3, "click"], [1, "fa-solid", "fa-chart-bar"], [1, "stacked-bar-chart"], [1, "stacked-row"], [1, "legend", 2, "margin-top", "12px"], [1, "stacked-label"], [1, "stacked-track"], [1, "stacked-seg", 3, "width", "background", "title"], [1, "stacked-seg", 3, "title"], [1, "legend-dot"], [1, "fa-solid", "fa-layer-group"], [1, "v-bar-chart"], [1, "v-bar-col"], [1, "chart-footnote"], [1, "v-bar", 2, "background", "var(--mj-brand-primary)"], [1, "v-bar-label"], [1, "fa-regular", "fa-clock"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-arrows-rotate"], [1, "weight-bar", 2, "background", "var(--mj-status-info)"], [1, "fa-solid", "fa-database"], [2, "cursor", "pointer", 3, "source-selected"], [2, "margin-right", "4px"], [1, "badge"], [1, "fa-solid", "fa-circle", 2, "font-size", "6px", "margin-right", "3px"], [1, "fa-solid", "fa-chart-area"], [1, "two-col"], [1, "widget-card"], [1, "bar-chart", 2, "height", "100px"], [1, "fa-solid", "fa-star-half-stroke"], [1, "quality-bands"], [1, "quality-band-row"], [1, "source-quality-note"], [1, "fa-solid", "fa-circle-info", 2, "color", "var(--mj-status-info)", "margin-right", "4px"], [1, "bar-value", 2, "font-size", "9px"], [1, "quality-band-label"], [1, "quality-band-track"], [1, "quality-band-fill"], [1, "fa-solid", "fa-heart-pulse"], [1, "source-health-grid"], [1, "source-health-card", 3, "border-top-color"], [1, "source-health-card"], [1, "health-card-name"], [1, "health-card-value"], [1, "health-card-label"], [1, "fa-solid", "fa-gears"], [1, "pipeline-throughput-bars"], [1, "pipeline-bar", 2, "cursor", "pointer", 3, "height", "background", "opacity"], [1, "pipeline-date-labels"], [1, "fa-solid", "fa-stopwatch"], [1, "stage-bars"], [1, "stage-row"], [1, "stage-summary"], [1, "stage-warning"], [1, "success-rate-display"], [1, "success-rate-stat"], [1, "success-rate-value", 2, "color", "var(--mj-status-success)"], [1, "success-rate-label"], [1, "success-rate-value", 2, "color", "var(--mj-status-error)"], [1, "success-rate-value", 2, "color", "var(--mj-text-primary)"], [1, "pipeline-bar", 2, "cursor", "pointer", 3, "click"], [1, "stage-name"], [1, "stage-track"], [1, "stage-fill"], [1, "stage-time"], [1, "fa-solid", "fa-triangle-exclamation", 2, "color", "var(--mj-status-warning)", "margin-right", "4px"], [1, "fa-solid", "fa-spinner"], [1, "monospace-cell"], [1, "progress-track"], [1, "progress-fill", 2, "background", "var(--mj-brand-primary)"], [1, "progress-text"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-log"], [1, "error-entry"], [1, "error-time"], [1, "error-source"], [1, "error-msg"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-chart-column"], [1, "histogram"], [1, "hist-bar-col", 2, "cursor", "pointer"], [1, "confidence-stats"], [1, "fa-solid", "fa-robot"], [1, "model-grid"], [1, "model-card"], [1, "model-recommendation"], [1, "hist-bar-col", 2, "cursor", "pointer", 3, "click"], [1, "hist-bar"], [1, "hist-label"], [1, "fa-solid", "fa-weight-scale"], [1, "grouped-bar-chart"], [1, "grouped-col"], [1, "legend", 2, "justify-content", "center", "margin-top", "14px"], [1, "grouped-bars"], [1, "g-bar", 2, "background", "var(--mj-brand-primary)", 3, "title"], [1, "g-bar", 2, "background", "var(--mj-status-info)", 3, "title"], [1, "g-bar", 2, "background", "var(--mj-text-muted)", 3, "title"], [1, "grouped-label"], [1, "accuracy-chart"], [1, "accuracy-y-labels"], [1, "accuracy-area"], [1, "accuracy-grid-line", 2, "top", "33%"], [1, "accuracy-grid-line", 2, "top", "66%"], ["width", "100%", "height", "110", "viewBox", "0 0 400 110", "preserveAspectRatio", "none", 1, "accuracy-svg"], ["fill", "none", "stroke", "var(--mj-brand-primary)", "stroke-width", "2.5", "vector-effect", "non-scaling-stroke", "stroke-linecap", "round", "stroke-linejoin", "round"], ["r", "3", "fill", "var(--mj-brand-primary)"], [1, "accuracy-x-labels"], [1, "accuracy-trend-text"], [1, "fa-solid", "fa-arrow-trend-up", 2, "margin-right", "4px"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "model-name"], ["width", "80", "height", "80", "viewBox", "0 0 80 80", 2, "margin", "4px 0"], ["cx", "40", "cy", "40", "r", "32", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "8"], ["cx", "40", "cy", "40", "r", "32", "fill", "none", "stroke-width", "8", "stroke-dashoffset", "50", "transform", "rotate(-90 40 40)", "stroke-linecap", "round"], [1, "model-score"], [1, "model-detail"], [1, "model-detail", 2, "font-weight", "600"], [1, "fa-solid", "fa-lightbulb", 2, "color", "var(--mj-status-warning)"], [1, "fa-solid", "fa-coins"], [1, "tab-header-actions"], ["title", "Print (PDF alternative)", 1, "drill-export-btn", 3, "click"], [1, "fa-solid", "fa-print"], [1, "cost-kpi-row"], [1, "cost-kpi-card"], [1, "cost-kpi-icon"], [1, "cost-kpi-value"], [1, "cost-kpi-label"], [1, "cost-kpi-sub"], [1, "empty-state-hint"]], template: function AnalyticsResourceComponent_Template(rf, ctx) { if (rf & 1) {
4249
- i0.ɵɵconditionalCreate(0, AnalyticsResourceComponent_Conditional_0_Template, 2, 0, "div", 0)(1, AnalyticsResourceComponent_Conditional_1_Template, 28, 10, "div", 1);
4229
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsResourceComponent, selectors: [["app-analytics-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 5, consts: [["Title", "Knowledge Hub Analytics", "Icon", "fa-solid fa-chart-line", "Subtitle", "Pipeline health, trending tags, and content insights"], ["meta", ""], [3, "Label", "Variant"], [3, "Flex", "Padding"], [1, "analytics-loading"], [1, "analytics-layout"], ["text", "Loading analytics data...", "size", "medium"], [3, "ItemClicked", "Sections", "ActiveId"], ["footer", "", 1, "trending-section"], [1, "fa-solid", "fa-arrow-trend-up"], [1, "tag-cloud"], [3, "font-size", "font-weight"], [1, "no-trending"], [1, "main-content"], [1, "tab-section"], [1, "tab-section-header"], [1, "fa-solid", "fa-grip"], [1, "filter-bar"], [1, "date-chips"], [1, "date-chip", 3, "active"], [1, "filter-dropdown", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "kpi-row"], [1, "kpi-card"], [1, "drill-down-panel"], [1, "cards-grid"], [1, "widget-card", 3, "click"], [1, "widget-title"], [1, "fa-solid", "fa-chart-line"], [1, "bar-chart"], [1, "bar-col"], [1, "fa-solid", "fa-bullseye"], [1, "rings-grid"], [1, "ring-item"], [1, "widget-empty"], [1, "fa-solid", "fa-gauge-high"], [1, "gauge-container"], ["width", "180", "height", "110", "viewBox", "0 0 180 110"], ["d", "M 20 95 A 70 70 0 0 1 160 95", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "14", "stroke-linecap", "round"], ["d", "M 20 95 A 70 70 0 0 1 48.6 35.2", "fill", "none", "stroke", "var(--mj-status-error)", "stroke-width", "14", "stroke-linecap", "round", "opacity", "0.3"], ["d", "M 48.6 35.2 A 70 70 0 0 1 118 28", "fill", "none", "stroke", "var(--mj-status-warning)", "stroke-width", "14", "opacity", "0.3"], ["d", "M 118 28 A 70 70 0 0 1 160 95", "fill", "none", "stroke", "var(--mj-status-success)", "stroke-width", "14", "stroke-linecap", "round", "opacity", "0.3"], ["x", "90", "y", "88", "text-anchor", "middle", "font-size", "26", "font-weight", "800", "fill", "var(--mj-text-primary)"], ["x", "90", "y", "105", "text-anchor", "middle", "font-size", "10", "fill", "var(--mj-text-muted)"], ["x", "28", "y", "108", "font-size", "8", "fill", "var(--mj-text-muted)"], ["x", "86", "y", "18", "font-size", "8", "fill", "var(--mj-text-muted)"], ["x", "155", "y", "108", "font-size", "8", "fill", "var(--mj-text-muted)"], [1, "mini-histogram"], [1, "mini-hist-bar", 3, "height", "background", "title"], [1, "mini-hist-label"], [1, "fa-solid", "fa-ranking-star"], [1, "h-bar-list"], [1, "h-bar-row"], [1, "widget-footnote"], [1, "fa-solid", "fa-bolt"], [1, "throughput-bars"], [1, "tp-bar", 3, "height", "background"], [1, "legend"], [1, "legend-item"], [1, "legend-dot", 2, "background", "var(--mj-status-success)"], [1, "legend-dot", 2, "background", "var(--mj-status-error)"], [1, "fa-solid", "fa-sitemap"], [1, "taxonomy-ring-container"], ["width", "140", "height", "140", "viewBox", "0 0 140 140"], ["cx", "70", "cy", "70", "r", "54", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "18"], ["cx", "70", "cy", "70", "r", "54", "fill", "none", "stroke-width", "18", "transform", "rotate(-90 70 70)"], ["x", "70", "y", "66", "text-anchor", "middle", "font-size", "22", "font-weight", "800", "fill", "var(--mj-text-primary)"], ["x", "70", "y", "82", "text-anchor", "middle", "font-size", "10", "fill", "var(--mj-text-muted)"], [1, "taxonomy-stats"], [1, "tax-stat", 3, "background", "color"], [1, "date-chip", 3, "click"], [1, "kpi-card", 3, "click"], [1, "kpi-label"], [1, "kpi-value"], [1, "kpi-delta"], [1, "fa-solid", "fa-arrow-up", 2, "font-size", "9px"], [1, "fa-solid", "fa-arrow-down", 2, "font-size", "9px"], [1, "kpi-sparkline"], ["width", "64", "height", "28", "viewBox", "0 0 64 28"], ["fill", "none", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], [1, "drill-down-header"], [1, "drill-down-title"], [1, "fa-solid", "fa-table"], [1, "drill-down-header-actions"], ["title", "Export CSV", 1, "drill-export-btn"], ["aria-label", "Close drill-down", 1, "drill-down-close", 3, "click"], [1, "fa-solid", "fa-times"], ["text", "Loading details...", "size", "small"], [1, "drill-down-table-wrap"], [1, "drill-down-empty"], ["title", "Export CSV", 1, "drill-export-btn", 3, "click"], [1, "fa-solid", "fa-download"], [1, "data-table"], [1, "drill-action-col"], ["title", "Open record", 1, "drill-open-btn"], ["title", "Open record", 1, "drill-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "bar-value"], [1, "bar", 2, "background", "var(--mj-brand-primary)"], [1, "bar-label"], ["width", "48", "height", "48", "viewBox", "0 0 48 48"], ["cx", "24", "cy", "24", "r", "20", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "5"], ["cx", "24", "cy", "24", "r", "20", "fill", "none", "stroke-width", "5", "stroke-dashoffset", "31.4", "stroke-linecap", "round", "transform", "rotate(-90 24 24)"], ["x", "24", "y", "26", "text-anchor", "middle", "font-size", "11", "font-weight", "700", "fill", "var(--mj-text-primary)"], [1, "ring-label"], [1, "ring-stat"], [1, "mini-hist-bar", 3, "title"], [1, "h-bar-name"], [1, "h-bar-track"], [1, "h-bar-fill"], [1, "tp-bar"], [1, "tp-bar-label"], [1, "tax-stat"], [1, "fa-solid", "fa-tags"], [1, "sub-section", 2, "margin-top", "0"], [1, "sub-section-header"], [1, "fa-solid", "fa-trophy"], [1, "table-scroll"], [1, "empty-state"], [1, "sub-section"], [1, "sub-section", "co-occurrence-section"], [1, "fa-solid", "fa-link"], [1, "co-occurrence-actions"], ["title", "Last computed timestamp", 1, "co-occurrence-staleness"], ["title", "Recompute co-occurrence data", 1, "drill-export-btn", 3, "click", "disabled"], [1, "num"], [2, "cursor", "pointer"], [2, "cursor", "pointer", 3, "click"], [1, "weight-bar"], ["width", "48", "height", "16"], ["fill", "none", "stroke-width", "1.5", "stroke-linecap", "round"], [1, "muted"], ["aria-label", "Open record", "title", "Open record", 1, "drill-open-btn"], ["aria-label", "Open record", "title", "Open record", 1, "drill-open-btn", 3, "click"], [1, "fa-solid", "fa-chart-bar"], [1, "stacked-bar-chart"], [1, "stacked-row"], [1, "legend", 2, "margin-top", "12px"], [1, "stacked-label"], [1, "stacked-track"], [1, "stacked-seg", 3, "width", "background", "title"], [1, "stacked-seg", 3, "title"], [1, "legend-dot"], [1, "fa-solid", "fa-layer-group"], [1, "v-bar-chart"], [1, "v-bar-col"], [1, "chart-footnote"], [1, "v-bar", 2, "background", "var(--mj-brand-primary)"], [1, "v-bar-label"], [1, "fa-regular", "fa-clock"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-arrows-rotate"], [1, "weight-bar", 2, "background", "var(--mj-status-info)"], [1, "fa-solid", "fa-database"], [2, "cursor", "pointer", 3, "source-selected"], [2, "margin-right", "4px"], [1, "badge"], [1, "fa-solid", "fa-circle", 2, "font-size", "6px", "margin-right", "3px"], [1, "fa-solid", "fa-chart-area"], [1, "two-col"], [1, "widget-card"], [1, "bar-chart", 2, "height", "100px"], [1, "fa-solid", "fa-star-half-stroke"], [1, "quality-bands"], [1, "quality-band-row"], [1, "source-quality-note"], [1, "fa-solid", "fa-circle-info", 2, "color", "var(--mj-status-info)", "margin-right", "4px"], [1, "bar-value", 2, "font-size", "9px"], [1, "quality-band-label"], [1, "quality-band-track"], [1, "quality-band-fill"], [1, "fa-solid", "fa-heart-pulse"], [1, "source-health-grid"], [1, "source-health-card", 3, "border-top-color"], [1, "source-health-card"], [1, "health-card-name"], [1, "health-card-value"], [1, "health-card-label"], [1, "fa-solid", "fa-gears"], [1, "pipeline-throughput-bars"], [1, "pipeline-bar", 2, "cursor", "pointer", 3, "height", "background", "opacity"], [1, "pipeline-date-labels"], [1, "fa-solid", "fa-stopwatch"], [1, "stage-bars"], [1, "stage-row"], [1, "stage-summary"], [1, "stage-warning"], [1, "success-rate-display"], [1, "success-rate-stat"], [1, "success-rate-value", 2, "color", "var(--mj-status-success)"], [1, "success-rate-label"], [1, "success-rate-value", 2, "color", "var(--mj-status-error)"], [1, "success-rate-value", 2, "color", "var(--mj-text-primary)"], [1, "pipeline-bar", 2, "cursor", "pointer", 3, "click"], [1, "stage-name"], [1, "stage-track"], [1, "stage-fill"], [1, "stage-time"], [1, "fa-solid", "fa-triangle-exclamation", 2, "color", "var(--mj-status-warning)", "margin-right", "4px"], [1, "fa-solid", "fa-spinner"], [1, "monospace-cell"], [1, "progress-track"], [1, "progress-fill", 2, "background", "var(--mj-brand-primary)"], [1, "progress-text"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-log"], [1, "error-entry"], [1, "error-time"], [1, "error-source"], [1, "error-msg"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-chart-column"], [1, "histogram"], [1, "hist-bar-col", 2, "cursor", "pointer"], [1, "confidence-stats"], [1, "fa-solid", "fa-robot"], [1, "model-grid"], [1, "model-card"], [1, "model-recommendation"], [1, "hist-bar-col", 2, "cursor", "pointer", 3, "click"], [1, "hist-bar"], [1, "hist-label"], [1, "fa-solid", "fa-weight-scale"], [1, "grouped-bar-chart"], [1, "grouped-col"], [1, "legend", 2, "justify-content", "center", "margin-top", "14px"], [1, "grouped-bars"], [1, "g-bar", 2, "background", "var(--mj-brand-primary)", 3, "title"], [1, "g-bar", 2, "background", "var(--mj-status-info)", 3, "title"], [1, "g-bar", 2, "background", "var(--mj-text-muted)", 3, "title"], [1, "grouped-label"], [1, "accuracy-chart"], [1, "accuracy-y-labels"], [1, "accuracy-area"], [1, "accuracy-grid-line", 2, "top", "33%"], [1, "accuracy-grid-line", 2, "top", "66%"], ["width", "100%", "height", "110", "viewBox", "0 0 400 110", "preserveAspectRatio", "none", 1, "accuracy-svg"], ["fill", "none", "stroke", "var(--mj-brand-primary)", "stroke-width", "2.5", "vector-effect", "non-scaling-stroke", "stroke-linecap", "round", "stroke-linejoin", "round"], ["r", "3", "fill", "var(--mj-brand-primary)"], [1, "accuracy-x-labels"], [1, "accuracy-trend-text"], [1, "fa-solid", "fa-arrow-trend-up", 2, "margin-right", "4px"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "model-name"], ["width", "80", "height", "80", "viewBox", "0 0 80 80", 2, "margin", "4px 0"], ["cx", "40", "cy", "40", "r", "32", "fill", "none", "stroke", "var(--mj-border-default)", "stroke-width", "8"], ["cx", "40", "cy", "40", "r", "32", "fill", "none", "stroke-width", "8", "stroke-dashoffset", "50", "transform", "rotate(-90 40 40)", "stroke-linecap", "round"], [1, "model-score"], [1, "model-detail"], [1, "model-detail", 2, "font-weight", "600"], [1, "fa-solid", "fa-lightbulb", 2, "color", "var(--mj-status-warning)"], [1, "fa-solid", "fa-coins"], [1, "tab-header-actions"], ["title", "Print (PDF alternative)", 1, "drill-export-btn", 3, "click"], [1, "fa-solid", "fa-print"], [1, "cost-kpi-row"], [1, "cost-kpi-card"], [1, "cost-kpi-icon"], [1, "cost-kpi-value"], [1, "cost-kpi-label"], [1, "cost-kpi-sub"], [1, "empty-state-hint"]], template: function AnalyticsResourceComponent_Template(rf, ctx) { if (rf & 1) {
4230
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
4231
+ i0.ɵɵelement(3, "mj-stat-badge", 2);
4232
+ i0.ɵɵelementEnd()();
4233
+ i0.ɵɵelementStart(4, "mj-page-body", 3);
4234
+ i0.ɵɵconditionalCreate(5, AnalyticsResourceComponent_Conditional_5_Template, 2, 0, "div", 4)(6, AnalyticsResourceComponent_Conditional_6_Template, 18, 9, "div", 5);
4235
+ i0.ɵɵelementEnd()();
4250
4236
  } if (rf & 2) {
4251
- i0.ɵɵconditional(ctx.IsLoading ? 0 : 1);
4252
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent], styles: ["\n\n\n\n\n.analytics-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 400px;\n}\n\n.analytics-layout[_ngcontent-%COMP%] {\n display: flex;\n height: 100%;\n min-height: 600px;\n}\n\n\n\n.analytics-sidebar[_ngcontent-%COMP%] {\n width: 220px;\n min-width: 220px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n\n.sidebar-header[_ngcontent-%COMP%] {\n padding: 20px 16px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.sidebar-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n}\n\n.sidebar-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.sidebar-nav[_ngcontent-%COMP%] {\n padding: 8px 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n font-size: 13.5px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n border: none;\n background: transparent;\n border-left: 3px solid transparent;\n transition: all 0.15s ease;\n text-align: left;\n width: 100%;\n font-family: inherit;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n border-left-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n font-weight: 600;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n font-size: 13px;\n}\n\n.sidebar-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-default);\n margin: 8px 16px;\n}\n\n.trending-section[_ngcontent-%COMP%] {\n padding: 12px 16px 16px;\n}\n\n.trending-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n margin: 0 0 10px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.tag-cloud[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 6px;\n line-height: 1.7;\n}\n\n.tag-cloud[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: opacity 0.15s;\n}\n\n.tag-cloud[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:hover {\n opacity: 0.7;\n}\n\n.no-trending[_ngcontent-%COMP%] {\n color: var(--mj-text-muted) !important;\n font-size: 12px !important;\n font-style: italic;\n}\n\n.pipeline-status[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--mj-status-success);\n flex-shrink: 0;\n}\n\n.status-dot-error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-width: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n padding: 28px 32px 40px;\n}\n\n.tab-section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 2px solid var(--mj-brand-primary);\n}\n\n.tab-section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n}\n\n.tab-section-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n\n\n.filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n\n.date-chips[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.date-chip[_ngcontent-%COMP%] {\n padding: 6px 14px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface);\n cursor: pointer;\n border: none;\n border-right: 1px solid var(--mj-border-default);\n transition: all 0.15s;\n font-family: inherit;\n}\n\n.date-chip[_ngcontent-%COMP%]:last-child {\n border-right: none;\n}\n\n.date-chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.date-chip.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-dropdown[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-family: inherit;\n}\n\n\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px 18px;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.1;\n}\n\n.kpi-delta[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n margin-top: 4px;\n color: var(--mj-text-muted);\n}\n\n.kpi-delta.up[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.kpi-delta.down[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.kpi-sparkline[_ngcontent-%COMP%] {\n flex-shrink: 0;\n margin-left: 12px;\n margin-top: 6px;\n}\n\n\n\n.cards-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n}\n\n.widget-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 18px 20px;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.widget-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.widget-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 14px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.widget-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n.widget-empty[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n padding: 20px;\n}\n\n.widget-footnote[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 10px;\n}\n\n\n\n.bar-chart[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n height: 120px;\n padding-top: 10px;\n}\n\n.bar-col[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.bar[_ngcontent-%COMP%] {\n width: 100%;\n border-radius: 4px 4px 0 0;\n transition: height 0.3s;\n min-height: 2px;\n}\n\n.bar-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n}\n\n.bar-value[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n\n\n.rings-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.ring-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n}\n\n.ring-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.ring-stat[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n\n\n.gauge-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n margin-bottom: 8px;\n}\n\n\n\n.mini-histogram[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 32px;\n justify-content: center;\n}\n\n.mini-hist-bar[_ngcontent-%COMP%] {\n width: 14px;\n border-radius: 2px;\n}\n\n.mini-hist-label[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n.h-bar-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.h-bar-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.h-bar-name[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 100px;\n flex-shrink: 0;\n text-align: right;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.h-bar-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.h-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 36px;\n}\n\n\n\n.throughput-bars[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 4px;\n height: 110px;\n margin-bottom: 22px;\n}\n\n.tp-bar[_ngcontent-%COMP%] {\n flex: 1;\n border-radius: 3px 3px 0 0;\n position: relative;\n min-height: 4px;\n}\n\n.tp-bar-label[_ngcontent-%COMP%] {\n position: absolute;\n bottom: -18px;\n left: 50%;\n transform: translateX(-50%);\n font-size: 8px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n\n\n.taxonomy-ring-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n}\n\n.taxonomy-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.tax-stat[_ngcontent-%COMP%] {\n flex: 1;\n text-align: center;\n padding: 8px 4px;\n border-radius: 6px;\n font-size: 20px;\n font-weight: 700;\n}\n\n.tax-stat[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 500;\n margin-top: 2px;\n}\n\n\n\n.legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 10px;\n flex-wrap: wrap;\n justify-content: center;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.legend-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n flex-shrink: 0;\n}\n\n\n\n.table-scroll[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.data-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12.5px;\n}\n\n.data-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 10px 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted);\n border-bottom: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n white-space: nowrap;\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.data-table[_ngcontent-%COMP%] .num[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.muted[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.monospace-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.weight-bar[_ngcontent-%COMP%] {\n display: inline-block;\n height: 6px;\n border-radius: 3px;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n}\n\n.badge-success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.badge-warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.badge-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 12%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n\n\n.sub-section[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.sub-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.sub-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 2rem;\n text-align: center;\n gap: 0.75rem;\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2.5rem;\n color: var(--mj-text-disabled);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n max-width: 400px;\n}\n\n\n\n.drill-down-panel[_ngcontent-%COMP%] {\n margin-top: 16px;\n margin-bottom: 16px;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-brand-primary);\n border-radius: 10px;\n overflow: hidden;\n animation: _ngcontent-%COMP%_slideDown 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 600px;\n }\n}\n\n.drill-down-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.drill-down-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-down-close[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.drill-down-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.drill-down-table-wrap[_ngcontent-%COMP%] {\n max-height: 400px;\n overflow-y: auto;\n padding: 8px;\n}\n\n.drill-action-col[_ngcontent-%COMP%] {\n width: 40px;\n text-align: center;\n padding: 6px !important;\n}\n\n.drill-open-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-open-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.drill-down-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-export-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-export-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.sub-section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 0;\n}\n\n.sub-section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.drill-down-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n\n\n.stacked-bar-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stacked-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stacked-label[_ngcontent-%COMP%] {\n width: 90px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stacked-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 22px;\n display: flex;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stacked-seg[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 20px;\n}\n\n\n\n.v-bar-chart[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 24px;\n height: 140px;\n padding-top: 10px;\n justify-content: center;\n}\n\n.v-bar-col[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n min-width: 60px;\n}\n\n.v-bar[_ngcontent-%COMP%] {\n width: 48px;\n border-radius: 4px 4px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-inverse);\n}\n\n.v-bar-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 8px;\n text-align: center;\n}\n\n.chart-footnote[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 14px;\n}\n\n\n\n.two-col[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 20px;\n}\n\n\n\n.source-selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n\n\n.quality-bands[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.quality-band-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.quality-band-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 65px;\n text-align: right;\n flex-shrink: 0;\n}\n\n.quality-band-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.quality-band-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 30px;\n}\n\n.source-quality-note[_ngcontent-%COMP%] {\n margin-top: 14px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.source-health-grid[_ngcontent-%COMP%] {\n display: grid;\n gap: 12px;\n}\n\n.source-health-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border-top: 3px solid;\n}\n\n.health-card-name[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.health-card-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n}\n\n.health-card-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.pipeline-throughput-bars[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 110px;\n}\n\n.pipeline-bar[_ngcontent-%COMP%] {\n flex: 1;\n border-radius: 2px 2px 0 0;\n min-height: 3px;\n}\n\n.pipeline-date-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 6px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.stage-bars[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.stage-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stage-name[_ngcontent-%COMP%] {\n width: 80px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stage-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n}\n\n.stage-time[_ngcontent-%COMP%] {\n width: 50px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-summary[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 14px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.stage-warning[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.success-rate-display[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n gap: 48px;\n padding: 20px;\n}\n\n.success-rate-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.success-rate-value[_ngcontent-%COMP%] {\n font-size: 32px;\n font-weight: 700;\n line-height: 1.1;\n}\n\n.success-rate-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n.progress-track[_ngcontent-%COMP%] {\n width: 100px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n.progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n}\n\n.progress-text[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n.error-log[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.error-entry[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 4%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-error);\n border-radius: 0 6px 6px 0;\n font-size: 12px;\n}\n\n.error-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n white-space: nowrap;\n flex-shrink: 0;\n width: 130px;\n}\n\n.error-source[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n flex-shrink: 0;\n width: 120px;\n}\n\n.error-msg[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n\n\n.histogram[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n height: 130px;\n padding-bottom: 24px;\n}\n\n.hist-bar-col[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.hist-bar[_ngcontent-%COMP%] {\n width: 100%;\n border-radius: 3px 3px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-height: 2px;\n}\n\n.hist-label[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n.confidence-stats[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n gap: 8px;\n}\n\n\n\n.grouped-bar-chart[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 20px;\n height: 140px;\n justify-content: center;\n}\n\n.grouped-col[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.grouped-bars[_ngcontent-%COMP%] {\n display: flex;\n gap: 3px;\n align-items: flex-end;\n height: 100%;\n}\n\n.g-bar[_ngcontent-%COMP%] {\n width: 18px;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n}\n\n.grouped-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n\n\n.accuracy-chart[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n margin: 0 10px;\n}\n\n.accuracy-y-labels[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n height: 110px;\n}\n\n.accuracy-area[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n height: 110px;\n border-left: 1px solid var(--mj-border-default);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.accuracy-grid-line[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n right: 0;\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.accuracy-svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.accuracy-x-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 0 40px 0 40px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n.accuracy-trend-text[_ngcontent-%COMP%] {\n text-align: center;\n margin-top: 10px;\n font-size: 12px;\n color: var(--mj-status-success);\n}\n\n\n\n.model-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.model-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border: 1px solid var(--mj-border-default);\n}\n\n.model-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n}\n\n.model-score[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n line-height: 1;\n}\n\n.model-detail[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n.model-recommendation[_ngcontent-%COMP%] {\n margin-top: 14px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n\n\n@media (max-width: 1200px) {\n .cards-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .model-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .analytics-layout[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .analytics-sidebar[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .sidebar-nav[_ngcontent-%COMP%] {\n flex-direction: row;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n border-left: none;\n border-bottom: 3px solid transparent;\n white-space: nowrap;\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .trending-section[_ngcontent-%COMP%], \n .sidebar-divider[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-section[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .cards-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .two-col[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .cost-kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n\n.tab-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.cost-kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.cost-kpi-card[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n align-items: center;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 18px 20px;\n transition: box-shadow 0.15s ease;\n}\n\n.cost-kpi-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.cost-kpi-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n flex-shrink: 0;\n}\n\n.cost-kpi-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.2;\n}\n\n.cost-kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.cost-kpi-sub[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.empty-state-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n\n@media print {\n .analytics-sidebar[_ngcontent-%COMP%], \n .filter-bar[_ngcontent-%COMP%], \n .tab-header-actions[_ngcontent-%COMP%], \n .drill-down-close[_ngcontent-%COMP%], \n .drill-export-btn[_ngcontent-%COMP%], \n .drill-open-btn[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .analytics-layout[_ngcontent-%COMP%] {\n display: block;\n }\n\n .main-content[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .tab-section[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .widget-card[_ngcontent-%COMP%], \n .cost-kpi-card[_ngcontent-%COMP%], \n .kpi-card[_ngcontent-%COMP%] {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid var(--mj-border-default);\n }\n\n .data-table[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n}\n\n\n\n\n\n\n\n.co-occurrence-section[_ngcontent-%COMP%] {\n max-height: 500px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.co-occurrence-section[_ngcontent-%COMP%] .table-scroll[_ngcontent-%COMP%] {\n overflow-y: auto;\n max-height: 400px;\n flex: 1;\n min-height: 0;\n}\n\n.co-occurrence-section[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] {\n max-height: 200px;\n overflow: hidden;\n}\n\n.co-occurrence-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.co-occurrence-staleness[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}"] });
4237
+ i0.ɵɵadvance(3);
4238
+ i0.ɵɵproperty("Label", ctx.PipelineStatusText)("Variant", ctx.PipelineStatusOk ? "success" : "error");
4239
+ i0.ɵɵadvance();
4240
+ i0.ɵɵproperty("Flex", true)("Padding", false);
4241
+ i0.ɵɵadvance();
4242
+ i0.ɵɵconditional(ctx.IsLoading ? 5 : 6);
4243
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, i3.MJLeftNavComponent, i3.MJLeftNavContentComponent, i3.MJStatBadgeComponent], styles: ["\n\n\n\n\n.analytics-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 400px;\n}\n\n\n\n\n\n\n\n\n.analytics-layout[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n\n.trending-section[_ngcontent-%COMP%] {\n padding: 12px 16px 16px;\n}\n\n.trending-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n margin: 0 0 10px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.tag-cloud[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 6px;\n line-height: 1.7;\n}\n\n.tag-cloud[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: opacity 0.15s;\n}\n\n.tag-cloud[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:hover {\n opacity: 0.7;\n}\n\n.no-trending[_ngcontent-%COMP%] {\n color: var(--mj-text-muted) !important;\n font-size: 12px !important;\n font-style: italic;\n}\n\n.pipeline-status[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.status-dot[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--mj-status-success);\n flex-shrink: 0;\n}\n\n.status-dot-error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-width: 0;\n}\n\n.tab-section[_ngcontent-%COMP%] {\n padding: 28px 32px 40px;\n}\n\n.tab-section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 2px solid var(--mj-brand-primary);\n}\n\n.tab-section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n}\n\n.tab-section-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n\n\n.filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n\n.date-chips[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.date-chip[_ngcontent-%COMP%] {\n padding: 6px 14px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface);\n cursor: pointer;\n border: none;\n border-right: 1px solid var(--mj-border-default);\n transition: all 0.15s;\n font-family: inherit;\n}\n\n.date-chip[_ngcontent-%COMP%]:last-child {\n border-right: none;\n}\n\n.date-chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.date-chip.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-dropdown[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-family: inherit;\n}\n\n\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px 18px;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.1;\n}\n\n.kpi-delta[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n margin-top: 4px;\n color: var(--mj-text-muted);\n}\n\n.kpi-delta.up[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.kpi-delta.down[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.kpi-sparkline[_ngcontent-%COMP%] {\n flex-shrink: 0;\n margin-left: 12px;\n margin-top: 6px;\n}\n\n\n\n.cards-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n}\n\n.widget-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 18px 20px;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.widget-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.widget-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 14px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.widget-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n.widget-empty[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n padding: 20px;\n}\n\n.widget-footnote[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 10px;\n}\n\n\n\n.bar-chart[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n height: 120px;\n padding-top: 10px;\n}\n\n.bar-col[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.bar[_ngcontent-%COMP%] {\n width: 100%;\n border-radius: 4px 4px 0 0;\n transition: height 0.3s;\n min-height: 2px;\n}\n\n.bar-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n}\n\n.bar-value[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n\n\n.rings-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.ring-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n}\n\n.ring-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.ring-stat[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n\n\n.gauge-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n margin-bottom: 8px;\n}\n\n\n\n.mini-histogram[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 32px;\n justify-content: center;\n}\n\n.mini-hist-bar[_ngcontent-%COMP%] {\n width: 14px;\n border-radius: 2px;\n}\n\n.mini-hist-label[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n.h-bar-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.h-bar-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.h-bar-name[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 100px;\n flex-shrink: 0;\n text-align: right;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.h-bar-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.h-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 36px;\n}\n\n\n\n.throughput-bars[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 4px;\n height: 110px;\n margin-bottom: 22px;\n}\n\n.tp-bar[_ngcontent-%COMP%] {\n flex: 1;\n border-radius: 3px 3px 0 0;\n position: relative;\n min-height: 4px;\n}\n\n.tp-bar-label[_ngcontent-%COMP%] {\n position: absolute;\n bottom: -18px;\n left: 50%;\n transform: translateX(-50%);\n font-size: 8px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n\n\n.taxonomy-ring-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n}\n\n.taxonomy-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.tax-stat[_ngcontent-%COMP%] {\n flex: 1;\n text-align: center;\n padding: 8px 4px;\n border-radius: 6px;\n font-size: 20px;\n font-weight: 700;\n}\n\n.tax-stat[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 500;\n margin-top: 2px;\n}\n\n\n\n.legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 10px;\n flex-wrap: wrap;\n justify-content: center;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.legend-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n flex-shrink: 0;\n}\n\n\n\n.table-scroll[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.data-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 12.5px;\n}\n\n.data-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 10px 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted);\n border-bottom: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n white-space: nowrap;\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n.data-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.data-table[_ngcontent-%COMP%] .num[_ngcontent-%COMP%] {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.muted[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.monospace-cell[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.weight-bar[_ngcontent-%COMP%] {\n display: inline-block;\n height: 6px;\n border-radius: 3px;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n}\n\n.badge-success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.badge-warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.badge-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 12%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n\n\n.sub-section[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.sub-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.sub-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 2rem;\n text-align: center;\n gap: 0.75rem;\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2.5rem;\n color: var(--mj-text-disabled);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.85rem;\n max-width: 400px;\n}\n\n\n\n.drill-down-panel[_ngcontent-%COMP%] {\n margin-top: 16px;\n margin-bottom: 16px;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-brand-primary);\n border-radius: 10px;\n overflow: hidden;\n animation: _ngcontent-%COMP%_slideDown 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 600px;\n }\n}\n\n.drill-down-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.drill-down-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-down-close[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.drill-down-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.drill-down-table-wrap[_ngcontent-%COMP%] {\n max-height: 400px;\n overflow-y: auto;\n padding: 8px;\n}\n\n.drill-action-col[_ngcontent-%COMP%] {\n width: 40px;\n text-align: center;\n padding: 6px !important;\n}\n\n.drill-open-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-open-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.drill-down-header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-export-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-export-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.sub-section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 0;\n}\n\n.sub-section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.drill-down-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n\n\n.stacked-bar-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stacked-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stacked-label[_ngcontent-%COMP%] {\n width: 90px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stacked-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 22px;\n display: flex;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stacked-seg[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 20px;\n}\n\n\n\n.v-bar-chart[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 24px;\n height: 140px;\n padding-top: 10px;\n justify-content: center;\n}\n\n.v-bar-col[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n min-width: 60px;\n}\n\n.v-bar[_ngcontent-%COMP%] {\n width: 48px;\n border-radius: 4px 4px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-inverse);\n}\n\n.v-bar-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 8px;\n text-align: center;\n}\n\n.chart-footnote[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 14px;\n}\n\n\n\n.two-col[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 20px;\n}\n\n\n\n.source-selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n\n\n.quality-bands[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.quality-band-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.quality-band-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 65px;\n text-align: right;\n flex-shrink: 0;\n}\n\n.quality-band-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.quality-band-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 30px;\n}\n\n.source-quality-note[_ngcontent-%COMP%] {\n margin-top: 14px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.source-health-grid[_ngcontent-%COMP%] {\n display: grid;\n gap: 12px;\n}\n\n.source-health-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border-top: 3px solid;\n}\n\n.health-card-name[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.health-card-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n}\n\n.health-card-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.pipeline-throughput-bars[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 110px;\n}\n\n.pipeline-bar[_ngcontent-%COMP%] {\n flex: 1;\n border-radius: 2px 2px 0 0;\n min-height: 3px;\n}\n\n.pipeline-date-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 6px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n\n\n.stage-bars[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.stage-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stage-name[_ngcontent-%COMP%] {\n width: 80px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-track[_ngcontent-%COMP%] {\n flex: 1;\n height: 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stage-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n}\n\n.stage-time[_ngcontent-%COMP%] {\n width: 50px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-summary[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 14px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.stage-warning[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.success-rate-display[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n gap: 48px;\n padding: 20px;\n}\n\n.success-rate-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.success-rate-value[_ngcontent-%COMP%] {\n font-size: 32px;\n font-weight: 700;\n line-height: 1.1;\n}\n\n.success-rate-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n.progress-track[_ngcontent-%COMP%] {\n width: 100px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n.progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n}\n\n.progress-text[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n.error-log[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.error-entry[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 4%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-error);\n border-radius: 0 6px 6px 0;\n font-size: 12px;\n}\n\n.error-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n white-space: nowrap;\n flex-shrink: 0;\n width: 130px;\n}\n\n.error-source[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n flex-shrink: 0;\n width: 120px;\n}\n\n.error-msg[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n\n\n.histogram[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n height: 130px;\n padding-bottom: 24px;\n}\n\n.hist-bar-col[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.hist-bar[_ngcontent-%COMP%] {\n width: 100%;\n border-radius: 3px 3px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-height: 2px;\n}\n\n.hist-label[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n.confidence-stats[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n gap: 8px;\n}\n\n\n\n.grouped-bar-chart[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 20px;\n height: 140px;\n justify-content: center;\n}\n\n.grouped-col[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.grouped-bars[_ngcontent-%COMP%] {\n display: flex;\n gap: 3px;\n align-items: flex-end;\n height: 100%;\n}\n\n.g-bar[_ngcontent-%COMP%] {\n width: 18px;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n}\n\n.grouped-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n\n\n.accuracy-chart[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n margin: 0 10px;\n}\n\n.accuracy-y-labels[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n height: 110px;\n}\n\n.accuracy-area[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n height: 110px;\n border-left: 1px solid var(--mj-border-default);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.accuracy-grid-line[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n right: 0;\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.accuracy-svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.accuracy-x-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 0 40px 0 40px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n.accuracy-trend-text[_ngcontent-%COMP%] {\n text-align: center;\n margin-top: 10px;\n font-size: 12px;\n color: var(--mj-status-success);\n}\n\n\n\n.model-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.model-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border: 1px solid var(--mj-border-default);\n}\n\n.model-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n}\n\n.model-score[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n line-height: 1;\n}\n\n.model-detail[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n.model-recommendation[_ngcontent-%COMP%] {\n margin-top: 14px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n\n\n@media (max-width: 1200px) {\n .cards-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .model-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .analytics-layout[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .analytics-sidebar[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .sidebar-nav[_ngcontent-%COMP%] {\n flex-direction: row;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n border-left: none;\n border-bottom: 3px solid transparent;\n white-space: nowrap;\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .trending-section[_ngcontent-%COMP%], \n .sidebar-divider[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-section[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .cards-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .two-col[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .cost-kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n\n.tab-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.cost-kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.cost-kpi-card[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n align-items: center;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 18px 20px;\n transition: box-shadow 0.15s ease;\n}\n\n.cost-kpi-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.cost-kpi-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n flex-shrink: 0;\n}\n\n.cost-kpi-value[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.2;\n}\n\n.cost-kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.cost-kpi-sub[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.empty-state-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n\n\n\n@media print {\n .analytics-sidebar[_ngcontent-%COMP%], \n .filter-bar[_ngcontent-%COMP%], \n .tab-header-actions[_ngcontent-%COMP%], \n .drill-down-close[_ngcontent-%COMP%], \n .drill-export-btn[_ngcontent-%COMP%], \n .drill-open-btn[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .analytics-layout[_ngcontent-%COMP%] {\n display: block;\n }\n\n .main-content[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .tab-section[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .widget-card[_ngcontent-%COMP%], \n .cost-kpi-card[_ngcontent-%COMP%], \n .kpi-card[_ngcontent-%COMP%] {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid var(--mj-border-default);\n }\n\n .data-table[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n}\n\n\n\n\n\n\n\n.co-occurrence-section[_ngcontent-%COMP%] {\n max-height: 500px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.co-occurrence-section[_ngcontent-%COMP%] .table-scroll[_ngcontent-%COMP%] {\n overflow-y: auto;\n max-height: 400px;\n flex: 1;\n min-height: 0;\n}\n\n.co-occurrence-section[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] {\n max-height: 200px;\n overflow: hidden;\n}\n\n.co-occurrence-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.co-occurrence-staleness[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}"] });
4253
4244
  };
4254
4245
  AnalyticsResourceComponent = AnalyticsResourceComponent_1 = __decorate([
4255
4246
  RegisterClass(BaseResourceComponent, 'AnalyticsResource')
@@ -4257,9 +4248,9 @@ AnalyticsResourceComponent = AnalyticsResourceComponent_1 = __decorate([
4257
4248
  export { AnalyticsResourceComponent };
4258
4249
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsResourceComponent, [{
4259
4250
  type: Component,
4260
- args: [{ standalone: false, selector: 'app-analytics-resource', template: "@if (IsLoading) {\n <div class=\"analytics-loading\">\n <mj-loading text=\"Loading analytics data...\" size=\"medium\"></mj-loading>\n </div>\n} @else {\n <div class=\"analytics-layout\">\n <!-- =============== LEFT SIDEBAR =============== -->\n <aside class=\"analytics-sidebar\">\n <div class=\"sidebar-header\">\n <h2><i class=\"fa-solid fa-chart-line\"></i> Analytics</h2>\n </div>\n\n <nav class=\"sidebar-nav\">\n @for (nav of NavItems; track nav.ID) {\n <button\n class=\"nav-item\"\n [class.active]=\"ActiveTab === nav.ID\"\n (click)=\"SelectTab(nav.ID)\"\n >\n <i [class]=\"nav.Icon\"></i> {{ nav.Label }}\n </button>\n }\n </nav>\n\n <div class=\"sidebar-divider\"></div>\n\n <!-- Trending Tags Cloud -->\n <div class=\"trending-section\">\n <h3><i class=\"fa-solid fa-arrow-trend-up\"></i> Trending Tags</h3>\n <div class=\"tag-cloud\">\n @for (tag of TrendingTags; track tag.Name) {\n <span [style.font-size.px]=\"tag.Size\" [style.font-weight]=\"tag.Weight\">{{ tag.Name }}</span>\n }\n @if (TrendingTags.length === 0) {\n <span class=\"no-trending\">No trending tags yet</span>\n }\n </div>\n </div>\n\n <!-- Pipeline Status -->\n <div class=\"pipeline-status\">\n <span class=\"status-dot\" [class.status-dot-error]=\"!PipelineStatusOk\"></span>\n {{ PipelineStatusText }}\n </div>\n </aside>\n\n <!-- =============== MAIN CONTENT =============== -->\n <div class=\"main-content\">\n\n <!-- ====================================================== -->\n <!-- TAB 1: OVERVIEW -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'overview') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-grip\"></i>\n <h1>Overview</h1>\n </div>\n\n <!-- Filter Bar -->\n <div class=\"filter-bar\">\n <div class=\"date-chips\">\n @for (range of DateRanges; track range.Label) {\n <button\n class=\"date-chip\"\n [class.active]=\"ActiveDateRange === range.Label\"\n (click)=\"SetDateRange(range.Label)\"\n >{{ range.Label }}</button>\n }\n </div>\n <select class=\"filter-dropdown\" [ngModel]=\"EntityFilter\" (ngModelChange)=\"SetEntityFilter($event)\">\n @for (opt of EntityFilterOptions; track opt) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n\n <!-- KPI Cards -->\n <div class=\"kpi-row\">\n @for (kpi of KPIs; track kpi.Label) {\n <div class=\"kpi-card\" (click)=\"OpenDrillDown(kpi.DrillDownKey)\">\n <div>\n <div class=\"kpi-label\">{{ kpi.Label }}</div>\n <div class=\"kpi-value\">{{ kpi.Value }}</div>\n <div class=\"kpi-delta\" [class.up]=\"kpi.DeltaDirection === 'up'\" [class.down]=\"kpi.DeltaDirection === 'down'\">\n @if (kpi.DeltaDirection === 'up') {\n <i class=\"fa-solid fa-arrow-up\" style=\"font-size:9px\"></i>\n } @else if (kpi.DeltaDirection === 'down') {\n <i class=\"fa-solid fa-arrow-down\" style=\"font-size:9px\"></i>\n }\n {{ kpi.Delta }}\n </div>\n </div>\n <div class=\"kpi-sparkline\">\n <svg width=\"64\" height=\"28\" viewBox=\"0 0 64 28\">\n <polyline [attr.points]=\"kpi.SparklinePoints\" fill=\"none\" [attr.stroke]=\"kpi.SparklineColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </div>\n }\n </div>\n\n <!-- KPI Drill-Down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('kpi-')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Detail View</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead>\n <tr>\n @for (col of DrillDownColumns; track col) {\n <th>{{ col }}</th>\n }\n @if (DrillDownHasActions) {\n <th class=\"drill-action-col\"></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) {\n <td>{{ row[col] }}</td>\n }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No data available</div>\n }\n </div>\n }\n\n <!-- Widget Cards Grid (2x3) -->\n <div class=\"cards-grid\">\n\n <!-- Card 1: Tag Growth -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('tagGrowth')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-chart-line\"></i> Tag Growth</div>\n <div class=\"bar-chart\">\n @for (bar of TagGrowthData; track bar.Label) {\n <div class=\"bar-col\">\n <div class=\"bar-value\">{{ bar.Count }}</div>\n <div class=\"bar\" [style.height.%]=\"bar.Percentage\" style=\"background:var(--mj-brand-primary)\" [style.opacity]=\"0.5 + (bar.Percentage / 200)\"></div>\n <div class=\"bar-label\">{{ bar.Label }}</div>\n </div>\n }\n </div>\n </div>\n\n <!-- Card 2: Content Coverage -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('contentCoverage')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-bullseye\"></i> Content Coverage</div>\n <div class=\"rings-grid\">\n @for (entity of CoverageData; track entity.Name) {\n <div class=\"ring-item\">\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <circle cx=\"24\" cy=\"24\" r=\"20\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"5\"/>\n <circle cx=\"24\" cy=\"24\" r=\"20\" fill=\"none\" [attr.stroke]=\"entity.Color\" stroke-width=\"5\"\n [attr.stroke-dasharray]=\"entity.StrokeDash\" stroke-dashoffset=\"31.4\" stroke-linecap=\"round\"\n transform=\"rotate(-90 24 24)\"/>\n <text x=\"24\" y=\"26\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"700\" fill=\"var(--mj-text-primary)\">{{ entity.Percentage }}%</text>\n </svg>\n <div>\n <div class=\"ring-label\">{{ entity.Name }}</div>\n <div class=\"ring-stat\">{{ FormatNumber(entity.Tagged) }} / {{ FormatNumber(entity.Total) }}</div>\n </div>\n </div>\n }\n @if (CoverageData.length === 0) {\n <div class=\"widget-empty\">No content types found</div>\n }\n </div>\n </div>\n\n <!-- Card 3: Quality Score Gauge -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('qualityScore')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-gauge-high\"></i> Quality Score</div>\n <div class=\"gauge-container\">\n <svg width=\"180\" height=\"110\" viewBox=\"0 0 180 110\">\n <!-- Background arc -->\n <path d=\"M 20 95 A 70 70 0 0 1 160 95\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"14\" stroke-linecap=\"round\"/>\n <!-- Zone arcs -->\n <path d=\"M 20 95 A 70 70 0 0 1 48.6 35.2\" fill=\"none\" stroke=\"var(--mj-status-error)\" stroke-width=\"14\" stroke-linecap=\"round\" opacity=\"0.3\"/>\n <path d=\"M 48.6 35.2 A 70 70 0 0 1 118 28\" fill=\"none\" stroke=\"var(--mj-status-warning)\" stroke-width=\"14\" opacity=\"0.3\"/>\n <path d=\"M 118 28 A 70 70 0 0 1 160 95\" fill=\"none\" stroke=\"var(--mj-status-success)\" stroke-width=\"14\" stroke-linecap=\"round\" opacity=\"0.3\"/>\n <!-- Score text -->\n <text x=\"90\" y=\"88\" text-anchor=\"middle\" font-size=\"26\" font-weight=\"800\" fill=\"var(--mj-text-primary)\">{{ QualityScore }}</text>\n <text x=\"90\" y=\"105\" text-anchor=\"middle\" font-size=\"10\" fill=\"var(--mj-text-muted)\">out of 100</text>\n <text x=\"28\" y=\"108\" font-size=\"8\" fill=\"var(--mj-text-muted)\">0</text>\n <text x=\"86\" y=\"18\" font-size=\"8\" fill=\"var(--mj-text-muted)\">50</text>\n <text x=\"155\" y=\"108\" font-size=\"8\" fill=\"var(--mj-text-muted)\">100</text>\n </svg>\n </div>\n <!-- Mini confidence histogram -->\n <div class=\"mini-histogram\">\n @for (bin of MiniConfidenceBins; track TrackByIndex($index)) {\n <div class=\"mini-hist-bar\" [style.height.px]=\"bin.Height\" [style.background]=\"bin.Color\" [title]=\"bin.Title\"></div>\n }\n </div>\n <div class=\"mini-hist-label\">Confidence Distribution</div>\n </div>\n\n <!-- Card 4: Source Performance -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('sourcePerformance')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-ranking-star\"></i> Source Performance</div>\n <div class=\"h-bar-list\">\n @for (source of SourcePerfData; track source.Name) {\n <div class=\"h-bar-row\">\n <div class=\"h-bar-name\">{{ source.Name }}</div>\n <div class=\"h-bar-track\">\n <div class=\"h-bar-fill\" [style.width.%]=\"source.Percentage\" [style.background]=\"source.Color\">{{ source.AvgTagsPerItem }}</div>\n </div>\n </div>\n }\n @if (SourcePerfData.length === 0) {\n <div class=\"widget-empty\">No source data</div>\n }\n </div>\n <div class=\"widget-footnote\">Average tags per item</div>\n </div>\n\n <!-- Card 5: Daily Throughput -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('dailyThroughput')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-bolt\"></i> Daily Throughput</div>\n <div class=\"throughput-bars\">\n @for (day of ThroughputData; track day.Label) {\n <div class=\"tp-bar\"\n [style.height.%]=\"day.Percentage\"\n [style.background]=\"day.IsError ? 'var(--mj-status-error)' : 'var(--mj-status-success)'\"\n >\n <span class=\"tp-bar-label\">{{ day.Label }}</span>\n </div>\n }\n </div>\n <div class=\"legend\">\n <div class=\"legend-item\"><div class=\"legend-dot\" style=\"background:var(--mj-status-success)\"></div> Success</div>\n <div class=\"legend-item\"><div class=\"legend-dot\" style=\"background:var(--mj-status-error)\"></div> Failures</div>\n </div>\n </div>\n\n <!-- Card 6: Taxonomy Health -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('taxonomyHealth')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-sitemap\"></i> Taxonomy Health</div>\n <div class=\"taxonomy-ring-container\">\n <svg width=\"140\" height=\"140\" viewBox=\"0 0 140 140\">\n <circle cx=\"70\" cy=\"70\" r=\"54\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"18\"/>\n @for (seg of TaxonomyRingSegments; track TrackByIndex($index)) {\n <circle cx=\"70\" cy=\"70\" r=\"54\" fill=\"none\"\n [attr.stroke]=\"seg.Color\" stroke-width=\"18\"\n [attr.stroke-dasharray]=\"seg.StrokeDash\"\n [attr.stroke-dashoffset]=\"seg.StrokeOffset\"\n transform=\"rotate(-90 70 70)\"/>\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" font-size=\"22\" font-weight=\"800\" fill=\"var(--mj-text-primary)\">{{ TaxonomyTotal }}</text>\n <text x=\"70\" y=\"82\" text-anchor=\"middle\" font-size=\"10\" fill=\"var(--mj-text-muted)\">total tags</text>\n </svg>\n </div>\n <div class=\"taxonomy-stats\">\n @for (stat of TaxonomyStats; track stat.Label) {\n <div class=\"tax-stat\" [style.background]=\"stat.BgColor\" [style.color]=\"stat.Color\">\n {{ stat.Count }}<small>{{ stat.Label }}</small>\n </div>\n }\n </div>\n </div>\n\n </div><!-- /cards-grid -->\n\n <!-- Widget Drill-Down -->\n @if (DrillDownTarget && !DrillDownTarget.startsWith('kpi-')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> {{ DrillDownTarget }} Detail</span>\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead>\n <tr>\n @for (col of DrillDownColumns; track col) {\n <th>{{ col }}</th>\n }\n @if (DrillDownHasActions) {\n <th class=\"drill-action-col\"></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) {\n <td>{{ row[col] }}</td>\n }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No data available</div>\n }\n </div>\n }\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 2: TAGS -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'tags') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-tags\"></i>\n <h1>Tags</h1>\n </div>\n\n <!-- Top 20 Tags Table -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <div class=\"sub-section-header\">\n <h3><i class=\"fa-solid fa-trophy\"></i> Top 20 Tags</h3>\n @if (TopTags.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportTabDataCSV('top-tags')\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n }\n </div>\n @if (TopTags.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>Tag Name</th>\n <th class=\"num\">Usage Count</th>\n <th>Avg Weight</th>\n <th>Trend</th>\n <th>Top Entity</th>\n <th>First Seen</th>\n </tr>\n </thead>\n <tbody>\n @for (tag of TopTags; track tag.Name) {\n <tr style=\"cursor:pointer\" (click)=\"OpenDrillDown('tag-row:' + tag.Name)\">\n <td>{{ tag.Rank }}</td>\n <td><strong>{{ tag.Name }}</strong></td>\n <td class=\"num\">{{ FormatNumber(tag.UsageCount) }}</td>\n <td>\n <span class=\"weight-bar\" [style.width.px]=\"tag.WeightBarWidth\" [style.background]=\"tag.WeightBarColor\"></span>\n {{ tag.AvgWeight }}\n </td>\n <td>\n <svg width=\"48\" height=\"16\">\n <polyline [attr.points]=\"tag.TrendPoints\" fill=\"none\" [attr.stroke]=\"tag.TrendColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n </td>\n <td>{{ tag.TopEntity }}</td>\n <td class=\"muted\">{{ tag.FirstSeen }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-tags\"></i>\n <p>No tag data available yet. Process content to generate tags.</p>\n </div>\n }\n </div>\n\n <!-- D10: Tags tab drill-down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('tag-row:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Content Items Tagged \"{{ DrillDownTarget.replace('tag-row:', '') }}\"</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No items found for this tag</div>\n }\n </div>\n }\n\n <!-- Tag Distribution by Entity -->\n @if (EntityDistribution.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-bar\"></i> Tag Distribution by Entity</h3>\n <div class=\"stacked-bar-chart\">\n @for (row of EntityDistribution; track row.EntityName) {\n <div class=\"stacked-row\">\n <div class=\"stacked-label\">{{ row.EntityName }}</div>\n <div class=\"stacked-track\">\n @for (seg of row.Segments; track TrackByIndex($index)) {\n <div class=\"stacked-seg\" [style.width.%]=\"seg.Percentage\" [style.background]=\"seg.Color\" [title]=\"seg.Label + ': ' + seg.Percentage + '%'\">{{ seg.Label }}</div>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"legend\" style=\"margin-top:12px\">\n @for (item of DistributionLegend; track item.Label) {\n <div class=\"legend-item\"><div class=\"legend-dot\" [style.background]=\"item.Color\"></div> {{ item.Label }}</div>\n }\n </div>\n </div>\n }\n\n <!-- Tag Depth Distribution -->\n @if (TagDepthBars.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-layer-group\"></i> Tag Depth Distribution</h3>\n <div class=\"v-bar-chart\">\n @for (bar of TagDepthBars; track bar.Label) {\n <div class=\"v-bar-col\">\n <div class=\"v-bar\" [style.height.%]=\"bar.Percentage\" style=\"background:var(--mj-brand-primary)\" [style.min-height.px]=\"bar.Count > 0 ? 24 : 0\">{{ bar.Count }}</div>\n <div class=\"v-bar-label\">{{ bar.Label }}</div>\n </div>\n }\n </div>\n <div class=\"chart-footnote\">\n Taxonomy hierarchy depth -- Most tags at depth 2-3 indicating a healthy mid-level structure\n </div>\n </div>\n }\n\n <!-- Frequently Paired Tags (Co-Occurrence) -->\n <div class=\"sub-section co-occurrence-section\">\n <div class=\"sub-section-header\">\n <h3><i class=\"fa-solid fa-link\"></i> Frequently Paired Tags</h3>\n <div class=\"co-occurrence-actions\">\n @if (CoOccurrenceLastComputed) {\n <span class=\"co-occurrence-staleness\" title=\"Last computed timestamp\">\n <i class=\"fa-regular fa-clock\"></i>\n Last computed: {{ CoOccurrenceLastComputed }}\n </span>\n }\n <button class=\"drill-export-btn\" (click)=\"RecomputeCoOccurrence()\" [disabled]=\"IsRecomputingCoOccurrence\" title=\"Recompute co-occurrence data\">\n @if (IsRecomputingCoOccurrence) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Computing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Recompute\n }\n </button>\n </div>\n </div>\n @if (CoOccurrencePairs.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>Tag A</th>\n <th>Tag B</th>\n <th class=\"num\">Co-Occurrences</th>\n <th>Frequency</th>\n </tr>\n </thead>\n <tbody>\n @for (pair of CoOccurrencePairs; track pair.TagAName + pair.TagBName; let i = $index) {\n <tr>\n <td class=\"muted\">{{ i + 1 }}</td>\n <td><strong>{{ pair.TagAName }}</strong></td>\n <td><strong>{{ pair.TagBName }}</strong></td>\n <td class=\"num\">{{ FormatNumber(pair.Count) }}</td>\n <td>\n <span class=\"weight-bar\" [style.width.px]=\"pair.BarWidth\" style=\"background: var(--mj-status-info)\"></span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-link\"></i>\n <p>No co-occurrence data available yet. Process content and recompute to see which tags frequently appear together.</p>\n </div>\n }\n </div>\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 3: SOURCES -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'sources') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-database\"></i>\n <h1>Sources</h1>\n </div>\n\n <!-- Source Comparison Table -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <h3><i class=\"fa-solid fa-table\"></i> Source Comparison</h3>\n @if (SourceComparison.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Source Name</th>\n <th>Type</th>\n <th class=\"num\">Items</th>\n <th class=\"num\">Tags Generated</th>\n <th class=\"num\">Avg Tags/Item</th>\n <th class=\"num\">Avg Weight</th>\n <th>Last Run</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n @for (source of SourceComparison; track source.Name) {\n <tr (click)=\"SelectSource(source.Name); OpenDrillDown('source-row:' + source.Name)\" style=\"cursor:pointer\" [class.source-selected]=\"SelectedSourceName === source.Name\">\n <td><strong>{{ source.Name }}</strong></td>\n <td><i [class]=\"source.TypeIcon\" [style.color]=\"source.TypeColor\" style=\"margin-right:4px\"></i> {{ source.Type }}</td>\n <td class=\"num\">{{ FormatNumber(source.Items) }}</td>\n <td class=\"num\">{{ FormatNumber(source.TagsGenerated) }}</td>\n <td class=\"num\">{{ source.AvgTagsPerItem }}</td>\n <td class=\"num\">{{ source.AvgWeight }}</td>\n <td class=\"muted\">{{ source.LastRun }}</td>\n <td><span class=\"badge\" [class]=\"source.StatusClass\"><i class=\"fa-solid fa-circle\" style=\"font-size:6px;margin-right:3px\"></i> {{ source.Status }}</span></td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No content sources configured yet.</p>\n </div>\n }\n </div>\n\n <!-- D10: Sources tab drill-down (recent runs) -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('source-row:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Recent Runs: {{ DrillDownTarget.replace('source-row:', '') }}</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\"><i class=\"fa-solid fa-download\"></i> CSV</button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No run data for this source</div>\n }\n </div>\n }\n\n <!-- Per-Source Detail -->\n @if (SelectedSourceName && SourceComparison.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-area\"></i> Source Detail: {{ SelectedSourceName }}</h3>\n <div class=\"two-col\">\n <!-- Items Processed Over Time -->\n <div class=\"widget-card\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-chart-bar\"></i> Items Processed (Last 8 Weeks)</div>\n <div class=\"bar-chart\" style=\"height:100px\">\n @for (bar of SourceWeeklyBars; track bar.Label) {\n <div class=\"bar-col\">\n <div class=\"bar-value\" style=\"font-size:9px\">{{ bar.Value }}</div>\n <div class=\"bar\" [style.height.%]=\"bar.Percentage\" style=\"background:var(--mj-brand-primary)\" [style.opacity]=\"0.5 + (bar.Percentage / 200)\"></div>\n <div class=\"bar-label\">{{ bar.Label }}</div>\n </div>\n }\n </div>\n </div>\n\n <!-- Tag Quality Distribution -->\n <div class=\"widget-card\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-star-half-stroke\"></i> Tag Quality Distribution</div>\n <div class=\"quality-bands\">\n @for (band of SourceQualityBands; track band.Label) {\n <div class=\"quality-band-row\">\n <span class=\"quality-band-label\">{{ band.Label }}</span>\n <div class=\"quality-band-track\">\n <div class=\"quality-band-fill\" [style.width.%]=\"band.Percentage\" [style.background]=\"band.Color\">{{ band.Percentage }}%</div>\n </div>\n </div>\n }\n </div>\n <div class=\"source-quality-note\">\n <i class=\"fa-solid fa-circle-info\" style=\"color:var(--mj-status-info);margin-right:4px\"></i>\n {{ SourceQualityNote }}\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Source Health -->\n @if (SourceHealthCards.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-heart-pulse\"></i> Source Health Summary</h3>\n <div class=\"source-health-grid\" [style.grid-template-columns]=\"'repeat(' + SourceHealthCards.length + ', 1fr)'\">\n @for (card of SourceHealthCards; track card.Name) {\n <div class=\"source-health-card\" [style.border-top-color]=\"card.Color\">\n <div class=\"health-card-name\">{{ card.Name }}</div>\n <div class=\"health-card-value\" [style.color]=\"card.Color\">{{ card.Uptime }}%</div>\n <div class=\"health-card-label\">uptime</div>\n </div>\n }\n </div>\n </div>\n }\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 4: PIPELINE -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'pipeline') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-gears\"></i>\n <h1>Pipeline</h1>\n </div>\n\n <!-- Pipeline Throughput Chart -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <h3><i class=\"fa-solid fa-chart-bar\"></i> Pipeline Throughput (Last 30 Days)</h3>\n <div class=\"widget-card\">\n <div class=\"pipeline-throughput-bars\">\n @for (bar of PipelineThroughputBars; track TrackByIndex($index)) {\n <div class=\"pipeline-bar\"\n [style.height.%]=\"bar.Percentage\"\n [style.background]=\"bar.IsError ? 'var(--mj-status-error)' : 'var(--mj-brand-primary)'\"\n [style.opacity]=\"bar.IsError ? 0.7 : (0.6 + bar.Percentage / 300)\"\n style=\"cursor:pointer\"\n (click)=\"OpenDrillDown('pipeline-throughput:' + $index)\"\n ></div>\n }\n </div>\n <div class=\"pipeline-date-labels\">\n @for (label of PipelineDateLabels; track label) {\n <span>{{ label }}</span>\n }\n </div>\n </div>\n </div>\n\n <!-- D10: Pipeline throughput drill-down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('pipeline-throughput:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Runs for Selected Day</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\"><i class=\"fa-solid fa-download\"></i> CSV</button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No runs for this day</div>\n }\n </div>\n }\n\n <!-- Processing Time Breakdown -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-stopwatch\"></i> Processing Time Breakdown (Avg per Item)</h3>\n <div class=\"widget-card\">\n <div class=\"stage-bars\">\n @for (stage of ProcessingStages; track stage.Name) {\n <div class=\"stage-row\">\n <div class=\"stage-name\">{{ stage.Name }}</div>\n <div class=\"stage-track\">\n <div class=\"stage-fill\" [style.width.%]=\"stage.Percentage\" [style.background]=\"stage.Color\">\n @if (stage.Percentage > 15) {\n {{ stage.Time }}s\n }\n </div>\n </div>\n <div class=\"stage-time\">{{ stage.Time }}s</div>\n </div>\n }\n </div>\n <div class=\"stage-summary\">\n <span><strong>Total avg:</strong> {{ TotalAvgProcessingTime }}s per item</span>\n @if (BottleneckStage) {\n <span class=\"stage-warning\">\n <i class=\"fa-solid fa-triangle-exclamation\" style=\"color:var(--mj-status-warning);margin-right:4px\"></i>\n {{ BottleneckStage }} stage is the bottleneck ({{ BottleneckPercent }}% of total time)\n </span>\n }\n </div>\n </div>\n </div>\n\n <!-- Success Rate -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-line\"></i> Success Rate Overview</h3>\n <div class=\"widget-card\">\n <div class=\"success-rate-display\">\n <div class=\"success-rate-stat\">\n <div class=\"success-rate-value\" style=\"color:var(--mj-status-success)\">\n {{ rawProcessRuns.length > 0 ? (100 - (ErrorLog.length / rawProcessRuns.length * 100)).toFixed(1) : '100' }}%\n </div>\n <div class=\"success-rate-label\">Success Rate</div>\n </div>\n <div class=\"success-rate-stat\">\n <div class=\"success-rate-value\" style=\"color:var(--mj-status-error)\">\n {{ rawProcessRuns.length > 0 ? (ErrorLog.length / rawProcessRuns.length * 100).toFixed(1) : '0' }}%\n </div>\n <div class=\"success-rate-label\">Failure Rate</div>\n </div>\n <div class=\"success-rate-stat\">\n <div class=\"success-rate-value\" style=\"color:var(--mj-text-primary)\">\n {{ FormatNumber(rawProcessRuns.length) }}\n </div>\n <div class=\"success-rate-label\">Total Runs</div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Active Runs Table -->\n @if (ActiveRuns.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-spinner\"></i> Active Runs</h3>\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Run ID</th>\n <th>Source</th>\n <th>Started</th>\n <th>Progress</th>\n <th>Stage</th>\n <th class=\"num\">Items</th>\n </tr>\n </thead>\n <tbody>\n @for (run of ActiveRuns; track run.RunID) {\n <tr>\n <td class=\"monospace-cell\">{{ run.RunID }}</td>\n <td>{{ run.Source }}</td>\n <td class=\"muted\">{{ run.Started }}</td>\n <td>\n <div class=\"progress-track\"><div class=\"progress-fill\" [style.width.%]=\"run.Progress\" style=\"background:var(--mj-brand-primary)\"></div></div>\n <span class=\"progress-text\">{{ run.Progress }}%</span>\n </td>\n <td><span class=\"badge\" [class]=\"run.StageClass\">{{ run.Stage }}</span></td>\n <td class=\"num\">{{ FormatNumber(run.Items) }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n\n <!-- Error Log -->\n @if (ErrorLog.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-triangle-exclamation\"></i> Recent Errors</h3>\n <div class=\"error-log\">\n @for (entry of ErrorLog; track TrackByIndex($index)) {\n <div class=\"error-entry\">\n <div class=\"error-time\">{{ entry.Time }}</div>\n <div class=\"error-source\">{{ entry.Source }}</div>\n <div class=\"error-msg\">{{ entry.Message }}</div>\n </div>\n }\n </div>\n </div>\n }\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 5: QUALITY -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'quality') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-circle-check\"></i>\n <h1>Quality</h1>\n </div>\n\n <!-- Confidence Distribution Histogram -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <h3><i class=\"fa-solid fa-chart-column\"></i> Confidence Distribution</h3>\n <div class=\"widget-card\">\n <div class=\"histogram\">\n @for (bin of ConfidenceHistogram; track bin.Label) {\n <div class=\"hist-bar-col\" style=\"cursor:pointer\" (click)=\"OpenDrillDown('quality-bin:' + bin.Label)\">\n <div class=\"hist-bar\" [style.height.%]=\"bin.Percentage\" [style.background]=\"bin.Color\">\n @if (bin.Count > 0) { {{ bin.Count }} }\n </div>\n <div class=\"hist-label\">{{ bin.Label }}</div>\n </div>\n }\n </div>\n <div class=\"confidence-stats\">\n @for (stat of ConfidenceStats; track stat.Label) {\n <span><strong>{{ stat.Label }}:</strong> {{ stat.Value }}</span>\n }\n </div>\n </div>\n </div>\n\n <!-- D10: Quality bin drill-down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('quality-bin:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Items in Confidence Range {{ DrillDownTarget.replace('quality-bin:', '') }}</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\"><i class=\"fa-solid fa-download\"></i> CSV</button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No items in this confidence range</div>\n }\n </div>\n }\n\n <!-- Weight Distribution by Entity -->\n @if (WeightByEntity.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-weight-scale\"></i> Weight Distribution by Entity</h3>\n <div class=\"widget-card\">\n <div class=\"grouped-bar-chart\">\n @for (entity of WeightByEntity; track entity.Name) {\n <div class=\"grouped-col\">\n <div class=\"grouped-bars\">\n <div class=\"g-bar\" [style.height.%]=\"entity.High\" style=\"background:var(--mj-brand-primary)\" [title]=\"'High: ' + entity.High + '%'\"></div>\n <div class=\"g-bar\" [style.height.%]=\"entity.Med\" style=\"background:var(--mj-status-info)\" [title]=\"'Med: ' + entity.Med + '%'\"></div>\n <div class=\"g-bar\" [style.height.%]=\"entity.Low\" style=\"background:var(--mj-text-muted)\" [title]=\"'Low: ' + entity.Low + '%'\"></div>\n </div>\n <div class=\"grouped-label\">{{ entity.Name }}</div>\n </div>\n }\n </div>\n <div class=\"legend\" style=\"justify-content:center;margin-top:14px\">\n @for (item of WeightLegend; track item.Label) {\n <div class=\"legend-item\"><div class=\"legend-dot\" [style.background]=\"item.Color\"></div> {{ item.Label }}</div>\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Tag Accuracy Over Time -->\n @if (AccuracyLinePoints) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-line\"></i> Tag Accuracy Over Time (Weekly Avg Confidence)</h3>\n <div class=\"widget-card\">\n <div class=\"accuracy-chart\">\n <div class=\"accuracy-y-labels\">\n <div>1.0</div>\n <div>0.75</div>\n <div>0.50</div>\n <div>0.25</div>\n </div>\n <div class=\"accuracy-area\">\n <div class=\"accuracy-grid-line\" style=\"top:33%\"></div>\n <div class=\"accuracy-grid-line\" style=\"top:66%\"></div>\n <svg width=\"100%\" height=\"110\" viewBox=\"0 0 400 110\" preserveAspectRatio=\"none\" class=\"accuracy-svg\">\n <polyline [attr.points]=\"AccuracyLinePoints\"\n fill=\"none\" stroke=\"var(--mj-brand-primary)\" stroke-width=\"2.5\" vector-effect=\"non-scaling-stroke\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n @for (dot of AccuracyDots; track TrackByIndex($index)) {\n <circle [attr.cx]=\"dot.Cx\" [attr.cy]=\"dot.Cy\" r=\"3\" fill=\"var(--mj-brand-primary)\"/>\n }\n </svg>\n </div>\n </div>\n <div class=\"accuracy-x-labels\">\n @for (label of AccuracyMonthLabels; track label) {\n <span>{{ label }}</span>\n }\n </div>\n <div class=\"accuracy-trend-text\">\n <i class=\"fa-solid fa-arrow-trend-up\" style=\"margin-right:4px\"></i>\n {{ AccuracyTrendText }}\n </div>\n </div>\n </div>\n }\n\n <!-- Low-Confidence Tags Table -->\n @if (LowConfidenceTags.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-exclamation-triangle\"></i> Low-Confidence Tags (Avg Weight &lt; 0.4)</h3>\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Tag Name</th>\n <th class=\"num\">Avg Weight</th>\n <th class=\"num\">Usage Count</th>\n <th>Top Entity</th>\n <th>Suggested Action</th>\n </tr>\n </thead>\n <tbody>\n @for (tag of LowConfidenceTags; track tag.Name) {\n <tr>\n <td><strong>{{ tag.Name }}</strong></td>\n <td class=\"num\">{{ tag.AvgWeight }}</td>\n <td class=\"num\">{{ tag.UsageCount }}</td>\n <td>{{ tag.TopEntity }}</td>\n <td><span class=\"badge\" [class]=\"tag.ActionClass\">{{ tag.SuggestedAction }}</span></td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n\n <!-- Model Performance Comparison -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-robot\"></i> Model Performance Comparison</h3>\n <div class=\"model-grid\">\n @for (model of ModelComparisons; track model.Name) {\n <div class=\"model-card\">\n <div class=\"model-name\"><i [class]=\"model.Icon\" [style.color]=\"model.IconColor\" style=\"margin-right:4px\"></i> {{ model.Name }}</div>\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" style=\"margin:4px 0\">\n <circle cx=\"40\" cy=\"40\" r=\"32\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"8\"/>\n <circle cx=\"40\" cy=\"40\" r=\"32\" fill=\"none\" [attr.stroke]=\"model.ScoreColor\" stroke-width=\"8\"\n [attr.stroke-dasharray]=\"model.StrokeDash\" stroke-dashoffset=\"50\"\n transform=\"rotate(-90 40 40)\" stroke-linecap=\"round\"/>\n </svg>\n <div class=\"model-score\" [style.color]=\"model.ScoreColor\">{{ model.ScorePercentage }}%</div>\n <div class=\"model-detail\">Avg confidence: {{ model.AvgConfidence }}</div>\n <div class=\"model-detail\">{{ FormatNumber(model.TagsGenerated) }} tags generated</div>\n <div class=\"model-detail\" [style.color]=\"model.RoleColor\" style=\"font-weight:600\">{{ model.Role }}</div>\n </div>\n }\n </div>\n @if (ModelRecommendation) {\n <div class=\"model-recommendation\">\n <i class=\"fa-solid fa-lightbulb\" style=\"color:var(--mj-status-warning)\"></i>\n <div>\n <strong>Recommendation:</strong> {{ ModelRecommendation }}\n </div>\n </div>\n }\n </div>\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 6: COST & USAGE (D1) -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'cost') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h1>Cost & Usage</h1>\n <div class=\"tab-header-actions\">\n <button class=\"drill-export-btn\" (click)=\"ExportTabDataCSV('cost-usage')\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n <button class=\"drill-export-btn\" (click)=\"PrintCurrentTab()\" title=\"Print (PDF alternative)\">\n <i class=\"fa-solid fa-print\"></i> Print\n </button>\n </div>\n </div>\n\n <!-- Filter Bar -->\n <div class=\"filter-bar\">\n <div class=\"date-chips\">\n @for (range of DateRanges; track range.Label) {\n <button\n class=\"date-chip\"\n [class.active]=\"ActiveDateRange === range.Label\"\n (click)=\"SetDateRange(range.Label)\"\n >{{ range.Label }}</button>\n }\n </div>\n </div>\n\n <!-- KPI Cards -->\n @if (CostKPIs.length > 0) {\n <div class=\"cost-kpi-row\">\n @for (kpi of CostKPIs; track kpi.Label) {\n <div class=\"cost-kpi-card\">\n <div class=\"cost-kpi-icon\"><i [class]=\"kpi.Icon\"></i></div>\n <div>\n <div class=\"cost-kpi-value\">{{ kpi.Value }}</div>\n <div class=\"cost-kpi-label\">{{ kpi.Label }}</div>\n <div class=\"cost-kpi-sub\">{{ kpi.SubLabel }}</div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Per-Run Cost Table -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-table\"></i> Cost Breakdown by Run</h3>\n @if (CostPerRunRows.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Run ID</th>\n <th>Source</th>\n <th class=\"num\">Tokens</th>\n <th class=\"num\">Cost</th>\n <th>Started</th>\n </tr>\n </thead>\n <tbody>\n @for (row of CostPerRunRows; track row.RunID) {\n <tr>\n <td class=\"monospace-cell\">{{ row.RunID }}</td>\n <td>{{ row.Source }}</td>\n <td class=\"num\">{{ FormatNumber(row.Tokens) }}</td>\n <td class=\"num\">{{ row.Cost > 0 ? '$' + row.Cost.toFixed(4) : '$0.00' }}</td>\n <td class=\"muted\">{{ row.Started }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-coins\"></i>\n <p>No cost data available yet. Run the pipeline to generate cost and token usage metrics.</p>\n <p class=\"empty-state-hint\">Cost data is aggregated from ContentProcessRunDetail records linked to AI Prompt Runs.</p>\n </div>\n }\n </div>\n </section>\n }\n\n </div><!-- /main-content -->\n </div><!-- /analytics-layout -->\n}\n", styles: ["/* ===================================================================\n Analytics & Insights Resource Component\n ================================================================= */\n\n.analytics-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 400px;\n}\n\n.analytics-layout {\n display: flex;\n height: 100%;\n min-height: 600px;\n}\n\n/* ===== LEFT SIDEBAR ===== */\n.analytics-sidebar {\n width: 220px;\n min-width: 220px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n\n.sidebar-header {\n padding: 20px 16px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.sidebar-header h2 {\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n}\n\n.sidebar-header h2 i {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.sidebar-nav {\n padding: 8px 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.nav-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n font-size: 13.5px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n border: none;\n background: transparent;\n border-left: 3px solid transparent;\n transition: all 0.15s ease;\n text-align: left;\n width: 100%;\n font-family: inherit;\n}\n\n.nav-item:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.nav-item.active {\n border-left-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n font-weight: 600;\n}\n\n.nav-item i {\n width: 16px;\n text-align: center;\n font-size: 13px;\n}\n\n.sidebar-divider {\n height: 1px;\n background: var(--mj-border-default);\n margin: 8px 16px;\n}\n\n.trending-section {\n padding: 12px 16px 16px;\n}\n\n.trending-section h3 {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n margin: 0 0 10px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.tag-cloud {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 6px;\n line-height: 1.7;\n}\n\n.tag-cloud span {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: opacity 0.15s;\n}\n\n.tag-cloud span:hover {\n opacity: 0.7;\n}\n\n.no-trending {\n color: var(--mj-text-muted) !important;\n font-size: 12px !important;\n font-style: italic;\n}\n\n.pipeline-status {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--mj-status-success);\n flex-shrink: 0;\n}\n\n.status-dot-error {\n background: var(--mj-status-error);\n}\n\n/* ===== MAIN CONTENT ===== */\n.main-content {\n flex: 1;\n overflow-y: auto;\n min-width: 0;\n}\n\n.tab-section {\n padding: 28px 32px 40px;\n}\n\n.tab-section-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 2px solid var(--mj-brand-primary);\n}\n\n.tab-section-header i {\n font-size: 18px;\n color: var(--mj-brand-primary);\n}\n\n.tab-section-header h1 {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n/* ===== FILTER BAR ===== */\n.filter-bar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n\n.date-chips {\n display: flex;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.date-chip {\n padding: 6px 14px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface);\n cursor: pointer;\n border: none;\n border-right: 1px solid var(--mj-border-default);\n transition: all 0.15s;\n font-family: inherit;\n}\n\n.date-chip:last-child {\n border-right: none;\n}\n\n.date-chip:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.date-chip.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-dropdown {\n padding: 6px 12px;\n font-size: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-family: inherit;\n}\n\n/* ===== KPI CARDS ===== */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.kpi-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px 18px;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.kpi-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.1;\n}\n\n.kpi-delta {\n font-size: 11px;\n font-weight: 500;\n margin-top: 4px;\n color: var(--mj-text-muted);\n}\n\n.kpi-delta.up {\n color: var(--mj-status-success);\n}\n\n.kpi-delta.down {\n color: var(--mj-status-error);\n}\n\n.kpi-sparkline {\n flex-shrink: 0;\n margin-left: 12px;\n margin-top: 6px;\n}\n\n/* ===== CARDS GRID ===== */\n.cards-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n}\n\n.widget-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 18px 20px;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.widget-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.widget-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 14px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.widget-title i {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n.widget-empty {\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n padding: 20px;\n}\n\n.widget-footnote {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 10px;\n}\n\n/* ===== BAR CHART ===== */\n.bar-chart {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n height: 120px;\n padding-top: 10px;\n}\n\n.bar-col {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.bar {\n width: 100%;\n border-radius: 4px 4px 0 0;\n transition: height 0.3s;\n min-height: 2px;\n}\n\n.bar-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n}\n\n.bar-value {\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n/* ===== PROGRESS RINGS ===== */\n.rings-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.ring-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n}\n\n.ring-label {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.ring-stat {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n/* ===== GAUGE ===== */\n.gauge-container {\n display: flex;\n justify-content: center;\n margin-bottom: 8px;\n}\n\n/* ===== MINI HISTOGRAM ===== */\n.mini-histogram {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 32px;\n justify-content: center;\n}\n\n.mini-hist-bar {\n width: 14px;\n border-radius: 2px;\n}\n\n.mini-hist-label {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* ===== HORIZONTAL BARS ===== */\n.h-bar-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.h-bar-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.h-bar-name {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 100px;\n flex-shrink: 0;\n text-align: right;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.h-bar-track {\n flex: 1;\n height: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.h-bar-fill {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 36px;\n}\n\n/* ===== THROUGHPUT BARS ===== */\n.throughput-bars {\n display: flex;\n align-items: flex-end;\n gap: 4px;\n height: 110px;\n margin-bottom: 22px;\n}\n\n.tp-bar {\n flex: 1;\n border-radius: 3px 3px 0 0;\n position: relative;\n min-height: 4px;\n}\n\n.tp-bar-label {\n position: absolute;\n bottom: -18px;\n left: 50%;\n transform: translateX(-50%);\n font-size: 8px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n/* ===== TAXONOMY ===== */\n.taxonomy-ring-container {\n display: flex;\n justify-content: center;\n}\n\n.taxonomy-stats {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.tax-stat {\n flex: 1;\n text-align: center;\n padding: 8px 4px;\n border-radius: 6px;\n font-size: 20px;\n font-weight: 700;\n}\n\n.tax-stat small {\n display: block;\n font-size: 10px;\n font-weight: 500;\n margin-top: 2px;\n}\n\n/* ===== LEGEND ===== */\n.legend {\n display: flex;\n gap: 16px;\n margin-top: 10px;\n flex-wrap: wrap;\n justify-content: center;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n flex-shrink: 0;\n}\n\n/* ===== DATA TABLES ===== */\n.table-scroll {\n overflow-x: auto;\n}\n\n.data-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12.5px;\n}\n\n.data-table thead th {\n text-align: left;\n padding: 10px 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted);\n border-bottom: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n white-space: nowrap;\n}\n\n.data-table tbody td {\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n.data-table tbody tr:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.data-table .num {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.muted {\n color: var(--mj-text-muted);\n}\n\n.monospace-cell {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.weight-bar {\n display: inline-block;\n height: 6px;\n border-radius: 3px;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n/* ===== BADGES ===== */\n.badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n}\n\n.badge-success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.badge-warning {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge-error {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.badge-info {\n background: color-mix(in srgb, var(--mj-status-info) 12%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n/* ===== SUB-SECTIONS ===== */\n.sub-section {\n margin-top: 24px;\n}\n\n.sub-section h3 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.sub-section h3 i {\n font-size: 13px;\n color: var(--mj-brand-primary);\n}\n\n/* ===== EMPTY STATE ===== */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 2rem;\n text-align: center;\n gap: 0.75rem;\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 2.5rem;\n color: var(--mj-text-disabled);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 0.85rem;\n max-width: 400px;\n}\n\n/* ===== DRILL-DOWN PANEL ===== */\n.drill-down-panel {\n margin-top: 16px;\n margin-bottom: 16px;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-brand-primary);\n border-radius: 10px;\n overflow: hidden;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 600px;\n }\n}\n\n.drill-down-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.drill-down-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-down-close {\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.drill-down-close:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.drill-down-table-wrap {\n max-height: 400px;\n overflow-y: auto;\n padding: 8px;\n}\n\n.drill-action-col {\n width: 40px;\n text-align: center;\n padding: 6px !important;\n}\n\n.drill-open-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-open-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.drill-down-header-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-export-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-export-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.sub-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 0;\n}\n\n.sub-section-header h3 {\n margin: 0;\n}\n\n.drill-down-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n/* ===== STACKED BAR CHART ===== */\n.stacked-bar-chart {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stacked-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stacked-label {\n width: 90px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stacked-track {\n flex: 1;\n height: 22px;\n display: flex;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stacked-seg {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 20px;\n}\n\n/* ===== VERTICAL BAR CHART ===== */\n.v-bar-chart {\n display: flex;\n align-items: flex-end;\n gap: 24px;\n height: 140px;\n padding-top: 10px;\n justify-content: center;\n}\n\n.v-bar-col {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n min-width: 60px;\n}\n\n.v-bar {\n width: 48px;\n border-radius: 4px 4px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-inverse);\n}\n\n.v-bar-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 8px;\n text-align: center;\n}\n\n.chart-footnote {\n text-align: center;\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 14px;\n}\n\n/* ===== TWO COLUMN ===== */\n.two-col {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 20px;\n}\n\n/* ===== SOURCE SELECTED ===== */\n.source-selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n/* ===== QUALITY BANDS ===== */\n.quality-bands {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.quality-band-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.quality-band-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 65px;\n text-align: right;\n flex-shrink: 0;\n}\n\n.quality-band-track {\n flex: 1;\n height: 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.quality-band-fill {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 30px;\n}\n\n.source-quality-note {\n margin-top: 14px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n/* ===== SOURCE HEALTH ===== */\n.source-health-grid {\n display: grid;\n gap: 12px;\n}\n\n.source-health-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border-top: 3px solid;\n}\n\n.health-card-name {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.health-card-value {\n font-size: 22px;\n font-weight: 700;\n}\n\n.health-card-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* ===== PIPELINE ===== */\n.pipeline-throughput-bars {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 110px;\n}\n\n.pipeline-bar {\n flex: 1;\n border-radius: 2px 2px 0 0;\n min-height: 3px;\n}\n\n.pipeline-date-labels {\n display: flex;\n justify-content: space-between;\n margin-top: 6px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* ===== PROCESSING STAGES ===== */\n.stage-bars {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.stage-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stage-name {\n width: 80px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-track {\n flex: 1;\n height: 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stage-fill {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n}\n\n.stage-time {\n width: 50px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-summary {\n display: flex;\n justify-content: space-between;\n margin-top: 14px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.stage-warning {\n color: var(--mj-text-muted);\n}\n\n/* ===== SUCCESS RATE ===== */\n.success-rate-display {\n display: flex;\n justify-content: center;\n gap: 48px;\n padding: 20px;\n}\n\n.success-rate-stat {\n text-align: center;\n}\n\n.success-rate-value {\n font-size: 32px;\n font-weight: 700;\n line-height: 1.1;\n}\n\n.success-rate-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* ===== PROGRESS ===== */\n.progress-track {\n width: 100px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n.progress-fill {\n height: 100%;\n border-radius: 3px;\n}\n\n.progress-text {\n font-size: 11px;\n font-weight: 600;\n}\n\n/* ===== ERROR LOG ===== */\n.error-log {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.error-entry {\n display: flex;\n gap: 12px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 4%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-error);\n border-radius: 0 6px 6px 0;\n font-size: 12px;\n}\n\n.error-time {\n color: var(--mj-text-muted);\n font-size: 11px;\n white-space: nowrap;\n flex-shrink: 0;\n width: 130px;\n}\n\n.error-source {\n color: var(--mj-brand-primary);\n font-weight: 600;\n flex-shrink: 0;\n width: 120px;\n}\n\n.error-msg {\n color: var(--mj-text-secondary);\n}\n\n/* ===== HISTOGRAM ===== */\n.histogram {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n height: 130px;\n padding-bottom: 24px;\n}\n\n.hist-bar-col {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.hist-bar {\n width: 100%;\n border-radius: 3px 3px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-height: 2px;\n}\n\n.hist-label {\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n.confidence-stats {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n gap: 8px;\n}\n\n/* ===== GROUPED BAR CHART ===== */\n.grouped-bar-chart {\n display: flex;\n align-items: flex-end;\n gap: 20px;\n height: 140px;\n justify-content: center;\n}\n\n.grouped-col {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.grouped-bars {\n display: flex;\n gap: 3px;\n align-items: flex-end;\n height: 100%;\n}\n\n.g-bar {\n width: 18px;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n}\n\n.grouped-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n/* ===== ACCURACY CHART ===== */\n.accuracy-chart {\n position: relative;\n display: flex;\n margin: 0 10px;\n}\n\n.accuracy-y-labels {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n height: 110px;\n}\n\n.accuracy-area {\n flex: 1;\n position: relative;\n height: 110px;\n border-left: 1px solid var(--mj-border-default);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.accuracy-grid-line {\n position: absolute;\n left: 0;\n right: 0;\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.accuracy-svg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.accuracy-x-labels {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 0 40px 0 40px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n.accuracy-trend-text {\n text-align: center;\n margin-top: 10px;\n font-size: 12px;\n color: var(--mj-status-success);\n}\n\n/* ===== MODEL COMPARISON ===== */\n.model-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.model-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border: 1px solid var(--mj-border-default);\n}\n\n.model-name {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n}\n\n.model-score {\n font-size: 28px;\n font-weight: 700;\n line-height: 1;\n}\n\n.model-detail {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n.model-recommendation {\n margin-top: 14px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n/* ===== RESPONSIVE ===== */\n@media (max-width: 1200px) {\n .cards-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .model-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .analytics-layout {\n flex-direction: column;\n }\n\n .analytics-sidebar {\n width: 100%;\n min-width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .sidebar-nav {\n flex-direction: row;\n overflow-x: auto;\n }\n\n .nav-item {\n border-left: none;\n border-bottom: 3px solid transparent;\n white-space: nowrap;\n }\n\n .nav-item.active {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .trending-section,\n .sidebar-divider {\n display: none;\n }\n\n .tab-section {\n padding: 16px;\n }\n\n .cards-grid {\n grid-template-columns: 1fr;\n }\n\n .kpi-row {\n grid-template-columns: 1fr;\n }\n\n .two-col {\n grid-template-columns: 1fr;\n }\n\n .cost-kpi-row {\n grid-template-columns: 1fr;\n }\n}\n\n/* ===== COST & USAGE TAB (D1) ===== */\n\n.tab-header-actions {\n display: flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.cost-kpi-row {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.cost-kpi-card {\n display: flex;\n gap: 14px;\n align-items: center;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 18px 20px;\n transition: box-shadow 0.15s ease;\n}\n\n.cost-kpi-card:hover {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.cost-kpi-icon {\n width: 44px;\n height: 44px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n flex-shrink: 0;\n}\n\n.cost-kpi-value {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.2;\n}\n\n.cost-kpi-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.cost-kpi-sub {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.empty-state-hint {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* ===== D5: PRINT STYLES ===== */\n\n@media print {\n .analytics-sidebar,\n .filter-bar,\n .tab-header-actions,\n .drill-down-close,\n .drill-export-btn,\n .drill-open-btn {\n display: none !important;\n }\n\n .analytics-layout {\n display: block;\n }\n\n .main-content {\n padding: 0;\n }\n\n .tab-section {\n padding: 0;\n }\n\n .widget-card,\n .cost-kpi-card,\n .kpi-card {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid var(--mj-border-default);\n }\n\n .data-table {\n font-size: 10px;\n }\n}\n\n/* \u2500\u2500 Co-Occurrence Section \u2500\u2500 */\n\n/* Constrain the co-occurrence sub-section so an empty state or large table\n does not blow out the page height and render the app unusable. */\n.co-occurrence-section {\n max-height: 500px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.co-occurrence-section .table-scroll {\n overflow-y: auto;\n max-height: 400px;\n flex: 1;\n min-height: 0;\n}\n\n.co-occurrence-section .empty-state {\n max-height: 200px;\n overflow: hidden;\n}\n\n.co-occurrence-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.co-occurrence-staleness {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}\n"] }]
4251
+ args: [{ standalone: false, selector: 'app-analytics-resource', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Knowledge Hub Analytics\"\n Icon=\"fa-solid fa-chart-line\"\n Subtitle=\"Pipeline health, trending tags, and content insights\">\n <div meta>\n <mj-stat-badge\n [Label]=\"PipelineStatusText\"\n [Variant]=\"PipelineStatusOk ? 'success' : 'error'\">\n </mj-stat-badge>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\">\n@if (IsLoading) {\n <div class=\"analytics-loading\">\n <mj-loading text=\"Loading analytics data...\" size=\"medium\"></mj-loading>\n </div>\n} @else {\n <div class=\"analytics-layout\">\n <mj-left-nav\n [Sections]=\"navSections\"\n [ActiveId]=\"ActiveTab\"\n (ItemClicked)=\"onNavItemClicked($event)\">\n <!-- Trending Tags Cloud projected into the rail's footer slot. -->\n <div footer class=\"trending-section\">\n <h3><i class=\"fa-solid fa-arrow-trend-up\"></i> Trending Tags</h3>\n <div class=\"tag-cloud\">\n @for (tag of TrendingTags; track tag.Name) {\n <span [style.font-size.px]=\"tag.Size\" [style.font-weight]=\"tag.Weight\">{{ tag.Name }}</span>\n }\n @if (TrendingTags.length === 0) {\n <span class=\"no-trending\">No trending tags yet</span>\n }\n </div>\n </div>\n </mj-left-nav>\n\n <mj-left-nav-content>\n <div class=\"main-content\">\n\n <!-- ====================================================== -->\n <!-- TAB 1: OVERVIEW -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'overview') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-grip\"></i>\n <h1>Overview</h1>\n </div>\n\n <!-- Filter Bar -->\n <div class=\"filter-bar\">\n <div class=\"date-chips\">\n @for (range of DateRanges; track range.Label) {\n <button\n class=\"date-chip\"\n [class.active]=\"ActiveDateRange === range.Label\"\n (click)=\"SetDateRange(range.Label)\"\n >{{ range.Label }}</button>\n }\n </div>\n <select class=\"filter-dropdown\" [ngModel]=\"EntityFilter\" (ngModelChange)=\"SetEntityFilter($event)\">\n @for (opt of EntityFilterOptions; track opt) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n </div>\n\n <!-- KPI Cards -->\n <div class=\"kpi-row\">\n @for (kpi of KPIs; track kpi.Label) {\n <div class=\"kpi-card\" (click)=\"OpenDrillDown(kpi.DrillDownKey)\">\n <div>\n <div class=\"kpi-label\">{{ kpi.Label }}</div>\n <div class=\"kpi-value\">{{ kpi.Value }}</div>\n <div class=\"kpi-delta\" [class.up]=\"kpi.DeltaDirection === 'up'\" [class.down]=\"kpi.DeltaDirection === 'down'\">\n @if (kpi.DeltaDirection === 'up') {\n <i class=\"fa-solid fa-arrow-up\" style=\"font-size:9px\"></i>\n } @else if (kpi.DeltaDirection === 'down') {\n <i class=\"fa-solid fa-arrow-down\" style=\"font-size:9px\"></i>\n }\n {{ kpi.Delta }}\n </div>\n </div>\n <div class=\"kpi-sparkline\">\n <svg width=\"64\" height=\"28\" viewBox=\"0 0 64 28\">\n <polyline [attr.points]=\"kpi.SparklinePoints\" fill=\"none\" [attr.stroke]=\"kpi.SparklineColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </div>\n }\n </div>\n\n <!-- KPI Drill-Down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('kpi-')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Detail View</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead>\n <tr>\n @for (col of DrillDownColumns; track col) {\n <th>{{ col }}</th>\n }\n @if (DrillDownHasActions) {\n <th class=\"drill-action-col\"></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) {\n <td>{{ row[col] }}</td>\n }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No data available</div>\n }\n </div>\n }\n\n <!-- Widget Cards Grid (2x3) -->\n <div class=\"cards-grid\">\n\n <!-- Card 1: Tag Growth -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('tagGrowth')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-chart-line\"></i> Tag Growth</div>\n <div class=\"bar-chart\">\n @for (bar of TagGrowthData; track bar.Label) {\n <div class=\"bar-col\">\n <div class=\"bar-value\">{{ bar.Count }}</div>\n <div class=\"bar\" [style.height.%]=\"bar.Percentage\" style=\"background:var(--mj-brand-primary)\" [style.opacity]=\"0.5 + (bar.Percentage / 200)\"></div>\n <div class=\"bar-label\">{{ bar.Label }}</div>\n </div>\n }\n </div>\n </div>\n\n <!-- Card 2: Content Coverage -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('contentCoverage')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-bullseye\"></i> Content Coverage</div>\n <div class=\"rings-grid\">\n @for (entity of CoverageData; track entity.Name) {\n <div class=\"ring-item\">\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <circle cx=\"24\" cy=\"24\" r=\"20\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"5\"/>\n <circle cx=\"24\" cy=\"24\" r=\"20\" fill=\"none\" [attr.stroke]=\"entity.Color\" stroke-width=\"5\"\n [attr.stroke-dasharray]=\"entity.StrokeDash\" stroke-dashoffset=\"31.4\" stroke-linecap=\"round\"\n transform=\"rotate(-90 24 24)\"/>\n <text x=\"24\" y=\"26\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"700\" fill=\"var(--mj-text-primary)\">{{ entity.Percentage }}%</text>\n </svg>\n <div>\n <div class=\"ring-label\">{{ entity.Name }}</div>\n <div class=\"ring-stat\">{{ FormatNumber(entity.Tagged) }} / {{ FormatNumber(entity.Total) }}</div>\n </div>\n </div>\n }\n @if (CoverageData.length === 0) {\n <div class=\"widget-empty\">No content types found</div>\n }\n </div>\n </div>\n\n <!-- Card 3: Quality Score Gauge -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('qualityScore')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-gauge-high\"></i> Quality Score</div>\n <div class=\"gauge-container\">\n <svg width=\"180\" height=\"110\" viewBox=\"0 0 180 110\">\n <!-- Background arc -->\n <path d=\"M 20 95 A 70 70 0 0 1 160 95\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"14\" stroke-linecap=\"round\"/>\n <!-- Zone arcs -->\n <path d=\"M 20 95 A 70 70 0 0 1 48.6 35.2\" fill=\"none\" stroke=\"var(--mj-status-error)\" stroke-width=\"14\" stroke-linecap=\"round\" opacity=\"0.3\"/>\n <path d=\"M 48.6 35.2 A 70 70 0 0 1 118 28\" fill=\"none\" stroke=\"var(--mj-status-warning)\" stroke-width=\"14\" opacity=\"0.3\"/>\n <path d=\"M 118 28 A 70 70 0 0 1 160 95\" fill=\"none\" stroke=\"var(--mj-status-success)\" stroke-width=\"14\" stroke-linecap=\"round\" opacity=\"0.3\"/>\n <!-- Score text -->\n <text x=\"90\" y=\"88\" text-anchor=\"middle\" font-size=\"26\" font-weight=\"800\" fill=\"var(--mj-text-primary)\">{{ QualityScore }}</text>\n <text x=\"90\" y=\"105\" text-anchor=\"middle\" font-size=\"10\" fill=\"var(--mj-text-muted)\">out of 100</text>\n <text x=\"28\" y=\"108\" font-size=\"8\" fill=\"var(--mj-text-muted)\">0</text>\n <text x=\"86\" y=\"18\" font-size=\"8\" fill=\"var(--mj-text-muted)\">50</text>\n <text x=\"155\" y=\"108\" font-size=\"8\" fill=\"var(--mj-text-muted)\">100</text>\n </svg>\n </div>\n <!-- Mini confidence histogram -->\n <div class=\"mini-histogram\">\n @for (bin of MiniConfidenceBins; track TrackByIndex($index)) {\n <div class=\"mini-hist-bar\" [style.height.px]=\"bin.Height\" [style.background]=\"bin.Color\" [title]=\"bin.Title\"></div>\n }\n </div>\n <div class=\"mini-hist-label\">Confidence Distribution</div>\n </div>\n\n <!-- Card 4: Source Performance -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('sourcePerformance')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-ranking-star\"></i> Source Performance</div>\n <div class=\"h-bar-list\">\n @for (source of SourcePerfData; track source.Name) {\n <div class=\"h-bar-row\">\n <div class=\"h-bar-name\">{{ source.Name }}</div>\n <div class=\"h-bar-track\">\n <div class=\"h-bar-fill\" [style.width.%]=\"source.Percentage\" [style.background]=\"source.Color\">{{ source.AvgTagsPerItem }}</div>\n </div>\n </div>\n }\n @if (SourcePerfData.length === 0) {\n <div class=\"widget-empty\">No source data</div>\n }\n </div>\n <div class=\"widget-footnote\">Average tags per item</div>\n </div>\n\n <!-- Card 5: Daily Throughput -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('dailyThroughput')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-bolt\"></i> Daily Throughput</div>\n <div class=\"throughput-bars\">\n @for (day of ThroughputData; track day.Label) {\n <div class=\"tp-bar\"\n [style.height.%]=\"day.Percentage\"\n [style.background]=\"day.IsError ? 'var(--mj-status-error)' : 'var(--mj-status-success)'\"\n >\n <span class=\"tp-bar-label\">{{ day.Label }}</span>\n </div>\n }\n </div>\n <div class=\"legend\">\n <div class=\"legend-item\"><div class=\"legend-dot\" style=\"background:var(--mj-status-success)\"></div> Success</div>\n <div class=\"legend-item\"><div class=\"legend-dot\" style=\"background:var(--mj-status-error)\"></div> Failures</div>\n </div>\n </div>\n\n <!-- Card 6: Taxonomy Health -->\n <div class=\"widget-card\" (click)=\"OpenDrillDown('taxonomyHealth')\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-sitemap\"></i> Taxonomy Health</div>\n <div class=\"taxonomy-ring-container\">\n <svg width=\"140\" height=\"140\" viewBox=\"0 0 140 140\">\n <circle cx=\"70\" cy=\"70\" r=\"54\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"18\"/>\n @for (seg of TaxonomyRingSegments; track TrackByIndex($index)) {\n <circle cx=\"70\" cy=\"70\" r=\"54\" fill=\"none\"\n [attr.stroke]=\"seg.Color\" stroke-width=\"18\"\n [attr.stroke-dasharray]=\"seg.StrokeDash\"\n [attr.stroke-dashoffset]=\"seg.StrokeOffset\"\n transform=\"rotate(-90 70 70)\"/>\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" font-size=\"22\" font-weight=\"800\" fill=\"var(--mj-text-primary)\">{{ TaxonomyTotal }}</text>\n <text x=\"70\" y=\"82\" text-anchor=\"middle\" font-size=\"10\" fill=\"var(--mj-text-muted)\">total tags</text>\n </svg>\n </div>\n <div class=\"taxonomy-stats\">\n @for (stat of TaxonomyStats; track stat.Label) {\n <div class=\"tax-stat\" [style.background]=\"stat.BgColor\" [style.color]=\"stat.Color\">\n {{ stat.Count }}<small>{{ stat.Label }}</small>\n </div>\n }\n </div>\n </div>\n\n </div><!-- /cards-grid -->\n\n <!-- Widget Drill-Down -->\n @if (DrillDownTarget && !DrillDownTarget.startsWith('kpi-')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> {{ DrillDownTarget }} Detail</span>\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead>\n <tr>\n @for (col of DrillDownColumns; track col) {\n <th>{{ col }}</th>\n }\n @if (DrillDownHasActions) {\n <th class=\"drill-action-col\"></th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) {\n <td>{{ row[col] }}</td>\n }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No data available</div>\n }\n </div>\n }\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 2: TAGS -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'tags') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-tags\"></i>\n <h1>Tags</h1>\n </div>\n\n <!-- Top 20 Tags Table -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <div class=\"sub-section-header\">\n <h3><i class=\"fa-solid fa-trophy\"></i> Top 20 Tags</h3>\n @if (TopTags.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportTabDataCSV('top-tags')\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n }\n </div>\n @if (TopTags.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>Tag Name</th>\n <th class=\"num\">Usage Count</th>\n <th>Avg Weight</th>\n <th>Trend</th>\n <th>Top Entity</th>\n <th>First Seen</th>\n </tr>\n </thead>\n <tbody>\n @for (tag of TopTags; track tag.Name) {\n <tr style=\"cursor:pointer\" (click)=\"OpenDrillDown('tag-row:' + tag.Name)\">\n <td>{{ tag.Rank }}</td>\n <td><strong>{{ tag.Name }}</strong></td>\n <td class=\"num\">{{ FormatNumber(tag.UsageCount) }}</td>\n <td>\n <span class=\"weight-bar\" [style.width.px]=\"tag.WeightBarWidth\" [style.background]=\"tag.WeightBarColor\"></span>\n {{ tag.AvgWeight }}\n </td>\n <td>\n <svg width=\"48\" height=\"16\">\n <polyline [attr.points]=\"tag.TrendPoints\" fill=\"none\" [attr.stroke]=\"tag.TrendColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n </td>\n <td>{{ tag.TopEntity }}</td>\n <td class=\"muted\">{{ tag.FirstSeen }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-tags\"></i>\n <p>No tag data available yet. Process content to generate tags.</p>\n </div>\n }\n </div>\n\n <!-- D10: Tags tab drill-down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('tag-row:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Content Items Tagged \"{{ DrillDownTarget.replace('tag-row:', '') }}\"</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No items found for this tag</div>\n }\n </div>\n }\n\n <!-- Tag Distribution by Entity -->\n @if (EntityDistribution.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-bar\"></i> Tag Distribution by Entity</h3>\n <div class=\"stacked-bar-chart\">\n @for (row of EntityDistribution; track row.EntityName) {\n <div class=\"stacked-row\">\n <div class=\"stacked-label\">{{ row.EntityName }}</div>\n <div class=\"stacked-track\">\n @for (seg of row.Segments; track TrackByIndex($index)) {\n <div class=\"stacked-seg\" [style.width.%]=\"seg.Percentage\" [style.background]=\"seg.Color\" [title]=\"seg.Label + ': ' + seg.Percentage + '%'\">{{ seg.Label }}</div>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"legend\" style=\"margin-top:12px\">\n @for (item of DistributionLegend; track item.Label) {\n <div class=\"legend-item\"><div class=\"legend-dot\" [style.background]=\"item.Color\"></div> {{ item.Label }}</div>\n }\n </div>\n </div>\n }\n\n <!-- Tag Depth Distribution -->\n @if (TagDepthBars.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-layer-group\"></i> Tag Depth Distribution</h3>\n <div class=\"v-bar-chart\">\n @for (bar of TagDepthBars; track bar.Label) {\n <div class=\"v-bar-col\">\n <div class=\"v-bar\" [style.height.%]=\"bar.Percentage\" style=\"background:var(--mj-brand-primary)\" [style.min-height.px]=\"bar.Count > 0 ? 24 : 0\">{{ bar.Count }}</div>\n <div class=\"v-bar-label\">{{ bar.Label }}</div>\n </div>\n }\n </div>\n <div class=\"chart-footnote\">\n Taxonomy hierarchy depth -- Most tags at depth 2-3 indicating a healthy mid-level structure\n </div>\n </div>\n }\n\n <!-- Frequently Paired Tags (Co-Occurrence) -->\n <div class=\"sub-section co-occurrence-section\">\n <div class=\"sub-section-header\">\n <h3><i class=\"fa-solid fa-link\"></i> Frequently Paired Tags</h3>\n <div class=\"co-occurrence-actions\">\n @if (CoOccurrenceLastComputed) {\n <span class=\"co-occurrence-staleness\" title=\"Last computed timestamp\">\n <i class=\"fa-regular fa-clock\"></i>\n Last computed: {{ CoOccurrenceLastComputed }}\n </span>\n }\n <button class=\"drill-export-btn\" (click)=\"RecomputeCoOccurrence()\" [disabled]=\"IsRecomputingCoOccurrence\" title=\"Recompute co-occurrence data\">\n @if (IsRecomputingCoOccurrence) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Computing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Recompute\n }\n </button>\n </div>\n </div>\n @if (CoOccurrencePairs.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>Tag A</th>\n <th>Tag B</th>\n <th class=\"num\">Co-Occurrences</th>\n <th>Frequency</th>\n </tr>\n </thead>\n <tbody>\n @for (pair of CoOccurrencePairs; track pair.TagAName + pair.TagBName; let i = $index) {\n <tr>\n <td class=\"muted\">{{ i + 1 }}</td>\n <td><strong>{{ pair.TagAName }}</strong></td>\n <td><strong>{{ pair.TagBName }}</strong></td>\n <td class=\"num\">{{ FormatNumber(pair.Count) }}</td>\n <td>\n <span class=\"weight-bar\" [style.width.px]=\"pair.BarWidth\" style=\"background: var(--mj-status-info)\"></span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-link\"></i>\n <p>No co-occurrence data available yet. Process content and recompute to see which tags frequently appear together.</p>\n </div>\n }\n </div>\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 3: SOURCES -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'sources') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-database\"></i>\n <h1>Sources</h1>\n </div>\n\n <!-- Source Comparison Table -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <h3><i class=\"fa-solid fa-table\"></i> Source Comparison</h3>\n @if (SourceComparison.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Source Name</th>\n <th>Type</th>\n <th class=\"num\">Items</th>\n <th class=\"num\">Tags Generated</th>\n <th class=\"num\">Avg Tags/Item</th>\n <th class=\"num\">Avg Weight</th>\n <th>Last Run</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n @for (source of SourceComparison; track source.Name) {\n <tr (click)=\"SelectSource(source.Name); OpenDrillDown('source-row:' + source.Name)\" style=\"cursor:pointer\" [class.source-selected]=\"SelectedSourceName === source.Name\">\n <td><strong>{{ source.Name }}</strong></td>\n <td><i [class]=\"source.TypeIcon\" [style.color]=\"source.TypeColor\" style=\"margin-right:4px\"></i> {{ source.Type }}</td>\n <td class=\"num\">{{ FormatNumber(source.Items) }}</td>\n <td class=\"num\">{{ FormatNumber(source.TagsGenerated) }}</td>\n <td class=\"num\">{{ source.AvgTagsPerItem }}</td>\n <td class=\"num\">{{ source.AvgWeight }}</td>\n <td class=\"muted\">{{ source.LastRun }}</td>\n <td><span class=\"badge\" [class]=\"source.StatusClass\"><i class=\"fa-solid fa-circle\" style=\"font-size:6px;margin-right:3px\"></i> {{ source.Status }}</span></td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No content sources configured yet.</p>\n </div>\n }\n </div>\n\n <!-- D10: Sources tab drill-down (recent runs) -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('source-row:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Recent Runs: {{ DrillDownTarget.replace('source-row:', '') }}</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\"><i class=\"fa-solid fa-download\"></i> CSV</button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No run data for this source</div>\n }\n </div>\n }\n\n <!-- Per-Source Detail -->\n @if (SelectedSourceName && SourceComparison.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-area\"></i> Source Detail: {{ SelectedSourceName }}</h3>\n <div class=\"two-col\">\n <!-- Items Processed Over Time -->\n <div class=\"widget-card\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-chart-bar\"></i> Items Processed (Last 8 Weeks)</div>\n <div class=\"bar-chart\" style=\"height:100px\">\n @for (bar of SourceWeeklyBars; track bar.Label) {\n <div class=\"bar-col\">\n <div class=\"bar-value\" style=\"font-size:9px\">{{ bar.Value }}</div>\n <div class=\"bar\" [style.height.%]=\"bar.Percentage\" style=\"background:var(--mj-brand-primary)\" [style.opacity]=\"0.5 + (bar.Percentage / 200)\"></div>\n <div class=\"bar-label\">{{ bar.Label }}</div>\n </div>\n }\n </div>\n </div>\n\n <!-- Tag Quality Distribution -->\n <div class=\"widget-card\">\n <div class=\"widget-title\"><i class=\"fa-solid fa-star-half-stroke\"></i> Tag Quality Distribution</div>\n <div class=\"quality-bands\">\n @for (band of SourceQualityBands; track band.Label) {\n <div class=\"quality-band-row\">\n <span class=\"quality-band-label\">{{ band.Label }}</span>\n <div class=\"quality-band-track\">\n <div class=\"quality-band-fill\" [style.width.%]=\"band.Percentage\" [style.background]=\"band.Color\">{{ band.Percentage }}%</div>\n </div>\n </div>\n }\n </div>\n <div class=\"source-quality-note\">\n <i class=\"fa-solid fa-circle-info\" style=\"color:var(--mj-status-info);margin-right:4px\"></i>\n {{ SourceQualityNote }}\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Source Health -->\n @if (SourceHealthCards.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-heart-pulse\"></i> Source Health Summary</h3>\n <div class=\"source-health-grid\" [style.grid-template-columns]=\"'repeat(' + SourceHealthCards.length + ', 1fr)'\">\n @for (card of SourceHealthCards; track card.Name) {\n <div class=\"source-health-card\" [style.border-top-color]=\"card.Color\">\n <div class=\"health-card-name\">{{ card.Name }}</div>\n <div class=\"health-card-value\" [style.color]=\"card.Color\">{{ card.Uptime }}%</div>\n <div class=\"health-card-label\">uptime</div>\n </div>\n }\n </div>\n </div>\n }\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 4: PIPELINE -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'pipeline') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-gears\"></i>\n <h1>Pipeline</h1>\n </div>\n\n <!-- Pipeline Throughput Chart -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <h3><i class=\"fa-solid fa-chart-bar\"></i> Pipeline Throughput (Last 30 Days)</h3>\n <div class=\"widget-card\">\n <div class=\"pipeline-throughput-bars\">\n @for (bar of PipelineThroughputBars; track TrackByIndex($index)) {\n <div class=\"pipeline-bar\"\n [style.height.%]=\"bar.Percentage\"\n [style.background]=\"bar.IsError ? 'var(--mj-status-error)' : 'var(--mj-brand-primary)'\"\n [style.opacity]=\"bar.IsError ? 0.7 : (0.6 + bar.Percentage / 300)\"\n style=\"cursor:pointer\"\n (click)=\"OpenDrillDown('pipeline-throughput:' + $index)\"\n ></div>\n }\n </div>\n <div class=\"pipeline-date-labels\">\n @for (label of PipelineDateLabels; track label) {\n <span>{{ label }}</span>\n }\n </div>\n </div>\n </div>\n\n <!-- D10: Pipeline throughput drill-down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('pipeline-throughput:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Runs for Selected Day</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\"><i class=\"fa-solid fa-download\"></i> CSV</button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No runs for this day</div>\n }\n </div>\n }\n\n <!-- Processing Time Breakdown -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-stopwatch\"></i> Processing Time Breakdown (Avg per Item)</h3>\n <div class=\"widget-card\">\n <div class=\"stage-bars\">\n @for (stage of ProcessingStages; track stage.Name) {\n <div class=\"stage-row\">\n <div class=\"stage-name\">{{ stage.Name }}</div>\n <div class=\"stage-track\">\n <div class=\"stage-fill\" [style.width.%]=\"stage.Percentage\" [style.background]=\"stage.Color\">\n @if (stage.Percentage > 15) {\n {{ stage.Time }}s\n }\n </div>\n </div>\n <div class=\"stage-time\">{{ stage.Time }}s</div>\n </div>\n }\n </div>\n <div class=\"stage-summary\">\n <span><strong>Total avg:</strong> {{ TotalAvgProcessingTime }}s per item</span>\n @if (BottleneckStage) {\n <span class=\"stage-warning\">\n <i class=\"fa-solid fa-triangle-exclamation\" style=\"color:var(--mj-status-warning);margin-right:4px\"></i>\n {{ BottleneckStage }} stage is the bottleneck ({{ BottleneckPercent }}% of total time)\n </span>\n }\n </div>\n </div>\n </div>\n\n <!-- Success Rate -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-line\"></i> Success Rate Overview</h3>\n <div class=\"widget-card\">\n <div class=\"success-rate-display\">\n <div class=\"success-rate-stat\">\n <div class=\"success-rate-value\" style=\"color:var(--mj-status-success)\">\n {{ rawProcessRuns.length > 0 ? (100 - (ErrorLog.length / rawProcessRuns.length * 100)).toFixed(1) : '100' }}%\n </div>\n <div class=\"success-rate-label\">Success Rate</div>\n </div>\n <div class=\"success-rate-stat\">\n <div class=\"success-rate-value\" style=\"color:var(--mj-status-error)\">\n {{ rawProcessRuns.length > 0 ? (ErrorLog.length / rawProcessRuns.length * 100).toFixed(1) : '0' }}%\n </div>\n <div class=\"success-rate-label\">Failure Rate</div>\n </div>\n <div class=\"success-rate-stat\">\n <div class=\"success-rate-value\" style=\"color:var(--mj-text-primary)\">\n {{ FormatNumber(rawProcessRuns.length) }}\n </div>\n <div class=\"success-rate-label\">Total Runs</div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Active Runs Table -->\n @if (ActiveRuns.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-spinner\"></i> Active Runs</h3>\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Run ID</th>\n <th>Source</th>\n <th>Started</th>\n <th>Progress</th>\n <th>Stage</th>\n <th class=\"num\">Items</th>\n </tr>\n </thead>\n <tbody>\n @for (run of ActiveRuns; track run.RunID) {\n <tr>\n <td class=\"monospace-cell\">{{ run.RunID }}</td>\n <td>{{ run.Source }}</td>\n <td class=\"muted\">{{ run.Started }}</td>\n <td>\n <div class=\"progress-track\"><div class=\"progress-fill\" [style.width.%]=\"run.Progress\" style=\"background:var(--mj-brand-primary)\"></div></div>\n <span class=\"progress-text\">{{ run.Progress }}%</span>\n </td>\n <td><span class=\"badge\" [class]=\"run.StageClass\">{{ run.Stage }}</span></td>\n <td class=\"num\">{{ FormatNumber(run.Items) }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n\n <!-- Error Log -->\n @if (ErrorLog.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-triangle-exclamation\"></i> Recent Errors</h3>\n <div class=\"error-log\">\n @for (entry of ErrorLog; track TrackByIndex($index)) {\n <div class=\"error-entry\">\n <div class=\"error-time\">{{ entry.Time }}</div>\n <div class=\"error-source\">{{ entry.Source }}</div>\n <div class=\"error-msg\">{{ entry.Message }}</div>\n </div>\n }\n </div>\n </div>\n }\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 5: QUALITY -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'quality') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-circle-check\"></i>\n <h1>Quality</h1>\n </div>\n\n <!-- Confidence Distribution Histogram -->\n <div class=\"sub-section\" style=\"margin-top:0\">\n <h3><i class=\"fa-solid fa-chart-column\"></i> Confidence Distribution</h3>\n <div class=\"widget-card\">\n <div class=\"histogram\">\n @for (bin of ConfidenceHistogram; track bin.Label) {\n <div class=\"hist-bar-col\" style=\"cursor:pointer\" (click)=\"OpenDrillDown('quality-bin:' + bin.Label)\">\n <div class=\"hist-bar\" [style.height.%]=\"bin.Percentage\" [style.background]=\"bin.Color\">\n @if (bin.Count > 0) { {{ bin.Count }} }\n </div>\n <div class=\"hist-label\">{{ bin.Label }}</div>\n </div>\n }\n </div>\n <div class=\"confidence-stats\">\n @for (stat of ConfidenceStats; track stat.Label) {\n <span><strong>{{ stat.Label }}:</strong> {{ stat.Value }}</span>\n }\n </div>\n </div>\n </div>\n\n <!-- D10: Quality bin drill-down -->\n @if (DrillDownTarget && DrillDownTarget.startsWith('quality-bin:')) {\n <div class=\"drill-down-panel\">\n <div class=\"drill-down-header\">\n <span class=\"drill-down-title\"><i class=\"fa-solid fa-table\"></i> Items in Confidence Range {{ DrillDownTarget.replace('quality-bin:', '') }}</span>\n <div class=\"drill-down-header-actions\">\n @if (DrillDownData.length > 0) {\n <button class=\"drill-export-btn\" (click)=\"ExportDrillDownCSV()\" title=\"Export CSV\"><i class=\"fa-solid fa-download\"></i> CSV</button>\n }\n <button class=\"drill-down-close\" aria-label=\"Close drill-down\" (click)=\"CloseDrillDown()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n </div>\n @if (IsDrillDownLoading) {\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n } @else if (DrillDownData.length > 0) {\n <div class=\"drill-down-table-wrap\">\n <table class=\"data-table\">\n <thead><tr>\n @for (col of DrillDownColumns; track col) { <th>{{ col }}</th> }\n @if (DrillDownHasActions) { <th class=\"drill-action-col\"></th> }\n </tr></thead>\n <tbody>\n @for (row of DrillDownData; track TrackByIndex($index)) {\n <tr>\n @for (col of DrillDownColumns; track col) { <td>{{ row[col] }}</td> }\n @if (DrillDownHasActions) {\n <td class=\"drill-action-col\">\n @if (row['_RecordID']) {\n <button class=\"drill-open-btn\" aria-label=\"Open record\" (click)=\"OpenDrillDownRecord(row)\" title=\"Open record\"><i class=\"fa-solid fa-arrow-up-right-from-square\"></i></button>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"drill-down-empty\">No items in this confidence range</div>\n }\n </div>\n }\n\n <!-- Weight Distribution by Entity -->\n @if (WeightByEntity.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-weight-scale\"></i> Weight Distribution by Entity</h3>\n <div class=\"widget-card\">\n <div class=\"grouped-bar-chart\">\n @for (entity of WeightByEntity; track entity.Name) {\n <div class=\"grouped-col\">\n <div class=\"grouped-bars\">\n <div class=\"g-bar\" [style.height.%]=\"entity.High\" style=\"background:var(--mj-brand-primary)\" [title]=\"'High: ' + entity.High + '%'\"></div>\n <div class=\"g-bar\" [style.height.%]=\"entity.Med\" style=\"background:var(--mj-status-info)\" [title]=\"'Med: ' + entity.Med + '%'\"></div>\n <div class=\"g-bar\" [style.height.%]=\"entity.Low\" style=\"background:var(--mj-text-muted)\" [title]=\"'Low: ' + entity.Low + '%'\"></div>\n </div>\n <div class=\"grouped-label\">{{ entity.Name }}</div>\n </div>\n }\n </div>\n <div class=\"legend\" style=\"justify-content:center;margin-top:14px\">\n @for (item of WeightLegend; track item.Label) {\n <div class=\"legend-item\"><div class=\"legend-dot\" [style.background]=\"item.Color\"></div> {{ item.Label }}</div>\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Tag Accuracy Over Time -->\n @if (AccuracyLinePoints) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-chart-line\"></i> Tag Accuracy Over Time (Weekly Avg Confidence)</h3>\n <div class=\"widget-card\">\n <div class=\"accuracy-chart\">\n <div class=\"accuracy-y-labels\">\n <div>1.0</div>\n <div>0.75</div>\n <div>0.50</div>\n <div>0.25</div>\n </div>\n <div class=\"accuracy-area\">\n <div class=\"accuracy-grid-line\" style=\"top:33%\"></div>\n <div class=\"accuracy-grid-line\" style=\"top:66%\"></div>\n <svg width=\"100%\" height=\"110\" viewBox=\"0 0 400 110\" preserveAspectRatio=\"none\" class=\"accuracy-svg\">\n <polyline [attr.points]=\"AccuracyLinePoints\"\n fill=\"none\" stroke=\"var(--mj-brand-primary)\" stroke-width=\"2.5\" vector-effect=\"non-scaling-stroke\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n @for (dot of AccuracyDots; track TrackByIndex($index)) {\n <circle [attr.cx]=\"dot.Cx\" [attr.cy]=\"dot.Cy\" r=\"3\" fill=\"var(--mj-brand-primary)\"/>\n }\n </svg>\n </div>\n </div>\n <div class=\"accuracy-x-labels\">\n @for (label of AccuracyMonthLabels; track label) {\n <span>{{ label }}</span>\n }\n </div>\n <div class=\"accuracy-trend-text\">\n <i class=\"fa-solid fa-arrow-trend-up\" style=\"margin-right:4px\"></i>\n {{ AccuracyTrendText }}\n </div>\n </div>\n </div>\n }\n\n <!-- Low-Confidence Tags Table -->\n @if (LowConfidenceTags.length > 0) {\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-exclamation-triangle\"></i> Low-Confidence Tags (Avg Weight &lt; 0.4)</h3>\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Tag Name</th>\n <th class=\"num\">Avg Weight</th>\n <th class=\"num\">Usage Count</th>\n <th>Top Entity</th>\n <th>Suggested Action</th>\n </tr>\n </thead>\n <tbody>\n @for (tag of LowConfidenceTags; track tag.Name) {\n <tr>\n <td><strong>{{ tag.Name }}</strong></td>\n <td class=\"num\">{{ tag.AvgWeight }}</td>\n <td class=\"num\">{{ tag.UsageCount }}</td>\n <td>{{ tag.TopEntity }}</td>\n <td><span class=\"badge\" [class]=\"tag.ActionClass\">{{ tag.SuggestedAction }}</span></td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n\n <!-- Model Performance Comparison -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-robot\"></i> Model Performance Comparison</h3>\n <div class=\"model-grid\">\n @for (model of ModelComparisons; track model.Name) {\n <div class=\"model-card\">\n <div class=\"model-name\"><i [class]=\"model.Icon\" [style.color]=\"model.IconColor\" style=\"margin-right:4px\"></i> {{ model.Name }}</div>\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" style=\"margin:4px 0\">\n <circle cx=\"40\" cy=\"40\" r=\"32\" fill=\"none\" stroke=\"var(--mj-border-default)\" stroke-width=\"8\"/>\n <circle cx=\"40\" cy=\"40\" r=\"32\" fill=\"none\" [attr.stroke]=\"model.ScoreColor\" stroke-width=\"8\"\n [attr.stroke-dasharray]=\"model.StrokeDash\" stroke-dashoffset=\"50\"\n transform=\"rotate(-90 40 40)\" stroke-linecap=\"round\"/>\n </svg>\n <div class=\"model-score\" [style.color]=\"model.ScoreColor\">{{ model.ScorePercentage }}%</div>\n <div class=\"model-detail\">Avg confidence: {{ model.AvgConfidence }}</div>\n <div class=\"model-detail\">{{ FormatNumber(model.TagsGenerated) }} tags generated</div>\n <div class=\"model-detail\" [style.color]=\"model.RoleColor\" style=\"font-weight:600\">{{ model.Role }}</div>\n </div>\n }\n </div>\n @if (ModelRecommendation) {\n <div class=\"model-recommendation\">\n <i class=\"fa-solid fa-lightbulb\" style=\"color:var(--mj-status-warning)\"></i>\n <div>\n <strong>Recommendation:</strong> {{ ModelRecommendation }}\n </div>\n </div>\n }\n </div>\n </section>\n }\n\n <!-- ====================================================== -->\n <!-- TAB 6: COST & USAGE (D1) -->\n <!-- ====================================================== -->\n @if (ActiveTab === 'cost') {\n <section class=\"tab-section\">\n <div class=\"tab-section-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h1>Cost & Usage</h1>\n <div class=\"tab-header-actions\">\n <button class=\"drill-export-btn\" (click)=\"ExportTabDataCSV('cost-usage')\" title=\"Export CSV\">\n <i class=\"fa-solid fa-download\"></i> CSV\n </button>\n <button class=\"drill-export-btn\" (click)=\"PrintCurrentTab()\" title=\"Print (PDF alternative)\">\n <i class=\"fa-solid fa-print\"></i> Print\n </button>\n </div>\n </div>\n\n <!-- Filter Bar -->\n <div class=\"filter-bar\">\n <div class=\"date-chips\">\n @for (range of DateRanges; track range.Label) {\n <button\n class=\"date-chip\"\n [class.active]=\"ActiveDateRange === range.Label\"\n (click)=\"SetDateRange(range.Label)\"\n >{{ range.Label }}</button>\n }\n </div>\n </div>\n\n <!-- KPI Cards -->\n @if (CostKPIs.length > 0) {\n <div class=\"cost-kpi-row\">\n @for (kpi of CostKPIs; track kpi.Label) {\n <div class=\"cost-kpi-card\">\n <div class=\"cost-kpi-icon\"><i [class]=\"kpi.Icon\"></i></div>\n <div>\n <div class=\"cost-kpi-value\">{{ kpi.Value }}</div>\n <div class=\"cost-kpi-label\">{{ kpi.Label }}</div>\n <div class=\"cost-kpi-sub\">{{ kpi.SubLabel }}</div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Per-Run Cost Table -->\n <div class=\"sub-section\">\n <h3><i class=\"fa-solid fa-table\"></i> Cost Breakdown by Run</h3>\n @if (CostPerRunRows.length > 0) {\n <div class=\"table-scroll\">\n <table class=\"data-table\">\n <thead>\n <tr>\n <th>Run ID</th>\n <th>Source</th>\n <th class=\"num\">Tokens</th>\n <th class=\"num\">Cost</th>\n <th>Started</th>\n </tr>\n </thead>\n <tbody>\n @for (row of CostPerRunRows; track row.RunID) {\n <tr>\n <td class=\"monospace-cell\">{{ row.RunID }}</td>\n <td>{{ row.Source }}</td>\n <td class=\"num\">{{ FormatNumber(row.Tokens) }}</td>\n <td class=\"num\">{{ row.Cost > 0 ? '$' + row.Cost.toFixed(4) : '$0.00' }}</td>\n <td class=\"muted\">{{ row.Started }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-coins\"></i>\n <p>No cost data available yet. Run the pipeline to generate cost and token usage metrics.</p>\n <p class=\"empty-state-hint\">Cost data is aggregated from ContentProcessRunDetail records linked to AI Prompt Runs.</p>\n </div>\n }\n </div>\n </section>\n }\n\n </div><!-- /main-content -->\n </mj-left-nav-content>\n </div><!-- /analytics-layout -->\n}\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* ===================================================================\n Analytics & Insights Resource Component\n ================================================================= */\n\n.analytics-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 400px;\n}\n\n/*\n Layout \u2014 <mj-left-nav> rail (with trending tags in [footer]) +\n <mj-left-nav-content>. The shared primitives own the rail's width, nav-item\n styling, sections, and busy state. Only the trending-section + tag-cloud\n styling stays bespoke (it's projected content, not nav chrome).\n*/\n.analytics-layout {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n\n.trending-section {\n padding: 12px 16px 16px;\n}\n\n.trending-section h3 {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n margin: 0 0 10px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.tag-cloud {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 6px;\n line-height: 1.7;\n}\n\n.tag-cloud span {\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: opacity 0.15s;\n}\n\n.tag-cloud span:hover {\n opacity: 0.7;\n}\n\n.no-trending {\n color: var(--mj-text-muted) !important;\n font-size: 12px !important;\n font-style: italic;\n}\n\n.pipeline-status {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--mj-status-success);\n flex-shrink: 0;\n}\n\n.status-dot-error {\n background: var(--mj-status-error);\n}\n\n/* ===== MAIN CONTENT ===== */\n.main-content {\n flex: 1;\n overflow-y: auto;\n min-width: 0;\n}\n\n.tab-section {\n padding: 28px 32px 40px;\n}\n\n.tab-section-header {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 2px solid var(--mj-brand-primary);\n}\n\n.tab-section-header i {\n font-size: 18px;\n color: var(--mj-brand-primary);\n}\n\n.tab-section-header h1 {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n/* ===== FILTER BAR ===== */\n.filter-bar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n\n.date-chips {\n display: flex;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.date-chip {\n padding: 6px 14px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface);\n cursor: pointer;\n border: none;\n border-right: 1px solid var(--mj-border-default);\n transition: all 0.15s;\n font-family: inherit;\n}\n\n.date-chip:last-child {\n border-right: none;\n}\n\n.date-chip:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.date-chip.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.filter-dropdown {\n padding: 6px 12px;\n font-size: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-family: inherit;\n}\n\n/* ===== KPI CARDS ===== */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.kpi-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px 18px;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.kpi-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.1;\n}\n\n.kpi-delta {\n font-size: 11px;\n font-weight: 500;\n margin-top: 4px;\n color: var(--mj-text-muted);\n}\n\n.kpi-delta.up {\n color: var(--mj-status-success);\n}\n\n.kpi-delta.down {\n color: var(--mj-status-error);\n}\n\n.kpi-sparkline {\n flex-shrink: 0;\n margin-left: 12px;\n margin-top: 6px;\n}\n\n/* ===== CARDS GRID ===== */\n.cards-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n}\n\n.widget-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 18px 20px;\n transition: transform 0.15s, box-shadow 0.15s;\n cursor: pointer;\n}\n\n.widget-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.widget-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 14px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.widget-title i {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n.widget-empty {\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n padding: 20px;\n}\n\n.widget-footnote {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 10px;\n}\n\n/* ===== BAR CHART ===== */\n.bar-chart {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n height: 120px;\n padding-top: 10px;\n}\n\n.bar-col {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.bar {\n width: 100%;\n border-radius: 4px 4px 0 0;\n transition: height 0.3s;\n min-height: 2px;\n}\n\n.bar-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n}\n\n.bar-value {\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 4px;\n}\n\n/* ===== PROGRESS RINGS ===== */\n.rings-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.ring-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n}\n\n.ring-label {\n font-size: 12px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.ring-stat {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n/* ===== GAUGE ===== */\n.gauge-container {\n display: flex;\n justify-content: center;\n margin-bottom: 8px;\n}\n\n/* ===== MINI HISTOGRAM ===== */\n.mini-histogram {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 32px;\n justify-content: center;\n}\n\n.mini-hist-bar {\n width: 14px;\n border-radius: 2px;\n}\n\n.mini-hist-label {\n text-align: center;\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* ===== HORIZONTAL BARS ===== */\n.h-bar-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.h-bar-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.h-bar-name {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 100px;\n flex-shrink: 0;\n text-align: right;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.h-bar-track {\n flex: 1;\n height: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.h-bar-fill {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 36px;\n}\n\n/* ===== THROUGHPUT BARS ===== */\n.throughput-bars {\n display: flex;\n align-items: flex-end;\n gap: 4px;\n height: 110px;\n margin-bottom: 22px;\n}\n\n.tp-bar {\n flex: 1;\n border-radius: 3px 3px 0 0;\n position: relative;\n min-height: 4px;\n}\n\n.tp-bar-label {\n position: absolute;\n bottom: -18px;\n left: 50%;\n transform: translateX(-50%);\n font-size: 8px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n/* ===== TAXONOMY ===== */\n.taxonomy-ring-container {\n display: flex;\n justify-content: center;\n}\n\n.taxonomy-stats {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.tax-stat {\n flex: 1;\n text-align: center;\n padding: 8px 4px;\n border-radius: 6px;\n font-size: 20px;\n font-weight: 700;\n}\n\n.tax-stat small {\n display: block;\n font-size: 10px;\n font-weight: 500;\n margin-top: 2px;\n}\n\n/* ===== LEGEND ===== */\n.legend {\n display: flex;\n gap: 16px;\n margin-top: 10px;\n flex-wrap: wrap;\n justify-content: center;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 3px;\n flex-shrink: 0;\n}\n\n/* ===== DATA TABLES ===== */\n.table-scroll {\n overflow-x: auto;\n}\n\n.data-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12.5px;\n}\n\n.data-table thead th {\n text-align: left;\n padding: 10px 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted);\n border-bottom: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n white-space: nowrap;\n}\n\n.data-table tbody td {\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n.data-table tbody tr:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.data-table .num {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.muted {\n color: var(--mj-text-muted);\n}\n\n.monospace-cell {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.weight-bar {\n display: inline-block;\n height: 6px;\n border-radius: 3px;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n/* ===== BADGES ===== */\n.badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10.5px;\n font-weight: 600;\n}\n\n.badge-success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.badge-warning {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge-error {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.badge-info {\n background: color-mix(in srgb, var(--mj-status-info) 12%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n/* ===== SUB-SECTIONS ===== */\n.sub-section {\n margin-top: 24px;\n}\n\n.sub-section h3 {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.sub-section h3 i {\n font-size: 13px;\n color: var(--mj-brand-primary);\n}\n\n/* ===== EMPTY STATE ===== */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 3rem 2rem;\n text-align: center;\n gap: 0.75rem;\n border: 2px dashed var(--mj-border-default);\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 2.5rem;\n color: var(--mj-text-disabled);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 0.85rem;\n max-width: 400px;\n}\n\n/* ===== DRILL-DOWN PANEL ===== */\n.drill-down-panel {\n margin-top: 16px;\n margin-bottom: 16px;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-brand-primary);\n border-radius: 10px;\n overflow: hidden;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 600px;\n }\n}\n\n.drill-down-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.drill-down-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-down-close {\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.drill-down-close:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.drill-down-table-wrap {\n max-height: 400px;\n overflow-y: auto;\n padding: 8px;\n}\n\n.drill-action-col {\n width: 40px;\n text-align: center;\n padding: 6px !important;\n}\n\n.drill-open-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-muted);\n font-size: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-open-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.drill-down-header-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.drill-export-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 5px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 11px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.drill-export-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.sub-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 0;\n}\n\n.sub-section-header h3 {\n margin: 0;\n}\n\n.drill-down-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n/* ===== STACKED BAR CHART ===== */\n.stacked-bar-chart {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stacked-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stacked-label {\n width: 90px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stacked-track {\n flex: 1;\n height: 22px;\n display: flex;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stacked-seg {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 9px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 20px;\n}\n\n/* ===== VERTICAL BAR CHART ===== */\n.v-bar-chart {\n display: flex;\n align-items: flex-end;\n gap: 24px;\n height: 140px;\n padding-top: 10px;\n justify-content: center;\n}\n\n.v-bar-col {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n min-width: 60px;\n}\n\n.v-bar {\n width: 48px;\n border-radius: 4px 4px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 4px;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-inverse);\n}\n\n.v-bar-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 8px;\n text-align: center;\n}\n\n.chart-footnote {\n text-align: center;\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 14px;\n}\n\n/* ===== TWO COLUMN ===== */\n.two-col {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 20px;\n}\n\n/* ===== SOURCE SELECTED ===== */\n.source-selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n/* ===== QUALITY BANDS ===== */\n.quality-bands {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.quality-band-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.quality-band-label {\n font-size: 11px;\n color: var(--mj-text-muted);\n width: 65px;\n text-align: right;\n flex-shrink: 0;\n}\n\n.quality-band-track {\n flex: 1;\n height: 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.quality-band-fill {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n padding-left: 8px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-width: 30px;\n}\n\n.source-quality-note {\n margin-top: 14px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n/* ===== SOURCE HEALTH ===== */\n.source-health-grid {\n display: grid;\n gap: 12px;\n}\n\n.source-health-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border-top: 3px solid;\n}\n\n.health-card-name {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.health-card-value {\n font-size: 22px;\n font-weight: 700;\n}\n\n.health-card-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* ===== PIPELINE ===== */\n.pipeline-throughput-bars {\n display: flex;\n align-items: flex-end;\n gap: 3px;\n height: 110px;\n}\n\n.pipeline-bar {\n flex: 1;\n border-radius: 2px 2px 0 0;\n min-height: 3px;\n}\n\n.pipeline-date-labels {\n display: flex;\n justify-content: space-between;\n margin-top: 6px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* ===== PROCESSING STAGES ===== */\n.stage-bars {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.stage-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.stage-name {\n width: 80px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-track {\n flex: 1;\n height: 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.stage-fill {\n height: 100%;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n}\n\n.stage-time {\n width: 50px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-align: right;\n flex-shrink: 0;\n}\n\n.stage-summary {\n display: flex;\n justify-content: space-between;\n margin-top: 14px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.stage-warning {\n color: var(--mj-text-muted);\n}\n\n/* ===== SUCCESS RATE ===== */\n.success-rate-display {\n display: flex;\n justify-content: center;\n gap: 48px;\n padding: 20px;\n}\n\n.success-rate-stat {\n text-align: center;\n}\n\n.success-rate-value {\n font-size: 32px;\n font-weight: 700;\n line-height: 1.1;\n}\n\n.success-rate-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* ===== PROGRESS ===== */\n.progress-track {\n width: 100px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n margin-right: 6px;\n}\n\n.progress-fill {\n height: 100%;\n border-radius: 3px;\n}\n\n.progress-text {\n font-size: 11px;\n font-weight: 600;\n}\n\n/* ===== ERROR LOG ===== */\n.error-log {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.error-entry {\n display: flex;\n gap: 12px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 4%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-error);\n border-radius: 0 6px 6px 0;\n font-size: 12px;\n}\n\n.error-time {\n color: var(--mj-text-muted);\n font-size: 11px;\n white-space: nowrap;\n flex-shrink: 0;\n width: 130px;\n}\n\n.error-source {\n color: var(--mj-brand-primary);\n font-weight: 600;\n flex-shrink: 0;\n width: 120px;\n}\n\n.error-msg {\n color: var(--mj-text-secondary);\n}\n\n/* ===== HISTOGRAM ===== */\n.histogram {\n display: flex;\n align-items: flex-end;\n gap: 6px;\n height: 130px;\n padding-bottom: 24px;\n}\n\n.hist-bar-col {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.hist-bar {\n width: 100%;\n border-radius: 3px 3px 0 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n min-height: 2px;\n}\n\n.hist-label {\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n.confidence-stats {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 10px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-size: 11px;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n gap: 8px;\n}\n\n/* ===== GROUPED BAR CHART ===== */\n.grouped-bar-chart {\n display: flex;\n align-items: flex-end;\n gap: 20px;\n height: 140px;\n justify-content: center;\n}\n\n.grouped-col {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-end;\n}\n\n.grouped-bars {\n display: flex;\n gap: 3px;\n align-items: flex-end;\n height: 100%;\n}\n\n.g-bar {\n width: 18px;\n border-radius: 3px 3px 0 0;\n min-height: 2px;\n}\n\n.grouped-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 6px;\n text-align: center;\n}\n\n/* ===== ACCURACY CHART ===== */\n.accuracy-chart {\n position: relative;\n display: flex;\n margin: 0 10px;\n}\n\n.accuracy-y-labels {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n font-size: 9px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n height: 110px;\n}\n\n.accuracy-area {\n flex: 1;\n position: relative;\n height: 110px;\n border-left: 1px solid var(--mj-border-default);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.accuracy-grid-line {\n position: absolute;\n left: 0;\n right: 0;\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.accuracy-svg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.accuracy-x-labels {\n display: flex;\n justify-content: space-between;\n margin-top: 8px;\n padding: 0 40px 0 40px;\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n.accuracy-trend-text {\n text-align: center;\n margin-top: 10px;\n font-size: 12px;\n color: var(--mj-status-success);\n}\n\n/* ===== MODEL COMPARISON ===== */\n.model-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.model-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 14px;\n text-align: center;\n border: 1px solid var(--mj-border-default);\n}\n\n.model-name {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n}\n\n.model-score {\n font-size: 28px;\n font-weight: 700;\n line-height: 1;\n}\n\n.model-detail {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n.model-recommendation {\n margin-top: 14px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n/* ===== RESPONSIVE ===== */\n@media (max-width: 1200px) {\n .cards-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .model-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .analytics-layout {\n flex-direction: column;\n }\n\n .analytics-sidebar {\n width: 100%;\n min-width: 100%;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .sidebar-nav {\n flex-direction: row;\n overflow-x: auto;\n }\n\n .nav-item {\n border-left: none;\n border-bottom: 3px solid transparent;\n white-space: nowrap;\n }\n\n .nav-item.active {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .trending-section,\n .sidebar-divider {\n display: none;\n }\n\n .tab-section {\n padding: 16px;\n }\n\n .cards-grid {\n grid-template-columns: 1fr;\n }\n\n .kpi-row {\n grid-template-columns: 1fr;\n }\n\n .two-col {\n grid-template-columns: 1fr;\n }\n\n .cost-kpi-row {\n grid-template-columns: 1fr;\n }\n}\n\n/* ===== COST & USAGE TAB (D1) ===== */\n\n.tab-header-actions {\n display: flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.cost-kpi-row {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.cost-kpi-card {\n display: flex;\n gap: 14px;\n align-items: center;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 18px 20px;\n transition: box-shadow 0.15s ease;\n}\n\n.cost-kpi-card:hover {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-text-primary) 8%, transparent);\n}\n\n.cost-kpi-icon {\n width: 44px;\n height: 44px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n flex-shrink: 0;\n}\n\n.cost-kpi-value {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1.2;\n}\n\n.cost-kpi-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.cost-kpi-sub {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.empty-state-hint {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n}\n\n/* ===== D5: PRINT STYLES ===== */\n\n@media print {\n .analytics-sidebar,\n .filter-bar,\n .tab-header-actions,\n .drill-down-close,\n .drill-export-btn,\n .drill-open-btn {\n display: none !important;\n }\n\n .analytics-layout {\n display: block;\n }\n\n .main-content {\n padding: 0;\n }\n\n .tab-section {\n padding: 0;\n }\n\n .widget-card,\n .cost-kpi-card,\n .kpi-card {\n break-inside: avoid;\n box-shadow: none;\n border: 1px solid var(--mj-border-default);\n }\n\n .data-table {\n font-size: 10px;\n }\n}\n\n/* \u2500\u2500 Co-Occurrence Section \u2500\u2500 */\n\n/* Constrain the co-occurrence sub-section so an empty state or large table\n does not blow out the page height and render the app unusable. */\n.co-occurrence-section {\n max-height: 500px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.co-occurrence-section .table-scroll {\n overflow-y: auto;\n max-height: 400px;\n flex: 1;\n min-height: 0;\n}\n\n.co-occurrence-section .empty-state {\n max-height: 200px;\n overflow: hidden;\n}\n\n.co-occurrence-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.co-occurrence-staleness {\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 0.78rem;\n color: var(--mj-text-muted);\n}\n"] }]
4261
4252
  }], null, null); })();
4262
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsResourceComponent, { className: "AnalyticsResourceComponent", filePath: "src/KnowledgeHub/components/analytics/analytics-resource.component.ts", lineNumber: 222 }); })();
4253
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsResourceComponent, { className: "AnalyticsResourceComponent", filePath: "src/KnowledgeHub/components/analytics/analytics-resource.component.ts", lineNumber: 223 }); })();
4263
4254
  /** Tree-shaking prevention */
4264
4255
  export function LoadAnalyticsResource() {
4265
4256
  // Prevents tree-shaking