@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
@@ -1,4 +1,6 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, inject } from '@angular/core';
2
+ import { TestingInstrumentationService } from '../../services/testing-instrumentation.service';
3
+ import { RubricRunView } from '@memberjunction/ng-testing';
2
4
  import * as i0 from "@angular/core";
3
5
  import * as i1 from "@angular/forms";
4
6
  import * as i2 from "@memberjunction/ng-testing";
@@ -7,9 +9,9 @@ import * as i4 from "./oracle-breakdown-table.component";
7
9
  import * as i5 from "@angular/common";
8
10
  function TestRunDetailPanelComponent_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
9
11
  const _r2 = i0.ɵɵgetCurrentView();
10
- i0.ɵɵelementStart(0, "button", 33);
12
+ i0.ɵɵelementStart(0, "button", 34);
11
13
  i0.ɵɵlistener("click", function TestRunDetailPanelComponent_Conditional_0_Conditional_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onClose()); });
12
- i0.ɵɵelement(1, "i", 34);
14
+ i0.ɵɵelement(1, "i", 35);
13
15
  i0.ɵɵelementEnd();
14
16
  } }
15
17
  function TestRunDetailPanelComponent_Conditional_0_Conditional_31_Template(rf, ctx) { if (rf & 1) {
@@ -17,9 +19,9 @@ function TestRunDetailPanelComponent_Conditional_0_Conditional_31_Template(rf, c
17
19
  i0.ɵɵelementStart(0, "div", 13)(1, "div", 14);
18
20
  i0.ɵɵtext(2, "Target");
19
21
  i0.ɵɵelementEnd();
20
- i0.ɵɵelementStart(3, "div", 35);
22
+ i0.ɵɵelementStart(3, "div", 36);
21
23
  i0.ɵɵlistener("click", function TestRunDetailPanelComponent_Conditional_0_Conditional_31_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onViewTarget()); });
22
- i0.ɵɵelement(4, "i", 36);
24
+ i0.ɵɵelement(4, "i", 37);
23
25
  i0.ɵɵtext(5);
24
26
  i0.ɵɵelementEnd()();
25
27
  } if (rf & 2) {
@@ -29,19 +31,25 @@ function TestRunDetailPanelComponent_Conditional_0_Conditional_31_Template(rf, c
29
31
  } }
30
32
  function TestRunDetailPanelComponent_Conditional_0_Conditional_32_Template(rf, ctx) { if (rf & 1) {
31
33
  i0.ɵɵelementStart(0, "div", 18);
32
- i0.ɵɵelement(1, "app-oracle-breakdown-table", 37);
34
+ i0.ɵɵelement(1, "app-oracle-breakdown-table", 38);
33
35
  i0.ɵɵelementEnd();
34
36
  } if (rf & 2) {
35
37
  const ctx_r2 = i0.ɵɵnextContext(2);
36
38
  i0.ɵɵadvance();
37
39
  i0.ɵɵproperty("results", ctx_r2.oracleResults);
38
40
  } }
39
- function TestRunDetailPanelComponent_Conditional_0_Conditional_33_ng_template_2_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelement(0, "i", 41);
41
+ function TestRunDetailPanelComponent_Conditional_0_Conditional_33_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelement(0, "mj-testing-rubric-result", 19);
43
+ } if (rf & 2) {
44
+ const ctx_r2 = i0.ɵɵnextContext(2);
45
+ i0.ɵɵproperty("OracleResults", ctx_r2.oracleResults)("Provider", ctx_r2.SessionProvider);
46
+ } }
47
+ function TestRunDetailPanelComponent_Conditional_0_Conditional_34_ng_template_2_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelement(0, "i", 42);
41
49
  i0.ɵɵtext(1, " Result Details ");
42
50
  } }
43
- function TestRunDetailPanelComponent_Conditional_0_Conditional_33_ng_template_3_Template(rf, ctx) { if (rf & 1) {
44
- i0.ɵɵelementStart(0, "div", 42)(1, "pre", 43);
51
+ function TestRunDetailPanelComponent_Conditional_0_Conditional_34_ng_template_3_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementStart(0, "div", 43)(1, "pre", 44);
45
53
  i0.ɵɵtext(2);
46
54
  i0.ɵɵelementEnd()();
47
55
  } if (rf & 2) {
@@ -49,11 +57,11 @@ function TestRunDetailPanelComponent_Conditional_0_Conditional_33_ng_template_3_
49
57
  i0.ɵɵadvance(2);
50
58
  i0.ɵɵtextInterpolate(ctx_r2.formatJSON(ctx_r2.resultDetails));
51
59
  } }
52
- function TestRunDetailPanelComponent_Conditional_0_Conditional_33_Template(rf, ctx) { if (rf & 1) {
60
+ function TestRunDetailPanelComponent_Conditional_0_Conditional_34_Template(rf, ctx) { if (rf & 1) {
53
61
  const _r5 = i0.ɵɵgetCurrentView();
54
- i0.ɵɵelementStart(0, "div", 19)(1, "mj-accordion-panel", 38);
55
- i0.ɵɵtwoWayListener("ExpandedChange", function TestRunDetailPanelComponent_Conditional_0_Conditional_33_Template_mj_accordion_panel_ExpandedChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.showResultDetails, $event) || (ctx_r2.showResultDetails = $event); return i0.ɵɵresetView($event); });
56
- i0.ɵɵtemplate(2, TestRunDetailPanelComponent_Conditional_0_Conditional_33_ng_template_2_Template, 2, 0, "ng-template", 39)(3, TestRunDetailPanelComponent_Conditional_0_Conditional_33_ng_template_3_Template, 3, 1, "ng-template", 40);
62
+ i0.ɵɵelementStart(0, "div", 20)(1, "mj-accordion-panel", 39);
63
+ i0.ɵɵtwoWayListener("ExpandedChange", function TestRunDetailPanelComponent_Conditional_0_Conditional_34_Template_mj_accordion_panel_ExpandedChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.showResultDetails, $event) || (ctx_r2.showResultDetails = $event); return i0.ɵɵresetView($event); });
64
+ i0.ɵɵtemplate(2, TestRunDetailPanelComponent_Conditional_0_Conditional_34_ng_template_2_Template, 2, 0, "ng-template", 40)(3, TestRunDetailPanelComponent_Conditional_0_Conditional_34_ng_template_3_Template, 3, 1, "ng-template", 41);
57
65
  i0.ɵɵelementEnd()();
58
66
  } if (rf & 2) {
59
67
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -98,36 +106,37 @@ function TestRunDetailPanelComponent_Conditional_0_Template(rf, ctx) { if (rf &
98
106
  i0.ɵɵconditionalCreate(31, TestRunDetailPanelComponent_Conditional_0_Conditional_31_Template, 6, 1, "div", 13);
99
107
  i0.ɵɵelementEnd();
100
108
  i0.ɵɵconditionalCreate(32, TestRunDetailPanelComponent_Conditional_0_Conditional_32_Template, 2, 1, "div", 18);
101
- i0.ɵɵconditionalCreate(33, TestRunDetailPanelComponent_Conditional_0_Conditional_33_Template, 4, 2, "div", 19);
102
- i0.ɵɵelementStart(34, "div", 20)(35, "div", 21)(36, "h4");
103
- i0.ɵɵelement(37, "i", 22);
104
- i0.ɵɵtext(38, " Human Feedback ");
109
+ i0.ɵɵconditionalCreate(33, TestRunDetailPanelComponent_Conditional_0_Conditional_33_Template, 1, 2, "mj-testing-rubric-result", 19);
110
+ i0.ɵɵconditionalCreate(34, TestRunDetailPanelComponent_Conditional_0_Conditional_34_Template, 4, 2, "div", 20);
111
+ i0.ɵɵelementStart(35, "div", 21)(36, "div", 22)(37, "h4");
112
+ i0.ɵɵelement(38, "i", 23);
113
+ i0.ɵɵtext(39, " Human Feedback ");
105
114
  i0.ɵɵelementEnd()();
106
- i0.ɵɵelementStart(39, "div", 23)(40, "div", 24)(41, "div", 25)(42, "label");
107
- i0.ɵɵtext(43, "Rating (1-10)");
115
+ i0.ɵɵelementStart(40, "div", 24)(41, "div", 25)(42, "div", 26)(43, "label");
116
+ i0.ɵɵtext(44, "Rating (1-10)");
108
117
  i0.ɵɵelementEnd();
109
- i0.ɵɵelementStart(44, "input", 26);
110
- i0.ɵɵtwoWayListener("ngModelChange", function TestRunDetailPanelComponent_Conditional_0_Template_input_ngModelChange_44_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.feedbackRating, $event) || (ctx_r2.feedbackRating = $event); return i0.ɵɵresetView($event); });
118
+ i0.ɵɵelementStart(45, "input", 27);
119
+ i0.ɵɵtwoWayListener("ngModelChange", function TestRunDetailPanelComponent_Conditional_0_Template_input_ngModelChange_45_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.feedbackRating, $event) || (ctx_r2.feedbackRating = $event); return i0.ɵɵresetView($event); });
111
120
  i0.ɵɵelementEnd()();
112
- i0.ɵɵelementStart(45, "div", 25)(46, "label");
113
- i0.ɵɵtext(47, "Is Correct?");
121
+ i0.ɵɵelementStart(46, "div", 26)(47, "label");
122
+ i0.ɵɵtext(48, "Is Correct?");
114
123
  i0.ɵɵelementEnd();
115
- i0.ɵɵelementStart(48, "div", 27)(49, "label", 28)(50, "input", 29);
116
- i0.ɵɵtwoWayListener("ngModelChange", function TestRunDetailPanelComponent_Conditional_0_Template_input_ngModelChange_50_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.feedbackIsCorrect, $event) || (ctx_r2.feedbackIsCorrect = $event); return i0.ɵɵresetView($event); });
124
+ i0.ɵɵelementStart(49, "div", 28)(50, "label", 29)(51, "input", 30);
125
+ i0.ɵɵtwoWayListener("ngModelChange", function TestRunDetailPanelComponent_Conditional_0_Template_input_ngModelChange_51_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.feedbackIsCorrect, $event) || (ctx_r2.feedbackIsCorrect = $event); return i0.ɵɵresetView($event); });
117
126
  i0.ɵɵelementEnd();
118
- i0.ɵɵelementStart(51, "span");
119
- i0.ɵɵtext(52, "Yes, the automated result is correct");
127
+ i0.ɵɵelementStart(52, "span");
128
+ i0.ɵɵtext(53, "Yes, the automated result is correct");
120
129
  i0.ɵɵelementEnd()()()()();
121
- i0.ɵɵelementStart(53, "div", 25)(54, "label");
122
- i0.ɵɵtext(55, "Comments");
130
+ i0.ɵɵelementStart(54, "div", 26)(55, "label");
131
+ i0.ɵɵtext(56, "Comments");
123
132
  i0.ɵɵelementEnd();
124
- i0.ɵɵelementStart(56, "textarea", 30);
125
- i0.ɵɵtwoWayListener("ngModelChange", function TestRunDetailPanelComponent_Conditional_0_Template_textarea_ngModelChange_56_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.feedbackComments, $event) || (ctx_r2.feedbackComments = $event); return i0.ɵɵresetView($event); });
133
+ i0.ɵɵelementStart(57, "textarea", 31);
134
+ i0.ɵɵtwoWayListener("ngModelChange", function TestRunDetailPanelComponent_Conditional_0_Template_textarea_ngModelChange_57_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.feedbackComments, $event) || (ctx_r2.feedbackComments = $event); return i0.ɵɵresetView($event); });
126
135
  i0.ɵɵelementEnd()();
127
- i0.ɵɵelementStart(57, "button", 31);
128
- i0.ɵɵlistener("click", function TestRunDetailPanelComponent_Conditional_0_Template_button_click_57_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSubmitFeedback()); });
129
- i0.ɵɵelement(58, "i", 32);
130
- i0.ɵɵtext(59);
136
+ i0.ɵɵelementStart(58, "button", 32);
137
+ i0.ɵɵlistener("click", function TestRunDetailPanelComponent_Conditional_0_Template_button_click_58_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSubmitFeedback()); });
138
+ i0.ɵɵelement(59, "i", 33);
139
+ i0.ɵɵtext(60);
131
140
  i0.ɵɵelementEnd()()()()();
132
141
  } if (rf & 2) {
133
142
  const ctx_r2 = i0.ɵɵnextContext();
@@ -136,7 +145,7 @@ function TestRunDetailPanelComponent_Conditional_0_Template(rf, ctx) { if (rf &
136
145
  i0.ɵɵadvance(4);
137
146
  i0.ɵɵtextInterpolate1(" ", ctx_r2.testRun.testType, " ");
138
147
  i0.ɵɵadvance(3);
139
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(12, 19, ctx_r2.testRun.runDateTime, "medium"), " ");
148
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(12, 20, ctx_r2.testRun.runDateTime, "medium"), " ");
140
149
  i0.ɵɵadvance(3);
141
150
  i0.ɵɵproperty("status", ctx_r2.testRun.status);
142
151
  i0.ɵɵadvance();
@@ -152,7 +161,9 @@ function TestRunDetailPanelComponent_Conditional_0_Template(rf, ctx) { if (rf &
152
161
  i0.ɵɵadvance();
153
162
  i0.ɵɵconditional(ctx_r2.oracleResults && ctx_r2.oracleResults.length > 0 ? 32 : -1);
154
163
  i0.ɵɵadvance();
155
- i0.ɵɵconditional(ctx_r2.resultDetails ? 33 : -1);
164
+ i0.ɵɵconditional(ctx_r2.RubricView ? 33 : -1);
165
+ i0.ɵɵadvance();
166
+ i0.ɵɵconditional(ctx_r2.resultDetails ? 34 : -1);
156
167
  i0.ɵɵadvance(11);
157
168
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.feedbackRating);
158
169
  i0.ɵɵadvance(6);
@@ -165,6 +176,12 @@ function TestRunDetailPanelComponent_Conditional_0_Template(rf, ctx) { if (rf &
165
176
  i0.ɵɵtextInterpolate1(" ", ctx_r2.submittingFeedback ? "Submitting..." : "Submit Feedback", " ");
166
177
  } }
167
178
  export class TestRunDetailPanelComponent {
179
+ session = inject(TestingInstrumentationService, { optional: true });
180
+ /** The signed-in session provider. An input wins; otherwise the testing service's provider is used. */
181
+ Provider = null;
182
+ get SessionProvider() {
183
+ return this.Provider ?? this.session?.Provider ?? null;
184
+ }
168
185
  TestRun;
169
186
  /** @deprecated Use {@link TestRun}. */
170
187
  set testRun(value) {
@@ -179,6 +196,9 @@ export class TestRunDetailPanelComponent {
179
196
  set oracleResults(value) {
180
197
  this.OracleResults = value;
181
198
  }
199
+ get RubricView() {
200
+ return RubricRunView(this.OracleResults);
201
+ }
182
202
  /** @deprecated Use {@link OracleResults}. */
183
203
  get oracleResults() {
184
204
  return this.OracleResults;
@@ -342,11 +362,11 @@ export class TestRunDetailPanelComponent {
342
362
  return this.OnSubmitFeedback();
343
363
  }
344
364
  static ɵfac = function TestRunDetailPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestRunDetailPanelComponent)(); };
345
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestRunDetailPanelComponent, selectors: [["app-test-run-detail-panel"]], inputs: { TestRun: "TestRun", testRun: "testRun", OracleResults: "OracleResults", oracleResults: "oracleResults", ResultDetails: "ResultDetails", resultDetails: "resultDetails", Closeable: "Closeable", closeable: "closeable" }, outputs: { Close: "Close", close: "close", ViewTarget: "ViewTarget", viewTarget: "viewTarget", SubmitFeedback: "SubmitFeedback", submitFeedback: "submitFeedback" }, standalone: false, decls: 1, vars: 1, consts: [[1, "test-run-detail-panel"], [1, "detail-header"], [1, "header-left"], [1, "header-meta"], [1, "test-type"], [1, "fa-solid", "fa-tag"], [1, "run-time"], [1, "fa-solid", "fa-clock"], [1, "header-right"], [3, "status"], [1, "close-btn"], [1, "detail-content"], [1, "metrics-section"], [1, "metric-card"], [1, "metric-label"], [3, "score", "showBar", "showIcon"], [3, "cost", "showIcon"], [1, "metric-value"], [1, "oracle-section"], [1, "details-section"], [1, "feedback-section"], [1, "section-header"], [1, "fa-solid", "fa-comment-dots"], [1, "feedback-form"], [1, "form-row"], [1, "form-group"], ["type", "number", "min", "1", "max", "10", 1, "rating-input", 3, "ngModelChange", "ngModel"], [1, "checkbox-group"], [1, "checkbox-label"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "Enter your feedback comments...", 1, "comments-textarea", 3, "ngModelChange", "ngModel"], [1, "submit-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-paper-plane"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "metric-value", "target-link", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [3, "results"], ["Size", "sm", 3, "ExpandedChange", "FlushBody", "Expanded"], ["mjAccordionTitle", ""], ["mjAccordionBody", ""], [1, "fa-solid", "fa-file-alt", 2, "color", "var(--mj-brand-primary)"], [1, "details-content"], [1, "json-viewer"]], template: function TestRunDetailPanelComponent_Template(rf, ctx) { if (rf & 1) {
346
- i0.ɵɵconditionalCreate(0, TestRunDetailPanelComponent_Conditional_0_Template, 60, 22, "div", 0);
365
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestRunDetailPanelComponent, selectors: [["app-test-run-detail-panel"]], inputs: { Provider: "Provider", TestRun: "TestRun", testRun: "testRun", OracleResults: "OracleResults", oracleResults: "oracleResults", ResultDetails: "ResultDetails", resultDetails: "resultDetails", Closeable: "Closeable", closeable: "closeable" }, outputs: { Close: "Close", close: "close", ViewTarget: "ViewTarget", viewTarget: "viewTarget", SubmitFeedback: "SubmitFeedback", submitFeedback: "submitFeedback" }, standalone: false, decls: 1, vars: 1, consts: [[1, "test-run-detail-panel"], [1, "detail-header"], [1, "header-left"], [1, "header-meta"], [1, "test-type"], [1, "fa-solid", "fa-tag"], [1, "run-time"], [1, "fa-solid", "fa-clock"], [1, "header-right"], [3, "status"], [1, "close-btn"], [1, "detail-content"], [1, "metrics-section"], [1, "metric-card"], [1, "metric-label"], [3, "score", "showBar", "showIcon"], [3, "cost", "showIcon"], [1, "metric-value"], [1, "oracle-section"], [3, "OracleResults", "Provider"], [1, "details-section"], [1, "feedback-section"], [1, "section-header"], [1, "fa-solid", "fa-comment-dots"], [1, "feedback-form"], [1, "form-row"], [1, "form-group"], ["type", "number", "min", "1", "max", "10", 1, "rating-input", 3, "ngModelChange", "ngModel"], [1, "checkbox-group"], [1, "checkbox-label"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "Enter your feedback comments...", 1, "comments-textarea", 3, "ngModelChange", "ngModel"], [1, "submit-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-paper-plane"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "metric-value", "target-link", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [3, "results"], ["Size", "sm", 3, "ExpandedChange", "FlushBody", "Expanded"], ["mjAccordionTitle", ""], ["mjAccordionBody", ""], [1, "fa-solid", "fa-file-alt", 2, "color", "var(--mj-brand-primary)"], [1, "details-content"], [1, "json-viewer"]], template: function TestRunDetailPanelComponent_Template(rf, ctx) { if (rf & 1) {
366
+ i0.ɵɵconditionalCreate(0, TestRunDetailPanelComponent_Conditional_0_Template, 61, 23, "div", 0);
347
367
  } if (rf & 2) {
348
368
  i0.ɵɵconditional(ctx.testRun ? 0 : -1);
349
- } }, dependencies: [i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.MinValidator, i1.MaxValidator, i1.NgModel, i2.TestStatusBadgeComponent, i2.ScoreIndicatorComponent, i2.CostDisplayComponent, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJAccordionBodyDirective, i4.OracleBreakdownTableComponent, i5.DatePipe], styles: [".test-run-detail-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: var(--mj-shadow-md);\n }\n\n .detail-header[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .header-left[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .header-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n opacity: 0.9;\n }\n\n .header-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .close-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n color: var(--mj-text-inverse);\n padding: 8px 12px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.2s ease;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n .detail-content[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .metrics-section[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n border-left: 4px solid var(--mj-brand-primary);\n }\n\n .metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 8px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .target-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 14px;\n }\n\n .target-link[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n }\n\n .oracle-section[_ngcontent-%COMP%], \n .details-section[_ngcontent-%COMP%], \n .feedback-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .section-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .section-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n \n\n\n\n .details-content[_ngcontent-%COMP%] {\n margin-top: 12px;\n }\n\n .json-viewer[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n padding: 16px;\n font-size: 11px;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 300px;\n overflow-y: auto;\n font-family: 'Courier New', monospace;\n }\n\n .feedback-form[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n }\n\n .form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 16px;\n margin-bottom: 16px;\n }\n\n .form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .rating-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n }\n\n .checkbox-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n }\n\n .checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n cursor: pointer;\n }\n\n .checkbox-label[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n\n .comments-textarea[_ngcontent-%COMP%] {\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n font-family: inherit;\n resize: vertical;\n }\n\n .submit-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s ease;\n }\n\n .submit-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n\n .submit-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n @media (max-width: 768px) {\n .form-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .metrics-section[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n }"] });
369
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.MinValidator, i1.MaxValidator, i1.NgModel, i2.TestStatusBadgeComponent, i2.ScoreIndicatorComponent, i2.CostDisplayComponent, i2.TestingRubricResultComponent, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJAccordionBodyDirective, i4.OracleBreakdownTableComponent, i5.DatePipe], styles: [".test-run-detail-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: var(--mj-shadow-md);\n }\n\n .detail-header[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .header-left[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .header-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n opacity: 0.9;\n }\n\n .header-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .close-btn[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n color: var(--mj-text-inverse);\n padding: 8px 12px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.2s ease;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n .detail-content[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .metrics-section[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n border-left: 4px solid var(--mj-brand-primary);\n }\n\n .metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 8px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .target-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 14px;\n }\n\n .target-link[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n }\n\n .oracle-section[_ngcontent-%COMP%], \n .details-section[_ngcontent-%COMP%], \n .feedback-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .section-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .section-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n \n\n\n\n .details-content[_ngcontent-%COMP%] {\n margin-top: 12px;\n }\n\n .json-viewer[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n padding: 16px;\n font-size: 11px;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 300px;\n overflow-y: auto;\n font-family: 'Courier New', monospace;\n }\n\n .feedback-form[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n }\n\n .form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 16px;\n margin-bottom: 16px;\n }\n\n .form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .rating-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n }\n\n .checkbox-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n }\n\n .checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n cursor: pointer;\n }\n\n .checkbox-label[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n\n .comments-textarea[_ngcontent-%COMP%] {\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n font-family: inherit;\n resize: vertical;\n }\n\n .submit-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s ease;\n }\n\n .submit-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n\n .submit-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n @media (max-width: 768px) {\n .form-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .metrics-section[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n }"] });
350
370
  }
351
371
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestRunDetailPanelComponent, [{
352
372
  type: Component,
@@ -407,6 +427,9 @@ export class TestRunDetailPanelComponent {
407
427
  <app-oracle-breakdown-table [results]="oracleResults"></app-oracle-breakdown-table>
408
428
  </div>
409
429
  }
430
+ @if (RubricView) {
431
+ <mj-testing-rubric-result [OracleResults]="oracleResults" [Provider]="SessionProvider"></mj-testing-rubric-result>
432
+ }
410
433
  <!-- Result Details -->
411
434
  @if (resultDetails) {
412
435
  <div class="details-section">
@@ -472,7 +495,9 @@ export class TestRunDetailPanelComponent {
472
495
  </div>
473
496
  }
474
497
  `, styles: ["\n .test-run-detail-panel {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: var(--mj-shadow-md);\n }\n\n .detail-header {\n padding: 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .header-left h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .header-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n opacity: 0.9;\n }\n\n .header-meta span {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .close-btn {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n color: var(--mj-text-inverse);\n padding: 8px 12px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.2s ease;\n }\n\n .close-btn:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n .detail-content {\n padding: 20px;\n }\n\n .metrics-section {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .metric-card {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n border-left: 4px solid var(--mj-brand-primary);\n }\n\n .metric-label {\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 8px;\n }\n\n .metric-value {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .target-link {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 14px;\n }\n\n .target-link:hover {\n text-decoration: underline;\n }\n\n .oracle-section,\n .details-section,\n .feedback-section {\n margin-bottom: 24px;\n }\n\n .section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .section-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .section-header h4 i {\n color: var(--mj-brand-primary);\n }\n\n /* .toggle-btn removed \u2014 the Result Details chevron is now provided by\n <mj-accordion-panel>. (.section-header is kept; the Feedback section\n still uses it.) */\n\n .details-content {\n margin-top: 12px;\n }\n\n .json-viewer {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n padding: 16px;\n font-size: 11px;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 300px;\n overflow-y: auto;\n font-family: 'Courier New', monospace;\n }\n\n .feedback-form {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n }\n\n .form-row {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 16px;\n margin-bottom: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .form-group label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .rating-input {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n }\n\n .checkbox-group {\n display: flex;\n align-items: center;\n }\n\n .checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n cursor: pointer;\n }\n\n .checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n\n .comments-textarea {\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n font-family: inherit;\n resize: vertical;\n }\n\n .submit-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s ease;\n }\n\n .submit-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n\n .submit-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n @media (max-width: 768px) {\n .form-row {\n grid-template-columns: 1fr;\n }\n\n .metrics-section {\n grid-template-columns: 1fr;\n }\n }\n "] }]
475
- }], null, { TestRun: [{
498
+ }], null, { Provider: [{
499
+ type: Input
500
+ }], TestRun: [{
476
501
  type: Input
477
502
  }], testRun: [{
478
503
  type: Input
@@ -501,5 +526,5 @@ export class TestRunDetailPanelComponent {
501
526
  }], submitFeedback: [{
502
527
  type: Output
503
528
  }] }); })();
504
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestRunDetailPanelComponent, { className: "TestRunDetailPanelComponent", filePath: "src/Testing/components/widgets/test-run-detail-panel.component.ts", lineNumber: 378 }); })();
529
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestRunDetailPanelComponent, { className: "TestRunDetailPanelComponent", filePath: "src/Testing/components/widgets/test-run-detail-panel.component.ts", lineNumber: 383 }); })();
505
530
  //# sourceMappingURL=test-run-detail-panel.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-run-detail-panel.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/test-run-detail-panel.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { TestRunSummary } from '../../services/testing-instrumentation.service';\nimport { OracleResult } from './oracle-breakdown-table.component';\n\n@Component({\n standalone: false,\n selector: 'app-test-run-detail-panel',\n template: `\n @if (testRun) {\n <div class=\"test-run-detail-panel\">\n <div class=\"detail-header\">\n <div class=\"header-left\">\n <h3>{{ testRun.testName }}</h3>\n <div class=\"header-meta\">\n <span class=\"test-type\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ testRun.testType }}\n </span>\n <span class=\"run-time\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ testRun.runDateTime | date:'medium' }}\n </span>\n </div>\n </div>\n <div class=\"header-right\">\n <app-test-status-badge [status]=\"testRun.status\"></app-test-status-badge>\n @if (closeable) {\n <button class=\"close-btn\" (click)=\"onClose()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"detail-content\">\n <!-- Main Metrics -->\n <div class=\"metrics-section\">\n <div class=\"metric-card\">\n <div class=\"metric-label\">Score</div>\n <app-score-indicator [score]=\"testRun.score\" [showBar]=\"true\" [showIcon]=\"true\"></app-score-indicator>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Cost</div>\n <app-cost-display [cost]=\"testRun.cost\" [showIcon]=\"true\"></app-cost-display>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(testRun.duration) }}</div>\n </div>\n @if (testRun.targetType) {\n <div class=\"metric-card\">\n <div class=\"metric-label\">Target</div>\n <div class=\"metric-value target-link\" (click)=\"onViewTarget()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n {{ testRun.targetType }}\n </div>\n </div>\n }\n </div>\n <!-- Oracle Breakdown -->\n @if (oracleResults && oracleResults.length > 0) {\n <div class=\"oracle-section\">\n <app-oracle-breakdown-table [results]=\"oracleResults\"></app-oracle-breakdown-table>\n </div>\n }\n <!-- Result Details -->\n @if (resultDetails) {\n <div class=\"details-section\">\n <mj-accordion-panel Size=\"sm\" [FlushBody]=\"true\" [(Expanded)]=\"showResultDetails\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-file-alt\" style=\"color: var(--mj-brand-primary)\"></i>\n Result Details\n </ng-template>\n <ng-template mjAccordionBody>\n <div class=\"details-content\">\n <pre class=\"json-viewer\">{{ formatJSON(resultDetails) }}</pre>\n </div>\n </ng-template>\n </mj-accordion-panel>\n </div>\n }\n <!-- Feedback Section -->\n <div class=\"feedback-section\">\n <div class=\"section-header\">\n <h4>\n <i class=\"fa-solid fa-comment-dots\"></i>\n Human Feedback\n </h4>\n </div>\n <div class=\"feedback-form\">\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Rating (1-10)</label>\n <input\n type=\"number\"\n [(ngModel)]=\"feedbackRating\"\n min=\"1\"\n max=\"10\"\n class=\"rating-input\"\n />\n </div>\n <div class=\"form-group\">\n <label>Is Correct?</label>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"feedbackIsCorrect\" />\n <span>Yes, the automated result is correct</span>\n </label>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label>Comments</label>\n <textarea\n [(ngModel)]=\"feedbackComments\"\n rows=\"3\"\n class=\"comments-textarea\"\n placeholder=\"Enter your feedback comments...\"\n ></textarea>\n </div>\n <button class=\"submit-btn\" (click)=\"onSubmitFeedback()\" [disabled]=\"submittingFeedback\">\n <i class=\"fa-solid fa-paper-plane\"></i>\n {{ submittingFeedback ? 'Submitting...' : 'Submit Feedback' }}\n </button>\n </div>\n </div>\n </div>\n </div>\n }\n `,\n styles: [`\n .test-run-detail-panel {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: var(--mj-shadow-md);\n }\n\n .detail-header {\n padding: 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .header-left h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .header-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n opacity: 0.9;\n }\n\n .header-meta span {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .close-btn {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n color: var(--mj-text-inverse);\n padding: 8px 12px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.2s ease;\n }\n\n .close-btn:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n .detail-content {\n padding: 20px;\n }\n\n .metrics-section {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .metric-card {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n border-left: 4px solid var(--mj-brand-primary);\n }\n\n .metric-label {\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 8px;\n }\n\n .metric-value {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .target-link {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 14px;\n }\n\n .target-link:hover {\n text-decoration: underline;\n }\n\n .oracle-section,\n .details-section,\n .feedback-section {\n margin-bottom: 24px;\n }\n\n .section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .section-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .section-header h4 i {\n color: var(--mj-brand-primary);\n }\n\n /* .toggle-btn removed — the Result Details chevron is now provided by\n <mj-accordion-panel>. (.section-header is kept; the Feedback section\n still uses it.) */\n\n .details-content {\n margin-top: 12px;\n }\n\n .json-viewer {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n padding: 16px;\n font-size: 11px;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 300px;\n overflow-y: auto;\n font-family: 'Courier New', monospace;\n }\n\n .feedback-form {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n }\n\n .form-row {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 16px;\n margin-bottom: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .form-group label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .rating-input {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n }\n\n .checkbox-group {\n display: flex;\n align-items: center;\n }\n\n .checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n cursor: pointer;\n }\n\n .checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n\n .comments-textarea {\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n font-family: inherit;\n resize: vertical;\n }\n\n .submit-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s ease;\n }\n\n .submit-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n\n .submit-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n @media (max-width: 768px) {\n .form-row {\n grid-template-columns: 1fr;\n }\n\n .metrics-section {\n grid-template-columns: 1fr;\n }\n }\n `]\n})\nexport class TestRunDetailPanelComponent {\n @Input() TestRun!: TestRunSummary;\n\n /** @deprecated Use {@link TestRun}. */\n @Input() set testRun(value: TestRunSummary) {\n this.TestRun = value;\n }\n /** @deprecated Use {@link TestRun}. */\n get testRun(): TestRunSummary {\n return this.TestRun;\n }\n @Input() OracleResults: OracleResult[] = [];\n\n /** @deprecated Use {@link OracleResults}. */\n @Input() set oracleResults(value: OracleResult[]) {\n this.OracleResults = value;\n }\n /** @deprecated Use {@link OracleResults}. */\n get oracleResults(): OracleResult[] {\n return this.OracleResults;\n }\n @Input() ResultDetails: any = null;\n\n /** @deprecated Use {@link ResultDetails}. */\n @Input() set resultDetails(value: any) {\n this.ResultDetails = value;\n }\n /** @deprecated Use {@link ResultDetails}. */\n get resultDetails(): any {\n return this.ResultDetails;\n }\n @Input() Closeable = true;\n\n /** @deprecated Use {@link Closeable}. */\n @Input() set closeable(value: TestRunDetailPanelComponent['Closeable']) {\n this.Closeable = value;\n }\n /** @deprecated Use {@link Closeable}. */\n get closeable(): TestRunDetailPanelComponent['Closeable'] {\n return this.Closeable;\n }\n\n @Output() Close = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Close}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (close) keeps working. Must stay AFTER Close: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() close = this.Close;\n @Output() ViewTarget = new EventEmitter<{ type: string; id: string }>();\n\n /**\n * @deprecated Use {@link ViewTarget}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (viewTarget) keeps working. Must stay AFTER ViewTarget: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() viewTarget = this.ViewTarget;\n @Output() SubmitFeedback = new EventEmitter<{\n rating: number;\n isCorrect: boolean;\n comments: string;\n }>();\n\n /**\n * @deprecated Use {@link SubmitFeedback}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (submitFeedback) keeps working. Must stay AFTER SubmitFeedback: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() submitFeedback = this.SubmitFeedback;\n\n ShowResultDetails = false;\n\n /** @deprecated Use {@link ShowResultDetails}. */\n get showResultDetails() {\n return this.ShowResultDetails;\n }\n /** @deprecated Use {@link ShowResultDetails}. */\n set showResultDetails(value) {\n this.ShowResultDetails = value;\n }\n FeedbackRating = 5;\n\n /** @deprecated Use {@link FeedbackRating}. */\n get feedbackRating() {\n return this.FeedbackRating;\n }\n /** @deprecated Use {@link FeedbackRating}. */\n set feedbackRating(value) {\n this.FeedbackRating = value;\n }\n FeedbackIsCorrect = true;\n\n /** @deprecated Use {@link FeedbackIsCorrect}. */\n get feedbackIsCorrect() {\n return this.FeedbackIsCorrect;\n }\n /** @deprecated Use {@link FeedbackIsCorrect}. */\n set feedbackIsCorrect(value) {\n this.FeedbackIsCorrect = value;\n }\n FeedbackComments = '';\n\n /** @deprecated Use {@link FeedbackComments}. */\n get feedbackComments() {\n return this.FeedbackComments;\n }\n /** @deprecated Use {@link FeedbackComments}. */\n set feedbackComments(value) {\n this.FeedbackComments = value;\n }\n SubmittingFeedback = false;\n\n /** @deprecated Use {@link SubmittingFeedback}. */\n get submittingFeedback() {\n return this.SubmittingFeedback;\n }\n /** @deprecated Use {@link SubmittingFeedback}. */\n set submittingFeedback(value) {\n this.SubmittingFeedback = value;\n }\n\n FormatDuration(milliseconds: number): string {\n if (milliseconds < 1000) {\n return `${milliseconds}ms`;\n }\n\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n return `${seconds}s`;\n }\n\n /** @deprecated Use {@link FormatDuration}. */\n formatDuration(milliseconds: number): string {\n return this.FormatDuration(milliseconds);\n }\n\n FormatJSON(obj: any): string {\n try {\n return JSON.stringify(obj, null, 2);\n } catch (error) {\n return String(obj);\n }\n }\n\n /** @deprecated Use {@link FormatJSON}. */\n formatJSON(obj: any): string {\n return this.FormatJSON(obj);\n }\n\n // toggleResultDetails() removed — the Result Details disclosure is now an\n // <mj-accordion-panel> bound via [(Expanded)]=\"showResultDetails\" (pure flip,\n // default change detection), so no explicit toggle handler is needed.\n\n OnClose(): void {\n this.Close.emit();\n }\n\n /** @deprecated Use {@link OnClose}. */\n onClose(): void {\n return this.OnClose();\n }\n\n OnViewTarget(): void {\n if (this.TestRun.targetType && this.TestRun.targetLogID) {\n this.ViewTarget.emit({\n type: this.TestRun.targetType,\n id: this.TestRun.targetLogID\n });\n }\n }\n\n /** @deprecated Use {@link OnViewTarget}. */\n onViewTarget(): void {\n return this.OnViewTarget();\n }\n\n async OnSubmitFeedback(): Promise<void> {\n this.SubmittingFeedback = true;\n this.SubmitFeedback.emit({\n rating: this.FeedbackRating,\n isCorrect: this.FeedbackIsCorrect,\n comments: this.FeedbackComments\n });\n\n // Reset after submission\n setTimeout(() => {\n this.SubmittingFeedback = false;\n this.FeedbackRating = 5;\n this.FeedbackIsCorrect = true;\n this.FeedbackComments = '';\n }, 1000);\n }\n\n /** @deprecated Use {@link OnSubmitFeedback}. */\n async onSubmitFeedback(): Promise<void> {\n return this.OnSubmitFeedback();\n }\n}\n"]}
1
+ {"version":3,"file":"test-run-detail-panel.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/test-run-detail-panel.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, inject } from '@angular/core';\nimport type { IMetadataProvider } from '@memberjunction/core';\nimport { TestRunSummary, TestingInstrumentationService } from '../../services/testing-instrumentation.service';\nimport { OracleResult } from './oracle-breakdown-table.component';\nimport { RubricRunView } from '@memberjunction/ng-testing';\n\n@Component({\n standalone: false,\n selector: 'app-test-run-detail-panel',\n template: `\n @if (testRun) {\n <div class=\"test-run-detail-panel\">\n <div class=\"detail-header\">\n <div class=\"header-left\">\n <h3>{{ testRun.testName }}</h3>\n <div class=\"header-meta\">\n <span class=\"test-type\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ testRun.testType }}\n </span>\n <span class=\"run-time\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ testRun.runDateTime | date:'medium' }}\n </span>\n </div>\n </div>\n <div class=\"header-right\">\n <app-test-status-badge [status]=\"testRun.status\"></app-test-status-badge>\n @if (closeable) {\n <button class=\"close-btn\" (click)=\"onClose()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"detail-content\">\n <!-- Main Metrics -->\n <div class=\"metrics-section\">\n <div class=\"metric-card\">\n <div class=\"metric-label\">Score</div>\n <app-score-indicator [score]=\"testRun.score\" [showBar]=\"true\" [showIcon]=\"true\"></app-score-indicator>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Cost</div>\n <app-cost-display [cost]=\"testRun.cost\" [showIcon]=\"true\"></app-cost-display>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(testRun.duration) }}</div>\n </div>\n @if (testRun.targetType) {\n <div class=\"metric-card\">\n <div class=\"metric-label\">Target</div>\n <div class=\"metric-value target-link\" (click)=\"onViewTarget()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n {{ testRun.targetType }}\n </div>\n </div>\n }\n </div>\n <!-- Oracle Breakdown -->\n @if (oracleResults && oracleResults.length > 0) {\n <div class=\"oracle-section\">\n <app-oracle-breakdown-table [results]=\"oracleResults\"></app-oracle-breakdown-table>\n </div>\n }\n @if (RubricView) {\n <mj-testing-rubric-result [OracleResults]=\"oracleResults\" [Provider]=\"SessionProvider\"></mj-testing-rubric-result>\n }\n <!-- Result Details -->\n @if (resultDetails) {\n <div class=\"details-section\">\n <mj-accordion-panel Size=\"sm\" [FlushBody]=\"true\" [(Expanded)]=\"showResultDetails\">\n <ng-template mjAccordionTitle>\n <i class=\"fa-solid fa-file-alt\" style=\"color: var(--mj-brand-primary)\"></i>\n Result Details\n </ng-template>\n <ng-template mjAccordionBody>\n <div class=\"details-content\">\n <pre class=\"json-viewer\">{{ formatJSON(resultDetails) }}</pre>\n </div>\n </ng-template>\n </mj-accordion-panel>\n </div>\n }\n <!-- Feedback Section -->\n <div class=\"feedback-section\">\n <div class=\"section-header\">\n <h4>\n <i class=\"fa-solid fa-comment-dots\"></i>\n Human Feedback\n </h4>\n </div>\n <div class=\"feedback-form\">\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Rating (1-10)</label>\n <input\n type=\"number\"\n [(ngModel)]=\"feedbackRating\"\n min=\"1\"\n max=\"10\"\n class=\"rating-input\"\n />\n </div>\n <div class=\"form-group\">\n <label>Is Correct?</label>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"feedbackIsCorrect\" />\n <span>Yes, the automated result is correct</span>\n </label>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label>Comments</label>\n <textarea\n [(ngModel)]=\"feedbackComments\"\n rows=\"3\"\n class=\"comments-textarea\"\n placeholder=\"Enter your feedback comments...\"\n ></textarea>\n </div>\n <button class=\"submit-btn\" (click)=\"onSubmitFeedback()\" [disabled]=\"submittingFeedback\">\n <i class=\"fa-solid fa-paper-plane\"></i>\n {{ submittingFeedback ? 'Submitting...' : 'Submit Feedback' }}\n </button>\n </div>\n </div>\n </div>\n </div>\n }\n `,\n styles: [`\n .test-run-detail-panel {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: var(--mj-shadow-md);\n }\n\n .detail-header {\n padding: 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .header-left h3 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n }\n\n .header-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n opacity: 0.9;\n }\n\n .header-meta span {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .close-btn {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n color: var(--mj-text-inverse);\n padding: 8px 12px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.2s ease;\n }\n\n .close-btn:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n .detail-content {\n padding: 20px;\n }\n\n .metrics-section {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n }\n\n .metric-card {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n border-left: 4px solid var(--mj-brand-primary);\n }\n\n .metric-label {\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 8px;\n }\n\n .metric-value {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .target-link {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 14px;\n }\n\n .target-link:hover {\n text-decoration: underline;\n }\n\n .oracle-section,\n .details-section,\n .feedback-section {\n margin-bottom: 24px;\n }\n\n .section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .section-header h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .section-header h4 i {\n color: var(--mj-brand-primary);\n }\n\n /* .toggle-btn removed — the Result Details chevron is now provided by\n <mj-accordion-panel>. (.section-header is kept; the Feedback section\n still uses it.) */\n\n .details-content {\n margin-top: 12px;\n }\n\n .json-viewer {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n padding: 16px;\n font-size: 11px;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 300px;\n overflow-y: auto;\n font-family: 'Courier New', monospace;\n }\n\n .feedback-form {\n background: var(--mj-bg-surface-card);\n padding: 16px;\n border-radius: 8px;\n }\n\n .form-row {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: 16px;\n margin-bottom: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .form-group label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n\n .rating-input {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n }\n\n .checkbox-group {\n display: flex;\n align-items: center;\n }\n\n .checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n cursor: pointer;\n }\n\n .checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n\n .comments-textarea {\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n font-family: inherit;\n resize: vertical;\n }\n\n .submit-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s ease;\n }\n\n .submit-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n\n .submit-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n @media (max-width: 768px) {\n .form-row {\n grid-template-columns: 1fr;\n }\n\n .metrics-section {\n grid-template-columns: 1fr;\n }\n }\n `]\n})\nexport class TestRunDetailPanelComponent {\n private readonly session = inject(TestingInstrumentationService, { optional: true });\n\n /** The signed-in session provider. An input wins; otherwise the testing service's provider is used. */\n @Input() Provider: IMetadataProvider | null = null;\n\n public get SessionProvider(): IMetadataProvider | null {\n return this.Provider ?? this.session?.Provider ?? null;\n }\n\n @Input() TestRun!: TestRunSummary;\n\n /** @deprecated Use {@link TestRun}. */\n @Input() set testRun(value: TestRunSummary) {\n this.TestRun = value;\n }\n /** @deprecated Use {@link TestRun}. */\n get testRun(): TestRunSummary {\n return this.TestRun;\n }\n @Input() OracleResults: OracleResult[] = [];\n\n /** @deprecated Use {@link OracleResults}. */\n @Input() set oracleResults(value: OracleResult[]) {\n this.OracleResults = value;\n }\n get RubricView() {\n return RubricRunView(this.OracleResults);\n }\n\n /** @deprecated Use {@link OracleResults}. */\n get oracleResults(): OracleResult[] {\n return this.OracleResults;\n }\n @Input() ResultDetails: any = null;\n\n /** @deprecated Use {@link ResultDetails}. */\n @Input() set resultDetails(value: any) {\n this.ResultDetails = value;\n }\n /** @deprecated Use {@link ResultDetails}. */\n get resultDetails(): any {\n return this.ResultDetails;\n }\n @Input() Closeable = true;\n\n /** @deprecated Use {@link Closeable}. */\n @Input() set closeable(value: TestRunDetailPanelComponent['Closeable']) {\n this.Closeable = value;\n }\n /** @deprecated Use {@link Closeable}. */\n get closeable(): TestRunDetailPanelComponent['Closeable'] {\n return this.Closeable;\n }\n\n @Output() Close = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Close}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (close) keeps working. Must stay AFTER Close: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() close = this.Close;\n @Output() ViewTarget = new EventEmitter<{ type: string; id: string }>();\n\n /**\n * @deprecated Use {@link ViewTarget}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (viewTarget) keeps working. Must stay AFTER ViewTarget: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() viewTarget = this.ViewTarget;\n @Output() SubmitFeedback = new EventEmitter<{\n rating: number;\n isCorrect: boolean;\n comments: string;\n }>();\n\n /**\n * @deprecated Use {@link SubmitFeedback}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (submitFeedback) keeps working. Must stay AFTER SubmitFeedback: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() submitFeedback = this.SubmitFeedback;\n\n ShowResultDetails = false;\n\n /** @deprecated Use {@link ShowResultDetails}. */\n get showResultDetails() {\n return this.ShowResultDetails;\n }\n /** @deprecated Use {@link ShowResultDetails}. */\n set showResultDetails(value) {\n this.ShowResultDetails = value;\n }\n FeedbackRating = 5;\n\n /** @deprecated Use {@link FeedbackRating}. */\n get feedbackRating() {\n return this.FeedbackRating;\n }\n /** @deprecated Use {@link FeedbackRating}. */\n set feedbackRating(value) {\n this.FeedbackRating = value;\n }\n FeedbackIsCorrect = true;\n\n /** @deprecated Use {@link FeedbackIsCorrect}. */\n get feedbackIsCorrect() {\n return this.FeedbackIsCorrect;\n }\n /** @deprecated Use {@link FeedbackIsCorrect}. */\n set feedbackIsCorrect(value) {\n this.FeedbackIsCorrect = value;\n }\n FeedbackComments = '';\n\n /** @deprecated Use {@link FeedbackComments}. */\n get feedbackComments() {\n return this.FeedbackComments;\n }\n /** @deprecated Use {@link FeedbackComments}. */\n set feedbackComments(value) {\n this.FeedbackComments = value;\n }\n SubmittingFeedback = false;\n\n /** @deprecated Use {@link SubmittingFeedback}. */\n get submittingFeedback() {\n return this.SubmittingFeedback;\n }\n /** @deprecated Use {@link SubmittingFeedback}. */\n set submittingFeedback(value) {\n this.SubmittingFeedback = value;\n }\n\n FormatDuration(milliseconds: number): string {\n if (milliseconds < 1000) {\n return `${milliseconds}ms`;\n }\n\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n return `${seconds}s`;\n }\n\n /** @deprecated Use {@link FormatDuration}. */\n formatDuration(milliseconds: number): string {\n return this.FormatDuration(milliseconds);\n }\n\n FormatJSON(obj: any): string {\n try {\n return JSON.stringify(obj, null, 2);\n } catch (error) {\n return String(obj);\n }\n }\n\n /** @deprecated Use {@link FormatJSON}. */\n formatJSON(obj: any): string {\n return this.FormatJSON(obj);\n }\n\n // toggleResultDetails() removed — the Result Details disclosure is now an\n // <mj-accordion-panel> bound via [(Expanded)]=\"showResultDetails\" (pure flip,\n // default change detection), so no explicit toggle handler is needed.\n\n OnClose(): void {\n this.Close.emit();\n }\n\n /** @deprecated Use {@link OnClose}. */\n onClose(): void {\n return this.OnClose();\n }\n\n OnViewTarget(): void {\n if (this.TestRun.targetType && this.TestRun.targetLogID) {\n this.ViewTarget.emit({\n type: this.TestRun.targetType,\n id: this.TestRun.targetLogID\n });\n }\n }\n\n /** @deprecated Use {@link OnViewTarget}. */\n onViewTarget(): void {\n return this.OnViewTarget();\n }\n\n async OnSubmitFeedback(): Promise<void> {\n this.SubmittingFeedback = true;\n this.SubmitFeedback.emit({\n rating: this.FeedbackRating,\n isCorrect: this.FeedbackIsCorrect,\n comments: this.FeedbackComments\n });\n\n // Reset after submission\n setTimeout(() => {\n this.SubmittingFeedback = false;\n this.FeedbackRating = 5;\n this.FeedbackIsCorrect = true;\n this.FeedbackComments = '';\n }, 1000);\n }\n\n /** @deprecated Use {@link OnSubmitFeedback}. */\n async onSubmitFeedback(): Promise<void> {\n return this.OnSubmitFeedback();\n }\n}\n"]}
package/dist/module.d.ts CHANGED
@@ -5,27 +5,28 @@ import * as i3 from "./shared/shared-dashboard-widgets.module";
5
5
  import * as i4 from "./actions-dashboards.module";
6
6
  import * as i5 from "./testing-dashboards.module";
7
7
  import * as i6 from "./scheduling-dashboards.module";
8
- import * as i7 from "./communication-dashboards.module";
9
- import * as i8 from "./credentials-dashboards.module";
10
- import * as i9 from "./data-explorer-dashboards.module";
11
- import * as i10 from "./predictive-studio-dashboards.module";
12
- import * as i11 from "./workflows-dashboards.module";
13
- import * as i12 from "./lists-dashboards.module";
14
- import * as i13 from "./routines-dashboards.module";
15
- import * as i14 from "./component-studio-dashboards.module";
16
- import * as i15 from "./archiving-dashboards.module";
17
- import * as i16 from "./DatabaseDesigner/database-designer-dashboards.module";
18
- import * as i17 from "./MCP/mcp.module";
19
- import * as i18 from "./Integration/integration.module";
20
- import * as i19 from "@memberjunction/ng-credentials";
21
- import * as i20 from "@memberjunction/ng-agent-requests";
22
- import * as i21 from "./shared/shared-pipes.module";
23
- import * as i22 from "@memberjunction/ng-actions";
24
- import * as i23 from "@memberjunction/ng-agents";
25
- import * as i24 from "@memberjunction/ng-markdown";
26
- import * as i25 from "@memberjunction/ng-versions";
27
- import * as i26 from "@memberjunction/ng-scheduling";
28
- import * as i27 from "@memberjunction/ng-trees";
8
+ import * as i7 from "./rubrics-dashboards.module";
9
+ import * as i8 from "./communication-dashboards.module";
10
+ import * as i9 from "./credentials-dashboards.module";
11
+ import * as i10 from "./data-explorer-dashboards.module";
12
+ import * as i11 from "./predictive-studio-dashboards.module";
13
+ import * as i12 from "./workflows-dashboards.module";
14
+ import * as i13 from "./lists-dashboards.module";
15
+ import * as i14 from "./routines-dashboards.module";
16
+ import * as i15 from "./component-studio-dashboards.module";
17
+ import * as i16 from "./archiving-dashboards.module";
18
+ import * as i17 from "./DatabaseDesigner/database-designer-dashboards.module";
19
+ import * as i18 from "./MCP/mcp.module";
20
+ import * as i19 from "./Integration/integration.module";
21
+ import * as i20 from "@memberjunction/ng-credentials";
22
+ import * as i21 from "@memberjunction/ng-agent-requests";
23
+ import * as i22 from "./shared/shared-pipes.module";
24
+ import * as i23 from "@memberjunction/ng-actions";
25
+ import * as i24 from "@memberjunction/ng-agents";
26
+ import * as i25 from "@memberjunction/ng-markdown";
27
+ import * as i26 from "@memberjunction/ng-versions";
28
+ import * as i27 from "@memberjunction/ng-scheduling";
29
+ import * as i28 from "@memberjunction/ng-trees";
29
30
  /**
30
31
  * DashboardsModule — backward-compatible wrapper that imports and re-exports
31
32
  * all feature modules. Non-MJExplorer consumers can continue importing this
@@ -36,7 +37,7 @@ import * as i27 from "@memberjunction/ng-trees";
36
37
  */
37
38
  export declare class DashboardsModule {
38
39
  static ɵfac: i0.ɵɵFactoryDeclaration<DashboardsModule, never>;
39
- static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardsModule, never, [typeof i1.CoreDashboardsModule, typeof i2.AIDashboardsModule, typeof i3.SharedDashboardWidgetsModule, typeof i4.ActionsDashboardsModule, typeof i5.TestingDashboardsModule, typeof i6.SchedulingDashboardsModule, typeof i7.CommunicationDashboardsModule, typeof i8.CredentialsDashboardsModule, typeof i9.DataExplorerDashboardsModule, typeof i10.PredictiveStudioDashboardsModule, typeof i11.WorkflowsDashboardsModule, typeof i12.ListsDashboardsModule, typeof i13.RoutinesDashboardsModule, typeof i14.ComponentStudioDashboardsModule, typeof i15.ArchivingDashboardsModule, typeof i16.DatabaseDesignerDashboardsModule, typeof i17.MCPModule, typeof i18.IntegrationModule, typeof i19.CredentialsModule, typeof i20.AgentRequestsModule, typeof i21.SharedPipesModule, typeof i22.ActionsModule, typeof i23.AgentsModule, typeof i24.MarkdownModule, typeof i25.VersionsModule, typeof i26.SchedulingModule, typeof i27.NgTreesModule], [typeof i1.CoreDashboardsModule, typeof i2.AIDashboardsModule, typeof i3.SharedDashboardWidgetsModule, typeof i4.ActionsDashboardsModule, typeof i5.TestingDashboardsModule, typeof i6.SchedulingDashboardsModule, typeof i7.CommunicationDashboardsModule, typeof i8.CredentialsDashboardsModule, typeof i9.DataExplorerDashboardsModule, typeof i10.PredictiveStudioDashboardsModule, typeof i11.WorkflowsDashboardsModule, typeof i12.ListsDashboardsModule, typeof i13.RoutinesDashboardsModule, typeof i14.ComponentStudioDashboardsModule, typeof i15.ArchivingDashboardsModule, typeof i16.DatabaseDesignerDashboardsModule, typeof i17.MCPModule, typeof i18.IntegrationModule, typeof i19.CredentialsModule, typeof i20.AgentRequestsModule, typeof i21.SharedPipesModule]>;
40
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardsModule, never, [typeof i1.CoreDashboardsModule, typeof i2.AIDashboardsModule, typeof i3.SharedDashboardWidgetsModule, typeof i4.ActionsDashboardsModule, typeof i5.TestingDashboardsModule, typeof i6.SchedulingDashboardsModule, typeof i7.RubricsDashboardsModule, typeof i8.CommunicationDashboardsModule, typeof i9.CredentialsDashboardsModule, typeof i10.DataExplorerDashboardsModule, typeof i11.PredictiveStudioDashboardsModule, typeof i12.WorkflowsDashboardsModule, typeof i13.ListsDashboardsModule, typeof i14.RoutinesDashboardsModule, typeof i15.ComponentStudioDashboardsModule, typeof i16.ArchivingDashboardsModule, typeof i17.DatabaseDesignerDashboardsModule, typeof i18.MCPModule, typeof i19.IntegrationModule, typeof i20.CredentialsModule, typeof i21.AgentRequestsModule, typeof i22.SharedPipesModule, typeof i23.ActionsModule, typeof i24.AgentsModule, typeof i25.MarkdownModule, typeof i26.VersionsModule, typeof i27.SchedulingModule, typeof i28.NgTreesModule], [typeof i1.CoreDashboardsModule, typeof i2.AIDashboardsModule, typeof i3.SharedDashboardWidgetsModule, typeof i4.ActionsDashboardsModule, typeof i5.TestingDashboardsModule, typeof i6.SchedulingDashboardsModule, typeof i7.RubricsDashboardsModule, typeof i8.CommunicationDashboardsModule, typeof i9.CredentialsDashboardsModule, typeof i10.DataExplorerDashboardsModule, typeof i11.PredictiveStudioDashboardsModule, typeof i12.WorkflowsDashboardsModule, typeof i13.ListsDashboardsModule, typeof i14.RoutinesDashboardsModule, typeof i15.ComponentStudioDashboardsModule, typeof i16.ArchivingDashboardsModule, typeof i17.DatabaseDesignerDashboardsModule, typeof i18.MCPModule, typeof i19.IntegrationModule, typeof i20.CredentialsModule, typeof i21.AgentRequestsModule, typeof i22.SharedPipesModule]>;
40
41
  static ɵinj: i0.ɵɵInjectorDeclaration<DashboardsModule>;
41
42
  }
42
43
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA;;;;;;;GAOG;AACH,qBAwDa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAI"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA;;;;;;;GAOG;AACH,qBA0Da,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAI"}
package/dist/module.js CHANGED
@@ -6,6 +6,7 @@ import { SharedDashboardWidgetsModule } from './shared/shared-dashboard-widgets.
6
6
  import { ActionsDashboardsModule } from './actions-dashboards.module';
7
7
  import { TestingDashboardsModule } from './testing-dashboards.module';
8
8
  import { SchedulingDashboardsModule } from './scheduling-dashboards.module';
9
+ import { RubricsDashboardsModule } from './rubrics-dashboards.module';
9
10
  import { CommunicationDashboardsModule } from './communication-dashboards.module';
10
11
  import { CredentialsDashboardsModule } from './credentials-dashboards.module';
11
12
  import { DataExplorerDashboardsModule } from './data-explorer-dashboards.module';
@@ -47,6 +48,7 @@ export class DashboardsModule {
47
48
  ActionsDashboardsModule,
48
49
  TestingDashboardsModule,
49
50
  SchedulingDashboardsModule,
51
+ RubricsDashboardsModule,
50
52
  CommunicationDashboardsModule,
51
53
  CredentialsDashboardsModule,
52
54
  DataExplorerDashboardsModule,
@@ -74,6 +76,7 @@ export class DashboardsModule {
74
76
  ActionsDashboardsModule,
75
77
  TestingDashboardsModule,
76
78
  SchedulingDashboardsModule,
79
+ RubricsDashboardsModule,
77
80
  CommunicationDashboardsModule,
78
81
  CredentialsDashboardsModule,
79
82
  DataExplorerDashboardsModule,
@@ -101,6 +104,7 @@ export class DashboardsModule {
101
104
  ActionsDashboardsModule,
102
105
  TestingDashboardsModule,
103
106
  SchedulingDashboardsModule,
107
+ RubricsDashboardsModule,
104
108
  CommunicationDashboardsModule,
105
109
  CredentialsDashboardsModule,
106
110
  DataExplorerDashboardsModule,
@@ -131,6 +135,7 @@ export class DashboardsModule {
131
135
  ActionsDashboardsModule,
132
136
  TestingDashboardsModule,
133
137
  SchedulingDashboardsModule,
138
+ RubricsDashboardsModule,
134
139
  CommunicationDashboardsModule,
135
140
  CredentialsDashboardsModule,
136
141
  DataExplorerDashboardsModule,
@@ -156,6 +161,7 @@ export class DashboardsModule {
156
161
  ActionsDashboardsModule,
157
162
  TestingDashboardsModule,
158
163
  SchedulingDashboardsModule,
164
+ RubricsDashboardsModule,
159
165
  CommunicationDashboardsModule,
160
166
  CredentialsDashboardsModule,
161
167
  DataExplorerDashboardsModule,
@@ -183,6 +189,7 @@ export class DashboardsModule {
183
189
  ActionsDashboardsModule,
184
190
  TestingDashboardsModule,
185
191
  SchedulingDashboardsModule,
192
+ RubricsDashboardsModule,
186
193
  CommunicationDashboardsModule,
187
194
  CredentialsDashboardsModule,
188
195
  DataExplorerDashboardsModule,
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,iEAAiE;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,wDAAwD,CAAC;AAC1G,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,+FAA+F;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;;AAEzD;;;;;;;GAOG;AAyDH,MAAM,OAAO,gBAAgB;0GAAhB,gBAAgB;4DAAhB,gBAAgB;gEAtDzB,oBAAoB;YACpB,kBAAkB;YAClB,4BAA4B;YAC5B,uBAAuB;YACvB,uBAAuB;YACvB,0BAA0B;YAC1B,6BAA6B;YAC7B,2BAA2B;YAC3B,4BAA4B;YAC5B,gCAAgC;YAChC,yBAAyB;YACzB,qBAAqB;YACrB,wBAAwB;YACxB,+BAA+B;YAC/B,yBAAyB;YACzB,gCAAgC;YAChC,SAAS;YACT,iBAAiB;YACjB,oEAAoE;YACpE,iBAAiB;YACjB,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,YAAY;YACZ,cAAc;YACd,cAAc;YACd,gBAAgB;YAChB,aAAa,EAGb,oBAAoB;YACpB,kBAAkB;YAClB,4BAA4B;YAC5B,uBAAuB;YACvB,uBAAuB;YACvB,0BAA0B;YAC1B,6BAA6B;YAC7B,2BAA2B;YAC3B,4BAA4B;YAC5B,gCAAgC;YAChC,yBAAyB;YACzB,qBAAqB;YACrB,wBAAwB;YACxB,+BAA+B;YAC/B,yBAAyB;YACzB,gCAAgC;YAChC,SAAS;YACT,iBAAiB;YACjB,oEAAoE;YACpE,iBAAiB;YACjB,mBAAmB;YACnB,iBAAiB;;iFAGR,gBAAgB;cAxD5B,QAAQ;eAAC;gBACR,OAAO,EAAE;oBACP,oBAAoB;oBACpB,kBAAkB;oBAClB,4BAA4B;oBAC5B,uBAAuB;oBACvB,uBAAuB;oBACvB,0BAA0B;oBAC1B,6BAA6B;oBAC7B,2BAA2B;oBAC3B,4BAA4B;oBAC5B,gCAAgC;oBAChC,yBAAyB;oBACzB,qBAAqB;oBACrB,wBAAwB;oBACxB,+BAA+B;oBAC/B,yBAAyB;oBACzB,gCAAgC;oBAChC,SAAS;oBACT,iBAAiB;oBACjB,oEAAoE;oBACpE,iBAAiB;oBACjB,mBAAmB;oBACnB,iBAAiB;oBACjB,aAAa;oBACb,YAAY;oBACZ,cAAc;oBACd,cAAc;oBACd,gBAAgB;oBAChB,aAAa;iBACd;gBACD,OAAO,EAAE;oBACP,oBAAoB;oBACpB,kBAAkB;oBAClB,4BAA4B;oBAC5B,uBAAuB;oBACvB,uBAAuB;oBACvB,0BAA0B;oBAC1B,6BAA6B;oBAC7B,2BAA2B;oBAC3B,4BAA4B;oBAC5B,gCAAgC;oBAChC,yBAAyB;oBACzB,qBAAqB;oBACrB,wBAAwB;oBACxB,+BAA+B;oBAC/B,yBAAyB;oBACzB,gCAAgC;oBAChC,SAAS;oBACT,iBAAiB;oBACjB,oEAAoE;oBACpE,iBAAiB;oBACjB,mBAAmB;oBACnB,iBAAiB;iBAClB;aACF;;wFACY,gBAAgB,cAtDzB,oBAAoB;QACpB,kBAAkB;QAClB,4BAA4B;QAC5B,uBAAuB;QACvB,uBAAuB;QACvB,0BAA0B;QAC1B,6BAA6B;QAC7B,2BAA2B;QAC3B,4BAA4B;QAC5B,gCAAgC;QAChC,yBAAyB;QACzB,qBAAqB;QACrB,wBAAwB;QACxB,+BAA+B;QAC/B,yBAAyB;QACzB,gCAAgC;QAChC,SAAS;QACT,iBAAiB;QACjB,oEAAoE;QACpE,iBAAiB;QACjB,mBAAmB;QACnB,iBAAiB;QACjB,aAAa;QACb,YAAY;QACZ,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,aAAa,aAGb,oBAAoB;QACpB,kBAAkB;QAClB,4BAA4B;QAC5B,uBAAuB;QACvB,uBAAuB;QACvB,0BAA0B;QAC1B,6BAA6B;QAC7B,2BAA2B;QAC3B,4BAA4B;QAC5B,gCAAgC;QAChC,yBAAyB;QACzB,qBAAqB;QACrB,wBAAwB;QACxB,+BAA+B;QAC/B,yBAAyB;QACzB,gCAAgC;QAChC,SAAS;QACT,iBAAiB;QACjB,oEAAoE;QACpE,iBAAiB;QACjB,mBAAmB;QACnB,iBAAiB","sourcesContent":["import { NgModule } from '@angular/core';\n\n// Feature modules — each declares and exports its own components\nimport { CoreDashboardsModule } from './core-dashboards.module';\nimport { AIDashboardsModule } from './ai-dashboards.module';\nimport { SharedDashboardWidgetsModule } from './shared/shared-dashboard-widgets.module';\nimport { ActionsDashboardsModule } from './actions-dashboards.module';\nimport { TestingDashboardsModule } from './testing-dashboards.module';\nimport { SchedulingDashboardsModule } from './scheduling-dashboards.module';\nimport { CommunicationDashboardsModule } from './communication-dashboards.module';\nimport { CredentialsDashboardsModule } from './credentials-dashboards.module';\nimport { DataExplorerDashboardsModule } from './data-explorer-dashboards.module';\nimport { PredictiveStudioDashboardsModule } from './predictive-studio-dashboards.module';\nimport { WorkflowsDashboardsModule } from './workflows-dashboards.module';\nimport { ListsDashboardsModule } from './lists-dashboards.module';\nimport { RoutinesDashboardsModule } from './routines-dashboards.module';\nimport { ComponentStudioDashboardsModule } from './component-studio-dashboards.module';\nimport { ArchivingDashboardsModule } from './archiving-dashboards.module';\nimport { DatabaseDesignerDashboardsModule } from './DatabaseDesigner/database-designer-dashboards.module';\n// Existing standalone modules\nimport { MCPModule } from './MCP';\nimport { IntegrationModule } from './Integration/integration.module';\n// External generic modules (imported for backward compatibility with non-MJExplorer consumers)\nimport { CredentialsModule } from '@memberjunction/ng-credentials';\nimport { AgentRequestsModule } from '@memberjunction/ng-agent-requests';\nimport { SharedPipesModule } from './shared/shared-pipes.module';\nimport { ActionsModule } from '@memberjunction/ng-actions';\nimport { AgentsModule } from '@memberjunction/ng-agents';\nimport { MarkdownModule } from '@memberjunction/ng-markdown';\nimport { VersionsModule } from '@memberjunction/ng-versions';\nimport { SchedulingModule } from '@memberjunction/ng-scheduling';\nimport { NgTreesModule } from '@memberjunction/ng-trees';\n\n/**\n * DashboardsModule — backward-compatible wrapper that imports and re-exports\n * all feature modules. Non-MJExplorer consumers can continue importing this\n * single module to get everything.\n *\n * MJExplorer itself will switch to importing individual feature modules\n * for lazy loading in a later phase.\n */\n@NgModule({\n imports: [\n CoreDashboardsModule,\n AIDashboardsModule,\n SharedDashboardWidgetsModule,\n ActionsDashboardsModule,\n TestingDashboardsModule,\n SchedulingDashboardsModule,\n CommunicationDashboardsModule,\n CredentialsDashboardsModule,\n DataExplorerDashboardsModule,\n PredictiveStudioDashboardsModule,\n WorkflowsDashboardsModule,\n ListsDashboardsModule,\n RoutinesDashboardsModule,\n ComponentStudioDashboardsModule,\n ArchivingDashboardsModule,\n DatabaseDesignerDashboardsModule,\n MCPModule,\n IntegrationModule,\n // External generic modules (re-exported for backward compatibility)\n CredentialsModule,\n AgentRequestsModule,\n SharedPipesModule,\n ActionsModule,\n AgentsModule,\n MarkdownModule,\n VersionsModule,\n SchedulingModule,\n NgTreesModule\n ],\n exports: [\n CoreDashboardsModule,\n AIDashboardsModule,\n SharedDashboardWidgetsModule,\n ActionsDashboardsModule,\n TestingDashboardsModule,\n SchedulingDashboardsModule,\n CommunicationDashboardsModule,\n CredentialsDashboardsModule,\n DataExplorerDashboardsModule,\n PredictiveStudioDashboardsModule,\n WorkflowsDashboardsModule,\n ListsDashboardsModule,\n RoutinesDashboardsModule,\n ComponentStudioDashboardsModule,\n ArchivingDashboardsModule,\n DatabaseDesignerDashboardsModule,\n MCPModule,\n IntegrationModule,\n // External generic modules (re-exported for backward compatibility)\n CredentialsModule,\n AgentRequestsModule,\n SharedPipesModule\n ]\n})\nexport class DashboardsModule { }\n"]}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule } from '@angular/core';\n\n// Feature modules — each declares and exports its own components\nimport { CoreDashboardsModule } from './core-dashboards.module';\nimport { AIDashboardsModule } from './ai-dashboards.module';\nimport { SharedDashboardWidgetsModule } from './shared/shared-dashboard-widgets.module';\nimport { ActionsDashboardsModule } from './actions-dashboards.module';\nimport { TestingDashboardsModule } from './testing-dashboards.module';\nimport { SchedulingDashboardsModule } from './scheduling-dashboards.module';\nimport { RubricsDashboardsModule } from './rubrics-dashboards.module';\nimport { CommunicationDashboardsModule } from './communication-dashboards.module';\nimport { CredentialsDashboardsModule } from './credentials-dashboards.module';\nimport { DataExplorerDashboardsModule } from './data-explorer-dashboards.module';\nimport { PredictiveStudioDashboardsModule } from './predictive-studio-dashboards.module';\nimport { WorkflowsDashboardsModule } from './workflows-dashboards.module';\nimport { ListsDashboardsModule } from './lists-dashboards.module';\nimport { RoutinesDashboardsModule } from './routines-dashboards.module';\nimport { ComponentStudioDashboardsModule } from './component-studio-dashboards.module';\nimport { ArchivingDashboardsModule } from './archiving-dashboards.module';\nimport { DatabaseDesignerDashboardsModule } from './DatabaseDesigner/database-designer-dashboards.module';\n// Existing standalone modules\nimport { MCPModule } from './MCP';\nimport { IntegrationModule } from './Integration/integration.module';\n// External generic modules (imported for backward compatibility with non-MJExplorer consumers)\nimport { CredentialsModule } from '@memberjunction/ng-credentials';\nimport { AgentRequestsModule } from '@memberjunction/ng-agent-requests';\nimport { SharedPipesModule } from './shared/shared-pipes.module';\nimport { ActionsModule } from '@memberjunction/ng-actions';\nimport { AgentsModule } from '@memberjunction/ng-agents';\nimport { MarkdownModule } from '@memberjunction/ng-markdown';\nimport { VersionsModule } from '@memberjunction/ng-versions';\nimport { SchedulingModule } from '@memberjunction/ng-scheduling';\nimport { NgTreesModule } from '@memberjunction/ng-trees';\n\n/**\n * DashboardsModule — backward-compatible wrapper that imports and re-exports\n * all feature modules. Non-MJExplorer consumers can continue importing this\n * single module to get everything.\n *\n * MJExplorer itself will switch to importing individual feature modules\n * for lazy loading in a later phase.\n */\n@NgModule({\n imports: [\n CoreDashboardsModule,\n AIDashboardsModule,\n SharedDashboardWidgetsModule,\n ActionsDashboardsModule,\n TestingDashboardsModule,\n SchedulingDashboardsModule,\n RubricsDashboardsModule,\n CommunicationDashboardsModule,\n CredentialsDashboardsModule,\n DataExplorerDashboardsModule,\n PredictiveStudioDashboardsModule,\n WorkflowsDashboardsModule,\n ListsDashboardsModule,\n RoutinesDashboardsModule,\n ComponentStudioDashboardsModule,\n ArchivingDashboardsModule,\n DatabaseDesignerDashboardsModule,\n MCPModule,\n IntegrationModule,\n // External generic modules (re-exported for backward compatibility)\n CredentialsModule,\n AgentRequestsModule,\n SharedPipesModule,\n ActionsModule,\n AgentsModule,\n MarkdownModule,\n VersionsModule,\n SchedulingModule,\n NgTreesModule\n ],\n exports: [\n CoreDashboardsModule,\n AIDashboardsModule,\n SharedDashboardWidgetsModule,\n ActionsDashboardsModule,\n TestingDashboardsModule,\n SchedulingDashboardsModule,\n RubricsDashboardsModule,\n CommunicationDashboardsModule,\n CredentialsDashboardsModule,\n DataExplorerDashboardsModule,\n PredictiveStudioDashboardsModule,\n WorkflowsDashboardsModule,\n ListsDashboardsModule,\n RoutinesDashboardsModule,\n ComponentStudioDashboardsModule,\n ArchivingDashboardsModule,\n DatabaseDesignerDashboardsModule,\n MCPModule,\n IntegrationModule,\n // External generic modules (re-exported for backward compatibility)\n CredentialsModule,\n AgentRequestsModule,\n SharedPipesModule\n ]\n})\nexport class DashboardsModule { }\n"]}
@@ -59,6 +59,7 @@ export * from './ai-dashboards.module';
59
59
  export * from './actions-dashboards.module';
60
60
  export * from './testing-dashboards.module';
61
61
  export * from './scheduling-dashboards.module';
62
+ export * from './rubrics-dashboards.module';
62
63
  export * from './communication-dashboards.module';
63
64
  export * from './credentials-dashboards.module';
64
65
  export * from './data-explorer-dashboards.module';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,7 @@ export * from './ai-dashboards.module';
89
89
  export * from './actions-dashboards.module';
90
90
  export * from './testing-dashboards.module';
91
91
  export * from './scheduling-dashboards.module';
92
+ export * from './rubrics-dashboards.module';
92
93
  export * from './communication-dashboards.module';
93
94
  export * from './credentials-dashboards.module';
94
95
  export * from './data-explorer-dashboards.module';