@memberjunction/ng-skip-chat 2.96.0 → 2.98.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/dynamic-report/base-report.d.ts.map +1 -1
- package/dist/lib/dynamic-report/base-report.js +2 -1
- package/dist/lib/dynamic-report/base-report.js.map +1 -1
- package/dist/lib/dynamic-report/dynamic-ui-component.d.ts +4 -34
- package/dist/lib/dynamic-report/dynamic-ui-component.d.ts.map +1 -1
- package/dist/lib/dynamic-report/dynamic-ui-component.js +451 -561
- package/dist/lib/dynamic-report/dynamic-ui-component.js.map +1 -1
- package/dist/lib/dynamic-report/linear-report.d.ts +9 -1
- package/dist/lib/dynamic-report/linear-report.d.ts.map +1 -1
- package/dist/lib/dynamic-report/linear-report.js +46 -12
- package/dist/lib/dynamic-report/linear-report.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChildren,
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChildren, ChangeDetectionStrategy } from '@angular/core';
|
|
2
2
|
import { CompositeKey, LogError, Metadata } from '@memberjunction/core';
|
|
3
3
|
import { BuildComponentCompleteCode } from '@memberjunction/interactive-component-types';
|
|
4
4
|
import { DrillDownInfo } from '../drill-down-info';
|
|
@@ -27,11 +27,11 @@ function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_1_Templ
|
|
|
27
27
|
i0.ɵɵadvance();
|
|
28
28
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.getTabTitle(ɵ$index_4_r3), " ");
|
|
29
29
|
} }
|
|
30
|
-
function
|
|
31
|
-
const
|
|
32
|
-
i0.ɵɵelementStart(0, "button",
|
|
33
|
-
i0.ɵɵlistener("click", function
|
|
34
|
-
i0.ɵɵelement(1, "i",
|
|
30
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
32
|
+
i0.ɵɵelementStart(0, "button", 15);
|
|
33
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ɵ$index_4_r3 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createReportForOption(ɵ$index_4_r3)); });
|
|
34
|
+
i0.ɵɵelement(1, "i", 16);
|
|
35
35
|
i0.ɵɵelementStart(2, "span");
|
|
36
36
|
i0.ɵɵtext(3, "Save Report");
|
|
37
37
|
i0.ɵɵelementEnd()();
|
|
@@ -39,192 +39,65 @@ function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_butto
|
|
|
39
39
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
40
40
|
i0.ɵɵproperty("disabled", ctx_r1.isCreatingReport);
|
|
41
41
|
} }
|
|
42
|
-
function
|
|
43
|
-
const
|
|
44
|
-
i0.ɵɵelementStart(0, "button",
|
|
45
|
-
i0.ɵɵlistener("click", function
|
|
46
|
-
i0.ɵɵelement(1, "i",
|
|
42
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
44
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
45
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ɵ$index_4_r3 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openReportForOption(ɵ$index_4_r3)); });
|
|
46
|
+
i0.ɵɵelement(1, "i", 18);
|
|
47
47
|
i0.ɵɵelementStart(2, "span");
|
|
48
48
|
i0.ɵɵtext(3, "Open Saved Report");
|
|
49
49
|
i0.ɵɵelementEnd()();
|
|
50
50
|
} }
|
|
51
|
-
function
|
|
52
|
-
const
|
|
53
|
-
i0.ɵɵelementStart(0, "button",
|
|
54
|
-
i0.ɵɵlistener("click", function
|
|
55
|
-
i0.ɵɵelement(1, "i",
|
|
51
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
53
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
54
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.PrintReport()); });
|
|
55
|
+
i0.ɵɵelement(1, "i", 20);
|
|
56
56
|
i0.ɵɵelementStart(2, "span");
|
|
57
57
|
i0.ɵɵtext(3, "Print Report");
|
|
58
58
|
i0.ɵɵelementEnd()();
|
|
59
59
|
} }
|
|
60
|
-
function
|
|
61
|
-
i0.ɵɵelement(0, "i",
|
|
62
|
-
i0.ɵɵtext(1, "
|
|
63
|
-
} }
|
|
64
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
-
i0.ɵɵelementStart(0, "div", 36);
|
|
66
|
-
i0.ɵɵelement(1, "div", 37);
|
|
67
|
-
i0.ɵɵelementEnd();
|
|
68
|
-
} if (rf & 2) {
|
|
69
|
-
const option_r9 = i0.ɵɵnextContext(4).$implicit;
|
|
70
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
71
|
-
i0.ɵɵadvance();
|
|
72
|
-
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedFunctionalRequirements(option_r9), i0.ɵɵsanitizeHtml);
|
|
73
|
-
} }
|
|
74
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
76
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_2_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_2_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
77
|
-
i0.ɵɵelementEnd();
|
|
78
|
-
} if (rf & 2) {
|
|
79
|
-
i0.ɵɵproperty("selected", true);
|
|
80
|
-
} }
|
|
81
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
-
i0.ɵɵelement(0, "i", 12);
|
|
83
|
-
i0.ɵɵtext(1, " Data Requirements ");
|
|
84
|
-
} }
|
|
85
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
-
i0.ɵɵelementStart(0, "div", 36);
|
|
87
|
-
i0.ɵɵelement(1, "div", 37);
|
|
88
|
-
i0.ɵɵelementEnd();
|
|
89
|
-
} if (rf & 2) {
|
|
90
|
-
const option_r9 = i0.ɵɵnextContext(4).$implicit;
|
|
91
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
92
|
-
i0.ɵɵadvance();
|
|
93
|
-
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedDataRequirements(option_r9), i0.ɵɵsanitizeHtml);
|
|
94
|
-
} }
|
|
95
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
97
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_3_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_3_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
98
|
-
i0.ɵɵelementEnd();
|
|
99
|
-
} if (rf & 2) {
|
|
100
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
101
|
-
i0.ɵɵproperty("selected", !ctx_r1.showFunctionalRequirements);
|
|
102
|
-
} }
|
|
103
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
104
|
-
i0.ɵɵelement(0, "i", 14);
|
|
105
|
-
i0.ɵɵtext(1, " Technical Design ");
|
|
106
|
-
} }
|
|
107
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
-
i0.ɵɵelementStart(0, "div", 36);
|
|
109
|
-
i0.ɵɵelement(1, "div", 37);
|
|
110
|
-
i0.ɵɵelementEnd();
|
|
111
|
-
} if (rf & 2) {
|
|
112
|
-
const option_r9 = i0.ɵɵnextContext(4).$implicit;
|
|
113
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
114
|
-
i0.ɵɵadvance();
|
|
115
|
-
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedTechnicalDesign(option_r9), i0.ɵɵsanitizeHtml);
|
|
116
|
-
} }
|
|
117
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
119
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_4_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_4_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
120
|
-
i0.ɵɵelementEnd();
|
|
121
|
-
} if (rf & 2) {
|
|
122
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
123
|
-
i0.ɵɵproperty("selected", !ctx_r1.showFunctionalRequirements && !ctx_r1.showDataRequirements);
|
|
60
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
+
i0.ɵɵelement(0, "i", 21);
|
|
62
|
+
i0.ɵɵtext(1, " Component ");
|
|
124
63
|
} }
|
|
125
|
-
function
|
|
126
|
-
i0.ɵɵ
|
|
127
|
-
i0.ɵɵ
|
|
128
|
-
} }
|
|
129
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
130
|
-
const _r10 = i0.ɵɵgetCurrentView();
|
|
131
|
-
i0.ɵɵelementStart(0, "div", 38)(1, "mj-code-editor", 39);
|
|
132
|
-
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_5_ng_template_2_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
133
|
-
i0.ɵɵelementEnd()();
|
|
134
|
-
} if (rf & 2) {
|
|
135
|
-
const option_r9 = i0.ɵɵnextContext(4).$implicit;
|
|
136
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
137
|
-
i0.ɵɵadvance();
|
|
138
|
-
i0.ɵɵproperty("value", ctx_r1.getComponentCode(option_r9))("language", "javascript")("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
139
|
-
} }
|
|
140
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
142
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_5_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_5_ng_template_2_Template, 2, 6, "ng-template", 5);
|
|
143
|
-
i0.ɵɵelementEnd();
|
|
144
|
-
} if (rf & 2) {
|
|
145
|
-
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
146
|
-
i0.ɵɵproperty("selected", !ctx_r1.showFunctionalRequirements && !ctx_r1.showDataRequirements && !ctx_r1.showTechnicalDesign);
|
|
147
|
-
} }
|
|
148
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
-
i0.ɵɵelement(0, "i", 16);
|
|
150
|
-
i0.ɵɵtext(1, " Spec ");
|
|
151
|
-
} }
|
|
152
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
|
154
|
-
i0.ɵɵelementStart(0, "div", 38)(1, "mj-code-editor", 39);
|
|
155
|
-
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_6_ng_template_2_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
156
|
-
i0.ɵɵelementEnd()();
|
|
157
|
-
} if (rf & 2) {
|
|
158
|
-
const option_r9 = i0.ɵɵnextContext(4).$implicit;
|
|
159
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
160
|
-
i0.ɵɵadvance();
|
|
161
|
-
i0.ɵɵproperty("value", ctx_r1.getComponentSpec(option_r9))("language", "json")("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
162
|
-
} }
|
|
163
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab");
|
|
165
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_6_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_6_ng_template_2_Template, 2, 6, "ng-template", 5);
|
|
166
|
-
i0.ɵɵelementEnd();
|
|
167
|
-
} }
|
|
168
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
|
170
|
-
i0.ɵɵelementStart(0, "div", 32)(1, "kendo-tabstrip", 33);
|
|
171
|
-
i0.ɵɵtemplate(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_2_Template, 3, 1, "kendo-tabstrip-tab", 3)(3, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_3_Template, 3, 1, "kendo-tabstrip-tab", 3)(4, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_4_Template, 3, 1, "kendo-tabstrip-tab", 3)(5, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_5_Template, 3, 1, "kendo-tabstrip-tab", 3)(6, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Conditional_6_Template, 3, 0, "kendo-tabstrip-tab");
|
|
172
|
-
i0.ɵɵelementEnd()();
|
|
173
|
-
i0.ɵɵelementStart(7, "div", 34);
|
|
174
|
-
i0.ɵɵlistener("mousedown", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Template_div_mousedown_7_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.startResize($event)); })("touchstart", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Template_div_touchstart_7_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.startResize($event)); });
|
|
175
|
-
i0.ɵɵelement(8, "div", 35);
|
|
176
|
-
i0.ɵɵelementEnd();
|
|
177
|
-
} if (rf & 2) {
|
|
178
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
179
|
-
i0.ɵɵstyleProp("height", ctx_r1.detailsPanelHeight);
|
|
180
|
-
i0.ɵɵadvance(2);
|
|
181
|
-
i0.ɵɵconditional(ctx_r1.showFunctionalRequirements ? 2 : -1);
|
|
182
|
-
i0.ɵɵadvance();
|
|
183
|
-
i0.ɵɵconditional(ctx_r1.showDataRequirements ? 3 : -1);
|
|
184
|
-
i0.ɵɵadvance();
|
|
185
|
-
i0.ɵɵconditional(ctx_r1.showTechnicalDesign ? 4 : -1);
|
|
186
|
-
i0.ɵɵadvance();
|
|
187
|
-
i0.ɵɵconditional(ctx_r1.showCode ? 5 : -1);
|
|
188
|
-
i0.ɵɵadvance();
|
|
189
|
-
i0.ɵɵconditional(ctx_r1.showSpec ? 6 : -1);
|
|
190
|
-
} }
|
|
191
|
-
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_mj_react_component_30_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
-
const _r12 = i0.ɵɵgetCurrentView();
|
|
193
|
-
i0.ɵɵelementStart(0, "mj-react-component", 40);
|
|
194
|
-
i0.ɵɵlistener("stateChange", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_mj_react_component_30_Template_mj_react_component_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const ɵ$index_4_r3 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onStateChange(ɵ$index_4_r3, $event)); })("componentEvent", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_mj_react_component_30_Template_mj_react_component_componentEvent_0_listener($event) { i0.ɵɵrestoreView(_r12); const ɵ$index_4_r3 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onComponentEvent(ɵ$index_4_r3, $event)); })("refreshData", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_mj_react_component_30_Template_mj_react_component_refreshData_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.handleRefreshData()); })("openEntityRecord", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_mj_react_component_30_Template_mj_react_component_openEntityRecord_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onOpenEntityRecord($event)); });
|
|
64
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_mj_react_component_1_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
66
|
+
i0.ɵɵelementStart(0, "mj-react-component", 25);
|
|
67
|
+
i0.ɵɵlistener("stateChange", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_mj_react_component_1_Template_mj_react_component_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ɵ$index_4_r3 = i0.ɵɵnextContext(3).$index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onStateChange(ɵ$index_4_r3, $event)); })("componentEvent", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_mj_react_component_1_Template_mj_react_component_componentEvent_0_listener($event) { i0.ɵɵrestoreView(_r7); const ɵ$index_4_r3 = i0.ɵɵnextContext(3).$index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onComponentEvent(ɵ$index_4_r3, $event)); })("refreshData", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_mj_react_component_1_Template_mj_react_component_refreshData_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.handleRefreshData()); })("openEntityRecord", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_mj_react_component_1_Template_mj_react_component_openEntityRecord_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onOpenEntityRecord($event)); });
|
|
195
68
|
i0.ɵɵelementEnd();
|
|
196
69
|
} if (rf & 2) {
|
|
197
|
-
const ɵ$index_4_r3 = i0.ɵɵnextContext(
|
|
70
|
+
const ɵ$index_4_r3 = i0.ɵɵnextContext(3).$index;
|
|
198
71
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
199
72
|
i0.ɵɵproperty("component", ctx_r1.componentOptions[ɵ$index_4_r3].option)("styles", ctx_r1.componentStyles || undefined);
|
|
200
73
|
} }
|
|
201
|
-
function
|
|
202
|
-
i0.ɵɵelementStart(0, "details",
|
|
74
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
i0.ɵɵelementStart(0, "details", 34)(1, "summary", 40);
|
|
203
76
|
i0.ɵɵtext(2, "Technical Details (click to expand)");
|
|
204
77
|
i0.ɵɵelementEnd();
|
|
205
|
-
i0.ɵɵelementStart(3, "pre",
|
|
78
|
+
i0.ɵɵelementStart(3, "pre", 41);
|
|
206
79
|
i0.ɵɵtext(4);
|
|
207
80
|
i0.ɵɵelementEnd()();
|
|
208
81
|
} if (rf & 2) {
|
|
209
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
82
|
+
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
210
83
|
i0.ɵɵadvance(4);
|
|
211
84
|
i0.ɵɵtextInterpolate(ctx_r1.formatTechnicalDetails(ctx_r1.currentError.technicalDetails));
|
|
212
85
|
} }
|
|
213
|
-
function
|
|
214
|
-
const
|
|
215
|
-
i0.ɵɵelementStart(0, "div",
|
|
216
|
-
i0.ɵɵlistener("click", function
|
|
217
|
-
i0.ɵɵelement(4, "span",
|
|
86
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
88
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "div", 26)(2, "div", 27)(3, "button", 28);
|
|
89
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Conditional_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.copyErrorToClipboard()); });
|
|
90
|
+
i0.ɵɵelement(4, "span", 29);
|
|
218
91
|
i0.ɵɵtext(5, " Copy Error Details ");
|
|
219
92
|
i0.ɵɵelementEnd();
|
|
220
|
-
i0.ɵɵelementStart(6, "h3",
|
|
221
|
-
i0.ɵɵelement(7, "span",
|
|
93
|
+
i0.ɵɵelementStart(6, "h3", 30);
|
|
94
|
+
i0.ɵɵelement(7, "span", 31);
|
|
222
95
|
i0.ɵɵtext(8, " Component Rendering Error ");
|
|
223
96
|
i0.ɵɵelementEnd()();
|
|
224
|
-
i0.ɵɵelementStart(9, "p",
|
|
97
|
+
i0.ɵɵelementStart(9, "p", 32);
|
|
225
98
|
i0.ɵɵtext(10, " The selected component option could not be rendered due to the following error: ");
|
|
226
99
|
i0.ɵɵelementEnd();
|
|
227
|
-
i0.ɵɵelementStart(11, "div",
|
|
100
|
+
i0.ɵɵelementStart(11, "div", 33)(12, "strong");
|
|
228
101
|
i0.ɵɵtext(13, "Error Type:");
|
|
229
102
|
i0.ɵɵelementEnd();
|
|
230
103
|
i0.ɵɵtext(14);
|
|
@@ -233,12 +106,12 @@ function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Condi
|
|
|
233
106
|
i0.ɵɵtext(17, "Details:");
|
|
234
107
|
i0.ɵɵelementEnd();
|
|
235
108
|
i0.ɵɵtext(18);
|
|
236
|
-
i0.ɵɵtemplate(19,
|
|
109
|
+
i0.ɵɵtemplate(19, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Conditional_2_Conditional_19_Template, 5, 1, "details", 34);
|
|
237
110
|
i0.ɵɵelementEnd();
|
|
238
|
-
i0.ɵɵelementStart(20, "div",
|
|
111
|
+
i0.ɵɵelementStart(20, "div", 35)(21, "strong", 36);
|
|
239
112
|
i0.ɵɵtext(22, "What to do:");
|
|
240
113
|
i0.ɵɵelementEnd();
|
|
241
|
-
i0.ɵɵelementStart(23, "ol",
|
|
114
|
+
i0.ɵɵelementStart(23, "ol", 37)(24, "li");
|
|
242
115
|
i0.ɵɵtext(25, "Try selecting a different report option from the tabs above");
|
|
243
116
|
i0.ɵɵelementEnd();
|
|
244
117
|
i0.ɵɵelementStart(26, "li");
|
|
@@ -247,13 +120,13 @@ function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Condi
|
|
|
247
120
|
i0.ɵɵelementStart(28, "li");
|
|
248
121
|
i0.ɵɵtext(29, "Contact your IT department if the issue persists");
|
|
249
122
|
i0.ɵɵelementEnd()()();
|
|
250
|
-
i0.ɵɵelementStart(30, "button",
|
|
251
|
-
i0.ɵɵlistener("click", function
|
|
252
|
-
i0.ɵɵelement(31, "span",
|
|
123
|
+
i0.ɵɵelementStart(30, "button", 38);
|
|
124
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Conditional_2_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.retryCurrentOption()); });
|
|
125
|
+
i0.ɵɵelement(31, "span", 39);
|
|
253
126
|
i0.ɵɵtext(32, " Retry ");
|
|
254
127
|
i0.ɵɵelementEnd()()();
|
|
255
128
|
} if (rf & 2) {
|
|
256
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
129
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
257
130
|
i0.ɵɵadvance(14);
|
|
258
131
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.currentError.type, "");
|
|
259
132
|
i0.ɵɵadvance(4);
|
|
@@ -261,77 +134,128 @@ function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Condi
|
|
|
261
134
|
i0.ɵɵadvance();
|
|
262
135
|
i0.ɵɵconditional(ctx_r1.currentError.technicalDetails ? 19 : -1);
|
|
263
136
|
} }
|
|
264
|
-
function
|
|
265
|
-
|
|
266
|
-
i0.ɵɵ
|
|
267
|
-
i0.ɵɵ
|
|
268
|
-
|
|
269
|
-
i0.ɵɵ
|
|
270
|
-
i0.ɵɵ
|
|
271
|
-
i0.ɵɵ
|
|
272
|
-
i0.ɵɵ
|
|
273
|
-
i0.ɵɵ
|
|
274
|
-
i0.ɵɵ
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
i0.ɵɵ
|
|
278
|
-
i0.ɵɵ
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
i0.ɵɵelementStart(
|
|
282
|
-
i0.ɵɵ
|
|
283
|
-
i0.ɵɵelementEnd()
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
i0.ɵɵ
|
|
287
|
-
i0.ɵɵ
|
|
288
|
-
i0.ɵɵ
|
|
137
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
139
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_mj_react_component_1_Template, 1, 2, "mj-react-component", 23)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Conditional_2_Template, 33, 3, "div", 24);
|
|
140
|
+
i0.ɵɵelementEnd();
|
|
141
|
+
} if (rf & 2) {
|
|
142
|
+
const ɵ$index_4_r3 = i0.ɵɵnextContext(2).$index;
|
|
143
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
144
|
+
i0.ɵɵadvance();
|
|
145
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.currentError && ctx_r1.componentOptions[ɵ$index_4_r3] && ɵ$index_4_r3 === ctx_r1.selectedReportOptionIndex);
|
|
146
|
+
i0.ɵɵadvance();
|
|
147
|
+
i0.ɵɵconditional(ctx_r1.currentError && ctx_r1.selectedReportOptionIndex === ɵ$index_4_r3 ? 2 : -1);
|
|
148
|
+
} }
|
|
149
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_13_Template(rf, ctx) { if (rf & 1) {
|
|
150
|
+
i0.ɵɵelement(0, "i", 42);
|
|
151
|
+
i0.ɵɵtext(1, " Functional ");
|
|
152
|
+
} }
|
|
153
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_14_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
155
|
+
i0.ɵɵelement(1, "div", 44);
|
|
156
|
+
i0.ɵɵelementEnd();
|
|
157
|
+
} if (rf & 2) {
|
|
158
|
+
const option_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
159
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
160
|
+
i0.ɵɵadvance();
|
|
161
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedFunctionalRequirements(option_r9), i0.ɵɵsanitizeHtml);
|
|
162
|
+
} }
|
|
163
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_16_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
+
i0.ɵɵelement(0, "i", 45);
|
|
165
|
+
i0.ɵɵtext(1, " Technical ");
|
|
166
|
+
} }
|
|
167
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_17_Template(rf, ctx) { if (rf & 1) {
|
|
168
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
169
|
+
i0.ɵɵelement(1, "div", 44);
|
|
170
|
+
i0.ɵɵelementEnd();
|
|
171
|
+
} if (rf & 2) {
|
|
172
|
+
const option_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
173
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
174
|
+
i0.ɵɵadvance();
|
|
175
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedTechnicalDesign(option_r9), i0.ɵɵsanitizeHtml);
|
|
176
|
+
} }
|
|
177
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_19_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
+
i0.ɵɵelement(0, "i", 46);
|
|
179
|
+
i0.ɵɵtext(1, " Data Spec ");
|
|
180
|
+
} }
|
|
181
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_20_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
183
|
+
i0.ɵɵelement(1, "div", 44);
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
} if (rf & 2) {
|
|
186
|
+
const option_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
187
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
188
|
+
i0.ɵɵadvance();
|
|
189
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedDataRequirements(option_r9), i0.ɵɵsanitizeHtml);
|
|
190
|
+
} }
|
|
191
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_22_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
+
i0.ɵɵelement(0, "i", 47);
|
|
193
|
+
i0.ɵɵtext(1, " Code ");
|
|
194
|
+
} }
|
|
195
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_23_Template(rf, ctx) { if (rf & 1) {
|
|
196
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
197
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "mj-code-editor", 49);
|
|
198
|
+
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_23_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
289
199
|
i0.ɵɵelementEnd()();
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
i0.ɵɵ
|
|
293
|
-
i0.ɵɵ
|
|
294
|
-
i0.ɵɵ
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
i0.ɵɵ
|
|
200
|
+
} if (rf & 2) {
|
|
201
|
+
const option_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
202
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
203
|
+
i0.ɵɵadvance();
|
|
204
|
+
i0.ɵɵproperty("value", ctx_r1.getComponentCode(option_r9))("language", "javascript")("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
205
|
+
} }
|
|
206
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_25_Template(rf, ctx) { if (rf & 1) {
|
|
207
|
+
i0.ɵɵelement(0, "i", 50);
|
|
208
|
+
i0.ɵɵtext(1, " Spec ");
|
|
209
|
+
} }
|
|
210
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_26_Template(rf, ctx) { if (rf & 1) {
|
|
211
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
212
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "mj-code-editor", 49);
|
|
213
|
+
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_26_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
298
214
|
i0.ɵɵelementEnd()();
|
|
299
|
-
i0.ɵɵelementStart(27, "div", 22);
|
|
300
|
-
i0.ɵɵtemplate(28, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_28_Template, 9, 7);
|
|
301
|
-
i0.ɵɵelementStart(29, "div", 23);
|
|
302
|
-
i0.ɵɵtemplate(30, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_mj_react_component_30_Template, 1, 2, "mj-react-component", 24)(31, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Conditional_31_Template, 33, 3, "div", 25);
|
|
303
|
-
i0.ɵɵelementEnd()()();
|
|
304
215
|
} if (rf & 2) {
|
|
305
|
-
const
|
|
216
|
+
const option_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
306
217
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
307
|
-
i0.ɵɵadvance(
|
|
308
|
-
i0.ɵɵ
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
i0.ɵɵ
|
|
312
|
-
i0.ɵɵ
|
|
313
|
-
i0.ɵɵ
|
|
314
|
-
i0.ɵɵ
|
|
218
|
+
i0.ɵɵadvance();
|
|
219
|
+
i0.ɵɵproperty("value", ctx_r1.getComponentSpec(option_r9))("language", "json")("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
220
|
+
} }
|
|
221
|
+
function SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
222
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 7);
|
|
223
|
+
i0.ɵɵelement(2, "div", 8);
|
|
224
|
+
i0.ɵɵelementStart(3, "div", 9);
|
|
225
|
+
i0.ɵɵtemplate(4, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_4_Template, 4, 1, "button", 10)(5, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_5_Template, 4, 0, "button", 11)(6, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_button_6_Template, 4, 0, "button", 12);
|
|
226
|
+
i0.ɵɵelementEnd()();
|
|
227
|
+
i0.ɵɵelementStart(7, "div", 13)(8, "kendo-tabstrip", 14)(9, "kendo-tabstrip-tab", 3);
|
|
228
|
+
i0.ɵɵtemplate(10, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_10_Template, 2, 0, "ng-template", 4)(11, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_11_Template, 3, 2, "ng-template", 5);
|
|
229
|
+
i0.ɵɵelementEnd();
|
|
230
|
+
i0.ɵɵelementStart(12, "kendo-tabstrip-tab");
|
|
231
|
+
i0.ɵɵtemplate(13, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_13_Template, 2, 0, "ng-template", 4)(14, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_14_Template, 2, 1, "ng-template", 5);
|
|
232
|
+
i0.ɵɵelementEnd();
|
|
233
|
+
i0.ɵɵelementStart(15, "kendo-tabstrip-tab");
|
|
234
|
+
i0.ɵɵtemplate(16, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_16_Template, 2, 0, "ng-template", 4)(17, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_17_Template, 2, 1, "ng-template", 5);
|
|
235
|
+
i0.ɵɵelementEnd();
|
|
236
|
+
i0.ɵɵelementStart(18, "kendo-tabstrip-tab");
|
|
237
|
+
i0.ɵɵtemplate(19, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_19_Template, 2, 0, "ng-template", 4)(20, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_20_Template, 2, 1, "ng-template", 5);
|
|
238
|
+
i0.ɵɵelementEnd();
|
|
239
|
+
i0.ɵɵelementStart(21, "kendo-tabstrip-tab");
|
|
240
|
+
i0.ɵɵtemplate(22, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_22_Template, 2, 0, "ng-template", 4)(23, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_23_Template, 2, 6, "ng-template", 5);
|
|
241
|
+
i0.ɵɵelementEnd();
|
|
242
|
+
i0.ɵɵelementStart(24, "kendo-tabstrip-tab");
|
|
243
|
+
i0.ɵɵtemplate(25, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_25_Template, 2, 0, "ng-template", 4)(26, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_ng_template_26_Template, 2, 6, "ng-template", 5);
|
|
244
|
+
i0.ɵɵelementEnd()()()();
|
|
245
|
+
} if (rf & 2) {
|
|
246
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
315
247
|
i0.ɵɵadvance(4);
|
|
316
|
-
i0.ɵɵclassProp("active", ctx_r1.showSpec);
|
|
317
|
-
i0.ɵɵadvance(5);
|
|
318
248
|
i0.ɵɵproperty("ngIf", ctx_r1.ShowCreateReportButton && !ctx_r1.matchingReportID);
|
|
319
249
|
i0.ɵɵadvance();
|
|
320
250
|
i0.ɵɵproperty("ngIf", ctx_r1.ShowOpenSavedReportButton && ctx_r1.matchingReportID);
|
|
321
251
|
i0.ɵɵadvance();
|
|
322
252
|
i0.ɵɵproperty("ngIf", ctx_r1.ShowPrintReport);
|
|
323
|
-
i0.ɵɵadvance(
|
|
324
|
-
i0.ɵɵ
|
|
325
|
-
i0.ɵɵadvance();
|
|
326
|
-
i0.ɵɵattribute("data-tab-index", ɵ$index_4_r3);
|
|
327
|
-
i0.ɵɵadvance();
|
|
328
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.currentError && ctx_r1.componentOptions[ɵ$index_4_r3] && ɵ$index_4_r3 === ctx_r1.selectedReportOptionIndex);
|
|
329
|
-
i0.ɵɵadvance();
|
|
330
|
-
i0.ɵɵconditional(ctx_r1.currentError && ctx_r1.selectedReportOptionIndex === ɵ$index_4_r3 ? 31 : -1);
|
|
253
|
+
i0.ɵɵadvance(3);
|
|
254
|
+
i0.ɵɵproperty("selected", true);
|
|
331
255
|
} }
|
|
332
256
|
function SkipDynamicUIComponentComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
333
257
|
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
334
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_1_Template, 2, 2, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Template,
|
|
258
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_1_Template, 2, 2, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_0_For_2_ng_template_2_Template, 27, 4, "ng-template", 5);
|
|
335
259
|
i0.ɵɵelementEnd();
|
|
336
260
|
} if (rf & 2) {
|
|
337
261
|
const ɵ$index_4_r3 = ctx.$index;
|
|
@@ -350,192 +274,76 @@ function SkipDynamicUIComponentComponent_Conditional_0_Template(rf, ctx) { if (r
|
|
|
350
274
|
i0.ɵɵadvance();
|
|
351
275
|
i0.ɵɵrepeater(ctx_r1.componentOptions);
|
|
352
276
|
} }
|
|
353
|
-
function
|
|
354
|
-
const
|
|
355
|
-
i0.ɵɵelementStart(0, "button",
|
|
356
|
-
i0.ɵɵlistener("click", function
|
|
357
|
-
i0.ɵɵelement(1, "i",
|
|
277
|
+
function SkipDynamicUIComponentComponent_Conditional_1_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
278
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
279
|
+
i0.ɵɵelementStart(0, "button", 15);
|
|
280
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_1_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createReportForOption(0)); });
|
|
281
|
+
i0.ɵɵelement(1, "i", 16);
|
|
358
282
|
i0.ɵɵelementStart(2, "span");
|
|
359
|
-
i0.ɵɵtext(3, "
|
|
283
|
+
i0.ɵɵtext(3, "Save Report");
|
|
360
284
|
i0.ɵɵelementEnd()();
|
|
361
285
|
} if (rf & 2) {
|
|
362
286
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
363
287
|
i0.ɵɵproperty("disabled", ctx_r1.isCreatingReport);
|
|
364
288
|
} }
|
|
365
|
-
function
|
|
366
|
-
const
|
|
367
|
-
i0.ɵɵelementStart(0, "button",
|
|
368
|
-
i0.ɵɵlistener("click", function
|
|
369
|
-
i0.ɵɵelement(1, "i",
|
|
289
|
+
function SkipDynamicUIComponentComponent_Conditional_1_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
290
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
291
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
292
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_1_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openReportForOption(0)); });
|
|
293
|
+
i0.ɵɵelement(1, "i", 18);
|
|
370
294
|
i0.ɵɵelementStart(2, "span");
|
|
371
295
|
i0.ɵɵtext(3, "Open Saved Report");
|
|
372
296
|
i0.ɵɵelementEnd()();
|
|
373
297
|
} }
|
|
374
|
-
function
|
|
375
|
-
const
|
|
376
|
-
i0.ɵɵelementStart(0, "button",
|
|
377
|
-
i0.ɵɵlistener("click", function
|
|
378
|
-
i0.ɵɵelement(1, "i",
|
|
298
|
+
function SkipDynamicUIComponentComponent_Conditional_1_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
299
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
300
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
301
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_1_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.PrintReport()); });
|
|
302
|
+
i0.ɵɵelement(1, "i", 20);
|
|
379
303
|
i0.ɵɵelementStart(2, "span");
|
|
380
304
|
i0.ɵɵtext(3, "Print Report");
|
|
381
305
|
i0.ɵɵelementEnd()();
|
|
382
306
|
} }
|
|
383
|
-
function
|
|
384
|
-
i0.ɵɵelement(0, "i",
|
|
385
|
-
i0.ɵɵtext(1, "
|
|
386
|
-
} }
|
|
387
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
388
|
-
i0.ɵɵelementStart(0, "div", 36);
|
|
389
|
-
i0.ɵɵelement(1, "div", 37);
|
|
390
|
-
i0.ɵɵelementEnd();
|
|
391
|
-
} if (rf & 2) {
|
|
392
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
393
|
-
i0.ɵɵadvance();
|
|
394
|
-
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedFunctionalRequirements(ctx_r1.componentOptions[0]), i0.ɵɵsanitizeHtml);
|
|
395
|
-
} }
|
|
396
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
397
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
398
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_2_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_2_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
399
|
-
i0.ɵɵelementEnd();
|
|
400
|
-
} if (rf & 2) {
|
|
401
|
-
i0.ɵɵproperty("selected", true);
|
|
402
|
-
} }
|
|
403
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
404
|
-
i0.ɵɵelement(0, "i", 12);
|
|
405
|
-
i0.ɵɵtext(1, " Data Requirements ");
|
|
307
|
+
function SkipDynamicUIComponentComponent_Conditional_1_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
308
|
+
i0.ɵɵelement(0, "i", 21);
|
|
309
|
+
i0.ɵɵtext(1, " Component ");
|
|
406
310
|
} }
|
|
407
|
-
function
|
|
408
|
-
i0.ɵɵ
|
|
409
|
-
i0.ɵɵ
|
|
410
|
-
i0.ɵɵ
|
|
411
|
-
} if (rf & 2) {
|
|
412
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
413
|
-
i0.ɵɵadvance();
|
|
414
|
-
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedDataRequirements(ctx_r1.componentOptions[0]), i0.ɵɵsanitizeHtml);
|
|
415
|
-
} }
|
|
416
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
417
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
418
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_3_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_3_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
419
|
-
i0.ɵɵelementEnd();
|
|
420
|
-
} if (rf & 2) {
|
|
421
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
422
|
-
i0.ɵɵproperty("selected", !ctx_r1.showFunctionalRequirements);
|
|
423
|
-
} }
|
|
424
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
425
|
-
i0.ɵɵelement(0, "i", 14);
|
|
426
|
-
i0.ɵɵtext(1, " Technical Design ");
|
|
427
|
-
} }
|
|
428
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
429
|
-
i0.ɵɵelementStart(0, "div", 36);
|
|
430
|
-
i0.ɵɵelement(1, "div", 37);
|
|
431
|
-
i0.ɵɵelementEnd();
|
|
432
|
-
} if (rf & 2) {
|
|
433
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
434
|
-
i0.ɵɵadvance();
|
|
435
|
-
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedTechnicalDesign(ctx_r1.componentOptions[0]), i0.ɵɵsanitizeHtml);
|
|
436
|
-
} }
|
|
437
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
438
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
439
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_4_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_4_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
440
|
-
i0.ɵɵelementEnd();
|
|
441
|
-
} if (rf & 2) {
|
|
442
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
443
|
-
i0.ɵɵproperty("selected", !ctx_r1.showFunctionalRequirements && !ctx_r1.showDataRequirements);
|
|
444
|
-
} }
|
|
445
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
446
|
-
i0.ɵɵelement(0, "i", 16);
|
|
447
|
-
i0.ɵɵtext(1, " Code ");
|
|
448
|
-
} }
|
|
449
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
450
|
-
const _r19 = i0.ɵɵgetCurrentView();
|
|
451
|
-
i0.ɵɵelementStart(0, "div", 38)(1, "mj-code-editor", 59);
|
|
452
|
-
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_5_ng_template_2_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
453
|
-
i0.ɵɵelementEnd()();
|
|
454
|
-
} if (rf & 2) {
|
|
455
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
456
|
-
i0.ɵɵadvance();
|
|
457
|
-
i0.ɵɵproperty("language", "javascript")("value", ctx_r1.getComponentCode(ctx_r1.componentOptions[0]))("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
458
|
-
} }
|
|
459
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
460
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
461
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_5_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_5_ng_template_2_Template, 2, 6, "ng-template", 5);
|
|
462
|
-
i0.ɵɵelementEnd();
|
|
463
|
-
} if (rf & 2) {
|
|
464
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
465
|
-
i0.ɵɵproperty("selected", !ctx_r1.showFunctionalRequirements && !ctx_r1.showDataRequirements && !ctx_r1.showTechnicalDesign);
|
|
466
|
-
} }
|
|
467
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
468
|
-
i0.ɵɵelement(0, "i", 57);
|
|
469
|
-
i0.ɵɵtext(1, " Spec ");
|
|
470
|
-
} }
|
|
471
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
472
|
-
const _r20 = i0.ɵɵgetCurrentView();
|
|
473
|
-
i0.ɵɵelementStart(0, "div", 38)(1, "mj-code-editor", 39);
|
|
474
|
-
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_6_ng_template_2_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
475
|
-
i0.ɵɵelementEnd()();
|
|
476
|
-
} if (rf & 2) {
|
|
477
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
478
|
-
i0.ɵɵadvance();
|
|
479
|
-
i0.ɵɵproperty("value", ctx_r1.getComponentSpec(ctx_r1.componentOptions[0]))("language", "json")("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
480
|
-
} }
|
|
481
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
482
|
-
i0.ɵɵelementStart(0, "kendo-tabstrip-tab", 3);
|
|
483
|
-
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_6_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_6_ng_template_2_Template, 2, 6, "ng-template", 5);
|
|
311
|
+
function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
312
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
313
|
+
i0.ɵɵelementStart(0, "mj-react-component", 25);
|
|
314
|
+
i0.ɵɵlistener("stateChange", function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_1_Template_mj_react_component_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onStateChange(0, $event)); })("componentEvent", function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_1_Template_mj_react_component_componentEvent_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onComponentEvent(0, $event)); })("refreshData", function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_1_Template_mj_react_component_refreshData_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.handleRefreshData()); })("openEntityRecord", function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_1_Template_mj_react_component_openEntityRecord_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onOpenEntityRecord($event)); });
|
|
484
315
|
i0.ɵɵelementEnd();
|
|
485
316
|
} if (rf & 2) {
|
|
486
317
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
487
|
-
i0.ɵɵproperty("
|
|
488
|
-
} }
|
|
489
|
-
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
490
|
-
const _r18 = i0.ɵɵgetCurrentView();
|
|
491
|
-
i0.ɵɵelementStart(0, "div", 32)(1, "kendo-tabstrip", 33);
|
|
492
|
-
i0.ɵɵtemplate(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_2_Template, 3, 1, "kendo-tabstrip-tab", 3)(3, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_3_Template, 3, 1, "kendo-tabstrip-tab", 3)(4, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_4_Template, 3, 1, "kendo-tabstrip-tab", 3)(5, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_5_Template, 3, 1, "kendo-tabstrip-tab", 3)(6, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Conditional_6_Template, 3, 1, "kendo-tabstrip-tab", 3);
|
|
493
|
-
i0.ɵɵelementEnd()();
|
|
494
|
-
i0.ɵɵelementStart(7, "div", 34);
|
|
495
|
-
i0.ɵɵlistener("mousedown", function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Template_div_mousedown_7_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startResize($event)); })("touchstart", function SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Template_div_touchstart_7_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startResize($event)); });
|
|
496
|
-
i0.ɵɵelement(8, "div", 35);
|
|
497
|
-
i0.ɵɵelementEnd();
|
|
498
|
-
} if (rf & 2) {
|
|
499
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
500
|
-
i0.ɵɵstyleProp("height", ctx_r1.detailsPanelHeight);
|
|
501
|
-
i0.ɵɵadvance(2);
|
|
502
|
-
i0.ɵɵconditional(ctx_r1.showFunctionalRequirements && ctx_r1.componentOptions[0] ? 2 : -1);
|
|
503
|
-
i0.ɵɵadvance();
|
|
504
|
-
i0.ɵɵconditional(ctx_r1.showDataRequirements && ctx_r1.componentOptions[0] ? 3 : -1);
|
|
505
|
-
i0.ɵɵadvance();
|
|
506
|
-
i0.ɵɵconditional(ctx_r1.showTechnicalDesign && ctx_r1.componentOptions[0] ? 4 : -1);
|
|
507
|
-
i0.ɵɵadvance();
|
|
508
|
-
i0.ɵɵconditional(ctx_r1.showCode && ctx_r1.componentOptions[0] ? 5 : -1);
|
|
509
|
-
i0.ɵɵadvance();
|
|
510
|
-
i0.ɵɵconditional(ctx_r1.showSpec && ctx_r1.componentOptions[0] ? 6 : -1);
|
|
318
|
+
i0.ɵɵproperty("component", ctx_r1.componentOptions[0].option)("styles", ctx_r1.componentStyles || undefined);
|
|
511
319
|
} }
|
|
512
|
-
function
|
|
513
|
-
i0.ɵɵelementStart(0, "details",
|
|
320
|
+
function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
321
|
+
i0.ɵɵelementStart(0, "details", 34)(1, "summary", 40);
|
|
514
322
|
i0.ɵɵtext(2, "Technical Details (click to expand)");
|
|
515
323
|
i0.ɵɵelementEnd();
|
|
516
|
-
i0.ɵɵelementStart(3, "pre",
|
|
324
|
+
i0.ɵɵelementStart(3, "pre", 41);
|
|
517
325
|
i0.ɵɵtext(4);
|
|
518
326
|
i0.ɵɵelementEnd()();
|
|
519
327
|
} if (rf & 2) {
|
|
520
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
328
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
521
329
|
i0.ɵɵadvance(4);
|
|
522
330
|
i0.ɵɵtextInterpolate(ctx_r1.formatTechnicalDetails(ctx_r1.currentError.technicalDetails));
|
|
523
331
|
} }
|
|
524
|
-
function
|
|
525
|
-
const
|
|
526
|
-
i0.ɵɵelementStart(0, "div",
|
|
527
|
-
i0.ɵɵlistener("click", function
|
|
528
|
-
i0.ɵɵelement(4, "span",
|
|
332
|
+
function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
333
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
334
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "div", 26)(2, "div", 27)(3, "button", 28);
|
|
335
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyErrorToClipboard()); });
|
|
336
|
+
i0.ɵɵelement(4, "span", 29);
|
|
529
337
|
i0.ɵɵtext(5, " Copy Error Details ");
|
|
530
338
|
i0.ɵɵelementEnd();
|
|
531
|
-
i0.ɵɵelementStart(6, "h3",
|
|
532
|
-
i0.ɵɵelement(7, "span",
|
|
339
|
+
i0.ɵɵelementStart(6, "h3", 30);
|
|
340
|
+
i0.ɵɵelement(7, "span", 31);
|
|
533
341
|
i0.ɵɵtext(8, " Component Rendering Error ");
|
|
534
342
|
i0.ɵɵelementEnd()();
|
|
535
|
-
i0.ɵɵelementStart(9, "p",
|
|
343
|
+
i0.ɵɵelementStart(9, "p", 32);
|
|
536
344
|
i0.ɵɵtext(10, " The selected component option could not be rendered due to the following error: ");
|
|
537
345
|
i0.ɵɵelementEnd();
|
|
538
|
-
i0.ɵɵelementStart(11, "div",
|
|
346
|
+
i0.ɵɵelementStart(11, "div", 33)(12, "strong");
|
|
539
347
|
i0.ɵɵtext(13, "Error Type:");
|
|
540
348
|
i0.ɵɵelementEnd();
|
|
541
349
|
i0.ɵɵtext(14);
|
|
@@ -544,24 +352,24 @@ function SkipDynamicUIComponentComponent_Conditional_1_Conditional_29_Template(r
|
|
|
544
352
|
i0.ɵɵtext(17, "Details:");
|
|
545
353
|
i0.ɵɵelementEnd();
|
|
546
354
|
i0.ɵɵtext(18);
|
|
547
|
-
i0.ɵɵtemplate(19,
|
|
355
|
+
i0.ɵɵtemplate(19, SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_2_Conditional_19_Template, 5, 1, "details", 34);
|
|
548
356
|
i0.ɵɵelementEnd();
|
|
549
|
-
i0.ɵɵelementStart(20, "div",
|
|
357
|
+
i0.ɵɵelementStart(20, "div", 35)(21, "strong", 36);
|
|
550
358
|
i0.ɵɵtext(22, "What to do:");
|
|
551
359
|
i0.ɵɵelementEnd();
|
|
552
|
-
i0.ɵɵelementStart(23, "ol",
|
|
360
|
+
i0.ɵɵelementStart(23, "ol", 37)(24, "li");
|
|
553
361
|
i0.ɵɵtext(25, "Copy the error details and send them back to Skip in the chat to get a corrected version");
|
|
554
362
|
i0.ɵɵelementEnd();
|
|
555
363
|
i0.ɵɵelementStart(26, "li");
|
|
556
364
|
i0.ɵɵtext(27, "Contact your IT department if the issue persists");
|
|
557
365
|
i0.ɵɵelementEnd()()();
|
|
558
|
-
i0.ɵɵelementStart(28, "button",
|
|
559
|
-
i0.ɵɵlistener("click", function
|
|
560
|
-
i0.ɵɵelement(29, "span",
|
|
366
|
+
i0.ɵɵelementStart(28, "button", 38);
|
|
367
|
+
i0.ɵɵlistener("click", function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_2_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.retryCurrentOption()); });
|
|
368
|
+
i0.ɵɵelement(29, "span", 39);
|
|
561
369
|
i0.ɵɵtext(30, " Retry ");
|
|
562
370
|
i0.ɵɵelementEnd()()();
|
|
563
371
|
} if (rf & 2) {
|
|
564
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
372
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
565
373
|
i0.ɵɵadvance(14);
|
|
566
374
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.currentError.type, "");
|
|
567
375
|
i0.ɵɵadvance(4);
|
|
@@ -569,84 +377,140 @@ function SkipDynamicUIComponentComponent_Conditional_1_Conditional_29_Template(r
|
|
|
569
377
|
i0.ɵɵadvance();
|
|
570
378
|
i0.ɵɵconditional(ctx_r1.currentError.technicalDetails ? 19 : -1);
|
|
571
379
|
} }
|
|
572
|
-
function
|
|
573
|
-
|
|
574
|
-
i0.ɵɵ
|
|
575
|
-
i0.ɵɵ
|
|
380
|
+
function SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Template(rf, ctx) { if (rf & 1) {
|
|
381
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
382
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_1_Template, 1, 2, "mj-react-component", 51)(2, SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Conditional_2_Template, 31, 3, "div", 24);
|
|
383
|
+
i0.ɵɵelementEnd();
|
|
384
|
+
} if (rf & 2) {
|
|
385
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
386
|
+
i0.ɵɵadvance();
|
|
387
|
+
i0.ɵɵconditional(!ctx_r1.currentError && ctx_r1.componentOptions[0] ? 1 : -1);
|
|
388
|
+
i0.ɵɵadvance();
|
|
389
|
+
i0.ɵɵconditional(ctx_r1.currentError ? 2 : -1);
|
|
390
|
+
} }
|
|
391
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
392
|
+
i0.ɵɵelement(0, "i", 42);
|
|
393
|
+
i0.ɵɵtext(1, " Functional ");
|
|
394
|
+
} }
|
|
395
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_12_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
396
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
397
|
+
i0.ɵɵelement(1, "div", 44);
|
|
576
398
|
i0.ɵɵelementEnd();
|
|
577
399
|
} if (rf & 2) {
|
|
578
400
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
579
|
-
i0.ɵɵ
|
|
401
|
+
i0.ɵɵadvance();
|
|
402
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedFunctionalRequirements(ctx_r1.componentOptions[0]), i0.ɵɵsanitizeHtml);
|
|
580
403
|
} }
|
|
581
|
-
function
|
|
582
|
-
i0.ɵɵelementStart(0, "
|
|
583
|
-
i0.ɵɵtemplate(1,
|
|
404
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
405
|
+
i0.ɵɵelementStart(0, "kendo-tabstrip-tab");
|
|
406
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_12_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_12_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
407
|
+
i0.ɵɵelementEnd();
|
|
408
|
+
} }
|
|
409
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
410
|
+
i0.ɵɵelement(0, "i", 45);
|
|
411
|
+
i0.ɵɵtext(1, " Technical ");
|
|
412
|
+
} }
|
|
413
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_13_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
414
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
415
|
+
i0.ɵɵelement(1, "div", 44);
|
|
584
416
|
i0.ɵɵelementEnd();
|
|
585
417
|
} if (rf & 2) {
|
|
586
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
418
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
587
419
|
i0.ɵɵadvance();
|
|
588
|
-
i0.ɵɵproperty("
|
|
420
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedTechnicalDesign(ctx_r1.componentOptions[0]), i0.ɵɵsanitizeHtml);
|
|
589
421
|
} }
|
|
590
|
-
function
|
|
591
|
-
|
|
592
|
-
i0.ɵɵ
|
|
593
|
-
i0.ɵɵ
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
i0.ɵɵ
|
|
597
|
-
i0.ɵɵ
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
i0.ɵɵ
|
|
601
|
-
i0.ɵɵ
|
|
602
|
-
i0.ɵɵ
|
|
422
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
423
|
+
i0.ɵɵelementStart(0, "kendo-tabstrip-tab");
|
|
424
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_13_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_13_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
425
|
+
i0.ɵɵelementEnd();
|
|
426
|
+
} }
|
|
427
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_14_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
428
|
+
i0.ɵɵelement(0, "i", 46);
|
|
429
|
+
i0.ɵɵtext(1, " Data Spec ");
|
|
430
|
+
} }
|
|
431
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_14_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
432
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
433
|
+
i0.ɵɵelement(1, "div", 44);
|
|
434
|
+
i0.ɵɵelementEnd();
|
|
435
|
+
} if (rf & 2) {
|
|
436
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
437
|
+
i0.ɵɵadvance();
|
|
438
|
+
i0.ɵɵproperty("innerHTML", ctx_r1.getFormattedDataRequirements(ctx_r1.componentOptions[0]), i0.ɵɵsanitizeHtml);
|
|
439
|
+
} }
|
|
440
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
441
|
+
i0.ɵɵelementStart(0, "kendo-tabstrip-tab");
|
|
442
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_14_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_14_ng_template_2_Template, 2, 1, "ng-template", 5);
|
|
443
|
+
i0.ɵɵelementEnd();
|
|
444
|
+
} }
|
|
445
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_15_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
446
|
+
i0.ɵɵelement(0, "i", 47);
|
|
447
|
+
i0.ɵɵtext(1, " Code ");
|
|
448
|
+
} }
|
|
449
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_15_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
450
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
451
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "mj-code-editor", 49);
|
|
452
|
+
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_1_Conditional_15_ng_template_2_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
603
453
|
i0.ɵɵelementEnd()();
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
i0.ɵɵ
|
|
607
|
-
i0.ɵɵ
|
|
608
|
-
|
|
454
|
+
} if (rf & 2) {
|
|
455
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
456
|
+
i0.ɵɵadvance();
|
|
457
|
+
i0.ɵɵproperty("value", ctx_r1.getComponentCode(ctx_r1.componentOptions[0]))("language", "javascript")("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
458
|
+
} }
|
|
459
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
460
|
+
i0.ɵɵelementStart(0, "kendo-tabstrip-tab");
|
|
461
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_15_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_15_ng_template_2_Template, 2, 6, "ng-template", 5);
|
|
462
|
+
i0.ɵɵelementEnd();
|
|
463
|
+
} }
|
|
464
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_16_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
465
|
+
i0.ɵɵelement(0, "i", 50);
|
|
466
|
+
i0.ɵɵtext(1, " Spec ");
|
|
467
|
+
} }
|
|
468
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_16_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
469
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
470
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "mj-code-editor", 49);
|
|
471
|
+
i0.ɵɵlistener("toolbarAction", function SkipDynamicUIComponentComponent_Conditional_1_Conditional_16_ng_template_2_Template_mj_code_editor_toolbarAction_1_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.handleCodeToolbarAction($event)); });
|
|
609
472
|
i0.ɵɵelementEnd()();
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
i0.ɵɵ
|
|
613
|
-
i0.ɵɵ
|
|
614
|
-
|
|
473
|
+
} if (rf & 2) {
|
|
474
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
475
|
+
i0.ɵɵadvance();
|
|
476
|
+
i0.ɵɵproperty("value", ctx_r1.getComponentSpec(ctx_r1.componentOptions[0]))("language", "json")("autoFocus", false)("indentWithTab", true)("readonly", true)("toolbar", ctx_r1.codeToolbarConfig);
|
|
477
|
+
} }
|
|
478
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
479
|
+
i0.ɵɵelementStart(0, "kendo-tabstrip-tab");
|
|
480
|
+
i0.ɵɵtemplate(1, SkipDynamicUIComponentComponent_Conditional_1_Conditional_16_ng_template_1_Template, 2, 0, "ng-template", 4)(2, SkipDynamicUIComponentComponent_Conditional_1_Conditional_16_ng_template_2_Template, 2, 6, "ng-template", 5);
|
|
481
|
+
i0.ɵɵelementEnd();
|
|
482
|
+
} }
|
|
483
|
+
function SkipDynamicUIComponentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
484
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 7);
|
|
485
|
+
i0.ɵɵelement(2, "div", 8);
|
|
486
|
+
i0.ɵɵelementStart(3, "div", 9);
|
|
487
|
+
i0.ɵɵtemplate(4, SkipDynamicUIComponentComponent_Conditional_1_button_4_Template, 4, 1, "button", 10)(5, SkipDynamicUIComponentComponent_Conditional_1_button_5_Template, 4, 0, "button", 11)(6, SkipDynamicUIComponentComponent_Conditional_1_button_6_Template, 4, 0, "button", 12);
|
|
615
488
|
i0.ɵɵelementEnd()();
|
|
616
|
-
i0.ɵɵelementStart(
|
|
617
|
-
i0.ɵɵ
|
|
618
|
-
i0.ɵɵ
|
|
619
|
-
i0.ɵɵ
|
|
620
|
-
i0.ɵɵtext(22, "Spec");
|
|
489
|
+
i0.ɵɵelementStart(7, "div", 13)(8, "kendo-tabstrip", 14)(9, "kendo-tabstrip-tab", 3);
|
|
490
|
+
i0.ɵɵtemplate(10, SkipDynamicUIComponentComponent_Conditional_1_ng_template_10_Template, 2, 0, "ng-template", 4)(11, SkipDynamicUIComponentComponent_Conditional_1_ng_template_11_Template, 3, 2, "ng-template", 5);
|
|
491
|
+
i0.ɵɵelementEnd();
|
|
492
|
+
i0.ɵɵtemplate(12, SkipDynamicUIComponentComponent_Conditional_1_Conditional_12_Template, 3, 0, "kendo-tabstrip-tab")(13, SkipDynamicUIComponentComponent_Conditional_1_Conditional_13_Template, 3, 0, "kendo-tabstrip-tab")(14, SkipDynamicUIComponentComponent_Conditional_1_Conditional_14_Template, 3, 0, "kendo-tabstrip-tab")(15, SkipDynamicUIComponentComponent_Conditional_1_Conditional_15_Template, 3, 0, "kendo-tabstrip-tab")(16, SkipDynamicUIComponentComponent_Conditional_1_Conditional_16_Template, 3, 0, "kendo-tabstrip-tab");
|
|
621
493
|
i0.ɵɵelementEnd()()();
|
|
622
|
-
i0.ɵɵelementStart(23, "div", 18);
|
|
623
|
-
i0.ɵɵtemplate(24, SkipDynamicUIComponentComponent_Conditional_1_button_24_Template, 4, 1, "button", 19)(25, SkipDynamicUIComponentComponent_Conditional_1_button_25_Template, 4, 0, "button", 20)(26, SkipDynamicUIComponentComponent_Conditional_1_button_26_Template, 4, 0, "button", 21);
|
|
624
|
-
i0.ɵɵelementEnd()();
|
|
625
|
-
i0.ɵɵelementStart(27, "div", 22);
|
|
626
|
-
i0.ɵɵtemplate(28, SkipDynamicUIComponentComponent_Conditional_1_Conditional_28_Template, 9, 7)(29, SkipDynamicUIComponentComponent_Conditional_1_Conditional_29_Template, 31, 3, "div", 58)(30, SkipDynamicUIComponentComponent_Conditional_1_Conditional_30_Template, 2, 1, "div", 23);
|
|
627
|
-
i0.ɵɵelementEnd()();
|
|
628
494
|
} if (rf & 2) {
|
|
629
495
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
630
|
-
i0.ɵɵadvance(3);
|
|
631
|
-
i0.ɵɵclassProp("active", ctx_r1.showFunctionalRequirements);
|
|
632
496
|
i0.ɵɵadvance(4);
|
|
633
|
-
i0.ɵɵclassProp("active", ctx_r1.showDataRequirements);
|
|
634
|
-
i0.ɵɵadvance(4);
|
|
635
|
-
i0.ɵɵclassProp("active", ctx_r1.showTechnicalDesign);
|
|
636
|
-
i0.ɵɵadvance(4);
|
|
637
|
-
i0.ɵɵclassProp("active", ctx_r1.showCode);
|
|
638
|
-
i0.ɵɵadvance(4);
|
|
639
|
-
i0.ɵɵclassProp("active", ctx_r1.showSpec);
|
|
640
|
-
i0.ɵɵadvance(5);
|
|
641
497
|
i0.ɵɵproperty("ngIf", ctx_r1.ShowCreateReportButton && !ctx_r1.matchingReportID);
|
|
642
498
|
i0.ɵɵadvance();
|
|
643
499
|
i0.ɵɵproperty("ngIf", ctx_r1.ShowOpenSavedReportButton && ctx_r1.matchingReportID);
|
|
644
500
|
i0.ɵɵadvance();
|
|
645
501
|
i0.ɵɵproperty("ngIf", ctx_r1.ShowPrintReport);
|
|
646
|
-
i0.ɵɵadvance(
|
|
647
|
-
i0.ɵɵ
|
|
502
|
+
i0.ɵɵadvance(3);
|
|
503
|
+
i0.ɵɵproperty("selected", true);
|
|
504
|
+
i0.ɵɵadvance(3);
|
|
505
|
+
i0.ɵɵconditional(ctx_r1.componentOptions[0] ? 12 : -1);
|
|
506
|
+
i0.ɵɵadvance();
|
|
507
|
+
i0.ɵɵconditional(ctx_r1.componentOptions[0] ? 13 : -1);
|
|
508
|
+
i0.ɵɵadvance();
|
|
509
|
+
i0.ɵɵconditional(ctx_r1.componentOptions[0] ? 14 : -1);
|
|
648
510
|
i0.ɵɵadvance();
|
|
649
|
-
i0.ɵɵconditional(ctx_r1.
|
|
511
|
+
i0.ɵɵconditional(ctx_r1.componentOptions[0] ? 15 : -1);
|
|
512
|
+
i0.ɵɵadvance();
|
|
513
|
+
i0.ɵɵconditional(ctx_r1.componentOptions[0] ? 16 : -1);
|
|
650
514
|
} }
|
|
651
515
|
export class SkipDynamicUIComponentComponent {
|
|
652
516
|
sanitizer;
|
|
@@ -671,22 +535,11 @@ export class SkipDynamicUIComponentComponent {
|
|
|
671
535
|
// Cached component type name to avoid expression change errors
|
|
672
536
|
_cachedComponentTypeName = 'Component';
|
|
673
537
|
isCreatingReport = false;
|
|
674
|
-
// Toggle states for showing/hiding component details
|
|
675
|
-
showFunctionalRequirements = false;
|
|
676
|
-
showDataRequirements = false;
|
|
677
|
-
showTechnicalDesign = false;
|
|
678
|
-
showCode = false;
|
|
679
|
-
showSpec = false;
|
|
680
538
|
// Toolbar configuration for code editors
|
|
681
539
|
codeToolbarConfig = {
|
|
682
540
|
enabled: true,
|
|
683
541
|
buttons: [TOOLBAR_BUTTONS.COPY]
|
|
684
542
|
};
|
|
685
|
-
// Details panel height for resizing
|
|
686
|
-
detailsPanelHeight = '300px';
|
|
687
|
-
isResizing = false;
|
|
688
|
-
startY = 0;
|
|
689
|
-
startHeight = 0;
|
|
690
543
|
// Cache for user states only - component specs come from data
|
|
691
544
|
userStates = new Map();
|
|
692
545
|
// Note: utilities are now auto-initialized by mj-react-component if not provided
|
|
@@ -776,13 +629,144 @@ export class SkipDynamicUIComponentComponent {
|
|
|
776
629
|
this.ComponentObjectName = null;
|
|
777
630
|
}
|
|
778
631
|
}
|
|
632
|
+
/**
|
|
633
|
+
* Print the current report
|
|
634
|
+
* Uses a hidden iframe to print only the component content without opening new windows
|
|
635
|
+
*/
|
|
779
636
|
async PrintReport() {
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
637
|
+
try {
|
|
638
|
+
// Find the currently visible React component
|
|
639
|
+
let componentElement = null;
|
|
640
|
+
const allComponents = document.querySelectorAll('mj-react-component');
|
|
641
|
+
for (const comp of Array.from(allComponents)) {
|
|
642
|
+
const rect = comp.getBoundingClientRect();
|
|
643
|
+
if (rect.width > 0 && rect.height > 0) {
|
|
644
|
+
const parent = comp.closest('.k-content.k-state-active');
|
|
645
|
+
if (parent || allComponents.length === 1) {
|
|
646
|
+
componentElement = comp;
|
|
647
|
+
break;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
if (!componentElement) {
|
|
652
|
+
console.warn('No visible React component found to print');
|
|
653
|
+
window.print();
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
656
|
+
// Create a hidden iframe for printing
|
|
657
|
+
const printFrame = document.createElement('iframe');
|
|
658
|
+
printFrame.style.position = 'absolute';
|
|
659
|
+
printFrame.style.width = '0';
|
|
660
|
+
printFrame.style.height = '0';
|
|
661
|
+
printFrame.style.border = 'none';
|
|
662
|
+
printFrame.style.left = '-9999px';
|
|
663
|
+
document.body.appendChild(printFrame);
|
|
664
|
+
const printDocument = printFrame.contentDocument || printFrame.contentWindow?.document;
|
|
665
|
+
if (!printDocument) {
|
|
666
|
+
console.error('Could not access iframe document');
|
|
667
|
+
document.body.removeChild(printFrame);
|
|
668
|
+
window.print();
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
// Clone the component element to preserve current state
|
|
672
|
+
const clonedContent = componentElement.cloneNode(true);
|
|
673
|
+
// Get all stylesheets
|
|
674
|
+
const styleSheets = Array.from(document.styleSheets)
|
|
675
|
+
.map(sheet => {
|
|
676
|
+
try {
|
|
677
|
+
return Array.from(sheet.cssRules || [])
|
|
678
|
+
.map(rule => rule.cssText)
|
|
679
|
+
.join('\n');
|
|
680
|
+
}
|
|
681
|
+
catch (e) {
|
|
682
|
+
return '';
|
|
683
|
+
}
|
|
684
|
+
})
|
|
685
|
+
.filter(css => css.length > 0)
|
|
686
|
+
.join('\n');
|
|
687
|
+
// Get external stylesheet links
|
|
688
|
+
const styleLinks = Array.from(document.querySelectorAll('link[rel="stylesheet"]'))
|
|
689
|
+
.map(link => link.href)
|
|
690
|
+
.map(href => `<link rel="stylesheet" href="${href}">`)
|
|
691
|
+
.join('\n');
|
|
692
|
+
// Build the print document
|
|
693
|
+
printDocument.open();
|
|
694
|
+
printDocument.write(`
|
|
695
|
+
<!DOCTYPE html>
|
|
696
|
+
<html>
|
|
697
|
+
<head>
|
|
698
|
+
<meta charset="utf-8">
|
|
699
|
+
<title>Print Report</title>
|
|
700
|
+
${styleLinks}
|
|
701
|
+
<style>
|
|
702
|
+
${styleSheets}
|
|
703
|
+
|
|
704
|
+
/* Reset styles for print */
|
|
705
|
+
body {
|
|
706
|
+
margin: 0;
|
|
707
|
+
padding: 20px;
|
|
708
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
709
|
+
background: white;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
/* Ensure proper print colors */
|
|
713
|
+
* {
|
|
714
|
+
-webkit-print-color-adjust: exact !important;
|
|
715
|
+
print-color-adjust: exact !important;
|
|
716
|
+
color-adjust: exact !important;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
/* Make sure charts and tables are visible */
|
|
720
|
+
canvas, svg {
|
|
721
|
+
max-width: 100% !important;
|
|
722
|
+
page-break-inside: avoid;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
table {
|
|
726
|
+
width: 100% !important;
|
|
727
|
+
page-break-inside: auto;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
tr {
|
|
731
|
+
page-break-inside: avoid;
|
|
732
|
+
page-break-after: auto;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
/* Hide any remaining UI elements */
|
|
736
|
+
.k-tabstrip-items,
|
|
737
|
+
.tab-action-bar,
|
|
738
|
+
button {
|
|
739
|
+
display: none !important;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
@media print {
|
|
743
|
+
body {
|
|
744
|
+
margin: 0;
|
|
745
|
+
padding: 10px;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
</style>
|
|
749
|
+
</head>
|
|
750
|
+
<body></body>
|
|
751
|
+
</html>
|
|
752
|
+
`);
|
|
753
|
+
printDocument.close();
|
|
754
|
+
// Append the cloned content
|
|
755
|
+
printDocument.body.appendChild(clonedContent);
|
|
756
|
+
// Wait for content to render (especially important for charts)
|
|
757
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
758
|
+
// Trigger print for the iframe
|
|
759
|
+
if (printFrame.contentWindow) {
|
|
760
|
+
printFrame.contentWindow.focus();
|
|
761
|
+
printFrame.contentWindow.print();
|
|
762
|
+
}
|
|
763
|
+
// Clean up the iframe after a delay to ensure print dialog has opened
|
|
764
|
+
setTimeout(() => {
|
|
765
|
+
document.body.removeChild(printFrame);
|
|
766
|
+
}, 1000);
|
|
784
767
|
}
|
|
785
|
-
|
|
768
|
+
catch (error) {
|
|
769
|
+
console.error('Error printing report:', error);
|
|
786
770
|
window.print();
|
|
787
771
|
}
|
|
788
772
|
}
|
|
@@ -870,42 +854,6 @@ Component Name: ${this.ComponentObjectName || 'Unknown'}`;
|
|
|
870
854
|
get firstOptionComponentTypeName() {
|
|
871
855
|
return this._cachedComponentTypeName;
|
|
872
856
|
}
|
|
873
|
-
/**
|
|
874
|
-
* Toggle methods for showing/hiding component details
|
|
875
|
-
*/
|
|
876
|
-
toggleShowFunctionalRequirements() {
|
|
877
|
-
this.showFunctionalRequirements = !this.showFunctionalRequirements;
|
|
878
|
-
this.adjustDetailsPanelHeight();
|
|
879
|
-
}
|
|
880
|
-
toggleShowDataRequirements() {
|
|
881
|
-
this.showDataRequirements = !this.showDataRequirements;
|
|
882
|
-
this.adjustDetailsPanelHeight();
|
|
883
|
-
}
|
|
884
|
-
toggleShowTechnicalDesign() {
|
|
885
|
-
this.showTechnicalDesign = !this.showTechnicalDesign;
|
|
886
|
-
this.adjustDetailsPanelHeight();
|
|
887
|
-
}
|
|
888
|
-
toggleShowCode() {
|
|
889
|
-
this.showCode = !this.showCode;
|
|
890
|
-
this.adjustDetailsPanelHeight();
|
|
891
|
-
}
|
|
892
|
-
toggleShowSpec() {
|
|
893
|
-
this.showSpec = !this.showSpec;
|
|
894
|
-
this.adjustDetailsPanelHeight();
|
|
895
|
-
}
|
|
896
|
-
/**
|
|
897
|
-
* Adjust the details panel height when toggling views
|
|
898
|
-
*/
|
|
899
|
-
adjustDetailsPanelHeight() {
|
|
900
|
-
const anyVisible = this.showFunctionalRequirements || this.showDataRequirements ||
|
|
901
|
-
this.showTechnicalDesign || this.showCode || this.showSpec;
|
|
902
|
-
if (anyVisible && this.detailsPanelHeight === '0px') {
|
|
903
|
-
this.detailsPanelHeight = '300px';
|
|
904
|
-
}
|
|
905
|
-
else if (!anyVisible) {
|
|
906
|
-
this.detailsPanelHeight = '0px';
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
857
|
/**
|
|
910
858
|
* Format functional requirements as HTML
|
|
911
859
|
*/
|
|
@@ -994,60 +942,11 @@ Component Name: ${this.ComponentObjectName || 'Unknown'}`;
|
|
|
994
942
|
return `// Error building complete component spec:\n// ${e}`;
|
|
995
943
|
}
|
|
996
944
|
}
|
|
997
|
-
/**
|
|
998
|
-
* Start resizing the details panel
|
|
999
|
-
*/
|
|
1000
|
-
startResize(event) {
|
|
1001
|
-
event.preventDefault();
|
|
1002
|
-
this.isResizing = true;
|
|
1003
|
-
this.startY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;
|
|
1004
|
-
this.startHeight = parseInt(this.detailsPanelHeight, 10);
|
|
1005
|
-
// Use NgZone to run outside Angular to prevent change detection during drag
|
|
1006
|
-
this.ngZone.runOutsideAngular(() => {
|
|
1007
|
-
document.addEventListener('mousemove', this.onResize);
|
|
1008
|
-
document.addEventListener('mouseup', this.stopResize);
|
|
1009
|
-
document.addEventListener('touchmove', this.onResize);
|
|
1010
|
-
document.addEventListener('touchend', this.stopResize);
|
|
1011
|
-
});
|
|
1012
|
-
}
|
|
1013
|
-
/**
|
|
1014
|
-
* Handle resize movement
|
|
1015
|
-
*/
|
|
1016
|
-
onResize = (event) => {
|
|
1017
|
-
if (!this.isResizing)
|
|
1018
|
-
return;
|
|
1019
|
-
const currentY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;
|
|
1020
|
-
const deltaY = currentY - this.startY;
|
|
1021
|
-
const newHeight = Math.max(100, Math.min(600, this.startHeight + deltaY));
|
|
1022
|
-
// Run inside Angular to update the binding
|
|
1023
|
-
this.ngZone.run(() => {
|
|
1024
|
-
this.detailsPanelHeight = `${newHeight}px`;
|
|
1025
|
-
this.cdr.detectChanges();
|
|
1026
|
-
});
|
|
1027
|
-
};
|
|
1028
|
-
/**
|
|
1029
|
-
* Stop resizing
|
|
1030
|
-
*/
|
|
1031
|
-
stopResize = () => {
|
|
1032
|
-
this.isResizing = false;
|
|
1033
|
-
document.removeEventListener('mousemove', this.onResize);
|
|
1034
|
-
document.removeEventListener('mouseup', this.stopResize);
|
|
1035
|
-
document.removeEventListener('touchmove', this.onResize);
|
|
1036
|
-
document.removeEventListener('touchend', this.stopResize);
|
|
1037
|
-
};
|
|
1038
|
-
onWindowResize() {
|
|
1039
|
-
// Ensure the details panel height remains valid on window resize
|
|
1040
|
-
const currentHeight = parseInt(this.detailsPanelHeight, 10);
|
|
1041
|
-
const maxHeight = window.innerHeight * 0.6;
|
|
1042
|
-
if (currentHeight > maxHeight) {
|
|
1043
|
-
this.detailsPanelHeight = `${maxHeight}px`;
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
945
|
async ngAfterViewInit() {
|
|
1047
946
|
// Initialize libraries once per application if not already done
|
|
1048
947
|
if (!SkipDynamicUIComponentComponent.librariesInitialized) {
|
|
1049
948
|
try {
|
|
1050
|
-
await this.adapter.initialize(undefined, SKIP_CHAT_ADDITIONAL_LIBRARIES);
|
|
949
|
+
await this.adapter.initialize(undefined, SKIP_CHAT_ADDITIONAL_LIBRARIES, { debug: true });
|
|
1051
950
|
SkipDynamicUIComponentComponent.librariesInitialized = true;
|
|
1052
951
|
}
|
|
1053
952
|
catch (error) {
|
|
@@ -1076,10 +975,6 @@ Component Name: ${this.ComponentObjectName || 'Unknown'}`;
|
|
|
1076
975
|
ngOnDestroy() {
|
|
1077
976
|
// Clean up user states
|
|
1078
977
|
this.userStates.clear();
|
|
1079
|
-
// Ensure resize listeners are removed if still active
|
|
1080
|
-
if (this.isResizing) {
|
|
1081
|
-
this.stopResize();
|
|
1082
|
-
}
|
|
1083
978
|
// The MJReactComponent handles its own cleanup
|
|
1084
979
|
}
|
|
1085
980
|
ngOnChanges(changes) {
|
|
@@ -1291,17 +1186,15 @@ Component Name: ${this.ComponentObjectName || 'Unknown'}`;
|
|
|
1291
1186
|
} if (rf & 2) {
|
|
1292
1187
|
let _t;
|
|
1293
1188
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.reactComponents = _t);
|
|
1294
|
-
} },
|
|
1295
|
-
i0.ɵɵ
|
|
1296
|
-
} }, inputs: { UIComponentCode: "UIComponentCode", ComponentObjectName: "ComponentObjectName", ShowPrintReport: "ShowPrintReport", ShowReportOptionsToggle: "ShowReportOptionsToggle", ShowCreateReportButton: "ShowCreateReportButton", ShowOpenSavedReportButton: "ShowOpenSavedReportButton", matchingReportID: "matchingReportID", SkipData: "SkipData" }, outputs: { DrillDownEvent: "DrillDownEvent", CreateReportRequested: "CreateReportRequested", NavigateToMatchingReportRequested: "NavigateToMatchingReportRequested" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 1, consts: [[2, "height", "100%", "display", "flex", "flex-direction", "column", 3, "keepTabContent"], [2, "height", "100%", "display", "flex", "flex-direction", "column"], [2, "height", "100%", "display", "flex", "flex-direction", "column", 3, "tabSelect", "keepTabContent"], [3, "selected"], ["kendoTabTitle", ""], ["kendoTabContent", ""], [1, "fa-solid", "fa-star", "star-icon"], [1, "tab-action-bar"], [1, "tab-actions-left"], ["title", "Toggle Functional Requirements", 1, "tab-action-button", "toggle-button", 3, "click"], [1, "fa-solid", "fa-list-check"], ["title", "Toggle Data Requirements", 1, "tab-action-button", "toggle-button", 3, "click"], [1, "fa-solid", "fa-database"], ["title", "Toggle Technical Design", 1, "tab-action-button", "toggle-button", 3, "click"], [1, "fa-solid", "fa-cogs"], ["title", "Toggle Code View", 1, "tab-action-button", "toggle-button", 3, "click"], [1, "fa-solid", "fa-code"], ["title", "Toggle Spec View", 1, "tab-action-button", "toggle-button", 3, "click"], [1, "tab-actions-right"], ["class", "tab-action-button create-button", 3, "disabled", "click", 4, "ngIf"], ["class", "tab-action-button create-button", 3, "click", 4, "ngIf"], ["class", "tab-action-button print-button", "title", "Print Report", 3, "click", 4, "ngIf"], [2, "flex", "1", "display", "flex", "flex-direction", "column", "min-height", "0", "overflow", "hidden"], [2, "flex", "1", "position", "relative", "min-height", "0", "overflow", "auto"], ["style", "width: 100%; height: 100%;", 3, "component", "styles", "stateChange", "componentEvent", "refreshData", "openEntityRecord", 4, "ngIf"], [2, "top", "0", "left", "0", "right", "0", "bottom", "0", "display", "flex", "align-items", "flex-start", "justify-content", "center", "padding-top", "20px", "background", "rgba(255, 255, 255, 0.95)", "z-index", "10"], [1, "tab-action-button", "create-button", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], [1, "tab-action-button", "create-button", 3, "click"], [1, "fa-solid", "fa-folder-open"], ["title", "Print Report", 1, "tab-action-button", "print-button", 3, "click"], [1, "fa-solid", "fa-print"], [1, "details-panel"], [2, "height", "100%"], [1, "panel-resizer", 3, "mousedown", "touchstart"], [1, "resizer-handle"], [1, "details-content"], [3, "innerHTML"], [1, "details-content", "code-content"], [2, "height", "100%", 3, "toolbarAction", "value", "language", "autoFocus", "indentWithTab", "readonly", "toolbar"], [2, "width", "100%", "height", "100%", 3, "stateChange", "componentEvent", "refreshData", "openEntityRecord", "component", "styles"], [2, "width", "90%", "max-width", "600px", "height", "500px", "background-color", "#f8f9fa", "border", "2px solid #dc3545", "border-radius", "8px", "padding", "20px", "overflow-y", "auto", "box-shadow", "0 4px 6px rgba(0, 0, 0, 0.1)"], [2, "position", "relative"], ["kendoButton", "", 2, "position", "absolute", "top", "0", "right", "0", "font-size", "12px", 3, "click"], [1, "fa-solid", "fa-copy"], [2, "color", "#dc3545", "margin-top", "0", "margin-right", "150px", "font-size", "18px"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "margin-bottom", "10px", "font-size", "14px"], [2, "background-color", "#fff", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "margin-bottom", "12px", "font-family", "'Courier New', monospace", "font-size", "12px"], [2, "margin-top", "8px"], [2, "background-color", "#e7f3ff", "border", "1px solid #b3d9ff", "border-radius", "4px", "padding", "12px", "margin-bottom", "12px"], [2, "font-size", "14px"], [2, "margin", "8px 0 0 20px", "padding", "0", "font-size", "13px"], ["kendoButton", "", 2, "font-size", "13px", 3, "click"], [1, "fa-solid", "fa-rotate"], [2, "cursor", "pointer", "color", "#0056b3"], [2, "margin-top", "8px", "white-space", "pre-wrap", "word-break", "break-word", "font-size", "11px"], [1, "fa-solid", "fa-file-code"], [2, "flex", "1", "display", "flex", "align-items", "center", "justify-content", "center", "min-height", "400px", "padding", "20px", "background", "rgba(255, 255, 255, 0.95)"], [2, "height", "100%", 3, "toolbarAction", "language", "value", "autoFocus", "indentWithTab", "readonly", "toolbar"], [2, "width", "90%", "max-width", "600px", "max-height", "80vh", "background-color", "#f8f9fa", "border", "2px solid #dc3545", "border-radius", "8px", "padding", "20px", "overflow-y", "auto", "box-shadow", "0 4px 6px rgba(0, 0, 0, 0.1)"]], template: function SkipDynamicUIComponentComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1297
|
-
i0.ɵɵtemplate(0, SkipDynamicUIComponentComponent_Conditional_0_Template, 3, 1, "kendo-tabstrip", 0)(1, SkipDynamicUIComponentComponent_Conditional_1_Template, 31, 15, "div", 1);
|
|
1189
|
+
} }, inputs: { UIComponentCode: "UIComponentCode", ComponentObjectName: "ComponentObjectName", ShowPrintReport: "ShowPrintReport", ShowReportOptionsToggle: "ShowReportOptionsToggle", ShowCreateReportButton: "ShowCreateReportButton", ShowOpenSavedReportButton: "ShowOpenSavedReportButton", matchingReportID: "matchingReportID", SkipData: "SkipData" }, outputs: { DrillDownEvent: "DrillDownEvent", CreateReportRequested: "CreateReportRequested", NavigateToMatchingReportRequested: "NavigateToMatchingReportRequested" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 1, consts: [[2, "height", "100%", "display", "flex", "flex-direction", "column", 3, "keepTabContent"], [2, "height", "100%", "display", "flex", "flex-direction", "column"], [2, "height", "100%", "display", "flex", "flex-direction", "column", 3, "tabSelect", "keepTabContent"], [3, "selected"], ["kendoTabTitle", ""], ["kendoTabContent", ""], [1, "fa-solid", "fa-star", "star-icon"], [1, "tab-action-bar"], [1, "tab-actions-left"], [1, "tab-actions-right"], ["class", "tab-action-button create-button", 3, "disabled", "click", 4, "ngIf"], ["class", "tab-action-button create-button", 3, "click", 4, "ngIf"], ["class", "tab-action-button print-button", "title", "Print Report", 3, "click", 4, "ngIf"], [1, "inner-tabstrip-container", 2, "flex", "1", "display", "flex", "flex-direction", "column", "min-height", "0", "overflow", "hidden"], [1, "inner-tabs", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "tab-action-button", "create-button", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], [1, "tab-action-button", "create-button", 3, "click"], [1, "fa-solid", "fa-folder-open"], ["title", "Print Report", 1, "tab-action-button", "print-button", 3, "click"], [1, "fa-solid", "fa-print"], [1, "fa-solid", "fa-chart-line"], [2, "height", "100%", "position", "relative", "overflow", "auto"], ["style", "width: 100%; height: 100%;", 3, "component", "styles", "stateChange", "componentEvent", "refreshData", "openEntityRecord", 4, "ngIf"], [2, "top", "0", "left", "0", "right", "0", "bottom", "0", "display", "flex", "align-items", "flex-start", "justify-content", "center", "padding-top", "20px", "background", "rgba(255, 255, 255, 0.95)", "z-index", "10"], [2, "width", "100%", "height", "100%", 3, "stateChange", "componentEvent", "refreshData", "openEntityRecord", "component", "styles"], [2, "width", "90%", "max-width", "600px", "height", "500px", "background-color", "#f8f9fa", "border", "2px solid #dc3545", "border-radius", "8px", "padding", "20px", "overflow-y", "auto", "box-shadow", "0 4px 6px rgba(0, 0, 0, 0.1)"], [2, "position", "relative"], ["kendoButton", "", 2, "position", "absolute", "top", "0", "right", "0", "font-size", "12px", 3, "click"], [1, "fa-solid", "fa-copy"], [2, "color", "#dc3545", "margin-top", "0", "margin-right", "150px", "font-size", "18px"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "margin-bottom", "10px", "font-size", "14px"], [2, "background-color", "#fff", "border", "1px solid #dee2e6", "border-radius", "4px", "padding", "12px", "margin-bottom", "12px", "font-family", "'Courier New', monospace", "font-size", "12px"], [2, "margin-top", "8px"], [2, "background-color", "#e7f3ff", "border", "1px solid #b3d9ff", "border-radius", "4px", "padding", "12px", "margin-bottom", "12px"], [2, "font-size", "14px"], [2, "margin", "8px 0 0 20px", "padding", "0", "font-size", "13px"], ["kendoButton", "", 2, "font-size", "13px", 3, "click"], [1, "fa-solid", "fa-rotate"], [2, "cursor", "pointer", "color", "#0056b3"], [2, "margin-top", "8px", "white-space", "pre-wrap", "word-break", "break-word", "font-size", "11px"], [1, "fa-solid", "fa-list-check"], [1, "details-content", 2, "height", "100%", "overflow", "auto", "padding", "20px"], [3, "innerHTML"], [1, "fa-solid", "fa-cogs"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-code"], [1, "details-content", "code-content", 2, "height", "100%", "overflow", "hidden"], [2, "height", "100%", 3, "toolbarAction", "value", "language", "autoFocus", "indentWithTab", "readonly", "toolbar"], [1, "fa-solid", "fa-file-code"], [2, "width", "100%", "height", "100%", 3, "component", "styles"]], template: function SkipDynamicUIComponentComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1190
|
+
i0.ɵɵtemplate(0, SkipDynamicUIComponentComponent_Conditional_0_Template, 3, 1, "kendo-tabstrip", 0)(1, SkipDynamicUIComponentComponent_Conditional_1_Template, 17, 9, "div", 1);
|
|
1298
1191
|
} if (rf & 2) {
|
|
1299
1192
|
i0.ɵɵconditional(ctx.componentOptions.length > 1 ? 0 : 1);
|
|
1300
|
-
} }, dependencies: [i3.NgIf, i4.TabStripComponent, i4.TabStripTabComponent, i4.TabContentDirective, i4.TabTitleDirective, i5.ButtonComponent, i6.CodeEditorComponent, i2.MJReactComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n position: relative;\n}\n\n\n\n.tab-action-bar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n background-color: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.tab-actions-left[_ngcontent-%COMP%], \n.tab-actions-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n.tab-action-button[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background-color: transparent;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: #333;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab-action-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n.tab-action-button[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.tab-action-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.tab-action-button.create-button[_ngcontent-%COMP%], \n.tab-action-button.print-button[_ngcontent-%COMP%] {\n background-color: white;\n color: #333;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.create-button[_ngcontent-%COMP%]:hover:not(:disabled), \n.tab-action-button.print-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n\n\n.tab-action-button.toggle-button[_ngcontent-%COMP%] {\n background-color: white;\n color: #666;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.toggle-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n color: #333;\n}\n\n.tab-action-button.toggle-button.active[_ngcontent-%COMP%] {\n background-color: #5B4FE9;\n color: white;\n border-color: #5B4FE9;\n}\n\n.tab-action-button.toggle-button.active[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #4940D4;\n border-color: #4940D4;\n}\n\n\n\n.details-panel[_ngcontent-%COMP%] {\n border-bottom: 1px solid #e0e0e0;\n background-color: #fafafa;\n overflow: hidden;\n transition: height 0.3s ease;\n}\n\n.details-content[_ngcontent-%COMP%] {\n padding: 16px;\n overflow-y: auto;\n height: 100%;\n font-size: 14px;\n line-height: 1.6;\n}\n\n.details-content.code-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.panel-resizer[_ngcontent-%COMP%] {\n height: 4px;\n background-color: #e0e0e0;\n cursor: ns-resize;\n position: relative;\n transition: background-color 0.2s ease;\n}\n\n.panel-resizer[_ngcontent-%COMP%]:hover {\n background-color: #d0d0d0;\n}\n\n.resizer-handle[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 2px;\n background-color: #999;\n border-radius: 1px;\n}\n\n\n\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(h1) { font-size: 1.5em; margin-top: 0; margin-bottom: 0.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(h2) { font-size: 1.3em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(h3) { font-size: 1.1em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(ul), .details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(ol) { margin-left: 1.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(code) { \n background-color: #f4f4f4; \n padding: 2px 4px; \n border-radius: 3px; \n font-family: 'Courier New', monospace; \n font-size: 0.9em;\n}\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(pre) { \n background-color: #f4f4f4; \n padding: 12px; \n border-radius: 4px; \n overflow-x: auto; \n}\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(blockquote) { \n border-left: 4px solid #e0e0e0; \n padding-left: 16px; \n margin-left: 0; \n color: #666; \n}\n\n\n\n .k-tabstrip {\n border: none;\n height: 100%;\n display: flex;\n flex-direction: column;\n margin:
|
|
1193
|
+
} }, dependencies: [i3.NgIf, i4.TabStripComponent, i4.TabStripTabComponent, i4.TabContentDirective, i4.TabTitleDirective, i5.ButtonComponent, i6.CodeEditorComponent, i2.MJReactComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n position: relative;\n}\n\n\n\n.tab-action-bar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n background-color: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.tab-actions-left[_ngcontent-%COMP%], \n.tab-actions-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n.tab-action-button[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background-color: transparent;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: #333;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab-action-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n.tab-action-button[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.tab-action-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.tab-action-button.create-button[_ngcontent-%COMP%], \n.tab-action-button.print-button[_ngcontent-%COMP%] {\n background-color: white;\n color: #333;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.create-button[_ngcontent-%COMP%]:hover:not(:disabled), \n.tab-action-button.print-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n\n\n.tab-action-button.toggle-button[_ngcontent-%COMP%] {\n background-color: white;\n color: #666;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.toggle-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n color: #333;\n}\n\n.tab-action-button.toggle-button.active[_ngcontent-%COMP%] {\n background-color: #5B4FE9;\n color: white;\n border-color: #5B4FE9;\n}\n\n.tab-action-button.toggle-button.active[_ngcontent-%COMP%]:hover:not(:disabled) {\n background-color: #4940D4;\n border-color: #4940D4;\n}\n\n\n\n.details-panel[_ngcontent-%COMP%] {\n border-bottom: 1px solid #e0e0e0;\n background-color: #fafafa;\n overflow: hidden;\n transition: height 0.3s ease;\n}\n\n.details-content[_ngcontent-%COMP%] {\n padding: 16px;\n overflow-y: auto;\n height: 100%;\n font-size: 14px;\n line-height: 1.6;\n}\n\n.details-content.code-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.panel-resizer[_ngcontent-%COMP%] {\n height: 4px;\n background-color: #e0e0e0;\n cursor: ns-resize;\n position: relative;\n transition: background-color 0.2s ease;\n}\n\n.panel-resizer[_ngcontent-%COMP%]:hover {\n background-color: #d0d0d0;\n}\n\n.resizer-handle[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 2px;\n background-color: #999;\n border-radius: 1px;\n}\n\n\n\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(h1) { font-size: 1.5em; margin-top: 0; margin-bottom: 0.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(h2) { font-size: 1.3em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(h3) { font-size: 1.1em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(ul), .details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(ol) { margin-left: 1.5em; }\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(code) { \n background-color: #f4f4f4; \n padding: 2px 4px; \n border-radius: 3px; \n font-family: 'Courier New', monospace; \n font-size: 0.9em;\n}\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(pre) { \n background-color: #f4f4f4; \n padding: 12px; \n border-radius: 4px; \n overflow-x: auto; \n}\n.details-content[_ngcontent-%COMP%] [_ngcontent-%COMP%]:deep(blockquote) { \n border-left: 4px solid #e0e0e0; \n padding-left: 16px; \n margin-left: 0; \n color: #666; \n}\n\n\n\n .k-tabstrip {\n border: none;\n height: 100%;\n display: flex;\n flex-direction: column;\n margin: 0;\n}\n\n .k-tabstrip-items {\n background: #f8f9fa;\n border: none;\n border-bottom: 1px solid #e0e0e0;\n flex: 0 0 auto;\n padding: 4px 8px 0 8px;\n gap: 2px;\n display: flex;\n min-height: auto;\n height: auto;\n}\n\n .k-tabstrip-items-wrapper {\n height: auto;\n min-height: auto;\n}\n\n .k-content {\n flex: 1;\n overflow: hidden;\n padding: 0;\n background: white;\n border: none;\n min-height: 0;\n}\n\n .k-tabstrip .k-item {\n margin-right: 2px;\n border: none;\n background: transparent;\n border-radius: 4px 4px 0 0;\n padding: 0;\n transition: all 0.2s ease;\n height: auto;\n min-height: auto;\n}\n\n .k-tabstrip .k-item.k-selected {\n background: white;\n border: 1px solid #e0e0e0;\n border-bottom: 1px solid white;\n margin-bottom: -1px;\n z-index: 1;\n}\n\n .k-tabstrip .k-link {\n padding: 6px 12px;\n font-weight: 500;\n font-size: 13px;\n color: #666;\n transition: all 0.15s ease;\n border-radius: 4px 4px 0 0;\n background: transparent;\n border: none;\n display: flex;\n align-items: center;\n gap: 3px;\n line-height: 1.2;\n min-height: auto;\n height: auto;\n}\n\n .k-tabstrip .k-link i {\n font-size: 12px;\n}\n\n .k-tabstrip .k-item:hover:not(.k-selected) .k-link {\n color: #333;\n background: rgba(0, 0, 0, 0.04);\n}\n\n .k-tabstrip .k-item.k-selected .k-link {\n color: #1976d2;\n font-weight: 600;\n background: white;\n}\n\n\n\n .k-tabstrip .k-link .star-icon {\n display: inline-block;\n margin-right: 4px;\n color: #ffd700;\n font-size: 12px;\n vertical-align: middle;\n}\n\n\n\n .k-tabstrip-items::before, \n .k-tabstrip-items::after {\n display: none;\n}\n\n .k-tabstrip .k-item::before, \n .k-tabstrip .k-item::after {\n display: none;\n}\n\n\n\n .k-tabstrip .k-link:focus {\n outline: none;\n box-shadow: none;\n}\n\n\n\n .k-tabstrip .k-content.k-state-active {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.react-host-container[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n\n\n .inner-tabs .k-tabstrip-items-wrapper {\n overflow-x: auto !important;\n overflow-y: hidden !important;\n max-width: 100%;\n}\n\n .inner-tabs .k-tabstrip-items {\n display: inline-flex !important;\n flex-wrap: nowrap !important;\n width: max-content !important;\n padding: 4px 8px 0 8px;\n background: #fff;\n border-bottom: 1px solid #e8e8e8;\n}\n\n .inner-tabs .k-tabstrip-item {\n flex: 0 0 auto !important;\n display: inline-block !important;\n float: none !important;\n}\n\n .inner-tabs .k-link {\n padding: 6px 12px;\n font-size: 12px;\n white-space: nowrap !important;\n display: inline-flex !important;\n align-items: center;\n gap: 4px;\n}\n\n\n\n .inner-tabstrip-container .k-tabstrip-items {\n min-width: max-content !important;\n}\n\n\n\n .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar {\n height: 6px;\n}\n\n .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar-track {\n background: #f1f1f1;\n}\n\n .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar-thumb {\n background: #888;\n border-radius: 3px;\n}\n\n .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar-thumb:hover {\n background: #555;\n}\n\n\n\n .k-tabstrip .k-tabstrip {\n margin: 0;\n}\n\n .k-tabstrip .k-tabstrip .k-tabstrip-items {\n display: inline-flex !important;\n flex-wrap: nowrap !important;\n width: max-content !important;\n}\n\n .k-tabstrip .k-tabstrip .k-tabstrip-items-wrapper {\n overflow-x: auto !important;\n overflow-y: hidden !important;\n}\n\n\n\n .k-tabstrip .k-tabstrip .k-content {\n border: none;\n background: transparent;\n}"], changeDetection: 0 });
|
|
1301
1194
|
}
|
|
1302
1195
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SkipDynamicUIComponentComponent, [{
|
|
1303
1196
|
type: Component,
|
|
1304
|
-
args: [{ selector: 'skip-dynamic-ui-component', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (componentOptions.length > 1) {\n <!-- Multiple options: show tabs -->\n <kendo-tabstrip \n (tabSelect)=\"onTabSelect($event)\"\n [keepTabContent]=\"true\"\n style=\"height: 100%; display: flex; flex-direction: column;\">\n @for (option of componentOptions; track option; let i = $index) {\n <kendo-tabstrip-tab [selected]=\"i === selectedReportOptionIndex\">\n <ng-template kendoTabTitle>\n @if (isTopRanked(i)) {\n <i class=\"fa-solid fa-star star-icon\"></i>\n }\n {{ getTabTitle(i) }}\n </ng-template>\n <ng-template kendoTabContent>\n <div style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Tab Action Bar -->\n <div class=\"tab-action-bar\">\n <div class=\"tab-actions-left\">\n <!-- Toggle buttons for showing/hiding component details -->\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowFunctionalRequirements()\"\n [class.active]=\"showFunctionalRequirements\"\n title=\"Toggle Functional Requirements\">\n <i class=\"fa-solid fa-list-check\"></i>\n <span>Functional</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowDataRequirements()\"\n [class.active]=\"showDataRequirements\"\n title=\"Toggle Data Requirements\">\n <i class=\"fa-solid fa-database\"></i>\n <span>Data</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowTechnicalDesign()\"\n [class.active]=\"showTechnicalDesign\"\n title=\"Toggle Technical Design\">\n <i class=\"fa-solid fa-cogs\"></i>\n <span>Technical</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowCode()\"\n [class.active]=\"showCode\"\n title=\"Toggle Code View\">\n <i class=\"fa-solid fa-code\"></i>\n <span>Code</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowSpec()\"\n [class.active]=\"showSpec\"\n title=\"Toggle Spec View\">\n <i class=\"fa-solid fa-code\"></i>\n <span>Spec</span>\n </button>\n </div>\n <div class=\"tab-actions-right\">\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowCreateReportButton && !matchingReportID\"\n (click)=\"createReportForOption(i)\"\n [disabled]=\"isCreatingReport\">\n <i class=\"fa-solid fa-save\"></i>\n <span>Save Report</span>\n </button>\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowOpenSavedReportButton && matchingReportID\"\n (click)=\"openReportForOption(i)\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <span>Open Saved Report</span>\n </button>\n <button class=\"tab-action-button print-button\" \n *ngIf=\"ShowPrintReport\" \n (click)=\"PrintReport()\"\n title=\"Print Report\">\n <i class=\"fa-solid fa-print\"></i>\n <span>Print Report</span>\n </button>\n </div>\n </div>\n \n <!-- Main content area with optional details panels -->\n <div style=\"flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden;\">\n @if (showFunctionalRequirements || showDataRequirements || showTechnicalDesign || showCode) {\n <!-- Details panel -->\n <div class=\"details-panel\" [style.height]=\"detailsPanelHeight\">\n <kendo-tabstrip style=\"height: 100%;\">\n @if (showFunctionalRequirements) {\n <kendo-tabstrip-tab [selected]=\"true\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-list-check\"></i> Functional Requirements\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\">\n <div [innerHTML]=\"getFormattedFunctionalRequirements(option)\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showDataRequirements) {\n <kendo-tabstrip-tab [selected]=\"!showFunctionalRequirements\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-database\"></i> Data Requirements\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\">\n <div [innerHTML]=\"getFormattedDataRequirements(option)\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showTechnicalDesign) {\n <kendo-tabstrip-tab [selected]=\"!showFunctionalRequirements && !showDataRequirements\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-cogs\"></i> Technical Design\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\">\n <div [innerHTML]=\"getFormattedTechnicalDesign(option)\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showCode) {\n <kendo-tabstrip-tab [selected]=\"!showFunctionalRequirements && !showDataRequirements && !showTechnicalDesign\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-code\"></i> Code\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\">\n <mj-code-editor\n [value]=\"getComponentCode(option)\"\n [language]=\"'javascript'\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showSpec) {\n <kendo-tabstrip-tab >\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-code\"></i> Spec\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\">\n <mj-code-editor\n [value]=\"getComponentSpec(option)\"\n [language]=\"'json'\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n </kendo-tabstrip>\n </div>\n <!-- Resizer -->\n <div class=\"panel-resizer\" \n (mousedown)=\"startResize($event)\"\n (touchstart)=\"startResize($event)\">\n <div class=\"resizer-handle\"></div>\n </div>\n }\n \n <!-- React component container -->\n <div [attr.data-tab-index]=\"i\" \n style=\"flex: 1; position: relative; min-height: 0; overflow: auto;\">\n <mj-react-component\n *ngIf=\"!currentError && componentOptions[i] && i === selectedReportOptionIndex\"\n [component]=\"componentOptions[i].option\"\n [styles]=\"componentStyles || undefined\"\n (stateChange)=\"onStateChange(i, $event)\"\n (componentEvent)=\"onComponentEvent(i, $event)\"\n (refreshData)=\"handleRefreshData()\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n style=\"width: 100%; height: 100%;\">\n </mj-react-component>\n \n <!-- Error overlay for this tab (shown on top of content when needed) -->\n @if (currentError && selectedReportOptionIndex === i) {\n <div style=\"top: 0; \n left: 0; \n right: 0; \n bottom: 0; \n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 20px;\n background: rgba(255, 255, 255, 0.95);\n z-index: 10;\">\n <div style=\"width: 90%; \n max-width: 600px; \n height: 500px;\n background-color: #f8f9fa; \n border: 2px solid #dc3545; \n border-radius: 8px; \n padding: 20px;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\">\n <div style=\"position: relative;\">\n <button kendoButton (click)=\"copyErrorToClipboard()\" \n style=\"position: absolute; top: 0; right: 0; font-size: 12px;\">\n <span class=\"fa-solid fa-copy\"></span>\n Copy Error Details\n </button>\n <h3 style=\"color: #dc3545; margin-top: 0; margin-right: 150px; font-size: 18px;\">\n <span class=\"fa-solid fa-exclamation-triangle\"></span>\n Component Rendering Error\n </h3>\n </div>\n <p style=\"margin-bottom: 10px; font-size: 14px;\">\n The selected component option could not be rendered due to the following error:\n </p>\n <div style=\"background-color: #fff; border: 1px solid #dee2e6; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\n font-family: 'Courier New', monospace; font-size: 12px;\">\n <strong>Error Type:</strong> {{ currentError.type }}<br>\n <strong>Details:</strong> {{ currentError.message }}\n @if (currentError.technicalDetails) {\n <details style=\"margin-top: 8px;\">\n <summary style=\"cursor: pointer; color: #0056b3;\">Technical Details (click to expand)</summary>\n <pre style=\"margin-top: 8px; white-space: pre-wrap; word-break: break-word; font-size: 11px;\">{{ formatTechnicalDetails(currentError.technicalDetails) }}</pre>\n </details>\n }\n </div>\n <div style=\"background-color: #e7f3ff; border: 1px solid #b3d9ff; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\">\n <strong style=\"font-size: 14px;\">What to do:</strong>\n <ol style=\"margin: 8px 0 0 20px; padding: 0; font-size: 13px;\">\n <li>Try selecting a different report option from the tabs above</li>\n <li>Copy the error details and send them back to Skip in the chat to get a corrected version</li>\n <li>Contact your IT department if the issue persists</li>\n </ol>\n </div>\n <button kendoButton (click)=\"retryCurrentOption()\" style=\"font-size: 13px;\">\n <span class=\"fa-solid fa-rotate\"></span>\n Retry\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n </kendo-tabstrip>\n} @else {\n <!-- Single option: no tabs needed -->\n <div style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Tab Action Bar -->\n <div class=\"tab-action-bar\">\n <div class=\"tab-actions-left\">\n <!-- Toggle buttons for showing/hiding component details -->\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowFunctionalRequirements()\"\n [class.active]=\"showFunctionalRequirements\"\n title=\"Toggle Functional Requirements\">\n <i class=\"fa-solid fa-list-check\"></i>\n <span>Functional</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowDataRequirements()\"\n [class.active]=\"showDataRequirements\"\n title=\"Toggle Data Requirements\">\n <i class=\"fa-solid fa-database\"></i>\n <span>Data</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowTechnicalDesign()\"\n [class.active]=\"showTechnicalDesign\"\n title=\"Toggle Technical Design\">\n <i class=\"fa-solid fa-cogs\"></i>\n <span>Technical</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowCode()\"\n [class.active]=\"showCode\"\n title=\"Toggle Code View\">\n <i class=\"fa-solid fa-code\"></i>\n <span>Code</span>\n </button>\n <button class=\"tab-action-button toggle-button\" \n (click)=\"toggleShowSpec()\"\n [class.active]=\"showSpec\"\n title=\"Toggle Spec View\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>Spec</span>\n </button>\n </div>\n <div class=\"tab-actions-right\">\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowCreateReportButton && !matchingReportID\"\n (click)=\"createReportForOption(0)\"\n [disabled]=\"isCreatingReport\">\n <i class=\"fa-solid fa-save\"></i>\n <span>Create Report</span>\n </button>\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowOpenSavedReportButton && matchingReportID\"\n (click)=\"openReportForOption(0)\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <span>Open Saved Report</span>\n </button>\n <button class=\"tab-action-button print-button\" \n *ngIf=\"ShowPrintReport\" \n (click)=\"PrintReport()\"\n title=\"Print Report\">\n <i class=\"fa-solid fa-print\"></i>\n <span>Print Report</span>\n </button>\n </div>\n </div>\n \n <!-- Main content area with optional details panels -->\n <div style=\"flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden;\">\n @if (showFunctionalRequirements || showDataRequirements || showTechnicalDesign || showCode || showSpec) {\n <!-- Details panel -->\n <div class=\"details-panel\" [style.height]=\"detailsPanelHeight\">\n <kendo-tabstrip style=\"height: 100%;\">\n @if (showFunctionalRequirements && componentOptions[0]) {\n <kendo-tabstrip-tab [selected]=\"true\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-list-check\"></i> Functional Requirements\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\">\n <div [innerHTML]=\"getFormattedFunctionalRequirements(componentOptions[0])\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showDataRequirements && componentOptions[0]) {\n <kendo-tabstrip-tab [selected]=\"!showFunctionalRequirements\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-database\"></i> Data Requirements\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\">\n <div [innerHTML]=\"getFormattedDataRequirements(componentOptions[0])\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showTechnicalDesign && componentOptions[0]) {\n <kendo-tabstrip-tab [selected]=\"!showFunctionalRequirements && !showDataRequirements\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-cogs\"></i> Technical Design\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\">\n <div [innerHTML]=\"getFormattedTechnicalDesign(componentOptions[0])\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showCode && componentOptions[0]) {\n <kendo-tabstrip-tab [selected]=\"!showFunctionalRequirements && !showDataRequirements && !showTechnicalDesign\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-code\"></i> Code\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\">\n <mj-code-editor\n [language]=\"'javascript'\"\n [value]=\"getComponentCode(componentOptions[0])\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n @if (showSpec && componentOptions[0]) {\n <kendo-tabstrip-tab [selected]=\"!showFunctionalRequirements && !showDataRequirements && !showTechnicalDesign && !showCode\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-file-code\"></i> Spec\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\">\n <mj-code-editor\n [value]=\"getComponentSpec(componentOptions[0])\"\n [language]=\"'json'\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n </kendo-tabstrip>\n </div>\n <!-- Resizer -->\n <div class=\"panel-resizer\" \n (mousedown)=\"startResize($event)\"\n (touchstart)=\"startResize($event)\">\n <div class=\"resizer-handle\"></div>\n </div>\n }\n \n <!-- React component container or error display -->\n @if (currentError) {\n <!-- Error display container with proper height -->\n <div style=\"flex: 1; display: flex; align-items: center; justify-content: center; \n min-height: 400px; padding: 20px; background: rgba(255, 255, 255, 0.95);\">\n <div style=\"width: 90%; \n max-width: 600px; \n max-height: 80vh;\n background-color: #f8f9fa; \n border: 2px solid #dc3545; \n border-radius: 8px; \n padding: 20px;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\">\n <div style=\"position: relative;\">\n <button kendoButton (click)=\"copyErrorToClipboard()\" \n style=\"position: absolute; top: 0; right: 0; font-size: 12px;\">\n <span class=\"fa-solid fa-copy\"></span>\n Copy Error Details\n </button>\n <h3 style=\"color: #dc3545; margin-top: 0; margin-right: 150px; font-size: 18px;\">\n <span class=\"fa-solid fa-exclamation-triangle\"></span>\n Component Rendering Error\n </h3>\n </div>\n <p style=\"margin-bottom: 10px; font-size: 14px;\">\n The selected component option could not be rendered due to the following error:\n </p>\n <div style=\"background-color: #fff; border: 1px solid #dee2e6; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\n font-family: 'Courier New', monospace; font-size: 12px;\">\n <strong>Error Type:</strong> {{ currentError.type }}<br>\n <strong>Details:</strong> {{ currentError.message }}\n @if (currentError.technicalDetails) {\n <details style=\"margin-top: 8px;\">\n <summary style=\"cursor: pointer; color: #0056b3;\">Technical Details (click to expand)</summary>\n <pre style=\"margin-top: 8px; white-space: pre-wrap; word-break: break-word; font-size: 11px;\">{{ formatTechnicalDetails(currentError.technicalDetails) }}</pre>\n </details>\n }\n </div>\n <div style=\"background-color: #e7f3ff; border: 1px solid #b3d9ff; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\">\n <strong style=\"font-size: 14px;\">What to do:</strong>\n <ol style=\"margin: 8px 0 0 20px; padding: 0; font-size: 13px;\">\n <li>Copy the error details and send them back to Skip in the chat to get a corrected version</li>\n <li>Contact your IT department if the issue persists</li>\n </ol>\n </div>\n <button kendoButton (click)=\"retryCurrentOption()\" style=\"font-size: 13px;\">\n <span class=\"fa-solid fa-rotate\"></span>\n Retry\n </button>\n </div>\n </div>\n } @else {\n <!-- React component container (only shown when no error) -->\n <div style=\"flex: 1; position: relative; min-height: 0; overflow: auto;\">\n <mj-react-component\n *ngIf=\"componentOptions[0]\"\n [component]=\"componentOptions[0].option\"\n [styles]=\"componentStyles || undefined\"\n (stateChange)=\"onStateChange(0, $event)\"\n (componentEvent)=\"onComponentEvent(0, $event)\"\n (refreshData)=\"handleRefreshData()\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n style=\"width: 100%; height: 100%;\">\n </mj-react-component>\n </div>\n }\n </div>\n </div>\n}", styles: [":host {\n display: block;\n height: 100%;\n position: relative;\n}\n\n/* Tab Action Bar */\n.tab-action-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n background-color: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.tab-actions-left,\n.tab-actions-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* Tab Action Buttons */\n.tab-action-button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background-color: transparent;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: #333;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab-action-button:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n.tab-action-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.tab-action-button i {\n font-size: 12px;\n}\n\n/* Both buttons use the same white/secondary style */\n.tab-action-button.create-button,\n.tab-action-button.print-button {\n background-color: white;\n color: #333;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.create-button:hover:not(:disabled),\n.tab-action-button.print-button:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n/* Toggle buttons styling */\n.tab-action-button.toggle-button {\n background-color: white;\n color: #666;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.toggle-button:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n color: #333;\n}\n\n.tab-action-button.toggle-button.active {\n background-color: #5B4FE9;\n color: white;\n border-color: #5B4FE9;\n}\n\n.tab-action-button.toggle-button.active:hover:not(:disabled) {\n background-color: #4940D4;\n border-color: #4940D4;\n}\n\n/* Details panel styling */\n.details-panel {\n border-bottom: 1px solid #e0e0e0;\n background-color: #fafafa;\n overflow: hidden;\n transition: height 0.3s ease;\n}\n\n.details-content {\n padding: 16px;\n overflow-y: auto;\n height: 100%;\n font-size: 14px;\n line-height: 1.6;\n}\n\n.details-content.code-content {\n padding: 0;\n}\n\n/* Panel resizer */\n.panel-resizer {\n height: 4px;\n background-color: #e0e0e0;\n cursor: ns-resize;\n position: relative;\n transition: background-color 0.2s ease;\n}\n\n.panel-resizer:hover {\n background-color: #d0d0d0;\n}\n\n.resizer-handle {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 2px;\n background-color: #999;\n border-radius: 1px;\n}\n\n/* Markdown content styling */\n.details-content :deep(h1) { font-size: 1.5em; margin-top: 0; margin-bottom: 0.5em; }\n.details-content :deep(h2) { font-size: 1.3em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content :deep(h3) { font-size: 1.1em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content :deep(ul), .details-content :deep(ol) { margin-left: 1.5em; }\n.details-content :deep(code) { \n background-color: #f4f4f4; \n padding: 2px 4px; \n border-radius: 3px; \n font-family: 'Courier New', monospace; \n font-size: 0.9em;\n}\n.details-content :deep(pre) { \n background-color: #f4f4f4; \n padding: 12px; \n border-radius: 4px; \n overflow-x: auto; \n}\n.details-content :deep(blockquote) { \n border-left: 4px solid #e0e0e0; \n padding-left: 16px; \n margin-left: 0; \n color: #666; \n}\n\n/* Tab styling */\n::ng-deep .k-tabstrip {\n border: none;\n height: 100%;\n display: flex;\n flex-direction: column;\n margin: 10px 5px 5px 5px;\n}\n\n::ng-deep .k-tabstrip-items {\n background: #f8f9fa;\n border: none;\n border-radius: 8px 8px 0 0;\n flex: 0 0 auto;\n padding: 8px 12px 0 12px;\n gap: 4px;\n display: flex;\n}\n\n::ng-deep .k-tabstrip-items-wrapper {\n height: 100%;\n}\n\n::ng-deep .k-content {\n flex: 1;\n overflow: hidden;\n padding: 0;\n background: white;\n border: 1px solid #e0e0e0;\n border-top: none;\n border-radius: 0 0 8px 8px;\n}\n\n::ng-deep .k-tabstrip .k-item {\n margin-right: 2px;\n border: none;\n background: transparent;\n border-radius: 6px 6px 0 0;\n padding: 2px;\n transition: all 0.2s ease;\n}\n\n::ng-deep .k-tabstrip .k-item.k-selected {\n background: white;\n border: 1px solid #e0e0e0;\n border-bottom: 1px solid white;\n margin-bottom: -1px;\n z-index: 1;\n}\n\n::ng-deep .k-tabstrip .k-link {\n padding: 8px 16px;\n font-weight: 500;\n font-size: 13px;\n color: #666;\n transition: all 0.15s ease;\n border-radius: 4px 4px 0 0;\n background: transparent;\n border: none;\n text-transform: lowercase;\n}\n\n::ng-deep .k-tabstrip .k-link:first-letter {\n text-transform: uppercase;\n}\n\n::ng-deep .k-tabstrip .k-item:hover:not(.k-selected) .k-link {\n color: #333;\n background: rgba(0, 0, 0, 0.04);\n}\n\n::ng-deep .k-tabstrip .k-item.k-selected .k-link {\n color: #1976d2;\n font-weight: 600;\n background: white;\n}\n\n/* Star icon styling */\n::ng-deep .k-tabstrip .k-link .star-icon {\n display: inline-block;\n margin-right: 4px;\n color: #ffd700;\n font-size: 12px;\n vertical-align: middle;\n}\n\n/* Hide default Kendo tab styling */\n::ng-deep .k-tabstrip-items::before,\n::ng-deep .k-tabstrip-items::after {\n display: none;\n}\n\n::ng-deep .k-tabstrip .k-item::before,\n::ng-deep .k-tabstrip .k-item::after {\n display: none;\n}\n\n/* Remove focus outline */\n::ng-deep .k-tabstrip .k-link:focus {\n outline: none;\n box-shadow: none;\n}\n\n/* Make sure tab content fills available space */\n::ng-deep .k-tabstrip .k-content.k-state-active {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* React host container */\n.react-host-container {\n width: 100%;\n height: 100%;\n}"] }]
|
|
1197
|
+
args: [{ selector: 'skip-dynamic-ui-component', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (componentOptions.length > 1) {\n <!-- Multiple options: show tabs -->\n <kendo-tabstrip \n (tabSelect)=\"onTabSelect($event)\"\n [keepTabContent]=\"true\"\n style=\"height: 100%; display: flex; flex-direction: column;\">\n @for (option of componentOptions; track option; let i = $index) {\n <kendo-tabstrip-tab [selected]=\"i === selectedReportOptionIndex\">\n <ng-template kendoTabTitle>\n @if (isTopRanked(i)) {\n <i class=\"fa-solid fa-star star-icon\"></i>\n }\n {{ getTabTitle(i) }}\n </ng-template>\n <ng-template kendoTabContent>\n <div style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Tab Action Bar -->\n <div class=\"tab-action-bar\">\n <div class=\"tab-actions-left\">\n <!-- Empty for now - actions moved to individual tabs -->\n </div>\n <div class=\"tab-actions-right\">\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowCreateReportButton && !matchingReportID\"\n (click)=\"createReportForOption(i)\"\n [disabled]=\"isCreatingReport\">\n <i class=\"fa-solid fa-save\"></i>\n <span>Save Report</span>\n </button>\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowOpenSavedReportButton && matchingReportID\"\n (click)=\"openReportForOption(i)\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <span>Open Saved Report</span>\n </button>\n <button class=\"tab-action-button print-button\" \n *ngIf=\"ShowPrintReport\" \n (click)=\"PrintReport()\"\n title=\"Print Report\">\n <i class=\"fa-solid fa-print\"></i>\n <span>Print Report</span>\n </button>\n </div>\n </div>\n \n <!-- Inner tab strip for Component, Functional, Technical, Data, Code tabs -->\n <div class=\"inner-tabstrip-container\" style=\"flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden;\">\n <kendo-tabstrip class=\"inner-tabs\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Component Tab (always first) -->\n <kendo-tabstrip-tab [selected]=\"true\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-chart-line\"></i> Component\n </ng-template>\n <ng-template kendoTabContent>\n <div style=\"height: 100%; position: relative; overflow: auto;\">\n <mj-react-component\n *ngIf=\"!currentError && componentOptions[i] && i === selectedReportOptionIndex\"\n [component]=\"componentOptions[i].option\"\n [styles]=\"componentStyles || undefined\"\n (stateChange)=\"onStateChange(i, $event)\"\n (componentEvent)=\"onComponentEvent(i, $event)\"\n (refreshData)=\"handleRefreshData()\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n style=\"width: 100%; height: 100%;\">\n </mj-react-component>\n \n <!-- Error overlay for this tab (shown on top of content when needed) -->\n @if (currentError && selectedReportOptionIndex === i) {\n <div style=\"top: 0; \n left: 0; \n right: 0; \n bottom: 0; \n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 20px;\n background: rgba(255, 255, 255, 0.95);\n z-index: 10;\">\n <div style=\"width: 90%; \n max-width: 600px; \n height: 500px;\n background-color: #f8f9fa; \n border: 2px solid #dc3545; \n border-radius: 8px; \n padding: 20px;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\">\n <div style=\"position: relative;\">\n <button kendoButton (click)=\"copyErrorToClipboard()\" \n style=\"position: absolute; top: 0; right: 0; font-size: 12px;\">\n <span class=\"fa-solid fa-copy\"></span>\n Copy Error Details\n </button>\n <h3 style=\"color: #dc3545; margin-top: 0; margin-right: 150px; font-size: 18px;\">\n <span class=\"fa-solid fa-exclamation-triangle\"></span>\n Component Rendering Error\n </h3>\n </div>\n <p style=\"margin-bottom: 10px; font-size: 14px;\">\n The selected component option could not be rendered due to the following error:\n </p>\n <div style=\"background-color: #fff; border: 1px solid #dee2e6; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\n font-family: 'Courier New', monospace; font-size: 12px;\">\n <strong>Error Type:</strong> {{ currentError.type }}<br>\n <strong>Details:</strong> {{ currentError.message }}\n @if (currentError.technicalDetails) {\n <details style=\"margin-top: 8px;\">\n <summary style=\"cursor: pointer; color: #0056b3;\">Technical Details (click to expand)</summary>\n <pre style=\"margin-top: 8px; white-space: pre-wrap; word-break: break-word; font-size: 11px;\">{{ formatTechnicalDetails(currentError.technicalDetails) }}</pre>\n </details>\n }\n </div>\n <div style=\"background-color: #e7f3ff; border: 1px solid #b3d9ff; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\">\n <strong style=\"font-size: 14px;\">What to do:</strong>\n <ol style=\"margin: 8px 0 0 20px; padding: 0; font-size: 13px;\">\n <li>Try selecting a different report option from the tabs above</li>\n <li>Copy the error details and send them back to Skip in the chat to get a corrected version</li>\n <li>Contact your IT department if the issue persists</li>\n </ol>\n </div>\n <button kendoButton (click)=\"retryCurrentOption()\" style=\"font-size: 13px;\">\n <span class=\"fa-solid fa-rotate\"></span>\n Retry\n </button>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n \n <!-- Functional Requirements Tab -->\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-list-check\"></i> Functional\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\" style=\"height: 100%; overflow: auto; padding: 20px;\">\n <div [innerHTML]=\"getFormattedFunctionalRequirements(option)\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n \n <!-- Technical Design Tab -->\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-cogs\"></i> Technical\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\" style=\"height: 100%; overflow: auto; padding: 20px;\">\n <div [innerHTML]=\"getFormattedTechnicalDesign(option)\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n \n <!-- Data Requirements Tab -->\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-database\"></i> Data Spec\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\" style=\"height: 100%; overflow: auto; padding: 20px;\">\n <div [innerHTML]=\"getFormattedDataRequirements(option)\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n \n <!-- Code Tab -->\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-code\"></i> Code\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\" style=\"height: 100%; overflow: hidden;\">\n <mj-code-editor\n [value]=\"getComponentCode(option)\"\n [language]=\"'javascript'\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n \n <!-- Spec Tab -->\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-file-code\"></i> Spec\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\" style=\"height: 100%; overflow: hidden;\">\n <mj-code-editor\n [value]=\"getComponentSpec(option)\"\n [language]=\"'json'\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n </kendo-tabstrip>\n </div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n </kendo-tabstrip>\n} @else {\n <!-- Single option: simplified tab structure -->\n <div style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Tab Action Bar -->\n <div class=\"tab-action-bar\">\n <div class=\"tab-actions-left\">\n <!-- Empty for now - actions moved to tabs -->\n </div>\n <div class=\"tab-actions-right\">\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowCreateReportButton && !matchingReportID\"\n (click)=\"createReportForOption(0)\"\n [disabled]=\"isCreatingReport\">\n <i class=\"fa-solid fa-save\"></i>\n <span>Save Report</span>\n </button>\n <button class=\"tab-action-button create-button\" \n *ngIf=\"ShowOpenSavedReportButton && matchingReportID\"\n (click)=\"openReportForOption(0)\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <span>Open Saved Report</span>\n </button>\n <button class=\"tab-action-button print-button\" \n *ngIf=\"ShowPrintReport\" \n (click)=\"PrintReport()\"\n title=\"Print Report\">\n <i class=\"fa-solid fa-print\"></i>\n <span>Print Report</span>\n </button>\n </div>\n </div>\n \n <!-- Tab strip for Component, Functional, Technical, Data, Code tabs -->\n <div class=\"inner-tabstrip-container\" style=\"flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden;\">\n <kendo-tabstrip class=\"inner-tabs\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Component Tab (always first) -->\n <kendo-tabstrip-tab [selected]=\"true\">\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-chart-line\"></i> Component\n </ng-template>\n <ng-template kendoTabContent>\n <div style=\"height: 100%; position: relative; overflow: auto;\">\n @if (!currentError && componentOptions[0]) {\n <mj-react-component\n [component]=\"componentOptions[0].option\"\n [styles]=\"componentStyles || undefined\"\n (stateChange)=\"onStateChange(0, $event)\"\n (componentEvent)=\"onComponentEvent(0, $event)\"\n (refreshData)=\"handleRefreshData()\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n style=\"width: 100%; height: 100%;\">\n </mj-react-component>\n }\n \n <!-- Error overlay for this tab (shown on top of content when needed) -->\n @if (currentError) {\n <div style=\"top: 0; \n left: 0; \n right: 0; \n bottom: 0; \n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 20px;\n background: rgba(255, 255, 255, 0.95);\n z-index: 10;\">\n <div style=\"width: 90%; \n max-width: 600px; \n height: 500px;\n background-color: #f8f9fa; \n border: 2px solid #dc3545; \n border-radius: 8px; \n padding: 20px;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\">\n <div style=\"position: relative;\">\n <button kendoButton (click)=\"copyErrorToClipboard()\" \n style=\"position: absolute; top: 0; right: 0; font-size: 12px;\">\n <span class=\"fa-solid fa-copy\"></span>\n Copy Error Details\n </button>\n <h3 style=\"color: #dc3545; margin-top: 0; margin-right: 150px; font-size: 18px;\">\n <span class=\"fa-solid fa-exclamation-triangle\"></span>\n Component Rendering Error\n </h3>\n </div>\n <p style=\"margin-bottom: 10px; font-size: 14px;\">\n The selected component option could not be rendered due to the following error:\n </p>\n <div style=\"background-color: #fff; border: 1px solid #dee2e6; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\n font-family: 'Courier New', monospace; font-size: 12px;\">\n <strong>Error Type:</strong> {{ currentError.type }}<br>\n <strong>Details:</strong> {{ currentError.message }}\n @if (currentError.technicalDetails) {\n <details style=\"margin-top: 8px;\">\n <summary style=\"cursor: pointer; color: #0056b3;\">Technical Details (click to expand)</summary>\n <pre style=\"margin-top: 8px; white-space: pre-wrap; word-break: break-word; font-size: 11px;\">{{ formatTechnicalDetails(currentError.technicalDetails) }}</pre>\n </details>\n }\n </div>\n <div style=\"background-color: #e7f3ff; border: 1px solid #b3d9ff; \n border-radius: 4px; padding: 12px; margin-bottom: 12px;\">\n <strong style=\"font-size: 14px;\">What to do:</strong>\n <ol style=\"margin: 8px 0 0 20px; padding: 0; font-size: 13px;\">\n <li>Copy the error details and send them back to Skip in the chat to get a corrected version</li>\n <li>Contact your IT department if the issue persists</li>\n </ol>\n </div>\n <button kendoButton (click)=\"retryCurrentOption()\" style=\"font-size: 13px;\">\n <span class=\"fa-solid fa-rotate\"></span>\n Retry\n </button>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n \n <!-- Functional Requirements Tab -->\n @if (componentOptions[0]) {\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-list-check\"></i> Functional\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\" style=\"height: 100%; overflow: auto; padding: 20px;\">\n <div [innerHTML]=\"getFormattedFunctionalRequirements(componentOptions[0])\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n \n <!-- Technical Design Tab -->\n @if (componentOptions[0]) {\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-cogs\"></i> Technical\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\" style=\"height: 100%; overflow: auto; padding: 20px;\">\n <div [innerHTML]=\"getFormattedTechnicalDesign(componentOptions[0])\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n \n <!-- Data Requirements Tab -->\n @if (componentOptions[0]) {\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-database\"></i> Data Spec\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content\" style=\"height: 100%; overflow: auto; padding: 20px;\">\n <div [innerHTML]=\"getFormattedDataRequirements(componentOptions[0])\"></div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n \n <!-- Code Tab -->\n @if (componentOptions[0]) {\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-code\"></i> Code\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\" style=\"height: 100%; overflow: hidden;\">\n <mj-code-editor\n [value]=\"getComponentCode(componentOptions[0])\"\n [language]=\"'javascript'\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n \n <!-- Spec Tab -->\n @if (componentOptions[0]) {\n <kendo-tabstrip-tab>\n <ng-template kendoTabTitle>\n <i class=\"fa-solid fa-file-code\"></i> Spec\n </ng-template>\n <ng-template kendoTabContent>\n <div class=\"details-content code-content\" style=\"height: 100%; overflow: hidden;\">\n <mj-code-editor\n [value]=\"getComponentSpec(componentOptions[0])\"\n [language]=\"'json'\"\n [autoFocus]=\"false\"\n [indentWithTab]=\"true\"\n [readonly]=\"true\"\n [toolbar]=\"codeToolbarConfig\"\n (toolbarAction)=\"handleCodeToolbarAction($event)\"\n style=\"height: 100%;\">\n </mj-code-editor>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n }\n </kendo-tabstrip>\n </div>\n </div>\n}", styles: [":host {\n display: block;\n height: 100%;\n position: relative;\n}\n\n/* Tab Action Bar */\n.tab-action-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n background-color: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.tab-actions-left,\n.tab-actions-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* Tab Action Buttons */\n.tab-action-button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background-color: transparent;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: #333;\n transition: all 0.15s ease;\n white-space: nowrap;\n}\n\n.tab-action-button:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n.tab-action-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.tab-action-button i {\n font-size: 12px;\n}\n\n/* Both buttons use the same white/secondary style */\n.tab-action-button.create-button,\n.tab-action-button.print-button {\n background-color: white;\n color: #333;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.create-button:hover:not(:disabled),\n.tab-action-button.print-button:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n}\n\n/* Toggle buttons styling */\n.tab-action-button.toggle-button {\n background-color: white;\n color: #666;\n border-color: #e0e0e0;\n}\n\n.tab-action-button.toggle-button:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #d0d0d0;\n color: #333;\n}\n\n.tab-action-button.toggle-button.active {\n background-color: #5B4FE9;\n color: white;\n border-color: #5B4FE9;\n}\n\n.tab-action-button.toggle-button.active:hover:not(:disabled) {\n background-color: #4940D4;\n border-color: #4940D4;\n}\n\n/* Details panel styling */\n.details-panel {\n border-bottom: 1px solid #e0e0e0;\n background-color: #fafafa;\n overflow: hidden;\n transition: height 0.3s ease;\n}\n\n.details-content {\n padding: 16px;\n overflow-y: auto;\n height: 100%;\n font-size: 14px;\n line-height: 1.6;\n}\n\n.details-content.code-content {\n padding: 0;\n}\n\n/* Panel resizer */\n.panel-resizer {\n height: 4px;\n background-color: #e0e0e0;\n cursor: ns-resize;\n position: relative;\n transition: background-color 0.2s ease;\n}\n\n.panel-resizer:hover {\n background-color: #d0d0d0;\n}\n\n.resizer-handle {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 2px;\n background-color: #999;\n border-radius: 1px;\n}\n\n/* Markdown content styling */\n.details-content :deep(h1) { font-size: 1.5em; margin-top: 0; margin-bottom: 0.5em; }\n.details-content :deep(h2) { font-size: 1.3em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content :deep(h3) { font-size: 1.1em; margin-top: 1em; margin-bottom: 0.5em; }\n.details-content :deep(ul), .details-content :deep(ol) { margin-left: 1.5em; }\n.details-content :deep(code) { \n background-color: #f4f4f4; \n padding: 2px 4px; \n border-radius: 3px; \n font-family: 'Courier New', monospace; \n font-size: 0.9em;\n}\n.details-content :deep(pre) { \n background-color: #f4f4f4; \n padding: 12px; \n border-radius: 4px; \n overflow-x: auto; \n}\n.details-content :deep(blockquote) { \n border-left: 4px solid #e0e0e0; \n padding-left: 16px; \n margin-left: 0; \n color: #666; \n}\n\n/* Tab styling - improved for better formatting */\n::ng-deep .k-tabstrip {\n border: none;\n height: 100%;\n display: flex;\n flex-direction: column;\n margin: 0;\n}\n\n::ng-deep .k-tabstrip-items {\n background: #f8f9fa;\n border: none;\n border-bottom: 1px solid #e0e0e0;\n flex: 0 0 auto;\n padding: 4px 8px 0 8px;\n gap: 2px;\n display: flex;\n min-height: auto;\n height: auto;\n}\n\n::ng-deep .k-tabstrip-items-wrapper {\n height: auto;\n min-height: auto;\n}\n\n::ng-deep .k-content {\n flex: 1;\n overflow: hidden;\n padding: 0;\n background: white;\n border: none;\n min-height: 0;\n}\n\n::ng-deep .k-tabstrip .k-item {\n margin-right: 2px;\n border: none;\n background: transparent;\n border-radius: 4px 4px 0 0;\n padding: 0;\n transition: all 0.2s ease;\n height: auto;\n min-height: auto;\n}\n\n::ng-deep .k-tabstrip .k-item.k-selected {\n background: white;\n border: 1px solid #e0e0e0;\n border-bottom: 1px solid white;\n margin-bottom: -1px;\n z-index: 1;\n}\n\n::ng-deep .k-tabstrip .k-link {\n padding: 6px 12px;\n font-weight: 500;\n font-size: 13px;\n color: #666;\n transition: all 0.15s ease;\n border-radius: 4px 4px 0 0;\n background: transparent;\n border: none;\n display: flex;\n align-items: center;\n gap: 3px;\n line-height: 1.2;\n min-height: auto;\n height: auto;\n}\n\n::ng-deep .k-tabstrip .k-link i {\n font-size: 12px;\n}\n\n::ng-deep .k-tabstrip .k-item:hover:not(.k-selected) .k-link {\n color: #333;\n background: rgba(0, 0, 0, 0.04);\n}\n\n::ng-deep .k-tabstrip .k-item.k-selected .k-link {\n color: #1976d2;\n font-weight: 600;\n background: white;\n}\n\n/* Star icon styling */\n::ng-deep .k-tabstrip .k-link .star-icon {\n display: inline-block;\n margin-right: 4px;\n color: #ffd700;\n font-size: 12px;\n vertical-align: middle;\n}\n\n/* Hide default Kendo tab styling */\n::ng-deep .k-tabstrip-items::before,\n::ng-deep .k-tabstrip-items::after {\n display: none;\n}\n\n::ng-deep .k-tabstrip .k-item::before,\n::ng-deep .k-tabstrip .k-item::after {\n display: none;\n}\n\n/* Remove focus outline */\n::ng-deep .k-tabstrip .k-link:focus {\n outline: none;\n box-shadow: none;\n}\n\n/* Make sure tab content fills available space */\n::ng-deep .k-tabstrip .k-content.k-state-active {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n/* React host container */\n.react-host-container {\n width: 100%;\n height: 100%;\n}\n\n/* Inner tabs specific styling with horizontal scroll */\n::ng-deep .inner-tabs .k-tabstrip-items-wrapper {\n overflow-x: auto !important;\n overflow-y: hidden !important;\n max-width: 100%;\n}\n\n::ng-deep .inner-tabs .k-tabstrip-items {\n display: inline-flex !important;\n flex-wrap: nowrap !important;\n width: max-content !important;\n padding: 4px 8px 0 8px;\n background: #fff;\n border-bottom: 1px solid #e8e8e8;\n}\n\n::ng-deep .inner-tabs .k-tabstrip-item {\n flex: 0 0 auto !important;\n display: inline-block !important;\n float: none !important;\n}\n\n::ng-deep .inner-tabs .k-link {\n padding: 6px 12px;\n font-size: 12px;\n white-space: nowrap !important;\n display: inline-flex !important;\n align-items: center;\n gap: 4px;\n}\n\n/* Force single row for inner tabs */\n::ng-deep .inner-tabstrip-container .k-tabstrip-items {\n min-width: max-content !important;\n}\n\n/* Custom scrollbar for inner tabs */\n::ng-deep .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar {\n height: 6px;\n}\n\n::ng-deep .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar-track {\n background: #f1f1f1;\n}\n\n::ng-deep .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar-thumb {\n background: #888;\n border-radius: 3px;\n}\n\n::ng-deep .inner-tabs .k-tabstrip-items-wrapper::-webkit-scrollbar-thumb:hover {\n background: #555;\n}\n\n/* Nested tab styling - for tabs within tabs (fallback) */\n::ng-deep .k-tabstrip .k-tabstrip {\n margin: 0;\n}\n\n::ng-deep .k-tabstrip .k-tabstrip .k-tabstrip-items {\n display: inline-flex !important;\n flex-wrap: nowrap !important;\n width: max-content !important;\n}\n\n::ng-deep .k-tabstrip .k-tabstrip .k-tabstrip-items-wrapper {\n overflow-x: auto !important;\n overflow-y: hidden !important;\n}\n\n/* Ensure proper content area in nested tabs */\n::ng-deep .k-tabstrip .k-tabstrip .k-content {\n border: none;\n background: transparent;\n}\n\n"] }]
|
|
1305
1198
|
}], () => [{ type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i2.AngularAdapterService }], { UIComponentCode: [{
|
|
1306
1199
|
type: Input
|
|
1307
1200
|
}], ComponentObjectName: [{
|
|
@@ -1325,9 +1218,6 @@ Component Name: ${this.ComponentObjectName || 'Unknown'}`;
|
|
|
1325
1218
|
}], reactComponents: [{
|
|
1326
1219
|
type: ViewChildren,
|
|
1327
1220
|
args: [MJReactComponent]
|
|
1328
|
-
}], onWindowResize: [{
|
|
1329
|
-
type: HostListener,
|
|
1330
|
-
args: ['window:resize']
|
|
1331
1221
|
}], SkipData: [{
|
|
1332
1222
|
type: Input
|
|
1333
1223
|
}] }); })();
|