@memberjunction/ng-explorer-core 2.10.0 → 2.12.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/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +4 -2
- package/dist/app-routing.module.js.map +1 -1
- package/dist/lib/list-view/list-view.component.d.ts +3 -1
- package/dist/lib/list-view/list-view.component.d.ts.map +1 -1
- package/dist/lib/list-view/list-view.component.js +108 -45
- package/dist/lib/list-view/list-view.component.js.map +1 -1
- package/dist/lib/navigation/navigation.component.d.ts.map +1 -1
- package/dist/lib/navigation/navigation.component.js +14 -2
- package/dist/lib/navigation/navigation.component.js.map +1 -1
- package/dist/lib/resource-browser/resource-browser.component.d.ts +6 -2
- package/dist/lib/resource-browser/resource-browser.component.d.ts.map +1 -1
- package/dist/lib/resource-browser/resource-browser.component.js +23 -2
- package/dist/lib/resource-browser/resource-browser.component.js.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts +10 -0
- package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/list-detail-resource.component.js +63 -0
- package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -0
- package/dist/lib/resource-wrappers/resource-wrappers-loader.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/resource-wrappers-loader.js +2 -0
- package/dist/lib/resource-wrappers/resource-wrappers-loader.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts +28 -11
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +337 -165
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/module.d.ts +40 -38
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +17 -10
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +23 -22
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { Component } from '@angular/core';
|
|
10
|
+
import { Component, Input } from '@angular/core';
|
|
11
11
|
import { EntityFieldTSType, LogError, LogStatus, Metadata, RunView } from '@memberjunction/core';
|
|
12
12
|
import { Subject, debounceTime } from 'rxjs';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
@@ -19,17 +19,18 @@ import * as i5 from "@progress/kendo-angular-dialog";
|
|
|
19
19
|
import * as i6 from "@progress/kendo-angular-indicators";
|
|
20
20
|
import * as i7 from "@progress/kendo-angular-buttons";
|
|
21
21
|
import * as i8 from "@progress/kendo-angular-inputs";
|
|
22
|
+
import * as i9 from "@progress/kendo-angular-progressbar";
|
|
22
23
|
const _c0 = () => ({ "text-align": "center", "vertical-align": "center" });
|
|
23
24
|
const _c1 = () => ({ "font-weight": "bold", "background-color": "white" });
|
|
24
25
|
const _c2 = a0 => ({ "list-selected": a0 });
|
|
25
26
|
function SingleListDetailComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
i0.ɵɵelement(0, "span",
|
|
27
|
+
i0.ɵɵelement(0, "span", 13);
|
|
27
28
|
} }
|
|
28
29
|
function SingleListDetailComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
29
30
|
i0.ɵɵelement(0, "kendo-loader", 9);
|
|
30
31
|
} }
|
|
31
32
|
function SingleListDetailComponent_Conditional_14_kendo_grid_checkbox_column_1_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
i0.ɵɵelement(0, "kendo-grid-checkbox-column",
|
|
33
|
+
i0.ɵɵelement(0, "kendo-grid-checkbox-column", 16);
|
|
33
34
|
} if (rf & 2) {
|
|
34
35
|
i0.ɵɵstyleMap(i0.ɵɵpureFunction0(4, _c0));
|
|
35
36
|
i0.ɵɵproperty("width", 50)("headerStyle", i0.ɵɵpureFunction0(5, _c1));
|
|
@@ -39,7 +40,7 @@ function SingleListDetailComponent_Conditional_14_kendo_grid_column_2_1_ng_templ
|
|
|
39
40
|
i0.ɵɵpipe(1, "number");
|
|
40
41
|
i0.ɵɵpipe(2, "number");
|
|
41
42
|
i0.ɵɵelement(3, "br");
|
|
42
|
-
i0.ɵɵelementStart(4, "span",
|
|
43
|
+
i0.ɵɵelementStart(4, "span", 20);
|
|
43
44
|
i0.ɵɵtext(5);
|
|
44
45
|
i0.ɵɵpipe(6, "number");
|
|
45
46
|
i0.ɵɵelementEnd();
|
|
@@ -50,11 +51,11 @@ function SingleListDetailComponent_Conditional_14_kendo_grid_column_2_1_ng_templ
|
|
|
50
51
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 7, ctx_r2.viewExecutionTime, "1.2-2"), " seconds");
|
|
51
52
|
} }
|
|
52
53
|
function SingleListDetailComponent_Conditional_14_kendo_grid_column_2_1_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
-
i0.ɵɵtemplate(0, SingleListDetailComponent_Conditional_14_kendo_grid_column_2_1_ng_template_0_Template, 7, 10, "ng-template",
|
|
54
|
+
i0.ɵɵtemplate(0, SingleListDetailComponent_Conditional_14_kendo_grid_column_2_1_ng_template_0_Template, 7, 10, "ng-template", 19);
|
|
54
55
|
} }
|
|
55
56
|
function SingleListDetailComponent_Conditional_14_kendo_grid_column_2_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
-
i0.ɵɵelementStart(0, "kendo-grid-column",
|
|
57
|
-
i0.ɵɵtemplate(1, SingleListDetailComponent_Conditional_14_kendo_grid_column_2_1_Template, 1, 0, null,
|
|
57
|
+
i0.ɵɵelementStart(0, "kendo-grid-column", 17);
|
|
58
|
+
i0.ɵɵtemplate(1, SingleListDetailComponent_Conditional_14_kendo_grid_column_2_1_Template, 1, 0, null, 18);
|
|
58
59
|
i0.ɵɵelementEnd();
|
|
59
60
|
} if (rf & 2) {
|
|
60
61
|
const item_r4 = ctx.$implicit;
|
|
@@ -66,7 +67,7 @@ function SingleListDetailComponent_Conditional_14_kendo_grid_column_2_Template(r
|
|
|
66
67
|
} }
|
|
67
68
|
function SingleListDetailComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
68
69
|
i0.ɵɵelementStart(0, "kendo-grid", 10);
|
|
69
|
-
i0.ɵɵtemplate(1, SingleListDetailComponent_Conditional_14_kendo_grid_checkbox_column_1_Template, 1, 6, "kendo-grid-checkbox-column",
|
|
70
|
+
i0.ɵɵtemplate(1, SingleListDetailComponent_Conditional_14_kendo_grid_checkbox_column_1_Template, 1, 6, "kendo-grid-checkbox-column", 14)(2, SingleListDetailComponent_Conditional_14_kendo_grid_column_2_Template, 2, 10, "kendo-grid-column", 15);
|
|
70
71
|
i0.ɵɵelementEnd();
|
|
71
72
|
} if (rf & 2) {
|
|
72
73
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -76,95 +77,165 @@ function SingleListDetailComponent_Conditional_14_Template(rf, ctx) { if (rf & 1
|
|
|
76
77
|
i0.ɵɵadvance();
|
|
77
78
|
i0.ɵɵproperty("ngForOf", ctx_r2.visibleColumns);
|
|
78
79
|
} }
|
|
79
|
-
function
|
|
80
|
-
i0.ɵɵelement(0, "kendo-loader", 9);
|
|
80
|
+
function SingleListDetailComponent_kendo_dialog_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵelement(0, "kendo-loader", 9)(1, "kendo-progressbar", 25);
|
|
82
|
+
} if (rf & 2) {
|
|
83
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
84
|
+
i0.ɵɵadvance();
|
|
85
|
+
i0.ɵɵproperty("min", 0)("max", ctx_r2.recordsToSave)("value", ctx_r2.recordsSaved)("indeterminate", ctx_r2.fetchingRecordsToSave);
|
|
81
86
|
} }
|
|
82
|
-
function
|
|
87
|
+
function SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
83
88
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
84
|
-
i0.ɵɵelementStart(0, "button",
|
|
85
|
-
i0.ɵɵlistener("click", function
|
|
86
|
-
i0.ɵɵelement(1, "span",
|
|
89
|
+
i0.ɵɵelementStart(0, "button", 33);
|
|
90
|
+
i0.ɵɵlistener("click", function SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const userView_r7 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.removeViewFromSelectedList(userView_r7)); });
|
|
91
|
+
i0.ɵɵelement(1, "span", 34);
|
|
87
92
|
i0.ɵɵtext(2, " Remove ");
|
|
88
93
|
i0.ɵɵelementEnd();
|
|
89
94
|
} }
|
|
90
|
-
function
|
|
95
|
+
function SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
91
96
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
92
|
-
i0.ɵɵelementStart(0, "button",
|
|
93
|
-
i0.ɵɵlistener("click", function
|
|
94
|
-
i0.ɵɵelementStart(1, "div",
|
|
97
|
+
i0.ɵɵelementStart(0, "button", 35);
|
|
98
|
+
i0.ɵɵlistener("click", function SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const userView_r7 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.addViewToSelectedList(userView_r7)); });
|
|
99
|
+
i0.ɵɵelementStart(1, "div", 36);
|
|
95
100
|
i0.ɵɵelement(2, "span", 4);
|
|
96
101
|
i0.ɵɵtext(3, " Add ");
|
|
97
102
|
i0.ɵɵelementEnd()();
|
|
98
103
|
} }
|
|
99
|
-
function
|
|
100
|
-
i0.ɵɵelementStart(0, "div",
|
|
101
|
-
i0.ɵɵtext(
|
|
104
|
+
function SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "div", 29)(2, "div", 30);
|
|
106
|
+
i0.ɵɵtext(3);
|
|
102
107
|
i0.ɵɵelementEnd();
|
|
103
|
-
i0.ɵɵtemplate(
|
|
108
|
+
i0.ɵɵtemplate(4, SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Conditional_4_Template, 3, 0, "button", 31)(5, SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Conditional_5_Template, 4, 0, "button", 32);
|
|
109
|
+
i0.ɵɵelementEnd();
|
|
110
|
+
i0.ɵɵelement(6, "hr");
|
|
104
111
|
i0.ɵɵelementEnd();
|
|
105
|
-
i0.ɵɵelement(5, "hr");
|
|
106
112
|
} if (rf & 2) {
|
|
107
113
|
const userView_r7 = ctx.$implicit;
|
|
108
114
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
109
|
-
i0.ɵɵadvance();
|
|
115
|
+
i0.ɵɵadvance(2);
|
|
110
116
|
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c2, ctx_r2.userViewsToAdd.includes(userView_r7)));
|
|
111
117
|
i0.ɵɵadvance();
|
|
112
118
|
i0.ɵɵtextInterpolate1(" ", userView_r7.Name, " ");
|
|
113
119
|
i0.ɵɵadvance();
|
|
114
|
-
i0.ɵɵconditional(ctx_r2.userViewsToAdd.includes(userView_r7) ?
|
|
120
|
+
i0.ɵɵconditional(ctx_r2.userViewsToAdd.includes(userView_r7) ? 4 : 5);
|
|
115
121
|
} }
|
|
116
|
-
function
|
|
117
|
-
i0.ɵɵ
|
|
122
|
+
function SingleListDetailComponent_kendo_dialog_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
124
|
+
i0.ɵɵelement(1, "kendo-textbox", 27);
|
|
125
|
+
i0.ɵɵelementEnd();
|
|
126
|
+
i0.ɵɵelement(2, "hr");
|
|
127
|
+
i0.ɵɵrepeaterCreate(3, SingleListDetailComponent_kendo_dialog_15_Conditional_2_For_4_Template, 7, 5, "div", 28, i0.ɵɵrepeaterTrackByIdentity);
|
|
118
128
|
} if (rf & 2) {
|
|
119
129
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
130
|
+
i0.ɵɵadvance();
|
|
131
|
+
i0.ɵɵproperty("clearButton", true);
|
|
132
|
+
i0.ɵɵadvance(2);
|
|
120
133
|
i0.ɵɵrepeater(ctx_r2.userViews);
|
|
121
134
|
} }
|
|
122
135
|
function SingleListDetailComponent_kendo_dialog_15_Template(rf, ctx) { if (rf & 1) {
|
|
123
136
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
124
|
-
i0.ɵɵelementStart(0, "kendo-dialog",
|
|
125
|
-
i0.ɵɵlistener("close", function SingleListDetailComponent_kendo_dialog_15_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.
|
|
126
|
-
i0.ɵɵ
|
|
127
|
-
i0.ɵɵ
|
|
128
|
-
i0.ɵɵ
|
|
129
|
-
i0.ɵɵ
|
|
130
|
-
i0.ɵɵelementStart(4, "div", 23);
|
|
131
|
-
i0.ɵɵtemplate(5, SingleListDetailComponent_kendo_dialog_15_Conditional_5_Template, 1, 0, "kendo-loader", 9)(6, SingleListDetailComponent_kendo_dialog_15_Conditional_6_Template, 2, 0);
|
|
132
|
-
i0.ɵɵelementEnd();
|
|
133
|
-
i0.ɵɵelementStart(7, "kendo-dialog-actions", 24)(8, "button", 25);
|
|
134
|
-
i0.ɵɵlistener("click", function SingleListDetailComponent_kendo_dialog_15_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.addTolist()); });
|
|
135
|
-
i0.ɵɵtext(9, " Done ");
|
|
137
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 21);
|
|
138
|
+
i0.ɵɵlistener("close", function SingleListDetailComponent_kendo_dialog_15_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleAddFromViewDialog(false)); });
|
|
139
|
+
i0.ɵɵtemplate(1, SingleListDetailComponent_kendo_dialog_15_Conditional_1_Template, 2, 4)(2, SingleListDetailComponent_kendo_dialog_15_Conditional_2_Template, 5, 1);
|
|
140
|
+
i0.ɵɵelementStart(3, "kendo-dialog-actions", 22)(4, "button", 23);
|
|
141
|
+
i0.ɵɵlistener("click", function SingleListDetailComponent_kendo_dialog_15_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.addTolist()); });
|
|
142
|
+
i0.ɵɵtext(5, " Done ");
|
|
136
143
|
i0.ɵɵelementEnd();
|
|
137
|
-
i0.ɵɵelementStart(
|
|
138
|
-
i0.ɵɵlistener("click", function
|
|
139
|
-
i0.ɵɵtext(
|
|
144
|
+
i0.ɵɵelementStart(6, "button", 24);
|
|
145
|
+
i0.ɵɵlistener("click", function SingleListDetailComponent_kendo_dialog_15_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleAddFromViewDialog(false)); });
|
|
146
|
+
i0.ɵɵtext(7, " Cancel ");
|
|
140
147
|
i0.ɵɵelementEnd()()();
|
|
141
148
|
} if (rf & 2) {
|
|
142
149
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
143
150
|
i0.ɵɵproperty("minWidth", 250)("width", 650)("height", 550);
|
|
144
|
-
i0.ɵɵadvance(
|
|
145
|
-
i0.ɵɵ
|
|
146
|
-
i0.ɵɵadvance(3);
|
|
147
|
-
i0.ɵɵconditional(ctx_r2.showAddLoader ? 5 : 6);
|
|
151
|
+
i0.ɵɵadvance();
|
|
152
|
+
i0.ɵɵconditional(ctx_r2.showAddLoader ? 1 : 2);
|
|
148
153
|
i0.ɵɵadvance(3);
|
|
149
154
|
i0.ɵɵproperty("disabled", ctx_r2.showAddLoader);
|
|
150
155
|
i0.ɵɵadvance(2);
|
|
151
156
|
i0.ɵɵproperty("disabled", ctx_r2.showAddLoader);
|
|
152
157
|
} }
|
|
158
|
+
function SingleListDetailComponent_kendo_dialog_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
159
|
+
i0.ɵɵelement(0, "kendo-loader", 9)(1, "kendo-progressbar", 25);
|
|
160
|
+
} if (rf & 2) {
|
|
161
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
162
|
+
i0.ɵɵadvance();
|
|
163
|
+
i0.ɵɵproperty("min", 0)("max", ctx_r2.recordsToSave)("value", ctx_r2.recordsSaved)("indeterminate", ctx_r2.fetchingRecordsToSave);
|
|
164
|
+
} }
|
|
165
|
+
function SingleListDetailComponent_kendo_dialog_16_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
+
i0.ɵɵelement(0, "kendo-loader", 9);
|
|
167
|
+
} }
|
|
168
|
+
function SingleListDetailComponent_kendo_dialog_16_Conditional_2_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
170
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "div", 29)(2, "div", 39);
|
|
171
|
+
i0.ɵɵtext(3);
|
|
172
|
+
i0.ɵɵelementEnd();
|
|
173
|
+
i0.ɵɵelementStart(4, "button", 35);
|
|
174
|
+
i0.ɵɵlistener("click", function SingleListDetailComponent_kendo_dialog_16_Conditional_2_Conditional_4_For_1_Template_button_click_4_listener() { const listRecord_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.addListRecord(listRecord_r12)); });
|
|
175
|
+
i0.ɵɵelementStart(5, "div", 36);
|
|
176
|
+
i0.ɵɵelement(6, "span", 4);
|
|
177
|
+
i0.ɵɵtext(7, " Add ");
|
|
178
|
+
i0.ɵɵelementEnd()()();
|
|
179
|
+
i0.ɵɵelement(8, "hr");
|
|
180
|
+
i0.ɵɵelementEnd();
|
|
181
|
+
} if (rf & 2) {
|
|
182
|
+
const listRecord_r12 = ctx.$implicit;
|
|
183
|
+
i0.ɵɵadvance(3);
|
|
184
|
+
i0.ɵɵtextInterpolate1(" ", listRecord_r12.Name, " ");
|
|
185
|
+
} }
|
|
186
|
+
function SingleListDetailComponent_kendo_dialog_16_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
187
|
+
i0.ɵɵrepeaterCreate(0, SingleListDetailComponent_kendo_dialog_16_Conditional_2_Conditional_4_For_1_Template, 9, 1, "div", 28, i0.ɵɵrepeaterTrackByIdentity);
|
|
188
|
+
} if (rf & 2) {
|
|
189
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
190
|
+
i0.ɵɵrepeater(ctx_r2.listRecords);
|
|
191
|
+
} }
|
|
192
|
+
function SingleListDetailComponent_kendo_dialog_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
193
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
194
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "kendo-textbox", 38);
|
|
195
|
+
i0.ɵɵlistener("valueChange", function SingleListDetailComponent_kendo_dialog_16_Conditional_2_Template_kendo_textbox_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onListRecordDialogValueChange($event)); });
|
|
196
|
+
i0.ɵɵelementEnd()();
|
|
197
|
+
i0.ɵɵelement(2, "hr");
|
|
198
|
+
i0.ɵɵtemplate(3, SingleListDetailComponent_kendo_dialog_16_Conditional_2_Conditional_3_Template, 1, 0, "kendo-loader", 9)(4, SingleListDetailComponent_kendo_dialog_16_Conditional_2_Conditional_4_Template, 2, 0);
|
|
199
|
+
} if (rf & 2) {
|
|
200
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
201
|
+
i0.ɵɵadvance();
|
|
202
|
+
i0.ɵɵproperty("placeholder", "Search " + (ctx_r2.listRecord ? ctx_r2.listRecord.Entity : "Records") + "...")("clearButton", true);
|
|
203
|
+
i0.ɵɵadvance(2);
|
|
204
|
+
i0.ɵɵconditional(ctx_r2.fetchingListRecords ? 3 : 4);
|
|
205
|
+
} }
|
|
206
|
+
function SingleListDetailComponent_kendo_dialog_16_Template(rf, ctx) { if (rf & 1) {
|
|
207
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
208
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 37);
|
|
209
|
+
i0.ɵɵlistener("close", function SingleListDetailComponent_kendo_dialog_16_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleAddRecordsDialog(false)); });
|
|
210
|
+
i0.ɵɵtemplate(1, SingleListDetailComponent_kendo_dialog_16_Conditional_1_Template, 2, 4)(2, SingleListDetailComponent_kendo_dialog_16_Conditional_2_Template, 5, 3);
|
|
211
|
+
i0.ɵɵelementStart(3, "kendo-dialog-actions", 22)(4, "button", 24);
|
|
212
|
+
i0.ɵɵlistener("click", function SingleListDetailComponent_kendo_dialog_16_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleAddRecordsDialog(false)); });
|
|
213
|
+
i0.ɵɵtext(5, " Close ");
|
|
214
|
+
i0.ɵɵelementEnd()()();
|
|
215
|
+
} if (rf & 2) {
|
|
216
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
217
|
+
i0.ɵɵproperty("title", "Select " + (ctx_r2.listRecord ? ctx_r2.listRecord.Entity : "Records") + " to Add to List")("minWidth", 250)("width", 650)("height", 550);
|
|
218
|
+
i0.ɵɵadvance();
|
|
219
|
+
i0.ɵɵconditional(ctx_r2.showDialogLoader ? 1 : 2);
|
|
220
|
+
i0.ɵɵadvance(3);
|
|
221
|
+
i0.ɵɵproperty("disabled", ctx_r2.showDialogLoader);
|
|
222
|
+
} }
|
|
153
223
|
export class SingleListDetailComponent {
|
|
154
224
|
constructor(router, route, sharedService) {
|
|
155
225
|
this.router = router;
|
|
156
226
|
this.route = route;
|
|
157
227
|
this.sharedService = sharedService;
|
|
228
|
+
this.ListID = "";
|
|
158
229
|
this.listRecord = null;
|
|
159
|
-
this.
|
|
230
|
+
this.sourceEntityInfo = null;
|
|
160
231
|
this.showLoader = false;
|
|
161
232
|
this.sourceGridData = [];
|
|
162
233
|
this.filteredGridData = [];
|
|
163
|
-
this.listName = "";
|
|
164
234
|
this.showAddDialog = false;
|
|
165
235
|
this.showAddLoader = false;
|
|
236
|
+
this.showDialogLoader = false;
|
|
166
237
|
this.userViews = null;
|
|
167
|
-
this.
|
|
238
|
+
this.filterDebounceTime = 250;
|
|
168
239
|
this.filterItemsSubject = new Subject();
|
|
169
240
|
this.filter = '';
|
|
170
241
|
this.userViewsToAdd = [];
|
|
@@ -178,103 +249,99 @@ export class SingleListDetailComponent {
|
|
|
178
249
|
this.visibleColumns = [];
|
|
179
250
|
this.totalRowCount = 0;
|
|
180
251
|
this.viewExecutionTime = 0;
|
|
252
|
+
this.recordsToSave = 0;
|
|
253
|
+
this.recordsSaved = 0;
|
|
254
|
+
this.fetchingRecordsToSave = false;
|
|
255
|
+
this.showAddSingleRecordsDialog = false;
|
|
256
|
+
this.fetchingListRecords = false;
|
|
257
|
+
this.listRecords = [];
|
|
258
|
+
this.selectedListRecords = [];
|
|
259
|
+
this.searchFilter = "";
|
|
260
|
+
this.filterListrecordsSubject = new Subject();
|
|
261
|
+
this.addOptions = [
|
|
262
|
+
{
|
|
263
|
+
Text: 'Add From View',
|
|
264
|
+
Description: 'Add all records of a view to this list',
|
|
265
|
+
Icon: 'folder',
|
|
266
|
+
Action: () => {
|
|
267
|
+
this.toggleAddFromViewDialog(true);
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
Text: 'Add a Record',
|
|
272
|
+
Description: 'Add a specific record to the list',
|
|
273
|
+
Icon: 'folder',
|
|
274
|
+
Action: () => {
|
|
275
|
+
this.toggleAddRecordsDialog(true);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
];
|
|
181
279
|
this.filterItemsSubject
|
|
182
|
-
.pipe(debounceTime(this.
|
|
280
|
+
.pipe(debounceTime(this.filterDebounceTime))
|
|
183
281
|
.subscribe(() => this.filterItems(this.filter));
|
|
282
|
+
this.filterListrecordsSubject
|
|
283
|
+
.pipe(debounceTime(this.filterDebounceTime))
|
|
284
|
+
.subscribe(() => this.loadListRecords());
|
|
184
285
|
}
|
|
185
286
|
ngOnInit() {
|
|
186
287
|
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
yield this.loadList(listID);
|
|
191
|
-
}
|
|
192
|
-
}));
|
|
288
|
+
if (this.ListID) {
|
|
289
|
+
yield this.loadList(this.ListID);
|
|
290
|
+
}
|
|
193
291
|
});
|
|
194
292
|
}
|
|
195
293
|
loadList(listID) {
|
|
196
294
|
return __awaiter(this, void 0, void 0, function* () {
|
|
295
|
+
if (!listID) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
197
298
|
const startTime = new Date().getTime();
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
ResultType: 'entity_object',
|
|
206
|
-
ExtraFilter: `ID = '${listID}'`
|
|
207
|
-
}, md.CurrentUser);
|
|
208
|
-
if (!listRunViewResult.Success || listRunViewResult.Results.length === 0) {
|
|
209
|
-
LogError("Error loading list with ID " + listID);
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
const listEntity = listRunViewResult.Results[0];
|
|
213
|
-
const entity = md.EntityFromEntityID(listEntity.EntityID);
|
|
214
|
-
if (!entity) {
|
|
215
|
-
LogError("Error fetching EntityInfo with ID " + listEntity.EntityID);
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
for (const field of entity.Fields) {
|
|
219
|
-
if (!field.DefaultInView) {
|
|
220
|
-
continue;
|
|
221
|
-
}
|
|
222
|
-
let column = {
|
|
223
|
-
ID: field.ID,
|
|
224
|
-
Name: field.CodeName,
|
|
225
|
-
DisplayName: field.DisplayName,
|
|
226
|
-
EntityField: field,
|
|
227
|
-
hidden: false,
|
|
228
|
-
orderIndex: field.Sequence,
|
|
229
|
-
width: field.DefaultColumnWidth || 100
|
|
230
|
-
};
|
|
231
|
-
this.viewColumns.push(column);
|
|
232
|
-
}
|
|
233
|
-
/*make sure there is an entity field linked*/
|
|
234
|
-
this.visibleColumns = this.viewColumns.filter(x => x.hidden === false && x.EntityField).sort((a, b) => {
|
|
235
|
-
const aOrder = a.orderIndex != null ? a.orderIndex : 9999;
|
|
236
|
-
const bOrder = b.orderIndex != null ? b.orderIndex : 9999;
|
|
237
|
-
return aOrder - bOrder;
|
|
238
|
-
});
|
|
239
|
-
this.listName = listEntity.Name;
|
|
240
|
-
this.listRecord = listEntity;
|
|
241
|
-
const runViewResult = yield rv.RunView({
|
|
242
|
-
EntityName: 'List Details',
|
|
243
|
-
ResultType: 'entity_object',
|
|
244
|
-
ExtraFilter: `ListID = '${listID}'`,
|
|
245
|
-
MaxRows: this.pageSize,
|
|
246
|
-
IgnoreMaxRows: false,
|
|
247
|
-
StartRow: Math.max(0, (this.page - 1) * this.pageSize)
|
|
248
|
-
}, md.CurrentUser);
|
|
249
|
-
if (!runViewResult.Success) {
|
|
250
|
-
LogError("Error loading list details for list with ID " + listID);
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
this.totalRowCount = runViewResult.TotalRowCount;
|
|
254
|
-
const listDetailRecords = runViewResult.Results;
|
|
255
|
-
LogStatus(`Found ${listDetailRecords.length} records in list ${listID}`);
|
|
256
|
-
if (listDetailRecords.length > 0) {
|
|
257
|
-
const recordIDs = listDetailRecords.map(ld => `'${ld.RecordID}'`).join(',');
|
|
258
|
-
let extraFilter = `ID IN (${recordIDs})`;
|
|
259
|
-
const rvResult = yield rv.RunView({
|
|
260
|
-
EntityName: entity.Name,
|
|
261
|
-
ExtraFilter: extraFilter
|
|
262
|
-
}, md.CurrentUser);
|
|
263
|
-
if (!rvResult.Success) {
|
|
264
|
-
LogError(`Error loading ${entity.Name} records with extra filter ${extraFilter}`);
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
LogStatus(`Found ${rvResult.Results.length} records in entity ${entity.Name}`);
|
|
268
|
-
this.sourceGridData = this.filteredGridData = rvResult.Results;
|
|
269
|
-
this.viewExecutionTime = (new Date().getTime() - startTime) / 1000; // in seconds
|
|
270
|
-
}
|
|
299
|
+
this.showLoader = true;
|
|
300
|
+
const md = new Metadata();
|
|
301
|
+
const rv = new RunView();
|
|
302
|
+
this.listRecord = yield md.GetEntityObject("Lists");
|
|
303
|
+
const loadResult = yield this.listRecord.Load(listID);
|
|
304
|
+
if (!loadResult) {
|
|
305
|
+
LogError("Error loading list with ID " + listID, undefined, this.listRecord.LatestResult);
|
|
271
306
|
this.showLoader = false;
|
|
307
|
+
return;
|
|
272
308
|
}
|
|
309
|
+
this.sourceEntityInfo = md.EntityByID(this.listRecord.EntityID);
|
|
310
|
+
this.viewColumns = this.sourceEntityInfo.Fields.filter((field) => field.DefaultInView).map((field) => {
|
|
311
|
+
return {
|
|
312
|
+
ID: field.ID,
|
|
313
|
+
Name: field.CodeName,
|
|
314
|
+
DisplayName: field.DisplayName,
|
|
315
|
+
EntityField: field,
|
|
316
|
+
hidden: false,
|
|
317
|
+
orderIndex: field.Sequence,
|
|
318
|
+
width: field.DefaultColumnWidth || 100,
|
|
319
|
+
};
|
|
320
|
+
});
|
|
321
|
+
/*make sure there is an entity field linked*/
|
|
322
|
+
this.visibleColumns = this.viewColumns.filter(x => x.hidden === false && x.EntityField).sort((a, b) => {
|
|
323
|
+
const aOrder = a.orderIndex != null ? a.orderIndex : 9999;
|
|
324
|
+
const bOrder = b.orderIndex != null ? b.orderIndex : 9999;
|
|
325
|
+
return aOrder - bOrder;
|
|
326
|
+
});
|
|
327
|
+
const primaryKeyName = this.sourceEntityInfo.FirstPrimaryKey.Name;
|
|
328
|
+
const rvResult = yield rv.RunView({
|
|
329
|
+
EntityName: this.listRecord.Entity,
|
|
330
|
+
ExtraFilter: `${primaryKeyName} IN (SELECT [RecordID] FROM ${md.ConfigData.MJCoreSchemaName}.[vwListDetails] WHERE ListID = '${this.listRecord.ID}')`
|
|
331
|
+
}, md.CurrentUser);
|
|
332
|
+
if (!rvResult.Success) {
|
|
333
|
+
LogError(`Error loading ${this.listRecord.Entity} records: ${rvResult.ErrorMessage}`);
|
|
334
|
+
this.showLoader = false;
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
this.sourceGridData = this.filteredGridData = rvResult.Results;
|
|
338
|
+
this.viewExecutionTime = (new Date().getTime() - startTime) / 1000; // in seconds
|
|
339
|
+
this.showLoader = false;
|
|
273
340
|
});
|
|
274
341
|
}
|
|
275
342
|
pageChange(event) {
|
|
276
343
|
this.page = event.skip;
|
|
277
|
-
this.loadList(this.
|
|
344
|
+
this.loadList(this.ListID);
|
|
278
345
|
}
|
|
279
346
|
GetColumnTitle(col) {
|
|
280
347
|
if (col.DisplayName) {
|
|
@@ -323,7 +390,7 @@ export class SingleListDetailComponent {
|
|
|
323
390
|
return { 'text-align': 'left', 'vertical-align': 'top' };
|
|
324
391
|
}
|
|
325
392
|
}
|
|
326
|
-
|
|
393
|
+
toggleAddFromViewDialog(show) {
|
|
327
394
|
return __awaiter(this, void 0, void 0, function* () {
|
|
328
395
|
this.showAddDialog = show;
|
|
329
396
|
if (show && !this.userViews) {
|
|
@@ -355,15 +422,18 @@ export class SingleListDetailComponent {
|
|
|
355
422
|
}
|
|
356
423
|
addTolist() {
|
|
357
424
|
return __awaiter(this, void 0, void 0, function* () {
|
|
358
|
-
if (!this.listRecord
|
|
425
|
+
if (!this.listRecord) {
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
if (!this.listRecord.Entity) {
|
|
359
429
|
return;
|
|
360
430
|
}
|
|
361
431
|
this.showAddLoader = true;
|
|
432
|
+
this.fetchingRecordsToSave = true;
|
|
362
433
|
const rv = new RunView();
|
|
363
434
|
const md = new Metadata();
|
|
364
435
|
const hashMap = new Map();
|
|
365
|
-
|
|
366
|
-
const userView = this.userViewsToAdd[0];
|
|
436
|
+
yield Promise.all(this.userViewsToAdd.map((userView) => __awaiter(this, void 0, void 0, function* () {
|
|
367
437
|
const runViewResult = yield rv.RunView({
|
|
368
438
|
EntityName: "User Views",
|
|
369
439
|
ViewEntity: userView,
|
|
@@ -377,43 +447,60 @@ export class SingleListDetailComponent {
|
|
|
377
447
|
for (const record of records) {
|
|
378
448
|
hashMap.set(record.ID, record);
|
|
379
449
|
}
|
|
380
|
-
}
|
|
450
|
+
})));
|
|
451
|
+
this.recordsToSave = hashMap.size;
|
|
452
|
+
this.recordsSaved = 0;
|
|
453
|
+
this.fetchingRecordsToSave = false;
|
|
381
454
|
LogStatus(`Adding ${hashMap.size} records to list ${this.listRecord.ID}`);
|
|
382
455
|
//now add the records to the list
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
456
|
+
const recordIDs = [...hashMap.keys()];
|
|
457
|
+
const chunkSize = 100;
|
|
458
|
+
for (let i = 0; i < recordIDs.length; i += chunkSize) {
|
|
459
|
+
const chunk = recordIDs.slice(i, i + chunkSize);
|
|
460
|
+
yield Promise.all(chunk.map((recordID) => __awaiter(this, void 0, void 0, function* () {
|
|
461
|
+
const listDetail = yield md.GetEntityObject("List Details");
|
|
462
|
+
listDetail.ListID = this.listRecord.ID;
|
|
463
|
+
listDetail.RecordID = recordID.toString();
|
|
464
|
+
listDetail.ContextCurrentUser = md.CurrentUser;
|
|
465
|
+
const saveResult = yield listDetail.Save();
|
|
466
|
+
if (!saveResult) {
|
|
391
467
|
LogError(`Error adding record ${recordID} to list ${this.listRecord.ID}`, undefined, listDetail.LatestResult);
|
|
392
468
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
this.showAddLoader = false;
|
|
396
|
-
this.toggleAddDialog(false);
|
|
397
|
-
this.loadList(this.listRecord.ID);
|
|
398
|
-
}
|
|
399
|
-
});
|
|
469
|
+
this.recordsSaved++;
|
|
470
|
+
})));
|
|
400
471
|
}
|
|
472
|
+
this.showAddLoader = false;
|
|
473
|
+
this.toggleAddFromViewDialog(false);
|
|
474
|
+
this.loadList(this.listRecord.ID);
|
|
401
475
|
});
|
|
402
476
|
}
|
|
403
|
-
|
|
477
|
+
onListSearchValueChange(Value) {
|
|
404
478
|
this.filter = Value;
|
|
405
479
|
this.filterItemsSubject.next(true);
|
|
406
480
|
}
|
|
481
|
+
onListRecordDialogValueChange(Value) {
|
|
482
|
+
this.searchFilter = Value;
|
|
483
|
+
this.filterListrecordsSubject.next(true);
|
|
484
|
+
}
|
|
407
485
|
filterItems(filter) {
|
|
408
|
-
if (!filter) {
|
|
486
|
+
if (!filter || filter === "") {
|
|
487
|
+
this.filteredGridData = this.sourceGridData;
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
if (!this.listRecord) {
|
|
409
491
|
return;
|
|
410
492
|
}
|
|
411
493
|
if (!this.sourceGridData) {
|
|
412
494
|
this.sourceGridData = [];
|
|
413
495
|
}
|
|
414
496
|
const toLower = filter.toLowerCase();
|
|
497
|
+
const nameField = this.listRecord.EntityInfo.Fields.find((field) => field.IsNameField);
|
|
498
|
+
if (!nameField) {
|
|
499
|
+
LogError("Unable to filter list: No name field found");
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
415
502
|
this.filteredGridData = this.sourceGridData.filter((data) => {
|
|
416
|
-
const name = data.
|
|
503
|
+
const name = data[nameField.Name];
|
|
417
504
|
return name.toLowerCase().includes(toLower);
|
|
418
505
|
});
|
|
419
506
|
}
|
|
@@ -423,29 +510,110 @@ export class SingleListDetailComponent {
|
|
|
423
510
|
removeViewFromSelectedList(view) {
|
|
424
511
|
this.userViewsToAdd.filter((userView) => userView.ID !== view.ID);
|
|
425
512
|
}
|
|
513
|
+
onDropdownItemClick(item) {
|
|
514
|
+
if (!item.Action) {
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
item.Action();
|
|
518
|
+
}
|
|
519
|
+
toggleAddRecordsDialog(show) {
|
|
520
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
521
|
+
this.showAddSingleRecordsDialog = show;
|
|
522
|
+
if (show) {
|
|
523
|
+
this.listRecords = [];
|
|
524
|
+
this.searchFilter = "";
|
|
525
|
+
yield this.loadListRecords();
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
loadListRecords() {
|
|
530
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
531
|
+
if (!this.listRecord) {
|
|
532
|
+
LogError("Error loading list records. List record is null");
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
if (!this.sourceEntityInfo) {
|
|
536
|
+
LogError("Error loading list records. Source entity info is null");
|
|
537
|
+
return;
|
|
538
|
+
}
|
|
539
|
+
this.fetchingListRecords = true;
|
|
540
|
+
const primaryKeyName = this.sourceEntityInfo.FirstPrimaryKey.Name;
|
|
541
|
+
let filter = undefined;
|
|
542
|
+
const nameField = this.sourceEntityInfo.Fields.find((field) => field.IsNameField);
|
|
543
|
+
if (nameField && this.searchFilter) {
|
|
544
|
+
filter = `${nameField.Name} LIKE '%${this.searchFilter}%'`;
|
|
545
|
+
}
|
|
546
|
+
const rv = new RunView();
|
|
547
|
+
const rvResult = yield rv.RunView({
|
|
548
|
+
EntityName: this.listRecord.Entity,
|
|
549
|
+
ExtraFilter: filter,
|
|
550
|
+
MaxRows: 50
|
|
551
|
+
});
|
|
552
|
+
if (!rvResult.Success) {
|
|
553
|
+
LogError(`Error loading list records for list ${this.listRecord.ID}`, undefined, rvResult.ErrorMessage);
|
|
554
|
+
this.fetchingListRecords = false;
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
this.listRecords = rvResult.Results.filter((record) => {
|
|
558
|
+
const alreadyExits = this.sourceGridData.some((selectedRecord) => selectedRecord.ID === record[primaryKeyName]);
|
|
559
|
+
return !alreadyExits;
|
|
560
|
+
}).map((record) => {
|
|
561
|
+
let result = { ID: record[primaryKeyName], Name: record[nameField.Name] };
|
|
562
|
+
return result;
|
|
563
|
+
});
|
|
564
|
+
this.fetchingListRecords = false;
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
addListRecord(listRecord) {
|
|
568
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
569
|
+
if (!this.listRecord) {
|
|
570
|
+
LogError("Error adding list record. List record is null");
|
|
571
|
+
this.sharedService.CreateSimpleNotification("Unable to add record to list");
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
const md = new Metadata();
|
|
575
|
+
const listEntity = yield md.GetEntityObject("List Details", md.CurrentUser);
|
|
576
|
+
listEntity.ListID = this.listRecord.ID;
|
|
577
|
+
listEntity.RecordID = listRecord.ID;
|
|
578
|
+
const saveResult = yield listEntity.Save();
|
|
579
|
+
if (!saveResult) {
|
|
580
|
+
LogError(`Error adding record ${listRecord.ID} to list ${this.listRecord.ID}`, undefined, listEntity.LatestResult);
|
|
581
|
+
const alreadyExists = listEntity.LatestResult.Message.includes("already exists in List");
|
|
582
|
+
if (alreadyExists) {
|
|
583
|
+
this.sharedService.CreateSimpleNotification("Record already exists in this list", 'error', 2500);
|
|
584
|
+
return;
|
|
585
|
+
}
|
|
586
|
+
this.sharedService.CreateSimpleNotification("Unable to add record to list", 'error', 2500);
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
this.sharedService.CreateSimpleNotification("Unable to add record to list", 'success', 2500);
|
|
590
|
+
});
|
|
591
|
+
}
|
|
426
592
|
}
|
|
427
593
|
SingleListDetailComponent.ɵfac = function SingleListDetailComponent_Factory(t) { return new (t || SingleListDetailComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.SharedService)); };
|
|
428
|
-
SingleListDetailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SingleListDetailComponent, selectors: [["mj-list-detail"]], decls:
|
|
594
|
+
SingleListDetailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SingleListDetailComponent, selectors: [["mj-list-detail"]], inputs: { ListID: "ListID" }, decls: 17, vars: 7, consts: [["searchInput", ""], [1, "app-container"], [1, "flex-display-row-header"], ["textField", "Text", "themeColor", "info", 1, "add-btn", 3, "itemClick", "data"], [1, "fa-solid", "fa-plus"], [1, "title-wrapper"], [1, "search"], ["type", "text", "placeholder", "Search in List", "size", "large", "rounded", "large", "fillMode", "solid", 3, "keyup", "clearButton"], ["kendoTextBoxPrefixTemplate", "", 3, "showSeparator"], ["type", "converging-spinner"], [3, "data"], ["class", "dialog-wrapper", "title", "Select Views to Add", 3, "minWidth", "width", "height", "close", 4, "ngIf"], ["class", "dialog-wrapper", 3, "title", "minWidth", "width", "height", "close", 4, "ngIf"], [1, "fa-solid", "fa-magnifying-glass", "margin-left-small"], [3, "width", "headerStyle", "style", 4, "ngIf"], [3, "field", "title", "width", "editable", "editor", "headerStyle", "style", 4, "ngFor", "ngForOf"], [3, "width", "headerStyle"], [3, "field", "title", "width", "editable", "editor", "headerStyle"], [4, "ngIf"], ["kendoGridFooterTemplate", ""], [2, "font-size", "smaller", "font-weight", "normal"], ["title", "Select Views to Add", 1, "dialog-wrapper", 3, "close", "minWidth", "width", "height"], [1, "popup-actions-btn"], ["kendoButton", "", "themeColor", "info", 1, "cancel-btn", 3, "click", "disabled"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info", 1, "yes-btn", 3, "click", "disabled"], [3, "min", "max", "value", "indeterminate"], [1, "search-header"], ["id", "listSearch", "placeholder", "Search Views...", "kendoTextBox", "", 1, "search-bar", 3, "clearButton"], [1, "overflow-y-scroll"], [1, "list-item"], [1, "list-text", 3, "ngClass"], ["kendoButton", "", 1, "btn-no-border", "btn-selected"], ["kendoButton", "", 1, "btn-no-border"], ["kendoButton", "", 1, "btn-no-border", "btn-selected", 3, "click"], [1, "fa-solid", "fa-minus"], ["kendoButton", "", 1, "btn-no-border", 3, "click"], [1, "btn-margin-right"], [1, "dialog-wrapper", 3, "close", "title", "minWidth", "width", "height"], ["id", "listRecordSearch", "kendoTextBox", "", 1, "search-bar", 3, "valueChange", "placeholder", "clearButton"], [1, "list-text"]], template: function SingleListDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
429
595
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
430
596
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "h1");
|
|
431
597
|
i0.ɵɵtext(3);
|
|
432
598
|
i0.ɵɵelementEnd();
|
|
433
|
-
i0.ɵɵelementStart(4, "
|
|
434
|
-
i0.ɵɵlistener("
|
|
599
|
+
i0.ɵɵelementStart(4, "kendo-dropdownbutton", 3);
|
|
600
|
+
i0.ɵɵlistener("itemClick", function SingleListDetailComponent_Template_kendo_dropdownbutton_itemClick_4_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onDropdownItemClick($event)); });
|
|
435
601
|
i0.ɵɵelement(5, "span", 4);
|
|
436
|
-
i0.ɵɵtext(6, " Add
|
|
602
|
+
i0.ɵɵtext(6, " Add to List ");
|
|
437
603
|
i0.ɵɵelementEnd()();
|
|
438
604
|
i0.ɵɵelementStart(7, "div")(8, "div", 5)(9, "div", 6)(10, "kendo-textbox", 7, 0);
|
|
439
|
-
i0.ɵɵlistener("keyup", function SingleListDetailComponent_Template_kendo_textbox_keyup_10_listener() { i0.ɵɵrestoreView(_r1); const searchInput_r2 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx.
|
|
605
|
+
i0.ɵɵlistener("keyup", function SingleListDetailComponent_Template_kendo_textbox_keyup_10_listener() { i0.ɵɵrestoreView(_r1); const searchInput_r2 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx.onListSearchValueChange(searchInput_r2.value)); });
|
|
440
606
|
i0.ɵɵtemplate(12, SingleListDetailComponent_ng_template_12_Template, 1, 0, "ng-template", 8);
|
|
441
607
|
i0.ɵɵelementEnd()()()();
|
|
442
608
|
i0.ɵɵtemplate(13, SingleListDetailComponent_Conditional_13_Template, 1, 0, "kendo-loader", 9)(14, SingleListDetailComponent_Conditional_14_Template, 3, 3, "kendo-grid", 10);
|
|
443
609
|
i0.ɵɵelementEnd();
|
|
444
|
-
i0.ɵɵtemplate(15, SingleListDetailComponent_kendo_dialog_15_Template,
|
|
610
|
+
i0.ɵɵtemplate(15, SingleListDetailComponent_kendo_dialog_15_Template, 8, 6, "kendo-dialog", 11)(16, SingleListDetailComponent_kendo_dialog_16_Template, 6, 6, "kendo-dialog", 12);
|
|
445
611
|
} if (rf & 2) {
|
|
446
612
|
i0.ɵɵadvance(3);
|
|
447
|
-
i0.ɵɵtextInterpolate(ctx.
|
|
448
|
-
i0.ɵɵadvance(
|
|
613
|
+
i0.ɵɵtextInterpolate(ctx.listRecord ? ctx.listRecord.Name : "List");
|
|
614
|
+
i0.ɵɵadvance();
|
|
615
|
+
i0.ɵɵproperty("data", ctx.addOptions);
|
|
616
|
+
i0.ɵɵadvance(6);
|
|
449
617
|
i0.ɵɵproperty("clearButton", true);
|
|
450
618
|
i0.ɵɵadvance(2);
|
|
451
619
|
i0.ɵɵproperty("showSeparator", true);
|
|
@@ -453,10 +621,14 @@ SingleListDetailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: S
|
|
|
453
621
|
i0.ɵɵconditional(ctx.showLoader ? 13 : 14);
|
|
454
622
|
i0.ɵɵadvance(2);
|
|
455
623
|
i0.ɵɵproperty("ngIf", ctx.showAddDialog);
|
|
456
|
-
|
|
624
|
+
i0.ɵɵadvance();
|
|
625
|
+
i0.ɵɵproperty("ngIf", ctx.showAddSingleRecordsDialog);
|
|
626
|
+
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.GridComponent, i4.ColumnComponent, i4.FooterTemplateDirective, i4.CheckboxColumnComponent, i5.DialogComponent, i5.DialogActionsComponent, i6.LoaderComponent, i7.ButtonComponent, i7.DropDownButtonComponent, i8.TextBoxComponent, i8.TextBoxPrefixTemplateDirective, i9.ProgressBarComponent, i3.DecimalPipe], styles: [".app-container[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.flex-display-row-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 10px;\n}\n\n.title-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n\n.title-wrapper[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n}\n\n.title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n}\n\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n}\n\n.title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n\n.add-btn[_ngcontent-%COMP%] {\n padding: 10px 30px;\n border-radius: 10px;\n color: white;\n background-color: var(--border-blue);\n font-size: initial;\n cursor: pointer;\n}\n\n.add-btn[_ngcontent-%COMP%]:hover {\n filter: brightness(85%);\n}\n\n.margin-left-small[_ngcontent-%COMP%] {\n margin-left: 10px;\n}\n\n\n.overflow-y-scroll[_ngcontent-%COMP%] {\n overflow-y: auto;\n max-height: 300px;\n}\n\n.padding-bottom-small[_ngcontent-%COMP%] {\n padding-bottom: 10px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding-bottom: 5px;\n align-items: center;\n}\n\n.btn-no-border[_ngcontent-%COMP%] {\n border: none;\n background: none;\n color: var(--border-blue);\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.btn-selected[_ngcontent-%COMP%] {\n font-weight: bold;\n}\n\n.list-text[_ngcontent-%COMP%] {\n font-size: large;\n}\n.list-selected[_ngcontent-%COMP%] {\n font-weight: bold;\n color: var(--border-blue);\n}\n\n.btn-margin-right[_ngcontent-%COMP%] {\n margin-right: 35px;\n}\n\n.divider[_ngcontent-%COMP%] {\n color: lightgray\n}\n\n.search-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 0;\n}\n\n.search-bar[_ngcontent-%COMP%] {\n width: 65%;\n padding-bottom: 10px;\n}\n\n.dialog-wrapper[_ngcontent-%COMP%] {\n padding: 15px 25px;\n}\n\n.btn-outline[_ngcontent-%COMP%] {\n border: 2px solid var(--border-blue);\n border-radius: 8px;\n padding: 5px 30px;\n\n background: none;\n color: var(--border-blue);\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.k-dropdown-button[_ngcontent-%COMP%] .k-button[_ngcontent-%COMP%] {\n background: var(--border-blue);\n color: var(--white-color);\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n\n.k-dropdown-button[_ngcontent-%COMP%] .k-button[_ngcontent-%COMP%] .k-button-text[_ngcontent-%COMP%] .card-header-entity[_ngcontent-%COMP%] .add-item[_ngcontent-%COMP%] .k-button[_ngcontent-%COMP%] .k-button-text[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-cmn[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n\n.btn-cmn.active[_ngcontent-%COMP%] {\n border: 1px solid var(--border-blue);\n}", ".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
|
|
457
627
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SingleListDetailComponent, [{
|
|
458
628
|
type: Component,
|
|
459
|
-
args: [{ selector: 'mj-list-detail', template: "<div class=\"app-container\">\n <div class=\"flex-display-row-header\">\n <h1>{{listName}}</h1>\n <button kendobutton class=\"add-btn\" (click)=\"toggleAddDialog(true)\" themeColor=\"info\">\n <span class=\"fa-solid fa-plus\"></span>\n Add More Records\n </button>\n </div>\n <div>\n <div class=\"title-wrapper\">\n <div class=\"search\">\n <kendo-textbox \n type=\"text\" \n #searchInput \n placeholder=\"Search in List\" \n (keyup)=\"onKeyup(searchInput.value)\"\n [clearButton]=\"true\"\n size=\"large\"\n rounded=\"large\"\n fillMode=\"solid\"\n >\n <ng-template kendoTextBoxPrefixTemplate [showSeparator]=\"true\">\n <span class=\"fa-solid fa-magnifying-glass margin-left-small\"></span>\n </ng-template>\n </kendo-textbox>\n </div>\n </div>\n </div>\n @if(showLoader){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else{\n\n <!--\n <kendo-grid #kendoGrid\n mjFillContainer\n [resizable]=\"true\"\n [data]=\"gridView\" \n [skip]=\"skip\"\n [pageSize]=\"pageSize\"\n scrollable=\"virtual\"\n [rowHeight]=\"36\"\n (pageChange)=\"pageChange($event)\"\n [loading]=\"isLoading\"\n [height]=\"gridHeight\"\n [sortable]=\"true\"\n [sort]=\"sortSettings\" \n [resizable]=\"true\"\n [reorderable]=\"true\"\n [selectable]=\"true\"\n kendoGridSelectBy\n [(selectedKeys)]=\"selectedKeys\"\n (cellClick)=\"cellClickHandler($event)\"\n (cellClose)=\"cellCloseHandler($event)\"\n (columnReorder)=\"columnReorder($event)\"\n (columnResize)=\"columnResize($event)\"\n (selectionChange)=\"selectionChange($event)\"\n (sortChange)=\"sortChanged($event)\"\n >\n -->\n\n <kendo-grid [data]=\"filteredGridData\">\n <kendo-grid-checkbox-column \n *ngIf=\"selectModeEnabled\" \n [width]=\"50\" \n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\" \n [style]=\"{'text-align': 'center', 'vertical-align': 'center'}\">\n </kendo-grid-checkbox-column>\n \n <kendo-grid-column \n *ngFor=\"let item of visibleColumns\" \n [field]=\"item.Name || ''\" \n [title]=\"GetColumnTitle(item)\"\n [width]=\"item.width ? item.width : 100\"\n [editable]=\"item.EntityField?.AllowUpdateAPI || false\"\n [editor]=\"getEditor(item.EntityField)\"\n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\"\n [style]=\"this.GetColumnCellStyle(item)\"\n >\n <ng-template *ngIf=\"item===visibleColumns[0]\" kendoGridFooterTemplate >\n {{this.filteredGridData.length | number}}{{this.totalRowCount > this.filteredGridData.length ? ' of ' + (this.totalRowCount | number) : ' rows'}}<br/><span style=\"font-size: smaller; font-weight: normal;\">{{viewExecutionTime | number:'1.2-2'}} seconds</span>\n </ng-template>\n </kendo-grid-column>\n\n <!--\n <kendo-excelexport #excelExport [data]=\"exportData\" [fileName]=\"(_viewEntity ? _viewEntity.Get('Name') : _entityInfo?.Name) + '.xlsx'\">\n <kendo-excelexport-column *ngFor=\"let exportCol of exportColumns\" [field]=\"exportCol.Name\" [title]=\"exportCol.Name\">\n </kendo-excelexport-column>\n </kendo-excelexport>\n -->\n </kendo-grid>\n }\n</div>\n\n<kendo-dialog\nclass=\"dialog-wrapper\"\ntitle=\"Select Views to Add\"\n*ngIf=\"showAddDialog\"\n(close)=\"toggleAddDialog(false)\"\n[minWidth]=\"250\"\n[width]=\"650\"\n[height]=\"550\"\n>\n<div class=\"search-header\">\n <kendo-textbox\n id=\"listSearch\"\n placeholder=\"Search Views...\"\n kendoTextBox\n [clearButton]=\"true\"\n class=\"search-bar\"\n></kendo-textbox>\n<!--\n<button kendoButton class=\"btn-no-border btn-outline\">\n <span class=\"fa-solid fa-plus\"></span>\n New View\n</button>\n-->\n</div>\n<hr>\n<div class=\"overflow-y-scroll\">\n @if(showAddLoader){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else {\n @for(userView of userViews; track userView){\n <div class=\"list-item\">\n <div class=\"list-text\" [ngClass]=\"{'list-selected': userViewsToAdd.includes(userView)}\">\n {{userView.Name}}\n </div>\n @if(userViewsToAdd.includes(userView)){\n <button kendoButton class=\"btn-no-border btn-selected\" (click)=\"removeViewFromSelectedList(userView)\">\n <span class=\"fa-solid fa-minus\"></span>\n Remove\n </button>\n }\n @else {\n <button kendoButton class=\"btn-no-border\" (click)=\"addViewToSelectedList(userView)\">\n <div class=\"btn-margin-right\">\n <span class=\"fa-solid fa-plus\"></span>\n Add\n </div>\n </button>\n }\n </div>\n <hr>\n }\n }\n</div>\n<kendo-dialog-actions class=\"popup-actions-btn\">\n <button class=\"cancel-btn\" (click)=\"addTolist()\" [disabled]=\"showAddLoader\" kendoButton themeColor=\"info\">\n Done\n </button>\n <button class=\"yes-btn\" (click)=\"toggleAddDialog(false)\" [disabled]=\"showAddLoader\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n Cancel\n </button>\n</kendo-dialog-actions>\n</kendo-dialog>", styles: [".app-container {\n padding: 20px;\n}\n\n.flex-display-row-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 10px;\n}\n\n.title-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n\n.title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n}\n\n.title-wrapper .search input {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n}\n\n .title-wrapper .search {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n}\n\n.title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n\n.add-btn {\n padding: 10px 30px;\n border-radius: 10px;\n color: white;\n background-color: var(--border-blue);\n font-size: initial;\n cursor: pointer;\n}\n\n.add-btn:hover {\n filter: brightness(85%);\n}\n\n.margin-left-small {\n margin-left: 10px;\n}\n\n\n.overflow-y-scroll {\n overflow-y: auto;\n max-height: 300px;\n}\n\n.padding-bottom-small {\n padding-bottom: 10px;\n}\n\n.list-item {\n display: flex;\n justify-content: space-between;\n padding-bottom: 5px;\n align-items: center;\n}\n\n.btn-no-border {\n border: none;\n background: none;\n color: var(--border-blue);\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.btn-selected {\n font-weight: bold;\n}\n\n.list-text {\n font-size: large;\n}\n.list-selected {\n font-weight: bold;\n color: var(--border-blue);\n}\n\n.btn-margin-right {\n margin-right: 35px;\n}\n\n.divider {\n color: lightgray\n}\n\n.search-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 0;\n}\n\n.search-bar {\n width: 65%;\n padding-bottom: 10px;\n}\n\n.dialog-wrapper {\n padding: 15px 25px;\n}\n\n.btn-outline {\n border: 2px solid var(--border-blue);\n border-radius: 8px;\n padding: 5px 30px;\n\n background: none;\n color: var(--border-blue);\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n}"] }]
|
|
460
|
-
}], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }],
|
|
461
|
-
|
|
629
|
+
args: [{ selector: 'mj-list-detail', template: "<div class=\"app-container\">\n <div class=\"flex-display-row-header\">\n <h1>{{listRecord ? listRecord.Name: \"List\"}}</h1>\n <kendo-dropdownbutton \n class=\"add-btn\" \n (itemClick)=\"onDropdownItemClick($event)\" \n [data]=\"addOptions\" \n textField=\"Text\"\n themeColor=\"info\">\n <span class=\"fa-solid fa-plus\"></span>\n Add to List\n </kendo-dropdownbutton> \n </div>\n <div>\n <div class=\"title-wrapper\">\n <div class=\"search\">\n <kendo-textbox \n type=\"text\" \n #searchInput \n placeholder=\"Search in List\" \n (keyup)=\"onListSearchValueChange(searchInput.value)\"\n [clearButton]=\"true\"\n size=\"large\"\n rounded=\"large\"\n fillMode=\"solid\"\n >\n <ng-template kendoTextBoxPrefixTemplate [showSeparator]=\"true\">\n <span class=\"fa-solid fa-magnifying-glass margin-left-small\"></span>\n </ng-template>\n </kendo-textbox>\n </div>\n </div>\n </div>\n @if(showLoader){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else{\n <kendo-grid [data]=\"filteredGridData\">\n <kendo-grid-checkbox-column \n *ngIf=\"selectModeEnabled\" \n [width]=\"50\" \n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\" \n [style]=\"{'text-align': 'center', 'vertical-align': 'center'}\">\n </kendo-grid-checkbox-column>\n \n <kendo-grid-column \n *ngFor=\"let item of visibleColumns\" \n [field]=\"item.Name || ''\" \n [title]=\"GetColumnTitle(item)\"\n [width]=\"item.width ? item.width : 100\"\n [editable]=\"item.EntityField?.AllowUpdateAPI || false\"\n [editor]=\"getEditor(item.EntityField)\"\n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\"\n [style]=\"this.GetColumnCellStyle(item)\"\n >\n <ng-template *ngIf=\"item===visibleColumns[0]\" kendoGridFooterTemplate >\n {{this.filteredGridData.length | number}}{{this.totalRowCount > this.filteredGridData.length ? ' of ' + (this.totalRowCount | number) : ' rows'}}<br/><span style=\"font-size: smaller; font-weight: normal;\">{{viewExecutionTime | number:'1.2-2'}} seconds</span>\n </ng-template>\n </kendo-grid-column>\n\n <!--\n <kendo-excelexport #excelExport [data]=\"exportData\" [fileName]=\"(_viewEntity ? _viewEntity.Get('Name') : _entityInfo?.Name) + '.xlsx'\">\n <kendo-excelexport-column *ngFor=\"let exportCol of exportColumns\" [field]=\"exportCol.Name\" [title]=\"exportCol.Name\">\n </kendo-excelexport-column>\n </kendo-excelexport>\n -->\n </kendo-grid>\n }\n</div>\n\n<kendo-dialog\nclass=\"dialog-wrapper\"\ntitle=\"Select Views to Add\"\n*ngIf=\"showAddDialog\"\n(close)=\"toggleAddFromViewDialog(false)\"\n[minWidth]=\"250\"\n[width]=\"650\"\n[height]=\"550\"\n>\n@if(showAddLoader){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n <kendo-progressbar \n [min]=\"0\"\n [max]=\"recordsToSave\"\n [value]=\"recordsSaved\"\n [indeterminate]=\"fetchingRecordsToSave\"\n />\n}\n@else {\n <div class=\"search-header\">\n <kendo-textbox\n id=\"listSearch\"\n placeholder=\"Search Views...\"\n kendoTextBox\n [clearButton]=\"true\"\n class=\"search-bar\"\n />\n </div>\n <hr>\n @for(userView of userViews; track userView){\n <div class=\"overflow-y-scroll\">\n <div class=\"list-item\">\n <div class=\"list-text\" [ngClass]=\"{'list-selected': userViewsToAdd.includes(userView)}\">\n {{userView.Name}}\n </div>\n @if(userViewsToAdd.includes(userView)){\n <button kendoButton class=\"btn-no-border btn-selected\" (click)=\"removeViewFromSelectedList(userView)\">\n <span class=\"fa-solid fa-minus\"></span>\n Remove\n </button>\n }\n @else {\n <button kendoButton class=\"btn-no-border\" (click)=\"addViewToSelectedList(userView)\">\n <div class=\"btn-margin-right\">\n <span class=\"fa-solid fa-plus\"></span>\n Add\n </div>\n </button>\n }\n </div>\n <hr>\n </div>\n }\n}\n <kendo-dialog-actions class=\"popup-actions-btn\">\n <button class=\"cancel-btn\" (click)=\"addTolist()\" [disabled]=\"showAddLoader\" kendoButton themeColor=\"info\">\n Done\n </button>\n <button class=\"yes-btn\" (click)=\"toggleAddFromViewDialog(false)\" [disabled]=\"showAddLoader\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n Cancel\n </button>\n </kendo-dialog-actions>\n</kendo-dialog>\n\n<kendo-dialog\nclass=\"dialog-wrapper\"\n[title]=\"'Select ' + (listRecord ? listRecord.Entity : 'Records') + ' to Add to List'\"\n*ngIf=\"showAddSingleRecordsDialog\"\n(close)=\"toggleAddRecordsDialog(false)\"\n[minWidth]=\"250\"\n[width]=\"650\"\n[height]=\"550\"\n>\n@if(showDialogLoader){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n <kendo-progressbar \n [min]=\"0\"\n [max]=\"recordsToSave\"\n [value]=\"recordsSaved\"\n [indeterminate]=\"fetchingRecordsToSave\"\n />\n}\n@else {\n <div class=\"search-header\">\n <kendo-textbox\n id=\"listRecordSearch\"\n (valueChange)=\"onListRecordDialogValueChange($event)\"\n [placeholder]=\"'Search ' + (listRecord ? listRecord.Entity : 'Records') + '...'\"\n kendoTextBox\n [clearButton]=\"true\"\n class=\"search-bar\"\n />\n </div>\n <hr>\n @if(fetchingListRecords){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else {\n @for(listRecord of listRecords; track listRecord){\n <div class=\"overflow-y-scroll\">\n <div class=\"list-item\">\n <div class=\"list-text\">\n {{listRecord.Name}}\n </div>\n <button kendoButton class=\"btn-no-border\" (click)=\"addListRecord(listRecord)\">\n <div class=\"btn-margin-right\">\n <span class=\"fa-solid fa-plus\"></span>\n Add\n </div>\n </button>\n </div>\n <hr>\n </div>\n }\n }\n}\n <kendo-dialog-actions class=\"popup-actions-btn\">\n <button class=\"yes-btn\" (click)=\"toggleAddRecordsDialog(false)\" [disabled]=\"showDialogLoader\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n Close\n </button>\n </kendo-dialog-actions>\n</kendo-dialog>", styles: [".app-container {\n padding: 20px;\n}\n\n.flex-display-row-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 10px;\n}\n\n.title-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n\n.title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n}\n\n.title-wrapper .search input {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n}\n\n .title-wrapper .search {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n}\n\n.title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n\n.add-btn {\n padding: 10px 30px;\n border-radius: 10px;\n color: white;\n background-color: var(--border-blue);\n font-size: initial;\n cursor: pointer;\n}\n\n.add-btn:hover {\n filter: brightness(85%);\n}\n\n.margin-left-small {\n margin-left: 10px;\n}\n\n\n.overflow-y-scroll {\n overflow-y: auto;\n max-height: 300px;\n}\n\n.padding-bottom-small {\n padding-bottom: 10px;\n}\n\n.list-item {\n display: flex;\n justify-content: space-between;\n padding-bottom: 5px;\n align-items: center;\n}\n\n.btn-no-border {\n border: none;\n background: none;\n color: var(--border-blue);\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.btn-selected {\n font-weight: bold;\n}\n\n.list-text {\n font-size: large;\n}\n.list-selected {\n font-weight: bold;\n color: var(--border-blue);\n}\n\n.btn-margin-right {\n margin-right: 35px;\n}\n\n.divider {\n color: lightgray\n}\n\n.search-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 0;\n}\n\n.search-bar {\n width: 65%;\n padding-bottom: 10px;\n}\n\n.dialog-wrapper {\n padding: 15px 25px;\n}\n\n.btn-outline {\n border: 2px solid var(--border-blue);\n border-radius: 8px;\n padding: 5px 30px;\n\n background: none;\n color: var(--border-blue);\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.k-dropdown-button .k-button {\n background: var(--border-blue);\n color: var(--white-color);\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n\n.k-dropdown-button .k-button .k-button-text .card-header-entity .add-item .k-button .k-button-text {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-cmn {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n\n.btn-cmn.active {\n border: 1px solid var(--border-blue);\n}", "\n.main-area {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n::ng-deep .list-view .k-listview-header, \n::ng-deep .list-view .k-listview-footer {\n border: none;\n}\n::ng-deep .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header,\n.footer {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header .head-tag {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header .count {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card .view-icon {\n color: var(--sideNav);\n}\n.card-wrapper {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper .k-card-body {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper .view-card {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card .btn-wrapper {\n display: flex;\n align-items: center;\n}\n\n.k-card-body .view-card-content h5 {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body .view-card-content p {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area .card-list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}\n"] }]
|
|
630
|
+
}], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }], { ListID: [{
|
|
631
|
+
type: Input
|
|
632
|
+
}] }); })();
|
|
633
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SingleListDetailComponent, { className: "SingleListDetailComponent", filePath: "src/lib/single-list-detail/single-list-detail.component.ts", lineNumber: 15 }); })();
|
|
462
634
|
//# sourceMappingURL=single-list-detail.component.js.map
|