@memberjunction/ng-dashboards 6.2.0-edge.1 → 6.2.0-edge.2

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 (82) hide show
  1. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
  2. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +3 -1
  3. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
  4. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
  5. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1 -2
  6. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  7. package/dist/AI/components/rubric-drift-series.d.ts +32 -0
  8. package/dist/AI/components/rubric-drift-series.d.ts.map +1 -0
  9. package/dist/AI/components/rubric-drift-series.js +49 -0
  10. package/dist/AI/components/rubric-drift-series.js.map +1 -0
  11. package/dist/AI/components/rubric-drift.component.d.ts +42 -0
  12. package/dist/AI/components/rubric-drift.component.d.ts.map +1 -0
  13. package/dist/AI/components/rubric-drift.component.js +197 -0
  14. package/dist/AI/components/rubric-drift.component.js.map +1 -0
  15. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  16. package/dist/AI/components/tags/tags-resource.component.js +4 -3
  17. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  18. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  19. package/dist/AI/components/vectors/vector-management-resource.component.js +5 -2
  20. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  21. package/dist/Integration/components/connections/connections.component.d.ts +5 -0
  22. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  23. package/dist/Integration/components/connections/connections.component.js +151 -136
  24. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  25. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  26. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +3 -2
  27. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  28. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.d.ts +11 -0
  29. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.d.ts.map +1 -1
  30. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.js +17 -1
  31. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.js.map +1 -1
  32. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js +52 -45
  33. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js.map +1 -1
  34. package/dist/QueryBrowser/query-browser-resource.component.d.ts +11 -0
  35. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  36. package/dist/QueryBrowser/query-browser-resource.component.js +47 -10
  37. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  38. package/dist/Rubrics/catalog-grid.d.ts +4 -0
  39. package/dist/Rubrics/catalog-grid.d.ts.map +1 -0
  40. package/dist/Rubrics/catalog-grid.js +22 -0
  41. package/dist/Rubrics/catalog-grid.js.map +1 -0
  42. package/dist/Rubrics/rubrics-dashboard.component.d.ts +31 -0
  43. package/dist/Rubrics/rubrics-dashboard.component.d.ts.map +1 -0
  44. package/dist/Rubrics/rubrics-dashboard.component.js +285 -0
  45. package/dist/Rubrics/rubrics-dashboard.component.js.map +1 -0
  46. package/dist/Rubrics/rubrics-resource.component.d.ts +13 -0
  47. package/dist/Rubrics/rubrics-resource.component.d.ts.map +1 -0
  48. package/dist/Rubrics/rubrics-resource.component.js +42 -0
  49. package/dist/Rubrics/rubrics-resource.component.js.map +1 -0
  50. package/dist/Rubrics/scales-dashboard.component.d.ts +34 -0
  51. package/dist/Rubrics/scales-dashboard.component.d.ts.map +1 -0
  52. package/dist/Rubrics/scales-dashboard.component.js +204 -0
  53. package/dist/Rubrics/scales-dashboard.component.js.map +1 -0
  54. package/dist/Rubrics/scales-resource.component.d.ts +13 -0
  55. package/dist/Rubrics/scales-resource.component.d.ts.map +1 -0
  56. package/dist/Rubrics/scales-resource.component.js +42 -0
  57. package/dist/Rubrics/scales-resource.component.js.map +1 -0
  58. package/dist/Testing/components/testing-analytics.component.d.ts +15 -0
  59. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  60. package/dist/Testing/components/testing-analytics.component.js +465 -296
  61. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  62. package/dist/Testing/components/testing-review.component.d.ts +6 -0
  63. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  64. package/dist/Testing/components/testing-review.component.js +289 -173
  65. package/dist/Testing/components/testing-review.component.js.map +1 -1
  66. package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts +8 -1
  67. package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
  68. package/dist/Testing/components/widgets/test-run-detail-panel.component.js +68 -43
  69. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  70. package/dist/module.d.ts +23 -22
  71. package/dist/module.d.ts.map +1 -1
  72. package/dist/module.js +7 -0
  73. package/dist/module.js.map +1 -1
  74. package/dist/public-api.d.ts +1 -0
  75. package/dist/public-api.d.ts.map +1 -1
  76. package/dist/public-api.js +1 -0
  77. package/dist/public-api.js.map +1 -1
  78. package/dist/rubrics-dashboards.module.d.ts +17 -0
  79. package/dist/rubrics-dashboards.module.d.ts.map +1 -0
  80. package/dist/rubrics-dashboards.module.js +76 -0
  81. package/dist/rubrics-dashboards.module.js.map +1 -0
  82. package/package.json +70 -64
@@ -2,6 +2,9 @@ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from
2
2
  import { Subject } from 'rxjs';
3
3
  import { takeUntil } from 'rxjs/operators';
4
4
  import { UUIDsEqual } from '@memberjunction/global';
5
+ import { CompositeKey, RunView } from '@memberjunction/core';
6
+ import { SharedService } from '@memberjunction/ng-shared';
7
+ import { CohortDisagreement } from '@memberjunction/ng-testing';
5
8
  import * as i0 from "@angular/core";
6
9
  import * as i1 from "../services/testing-instrumentation.service";
7
10
  import * as i2 from "@angular/common";
@@ -51,44 +54,91 @@ function TestingReviewComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
51
54
  i0.ɵɵproperty("ngTemplateOutlet", content_r1);
52
55
  } }
53
56
  function TestingReviewComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementStart(0, "div", 8)(1, "div", 27)(2, "div", 28);
55
- i0.ɵɵelement(3, "i", 29);
57
+ i0.ɵɵelementStart(0, "p", 8);
58
+ i0.ɵɵtext(1);
59
+ i0.ɵɵelementEnd();
60
+ } if (rf & 2) {
61
+ const ctx_r2 = i0.ɵɵnextContext(2);
62
+ i0.ɵɵadvance();
63
+ i0.ɵɵtextInterpolate(ctx_r2.DisagreementError);
64
+ } }
65
+ function TestingReviewComponent_ng_template_2_Conditional_2_For_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
66
+ const _r5 = i0.ɵɵgetCurrentView();
67
+ i0.ɵɵelementStart(0, "button", 30);
68
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_2_For_4_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const row_r6 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenRun(row_r6.runId)); });
69
+ i0.ɵɵtext(1, "Open run");
70
+ i0.ɵɵelementEnd();
71
+ } }
72
+ function TestingReviewComponent_ng_template_2_Conditional_2_For_4_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementStart(0, "p");
74
+ i0.ɵɵtext(1);
75
+ i0.ɵɵelementStart(2, "code");
76
+ i0.ɵɵtext(3);
77
+ i0.ɵɵelementEnd();
78
+ i0.ɵɵtext(4);
79
+ i0.ɵɵconditionalCreate(5, TestingReviewComponent_ng_template_2_Conditional_2_For_4_Conditional_5_Template, 2, 0, "button", 29);
80
+ i0.ɵɵelementEnd();
81
+ } if (rf & 2) {
82
+ const row_r6 = ctx.$implicit;
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵtextInterpolate1(" ", row_r6.name, " CriterionKey ");
85
+ i0.ɵɵadvance(2);
86
+ i0.ɵɵtextInterpolate(row_r6.key);
87
+ i0.ɵɵadvance();
88
+ i0.ɵɵtextInterpolate2(" \u2014 human ", row_r6.humanMean, " / AI ", row_r6.aiMean, " ");
89
+ i0.ɵɵadvance();
90
+ i0.ɵɵconditional(row_r6.runId ? 5 : -1);
91
+ } }
92
+ function TestingReviewComponent_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelementStart(0, "section", 9)(1, "h3");
94
+ i0.ɵɵtext(2, "Rubric disagreement");
95
+ i0.ɵɵelementEnd();
96
+ i0.ɵɵrepeaterCreate(3, TestingReviewComponent_ng_template_2_Conditional_2_For_4_Template, 6, 5, "p", null, i0.ɵɵrepeaterTrackByIndex);
97
+ i0.ɵɵelementEnd();
98
+ } if (rf & 2) {
99
+ const ctx_r2 = i0.ɵɵnextContext(2);
100
+ i0.ɵɵadvance(3);
101
+ i0.ɵɵrepeater(ctx_r2.Disagreement);
102
+ } }
103
+ function TestingReviewComponent_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵelementStart(0, "div", 10)(1, "div", 31)(2, "div", 32);
105
+ i0.ɵɵelement(3, "i", 33);
56
106
  i0.ɵɵelementEnd();
57
- i0.ɵɵelementStart(4, "div", 30)(5, "div", 31);
107
+ i0.ɵɵelementStart(4, "div", 34)(5, "div", 35);
58
108
  i0.ɵɵtext(6);
59
109
  i0.ɵɵelementEnd();
60
- i0.ɵɵelementStart(7, "div", 32);
110
+ i0.ɵɵelementStart(7, "div", 36);
61
111
  i0.ɵɵtext(8, "Pending Review");
62
112
  i0.ɵɵelementEnd()()();
63
- i0.ɵɵelementStart(9, "div", 27)(10, "div", 33);
64
- i0.ɵɵelement(11, "i", 34);
113
+ i0.ɵɵelementStart(9, "div", 31)(10, "div", 37);
114
+ i0.ɵɵelement(11, "i", 38);
65
115
  i0.ɵɵelementEnd();
66
- i0.ɵɵelementStart(12, "div", 30)(13, "div", 31);
116
+ i0.ɵɵelementStart(12, "div", 34)(13, "div", 35);
67
117
  i0.ɵɵtext(14);
68
118
  i0.ɵɵelementEnd();
69
- i0.ɵɵelementStart(15, "div", 32);
119
+ i0.ɵɵelementStart(15, "div", 36);
70
120
  i0.ɵɵtext(16, "Reviewed");
71
121
  i0.ɵɵelementEnd()()();
72
- i0.ɵɵelementStart(17, "div", 27)(18, "div", 35);
73
- i0.ɵɵelement(19, "i", 36);
122
+ i0.ɵɵelementStart(17, "div", 31)(18, "div", 39);
123
+ i0.ɵɵelement(19, "i", 40);
74
124
  i0.ɵɵelementEnd();
75
- i0.ɵɵelementStart(20, "div", 30)(21, "div", 31);
125
+ i0.ɵɵelementStart(20, "div", 34)(21, "div", 35);
76
126
  i0.ɵɵtext(22);
77
- i0.ɵɵelementStart(23, "span", 37);
127
+ i0.ɵɵelementStart(23, "span", 41);
78
128
  i0.ɵɵtext(24, "/10");
79
129
  i0.ɵɵelementEnd()();
80
- i0.ɵɵelementStart(25, "div", 32);
130
+ i0.ɵɵelementStart(25, "div", 36);
81
131
  i0.ɵɵtext(26, "Avg Rating");
82
132
  i0.ɵɵelementEnd()()();
83
- i0.ɵɵelementStart(27, "div", 27)(28, "div", 38);
84
- i0.ɵɵelement(29, "i", 39);
133
+ i0.ɵɵelementStart(27, "div", 31)(28, "div", 42);
134
+ i0.ɵɵelement(29, "i", 43);
85
135
  i0.ɵɵelementEnd();
86
- i0.ɵɵelementStart(30, "div", 30)(31, "div", 31);
136
+ i0.ɵɵelementStart(30, "div", 34)(31, "div", 35);
87
137
  i0.ɵɵtext(32);
88
- i0.ɵɵelementStart(33, "span", 37);
138
+ i0.ɵɵelementStart(33, "span", 41);
89
139
  i0.ɵɵtext(34, "%");
90
140
  i0.ɵɵelementEnd()();
91
- i0.ɵɵelementStart(35, "div", 32);
141
+ i0.ɵɵelementStart(35, "div", 36);
92
142
  i0.ɵɵtext(36, "Agreement Rate");
93
143
  i0.ɵɵelementEnd()()()();
94
144
  } if (rf & 2) {
@@ -102,68 +152,68 @@ function TestingReviewComponent_ng_template_2_Conditional_1_Template(rf, ctx) {
102
152
  i0.ɵɵadvance(10);
103
153
  i0.ɵɵtextInterpolate(ctx_r2.FormatDecimal(ctx_r2.Metrics.agreementRate, 0));
104
154
  } }
105
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
106
- i0.ɵɵelement(0, "mj-empty-state", 40);
155
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelement(0, "mj-empty-state", 44);
107
157
  } }
108
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelementStart(0, "div", 47)(1, "div", 48);
158
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵelementStart(0, "div", 51)(1, "div", 52);
110
160
  i0.ɵɵtext(2);
111
161
  i0.ɵɵelementEnd();
112
- i0.ɵɵelementStart(3, "div", 49)(4, "span", 50);
113
- i0.ɵɵelement(5, "i", 51);
162
+ i0.ɵɵelementStart(3, "div", 53)(4, "span", 54);
163
+ i0.ɵɵelement(5, "i", 55);
114
164
  i0.ɵɵtext(6);
115
165
  i0.ɵɵelementEnd();
116
- i0.ɵɵelement(7, "app-score-indicator", 52)(8, "app-test-status-badge", 53);
166
+ i0.ɵɵelement(7, "app-score-indicator", 56)(8, "app-test-status-badge", 57);
117
167
  i0.ɵɵelementEnd()();
118
168
  } if (rf & 2) {
119
- const item_r6 = i0.ɵɵnextContext().$implicit;
169
+ const item_r8 = i0.ɵɵnextContext().$implicit;
120
170
  const ctx_r2 = i0.ɵɵnextContext(4);
121
171
  i0.ɵɵadvance(2);
122
- i0.ɵɵtextInterpolate(item_r6.testName);
172
+ i0.ɵɵtextInterpolate(item_r8.testName);
123
173
  i0.ɵɵadvance(4);
124
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(item_r6.runDateTime), " ");
174
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(item_r8.runDateTime), " ");
125
175
  i0.ɵɵadvance();
126
- i0.ɵɵproperty("score", item_r6.automatedScore)("showBar", true);
176
+ i0.ɵɵproperty("score", item_r8.automatedScore)("showBar", true);
127
177
  i0.ɵɵadvance();
128
- i0.ɵɵproperty("status", item_r6.automatedStatus);
178
+ i0.ɵɵproperty("status", item_r8.automatedStatus);
129
179
  } }
130
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
131
- i0.ɵɵelement(0, "i", 55);
180
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
181
+ i0.ɵɵelement(0, "i", 59);
132
182
  i0.ɵɵtext(1, " No Feedback ");
133
183
  } }
134
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
135
- i0.ɵɵelement(0, "i", 56);
184
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
185
+ i0.ɵɵelement(0, "i", 60);
136
186
  i0.ɵɵtext(1, " Score Mismatch ");
137
187
  } }
138
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
139
- i0.ɵɵelement(0, "i", 57);
188
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵelement(0, "i", 61);
140
190
  i0.ɵɵtext(1, " Needs Verification ");
141
191
  } }
142
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelementStart(0, "span", 54);
144
- i0.ɵɵconditionalCreate(1, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Conditional_1_Template, 2, 0)(2, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Conditional_2_Template, 2, 0)(3, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Conditional_3_Template, 2, 0);
192
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
193
+ i0.ɵɵelementStart(0, "span", 58);
194
+ i0.ɵɵconditionalCreate(1, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Conditional_1_Template, 2, 0)(2, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Conditional_2_Template, 2, 0)(3, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Conditional_3_Template, 2, 0);
145
195
  i0.ɵɵelementEnd();
146
196
  } if (rf & 2) {
147
- const item_r6 = i0.ɵɵnextContext().$implicit;
148
- i0.ɵɵclassMap("reason-" + item_r6.reason);
197
+ const item_r8 = i0.ɵɵnextContext().$implicit;
198
+ i0.ɵɵclassMap("reason-" + item_r8.reason);
149
199
  i0.ɵɵadvance();
150
- i0.ɵɵconditional(item_r6.reason === "no-feedback" ? 1 : item_r6.reason === "high-score-failed" ? 2 : 3);
200
+ i0.ɵɵconditional(item_r8.reason === "no-feedback" ? 1 : item_r8.reason === "high-score-failed" ? 2 : 3);
151
201
  } }
152
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_For_6_Template(rf, ctx) { if (rf & 1) {
153
- const _r8 = i0.ɵɵgetCurrentView();
154
- i0.ɵɵelementStart(0, "button", 75);
155
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_For_6_Template_button_click_0_listener() { const n_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.SelectRating(n_r9)); });
202
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_For_6_Template(rf, ctx) { if (rf & 1) {
203
+ const _r10 = i0.ɵɵgetCurrentView();
204
+ i0.ɵɵelementStart(0, "button", 79);
205
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_For_6_Template_button_click_0_listener() { const n_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.SelectRating(n_r11)); });
156
206
  i0.ɵɵtext(1);
157
207
  i0.ɵɵelementEnd();
158
208
  } if (rf & 2) {
159
- const n_r9 = ctx.$implicit;
209
+ const n_r11 = ctx.$implicit;
160
210
  const ctx_r2 = i0.ɵɵnextContext(6);
161
- i0.ɵɵclassProp("selected", ctx_r2.FormState.rating != null && n_r9 <= ctx_r2.FormState.rating)("current", ctx_r2.FormState.rating === n_r9);
211
+ i0.ɵɵclassProp("selected", ctx_r2.FormState.rating != null && n_r11 <= ctx_r2.FormState.rating)("current", ctx_r2.FormState.rating === n_r11);
162
212
  i0.ɵɵadvance();
163
- i0.ɵɵtextInterpolate1(" ", n_r9, " ");
213
+ i0.ɵɵtextInterpolate1(" ", n_r11, " ");
164
214
  } }
165
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
166
- i0.ɵɵelementStart(0, "span", 63);
215
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
216
+ i0.ɵɵelementStart(0, "span", 67);
167
217
  i0.ɵɵtext(1);
168
218
  i0.ɵɵelementEnd();
169
219
  } if (rf & 2) {
@@ -171,42 +221,42 @@ function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2
171
221
  i0.ɵɵadvance();
172
222
  i0.ɵɵtextInterpolate1("", ctx_r2.FormState.rating, "/10");
173
223
  } }
174
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
175
- const _r7 = i0.ɵɵgetCurrentView();
176
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 59)(2, "label", 60);
224
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
225
+ const _r9 = i0.ɵɵgetCurrentView();
226
+ i0.ɵɵelementStart(0, "div", 62)(1, "div", 63)(2, "label", 64);
177
227
  i0.ɵɵtext(3, "Rating");
178
228
  i0.ɵɵelementEnd();
179
- i0.ɵɵelementStart(4, "div", 61);
180
- i0.ɵɵrepeaterCreate(5, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_For_6_Template, 2, 5, "button", 62, i0.ɵɵrepeaterTrackByIdentity);
181
- i0.ɵɵconditionalCreate(7, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Conditional_7_Template, 2, 1, "span", 63);
229
+ i0.ɵɵelementStart(4, "div", 65);
230
+ i0.ɵɵrepeaterCreate(5, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_For_6_Template, 2, 5, "button", 66, i0.ɵɵrepeaterTrackByIdentity);
231
+ i0.ɵɵconditionalCreate(7, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Conditional_7_Template, 2, 1, "span", 67);
182
232
  i0.ɵɵelementEnd()();
183
- i0.ɵɵelementStart(8, "div", 59)(9, "label", 60);
233
+ i0.ɵɵelementStart(8, "div", 63)(9, "label", 64);
184
234
  i0.ɵɵtext(10, "Is the automated result correct?");
185
235
  i0.ɵɵelementEnd();
186
- i0.ɵɵelementStart(11, "div", 64)(12, "button", 65);
187
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.SelectCorrectness(true)); });
188
- i0.ɵɵelement(13, "i", 66);
236
+ i0.ɵɵelementStart(11, "div", 68)(12, "button", 69);
237
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.SelectCorrectness(true)); });
238
+ i0.ɵɵelement(13, "i", 70);
189
239
  i0.ɵɵtext(14, " Correct ");
190
240
  i0.ɵɵelementEnd();
191
- i0.ɵɵelementStart(15, "button", 67);
192
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.SelectCorrectness(false)); });
193
- i0.ɵɵelement(16, "i", 68);
241
+ i0.ɵɵelementStart(15, "button", 71);
242
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.SelectCorrectness(false)); });
243
+ i0.ɵɵelement(16, "i", 72);
194
244
  i0.ɵɵtext(17, " Incorrect ");
195
245
  i0.ɵɵelementEnd()()();
196
- i0.ɵɵelementStart(18, "div", 59)(19, "label", 60);
246
+ i0.ɵɵelementStart(18, "div", 63)(19, "label", 64);
197
247
  i0.ɵɵtext(20, "Notes (optional)");
198
248
  i0.ɵɵelementEnd();
199
- i0.ɵɵelementStart(21, "textarea", 69);
200
- i0.ɵɵlistener("input", function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Template_textarea_input_21_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OnCommentsChange($event)); });
249
+ i0.ɵɵelementStart(21, "textarea", 73);
250
+ i0.ɵɵlistener("input", function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Template_textarea_input_21_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.OnCommentsChange($event)); });
201
251
  i0.ɵɵelementEnd()();
202
- i0.ɵɵelementStart(22, "div", 70)(23, "button", 71);
203
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r7); const item_r6 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.SubmitReview(item_r6)); });
204
- i0.ɵɵelement(24, "i", 72);
252
+ i0.ɵɵelementStart(22, "div", 74)(23, "button", 75);
253
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r9); const item_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.SubmitReview(item_r8)); });
254
+ i0.ɵɵelement(24, "i", 76);
205
255
  i0.ɵɵtext(25);
206
256
  i0.ɵɵelementEnd();
207
- i0.ɵɵelementStart(26, "button", 73);
208
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.SkipItem()); });
209
- i0.ɵɵelement(27, "i", 74);
257
+ i0.ɵɵelementStart(26, "button", 77);
258
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.SkipItem()); });
259
+ i0.ɵɵelement(27, "i", 78);
210
260
  i0.ɵɵtext(28, " Skip ");
211
261
  i0.ɵɵelementEnd()()();
212
262
  } if (rf & 2) {
@@ -226,142 +276,142 @@ function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2
226
276
  i0.ɵɵadvance(2);
227
277
  i0.ɵɵtextInterpolate1(" ", ctx_r2.IsSubmitting ? "Submitting..." : "Submit", " ");
228
278
  } }
229
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
230
- const _r5 = i0.ɵɵgetCurrentView();
231
- i0.ɵɵelementStart(0, "mj-accordion-panel", 43);
232
- i0.ɵɵlistener("ExpandedChange", function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { const item_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.OnItemExpandedChange(item_r6.testRunID, $event)); });
233
- i0.ɵɵtemplate(1, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_1_Template, 9, 5, "ng-template", 44)(2, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_2_Template, 4, 3, "ng-template", 45)(3, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_ng_template_3_Template, 29, 8, "ng-template", 46);
279
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
280
+ const _r7 = i0.ɵɵgetCurrentView();
281
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 47);
282
+ i0.ɵɵlistener("ExpandedChange", function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { const item_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.OnItemExpandedChange(item_r8.testRunID, $event)); });
283
+ i0.ɵɵtemplate(1, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_1_Template, 9, 5, "ng-template", 48)(2, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_2_Template, 4, 3, "ng-template", 49)(3, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_ng_template_3_Template, 29, 8, "ng-template", 50);
234
284
  i0.ɵɵelementEnd();
235
285
  } if (rf & 2) {
236
- const item_r6 = ctx.$implicit;
286
+ const item_r8 = ctx.$implicit;
237
287
  const ctx_r2 = i0.ɵɵnextContext(4);
238
- i0.ɵɵproperty("FlushBody", true)("Expanded", ctx_r2.IsItemExpanded(item_r6.testRunID));
288
+ i0.ɵɵproperty("FlushBody", true)("Expanded", ctx_r2.IsItemExpanded(item_r8.testRunID));
239
289
  } }
240
- function TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
241
- i0.ɵɵelementStart(0, "div", 41);
242
- i0.ɵɵrepeaterCreate(1, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_For_2_Template, 4, 2, "mj-accordion-panel", 42, _forTrack0);
290
+ function TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "div", 45);
292
+ i0.ɵɵrepeaterCreate(1, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_For_2_Template, 4, 2, "mj-accordion-panel", 46, _forTrack0);
243
293
  i0.ɵɵelementEnd();
244
294
  } if (rf & 2) {
245
295
  const ctx_r2 = i0.ɵɵnextContext(3);
246
296
  i0.ɵɵadvance();
247
297
  i0.ɵɵrepeater(ctx_r2.PendingItems);
248
298
  } }
249
- function TestingReviewComponent_ng_template_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
250
- i0.ɵɵelementStart(0, "div", 14);
251
- i0.ɵɵconditionalCreate(1, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_1_Template, 1, 0, "mj-empty-state", 40)(2, TestingReviewComponent_ng_template_2_Conditional_10_Conditional_2_Template, 3, 0, "div", 41);
299
+ function TestingReviewComponent_ng_template_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
300
+ i0.ɵɵelementStart(0, "div", 16);
301
+ i0.ɵɵconditionalCreate(1, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_1_Template, 1, 0, "mj-empty-state", 44)(2, TestingReviewComponent_ng_template_2_Conditional_12_Conditional_2_Template, 3, 0, "div", 45);
252
302
  i0.ɵɵelementEnd();
253
303
  } if (rf & 2) {
254
304
  const ctx_r2 = i0.ɵɵnextContext(2);
255
305
  i0.ɵɵadvance();
256
306
  i0.ɵɵconditional(ctx_r2.PendingItems.length === 0 ? 1 : 2);
257
307
  } }
258
- function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_15_Template(rf, ctx) { if (rf & 1) {
259
- i0.ɵɵelement(0, "mj-empty-state", 85);
308
+ function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_15_Template(rf, ctx) { if (rf & 1) {
309
+ i0.ɵɵelement(0, "mj-empty-state", 89);
260
310
  } }
261
- function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_For_10_Template(rf, ctx) { if (rf & 1) {
262
- i0.ɵɵelement(0, "span", 101);
311
+ function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_For_10_Template(rf, ctx) { if (rf & 1) {
312
+ i0.ɵɵelement(0, "span", 105);
263
313
  } if (rf & 2) {
264
- const n_r11 = ctx.$implicit;
265
- const item_r12 = i0.ɵɵnextContext().$implicit;
266
- i0.ɵɵclassProp("filled", item_r12.humanRating != null && n_r11 <= item_r12.humanRating);
314
+ const n_r13 = ctx.$implicit;
315
+ const item_r14 = i0.ɵɵnextContext().$implicit;
316
+ i0.ɵɵclassProp("filled", item_r14.humanRating != null && n_r13 <= item_r14.humanRating);
267
317
  } }
268
- function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
269
- i0.ɵɵelementStart(0, "span", 97);
270
- i0.ɵɵelement(1, "i", 66);
318
+ function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
319
+ i0.ɵɵelementStart(0, "span", 101);
320
+ i0.ɵɵelement(1, "i", 70);
271
321
  i0.ɵɵtext(2, " Correct ");
272
322
  i0.ɵɵelementEnd();
273
323
  } }
274
- function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
275
- i0.ɵɵelementStart(0, "span", 98);
276
- i0.ɵɵelement(1, "i", 68);
324
+ function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
325
+ i0.ɵɵelementStart(0, "span", 102);
326
+ i0.ɵɵelement(1, "i", 72);
277
327
  i0.ɵɵtext(2, " Incorrect ");
278
328
  i0.ɵɵelementEnd();
279
329
  } }
280
- function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
281
- const _r13 = i0.ɵɵgetCurrentView();
282
- i0.ɵɵelementStart(0, "div", 102);
283
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Conditional_18_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r13); const item_r12 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ToggleHistoryComment(item_r12.id)); });
330
+ function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
331
+ const _r15 = i0.ɵɵgetCurrentView();
332
+ i0.ɵɵelementStart(0, "div", 106);
333
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Conditional_18_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r15); const item_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ToggleHistoryComment(item_r14.id)); });
284
334
  i0.ɵɵelementStart(1, "p");
285
335
  i0.ɵɵtext(2);
286
336
  i0.ɵɵelementEnd()();
287
337
  } if (rf & 2) {
288
- const item_r12 = i0.ɵɵnextContext().$implicit;
338
+ const item_r14 = i0.ɵɵnextContext().$implicit;
289
339
  const ctx_r2 = i0.ɵɵnextContext(4);
290
- i0.ɵɵclassProp("expanded", ctx_r2.ExpandedHistoryId === item_r12.id);
340
+ i0.ɵɵclassProp("expanded", ctx_r2.ExpandedHistoryId === item_r14.id);
291
341
  i0.ɵɵadvance(2);
292
- i0.ɵɵtextInterpolate(item_r12.humanComments);
342
+ i0.ɵɵtextInterpolate(item_r14.humanComments);
293
343
  } }
294
- function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
295
- i0.ɵɵelementStart(0, "div", 87)(1, "div", 88)(2, "div", 89);
344
+ function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
345
+ i0.ɵɵelementStart(0, "div", 91)(1, "div", 92)(2, "div", 93);
296
346
  i0.ɵɵtext(3);
297
347
  i0.ɵɵelementEnd();
298
- i0.ɵɵelementStart(4, "div", 90);
299
- i0.ɵɵelement(5, "i", 91);
348
+ i0.ɵɵelementStart(4, "div", 94);
349
+ i0.ɵɵelement(5, "i", 95);
300
350
  i0.ɵɵtext(6);
301
351
  i0.ɵɵelementEnd()();
302
- i0.ɵɵelementStart(7, "div", 92)(8, "div", 93);
303
- i0.ɵɵrepeaterCreate(9, TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_For_10_Template, 1, 2, "span", 94, i0.ɵɵrepeaterTrackByIdentity);
352
+ i0.ɵɵelementStart(7, "div", 96)(8, "div", 97);
353
+ i0.ɵɵrepeaterCreate(9, TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_For_10_Template, 1, 2, "span", 98, i0.ɵɵrepeaterTrackByIdentity);
304
354
  i0.ɵɵelementEnd();
305
- i0.ɵɵelementStart(11, "span", 95);
355
+ i0.ɵɵelementStart(11, "span", 99);
306
356
  i0.ɵɵtext(12);
307
357
  i0.ɵɵelementEnd()();
308
- i0.ɵɵelementStart(13, "div", 96);
309
- i0.ɵɵconditionalCreate(14, TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Conditional_14_Template, 3, 0, "span", 97)(15, TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Conditional_15_Template, 3, 0, "span", 98);
358
+ i0.ɵɵelementStart(13, "div", 100);
359
+ i0.ɵɵconditionalCreate(14, TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Conditional_14_Template, 3, 0, "span", 101)(15, TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Conditional_15_Template, 3, 0, "span", 102);
310
360
  i0.ɵɵelementEnd();
311
- i0.ɵɵelementStart(16, "div", 99);
312
- i0.ɵɵelement(17, "app-score-indicator", 52);
361
+ i0.ɵɵelementStart(16, "div", 103);
362
+ i0.ɵɵelement(17, "app-score-indicator", 56);
313
363
  i0.ɵɵelementEnd();
314
- i0.ɵɵconditionalCreate(18, TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Conditional_18_Template, 3, 3, "div", 100);
364
+ i0.ɵɵconditionalCreate(18, TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Conditional_18_Template, 3, 3, "div", 104);
315
365
  i0.ɵɵelementEnd();
316
366
  } if (rf & 2) {
317
- const item_r12 = ctx.$implicit;
367
+ const item_r14 = ctx.$implicit;
318
368
  const ctx_r2 = i0.ɵɵnextContext(4);
319
369
  i0.ɵɵadvance(3);
320
- i0.ɵɵtextInterpolate(item_r12.testName);
370
+ i0.ɵɵtextInterpolate(item_r14.testName);
321
371
  i0.ɵɵadvance(3);
322
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(item_r12.runDateTime), " ");
372
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(item_r14.runDateTime), " ");
323
373
  i0.ɵɵadvance(3);
324
374
  i0.ɵɵrepeater(ctx_r2.RatingNumbers);
325
375
  i0.ɵɵadvance(3);
326
- i0.ɵɵtextInterpolate1("", item_r12.humanRating ?? 0, "/10");
376
+ i0.ɵɵtextInterpolate1("", item_r14.humanRating ?? 0, "/10");
327
377
  i0.ɵɵadvance(2);
328
- i0.ɵɵconditional(item_r12.humanIsCorrect === true ? 14 : item_r12.humanIsCorrect === false ? 15 : -1);
378
+ i0.ɵɵconditional(item_r14.humanIsCorrect === true ? 14 : item_r14.humanIsCorrect === false ? 15 : -1);
329
379
  i0.ɵɵadvance(3);
330
- i0.ɵɵproperty("score", item_r12.score)("showBar", true);
380
+ i0.ɵɵproperty("score", item_r14.score)("showBar", true);
331
381
  i0.ɵɵadvance();
332
- i0.ɵɵconditional(item_r12.humanComments ? 18 : -1);
382
+ i0.ɵɵconditional(item_r14.humanComments ? 18 : -1);
333
383
  } }
334
- function TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_Template(rf, ctx) { if (rf & 1) {
335
- i0.ɵɵelementStart(0, "div", 86);
336
- i0.ɵɵrepeaterCreate(1, TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_For_2_Template, 19, 7, "div", 87, _forTrack1);
384
+ function TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_Template(rf, ctx) { if (rf & 1) {
385
+ i0.ɵɵelementStart(0, "div", 90);
386
+ i0.ɵɵrepeaterCreate(1, TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_For_2_Template, 19, 7, "div", 91, _forTrack1);
337
387
  i0.ɵɵelementEnd();
338
388
  } if (rf & 2) {
339
389
  const ctx_r2 = i0.ɵɵnextContext(3);
340
390
  i0.ɵɵadvance();
341
391
  i0.ɵɵrepeater(ctx_r2.FilteredHistoryItems);
342
392
  } }
343
- function TestingReviewComponent_ng_template_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
344
- const _r10 = i0.ɵɵgetCurrentView();
345
- i0.ɵɵelementStart(0, "div", 14)(1, "div", 76)(2, "div", 77);
346
- i0.ɵɵelement(3, "i", 78);
347
- i0.ɵɵelementStart(4, "input", 79);
348
- i0.ɵɵlistener("input", function TestingReviewComponent_ng_template_2_Conditional_11_Template_input_input_4_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnHistorySearch($event)); });
393
+ function TestingReviewComponent_ng_template_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
394
+ const _r12 = i0.ɵɵgetCurrentView();
395
+ i0.ɵɵelementStart(0, "div", 16)(1, "div", 80)(2, "div", 81);
396
+ i0.ɵɵelement(3, "i", 82);
397
+ i0.ɵɵelementStart(4, "input", 83);
398
+ i0.ɵɵlistener("input", function TestingReviewComponent_ng_template_2_Conditional_13_Template_input_input_4_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnHistorySearch($event)); });
349
399
  i0.ɵɵelementEnd()();
350
- i0.ɵɵelementStart(5, "div", 80)(6, "label");
400
+ i0.ɵɵelementStart(5, "div", 84)(6, "label");
351
401
  i0.ɵɵtext(7, "Sort by:");
352
402
  i0.ɵɵelementEnd();
353
- i0.ɵɵelementStart(8, "select", 81);
354
- i0.ɵɵlistener("change", function TestingReviewComponent_ng_template_2_Conditional_11_Template_select_change_8_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnHistorySortChange($event)); });
355
- i0.ɵɵelementStart(9, "option", 82);
403
+ i0.ɵɵelementStart(8, "select", 85);
404
+ i0.ɵɵlistener("change", function TestingReviewComponent_ng_template_2_Conditional_13_Template_select_change_8_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnHistorySortChange($event)); });
405
+ i0.ɵɵelementStart(9, "option", 86);
356
406
  i0.ɵɵtext(10, "Date");
357
407
  i0.ɵɵelementEnd();
358
- i0.ɵɵelementStart(11, "option", 83);
408
+ i0.ɵɵelementStart(11, "option", 87);
359
409
  i0.ɵɵtext(12, "Rating");
360
410
  i0.ɵɵelementEnd();
361
- i0.ɵɵelementStart(13, "option", 84);
411
+ i0.ɵɵelementStart(13, "option", 88);
362
412
  i0.ɵɵtext(14, "Test Name");
363
413
  i0.ɵɵelementEnd()()()();
364
- i0.ɵɵconditionalCreate(15, TestingReviewComponent_ng_template_2_Conditional_11_Conditional_15_Template, 1, 0, "mj-empty-state", 85)(16, TestingReviewComponent_ng_template_2_Conditional_11_Conditional_16_Template, 3, 0, "div", 86);
414
+ i0.ɵɵconditionalCreate(15, TestingReviewComponent_ng_template_2_Conditional_13_Conditional_15_Template, 1, 0, "mj-empty-state", 89)(16, TestingReviewComponent_ng_template_2_Conditional_13_Conditional_16_Template, 3, 0, "div", 90);
365
415
  i0.ɵɵelementEnd();
366
416
  } if (rf & 2) {
367
417
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -372,63 +422,69 @@ function TestingReviewComponent_ng_template_2_Conditional_11_Template(rf, ctx) {
372
422
  i0.ɵɵadvance(7);
373
423
  i0.ɵɵconditional(ctx_r2.FilteredHistoryItems.length === 0 ? 15 : 16);
374
424
  } }
375
- function TestingReviewComponent_ng_template_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
376
- i0.ɵɵelementStart(0, "mj-alert", 26);
425
+ function TestingReviewComponent_ng_template_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
426
+ i0.ɵɵelementStart(0, "mj-alert", 28);
377
427
  i0.ɵɵtext(1, " Low agreement may indicate evaluation criteria need refinement. ");
378
428
  i0.ɵɵelementEnd();
379
429
  } }
380
430
  function TestingReviewComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
381
431
  const _r4 = i0.ɵɵgetCurrentView();
382
432
  i0.ɵɵelementStart(0, "div", 7);
383
- i0.ɵɵconditionalCreate(1, TestingReviewComponent_ng_template_2_Conditional_1_Template, 37, 4, "div", 8);
384
- i0.ɵɵelementStart(2, "div", 9)(3, "div", 10)(4, "button", 11);
385
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetView("queue")); });
386
- i0.ɵɵelement(5, "i", 12);
387
- i0.ɵɵtext(6, " Review Queue ");
433
+ i0.ɵɵconditionalCreate(1, TestingReviewComponent_ng_template_2_Conditional_1_Template, 2, 1, "p", 8);
434
+ i0.ɵɵconditionalCreate(2, TestingReviewComponent_ng_template_2_Conditional_2_Template, 5, 0, "section", 9);
435
+ i0.ɵɵconditionalCreate(3, TestingReviewComponent_ng_template_2_Conditional_3_Template, 37, 4, "div", 10);
436
+ i0.ɵɵelementStart(4, "div", 11)(5, "div", 12)(6, "button", 13);
437
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetView("queue")); });
438
+ i0.ɵɵelement(7, "i", 14);
439
+ i0.ɵɵtext(8, " Review Queue ");
388
440
  i0.ɵɵelementEnd();
389
- i0.ɵɵelementStart(7, "button", 11);
390
- i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetView("history")); });
391
- i0.ɵɵelement(8, "i", 13);
392
- i0.ɵɵtext(9, " History ");
441
+ i0.ɵɵelementStart(9, "button", 13);
442
+ i0.ɵɵlistener("click", function TestingReviewComponent_ng_template_2_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetView("history")); });
443
+ i0.ɵɵelement(10, "i", 15);
444
+ i0.ɵɵtext(11, " History ");
393
445
  i0.ɵɵelementEnd()()();
394
- i0.ɵɵconditionalCreate(10, TestingReviewComponent_ng_template_2_Conditional_10_Template, 3, 1, "div", 14);
395
- i0.ɵɵconditionalCreate(11, TestingReviewComponent_ng_template_2_Conditional_11_Template, 17, 3, "div", 14);
396
- i0.ɵɵelementStart(12, "div", 15)(13, "h3");
397
- i0.ɵɵelement(14, "i", 16);
398
- i0.ɵɵtext(15, " Human vs Auto Agreement ");
446
+ i0.ɵɵconditionalCreate(12, TestingReviewComponent_ng_template_2_Conditional_12_Template, 3, 1, "div", 16);
447
+ i0.ɵɵconditionalCreate(13, TestingReviewComponent_ng_template_2_Conditional_13_Template, 17, 3, "div", 16);
448
+ i0.ɵɵelementStart(14, "div", 17)(15, "h3");
449
+ i0.ɵɵelement(16, "i", 18);
450
+ i0.ɵɵtext(17, " Human vs Auto Agreement ");
399
451
  i0.ɵɵelementEnd();
400
- i0.ɵɵelementStart(16, "div", 17)(17, "div", 18)(18, "div", 19);
452
+ i0.ɵɵelementStart(18, "div", 19)(19, "div", 20)(20, "div", 21);
401
453
  i0.ɵɵnamespaceSVG();
402
- i0.ɵɵelementStart(19, "svg", 20);
403
- i0.ɵɵelement(20, "circle", 21)(21, "circle", 22);
454
+ i0.ɵɵelementStart(21, "svg", 22);
455
+ i0.ɵɵelement(22, "circle", 23)(23, "circle", 24);
404
456
  i0.ɵɵelementEnd();
405
457
  i0.ɵɵnamespaceHTML();
406
- i0.ɵɵelementStart(22, "div", 23);
407
- i0.ɵɵtext(23);
458
+ i0.ɵɵelementStart(24, "div", 25);
459
+ i0.ɵɵtext(25);
408
460
  i0.ɵɵelementEnd()()();
409
- i0.ɵɵelementStart(24, "div", 24)(25, "p", 25);
410
- i0.ɵɵtext(26, " Measures how often human reviewers agree with automated evaluation scores. ");
461
+ i0.ɵɵelementStart(26, "div", 26)(27, "p", 27);
462
+ i0.ɵɵtext(28, " Measures how often human reviewers agree with automated evaluation scores. ");
411
463
  i0.ɵɵelementEnd();
412
- i0.ɵɵconditionalCreate(27, TestingReviewComponent_ng_template_2_Conditional_27_Template, 2, 0, "mj-alert", 26);
464
+ i0.ɵɵconditionalCreate(29, TestingReviewComponent_ng_template_2_Conditional_29_Template, 2, 0, "mj-alert", 28);
413
465
  i0.ɵɵelementEnd()()()();
414
466
  } if (rf & 2) {
415
467
  const ctx_r2 = i0.ɵɵnextContext();
416
468
  i0.ɵɵadvance();
417
- i0.ɵɵconditional(ctx_r2.Metrics ? 1 : -1);
469
+ i0.ɵɵconditional(ctx_r2.DisagreementError ? 1 : -1);
470
+ i0.ɵɵadvance();
471
+ i0.ɵɵconditional(ctx_r2.Disagreement.length ? 2 : -1);
472
+ i0.ɵɵadvance();
473
+ i0.ɵɵconditional(ctx_r2.Metrics ? 3 : -1);
418
474
  i0.ɵɵadvance(3);
419
475
  i0.ɵɵclassProp("active", ctx_r2.CurrentView === "queue");
420
476
  i0.ɵɵadvance(3);
421
477
  i0.ɵɵclassProp("active", ctx_r2.CurrentView === "history");
422
478
  i0.ɵɵadvance(3);
423
- i0.ɵɵconditional(ctx_r2.CurrentView === "queue" ? 10 : -1);
479
+ i0.ɵɵconditional(ctx_r2.CurrentView === "queue" ? 12 : -1);
424
480
  i0.ɵɵadvance();
425
- i0.ɵɵconditional(ctx_r2.CurrentView === "history" ? 11 : -1);
481
+ i0.ɵɵconditional(ctx_r2.CurrentView === "history" ? 13 : -1);
426
482
  i0.ɵɵadvance(10);
427
483
  i0.ɵɵattribute("stroke", ctx_r2.AgreementColor)("stroke-dasharray", ctx_r2.AgreementDash);
428
484
  i0.ɵɵadvance(2);
429
485
  i0.ɵɵtextInterpolate1("", ctx_r2.FormatDecimal(ctx_r2.AgreementRate, 0), "%");
430
486
  i0.ɵɵadvance(4);
431
- i0.ɵɵconditional(ctx_r2.AgreementRate < 70 ? 27 : -1);
487
+ i0.ɵɵconditional(ctx_r2.AgreementRate < 70 ? 29 : -1);
432
488
  } }
433
489
  export class TestingReviewComponent {
434
490
  instrumentationService;
@@ -470,6 +526,8 @@ export class TestingReviewComponent {
470
526
  FilteredHistoryItems = [];
471
527
  Metrics = null;
472
528
  PendingCount = 0;
529
+ Disagreement = [];
530
+ DisagreementError = '';
473
531
  // Constants
474
532
  RatingNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
475
533
  constructor(instrumentationService, cdr) {
@@ -479,6 +537,46 @@ export class TestingReviewComponent {
479
537
  ngOnInit() {
480
538
  this.restoreState();
481
539
  this.setupSubscriptions();
540
+ void this.LoadDisagreement();
541
+ }
542
+ /** Stored cohort means, largest gap first. The view computes the means; this screen does not average a sample. */
543
+ async LoadDisagreement() {
544
+ try {
545
+ const provider = this.instrumentationService.Provider;
546
+ if (!provider)
547
+ return;
548
+ const view = RunView.FromMetadataProvider(provider);
549
+ const scores = await view.RunView({
550
+ EntityName: 'MJ: Rubric Evaluation Scores',
551
+ ExtraFilter: `EvaluationStatus = 'Submitted' AND CriterionCohortHumanMeanScore IS NOT NULL AND CriterionCohortAIMeanScore IS NOT NULL`,
552
+ ResultType: 'simple',
553
+ MaxRows: 1000,
554
+ });
555
+ if (!scores.Success)
556
+ throw new Error(scores.ErrorMessage || 'Could not load scores.');
557
+ this.Disagreement = CohortDisagreement((scores.Results ?? []).map(row => ({
558
+ CriterionKey: row.CriterionKey,
559
+ Criterion: row.Criterion,
560
+ CriterionCohortHumanMeanScore: row.CriterionCohortHumanMeanScore,
561
+ CriterionCohortAIMeanScore: row.CriterionCohortAIMeanScore,
562
+ SubjectRecordID: row.SubjectRecordID,
563
+ ContextRecordID: row.ContextRecordID,
564
+ RubricID: row.RubricID,
565
+ RubricMajorVersion: row.RubricMajorVersion,
566
+ })));
567
+ this.DisagreementError = '';
568
+ this.cdr.markForCheck();
569
+ }
570
+ catch (error) {
571
+ this.Disagreement = [];
572
+ this.DisagreementError = error instanceof Error ? error.message : 'Could not load disagreement.';
573
+ this.cdr.markForCheck();
574
+ }
575
+ }
576
+ OpenRun(runId) {
577
+ if (!runId)
578
+ return;
579
+ SharedService.Instance.OpenEntityRecord('MJ: Test Runs', CompositeKey.FromID(runId));
482
580
  }
483
581
  ngOnDestroy() {
484
582
  this.destroy$.next();
@@ -715,12 +813,12 @@ export class TestingReviewComponent {
715
813
  });
716
814
  }
717
815
  static ɵfac = function TestingReviewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestingReviewComponent)(i0.ɵɵdirectiveInject(i1.TestingInstrumentationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
718
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingReviewComponent, selectors: [["app-testing-review"]], inputs: { InitialState: "InitialState", initialState: "initialState", HideToolbar: "HideToolbar" }, outputs: { StateChange: "StateChange", stateChange: "stateChange" }, standalone: false, decls: 4, vars: 1, consts: [["content", ""], [4, "ngTemplateOutlet"], ["Title", "Human Review", "Icon", "fa-solid fa-clipboard-check", "Subtitle", "Human-in-the-loop review for test outcomes"], ["meta", ""], ["Icon", "fa-solid fa-hourglass-half", "Label", "pending", "Variant", "warning", 3, "Count"], ["actions", ""], [3, "Clicked", "Loading"], [1, "review-page"], [1, "kpi-row"], [1, "view-toggle-bar"], [1, "toggle-group"], [1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-list-check"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "content-card"], [1, "calibration-section"], [1, "fa-solid", "fa-scale-balanced"], [1, "calibration-body"], [1, "gauge-display"], [1, "gauge-ring"], ["viewBox", "0 0 120 120", 1, "gauge-svg"], ["cx", "60", "cy", "60", "r", "52", "fill", "none", "stroke-width", "10", 1, "gauge-track"], ["cx", "60", "cy", "60", "r", "52", "fill", "none", "stroke-width", "10", "stroke-linecap", "round", "stroke-dashoffset", "0", "transform", "rotate(-90 60 60)"], [1, "gauge-value"], [1, "calibration-text"], [1, "calibration-description"], ["Variant", "warning"], [1, "kpi-card"], [1, "kpi-icon", "orange"], [1, "fa-solid", "fa-hourglass-half"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", "green"], [1, "fa-solid", "fa-check-circle"], [1, "kpi-icon", "gold"], [1, "fa-solid", "fa-star"], [1, "kpi-unit"], [1, "kpi-icon", "blue"], [1, "fa-solid", "fa-handshake"], ["Variant", "success", "Title", "All caught up!", "Message", "No tests currently require human review."], [1, "queue-list"], ["Size", "sm", 3, "FlushBody", "Expanded"], ["Size", "sm", 3, "ExpandedChange", "FlushBody", "Expanded"], ["mjAccordionTitle", ""], ["mjAccordionActions", ""], ["mjAccordionBody", ""], [1, "item-info"], [1, "item-name"], [1, "item-meta"], [1, "meta-time"], [1, "fa-solid", "fa-clock"], [3, "score", "showBar"], [3, "status"], [1, "reason-badge"], [1, "fa-solid", "fa-comment-slash"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "fa-solid", "fa-circle-question"], [1, "review-form-panel"], [1, "form-section"], [1, "form-label"], [1, "rating-row"], [1, "rating-circle", 3, "selected", "current"], [1, "rating-display"], [1, "correctness-row"], [1, "correctness-btn", "correct", 3, "click"], [1, "fa-solid", "fa-check"], [1, "correctness-btn", "incorrect", 3, "click"], [1, "fa-solid", "fa-xmark"], ["rows", "3", "placeholder", "Add any comments about this evaluation...", 1, "notes-textarea", 3, "input", "value"], [1, "form-actions"], [1, "submit-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-paper-plane"], [1, "skip-btn", 3, "click"], [1, "fa-solid", "fa-forward"], [1, "rating-circle", 3, "click"], [1, "history-filters"], [1, "search-wrapper"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search by test name...", 3, "input", "value"], [1, "sort-control"], [3, "change", "value"], ["value", "date"], ["value", "rating"], ["value", "test-name"], ["Icon", "fa-solid fa-folder-open", "Title", "No reviewed items", "Message", "Reviewed tests will appear here once feedback is submitted."], [1, "history-list"], [1, "history-item"], [1, "history-item-main"], [1, "history-name"], [1, "history-date"], [1, "fa-solid", "fa-calendar"], [1, "history-rating"], [1, "rating-dots"], [1, "rating-dot", 3, "filled"], [1, "rating-label"], [1, "history-verdict"], [1, "verdict", "correct"], [1, "verdict", "incorrect"], [1, "history-auto-score"], [1, "history-comments", 3, "expanded"], [1, "rating-dot"], [1, "history-comments", 3, "click"]], template: function TestingReviewComponent_Template(rf, ctx) { if (rf & 1) {
816
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingReviewComponent, selectors: [["app-testing-review"]], inputs: { InitialState: "InitialState", initialState: "initialState", HideToolbar: "HideToolbar" }, outputs: { StateChange: "StateChange", stateChange: "stateChange" }, standalone: false, decls: 4, vars: 1, consts: [["content", ""], [4, "ngTemplateOutlet"], ["Title", "Human Review", "Icon", "fa-solid fa-clipboard-check", "Subtitle", "Human-in-the-loop review for test outcomes"], ["meta", ""], ["Icon", "fa-solid fa-hourglass-half", "Label", "pending", "Variant", "warning", 3, "Count"], ["actions", ""], [3, "Clicked", "Loading"], [1, "review-page"], ["role", "alert"], ["aria-label", "Rubric disagreement", 1, "rubric-disagreement"], [1, "kpi-row"], [1, "view-toggle-bar"], [1, "toggle-group"], [1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-list-check"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "content-card"], [1, "calibration-section"], [1, "fa-solid", "fa-scale-balanced"], [1, "calibration-body"], [1, "gauge-display"], [1, "gauge-ring"], ["viewBox", "0 0 120 120", 1, "gauge-svg"], ["cx", "60", "cy", "60", "r", "52", "fill", "none", "stroke-width", "10", 1, "gauge-track"], ["cx", "60", "cy", "60", "r", "52", "fill", "none", "stroke-width", "10", "stroke-linecap", "round", "stroke-dashoffset", "0", "transform", "rotate(-90 60 60)"], [1, "gauge-value"], [1, "calibration-text"], [1, "calibration-description"], ["Variant", "warning"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "kpi-card"], [1, "kpi-icon", "orange"], [1, "fa-solid", "fa-hourglass-half"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", "green"], [1, "fa-solid", "fa-check-circle"], [1, "kpi-icon", "gold"], [1, "fa-solid", "fa-star"], [1, "kpi-unit"], [1, "kpi-icon", "blue"], [1, "fa-solid", "fa-handshake"], ["Variant", "success", "Title", "All caught up!", "Message", "No tests currently require human review."], [1, "queue-list"], ["Size", "sm", 3, "FlushBody", "Expanded"], ["Size", "sm", 3, "ExpandedChange", "FlushBody", "Expanded"], ["mjAccordionTitle", ""], ["mjAccordionActions", ""], ["mjAccordionBody", ""], [1, "item-info"], [1, "item-name"], [1, "item-meta"], [1, "meta-time"], [1, "fa-solid", "fa-clock"], [3, "score", "showBar"], [3, "status"], [1, "reason-badge"], [1, "fa-solid", "fa-comment-slash"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "fa-solid", "fa-circle-question"], [1, "review-form-panel"], [1, "form-section"], [1, "form-label"], [1, "rating-row"], [1, "rating-circle", 3, "selected", "current"], [1, "rating-display"], [1, "correctness-row"], [1, "correctness-btn", "correct", 3, "click"], [1, "fa-solid", "fa-check"], [1, "correctness-btn", "incorrect", 3, "click"], [1, "fa-solid", "fa-xmark"], ["rows", "3", "placeholder", "Add any comments about this evaluation...", 1, "notes-textarea", 3, "input", "value"], [1, "form-actions"], [1, "submit-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-paper-plane"], [1, "skip-btn", 3, "click"], [1, "fa-solid", "fa-forward"], [1, "rating-circle", 3, "click"], [1, "history-filters"], [1, "search-wrapper"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search by test name...", 3, "input", "value"], [1, "sort-control"], [3, "change", "value"], ["value", "date"], ["value", "rating"], ["value", "test-name"], ["Icon", "fa-solid fa-folder-open", "Title", "No reviewed items", "Message", "Reviewed tests will appear here once feedback is submitted."], [1, "history-list"], [1, "history-item"], [1, "history-item-main"], [1, "history-name"], [1, "history-date"], [1, "fa-solid", "fa-calendar"], [1, "history-rating"], [1, "rating-dots"], [1, "rating-dot", 3, "filled"], [1, "rating-label"], [1, "history-verdict"], [1, "verdict", "correct"], [1, "verdict", "incorrect"], [1, "history-auto-score"], [1, "history-comments", 3, "expanded"], [1, "rating-dot"], [1, "history-comments", 3, "click"]], template: function TestingReviewComponent_Template(rf, ctx) { if (rf & 1) {
719
817
  i0.ɵɵconditionalCreate(0, TestingReviewComponent_Conditional_0_Template, 1, 1, "ng-container")(1, TestingReviewComponent_Conditional_1_Template, 8, 3, "mj-page-layout");
720
- i0.ɵɵtemplate(2, TestingReviewComponent_ng_template_2_Template, 28, 11, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
818
+ i0.ɵɵtemplate(2, TestingReviewComponent_ng_template_2_Template, 30, 13, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
721
819
  } if (rf & 2) {
722
820
  i0.ɵɵconditional(ctx.HideToolbar ? 0 : 1);
723
- } }, dependencies: [i2.NgTemplateOutlet, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i4.MJPageHeaderComponent, i4.MJPageLayoutComponent, i4.MJPageBodyComponent, i4.MJStatBadgeComponent, i4.MJRefreshButtonComponent, i5.TestStatusBadgeComponent, i5.ScoreIndicatorComponent, i4.MJEmptyStateComponent, i4.MJAlertComponent, i4.MJAccordionPanelComponent, i4.MJAccordionTitleDirective, i4.MJAccordionActionsDirective, i4.MJAccordionBodyDirective], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n\n .review-page[_ngcontent-%COMP%] {\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n \n .page-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n background: var(--mj-bg-surface);\n padding: 20px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .pending-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 14px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-warning);\n border-radius: 20px;\n }\n\n .badge-count[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-text-inverse);\n min-width: 24px;\n height: 24px;\n padding: 0 6px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 700;\n }\n\n .badge-text[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-status-warning);\n }\n\n .refresh-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .refresh-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n }\n\n .refresh-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\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 padding: 20px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n }\n\n .kpi-icon.orange[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .kpi-icon.green[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .kpi-icon.gold[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .kpi-icon.blue[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n\n .kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 26px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n margin-bottom: 4px;\n }\n\n .kpi-unit[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n }\n\n .kpi-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n \n .view-toggle-bar[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .toggle-group[_ngcontent-%COMP%] {\n display: inline-flex;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n }\n\n .toggle-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 24px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .toggle-btn[_ngcontent-%COMP%]:hover:not(.active) {\n background: var(--mj-bg-surface-card);\n }\n\n .toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n \n .content-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n margin-bottom: 20px;\n }\n\n \n .queue-list[_ngcontent-%COMP%] {\n max-height: 600px;\n overflow-y: auto;\n }\n\n \n\n\n\n\n .item-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .item-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 6px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n font-size: 12px;\n color: var(--mj-text-muted);\n align-items: center;\n flex-wrap: wrap;\n }\n\n .meta-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n }\n\n \n\n\n .reason-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 16px;\n font-size: 11px;\n font-weight: 600;\n }\n\n .reason-no-feedback[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .reason-high-score-failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .reason-low-score-passed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n \n\n\n \n\n\n .review-form-panel[_ngcontent-%COMP%] {\n padding: 20px 20px 20px 36px;\n background: var(--mj-bg-surface);\n }\n\n .form-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .form-section[_ngcontent-%COMP%]:last-of-type {\n margin-bottom: 16px;\n }\n\n .form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 10px;\n }\n\n \n .rating-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .rating-circle[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border: 2px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-disabled);\n font-size: 13px;\n font-weight: 700;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n }\n\n .rating-circle[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: scale(1.1);\n }\n\n .rating-circle.selected[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .rating-circle.current[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .rating-display[_ngcontent-%COMP%] {\n margin-left: 12px;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n \n .correctness-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n }\n\n .correctness-btn[_ngcontent-%COMP%] {\n flex: 1;\n max-width: 200px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 10px;\n background: var(--mj-bg-surface-card);\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .correctness-btn.correct[_ngcontent-%COMP%]:hover, \n .correctness-btn.correct.active[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .correctness-btn.incorrect[_ngcontent-%COMP%]:hover, \n .correctness-btn.incorrect.active[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n \n .notes-textarea[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 500px;\n padding: 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n min-height: 72px;\n box-sizing: border-box;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n }\n\n .notes-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n \n .form-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n }\n\n .submit-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 11px 22px;\n border: none;\n border-radius: 8px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .submit-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .submit-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .skip-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 11px 20px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .skip-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n }\n\n \n .history-filters[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n align-items: center;\n }\n\n .search-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-wrapper[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n }\n\n .search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n .search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .sort-control[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n }\n\n .sort-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n \n .history-list[_ngcontent-%COMP%] {\n max-height: 600px;\n overflow-y: auto;\n }\n\n .history-item[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n }\n\n .history-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .history-item-main[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 160px;\n }\n\n .history-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .history-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n }\n\n .history-rating[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .rating-dots[_ngcontent-%COMP%] {\n display: flex;\n gap: 3px;\n }\n\n .rating-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: var(--mj-border-default);\n }\n\n .rating-dot.filled[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n }\n\n .rating-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n }\n\n .history-verdict[_ngcontent-%COMP%] {\n flex-shrink: 0;\n }\n\n .verdict[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 14px;\n font-size: 11px;\n font-weight: 600;\n }\n\n .verdict.correct[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .verdict.incorrect[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .history-auto-score[_ngcontent-%COMP%] {\n flex-shrink: 0;\n }\n\n .history-comments[_ngcontent-%COMP%] {\n width: 100%;\n margin-top: 8px;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border-left: 3px solid var(--mj-brand-primary);\n cursor: pointer;\n }\n\n .history-comments[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .history-comments.expanded[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n white-space: normal;\n }\n\n \n .calibration-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 24px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .calibration-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .calibration-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .calibration-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 32px;\n }\n\n .gauge-display[_ngcontent-%COMP%] {\n flex-shrink: 0;\n }\n\n .gauge-ring[_ngcontent-%COMP%] {\n position: relative;\n width: 120px;\n height: 120px;\n }\n\n .gauge-svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n }\n\n .gauge-track[_ngcontent-%COMP%] {\n stroke: var(--mj-border-default);\n }\n\n .gauge-value[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n font-weight: 800;\n color: var(--mj-text-primary);\n }\n\n .calibration-text[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .calibration-description[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-muted);\n line-height: 1.6;\n }\n\n\n \n\n\n \n @media (max-width: 1024px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 768px) {\n .review-page[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .page-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .kpi-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 22px;\n }\n\n .correctness-row[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .correctness-btn[_ngcontent-%COMP%] {\n max-width: 100%;\n }\n\n .history-item[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .calibration-body[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: center;\n text-align: center;\n }\n }"], changeDetection: 0 });
821
+ } }, dependencies: [i2.NgTemplateOutlet, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i4.MJButtonDirective, i4.MJPageHeaderComponent, i4.MJPageLayoutComponent, i4.MJPageBodyComponent, i4.MJStatBadgeComponent, i4.MJRefreshButtonComponent, i5.TestStatusBadgeComponent, i5.ScoreIndicatorComponent, i4.MJEmptyStateComponent, i4.MJAlertComponent, i4.MJAccordionPanelComponent, i4.MJAccordionTitleDirective, i4.MJAccordionActionsDirective, i4.MJAccordionBodyDirective], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n\n .review-page[_ngcontent-%COMP%] {\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n \n .page-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n background: var(--mj-bg-surface);\n padding: 20px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .pending-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 14px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-warning);\n border-radius: 20px;\n }\n\n .badge-count[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-text-inverse);\n min-width: 24px;\n height: 24px;\n padding: 0 6px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 700;\n }\n\n .badge-text[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-status-warning);\n }\n\n .refresh-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .refresh-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n }\n\n .refresh-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\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 padding: 20px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n }\n\n .kpi-icon.orange[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .kpi-icon.green[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .kpi-icon.gold[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .kpi-icon.blue[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n\n .kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 26px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n margin-bottom: 4px;\n }\n\n .kpi-unit[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n }\n\n .kpi-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n \n .view-toggle-bar[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .toggle-group[_ngcontent-%COMP%] {\n display: inline-flex;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n }\n\n .toggle-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 24px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .toggle-btn[_ngcontent-%COMP%]:hover:not(.active) {\n background: var(--mj-bg-surface-card);\n }\n\n .toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n \n .content-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n margin-bottom: 20px;\n }\n\n \n .queue-list[_ngcontent-%COMP%] {\n max-height: 600px;\n overflow-y: auto;\n }\n\n \n\n\n\n\n .item-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .item-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 6px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n font-size: 12px;\n color: var(--mj-text-muted);\n align-items: center;\n flex-wrap: wrap;\n }\n\n .meta-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 5px;\n }\n\n \n\n\n .reason-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 16px;\n font-size: 11px;\n font-weight: 600;\n }\n\n .reason-no-feedback[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .reason-high-score-failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .reason-low-score-passed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n \n\n\n \n\n\n .review-form-panel[_ngcontent-%COMP%] {\n padding: 20px 20px 20px 36px;\n background: var(--mj-bg-surface);\n }\n\n .form-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .form-section[_ngcontent-%COMP%]:last-of-type {\n margin-bottom: 16px;\n }\n\n .form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 10px;\n }\n\n \n .rating-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .rating-circle[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border: 2px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-disabled);\n font-size: 13px;\n font-weight: 700;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n }\n\n .rating-circle[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: scale(1.1);\n }\n\n .rating-circle.selected[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .rating-circle.current[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n box-shadow: var(--mj-shadow-sm);\n }\n\n .rating-display[_ngcontent-%COMP%] {\n margin-left: 12px;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n \n .correctness-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n }\n\n .correctness-btn[_ngcontent-%COMP%] {\n flex: 1;\n max-width: 200px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px 20px;\n border: 2px solid var(--mj-border-strong);\n border-radius: 10px;\n background: var(--mj-bg-surface-card);\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .correctness-btn.correct[_ngcontent-%COMP%]:hover, \n .correctness-btn.correct.active[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .correctness-btn.incorrect[_ngcontent-%COMP%]:hover, \n .correctness-btn.incorrect.active[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n \n .notes-textarea[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 500px;\n padding: 12px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n min-height: 72px;\n box-sizing: border-box;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n }\n\n .notes-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n \n .form-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n }\n\n .submit-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 11px 22px;\n border: none;\n border-radius: 8px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .submit-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .submit-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .skip-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 11px 20px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .skip-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n }\n\n \n .history-filters[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n align-items: center;\n }\n\n .search-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-wrapper[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n }\n\n .search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n .search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .sort-control[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--mj-text-muted);\n flex-shrink: 0;\n }\n\n .sort-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n \n .history-list[_ngcontent-%COMP%] {\n max-height: 600px;\n overflow-y: auto;\n }\n\n .history-item[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n }\n\n .history-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .history-item-main[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 160px;\n }\n\n .history-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .history-date[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n }\n\n .history-rating[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .rating-dots[_ngcontent-%COMP%] {\n display: flex;\n gap: 3px;\n }\n\n .rating-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: var(--mj-border-default);\n }\n\n .rating-dot.filled[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n }\n\n .rating-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n }\n\n .history-verdict[_ngcontent-%COMP%] {\n flex-shrink: 0;\n }\n\n .verdict[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border-radius: 14px;\n font-size: 11px;\n font-weight: 600;\n }\n\n .verdict.correct[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .verdict.incorrect[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .history-auto-score[_ngcontent-%COMP%] {\n flex-shrink: 0;\n }\n\n .history-comments[_ngcontent-%COMP%] {\n width: 100%;\n margin-top: 8px;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border-left: 3px solid var(--mj-brand-primary);\n cursor: pointer;\n }\n\n .history-comments[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .history-comments.expanded[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n white-space: normal;\n }\n\n \n .calibration-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 24px;\n border-radius: 12px;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .calibration-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .calibration-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .calibration-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 32px;\n }\n\n .gauge-display[_ngcontent-%COMP%] {\n flex-shrink: 0;\n }\n\n .gauge-ring[_ngcontent-%COMP%] {\n position: relative;\n width: 120px;\n height: 120px;\n }\n\n .gauge-svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n }\n\n .gauge-track[_ngcontent-%COMP%] {\n stroke: var(--mj-border-default);\n }\n\n .gauge-value[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n font-weight: 800;\n color: var(--mj-text-primary);\n }\n\n .calibration-text[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .calibration-description[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-muted);\n line-height: 1.6;\n }\n\n\n \n\n\n \n @media (max-width: 1024px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (max-width: 768px) {\n .review-page[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .page-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .kpi-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 22px;\n }\n\n .correctness-row[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .correctness-btn[_ngcontent-%COMP%] {\n max-width: 100%;\n }\n\n .history-item[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .calibration-body[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: center;\n text-align: center;\n }\n }"], changeDetection: 0 });
724
822
  }
725
823
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingReviewComponent, [{
726
824
  type: Component,
@@ -756,6 +854,24 @@ export class TestingReviewComponent {
756
854
  <ng-template #content>
757
855
  <!-- Inner page content -->
758
856
  <div class="review-page">
857
+ @if (DisagreementError) {
858
+ <p role="alert">{{ DisagreementError }}</p>
859
+ }
860
+ @if (Disagreement.length) {
861
+ <section class="rubric-disagreement" aria-label="Rubric disagreement">
862
+ <h3>Rubric disagreement</h3>
863
+ @for (row of Disagreement; track $index) {
864
+ <p>
865
+ {{ row.name }}
866
+ CriterionKey <code>{{ row.key }}</code>
867
+ — human {{ row.humanMean }} / AI {{ row.aiMean }}
868
+ @if (row.runId) {
869
+ <button type="button" mjButton variant="secondary" size="sm" (click)="OpenRun(row.runId)">Open run</button>
870
+ }
871
+ </p>
872
+ }
873
+ </section>
874
+ }
759
875
 
760
876
  <!-- KPI Summary Row -->
761
877
  @if (Metrics) {
@@ -1041,5 +1157,5 @@ export class TestingReviewComponent {
1041
1157
  }], stateChange: [{
1042
1158
  type: Output
1043
1159
  }] }); })();
1044
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingReviewComponent, { className: "TestingReviewComponent", filePath: "src/Testing/components/testing-review.component.ts", lineNumber: 1107 }); })();
1160
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingReviewComponent, { className: "TestingReviewComponent", filePath: "src/Testing/components/testing-review.component.ts", lineNumber: 1128 }); })();
1045
1161
  //# sourceMappingURL=testing-review.component.js.map