@memberjunction/ng-user-view-grid 1.3.3 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/ng-user-view-grid.component.d.ts +52 -5
- package/dist/lib/ng-user-view-grid.component.d.ts.map +1 -1
- package/dist/lib/ng-user-view-grid.component.js +501 -164
- package/dist/{lib/ng-user-view-grid.module.d.ts → module.d.ts} +5 -3
- package/dist/module.d.ts.map +1 -0
- package/dist/{lib/ng-user-view-grid.module.js → module.js} +12 -4
- package/dist/public-api.d.ts +1 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -1
- package/package.json +8 -7
- package/dist/lib/ng-user-view-grid.module.d.ts.map +0 -1
|
@@ -8,14 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { Component, ViewChild, ElementRef, Output, EventEmitter, Input } from '@angular/core';
|
|
11
|
-
import { Metadata, RunView, EntityFieldTSType, LogError, CompositeKey, PotentialDuplicateRequest } from '@memberjunction/core';
|
|
11
|
+
import { Metadata, RunView, EntityFieldTSType, LogError, CompositeKey, PotentialDuplicateRequest, FieldValueCollection } from '@memberjunction/core';
|
|
12
12
|
import { ViewInfo } from '@memberjunction/core-entities';
|
|
13
13
|
import { GridComponent } from "@progress/kendo-angular-grid";
|
|
14
14
|
import { Keys } from '@progress/kendo-angular-common';
|
|
15
|
-
import { Subject } from 'rxjs';
|
|
15
|
+
import { Subject, distinctUntilChanged } from 'rxjs';
|
|
16
|
+
import { debounceTime } from "rxjs/operators";
|
|
16
17
|
import { ExcelExportComponent } from '@progress/kendo-angular-excel-export';
|
|
17
18
|
import { MJEventType, MJGlobal } from '@memberjunction/global';
|
|
18
19
|
import { TextAreaComponent } from '@progress/kendo-angular-inputs';
|
|
20
|
+
import { BaseFormComponentEventCodes, SharedService } from '@memberjunction/ng-shared';
|
|
19
21
|
import * as i0 from "@angular/core";
|
|
20
22
|
import * as i1 from "@angular/forms";
|
|
21
23
|
import * as i2 from "@angular/router";
|
|
@@ -26,248 +28,333 @@ import * as i6 from "@progress/kendo-angular-excel-export";
|
|
|
26
28
|
import * as i7 from "@progress/kendo-angular-buttons";
|
|
27
29
|
import * as i8 from "@memberjunction/ng-compare-records";
|
|
28
30
|
import * as i9 from "@memberjunction/ng-container-directives";
|
|
31
|
+
import * as i10 from "@progress/kendo-angular-inputs";
|
|
32
|
+
import * as i11 from "@memberjunction/ng-entity-form-dialog";
|
|
33
|
+
import * as i12 from "@progress/kendo-angular-indicators";
|
|
29
34
|
const _c0 = ["kendoGrid"];
|
|
30
35
|
const _c1 = ["excelExport"];
|
|
31
36
|
const _c2 = ["recordCompareRef"];
|
|
32
37
|
const _c3 = ["analysisQuestion"];
|
|
33
38
|
const _c4 = ["analysisResults"];
|
|
34
39
|
const _c5 = ["compareDialogContainer"];
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
i0.ɵɵ
|
|
38
|
-
i0.ɵɵ
|
|
39
|
-
i0.ɵɵ
|
|
40
|
-
i0.ɵɵ
|
|
40
|
+
const _c6 = ["entityFormDialog"];
|
|
41
|
+
function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
43
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
44
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r18.doCreateNewRecord()); });
|
|
45
|
+
i0.ɵɵelement(1, "span", 21);
|
|
46
|
+
i0.ɵɵtext(2);
|
|
41
47
|
i0.ɵɵelementEnd();
|
|
48
|
+
} if (rf & 2) {
|
|
49
|
+
const ctx_r16 = i0.ɵɵnextContext(3);
|
|
50
|
+
i0.ɵɵadvance(2);
|
|
51
|
+
i0.ɵɵtextInterpolate1(" New ", ctx_r16.entityRecord == null ? null : ctx_r16.entityRecord.EntityInfo == null ? null : ctx_r16.entityRecord.EntityInfo.Name, " ");
|
|
42
52
|
} }
|
|
43
|
-
function
|
|
44
|
-
const
|
|
45
|
-
i0.ɵɵelementStart(0, "button",
|
|
46
|
-
i0.ɵɵlistener("click", function
|
|
47
|
-
i0.ɵɵ
|
|
53
|
+
function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
55
|
+
i0.ɵɵelementStart(0, "button", 22);
|
|
56
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r20.RefreshFromSavedParams()); });
|
|
57
|
+
i0.ɵɵelement(1, "span", 23);
|
|
58
|
+
i0.ɵɵtext(2, " Refresh ");
|
|
48
59
|
i0.ɵɵelementEnd();
|
|
49
|
-
} if (rf & 2) {
|
|
50
|
-
const ctx_r9 = i0.ɵɵnextContext(2);
|
|
51
|
-
i0.ɵɵproperty("disabled", ctx_r9.duplicateMode && ctx_r9.recordsToCompare.length < 2);
|
|
52
60
|
} }
|
|
53
|
-
function
|
|
54
|
-
const
|
|
55
|
-
i0.ɵɵ
|
|
56
|
-
i0.ɵɵ
|
|
57
|
-
i0.ɵɵ
|
|
61
|
+
function UserViewGridComponent_ng_template_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
63
|
+
i0.ɵɵtemplate(0, UserViewGridComponent_ng_template_3_Conditional_0_Conditional_0_Template, 3, 1, "button", 16);
|
|
64
|
+
i0.ɵɵelementStart(1, "button", 17);
|
|
65
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.doExcelExport()); });
|
|
66
|
+
i0.ɵɵelement(2, "span", 18);
|
|
67
|
+
i0.ɵɵtext(3, " Export to Excel ");
|
|
68
|
+
i0.ɵɵelementEnd();
|
|
69
|
+
i0.ɵɵelementStart(4, "button", 19);
|
|
70
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r23); const ctx_r24 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r24.enableCheckbox(false, "duplicate")); });
|
|
71
|
+
i0.ɵɵtext(5, " Search For Duplicates ");
|
|
72
|
+
i0.ɵɵelementEnd();
|
|
73
|
+
i0.ɵɵelementStart(6, "button", 19);
|
|
74
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r23); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.enableCheckbox(false, "addToList")); });
|
|
75
|
+
i0.ɵɵtext(7, " Add To List ");
|
|
76
|
+
i0.ɵɵelementEnd();
|
|
77
|
+
i0.ɵɵelementStart(8, "button", 19);
|
|
78
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r23); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.enableMergeOrCompare(false, "merge")); });
|
|
79
|
+
i0.ɵɵtext(9, " Merge ");
|
|
58
80
|
i0.ɵɵelementEnd();
|
|
81
|
+
i0.ɵɵelementStart(10, "button", 19);
|
|
82
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r23); const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.enableMergeOrCompare(false, "compare")); });
|
|
83
|
+
i0.ɵɵtext(11, " Compare ");
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵtemplate(12, UserViewGridComponent_ng_template_3_Conditional_0_Conditional_12_Template, 3, 0, "button", 20);
|
|
59
86
|
} if (rf & 2) {
|
|
60
87
|
const ctx_r10 = i0.ɵɵnextContext(2);
|
|
61
|
-
i0.ɵɵ
|
|
88
|
+
i0.ɵɵconditional(0, ctx_r10.ShowCreateNewRecordButton && ctx_r10.UserCanCreateNewRecord ? 0 : -1);
|
|
89
|
+
i0.ɵɵadvance(12);
|
|
90
|
+
i0.ɵɵconditional(12, ctx_r10.showRefreshButton ? 12 : -1);
|
|
62
91
|
} }
|
|
63
|
-
function
|
|
64
|
-
const
|
|
65
|
-
i0.ɵɵelementStart(0, "button",
|
|
66
|
-
i0.ɵɵlistener("click", function
|
|
67
|
-
i0.ɵɵtext(1, "
|
|
92
|
+
function UserViewGridComponent_ng_template_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
94
|
+
i0.ɵɵelementStart(0, "button", 24);
|
|
95
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.enableCheckbox(false, "duplicate")); });
|
|
96
|
+
i0.ɵɵtext(1, " Search For Duplicates ");
|
|
68
97
|
i0.ɵɵelementEnd();
|
|
69
98
|
} if (rf & 2) {
|
|
70
99
|
const ctx_r11 = i0.ɵɵnextContext(2);
|
|
71
|
-
i0.ɵɵproperty("disabled", ctx_r11.
|
|
100
|
+
i0.ɵɵproperty("disabled", ctx_r11.duplicateMode && ctx_r11.recordsToCompare.length < 2);
|
|
72
101
|
} }
|
|
73
|
-
function
|
|
74
|
-
const
|
|
75
|
-
i0.ɵɵelementStart(0, "button",
|
|
76
|
-
i0.ɵɵlistener("click", function
|
|
77
|
-
i0.ɵɵtext(1, "
|
|
102
|
+
function UserViewGridComponent_ng_template_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
103
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
104
|
+
i0.ɵɵelementStart(0, "button", 24);
|
|
105
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r30.enableCheckbox(false, "addToList")); });
|
|
106
|
+
i0.ɵɵtext(1, " Add To List ");
|
|
78
107
|
i0.ɵɵelementEnd();
|
|
79
108
|
} if (rf & 2) {
|
|
80
109
|
const ctx_r12 = i0.ɵɵnextContext(2);
|
|
81
|
-
i0.ɵɵproperty("disabled", ctx_r12.
|
|
110
|
+
i0.ɵɵproperty("disabled", ctx_r12.addToListMode && ctx_r12.recordsToCompare.length === 0);
|
|
82
111
|
} }
|
|
83
|
-
function
|
|
84
|
-
const
|
|
85
|
-
i0.ɵɵelementStart(0, "button",
|
|
86
|
-
i0.ɵɵlistener("click", function
|
|
87
|
-
i0.ɵɵtext(1, "
|
|
112
|
+
function UserViewGridComponent_ng_template_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
114
|
+
i0.ɵɵelementStart(0, "button", 24);
|
|
115
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r32.enableMergeOrCompare(false, "compare")); });
|
|
116
|
+
i0.ɵɵtext(1, " Compare ");
|
|
88
117
|
i0.ɵɵelementEnd();
|
|
89
118
|
} if (rf & 2) {
|
|
90
119
|
const ctx_r13 = i0.ɵɵnextContext(2);
|
|
91
|
-
i0.ɵɵproperty("disabled", ctx_r13.
|
|
120
|
+
i0.ɵɵproperty("disabled", ctx_r13.compareMode && ctx_r13.recordsToCompare.length < 2);
|
|
92
121
|
} }
|
|
93
|
-
function
|
|
94
|
-
const
|
|
95
|
-
i0.ɵɵelementStart(0, "button",
|
|
96
|
-
i0.ɵɵlistener("click", function
|
|
97
|
-
i0.ɵɵtext(1, "Merge");
|
|
122
|
+
function UserViewGridComponent_ng_template_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
124
|
+
i0.ɵɵelementStart(0, "button", 24);
|
|
125
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r34 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r34.enableMergeOrCompare(false, "merge")); });
|
|
126
|
+
i0.ɵɵtext(1, " Merge ");
|
|
98
127
|
i0.ɵɵelementEnd();
|
|
99
128
|
} if (rf & 2) {
|
|
100
129
|
const ctx_r14 = i0.ɵɵnextContext(2);
|
|
101
130
|
i0.ɵɵproperty("disabled", ctx_r14.mergeMode && ctx_r14.recordsToCompare.length < 2);
|
|
102
131
|
} }
|
|
103
|
-
function
|
|
104
|
-
const
|
|
105
|
-
i0.ɵɵelementStart(0, "button",
|
|
106
|
-
i0.ɵɵlistener("click", function
|
|
132
|
+
function UserViewGridComponent_ng_template_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
133
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
134
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
135
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.enableCheckbox(true, "")); });
|
|
107
136
|
i0.ɵɵtext(1, " Cancel ");
|
|
108
137
|
i0.ɵɵelementEnd();
|
|
109
138
|
} }
|
|
110
|
-
function UserViewGridComponent_ng_template_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
111
|
-
const _r34 = i0.ɵɵgetCurrentView();
|
|
112
|
-
i0.ɵɵelementStart(0, "button", 21);
|
|
113
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r33.RefreshFromSavedParams()); });
|
|
114
|
-
i0.ɵɵelement(1, "span", 22);
|
|
115
|
-
i0.ɵɵtext(2, " Refresh ");
|
|
116
|
-
i0.ɵɵelementEnd();
|
|
117
|
-
} }
|
|
118
139
|
function UserViewGridComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
119
|
-
i0.ɵɵtemplate(0,
|
|
140
|
+
i0.ɵɵtemplate(0, UserViewGridComponent_ng_template_3_Conditional_0_Template, 13, 2)(1, UserViewGridComponent_ng_template_3_Conditional_1_Template, 2, 1, "button", 14)(2, UserViewGridComponent_ng_template_3_Conditional_2_Template, 2, 1, "button", 14)(3, UserViewGridComponent_ng_template_3_Conditional_3_Template, 2, 1, "button", 14)(4, UserViewGridComponent_ng_template_3_Conditional_4_Template, 2, 1, "button", 14)(5, UserViewGridComponent_ng_template_3_Conditional_5_Template, 2, 0, "button", 15);
|
|
120
141
|
} if (rf & 2) {
|
|
121
142
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
122
|
-
i0.ɵɵ
|
|
123
|
-
i0.ɵɵadvance();
|
|
124
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode);
|
|
125
|
-
i0.ɵɵadvance();
|
|
126
|
-
i0.ɵɵproperty("ngIf", ctx_r1.duplicateMode);
|
|
127
|
-
i0.ɵɵadvance();
|
|
128
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode);
|
|
143
|
+
i0.ɵɵconditional(0, !ctx_r1.anyModeEnabled ? 0 : -1);
|
|
129
144
|
i0.ɵɵadvance();
|
|
130
|
-
i0.ɵɵ
|
|
145
|
+
i0.ɵɵconditional(1, ctx_r1.duplicateMode ? 1 : -1);
|
|
131
146
|
i0.ɵɵadvance();
|
|
132
|
-
i0.ɵɵ
|
|
147
|
+
i0.ɵɵconditional(2, ctx_r1.addToListMode ? 2 : -1);
|
|
133
148
|
i0.ɵɵadvance();
|
|
134
|
-
i0.ɵɵ
|
|
149
|
+
i0.ɵɵconditional(3, ctx_r1.compareMode ? 3 : -1);
|
|
135
150
|
i0.ɵɵadvance();
|
|
136
|
-
i0.ɵɵconditional(
|
|
151
|
+
i0.ɵɵconditional(4, ctx_r1.mergeMode ? 4 : -1);
|
|
137
152
|
i0.ɵɵadvance();
|
|
138
|
-
i0.ɵɵconditional(
|
|
153
|
+
i0.ɵɵconditional(5, ctx_r1.anyModeEnabled ? 5 : -1);
|
|
139
154
|
} }
|
|
140
|
-
const
|
|
141
|
-
const
|
|
155
|
+
const _c7 = () => ({ "text-align": "center", "vertical-align": "center" });
|
|
156
|
+
const _c8 = () => ({ "font-weight": "bold", "background-color": "white" });
|
|
142
157
|
function UserViewGridComponent_kendo_grid_checkbox_column_4_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelement(0, "kendo-grid-checkbox-column",
|
|
158
|
+
i0.ɵɵelement(0, "kendo-grid-checkbox-column", 25);
|
|
144
159
|
} if (rf & 2) {
|
|
145
|
-
i0.ɵɵstyleMap(i0.ɵɵpureFunction0(4,
|
|
146
|
-
i0.ɵɵproperty("width", 50)("headerStyle", i0.ɵɵpureFunction0(5,
|
|
160
|
+
i0.ɵɵstyleMap(i0.ɵɵpureFunction0(4, _c7));
|
|
161
|
+
i0.ɵɵproperty("width", 50)("headerStyle", i0.ɵɵpureFunction0(5, _c8));
|
|
147
162
|
} }
|
|
148
163
|
function UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
149
164
|
i0.ɵɵtext(0);
|
|
150
165
|
i0.ɵɵpipe(1, "number");
|
|
151
166
|
i0.ɵɵpipe(2, "number");
|
|
152
167
|
i0.ɵɵelement(3, "br");
|
|
153
|
-
i0.ɵɵelementStart(4, "span",
|
|
168
|
+
i0.ɵɵelementStart(4, "span", 28);
|
|
154
169
|
i0.ɵɵtext(5);
|
|
155
170
|
i0.ɵɵpipe(6, "number");
|
|
156
171
|
i0.ɵɵelementEnd();
|
|
157
172
|
} if (rf & 2) {
|
|
158
|
-
const
|
|
159
|
-
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(1, 3,
|
|
173
|
+
const ctx_r40 = i0.ɵɵnextContext(3);
|
|
174
|
+
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(1, 3, ctx_r40.viewData.length), "", ctx_r40.totalRowCount > ctx_r40.viewData.length ? " of " + i0.ɵɵpipeBind1(2, 5, ctx_r40.totalRowCount) : " rows", "");
|
|
160
175
|
i0.ɵɵadvance(5);
|
|
161
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 7,
|
|
176
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 7, ctx_r40.viewExecutionTime, "1.2-2"), " seconds");
|
|
162
177
|
} }
|
|
163
178
|
function UserViewGridComponent_kendo_grid_column_5_1_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
-
i0.ɵɵtemplate(0, UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template, 7, 10, "ng-template",
|
|
179
|
+
i0.ɵɵtemplate(0, UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template, 7, 10, "ng-template", 27);
|
|
165
180
|
} }
|
|
166
181
|
function UserViewGridComponent_kendo_grid_column_5_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
i0.ɵɵelementStart(0, "kendo-grid-column",
|
|
182
|
+
i0.ɵɵelementStart(0, "kendo-grid-column", 26);
|
|
168
183
|
i0.ɵɵtemplate(1, UserViewGridComponent_kendo_grid_column_5_1_Template, 1, 0, null, 10);
|
|
169
184
|
i0.ɵɵelementEnd();
|
|
170
185
|
} if (rf & 2) {
|
|
171
|
-
const
|
|
186
|
+
const item_r38 = ctx.$implicit;
|
|
172
187
|
const ctx_r3 = i0.ɵɵnextContext();
|
|
173
|
-
i0.ɵɵstyleMap(ctx_r3.GetColumnCellStyle(
|
|
174
|
-
i0.ɵɵproperty("field",
|
|
188
|
+
i0.ɵɵstyleMap(ctx_r3.GetColumnCellStyle(item_r38));
|
|
189
|
+
i0.ɵɵproperty("field", item_r38.Name)("title", ctx_r3.GetColumnTitle(item_r38))("width", item_r38.width ? item_r38.width : 100)("editable", item_r38.EntityField.AllowUpdateAPI)("editor", ctx_r3.getEditor(item_r38.EntityField))("headerStyle", i0.ɵɵpureFunction0(9, _c8));
|
|
175
190
|
i0.ɵɵadvance();
|
|
176
|
-
i0.ɵɵproperty("ngIf",
|
|
191
|
+
i0.ɵɵproperty("ngIf", item_r38 === ctx_r3.visibleColumns[0]);
|
|
177
192
|
} }
|
|
178
193
|
function UserViewGridComponent_kendo_excelexport_column_8_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
-
i0.ɵɵelement(0, "kendo-excelexport-column",
|
|
194
|
+
i0.ɵɵelement(0, "kendo-excelexport-column", 29);
|
|
180
195
|
} if (rf & 2) {
|
|
181
|
-
const
|
|
182
|
-
i0.ɵɵproperty("field",
|
|
196
|
+
const exportCol_r41 = ctx.$implicit;
|
|
197
|
+
i0.ɵɵproperty("field", exportCol_r41.Name)("title", exportCol_r41.Name);
|
|
183
198
|
} }
|
|
184
199
|
function UserViewGridComponent_div_11_kendo_window_2_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
185
|
-
const
|
|
186
|
-
i0.ɵɵelementStart(0, "button",
|
|
187
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
200
|
+
const _r50 = i0.ɵɵgetCurrentView();
|
|
201
|
+
i0.ɵɵelementStart(0, "button", 40);
|
|
202
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r50); const ctx_r49 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r49.closeCompareDialog("merge")); });
|
|
188
203
|
i0.ɵɵtext(1, " Merge Records ");
|
|
189
204
|
i0.ɵɵelementEnd();
|
|
190
205
|
} }
|
|
191
206
|
function UserViewGridComponent_div_11_kendo_window_2_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
-
const
|
|
193
|
-
i0.ɵɵelementStart(0, "button",
|
|
194
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
207
|
+
const _r52 = i0.ɵɵgetCurrentView();
|
|
208
|
+
i0.ɵɵelementStart(0, "button", 40);
|
|
209
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r51 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r51.findDuplicateRecords()); });
|
|
195
210
|
i0.ɵɵtext(1, " Search for Duplicates ");
|
|
196
211
|
i0.ɵɵelementEnd();
|
|
197
212
|
} }
|
|
198
213
|
function UserViewGridComponent_div_11_kendo_window_2_button_7_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
-
const
|
|
200
|
-
i0.ɵɵelementStart(0, "button",
|
|
201
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
214
|
+
const _r54 = i0.ɵɵgetCurrentView();
|
|
215
|
+
i0.ɵɵelementStart(0, "button", 41);
|
|
216
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r54); const ctx_r53 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r53.closeCompareDialog("close")); });
|
|
202
217
|
i0.ɵɵtext(1, " Close ");
|
|
203
218
|
i0.ɵɵelementEnd();
|
|
204
219
|
} }
|
|
205
220
|
function UserViewGridComponent_div_11_kendo_window_2_button_8_Template(rf, ctx) { if (rf & 1) {
|
|
206
|
-
const
|
|
207
|
-
i0.ɵɵelementStart(0, "button",
|
|
208
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
221
|
+
const _r56 = i0.ɵɵgetCurrentView();
|
|
222
|
+
i0.ɵɵelementStart(0, "button", 41);
|
|
223
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r56); const ctx_r55 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r55.closeCompareDialog("cancel")); });
|
|
209
224
|
i0.ɵɵtext(1, " Cancel ");
|
|
210
225
|
i0.ɵɵelementEnd();
|
|
211
226
|
} }
|
|
212
227
|
function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template(rf, ctx) { if (rf & 1) {
|
|
213
|
-
const
|
|
214
|
-
i0.ɵɵelementStart(0, "kendo-dialog",
|
|
215
|
-
i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(
|
|
216
|
-
i0.ɵɵelementStart(1, "p",
|
|
228
|
+
const _r58 = i0.ɵɵgetCurrentView();
|
|
229
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 42);
|
|
230
|
+
i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r58); const ctx_r57 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r57.closeConfirmMergeDialog("cancel")); });
|
|
231
|
+
i0.ɵɵelementStart(1, "p", 43);
|
|
217
232
|
i0.ɵɵtext(2, " Are you sure you want to merge the records? This action cannot be undone. If you select \"Yes\", the records will be merged and the duplicate records will be deleted. ");
|
|
218
233
|
i0.ɵɵelementEnd();
|
|
219
|
-
i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button",
|
|
220
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_4_listener() { i0.ɵɵrestoreView(
|
|
234
|
+
i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button", 17);
|
|
235
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r58); const ctx_r59 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r59.closeConfirmMergeDialog("no")); });
|
|
221
236
|
i0.ɵɵtext(5, "No");
|
|
222
237
|
i0.ɵɵelementEnd();
|
|
223
|
-
i0.ɵɵelementStart(6, "button",
|
|
224
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_6_listener() { i0.ɵɵrestoreView(
|
|
238
|
+
i0.ɵɵelementStart(6, "button", 44);
|
|
239
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r58); const ctx_r60 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r60.closeConfirmMergeDialog("yes")); });
|
|
225
240
|
i0.ɵɵtext(7, " Yes ");
|
|
226
241
|
i0.ɵɵelementEnd()()();
|
|
227
242
|
} if (rf & 2) {
|
|
228
243
|
i0.ɵɵproperty("minWidth", 250)("width", 450);
|
|
229
244
|
} }
|
|
230
245
|
function UserViewGridComponent_div_11_kendo_window_2_Template(rf, ctx) { if (rf & 1) {
|
|
231
|
-
const
|
|
232
|
-
i0.ɵɵelementStart(0, "kendo-window",
|
|
233
|
-
i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_Template_kendo_window_close_0_listener($event) { i0.ɵɵrestoreView(
|
|
234
|
-
i0.ɵɵelementStart(1, "div",
|
|
235
|
-
i0.ɵɵelement(2, "mj-compare-records",
|
|
246
|
+
const _r62 = i0.ɵɵgetCurrentView();
|
|
247
|
+
i0.ɵɵelementStart(0, "kendo-window", 32);
|
|
248
|
+
i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_Template_kendo_window_close_0_listener($event) { i0.ɵɵrestoreView(_r62); const ctx_r61 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r61.closeCompareDialog($event)); });
|
|
249
|
+
i0.ɵɵelementStart(1, "div", 33);
|
|
250
|
+
i0.ɵɵelement(2, "mj-compare-records", 34, 35);
|
|
236
251
|
i0.ɵɵelementEnd();
|
|
237
|
-
i0.ɵɵelementStart(4, "div",
|
|
238
|
-
i0.ɵɵtemplate(5, UserViewGridComponent_div_11_kendo_window_2_button_5_Template, 2, 0, "button",
|
|
252
|
+
i0.ɵɵelementStart(4, "div", 36);
|
|
253
|
+
i0.ɵɵtemplate(5, UserViewGridComponent_div_11_kendo_window_2_button_5_Template, 2, 0, "button", 37)(6, UserViewGridComponent_div_11_kendo_window_2_button_6_Template, 2, 0, "button", 37)(7, UserViewGridComponent_div_11_kendo_window_2_button_7_Template, 2, 0, "button", 38)(8, UserViewGridComponent_div_11_kendo_window_2_button_8_Template, 2, 0, "button", 38);
|
|
239
254
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵtemplate(9, UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template, 8, 2, "kendo-dialog",
|
|
255
|
+
i0.ɵɵtemplate(9, UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template, 8, 2, "kendo-dialog", 39);
|
|
241
256
|
i0.ɵɵelementEnd();
|
|
242
257
|
} if (rf & 2) {
|
|
243
|
-
const
|
|
258
|
+
const ctx_r42 = i0.ɵɵnextContext(2);
|
|
244
259
|
i0.ɵɵproperty("minHeight", 300)("minWidth", 800)("top", 100)("left", 100)("width", 1200)("height", 675)("resizable", true);
|
|
245
260
|
i0.ɵɵadvance();
|
|
246
261
|
i0.ɵɵproperty("fillHeight", true)("bottomMargin", 100);
|
|
247
262
|
i0.ɵɵadvance();
|
|
248
|
-
i0.ɵɵproperty("entityName",
|
|
263
|
+
i0.ɵɵproperty("entityName", ctx_r42._entityInfo ? ctx_r42._entityInfo.Name : "")("recordsToCompare", ctx_r42.recordsToCompare)("visibleColumns", ctx_r42.visibleColumns)("selectionMode", ctx_r42.mergeMode ? true : false);
|
|
249
264
|
i0.ɵɵadvance(3);
|
|
250
|
-
i0.ɵɵproperty("ngIf",
|
|
265
|
+
i0.ɵɵproperty("ngIf", ctx_r42.mergeMode);
|
|
251
266
|
i0.ɵɵadvance();
|
|
252
|
-
i0.ɵɵproperty("ngIf",
|
|
267
|
+
i0.ɵɵproperty("ngIf", ctx_r42.duplicateMode);
|
|
253
268
|
i0.ɵɵadvance();
|
|
254
|
-
i0.ɵɵproperty("ngIf",
|
|
269
|
+
i0.ɵɵproperty("ngIf", ctx_r42.compareMode);
|
|
255
270
|
i0.ɵɵadvance();
|
|
256
|
-
i0.ɵɵproperty("ngIf",
|
|
271
|
+
i0.ɵɵproperty("ngIf", ctx_r42.mergeMode || ctx_r42.duplicateMode);
|
|
257
272
|
i0.ɵɵadvance();
|
|
258
|
-
i0.ɵɵproperty("ngIf",
|
|
273
|
+
i0.ɵɵproperty("ngIf", ctx_r42.isConfirmDialogOpen);
|
|
259
274
|
} }
|
|
260
275
|
function UserViewGridComponent_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
261
276
|
i0.ɵɵelementStart(0, "div");
|
|
262
|
-
i0.ɵɵelement(1, "div",
|
|
263
|
-
i0.ɵɵtemplate(2, UserViewGridComponent_div_11_kendo_window_2_Template, 10, 18, "kendo-window",
|
|
277
|
+
i0.ɵɵelement(1, "div", 30);
|
|
278
|
+
i0.ɵɵtemplate(2, UserViewGridComponent_div_11_kendo_window_2_Template, 10, 18, "kendo-window", 31);
|
|
264
279
|
i0.ɵɵelementEnd();
|
|
265
280
|
} if (rf & 2) {
|
|
266
281
|
const ctx_r7 = i0.ɵɵnextContext();
|
|
267
282
|
i0.ɵɵadvance(2);
|
|
268
283
|
i0.ɵɵproperty("ngIf", ctx_r7.isCompareDialogOpened);
|
|
269
284
|
} }
|
|
285
|
+
function UserViewGridComponent_kendo_dialog_12_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
286
|
+
i0.ɵɵelement(0, "kendo-loader", 48);
|
|
287
|
+
} }
|
|
288
|
+
function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
289
|
+
const _r75 = i0.ɵɵgetCurrentView();
|
|
290
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
291
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r75); const listEntity_r66 = i0.ɵɵnextContext().$implicit; const ctx_r73 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r73.removeFromList(listEntity_r66)); });
|
|
292
|
+
i0.ɵɵelement(1, "span", 52);
|
|
293
|
+
i0.ɵɵtext(2, " Remove ");
|
|
294
|
+
i0.ɵɵelementEnd();
|
|
295
|
+
} }
|
|
296
|
+
function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
297
|
+
const _r78 = i0.ɵɵgetCurrentView();
|
|
298
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
299
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r78); const listEntity_r66 = i0.ɵɵnextContext().$implicit; const ctx_r76 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r76.addToList(listEntity_r66)); });
|
|
300
|
+
i0.ɵɵelement(1, "span", 53);
|
|
301
|
+
i0.ɵɵtext(2, " Add ");
|
|
302
|
+
i0.ɵɵelementEnd();
|
|
303
|
+
} }
|
|
304
|
+
function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
306
|
+
i0.ɵɵtext(1);
|
|
307
|
+
i0.ɵɵtemplate(2, UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_2_Template, 3, 0, "button", 16)(3, UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_3_Template, 3, 0);
|
|
308
|
+
i0.ɵɵelementEnd();
|
|
309
|
+
i0.ɵɵelement(4, "hr");
|
|
310
|
+
} if (rf & 2) {
|
|
311
|
+
const listEntity_r66 = ctx.$implicit;
|
|
312
|
+
const ctx_r65 = i0.ɵɵnextContext(3);
|
|
313
|
+
i0.ɵɵadvance();
|
|
314
|
+
i0.ɵɵtextInterpolate1(" ", listEntity_r66.Name, " ");
|
|
315
|
+
i0.ɵɵadvance();
|
|
316
|
+
i0.ɵɵconditional(2, ctx_r65.selectedListEntities.includes(listEntity_r66) ? 2 : 3);
|
|
317
|
+
} }
|
|
318
|
+
function UserViewGridComponent_kendo_dialog_12_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
319
|
+
i0.ɵɵrepeaterCreate(0, UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Template, 5, 2, null, null, i0.ɵɵrepeaterTrackByIdentity);
|
|
320
|
+
} if (rf & 2) {
|
|
321
|
+
const ctx_r64 = i0.ɵɵnextContext(2);
|
|
322
|
+
i0.ɵɵrepeater(ctx_r64.listEntities);
|
|
323
|
+
} }
|
|
324
|
+
function UserViewGridComponent_kendo_dialog_12_Template(rf, ctx) { if (rf & 1) {
|
|
325
|
+
const _r80 = i0.ɵɵgetCurrentView();
|
|
326
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 45);
|
|
327
|
+
i0.ɵɵlistener("close", function UserViewGridComponent_kendo_dialog_12_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r79.toggleAddToListDialog(false)); });
|
|
328
|
+
i0.ɵɵelementStart(1, "div")(2, "kendo-textbox", 46);
|
|
329
|
+
i0.ɵɵlistener("valueChange", function UserViewGridComponent_kendo_dialog_12_Template_kendo_textbox_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r80); const ctx_r81 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r81.onSearch($event)); });
|
|
330
|
+
i0.ɵɵelementEnd()();
|
|
331
|
+
i0.ɵɵelementStart(3, "div", 47);
|
|
332
|
+
i0.ɵɵtemplate(4, UserViewGridComponent_kendo_dialog_12_Conditional_4_Template, 1, 0, "kendo-loader", 48)(5, UserViewGridComponent_kendo_dialog_12_Conditional_5_Template, 2, 0);
|
|
333
|
+
i0.ɵɵelementEnd();
|
|
334
|
+
i0.ɵɵelementStart(6, "kendo-dialog-actions")(7, "button", 49);
|
|
335
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r80); const ctx_r82 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r82.addRecordsToSelectedLists()); });
|
|
336
|
+
i0.ɵɵtext(8, " Save ");
|
|
337
|
+
i0.ɵɵelementEnd();
|
|
338
|
+
i0.ɵɵelementStart(9, "button", 50);
|
|
339
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r80); const ctx_r83 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r83.toggleAddToListDialog(false)); });
|
|
340
|
+
i0.ɵɵtext(10, " Cancel ");
|
|
341
|
+
i0.ɵɵelementEnd()()();
|
|
342
|
+
} if (rf & 2) {
|
|
343
|
+
const ctx_r8 = i0.ɵɵnextContext();
|
|
344
|
+
i0.ɵɵproperty("minHeight", 450)("maxHeight", 450)("minWidth", 500)("maxWidth", 650);
|
|
345
|
+
i0.ɵɵadvance(2);
|
|
346
|
+
i0.ɵɵproperty("clearButton", true);
|
|
347
|
+
i0.ɵɵadvance(2);
|
|
348
|
+
i0.ɵɵconditional(4, ctx_r8.showAddToListLoader ? 4 : 5);
|
|
349
|
+
i0.ɵɵadvance(3);
|
|
350
|
+
i0.ɵɵproperty("disabled", ctx_r8.showAddToListLoader);
|
|
351
|
+
i0.ɵɵadvance(2);
|
|
352
|
+
i0.ɵɵproperty("disabled", ctx_r8.showAddToListLoader);
|
|
353
|
+
} }
|
|
270
354
|
export class UserViewGridComponent {
|
|
355
|
+
get anyModeEnabled() {
|
|
356
|
+
return this.compareMode || this.mergeMode || this.duplicateMode || this.addToListMode;
|
|
357
|
+
}
|
|
271
358
|
get PendingRecords() {
|
|
272
359
|
return this._pendingRecords;
|
|
273
360
|
}
|
|
@@ -277,6 +364,18 @@ export class UserViewGridComponent {
|
|
|
277
364
|
else
|
|
278
365
|
return 0;
|
|
279
366
|
}
|
|
367
|
+
/**
|
|
368
|
+
* This property is true if the user has the ability to create a new record which is a combination of the user-level permission coupled with the
|
|
369
|
+
* entity-level setting AllowCreateAPI being set to 1.
|
|
370
|
+
*/
|
|
371
|
+
get UserCanCreateNewRecord() {
|
|
372
|
+
if (this._entityInfo && this._entityInfo.AllowCreateAPI) {
|
|
373
|
+
const perm = this._entityInfo.GetUserPermisions(new Metadata().CurrentUser);
|
|
374
|
+
return perm.CanCreate;
|
|
375
|
+
}
|
|
376
|
+
else
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
280
379
|
StartEditMode() {
|
|
281
380
|
this.InEditMode = true;
|
|
282
381
|
}
|
|
@@ -360,7 +459,8 @@ export class UserViewGridComponent {
|
|
|
360
459
|
LogError(e);
|
|
361
460
|
}
|
|
362
461
|
}
|
|
363
|
-
constructor(formBuilder, router, renderer) {
|
|
462
|
+
constructor(elementRef, formBuilder, router, renderer) {
|
|
463
|
+
this.elementRef = elementRef;
|
|
364
464
|
this.formBuilder = formBuilder;
|
|
365
465
|
this.router = router;
|
|
366
466
|
this.renderer = renderer;
|
|
@@ -369,6 +469,14 @@ export class UserViewGridComponent {
|
|
|
369
469
|
this.InEditMode = false;
|
|
370
470
|
this.EditMode = "None";
|
|
371
471
|
this.AutoNavigate = true;
|
|
472
|
+
/**
|
|
473
|
+
* If set to true, the Create New Record button will be displayed if the user is allowed to create new records for the entity being shown. If set to false, the Create New Record button will be hidden.
|
|
474
|
+
*/
|
|
475
|
+
this.ShowCreateNewRecordButton = true;
|
|
476
|
+
/**
|
|
477
|
+
* When set to Dialog, the Create New Record button will open a dialog to create a new record. When set to Tab, the Create New Record button will open a new tab to create a new record.
|
|
478
|
+
*/
|
|
479
|
+
this.CreateRecordMode = "Tab";
|
|
372
480
|
this.rowClicked = new EventEmitter();
|
|
373
481
|
this.rowEdited = new EventEmitter();
|
|
374
482
|
this.kendoGridElement = null;
|
|
@@ -392,10 +500,13 @@ export class UserViewGridComponent {
|
|
|
392
500
|
this.gridHeight = 750;
|
|
393
501
|
this._newGridState = {};
|
|
394
502
|
this.editModeEnded = new Subject();
|
|
503
|
+
this.searchDebounce$ = new Subject();
|
|
395
504
|
this.recordsToCompare = [];
|
|
396
505
|
this.compareMode = false;
|
|
397
506
|
this.mergeMode = false;
|
|
398
507
|
this.duplicateMode = false;
|
|
508
|
+
this.addToListMode = false;
|
|
509
|
+
this.showNewRecordDialog = false;
|
|
399
510
|
this.selectableSettings = {
|
|
400
511
|
enabled: false
|
|
401
512
|
};
|
|
@@ -404,6 +515,12 @@ export class UserViewGridComponent {
|
|
|
404
515
|
this.isConfirmDialogOpen = false;
|
|
405
516
|
this.showRefreshButton = true;
|
|
406
517
|
this.viewExecutionTime = 0;
|
|
518
|
+
this.showAddToListDialog = false;
|
|
519
|
+
this.showAddToListLoader = false;
|
|
520
|
+
this.sourceListEntities = null;
|
|
521
|
+
this.listEntities = [];
|
|
522
|
+
this.selectedListEntities = [];
|
|
523
|
+
this.listEntitySearch = '';
|
|
407
524
|
this.data = [
|
|
408
525
|
{ text: "Folder" },
|
|
409
526
|
{ text: "Report with Skip" },
|
|
@@ -415,6 +532,7 @@ export class UserViewGridComponent {
|
|
|
415
532
|
// Export Functionality
|
|
416
533
|
this.exportColumns = [];
|
|
417
534
|
this.exportData = [];
|
|
535
|
+
this.entityFormDialog = null;
|
|
418
536
|
}
|
|
419
537
|
SaveView() {
|
|
420
538
|
// debounced outer function...
|
|
@@ -560,28 +678,43 @@ export class UserViewGridComponent {
|
|
|
560
678
|
}
|
|
561
679
|
cellClickHandler(args) {
|
|
562
680
|
return __awaiter(this, void 0, void 0, function* () {
|
|
563
|
-
if (this.compareMode || this.mergeMode)
|
|
681
|
+
if (this.compareMode || this.mergeMode) {
|
|
564
682
|
return;
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
683
|
+
}
|
|
684
|
+
if (!this._entityInfo) {
|
|
685
|
+
LogError("cellClickHandler() called but this._entityInfo is null or undefined");
|
|
686
|
+
return;
|
|
687
|
+
}
|
|
688
|
+
const compositeKey = new CompositeKey();
|
|
689
|
+
compositeKey.LoadFromEntityInfoAndRecord(this._entityInfo, this.viewData[args.rowIndex]);
|
|
690
|
+
this.rowClicked.emit({
|
|
691
|
+
entityId: this._entityInfo.ID,
|
|
692
|
+
entityName: this._entityInfo.Name,
|
|
693
|
+
CompositeKey: compositeKey
|
|
694
|
+
});
|
|
695
|
+
if (this._entityInfo.AllowUpdateAPI && this.EditMode !== "None") {
|
|
696
|
+
const perm = this._entityInfo.GetUserPermisions(new Metadata().CurrentUser);
|
|
697
|
+
if (perm.CanUpdate) {
|
|
698
|
+
this.StartEditMode();
|
|
699
|
+
args.sender.editCell(args.rowIndex, args.columnIndex, this.createFormGroup(args.dataItem));
|
|
580
700
|
}
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
701
|
+
}
|
|
702
|
+
if (this.EditMode === 'None' && this.AutoNavigate) {
|
|
703
|
+
// tell app router to go to this record
|
|
704
|
+
let decodedUrl = decodeURIComponent(this.router.url).slice(1);
|
|
705
|
+
if (decodedUrl.includes('?')) {
|
|
706
|
+
decodedUrl = decodedUrl.split('?')[0];
|
|
584
707
|
}
|
|
708
|
+
const newURL = ['resource', 'record', compositeKey.ToURLSegment()];
|
|
709
|
+
const newURLString = newURL.join('/');
|
|
710
|
+
const refreshPage = newURLString === decodedUrl;
|
|
711
|
+
this.router.navigate(newURL, { queryParams: { Entity: this._entityInfo.Name } }).then(() => {
|
|
712
|
+
//handle the edge case of us navigating to a new entity record that
|
|
713
|
+
//has the same ID as the current entity record
|
|
714
|
+
if (refreshPage) {
|
|
715
|
+
window.location.reload();
|
|
716
|
+
}
|
|
717
|
+
});
|
|
585
718
|
}
|
|
586
719
|
});
|
|
587
720
|
}
|
|
@@ -608,7 +741,6 @@ export class UserViewGridComponent {
|
|
|
608
741
|
}
|
|
609
742
|
}
|
|
610
743
|
cellCloseHandler(args) {
|
|
611
|
-
var _a;
|
|
612
744
|
return __awaiter(this, void 0, void 0, function* () {
|
|
613
745
|
try {
|
|
614
746
|
if (this._entityInfo && this.EditMode !== "None") {
|
|
@@ -623,7 +755,9 @@ export class UserViewGridComponent {
|
|
|
623
755
|
// update the data item with the new values - this drives UI refresh while we save the record...
|
|
624
756
|
Object.assign(dataItem, formGroup.value);
|
|
625
757
|
const md = new Metadata();
|
|
626
|
-
|
|
758
|
+
// JONATHAN FIX THIS TO USE MULTI-COLUMN PRIMARY KEYS
|
|
759
|
+
alert('Jonathan, fix this to use multi-column primary keys - all commented out now til you fix');
|
|
760
|
+
// const pkey = this._entityInfo.PrimaryKey.Name;
|
|
627
761
|
let record;
|
|
628
762
|
let bSaved = false;
|
|
629
763
|
if (this.EditMode === "Save") {
|
|
@@ -633,11 +767,12 @@ export class UserViewGridComponent {
|
|
|
633
767
|
yield record.InnerLoad(compositeKey);
|
|
634
768
|
record.SetMany(formGroup.value);
|
|
635
769
|
bSaved = yield record.Save();
|
|
636
|
-
if (!bSaved)
|
|
637
|
-
|
|
770
|
+
// if (!bSaved)
|
|
771
|
+
// this.CreateSimpleNotification("Error saving record: " + record.Get(pkey), 'error', 5000)
|
|
638
772
|
}
|
|
639
773
|
else {
|
|
640
|
-
|
|
774
|
+
// JS - fix this too
|
|
775
|
+
// record = this._pendingRecords.find((r: GridPendingRecordItem) => r.record.Get(pkey) === dataItem[pkey])?.record;
|
|
641
776
|
if (!record) { // haven't edited this one before
|
|
642
777
|
record = yield md.GetEntityObject(this._viewEntity.Get('Entity'));
|
|
643
778
|
let compositeKey = new CompositeKey();
|
|
@@ -691,6 +826,38 @@ export class UserViewGridComponent {
|
|
|
691
826
|
//this.setGridHeight();
|
|
692
827
|
if (this.Params)
|
|
693
828
|
this.Refresh(this.Params);
|
|
829
|
+
// setup event listener for MJGlobal because we might have a parent component that sends us messages
|
|
830
|
+
MJGlobal.Instance.GetEventListener(false).subscribe((e) => {
|
|
831
|
+
switch (e.event) {
|
|
832
|
+
case MJEventType.ComponentEvent:
|
|
833
|
+
if (e.eventCode === BaseFormComponentEventCodes.BASE_CODE) {
|
|
834
|
+
// we have an event from a BaseFormComponent, now we need to determine if WE are a descendant of that component
|
|
835
|
+
const event = e.args;
|
|
836
|
+
if (SharedService.IsDescendant(event.elementRef, this.elementRef)) {
|
|
837
|
+
// we are a descendant of the component that sent the event, so we need to handle it
|
|
838
|
+
switch (event.subEventCode) {
|
|
839
|
+
case BaseFormComponentEventCodes.EDITING_COMPLETE:
|
|
840
|
+
this.EditingComplete();
|
|
841
|
+
break;
|
|
842
|
+
case BaseFormComponentEventCodes.REVERT_PENDING_CHANGES:
|
|
843
|
+
this.RevertPendingChanges();
|
|
844
|
+
break;
|
|
845
|
+
case BaseFormComponentEventCodes.POPULATE_PENDING_RECORDS:
|
|
846
|
+
// provide all of our pending records back to the caller
|
|
847
|
+
this.PendingRecords.forEach((r) => {
|
|
848
|
+
var _a, _b, _c;
|
|
849
|
+
const arr = (_a = event.returnValue) === null || _a === void 0 ? void 0 : _a.pendingRecords;
|
|
850
|
+
if (arr && typeof arr.push === 'function') {
|
|
851
|
+
(_c = (_b = event.returnValue) === null || _b === void 0 ? void 0 : _b.pendingRecords) === null || _c === void 0 ? void 0 : _c.push(r.record);
|
|
852
|
+
}
|
|
853
|
+
});
|
|
854
|
+
break;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
break;
|
|
859
|
+
}
|
|
860
|
+
});
|
|
694
861
|
}
|
|
695
862
|
moveDialogToBody() {
|
|
696
863
|
if (this._movedToBody)
|
|
@@ -708,7 +875,6 @@ export class UserViewGridComponent {
|
|
|
708
875
|
this._deferLoadCount++; // only do this one time
|
|
709
876
|
if (this.Params)
|
|
710
877
|
this.Refresh(this.Params);
|
|
711
|
-
return;
|
|
712
878
|
}
|
|
713
879
|
}
|
|
714
880
|
RefreshFromSavedParams() {
|
|
@@ -780,7 +946,7 @@ export class UserViewGridComponent {
|
|
|
780
946
|
cols = (_c = this._entityInfo) === null || _c === void 0 ? void 0 : _c.Fields.filter((f) => f.DefaultInView).map((f) => {
|
|
781
947
|
return {
|
|
782
948
|
ID: f.ID,
|
|
783
|
-
Name: f.
|
|
949
|
+
Name: f.CodeName,
|
|
784
950
|
DisplayName: f.DisplayName,
|
|
785
951
|
EntityField: f,
|
|
786
952
|
hidden: false,
|
|
@@ -875,7 +1041,10 @@ export class UserViewGridComponent {
|
|
|
875
1041
|
}
|
|
876
1042
|
}
|
|
877
1043
|
enableCheckbox(cancel = false, type) {
|
|
878
|
-
if (!cancel && this.recordsToCompare.length >=
|
|
1044
|
+
if (!cancel && type === 'addToList' && this.recordsToCompare.length >= 1) {
|
|
1045
|
+
this.toggleAddToListDialog(true);
|
|
1046
|
+
}
|
|
1047
|
+
else if (!cancel && this.recordsToCompare.length >= 2) {
|
|
879
1048
|
// this scenario occurs when we've already started the merge/compare/duplicate and the user has selected records, then clicked the merge/compare button again
|
|
880
1049
|
this.isCompareDialogOpened = true;
|
|
881
1050
|
this.moveDialogToBody();
|
|
@@ -885,6 +1054,7 @@ export class UserViewGridComponent {
|
|
|
885
1054
|
this.mergeMode = false;
|
|
886
1055
|
this.compareMode = false;
|
|
887
1056
|
this.duplicateMode = false;
|
|
1057
|
+
this.addToListMode = false;
|
|
888
1058
|
this.selectedKeys = [];
|
|
889
1059
|
this.recordsToCompare = [];
|
|
890
1060
|
}
|
|
@@ -899,6 +1069,9 @@ export class UserViewGridComponent {
|
|
|
899
1069
|
else if (type === 'duplicate') {
|
|
900
1070
|
this.duplicateMode = true;
|
|
901
1071
|
}
|
|
1072
|
+
else if (type === 'addToList') {
|
|
1073
|
+
this.addToListMode = true;
|
|
1074
|
+
}
|
|
902
1075
|
}
|
|
903
1076
|
}
|
|
904
1077
|
closeConfirmMergeDialog(event) {
|
|
@@ -910,7 +1083,7 @@ export class UserViewGridComponent {
|
|
|
910
1083
|
const result = yield md.MergeRecords({
|
|
911
1084
|
EntityName: this._entityInfo.Name,
|
|
912
1085
|
RecordsToMerge: this.recordsToCompare.map((r) => {
|
|
913
|
-
return r.
|
|
1086
|
+
return r.PrimaryKey;
|
|
914
1087
|
}).filter((compositeKey) => {
|
|
915
1088
|
if (!this.recordCompareComponent) {
|
|
916
1089
|
return false;
|
|
@@ -952,7 +1125,6 @@ export class UserViewGridComponent {
|
|
|
952
1125
|
}
|
|
953
1126
|
closeCompareDialog(event) {
|
|
954
1127
|
return __awaiter(this, void 0, void 0, function* () {
|
|
955
|
-
console.log(event);
|
|
956
1128
|
switch (event) {
|
|
957
1129
|
case 'merge':
|
|
958
1130
|
// user has requested to merge the records and retain the selected record from the compare records component, so run the merge
|
|
@@ -965,6 +1137,7 @@ export class UserViewGridComponent {
|
|
|
965
1137
|
this.mergeMode = false;
|
|
966
1138
|
this.compareMode = false;
|
|
967
1139
|
this.duplicateMode = false;
|
|
1140
|
+
this.addToListMode = false;
|
|
968
1141
|
this.isCompareDialogOpened = false;
|
|
969
1142
|
break;
|
|
970
1143
|
}
|
|
@@ -1047,8 +1220,154 @@ export class UserViewGridComponent {
|
|
|
1047
1220
|
throw new Error("Unable to get export data");
|
|
1048
1221
|
});
|
|
1049
1222
|
}
|
|
1223
|
+
/**
|
|
1224
|
+
* This method will create a new record of the given entity type. It will only work if the User has the ability to create records of
|
|
1225
|
+
* this entity type and also if the entity level setting AllowCreateAPI is set to 1. If either of these conditions are not met, then
|
|
1226
|
+
* this method will do nothing.
|
|
1227
|
+
*/
|
|
1228
|
+
doCreateNewRecord() {
|
|
1229
|
+
var _a;
|
|
1230
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1231
|
+
// creates a new record either using a dialog or with the router
|
|
1232
|
+
if (this.UserCanCreateNewRecord && this._entityInfo) {
|
|
1233
|
+
if (this.CreateRecordMode === 'Tab') {
|
|
1234
|
+
// route to a resource/record with a blank string for the 3rd segment which is normally the pkey value
|
|
1235
|
+
// here we don't provide the pkey value so the record component will know to create a new record
|
|
1236
|
+
this.router.navigate(['resource', 'record', '' /*add this 3rd param that's blank so the route validates*/], { queryParams: {
|
|
1237
|
+
Entity: this._entityInfo.Name,
|
|
1238
|
+
NewRecordValues: this.NewRecordValues ? (_a = FieldValueCollection.FromObject(this.NewRecordValues)) === null || _a === void 0 ? void 0 : _a.ToURLSegment() : null
|
|
1239
|
+
}
|
|
1240
|
+
});
|
|
1241
|
+
}
|
|
1242
|
+
else {
|
|
1243
|
+
// configured to display a dialog instead, we'll use the entity-form-dialog for this
|
|
1244
|
+
if (this.entityFormDialog) {
|
|
1245
|
+
const md = new Metadata();
|
|
1246
|
+
const newRecord = yield md.GetEntityObject(this._entityInfo.Name);
|
|
1247
|
+
if (this.NewRecordValues) {
|
|
1248
|
+
// we have new record values in a simple JS object, so grab the key/values from the object and set the values in the new record for non null/undefined values
|
|
1249
|
+
Object.keys(this.NewRecordValues).filter((key) => this.NewRecordValues[key] !== null && this.NewRecordValues[key] !== undefined).forEach((key) => {
|
|
1250
|
+
newRecord.Set(key, this.NewRecordValues[key]);
|
|
1251
|
+
});
|
|
1252
|
+
}
|
|
1253
|
+
this.entityFormDialog.Record = newRecord;
|
|
1254
|
+
this.showNewRecordDialog = true;
|
|
1255
|
+
}
|
|
1256
|
+
else {
|
|
1257
|
+
// don't have the dialog reference, throw an error
|
|
1258
|
+
throw new Error("Unable to create new record, entity-form-dialog is not available");
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
}
|
|
1262
|
+
});
|
|
1263
|
+
}
|
|
1264
|
+
toggleAddToListDialog(show) {
|
|
1265
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1266
|
+
this.showAddToListDialog = show;
|
|
1267
|
+
if (show) {
|
|
1268
|
+
if (!this.sourceListEntities) {
|
|
1269
|
+
yield this.loadListEntities();
|
|
1270
|
+
}
|
|
1271
|
+
else {
|
|
1272
|
+
this.listEntities = this.sourceListEntities;
|
|
1273
|
+
this.selectedListEntities = [];
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
else {
|
|
1277
|
+
this.enableCheckbox(true, 'addToList');
|
|
1278
|
+
}
|
|
1279
|
+
this.setupSearchDebounce();
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
loadListEntities() {
|
|
1283
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1284
|
+
if (!this._entityInfo) {
|
|
1285
|
+
LogError("Entity Info is not set");
|
|
1286
|
+
return;
|
|
1287
|
+
}
|
|
1288
|
+
const md = new Metadata();
|
|
1289
|
+
const rv = new RunView();
|
|
1290
|
+
const rvResult = yield rv.RunView({
|
|
1291
|
+
EntityName: 'Lists',
|
|
1292
|
+
ExtraFilter: `UserID = ${md.CurrentUser.ID} AND EntityID = ${this._entityInfo.ID}`,
|
|
1293
|
+
ResultType: 'entity_object'
|
|
1294
|
+
});
|
|
1295
|
+
if (!rvResult.Success) {
|
|
1296
|
+
LogError("Failed to load List Entities");
|
|
1297
|
+
return;
|
|
1298
|
+
}
|
|
1299
|
+
this.sourceListEntities = this.listEntities = rvResult.Results;
|
|
1300
|
+
});
|
|
1301
|
+
}
|
|
1302
|
+
addToList(listEntity) {
|
|
1303
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1304
|
+
console.log('add to list', listEntity.Name);
|
|
1305
|
+
this.selectedListEntities.push(listEntity);
|
|
1306
|
+
this.selectedListEntities.includes(listEntity);
|
|
1307
|
+
});
|
|
1308
|
+
}
|
|
1309
|
+
removeFromList(listEntity) {
|
|
1310
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1311
|
+
console.log('remove from list', listEntity.Name);
|
|
1312
|
+
this.selectedListEntities = this.selectedListEntities.filter((le) => le.ID !== listEntity.ID);
|
|
1313
|
+
});
|
|
1314
|
+
}
|
|
1315
|
+
addRecordsToSelectedLists() {
|
|
1316
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1317
|
+
this.showAddToListLoader = true;
|
|
1318
|
+
const md = new Metadata();
|
|
1319
|
+
let errorCount = 0;
|
|
1320
|
+
for (const listEntity of this.selectedListEntities) {
|
|
1321
|
+
for (const index of this.selectedKeys) {
|
|
1322
|
+
const listDetail = yield md.GetEntityObject('List Details');
|
|
1323
|
+
const viewData = this.viewData[index];
|
|
1324
|
+
const idField = viewData.ID;
|
|
1325
|
+
listDetail.NewRecord();
|
|
1326
|
+
listDetail.ListID = listEntity.ID;
|
|
1327
|
+
listDetail.RecordID = idField.toString();
|
|
1328
|
+
listDetail.Sequence = 0;
|
|
1329
|
+
listDetail.ContextCurrentUser = md.CurrentUser;
|
|
1330
|
+
let saveResult = yield listDetail.Save();
|
|
1331
|
+
if (!saveResult) {
|
|
1332
|
+
LogError(`Failed to save record to list: ${listEntity.Name}`);
|
|
1333
|
+
LogError(listDetail.LatestResult);
|
|
1334
|
+
errorCount++;
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
if (errorCount === 0) {
|
|
1339
|
+
this.CreateSimpleNotification('Records successfully added to the selected lists', 'success', 2000);
|
|
1340
|
+
}
|
|
1341
|
+
else {
|
|
1342
|
+
this.CreateSimpleNotification('Some records failed to be added to the selected lists', 'error', 2000);
|
|
1343
|
+
}
|
|
1344
|
+
this.showAddToListLoader = false;
|
|
1345
|
+
this.toggleAddToListDialog(false);
|
|
1346
|
+
});
|
|
1347
|
+
}
|
|
1348
|
+
onSearch(inputValue) {
|
|
1349
|
+
this.searchDebounce$.next(inputValue);
|
|
1350
|
+
}
|
|
1351
|
+
setupSearchDebounce() {
|
|
1352
|
+
this.searchDebounce$.pipe(debounceTime(500), // updated to 500ms to reduce API calls and since most people don't type super fast
|
|
1353
|
+
distinctUntilChanged()).subscribe((inputValue) => {
|
|
1354
|
+
this.search(inputValue);
|
|
1355
|
+
});
|
|
1356
|
+
}
|
|
1357
|
+
search(inputValue) {
|
|
1358
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1359
|
+
if (!this.sourceListEntities) {
|
|
1360
|
+
return;
|
|
1361
|
+
}
|
|
1362
|
+
this.listEntitySearch = inputValue;
|
|
1363
|
+
const toLowerCase = inputValue.toLowerCase();
|
|
1364
|
+
this.listEntities = this.sourceListEntities.filter((listEntity) => {
|
|
1365
|
+
return listEntity.Name.toLowerCase().includes(toLowerCase);
|
|
1366
|
+
});
|
|
1367
|
+
});
|
|
1368
|
+
}
|
|
1050
1369
|
}
|
|
1051
|
-
UserViewGridComponent.ɵfac = function UserViewGridComponent_Factory(t) { return new (t || UserViewGridComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
1370
|
+
UserViewGridComponent.ɵfac = function UserViewGridComponent_Factory(t) { return new (t || UserViewGridComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
1052
1371
|
UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserViewGridComponent, selectors: [["mj-user-view-grid"]], viewQuery: function UserViewGridComponent_Query(rf, ctx) { if (rf & 1) {
|
|
1053
1372
|
i0.ɵɵviewQuery(_c0, 5, GridComponent);
|
|
1054
1373
|
i0.ɵɵviewQuery(_c0, 5, ElementRef);
|
|
@@ -1057,6 +1376,7 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
1057
1376
|
i0.ɵɵviewQuery(_c3, 5, TextAreaComponent);
|
|
1058
1377
|
i0.ɵɵviewQuery(_c4, 5, ElementRef);
|
|
1059
1378
|
i0.ɵɵviewQuery(_c5, 5);
|
|
1379
|
+
i0.ɵɵviewQuery(_c6, 5);
|
|
1060
1380
|
} if (rf & 2) {
|
|
1061
1381
|
let _t;
|
|
1062
1382
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.kendoGridElement = _t.first);
|
|
@@ -1066,24 +1386,28 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
1066
1386
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analysisQuestion = _t.first);
|
|
1067
1387
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analysisResults = _t.first);
|
|
1068
1388
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.compareDialogContainer = _t.first);
|
|
1069
|
-
|
|
1389
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityFormDialog = _t.first);
|
|
1390
|
+
} }, inputs: { Params: "Params", BottomMargin: "BottomMargin", InEditMode: "InEditMode", EditMode: "EditMode", AutoNavigate: "AutoNavigate", NewRecordValues: "NewRecordValues", ShowCreateNewRecordButton: "ShowCreateNewRecordButton", CreateRecordMode: "CreateRecordMode", AllowLoad: "AllowLoad" }, outputs: { rowClicked: "rowClicked", rowEdited: "rowEdited" }, decls: 15, vars: 21, consts: [["mjFillContainer", "", 1, "user-view-grid-wrap"], ["mjFillContainer", "", "scrollable", "virtual", "kendoGridSelectBy", "", 3, "resizable", "data", "skip", "pageSize", "rowHeight", "loading", "height", "sortable", "sort", "reorderable", "selectable", "selectedKeys", "pageChange", "selectedKeysChange", "cellClick", "cellClose", "columnReorder", "columnResize", "selectionChange", "sortChange"], ["kendoGrid", ""], ["kendoGridToolbarTemplate", ""], [3, "width", "headerStyle", "style", 4, "ngIf"], [3, "field", "title", "width", "editable", "editor", "headerStyle", "style", 4, "ngFor", "ngForOf"], [3, "data", "fileName"], ["excelExport", ""], [3, "field", "title", 4, "ngFor", "ngForOf"], ["compareDialogContainer", ""], [4, "ngIf"], ["class", "dialog-wrapper", "title", "Select List(s) To Add Record", 3, "minHeight", "maxHeight", "minWidth", "maxWidth", "close", 4, "ngIf"], ["Mode", "complete", 3, "Visible"], ["entityFormDialog", ""], ["kendoButton", "", "class", "k-button-solid-base list-button", 3, "disabled"], ["kendoButton", "", "class", "k-button-solid-base list-button"], ["kendoButton", ""], ["kendoButton", "", 3, "click"], [1, "fa-regular", "fa-file-excel"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "click"], ["kendoButton", "", "class", "list-button"], [1, "fa-regular", "fa-plus"], ["kendoButton", "", 1, "list-button", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "disabled", "click"], [3, "width", "headerStyle"], [3, "field", "title", "width", "editable", "editor", "headerStyle"], ["kendoGridFooterTemplate", ""], [2, "font-size", "smaller", "font-weight", "normal"], [3, "field", "title"], [1, "k-overlay"], ["title", "Compare Records", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close", 4, "ngIf"], ["title", "Compare Records", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close"], ["mjFillContainer", "", 3, "fillHeight", "bottomMargin"], [3, "entityName", "recordsToCompare", "visibleColumns", "selectionMode"], ["recordCompareRef", ""], [1, "k-actions", "k-actions-end"], ["kendoButton", "", "themeColor", "primary", "type", "button", 3, "click", 4, "ngIf"], ["kendoButton", "", "type", "button", 3, "click", 4, "ngIf"], ["title", "Confirm Choice", 3, "minWidth", "width", "close", 4, "ngIf"], ["kendoButton", "", "themeColor", "primary", "type", "button", 3, "click"], ["kendoButton", "", "type", "button", 3, "click"], ["title", "Confirm Choice", 3, "minWidth", "width", "close"], [2, "margin", "30px", "text-align", "center"], ["kendoButton", "", "themeColor", "primary", 3, "click"], ["title", "Select List(s) To Add Record", 1, "dialog-wrapper", 3, "minHeight", "maxHeight", "minWidth", "maxWidth", "close"], ["id", "listSearch", "placeholder", "Search Lists...", "kendoTextBox", "", 1, "padding-bottom-small", 3, "clearButton", "valueChange"], [1, "overflow-y-scroll"], ["type", "converging-spinner"], ["kendoButton", "", "themeColor", "primary", 3, "disabled", "click"], ["kendoButton", "", 3, "disabled", "click"], [1, "list-item"], [1, "fa-regular", "fa-circle-minus"], [1, "fa-regular", "fa-circle-plus"]], template: function UserViewGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1070
1391
|
i0.ɵɵelementStart(0, "div", 0)(1, "kendo-grid", 1, 2);
|
|
1071
1392
|
i0.ɵɵlistener("pageChange", function UserViewGridComponent_Template_kendo_grid_pageChange_1_listener($event) { return ctx.pageChange($event); });
|
|
1072
1393
|
i0.ɵɵtwoWayListener("selectedKeysChange", function UserViewGridComponent_Template_kendo_grid_selectedKeysChange_1_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.selectedKeys, $event) || (ctx.selectedKeys = $event); return $event; });
|
|
1073
1394
|
i0.ɵɵlistener("cellClick", function UserViewGridComponent_Template_kendo_grid_cellClick_1_listener($event) { return ctx.cellClickHandler($event); })("cellClose", function UserViewGridComponent_Template_kendo_grid_cellClose_1_listener($event) { return ctx.cellCloseHandler($event); })("columnReorder", function UserViewGridComponent_Template_kendo_grid_columnReorder_1_listener($event) { return ctx.columnReorder($event); })("columnResize", function UserViewGridComponent_Template_kendo_grid_columnResize_1_listener($event) { return ctx.columnResize($event); })("selectionChange", function UserViewGridComponent_Template_kendo_grid_selectionChange_1_listener($event) { return ctx.selectionChange($event); })("sortChange", function UserViewGridComponent_Template_kendo_grid_sortChange_1_listener($event) { return ctx.sortChanged($event); });
|
|
1074
|
-
i0.ɵɵtemplate(3, UserViewGridComponent_ng_template_3_Template,
|
|
1395
|
+
i0.ɵɵtemplate(3, UserViewGridComponent_ng_template_3_Template, 6, 6, "ng-template", 3)(4, UserViewGridComponent_kendo_grid_checkbox_column_4_Template, 1, 6, "kendo-grid-checkbox-column", 4)(5, UserViewGridComponent_kendo_grid_column_5_Template, 2, 10, "kendo-grid-column", 5);
|
|
1075
1396
|
i0.ɵɵelementStart(6, "kendo-excelexport", 6, 7);
|
|
1076
1397
|
i0.ɵɵtemplate(8, UserViewGridComponent_kendo_excelexport_column_8_Template, 1, 2, "kendo-excelexport-column", 8);
|
|
1077
1398
|
i0.ɵɵelementEnd()();
|
|
1078
1399
|
i0.ɵɵelementStart(9, "div", null, 9);
|
|
1079
1400
|
i0.ɵɵtemplate(11, UserViewGridComponent_div_11_Template, 3, 1, "div", 10);
|
|
1080
|
-
i0.ɵɵelementEnd()
|
|
1401
|
+
i0.ɵɵelementEnd();
|
|
1402
|
+
i0.ɵɵtemplate(12, UserViewGridComponent_kendo_dialog_12_Template, 11, 8, "kendo-dialog", 11);
|
|
1403
|
+
i0.ɵɵelementEnd();
|
|
1404
|
+
i0.ɵɵelement(13, "mj-entity-form-dialog", 12, 13);
|
|
1081
1405
|
} if (rf & 2) {
|
|
1082
1406
|
i0.ɵɵadvance();
|
|
1083
1407
|
i0.ɵɵproperty("resizable", true)("data", ctx.gridView)("skip", ctx.skip)("pageSize", ctx.pageSize)("rowHeight", 36)("loading", ctx.isLoading)("height", ctx.gridHeight)("sortable", true)("sort", ctx.sortSettings)("resizable", true)("reorderable", true)("selectable", true);
|
|
1084
1408
|
i0.ɵɵtwoWayProperty("selectedKeys", ctx.selectedKeys);
|
|
1085
1409
|
i0.ɵɵadvance(3);
|
|
1086
|
-
i0.ɵɵproperty("ngIf", ctx.
|
|
1410
|
+
i0.ɵɵproperty("ngIf", ctx.anyModeEnabled);
|
|
1087
1411
|
i0.ɵɵadvance();
|
|
1088
1412
|
i0.ɵɵproperty("ngForOf", ctx.visibleColumns);
|
|
1089
1413
|
i0.ɵɵadvance();
|
|
@@ -1092,11 +1416,15 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
1092
1416
|
i0.ɵɵproperty("ngForOf", ctx.exportColumns);
|
|
1093
1417
|
i0.ɵɵadvance(3);
|
|
1094
1418
|
i0.ɵɵproperty("ngIf", ctx.isCompareDialogOpened);
|
|
1095
|
-
|
|
1419
|
+
i0.ɵɵadvance();
|
|
1420
|
+
i0.ɵɵproperty("ngIf", ctx.showAddToListDialog);
|
|
1421
|
+
i0.ɵɵadvance();
|
|
1422
|
+
i0.ɵɵproperty("Visible", ctx.showNewRecordDialog);
|
|
1423
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf, i4.GridComponent, i4.ToolbarTemplateDirective, i4.SelectionDirective, i4.ColumnComponent, i4.FooterTemplateDirective, i4.CheckboxColumnComponent, i5.DialogComponent, i5.DialogActionsComponent, i5.WindowComponent, i6.ExcelExportComponent, i6.ColumnComponent, i7.ButtonComponent, i8.CompareRecordsComponent, i9.FillContainer, i10.TextBoxComponent, i11.EntityFormDialogComponent, i12.LoaderComponent, i3.DecimalPipe], styles: [".user-view-grid-wrap[_ngcontent-%COMP%] {\n height: calc(100vh - 20px);\n}\n\n.user-view-grid-column-header[_ngcontent-%COMP%] {\n background-color: #fff;\n font-size: 20pt;\n font-weight: bold;\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 .title-wrapper[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper[_ngcontent-%COMP%] {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\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 .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.k-table-td[_ngcontent-%COMP%] {\n border-right: none !important;\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.btn-cmn.active[_ngcontent-%COMP%] {\n border: 1px solid var(--border-blue);\n}\n .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n .user-view-grid-wrap .k-grid-aria-root .k-grid-header .k-grid-header-table thead tr th {\n border-right: none;\n border-inline-start-width: 0;\n color: var(--thead-color);\n}\n .user-view-grid-wrap .k-grid-aria-root kendo-grid-list .k-grid-table tbody tr td { \n border-inline-start-width: 0;\n color: var(--tdata-color);\n font-weight: 500;\n border-bottom-width: 1px;\n} \n\n.overflow-y-scroll[_ngcontent-%COMP%] {\n overflow-y: auto;\n max-height: 275px;\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}"] });
|
|
1096
1424
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewGridComponent, [{
|
|
1097
1425
|
type: Component,
|
|
1098
|
-
args: [{ selector: 'mj-user-view-grid', template: "<div class=\"user-view-grid-wrap\" mjFillContainer>\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 <ng-template kendoGridToolbarTemplate>\n \n <button kendoButton *ngIf=\"!compareMode && !mergeMode\" (click)=\"doExcelExport()\" >\n <span class=\"fa-regular fa-file-excel\"></span>\n Export to Excel\n </button>\n\n <!-- 3 buttons for duplicate. First one only shows when duplication is going on in the grid, the next one is the one the user starts the process with before records are selected, last one is to cancel the pending duple. -->\n <button (click)=\"enableCheckbox(false, 'duplicate')\" *ngIf=\"(!compareMode && !mergeMode && !duplicateMode)\" [disabled]=\"duplicateMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n <button (click)=\"enableCheckbox(false, 'duplicate')\" *ngIf=\"duplicateMode\" [disabled]=\"duplicateMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n <!--\n <button (click)=\"enableCheckbox(true, 'duplicate')\" *ngIf=\"duplicateMode\" kendoButton class=\"k-button-solid-base list-button\">\n Cancel\n </button>\n -->\n\n\n <!-- 3 buttons for compare. First one only shows when comparison is going on in the grid, the next one is the one the user starts the process with before records are selected, last one is to cancel the pending compare. -->\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" *ngIf=\"!compareMode && !mergeMode && !duplicateMode\" [disabled]=\"compareMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Compare</button>\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" *ngIf=\"compareMode\" [disabled]=\"compareMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Compare</button>\n <!--\n <button (click)=\"enableMergeOrCompare(true, 'compare')\" *ngIf=\"compareMode\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Cancel</button>\n -->\n\n <!-- 3 buttons for merge. First one only shows when merge is getting goin in the grid, the next one is the one the user starts the process with before records are selected, last one is to cancel the pending merge. -->\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" *ngIf=\"!mergeMode && !compareMode && !duplicateMode\" [disabled]=\"mergeMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Merge</button>\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" *ngIf=\"mergeMode\" [disabled]=\"mergeMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Merge</button>\n <!--\n <button (click)=\"enableMergeOrCompare(true, 'merge')\" *ngIf=\"mergeMode\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Cancel</button>\n -->\n \n @if(compareMode || mergeMode || duplicateMode){\n <button (click)=\"enableCheckbox(true, '')\" kendoButton class=\"k-button-solid-base list-button\">\n Cancel\n </button>\n }\n @if(showRefreshButton && !compareMode && !mergeMode && !duplicateMode){\n <button\n kendoButton\n class=\"list-button\"\n (click)=\"RefreshFromSavedParams()\">\n <span class=\"fa-solid fa-arrows-rotate\"></span>\n Refresh\n </button>\n }\n </ng-template>\n \n <kendo-grid-checkbox-column \n *ngIf=\"compareMode || mergeMode || duplicateMode\" \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\"\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.viewData.length | number}}{{this.totalRowCount > this.viewData.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 <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 </kendo-grid>\n \n <div #compareDialogContainer>\n <div *ngIf=\"isCompareDialogOpened\">\n <div class=\"k-overlay\"></div>\n <kendo-window\n [minHeight]=\"300\"\n [minWidth]=\"800\"\n [top]=\"100\"\n [left]=\"100\"\n [width]=\"1200\"\n [height]=\"675\"\n [resizable]=\"true\"\n (close)=\"closeCompareDialog($event)\"\n title=\"Compare Records\"\n *ngIf=\"isCompareDialogOpened\"\n >\n <div mjFillContainer [fillHeight]=\"true\" [bottomMargin]=\"100\">\n <mj-compare-records\n #recordCompareRef\n [entityName]=\"_entityInfo ? _entityInfo.Name : ''\"\n [recordsToCompare]=\"recordsToCompare\" \n [visibleColumns]=\"visibleColumns\" \n [selectionMode]=\"mergeMode ? true : false\"\n >\n </mj-compare-records>\n </div>\n <div class=\"k-actions k-actions-end\">\n <button *ngIf=\"mergeMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"closeCompareDialog('merge')\">\n Merge Records\n </button>\n <button *ngIf=\"duplicateMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"findDuplicateRecords()\">\n Search for Duplicates\n </button>\n <button *ngIf=\"compareMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('close')\">\n Close\n </button>\n <button *ngIf=\"mergeMode || duplicateMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('cancel')\">\n Cancel\n </button>\n </div> \n <kendo-dialog\n title=\"Confirm Choice\"\n *ngIf=\"isConfirmDialogOpen\"\n (close)=\"closeConfirmMergeDialog('cancel')\"\n [minWidth]=\"250\"\n [width]=\"450\"\n >\n <p style=\"margin: 30px; text-align: center;\">\n Are you sure you want to merge the records? This action cannot be undone. If you select \"Yes\", the records will be merged and the duplicate records will be deleted.\n </p>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeConfirmMergeDialog('no')\">No</button>\n <button kendoButton (click)=\"closeConfirmMergeDialog('yes')\" themeColor=\"primary\">\n Yes\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n </kendo-window>\n </div> \n </div>\n </div>\n ", styles: [".user-view-grid-wrap {\n height: calc(100vh - 20px);\n}\n\n.user-view-grid-column-header {\n background-color: #fff;\n font-size: 20pt;\n font-weight: bold;\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 .title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\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 .title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n.k-table-td {\n border-right: none !important;\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.btn-cmn.active {\n border: 1px solid var(--border-blue);\n}\n::ng-deep .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root .k-grid-header .k-grid-header-table thead tr th {\n border-right: none;\n border-inline-start-width: 0;\n color: var(--thead-color);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root kendo-grid-list .k-grid-table tbody tr td { \n border-inline-start-width: 0;\n color: var(--tdata-color);\n font-weight: 500;\n border-bottom-width: 1px;\n} "] }]
|
|
1099
|
-
}], () => [{ type: i1.FormBuilder }, { type: i2.Router }, { type: i0.Renderer2 }], { Params: [{
|
|
1426
|
+
args: [{ selector: 'mj-user-view-grid', template: "<div class=\"user-view-grid-wrap\" mjFillContainer>\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 <ng-template kendoGridToolbarTemplate>\n @if(!anyModeEnabled){\n @if(ShowCreateNewRecordButton && UserCanCreateNewRecord) {\n <button kendoButton (click)=\"doCreateNewRecord()\" >\n <span class=\"fa-regular fa-plus\"></span>\n New {{entityRecord?.EntityInfo?.Name}}\n </button> \n }\n\n <button kendoButton (click)=\"doExcelExport()\" >\n <span class=\"fa-regular fa-file-excel\"></span>\n Export to Excel\n </button>\n <button (click)=\"enableCheckbox(false, 'duplicate')\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n <button (click)=\"enableCheckbox(false, 'addToList')\" kendoButton class=\"k-button-solid-base list-button\">\n Add To List\n </button>\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" kendoButton class=\"k-button-solid-base list-button\">\n Merge\n </button>\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" kendoButton class=\"k-button-solid-base list-button\">\n Compare\n </button>\n\n @if(showRefreshButton){\n <button kendoButton class=\"list-button\" (click)=\"RefreshFromSavedParams()\">\n <span class=\"fa-solid fa-arrows-rotate\"></span>\n Refresh\n </button>\n }\n }\n @if(duplicateMode){\n <button (click)=\"enableCheckbox(false, 'duplicate')\" [disabled]=\"duplicateMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n }\n @if(addToListMode){\n <button (click)=\"enableCheckbox(false, 'addToList')\" [disabled]=\"addToListMode && recordsToCompare.length === 0\" kendoButton class=\"k-button-solid-base list-button\">\n Add To List\n </button>\n }\n @if(compareMode){\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" [disabled]=\"compareMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Compare\n </button>\n }\n @if(mergeMode){\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" [disabled]=\"mergeMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Merge\n </button>\n }\n @if(anyModeEnabled){\n <button (click)=\"enableCheckbox(true, '')\" kendoButton class=\"k-button-solid-base list-button\">\n Cancel\n </button>\n }\n </ng-template>\n \n <kendo-grid-checkbox-column \n *ngIf=\"anyModeEnabled\" \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\"\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.viewData.length | number}}{{this.totalRowCount > this.viewData.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 <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 </kendo-grid>\n \n <div #compareDialogContainer>\n <div *ngIf=\"isCompareDialogOpened\">\n <div class=\"k-overlay\"></div>\n <kendo-window\n [minHeight]=\"300\"\n [minWidth]=\"800\"\n [top]=\"100\"\n [left]=\"100\"\n [width]=\"1200\"\n [height]=\"675\"\n [resizable]=\"true\"\n (close)=\"closeCompareDialog($event)\"\n title=\"Compare Records\"\n *ngIf=\"isCompareDialogOpened\"\n >\n <div mjFillContainer [fillHeight]=\"true\" [bottomMargin]=\"100\">\n <mj-compare-records\n #recordCompareRef\n [entityName]=\"_entityInfo ? _entityInfo.Name : ''\"\n [recordsToCompare]=\"recordsToCompare\" \n [visibleColumns]=\"visibleColumns\" \n [selectionMode]=\"mergeMode ? true : false\"\n >\n </mj-compare-records>\n </div>\n <div class=\"k-actions k-actions-end\">\n <button *ngIf=\"mergeMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"closeCompareDialog('merge')\">\n Merge Records\n </button>\n <button *ngIf=\"duplicateMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"findDuplicateRecords()\">\n Search for Duplicates\n </button>\n <button *ngIf=\"compareMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('close')\">\n Close\n </button>\n <button *ngIf=\"mergeMode || duplicateMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('cancel')\">\n Cancel\n </button>\n </div> \n <kendo-dialog\n title=\"Confirm Choice\"\n *ngIf=\"isConfirmDialogOpen\"\n (close)=\"closeConfirmMergeDialog('cancel')\"\n [minWidth]=\"250\"\n [width]=\"450\"\n >\n <p style=\"margin: 30px; text-align: center;\">\n Are you sure you want to merge the records? This action cannot be undone. If you select \"Yes\", the records will be merged and the duplicate records will be deleted.\n </p>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeConfirmMergeDialog('no')\">No</button>\n <button kendoButton (click)=\"closeConfirmMergeDialog('yes')\" themeColor=\"primary\">\n Yes\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n </kendo-window>\n </div> \n </div>\n <kendo-dialog\n class=\"dialog-wrapper\"\n title=\"Select List(s) To Add Record\"\n *ngIf=\"showAddToListDialog\"\n (close)=\"toggleAddToListDialog(false)\"\n [minHeight]=\"450\"\n [maxHeight]=\"450\"\n [minWidth]=\"500\"\n [maxWidth]=\"650\"\n >\n <div>\n <kendo-textbox\n id=\"listSearch\"\n placeholder=\"Search Lists...\"\n kendoTextBox\n (valueChange)=\"onSearch($event)\"\n [clearButton]=\"true\"\n class=\"padding-bottom-small\"\n ></kendo-textbox>\n </div>\n <div class=\"overflow-y-scroll\">\n @if(showAddToListLoader){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else {\n @for(listEntity of listEntities; track listEntity){\n <div class=\"list-item\">\n {{listEntity.Name}}\n @if(selectedListEntities.includes(listEntity)){\n <button kendoButton (click)=\"removeFromList(listEntity)\">\n <span class=\"fa-regular fa-circle-minus\"></span>\n Remove\n </button>\n }\n @else {\n <button kendoButton (click)=\"addToList(listEntity)\">\n <span class=\"fa-regular fa-circle-plus\"></span>\n Add\n </button>\n }\n </div>\n <hr>\n }\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"addRecordsToSelectedLists()\" [disabled]=\"showAddToListLoader\" themeColor=\"primary\">\n Save\n </button>\n <button kendoButton (click)=\"toggleAddToListDialog(false)\" [disabled]=\"showAddToListLoader\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n</div>\n \n<!-- Entity Form Dialog Component here for future use as needed -->\n<mj-entity-form-dialog\n #entityFormDialog\n Mode=\"complete\"\n [Visible]=\"showNewRecordDialog\"\n></mj-entity-form-dialog>", styles: [".user-view-grid-wrap {\n height: calc(100vh - 20px);\n}\n\n.user-view-grid-column-header {\n background-color: #fff;\n font-size: 20pt;\n font-weight: bold;\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 .title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\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 .title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n.k-table-td {\n border-right: none !important;\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.btn-cmn.active {\n border: 1px solid var(--border-blue);\n}\n::ng-deep .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root .k-grid-header .k-grid-header-table thead tr th {\n border-right: none;\n border-inline-start-width: 0;\n color: var(--thead-color);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root kendo-grid-list .k-grid-table tbody tr td { \n border-inline-start-width: 0;\n color: var(--tdata-color);\n font-weight: 500;\n border-bottom-width: 1px;\n} \n\n.overflow-y-scroll {\n overflow-y: auto;\n max-height: 275px;\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}"] }]
|
|
1427
|
+
}], () => [{ type: i0.ElementRef }, { type: i1.FormBuilder }, { type: i2.Router }, { type: i0.Renderer2 }], { Params: [{
|
|
1100
1428
|
type: Input
|
|
1101
1429
|
}], BottomMargin: [{
|
|
1102
1430
|
type: Input
|
|
@@ -1106,6 +1434,12 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
1106
1434
|
type: Input
|
|
1107
1435
|
}], AutoNavigate: [{
|
|
1108
1436
|
type: Input
|
|
1437
|
+
}], NewRecordValues: [{
|
|
1438
|
+
type: Input
|
|
1439
|
+
}], ShowCreateNewRecordButton: [{
|
|
1440
|
+
type: Input
|
|
1441
|
+
}], CreateRecordMode: [{
|
|
1442
|
+
type: Input
|
|
1109
1443
|
}], rowClicked: [{
|
|
1110
1444
|
type: Output
|
|
1111
1445
|
}], rowEdited: [{
|
|
@@ -1133,5 +1467,8 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
1133
1467
|
args: ['compareDialogContainer']
|
|
1134
1468
|
}], AllowLoad: [{
|
|
1135
1469
|
type: Input
|
|
1470
|
+
}], entityFormDialog: [{
|
|
1471
|
+
type: ViewChild,
|
|
1472
|
+
args: ['entityFormDialog']
|
|
1136
1473
|
}] }); })();
|
|
1137
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewGridComponent, { className: "UserViewGridComponent", filePath: "src/lib/ng-user-view-grid.component.ts", lineNumber:
|
|
1474
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewGridComponent, { className: "UserViewGridComponent", filePath: "src/lib/ng-user-view-grid.component.ts", lineNumber: 46 }); })();
|