@memberjunction/ng-dashboards 2.108.0 → 2.109.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/ComponentStudio/component-studio-dashboard.component.d.ts +25 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +497 -364
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +71 -0
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +837 -0
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -0
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +11 -9
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +37 -28
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/index.d.ts +3 -0
- package/dist/ComponentStudio/index.d.ts.map +1 -1
- package/dist/ComponentStudio/index.js +3 -0
- package/dist/ComponentStudio/index.js.map +1 -1
- package/dist/module.d.ts +27 -25
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +10 -3
- package/dist/module.js.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,837 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { RunView, Metadata } from '@memberjunction/core';
|
|
3
|
+
import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@progress/kendo-angular-dialog";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "@memberjunction/ng-code-editor";
|
|
9
|
+
import * as i4 from "@progress/kendo-angular-buttons";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
const _forTrack0 = ($index, $item) => $item.ID;
|
|
12
|
+
function ArtifactLoadDialogComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
i0.ɵɵelementStart(0, "span");
|
|
14
|
+
i0.ɵɵtext(1, "Filters");
|
|
15
|
+
i0.ɵɵelementEnd();
|
|
16
|
+
} }
|
|
17
|
+
function ArtifactLoadDialogComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelementStart(0, "span", 8);
|
|
19
|
+
i0.ɵɵtext(1);
|
|
20
|
+
i0.ɵɵelementEnd();
|
|
21
|
+
} if (rf & 2) {
|
|
22
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
23
|
+
i0.ɵɵadvance();
|
|
24
|
+
i0.ɵɵtextInterpolate(ctx_r0.getActiveFilterCount());
|
|
25
|
+
} }
|
|
26
|
+
function ArtifactLoadDialogComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
28
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 22)(2, "label");
|
|
29
|
+
i0.ɵɵtext(3, "Search");
|
|
30
|
+
i0.ɵɵelementEnd();
|
|
31
|
+
i0.ɵɵelementStart(4, "input", 23);
|
|
32
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ArtifactLoadDialogComponent_Conditional_12_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.searchTerm, $event) || (ctx_r0.searchTerm = $event); return i0.ɵɵresetView($event); });
|
|
33
|
+
i0.ɵɵlistener("input", function ArtifactLoadDialogComponent_Conditional_12_Template_input_input_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onSearchInput()); });
|
|
34
|
+
i0.ɵɵelementEnd()();
|
|
35
|
+
i0.ɵɵelementStart(5, "div", 22)(6, "label");
|
|
36
|
+
i0.ɵɵtext(7, "Artifact Type");
|
|
37
|
+
i0.ɵɵelementEnd();
|
|
38
|
+
i0.ɵɵelementStart(8, "select", 24);
|
|
39
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ArtifactLoadDialogComponent_Conditional_12_Template_select_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.selectedArtifactType, $event) || (ctx_r0.selectedArtifactType = $event); return i0.ɵɵresetView($event); });
|
|
40
|
+
i0.ɵɵlistener("change", function ArtifactLoadDialogComponent_Conditional_12_Template_select_change_8_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onArtifactTypeChange()); });
|
|
41
|
+
i0.ɵɵelementStart(9, "option", 25);
|
|
42
|
+
i0.ɵɵtext(10, "Component (default)");
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
i0.ɵɵelementStart(11, "option", 26);
|
|
45
|
+
i0.ɵɵtext(12, "Component");
|
|
46
|
+
i0.ɵɵelementEnd();
|
|
47
|
+
i0.ɵɵelementStart(13, "option", 27);
|
|
48
|
+
i0.ɵɵtext(14, "Report");
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
i0.ɵɵelementStart(15, "option", 28);
|
|
51
|
+
i0.ɵɵtext(16, "Dashboard");
|
|
52
|
+
i0.ɵɵelementEnd()()();
|
|
53
|
+
i0.ɵɵelementStart(17, "div", 22)(18, "label");
|
|
54
|
+
i0.ɵɵtext(19, "Filter by User");
|
|
55
|
+
i0.ɵɵelementEnd();
|
|
56
|
+
i0.ɵɵelementStart(20, "input", 29);
|
|
57
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ArtifactLoadDialogComponent_Conditional_12_Template_input_ngModelChange_20_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.userEmail, $event) || (ctx_r0.userEmail = $event); return i0.ɵɵresetView($event); });
|
|
58
|
+
i0.ɵɵlistener("input", function ArtifactLoadDialogComponent_Conditional_12_Template_input_input_20_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.filterArtifacts()); });
|
|
59
|
+
i0.ɵɵelementEnd()()();
|
|
60
|
+
} if (rf & 2) {
|
|
61
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
62
|
+
i0.ɵɵadvance(4);
|
|
63
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r0.searchTerm);
|
|
64
|
+
i0.ɵɵadvance(4);
|
|
65
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r0.selectedArtifactType);
|
|
66
|
+
i0.ɵɵadvance(12);
|
|
67
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r0.userEmail);
|
|
68
|
+
} }
|
|
69
|
+
function ArtifactLoadDialogComponent_Conditional_22_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
70
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
71
|
+
i0.ɵɵelement(1, "i", 38);
|
|
72
|
+
i0.ɵɵelementStart(2, "p");
|
|
73
|
+
i0.ɵɵtext(3, "Loading artifacts...");
|
|
74
|
+
i0.ɵɵelementEnd()();
|
|
75
|
+
} }
|
|
76
|
+
function ArtifactLoadDialogComponent_Conditional_22_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
78
|
+
i0.ɵɵelement(1, "i", 39);
|
|
79
|
+
i0.ɵɵelementStart(2, "p");
|
|
80
|
+
i0.ɵɵtext(3, "No artifacts found");
|
|
81
|
+
i0.ɵɵelementEnd()();
|
|
82
|
+
} }
|
|
83
|
+
function ArtifactLoadDialogComponent_Conditional_22_Conditional_13_For_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
85
|
+
i0.ɵɵtext(1);
|
|
86
|
+
i0.ɵɵelementEnd();
|
|
87
|
+
} if (rf & 2) {
|
|
88
|
+
const artifact_r5 = i0.ɵɵnextContext().$implicit;
|
|
89
|
+
i0.ɵɵadvance();
|
|
90
|
+
i0.ɵɵtextInterpolate1(" ", artifact_r5.Description, " ");
|
|
91
|
+
} }
|
|
92
|
+
function ArtifactLoadDialogComponent_Conditional_22_Conditional_13_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 41);
|
|
95
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Conditional_22_Conditional_13_For_1_Template_div_click_0_listener() { const artifact_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectArtifact(artifact_r5)); });
|
|
96
|
+
i0.ɵɵelementStart(1, "div", 42)(2, "div", 43)(3, "div", 44);
|
|
97
|
+
i0.ɵɵelement(4, "i", 13);
|
|
98
|
+
i0.ɵɵelementStart(5, "span");
|
|
99
|
+
i0.ɵɵtext(6);
|
|
100
|
+
i0.ɵɵelementEnd()();
|
|
101
|
+
i0.ɵɵtemplate(7, ArtifactLoadDialogComponent_Conditional_22_Conditional_13_For_1_Conditional_7_Template, 2, 1, "div", 45);
|
|
102
|
+
i0.ɵɵelementEnd();
|
|
103
|
+
i0.ɵɵelementStart(8, "div", 46)(9, "div");
|
|
104
|
+
i0.ɵɵtext(10);
|
|
105
|
+
i0.ɵɵelementEnd();
|
|
106
|
+
i0.ɵɵelementStart(11, "div");
|
|
107
|
+
i0.ɵɵtext(12);
|
|
108
|
+
i0.ɵɵpipe(13, "date");
|
|
109
|
+
i0.ɵɵelementEnd()()()();
|
|
110
|
+
} if (rf & 2) {
|
|
111
|
+
const artifact_r5 = ctx.$implicit;
|
|
112
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
113
|
+
i0.ɵɵclassProp("selected", (ctx_r0.selectedArtifact == null ? null : ctx_r0.selectedArtifact.ID) === artifact_r5.ID);
|
|
114
|
+
i0.ɵɵadvance(6);
|
|
115
|
+
i0.ɵɵtextInterpolate(artifact_r5.Name);
|
|
116
|
+
i0.ɵɵadvance();
|
|
117
|
+
i0.ɵɵconditional(artifact_r5.Description ? 7 : -1);
|
|
118
|
+
i0.ɵɵadvance(3);
|
|
119
|
+
i0.ɵɵtextInterpolate(artifact_r5.Type);
|
|
120
|
+
i0.ɵɵadvance(2);
|
|
121
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 6, artifact_r5.__mj_UpdatedAt, "short"));
|
|
122
|
+
} }
|
|
123
|
+
function ArtifactLoadDialogComponent_Conditional_22_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
+
i0.ɵɵrepeaterCreate(0, ArtifactLoadDialogComponent_Conditional_22_Conditional_13_For_1_Template, 14, 9, "div", 40, _forTrack0);
|
|
125
|
+
} if (rf & 2) {
|
|
126
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
127
|
+
i0.ɵɵrepeater(ctx_r0.artifacts);
|
|
128
|
+
} }
|
|
129
|
+
function ArtifactLoadDialogComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
130
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
131
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "div", 30)(2, "button", 31);
|
|
132
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Conditional_22_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.previousPage()); });
|
|
133
|
+
i0.ɵɵelement(3, "i", 32);
|
|
134
|
+
i0.ɵɵtext(4, " Previous ");
|
|
135
|
+
i0.ɵɵelementEnd();
|
|
136
|
+
i0.ɵɵelementStart(5, "span", 33);
|
|
137
|
+
i0.ɵɵtext(6);
|
|
138
|
+
i0.ɵɵelementEnd();
|
|
139
|
+
i0.ɵɵelementStart(7, "button", 31);
|
|
140
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Conditional_22_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.nextPage()); });
|
|
141
|
+
i0.ɵɵtext(8, " Next ");
|
|
142
|
+
i0.ɵɵelement(9, "i", 34);
|
|
143
|
+
i0.ɵɵelementEnd()();
|
|
144
|
+
i0.ɵɵelementStart(10, "div", 35);
|
|
145
|
+
i0.ɵɵtemplate(11, ArtifactLoadDialogComponent_Conditional_22_Conditional_11_Template, 4, 0, "div", 36)(12, ArtifactLoadDialogComponent_Conditional_22_Conditional_12_Template, 4, 0, "div", 37)(13, ArtifactLoadDialogComponent_Conditional_22_Conditional_13_Template, 2, 0);
|
|
146
|
+
i0.ɵɵelementEnd()();
|
|
147
|
+
} if (rf & 2) {
|
|
148
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
149
|
+
i0.ɵɵadvance(2);
|
|
150
|
+
i0.ɵɵproperty("disabled", !ctx_r0.canGoPrevious())("themeColor", "base");
|
|
151
|
+
i0.ɵɵadvance(4);
|
|
152
|
+
i0.ɵɵtextInterpolate3(" Page ", ctx_r0.currentPage + 1, " of ", ctx_r0.getTotalPages(), " (", ctx_r0.totalArtifacts, " total) ");
|
|
153
|
+
i0.ɵɵadvance();
|
|
154
|
+
i0.ɵɵproperty("disabled", !ctx_r0.canGoNext())("themeColor", "base");
|
|
155
|
+
i0.ɵɵadvance(4);
|
|
156
|
+
i0.ɵɵconditional(ctx_r0.isLoading ? 11 : ctx_r0.artifacts.length === 0 ? 12 : 13);
|
|
157
|
+
} }
|
|
158
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
159
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
160
|
+
i0.ɵɵelement(1, "i", 38);
|
|
161
|
+
i0.ɵɵelementStart(2, "p");
|
|
162
|
+
i0.ɵɵtext(3, "Loading collections...");
|
|
163
|
+
i0.ɵɵelementEnd()();
|
|
164
|
+
} }
|
|
165
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
167
|
+
i0.ɵɵelement(1, "i", 49);
|
|
168
|
+
i0.ɵɵelementStart(2, "p");
|
|
169
|
+
i0.ɵɵtext(3, "No collections found");
|
|
170
|
+
i0.ɵɵelementEnd()();
|
|
171
|
+
} }
|
|
172
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_4_For_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
174
|
+
i0.ɵɵtext(1);
|
|
175
|
+
i0.ɵɵelementEnd();
|
|
176
|
+
} if (rf & 2) {
|
|
177
|
+
const collection_r7 = i0.ɵɵnextContext().$implicit;
|
|
178
|
+
i0.ɵɵadvance();
|
|
179
|
+
i0.ɵɵtextInterpolate(collection_r7.Description);
|
|
180
|
+
} }
|
|
181
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
183
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
184
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Conditional_23_Conditional_4_For_1_Template_div_click_0_listener() { const collection_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectCollection(collection_r7)); });
|
|
185
|
+
i0.ɵɵelementStart(1, "div", 52);
|
|
186
|
+
i0.ɵɵelement(2, "i", 14);
|
|
187
|
+
i0.ɵɵelementEnd();
|
|
188
|
+
i0.ɵɵelementStart(3, "div", 53)(4, "div", 54);
|
|
189
|
+
i0.ɵɵtext(5);
|
|
190
|
+
i0.ɵɵelementEnd();
|
|
191
|
+
i0.ɵɵtemplate(6, ArtifactLoadDialogComponent_Conditional_23_Conditional_4_For_1_Conditional_6_Template, 2, 1, "div", 55);
|
|
192
|
+
i0.ɵɵelementEnd()();
|
|
193
|
+
} if (rf & 2) {
|
|
194
|
+
const collection_r7 = ctx.$implicit;
|
|
195
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
196
|
+
i0.ɵɵclassProp("selected", (ctx_r0.selectedCollection == null ? null : ctx_r0.selectedCollection.ID) === collection_r7.ID);
|
|
197
|
+
i0.ɵɵadvance(5);
|
|
198
|
+
i0.ɵɵtextInterpolate(collection_r7.Name);
|
|
199
|
+
i0.ɵɵadvance();
|
|
200
|
+
i0.ɵɵconditional(collection_r7.Description ? 6 : -1);
|
|
201
|
+
} }
|
|
202
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
+
i0.ɵɵrepeaterCreate(0, ArtifactLoadDialogComponent_Conditional_23_Conditional_4_For_1_Template, 7, 4, "div", 50, _forTrack0);
|
|
204
|
+
} if (rf & 2) {
|
|
205
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
206
|
+
i0.ɵɵrepeater(ctx_r0.collections);
|
|
207
|
+
} }
|
|
208
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
210
|
+
i0.ɵɵelement(1, "i", 39);
|
|
211
|
+
i0.ɵɵelementStart(2, "p");
|
|
212
|
+
i0.ɵɵtext(3, "No artifacts in this collection");
|
|
213
|
+
i0.ɵɵelementEnd()();
|
|
214
|
+
} }
|
|
215
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_5_For_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
217
|
+
i0.ɵɵtext(1);
|
|
218
|
+
i0.ɵɵelementEnd();
|
|
219
|
+
} if (rf & 2) {
|
|
220
|
+
const artifact_r9 = i0.ɵɵnextContext().$implicit;
|
|
221
|
+
i0.ɵɵadvance();
|
|
222
|
+
i0.ɵɵtextInterpolate1(" ", artifact_r9.Description, " ");
|
|
223
|
+
} }
|
|
224
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_5_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
225
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
226
|
+
i0.ɵɵelementStart(0, "div", 41);
|
|
227
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_5_For_1_Template_div_click_0_listener() { const artifact_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.selectArtifact(artifact_r9)); });
|
|
228
|
+
i0.ɵɵelementStart(1, "div", 42)(2, "div", 43)(3, "div", 44);
|
|
229
|
+
i0.ɵɵelement(4, "i", 13);
|
|
230
|
+
i0.ɵɵelementStart(5, "span");
|
|
231
|
+
i0.ɵɵtext(6);
|
|
232
|
+
i0.ɵɵelementEnd()();
|
|
233
|
+
i0.ɵɵtemplate(7, ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_5_For_1_Conditional_7_Template, 2, 1, "div", 45);
|
|
234
|
+
i0.ɵɵelementEnd()()();
|
|
235
|
+
} if (rf & 2) {
|
|
236
|
+
const artifact_r9 = ctx.$implicit;
|
|
237
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
238
|
+
i0.ɵɵclassProp("selected", (ctx_r0.selectedArtifact == null ? null : ctx_r0.selectedArtifact.ID) === artifact_r9.ID);
|
|
239
|
+
i0.ɵɵadvance(6);
|
|
240
|
+
i0.ɵɵtextInterpolate(artifact_r9.Name);
|
|
241
|
+
i0.ɵɵadvance();
|
|
242
|
+
i0.ɵɵconditional(artifact_r9.Description ? 7 : -1);
|
|
243
|
+
} }
|
|
244
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
245
|
+
i0.ɵɵrepeaterCreate(0, ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_5_For_1_Template, 8, 4, "div", 40, _forTrack0);
|
|
246
|
+
} if (rf & 2) {
|
|
247
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
248
|
+
i0.ɵɵrepeater(ctx_r0.collectionArtifacts);
|
|
249
|
+
} }
|
|
250
|
+
function ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
251
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 56);
|
|
252
|
+
i0.ɵɵelement(2, "i", 13);
|
|
253
|
+
i0.ɵɵtext(3);
|
|
254
|
+
i0.ɵɵelementEnd();
|
|
255
|
+
i0.ɵɵtemplate(4, ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_4_Template, 4, 0, "div", 37)(5, ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Conditional_5_Template, 2, 0);
|
|
256
|
+
i0.ɵɵelementEnd();
|
|
257
|
+
} if (rf & 2) {
|
|
258
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
259
|
+
i0.ɵɵadvance(3);
|
|
260
|
+
i0.ɵɵtextInterpolate1(" Artifacts in \"", ctx_r0.selectedCollection.Name, "\" ");
|
|
261
|
+
i0.ɵɵadvance();
|
|
262
|
+
i0.ɵɵconditional(ctx_r0.collectionArtifacts.length === 0 ? 4 : 5);
|
|
263
|
+
} }
|
|
264
|
+
function ArtifactLoadDialogComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
265
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "div", 47);
|
|
266
|
+
i0.ɵɵtemplate(2, ArtifactLoadDialogComponent_Conditional_23_Conditional_2_Template, 4, 0, "div", 36)(3, ArtifactLoadDialogComponent_Conditional_23_Conditional_3_Template, 4, 0, "div", 37)(4, ArtifactLoadDialogComponent_Conditional_23_Conditional_4_Template, 2, 0);
|
|
267
|
+
i0.ɵɵelementEnd();
|
|
268
|
+
i0.ɵɵtemplate(5, ArtifactLoadDialogComponent_Conditional_23_Conditional_5_Template, 6, 2, "div", 48);
|
|
269
|
+
i0.ɵɵelementEnd();
|
|
270
|
+
} if (rf & 2) {
|
|
271
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
272
|
+
i0.ɵɵadvance(2);
|
|
273
|
+
i0.ɵɵconditional(ctx_r0.isLoadingCollections ? 2 : ctx_r0.collections.length === 0 ? 3 : 4);
|
|
274
|
+
i0.ɵɵadvance(3);
|
|
275
|
+
i0.ɵɵconditional(ctx_r0.selectedCollection ? 5 : -1);
|
|
276
|
+
} }
|
|
277
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
278
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
279
|
+
i0.ɵɵelement(1, "i", 38);
|
|
280
|
+
i0.ɵɵelementStart(2, "p");
|
|
281
|
+
i0.ɵɵtext(3, "Loading versions...");
|
|
282
|
+
i0.ɵɵelementEnd()();
|
|
283
|
+
} }
|
|
284
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
285
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
286
|
+
i0.ɵɵelement(1, "i", 59);
|
|
287
|
+
i0.ɵɵelementStart(2, "p");
|
|
288
|
+
i0.ɵɵtext(3, "No versions available");
|
|
289
|
+
i0.ɵɵelementEnd()();
|
|
290
|
+
} }
|
|
291
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
+
i0.ɵɵelementStart(0, "div", 66);
|
|
293
|
+
i0.ɵɵtext(1);
|
|
294
|
+
i0.ɵɵelementEnd();
|
|
295
|
+
} if (rf & 2) {
|
|
296
|
+
const version_r11 = i0.ɵɵnextContext().$implicit;
|
|
297
|
+
i0.ɵɵadvance();
|
|
298
|
+
i0.ɵɵtextInterpolate(version_r11.Comments);
|
|
299
|
+
} }
|
|
300
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
301
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 63);
|
|
303
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_For_2_Template_div_click_0_listener() { const version_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectVersion(version_r11)); });
|
|
304
|
+
i0.ɵɵelementStart(1, "div", 64);
|
|
305
|
+
i0.ɵɵelement(2, "i", 57);
|
|
306
|
+
i0.ɵɵtext(3);
|
|
307
|
+
i0.ɵɵelementEnd();
|
|
308
|
+
i0.ɵɵelementStart(4, "div", 65)(5, "div");
|
|
309
|
+
i0.ɵɵtext(6);
|
|
310
|
+
i0.ɵɵpipe(7, "date");
|
|
311
|
+
i0.ɵɵelementEnd();
|
|
312
|
+
i0.ɵɵtemplate(8, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_For_2_Conditional_8_Template, 2, 1, "div", 66);
|
|
313
|
+
i0.ɵɵelementEnd()();
|
|
314
|
+
} if (rf & 2) {
|
|
315
|
+
const version_r11 = ctx.$implicit;
|
|
316
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
317
|
+
i0.ɵɵclassProp("selected", (ctx_r0.selectedVersion == null ? null : ctx_r0.selectedVersion.ID) === version_r11.ID);
|
|
318
|
+
i0.ɵɵadvance(3);
|
|
319
|
+
i0.ɵɵtextInterpolate1(" Version ", version_r11.VersionNumber, " ");
|
|
320
|
+
i0.ɵɵadvance(3);
|
|
321
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 5, version_r11.__mj_UpdatedAt, "short"));
|
|
322
|
+
i0.ɵɵadvance(2);
|
|
323
|
+
i0.ɵɵconditional(version_r11.Comments ? 8 : -1);
|
|
324
|
+
} }
|
|
325
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
326
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
327
|
+
i0.ɵɵelement(1, "i", 71);
|
|
328
|
+
i0.ɵɵtext(2);
|
|
329
|
+
i0.ɵɵelementEnd();
|
|
330
|
+
} if (rf & 2) {
|
|
331
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
332
|
+
i0.ɵɵadvance(2);
|
|
333
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.previewError, " ");
|
|
334
|
+
} }
|
|
335
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
336
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "strong");
|
|
337
|
+
i0.ɵɵtext(2, "Description:");
|
|
338
|
+
i0.ɵɵelementEnd();
|
|
339
|
+
i0.ɵɵtext(3);
|
|
340
|
+
i0.ɵɵelementEnd();
|
|
341
|
+
} if (rf & 2) {
|
|
342
|
+
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
343
|
+
i0.ɵɵadvance(3);
|
|
344
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.previewSpec.description, " ");
|
|
345
|
+
} }
|
|
346
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
347
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "strong");
|
|
348
|
+
i0.ɵɵtext(2, "Type:");
|
|
349
|
+
i0.ɵɵelementEnd();
|
|
350
|
+
i0.ɵɵtext(3);
|
|
351
|
+
i0.ɵɵelementEnd();
|
|
352
|
+
} if (rf & 2) {
|
|
353
|
+
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
354
|
+
i0.ɵɵadvance(3);
|
|
355
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.previewSpec.type, " ");
|
|
356
|
+
} }
|
|
357
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
358
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "strong");
|
|
359
|
+
i0.ɵɵtext(2, "Namespace:");
|
|
360
|
+
i0.ɵɵelementEnd();
|
|
361
|
+
i0.ɵɵtext(3);
|
|
362
|
+
i0.ɵɵelementEnd();
|
|
363
|
+
} if (rf & 2) {
|
|
364
|
+
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
365
|
+
i0.ɵɵadvance(3);
|
|
366
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.previewSpec.namespace, " ");
|
|
367
|
+
} }
|
|
368
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
369
|
+
i0.ɵɵelementStart(0, "div", 72)(1, "strong");
|
|
370
|
+
i0.ɵɵtext(2, "Dependencies:");
|
|
371
|
+
i0.ɵɵelementEnd();
|
|
372
|
+
i0.ɵɵtext(3);
|
|
373
|
+
i0.ɵɵelementEnd();
|
|
374
|
+
} if (rf & 2) {
|
|
375
|
+
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
376
|
+
i0.ɵɵadvance(3);
|
|
377
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.previewSpec.dependencies.length, " ");
|
|
378
|
+
} }
|
|
379
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
380
|
+
i0.ɵɵelementStart(0, "div", 76);
|
|
381
|
+
i0.ɵɵelement(1, "mj-code-editor", 77);
|
|
382
|
+
i0.ɵɵelementEnd();
|
|
383
|
+
} if (rf & 2) {
|
|
384
|
+
const ctx_r0 = i0.ɵɵnextContext(5);
|
|
385
|
+
i0.ɵɵadvance();
|
|
386
|
+
i0.ɵɵproperty("value", ctx_r0.getPreviewJSON())("language", "json")("readonly", true)("lineWrapping", true)("setup", "basic");
|
|
387
|
+
} }
|
|
388
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
389
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
390
|
+
i0.ɵɵelementStart(0, "div", 70)(1, "div", 72)(2, "strong");
|
|
391
|
+
i0.ɵɵtext(3, "Name:");
|
|
392
|
+
i0.ɵɵelementEnd();
|
|
393
|
+
i0.ɵɵtext(4);
|
|
394
|
+
i0.ɵɵelementEnd();
|
|
395
|
+
i0.ɵɵtemplate(5, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_5_Template, 4, 1, "div", 72)(6, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_6_Template, 4, 1, "div", 72)(7, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_7_Template, 4, 1, "div", 72);
|
|
396
|
+
i0.ɵɵelementStart(8, "div", 72)(9, "strong");
|
|
397
|
+
i0.ɵɵtext(10, "Has Code:");
|
|
398
|
+
i0.ɵɵelementEnd();
|
|
399
|
+
i0.ɵɵtext(11);
|
|
400
|
+
i0.ɵɵelementEnd();
|
|
401
|
+
i0.ɵɵtemplate(12, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_12_Template, 4, 1, "div", 72);
|
|
402
|
+
i0.ɵɵelementStart(13, "div", 73)(14, "div", 74);
|
|
403
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Template_div_click_14_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleJsonPreview()); });
|
|
404
|
+
i0.ɵɵelement(15, "i", 75);
|
|
405
|
+
i0.ɵɵelementStart(16, "strong");
|
|
406
|
+
i0.ɵɵtext(17, "Full Specification (JSON)");
|
|
407
|
+
i0.ɵɵelementEnd()();
|
|
408
|
+
i0.ɵɵtemplate(18, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Conditional_18_Template, 2, 5, "div", 76);
|
|
409
|
+
i0.ɵɵelementEnd()();
|
|
410
|
+
} if (rf & 2) {
|
|
411
|
+
const ctx_r0 = i0.ɵɵnextContext(4);
|
|
412
|
+
i0.ɵɵadvance(4);
|
|
413
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.previewSpec.name, " ");
|
|
414
|
+
i0.ɵɵadvance();
|
|
415
|
+
i0.ɵɵconditional(ctx_r0.previewSpec.description ? 5 : -1);
|
|
416
|
+
i0.ɵɵadvance();
|
|
417
|
+
i0.ɵɵconditional(ctx_r0.previewSpec.type ? 6 : -1);
|
|
418
|
+
i0.ɵɵadvance();
|
|
419
|
+
i0.ɵɵconditional(ctx_r0.previewSpec.namespace ? 7 : -1);
|
|
420
|
+
i0.ɵɵadvance(4);
|
|
421
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.previewSpec.code ? "Yes" : "No", " ");
|
|
422
|
+
i0.ɵɵadvance();
|
|
423
|
+
i0.ɵɵconditional(ctx_r0.previewSpec.dependencies && ctx_r0.previewSpec.dependencies.length > 0 ? 12 : -1);
|
|
424
|
+
i0.ɵɵadvance(3);
|
|
425
|
+
i0.ɵɵclassProp("fa-chevron-right", !ctx_r0.showJsonPreview)("fa-chevron-down", ctx_r0.showJsonPreview);
|
|
426
|
+
i0.ɵɵadvance(3);
|
|
427
|
+
i0.ɵɵconditional(ctx_r0.showJsonPreview ? 18 : -1);
|
|
428
|
+
} }
|
|
429
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
430
|
+
i0.ɵɵelementStart(0, "div", 62)(1, "div", 67);
|
|
431
|
+
i0.ɵɵelement(2, "i", 68);
|
|
432
|
+
i0.ɵɵtext(3, " Preview ");
|
|
433
|
+
i0.ɵɵelementEnd();
|
|
434
|
+
i0.ɵɵtemplate(4, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_4_Template, 3, 1, "div", 69)(5, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Conditional_5_Template, 19, 11, "div", 70);
|
|
435
|
+
i0.ɵɵelementEnd();
|
|
436
|
+
} if (rf & 2) {
|
|
437
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
438
|
+
i0.ɵɵadvance(4);
|
|
439
|
+
i0.ɵɵconditional(ctx_r0.previewError ? 4 : ctx_r0.previewSpec ? 5 : -1);
|
|
440
|
+
} }
|
|
441
|
+
function ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
442
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
443
|
+
i0.ɵɵrepeaterCreate(1, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_For_2_Template, 9, 8, "div", 61, _forTrack0);
|
|
444
|
+
i0.ɵɵelementEnd();
|
|
445
|
+
i0.ɵɵtemplate(3, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Conditional_3_Template, 6, 1, "div", 62);
|
|
446
|
+
} if (rf & 2) {
|
|
447
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
448
|
+
i0.ɵɵadvance();
|
|
449
|
+
i0.ɵɵrepeater(ctx_r0.artifactVersions);
|
|
450
|
+
i0.ɵɵadvance(2);
|
|
451
|
+
i0.ɵɵconditional(ctx_r0.selectedVersion ? 3 : -1);
|
|
452
|
+
} }
|
|
453
|
+
function ArtifactLoadDialogComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
454
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 5)(2, "h4");
|
|
455
|
+
i0.ɵɵelement(3, "i", 57);
|
|
456
|
+
i0.ɵɵtext(4, " Versions");
|
|
457
|
+
i0.ɵɵelementEnd()();
|
|
458
|
+
i0.ɵɵelementStart(5, "div", 58);
|
|
459
|
+
i0.ɵɵtemplate(6, ArtifactLoadDialogComponent_Conditional_24_Conditional_6_Template, 4, 0, "div", 36)(7, ArtifactLoadDialogComponent_Conditional_24_Conditional_7_Template, 4, 0, "div", 37)(8, ArtifactLoadDialogComponent_Conditional_24_Conditional_8_Template, 4, 1);
|
|
460
|
+
i0.ɵɵelementEnd()();
|
|
461
|
+
} if (rf & 2) {
|
|
462
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
463
|
+
i0.ɵɵadvance(6);
|
|
464
|
+
i0.ɵɵconditional(ctx_r0.isLoadingVersions ? 6 : ctx_r0.artifactVersions.length === 0 ? 7 : 8);
|
|
465
|
+
} }
|
|
466
|
+
export class ArtifactLoadDialogComponent {
|
|
467
|
+
dialog;
|
|
468
|
+
// Tab state
|
|
469
|
+
activeTab = 0; // 0 = Artifacts, 1 = Collections
|
|
470
|
+
// Artifacts data
|
|
471
|
+
artifacts = [];
|
|
472
|
+
artifactVersions = [];
|
|
473
|
+
selectedArtifact = null;
|
|
474
|
+
selectedVersion = null;
|
|
475
|
+
// Collections data
|
|
476
|
+
collections = [];
|
|
477
|
+
selectedCollection = null;
|
|
478
|
+
collectionArtifacts = [];
|
|
479
|
+
// Search and filter
|
|
480
|
+
searchTerm = '';
|
|
481
|
+
selectedArtifactType = '';
|
|
482
|
+
userEmail = '';
|
|
483
|
+
// Paging
|
|
484
|
+
currentPage = 0;
|
|
485
|
+
pageSize = 25;
|
|
486
|
+
totalArtifacts = 0;
|
|
487
|
+
hasMorePages = false;
|
|
488
|
+
// UI state
|
|
489
|
+
isLoading = true;
|
|
490
|
+
isLoadingVersions = false;
|
|
491
|
+
isLoadingCollections = false;
|
|
492
|
+
isFilterPanelCollapsed = false;
|
|
493
|
+
// Preview
|
|
494
|
+
previewSpec = null;
|
|
495
|
+
previewError = null;
|
|
496
|
+
showJsonPreview = false;
|
|
497
|
+
metadata = new Metadata();
|
|
498
|
+
destroy$ = new Subject();
|
|
499
|
+
searchSubject = new Subject();
|
|
500
|
+
constructor(dialog) {
|
|
501
|
+
this.dialog = dialog;
|
|
502
|
+
}
|
|
503
|
+
async ngOnInit() {
|
|
504
|
+
// Setup search debouncing
|
|
505
|
+
this.searchSubject.pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe(() => {
|
|
506
|
+
this.filterArtifacts();
|
|
507
|
+
});
|
|
508
|
+
await Promise.all([
|
|
509
|
+
this.loadArtifacts(),
|
|
510
|
+
this.loadCollections()
|
|
511
|
+
]);
|
|
512
|
+
}
|
|
513
|
+
ngOnDestroy() {
|
|
514
|
+
this.destroy$.next();
|
|
515
|
+
this.destroy$.complete();
|
|
516
|
+
}
|
|
517
|
+
async loadArtifacts() {
|
|
518
|
+
this.isLoading = true;
|
|
519
|
+
try {
|
|
520
|
+
const rv = new RunView();
|
|
521
|
+
const startRow = this.currentPage * this.pageSize;
|
|
522
|
+
const result = await rv.RunView({
|
|
523
|
+
EntityName: 'MJ: Artifacts',
|
|
524
|
+
ExtraFilter: this.buildArtifactFilter(),
|
|
525
|
+
OrderBy: '__mj_UpdatedAt DESC',
|
|
526
|
+
MaxRows: this.pageSize,
|
|
527
|
+
StartRow: startRow,
|
|
528
|
+
ResultType: 'entity_object'
|
|
529
|
+
});
|
|
530
|
+
if (result.Success && result.Results) {
|
|
531
|
+
this.artifacts = result.Results;
|
|
532
|
+
this.totalArtifacts = result.TotalRowCount || 0;
|
|
533
|
+
const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);
|
|
534
|
+
this.hasMorePages = this.currentPage < totalPages - 1;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
catch (error) {
|
|
538
|
+
console.error('Error loading artifacts:', error);
|
|
539
|
+
}
|
|
540
|
+
finally {
|
|
541
|
+
this.isLoading = false;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
async loadCollections() {
|
|
545
|
+
this.isLoadingCollections = true;
|
|
546
|
+
try {
|
|
547
|
+
const currentUserId = this.metadata.CurrentUser?.ID;
|
|
548
|
+
if (!currentUserId) {
|
|
549
|
+
this.collections = [];
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
const rv = new RunView();
|
|
553
|
+
const result = await rv.RunView({
|
|
554
|
+
EntityName: 'MJ: Collections',
|
|
555
|
+
ExtraFilter: `UserID = '${currentUserId}' OR ID IN (
|
|
556
|
+
SELECT CollectionID FROM __mj.vwCollectionPermissions
|
|
557
|
+
WHERE UserID = '${currentUserId}' AND CanRead = 1
|
|
558
|
+
)`,
|
|
559
|
+
OrderBy: 'Name',
|
|
560
|
+
ResultType: 'entity_object'
|
|
561
|
+
});
|
|
562
|
+
if (result.Success) {
|
|
563
|
+
this.collections = result.Results || [];
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
catch (error) {
|
|
567
|
+
console.error('Error loading collections:', error);
|
|
568
|
+
this.collections = [];
|
|
569
|
+
}
|
|
570
|
+
finally {
|
|
571
|
+
this.isLoadingCollections = false;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
async selectCollection(collection) {
|
|
575
|
+
this.selectedCollection = collection;
|
|
576
|
+
this.selectedArtifact = null;
|
|
577
|
+
this.selectedVersion = null;
|
|
578
|
+
this.artifactVersions = [];
|
|
579
|
+
// Load artifacts in this collection
|
|
580
|
+
try {
|
|
581
|
+
const rv = new RunView();
|
|
582
|
+
const result = await rv.RunView({
|
|
583
|
+
EntityName: 'MJ: Artifacts',
|
|
584
|
+
ExtraFilter: `ID IN (
|
|
585
|
+
SELECT ArtifactID FROM __mj.vwCollectionArtifacts
|
|
586
|
+
WHERE CollectionID = '${collection.ID}'
|
|
587
|
+
)`,
|
|
588
|
+
OrderBy: 'Name',
|
|
589
|
+
ResultType: 'entity_object'
|
|
590
|
+
});
|
|
591
|
+
if (result.Success) {
|
|
592
|
+
this.collectionArtifacts = result.Results || [];
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
catch (error) {
|
|
596
|
+
console.error('Error loading collection artifacts:', error);
|
|
597
|
+
this.collectionArtifacts = [];
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
buildArtifactFilter() {
|
|
601
|
+
const filters = [];
|
|
602
|
+
// Always filter to Component type by default
|
|
603
|
+
if (this.selectedArtifactType) {
|
|
604
|
+
filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);
|
|
605
|
+
}
|
|
606
|
+
else {
|
|
607
|
+
filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = 'Component')`);
|
|
608
|
+
}
|
|
609
|
+
// Search filter
|
|
610
|
+
if (this.searchTerm?.trim()) {
|
|
611
|
+
const term = this.searchTerm.toLowerCase();
|
|
612
|
+
filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);
|
|
613
|
+
}
|
|
614
|
+
// User email filter
|
|
615
|
+
if (this.userEmail?.trim()) {
|
|
616
|
+
const md = new Metadata();
|
|
617
|
+
const schemaName = md.EntityByName("Users")?.SchemaName || "__mj";
|
|
618
|
+
filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`);
|
|
619
|
+
}
|
|
620
|
+
return filters.length > 0 ? filters.join(' AND ') : '';
|
|
621
|
+
}
|
|
622
|
+
async selectArtifact(artifact) {
|
|
623
|
+
this.selectedArtifact = artifact;
|
|
624
|
+
this.selectedVersion = null;
|
|
625
|
+
this.previewSpec = null;
|
|
626
|
+
this.previewError = null;
|
|
627
|
+
await this.loadVersions(artifact.ID);
|
|
628
|
+
}
|
|
629
|
+
async loadVersions(artifactId) {
|
|
630
|
+
this.isLoadingVersions = true;
|
|
631
|
+
try {
|
|
632
|
+
const rv = new RunView();
|
|
633
|
+
const result = await rv.RunView({
|
|
634
|
+
EntityName: 'MJ: Artifact Versions',
|
|
635
|
+
ExtraFilter: `ArtifactID = '${artifactId}'`,
|
|
636
|
+
OrderBy: 'VersionNumber DESC',
|
|
637
|
+
ResultType: 'entity_object'
|
|
638
|
+
});
|
|
639
|
+
if (result.Success && result.Results) {
|
|
640
|
+
this.artifactVersions = result.Results;
|
|
641
|
+
// Auto-select the latest version
|
|
642
|
+
if (this.artifactVersions.length > 0) {
|
|
643
|
+
await this.selectVersion(this.artifactVersions[0]);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
catch (error) {
|
|
648
|
+
console.error('Error loading versions:', error);
|
|
649
|
+
this.artifactVersions = [];
|
|
650
|
+
}
|
|
651
|
+
finally {
|
|
652
|
+
this.isLoadingVersions = false;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
async selectVersion(version) {
|
|
656
|
+
this.selectedVersion = version;
|
|
657
|
+
await this.loadPreview(version);
|
|
658
|
+
}
|
|
659
|
+
async loadPreview(version) {
|
|
660
|
+
try {
|
|
661
|
+
this.previewError = null;
|
|
662
|
+
// Try Content field first (new schema)
|
|
663
|
+
if (version.Content) {
|
|
664
|
+
this.previewSpec = JSON.parse(version.Content);
|
|
665
|
+
}
|
|
666
|
+
// Fallback to Configuration field (legacy)
|
|
667
|
+
else if (version.Configuration) {
|
|
668
|
+
const config = JSON.parse(version.Configuration);
|
|
669
|
+
// Extract from SkipAPIAnalysisCompleteResponse if needed
|
|
670
|
+
if (config.componentOptions && config.componentOptions.length > 0) {
|
|
671
|
+
this.previewSpec = config.componentOptions[0].option;
|
|
672
|
+
}
|
|
673
|
+
else {
|
|
674
|
+
this.previewSpec = config;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
else {
|
|
678
|
+
this.previewError = 'No content found in this version';
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
catch (error) {
|
|
682
|
+
this.previewError = `Failed to parse: ${error}`;
|
|
683
|
+
this.previewSpec = null;
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
async filterArtifacts() {
|
|
687
|
+
this.currentPage = 0;
|
|
688
|
+
await this.loadArtifacts();
|
|
689
|
+
}
|
|
690
|
+
onSearchInput() {
|
|
691
|
+
this.searchSubject.next(this.searchTerm);
|
|
692
|
+
}
|
|
693
|
+
onArtifactTypeChange() {
|
|
694
|
+
this.selectedArtifact = null;
|
|
695
|
+
this.selectedVersion = null;
|
|
696
|
+
this.artifactVersions = [];
|
|
697
|
+
this.filterArtifacts();
|
|
698
|
+
}
|
|
699
|
+
async nextPage() {
|
|
700
|
+
if (this.hasMorePages) {
|
|
701
|
+
this.currentPage++;
|
|
702
|
+
await this.loadArtifacts();
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
async previousPage() {
|
|
706
|
+
if (this.currentPage > 0) {
|
|
707
|
+
this.currentPage--;
|
|
708
|
+
await this.loadArtifacts();
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
canGoNext() {
|
|
712
|
+
return this.hasMorePages;
|
|
713
|
+
}
|
|
714
|
+
canGoPrevious() {
|
|
715
|
+
return this.currentPage > 0;
|
|
716
|
+
}
|
|
717
|
+
getTotalPages() {
|
|
718
|
+
return Math.ceil(this.totalArtifacts / this.pageSize);
|
|
719
|
+
}
|
|
720
|
+
toggleFilterPanel() {
|
|
721
|
+
this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;
|
|
722
|
+
}
|
|
723
|
+
getActiveFilterCount() {
|
|
724
|
+
let count = 0;
|
|
725
|
+
if (this.searchTerm?.trim())
|
|
726
|
+
count++;
|
|
727
|
+
if (this.selectedArtifactType)
|
|
728
|
+
count++;
|
|
729
|
+
if (this.userEmail?.trim())
|
|
730
|
+
count++;
|
|
731
|
+
return count;
|
|
732
|
+
}
|
|
733
|
+
canLoad() {
|
|
734
|
+
return this.selectedArtifact !== null &&
|
|
735
|
+
this.selectedVersion !== null &&
|
|
736
|
+
this.previewSpec !== null;
|
|
737
|
+
}
|
|
738
|
+
cancel() {
|
|
739
|
+
this.dialog.close(undefined);
|
|
740
|
+
}
|
|
741
|
+
load() {
|
|
742
|
+
if (!this.canLoad())
|
|
743
|
+
return;
|
|
744
|
+
const result = {
|
|
745
|
+
spec: this.previewSpec,
|
|
746
|
+
artifactID: this.selectedArtifact.ID,
|
|
747
|
+
versionID: this.selectedVersion.ID,
|
|
748
|
+
versionNumber: this.selectedVersion.VersionNumber,
|
|
749
|
+
artifactName: this.selectedArtifact.Name
|
|
750
|
+
};
|
|
751
|
+
this.dialog.close(result);
|
|
752
|
+
}
|
|
753
|
+
onTabSelect(index) {
|
|
754
|
+
this.activeTab = index;
|
|
755
|
+
}
|
|
756
|
+
getArtifactsByTab() {
|
|
757
|
+
return this.activeTab === 0 ? this.artifacts : this.collectionArtifacts;
|
|
758
|
+
}
|
|
759
|
+
toggleJsonPreview() {
|
|
760
|
+
this.showJsonPreview = !this.showJsonPreview;
|
|
761
|
+
}
|
|
762
|
+
getPreviewJSON() {
|
|
763
|
+
return this.previewSpec ? JSON.stringify(this.previewSpec, null, 2) : '';
|
|
764
|
+
}
|
|
765
|
+
static ɵfac = function ArtifactLoadDialogComponent_Factory(t) { return new (t || ArtifactLoadDialogComponent)(i0.ɵɵdirectiveInject(i1.DialogRef)); };
|
|
766
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactLoadDialogComponent, selectors: [["app-artifact-load-dialog"]], decls: 31, vars: 18, consts: [[3, "close"], [2, "font-size", "18px"], [1, "fa-solid", "fa-database"], [1, "artifact-load-content"], [1, "filter-panel"], [1, "panel-header"], ["kendoButton", "", 3, "click", "fillMode", "themeColor"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-file-code"], [1, "fa-solid", "fa-folder"], [1, "tab-content"], [1, "artifacts-view"], [1, "collections-view"], [1, "version-panel"], ["kendoButton", "", 3, "click", "themeColor", "disabled"], [1, "fa-solid", "fa-download"], ["kendoButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "paging-controls"], ["kendoButton", "", 3, "click", "disabled", "themeColor"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "artifact-description"], [1, "artifact-meta"], [1, "collections-list"], [1, "collection-artifacts"], [1, "fa-solid", "fa-folder-open"], [1, "collection-item", 3, "selected"], [1, "collection-item", 3, "click"], [1, "collection-icon"], [1, "collection-info"], [1, "collection-name"], [1, "collection-description"], [1, "section-header"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], [1, "fa-solid", "fa-info-circle"], [1, "version-list"], [1, "version-item", 3, "selected"], [1, "preview-section"], [1, "version-item", 3, "click"], [1, "version-number"], [1, "version-meta"], [1, "version-comments"], [1, "preview-header"], [1, "fa-solid", "fa-eye"], [1, "preview-error"], [1, "preview-content"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "preview-item"], [1, "preview-json-section"], [1, "preview-json-header", 3, "click"], [1, "fa-solid"], [1, "preview-json-content"], [2, "height", "300px", "width", "100%", 3, "value", "language", "readonly", "lineWrapping", "setup"]], template: function ArtifactLoadDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
767
|
+
i0.ɵɵelementStart(0, "div")(1, "kendo-dialog-titlebar", 0);
|
|
768
|
+
i0.ɵɵlistener("close", function ArtifactLoadDialogComponent_Template_kendo_dialog_titlebar_close_1_listener() { return ctx.cancel(); });
|
|
769
|
+
i0.ɵɵelementStart(2, "div", 1);
|
|
770
|
+
i0.ɵɵelement(3, "i", 2);
|
|
771
|
+
i0.ɵɵtext(4, " Load Component from Artifact ");
|
|
772
|
+
i0.ɵɵelementEnd()();
|
|
773
|
+
i0.ɵɵelementStart(5, "div", 3)(6, "div", 4)(7, "div", 5);
|
|
774
|
+
i0.ɵɵtemplate(8, ArtifactLoadDialogComponent_Conditional_8_Template, 2, 0, "span");
|
|
775
|
+
i0.ɵɵelementStart(9, "button", 6);
|
|
776
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Template_button_click_9_listener() { return ctx.toggleFilterPanel(); });
|
|
777
|
+
i0.ɵɵelement(10, "i", 7);
|
|
778
|
+
i0.ɵɵtemplate(11, ArtifactLoadDialogComponent_Conditional_11_Template, 2, 1, "span", 8);
|
|
779
|
+
i0.ɵɵelementEnd()();
|
|
780
|
+
i0.ɵɵtemplate(12, ArtifactLoadDialogComponent_Conditional_12_Template, 21, 3, "div", 9);
|
|
781
|
+
i0.ɵɵelementEnd();
|
|
782
|
+
i0.ɵɵelementStart(13, "div", 10)(14, "div", 11)(15, "button", 12);
|
|
783
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Template_button_click_15_listener() { return ctx.onTabSelect(0); });
|
|
784
|
+
i0.ɵɵelement(16, "i", 13);
|
|
785
|
+
i0.ɵɵtext(17, " All Artifacts ");
|
|
786
|
+
i0.ɵɵelementEnd();
|
|
787
|
+
i0.ɵɵelementStart(18, "button", 12);
|
|
788
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Template_button_click_18_listener() { return ctx.onTabSelect(1); });
|
|
789
|
+
i0.ɵɵelement(19, "i", 14);
|
|
790
|
+
i0.ɵɵtext(20, " Collections ");
|
|
791
|
+
i0.ɵɵelementEnd()();
|
|
792
|
+
i0.ɵɵelementStart(21, "div", 15);
|
|
793
|
+
i0.ɵɵtemplate(22, ArtifactLoadDialogComponent_Conditional_22_Template, 14, 8, "div", 16)(23, ArtifactLoadDialogComponent_Conditional_23_Template, 6, 2, "div", 17);
|
|
794
|
+
i0.ɵɵelementEnd()();
|
|
795
|
+
i0.ɵɵtemplate(24, ArtifactLoadDialogComponent_Conditional_24_Template, 9, 1, "div", 18);
|
|
796
|
+
i0.ɵɵelementEnd();
|
|
797
|
+
i0.ɵɵelementStart(25, "kendo-dialog-actions")(26, "button", 19);
|
|
798
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Template_button_click_26_listener() { return ctx.load(); });
|
|
799
|
+
i0.ɵɵelement(27, "i", 20);
|
|
800
|
+
i0.ɵɵtext(28, " Load Component ");
|
|
801
|
+
i0.ɵɵelementEnd();
|
|
802
|
+
i0.ɵɵelementStart(29, "button", 21);
|
|
803
|
+
i0.ɵɵlistener("click", function ArtifactLoadDialogComponent_Template_button_click_29_listener() { return ctx.cancel(); });
|
|
804
|
+
i0.ɵɵtext(30, "Cancel");
|
|
805
|
+
i0.ɵɵelementEnd()()();
|
|
806
|
+
} if (rf & 2) {
|
|
807
|
+
i0.ɵɵadvance(6);
|
|
808
|
+
i0.ɵɵstyleProp("width", ctx.isFilterPanelCollapsed ? "40px" : "280px");
|
|
809
|
+
i0.ɵɵadvance(2);
|
|
810
|
+
i0.ɵɵconditional(!ctx.isFilterPanelCollapsed ? 8 : -1);
|
|
811
|
+
i0.ɵɵadvance();
|
|
812
|
+
i0.ɵɵclassProp("filter-active", ctx.getActiveFilterCount() > 0);
|
|
813
|
+
i0.ɵɵproperty("fillMode", "flat")("themeColor", ctx.getActiveFilterCount() > 0 ? "primary" : "base");
|
|
814
|
+
i0.ɵɵadvance(2);
|
|
815
|
+
i0.ɵɵconditional(ctx.isFilterPanelCollapsed && ctx.getActiveFilterCount() > 0 ? 11 : -1);
|
|
816
|
+
i0.ɵɵadvance();
|
|
817
|
+
i0.ɵɵconditional(!ctx.isFilterPanelCollapsed ? 12 : -1);
|
|
818
|
+
i0.ɵɵadvance(3);
|
|
819
|
+
i0.ɵɵclassProp("active", ctx.activeTab === 0);
|
|
820
|
+
i0.ɵɵadvance(3);
|
|
821
|
+
i0.ɵɵclassProp("active", ctx.activeTab === 1);
|
|
822
|
+
i0.ɵɵadvance(4);
|
|
823
|
+
i0.ɵɵconditional(ctx.activeTab === 0 ? 22 : -1);
|
|
824
|
+
i0.ɵɵadvance();
|
|
825
|
+
i0.ɵɵconditional(ctx.activeTab === 1 ? 23 : -1);
|
|
826
|
+
i0.ɵɵadvance();
|
|
827
|
+
i0.ɵɵconditional(ctx.selectedArtifact ? 24 : -1);
|
|
828
|
+
i0.ɵɵadvance(2);
|
|
829
|
+
i0.ɵɵproperty("themeColor", "primary")("disabled", !ctx.canLoad());
|
|
830
|
+
} }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i1.DialogTitleBarComponent, i1.DialogActionsComponent, i3.CodeEditorComponent, i4.ButtonComponent, i5.DatePipe], styles: ["\n\n.artifact-load-content[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: row;\n}\n\n\n\n.filter-panel[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n border-right: 1px solid #ddd;\n transition: width 0.3s ease;\n flex-shrink: 0;\n background: #fafafa;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px;\n border-bottom: 1px solid #eee;\n font-weight: bold;\n color: #666;\n}\n\n.filter-content[_ngcontent-%COMP%] {\n flex: 1;\n padding: 15px;\n overflow-y: auto;\n}\n\n.filter-group[_ngcontent-%COMP%] {\n margin-bottom: 15px;\n}\n\n.filter-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 5px;\n font-weight: 500;\n color: #555;\n}\n\n.filter-input[_ngcontent-%COMP%], \n.filter-select[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 14px;\n}\n\n.filter-input[_ngcontent-%COMP%]:focus, \n.filter-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 3px rgba(33, 150, 243, 0.3);\n}\n\n.filter-count[_ngcontent-%COMP%] {\n background: #fff;\n color: #2196f3;\n border-radius: 50%;\n min-width: 18px;\n height: 18px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: bold;\n margin-left: 4px;\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n flex: 2;\n min-width: 0;\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid #ddd;\n background: #fafafa;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n border-bottom: 2px solid transparent;\n transition: all 0.2s;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #333;\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n.tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.artifacts-view[_ngcontent-%COMP%], \n.collections-view[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n\n\n.paging-controls[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 15px;\n border-bottom: 1px solid #eee;\n background: white;\n}\n\n.page-info[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n}\n\n\n\n.artifacts-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 10px 15px;\n background: white;\n}\n\n.artifact-item[_ngcontent-%COMP%] {\n border: 1px solid #ddd;\n border-radius: 6px;\n margin: 10px 0;\n padding: 15px;\n cursor: pointer;\n transition: all 0.2s ease;\n background: white;\n}\n\n.artifact-item[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n background: #fafafa;\n}\n\n.artifact-item.selected[_ngcontent-%COMP%] {\n border-color: #2196f3;\n background: #e8f4f8;\n}\n\n.artifact-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.artifact-main[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.artifact-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-bottom: 5px;\n}\n\n.artifact-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #666;\n margin-right: 8px;\n}\n\n.artifact-name[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #333;\n}\n\n.artifact-description[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n margin-top: 4px;\n}\n\n.artifact-meta[_ngcontent-%COMP%] {\n text-align: right;\n color: #999;\n font-size: 12px;\n}\n\n\n\n.collections-view[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1.5fr;\n gap: 15px;\n padding: 15px;\n overflow: hidden;\n}\n\n.collections-list[_ngcontent-%COMP%] {\n overflow-y: auto;\n border-right: 1px solid #eee;\n padding-right: 15px;\n}\n\n.collection-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n margin-bottom: 10px;\n cursor: pointer;\n transition: all 0.2s;\n background: white;\n}\n\n.collection-item[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n background: #fafafa;\n}\n\n.collection-item.selected[_ngcontent-%COMP%] {\n border-color: #2196f3;\n background: #e8f4f8;\n}\n\n.collection-icon[_ngcontent-%COMP%] {\n font-size: 24px;\n color: #2196f3;\n}\n\n.collection-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.collection-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n\n.collection-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n}\n\n.collection-artifacts[_ngcontent-%COMP%] {\n overflow-y: auto;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px;\n background: #f8f9fa;\n border-radius: 4px;\n font-weight: 600;\n color: #555;\n margin-bottom: 10px;\n}\n\n\n\n.version-panel[_ngcontent-%COMP%] {\n width: 350px;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-left: 1px solid #ddd;\n flex-shrink: 0;\n background: #fafafa;\n}\n\n.version-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 15px;\n}\n\n.version-list[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.version-item[_ngcontent-%COMP%] {\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n margin-bottom: 10px;\n cursor: pointer;\n transition: all 0.2s;\n background: white;\n}\n\n.version-item[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n background: #fafafa;\n}\n\n.version-item.selected[_ngcontent-%COMP%] {\n border-color: #2196f3;\n background: #e8f4f8;\n}\n\n.version-number[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.version-number[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #2196f3;\n}\n\n.version-meta[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #666;\n}\n\n.version-comments[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-style: italic;\n color: #888;\n}\n\n\n\n.preview-section[_ngcontent-%COMP%] {\n border-top: 2px solid #ddd;\n padding-top: 15px;\n margin-top: 15px;\n}\n\n.preview-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #555;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid #eee;\n}\n\n.preview-content[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n padding: 12px;\n}\n\n.preview-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n font-size: 13px;\n}\n\n.preview-item[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: #555;\n font-weight: 600;\n margin-right: 6px;\n}\n\n.preview-error[_ngcontent-%COMP%] {\n background: #fff3cd;\n border: 1px solid #ffeaa7;\n border-radius: 4px;\n padding: 10px;\n color: #856404;\n font-size: 13px;\n}\n\n.preview-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 40px;\n color: #666;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 15px;\n color: #999;\n}\n\n.loading-state[_ngcontent-%COMP%] i.fa-spin[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 5px 0;\n font-size: 14px;\n}\n\n\n\n.preview-json-section[_ngcontent-%COMP%] {\n margin-top: 15px;\n border-top: 1px solid #e0e0e0;\n padding-top: 10px;\n}\n\n.preview-json-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n cursor: pointer;\n background: #f8f9fa;\n border-radius: 4px;\n transition: background 0.2s;\n}\n\n.preview-json-header[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n}\n\n.preview-json-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #666;\n}\n\n.preview-json-header[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #333;\n}\n\n.preview-json-content[_ngcontent-%COMP%] {\n margin-top: 10px;\n border: 1px solid #dee2e6;\n border-radius: 4px;\n overflow: hidden;\n}"] });
|
|
831
|
+
}
|
|
832
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArtifactLoadDialogComponent, [{
|
|
833
|
+
type: Component,
|
|
834
|
+
args: [{ selector: 'app-artifact-load-dialog', template: "<div>\n <kendo-dialog-titlebar (close)=\"cancel()\">\n <div style=\"font-size: 18px;\">\n <i class=\"fa-solid fa-database\"></i> Load Component from Artifact\n </div>\n </kendo-dialog-titlebar>\n\n <div class=\"artifact-load-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button kendoButton (click)=\"toggleFilterPanel()\"\n [fillMode]=\"'flat'\"\n [class.filter-active]=\"getActiveFilterCount() > 0\"\n [themeColor]=\"getActiveFilterCount() > 0 ? 'primary' : 'base'\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\"\n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">Component (default)</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n\n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\"\n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 0\"\n (click)=\"onTabSelect(0)\">\n <i class=\"fa-solid fa-file-code\"></i> All Artifacts\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 1\"\n (click)=\"onTabSelect(1)\">\n <i class=\"fa-solid fa-folder\"></i> Collections\n </button>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Artifacts Tab -->\n @if (activeTab === 0) {\n <div class=\"artifacts-view\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button kendoButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\"\n [themeColor]=\"'base'\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total)\n </span>\n <button kendoButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\"\n [themeColor]=\"'base'\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Artifacts List -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading artifacts...</p>\n </div>\n }\n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n }\n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"selectedArtifact?.ID === artifact.ID\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n\n <!-- Collections Tab -->\n @if (activeTab === 1) {\n <div class=\"collections-view\">\n <div class=\"collections-list\">\n @if (isLoadingCollections) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading collections...</p>\n </div>\n }\n @else if (collections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No collections found</p>\n </div>\n }\n @else {\n @for (collection of collections; track collection.ID) {\n <div class=\"collection-item\"\n [class.selected]=\"selectedCollection?.ID === collection.ID\"\n (click)=\"selectCollection(collection)\">\n <div class=\"collection-icon\">\n <i class=\"fa-solid fa-folder\"></i>\n </div>\n <div class=\"collection-info\">\n <div class=\"collection-name\">{{ collection.Name }}</div>\n @if (collection.Description) {\n <div class=\"collection-description\">{{ collection.Description }}</div>\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (selectedCollection) {\n <div class=\"collection-artifacts\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-file-code\"></i>\n Artifacts in \"{{ selectedCollection.Name }}\"\n </div>\n @if (collectionArtifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts in this collection</p>\n </div>\n }\n @else {\n @for (artifact of collectionArtifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"selectedArtifact?.ID === artifact.ID\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version/Preview Panel -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Versions</h4>\n </div>\n\n <div class=\"version-content\">\n @if (isLoadingVersions) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading versions...</p>\n </div>\n }\n @else if (artifactVersions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available</p>\n </div>\n }\n @else {\n <div class=\"version-list\">\n @for (version of artifactVersions; track version.ID) {\n <div class=\"version-item\"\n [class.selected]=\"selectedVersion?.ID === version.ID\"\n (click)=\"selectVersion(version)\">\n <div class=\"version-number\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version {{ version.VersionNumber }}\n </div>\n <div class=\"version-meta\">\n <div>{{ version.__mj_UpdatedAt | date:'short' }}</div>\n @if (version.Comments) {\n <div class=\"version-comments\">{{ version.Comments }}</div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Preview Section -->\n @if (selectedVersion) {\n <div class=\"preview-section\">\n <div class=\"preview-header\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n @if (previewError) {\n <div class=\"preview-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ previewError }}\n </div>\n }\n @else if (previewSpec) {\n <div class=\"preview-content\">\n <div class=\"preview-item\">\n <strong>Name:</strong> {{ previewSpec.name }}\n </div>\n @if (previewSpec.description) {\n <div class=\"preview-item\">\n <strong>Description:</strong> {{ previewSpec.description }}\n </div>\n }\n @if (previewSpec.type) {\n <div class=\"preview-item\">\n <strong>Type:</strong> {{ previewSpec.type }}\n </div>\n }\n @if (previewSpec.namespace) {\n <div class=\"preview-item\">\n <strong>Namespace:</strong> {{ previewSpec.namespace }}\n </div>\n }\n <div class=\"preview-item\">\n <strong>Has Code:</strong> {{ previewSpec.code ? 'Yes' : 'No' }}\n </div>\n @if (previewSpec.dependencies && previewSpec.dependencies.length > 0) {\n <div class=\"preview-item\">\n <strong>Dependencies:</strong> {{ previewSpec.dependencies.length }}\n </div>\n }\n\n <!-- Full Spec JSON Viewer -->\n <div class=\"preview-json-section\">\n <div class=\"preview-json-header\" (click)=\"toggleJsonPreview()\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"!showJsonPreview\" [class.fa-chevron-down]=\"showJsonPreview\"></i>\n <strong>Full Specification (JSON)</strong>\n </div>\n @if (showJsonPreview) {\n <div class=\"preview-json-content\">\n <mj-code-editor\n [value]=\"getPreviewJSON()\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n [setup]=\"'basic'\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <kendo-dialog-actions>\n <button kendoButton\n [themeColor]=\"'primary'\"\n (click)=\"load()\"\n [disabled]=\"!canLoad()\">\n <i class=\"fa-solid fa-download\"></i>\n Load Component\n </button>\n <button kendoButton (click)=\"cancel()\">Cancel</button>\n </kendo-dialog-actions>\n</div>\n", styles: ["/* Main container */\n.artifact-load-content {\n height: 100%;\n display: flex;\n flex-direction: row;\n}\n\n/* Filter Panel */\n.filter-panel {\n height: 100%;\n display: flex;\n flex-direction: column;\n border-right: 1px solid #ddd;\n transition: width 0.3s ease;\n flex-shrink: 0;\n background: #fafafa;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px;\n border-bottom: 1px solid #eee;\n font-weight: bold;\n color: #666;\n}\n\n.filter-content {\n flex: 1;\n padding: 15px;\n overflow-y: auto;\n}\n\n.filter-group {\n margin-bottom: 15px;\n}\n\n.filter-group label {\n display: block;\n margin-bottom: 5px;\n font-weight: 500;\n color: #555;\n}\n\n.filter-input,\n.filter-select {\n width: 100%;\n padding: 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 14px;\n}\n\n.filter-input:focus,\n.filter-select:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 3px rgba(33, 150, 243, 0.3);\n}\n\n.filter-count {\n background: #fff;\n color: #2196f3;\n border-radius: 50%;\n min-width: 18px;\n height: 18px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: bold;\n margin-left: 4px;\n}\n\n/* Main Content Panel */\n.main-content {\n height: 100%;\n display: flex;\n flex-direction: column;\n flex: 2;\n min-width: 0;\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid #ddd;\n background: #fafafa;\n}\n\n.tab {\n padding: 12px 20px;\n border: none;\n background: transparent;\n color: #666;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n border-bottom: 2px solid transparent;\n transition: all 0.2s;\n}\n\n.tab:hover {\n background: #f0f0f0;\n color: #333;\n}\n\n.tab.active {\n color: #2196f3;\n border-bottom-color: #2196f3;\n background: white;\n}\n\n.tab i {\n margin-right: 6px;\n}\n\n/* Tab Content */\n.tab-content {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.artifacts-view,\n.collections-view {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Paging Controls */\n.paging-controls {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 15px;\n border-bottom: 1px solid #eee;\n background: white;\n}\n\n.page-info {\n color: #666;\n font-size: 14px;\n}\n\n/* Artifacts List */\n.artifacts-list {\n flex: 1;\n overflow-y: auto;\n padding: 10px 15px;\n background: white;\n}\n\n.artifact-item {\n border: 1px solid #ddd;\n border-radius: 6px;\n margin: 10px 0;\n padding: 15px;\n cursor: pointer;\n transition: all 0.2s ease;\n background: white;\n}\n\n.artifact-item:hover {\n border-color: #2196f3;\n background: #fafafa;\n}\n\n.artifact-item.selected {\n border-color: #2196f3;\n background: #e8f4f8;\n}\n\n.artifact-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.artifact-main {\n flex: 1;\n}\n\n.artifact-name {\n display: flex;\n align-items: center;\n margin-bottom: 5px;\n}\n\n.artifact-name i {\n color: #666;\n margin-right: 8px;\n}\n\n.artifact-name span {\n font-weight: 600;\n color: #333;\n}\n\n.artifact-description {\n color: #666;\n font-size: 14px;\n margin-top: 4px;\n}\n\n.artifact-meta {\n text-align: right;\n color: #999;\n font-size: 12px;\n}\n\n/* Collections View */\n.collections-view {\n display: grid;\n grid-template-columns: 1fr 1.5fr;\n gap: 15px;\n padding: 15px;\n overflow: hidden;\n}\n\n.collections-list {\n overflow-y: auto;\n border-right: 1px solid #eee;\n padding-right: 15px;\n}\n\n.collection-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n margin-bottom: 10px;\n cursor: pointer;\n transition: all 0.2s;\n background: white;\n}\n\n.collection-item:hover {\n border-color: #2196f3;\n background: #fafafa;\n}\n\n.collection-item.selected {\n border-color: #2196f3;\n background: #e8f4f8;\n}\n\n.collection-icon {\n font-size: 24px;\n color: #2196f3;\n}\n\n.collection-info {\n flex: 1;\n}\n\n.collection-name {\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n}\n\n.collection-description {\n font-size: 13px;\n color: #666;\n}\n\n.collection-artifacts {\n overflow-y: auto;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px;\n background: #f8f9fa;\n border-radius: 4px;\n font-weight: 600;\n color: #555;\n margin-bottom: 10px;\n}\n\n/* Version Panel */\n.version-panel {\n width: 350px;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-left: 1px solid #ddd;\n flex-shrink: 0;\n background: #fafafa;\n}\n\n.version-content {\n flex: 1;\n overflow-y: auto;\n padding: 15px;\n}\n\n.version-list {\n margin-bottom: 20px;\n}\n\n.version-item {\n padding: 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n margin-bottom: 10px;\n cursor: pointer;\n transition: all 0.2s;\n background: white;\n}\n\n.version-item:hover {\n border-color: #2196f3;\n background: #fafafa;\n}\n\n.version-item.selected {\n border-color: #2196f3;\n background: #e8f4f8;\n}\n\n.version-number {\n font-weight: 600;\n color: #333;\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.version-number i {\n font-size: 14px;\n color: #2196f3;\n}\n\n.version-meta {\n font-size: 12px;\n color: #666;\n}\n\n.version-comments {\n margin-top: 4px;\n font-style: italic;\n color: #888;\n}\n\n/* Preview Section */\n.preview-section {\n border-top: 2px solid #ddd;\n padding-top: 15px;\n margin-top: 15px;\n}\n\n.preview-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #555;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid #eee;\n}\n\n.preview-content {\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n padding: 12px;\n}\n\n.preview-item {\n margin-bottom: 8px;\n font-size: 13px;\n}\n\n.preview-item strong {\n color: #555;\n font-weight: 600;\n margin-right: 6px;\n}\n\n.preview-error {\n background: #fff3cd;\n border: 1px solid #ffeaa7;\n border-radius: 4px;\n padding: 10px;\n color: #856404;\n font-size: 13px;\n}\n\n.preview-error i {\n margin-right: 6px;\n}\n\n/* Loading & Empty States */\n.loading-state,\n.empty-state {\n text-align: center;\n padding: 40px;\n color: #666;\n}\n\n.loading-state i,\n.empty-state i {\n font-size: 36px;\n margin-bottom: 15px;\n color: #999;\n}\n\n.loading-state i.fa-spin {\n color: #2196f3;\n}\n\n.empty-state p {\n margin: 5px 0;\n font-size: 14px;\n}\n\n/* JSON Preview Section */\n.preview-json-section {\n margin-top: 15px;\n border-top: 1px solid #e0e0e0;\n padding-top: 10px;\n}\n\n.preview-json-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n cursor: pointer;\n background: #f8f9fa;\n border-radius: 4px;\n transition: background 0.2s;\n}\n\n.preview-json-header:hover {\n background: #e9ecef;\n}\n\n.preview-json-header i {\n font-size: 12px;\n color: #666;\n}\n\n.preview-json-header strong {\n font-size: 13px;\n color: #333;\n}\n\n.preview-json-content {\n margin-top: 10px;\n border: 1px solid #dee2e6;\n border-radius: 4px;\n overflow: hidden;\n}\n"] }]
|
|
835
|
+
}], () => [{ type: i1.DialogRef }], null); })();
|
|
836
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactLoadDialogComponent, { className: "ArtifactLoadDialogComponent", filePath: "src/ComponentStudio/components/artifact-load-dialog.component.ts", lineNumber: 28 }); })();
|
|
837
|
+
//# sourceMappingURL=artifact-load-dialog.component.js.map
|