@memberjunction/ng-user-view-grid 1.2.2 → 1.3.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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ElementRef, EventEmitter, OnInit, AfterViewInit, Renderer2 } from '@angular/core';
|
|
2
2
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
|
-
import { BaseEntity, RunViewParams, EntityFieldInfo, EntityInfo,
|
|
4
|
+
import { BaseEntity, RunViewParams, EntityFieldInfo, EntityInfo, CompositeKey } from '@memberjunction/core';
|
|
5
5
|
import { ViewColumnInfo, UserViewEntityExtended } from '@memberjunction/core-entities';
|
|
6
6
|
import { CellClickEvent, GridDataResult, PageChangeEvent, GridComponent, CellCloseEvent, ColumnReorderEvent, ColumnResizeArgs, SelectionEvent, SelectableSettings } from "@progress/kendo-angular-grid";
|
|
7
7
|
import { ExcelExportComponent } from '@progress/kendo-angular-excel-export';
|
|
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
export type GridRowClickedEvent = {
|
|
12
12
|
entityId: number;
|
|
13
13
|
entityName: string;
|
|
14
|
-
|
|
14
|
+
CompositeKey: CompositeKey;
|
|
15
15
|
};
|
|
16
16
|
export type GridRowEditedEvent = {
|
|
17
17
|
record: BaseEntity;
|
|
@@ -64,6 +64,7 @@ export declare class UserViewGridComponent implements OnInit, AfterViewInit {
|
|
|
64
64
|
recordsToCompare: any[];
|
|
65
65
|
compareMode: boolean;
|
|
66
66
|
mergeMode: boolean;
|
|
67
|
+
duplicateMode: boolean;
|
|
67
68
|
selectableSettings: SelectableSettings;
|
|
68
69
|
selectedKeys: any[];
|
|
69
70
|
isCompareDialogOpened: boolean;
|
|
@@ -91,7 +92,6 @@ export declare class UserViewGridComponent implements OnInit, AfterViewInit {
|
|
|
91
92
|
columnResize(args: ColumnResizeArgs[]): Promise<void>;
|
|
92
93
|
sortChanged(sort: any): Promise<void>;
|
|
93
94
|
cellClickHandler(args: CellClickEvent): Promise<void>;
|
|
94
|
-
GeneratePrimaryKeyValueString(pkVals: PrimaryKeyValue[]): string;
|
|
95
95
|
createFormGroup(dataItem: any): FormGroup;
|
|
96
96
|
getEditor(ef: EntityFieldInfo): "boolean" | "text" | "numeric" | "date";
|
|
97
97
|
cellCloseHandler(args: CellCloseEvent): Promise<void>;
|
|
@@ -113,8 +113,10 @@ export declare class UserViewGridComponent implements OnInit, AfterViewInit {
|
|
|
113
113
|
};
|
|
114
114
|
selectionChange(args: SelectionEvent): void;
|
|
115
115
|
enableMergeOrCompare(cancel: boolean | undefined, type: 'merge' | 'compare'): void;
|
|
116
|
+
enableCheckbox(cancel: boolean | undefined, type: 'merge' | 'compare' | 'duplicate' | ''): void;
|
|
116
117
|
closeConfirmMergeDialog(event: 'cancel' | 'yes' | 'no'): Promise<void>;
|
|
117
|
-
closeCompareDialog(event: 'close' | 'cancel' | 'merge'): Promise<void>;
|
|
118
|
+
closeCompareDialog(event: 'close' | 'cancel' | 'merge' | 'duplicate'): Promise<void>;
|
|
119
|
+
findDuplicateRecords(): Promise<void>;
|
|
118
120
|
exportColumns: ViewColumnInfo[];
|
|
119
121
|
exportData: any[];
|
|
120
122
|
doExcelExport(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-user-view-grid.component.d.ts","sourceRoot":"","sources":["../../src/lib/ng-user-view-grid.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,UAAU,EAAU,YAAY,EAAE,MAAM,EAAS,aAAa,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAC/H,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAY,UAAU,EAAW,aAAa,EAAE,eAAe,EAAqB,UAAU,
|
|
1
|
+
{"version":3,"file":"ng-user-view-grid.component.d.ts","sourceRoot":"","sources":["../../src/lib/ng-user-view-grid.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ 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,
|
|
11
|
+
import { Metadata, RunView, EntityFieldTSType, LogError, CompositeKey, PotentialDuplicateRequest } 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';
|
|
@@ -33,96 +33,114 @@ const _c3 = ["analysisQuestion"];
|
|
|
33
33
|
const _c4 = ["analysisResults"];
|
|
34
34
|
const _c5 = ["compareDialogContainer"];
|
|
35
35
|
function UserViewGridComponent_ng_template_3_button_0_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
-
const
|
|
37
|
-
i0.ɵɵelementStart(0, "button",
|
|
38
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
39
|
-
i0.ɵɵelement(1, "span",
|
|
36
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
37
|
+
i0.ɵɵelementStart(0, "button", 16);
|
|
38
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.doExcelExport()); });
|
|
39
|
+
i0.ɵɵelement(1, "span", 17);
|
|
40
40
|
i0.ɵɵtext(2, " Export to Excel ");
|
|
41
41
|
i0.ɵɵelementEnd();
|
|
42
42
|
} }
|
|
43
43
|
function UserViewGridComponent_ng_template_3_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
-
const
|
|
45
|
-
i0.ɵɵelementStart(0, "button",
|
|
46
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
47
|
-
i0.ɵɵtext(1, "
|
|
44
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
45
|
+
i0.ɵɵelementStart(0, "button", 18);
|
|
46
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.enableCheckbox(false, "duplicate")); });
|
|
47
|
+
i0.ɵɵtext(1, " Search For Duplicates ");
|
|
48
48
|
i0.ɵɵelementEnd();
|
|
49
49
|
} if (rf & 2) {
|
|
50
50
|
const ctx_r9 = i0.ɵɵnextContext(2);
|
|
51
|
-
i0.ɵɵproperty("disabled", ctx_r9.
|
|
51
|
+
i0.ɵɵproperty("disabled", ctx_r9.duplicateMode && ctx_r9.recordsToCompare.length < 2);
|
|
52
52
|
} }
|
|
53
53
|
function UserViewGridComponent_ng_template_3_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
-
const
|
|
55
|
-
i0.ɵɵelementStart(0, "button",
|
|
56
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
57
|
-
i0.ɵɵtext(1, "
|
|
54
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
55
|
+
i0.ɵɵelementStart(0, "button", 18);
|
|
56
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.enableCheckbox(false, "duplicate")); });
|
|
57
|
+
i0.ɵɵtext(1, " Search For Duplicates ");
|
|
58
58
|
i0.ɵɵelementEnd();
|
|
59
59
|
} if (rf & 2) {
|
|
60
60
|
const ctx_r10 = i0.ɵɵnextContext(2);
|
|
61
|
-
i0.ɵɵproperty("disabled", ctx_r10.
|
|
61
|
+
i0.ɵɵproperty("disabled", ctx_r10.duplicateMode && ctx_r10.recordsToCompare.length < 2);
|
|
62
62
|
} }
|
|
63
63
|
function UserViewGridComponent_ng_template_3_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
-
const
|
|
65
|
-
i0.ɵɵelementStart(0, "button",
|
|
66
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
67
|
-
i0.ɵɵtext(1, "
|
|
64
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
65
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
66
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.enableMergeOrCompare(false, "compare")); });
|
|
67
|
+
i0.ɵɵtext(1, "Compare");
|
|
68
68
|
i0.ɵɵelementEnd();
|
|
69
|
+
} if (rf & 2) {
|
|
70
|
+
const ctx_r11 = i0.ɵɵnextContext(2);
|
|
71
|
+
i0.ɵɵproperty("disabled", ctx_r11.compareMode && ctx_r11.recordsToCompare.length < 2);
|
|
69
72
|
} }
|
|
70
73
|
function UserViewGridComponent_ng_template_3_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
-
const
|
|
72
|
-
i0.ɵɵelementStart(0, "button",
|
|
73
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
74
|
-
i0.ɵɵtext(1, "
|
|
74
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
75
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
76
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.enableMergeOrCompare(false, "compare")); });
|
|
77
|
+
i0.ɵɵtext(1, "Compare");
|
|
75
78
|
i0.ɵɵelementEnd();
|
|
76
79
|
} if (rf & 2) {
|
|
77
80
|
const ctx_r12 = i0.ɵɵnextContext(2);
|
|
78
|
-
i0.ɵɵproperty("disabled", ctx_r12.
|
|
81
|
+
i0.ɵɵproperty("disabled", ctx_r12.compareMode && ctx_r12.recordsToCompare.length < 2);
|
|
79
82
|
} }
|
|
80
83
|
function UserViewGridComponent_ng_template_3_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
-
const
|
|
82
|
-
i0.ɵɵelementStart(0, "button",
|
|
83
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
84
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
85
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
86
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.enableMergeOrCompare(false, "merge")); });
|
|
84
87
|
i0.ɵɵtext(1, "Merge");
|
|
85
88
|
i0.ɵɵelementEnd();
|
|
89
|
+
} if (rf & 2) {
|
|
90
|
+
const ctx_r13 = i0.ɵɵnextContext(2);
|
|
91
|
+
i0.ɵɵproperty("disabled", ctx_r13.mergeMode && ctx_r13.recordsToCompare.length < 2);
|
|
86
92
|
} }
|
|
87
93
|
function UserViewGridComponent_ng_template_3_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
-
const
|
|
89
|
-
i0.ɵɵelementStart(0, "button",
|
|
90
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
91
|
-
i0.ɵɵtext(1, "
|
|
94
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
95
|
+
i0.ɵɵelementStart(0, "button", 19);
|
|
96
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r29.enableMergeOrCompare(false, "merge")); });
|
|
97
|
+
i0.ɵɵtext(1, "Merge");
|
|
92
98
|
i0.ɵɵelementEnd();
|
|
99
|
+
} if (rf & 2) {
|
|
100
|
+
const ctx_r14 = i0.ɵɵnextContext(2);
|
|
101
|
+
i0.ɵɵproperty("disabled", ctx_r14.mergeMode && ctx_r14.recordsToCompare.length < 2);
|
|
93
102
|
} }
|
|
94
|
-
function
|
|
95
|
-
const
|
|
96
|
-
i0.ɵɵelementStart(0, "button",
|
|
97
|
-
i0.ɵɵlistener("click", function
|
|
98
|
-
i0.ɵɵ
|
|
103
|
+
function UserViewGridComponent_ng_template_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
104
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
105
|
+
i0.ɵɵelementStart(0, "button", 20);
|
|
106
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r31.enableCheckbox(true, "")); });
|
|
107
|
+
i0.ɵɵtext(1, " Cancel ");
|
|
108
|
+
i0.ɵɵelementEnd();
|
|
109
|
+
} }
|
|
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);
|
|
99
115
|
i0.ɵɵtext(2, " Refresh ");
|
|
100
116
|
i0.ɵɵelementEnd();
|
|
101
117
|
} }
|
|
102
118
|
function UserViewGridComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
103
|
-
i0.ɵɵtemplate(0, UserViewGridComponent_ng_template_3_button_0_Template, 3, 0, "button", 11)(1, UserViewGridComponent_ng_template_3_button_1_Template, 2, 1, "button", 12)(2, UserViewGridComponent_ng_template_3_button_2_Template, 2, 1, "button", 12)(3, UserViewGridComponent_ng_template_3_button_3_Template, 2,
|
|
119
|
+
i0.ɵɵtemplate(0, UserViewGridComponent_ng_template_3_button_0_Template, 3, 0, "button", 11)(1, UserViewGridComponent_ng_template_3_button_1_Template, 2, 1, "button", 12)(2, UserViewGridComponent_ng_template_3_button_2_Template, 2, 1, "button", 12)(3, UserViewGridComponent_ng_template_3_button_3_Template, 2, 1, "button", 13)(4, UserViewGridComponent_ng_template_3_button_4_Template, 2, 1, "button", 13)(5, UserViewGridComponent_ng_template_3_button_5_Template, 2, 1, "button", 13)(6, UserViewGridComponent_ng_template_3_button_6_Template, 2, 1, "button", 13)(7, UserViewGridComponent_ng_template_3_Conditional_7_Template, 2, 0, "button", 14)(8, UserViewGridComponent_ng_template_3_Conditional_8_Template, 3, 0, "button", 15);
|
|
104
120
|
} if (rf & 2) {
|
|
105
121
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
106
122
|
i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode);
|
|
107
123
|
i0.ɵɵadvance();
|
|
108
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode);
|
|
124
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode);
|
|
109
125
|
i0.ɵɵadvance();
|
|
110
|
-
i0.ɵɵproperty("ngIf", ctx_r1.
|
|
126
|
+
i0.ɵɵproperty("ngIf", ctx_r1.duplicateMode);
|
|
111
127
|
i0.ɵɵadvance();
|
|
112
|
-
i0.ɵɵproperty("ngIf", ctx_r1.compareMode);
|
|
128
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode);
|
|
113
129
|
i0.ɵɵadvance();
|
|
114
|
-
i0.ɵɵproperty("ngIf", ctx_r1.
|
|
130
|
+
i0.ɵɵproperty("ngIf", ctx_r1.compareMode);
|
|
115
131
|
i0.ɵɵadvance();
|
|
116
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.mergeMode && !ctx_r1.compareMode);
|
|
132
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.mergeMode && !ctx_r1.compareMode && !ctx_r1.duplicateMode);
|
|
117
133
|
i0.ɵɵadvance();
|
|
118
134
|
i0.ɵɵproperty("ngIf", ctx_r1.mergeMode);
|
|
119
135
|
i0.ɵɵadvance();
|
|
120
|
-
i0.ɵɵ
|
|
136
|
+
i0.ɵɵconditional(7, ctx_r1.compareMode || ctx_r1.mergeMode || ctx_r1.duplicateMode ? 7 : -1);
|
|
137
|
+
i0.ɵɵadvance();
|
|
138
|
+
i0.ɵɵconditional(8, ctx_r1.showRefreshButton && !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode ? 8 : -1);
|
|
121
139
|
} }
|
|
122
140
|
const _c6 = () => ({ "text-align": "center", "vertical-align": "center" });
|
|
123
141
|
const _c7 = () => ({ "font-weight": "bold", "background-color": "white" });
|
|
124
142
|
function UserViewGridComponent_kendo_grid_checkbox_column_4_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
i0.ɵɵelement(0, "kendo-grid-checkbox-column",
|
|
143
|
+
i0.ɵɵelement(0, "kendo-grid-checkbox-column", 23);
|
|
126
144
|
} if (rf & 2) {
|
|
127
145
|
i0.ɵɵstyleMap(i0.ɵɵpureFunction0(4, _c6));
|
|
128
146
|
i0.ɵɵproperty("width", 50)("headerStyle", i0.ɵɵpureFunction0(5, _c7));
|
|
@@ -132,108 +150,117 @@ function UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template(rf,
|
|
|
132
150
|
i0.ɵɵpipe(1, "number");
|
|
133
151
|
i0.ɵɵpipe(2, "number");
|
|
134
152
|
i0.ɵɵelement(3, "br");
|
|
135
|
-
i0.ɵɵelementStart(4, "span",
|
|
153
|
+
i0.ɵɵelementStart(4, "span", 26);
|
|
136
154
|
i0.ɵɵtext(5);
|
|
137
155
|
i0.ɵɵpipe(6, "number");
|
|
138
156
|
i0.ɵɵelementEnd();
|
|
139
157
|
} if (rf & 2) {
|
|
140
|
-
const
|
|
141
|
-
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(1, 3,
|
|
158
|
+
const ctx_r37 = i0.ɵɵnextContext(3);
|
|
159
|
+
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(1, 3, ctx_r37.viewData.length), "", ctx_r37.totalRowCount > ctx_r37.viewData.length ? " of " + i0.ɵɵpipeBind1(2, 5, ctx_r37.totalRowCount) : " rows", "");
|
|
142
160
|
i0.ɵɵadvance(5);
|
|
143
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 7,
|
|
161
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 7, ctx_r37.viewExecutionTime, "1.2-2"), " seconds");
|
|
144
162
|
} }
|
|
145
163
|
function UserViewGridComponent_kendo_grid_column_5_1_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
-
i0.ɵɵtemplate(0, UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template, 7, 10, "ng-template",
|
|
164
|
+
i0.ɵɵtemplate(0, UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template, 7, 10, "ng-template", 25);
|
|
147
165
|
} }
|
|
148
166
|
function UserViewGridComponent_kendo_grid_column_5_Template(rf, ctx) { if (rf & 1) {
|
|
149
|
-
i0.ɵɵelementStart(0, "kendo-grid-column",
|
|
167
|
+
i0.ɵɵelementStart(0, "kendo-grid-column", 24);
|
|
150
168
|
i0.ɵɵtemplate(1, UserViewGridComponent_kendo_grid_column_5_1_Template, 1, 0, null, 10);
|
|
151
169
|
i0.ɵɵelementEnd();
|
|
152
170
|
} if (rf & 2) {
|
|
153
|
-
const
|
|
171
|
+
const item_r35 = ctx.$implicit;
|
|
154
172
|
const ctx_r3 = i0.ɵɵnextContext();
|
|
155
|
-
i0.ɵɵstyleMap(ctx_r3.GetColumnCellStyle(
|
|
156
|
-
i0.ɵɵproperty("field",
|
|
173
|
+
i0.ɵɵstyleMap(ctx_r3.GetColumnCellStyle(item_r35));
|
|
174
|
+
i0.ɵɵproperty("field", item_r35.Name)("title", ctx_r3.GetColumnTitle(item_r35))("width", item_r35.width ? item_r35.width : 100)("editable", item_r35.EntityField.AllowUpdateAPI)("editor", ctx_r3.getEditor(item_r35.EntityField))("headerStyle", i0.ɵɵpureFunction0(9, _c7));
|
|
157
175
|
i0.ɵɵadvance();
|
|
158
|
-
i0.ɵɵproperty("ngIf",
|
|
176
|
+
i0.ɵɵproperty("ngIf", item_r35 === ctx_r3.visibleColumns[0]);
|
|
159
177
|
} }
|
|
160
178
|
function UserViewGridComponent_kendo_excelexport_column_8_Template(rf, ctx) { if (rf & 1) {
|
|
161
|
-
i0.ɵɵelement(0, "kendo-excelexport-column",
|
|
179
|
+
i0.ɵɵelement(0, "kendo-excelexport-column", 27);
|
|
162
180
|
} if (rf & 2) {
|
|
163
|
-
const
|
|
164
|
-
i0.ɵɵproperty("field",
|
|
181
|
+
const exportCol_r38 = ctx.$implicit;
|
|
182
|
+
i0.ɵɵproperty("field", exportCol_r38.Name)("title", exportCol_r38.Name);
|
|
165
183
|
} }
|
|
166
184
|
function UserViewGridComponent_div_11_kendo_window_2_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
const
|
|
168
|
-
i0.ɵɵelementStart(0, "button",
|
|
169
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
170
|
-
i0.ɵɵtext(1, "
|
|
185
|
+
const _r47 = i0.ɵɵgetCurrentView();
|
|
186
|
+
i0.ɵɵelementStart(0, "button", 38);
|
|
187
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r47); const ctx_r46 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r46.closeCompareDialog("merge")); });
|
|
188
|
+
i0.ɵɵtext(1, " Merge Records ");
|
|
171
189
|
i0.ɵɵelementEnd();
|
|
172
190
|
} }
|
|
173
191
|
function UserViewGridComponent_div_11_kendo_window_2_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
174
|
-
const
|
|
175
|
-
i0.ɵɵelementStart(0, "button",
|
|
176
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
177
|
-
i0.ɵɵtext(1, "
|
|
192
|
+
const _r49 = i0.ɵɵgetCurrentView();
|
|
193
|
+
i0.ɵɵelementStart(0, "button", 38);
|
|
194
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r48.findDuplicateRecords()); });
|
|
195
|
+
i0.ɵɵtext(1, " Search for Duplicates ");
|
|
178
196
|
i0.ɵɵelementEnd();
|
|
179
197
|
} }
|
|
180
198
|
function UserViewGridComponent_div_11_kendo_window_2_button_7_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
-
const
|
|
182
|
-
i0.ɵɵelementStart(0, "button",
|
|
183
|
-
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
184
|
-
i0.ɵɵtext(1, "
|
|
199
|
+
const _r51 = i0.ɵɵgetCurrentView();
|
|
200
|
+
i0.ɵɵelementStart(0, "button", 39);
|
|
201
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r50.closeCompareDialog("close")); });
|
|
202
|
+
i0.ɵɵtext(1, " Close ");
|
|
185
203
|
i0.ɵɵelementEnd();
|
|
186
204
|
} }
|
|
187
|
-
function
|
|
188
|
-
const
|
|
189
|
-
i0.ɵɵelementStart(0, "
|
|
190
|
-
i0.ɵɵlistener("
|
|
191
|
-
i0.ɵɵ
|
|
205
|
+
function UserViewGridComponent_div_11_kendo_window_2_button_8_Template(rf, ctx) { if (rf & 1) {
|
|
206
|
+
const _r53 = i0.ɵɵgetCurrentView();
|
|
207
|
+
i0.ɵɵelementStart(0, "button", 39);
|
|
208
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r53); const ctx_r52 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r52.closeCompareDialog("cancel")); });
|
|
209
|
+
i0.ɵɵtext(1, " Cancel ");
|
|
210
|
+
i0.ɵɵelementEnd();
|
|
211
|
+
} }
|
|
212
|
+
function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template(rf, ctx) { if (rf & 1) {
|
|
213
|
+
const _r55 = i0.ɵɵgetCurrentView();
|
|
214
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 40);
|
|
215
|
+
i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r55); const ctx_r54 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r54.closeConfirmMergeDialog("cancel")); });
|
|
216
|
+
i0.ɵɵelementStart(1, "p", 41);
|
|
192
217
|
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. ");
|
|
193
218
|
i0.ɵɵelementEnd();
|
|
194
|
-
i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button",
|
|
195
|
-
i0.ɵɵlistener("click", function
|
|
219
|
+
i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button", 16);
|
|
220
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r55); const ctx_r56 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r56.closeConfirmMergeDialog("no")); });
|
|
196
221
|
i0.ɵɵtext(5, "No");
|
|
197
222
|
i0.ɵɵelementEnd();
|
|
198
|
-
i0.ɵɵelementStart(6, "button",
|
|
199
|
-
i0.ɵɵlistener("click", function
|
|
223
|
+
i0.ɵɵelementStart(6, "button", 42);
|
|
224
|
+
i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r55); const ctx_r57 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r57.closeConfirmMergeDialog("yes")); });
|
|
200
225
|
i0.ɵɵtext(7, " Yes ");
|
|
201
226
|
i0.ɵɵelementEnd()()();
|
|
202
227
|
} if (rf & 2) {
|
|
203
228
|
i0.ɵɵproperty("minWidth", 250)("width", 450);
|
|
204
229
|
} }
|
|
205
230
|
function UserViewGridComponent_div_11_kendo_window_2_Template(rf, ctx) { if (rf & 1) {
|
|
206
|
-
const
|
|
207
|
-
i0.ɵɵelementStart(0, "kendo-window",
|
|
208
|
-
i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_Template_kendo_window_close_0_listener($event) { i0.ɵɵrestoreView(
|
|
209
|
-
i0.ɵɵelementStart(1, "div",
|
|
210
|
-
i0.ɵɵelement(2, "mj-compare-records",
|
|
231
|
+
const _r59 = i0.ɵɵgetCurrentView();
|
|
232
|
+
i0.ɵɵelementStart(0, "kendo-window", 30);
|
|
233
|
+
i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_Template_kendo_window_close_0_listener($event) { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r58.closeCompareDialog($event)); });
|
|
234
|
+
i0.ɵɵelementStart(1, "div", 31);
|
|
235
|
+
i0.ɵɵelement(2, "mj-compare-records", 32, 33);
|
|
211
236
|
i0.ɵɵelementEnd();
|
|
212
|
-
i0.ɵɵelementStart(4, "div",
|
|
213
|
-
i0.ɵɵtemplate(5, UserViewGridComponent_div_11_kendo_window_2_button_5_Template, 2, 0, "button",
|
|
237
|
+
i0.ɵɵelementStart(4, "div", 34);
|
|
238
|
+
i0.ɵɵtemplate(5, UserViewGridComponent_div_11_kendo_window_2_button_5_Template, 2, 0, "button", 35)(6, UserViewGridComponent_div_11_kendo_window_2_button_6_Template, 2, 0, "button", 35)(7, UserViewGridComponent_div_11_kendo_window_2_button_7_Template, 2, 0, "button", 36)(8, UserViewGridComponent_div_11_kendo_window_2_button_8_Template, 2, 0, "button", 36);
|
|
214
239
|
i0.ɵɵelementEnd();
|
|
215
|
-
i0.ɵɵtemplate(
|
|
240
|
+
i0.ɵɵtemplate(9, UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template, 8, 2, "kendo-dialog", 37);
|
|
216
241
|
i0.ɵɵelementEnd();
|
|
217
242
|
} if (rf & 2) {
|
|
218
|
-
const
|
|
243
|
+
const ctx_r39 = i0.ɵɵnextContext(2);
|
|
219
244
|
i0.ɵɵproperty("minHeight", 300)("minWidth", 800)("top", 100)("left", 100)("width", 1200)("height", 675)("resizable", true);
|
|
220
245
|
i0.ɵɵadvance();
|
|
221
246
|
i0.ɵɵproperty("fillHeight", true)("bottomMargin", 100);
|
|
222
247
|
i0.ɵɵadvance();
|
|
223
|
-
i0.ɵɵproperty("entityName",
|
|
248
|
+
i0.ɵɵproperty("entityName", ctx_r39._entityInfo ? ctx_r39._entityInfo.Name : "")("recordsToCompare", ctx_r39.recordsToCompare)("visibleColumns", ctx_r39.visibleColumns)("selectionMode", ctx_r39.mergeMode ? true : false);
|
|
224
249
|
i0.ɵɵadvance(3);
|
|
225
|
-
i0.ɵɵproperty("ngIf",
|
|
250
|
+
i0.ɵɵproperty("ngIf", ctx_r39.mergeMode);
|
|
251
|
+
i0.ɵɵadvance();
|
|
252
|
+
i0.ɵɵproperty("ngIf", ctx_r39.duplicateMode);
|
|
226
253
|
i0.ɵɵadvance();
|
|
227
|
-
i0.ɵɵproperty("ngIf",
|
|
254
|
+
i0.ɵɵproperty("ngIf", ctx_r39.compareMode);
|
|
228
255
|
i0.ɵɵadvance();
|
|
229
|
-
i0.ɵɵproperty("ngIf",
|
|
256
|
+
i0.ɵɵproperty("ngIf", ctx_r39.mergeMode || ctx_r39.duplicateMode);
|
|
230
257
|
i0.ɵɵadvance();
|
|
231
|
-
i0.ɵɵproperty("ngIf",
|
|
258
|
+
i0.ɵɵproperty("ngIf", ctx_r39.isConfirmDialogOpen);
|
|
232
259
|
} }
|
|
233
260
|
function UserViewGridComponent_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
234
261
|
i0.ɵɵelementStart(0, "div");
|
|
235
|
-
i0.ɵɵelement(1, "div",
|
|
236
|
-
i0.ɵɵtemplate(2, UserViewGridComponent_div_11_kendo_window_2_Template,
|
|
262
|
+
i0.ɵɵelement(1, "div", 28);
|
|
263
|
+
i0.ɵɵtemplate(2, UserViewGridComponent_div_11_kendo_window_2_Template, 10, 18, "kendo-window", 29);
|
|
237
264
|
i0.ɵɵelementEnd();
|
|
238
265
|
} if (rf & 2) {
|
|
239
266
|
const ctx_r7 = i0.ɵɵnextContext();
|
|
@@ -368,6 +395,7 @@ export class UserViewGridComponent {
|
|
|
368
395
|
this.recordsToCompare = [];
|
|
369
396
|
this.compareMode = false;
|
|
370
397
|
this.mergeMode = false;
|
|
398
|
+
this.duplicateMode = false;
|
|
371
399
|
this.selectableSettings = {
|
|
372
400
|
enabled: false
|
|
373
401
|
};
|
|
@@ -535,14 +563,12 @@ export class UserViewGridComponent {
|
|
|
535
563
|
if (this.compareMode || this.mergeMode)
|
|
536
564
|
return;
|
|
537
565
|
if (this._entityInfo) {
|
|
538
|
-
const
|
|
539
|
-
this._entityInfo.
|
|
540
|
-
pkeyVals.push({ FieldName: pkey.Name, Value: this.viewData[args.rowIndex][pkey.Name] });
|
|
541
|
-
});
|
|
566
|
+
const compositeKey = new CompositeKey();
|
|
567
|
+
compositeKey.LoadFromEntityInfoAndRecord(this._entityInfo, this.viewData[args.rowIndex]);
|
|
542
568
|
this.rowClicked.emit({
|
|
543
569
|
entityId: this._entityInfo.ID,
|
|
544
570
|
entityName: this._entityInfo.Name,
|
|
545
|
-
|
|
571
|
+
CompositeKey: compositeKey
|
|
546
572
|
});
|
|
547
573
|
if (this._entityInfo.AllowUpdateAPI &&
|
|
548
574
|
this.EditMode !== "None") {
|
|
@@ -554,15 +580,11 @@ export class UserViewGridComponent {
|
|
|
554
580
|
}
|
|
555
581
|
if (this.EditMode === 'None' && this.AutoNavigate) {
|
|
556
582
|
// tell app router to go to this record
|
|
557
|
-
|
|
558
|
-
this.router.navigate(['resource', 'record', pkVals], { queryParams: { Entity: this._entityInfo.Name } });
|
|
583
|
+
this.router.navigate(['resource', 'record', compositeKey.ToURLSegment()], { queryParams: { Entity: this._entityInfo.Name } });
|
|
559
584
|
}
|
|
560
585
|
}
|
|
561
586
|
});
|
|
562
587
|
}
|
|
563
|
-
GeneratePrimaryKeyValueString(pkVals) {
|
|
564
|
-
return pkVals.map(pk => pk.FieldName + '|' + pk.Value).join('||');
|
|
565
|
-
}
|
|
566
588
|
createFormGroup(dataItem) {
|
|
567
589
|
const groupFields = {};
|
|
568
590
|
this.viewColumns.forEach((vc) => {
|
|
@@ -605,13 +627,10 @@ export class UserViewGridComponent {
|
|
|
605
627
|
let record;
|
|
606
628
|
let bSaved = false;
|
|
607
629
|
if (this.EditMode === "Save") {
|
|
630
|
+
let compositeKey = new CompositeKey();
|
|
631
|
+
compositeKey.LoadFromEntityInfoAndRecord(this._entityInfo, dataItem);
|
|
608
632
|
record = yield md.GetEntityObject(this._entityInfo.Name);
|
|
609
|
-
yield record.InnerLoad(
|
|
610
|
-
return {
|
|
611
|
-
FieldName: pk.Name,
|
|
612
|
-
Value: dataItem[pk.Name]
|
|
613
|
-
};
|
|
614
|
-
}));
|
|
633
|
+
yield record.InnerLoad(compositeKey);
|
|
615
634
|
record.SetMany(formGroup.value);
|
|
616
635
|
bSaved = yield record.Save();
|
|
617
636
|
if (!bSaved)
|
|
@@ -621,12 +640,9 @@ export class UserViewGridComponent {
|
|
|
621
640
|
record = (_a = this._pendingRecords.find((r) => r.record.Get(pkey) === dataItem[pkey])) === null || _a === void 0 ? void 0 : _a.record;
|
|
622
641
|
if (!record) { // haven't edited this one before
|
|
623
642
|
record = yield md.GetEntityObject(this._viewEntity.Get('Entity'));
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
Value: dataItem[pk.Name]
|
|
628
|
-
};
|
|
629
|
-
}));
|
|
643
|
+
let compositeKey = new CompositeKey();
|
|
644
|
+
compositeKey.LoadFromEntityInfoAndRecord(this._entityInfo, dataItem);
|
|
645
|
+
yield record.InnerLoad(compositeKey);
|
|
630
646
|
this._pendingRecords.push({ record,
|
|
631
647
|
row: args.rowIndex,
|
|
632
648
|
dataItem }); // don't save - put the changed record on a queue for saving later by our container
|
|
@@ -858,6 +874,33 @@ export class UserViewGridComponent {
|
|
|
858
874
|
this.compareMode = true;
|
|
859
875
|
}
|
|
860
876
|
}
|
|
877
|
+
enableCheckbox(cancel = false, type) {
|
|
878
|
+
if (!cancel && this.recordsToCompare.length >= 2) {
|
|
879
|
+
// 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
|
+
this.isCompareDialogOpened = true;
|
|
881
|
+
this.moveDialogToBody();
|
|
882
|
+
}
|
|
883
|
+
else if (cancel) {
|
|
884
|
+
// the user clicked cancel in our toolbar
|
|
885
|
+
this.mergeMode = false;
|
|
886
|
+
this.compareMode = false;
|
|
887
|
+
this.duplicateMode = false;
|
|
888
|
+
this.selectedKeys = [];
|
|
889
|
+
this.recordsToCompare = [];
|
|
890
|
+
}
|
|
891
|
+
else {
|
|
892
|
+
// just turning on the checkbox from the merge/compare/duplicate button, so just turn it on and let the user select records
|
|
893
|
+
if (type === 'merge') {
|
|
894
|
+
this.mergeMode = true;
|
|
895
|
+
}
|
|
896
|
+
else if (type === 'compare') {
|
|
897
|
+
this.compareMode = true;
|
|
898
|
+
}
|
|
899
|
+
else if (type === 'duplicate') {
|
|
900
|
+
this.duplicateMode = true;
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
}
|
|
861
904
|
closeConfirmMergeDialog(event) {
|
|
862
905
|
return __awaiter(this, void 0, void 0, function* () {
|
|
863
906
|
if (event === 'yes') {
|
|
@@ -867,20 +910,14 @@ export class UserViewGridComponent {
|
|
|
867
910
|
const result = yield md.MergeRecords({
|
|
868
911
|
EntityName: this._entityInfo.Name,
|
|
869
912
|
RecordsToMerge: this.recordsToCompare.map((r) => {
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
FieldName: pkey.Name,
|
|
874
|
-
Value: r.Get(pkey.Name)
|
|
875
|
-
};
|
|
876
|
-
});
|
|
877
|
-
}).filter((pkeyVals) => {
|
|
878
|
-
if (!this.recordCompareComponent)
|
|
913
|
+
return r.CompositeKey;
|
|
914
|
+
}).filter((compositeKey) => {
|
|
915
|
+
if (!this.recordCompareComponent) {
|
|
879
916
|
return false;
|
|
880
|
-
|
|
881
|
-
|
|
917
|
+
}
|
|
918
|
+
return this.recordCompareComponent.selectedRecordCompositeKey.Equals(compositeKey);
|
|
882
919
|
}),
|
|
883
|
-
|
|
920
|
+
SurvivingRecordCompositeKey: this.recordCompareComponent.selectedRecordCompositeKey,
|
|
884
921
|
FieldMap: this.recordCompareComponent.fieldMap.map((fm) => {
|
|
885
922
|
return {
|
|
886
923
|
FieldName: fm.fieldName,
|
|
@@ -927,11 +964,51 @@ export class UserViewGridComponent {
|
|
|
927
964
|
this.recordsToCompare = [];
|
|
928
965
|
this.mergeMode = false;
|
|
929
966
|
this.compareMode = false;
|
|
967
|
+
this.duplicateMode = false;
|
|
930
968
|
this.isCompareDialogOpened = false;
|
|
931
969
|
break;
|
|
932
970
|
}
|
|
933
971
|
});
|
|
934
972
|
}
|
|
973
|
+
findDuplicateRecords() {
|
|
974
|
+
var _a;
|
|
975
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
976
|
+
if (!this._entityInfo) {
|
|
977
|
+
console.error("Entity Info is not available");
|
|
978
|
+
this.closeCompareDialog('duplicate');
|
|
979
|
+
return;
|
|
980
|
+
}
|
|
981
|
+
const md = new Metadata();
|
|
982
|
+
const list = yield md.GetEntityObject('Lists');
|
|
983
|
+
list.NewRecord();
|
|
984
|
+
list.Name = `Potential Duplicate Run`;
|
|
985
|
+
list.Description = `Potential Duplicate Run for ${this._entityInfo.Name} Entity`;
|
|
986
|
+
list.EntityID = this._entityInfo.ID;
|
|
987
|
+
list.UserID = md.CurrentUser.ID;
|
|
988
|
+
const saveResult = yield list.Save();
|
|
989
|
+
if (!saveResult) {
|
|
990
|
+
console.error(`Failed to save list for Potential Duplicate Run`);
|
|
991
|
+
return;
|
|
992
|
+
}
|
|
993
|
+
let params = new PotentialDuplicateRequest();
|
|
994
|
+
params.EntityID = (_a = this._entityInfo) === null || _a === void 0 ? void 0 : _a.ID;
|
|
995
|
+
params.ListID = list.ID;
|
|
996
|
+
params.RecordIDs = [];
|
|
997
|
+
for (const index of this.selectedKeys) {
|
|
998
|
+
const viewData = this.viewData[index];
|
|
999
|
+
const idField = viewData.ID;
|
|
1000
|
+
const listDetail = yield md.GetEntityObject('List Details');
|
|
1001
|
+
listDetail.NewRecord();
|
|
1002
|
+
listDetail.ListID = list.ID;
|
|
1003
|
+
listDetail.RecordID = idField.toString();
|
|
1004
|
+
yield listDetail.Save();
|
|
1005
|
+
}
|
|
1006
|
+
this.closeCompareDialog('duplicate');
|
|
1007
|
+
this.CreateSimpleNotification("Working on finding duplicates, will notify you when it is complete...", 'info', 2000);
|
|
1008
|
+
let response = yield md.GetRecordDuplicates(params, md.CurrentUser);
|
|
1009
|
+
console.log(response);
|
|
1010
|
+
});
|
|
1011
|
+
}
|
|
935
1012
|
doExcelExport() {
|
|
936
1013
|
return __awaiter(this, void 0, void 0, function* () {
|
|
937
1014
|
if (this.kendoExcelExport === null)
|
|
@@ -989,12 +1066,12 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
989
1066
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analysisQuestion = _t.first);
|
|
990
1067
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analysisResults = _t.first);
|
|
991
1068
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.compareDialogContainer = _t.first);
|
|
992
|
-
} }, inputs: { Params: "Params", BottomMargin: "BottomMargin", InEditMode: "InEditMode", EditMode: "EditMode", AutoNavigate: "AutoNavigate", AllowLoad: "AllowLoad" }, outputs: { rowClicked: "rowClicked", rowEdited: "rowEdited" }, decls: 12, vars: 19, 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"], ["kendoButton", "", 3, "click", 4, "ngIf"], ["
|
|
1069
|
+
} }, inputs: { Params: "Params", BottomMargin: "BottomMargin", InEditMode: "InEditMode", EditMode: "EditMode", AutoNavigate: "AutoNavigate", AllowLoad: "AllowLoad" }, outputs: { rowClicked: "rowClicked", rowEdited: "rowEdited" }, decls: 12, vars: 19, 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"], ["kendoButton", "", 3, "click", 4, "ngIf"], ["kendoButton", "", "class", "k-button-solid-base list-button", 3, "disabled", "click", 4, "ngIf"], ["class", "k-button k-button-md k-rounded-md k-button-solid-base k-button-solid", 3, "disabled", "click", 4, "ngIf"], ["kendoButton", "", "class", "k-button-solid-base list-button"], ["kendoButton", "", "class", "list-button"], ["kendoButton", "", 3, "click"], [1, "fa-regular", "fa-file-excel"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "disabled", "click"], [1, "k-button", "k-button-md", "k-rounded-md", "k-button-solid-base", "k-button-solid", 3, "disabled", "click"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "click"], ["kendoButton", "", 1, "list-button", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [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"]], template: function UserViewGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
993
1070
|
i0.ɵɵelementStart(0, "div", 0)(1, "kendo-grid", 1, 2);
|
|
994
1071
|
i0.ɵɵlistener("pageChange", function UserViewGridComponent_Template_kendo_grid_pageChange_1_listener($event) { return ctx.pageChange($event); });
|
|
995
1072
|
i0.ɵɵtwoWayListener("selectedKeysChange", function UserViewGridComponent_Template_kendo_grid_selectedKeysChange_1_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.selectedKeys, $event) || (ctx.selectedKeys = $event); return $event; });
|
|
996
1073
|
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); });
|
|
997
|
-
i0.ɵɵtemplate(3, UserViewGridComponent_ng_template_3_Template,
|
|
1074
|
+
i0.ɵɵtemplate(3, UserViewGridComponent_ng_template_3_Template, 9, 9, "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);
|
|
998
1075
|
i0.ɵɵelementStart(6, "kendo-excelexport", 6, 7);
|
|
999
1076
|
i0.ɵɵtemplate(8, UserViewGridComponent_kendo_excelexport_column_8_Template, 1, 2, "kendo-excelexport-column", 8);
|
|
1000
1077
|
i0.ɵɵelementEnd()();
|
|
@@ -1006,7 +1083,7 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
1006
1083
|
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);
|
|
1007
1084
|
i0.ɵɵtwoWayProperty("selectedKeys", ctx.selectedKeys);
|
|
1008
1085
|
i0.ɵɵadvance(3);
|
|
1009
|
-
i0.ɵɵproperty("ngIf", ctx.compareMode || ctx.mergeMode);
|
|
1086
|
+
i0.ɵɵproperty("ngIf", ctx.compareMode || ctx.mergeMode || ctx.duplicateMode);
|
|
1010
1087
|
i0.ɵɵadvance();
|
|
1011
1088
|
i0.ɵɵproperty("ngForOf", ctx.visibleColumns);
|
|
1012
1089
|
i0.ɵɵadvance();
|
|
@@ -1018,7 +1095,7 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
|
|
|
1018
1095
|
} }, 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, 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}"] });
|
|
1019
1096
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewGridComponent, [{
|
|
1020
1097
|
type: Component,
|
|
1021
|
-
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 <!-- 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\" [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 <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 <!-- 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\" [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 && !compareMode\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Merge</button>\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 <button\n kendoButton themeColor=\"info\"\n *ngIf=\"showRefreshButton && !compareMode && !mergeMode\"\n (click)=\"RefreshFromSavedParams()\">\n <span class=\"fa-solid fa-arrow-rotate-right\"></span>\n Refresh\n </button>\n </ng-template>\n \n <kendo-grid-checkbox-column \n *ngIf=\"compareMode || mergeMode\" \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=\"compareMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('close')\">Close</button>\n <button *ngIf=\"mergeMode\"kendoButton type=\"button\" (click)=\"closeCompareDialog('cancel')\">Cancel</button>\n <button *ngIf=\"mergeMode\"\n kendoButton\n themeColor=\"primary\"\n type=\"button\"\n (click)=\"closeCompareDialog('merge')\"\n >\n Merge Records\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} "] }]
|
|
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} "] }]
|
|
1022
1099
|
}], () => [{ type: i1.FormBuilder }, { type: i2.Router }, { type: i0.Renderer2 }], { Params: [{
|
|
1023
1100
|
type: Input
|
|
1024
1101
|
}], BottomMargin: [{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-user-view-grid",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "MemberJunction: Angular Grid to display dynamic and saved user views for any entity in MemberJunction.",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"@angular/router": "~17.2.2"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@memberjunction/core-entities": "~1.
|
|
29
|
-
"@memberjunction/global": "~1.
|
|
30
|
-
"@memberjunction/core": "~1.
|
|
31
|
-
"@memberjunction/ng-shared": "~1.
|
|
32
|
-
"@memberjunction/ng-compare-records": "~1.
|
|
33
|
-
"@memberjunction/ng-container-directives": "~1.
|
|
28
|
+
"@memberjunction/core-entities": "~1.3.0",
|
|
29
|
+
"@memberjunction/global": "~1.3.0",
|
|
30
|
+
"@memberjunction/core": "~1.3.0",
|
|
31
|
+
"@memberjunction/ng-shared": "~1.3.0",
|
|
32
|
+
"@memberjunction/ng-compare-records": "~1.3.0",
|
|
33
|
+
"@memberjunction/ng-container-directives": "~1.3.0",
|
|
34
34
|
"@progress/kendo-angular-grid": "~15.1.0",
|
|
35
35
|
"@progress/kendo-angular-layout": "~15.1.0",
|
|
36
36
|
"@progress/kendo-angular-inputs": "~15.1.0",
|