@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, PrimaryKeyValue } from '@memberjunction/core';
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
- primaryKeyValues: PrimaryKeyValue[];
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":"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"}
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,EAA0B,YAAY,EAA6B,MAAM,sBAAsB,CAAC;AACrM,OAAO,EAA2B,cAAc,EAAE,sBAAsB,EAAgC,MAAM,+BAA+B,CAAC;AAE9I,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAC9E,kBAAkB,EAAE,gBAAgB,EAAmB,cAAc,EAAE,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAKxI,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;;AAGnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC;CACf,CAAA;AAED,qBAKa,qBAAsB,YAAW,MAAM,EAAE,aAAa;IAkKrD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAnK5B,KAAK,SAAkB;IACd,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,YAAY,EAAE,MAAM,CAAK;IACzB,UAAU,EAAE,OAAO,CAAS;IAC5B,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAS;IAC5C,YAAY,EAAE,OAAO,CAAQ;IAE5B,UAAU,oCAA2C;IACrD,SAAS,mCAA0C;IAEZ,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAQ;IACjD,mBAAmB,EAAE,UAAU,GAAG,IAAI,CAAQ;IAClC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC7D,sBAAsB,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAEpD,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC1D,eAAe,EAAE,UAAU,GAAG,IAAI,CAAQ;IAEzD,OAAO,CAAC,sBAAsB,CAAc;IAEjF,OAAO,CAAC,eAAe,CAA+B;IAE/C,QAAQ,EAAE,GAAG,EAAE,CAAM;IACrB,aAAa,EAAE,MAAM,CAAK;IAC1B,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAM;IAC7C,WAAW,EAAE,cAAc,EAAE,CAAM;IACnC,cAAc,EAAE,cAAc,EAAE,CAAM;IACtC,YAAY,EAAE,GAAG,EAAE,CAAM;IACzB,YAAY,EAAE,UAAU,GAAG,IAAI,CAAQ;IACvC,IAAI,EAAE,MAAM,CAAK;IACjB,QAAQ,EAAE,MAAM,CAAM;IACtB,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,cAAc,CAA0B;IAClD,UAAU,EAAE,MAAM,CAAO;IAEzB,WAAW,EAAE,sBAAsB,GAAG,SAAS,CAAA;IAC9C,WAAW,EAAE,UAAU,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,aAAa,CAAqB;IAE1C,OAAO,CAAC,aAAa,CAAuB;IAErC,gBAAgB,EAAE,GAAG,EAAE,CAAM;IAE7B,WAAW,EAAE,OAAO,CAAS;IAC7B,SAAS,EAAE,OAAO,CAAS;IAC3B,aAAa,EAAE,OAAO,CAAS;IAE/B,kBAAkB,EAAE,kBAAkB,CAE3C;IACK,YAAY,EAAE,GAAG,EAAE,CAAM;IACzB,qBAAqB,EAAE,OAAO,CAAS;IACvC,mBAAmB,EAAE,OAAO,CAAS;IACrC,iBAAiB,EAAE,OAAO,CAAQ;IAElC,iBAAiB,EAAE,MAAM,CAAK;IAErC,IAAW,cAAc,IAAI,qBAAqB,EAAE,CAEnD;IAED,IAAW,MAAM,IAAI,MAAM,CAK1B;IAED,SAAS,CAAC,aAAa;IAGvB,SAAS,CAAC,WAAW;IAId,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBnC,aAAa,IAAI,OAAO;IAIxB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAI/C,IAAI;;QAGF;IACF,OAAO,CAAC,eAAe;gBAwDH,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS;IAIvC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,UAAU,CAAkB;IACvB,aAAa;IAmC1B,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;IAcjH,aAAa,CAAC,IAAI,EAAE,kBAAkB;IAyCtC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE;IAuBrC,WAAW,CAAC,IAAI,EAAE,GAAG;IA8BrB,gBAAgB,CAAC,IAAI,EAAE,cAAc;IA4B3C,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,SAAS;IAazC,SAAS,CAAC,EAAE,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;IAajE,gBAAgB,CAAC,IAAI,EAAE,cAAc;IAwE3C,oBAAoB,IAAI,IAAI;IAanC,QAAQ,IAAI,IAAI;IAIhB,eAAe,IAAI,IAAI;IAMvB,OAAO,CAAC,YAAY,CAAkB;IACtC,gBAAgB;IAShB,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,UAAU,CAAiB;IACnC,IAAoB,SAAS,IAAI,OAAO,CAEvC;IACD,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAQlC;IAEK,sBAAsB;IAItB,OAAO,CAAC,MAAM,EAAE,aAAa;IAsHnC,cAAc,CAAC,GAAG,EAAE,cAAc;IASlC,kBAAkB,CAAC,GAAG,EAAE,cAAc;;;;IAatC,eAAe,CAAC,IAAI,EAAE,cAAc;IAOpC,oBAAoB,CAAC,MAAM,qBAAiB,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS;IAyBvE,cAAc,CAAC,MAAM,qBAAiB,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,EAAE;IA4B9E,uBAAuB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI;IAmDtD,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW;IAmB7D,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8C3C,aAAa,EAAE,cAAc,EAAE,CAAM;IACrC,UAAU,EAAE,GAAG,EAAE,CAAM;IACjB,aAAa;cAwBV,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;yCA30BpC,qBAAqB;2CAArB,qBAAqB;CA41BjC"}
@@ -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, ComparePrimaryKeys } from '@memberjunction/core';
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 _r17 = i0.ɵɵgetCurrentView();
37
- i0.ɵɵelementStart(0, "button", 15);
38
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.doExcelExport()); });
39
- i0.ɵɵelement(1, "span", 16);
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 _r19 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "button", 17);
46
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r18.enableMergeOrCompare(false, "compare")); });
47
- i0.ɵɵtext(1, "Compare");
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.compareMode && ctx_r9.recordsToCompare.length < 2);
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 _r21 = i0.ɵɵgetCurrentView();
55
- i0.ɵɵelementStart(0, "button", 17);
56
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r20.enableMergeOrCompare(false, "compare")); });
57
- i0.ɵɵtext(1, "Compare");
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.compareMode && ctx_r10.recordsToCompare.length < 2);
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 _r23 = i0.ɵɵgetCurrentView();
65
- i0.ɵɵelementStart(0, "button", 18);
66
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.enableMergeOrCompare(true, "compare")); });
67
- i0.ɵɵtext(1, "Cancel");
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 _r25 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "button", 17);
73
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r24.enableMergeOrCompare(false, "merge")); });
74
- i0.ɵɵtext(1, "Merge");
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.mergeMode && ctx_r12.recordsToCompare.length < 2);
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 _r27 = i0.ɵɵgetCurrentView();
82
- i0.ɵɵelementStart(0, "button", 18);
83
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.enableMergeOrCompare(false, "merge")); });
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 _r29 = i0.ɵɵgetCurrentView();
89
- i0.ɵɵelementStart(0, "button", 18);
90
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.enableMergeOrCompare(true, "merge")); });
91
- i0.ɵɵtext(1, "Cancel");
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 UserViewGridComponent_ng_template_3_button_7_Template(rf, ctx) { if (rf & 1) {
95
- const _r31 = i0.ɵɵgetCurrentView();
96
- i0.ɵɵelementStart(0, "button", 19);
97
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r30.RefreshFromSavedParams()); });
98
- i0.ɵɵelement(1, "span", 20);
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, 0, "button", 13)(4, UserViewGridComponent_ng_template_3_button_4_Template, 2, 1, "button", 12)(5, UserViewGridComponent_ng_template_3_button_5_Template, 2, 0, "button", 13)(6, UserViewGridComponent_ng_template_3_button_6_Template, 2, 0, "button", 13)(7, UserViewGridComponent_ng_template_3_button_7_Template, 3, 0, "button", 14);
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.compareMode);
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.mergeMode);
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.ɵɵproperty("ngIf", ctx_r1.showRefreshButton && !ctx_r1.compareMode && !ctx_r1.mergeMode);
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", 21);
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", 24);
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 ctx_r34 = i0.ɵɵnextContext(3);
141
- i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(1, 3, ctx_r34.viewData.length), "", ctx_r34.totalRowCount > ctx_r34.viewData.length ? " of " + i0.ɵɵpipeBind1(2, 5, ctx_r34.totalRowCount) : " rows", "");
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, ctx_r34.viewExecutionTime, "1.2-2"), " seconds");
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", 23);
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", 22);
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 item_r32 = ctx.$implicit;
171
+ const item_r35 = ctx.$implicit;
154
172
  const ctx_r3 = i0.ɵɵnextContext();
155
- i0.ɵɵstyleMap(ctx_r3.GetColumnCellStyle(item_r32));
156
- i0.ɵɵproperty("field", item_r32.Name)("title", ctx_r3.GetColumnTitle(item_r32))("width", item_r32.width ? item_r32.width : 100)("editable", item_r32.EntityField.AllowUpdateAPI)("editor", ctx_r3.getEditor(item_r32.EntityField))("headerStyle", i0.ɵɵpureFunction0(9, _c7));
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", item_r32 === ctx_r3.visibleColumns[0]);
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", 25);
179
+ i0.ɵɵelement(0, "kendo-excelexport-column", 27);
162
180
  } if (rf & 2) {
163
- const exportCol_r35 = ctx.$implicit;
164
- i0.ɵɵproperty("field", exportCol_r35.Name)("title", exportCol_r35.Name);
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 _r43 = i0.ɵɵgetCurrentView();
168
- i0.ɵɵelementStart(0, "button", 36);
169
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r42.closeCompareDialog("close")); });
170
- i0.ɵɵtext(1, "Close");
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 _r45 = i0.ɵɵgetCurrentView();
175
- i0.ɵɵelementStart(0, "button", 36);
176
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r44.closeCompareDialog("cancel")); });
177
- i0.ɵɵtext(1, "Cancel");
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 _r47 = i0.ɵɵgetCurrentView();
182
- i0.ɵɵelementStart(0, "button", 37);
183
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r47); const ctx_r46 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r46.closeCompareDialog("merge")); });
184
- i0.ɵɵtext(1, " Merge Records ");
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 UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_8_Template(rf, ctx) { if (rf & 1) {
188
- const _r49 = i0.ɵɵgetCurrentView();
189
- i0.ɵɵelementStart(0, "kendo-dialog", 38);
190
- i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_8_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r48.closeConfirmMergeDialog("cancel")); });
191
- i0.ɵɵelementStart(1, "p", 39);
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", 15);
195
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r49); const ctx_r50 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r50.closeConfirmMergeDialog("no")); });
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", 40);
199
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_8_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r49); const ctx_r51 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r51.closeConfirmMergeDialog("yes")); });
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 _r53 = i0.ɵɵgetCurrentView();
207
- i0.ɵɵelementStart(0, "kendo-window", 28);
208
- i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_Template_kendo_window_close_0_listener($event) { i0.ɵɵrestoreView(_r53); const ctx_r52 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r52.closeCompareDialog($event)); });
209
- i0.ɵɵelementStart(1, "div", 29);
210
- i0.ɵɵelement(2, "mj-compare-records", 30, 31);
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", 32);
213
- i0.ɵɵtemplate(5, UserViewGridComponent_div_11_kendo_window_2_button_5_Template, 2, 0, "button", 33)(6, UserViewGridComponent_div_11_kendo_window_2_button_6_Template, 2, 0, "button", 33)(7, UserViewGridComponent_div_11_kendo_window_2_button_7_Template, 2, 0, "button", 34);
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(8, UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_8_Template, 8, 2, "kendo-dialog", 35);
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 ctx_r36 = i0.ɵɵnextContext(2);
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", ctx_r36._entityInfo ? ctx_r36._entityInfo.Name : "")("recordsToCompare", ctx_r36.recordsToCompare)("visibleColumns", ctx_r36.visibleColumns)("selectionMode", ctx_r36.mergeMode ? true : false);
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", ctx_r36.compareMode);
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", ctx_r36.mergeMode);
254
+ i0.ɵɵproperty("ngIf", ctx_r39.compareMode);
228
255
  i0.ɵɵadvance();
229
- i0.ɵɵproperty("ngIf", ctx_r36.mergeMode);
256
+ i0.ɵɵproperty("ngIf", ctx_r39.mergeMode || ctx_r39.duplicateMode);
230
257
  i0.ɵɵadvance();
231
- i0.ɵɵproperty("ngIf", ctx_r36.isConfirmDialogOpen);
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", 26);
236
- i0.ɵɵtemplate(2, UserViewGridComponent_div_11_kendo_window_2_Template, 9, 17, "kendo-window", 27);
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 pkeyVals = [];
539
- this._entityInfo.PrimaryKeys.forEach((pkey) => {
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
- primaryKeyValues: pkeyVals
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
- const pkVals = this.GeneratePrimaryKeyValueString(pkeyVals);
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(this._entityInfo.PrimaryKeys.map(pk => {
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
- yield record.InnerLoad(this._entityInfo.PrimaryKeys.map(pk => {
625
- return {
626
- FieldName: pk.Name,
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
- // return an array of primary key values for each record to merge
871
- return pkeys.map((pkey) => {
872
- return {
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
- else
881
- return !ComparePrimaryKeys(pkeyVals, this.recordCompareComponent.selectedRecordPKeyVal);
917
+ }
918
+ return this.recordCompareComponent.selectedRecordCompositeKey.Equals(compositeKey);
882
919
  }),
883
- SurvivingRecordPrimaryKeyValues: this.recordCompareComponent.selectedRecordPKeyVal,
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"], ["class", "k-button k-button-md k-rounded-md k-button-solid-base k-button-solid", 3, "disabled", "click", 4, "ngIf"], ["class", "k-button k-button-md k-rounded-md k-button-solid-base k-button-solid", 3, "click", 4, "ngIf"], ["kendoButton", "", "themeColor", "info", 3, "click", 4, "ngIf"], ["kendoButton", "", 3, "click"], [1, "fa-regular", "fa-file-excel"], [1, "k-button", "k-button-md", "k-rounded-md", "k-button-solid-base", "k-button-solid", 3, "disabled", "click"], [1, "k-button", "k-button-md", "k-rounded-md", "k-button-solid-base", "k-button-solid", 3, "click"], ["kendoButton", "", "themeColor", "info", 3, "click"], [1, "fa-solid", "fa-arrow-rotate-right"], [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", "", "type", "button", 3, "click", 4, "ngIf"], ["kendoButton", "", "themeColor", "primary", "type", "button", 3, "click", 4, "ngIf"], ["title", "Confirm Choice", 3, "minWidth", "width", "close", 4, "ngIf"], ["kendoButton", "", "type", "button", 3, "click"], ["kendoButton", "", "themeColor", "primary", "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) {
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, 8, 8, "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);
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.2.2",
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.2.2",
29
- "@memberjunction/global": "~1.2.2",
30
- "@memberjunction/core": "~1.2.2",
31
- "@memberjunction/ng-shared": "~1.2.2",
32
- "@memberjunction/ng-compare-records": "~1.2.2",
33
- "@memberjunction/ng-container-directives": "~1.2.2",
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",