@memberjunction/ng-dashboards 5.35.0 → 5.37.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 (159) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js +3 -3
  2. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  3. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +157 -137
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  11. package/dist/AI/components/models/model-management.component.js +4 -4
  12. package/dist/AI/components/models/model-management.component.js.map +1 -1
  13. package/dist/AI/components/prompts/prompt-management.component.js +3 -3
  14. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  16. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  17. package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
  18. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  19. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  20. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  22. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  23. package/dist/Actions/components/actions-overview.component.js +137 -142
  24. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  25. package/dist/Actions/components/execution-monitoring.component.js +111 -116
  26. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  27. package/dist/Admin/admin-data-schema.component.js +13 -65
  28. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  29. package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
  30. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  31. package/dist/Admin/admin-identity-access.component.js +13 -65
  32. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  33. package/dist/Admin/admin-monitoring.component.js +13 -65
  34. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  35. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  36. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  37. package/dist/Admin/base-admin-container.component.js +26 -17
  38. package/dist/Admin/base-admin-container.component.js.map +1 -1
  39. package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
  40. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  41. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  42. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  43. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  44. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  45. package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
  46. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  47. package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
  48. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  49. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
  50. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  51. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  52. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  53. package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
  54. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  55. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  56. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  57. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
  58. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  59. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  60. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  61. package/dist/DevTools/app-state-inspector.component.js +46 -72
  62. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  63. package/dist/DevTools/class-registry.component.js +88 -100
  64. package/dist/DevTools/class-registry.component.js.map +1 -1
  65. package/dist/DevTools/event-monitor.component.js +158 -168
  66. package/dist/DevTools/event-monitor.component.js.map +1 -1
  67. package/dist/DevTools/graphql-console.component.js +257 -264
  68. package/dist/DevTools/graphql-console.component.js.map +1 -1
  69. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  70. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  71. package/dist/DevTools/layout-inspector.component.js +46 -64
  72. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  73. package/dist/DevTools/lazy-module-status.component.js +75 -84
  74. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  75. package/dist/DevTools/settings-explorer.component.js +76 -85
  76. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  78. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  79. package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
  80. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  81. package/dist/Integration/components/activity/activity.component.js +97 -99
  82. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  83. package/dist/Integration/components/connections/connections.component.js +842 -855
  84. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  85. package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
  86. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  87. package/dist/Integration/components/schedules/schedules.component.js +78 -89
  88. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  89. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  90. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  91. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
  92. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  93. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  94. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  95. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
  96. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  97. package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
  98. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  99. package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
  100. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  101. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  102. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  103. package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
  104. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  105. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  106. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  107. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  108. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  109. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  110. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  111. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  112. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  113. package/dist/Lists/index.d.ts +1 -0
  114. package/dist/Lists/index.d.ts.map +1 -1
  115. package/dist/Lists/index.js +1 -0
  116. package/dist/Lists/index.js.map +1 -1
  117. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  118. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js +236 -10
  120. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  121. package/dist/MCP/mcp-dashboard.component.js +19 -19
  122. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  123. package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
  124. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  125. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  126. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  127. package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
  128. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  129. package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
  130. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  131. package/dist/Testing/components/testing-explorer.component.js +543 -629
  132. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  133. package/dist/Testing/testing-dashboard.component.js +50 -49
  134. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  135. package/dist/ai-dashboards.module.d.ts +1 -1
  136. package/dist/ai-dashboards.module.d.ts.map +1 -1
  137. package/dist/ai-dashboards.module.js +16 -1
  138. package/dist/ai-dashboards.module.js.map +1 -1
  139. package/dist/communication-dashboards.module.d.ts +9 -7
  140. package/dist/communication-dashboards.module.d.ts.map +1 -1
  141. package/dist/communication-dashboards.module.js +13 -4
  142. package/dist/communication-dashboards.module.js.map +1 -1
  143. package/dist/core-dashboards.module.d.ts +1 -1
  144. package/dist/core-dashboards.module.d.ts.map +1 -1
  145. package/dist/core-dashboards.module.js +16 -1
  146. package/dist/core-dashboards.module.js.map +1 -1
  147. package/dist/lists-dashboards.module.d.ts +10 -9
  148. package/dist/lists-dashboards.module.d.ts.map +1 -1
  149. package/dist/lists-dashboards.module.js +13 -2
  150. package/dist/lists-dashboards.module.js.map +1 -1
  151. package/dist/public-api.d.ts +1 -0
  152. package/dist/public-api.d.ts.map +1 -1
  153. package/dist/public-api.js +1 -0
  154. package/dist/public-api.js.map +1 -1
  155. package/dist/testing-dashboards.module.d.ts +1 -1
  156. package/dist/testing-dashboards.module.d.ts.map +1 -1
  157. package/dist/testing-dashboards.module.js +13 -1
  158. package/dist/testing-dashboards.module.js.map +1 -1
  159. package/package.json +53 -52
@@ -24,641 +24,624 @@ 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
26
  import * as i3 from "@memberjunction/ng-ui-components";
27
- const _forTrack0 = ($index, $item) => $item.ID;
28
- const _forTrack1 = ($index, $item) => $item.Name;
29
- const _forTrack2 = ($index, $item) => $item.Label;
30
- const _forTrack3 = ($index, $item) => $item.EntityName;
31
- const _forTrack4 = ($index, $item) => $item.TagAName + $item.TagBName;
32
- const _forTrack5 = ($index, $item) => $item.RunID;
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;
33
32
  function AnalyticsResourceComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
34
33
  i0.ɵɵelementStart(0, "div", 4);
35
34
  i0.ɵɵelement(1, "mj-loading", 6);
36
35
  i0.ɵɵelementEnd();
37
36
  } }
38
- function AnalyticsResourceComponent_Conditional_6_For_4_Template(rf, ctx) { if (rf & 1) {
39
- const _r1 = i0.ɵɵgetCurrentView();
40
- i0.ɵɵelementStart(0, "button", 18);
41
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_For_4_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)); });
42
- i0.ɵɵelement(1, "i");
43
- i0.ɵɵtext(2);
44
- i0.ɵɵelementEnd();
45
- } if (rf & 2) {
46
- const nav_r2 = ctx.$implicit;
47
- const ctx_r2 = i0.ɵɵnextContext(2);
48
- i0.ɵɵclassProp("active", ctx_r2.ActiveTab === nav_r2.ID);
49
- i0.ɵɵadvance();
50
- i0.ɵɵclassMap(nav_r2.Icon);
51
- i0.ɵɵadvance();
52
- i0.ɵɵtextInterpolate1(" ", nav_r2.Label, " ");
53
- } }
54
- function AnalyticsResourceComponent_Conditional_6_For_12_Template(rf, ctx) { if (rf & 1) {
37
+ function AnalyticsResourceComponent_Conditional_6_For_8_Template(rf, ctx) { if (rf & 1) {
55
38
  i0.ɵɵelementStart(0, "span");
56
39
  i0.ɵɵtext(1);
57
40
  i0.ɵɵelementEnd();
58
41
  } if (rf & 2) {
59
- const tag_r4 = ctx.$implicit;
60
- 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);
61
44
  i0.ɵɵadvance();
62
- i0.ɵɵtextInterpolate(tag_r4.Name);
45
+ i0.ɵɵtextInterpolate(tag_r3.Name);
63
46
  } }
64
- function AnalyticsResourceComponent_Conditional_6_Conditional_13_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "span", 15);
47
+ function AnalyticsResourceComponent_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "span", 12);
66
49
  i0.ɵɵtext(1, "No trending tags yet");
67
50
  i0.ɵɵelementEnd();
68
51
  } }
69
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_8_Template(rf, ctx) { if (rf & 1) {
70
- const _r6 = i0.ɵɵgetCurrentView();
71
- i0.ɵɵelementStart(0, "button", 74);
72
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_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)); });
73
56
  i0.ɵɵtext(1);
74
57
  i0.ɵɵelementEnd();
75
58
  } if (rf & 2) {
76
- const range_r7 = ctx.$implicit;
77
- const ctx_r2 = i0.ɵɵnextContext(3);
78
- 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);
79
62
  i0.ɵɵadvance();
80
- i0.ɵɵtextInterpolate(range_r7.Label);
63
+ i0.ɵɵtextInterpolate(range_r6.Label);
81
64
  } }
82
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_11_Template(rf, ctx) { if (rf & 1) {
83
- 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);
84
67
  i0.ɵɵtext(1);
85
68
  i0.ɵɵelementEnd();
86
69
  } if (rf & 2) {
87
- const opt_r8 = ctx.$implicit;
88
- i0.ɵɵproperty("value", opt_r8);
70
+ const opt_r7 = ctx.$implicit;
71
+ i0.ɵɵproperty("value", opt_r7);
89
72
  i0.ɵɵadvance();
90
- i0.ɵɵtextInterpolate(opt_r8);
73
+ i0.ɵɵtextInterpolate(opt_r7);
91
74
  } }
92
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_14_Conditional_7_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵelement(0, "i", 79);
75
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Conditional_7_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelement(0, "i", 75);
94
77
  } }
95
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵelement(0, "i", 80);
78
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
79
+ i0.ɵɵelement(0, "i", 76);
97
80
  } }
98
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_14_Template(rf, ctx) { if (rf & 1) {
99
- const _r9 = i0.ɵɵgetCurrentView();
100
- i0.ɵɵelementStart(0, "div", 75);
101
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_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)); });
102
- i0.ɵɵelementStart(1, "div")(2, "div", 76);
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);
103
86
  i0.ɵɵtext(3);
104
87
  i0.ɵɵelementEnd();
105
- i0.ɵɵelementStart(4, "div", 77);
88
+ i0.ɵɵelementStart(4, "div", 73);
106
89
  i0.ɵɵtext(5);
107
90
  i0.ɵɵelementEnd();
108
- i0.ɵɵelementStart(6, "div", 78);
109
- i0.ɵɵconditionalCreate(7, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_14_Conditional_7_Template, 1, 0, "i", 79)(8, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_14_Conditional_8_Template, 1, 0, "i", 80);
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);
110
93
  i0.ɵɵtext(9);
111
94
  i0.ɵɵelementEnd()();
112
- i0.ɵɵelementStart(10, "div", 81);
95
+ i0.ɵɵelementStart(10, "div", 77);
113
96
  i0.ɵɵnamespaceSVG();
114
- i0.ɵɵelementStart(11, "svg", 82);
115
- i0.ɵɵelement(12, "polyline", 83);
97
+ i0.ɵɵelementStart(11, "svg", 78);
98
+ i0.ɵɵelement(12, "polyline", 79);
116
99
  i0.ɵɵelementEnd()()();
117
100
  } if (rf & 2) {
118
- const kpi_r10 = ctx.$implicit;
101
+ const kpi_r9 = ctx.$implicit;
119
102
  i0.ɵɵadvance(3);
120
- i0.ɵɵtextInterpolate(kpi_r10.Label);
103
+ i0.ɵɵtextInterpolate(kpi_r9.Label);
121
104
  i0.ɵɵadvance(2);
122
- i0.ɵɵtextInterpolate(kpi_r10.Value);
105
+ i0.ɵɵtextInterpolate(kpi_r9.Value);
123
106
  i0.ɵɵadvance();
124
- 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");
125
108
  i0.ɵɵadvance();
126
- 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);
127
110
  i0.ɵɵadvance(2);
128
- i0.ɵɵtextInterpolate1(" ", kpi_r10.Delta, " ");
111
+ i0.ɵɵtextInterpolate1(" ", kpi_r9.Delta, " ");
129
112
  i0.ɵɵadvance(3);
130
- i0.ɵɵattribute("points", kpi_r10.SparklinePoints)("stroke", kpi_r10.SparklineColor);
113
+ i0.ɵɵattribute("points", kpi_r9.SparklinePoints)("stroke", kpi_r9.SparklineColor);
131
114
  } }
132
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
133
- const _r12 = i0.ɵɵgetCurrentView();
134
- i0.ɵɵelementStart(0, "button", 94);
135
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
136
- i0.ɵɵelement(1, "i", 95);
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);
137
120
  i0.ɵɵtext(2, " CSV ");
138
121
  i0.ɵɵelementEnd();
139
122
  } }
140
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
141
- i0.ɵɵelement(0, "mj-loading", 91);
123
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
124
+ i0.ɵɵelement(0, "mj-loading", 87);
142
125
  } }
143
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_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) {
144
127
  i0.ɵɵelementStart(0, "th");
145
128
  i0.ɵɵtext(1);
146
129
  i0.ɵɵelementEnd();
147
130
  } if (rf & 2) {
148
- const col_r13 = ctx.$implicit;
131
+ const col_r12 = ctx.$implicit;
149
132
  i0.ɵɵadvance();
150
- i0.ɵɵtextInterpolate(col_r13);
133
+ i0.ɵɵtextInterpolate(col_r12);
151
134
  } }
152
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelement(0, "th", 97);
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);
154
137
  } }
155
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_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) {
156
139
  i0.ɵɵelementStart(0, "td");
157
140
  i0.ɵɵtext(1);
158
141
  i0.ɵɵelementEnd();
159
142
  } if (rf & 2) {
160
- const col_r14 = ctx.$implicit;
161
- const row_r15 = i0.ɵɵnextContext().$implicit;
143
+ const col_r13 = ctx.$implicit;
144
+ const row_r14 = i0.ɵɵnextContext().$implicit;
162
145
  i0.ɵɵadvance();
163
- i0.ɵɵtextInterpolate(row_r15[col_r14]);
146
+ i0.ɵɵtextInterpolate(row_r14[col_r13]);
164
147
  } }
165
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
166
- const _r16 = i0.ɵɵgetCurrentView();
167
- i0.ɵɵelementStart(0, "button", 99);
168
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_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)); });
169
- i0.ɵɵelement(1, "i", 100);
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);
170
153
  i0.ɵɵelementEnd();
171
154
  } }
172
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
173
- i0.ɵɵelementStart(0, "td", 97);
174
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 98);
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);
175
158
  i0.ɵɵelementEnd();
176
159
  } if (rf & 2) {
177
- const row_r15 = i0.ɵɵnextContext().$implicit;
160
+ const row_r14 = i0.ɵɵnextContext().$implicit;
178
161
  i0.ɵɵadvance();
179
- i0.ɵɵconditional(row_r15["_RecordID"] ? 1 : -1);
162
+ i0.ɵɵconditional(row_r14["_RecordID"] ? 1 : -1);
180
163
  } }
181
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_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) {
182
165
  i0.ɵɵelementStart(0, "tr");
183
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
184
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 97);
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);
185
168
  i0.ɵɵelementEnd();
186
169
  } if (rf & 2) {
187
- const ctx_r2 = i0.ɵɵnextContext(5);
170
+ const ctx_r1 = i0.ɵɵnextContext(5);
188
171
  i0.ɵɵadvance();
189
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
172
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
190
173
  i0.ɵɵadvance(2);
191
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
174
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
192
175
  } }
193
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_Template(rf, ctx) { if (rf & 1) {
194
- i0.ɵɵelementStart(0, "div", 92)(1, "table", 96)(2, "thead")(3, "tr");
195
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
196
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_Conditional_6_Template, 1, 0, "th", 97);
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);
197
180
  i0.ɵɵelementEnd()();
198
181
  i0.ɵɵelementStart(7, "tbody");
199
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_15_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);
200
183
  i0.ɵɵelementEnd()()();
201
184
  } if (rf & 2) {
202
- const ctx_r2 = i0.ɵɵnextContext(4);
185
+ const ctx_r1 = i0.ɵɵnextContext(4);
203
186
  i0.ɵɵadvance(4);
204
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
187
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
205
188
  i0.ɵɵadvance(2);
206
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
189
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
207
190
  i0.ɵɵadvance(2);
208
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
191
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
209
192
  } }
210
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
211
- i0.ɵɵelementStart(0, "div", 93);
193
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
194
+ i0.ɵɵelementStart(0, "div", 89);
212
195
  i0.ɵɵtext(1, "No data available");
213
196
  i0.ɵɵelementEnd();
214
197
  } }
215
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Template(rf, ctx) { if (rf & 1) {
216
- const _r11 = i0.ɵɵgetCurrentView();
217
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 84)(2, "span", 85);
218
- i0.ɵɵelement(3, "i", 86);
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);
219
202
  i0.ɵɵtext(4, " Detail View");
220
203
  i0.ɵɵelementEnd();
221
- i0.ɵɵelementStart(5, "div", 87);
222
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_6_Template, 3, 0, "button", 88);
223
- i0.ɵɵelementStart(7, "button", 89);
224
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
225
- i0.ɵɵelement(8, "i", 90);
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);
226
209
  i0.ɵɵelementEnd()()();
227
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_9_Template, 1, 0, "mj-loading", 91)(10, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_10_Template, 10, 1, "div", 92)(11, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Conditional_11_Template, 2, 0, "div", 93);
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);
228
211
  i0.ɵɵelementEnd();
229
212
  } if (rf & 2) {
230
- const ctx_r2 = i0.ɵɵnextContext(3);
213
+ const ctx_r1 = i0.ɵɵnextContext(3);
231
214
  i0.ɵɵadvance(6);
232
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
215
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
233
216
  i0.ɵɵadvance(3);
234
- 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);
235
218
  } }
236
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_23_Template(rf, ctx) { if (rf & 1) {
237
- i0.ɵɵelementStart(0, "div", 34)(1, "div", 101);
219
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_23_Template(rf, ctx) { if (rf & 1) {
220
+ i0.ɵɵelementStart(0, "div", 30)(1, "div", 97);
238
221
  i0.ɵɵtext(2);
239
222
  i0.ɵɵelementEnd();
240
- i0.ɵɵelement(3, "div", 102);
241
- i0.ɵɵelementStart(4, "div", 103);
223
+ i0.ɵɵelement(3, "div", 98);
224
+ i0.ɵɵelementStart(4, "div", 99);
242
225
  i0.ɵɵtext(5);
243
226
  i0.ɵɵelementEnd()();
244
227
  } if (rf & 2) {
245
- const bar_r17 = ctx.$implicit;
228
+ const bar_r16 = ctx.$implicit;
246
229
  i0.ɵɵadvance(2);
247
- i0.ɵɵtextInterpolate(bar_r17.Count);
230
+ i0.ɵɵtextInterpolate(bar_r16.Count);
248
231
  i0.ɵɵadvance();
249
- 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);
250
233
  i0.ɵɵadvance(2);
251
- i0.ɵɵtextInterpolate(bar_r17.Label);
234
+ i0.ɵɵtextInterpolate(bar_r16.Label);
252
235
  } }
253
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_30_Template(rf, ctx) { if (rf & 1) {
254
- i0.ɵɵelementStart(0, "div", 37);
236
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_30_Template(rf, ctx) { if (rf & 1) {
237
+ i0.ɵɵelementStart(0, "div", 33);
255
238
  i0.ɵɵnamespaceSVG();
256
- i0.ɵɵelementStart(1, "svg", 104);
257
- i0.ɵɵelement(2, "circle", 105)(3, "circle", 106);
258
- i0.ɵɵelementStart(4, "text", 107);
239
+ i0.ɵɵelementStart(1, "svg", 100);
240
+ i0.ɵɵelement(2, "circle", 101)(3, "circle", 102);
241
+ i0.ɵɵelementStart(4, "text", 103);
259
242
  i0.ɵɵtext(5);
260
243
  i0.ɵɵelementEnd()();
261
244
  i0.ɵɵnamespaceHTML();
262
- i0.ɵɵelementStart(6, "div")(7, "div", 108);
245
+ i0.ɵɵelementStart(6, "div")(7, "div", 104);
263
246
  i0.ɵɵtext(8);
264
247
  i0.ɵɵelementEnd();
265
- i0.ɵɵelementStart(9, "div", 109);
248
+ i0.ɵɵelementStart(9, "div", 105);
266
249
  i0.ɵɵtext(10);
267
250
  i0.ɵɵelementEnd()()();
268
251
  } if (rf & 2) {
269
- const entity_r18 = ctx.$implicit;
270
- const ctx_r2 = i0.ɵɵnextContext(3);
252
+ const entity_r17 = ctx.$implicit;
253
+ const ctx_r1 = i0.ɵɵnextContext(3);
271
254
  i0.ɵɵadvance(3);
272
- i0.ɵɵattribute("stroke", entity_r18.Color)("stroke-dasharray", entity_r18.StrokeDash);
255
+ i0.ɵɵattribute("stroke", entity_r17.Color)("stroke-dasharray", entity_r17.StrokeDash);
273
256
  i0.ɵɵadvance(2);
274
- i0.ɵɵtextInterpolate1("", entity_r18.Percentage, "%");
257
+ i0.ɵɵtextInterpolate1("", entity_r17.Percentage, "%");
275
258
  i0.ɵɵadvance(3);
276
- i0.ɵɵtextInterpolate(entity_r18.Name);
259
+ i0.ɵɵtextInterpolate(entity_r17.Name);
277
260
  i0.ɵɵadvance(2);
278
- 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));
279
262
  } }
280
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_31_Template(rf, ctx) { if (rf & 1) {
281
- i0.ɵɵelementStart(0, "div", 38);
263
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_31_Template(rf, ctx) { if (rf & 1) {
264
+ i0.ɵɵelementStart(0, "div", 34);
282
265
  i0.ɵɵtext(1, "No content types found");
283
266
  i0.ɵɵelementEnd();
284
267
  } }
285
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_54_Template(rf, ctx) { if (rf & 1) {
286
- i0.ɵɵelement(0, "div", 110);
268
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_54_Template(rf, ctx) { if (rf & 1) {
269
+ i0.ɵɵelement(0, "div", 106);
287
270
  } if (rf & 2) {
288
- const bin_r19 = ctx.$implicit;
289
- i0.ɵɵstyleProp("height", bin_r19.Height, "px")("background", bin_r19.Color);
290
- 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);
291
274
  } }
292
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_63_Template(rf, ctx) { if (rf & 1) {
293
- i0.ɵɵelementStart(0, "div", 56)(1, "div", 111);
275
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_63_Template(rf, ctx) { if (rf & 1) {
276
+ i0.ɵɵelementStart(0, "div", 52)(1, "div", 107);
294
277
  i0.ɵɵtext(2);
295
278
  i0.ɵɵelementEnd();
296
- i0.ɵɵelementStart(3, "div", 112)(4, "div", 113);
279
+ i0.ɵɵelementStart(3, "div", 108)(4, "div", 109);
297
280
  i0.ɵɵtext(5);
298
281
  i0.ɵɵelementEnd()()();
299
282
  } if (rf & 2) {
300
- const source_r20 = ctx.$implicit;
283
+ const source_r19 = ctx.$implicit;
301
284
  i0.ɵɵadvance(2);
302
- i0.ɵɵtextInterpolate(source_r20.Name);
285
+ i0.ɵɵtextInterpolate(source_r19.Name);
303
286
  i0.ɵɵadvance(2);
304
- i0.ɵɵstyleProp("width", source_r20.Percentage, "%")("background", source_r20.Color);
287
+ i0.ɵɵstyleProp("width", source_r19.Percentage, "%")("background", source_r19.Color);
305
288
  i0.ɵɵadvance();
306
- i0.ɵɵtextInterpolate(source_r20.AvgTagsPerItem);
289
+ i0.ɵɵtextInterpolate(source_r19.AvgTagsPerItem);
307
290
  } }
308
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_64_Template(rf, ctx) { if (rf & 1) {
309
- i0.ɵɵelementStart(0, "div", 38);
291
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_64_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelementStart(0, "div", 34);
310
293
  i0.ɵɵtext(1, "No source data");
311
294
  i0.ɵɵelementEnd();
312
295
  } }
313
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_73_Template(rf, ctx) { if (rf & 1) {
314
- i0.ɵɵelementStart(0, "div", 114)(1, "span", 115);
296
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_73_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "div", 110)(1, "span", 111);
315
298
  i0.ɵɵtext(2);
316
299
  i0.ɵɵelementEnd()();
317
300
  } if (rf & 2) {
318
- const day_r21 = ctx.$implicit;
319
- 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)");
320
303
  i0.ɵɵadvance(2);
321
- i0.ɵɵtextInterpolate(day_r21.Label);
304
+ i0.ɵɵtextInterpolate(day_r20.Label);
322
305
  } }
323
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_89_Template(rf, ctx) { if (rf & 1) {
306
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_89_Template(rf, ctx) { if (rf & 1) {
324
307
  i0.ɵɵnamespaceSVG();
325
- i0.ɵɵelement(0, "circle", 69);
308
+ i0.ɵɵelement(0, "circle", 65);
326
309
  } if (rf & 2) {
327
- const seg_r22 = ctx.$implicit;
328
- 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);
329
312
  } }
330
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_96_Template(rf, ctx) { if (rf & 1) {
331
- i0.ɵɵelementStart(0, "div", 116);
313
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_For_96_Template(rf, ctx) { if (rf & 1) {
314
+ i0.ɵɵelementStart(0, "div", 112);
332
315
  i0.ɵɵtext(1);
333
316
  i0.ɵɵelementStart(2, "small");
334
317
  i0.ɵɵtext(3);
335
318
  i0.ɵɵelementEnd()();
336
319
  } if (rf & 2) {
337
- const stat_r23 = ctx.$implicit;
338
- 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);
339
322
  i0.ɵɵadvance();
340
- i0.ɵɵtextInterpolate1(" ", stat_r23.Count);
323
+ i0.ɵɵtextInterpolate1(" ", stat_r22.Count);
341
324
  i0.ɵɵadvance(2);
342
- i0.ɵɵtextInterpolate(stat_r23.Label);
325
+ i0.ɵɵtextInterpolate(stat_r22.Label);
343
326
  } }
344
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_7_Template(rf, ctx) { if (rf & 1) {
345
- i0.ɵɵelement(0, "mj-loading", 91);
327
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_7_Template(rf, ctx) { if (rf & 1) {
328
+ i0.ɵɵelement(0, "mj-loading", 87);
346
329
  } }
347
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_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) {
348
331
  i0.ɵɵelementStart(0, "th");
349
332
  i0.ɵɵtext(1);
350
333
  i0.ɵɵelementEnd();
351
334
  } if (rf & 2) {
352
- const col_r25 = ctx.$implicit;
335
+ const col_r24 = ctx.$implicit;
353
336
  i0.ɵɵadvance();
354
- i0.ɵɵtextInterpolate(col_r25);
337
+ i0.ɵɵtextInterpolate(col_r24);
355
338
  } }
356
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
357
- i0.ɵɵelement(0, "th", 97);
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);
358
341
  } }
359
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_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) {
360
343
  i0.ɵɵelementStart(0, "td");
361
344
  i0.ɵɵtext(1);
362
345
  i0.ɵɵelementEnd();
363
346
  } if (rf & 2) {
364
- const col_r26 = ctx.$implicit;
365
- const row_r27 = i0.ɵɵnextContext().$implicit;
347
+ const col_r25 = ctx.$implicit;
348
+ const row_r26 = i0.ɵɵnextContext().$implicit;
366
349
  i0.ɵɵadvance();
367
- i0.ɵɵtextInterpolate(row_r27[col_r26]);
350
+ i0.ɵɵtextInterpolate(row_r26[col_r25]);
368
351
  } }
369
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
370
- const _r28 = i0.ɵɵgetCurrentView();
371
- i0.ɵɵelementStart(0, "button", 99);
372
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_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)); });
373
- i0.ɵɵelement(1, "i", 100);
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);
374
357
  i0.ɵɵelementEnd();
375
358
  } }
376
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
377
- i0.ɵɵelementStart(0, "td", 97);
378
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 98);
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);
379
362
  i0.ɵɵelementEnd();
380
363
  } if (rf & 2) {
381
- const row_r27 = i0.ɵɵnextContext().$implicit;
364
+ const row_r26 = i0.ɵɵnextContext().$implicit;
382
365
  i0.ɵɵadvance();
383
- i0.ɵɵconditional(row_r27["_RecordID"] ? 1 : -1);
366
+ i0.ɵɵconditional(row_r26["_RecordID"] ? 1 : -1);
384
367
  } }
385
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_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) {
386
369
  i0.ɵɵelementStart(0, "tr");
387
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
388
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_For_9_Conditional_3_Template, 2, 1, "td", 97);
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);
389
372
  i0.ɵɵelementEnd();
390
373
  } if (rf & 2) {
391
- const ctx_r2 = i0.ɵɵnextContext(5);
374
+ const ctx_r1 = i0.ɵɵnextContext(5);
392
375
  i0.ɵɵadvance();
393
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
376
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
394
377
  i0.ɵɵadvance(2);
395
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
378
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
396
379
  } }
397
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_Template(rf, ctx) { if (rf & 1) {
398
- i0.ɵɵelementStart(0, "div", 92)(1, "table", 96)(2, "thead")(3, "tr");
399
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
400
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_Conditional_6_Template, 1, 0, "th", 97);
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);
401
384
  i0.ɵɵelementEnd()();
402
385
  i0.ɵɵelementStart(7, "tbody");
403
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_15_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);
404
387
  i0.ɵɵelementEnd()()();
405
388
  } if (rf & 2) {
406
- const ctx_r2 = i0.ɵɵnextContext(4);
389
+ const ctx_r1 = i0.ɵɵnextContext(4);
407
390
  i0.ɵɵadvance(4);
408
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
391
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
409
392
  i0.ɵɵadvance(2);
410
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
393
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
411
394
  i0.ɵɵadvance(2);
412
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
395
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
413
396
  } }
414
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_9_Template(rf, ctx) { if (rf & 1) {
415
- i0.ɵɵelementStart(0, "div", 93);
397
+ function AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Conditional_9_Template(rf, ctx) { if (rf & 1) {
398
+ i0.ɵɵelementStart(0, "div", 89);
416
399
  i0.ɵɵtext(1, "No data available");
417
400
  i0.ɵɵelementEnd();
418
401
  } }
419
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Template(rf, ctx) { if (rf & 1) {
420
- const _r24 = i0.ɵɵgetCurrentView();
421
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 84)(2, "span", 85);
422
- i0.ɵɵelement(3, "i", 86);
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);
423
406
  i0.ɵɵtext(4);
424
407
  i0.ɵɵelementEnd();
425
- i0.ɵɵelementStart(5, "button", 89);
426
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
427
- i0.ɵɵelement(6, "i", 90);
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);
428
411
  i0.ɵɵelementEnd()();
429
- i0.ɵɵconditionalCreate(7, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_7_Template, 1, 0, "mj-loading", 91)(8, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_8_Template, 10, 1, "div", 92)(9, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Conditional_9_Template, 2, 0, "div", 93);
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);
430
413
  i0.ɵɵelementEnd();
431
414
  } if (rf & 2) {
432
- const ctx_r2 = i0.ɵɵnextContext(3);
415
+ const ctx_r1 = i0.ɵɵnextContext(3);
433
416
  i0.ɵɵadvance(4);
434
- i0.ɵɵtextInterpolate1(" ", ctx_r2.DrillDownTarget, " Detail");
417
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.DrillDownTarget, " Detail");
435
418
  i0.ɵɵadvance(3);
436
- 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);
437
420
  } }
438
- function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template(rf, ctx) { if (rf & 1) {
439
- const _r5 = i0.ɵɵgetCurrentView();
440
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
441
- 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);
442
425
  i0.ɵɵelementStart(3, "h1");
443
426
  i0.ɵɵtext(4, "Overview");
444
427
  i0.ɵɵelementEnd()();
445
- i0.ɵɵelementStart(5, "div", 21)(6, "div", 22);
446
- i0.ɵɵrepeaterCreate(7, AnalyticsResourceComponent_Conditional_6_Conditional_15_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);
447
430
  i0.ɵɵelementEnd();
448
- i0.ɵɵelementStart(9, "select", 24);
449
- i0.ɵɵlistener("ngModelChange", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetEntityFilter($event)); });
450
- i0.ɵɵrepeaterCreate(10, AnalyticsResourceComponent_Conditional_6_Conditional_15_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);
451
434
  i0.ɵɵelementEnd()();
452
- i0.ɵɵelementStart(12, "div", 26);
453
- i0.ɵɵrepeaterCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_14_Template, 13, 10, "div", 27, _forTrack2);
454
- i0.ɵɵelementEnd();
455
- i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_15_Template, 12, 2, "div", 28);
456
- i0.ɵɵelementStart(16, "div", 29)(17, "div", 30);
457
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template_div_click_17_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("tagGrowth")); });
458
- i0.ɵɵelementStart(18, "div", 31);
459
- i0.ɵɵelement(19, "i", 32);
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);
460
443
  i0.ɵɵtext(20, " Tag Growth");
461
444
  i0.ɵɵelementEnd();
462
- i0.ɵɵelementStart(21, "div", 33);
463
- i0.ɵɵrepeaterCreate(22, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_23_Template, 6, 6, "div", 34, _forTrack2);
445
+ i0.ɵɵelementStart(21, "div", 29);
446
+ i0.ɵɵrepeaterCreate(22, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_23_Template, 6, 6, "div", 30, _forTrack1);
464
447
  i0.ɵɵelementEnd()();
465
- i0.ɵɵelementStart(24, "div", 30);
466
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template_div_click_24_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("contentCoverage")); });
467
- i0.ɵɵelementStart(25, "div", 31);
468
- i0.ɵɵelement(26, "i", 35);
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);
469
452
  i0.ɵɵtext(27, " Content Coverage");
470
453
  i0.ɵɵelementEnd();
471
- i0.ɵɵelementStart(28, "div", 36);
472
- i0.ɵɵrepeaterCreate(29, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_30_Template, 11, 6, "div", 37, _forTrack1);
473
- i0.ɵɵconditionalCreate(31, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_31_Template, 2, 0, "div", 38);
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);
474
457
  i0.ɵɵelementEnd()();
475
- i0.ɵɵelementStart(32, "div", 30);
476
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template_div_click_32_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("qualityScore")); });
477
- i0.ɵɵelementStart(33, "div", 31);
478
- i0.ɵɵelement(34, "i", 39);
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);
479
462
  i0.ɵɵtext(35, " Quality Score");
480
463
  i0.ɵɵelementEnd();
481
- i0.ɵɵelementStart(36, "div", 40);
464
+ i0.ɵɵelementStart(36, "div", 36);
482
465
  i0.ɵɵnamespaceSVG();
483
- i0.ɵɵelementStart(37, "svg", 41);
484
- i0.ɵɵelement(38, "path", 42)(39, "path", 43)(40, "path", 44)(41, "path", 45);
485
- i0.ɵɵelementStart(42, "text", 46);
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);
486
469
  i0.ɵɵtext(43);
487
470
  i0.ɵɵelementEnd();
488
- i0.ɵɵelementStart(44, "text", 47);
471
+ i0.ɵɵelementStart(44, "text", 43);
489
472
  i0.ɵɵtext(45, "out of 100");
490
473
  i0.ɵɵelementEnd();
491
- i0.ɵɵelementStart(46, "text", 48);
474
+ i0.ɵɵelementStart(46, "text", 44);
492
475
  i0.ɵɵtext(47, "0");
493
476
  i0.ɵɵelementEnd();
494
- i0.ɵɵelementStart(48, "text", 49);
477
+ i0.ɵɵelementStart(48, "text", 45);
495
478
  i0.ɵɵtext(49, "50");
496
479
  i0.ɵɵelementEnd();
497
- i0.ɵɵelementStart(50, "text", 50);
480
+ i0.ɵɵelementStart(50, "text", 46);
498
481
  i0.ɵɵtext(51, "100");
499
482
  i0.ɵɵelementEnd()()();
500
483
  i0.ɵɵnamespaceHTML();
501
- i0.ɵɵelementStart(52, "div", 51);
502
- i0.ɵɵrepeaterCreate(53, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_54_Template, 1, 5, "div", 52, 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);
503
486
  i0.ɵɵelementEnd();
504
- i0.ɵɵelementStart(55, "div", 53);
487
+ i0.ɵɵelementStart(55, "div", 49);
505
488
  i0.ɵɵtext(56, "Confidence Distribution");
506
489
  i0.ɵɵelementEnd()();
507
- i0.ɵɵelementStart(57, "div", 30);
508
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template_div_click_57_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("sourcePerformance")); });
509
- i0.ɵɵelementStart(58, "div", 31);
510
- i0.ɵɵelement(59, "i", 54);
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);
511
494
  i0.ɵɵtext(60, " Source Performance");
512
495
  i0.ɵɵelementEnd();
513
- i0.ɵɵelementStart(61, "div", 55);
514
- i0.ɵɵrepeaterCreate(62, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_63_Template, 6, 6, "div", 56, _forTrack1);
515
- i0.ɵɵconditionalCreate(64, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_64_Template, 2, 0, "div", 38);
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);
516
499
  i0.ɵɵelementEnd();
517
- i0.ɵɵelementStart(65, "div", 57);
500
+ i0.ɵɵelementStart(65, "div", 53);
518
501
  i0.ɵɵtext(66, "Average tags per item");
519
502
  i0.ɵɵelementEnd()();
520
- i0.ɵɵelementStart(67, "div", 30);
521
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template_div_click_67_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("dailyThroughput")); });
522
- i0.ɵɵelementStart(68, "div", 31);
523
- i0.ɵɵelement(69, "i", 58);
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);
524
507
  i0.ɵɵtext(70, " Daily Throughput");
525
508
  i0.ɵɵelementEnd();
526
- i0.ɵɵelementStart(71, "div", 59);
527
- i0.ɵɵrepeaterCreate(72, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_73_Template, 3, 5, "div", 60, _forTrack2);
509
+ i0.ɵɵelementStart(71, "div", 55);
510
+ i0.ɵɵrepeaterCreate(72, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_73_Template, 3, 5, "div", 56, _forTrack1);
528
511
  i0.ɵɵelementEnd();
529
- i0.ɵɵelementStart(74, "div", 61)(75, "div", 62);
530
- i0.ɵɵelement(76, "div", 63);
512
+ i0.ɵɵelementStart(74, "div", 57)(75, "div", 58);
513
+ i0.ɵɵelement(76, "div", 59);
531
514
  i0.ɵɵtext(77, " Success");
532
515
  i0.ɵɵelementEnd();
533
- i0.ɵɵelementStart(78, "div", 62);
534
- i0.ɵɵelement(79, "div", 64);
516
+ i0.ɵɵelementStart(78, "div", 58);
517
+ i0.ɵɵelement(79, "div", 60);
535
518
  i0.ɵɵtext(80, " Failures");
536
519
  i0.ɵɵelementEnd()()();
537
- i0.ɵɵelementStart(81, "div", 30);
538
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_15_Template_div_click_81_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OpenDrillDown("taxonomyHealth")); });
539
- i0.ɵɵelementStart(82, "div", 31);
540
- i0.ɵɵelement(83, "i", 65);
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);
541
524
  i0.ɵɵtext(84, " Taxonomy Health");
542
525
  i0.ɵɵelementEnd();
543
- i0.ɵɵelementStart(85, "div", 66);
526
+ i0.ɵɵelementStart(85, "div", 62);
544
527
  i0.ɵɵnamespaceSVG();
545
- i0.ɵɵelementStart(86, "svg", 67);
546
- i0.ɵɵelement(87, "circle", 68);
547
- i0.ɵɵrepeaterCreate(88, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_89_Template, 1, 3, ":svg:circle", 69, i0.ɵɵcomponentInstance().TrackByIndex, true);
548
- i0.ɵɵelementStart(90, "text", 70);
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);
549
532
  i0.ɵɵtext(91);
550
533
  i0.ɵɵelementEnd();
551
- i0.ɵɵelementStart(92, "text", 71);
534
+ i0.ɵɵelementStart(92, "text", 67);
552
535
  i0.ɵɵtext(93, "total tags");
553
536
  i0.ɵɵelementEnd()()();
554
537
  i0.ɵɵnamespaceHTML();
555
- i0.ɵɵelementStart(94, "div", 72);
556
- i0.ɵɵrepeaterCreate(95, AnalyticsResourceComponent_Conditional_6_Conditional_15_For_96_Template, 4, 6, "div", 73, _forTrack2);
538
+ i0.ɵɵelementStart(94, "div", 68);
539
+ i0.ɵɵrepeaterCreate(95, AnalyticsResourceComponent_Conditional_6_Conditional_12_For_96_Template, 4, 6, "div", 69, _forTrack1);
557
540
  i0.ɵɵelementEnd()()();
558
- i0.ɵɵconditionalCreate(97, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_97_Template, 10, 2, "div", 28);
541
+ i0.ɵɵconditionalCreate(97, AnalyticsResourceComponent_Conditional_6_Conditional_12_Conditional_97_Template, 10, 2, "div", 24);
559
542
  i0.ɵɵelementEnd();
560
543
  } if (rf & 2) {
561
- const ctx_r2 = i0.ɵɵnextContext(2);
544
+ const ctx_r1 = i0.ɵɵnextContext(2);
562
545
  i0.ɵɵadvance(7);
563
- i0.ɵɵrepeater(ctx_r2.DateRanges);
546
+ i0.ɵɵrepeater(ctx_r1.DateRanges);
564
547
  i0.ɵɵadvance(2);
565
- i0.ɵɵproperty("ngModel", ctx_r2.EntityFilter);
548
+ i0.ɵɵproperty("ngModel", ctx_r1.EntityFilter);
566
549
  i0.ɵɵadvance();
567
- i0.ɵɵrepeater(ctx_r2.EntityFilterOptions);
550
+ i0.ɵɵrepeater(ctx_r1.EntityFilterOptions);
568
551
  i0.ɵɵadvance(3);
569
- i0.ɵɵrepeater(ctx_r2.KPIs);
552
+ i0.ɵɵrepeater(ctx_r1.KPIs);
570
553
  i0.ɵɵadvance(2);
571
- 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);
572
555
  i0.ɵɵadvance(7);
573
- i0.ɵɵrepeater(ctx_r2.TagGrowthData);
556
+ i0.ɵɵrepeater(ctx_r1.TagGrowthData);
574
557
  i0.ɵɵadvance(7);
575
- i0.ɵɵrepeater(ctx_r2.CoverageData);
558
+ i0.ɵɵrepeater(ctx_r1.CoverageData);
576
559
  i0.ɵɵadvance(2);
577
- i0.ɵɵconditional(ctx_r2.CoverageData.length === 0 ? 31 : -1);
560
+ i0.ɵɵconditional(ctx_r1.CoverageData.length === 0 ? 31 : -1);
578
561
  i0.ɵɵadvance(12);
579
- i0.ɵɵtextInterpolate(ctx_r2.QualityScore);
562
+ i0.ɵɵtextInterpolate(ctx_r1.QualityScore);
580
563
  i0.ɵɵadvance(10);
581
- i0.ɵɵrepeater(ctx_r2.MiniConfidenceBins);
564
+ i0.ɵɵrepeater(ctx_r1.MiniConfidenceBins);
582
565
  i0.ɵɵadvance(9);
583
- i0.ɵɵrepeater(ctx_r2.SourcePerfData);
566
+ i0.ɵɵrepeater(ctx_r1.SourcePerfData);
584
567
  i0.ɵɵadvance(2);
585
- i0.ɵɵconditional(ctx_r2.SourcePerfData.length === 0 ? 64 : -1);
568
+ i0.ɵɵconditional(ctx_r1.SourcePerfData.length === 0 ? 64 : -1);
586
569
  i0.ɵɵadvance(8);
587
- i0.ɵɵrepeater(ctx_r2.ThroughputData);
570
+ i0.ɵɵrepeater(ctx_r1.ThroughputData);
588
571
  i0.ɵɵadvance(16);
589
- i0.ɵɵrepeater(ctx_r2.TaxonomyRingSegments);
572
+ i0.ɵɵrepeater(ctx_r1.TaxonomyRingSegments);
590
573
  i0.ɵɵadvance(3);
591
- i0.ɵɵtextInterpolate(ctx_r2.TaxonomyTotal);
574
+ i0.ɵɵtextInterpolate(ctx_r1.TaxonomyTotal);
592
575
  i0.ɵɵadvance(4);
593
- i0.ɵɵrepeater(ctx_r2.TaxonomyStats);
576
+ i0.ɵɵrepeater(ctx_r1.TaxonomyStats);
594
577
  i0.ɵɵadvance(2);
595
- 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);
596
579
  } }
597
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_10_Template(rf, ctx) { if (rf & 1) {
598
- const _r30 = i0.ɵɵgetCurrentView();
599
- i0.ɵɵelementStart(0, "button", 94);
600
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.ExportTabDataCSV("top-tags")); });
601
- i0.ɵɵelement(1, "i", 95);
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);
602
585
  i0.ɵɵtext(2, " CSV ");
603
586
  i0.ɵɵelementEnd();
604
587
  } }
605
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_11_For_20_Template(rf, ctx) { if (rf & 1) {
606
- const _r31 = i0.ɵɵgetCurrentView();
607
- i0.ɵɵelementStart(0, "tr", 131);
608
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_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)); });
609
592
  i0.ɵɵelementStart(1, "td");
610
593
  i0.ɵɵtext(2);
611
594
  i0.ɵɵelementEnd();
612
595
  i0.ɵɵelementStart(3, "td")(4, "strong");
613
596
  i0.ɵɵtext(5);
614
597
  i0.ɵɵelementEnd()();
615
- i0.ɵɵelementStart(6, "td", 129);
598
+ i0.ɵɵelementStart(6, "td", 125);
616
599
  i0.ɵɵtext(7);
617
600
  i0.ɵɵelementEnd();
618
601
  i0.ɵɵelementStart(8, "td");
619
- i0.ɵɵelement(9, "span", 132);
602
+ i0.ɵɵelement(9, "span", 128);
620
603
  i0.ɵɵtext(10);
621
604
  i0.ɵɵelementEnd();
622
605
  i0.ɵɵelementStart(11, "td");
623
606
  i0.ɵɵnamespaceSVG();
624
- i0.ɵɵelementStart(12, "svg", 133);
625
- i0.ɵɵelement(13, "polyline", 134);
607
+ i0.ɵɵelementStart(12, "svg", 129);
608
+ i0.ɵɵelement(13, "polyline", 130);
626
609
  i0.ɵɵelementEnd()();
627
610
  i0.ɵɵnamespaceHTML();
628
611
  i0.ɵɵelementStart(14, "td");
629
612
  i0.ɵɵtext(15);
630
613
  i0.ɵɵelementEnd();
631
- i0.ɵɵelementStart(16, "td", 135);
614
+ i0.ɵɵelementStart(16, "td", 131);
632
615
  i0.ɵɵtext(17);
633
616
  i0.ɵɵelementEnd()();
634
617
  } if (rf & 2) {
635
- const tag_r32 = ctx.$implicit;
636
- const ctx_r2 = i0.ɵɵnextContext(4);
618
+ const tag_r31 = ctx.$implicit;
619
+ const ctx_r1 = i0.ɵɵnextContext(4);
637
620
  i0.ɵɵadvance(2);
638
- i0.ɵɵtextInterpolate(tag_r32.Rank);
621
+ i0.ɵɵtextInterpolate(tag_r31.Rank);
639
622
  i0.ɵɵadvance(3);
640
- i0.ɵɵtextInterpolate(tag_r32.Name);
623
+ i0.ɵɵtextInterpolate(tag_r31.Name);
641
624
  i0.ɵɵadvance(2);
642
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(tag_r32.UsageCount));
625
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(tag_r31.UsageCount));
643
626
  i0.ɵɵadvance(2);
644
- i0.ɵɵstyleProp("width", tag_r32.WeightBarWidth, "px")("background", tag_r32.WeightBarColor);
627
+ i0.ɵɵstyleProp("width", tag_r31.WeightBarWidth, "px")("background", tag_r31.WeightBarColor);
645
628
  i0.ɵɵadvance();
646
- i0.ɵɵtextInterpolate1(" ", tag_r32.AvgWeight, " ");
629
+ i0.ɵɵtextInterpolate1(" ", tag_r31.AvgWeight, " ");
647
630
  i0.ɵɵadvance(3);
648
- i0.ɵɵattribute("points", tag_r32.TrendPoints)("stroke", tag_r32.TrendColor);
631
+ i0.ɵɵattribute("points", tag_r31.TrendPoints)("stroke", tag_r31.TrendColor);
649
632
  i0.ɵɵadvance(2);
650
- i0.ɵɵtextInterpolate(tag_r32.TopEntity);
633
+ i0.ɵɵtextInterpolate(tag_r31.TopEntity);
651
634
  i0.ɵɵadvance(2);
652
- i0.ɵɵtextInterpolate(tag_r32.FirstSeen);
635
+ i0.ɵɵtextInterpolate(tag_r31.FirstSeen);
653
636
  } }
654
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
655
- i0.ɵɵelementStart(0, "div", 121)(1, "table", 96)(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");
656
639
  i0.ɵɵtext(5, "#");
657
640
  i0.ɵɵelementEnd();
658
641
  i0.ɵɵelementStart(6, "th");
659
642
  i0.ɵɵtext(7, "Tag Name");
660
643
  i0.ɵɵelementEnd();
661
- i0.ɵɵelementStart(8, "th", 129);
644
+ i0.ɵɵelementStart(8, "th", 125);
662
645
  i0.ɵɵtext(9, "Usage Count");
663
646
  i0.ɵɵelementEnd();
664
647
  i0.ɵɵelementStart(10, "th");
@@ -674,233 +657,233 @@ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_11_
674
657
  i0.ɵɵtext(17, "First Seen");
675
658
  i0.ɵɵelementEnd()()();
676
659
  i0.ɵɵelementStart(18, "tbody");
677
- i0.ɵɵrepeaterCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_11_For_20_Template, 18, 12, "tr", 130, _forTrack1);
660
+ i0.ɵɵrepeaterCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_11_For_20_Template, 18, 12, "tr", 126, _forTrack0);
678
661
  i0.ɵɵelementEnd()()();
679
662
  } if (rf & 2) {
680
- const ctx_r2 = i0.ɵɵnextContext(3);
663
+ const ctx_r1 = i0.ɵɵnextContext(3);
681
664
  i0.ɵɵadvance(19);
682
- i0.ɵɵrepeater(ctx_r2.TopTags);
665
+ i0.ɵɵrepeater(ctx_r1.TopTags);
683
666
  } }
684
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_12_Template(rf, ctx) { if (rf & 1) {
685
- i0.ɵɵelementStart(0, "div", 122);
686
- i0.ɵɵelement(1, "i", 117);
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);
687
670
  i0.ɵɵelementStart(2, "p");
688
671
  i0.ɵɵtext(3, "No tag data available yet. Process content to generate tags.");
689
672
  i0.ɵɵelementEnd()();
690
673
  } }
691
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
692
- const _r34 = i0.ɵɵgetCurrentView();
693
- i0.ɵɵelementStart(0, "button", 94);
694
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
695
- i0.ɵɵelement(1, "i", 95);
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);
696
679
  i0.ɵɵtext(2, " CSV ");
697
680
  i0.ɵɵelementEnd();
698
681
  } }
699
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
700
- i0.ɵɵelement(0, "mj-loading", 91);
682
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
683
+ i0.ɵɵelement(0, "mj-loading", 87);
701
684
  } }
702
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_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) {
703
686
  i0.ɵɵelementStart(0, "th");
704
687
  i0.ɵɵtext(1);
705
688
  i0.ɵɵelementEnd();
706
689
  } if (rf & 2) {
707
- const col_r35 = ctx.$implicit;
690
+ const col_r34 = ctx.$implicit;
708
691
  i0.ɵɵadvance();
709
- i0.ɵɵtextInterpolate(col_r35);
692
+ i0.ɵɵtextInterpolate(col_r34);
710
693
  } }
711
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
712
- i0.ɵɵelement(0, "th", 97);
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);
713
696
  } }
714
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_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) {
715
698
  i0.ɵɵelementStart(0, "td");
716
699
  i0.ɵɵtext(1);
717
700
  i0.ɵɵelementEnd();
718
701
  } if (rf & 2) {
719
- const col_r36 = ctx.$implicit;
720
- const row_r37 = i0.ɵɵnextContext().$implicit;
702
+ const col_r35 = ctx.$implicit;
703
+ const row_r36 = i0.ɵɵnextContext().$implicit;
721
704
  i0.ɵɵadvance();
722
- i0.ɵɵtextInterpolate(row_r37[col_r36]);
705
+ i0.ɵɵtextInterpolate(row_r36[col_r35]);
723
706
  } }
724
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
725
- const _r38 = i0.ɵɵgetCurrentView();
726
- i0.ɵɵelementStart(0, "button", 137);
727
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_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)); });
728
- i0.ɵɵelement(1, "i", 100);
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);
729
712
  i0.ɵɵelementEnd();
730
713
  } }
731
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
732
- i0.ɵɵelementStart(0, "td", 97);
733
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 136);
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);
734
717
  i0.ɵɵelementEnd();
735
718
  } if (rf & 2) {
736
- const row_r37 = i0.ɵɵnextContext().$implicit;
719
+ const row_r36 = i0.ɵɵnextContext().$implicit;
737
720
  i0.ɵɵadvance();
738
- i0.ɵɵconditional(row_r37["_RecordID"] ? 1 : -1);
721
+ i0.ɵɵconditional(row_r36["_RecordID"] ? 1 : -1);
739
722
  } }
740
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_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) {
741
724
  i0.ɵɵelementStart(0, "tr");
742
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
743
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 97);
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);
744
727
  i0.ɵɵelementEnd();
745
728
  } if (rf & 2) {
746
- const ctx_r2 = i0.ɵɵnextContext(5);
729
+ const ctx_r1 = i0.ɵɵnextContext(5);
747
730
  i0.ɵɵadvance();
748
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
731
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
749
732
  i0.ɵɵadvance(2);
750
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
733
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
751
734
  } }
752
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_Template(rf, ctx) { if (rf & 1) {
753
- i0.ɵɵelementStart(0, "div", 92)(1, "table", 96)(2, "thead")(3, "tr");
754
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
755
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_Conditional_6_Template, 1, 0, "th", 97);
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);
756
739
  i0.ɵɵelementEnd()();
757
740
  i0.ɵɵelementStart(7, "tbody");
758
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_16_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);
759
742
  i0.ɵɵelementEnd()()();
760
743
  } if (rf & 2) {
761
- const ctx_r2 = i0.ɵɵnextContext(4);
744
+ const ctx_r1 = i0.ɵɵnextContext(4);
762
745
  i0.ɵɵadvance(4);
763
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
746
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
764
747
  i0.ɵɵadvance(2);
765
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
748
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
766
749
  i0.ɵɵadvance(2);
767
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
750
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
768
751
  } }
769
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
770
- i0.ɵɵelementStart(0, "div", 93);
752
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
753
+ i0.ɵɵelementStart(0, "div", 89);
771
754
  i0.ɵɵtext(1, "No items found for this tag");
772
755
  i0.ɵɵelementEnd();
773
756
  } }
774
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Template(rf, ctx) { if (rf & 1) {
775
- const _r33 = i0.ɵɵgetCurrentView();
776
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 84)(2, "span", 85);
777
- i0.ɵɵelement(3, "i", 86);
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);
778
761
  i0.ɵɵtext(4);
779
762
  i0.ɵɵelementEnd();
780
- i0.ɵɵelementStart(5, "div", 87);
781
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_6_Template, 3, 0, "button", 88);
782
- i0.ɵɵelementStart(7, "button", 89);
783
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
784
- i0.ɵɵelement(8, "i", 90);
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);
785
768
  i0.ɵɵelementEnd()()();
786
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_9_Template, 1, 0, "mj-loading", 91)(10, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_10_Template, 10, 1, "div", 92)(11, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Conditional_11_Template, 2, 0, "div", 93);
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);
787
770
  i0.ɵɵelementEnd();
788
771
  } if (rf & 2) {
789
- const ctx_r2 = i0.ɵɵnextContext(3);
772
+ const ctx_r1 = i0.ɵɵnextContext(3);
790
773
  i0.ɵɵadvance(4);
791
- i0.ɵɵtextInterpolate1(" Content Items Tagged \"", ctx_r2.DrillDownTarget.replace("tag-row:", ""), "\"");
774
+ i0.ɵɵtextInterpolate1(" Content Items Tagged \"", ctx_r1.DrillDownTarget.replace("tag-row:", ""), "\"");
792
775
  i0.ɵɵadvance(2);
793
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
776
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
794
777
  i0.ɵɵadvance(3);
795
- 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);
796
779
  } }
797
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_For_6_For_5_Template(rf, ctx) { if (rf & 1) {
798
- i0.ɵɵelementStart(0, "div", 145);
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);
799
782
  i0.ɵɵtext(1);
800
783
  i0.ɵɵelementEnd();
801
784
  } if (rf & 2) {
802
- const seg_r39 = ctx.$implicit;
803
- i0.ɵɵstyleProp("width", seg_r39.Percentage, "%")("background", seg_r39.Color);
804
- 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 + "%");
805
788
  i0.ɵɵadvance();
806
- i0.ɵɵtextInterpolate(seg_r39.Label);
789
+ i0.ɵɵtextInterpolate(seg_r38.Label);
807
790
  } }
808
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_For_6_Template(rf, ctx) { if (rf & 1) {
809
- i0.ɵɵelementStart(0, "div", 140)(1, "div", 142);
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);
810
793
  i0.ɵɵtext(2);
811
794
  i0.ɵɵelementEnd();
812
- i0.ɵɵelementStart(3, "div", 143);
813
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_For_6_For_5_Template, 2, 6, "div", 144, 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);
814
797
  i0.ɵɵelementEnd()();
815
798
  } if (rf & 2) {
816
- const row_r40 = ctx.$implicit;
799
+ const row_r39 = ctx.$implicit;
817
800
  i0.ɵɵadvance(2);
818
- i0.ɵɵtextInterpolate(row_r40.EntityName);
801
+ i0.ɵɵtextInterpolate(row_r39.EntityName);
819
802
  i0.ɵɵadvance(2);
820
- i0.ɵɵrepeater(row_r40.Segments);
803
+ i0.ɵɵrepeater(row_r39.Segments);
821
804
  } }
822
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_For_9_Template(rf, ctx) { if (rf & 1) {
823
- i0.ɵɵelementStart(0, "div", 62);
824
- i0.ɵɵelement(1, "div", 146);
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);
825
808
  i0.ɵɵtext(2);
826
809
  i0.ɵɵelementEnd();
827
810
  } if (rf & 2) {
828
- const item_r41 = ctx.$implicit;
811
+ const item_r40 = ctx.$implicit;
829
812
  i0.ɵɵadvance();
830
- i0.ɵɵstyleProp("background", item_r41.Color);
813
+ i0.ɵɵstyleProp("background", item_r40.Color);
831
814
  i0.ɵɵadvance();
832
- i0.ɵɵtextInterpolate1(" ", item_r41.Label);
815
+ i0.ɵɵtextInterpolate1(" ", item_r40.Label);
833
816
  } }
834
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_Template(rf, ctx) { if (rf & 1) {
835
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
836
- i0.ɵɵelement(2, "i", 138);
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);
837
820
  i0.ɵɵtext(3, " Tag Distribution by Entity");
838
821
  i0.ɵɵelementEnd();
839
- i0.ɵɵelementStart(4, "div", 139);
840
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_For_6_Template, 6, 1, "div", 140, _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);
841
824
  i0.ɵɵelementEnd();
842
- i0.ɵɵelementStart(7, "div", 141);
843
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_For_9_Template, 3, 3, "div", 62, _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);
844
827
  i0.ɵɵelementEnd()();
845
828
  } if (rf & 2) {
846
- const ctx_r2 = i0.ɵɵnextContext(3);
829
+ const ctx_r1 = i0.ɵɵnextContext(3);
847
830
  i0.ɵɵadvance(5);
848
- i0.ɵɵrepeater(ctx_r2.EntityDistribution);
831
+ i0.ɵɵrepeater(ctx_r1.EntityDistribution);
849
832
  i0.ɵɵadvance(3);
850
- i0.ɵɵrepeater(ctx_r2.DistributionLegend);
833
+ i0.ɵɵrepeater(ctx_r1.DistributionLegend);
851
834
  } }
852
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_15_For_6_Template(rf, ctx) { if (rf & 1) {
853
- i0.ɵɵelementStart(0, "div", 149)(1, "div", 151);
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);
854
837
  i0.ɵɵtext(2);
855
838
  i0.ɵɵelementEnd();
856
- i0.ɵɵelementStart(3, "div", 152);
839
+ i0.ɵɵelementStart(3, "div", 148);
857
840
  i0.ɵɵtext(4);
858
841
  i0.ɵɵelementEnd()();
859
842
  } if (rf & 2) {
860
- const bar_r42 = ctx.$implicit;
843
+ const bar_r41 = ctx.$implicit;
861
844
  i0.ɵɵadvance();
862
- 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");
863
846
  i0.ɵɵadvance();
864
- i0.ɵɵtextInterpolate(bar_r42.Count);
847
+ i0.ɵɵtextInterpolate(bar_r41.Count);
865
848
  i0.ɵɵadvance(2);
866
- i0.ɵɵtextInterpolate(bar_r42.Label);
849
+ i0.ɵɵtextInterpolate(bar_r41.Label);
867
850
  } }
868
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_15_Template(rf, ctx) { if (rf & 1) {
869
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
870
- i0.ɵɵelement(2, "i", 147);
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);
871
854
  i0.ɵɵtext(3, " Tag Depth Distribution");
872
855
  i0.ɵɵelementEnd();
873
- i0.ɵɵelementStart(4, "div", 148);
874
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_15_For_6_Template, 5, 6, "div", 149, _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);
875
858
  i0.ɵɵelementEnd();
876
- i0.ɵɵelementStart(7, "div", 150);
859
+ i0.ɵɵelementStart(7, "div", 146);
877
860
  i0.ɵɵtext(8, " Taxonomy hierarchy depth -- Most tags at depth 2-3 indicating a healthy mid-level structure ");
878
861
  i0.ɵɵelementEnd()();
879
862
  } if (rf & 2) {
880
- const ctx_r2 = i0.ɵɵnextContext(3);
863
+ const ctx_r1 = i0.ɵɵnextContext(3);
881
864
  i0.ɵɵadvance(5);
882
- i0.ɵɵrepeater(ctx_r2.TagDepthBars);
865
+ i0.ɵɵrepeater(ctx_r1.TagDepthBars);
883
866
  } }
884
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_22_Template(rf, ctx) { if (rf & 1) {
885
- i0.ɵɵelementStart(0, "span", 127);
886
- i0.ɵɵelement(1, "i", 153);
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);
887
870
  i0.ɵɵtext(2);
888
871
  i0.ɵɵelementEnd();
889
872
  } if (rf & 2) {
890
- const ctx_r2 = i0.ɵɵnextContext(3);
873
+ const ctx_r1 = i0.ɵɵnextContext(3);
891
874
  i0.ɵɵadvance(2);
892
- i0.ɵɵtextInterpolate1(" Last computed: ", ctx_r2.CoOccurrenceLastComputed, " ");
875
+ i0.ɵɵtextInterpolate1(" Last computed: ", ctx_r1.CoOccurrenceLastComputed, " ");
893
876
  } }
894
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_24_Template(rf, ctx) { if (rf & 1) {
895
- i0.ɵɵelement(0, "i", 154);
877
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_24_Template(rf, ctx) { if (rf & 1) {
878
+ i0.ɵɵelement(0, "i", 150);
896
879
  i0.ɵɵtext(1, " Computing... ");
897
880
  } }
898
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_25_Template(rf, ctx) { if (rf & 1) {
899
- i0.ɵɵelement(0, "i", 155);
881
+ function AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_25_Template(rf, ctx) { if (rf & 1) {
882
+ i0.ɵɵelement(0, "i", 151);
900
883
  i0.ɵɵtext(1, " Recompute ");
901
884
  } }
902
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_26_For_16_Template(rf, ctx) { if (rf & 1) {
903
- i0.ɵɵelementStart(0, "tr")(1, "td", 135);
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);
904
887
  i0.ɵɵtext(2);
905
888
  i0.ɵɵelementEnd();
906
889
  i0.ɵɵelementStart(3, "td")(4, "strong");
@@ -909,29 +892,29 @@ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_26_
909
892
  i0.ɵɵelementStart(6, "td")(7, "strong");
910
893
  i0.ɵɵtext(8);
911
894
  i0.ɵɵelementEnd()();
912
- i0.ɵɵelementStart(9, "td", 129);
895
+ i0.ɵɵelementStart(9, "td", 125);
913
896
  i0.ɵɵtext(10);
914
897
  i0.ɵɵelementEnd();
915
898
  i0.ɵɵelementStart(11, "td");
916
- i0.ɵɵelement(12, "span", 156);
899
+ i0.ɵɵelement(12, "span", 152);
917
900
  i0.ɵɵelementEnd()();
918
901
  } if (rf & 2) {
919
- const pair_r43 = ctx.$implicit;
920
- const ɵ$index_663_r44 = ctx.$index;
921
- 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);
922
905
  i0.ɵɵadvance(2);
923
- i0.ɵɵtextInterpolate(ɵ$index_663_r44 + 1);
906
+ i0.ɵɵtextInterpolate(ɵ$index_655_r43 + 1);
924
907
  i0.ɵɵadvance(3);
925
- i0.ɵɵtextInterpolate(pair_r43.TagAName);
908
+ i0.ɵɵtextInterpolate(pair_r42.TagAName);
926
909
  i0.ɵɵadvance(3);
927
- i0.ɵɵtextInterpolate(pair_r43.TagBName);
910
+ i0.ɵɵtextInterpolate(pair_r42.TagBName);
928
911
  i0.ɵɵadvance(2);
929
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(pair_r43.Count));
912
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(pair_r42.Count));
930
913
  i0.ɵɵadvance(2);
931
- i0.ɵɵstyleProp("width", pair_r43.BarWidth, "px");
914
+ i0.ɵɵstyleProp("width", pair_r42.BarWidth, "px");
932
915
  } }
933
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_26_Template(rf, ctx) { if (rf & 1) {
934
- i0.ɵɵelementStart(0, "div", 121)(1, "table", 96)(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");
935
918
  i0.ɵɵtext(5, "#");
936
919
  i0.ɵɵelementEnd();
937
920
  i0.ɵɵelementStart(6, "th");
@@ -940,151 +923,151 @@ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_26_
940
923
  i0.ɵɵelementStart(8, "th");
941
924
  i0.ɵɵtext(9, "Tag B");
942
925
  i0.ɵɵelementEnd();
943
- i0.ɵɵelementStart(10, "th", 129);
926
+ i0.ɵɵelementStart(10, "th", 125);
944
927
  i0.ɵɵtext(11, "Co-Occurrences");
945
928
  i0.ɵɵelementEnd();
946
929
  i0.ɵɵelementStart(12, "th");
947
930
  i0.ɵɵtext(13, "Frequency");
948
931
  i0.ɵɵelementEnd()()();
949
932
  i0.ɵɵelementStart(14, "tbody");
950
- i0.ɵɵrepeaterCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_16_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);
951
934
  i0.ɵɵelementEnd()()();
952
935
  } if (rf & 2) {
953
- const ctx_r2 = i0.ɵɵnextContext(3);
936
+ const ctx_r1 = i0.ɵɵnextContext(3);
954
937
  i0.ɵɵadvance(15);
955
- i0.ɵɵrepeater(ctx_r2.CoOccurrencePairs);
938
+ i0.ɵɵrepeater(ctx_r1.CoOccurrencePairs);
956
939
  } }
957
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_27_Template(rf, ctx) { if (rf & 1) {
958
- i0.ɵɵelementStart(0, "div", 122);
959
- i0.ɵɵelement(1, "i", 125);
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);
960
943
  i0.ɵɵelementStart(2, "p");
961
944
  i0.ɵɵtext(3, "No co-occurrence data available yet. Process content and recompute to see which tags frequently appear together.");
962
945
  i0.ɵɵelementEnd()();
963
946
  } }
964
- function AnalyticsResourceComponent_Conditional_6_Conditional_16_Template(rf, ctx) { if (rf & 1) {
965
- const _r29 = i0.ɵɵgetCurrentView();
966
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
967
- i0.ɵɵelement(2, "i", 117);
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);
968
951
  i0.ɵɵelementStart(3, "h1");
969
952
  i0.ɵɵtext(4, "Tags");
970
953
  i0.ɵɵelementEnd()();
971
- i0.ɵɵelementStart(5, "div", 118)(6, "div", 119)(7, "h3");
972
- i0.ɵɵelement(8, "i", 120);
954
+ i0.ɵɵelementStart(5, "div", 114)(6, "div", 115)(7, "h3");
955
+ i0.ɵɵelement(8, "i", 116);
973
956
  i0.ɵɵtext(9, " Top 20 Tags");
974
957
  i0.ɵɵelementEnd();
975
- i0.ɵɵconditionalCreate(10, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_10_Template, 3, 0, "button", 88);
958
+ i0.ɵɵconditionalCreate(10, AnalyticsResourceComponent_Conditional_6_Conditional_13_Conditional_10_Template, 3, 0, "button", 84);
976
959
  i0.ɵɵelementEnd();
977
- i0.ɵɵconditionalCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_11_Template, 21, 0, "div", 121)(12, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_12_Template, 4, 0, "div", 122);
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);
978
961
  i0.ɵɵelementEnd();
979
- i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_13_Template, 12, 3, "div", 28);
980
- i0.ɵɵconditionalCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_14_Template, 10, 0, "div", 123);
981
- i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_15_Template, 9, 0, "div", 123);
982
- i0.ɵɵelementStart(16, "div", 124)(17, "div", 119)(18, "h3");
983
- i0.ɵɵelement(19, "i", 125);
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);
984
967
  i0.ɵɵtext(20, " Frequently Paired Tags");
985
968
  i0.ɵɵelementEnd();
986
- i0.ɵɵelementStart(21, "div", 126);
987
- i0.ɵɵconditionalCreate(22, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_22_Template, 3, 1, "span", 127);
988
- i0.ɵɵelementStart(23, "button", 128);
989
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_16_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.RecomputeCoOccurrence()); });
990
- i0.ɵɵconditionalCreate(24, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_24_Template, 2, 0)(25, AnalyticsResourceComponent_Conditional_6_Conditional_16_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);
991
974
  i0.ɵɵelementEnd()()();
992
- i0.ɵɵconditionalCreate(26, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_26_Template, 17, 0, "div", 121)(27, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_27_Template, 4, 0, "div", 122);
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);
993
976
  i0.ɵɵelementEnd()();
994
977
  } if (rf & 2) {
995
- const ctx_r2 = i0.ɵɵnextContext(2);
978
+ const ctx_r1 = i0.ɵɵnextContext(2);
996
979
  i0.ɵɵadvance(10);
997
- i0.ɵɵconditional(ctx_r2.TopTags.length > 0 ? 10 : -1);
980
+ i0.ɵɵconditional(ctx_r1.TopTags.length > 0 ? 10 : -1);
998
981
  i0.ɵɵadvance();
999
- i0.ɵɵconditional(ctx_r2.TopTags.length > 0 ? 11 : 12);
982
+ i0.ɵɵconditional(ctx_r1.TopTags.length > 0 ? 11 : 12);
1000
983
  i0.ɵɵadvance(2);
1001
- 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);
1002
985
  i0.ɵɵadvance();
1003
- i0.ɵɵconditional(ctx_r2.EntityDistribution.length > 0 ? 14 : -1);
986
+ i0.ɵɵconditional(ctx_r1.EntityDistribution.length > 0 ? 14 : -1);
1004
987
  i0.ɵɵadvance();
1005
- i0.ɵɵconditional(ctx_r2.TagDepthBars.length > 0 ? 15 : -1);
988
+ i0.ɵɵconditional(ctx_r1.TagDepthBars.length > 0 ? 15 : -1);
1006
989
  i0.ɵɵadvance(7);
1007
- i0.ɵɵconditional(ctx_r2.CoOccurrenceLastComputed ? 22 : -1);
990
+ i0.ɵɵconditional(ctx_r1.CoOccurrenceLastComputed ? 22 : -1);
1008
991
  i0.ɵɵadvance();
1009
- i0.ɵɵproperty("disabled", ctx_r2.IsRecomputingCoOccurrence);
992
+ i0.ɵɵproperty("disabled", ctx_r1.IsRecomputingCoOccurrence);
1010
993
  i0.ɵɵadvance();
1011
- i0.ɵɵconditional(ctx_r2.IsRecomputingCoOccurrence ? 24 : 25);
994
+ i0.ɵɵconditional(ctx_r1.IsRecomputingCoOccurrence ? 24 : 25);
1012
995
  i0.ɵɵadvance(2);
1013
- i0.ɵɵconditional(ctx_r2.CoOccurrencePairs.length > 0 ? 26 : 27);
996
+ i0.ɵɵconditional(ctx_r1.CoOccurrencePairs.length > 0 ? 26 : 27);
1014
997
  } }
1015
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_9_For_22_Template(rf, ctx) { if (rf & 1) {
1016
- const _r45 = i0.ɵɵgetCurrentView();
1017
- i0.ɵɵelementStart(0, "tr", 131);
1018
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_17_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)); });
1019
1002
  i0.ɵɵelementStart(1, "td")(2, "strong");
1020
1003
  i0.ɵɵtext(3);
1021
1004
  i0.ɵɵelementEnd()();
1022
1005
  i0.ɵɵelementStart(4, "td");
1023
- i0.ɵɵelement(5, "i", 159);
1006
+ i0.ɵɵelement(5, "i", 155);
1024
1007
  i0.ɵɵtext(6);
1025
1008
  i0.ɵɵelementEnd();
1026
- i0.ɵɵelementStart(7, "td", 129);
1009
+ i0.ɵɵelementStart(7, "td", 125);
1027
1010
  i0.ɵɵtext(8);
1028
1011
  i0.ɵɵelementEnd();
1029
- i0.ɵɵelementStart(9, "td", 129);
1012
+ i0.ɵɵelementStart(9, "td", 125);
1030
1013
  i0.ɵɵtext(10);
1031
1014
  i0.ɵɵelementEnd();
1032
- i0.ɵɵelementStart(11, "td", 129);
1015
+ i0.ɵɵelementStart(11, "td", 125);
1033
1016
  i0.ɵɵtext(12);
1034
1017
  i0.ɵɵelementEnd();
1035
- i0.ɵɵelementStart(13, "td", 129);
1018
+ i0.ɵɵelementStart(13, "td", 125);
1036
1019
  i0.ɵɵtext(14);
1037
1020
  i0.ɵɵelementEnd();
1038
- i0.ɵɵelementStart(15, "td", 135);
1021
+ i0.ɵɵelementStart(15, "td", 131);
1039
1022
  i0.ɵɵtext(16);
1040
1023
  i0.ɵɵelementEnd();
1041
- i0.ɵɵelementStart(17, "td")(18, "span", 160);
1042
- i0.ɵɵelement(19, "i", 161);
1024
+ i0.ɵɵelementStart(17, "td")(18, "span", 156);
1025
+ i0.ɵɵelement(19, "i", 157);
1043
1026
  i0.ɵɵtext(20);
1044
1027
  i0.ɵɵelementEnd()()();
1045
1028
  } if (rf & 2) {
1046
- const source_r46 = ctx.$implicit;
1047
- const ctx_r2 = i0.ɵɵnextContext(4);
1048
- 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);
1049
1032
  i0.ɵɵadvance(3);
1050
- i0.ɵɵtextInterpolate(source_r46.Name);
1033
+ i0.ɵɵtextInterpolate(source_r45.Name);
1051
1034
  i0.ɵɵadvance(2);
1052
- i0.ɵɵclassMap(source_r46.TypeIcon);
1053
- i0.ɵɵstyleProp("color", source_r46.TypeColor);
1035
+ i0.ɵɵclassMap(source_r45.TypeIcon);
1036
+ i0.ɵɵstyleProp("color", source_r45.TypeColor);
1054
1037
  i0.ɵɵadvance();
1055
- i0.ɵɵtextInterpolate1(" ", source_r46.Type);
1038
+ i0.ɵɵtextInterpolate1(" ", source_r45.Type);
1056
1039
  i0.ɵɵadvance(2);
1057
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(source_r46.Items));
1040
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(source_r45.Items));
1058
1041
  i0.ɵɵadvance(2);
1059
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(source_r46.TagsGenerated));
1042
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(source_r45.TagsGenerated));
1060
1043
  i0.ɵɵadvance(2);
1061
- i0.ɵɵtextInterpolate(source_r46.AvgTagsPerItem);
1044
+ i0.ɵɵtextInterpolate(source_r45.AvgTagsPerItem);
1062
1045
  i0.ɵɵadvance(2);
1063
- i0.ɵɵtextInterpolate(source_r46.AvgWeight);
1046
+ i0.ɵɵtextInterpolate(source_r45.AvgWeight);
1064
1047
  i0.ɵɵadvance(2);
1065
- i0.ɵɵtextInterpolate(source_r46.LastRun);
1048
+ i0.ɵɵtextInterpolate(source_r45.LastRun);
1066
1049
  i0.ɵɵadvance(2);
1067
- i0.ɵɵclassMap(source_r46.StatusClass);
1050
+ i0.ɵɵclassMap(source_r45.StatusClass);
1068
1051
  i0.ɵɵadvance(2);
1069
- i0.ɵɵtextInterpolate1(" ", source_r46.Status);
1052
+ i0.ɵɵtextInterpolate1(" ", source_r45.Status);
1070
1053
  } }
1071
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1072
- i0.ɵɵelementStart(0, "div", 121)(1, "table", 96)(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");
1073
1056
  i0.ɵɵtext(5, "Source Name");
1074
1057
  i0.ɵɵelementEnd();
1075
1058
  i0.ɵɵelementStart(6, "th");
1076
1059
  i0.ɵɵtext(7, "Type");
1077
1060
  i0.ɵɵelementEnd();
1078
- i0.ɵɵelementStart(8, "th", 129);
1061
+ i0.ɵɵelementStart(8, "th", 125);
1079
1062
  i0.ɵɵtext(9, "Items");
1080
1063
  i0.ɵɵelementEnd();
1081
- i0.ɵɵelementStart(10, "th", 129);
1064
+ i0.ɵɵelementStart(10, "th", 125);
1082
1065
  i0.ɵɵtext(11, "Tags Generated");
1083
1066
  i0.ɵɵelementEnd();
1084
- i0.ɵɵelementStart(12, "th", 129);
1067
+ i0.ɵɵelementStart(12, "th", 125);
1085
1068
  i0.ɵɵtext(13, "Avg Tags/Item");
1086
1069
  i0.ɵɵelementEnd();
1087
- i0.ɵɵelementStart(14, "th", 129);
1070
+ i0.ɵɵelementStart(14, "th", 125);
1088
1071
  i0.ɵɵtext(15, "Avg Weight");
1089
1072
  i0.ɵɵelementEnd();
1090
1073
  i0.ɵɵelementStart(16, "th");
@@ -1094,462 +1077,462 @@ function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_9_T
1094
1077
  i0.ɵɵtext(19, "Status");
1095
1078
  i0.ɵɵelementEnd()()();
1096
1079
  i0.ɵɵelementStart(20, "tbody");
1097
- i0.ɵɵrepeaterCreate(21, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_9_For_22_Template, 21, 16, "tr", 158, _forTrack1);
1080
+ i0.ɵɵrepeaterCreate(21, AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_9_For_22_Template, 21, 16, "tr", 154, _forTrack0);
1098
1081
  i0.ɵɵelementEnd()()();
1099
1082
  } if (rf & 2) {
1100
- const ctx_r2 = i0.ɵɵnextContext(3);
1083
+ const ctx_r1 = i0.ɵɵnextContext(3);
1101
1084
  i0.ɵɵadvance(21);
1102
- i0.ɵɵrepeater(ctx_r2.SourceComparison);
1085
+ i0.ɵɵrepeater(ctx_r1.SourceComparison);
1103
1086
  } }
1104
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1105
- i0.ɵɵelementStart(0, "div", 122);
1106
- i0.ɵɵelement(1, "i", 157);
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);
1107
1090
  i0.ɵɵelementStart(2, "p");
1108
1091
  i0.ɵɵtext(3, "No content sources configured yet.");
1109
1092
  i0.ɵɵelementEnd()();
1110
1093
  } }
1111
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1112
- const _r48 = i0.ɵɵgetCurrentView();
1113
- i0.ɵɵelementStart(0, "button", 94);
1114
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
1115
- i0.ɵɵelement(1, "i", 95);
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);
1116
1099
  i0.ɵɵtext(2, " CSV");
1117
1100
  i0.ɵɵelementEnd();
1118
1101
  } }
1119
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1120
- i0.ɵɵelement(0, "mj-loading", 91);
1102
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1103
+ i0.ɵɵelement(0, "mj-loading", 87);
1121
1104
  } }
1122
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_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) {
1123
1106
  i0.ɵɵelementStart(0, "th");
1124
1107
  i0.ɵɵtext(1);
1125
1108
  i0.ɵɵelementEnd();
1126
1109
  } if (rf & 2) {
1127
- const col_r49 = ctx.$implicit;
1110
+ const col_r48 = ctx.$implicit;
1128
1111
  i0.ɵɵadvance();
1129
- i0.ɵɵtextInterpolate(col_r49);
1112
+ i0.ɵɵtextInterpolate(col_r48);
1130
1113
  } }
1131
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1132
- i0.ɵɵelement(0, "th", 97);
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);
1133
1116
  } }
1134
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_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) {
1135
1118
  i0.ɵɵelementStart(0, "td");
1136
1119
  i0.ɵɵtext(1);
1137
1120
  i0.ɵɵelementEnd();
1138
1121
  } if (rf & 2) {
1139
- const col_r50 = ctx.$implicit;
1140
- const row_r51 = i0.ɵɵnextContext().$implicit;
1122
+ const col_r49 = ctx.$implicit;
1123
+ const row_r50 = i0.ɵɵnextContext().$implicit;
1141
1124
  i0.ɵɵadvance();
1142
- i0.ɵɵtextInterpolate(row_r51[col_r50]);
1125
+ i0.ɵɵtextInterpolate(row_r50[col_r49]);
1143
1126
  } }
1144
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1145
- const _r52 = i0.ɵɵgetCurrentView();
1146
- i0.ɵɵelementStart(0, "button", 137);
1147
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_17_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)); });
1148
- i0.ɵɵelement(1, "i", 100);
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);
1149
1132
  i0.ɵɵelementEnd();
1150
1133
  } }
1151
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1152
- i0.ɵɵelementStart(0, "td", 97);
1153
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 136);
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);
1154
1137
  i0.ɵɵelementEnd();
1155
1138
  } if (rf & 2) {
1156
- const row_r51 = i0.ɵɵnextContext().$implicit;
1139
+ const row_r50 = i0.ɵɵnextContext().$implicit;
1157
1140
  i0.ɵɵadvance();
1158
- i0.ɵɵconditional(row_r51["_RecordID"] ? 1 : -1);
1141
+ i0.ɵɵconditional(row_r50["_RecordID"] ? 1 : -1);
1159
1142
  } }
1160
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_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) {
1161
1144
  i0.ɵɵelementStart(0, "tr");
1162
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1163
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 97);
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);
1164
1147
  i0.ɵɵelementEnd();
1165
1148
  } if (rf & 2) {
1166
- const ctx_r2 = i0.ɵɵnextContext(5);
1149
+ const ctx_r1 = i0.ɵɵnextContext(5);
1167
1150
  i0.ɵɵadvance();
1168
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1151
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1169
1152
  i0.ɵɵadvance(2);
1170
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
1153
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
1171
1154
  } }
1172
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1173
- i0.ɵɵelementStart(0, "div", 92)(1, "table", 96)(2, "thead")(3, "tr");
1174
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1175
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_Conditional_6_Template, 1, 0, "th", 97);
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);
1176
1159
  i0.ɵɵelementEnd()();
1177
1160
  i0.ɵɵelementStart(7, "tbody");
1178
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_17_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);
1179
1162
  i0.ɵɵelementEnd()()();
1180
1163
  } if (rf & 2) {
1181
- const ctx_r2 = i0.ɵɵnextContext(4);
1164
+ const ctx_r1 = i0.ɵɵnextContext(4);
1182
1165
  i0.ɵɵadvance(4);
1183
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1166
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1184
1167
  i0.ɵɵadvance(2);
1185
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
1168
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
1186
1169
  i0.ɵɵadvance(2);
1187
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
1170
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
1188
1171
  } }
1189
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1190
- i0.ɵɵelementStart(0, "div", 93);
1172
+ function AnalyticsResourceComponent_Conditional_6_Conditional_14_Conditional_11_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1173
+ i0.ɵɵelementStart(0, "div", 89);
1191
1174
  i0.ɵɵtext(1, "No run data for this source");
1192
1175
  i0.ɵɵelementEnd();
1193
1176
  } }
1194
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1195
- const _r47 = i0.ɵɵgetCurrentView();
1196
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 84)(2, "span", 85);
1197
- i0.ɵɵelement(3, "i", 86);
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);
1198
1181
  i0.ɵɵtext(4);
1199
1182
  i0.ɵɵelementEnd();
1200
- i0.ɵɵelementStart(5, "div", 87);
1201
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_6_Template, 3, 0, "button", 88);
1202
- i0.ɵɵelementStart(7, "button", 89);
1203
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r47); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
1204
- i0.ɵɵelement(8, "i", 90);
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);
1205
1188
  i0.ɵɵelementEnd()()();
1206
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_9_Template, 1, 0, "mj-loading", 91)(10, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_10_Template, 10, 1, "div", 92)(11, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Conditional_11_Template, 2, 0, "div", 93);
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);
1207
1190
  i0.ɵɵelementEnd();
1208
1191
  } if (rf & 2) {
1209
- const ctx_r2 = i0.ɵɵnextContext(3);
1192
+ const ctx_r1 = i0.ɵɵnextContext(3);
1210
1193
  i0.ɵɵadvance(4);
1211
- i0.ɵɵtextInterpolate1(" Recent Runs: ", ctx_r2.DrillDownTarget.replace("source-row:", ""));
1194
+ i0.ɵɵtextInterpolate1(" Recent Runs: ", ctx_r1.DrillDownTarget.replace("source-row:", ""));
1212
1195
  i0.ɵɵadvance(2);
1213
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
1196
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
1214
1197
  i0.ɵɵadvance(3);
1215
- 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);
1216
1199
  } }
1217
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_12_For_11_Template(rf, ctx) { if (rf & 1) {
1218
- i0.ɵɵelementStart(0, "div", 34)(1, "div", 171);
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);
1219
1202
  i0.ɵɵtext(2);
1220
1203
  i0.ɵɵelementEnd();
1221
- i0.ɵɵelement(3, "div", 102);
1222
- i0.ɵɵelementStart(4, "div", 103);
1204
+ i0.ɵɵelement(3, "div", 98);
1205
+ i0.ɵɵelementStart(4, "div", 99);
1223
1206
  i0.ɵɵtext(5);
1224
1207
  i0.ɵɵelementEnd()();
1225
1208
  } if (rf & 2) {
1226
- const bar_r53 = ctx.$implicit;
1209
+ const bar_r52 = ctx.$implicit;
1227
1210
  i0.ɵɵadvance(2);
1228
- i0.ɵɵtextInterpolate(bar_r53.Value);
1211
+ i0.ɵɵtextInterpolate(bar_r52.Value);
1229
1212
  i0.ɵɵadvance();
1230
- 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);
1231
1214
  i0.ɵɵadvance(2);
1232
- i0.ɵɵtextInterpolate(bar_r53.Label);
1215
+ i0.ɵɵtextInterpolate(bar_r52.Label);
1233
1216
  } }
1234
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_12_For_18_Template(rf, ctx) { if (rf & 1) {
1235
- i0.ɵɵelementStart(0, "div", 168)(1, "span", 172);
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);
1236
1219
  i0.ɵɵtext(2);
1237
1220
  i0.ɵɵelementEnd();
1238
- i0.ɵɵelementStart(3, "div", 173)(4, "div", 174);
1221
+ i0.ɵɵelementStart(3, "div", 169)(4, "div", 170);
1239
1222
  i0.ɵɵtext(5);
1240
1223
  i0.ɵɵelementEnd()()();
1241
1224
  } if (rf & 2) {
1242
- const band_r54 = ctx.$implicit;
1225
+ const band_r53 = ctx.$implicit;
1243
1226
  i0.ɵɵadvance(2);
1244
- i0.ɵɵtextInterpolate(band_r54.Label);
1227
+ i0.ɵɵtextInterpolate(band_r53.Label);
1245
1228
  i0.ɵɵadvance(2);
1246
- i0.ɵɵstyleProp("width", band_r54.Percentage, "%")("background", band_r54.Color);
1229
+ i0.ɵɵstyleProp("width", band_r53.Percentage, "%")("background", band_r53.Color);
1247
1230
  i0.ɵɵadvance();
1248
- i0.ɵɵtextInterpolate1("", band_r54.Percentage, "%");
1231
+ i0.ɵɵtextInterpolate1("", band_r53.Percentage, "%");
1249
1232
  } }
1250
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1251
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
1252
- i0.ɵɵelement(2, "i", 162);
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);
1253
1236
  i0.ɵɵtext(3);
1254
1237
  i0.ɵɵelementEnd();
1255
- i0.ɵɵelementStart(4, "div", 163)(5, "div", 164)(6, "div", 31);
1256
- i0.ɵɵelement(7, "i", 138);
1238
+ i0.ɵɵelementStart(4, "div", 159)(5, "div", 160)(6, "div", 27);
1239
+ i0.ɵɵelement(7, "i", 134);
1257
1240
  i0.ɵɵtext(8, " Items Processed (Last 8 Weeks)");
1258
1241
  i0.ɵɵelementEnd();
1259
- i0.ɵɵelementStart(9, "div", 165);
1260
- i0.ɵɵrepeaterCreate(10, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_12_For_11_Template, 6, 6, "div", 34, _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);
1261
1244
  i0.ɵɵelementEnd()();
1262
- i0.ɵɵelementStart(12, "div", 164)(13, "div", 31);
1263
- i0.ɵɵelement(14, "i", 166);
1245
+ i0.ɵɵelementStart(12, "div", 160)(13, "div", 27);
1246
+ i0.ɵɵelement(14, "i", 162);
1264
1247
  i0.ɵɵtext(15, " Tag Quality Distribution");
1265
1248
  i0.ɵɵelementEnd();
1266
- i0.ɵɵelementStart(16, "div", 167);
1267
- i0.ɵɵrepeaterCreate(17, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_12_For_18_Template, 6, 6, "div", 168, _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);
1268
1251
  i0.ɵɵelementEnd();
1269
- i0.ɵɵelementStart(19, "div", 169);
1270
- i0.ɵɵelement(20, "i", 170);
1252
+ i0.ɵɵelementStart(19, "div", 165);
1253
+ i0.ɵɵelement(20, "i", 166);
1271
1254
  i0.ɵɵtext(21);
1272
1255
  i0.ɵɵelementEnd()()()();
1273
1256
  } if (rf & 2) {
1274
- const ctx_r2 = i0.ɵɵnextContext(3);
1257
+ const ctx_r1 = i0.ɵɵnextContext(3);
1275
1258
  i0.ɵɵadvance(3);
1276
- i0.ɵɵtextInterpolate1(" Source Detail: ", ctx_r2.SelectedSourceName);
1259
+ i0.ɵɵtextInterpolate1(" Source Detail: ", ctx_r1.SelectedSourceName);
1277
1260
  i0.ɵɵadvance(7);
1278
- i0.ɵɵrepeater(ctx_r2.SourceWeeklyBars);
1261
+ i0.ɵɵrepeater(ctx_r1.SourceWeeklyBars);
1279
1262
  i0.ɵɵadvance(7);
1280
- i0.ɵɵrepeater(ctx_r2.SourceQualityBands);
1263
+ i0.ɵɵrepeater(ctx_r1.SourceQualityBands);
1281
1264
  i0.ɵɵadvance(4);
1282
- i0.ɵɵtextInterpolate1(" ", ctx_r2.SourceQualityNote, " ");
1265
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.SourceQualityNote, " ");
1283
1266
  } }
1284
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_13_For_6_Template(rf, ctx) { if (rf & 1) {
1285
- i0.ɵɵelementStart(0, "div", 178)(1, "div", 179);
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);
1286
1269
  i0.ɵɵtext(2);
1287
1270
  i0.ɵɵelementEnd();
1288
- i0.ɵɵelementStart(3, "div", 180);
1271
+ i0.ɵɵelementStart(3, "div", 176);
1289
1272
  i0.ɵɵtext(4);
1290
1273
  i0.ɵɵelementEnd();
1291
- i0.ɵɵelementStart(5, "div", 181);
1274
+ i0.ɵɵelementStart(5, "div", 177);
1292
1275
  i0.ɵɵtext(6, "uptime");
1293
1276
  i0.ɵɵelementEnd()();
1294
1277
  } if (rf & 2) {
1295
- const card_r55 = ctx.$implicit;
1296
- i0.ɵɵstyleProp("border-top-color", card_r55.Color);
1278
+ const card_r54 = ctx.$implicit;
1279
+ i0.ɵɵstyleProp("border-top-color", card_r54.Color);
1297
1280
  i0.ɵɵadvance(2);
1298
- i0.ɵɵtextInterpolate(card_r55.Name);
1281
+ i0.ɵɵtextInterpolate(card_r54.Name);
1299
1282
  i0.ɵɵadvance();
1300
- i0.ɵɵstyleProp("color", card_r55.Color);
1283
+ i0.ɵɵstyleProp("color", card_r54.Color);
1301
1284
  i0.ɵɵadvance();
1302
- i0.ɵɵtextInterpolate1("", card_r55.Uptime, "%");
1285
+ i0.ɵɵtextInterpolate1("", card_r54.Uptime, "%");
1303
1286
  } }
1304
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1305
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
1306
- i0.ɵɵelement(2, "i", 175);
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);
1307
1290
  i0.ɵɵtext(3, " Source Health Summary");
1308
1291
  i0.ɵɵelementEnd();
1309
- i0.ɵɵelementStart(4, "div", 176);
1310
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_13_For_6_Template, 7, 6, "div", 177, _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);
1311
1294
  i0.ɵɵelementEnd()();
1312
1295
  } if (rf & 2) {
1313
- const ctx_r2 = i0.ɵɵnextContext(3);
1296
+ const ctx_r1 = i0.ɵɵnextContext(3);
1314
1297
  i0.ɵɵadvance(4);
1315
- i0.ɵɵstyleProp("grid-template-columns", "repeat(" + ctx_r2.SourceHealthCards.length + ", 1fr)");
1298
+ i0.ɵɵstyleProp("grid-template-columns", "repeat(" + ctx_r1.SourceHealthCards.length + ", 1fr)");
1316
1299
  i0.ɵɵadvance();
1317
- i0.ɵɵrepeater(ctx_r2.SourceHealthCards);
1300
+ i0.ɵɵrepeater(ctx_r1.SourceHealthCards);
1318
1301
  } }
1319
- function AnalyticsResourceComponent_Conditional_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1320
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
1321
- i0.ɵɵelement(2, "i", 157);
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);
1322
1305
  i0.ɵɵelementStart(3, "h1");
1323
1306
  i0.ɵɵtext(4, "Sources");
1324
1307
  i0.ɵɵelementEnd()();
1325
- i0.ɵɵelementStart(5, "div", 118)(6, "h3");
1326
- i0.ɵɵelement(7, "i", 86);
1308
+ i0.ɵɵelementStart(5, "div", 114)(6, "h3");
1309
+ i0.ɵɵelement(7, "i", 82);
1327
1310
  i0.ɵɵtext(8, " Source Comparison");
1328
1311
  i0.ɵɵelementEnd();
1329
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_9_Template, 23, 0, "div", 121)(10, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_10_Template, 4, 0, "div", 122);
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);
1330
1313
  i0.ɵɵelementEnd();
1331
- i0.ɵɵconditionalCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_11_Template, 12, 3, "div", 28);
1332
- i0.ɵɵconditionalCreate(12, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_12_Template, 22, 2, "div", 123);
1333
- i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_17_Conditional_13_Template, 7, 2, "div", 123);
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);
1334
1317
  i0.ɵɵelementEnd();
1335
1318
  } if (rf & 2) {
1336
- const ctx_r2 = i0.ɵɵnextContext(2);
1319
+ const ctx_r1 = i0.ɵɵnextContext(2);
1337
1320
  i0.ɵɵadvance(9);
1338
- i0.ɵɵconditional(ctx_r2.SourceComparison.length > 0 ? 9 : 10);
1321
+ i0.ɵɵconditional(ctx_r1.SourceComparison.length > 0 ? 9 : 10);
1339
1322
  i0.ɵɵadvance(2);
1340
- 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);
1341
1324
  i0.ɵɵadvance();
1342
- 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);
1343
1326
  i0.ɵɵadvance();
1344
- i0.ɵɵconditional(ctx_r2.SourceHealthCards.length > 0 ? 13 : -1);
1327
+ i0.ɵɵconditional(ctx_r1.SourceHealthCards.length > 0 ? 13 : -1);
1345
1328
  } }
1346
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_For_12_Template(rf, ctx) { if (rf & 1) {
1347
- const _r56 = i0.ɵɵgetCurrentView();
1348
- i0.ɵɵelementStart(0, "div", 197);
1349
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_18_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)); });
1350
1333
  i0.ɵɵelementEnd();
1351
1334
  } if (rf & 2) {
1352
- const bar_r58 = ctx.$implicit;
1353
- 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);
1354
1337
  } }
1355
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_For_15_Template(rf, ctx) { if (rf & 1) {
1338
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_15_Template(rf, ctx) { if (rf & 1) {
1356
1339
  i0.ɵɵelementStart(0, "span");
1357
1340
  i0.ɵɵtext(1);
1358
1341
  i0.ɵɵelementEnd();
1359
1342
  } if (rf & 2) {
1360
- const label_r59 = ctx.$implicit;
1343
+ const label_r58 = ctx.$implicit;
1361
1344
  i0.ɵɵadvance();
1362
- i0.ɵɵtextInterpolate(label_r59);
1345
+ i0.ɵɵtextInterpolate(label_r58);
1363
1346
  } }
1364
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1365
- const _r61 = i0.ɵɵgetCurrentView();
1366
- i0.ɵɵelementStart(0, "button", 94);
1367
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r61); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
1368
- i0.ɵɵelement(1, "i", 95);
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);
1369
1352
  i0.ɵɵtext(2, " CSV");
1370
1353
  i0.ɵɵelementEnd();
1371
1354
  } }
1372
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1373
- i0.ɵɵelement(0, "mj-loading", 91);
1355
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1356
+ i0.ɵɵelement(0, "mj-loading", 87);
1374
1357
  } }
1375
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_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) {
1376
1359
  i0.ɵɵelementStart(0, "th");
1377
1360
  i0.ɵɵtext(1);
1378
1361
  i0.ɵɵelementEnd();
1379
1362
  } if (rf & 2) {
1380
- const col_r62 = ctx.$implicit;
1363
+ const col_r61 = ctx.$implicit;
1381
1364
  i0.ɵɵadvance();
1382
- i0.ɵɵtextInterpolate(col_r62);
1365
+ i0.ɵɵtextInterpolate(col_r61);
1383
1366
  } }
1384
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1385
- i0.ɵɵelement(0, "th", 97);
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);
1386
1369
  } }
1387
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_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) {
1388
1371
  i0.ɵɵelementStart(0, "td");
1389
1372
  i0.ɵɵtext(1);
1390
1373
  i0.ɵɵelementEnd();
1391
1374
  } if (rf & 2) {
1392
- const col_r63 = ctx.$implicit;
1393
- const row_r64 = i0.ɵɵnextContext().$implicit;
1375
+ const col_r62 = ctx.$implicit;
1376
+ const row_r63 = i0.ɵɵnextContext().$implicit;
1394
1377
  i0.ɵɵadvance();
1395
- i0.ɵɵtextInterpolate(row_r64[col_r63]);
1378
+ i0.ɵɵtextInterpolate(row_r63[col_r62]);
1396
1379
  } }
1397
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1398
- const _r65 = i0.ɵɵgetCurrentView();
1399
- i0.ɵɵelementStart(0, "button", 137);
1400
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_18_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)); });
1401
- i0.ɵɵelement(1, "i", 100);
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);
1402
1385
  i0.ɵɵelementEnd();
1403
1386
  } }
1404
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1405
- i0.ɵɵelementStart(0, "td", 97);
1406
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 136);
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);
1407
1390
  i0.ɵɵelementEnd();
1408
1391
  } if (rf & 2) {
1409
- const row_r64 = i0.ɵɵnextContext().$implicit;
1392
+ const row_r63 = i0.ɵɵnextContext().$implicit;
1410
1393
  i0.ɵɵadvance();
1411
- i0.ɵɵconditional(row_r64["_RecordID"] ? 1 : -1);
1394
+ i0.ɵɵconditional(row_r63["_RecordID"] ? 1 : -1);
1412
1395
  } }
1413
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_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) {
1414
1397
  i0.ɵɵelementStart(0, "tr");
1415
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1416
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 97);
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);
1417
1400
  i0.ɵɵelementEnd();
1418
1401
  } if (rf & 2) {
1419
- const ctx_r2 = i0.ɵɵnextContext(5);
1402
+ const ctx_r1 = i0.ɵɵnextContext(5);
1420
1403
  i0.ɵɵadvance();
1421
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1404
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1422
1405
  i0.ɵɵadvance(2);
1423
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
1406
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
1424
1407
  } }
1425
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1426
- i0.ɵɵelementStart(0, "div", 92)(1, "table", 96)(2, "thead")(3, "tr");
1427
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1428
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_Conditional_6_Template, 1, 0, "th", 97);
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);
1429
1412
  i0.ɵɵelementEnd()();
1430
1413
  i0.ɵɵelementStart(7, "tbody");
1431
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_18_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);
1432
1415
  i0.ɵɵelementEnd()()();
1433
1416
  } if (rf & 2) {
1434
- const ctx_r2 = i0.ɵɵnextContext(4);
1417
+ const ctx_r1 = i0.ɵɵnextContext(4);
1435
1418
  i0.ɵɵadvance(4);
1436
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1419
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1437
1420
  i0.ɵɵadvance(2);
1438
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
1421
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
1439
1422
  i0.ɵɵadvance(2);
1440
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
1423
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
1441
1424
  } }
1442
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1443
- i0.ɵɵelementStart(0, "div", 93);
1425
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1426
+ i0.ɵɵelementStart(0, "div", 89);
1444
1427
  i0.ɵɵtext(1, "No runs for this day");
1445
1428
  i0.ɵɵelementEnd();
1446
1429
  } }
1447
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1448
- const _r60 = i0.ɵɵgetCurrentView();
1449
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 84)(2, "span", 85);
1450
- i0.ɵɵelement(3, "i", 86);
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);
1451
1434
  i0.ɵɵtext(4, " Runs for Selected Day");
1452
1435
  i0.ɵɵelementEnd();
1453
- i0.ɵɵelementStart(5, "div", 87);
1454
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_6_Template, 3, 0, "button", 88);
1455
- i0.ɵɵelementStart(7, "button", 89);
1456
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r60); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
1457
- i0.ɵɵelement(8, "i", 90);
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);
1458
1441
  i0.ɵɵelementEnd()()();
1459
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_9_Template, 1, 0, "mj-loading", 91)(10, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_10_Template, 10, 1, "div", 92)(11, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Conditional_11_Template, 2, 0, "div", 93);
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);
1460
1443
  i0.ɵɵelementEnd();
1461
1444
  } if (rf & 2) {
1462
- const ctx_r2 = i0.ɵɵnextContext(3);
1445
+ const ctx_r1 = i0.ɵɵnextContext(3);
1463
1446
  i0.ɵɵadvance(6);
1464
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
1447
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
1465
1448
  i0.ɵɵadvance(3);
1466
- 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);
1467
1450
  } }
1468
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_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) {
1469
1452
  i0.ɵɵtext(0);
1470
1453
  } if (rf & 2) {
1471
- const stage_r66 = i0.ɵɵnextContext().$implicit;
1472
- i0.ɵɵtextInterpolate1(" ", stage_r66.Time, "s ");
1454
+ const stage_r65 = i0.ɵɵnextContext().$implicit;
1455
+ i0.ɵɵtextInterpolate1(" ", stage_r65.Time, "s ");
1473
1456
  } }
1474
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_For_24_Template(rf, ctx) { if (rf & 1) {
1475
- i0.ɵɵelementStart(0, "div", 188)(1, "div", 198);
1457
+ function AnalyticsResourceComponent_Conditional_6_Conditional_15_For_24_Template(rf, ctx) { if (rf & 1) {
1458
+ i0.ɵɵelementStart(0, "div", 184)(1, "div", 194);
1476
1459
  i0.ɵɵtext(2);
1477
1460
  i0.ɵɵelementEnd();
1478
- i0.ɵɵelementStart(3, "div", 199)(4, "div", 200);
1479
- i0.ɵɵconditionalCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_18_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);
1480
1463
  i0.ɵɵelementEnd()();
1481
- i0.ɵɵelementStart(6, "div", 201);
1464
+ i0.ɵɵelementStart(6, "div", 197);
1482
1465
  i0.ɵɵtext(7);
1483
1466
  i0.ɵɵelementEnd()();
1484
1467
  } if (rf & 2) {
1485
- const stage_r66 = ctx.$implicit;
1468
+ const stage_r65 = ctx.$implicit;
1486
1469
  i0.ɵɵadvance(2);
1487
- i0.ɵɵtextInterpolate(stage_r66.Name);
1470
+ i0.ɵɵtextInterpolate(stage_r65.Name);
1488
1471
  i0.ɵɵadvance(2);
1489
- i0.ɵɵstyleProp("width", stage_r66.Percentage, "%")("background", stage_r66.Color);
1472
+ i0.ɵɵstyleProp("width", stage_r65.Percentage, "%")("background", stage_r65.Color);
1490
1473
  i0.ɵɵadvance();
1491
- i0.ɵɵconditional(stage_r66.Percentage > 15 ? 5 : -1);
1474
+ i0.ɵɵconditional(stage_r65.Percentage > 15 ? 5 : -1);
1492
1475
  i0.ɵɵadvance(2);
1493
- i0.ɵɵtextInterpolate1("", stage_r66.Time, "s");
1476
+ i0.ɵɵtextInterpolate1("", stage_r65.Time, "s");
1494
1477
  } }
1495
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1496
- i0.ɵɵelementStart(0, "span", 190);
1497
- i0.ɵɵelement(1, "i", 202);
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);
1498
1481
  i0.ɵɵtext(2);
1499
1482
  i0.ɵɵelementEnd();
1500
1483
  } if (rf & 2) {
1501
- const ctx_r2 = i0.ɵɵnextContext(3);
1484
+ const ctx_r1 = i0.ɵɵnextContext(3);
1502
1485
  i0.ɵɵadvance(2);
1503
- 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) ");
1504
1487
  } }
1505
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_52_For_22_Template(rf, ctx) { if (rf & 1) {
1506
- i0.ɵɵelementStart(0, "tr")(1, "td", 204);
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);
1507
1490
  i0.ɵɵtext(2);
1508
1491
  i0.ɵɵelementEnd();
1509
1492
  i0.ɵɵelementStart(3, "td");
1510
1493
  i0.ɵɵtext(4);
1511
1494
  i0.ɵɵelementEnd();
1512
- i0.ɵɵelementStart(5, "td", 135);
1495
+ i0.ɵɵelementStart(5, "td", 131);
1513
1496
  i0.ɵɵtext(6);
1514
1497
  i0.ɵɵelementEnd();
1515
- i0.ɵɵelementStart(7, "td")(8, "div", 205);
1516
- i0.ɵɵelement(9, "div", 206);
1498
+ i0.ɵɵelementStart(7, "td")(8, "div", 201);
1499
+ i0.ɵɵelement(9, "div", 202);
1517
1500
  i0.ɵɵelementEnd();
1518
- i0.ɵɵelementStart(10, "span", 207);
1501
+ i0.ɵɵelementStart(10, "span", 203);
1519
1502
  i0.ɵɵtext(11);
1520
1503
  i0.ɵɵelementEnd()();
1521
- i0.ɵɵelementStart(12, "td")(13, "span", 160);
1504
+ i0.ɵɵelementStart(12, "td")(13, "span", 156);
1522
1505
  i0.ɵɵtext(14);
1523
1506
  i0.ɵɵelementEnd()();
1524
- i0.ɵɵelementStart(15, "td", 129);
1507
+ i0.ɵɵelementStart(15, "td", 125);
1525
1508
  i0.ɵɵtext(16);
1526
1509
  i0.ɵɵelementEnd()();
1527
1510
  } if (rf & 2) {
1528
- const run_r67 = ctx.$implicit;
1529
- const ctx_r2 = i0.ɵɵnextContext(4);
1511
+ const run_r66 = ctx.$implicit;
1512
+ const ctx_r1 = i0.ɵɵnextContext(4);
1530
1513
  i0.ɵɵadvance(2);
1531
- i0.ɵɵtextInterpolate(run_r67.RunID);
1514
+ i0.ɵɵtextInterpolate(run_r66.RunID);
1532
1515
  i0.ɵɵadvance(2);
1533
- i0.ɵɵtextInterpolate(run_r67.Source);
1516
+ i0.ɵɵtextInterpolate(run_r66.Source);
1534
1517
  i0.ɵɵadvance(2);
1535
- i0.ɵɵtextInterpolate(run_r67.Started);
1518
+ i0.ɵɵtextInterpolate(run_r66.Started);
1536
1519
  i0.ɵɵadvance(3);
1537
- i0.ɵɵstyleProp("width", run_r67.Progress, "%");
1520
+ i0.ɵɵstyleProp("width", run_r66.Progress, "%");
1538
1521
  i0.ɵɵadvance(2);
1539
- i0.ɵɵtextInterpolate1("", run_r67.Progress, "%");
1522
+ i0.ɵɵtextInterpolate1("", run_r66.Progress, "%");
1540
1523
  i0.ɵɵadvance(2);
1541
- i0.ɵɵclassMap(run_r67.StageClass);
1524
+ i0.ɵɵclassMap(run_r66.StageClass);
1542
1525
  i0.ɵɵadvance();
1543
- i0.ɵɵtextInterpolate(run_r67.Stage);
1526
+ i0.ɵɵtextInterpolate(run_r66.Stage);
1544
1527
  i0.ɵɵadvance(2);
1545
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(run_r67.Items));
1528
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(run_r66.Items));
1546
1529
  } }
1547
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_52_Template(rf, ctx) { if (rf & 1) {
1548
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
1549
- i0.ɵɵelement(2, "i", 203);
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);
1550
1533
  i0.ɵɵtext(3, " Active Runs");
1551
1534
  i0.ɵɵelementEnd();
1552
- i0.ɵɵelementStart(4, "div", 121)(5, "table", 96)(6, "thead")(7, "tr")(8, "th");
1535
+ i0.ɵɵelementStart(4, "div", 117)(5, "table", 92)(6, "thead")(7, "tr")(8, "th");
1553
1536
  i0.ɵɵtext(9, "Run ID");
1554
1537
  i0.ɵɵelementEnd();
1555
1538
  i0.ɵɵelementStart(10, "th");
@@ -1564,347 +1547,347 @@ function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_52_
1564
1547
  i0.ɵɵelementStart(16, "th");
1565
1548
  i0.ɵɵtext(17, "Stage");
1566
1549
  i0.ɵɵelementEnd();
1567
- i0.ɵɵelementStart(18, "th", 129);
1550
+ i0.ɵɵelementStart(18, "th", 125);
1568
1551
  i0.ɵɵtext(19, "Items");
1569
1552
  i0.ɵɵelementEnd()()();
1570
1553
  i0.ɵɵelementStart(20, "tbody");
1571
- i0.ɵɵrepeaterCreate(21, AnalyticsResourceComponent_Conditional_6_Conditional_18_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);
1572
1555
  i0.ɵɵelementEnd()()()();
1573
1556
  } if (rf & 2) {
1574
- const ctx_r2 = i0.ɵɵnextContext(3);
1557
+ const ctx_r1 = i0.ɵɵnextContext(3);
1575
1558
  i0.ɵɵadvance(21);
1576
- i0.ɵɵrepeater(ctx_r2.ActiveRuns);
1559
+ i0.ɵɵrepeater(ctx_r1.ActiveRuns);
1577
1560
  } }
1578
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_53_For_6_Template(rf, ctx) { if (rf & 1) {
1579
- i0.ɵɵelementStart(0, "div", 210)(1, "div", 211);
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);
1580
1563
  i0.ɵɵtext(2);
1581
1564
  i0.ɵɵelementEnd();
1582
- i0.ɵɵelementStart(3, "div", 212);
1565
+ i0.ɵɵelementStart(3, "div", 208);
1583
1566
  i0.ɵɵtext(4);
1584
1567
  i0.ɵɵelementEnd();
1585
- i0.ɵɵelementStart(5, "div", 213);
1568
+ i0.ɵɵelementStart(5, "div", 209);
1586
1569
  i0.ɵɵtext(6);
1587
1570
  i0.ɵɵelementEnd()();
1588
1571
  } if (rf & 2) {
1589
- const entry_r68 = ctx.$implicit;
1572
+ const entry_r67 = ctx.$implicit;
1590
1573
  i0.ɵɵadvance(2);
1591
- i0.ɵɵtextInterpolate(entry_r68.Time);
1574
+ i0.ɵɵtextInterpolate(entry_r67.Time);
1592
1575
  i0.ɵɵadvance(2);
1593
- i0.ɵɵtextInterpolate(entry_r68.Source);
1576
+ i0.ɵɵtextInterpolate(entry_r67.Source);
1594
1577
  i0.ɵɵadvance(2);
1595
- i0.ɵɵtextInterpolate(entry_r68.Message);
1578
+ i0.ɵɵtextInterpolate(entry_r67.Message);
1596
1579
  } }
1597
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_53_Template(rf, ctx) { if (rf & 1) {
1598
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
1599
- i0.ɵɵelement(2, "i", 208);
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);
1600
1583
  i0.ɵɵtext(3, " Recent Errors");
1601
1584
  i0.ɵɵelementEnd();
1602
- i0.ɵɵelementStart(4, "div", 209);
1603
- i0.ɵɵrepeaterCreate(5, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_53_For_6_Template, 7, 3, "div", 210, 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);
1604
1587
  i0.ɵɵelementEnd()();
1605
1588
  } if (rf & 2) {
1606
- const ctx_r2 = i0.ɵɵnextContext(3);
1589
+ const ctx_r1 = i0.ɵɵnextContext(3);
1607
1590
  i0.ɵɵadvance(5);
1608
- i0.ɵɵrepeater(ctx_r2.ErrorLog);
1591
+ i0.ɵɵrepeater(ctx_r1.ErrorLog);
1609
1592
  } }
1610
- function AnalyticsResourceComponent_Conditional_6_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1611
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
1612
- i0.ɵɵelement(2, "i", 182);
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);
1613
1596
  i0.ɵɵelementStart(3, "h1");
1614
1597
  i0.ɵɵtext(4, "Pipeline");
1615
1598
  i0.ɵɵelementEnd()();
1616
- i0.ɵɵelementStart(5, "div", 118)(6, "h3");
1617
- i0.ɵɵelement(7, "i", 138);
1599
+ i0.ɵɵelementStart(5, "div", 114)(6, "h3");
1600
+ i0.ɵɵelement(7, "i", 134);
1618
1601
  i0.ɵɵtext(8, " Pipeline Throughput (Last 30 Days)");
1619
1602
  i0.ɵɵelementEnd();
1620
- i0.ɵɵelementStart(9, "div", 164)(10, "div", 183);
1621
- i0.ɵɵrepeaterCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_18_For_12_Template, 1, 6, "div", 184, 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);
1622
1605
  i0.ɵɵelementEnd();
1623
- i0.ɵɵelementStart(13, "div", 185);
1624
- i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_18_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);
1625
1608
  i0.ɵɵelementEnd()()();
1626
- i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_16_Template, 12, 2, "div", 28);
1627
- i0.ɵɵelementStart(17, "div", 123)(18, "h3");
1628
- i0.ɵɵelement(19, "i", 186);
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);
1629
1612
  i0.ɵɵtext(20, " Processing Time Breakdown (Avg per Item)");
1630
1613
  i0.ɵɵelementEnd();
1631
- i0.ɵɵelementStart(21, "div", 164)(22, "div", 187);
1632
- i0.ɵɵrepeaterCreate(23, AnalyticsResourceComponent_Conditional_6_Conditional_18_For_24_Template, 8, 7, "div", 188, _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);
1633
1616
  i0.ɵɵelementEnd();
1634
- i0.ɵɵelementStart(25, "div", 189)(26, "span")(27, "strong");
1617
+ i0.ɵɵelementStart(25, "div", 185)(26, "span")(27, "strong");
1635
1618
  i0.ɵɵtext(28, "Total avg:");
1636
1619
  i0.ɵɵelementEnd();
1637
1620
  i0.ɵɵtext(29);
1638
1621
  i0.ɵɵelementEnd();
1639
- i0.ɵɵconditionalCreate(30, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_30_Template, 3, 2, "span", 190);
1622
+ i0.ɵɵconditionalCreate(30, AnalyticsResourceComponent_Conditional_6_Conditional_15_Conditional_30_Template, 3, 2, "span", 186);
1640
1623
  i0.ɵɵelementEnd()()();
1641
- i0.ɵɵelementStart(31, "div", 123)(32, "h3");
1642
- i0.ɵɵelement(33, "i", 32);
1624
+ i0.ɵɵelementStart(31, "div", 119)(32, "h3");
1625
+ i0.ɵɵelement(33, "i", 28);
1643
1626
  i0.ɵɵtext(34, " Success Rate Overview");
1644
1627
  i0.ɵɵelementEnd();
1645
- i0.ɵɵelementStart(35, "div", 164)(36, "div", 191)(37, "div", 192)(38, "div", 193);
1628
+ i0.ɵɵelementStart(35, "div", 160)(36, "div", 187)(37, "div", 188)(38, "div", 189);
1646
1629
  i0.ɵɵtext(39);
1647
1630
  i0.ɵɵelementEnd();
1648
- i0.ɵɵelementStart(40, "div", 194);
1631
+ i0.ɵɵelementStart(40, "div", 190);
1649
1632
  i0.ɵɵtext(41, "Success Rate");
1650
1633
  i0.ɵɵelementEnd()();
1651
- i0.ɵɵelementStart(42, "div", 192)(43, "div", 195);
1634
+ i0.ɵɵelementStart(42, "div", 188)(43, "div", 191);
1652
1635
  i0.ɵɵtext(44);
1653
1636
  i0.ɵɵelementEnd();
1654
- i0.ɵɵelementStart(45, "div", 194);
1637
+ i0.ɵɵelementStart(45, "div", 190);
1655
1638
  i0.ɵɵtext(46, "Failure Rate");
1656
1639
  i0.ɵɵelementEnd()();
1657
- i0.ɵɵelementStart(47, "div", 192)(48, "div", 196);
1640
+ i0.ɵɵelementStart(47, "div", 188)(48, "div", 192);
1658
1641
  i0.ɵɵtext(49);
1659
1642
  i0.ɵɵelementEnd();
1660
- i0.ɵɵelementStart(50, "div", 194);
1643
+ i0.ɵɵelementStart(50, "div", 190);
1661
1644
  i0.ɵɵtext(51, "Total Runs");
1662
1645
  i0.ɵɵelementEnd()()()()();
1663
- i0.ɵɵconditionalCreate(52, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_52_Template, 23, 0, "div", 123);
1664
- i0.ɵɵconditionalCreate(53, AnalyticsResourceComponent_Conditional_6_Conditional_18_Conditional_53_Template, 7, 0, "div", 123);
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);
1665
1648
  i0.ɵɵelementEnd();
1666
1649
  } if (rf & 2) {
1667
- const ctx_r2 = i0.ɵɵnextContext(2);
1650
+ const ctx_r1 = i0.ɵɵnextContext(2);
1668
1651
  i0.ɵɵadvance(11);
1669
- i0.ɵɵrepeater(ctx_r2.PipelineThroughputBars);
1652
+ i0.ɵɵrepeater(ctx_r1.PipelineThroughputBars);
1670
1653
  i0.ɵɵadvance(3);
1671
- i0.ɵɵrepeater(ctx_r2.PipelineDateLabels);
1654
+ i0.ɵɵrepeater(ctx_r1.PipelineDateLabels);
1672
1655
  i0.ɵɵadvance(2);
1673
- 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);
1674
1657
  i0.ɵɵadvance(7);
1675
- i0.ɵɵrepeater(ctx_r2.ProcessingStages);
1658
+ i0.ɵɵrepeater(ctx_r1.ProcessingStages);
1676
1659
  i0.ɵɵadvance(6);
1677
- i0.ɵɵtextInterpolate1(" ", ctx_r2.TotalAvgProcessingTime, "s per item");
1660
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.TotalAvgProcessingTime, "s per item");
1678
1661
  i0.ɵɵadvance();
1679
- i0.ɵɵconditional(ctx_r2.BottleneckStage ? 30 : -1);
1662
+ i0.ɵɵconditional(ctx_r1.BottleneckStage ? 30 : -1);
1680
1663
  i0.ɵɵadvance(9);
1681
- 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", "% ");
1682
1665
  i0.ɵɵadvance(5);
1683
- 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", "% ");
1684
1667
  i0.ɵɵadvance(5);
1685
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatNumber(ctx_r2.rawProcessRuns.length), " ");
1668
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatNumber(ctx_r1.rawProcessRuns.length), " ");
1686
1669
  i0.ɵɵadvance(3);
1687
- i0.ɵɵconditional(ctx_r2.ActiveRuns.length > 0 ? 52 : -1);
1670
+ i0.ɵɵconditional(ctx_r1.ActiveRuns.length > 0 ? 52 : -1);
1688
1671
  i0.ɵɵadvance();
1689
- i0.ɵɵconditional(ctx_r2.ErrorLog.length > 0 ? 53 : -1);
1672
+ i0.ɵɵconditional(ctx_r1.ErrorLog.length > 0 ? 53 : -1);
1690
1673
  } }
1691
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_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) {
1692
1675
  i0.ɵɵtext(0);
1693
1676
  } if (rf & 2) {
1694
- const bin_r70 = i0.ɵɵnextContext().$implicit;
1695
- i0.ɵɵtextInterpolate1(" ", bin_r70.Count, " ");
1677
+ const bin_r69 = i0.ɵɵnextContext().$implicit;
1678
+ i0.ɵɵtextInterpolate1(" ", bin_r69.Count, " ");
1696
1679
  } }
1697
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_For_12_Template(rf, ctx) { if (rf & 1) {
1698
- const _r69 = i0.ɵɵgetCurrentView();
1699
- i0.ɵɵelementStart(0, "div", 223);
1700
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_19_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)); });
1701
- i0.ɵɵelementStart(1, "div", 224);
1702
- i0.ɵɵconditionalCreate(2, AnalyticsResourceComponent_Conditional_6_Conditional_19_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);
1703
1686
  i0.ɵɵelementEnd();
1704
- i0.ɵɵelementStart(3, "div", 225);
1687
+ i0.ɵɵelementStart(3, "div", 221);
1705
1688
  i0.ɵɵtext(4);
1706
1689
  i0.ɵɵelementEnd()();
1707
1690
  } if (rf & 2) {
1708
- const bin_r70 = ctx.$implicit;
1691
+ const bin_r69 = ctx.$implicit;
1709
1692
  i0.ɵɵadvance();
1710
- i0.ɵɵstyleProp("height", bin_r70.Percentage, "%")("background", bin_r70.Color);
1693
+ i0.ɵɵstyleProp("height", bin_r69.Percentage, "%")("background", bin_r69.Color);
1711
1694
  i0.ɵɵadvance();
1712
- i0.ɵɵconditional(bin_r70.Count > 0 ? 2 : -1);
1695
+ i0.ɵɵconditional(bin_r69.Count > 0 ? 2 : -1);
1713
1696
  i0.ɵɵadvance(2);
1714
- i0.ɵɵtextInterpolate(bin_r70.Label);
1697
+ i0.ɵɵtextInterpolate(bin_r69.Label);
1715
1698
  } }
1716
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_For_15_Template(rf, ctx) { if (rf & 1) {
1699
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_For_15_Template(rf, ctx) { if (rf & 1) {
1717
1700
  i0.ɵɵelementStart(0, "span")(1, "strong");
1718
1701
  i0.ɵɵtext(2);
1719
1702
  i0.ɵɵelementEnd();
1720
1703
  i0.ɵɵtext(3);
1721
1704
  i0.ɵɵelementEnd();
1722
1705
  } if (rf & 2) {
1723
- const stat_r71 = ctx.$implicit;
1706
+ const stat_r70 = ctx.$implicit;
1724
1707
  i0.ɵɵadvance(2);
1725
- i0.ɵɵtextInterpolate1("", stat_r71.Label, ":");
1708
+ i0.ɵɵtextInterpolate1("", stat_r70.Label, ":");
1726
1709
  i0.ɵɵadvance();
1727
- i0.ɵɵtextInterpolate1(" ", stat_r71.Value);
1710
+ i0.ɵɵtextInterpolate1(" ", stat_r70.Value);
1728
1711
  } }
1729
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1730
- const _r73 = i0.ɵɵgetCurrentView();
1731
- i0.ɵɵelementStart(0, "button", 94);
1732
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r73); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ExportDrillDownCSV()); });
1733
- i0.ɵɵelement(1, "i", 95);
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);
1734
1717
  i0.ɵɵtext(2, " CSV");
1735
1718
  i0.ɵɵelementEnd();
1736
1719
  } }
1737
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1738
- i0.ɵɵelement(0, "mj-loading", 91);
1720
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1721
+ i0.ɵɵelement(0, "mj-loading", 87);
1739
1722
  } }
1740
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_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) {
1741
1724
  i0.ɵɵelementStart(0, "th");
1742
1725
  i0.ɵɵtext(1);
1743
1726
  i0.ɵɵelementEnd();
1744
1727
  } if (rf & 2) {
1745
- const col_r74 = ctx.$implicit;
1728
+ const col_r73 = ctx.$implicit;
1746
1729
  i0.ɵɵadvance();
1747
- i0.ɵɵtextInterpolate(col_r74);
1730
+ i0.ɵɵtextInterpolate(col_r73);
1748
1731
  } }
1749
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1750
- i0.ɵɵelement(0, "th", 97);
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);
1751
1734
  } }
1752
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_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) {
1753
1736
  i0.ɵɵelementStart(0, "td");
1754
1737
  i0.ɵɵtext(1);
1755
1738
  i0.ɵɵelementEnd();
1756
1739
  } if (rf & 2) {
1757
- const col_r75 = ctx.$implicit;
1758
- const row_r76 = i0.ɵɵnextContext().$implicit;
1740
+ const col_r74 = ctx.$implicit;
1741
+ const row_r75 = i0.ɵɵnextContext().$implicit;
1759
1742
  i0.ɵɵadvance();
1760
- i0.ɵɵtextInterpolate(row_r76[col_r75]);
1743
+ i0.ɵɵtextInterpolate(row_r75[col_r74]);
1761
1744
  } }
1762
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1763
- const _r77 = i0.ɵɵgetCurrentView();
1764
- i0.ɵɵelementStart(0, "button", 137);
1765
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_19_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)); });
1766
- i0.ɵɵelement(1, "i", 100);
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);
1767
1750
  i0.ɵɵelementEnd();
1768
1751
  } }
1769
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1770
- i0.ɵɵelementStart(0, "td", 97);
1771
- i0.ɵɵconditionalCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_For_9_Conditional_3_Conditional_1_Template, 2, 0, "button", 136);
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);
1772
1755
  i0.ɵɵelementEnd();
1773
1756
  } if (rf & 2) {
1774
- const row_r76 = i0.ɵɵnextContext().$implicit;
1757
+ const row_r75 = i0.ɵɵnextContext().$implicit;
1775
1758
  i0.ɵɵadvance();
1776
- i0.ɵɵconditional(row_r76["_RecordID"] ? 1 : -1);
1759
+ i0.ɵɵconditional(row_r75["_RecordID"] ? 1 : -1);
1777
1760
  } }
1778
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_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) {
1779
1762
  i0.ɵɵelementStart(0, "tr");
1780
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_For_9_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
1781
- i0.ɵɵconditionalCreate(3, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_For_9_Conditional_3_Template, 2, 1, "td", 97);
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);
1782
1765
  i0.ɵɵelementEnd();
1783
1766
  } if (rf & 2) {
1784
- const ctx_r2 = i0.ɵɵnextContext(5);
1767
+ const ctx_r1 = i0.ɵɵnextContext(5);
1785
1768
  i0.ɵɵadvance();
1786
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1769
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1787
1770
  i0.ɵɵadvance(2);
1788
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 3 : -1);
1771
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 3 : -1);
1789
1772
  } }
1790
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1791
- i0.ɵɵelementStart(0, "div", 92)(1, "table", 96)(2, "thead")(3, "tr");
1792
- i0.ɵɵrepeaterCreate(4, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
1793
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_Conditional_6_Template, 1, 0, "th", 97);
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);
1794
1777
  i0.ɵɵelementEnd()();
1795
1778
  i0.ɵɵelementStart(7, "tbody");
1796
- i0.ɵɵrepeaterCreate(8, AnalyticsResourceComponent_Conditional_6_Conditional_19_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);
1797
1780
  i0.ɵɵelementEnd()()();
1798
1781
  } if (rf & 2) {
1799
- const ctx_r2 = i0.ɵɵnextContext(4);
1782
+ const ctx_r1 = i0.ɵɵnextContext(4);
1800
1783
  i0.ɵɵadvance(4);
1801
- i0.ɵɵrepeater(ctx_r2.DrillDownColumns);
1784
+ i0.ɵɵrepeater(ctx_r1.DrillDownColumns);
1802
1785
  i0.ɵɵadvance(2);
1803
- i0.ɵɵconditional(ctx_r2.DrillDownHasActions ? 6 : -1);
1786
+ i0.ɵɵconditional(ctx_r1.DrillDownHasActions ? 6 : -1);
1804
1787
  i0.ɵɵadvance(2);
1805
- i0.ɵɵrepeater(ctx_r2.DrillDownData);
1788
+ i0.ɵɵrepeater(ctx_r1.DrillDownData);
1806
1789
  } }
1807
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1808
- i0.ɵɵelementStart(0, "div", 93);
1790
+ function AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_16_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1791
+ i0.ɵɵelementStart(0, "div", 89);
1809
1792
  i0.ɵɵtext(1, "No items in this confidence range");
1810
1793
  i0.ɵɵelementEnd();
1811
1794
  } }
1812
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1813
- const _r72 = i0.ɵɵgetCurrentView();
1814
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 84)(2, "span", 85);
1815
- i0.ɵɵelement(3, "i", 86);
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);
1816
1799
  i0.ɵɵtext(4);
1817
1800
  i0.ɵɵelementEnd();
1818
- i0.ɵɵelementStart(5, "div", 87);
1819
- i0.ɵɵconditionalCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_6_Template, 3, 0, "button", 88);
1820
- i0.ɵɵelementStart(7, "button", 89);
1821
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r72); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.CloseDrillDown()); });
1822
- i0.ɵɵelement(8, "i", 90);
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);
1823
1806
  i0.ɵɵelementEnd()()();
1824
- i0.ɵɵconditionalCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_9_Template, 1, 0, "mj-loading", 91)(10, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_10_Template, 10, 1, "div", 92)(11, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Conditional_11_Template, 2, 0, "div", 93);
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);
1825
1808
  i0.ɵɵelementEnd();
1826
1809
  } if (rf & 2) {
1827
- const ctx_r2 = i0.ɵɵnextContext(3);
1810
+ const ctx_r1 = i0.ɵɵnextContext(3);
1828
1811
  i0.ɵɵadvance(4);
1829
- 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:", ""));
1830
1813
  i0.ɵɵadvance(2);
1831
- i0.ɵɵconditional(ctx_r2.DrillDownData.length > 0 ? 6 : -1);
1814
+ i0.ɵɵconditional(ctx_r1.DrillDownData.length > 0 ? 6 : -1);
1832
1815
  i0.ɵɵadvance(3);
1833
- 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);
1834
1817
  } }
1835
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_17_For_7_Template(rf, ctx) { if (rf & 1) {
1836
- i0.ɵɵelementStart(0, "div", 228)(1, "div", 230);
1837
- i0.ɵɵelement(2, "div", 231)(3, "div", 232)(4, "div", 233);
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);
1838
1821
  i0.ɵɵelementEnd();
1839
- i0.ɵɵelementStart(5, "div", 234);
1822
+ i0.ɵɵelementStart(5, "div", 230);
1840
1823
  i0.ɵɵtext(6);
1841
1824
  i0.ɵɵelementEnd()();
1842
1825
  } if (rf & 2) {
1843
- const entity_r78 = ctx.$implicit;
1826
+ const entity_r77 = ctx.$implicit;
1844
1827
  i0.ɵɵadvance(2);
1845
- i0.ɵɵstyleProp("height", entity_r78.High, "%");
1846
- i0.ɵɵproperty("title", "High: " + entity_r78.High + "%");
1828
+ i0.ɵɵstyleProp("height", entity_r77.High, "%");
1829
+ i0.ɵɵproperty("title", "High: " + entity_r77.High + "%");
1847
1830
  i0.ɵɵadvance();
1848
- i0.ɵɵstyleProp("height", entity_r78.Med, "%");
1849
- i0.ɵɵproperty("title", "Med: " + entity_r78.Med + "%");
1831
+ i0.ɵɵstyleProp("height", entity_r77.Med, "%");
1832
+ i0.ɵɵproperty("title", "Med: " + entity_r77.Med + "%");
1850
1833
  i0.ɵɵadvance();
1851
- i0.ɵɵstyleProp("height", entity_r78.Low, "%");
1852
- i0.ɵɵproperty("title", "Low: " + entity_r78.Low + "%");
1834
+ i0.ɵɵstyleProp("height", entity_r77.Low, "%");
1835
+ i0.ɵɵproperty("title", "Low: " + entity_r77.Low + "%");
1853
1836
  i0.ɵɵadvance(2);
1854
- i0.ɵɵtextInterpolate(entity_r78.Name);
1837
+ i0.ɵɵtextInterpolate(entity_r77.Name);
1855
1838
  } }
1856
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_17_For_10_Template(rf, ctx) { if (rf & 1) {
1857
- i0.ɵɵelementStart(0, "div", 62);
1858
- i0.ɵɵelement(1, "div", 146);
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);
1859
1842
  i0.ɵɵtext(2);
1860
1843
  i0.ɵɵelementEnd();
1861
1844
  } if (rf & 2) {
1862
- const item_r79 = ctx.$implicit;
1845
+ const item_r78 = ctx.$implicit;
1863
1846
  i0.ɵɵadvance();
1864
- i0.ɵɵstyleProp("background", item_r79.Color);
1847
+ i0.ɵɵstyleProp("background", item_r78.Color);
1865
1848
  i0.ɵɵadvance();
1866
- i0.ɵɵtextInterpolate1(" ", item_r79.Label);
1849
+ i0.ɵɵtextInterpolate1(" ", item_r78.Label);
1867
1850
  } }
1868
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1869
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
1870
- i0.ɵɵelement(2, "i", 226);
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);
1871
1854
  i0.ɵɵtext(3, " Weight Distribution by Entity");
1872
1855
  i0.ɵɵelementEnd();
1873
- i0.ɵɵelementStart(4, "div", 164)(5, "div", 227);
1874
- i0.ɵɵrepeaterCreate(6, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_17_For_7_Template, 7, 10, "div", 228, _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);
1875
1858
  i0.ɵɵelementEnd();
1876
- i0.ɵɵelementStart(8, "div", 229);
1877
- i0.ɵɵrepeaterCreate(9, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_17_For_10_Template, 3, 3, "div", 62, _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);
1878
1861
  i0.ɵɵelementEnd()()();
1879
1862
  } if (rf & 2) {
1880
- const ctx_r2 = i0.ɵɵnextContext(3);
1863
+ const ctx_r1 = i0.ɵɵnextContext(3);
1881
1864
  i0.ɵɵadvance(6);
1882
- i0.ɵɵrepeater(ctx_r2.WeightByEntity);
1865
+ i0.ɵɵrepeater(ctx_r1.WeightByEntity);
1883
1866
  i0.ɵɵadvance(3);
1884
- i0.ɵɵrepeater(ctx_r2.WeightLegend);
1867
+ i0.ɵɵrepeater(ctx_r1.WeightLegend);
1885
1868
  } }
1886
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_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) {
1887
1870
  i0.ɵɵnamespaceSVG();
1888
- i0.ɵɵelement(0, "circle", 242);
1871
+ i0.ɵɵelement(0, "circle", 238);
1889
1872
  } if (rf & 2) {
1890
- const dot_r80 = ctx.$implicit;
1891
- 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);
1892
1875
  } }
1893
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_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) {
1894
1877
  i0.ɵɵelementStart(0, "span");
1895
1878
  i0.ɵɵtext(1);
1896
1879
  i0.ɵɵelementEnd();
1897
1880
  } if (rf & 2) {
1898
- const label_r81 = ctx.$implicit;
1881
+ const label_r80 = ctx.$implicit;
1899
1882
  i0.ɵɵadvance();
1900
- i0.ɵɵtextInterpolate(label_r81);
1883
+ i0.ɵɵtextInterpolate(label_r80);
1901
1884
  } }
1902
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1903
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
1904
- i0.ɵɵelement(2, "i", 32);
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);
1905
1888
  i0.ɵɵtext(3, " Tag Accuracy Over Time (Weekly Avg Confidence)");
1906
1889
  i0.ɵɵelementEnd();
1907
- i0.ɵɵelementStart(4, "div", 164)(5, "div", 235)(6, "div", 236)(7, "div");
1890
+ i0.ɵɵelementStart(4, "div", 160)(5, "div", 231)(6, "div", 232)(7, "div");
1908
1891
  i0.ɵɵtext(8, "1.0");
1909
1892
  i0.ɵɵelementEnd();
1910
1893
  i0.ɵɵelementStart(9, "div");
@@ -1916,75 +1899,75 @@ function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_18_
1916
1899
  i0.ɵɵelementStart(13, "div");
1917
1900
  i0.ɵɵtext(14, "0.25");
1918
1901
  i0.ɵɵelementEnd()();
1919
- i0.ɵɵelementStart(15, "div", 237);
1920
- i0.ɵɵelement(16, "div", 238)(17, "div", 239);
1902
+ i0.ɵɵelementStart(15, "div", 233);
1903
+ i0.ɵɵelement(16, "div", 234)(17, "div", 235);
1921
1904
  i0.ɵɵnamespaceSVG();
1922
- i0.ɵɵelementStart(18, "svg", 240);
1923
- i0.ɵɵelement(19, "polyline", 241);
1924
- i0.ɵɵrepeaterCreate(20, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_18_For_21_Template, 1, 2, ":svg:circle", 242, 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);
1925
1908
  i0.ɵɵelementEnd()()();
1926
1909
  i0.ɵɵnamespaceHTML();
1927
- i0.ɵɵelementStart(22, "div", 243);
1928
- i0.ɵɵrepeaterCreate(23, AnalyticsResourceComponent_Conditional_6_Conditional_19_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);
1929
1912
  i0.ɵɵelementEnd();
1930
- i0.ɵɵelementStart(25, "div", 244);
1931
- i0.ɵɵelement(26, "i", 245);
1913
+ i0.ɵɵelementStart(25, "div", 240);
1914
+ i0.ɵɵelement(26, "i", 241);
1932
1915
  i0.ɵɵtext(27);
1933
1916
  i0.ɵɵelementEnd()()();
1934
1917
  } if (rf & 2) {
1935
- const ctx_r2 = i0.ɵɵnextContext(3);
1918
+ const ctx_r1 = i0.ɵɵnextContext(3);
1936
1919
  i0.ɵɵadvance(19);
1937
- i0.ɵɵattribute("points", ctx_r2.AccuracyLinePoints);
1920
+ i0.ɵɵattribute("points", ctx_r1.AccuracyLinePoints);
1938
1921
  i0.ɵɵadvance();
1939
- i0.ɵɵrepeater(ctx_r2.AccuracyDots);
1922
+ i0.ɵɵrepeater(ctx_r1.AccuracyDots);
1940
1923
  i0.ɵɵadvance(3);
1941
- i0.ɵɵrepeater(ctx_r2.AccuracyMonthLabels);
1924
+ i0.ɵɵrepeater(ctx_r1.AccuracyMonthLabels);
1942
1925
  i0.ɵɵadvance(4);
1943
- i0.ɵɵtextInterpolate1(" ", ctx_r2.AccuracyTrendText, " ");
1926
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.AccuracyTrendText, " ");
1944
1927
  } }
1945
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_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) {
1946
1929
  i0.ɵɵelementStart(0, "tr")(1, "td")(2, "strong");
1947
1930
  i0.ɵɵtext(3);
1948
1931
  i0.ɵɵelementEnd()();
1949
- i0.ɵɵelementStart(4, "td", 129);
1932
+ i0.ɵɵelementStart(4, "td", 125);
1950
1933
  i0.ɵɵtext(5);
1951
1934
  i0.ɵɵelementEnd();
1952
- i0.ɵɵelementStart(6, "td", 129);
1935
+ i0.ɵɵelementStart(6, "td", 125);
1953
1936
  i0.ɵɵtext(7);
1954
1937
  i0.ɵɵelementEnd();
1955
1938
  i0.ɵɵelementStart(8, "td");
1956
1939
  i0.ɵɵtext(9);
1957
1940
  i0.ɵɵelementEnd();
1958
- i0.ɵɵelementStart(10, "td")(11, "span", 160);
1941
+ i0.ɵɵelementStart(10, "td")(11, "span", 156);
1959
1942
  i0.ɵɵtext(12);
1960
1943
  i0.ɵɵelementEnd()()();
1961
1944
  } if (rf & 2) {
1962
- const tag_r82 = ctx.$implicit;
1945
+ const tag_r81 = ctx.$implicit;
1963
1946
  i0.ɵɵadvance(3);
1964
- i0.ɵɵtextInterpolate(tag_r82.Name);
1947
+ i0.ɵɵtextInterpolate(tag_r81.Name);
1965
1948
  i0.ɵɵadvance(2);
1966
- i0.ɵɵtextInterpolate(tag_r82.AvgWeight);
1949
+ i0.ɵɵtextInterpolate(tag_r81.AvgWeight);
1967
1950
  i0.ɵɵadvance(2);
1968
- i0.ɵɵtextInterpolate(tag_r82.UsageCount);
1951
+ i0.ɵɵtextInterpolate(tag_r81.UsageCount);
1969
1952
  i0.ɵɵadvance(2);
1970
- i0.ɵɵtextInterpolate(tag_r82.TopEntity);
1953
+ i0.ɵɵtextInterpolate(tag_r81.TopEntity);
1971
1954
  i0.ɵɵadvance(2);
1972
- i0.ɵɵclassMap(tag_r82.ActionClass);
1955
+ i0.ɵɵclassMap(tag_r81.ActionClass);
1973
1956
  i0.ɵɵadvance();
1974
- i0.ɵɵtextInterpolate(tag_r82.SuggestedAction);
1957
+ i0.ɵɵtextInterpolate(tag_r81.SuggestedAction);
1975
1958
  } }
1976
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1977
- i0.ɵɵelementStart(0, "div", 123)(1, "h3");
1978
- i0.ɵɵelement(2, "i", 246);
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);
1979
1962
  i0.ɵɵtext(3, " Low-Confidence Tags (Avg Weight < 0.4)");
1980
1963
  i0.ɵɵelementEnd();
1981
- i0.ɵɵelementStart(4, "div", 121)(5, "table", 96)(6, "thead")(7, "tr")(8, "th");
1964
+ i0.ɵɵelementStart(4, "div", 117)(5, "table", 92)(6, "thead")(7, "tr")(8, "th");
1982
1965
  i0.ɵɵtext(9, "Tag Name");
1983
1966
  i0.ɵɵelementEnd();
1984
- i0.ɵɵelementStart(10, "th", 129);
1967
+ i0.ɵɵelementStart(10, "th", 125);
1985
1968
  i0.ɵɵtext(11, "Avg Weight");
1986
1969
  i0.ɵɵelementEnd();
1987
- i0.ɵɵelementStart(12, "th", 129);
1970
+ i0.ɵɵelementStart(12, "th", 125);
1988
1971
  i0.ɵɵtext(13, "Usage Count");
1989
1972
  i0.ɵɵelementEnd();
1990
1973
  i0.ɵɵelementStart(14, "th");
@@ -1994,306 +1977,305 @@ function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_19_
1994
1977
  i0.ɵɵtext(17, "Suggested Action");
1995
1978
  i0.ɵɵelementEnd()()();
1996
1979
  i0.ɵɵelementStart(18, "tbody");
1997
- i0.ɵɵrepeaterCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_19_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);
1998
1981
  i0.ɵɵelementEnd()()()();
1999
1982
  } if (rf & 2) {
2000
- const ctx_r2 = i0.ɵɵnextContext(3);
1983
+ const ctx_r1 = i0.ɵɵnextContext(3);
2001
1984
  i0.ɵɵadvance(19);
2002
- i0.ɵɵrepeater(ctx_r2.LowConfidenceTags);
1985
+ i0.ɵɵrepeater(ctx_r1.LowConfidenceTags);
2003
1986
  } }
2004
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_For_26_Template(rf, ctx) { if (rf & 1) {
2005
- i0.ɵɵelementStart(0, "div", 221)(1, "div", 247);
2006
- i0.ɵɵelement(2, "i", 159);
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);
2007
1990
  i0.ɵɵtext(3);
2008
1991
  i0.ɵɵelementEnd();
2009
1992
  i0.ɵɵnamespaceSVG();
2010
- i0.ɵɵelementStart(4, "svg", 248);
2011
- i0.ɵɵelement(5, "circle", 249)(6, "circle", 250);
1993
+ i0.ɵɵelementStart(4, "svg", 244);
1994
+ i0.ɵɵelement(5, "circle", 245)(6, "circle", 246);
2012
1995
  i0.ɵɵelementEnd();
2013
1996
  i0.ɵɵnamespaceHTML();
2014
- i0.ɵɵelementStart(7, "div", 251);
1997
+ i0.ɵɵelementStart(7, "div", 247);
2015
1998
  i0.ɵɵtext(8);
2016
1999
  i0.ɵɵelementEnd();
2017
- i0.ɵɵelementStart(9, "div", 252);
2000
+ i0.ɵɵelementStart(9, "div", 248);
2018
2001
  i0.ɵɵtext(10);
2019
2002
  i0.ɵɵelementEnd();
2020
- i0.ɵɵelementStart(11, "div", 252);
2003
+ i0.ɵɵelementStart(11, "div", 248);
2021
2004
  i0.ɵɵtext(12);
2022
2005
  i0.ɵɵelementEnd();
2023
- i0.ɵɵelementStart(13, "div", 253);
2006
+ i0.ɵɵelementStart(13, "div", 249);
2024
2007
  i0.ɵɵtext(14);
2025
2008
  i0.ɵɵelementEnd()();
2026
2009
  } if (rf & 2) {
2027
- const model_r83 = ctx.$implicit;
2028
- const ctx_r2 = i0.ɵɵnextContext(3);
2010
+ const model_r82 = ctx.$implicit;
2011
+ const ctx_r1 = i0.ɵɵnextContext(3);
2029
2012
  i0.ɵɵadvance(2);
2030
- i0.ɵɵclassMap(model_r83.Icon);
2031
- i0.ɵɵstyleProp("color", model_r83.IconColor);
2013
+ i0.ɵɵclassMap(model_r82.Icon);
2014
+ i0.ɵɵstyleProp("color", model_r82.IconColor);
2032
2015
  i0.ɵɵadvance();
2033
- i0.ɵɵtextInterpolate1(" ", model_r83.Name);
2016
+ i0.ɵɵtextInterpolate1(" ", model_r82.Name);
2034
2017
  i0.ɵɵadvance(3);
2035
- i0.ɵɵattribute("stroke", model_r83.ScoreColor)("stroke-dasharray", model_r83.StrokeDash);
2018
+ i0.ɵɵattribute("stroke", model_r82.ScoreColor)("stroke-dasharray", model_r82.StrokeDash);
2036
2019
  i0.ɵɵadvance();
2037
- i0.ɵɵstyleProp("color", model_r83.ScoreColor);
2020
+ i0.ɵɵstyleProp("color", model_r82.ScoreColor);
2038
2021
  i0.ɵɵadvance();
2039
- i0.ɵɵtextInterpolate1("", model_r83.ScorePercentage, "%");
2022
+ i0.ɵɵtextInterpolate1("", model_r82.ScorePercentage, "%");
2040
2023
  i0.ɵɵadvance(2);
2041
- i0.ɵɵtextInterpolate1("Avg confidence: ", model_r83.AvgConfidence);
2024
+ i0.ɵɵtextInterpolate1("Avg confidence: ", model_r82.AvgConfidence);
2042
2025
  i0.ɵɵadvance(2);
2043
- i0.ɵɵtextInterpolate1("", ctx_r2.FormatNumber(model_r83.TagsGenerated), " tags generated");
2026
+ i0.ɵɵtextInterpolate1("", ctx_r1.FormatNumber(model_r82.TagsGenerated), " tags generated");
2044
2027
  i0.ɵɵadvance();
2045
- i0.ɵɵstyleProp("color", model_r83.RoleColor);
2028
+ i0.ɵɵstyleProp("color", model_r82.RoleColor);
2046
2029
  i0.ɵɵadvance();
2047
- i0.ɵɵtextInterpolate(model_r83.Role);
2030
+ i0.ɵɵtextInterpolate(model_r82.Role);
2048
2031
  } }
2049
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_27_Template(rf, ctx) { if (rf & 1) {
2050
- i0.ɵɵelementStart(0, "div", 222);
2051
- i0.ɵɵelement(1, "i", 254);
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);
2052
2035
  i0.ɵɵelementStart(2, "div")(3, "strong");
2053
2036
  i0.ɵɵtext(4, "Recommendation:");
2054
2037
  i0.ɵɵelementEnd();
2055
2038
  i0.ɵɵtext(5);
2056
2039
  i0.ɵɵelementEnd()();
2057
2040
  } if (rf & 2) {
2058
- const ctx_r2 = i0.ɵɵnextContext(3);
2041
+ const ctx_r1 = i0.ɵɵnextContext(3);
2059
2042
  i0.ɵɵadvance(5);
2060
- i0.ɵɵtextInterpolate1(" ", ctx_r2.ModelRecommendation, " ");
2043
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.ModelRecommendation, " ");
2061
2044
  } }
2062
- function AnalyticsResourceComponent_Conditional_6_Conditional_19_Template(rf, ctx) { if (rf & 1) {
2063
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
2064
- i0.ɵɵelement(2, "i", 214);
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);
2065
2048
  i0.ɵɵelementStart(3, "h1");
2066
2049
  i0.ɵɵtext(4, "Quality");
2067
2050
  i0.ɵɵelementEnd()();
2068
- i0.ɵɵelementStart(5, "div", 118)(6, "h3");
2069
- i0.ɵɵelement(7, "i", 215);
2051
+ i0.ɵɵelementStart(5, "div", 114)(6, "h3");
2052
+ i0.ɵɵelement(7, "i", 211);
2070
2053
  i0.ɵɵtext(8, " Confidence Distribution");
2071
2054
  i0.ɵɵelementEnd();
2072
- i0.ɵɵelementStart(9, "div", 164)(10, "div", 216);
2073
- i0.ɵɵrepeaterCreate(11, AnalyticsResourceComponent_Conditional_6_Conditional_19_For_12_Template, 5, 6, "div", 217, _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);
2074
2057
  i0.ɵɵelementEnd();
2075
- i0.ɵɵelementStart(13, "div", 218);
2076
- i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_19_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);
2077
2060
  i0.ɵɵelementEnd()()();
2078
- i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_16_Template, 12, 3, "div", 28);
2079
- i0.ɵɵconditionalCreate(17, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_17_Template, 11, 0, "div", 123);
2080
- i0.ɵɵconditionalCreate(18, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_18_Template, 28, 2, "div", 123);
2081
- i0.ɵɵconditionalCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_19_Template, 21, 0, "div", 123);
2082
- i0.ɵɵelementStart(20, "div", 123)(21, "h3");
2083
- i0.ɵɵelement(22, "i", 219);
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);
2084
2067
  i0.ɵɵtext(23, " Model Performance Comparison");
2085
2068
  i0.ɵɵelementEnd();
2086
- i0.ɵɵelementStart(24, "div", 220);
2087
- i0.ɵɵrepeaterCreate(25, AnalyticsResourceComponent_Conditional_6_Conditional_19_For_26_Template, 15, 15, "div", 221, _forTrack1);
2069
+ i0.ɵɵelementStart(24, "div", 216);
2070
+ i0.ɵɵrepeaterCreate(25, AnalyticsResourceComponent_Conditional_6_Conditional_16_For_26_Template, 15, 15, "div", 217, _forTrack0);
2088
2071
  i0.ɵɵelementEnd();
2089
- i0.ɵɵconditionalCreate(27, AnalyticsResourceComponent_Conditional_6_Conditional_19_Conditional_27_Template, 6, 1, "div", 222);
2072
+ i0.ɵɵconditionalCreate(27, AnalyticsResourceComponent_Conditional_6_Conditional_16_Conditional_27_Template, 6, 1, "div", 218);
2090
2073
  i0.ɵɵelementEnd()();
2091
2074
  } if (rf & 2) {
2092
- const ctx_r2 = i0.ɵɵnextContext(2);
2075
+ const ctx_r1 = i0.ɵɵnextContext(2);
2093
2076
  i0.ɵɵadvance(11);
2094
- i0.ɵɵrepeater(ctx_r2.ConfidenceHistogram);
2077
+ i0.ɵɵrepeater(ctx_r1.ConfidenceHistogram);
2095
2078
  i0.ɵɵadvance(3);
2096
- i0.ɵɵrepeater(ctx_r2.ConfidenceStats);
2079
+ i0.ɵɵrepeater(ctx_r1.ConfidenceStats);
2097
2080
  i0.ɵɵadvance(2);
2098
- 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);
2099
2082
  i0.ɵɵadvance();
2100
- i0.ɵɵconditional(ctx_r2.WeightByEntity.length > 0 ? 17 : -1);
2083
+ i0.ɵɵconditional(ctx_r1.WeightByEntity.length > 0 ? 17 : -1);
2101
2084
  i0.ɵɵadvance();
2102
- i0.ɵɵconditional(ctx_r2.AccuracyLinePoints ? 18 : -1);
2085
+ i0.ɵɵconditional(ctx_r1.AccuracyLinePoints ? 18 : -1);
2103
2086
  i0.ɵɵadvance();
2104
- i0.ɵɵconditional(ctx_r2.LowConfidenceTags.length > 0 ? 19 : -1);
2087
+ i0.ɵɵconditional(ctx_r1.LowConfidenceTags.length > 0 ? 19 : -1);
2105
2088
  i0.ɵɵadvance(6);
2106
- i0.ɵɵrepeater(ctx_r2.ModelComparisons);
2089
+ i0.ɵɵrepeater(ctx_r1.ModelComparisons);
2107
2090
  i0.ɵɵadvance(2);
2108
- i0.ɵɵconditional(ctx_r2.ModelRecommendation ? 27 : -1);
2091
+ i0.ɵɵconditional(ctx_r1.ModelRecommendation ? 27 : -1);
2109
2092
  } }
2110
- function AnalyticsResourceComponent_Conditional_6_Conditional_20_For_15_Template(rf, ctx) { if (rf & 1) {
2111
- const _r85 = i0.ɵɵgetCurrentView();
2112
- i0.ɵɵelementStart(0, "button", 74);
2113
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_20_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)); });
2114
2097
  i0.ɵɵtext(1);
2115
2098
  i0.ɵɵelementEnd();
2116
2099
  } if (rf & 2) {
2117
- const range_r86 = ctx.$implicit;
2118
- const ctx_r2 = i0.ɵɵnextContext(3);
2119
- 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);
2120
2103
  i0.ɵɵadvance();
2121
- i0.ɵɵtextInterpolate(range_r86.Label);
2104
+ i0.ɵɵtextInterpolate(range_r85.Label);
2122
2105
  } }
2123
- function AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
2124
- i0.ɵɵelementStart(0, "div", 260)(1, "div", 261);
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);
2125
2108
  i0.ɵɵelement(2, "i");
2126
2109
  i0.ɵɵelementEnd();
2127
- i0.ɵɵelementStart(3, "div")(4, "div", 262);
2110
+ i0.ɵɵelementStart(3, "div")(4, "div", 258);
2128
2111
  i0.ɵɵtext(5);
2129
2112
  i0.ɵɵelementEnd();
2130
- i0.ɵɵelementStart(6, "div", 263);
2113
+ i0.ɵɵelementStart(6, "div", 259);
2131
2114
  i0.ɵɵtext(7);
2132
2115
  i0.ɵɵelementEnd();
2133
- i0.ɵɵelementStart(8, "div", 264);
2116
+ i0.ɵɵelementStart(8, "div", 260);
2134
2117
  i0.ɵɵtext(9);
2135
2118
  i0.ɵɵelementEnd()()();
2136
2119
  } if (rf & 2) {
2137
- const kpi_r87 = ctx.$implicit;
2120
+ const kpi_r86 = ctx.$implicit;
2138
2121
  i0.ɵɵadvance(2);
2139
- i0.ɵɵclassMap(kpi_r87.Icon);
2122
+ i0.ɵɵclassMap(kpi_r86.Icon);
2140
2123
  i0.ɵɵadvance(3);
2141
- i0.ɵɵtextInterpolate(kpi_r87.Value);
2124
+ i0.ɵɵtextInterpolate(kpi_r86.Value);
2142
2125
  i0.ɵɵadvance(2);
2143
- i0.ɵɵtextInterpolate(kpi_r87.Label);
2126
+ i0.ɵɵtextInterpolate(kpi_r86.Label);
2144
2127
  i0.ɵɵadvance(2);
2145
- i0.ɵɵtextInterpolate(kpi_r87.SubLabel);
2128
+ i0.ɵɵtextInterpolate(kpi_r86.SubLabel);
2146
2129
  } }
2147
- function AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_16_Template(rf, ctx) { if (rf & 1) {
2148
- i0.ɵɵelementStart(0, "div", 259);
2149
- i0.ɵɵrepeaterCreate(1, AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_16_For_2_Template, 10, 5, "div", 260, _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);
2150
2133
  i0.ɵɵelementEnd();
2151
2134
  } if (rf & 2) {
2152
- const ctx_r2 = i0.ɵɵnextContext(3);
2135
+ const ctx_r1 = i0.ɵɵnextContext(3);
2153
2136
  i0.ɵɵadvance();
2154
- i0.ɵɵrepeater(ctx_r2.CostKPIs);
2137
+ i0.ɵɵrepeater(ctx_r1.CostKPIs);
2155
2138
  } }
2156
- function AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_21_For_16_Template(rf, ctx) { if (rf & 1) {
2157
- i0.ɵɵelementStart(0, "tr")(1, "td", 204);
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);
2158
2141
  i0.ɵɵtext(2);
2159
2142
  i0.ɵɵelementEnd();
2160
2143
  i0.ɵɵelementStart(3, "td");
2161
2144
  i0.ɵɵtext(4);
2162
2145
  i0.ɵɵelementEnd();
2163
- i0.ɵɵelementStart(5, "td", 129);
2146
+ i0.ɵɵelementStart(5, "td", 125);
2164
2147
  i0.ɵɵtext(6);
2165
2148
  i0.ɵɵelementEnd();
2166
- i0.ɵɵelementStart(7, "td", 129);
2149
+ i0.ɵɵelementStart(7, "td", 125);
2167
2150
  i0.ɵɵtext(8);
2168
2151
  i0.ɵɵelementEnd();
2169
- i0.ɵɵelementStart(9, "td", 135);
2152
+ i0.ɵɵelementStart(9, "td", 131);
2170
2153
  i0.ɵɵtext(10);
2171
2154
  i0.ɵɵelementEnd()();
2172
2155
  } if (rf & 2) {
2173
- const row_r88 = ctx.$implicit;
2174
- const ctx_r2 = i0.ɵɵnextContext(4);
2156
+ const row_r87 = ctx.$implicit;
2157
+ const ctx_r1 = i0.ɵɵnextContext(4);
2175
2158
  i0.ɵɵadvance(2);
2176
- i0.ɵɵtextInterpolate(row_r88.RunID);
2159
+ i0.ɵɵtextInterpolate(row_r87.RunID);
2177
2160
  i0.ɵɵadvance(2);
2178
- i0.ɵɵtextInterpolate(row_r88.Source);
2161
+ i0.ɵɵtextInterpolate(row_r87.Source);
2179
2162
  i0.ɵɵadvance(2);
2180
- i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(row_r88.Tokens));
2163
+ i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(row_r87.Tokens));
2181
2164
  i0.ɵɵadvance(2);
2182
- 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");
2183
2166
  i0.ɵɵadvance(2);
2184
- i0.ɵɵtextInterpolate(row_r88.Started);
2167
+ i0.ɵɵtextInterpolate(row_r87.Started);
2185
2168
  } }
2186
- function AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_21_Template(rf, ctx) { if (rf & 1) {
2187
- i0.ɵɵelementStart(0, "div", 121)(1, "table", 96)(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");
2188
2171
  i0.ɵɵtext(5, "Run ID");
2189
2172
  i0.ɵɵelementEnd();
2190
2173
  i0.ɵɵelementStart(6, "th");
2191
2174
  i0.ɵɵtext(7, "Source");
2192
2175
  i0.ɵɵelementEnd();
2193
- i0.ɵɵelementStart(8, "th", 129);
2176
+ i0.ɵɵelementStart(8, "th", 125);
2194
2177
  i0.ɵɵtext(9, "Tokens");
2195
2178
  i0.ɵɵelementEnd();
2196
- i0.ɵɵelementStart(10, "th", 129);
2179
+ i0.ɵɵelementStart(10, "th", 125);
2197
2180
  i0.ɵɵtext(11, "Cost");
2198
2181
  i0.ɵɵelementEnd();
2199
2182
  i0.ɵɵelementStart(12, "th");
2200
2183
  i0.ɵɵtext(13, "Started");
2201
2184
  i0.ɵɵelementEnd()()();
2202
2185
  i0.ɵɵelementStart(14, "tbody");
2203
- i0.ɵɵrepeaterCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_20_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);
2204
2187
  i0.ɵɵelementEnd()()();
2205
2188
  } if (rf & 2) {
2206
- const ctx_r2 = i0.ɵɵnextContext(3);
2189
+ const ctx_r1 = i0.ɵɵnextContext(3);
2207
2190
  i0.ɵɵadvance(15);
2208
- i0.ɵɵrepeater(ctx_r2.CostPerRunRows);
2191
+ i0.ɵɵrepeater(ctx_r1.CostPerRunRows);
2209
2192
  } }
2210
- function AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_22_Template(rf, ctx) { if (rf & 1) {
2211
- i0.ɵɵelementStart(0, "div", 122);
2212
- i0.ɵɵelement(1, "i", 255);
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);
2213
2196
  i0.ɵɵelementStart(2, "p");
2214
2197
  i0.ɵɵtext(3, "No cost data available yet. Run the pipeline to generate cost and token usage metrics.");
2215
2198
  i0.ɵɵelementEnd();
2216
- i0.ɵɵelementStart(4, "p", 265);
2199
+ i0.ɵɵelementStart(4, "p", 261);
2217
2200
  i0.ɵɵtext(5, "Cost data is aggregated from ContentProcessRunDetail records linked to AI Prompt Runs.");
2218
2201
  i0.ɵɵelementEnd()();
2219
2202
  } }
2220
- function AnalyticsResourceComponent_Conditional_6_Conditional_20_Template(rf, ctx) { if (rf & 1) {
2221
- const _r84 = i0.ɵɵgetCurrentView();
2222
- i0.ɵɵelementStart(0, "section", 17)(1, "div", 19);
2223
- i0.ɵɵelement(2, "i", 255);
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);
2224
2207
  i0.ɵɵelementStart(3, "h1");
2225
2208
  i0.ɵɵtext(4, "Cost & Usage");
2226
2209
  i0.ɵɵelementEnd();
2227
- i0.ɵɵelementStart(5, "div", 256)(6, "button", 94);
2228
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_20_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r84); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ExportTabDataCSV("cost-usage")); });
2229
- i0.ɵɵelement(7, "i", 95);
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);
2230
2213
  i0.ɵɵtext(8, " CSV ");
2231
2214
  i0.ɵɵelementEnd();
2232
- i0.ɵɵelementStart(9, "button", 257);
2233
- i0.ɵɵlistener("click", function AnalyticsResourceComponent_Conditional_6_Conditional_20_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r84); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.PrintCurrentTab()); });
2234
- i0.ɵɵelement(10, "i", 258);
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);
2235
2218
  i0.ɵɵtext(11, " Print ");
2236
2219
  i0.ɵɵelementEnd()()();
2237
- i0.ɵɵelementStart(12, "div", 21)(13, "div", 22);
2238
- i0.ɵɵrepeaterCreate(14, AnalyticsResourceComponent_Conditional_6_Conditional_20_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);
2239
2222
  i0.ɵɵelementEnd()();
2240
- i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_16_Template, 3, 0, "div", 259);
2241
- i0.ɵɵelementStart(17, "div", 123)(18, "h3");
2242
- i0.ɵɵelement(19, "i", 86);
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);
2243
2226
  i0.ɵɵtext(20, " Cost Breakdown by Run");
2244
2227
  i0.ɵɵelementEnd();
2245
- i0.ɵɵconditionalCreate(21, AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_21_Template, 17, 0, "div", 121)(22, AnalyticsResourceComponent_Conditional_6_Conditional_20_Conditional_22_Template, 6, 0, "div", 122);
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);
2246
2229
  i0.ɵɵelementEnd()();
2247
2230
  } if (rf & 2) {
2248
- const ctx_r2 = i0.ɵɵnextContext(2);
2231
+ const ctx_r1 = i0.ɵɵnextContext(2);
2249
2232
  i0.ɵɵadvance(14);
2250
- i0.ɵɵrepeater(ctx_r2.DateRanges);
2233
+ i0.ɵɵrepeater(ctx_r1.DateRanges);
2251
2234
  i0.ɵɵadvance(2);
2252
- i0.ɵɵconditional(ctx_r2.CostKPIs.length > 0 ? 16 : -1);
2235
+ i0.ɵɵconditional(ctx_r1.CostKPIs.length > 0 ? 16 : -1);
2253
2236
  i0.ɵɵadvance(5);
2254
- i0.ɵɵconditional(ctx_r2.CostPerRunRows.length > 0 ? 21 : 22);
2237
+ i0.ɵɵconditional(ctx_r1.CostPerRunRows.length > 0 ? 21 : 22);
2255
2238
  } }
2256
2239
  function AnalyticsResourceComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
2257
- i0.ɵɵelementStart(0, "div", 5)(1, "aside", 7)(2, "nav", 8);
2258
- i0.ɵɵrepeaterCreate(3, AnalyticsResourceComponent_Conditional_6_For_4_Template, 3, 5, "button", 9, _forTrack0);
2259
- i0.ɵɵelementEnd();
2260
- i0.ɵɵelement(5, "div", 10);
2261
- i0.ɵɵelementStart(6, "div", 11)(7, "h3");
2262
- i0.ɵɵelement(8, "i", 12);
2263
- i0.ɵɵtext(9, " Trending Tags");
2264
- i0.ɵɵelementEnd();
2265
- i0.ɵɵelementStart(10, "div", 13);
2266
- i0.ɵɵrepeaterCreate(11, AnalyticsResourceComponent_Conditional_6_For_12_Template, 2, 5, "span", 14, _forTrack1);
2267
- i0.ɵɵconditionalCreate(13, AnalyticsResourceComponent_Conditional_6_Conditional_13_Template, 2, 0, "span", 15);
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);
2268
2258
  i0.ɵɵelementEnd()()();
2269
- i0.ɵɵelementStart(14, "div", 16);
2270
- i0.ɵɵconditionalCreate(15, AnalyticsResourceComponent_Conditional_6_Conditional_15_Template, 98, 7, "section", 17);
2271
- i0.ɵɵconditionalCreate(16, AnalyticsResourceComponent_Conditional_6_Conditional_16_Template, 28, 9, "section", 17);
2272
- i0.ɵɵconditionalCreate(17, AnalyticsResourceComponent_Conditional_6_Conditional_17_Template, 14, 4, "section", 17);
2273
- i0.ɵɵconditionalCreate(18, AnalyticsResourceComponent_Conditional_6_Conditional_18_Template, 54, 8, "section", 17);
2274
- i0.ɵɵconditionalCreate(19, AnalyticsResourceComponent_Conditional_6_Conditional_19_Template, 28, 5, "section", 17);
2275
- i0.ɵɵconditionalCreate(20, AnalyticsResourceComponent_Conditional_6_Conditional_20_Template, 23, 2, "section", 17);
2276
- i0.ɵɵelementEnd()();
2277
2259
  } if (rf & 2) {
2278
- const ctx_r2 = i0.ɵɵnextContext();
2279
- i0.ɵɵadvance(3);
2280
- i0.ɵɵrepeater(ctx_r2.NavItems);
2281
- i0.ɵɵadvance(8);
2282
- i0.ɵɵrepeater(ctx_r2.TrendingTags);
2283
- i0.ɵɵadvance(2);
2284
- i0.ɵɵconditional(ctx_r2.TrendingTags.length === 0 ? 13 : -1);
2260
+ const ctx_r1 = i0.ɵɵnextContext();
2261
+ i0.ɵɵadvance();
2262
+ i0.ɵɵproperty("Sections", ctx_r1.navSections)("ActiveId", ctx_r1.ActiveTab);
2263
+ i0.ɵɵadvance(6);
2264
+ i0.ɵɵrepeater(ctx_r1.TrendingTags);
2285
2265
  i0.ɵɵadvance(2);
2286
- i0.ɵɵconditional(ctx_r2.ActiveTab === "overview" ? 15 : -1);
2266
+ i0.ɵɵconditional(ctx_r1.TrendingTags.length === 0 ? 9 : -1);
2267
+ i0.ɵɵadvance(3);
2268
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "overview" ? 12 : -1);
2287
2269
  i0.ɵɵadvance();
2288
- i0.ɵɵconditional(ctx_r2.ActiveTab === "tags" ? 16 : -1);
2270
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "tags" ? 13 : -1);
2289
2271
  i0.ɵɵadvance();
2290
- i0.ɵɵconditional(ctx_r2.ActiveTab === "sources" ? 17 : -1);
2272
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "sources" ? 14 : -1);
2291
2273
  i0.ɵɵadvance();
2292
- i0.ɵɵconditional(ctx_r2.ActiveTab === "pipeline" ? 18 : -1);
2274
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "pipeline" ? 15 : -1);
2293
2275
  i0.ɵɵadvance();
2294
- i0.ɵɵconditional(ctx_r2.ActiveTab === "quality" ? 19 : -1);
2276
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "quality" ? 16 : -1);
2295
2277
  i0.ɵɵadvance();
2296
- i0.ɵɵconditional(ctx_r2.ActiveTab === "cost" ? 20 : -1);
2278
+ i0.ɵɵconditional(ctx_r1.ActiveTab === "cost" ? 17 : -1);
2297
2279
  } }
2298
2280
  // ================================================================
2299
2281
  // Component
@@ -2535,6 +2517,16 @@ let AnalyticsResourceComponent = class AnalyticsResourceComponent extends BaseRe
2535
2517
  // ================================================================
2536
2518
  // Public Methods
2537
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
+ }
2538
2530
  SelectTab(tabId) {
2539
2531
  this.ActiveTab = tabId;
2540
2532
  this.CloseDrillDown();
@@ -4234,12 +4226,12 @@ let AnalyticsResourceComponent = class AnalyticsResourceComponent extends BaseRe
4234
4226
  }
4235
4227
  }
4236
4228
  static ɵfac = /*@__PURE__*/ (() => { let ɵAnalyticsResourceComponent_BaseFactory; return function AnalyticsResourceComponent_Factory(__ngFactoryType__) { return (ɵAnalyticsResourceComponent_BaseFactory || (ɵAnalyticsResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AnalyticsResourceComponent)))(__ngFactoryType__ || AnalyticsResourceComponent); }; })();
4237
- 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"], [1, "analytics-sidebar"], [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, "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, "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) {
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) {
4238
4230
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
4239
4231
  i0.ɵɵelement(3, "mj-stat-badge", 2);
4240
4232
  i0.ɵɵelementEnd()();
4241
4233
  i0.ɵɵelementStart(4, "mj-page-body", 3);
4242
- i0.ɵɵconditionalCreate(5, AnalyticsResourceComponent_Conditional_5_Template, 2, 0, "div", 4)(6, AnalyticsResourceComponent_Conditional_6_Template, 21, 7, "div", 5);
4234
+ i0.ɵɵconditionalCreate(5, AnalyticsResourceComponent_Conditional_5_Template, 2, 0, "div", 4)(6, AnalyticsResourceComponent_Conditional_6_Template, 18, 9, "div", 5);
4243
4235
  i0.ɵɵelementEnd()();
4244
4236
  } if (rf & 2) {
4245
4237
  i0.ɵɵadvance(3);
@@ -4248,7 +4240,7 @@ let AnalyticsResourceComponent = class AnalyticsResourceComponent extends BaseRe
4248
4240
  i0.ɵɵproperty("Flex", true)("Padding", false);
4249
4241
  i0.ɵɵadvance();
4250
4242
  i0.ɵɵconditional(ctx.IsLoading ? 5 : 6);
4251
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, 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.analytics-layout[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\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}"] });
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}"] });
4252
4244
  };
4253
4245
  AnalyticsResourceComponent = AnalyticsResourceComponent_1 = __decorate([
4254
4246
  RegisterClass(BaseResourceComponent, 'AnalyticsResource')
@@ -4256,9 +4248,9 @@ AnalyticsResourceComponent = AnalyticsResourceComponent_1 = __decorate([
4256
4248
  export { AnalyticsResourceComponent };
4257
4249
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsResourceComponent, [{
4258
4250
  type: Component,
4259
- 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 <!-- =============== LEFT SIDEBAR =============== -->\n <aside class=\"analytics-sidebar\">\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 </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 </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.analytics-layout {\n display: flex;\n flex: 1;\n min-height: 0;\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"] }]
4260
4252
  }], null, null); })();
4261
- (() => { (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 }); })();
4262
4254
  /** Tree-shaking prevention */
4263
4255
  export function LoadAnalyticsResource() {
4264
4256
  // Prevents tree-shaking