@memberjunction/ng-user-view-properties 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/user-view-properties.component.d.ts +75 -0
- package/dist/lib/user-view-properties.component.d.ts.map +1 -0
- package/dist/lib/user-view-properties.component.js +627 -0
- package/dist/module.d.ts +17 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +57 -0
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +5 -0
- package/package.json +42 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { EventEmitter, AfterViewInit, OnDestroy, ElementRef, Renderer2 } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute, Router } from "@angular/router";
|
|
3
|
+
import { Metadata, EntityFieldInfo, EntityInfo } from "@memberjunction/core";
|
|
4
|
+
import { DragEndEvent } from '@progress/kendo-angular-sortable';
|
|
5
|
+
import { UserViewEntityExtended } from '@memberjunction/core-entities';
|
|
6
|
+
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
7
|
+
import { WindowComponent } from '@progress/kendo-angular-dialog';
|
|
8
|
+
import { TabComponent } from '@progress/kendo-angular-layout';
|
|
9
|
+
import { CompositeFilterDescriptor } from '@progress/kendo-data-query';
|
|
10
|
+
import { TextBoxComponent } from '@progress/kendo-angular-inputs';
|
|
11
|
+
import { SharedService } from '@memberjunction/ng-shared';
|
|
12
|
+
import { FormBuilder } from "@angular/forms";
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
export declare class UserViewPropertiesDialogComponent extends BaseFormComponent implements AfterViewInit, OnDestroy {
|
|
15
|
+
protected route: ActivatedRoute;
|
|
16
|
+
private elRef;
|
|
17
|
+
private ss;
|
|
18
|
+
private formBuilder;
|
|
19
|
+
protected router: Router;
|
|
20
|
+
private renderer;
|
|
21
|
+
ViewID: number | undefined;
|
|
22
|
+
EntityName: string | undefined;
|
|
23
|
+
ShowPropertiesButton: boolean;
|
|
24
|
+
dialogClosed: EventEmitter<any>;
|
|
25
|
+
isDialogOpened: boolean;
|
|
26
|
+
showloader: boolean;
|
|
27
|
+
localGridState: any;
|
|
28
|
+
localFilterState: any;
|
|
29
|
+
defaultFilterState: any;
|
|
30
|
+
record: UserViewEntityExtended;
|
|
31
|
+
ViewEntityInfo: EntityInfo;
|
|
32
|
+
private keyPressListener;
|
|
33
|
+
usedFields: Set<string>;
|
|
34
|
+
sortFields: any[];
|
|
35
|
+
sortState: any[];
|
|
36
|
+
sortDirections: {
|
|
37
|
+
Name: string;
|
|
38
|
+
Value: string;
|
|
39
|
+
}[];
|
|
40
|
+
kendoWindow: WindowComponent;
|
|
41
|
+
kendoTab: TabComponent;
|
|
42
|
+
nameField: TextBoxComponent;
|
|
43
|
+
dialogContainer: ElementRef;
|
|
44
|
+
private outerDialogContainer;
|
|
45
|
+
constructor(route: ActivatedRoute, elRef: ElementRef, ss: SharedService, formBuilder: FormBuilder, router: Router, renderer: Renderer2);
|
|
46
|
+
onKeyPress(event: KeyboardEvent): void;
|
|
47
|
+
GetTabTopPosition(): number;
|
|
48
|
+
CreateView(entityName: string): void;
|
|
49
|
+
Open(ViewID?: number | undefined): Promise<void>;
|
|
50
|
+
Load(): Promise<void>;
|
|
51
|
+
closePropertiesDialog(): void;
|
|
52
|
+
FinishLoad(md: Metadata): Promise<void>;
|
|
53
|
+
private appendUnusedColumnsToColumnSettings;
|
|
54
|
+
onDragEnd(e: DragEndEvent): void;
|
|
55
|
+
protected updateRecordGridState(): void;
|
|
56
|
+
onFilterChange(value: CompositeFilterDescriptor): void;
|
|
57
|
+
toggleColumn(column: any): Promise<void>;
|
|
58
|
+
saveProperties(): Promise<void>;
|
|
59
|
+
defaultOperators: any;
|
|
60
|
+
private _savedFilters;
|
|
61
|
+
setupFilters(): any;
|
|
62
|
+
toKendoFilterField: (f: EntityFieldInfo) => any;
|
|
63
|
+
getKendoEditor(field: EntityFieldInfo): "string" | "number" | "date" | "boolean";
|
|
64
|
+
getKendoOperators(field: EntityFieldInfo): any;
|
|
65
|
+
protected get ContainerObjectHeight(): number;
|
|
66
|
+
addSort(): void;
|
|
67
|
+
removeSort(item: any): void;
|
|
68
|
+
sortColumnValueChange(sortItem: any, newValue: EntityFieldInfo): void;
|
|
69
|
+
sortDirectionValueChange(sortItem: any, newValue: any): void;
|
|
70
|
+
private _movedToBody;
|
|
71
|
+
moveDialogToBody(): void;
|
|
72
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UserViewPropertiesDialogComponent, never>;
|
|
73
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UserViewPropertiesDialogComponent, "mj-user-view-properties-dialog", never, { "ViewID": { "alias": "ViewID"; "required": false; }; "EntityName": { "alias": "EntityName"; "required": false; }; "ShowPropertiesButton": { "alias": "ShowPropertiesButton"; "required": false; }; }, { "dialogClosed": "dialogClosed"; }, never, never, false, never>;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=user-view-properties.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-view-properties.component.d.ts","sourceRoot":"","sources":["../../src/lib/user-view-properties.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAkB,aAAa,EAAE,SAAS,EAAa,UAAU,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACnI,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAiB,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAc,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;;AAE7C,qBAKa,iCAAkC,SAAQ,iBAAkB,YAAW,aAAa,EAAE,SAAS;cAoC1E,KAAK,EAAE,cAAc;IAAE,OAAO,CAAC,KAAK;IAAc,OAAO,CAAC,EAAE;IAAiB,OAAO,CAAC,WAAW;cAAkC,MAAM,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ;IAnClL,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAQ;IAE3C,YAAY,oBAAsB;IAGrC,cAAc,EAAE,OAAO,CAAS;IAChC,UAAU,EAAE,OAAO,CAAQ;IAG3B,cAAc,EAAE,GAAG,CAAK;IACxB,gBAAgB,EAAE,GAAG,CAAK;IAC1B,kBAAkB,EAAE,GAAG,CAAK;IAC5B,MAAM,EAAG,sBAAsB,CAAC;IAEhC,cAAc,EAAG,UAAU,CAAC;IAEnC,OAAO,CAAC,gBAAgB,CAAM;IACvB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAEpC,UAAU,EAAE,GAAG,EAAE,CAAM;IACvB,SAAS,EAAE,GAAG,EAAE,CAAM;IACtB,cAAc;;;QAGnB;IAE0B,WAAW,EAAG,eAAe,CAAC;IACjC,QAAQ,EAAG,YAAY,CAAC;IACzB,SAAS,EAAG,gBAAgB,CAAC;IACvB,eAAe,EAAG,UAAU,CAAC;IACxB,OAAO,CAAC,oBAAoB,CAAc;gBAG7C,KAAK,EAAE,cAAc,EAAU,KAAK,EAAE,UAAU,EAAU,EAAE,EAAE,aAAa,EAAU,WAAW,EAAE,WAAW,EAAqB,MAAM,EAAE,MAAM,EAAU,QAAQ,EAAE,SAAS;IAM7M,UAAU,CAAC,KAAK,EAAE,aAAa;IAMtB,iBAAiB,IAAI,MAAM;IAI7B,UAAU,CAAC,UAAU,EAAE,MAAM;IAMvB,IAAI,CAAC,MAAM,GAAE,MAAM,GAAG,SAAuB;IAOpD,IAAI;IA4BH,qBAAqB;IAQf,UAAU,CAAC,EAAE,EAAE,QAAQ;IAsDpC,OAAO,CAAC,mCAAmC;IAwBpC,SAAS,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAcvC,SAAS,CAAC,qBAAqB;IAYxB,cAAc,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;IAIhD,YAAY,CAAC,MAAM,EAAE,GAAG;IAOxB,cAAc;IAkDpB,gBAAgB,EAAE,GAAG,CAK1B;IAGF,OAAO,CAAC,aAAa,CAAa;IAC3B,YAAY;IAUZ,kBAAkB,MAAO,eAAe,KAAG,GAAG,CAOpD;IAEM,cAAc,CAAE,KAAK,EAAE,eAAe;IAatC,iBAAiB,CAAE,KAAK,EAAE,eAAe;IAchD,cAAuB,qBAAqB,IAAI,MAAM,CAKrD;IAED,OAAO;IAIP,UAAU,CAAC,IAAI,EAAE,GAAG;IAIpB,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe;IAM9D,wBAAwB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;IAIrD,OAAO,CAAC,YAAY,CAAkB;IACtC,gBAAgB;yCA3VL,iCAAiC;2CAAjC,iCAAiC;CAmW7C"}
|
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
11
|
+
import { Metadata, EntityFieldTSType } from "@memberjunction/core";
|
|
12
|
+
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
13
|
+
import { ResourceData } from '@memberjunction/ng-shared';
|
|
14
|
+
import { WindowComponent } from '@progress/kendo-angular-dialog';
|
|
15
|
+
import { TabComponent } from '@progress/kendo-angular-layout';
|
|
16
|
+
import { MJEventType, MJGlobal } from '@memberjunction/global';
|
|
17
|
+
import { EventCodes } from '@memberjunction/ng-shared';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "@angular/router";
|
|
20
|
+
import * as i2 from "@memberjunction/ng-shared";
|
|
21
|
+
import * as i3 from "@angular/forms";
|
|
22
|
+
import * as i4 from "@angular/common";
|
|
23
|
+
import * as i5 from "@progress/kendo-angular-inputs";
|
|
24
|
+
import * as i6 from "@progress/kendo-angular-label";
|
|
25
|
+
import * as i7 from "@progress/kendo-angular-buttons";
|
|
26
|
+
import * as i8 from "@progress/kendo-angular-dialog";
|
|
27
|
+
import * as i9 from "@progress/kendo-angular-layout";
|
|
28
|
+
import * as i10 from "@progress/kendo-angular-sortable";
|
|
29
|
+
import * as i11 from "@progress/kendo-angular-filter";
|
|
30
|
+
const _c0 = ["nameField"];
|
|
31
|
+
const _c1 = ["dialogContainer"];
|
|
32
|
+
const _c2 = ["outerDialogContainer"];
|
|
33
|
+
function UserViewPropertiesDialogComponent_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
35
|
+
i0.ɵɵelementStart(0, "button", 4);
|
|
36
|
+
i0.ɵɵlistener("click", function UserViewPropertiesDialogComponent_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.Open()); });
|
|
37
|
+
i0.ɵɵelement(1, "kendo-svgicon", 5);
|
|
38
|
+
i0.ɵɵtext(2, " Properties ");
|
|
39
|
+
i0.ɵɵelementEnd();
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
42
|
+
i0.ɵɵadvance();
|
|
43
|
+
i0.ɵɵproperty("icon", ctx_r0.sharedService.kendoSVGIcon("gear"));
|
|
44
|
+
} }
|
|
45
|
+
function UserViewPropertiesDialogComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
i0.ɵɵelement(0, "div", 6);
|
|
47
|
+
} }
|
|
48
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_kendo_loader_1_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
i0.ɵɵelement(0, "kendo-loader", 21);
|
|
50
|
+
} }
|
|
51
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
53
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "div", 23);
|
|
54
|
+
i0.ɵɵelement(2, "kendo-label", 24);
|
|
55
|
+
i0.ɵɵelementStart(3, "kendo-textbox", 25, 26);
|
|
56
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_7_Template_kendo_textbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r14.record.Name, $event) || (ctx_r14.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
57
|
+
i0.ɵɵelementEnd()();
|
|
58
|
+
i0.ɵɵelementStart(5, "div", 27);
|
|
59
|
+
i0.ɵɵelement(6, "kendo-label", 28);
|
|
60
|
+
i0.ɵɵelementStart(7, "textarea", 29);
|
|
61
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_7_Template_textarea_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r16.record.Description, $event) || (ctx_r16.record.Description = $event); return i0.ɵɵresetView($event); });
|
|
62
|
+
i0.ɵɵelementEnd()()();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
65
|
+
i0.ɵɵadvance(3);
|
|
66
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r8.record.Name);
|
|
67
|
+
i0.ɵɵadvance(4);
|
|
68
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r8.record.Description);
|
|
69
|
+
} }
|
|
70
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
72
|
+
i0.ɵɵelementStart(0, "div", 31)(1, "div")(2, "input", 32);
|
|
73
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template_input_ngModelChange_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r20); const col_r18 = restoredCtx.item; i0.ɵɵtwoWayBindingSet(col_r18.hidden, $event) || (col_r18.hidden = $event); return i0.ɵɵresetView($event); });
|
|
74
|
+
i0.ɵɵlistener("change", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template_input_change_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r20); const col_r18 = restoredCtx.item; const ctx_r21 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r21.toggleColumn(col_r18)); });
|
|
75
|
+
i0.ɵɵelementEnd();
|
|
76
|
+
i0.ɵɵelement(3, "kendo-label", 33);
|
|
77
|
+
i0.ɵɵelementEnd();
|
|
78
|
+
i0.ɵɵelement(4, "kendo-svgicon", 5);
|
|
79
|
+
i0.ɵɵelementEnd();
|
|
80
|
+
} if (rf & 2) {
|
|
81
|
+
const col_r18 = ctx.item;
|
|
82
|
+
const ctx_r17 = i0.ɵɵnextContext(3);
|
|
83
|
+
i0.ɵɵadvance(2);
|
|
84
|
+
i0.ɵɵpropertyInterpolate1("id", "column_", col_r18.ID, "");
|
|
85
|
+
i0.ɵɵtwoWayProperty("ngModel", !col_r18.hidden);
|
|
86
|
+
i0.ɵɵadvance();
|
|
87
|
+
i0.ɵɵproperty("for", "column_" + col_r18.ID)("text", col_r18.DisplayName ? col_r18.DisplayName : col_r18.Name);
|
|
88
|
+
i0.ɵɵadvance();
|
|
89
|
+
i0.ɵɵproperty("icon", ctx_r17.sharedService.kendoSVGIcon("reorder"));
|
|
90
|
+
} }
|
|
91
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
93
|
+
i0.ɵɵelementStart(0, "kendo-sortable", 30);
|
|
94
|
+
i0.ɵɵlistener("dragEnd", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_Template_kendo_sortable_dragEnd_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.onDragEnd($event)); });
|
|
95
|
+
i0.ɵɵtemplate(1, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template, 5, 5, "ng-template");
|
|
96
|
+
i0.ɵɵelementEnd();
|
|
97
|
+
} if (rf & 2) {
|
|
98
|
+
const ctx_r9 = i0.ɵɵnextContext(2);
|
|
99
|
+
i0.ɵɵproperty("kendoSortableBinding", ctx_r9.localGridState.columnSettings)("animation", true);
|
|
100
|
+
} }
|
|
101
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
103
|
+
i0.ɵɵelementStart(0, "div", 39)(1, "kendo-textarea", 40);
|
|
104
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_div_3_Template_kendo_textarea_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r26.record.SmartFilterPrompt, $event) || (ctx_r26.record.SmartFilterPrompt = $event); return i0.ɵɵresetView($event); });
|
|
105
|
+
i0.ɵɵelementEnd()();
|
|
106
|
+
} if (rf & 2) {
|
|
107
|
+
const ctx_r24 = i0.ɵɵnextContext(3);
|
|
108
|
+
i0.ɵɵproperty("fillHeight", true);
|
|
109
|
+
i0.ɵɵadvance();
|
|
110
|
+
i0.ɵɵproperty("rows", 10);
|
|
111
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r24.record.SmartFilterPrompt);
|
|
112
|
+
} }
|
|
113
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
115
|
+
i0.ɵɵelementStart(0, "div")(1, "kendo-filter", 41);
|
|
116
|
+
i0.ɵɵlistener("valueChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_div_4_Template_kendo_filter_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r28.onFilterChange($event)); });
|
|
117
|
+
i0.ɵɵelementEnd()();
|
|
118
|
+
} if (rf & 2) {
|
|
119
|
+
const ctx_r25 = i0.ɵɵnextContext(3);
|
|
120
|
+
i0.ɵɵadvance();
|
|
121
|
+
i0.ɵɵproperty("filters", ctx_r25.setupFilters())("value", ctx_r25.defaultFilterState);
|
|
122
|
+
} }
|
|
123
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
125
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
126
|
+
i0.ɵɵelement(1, "kendo-label", 35);
|
|
127
|
+
i0.ɵɵelementStart(2, "kendo-switch", 36);
|
|
128
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_Template_kendo_switch_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r30.record.SmartFilterEnabled, $event) || (ctx_r30.record.SmartFilterEnabled = $event); return i0.ɵɵresetView($event); });
|
|
129
|
+
i0.ɵɵelementEnd()();
|
|
130
|
+
i0.ɵɵtemplate(3, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_div_3_Template, 2, 3, "div", 37)(4, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_div_4_Template, 2, 2, "div", 38);
|
|
131
|
+
} if (rf & 2) {
|
|
132
|
+
const ctx_r10 = i0.ɵɵnextContext(2);
|
|
133
|
+
i0.ɵɵadvance(2);
|
|
134
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r10.record.SmartFilterEnabled);
|
|
135
|
+
i0.ɵɵadvance();
|
|
136
|
+
i0.ɵɵproperty("ngIf", ctx_r10.record.SmartFilterEnabled);
|
|
137
|
+
i0.ɵɵadvance();
|
|
138
|
+
i0.ɵɵproperty("ngIf", !ctx_r10.record.SmartFilterEnabled);
|
|
139
|
+
} }
|
|
140
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
142
|
+
i0.ɵɵelementStart(0, "div")(1, "kendo-dropdownlist", 45);
|
|
143
|
+
i0.ɵɵlistener("valueChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_div_3_Template_kendo_dropdownlist_valueChange_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r35); const s_r33 = restoredCtx.$implicit; const ctx_r34 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r34.sortColumnValueChange(s_r33, $event)); });
|
|
144
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_div_3_Template_kendo_dropdownlist_ngModelChange_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r35); const s_r33 = restoredCtx.$implicit; i0.ɵɵtwoWayBindingSet(s_r33.field, $event) || (s_r33.field = $event); return i0.ɵɵresetView($event); });
|
|
145
|
+
i0.ɵɵelementEnd();
|
|
146
|
+
i0.ɵɵelementStart(2, "kendo-dropdownlist", 46);
|
|
147
|
+
i0.ɵɵlistener("valueChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_div_3_Template_kendo_dropdownlist_valueChange_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r35); const s_r33 = restoredCtx.$implicit; const ctx_r37 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r37.sortDirectionValueChange(s_r33, $event)); });
|
|
148
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_div_3_Template_kendo_dropdownlist_ngModelChange_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r35); const s_r33 = restoredCtx.$implicit; i0.ɵɵtwoWayBindingSet(s_r33.direction, $event) || (s_r33.direction = $event); return i0.ɵɵresetView($event); });
|
|
149
|
+
i0.ɵɵelementEnd();
|
|
150
|
+
i0.ɵɵelementStart(3, "button", 43);
|
|
151
|
+
i0.ɵɵlistener("click", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_div_3_Template_button_click_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r35); const s_r33 = restoredCtx.$implicit; const ctx_r39 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r39.removeSort(s_r33)); });
|
|
152
|
+
i0.ɵɵelement(4, "kendo-svgicon", 5);
|
|
153
|
+
i0.ɵɵelementEnd()();
|
|
154
|
+
} if (rf & 2) {
|
|
155
|
+
const s_r33 = ctx.$implicit;
|
|
156
|
+
const ctx_r32 = i0.ɵɵnextContext(3);
|
|
157
|
+
i0.ɵɵadvance();
|
|
158
|
+
i0.ɵɵproperty("data", ctx_r32.sortFields);
|
|
159
|
+
i0.ɵɵtwoWayProperty("ngModel", s_r33.field);
|
|
160
|
+
i0.ɵɵadvance();
|
|
161
|
+
i0.ɵɵproperty("data", ctx_r32.sortDirections);
|
|
162
|
+
i0.ɵɵtwoWayProperty("ngModel", s_r33.direction);
|
|
163
|
+
i0.ɵɵadvance(2);
|
|
164
|
+
i0.ɵɵproperty("icon", ctx_r32.sharedService.kendoSVGIcon("sortClear"));
|
|
165
|
+
} }
|
|
166
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
168
|
+
i0.ɵɵelementStart(0, "div", 42)(1, "button", 43);
|
|
169
|
+
i0.ɵɵlistener("click", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r40.addSort()); });
|
|
170
|
+
i0.ɵɵelement(2, "kendo-svgicon", 5);
|
|
171
|
+
i0.ɵɵelementEnd()();
|
|
172
|
+
i0.ɵɵtemplate(3, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_div_3_Template, 5, 5, "div", 44);
|
|
173
|
+
} if (rf & 2) {
|
|
174
|
+
const ctx_r11 = i0.ɵɵnextContext(2);
|
|
175
|
+
i0.ɵɵadvance(2);
|
|
176
|
+
i0.ɵɵproperty("icon", ctx_r11.sharedService.kendoSVGIcon("filterAddExpression"));
|
|
177
|
+
i0.ɵɵadvance();
|
|
178
|
+
i0.ɵɵproperty("ngForOf", ctx_r11.sortState);
|
|
179
|
+
} }
|
|
180
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
+
const _r45 = i0.ɵɵgetCurrentView();
|
|
182
|
+
i0.ɵɵelementStart(0, "div")(1, "kendo-textarea", 48);
|
|
183
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_div_0_Template_kendo_textarea_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r44.record.SmartFilterExplanation, $event) || (ctx_r44.record.SmartFilterExplanation = $event); return i0.ɵɵresetView($event); });
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
i0.ɵɵelementStart(2, "kendo-textarea", 48);
|
|
186
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_div_0_Template_kendo_textarea_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r46 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r46.record.SmartFilterWhereClause, $event) || (ctx_r46.record.SmartFilterWhereClause = $event); return i0.ɵɵresetView($event); });
|
|
187
|
+
i0.ɵɵelementEnd()();
|
|
188
|
+
} if (rf & 2) {
|
|
189
|
+
const ctx_r42 = i0.ɵɵnextContext(3);
|
|
190
|
+
i0.ɵɵadvance();
|
|
191
|
+
i0.ɵɵproperty("readonly", true)("rows", 5);
|
|
192
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r42.record.SmartFilterExplanation);
|
|
193
|
+
i0.ɵɵadvance();
|
|
194
|
+
i0.ɵɵproperty("readonly", true)("rows", 5);
|
|
195
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r42.record.SmartFilterWhereClause);
|
|
196
|
+
} }
|
|
197
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
const _r48 = i0.ɵɵgetCurrentView();
|
|
199
|
+
i0.ɵɵelementStart(0, "div")(1, "kendo-textarea", 48);
|
|
200
|
+
i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_div_1_Template_kendo_textarea_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r48); const ctx_r47 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r47.record.WhereClause, $event) || (ctx_r47.record.WhereClause = $event); return i0.ɵɵresetView($event); });
|
|
201
|
+
i0.ɵɵelementEnd()();
|
|
202
|
+
} if (rf & 2) {
|
|
203
|
+
const ctx_r43 = i0.ɵɵnextContext(3);
|
|
204
|
+
i0.ɵɵadvance();
|
|
205
|
+
i0.ɵɵproperty("readonly", true)("rows", 7);
|
|
206
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r43.record.WhereClause);
|
|
207
|
+
} }
|
|
208
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
+
i0.ɵɵtemplate(0, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_div_0_Template, 3, 6, "div", 38)(1, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_div_1_Template, 2, 3, "div", 47);
|
|
210
|
+
} if (rf & 2) {
|
|
211
|
+
const ctx_r12 = i0.ɵɵnextContext(2);
|
|
212
|
+
i0.ɵɵproperty("ngIf", ctx_r12.record.SmartFilterEnabled);
|
|
213
|
+
} }
|
|
214
|
+
function UserViewPropertiesDialogComponent_kendo_window_5_Template(rf, ctx) { if (rf & 1) {
|
|
215
|
+
const _r50 = i0.ɵɵgetCurrentView();
|
|
216
|
+
i0.ɵɵelementStart(0, "kendo-window", 7);
|
|
217
|
+
i0.ɵɵlistener("close", function UserViewPropertiesDialogComponent_kendo_window_5_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r50); const ctx_r49 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r49.closePropertiesDialog()); })("resizeEnd", function UserViewPropertiesDialogComponent_kendo_window_5_Template_kendo_window_resizeEnd_0_listener() { i0.ɵɵrestoreView(_r50); const ctx_r51 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r51.ResizeTab()); })("heightChange", function UserViewPropertiesDialogComponent_kendo_window_5_Template_kendo_window_heightChange_0_listener() { i0.ɵɵrestoreView(_r50); const ctx_r52 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r52.ResizeTab()); })("widthChange", function UserViewPropertiesDialogComponent_kendo_window_5_Template_kendo_window_widthChange_0_listener() { i0.ɵɵrestoreView(_r50); const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.ResizeTab()); });
|
|
218
|
+
i0.ɵɵtemplate(1, UserViewPropertiesDialogComponent_kendo_window_5_kendo_loader_1_Template, 1, 0, "kendo-loader", 8);
|
|
219
|
+
i0.ɵɵelementStart(2, "div", 9, 10)(4, "div")(5, "kendo-tabstrip", 11)(6, "kendo-tabstrip-tab", 12);
|
|
220
|
+
i0.ɵɵtemplate(7, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_7_Template, 8, 2, "ng-template", 13);
|
|
221
|
+
i0.ɵɵelementEnd();
|
|
222
|
+
i0.ɵɵelementStart(8, "kendo-tabstrip-tab", 14);
|
|
223
|
+
i0.ɵɵtemplate(9, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_Template, 2, 2, "ng-template", 13);
|
|
224
|
+
i0.ɵɵelementEnd();
|
|
225
|
+
i0.ɵɵelementStart(10, "kendo-tabstrip-tab", 15);
|
|
226
|
+
i0.ɵɵtemplate(11, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_11_Template, 5, 3, "ng-template", 13);
|
|
227
|
+
i0.ɵɵelementEnd();
|
|
228
|
+
i0.ɵɵelementStart(12, "kendo-tabstrip-tab", 16);
|
|
229
|
+
i0.ɵɵtemplate(13, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_13_Template, 4, 2, "ng-template", 13);
|
|
230
|
+
i0.ɵɵelementEnd();
|
|
231
|
+
i0.ɵɵelementStart(14, "kendo-tabstrip-tab", 17);
|
|
232
|
+
i0.ɵɵtemplate(15, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_15_Template, 2, 1, "ng-template", 13);
|
|
233
|
+
i0.ɵɵelementEnd()();
|
|
234
|
+
i0.ɵɵelementStart(16, "div", 18)(17, "button", 19);
|
|
235
|
+
i0.ɵɵlistener("click", function UserViewPropertiesDialogComponent_kendo_window_5_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r50); const ctx_r54 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r54.saveProperties()); });
|
|
236
|
+
i0.ɵɵelement(18, "kendo-svgicon", 5);
|
|
237
|
+
i0.ɵɵtext(19, " Save ");
|
|
238
|
+
i0.ɵɵelementEnd();
|
|
239
|
+
i0.ɵɵelementStart(20, "button", 20);
|
|
240
|
+
i0.ɵɵlistener("click", function UserViewPropertiesDialogComponent_kendo_window_5_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r50); const ctx_r55 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r55.closePropertiesDialog()); });
|
|
241
|
+
i0.ɵɵtext(21, "Cancel");
|
|
242
|
+
i0.ɵɵelementEnd()()()()();
|
|
243
|
+
} if (rf & 2) {
|
|
244
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
245
|
+
i0.ɵɵproperty("minHeight", 300)("minWidth", 800)("top", 100)("left", 100)("width", 668)("height", 525)("resizable", true);
|
|
246
|
+
i0.ɵɵadvance();
|
|
247
|
+
i0.ɵɵproperty("ngIf", ctx_r3.showloader);
|
|
248
|
+
i0.ɵɵadvance(3);
|
|
249
|
+
i0.ɵɵclassMap(ctx_r3.showloader ? "disabled-div" : "");
|
|
250
|
+
i0.ɵɵadvance();
|
|
251
|
+
i0.ɵɵproperty("keepTabContent", true)("animate", false)("height", ctx_r3.TabHeight);
|
|
252
|
+
i0.ɵɵadvance();
|
|
253
|
+
i0.ɵɵproperty("selected", true);
|
|
254
|
+
i0.ɵɵadvance(12);
|
|
255
|
+
i0.ɵɵproperty("icon", ctx_r3.sharedService.kendoSVGIcon("save"));
|
|
256
|
+
} }
|
|
257
|
+
export class UserViewPropertiesDialogComponent extends BaseFormComponent {
|
|
258
|
+
constructor(route, elRef, ss, formBuilder, router, renderer) {
|
|
259
|
+
super(elRef, ss, router, route);
|
|
260
|
+
this.route = route;
|
|
261
|
+
this.elRef = elRef;
|
|
262
|
+
this.ss = ss;
|
|
263
|
+
this.formBuilder = formBuilder;
|
|
264
|
+
this.router = router;
|
|
265
|
+
this.renderer = renderer;
|
|
266
|
+
this.ShowPropertiesButton = true;
|
|
267
|
+
this.dialogClosed = new EventEmitter();
|
|
268
|
+
this.isDialogOpened = false;
|
|
269
|
+
this.showloader = true;
|
|
270
|
+
// public localViewColumns: ViewColumnInfo[] = [];
|
|
271
|
+
this.localGridState = {};
|
|
272
|
+
this.localFilterState = {};
|
|
273
|
+
this.defaultFilterState = {};
|
|
274
|
+
this.usedFields = new Set(); // Track used fields
|
|
275
|
+
this.sortFields = [];
|
|
276
|
+
this.sortState = [];
|
|
277
|
+
this.sortDirections = [
|
|
278
|
+
{ Name: 'Up', Value: 'asc' },
|
|
279
|
+
{ Name: 'Down', Value: 'desc' }
|
|
280
|
+
];
|
|
281
|
+
this.defaultOperators = {
|
|
282
|
+
string: ["contains", "doesnotcontain", "eq", "neq", "startswith", "endswith", "isnull", "isnotnull", "isempty", "isnotempty"],
|
|
283
|
+
number: ["neq", "eq", "gte", "gt", "lte", "lt", "isnull", "isnotnull"],
|
|
284
|
+
date: ["neq", "eq", "gte", "gt", "lte", "lt", "isnull", "isnotnull"],
|
|
285
|
+
boolean: ["eq", "neq"]
|
|
286
|
+
};
|
|
287
|
+
this._savedFilters = null;
|
|
288
|
+
this.toKendoFilterField = (f) => {
|
|
289
|
+
var _a;
|
|
290
|
+
return {
|
|
291
|
+
field: f.Name,
|
|
292
|
+
title: (_a = f.DisplayName) !== null && _a !== void 0 ? _a : f.Name,
|
|
293
|
+
editor: this.getKendoEditor(f),
|
|
294
|
+
operators: this.getKendoOperators(f)
|
|
295
|
+
};
|
|
296
|
+
};
|
|
297
|
+
this._movedToBody = false;
|
|
298
|
+
this.BottomMargin = 75;
|
|
299
|
+
}
|
|
300
|
+
onKeyPress(event) {
|
|
301
|
+
if (event.key === 'Enter') {
|
|
302
|
+
this.saveProperties();
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
GetTabTopPosition() {
|
|
306
|
+
return 50; // for this dialog, we don't want to offset the tab position related to where it is on the page, this is relative to top of dialog
|
|
307
|
+
}
|
|
308
|
+
CreateView(entityName) {
|
|
309
|
+
this.EntityName = entityName;
|
|
310
|
+
this.ViewID = undefined;
|
|
311
|
+
this.Open();
|
|
312
|
+
}
|
|
313
|
+
Open(ViewID = this.ViewID) {
|
|
314
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
315
|
+
this.ViewID = ViewID;
|
|
316
|
+
yield this.Load();
|
|
317
|
+
this.isDialogOpened = true; // binding causes the kendo window to open from this method call
|
|
318
|
+
this.moveDialogToBody();
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
Load() {
|
|
322
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
323
|
+
const md = new Metadata();
|
|
324
|
+
this.record = (yield md.GetEntityObject('User Views'));
|
|
325
|
+
if (this.ViewID) {
|
|
326
|
+
// load the view
|
|
327
|
+
yield this.record.Load(this.ViewID);
|
|
328
|
+
}
|
|
329
|
+
else if (this.EntityName) {
|
|
330
|
+
// We don't have a View ID, we are creating a NEW view, so do NewRecord()
|
|
331
|
+
this.record.NewRecord();
|
|
332
|
+
const e = md.Entities.find(e => e.Name == this.EntityName);
|
|
333
|
+
if (e) {
|
|
334
|
+
this.record.SetDefaultsFromEntity(e);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
throw new Error(`Entity ${this.EntityName} not found in metadata`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
// now we load up the columns
|
|
341
|
+
this.FinishLoad(md);
|
|
342
|
+
this.showloader = false;
|
|
343
|
+
setTimeout(() => {
|
|
344
|
+
this.ResizeTab();
|
|
345
|
+
}, 200);
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
closePropertiesDialog() {
|
|
349
|
+
this.dialogClosed.emit({});
|
|
350
|
+
this.isDialogOpened = false; // binding causes the kendo window to close from this method call
|
|
351
|
+
if (this.keyPressListener) { // removing the keypress listener when the dialog closes
|
|
352
|
+
this.dialogContainer.nativeElement.removeEventListener('keypress', this.keyPressListener);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
FinishLoad(md) {
|
|
356
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
357
|
+
this.ViewEntityInfo = md.Entities.find(e => e.ID == this.record.EntityID);
|
|
358
|
+
// using all these local variables because the VSCode debugger doesn't know what "this" is all of a sudden
|
|
359
|
+
if (!this.ViewEntityInfo)
|
|
360
|
+
throw new Error(`Entity ${this.record.EntityID} not found in metadata`);
|
|
361
|
+
// prepare the sorting state
|
|
362
|
+
this.sortFields = this.ViewEntityInfo.Fields;
|
|
363
|
+
if (this.record.SortState === null || this.record.SortState === undefined || this.record.SortState.trim().length === 0)
|
|
364
|
+
this.sortState = [];
|
|
365
|
+
else
|
|
366
|
+
this.sortState = JSON.parse(this.record.SortState);
|
|
367
|
+
// now translate the sortState into the UI format by swapping out the primitve field names and sort direction with the data objects that the kendo ui will bind to
|
|
368
|
+
this.sortState = this.sortState.map((s) => {
|
|
369
|
+
var _a;
|
|
370
|
+
let dir;
|
|
371
|
+
if (typeof s.direction === 'string') {
|
|
372
|
+
dir = s.direction;
|
|
373
|
+
}
|
|
374
|
+
else if (typeof s.direction === 'number' && s.direction === 1) { // some legacy views have 1 and 2 for asc and desc
|
|
375
|
+
dir = 'asc';
|
|
376
|
+
}
|
|
377
|
+
else if (typeof s.direction === 'number' && s.direction === 2) {
|
|
378
|
+
dir = 'desc';
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
dir = '';
|
|
382
|
+
}
|
|
383
|
+
return {
|
|
384
|
+
field: (_a = this.ViewEntityInfo) === null || _a === void 0 ? void 0 : _a.Fields.find((f) => f.Name === s.field),
|
|
385
|
+
direction: this.sortDirections.find((d) => d.Value.trim().toLowerCase() === dir)
|
|
386
|
+
};
|
|
387
|
+
});
|
|
388
|
+
this.localGridState = JSON.parse(this.record.GridState);
|
|
389
|
+
const temp = this.localGridState;
|
|
390
|
+
this.localFilterState = JSON.parse(this.record.FilterState);
|
|
391
|
+
this.defaultFilterState = this.localFilterState; // adding a duplicate filter state for populating the default filter state
|
|
392
|
+
this.appendUnusedColumnsToColumnSettings(this.localGridState);
|
|
393
|
+
this.localGridState.columnSettings.sort((a, b) => {
|
|
394
|
+
if (a.hidden && !b.hidden)
|
|
395
|
+
return 1;
|
|
396
|
+
if (!a.hidden && b.hidden)
|
|
397
|
+
return -1;
|
|
398
|
+
// if we get here, they're both hidden, or both not hidden, so sort by orderIndex
|
|
399
|
+
return a.orderIndex - b.orderIndex;
|
|
400
|
+
});
|
|
401
|
+
setTimeout(() => {
|
|
402
|
+
this.keyPressListener = this.onKeyPress.bind(this);
|
|
403
|
+
this.dialogContainer.nativeElement.addEventListener('keypress', this.onKeyPress.bind(this));
|
|
404
|
+
this.nameField.focus();
|
|
405
|
+
}, 200);
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
appendUnusedColumnsToColumnSettings(gridState) {
|
|
409
|
+
var _a;
|
|
410
|
+
// we go through our EntityFields and add any that aren't already in the columnSettings
|
|
411
|
+
// this is so that we can add new columns to the view that were not previously used in this view
|
|
412
|
+
const unusedFields = (_a = this.ViewEntityInfo) === null || _a === void 0 ? void 0 : _a.Fields.filter(f => {
|
|
413
|
+
if (gridState.columnSettings.find((col) => col.Name.trim().toLowerCase() === f.Name.trim().toLowerCase()))
|
|
414
|
+
return false; // this entity field is already in the columnSettings
|
|
415
|
+
else
|
|
416
|
+
return true; // this entity field is not in the columnSettings
|
|
417
|
+
});
|
|
418
|
+
// now we add the unused fields to the columnSettings
|
|
419
|
+
unusedFields === null || unusedFields === void 0 ? void 0 : unusedFields.forEach((f) => {
|
|
420
|
+
gridState.columnSettings.push({
|
|
421
|
+
ID: f.ID,
|
|
422
|
+
DisplayName: f.DisplayName,
|
|
423
|
+
Name: f.Name,
|
|
424
|
+
orderIndex: gridState.columnSettings.length,
|
|
425
|
+
width: f.DefaultColumnWidth ? f.DefaultColumnWidth : 100,
|
|
426
|
+
EntityField: f,
|
|
427
|
+
hidden: true
|
|
428
|
+
});
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
onDragEnd(e) {
|
|
432
|
+
if (e.index >= 0) {
|
|
433
|
+
// const column = this.localViewColumns[e.index];
|
|
434
|
+
if (this.localGridState) {
|
|
435
|
+
const lvc = this.localGridState.columnSettings;
|
|
436
|
+
for (let i = 0; i < lvc.length; i++) {
|
|
437
|
+
const col = lvc[i];
|
|
438
|
+
col.orderIndex = i; // the orderIndex inside the column is what is actually used to drive this, the order in the ARRAY gets updated by KendoSortable but orderIndex isn't automatically updated
|
|
439
|
+
}
|
|
440
|
+
this.updateRecordGridState();
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
updateRecordGridState() {
|
|
445
|
+
const temp = JSON.stringify(this.localGridState);
|
|
446
|
+
const tempO = JSON.parse(temp); // make sure we have a clean object that is NOT linked in memory to the localGridState
|
|
447
|
+
// now strip the EntityField from the columnSettings in the tempO object
|
|
448
|
+
tempO.columnSettings.forEach((col) => {
|
|
449
|
+
delete col.EntityField;
|
|
450
|
+
});
|
|
451
|
+
this.record.GridState = JSON.stringify(tempO); // stringify the state into the record
|
|
452
|
+
}
|
|
453
|
+
onFilterChange(value) {
|
|
454
|
+
this.localFilterState = value;
|
|
455
|
+
}
|
|
456
|
+
toggleColumn(column) {
|
|
457
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
458
|
+
column.hidden = !column.hidden; // do the toggle
|
|
459
|
+
if (this.localGridState)
|
|
460
|
+
this.updateRecordGridState();
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
saveProperties() {
|
|
464
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
465
|
+
const bNewRecord = !(this.record.PrimaryKey.Value);
|
|
466
|
+
this.showloader = true;
|
|
467
|
+
const lfs = JSON.stringify(this.localFilterState);
|
|
468
|
+
this.record.FilterState = JSON.stringify(this.localFilterState); // pass this along as as string, not directly bound since Kendo Filter is bound to a local object we need to translate to a string
|
|
469
|
+
// need to convert the UI format to the data format.
|
|
470
|
+
const sortMap = this.sortState.map((s) => {
|
|
471
|
+
return {
|
|
472
|
+
field: s.field.Name,
|
|
473
|
+
direction: s.direction.Value
|
|
474
|
+
};
|
|
475
|
+
});
|
|
476
|
+
this.record.SortState = JSON.stringify(sortMap);
|
|
477
|
+
// validate the record first
|
|
478
|
+
const valResults = this.record.Validate();
|
|
479
|
+
if (valResults.Success === false) {
|
|
480
|
+
this.showloader = false;
|
|
481
|
+
this.sharedService.CreateSimpleNotification('Validation Errors: ' + valResults.Errors.map((e) => e.Message).join('\n'), 'warning', 7500);
|
|
482
|
+
}
|
|
483
|
+
else if (yield this.record.Save()) {
|
|
484
|
+
this.dialogClosed.emit({ Saved: true, ViewEntity: this.record });
|
|
485
|
+
this.isDialogOpened = false; // close the kendo window - this works through ngIf binding
|
|
486
|
+
this.showloader = false;
|
|
487
|
+
if (!bNewRecord) // view already exists so we're not changing the route as it is alreayd on the view, but we fire an event to let people know that it's changed
|
|
488
|
+
MJGlobal.Instance.RaiseEvent({
|
|
489
|
+
event: MJEventType.ComponentEvent,
|
|
490
|
+
eventCode: EventCodes.ViewUpdated,
|
|
491
|
+
args: new ResourceData({
|
|
492
|
+
ResourceTypeID: this.sharedService.ViewResourceType.ID,
|
|
493
|
+
ResourceRecordID: this.record.PrimaryKey.Value,
|
|
494
|
+
Configuration: {
|
|
495
|
+
ViewEntity: this.record
|
|
496
|
+
}
|
|
497
|
+
}),
|
|
498
|
+
component: this
|
|
499
|
+
});
|
|
500
|
+
else
|
|
501
|
+
// we route to the new view using the router
|
|
502
|
+
this.router.navigate(['resource', 'view', this.record.PrimaryKey.Value]);
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
// it failed, so don't close the dialog
|
|
506
|
+
this.showloader = false;
|
|
507
|
+
this.sharedService.CreateSimpleNotification('Saving the view failed, please try again and if this persists contact your administrator.', 'error', 5000);
|
|
508
|
+
}
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
setupFilters() {
|
|
512
|
+
if (this._savedFilters === null) {
|
|
513
|
+
const filters = this.ViewEntityInfo.Fields.map((f) => this.toKendoFilterField(f));
|
|
514
|
+
this._savedFilters = filters;
|
|
515
|
+
return filters;
|
|
516
|
+
}
|
|
517
|
+
else
|
|
518
|
+
return this._savedFilters;
|
|
519
|
+
}
|
|
520
|
+
getKendoEditor(field) {
|
|
521
|
+
switch (field.TSType) {
|
|
522
|
+
case EntityFieldTSType.Boolean:
|
|
523
|
+
return 'boolean';
|
|
524
|
+
case EntityFieldTSType.Date:
|
|
525
|
+
return 'date';
|
|
526
|
+
case EntityFieldTSType.Number:
|
|
527
|
+
return 'number';
|
|
528
|
+
default:
|
|
529
|
+
return 'string';
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
getKendoOperators(field) {
|
|
533
|
+
switch (field.TSType) {
|
|
534
|
+
case EntityFieldTSType.Boolean:
|
|
535
|
+
return this.defaultOperators.boolean;
|
|
536
|
+
case EntityFieldTSType.Date:
|
|
537
|
+
return this.defaultOperators.date;
|
|
538
|
+
case EntityFieldTSType.Number:
|
|
539
|
+
return this.defaultOperators.number;
|
|
540
|
+
default:
|
|
541
|
+
return this.defaultOperators.string;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
get ContainerObjectHeight() {
|
|
545
|
+
if (this.kendoWindow)
|
|
546
|
+
return this.kendoWindow.height;
|
|
547
|
+
else
|
|
548
|
+
return 0;
|
|
549
|
+
}
|
|
550
|
+
addSort() {
|
|
551
|
+
var _a;
|
|
552
|
+
this.sortState = this.sortState.concat({ field: (_a = this.ViewEntityInfo) === null || _a === void 0 ? void 0 : _a.Fields[0], direction: this.sortDirections[0] }); // add a new sort item
|
|
553
|
+
}
|
|
554
|
+
removeSort(item) {
|
|
555
|
+
this.sortState = this.sortState.filter((i) => i !== item);
|
|
556
|
+
}
|
|
557
|
+
sortColumnValueChange(sortItem, newValue) {
|
|
558
|
+
const idx = this.sortState.findIndex((i) => i === sortItem);
|
|
559
|
+
console.log(this.sortState);
|
|
560
|
+
console.log(newValue);
|
|
561
|
+
}
|
|
562
|
+
sortDirectionValueChange(sortItem, newValue) {
|
|
563
|
+
}
|
|
564
|
+
moveDialogToBody() {
|
|
565
|
+
if (this._movedToBody)
|
|
566
|
+
return;
|
|
567
|
+
const dialogElement = this.outerDialogContainer.nativeElement;
|
|
568
|
+
this.renderer.appendChild(document.body, dialogElement);
|
|
569
|
+
this._movedToBody = true;
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
UserViewPropertiesDialogComponent.ɵfac = function UserViewPropertiesDialogComponent_Factory(t) { return new (t || UserViewPropertiesDialogComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.SharedService), i0.ɵɵdirectiveInject(i3.FormBuilder), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
573
|
+
UserViewPropertiesDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserViewPropertiesDialogComponent, selectors: [["mj-user-view-properties-dialog"]], viewQuery: function UserViewPropertiesDialogComponent_Query(rf, ctx) { if (rf & 1) {
|
|
574
|
+
i0.ɵɵviewQuery(WindowComponent, 5);
|
|
575
|
+
i0.ɵɵviewQuery(TabComponent, 5);
|
|
576
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
577
|
+
i0.ɵɵviewQuery(_c1, 5);
|
|
578
|
+
i0.ɵɵviewQuery(_c2, 5);
|
|
579
|
+
} if (rf & 2) {
|
|
580
|
+
let _t;
|
|
581
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.kendoWindow = _t.first);
|
|
582
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.kendoTab = _t.first);
|
|
583
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nameField = _t.first);
|
|
584
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dialogContainer = _t.first);
|
|
585
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.outerDialogContainer = _t.first);
|
|
586
|
+
} }, inputs: { ViewID: "ViewID", EntityName: "EntityName", ShowPropertiesButton: "ShowPropertiesButton" }, outputs: { dialogClosed: "dialogClosed" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 3, consts: [["kendoButton", "", "themeColor", "info", "class", "view-properties-button", 3, "click", 4, "ngIf"], ["outerDialogContainer", ""], ["class", "k-overlay", 4, "ngIf"], ["title", "View Properties", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close", "resizeEnd", "heightChange", "widthChange", 4, "ngIf"], ["kendoButton", "", "themeColor", "info", 1, "view-properties-button", 3, "click"], [3, "icon"], [1, "k-overlay"], ["title", "View Properties", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close", "resizeEnd", "heightChange", "widthChange"], ["type", "converging-spinner", 4, "ngIf"], [1, "k-d-flex", "k-flex-col", "k-justify-content-between", "k-h-full"], ["dialogContainer", ""], [3, "keepTabContent", "animate", "height"], ["title", "General", 3, "selected"], ["kendoTabContent", ""], ["title", "Fields"], ["title", "Filters"], ["title", "Sorting"], ["title", "Advanced"], [1, "k-actions", "k-actions-end", "customBtn", "popup-actions"], ["kendoButton", "", "themeColor", "info", 3, "click"], ["fillMode", "outline", "themeColor", "info", "kendoButton", "", 3, "click"], ["type", "converging-spinner"], [1, "view-prop-tab-contents"], [1, "form-group"], ["text", "Name", 1, "k-form-label"], [1, "view-name", 3, "ngModel", "ngModelChange"], ["nameField", ""], [1, "form-group", "form-group-description"], ["text", "Description", 1, "k-form-label"], [1, "k-input", "k-input-solid", "view-description", 3, "ngModel", "ngModelChange"], ["itemClass", "item", "activeItemClass", "item active", 3, "kendoSortableBinding", "animation", "dragEnd"], [1, "item-content"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModel", "id", "ngModelChange", "change"], [1, "k-checkbox-label", 3, "for", "text"], [1, "smart-filter-container"], ["text", "Smart Filter", 1, "smart-filter-label"], [3, "ngModel", "ngModelChange"], ["class", "smart-filter-prompt", "mjFillContainer", "", 3, "fillHeight", 4, "ngIf"], [4, "ngIf"], ["mjFillContainer", "", 1, "smart-filter-prompt", 3, "fillHeight"], ["placeholder", "Describe how you would like the data filtered", "resizable", "vertical", 3, "rows", "ngModel", "ngModelChange"], [3, "filters", "value", "valueChange"], [1, "sort-header"], ["kendoButton", "", 3, "click"], [4, "ngFor", "ngForOf"], ["textField", "Name", "valueField", "Name", 1, "sort-column", 3, "data", "ngModel", "valueChange", "ngModelChange"], ["textField", "Name", "valueField", "Value", 1, "sort-direction", 3, "data", "ngModel", "valueChange", "ngModelChange"], [4, "ngElse"], ["resizable", "vertical", 1, "advanced-tab-details", 3, "readonly", "rows", "ngModel", "ngModelChange"]], template: function UserViewPropertiesDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
587
|
+
i0.ɵɵelementStart(0, "div");
|
|
588
|
+
i0.ɵɵtemplate(1, UserViewPropertiesDialogComponent_button_1_Template, 3, 1, "button", 0);
|
|
589
|
+
i0.ɵɵelementStart(2, "div", null, 1);
|
|
590
|
+
i0.ɵɵtemplate(4, UserViewPropertiesDialogComponent_div_4_Template, 1, 0, "div", 2)(5, UserViewPropertiesDialogComponent_kendo_window_5_Template, 22, 15, "kendo-window", 3);
|
|
591
|
+
i0.ɵɵelementEnd()();
|
|
592
|
+
} if (rf & 2) {
|
|
593
|
+
i0.ɵɵadvance();
|
|
594
|
+
i0.ɵɵproperty("ngIf", ctx.ShowPropertiesButton);
|
|
595
|
+
i0.ɵɵadvance(3);
|
|
596
|
+
i0.ɵɵproperty("ngIf", ctx.isDialogOpened);
|
|
597
|
+
i0.ɵɵadvance();
|
|
598
|
+
i0.ɵɵproperty("ngIf", ctx.isDialogOpened);
|
|
599
|
+
} }, dependencies: [i4.NgForOf, i4.NgIf, i5.TextAreaComponent, i5.TextBoxComponent, i5.SwitchComponent, i5.CheckBoxDirective, i6.LabelComponent, i3.DefaultValueAccessor, i3.CheckboxControlValueAccessor, i3.NgControlStatus, i3.NgModel, i7.ButtonComponent, i8.WindowComponent, i9.TabStripComponent, i9.TabStripTabComponent, i9.TabContentDirective, i10.SortableComponent, i10.SortableBindingDirective, i11.FilterComponent], styles: [".view-properties-button[_ngcontent-%COMP%] {\r\n margin-left: 0px;\r\n }\r\n .view-prop-tab-contents[_ngcontent-%COMP%] {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%; \n\r\n }\r\n \r\n .form-group[_ngcontent-%COMP%] {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n margin-bottom: 10px;\r\n }\r\n \r\n .form-group-description[_ngcontent-%COMP%] {\r\n flex-grow: 1;\r\n }\r\n \r\n .k-form-label[_ngcontent-%COMP%] {\r\n width: 150px; \n\r\n margin-right: 10px;\r\n }\r\n \r\n .view-description[_ngcontent-%COMP%] {\r\n flex-grow: 1;\r\n height: 100%;\r\n padding: 5px;\r\n resize: none;\r\n }\r\n \r\n \r\n \r\n .item-content[_ngcontent-%COMP%] {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n }\r\n \r\n .popup-content[_ngcontent-%COMP%] {\r\n height: calc(100% - 46px);\r\n }\r\n \r\n .popup-actions[_ngcontent-%COMP%] {\r\n padding: 16px 0 0;\r\n }\r\n \r\n .view-prop-tab-contents[_ngcontent-%COMP%] {\r\n overflow: hidden;\r\n }\r\n \r\n .sort-column[_ngcontent-%COMP%] {\r\n width: 300px;\r\n }\r\n \r\n .sort-direction[_ngcontent-%COMP%] {\r\n width: 125px;\r\n }\r\n \r\n .sort-header[_ngcontent-%COMP%] > button[_ngcontent-%COMP%] {\r\n margin-left: 5px;\r\n margin-bottom: 5px;\r\n width: 75px;\r\n }\r\n \r\n .smart-filter-label[_ngcontent-%COMP%] {\r\n margin-right: 10px;\r\n }\r\n \r\n .smart-filter-prompt[_ngcontent-%COMP%] {\r\n margin-top: 15px;\r\n }\r\n \r\n .advanced-tab-details[_ngcontent-%COMP%]\r\n {\r\n margin-bottom: 10px;\r\n }\r\n .customBtn button {\r\n flex: 1;\r\n border-radius: 10px;\r\n line-height: 34px;\r\n }\r\n .popup-content .k-tabstrip-items-wrapper {\r\n background: var(--white-color) !important;\r\n padding-left: 0 !important;\r\n }\r\n .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\r\n border-bottom: 3px solid var(--border-blue) !important;\r\n }\r\n .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\r\n background: var(--white-color) !important;\r\n border-right: 0 !important;\r\n }"] });
|
|
600
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewPropertiesDialogComponent, [{
|
|
601
|
+
type: Component,
|
|
602
|
+
args: [{ selector: 'mj-user-view-properties-dialog', template: "<div>\r\n <button *ngIf=\"ShowPropertiesButton\"\r\n kendoButton\r\n themeColor=\"info\"\r\n (click)=\"this.Open()\"\r\n class=\"view-properties-button\"\r\n >\r\n <kendo-svgicon [icon]=\"sharedService.kendoSVGIcon('gear')\"></kendo-svgicon>\r\n Properties\r\n </button>\r\n <div #outerDialogContainer>\r\n <div class=\"k-overlay\" *ngIf=\"isDialogOpened\"></div>\r\n <kendo-window\r\n [minHeight]=\"300\"\r\n [minWidth]=\"800\"\r\n [top]=\"100\"\r\n [left]=\"100\"\r\n [width]=\"668\"\r\n [height]=\"525\"\r\n [resizable]=\"true\"\r\n title=\"View Properties\"\r\n *ngIf=\"isDialogOpened\"\r\n (close)=\"closePropertiesDialog()\"\r\n (resizeEnd)=\"this.ResizeTab()\"\r\n (heightChange)=\"this.ResizeTab()\"\r\n (widthChange)=\"this.ResizeTab()\"\r\n >\r\n <kendo-loader *ngIf=\"showloader\" type=\"converging-spinner\" ></kendo-loader>\r\n <div class=\"k-d-flex k-flex-col k-justify-content-between k-h-full\" #dialogContainer>\r\n <div [class]=\"showloader ? 'disabled-div' : ''\">\r\n <kendo-tabstrip [keepTabContent]=\"true\" [animate] = \"false\" [height]=\"TabHeight\" >\r\n <kendo-tabstrip-tab title=\"General\" [selected]=\"true\">\r\n <ng-template kendoTabContent>\r\n <div class=\"view-prop-tab-contents\">\r\n <div class=\"form-group\">\r\n <kendo-label class=\"k-form-label\" text=\"Name\"></kendo-label>\r\n <kendo-textbox #nameField class=\"view-name\" [(ngModel)]=\"record.Name\"></kendo-textbox>\r\n </div>\r\n <div class=\"form-group form-group-description\">\r\n <kendo-label class=\"k-form-label\" text=\"Description\"></kendo-label>\r\n <textarea class=\"k-input k-input-solid view-description\" [(ngModel)]=\"record.Description\"></textarea>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n <kendo-tabstrip-tab title=\"Fields\">\r\n <ng-template kendoTabContent>\r\n \r\n <kendo-sortable\r\n [kendoSortableBinding]=\"this.localGridState.columnSettings\"\r\n [animation]=\"true\"\r\n itemClass=\"item\"\r\n activeItemClass=\"item active\"\r\n (dragEnd)=\"onDragEnd($event)\"\r\n >\r\n <ng-template let-col=\"item\">\r\n <div class=\"item-content\">\r\n <div>\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"!col.hidden\"\r\n id=\"column_{{col.ID}}\"\r\n kendoCheckBox\r\n (change)=\"toggleColumn(col)\"\r\n />\r\n <kendo-label\r\n [for]=\"'column_'+col.ID\"\r\n [text]=\"col.DisplayName ? col.DisplayName : col.Name\"\r\n class=\"k-checkbox-label\"\r\n ></kendo-label>\r\n </div>\r\n <kendo-svgicon [icon]=\"sharedService.kendoSVGIcon('reorder')\"></kendo-svgicon>\r\n </div>\r\n </ng-template>\r\n </kendo-sortable>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n <kendo-tabstrip-tab title=\"Filters\">\r\n <ng-template kendoTabContent>\r\n <div class=\"smart-filter-container\">\r\n <kendo-label text=\"Smart Filter\" class=\"smart-filter-label\"></kendo-label>\r\n <kendo-switch [(ngModel)]=\"record.SmartFilterEnabled\"></kendo-switch>\r\n </div>\r\n <div *ngIf=\"record.SmartFilterEnabled\" class=\"smart-filter-prompt\" mjFillContainer [fillHeight]=\"true\">\r\n <kendo-textarea\r\n placeholder=\"Describe how you would like the data filtered\"\r\n [rows]=\"10\"\r\n [(ngModel)]=\"record.SmartFilterPrompt\"\r\n resizable=\"vertical\"\r\n ></kendo-textarea>\r\n </div>\r\n <div *ngIf=\"!record.SmartFilterEnabled\">\r\n <kendo-filter\r\n [filters]=\"setupFilters()\"\r\n [value]=\"defaultFilterState\"\r\n (valueChange)=\"onFilterChange($event)\"\r\n >\r\n </kendo-filter>\r\n </div>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n <kendo-tabstrip-tab title=\"Sorting\">\r\n <ng-template kendoTabContent>\r\n <div class=\"sort-header\">\r\n <button kendoButton (click)=\"addSort()\">\r\n <kendo-svgicon [icon]=\"sharedService.kendoSVGIcon('filterAddExpression')\"></kendo-svgicon>\r\n </button>\r\n \r\n </div>\r\n <div *ngFor=\"let s of this.sortState\"> \r\n <kendo-dropdownlist \r\n class=\"sort-column\"\r\n [data]=\"sortFields\"\r\n textField=\"Name\"\r\n valueField=\"Name\"\r\n (valueChange)=\"sortColumnValueChange(s, $event)\"\r\n [(ngModel)]=\"s.field\"\r\n >\r\n </kendo-dropdownlist>\r\n <kendo-dropdownlist\r\n class=\"sort-direction\"\r\n [data]=\"sortDirections\"\r\n textField=\"Name\"\r\n valueField=\"Value\"\r\n (valueChange)=\"sortDirectionValueChange(s, $event)\"\r\n [(ngModel)]=\"s.direction\"\r\n >\r\n </kendo-dropdownlist>\r\n <button kendoButton (click)=\"removeSort(s)\"><kendo-svgicon [icon]=\"sharedService.kendoSVGIcon('sortClear')\"></kendo-svgicon></button>\r\n </div> \r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n <kendo-tabstrip-tab title=\"Advanced\">\r\n <ng-template kendoTabContent>\r\n <div *ngIf=\"record.SmartFilterEnabled\">\r\n <kendo-textarea\r\n [readonly]=\"true\"\r\n [rows]=\"5\"\r\n [(ngModel)]=\"record.SmartFilterExplanation\"\r\n resizable=\"vertical\"\r\n class=\"advanced-tab-details\"\r\n ></kendo-textarea>\r\n <kendo-textarea\r\n [readonly]=\"true\"\r\n [rows]=\"5\"\r\n [(ngModel)]=\"record.SmartFilterWhereClause\"\r\n resizable=\"vertical\"\r\n class=\"advanced-tab-details\"\r\n ></kendo-textarea> \r\n </div>\r\n <div *ngElse>\r\n <kendo-textarea\r\n [readonly]=\"true\"\r\n [rows]=\"7\"\r\n [(ngModel)]=\"record.WhereClause\"\r\n resizable=\"vertical\"\r\n class=\"advanced-tab-details\"\r\n ></kendo-textarea>\r\n </div>\r\n \r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n </kendo-tabstrip>\r\n \r\n <div class=\"k-actions k-actions-end customBtn popup-actions\">\r\n <button kendoButton (click)=\"saveProperties()\" themeColor=\"info\">\r\n <kendo-svgicon [icon]=\"sharedService.kendoSVGIcon('save')\"></kendo-svgicon>\r\n Save\r\n </button>\r\n <button fillMode=\"outline\" themeColor=\"info\" kendoButton (click)=\"closePropertiesDialog()\">Cancel</button>\r\n </div>\r\n </div>\r\n </div>\r\n </kendo-window>\r\n </div>\r\n</div> ", styles: [".view-properties-button {\r\n margin-left: 0px;\r\n }\r\n .view-prop-tab-contents {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%; /* Set to the height you want */\r\n }\r\n \r\n .form-group {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n margin-bottom: 10px;\r\n }\r\n \r\n .form-group-description {\r\n flex-grow: 1;\r\n }\r\n \r\n .k-form-label {\r\n width: 150px; /* Adjust as needed */\r\n margin-right: 10px;\r\n }\r\n \r\n .view-description {\r\n flex-grow: 1;\r\n height: 100%;\r\n padding: 5px;\r\n resize: none;\r\n }\r\n \r\n \r\n \r\n .item-content {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n }\r\n \r\n .popup-content {\r\n height: calc(100% - 46px);\r\n }\r\n \r\n .popup-actions {\r\n padding: 16px 0 0;\r\n }\r\n \r\n .view-prop-tab-contents {\r\n overflow: hidden;\r\n }\r\n \r\n .sort-column {\r\n width: 300px;\r\n }\r\n \r\n .sort-direction {\r\n width: 125px;\r\n }\r\n \r\n .sort-header > button {\r\n margin-left: 5px;\r\n margin-bottom: 5px;\r\n width: 75px;\r\n }\r\n \r\n .smart-filter-label {\r\n margin-right: 10px;\r\n }\r\n \r\n .smart-filter-prompt {\r\n margin-top: 15px;\r\n }\r\n \r\n .advanced-tab-details\r\n {\r\n margin-bottom: 10px;\r\n }\r\n ::ng-deep .customBtn button {\r\n flex: 1;\r\n border-radius: 10px;\r\n line-height: 34px;\r\n }\r\n ::ng-deep .popup-content .k-tabstrip-items-wrapper {\r\n background: var(--white-color) !important;\r\n padding-left: 0 !important;\r\n }\r\n ::ng-deep .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\r\n border-bottom: 3px solid var(--border-blue) !important;\r\n }\r\n ::ng-deep .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\r\n background: var(--white-color) !important;\r\n border-right: 0 !important;\r\n }"] }]
|
|
603
|
+
}], () => [{ type: i1.ActivatedRoute }, { type: i0.ElementRef }, { type: i2.SharedService }, { type: i3.FormBuilder }, { type: i1.Router }, { type: i0.Renderer2 }], { ViewID: [{
|
|
604
|
+
type: Input
|
|
605
|
+
}], EntityName: [{
|
|
606
|
+
type: Input
|
|
607
|
+
}], ShowPropertiesButton: [{
|
|
608
|
+
type: Input
|
|
609
|
+
}], dialogClosed: [{
|
|
610
|
+
type: Output
|
|
611
|
+
}], kendoWindow: [{
|
|
612
|
+
type: ViewChild,
|
|
613
|
+
args: [WindowComponent]
|
|
614
|
+
}], kendoTab: [{
|
|
615
|
+
type: ViewChild,
|
|
616
|
+
args: [TabComponent]
|
|
617
|
+
}], nameField: [{
|
|
618
|
+
type: ViewChild,
|
|
619
|
+
args: ['nameField']
|
|
620
|
+
}], dialogContainer: [{
|
|
621
|
+
type: ViewChild,
|
|
622
|
+
args: ['dialogContainer']
|
|
623
|
+
}], outerDialogContainer: [{
|
|
624
|
+
type: ViewChild,
|
|
625
|
+
args: ['outerDialogContainer']
|
|
626
|
+
}] }); })();
|
|
627
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewPropertiesDialogComponent, { className: "UserViewPropertiesDialogComponent", filePath: "src\\lib\\user-view-properties.component.ts", lineNumber: 21 }); })();
|
package/dist/module.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./lib/user-view-properties.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
4
|
+
import * as i3 from "@progress/kendo-angular-inputs";
|
|
5
|
+
import * as i4 from "@progress/kendo-angular-label";
|
|
6
|
+
import * as i5 from "@angular/forms";
|
|
7
|
+
import * as i6 from "@progress/kendo-angular-buttons";
|
|
8
|
+
import * as i7 from "@progress/kendo-angular-dialog";
|
|
9
|
+
import * as i8 from "@progress/kendo-angular-layout";
|
|
10
|
+
import * as i9 from "@progress/kendo-angular-sortable";
|
|
11
|
+
import * as i10 from "@progress/kendo-angular-filter";
|
|
12
|
+
export declare class UserViewPropertiesDialogModule {
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UserViewPropertiesDialogModule, never>;
|
|
14
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<UserViewPropertiesDialogModule, [typeof i1.UserViewPropertiesDialogComponent], [typeof i2.CommonModule, typeof i3.InputsModule, typeof i4.LabelModule, typeof i5.FormsModule, typeof i6.ButtonsModule, typeof i7.WindowModule, typeof i8.TabStripModule, typeof i9.SortableModule, typeof i10.FilterModule], [typeof i1.UserViewPropertiesDialogComponent]>;
|
|
15
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<UserViewPropertiesDialogModule>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;AAeA,qBAmBa,8BAA8B;yCAA9B,8BAA8B;0CAA9B,8BAA8B;0CAA9B,8BAA8B;CAAI"}
|
package/dist/module.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { UserViewPropertiesDialogComponent } from './lib/user-view-properties.component';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
// Kendo UI Angular imports
|
|
6
|
+
import { InputsModule } from '@progress/kendo-angular-inputs';
|
|
7
|
+
import { LabelModule } from '@progress/kendo-angular-label';
|
|
8
|
+
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
9
|
+
import { WindowModule } from '@progress/kendo-angular-dialog';
|
|
10
|
+
import { TabStripModule } from '@progress/kendo-angular-layout';
|
|
11
|
+
import { SortableModule } from '@progress/kendo-angular-sortable';
|
|
12
|
+
import { FilterModule } from '@progress/kendo-angular-filter';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
export class UserViewPropertiesDialogModule {
|
|
15
|
+
}
|
|
16
|
+
UserViewPropertiesDialogModule.ɵfac = function UserViewPropertiesDialogModule_Factory(t) { return new (t || UserViewPropertiesDialogModule)(); };
|
|
17
|
+
UserViewPropertiesDialogModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: UserViewPropertiesDialogModule });
|
|
18
|
+
UserViewPropertiesDialogModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
|
|
19
|
+
InputsModule,
|
|
20
|
+
LabelModule,
|
|
21
|
+
FormsModule,
|
|
22
|
+
ButtonsModule,
|
|
23
|
+
WindowModule,
|
|
24
|
+
TabStripModule,
|
|
25
|
+
SortableModule,
|
|
26
|
+
FilterModule] });
|
|
27
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewPropertiesDialogModule, [{
|
|
28
|
+
type: NgModule,
|
|
29
|
+
args: [{
|
|
30
|
+
declarations: [
|
|
31
|
+
UserViewPropertiesDialogComponent
|
|
32
|
+
],
|
|
33
|
+
imports: [
|
|
34
|
+
CommonModule,
|
|
35
|
+
InputsModule,
|
|
36
|
+
LabelModule,
|
|
37
|
+
FormsModule,
|
|
38
|
+
ButtonsModule,
|
|
39
|
+
WindowModule,
|
|
40
|
+
TabStripModule,
|
|
41
|
+
SortableModule,
|
|
42
|
+
FilterModule
|
|
43
|
+
],
|
|
44
|
+
exports: [
|
|
45
|
+
UserViewPropertiesDialogComponent
|
|
46
|
+
]
|
|
47
|
+
}]
|
|
48
|
+
}], null, null); })();
|
|
49
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(UserViewPropertiesDialogModule, { declarations: [UserViewPropertiesDialogComponent], imports: [CommonModule,
|
|
50
|
+
InputsModule,
|
|
51
|
+
LabelModule,
|
|
52
|
+
FormsModule,
|
|
53
|
+
ButtonsModule,
|
|
54
|
+
WindowModule,
|
|
55
|
+
TabStripModule,
|
|
56
|
+
SortableModule,
|
|
57
|
+
FilterModule], exports: [UserViewPropertiesDialogComponent] }); })();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAIA,cAAc,sCAAsC,CAAC;AACrD,cAAc,UAAU,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memberjunction/ng-user-view-properties",
|
|
3
|
+
"version": "0.9.2",
|
|
4
|
+
"description": "MemberJunction: Angular UI Dialog Component to View/Edit User View Properties",
|
|
5
|
+
"main": "./dist/public-api.js",
|
|
6
|
+
"typings": "./dist/public-api.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"/dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
|
+
"build": "ngc"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [],
|
|
15
|
+
"author": "",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@angular/compiler": "~17.2.2",
|
|
19
|
+
"@angular/compiler-cli": "~17.2.2"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"@angular/common": "~17.2.2",
|
|
23
|
+
"@angular/core": "~17.2.2",
|
|
24
|
+
"@angular/forms": "~17.2.2"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@memberjunction/global": "^0.9.165",
|
|
28
|
+
"@memberjunction/core": "^0.9.183",
|
|
29
|
+
"@memberjunction/core-entities": "^0.9.178",
|
|
30
|
+
"@memberjunction/ng-base-forms": "^0.9.14",
|
|
31
|
+
"@memberjunction/ng-shared": "^0.9.46",
|
|
32
|
+
"@progress/kendo-angular-sortable": "~15.1.0",
|
|
33
|
+
"@progress/kendo-angular-dialog": "~15.1.0",
|
|
34
|
+
"@progress/kendo-angular-layout": "~15.1.0",
|
|
35
|
+
"@progress/kendo-angular-inputs": "~15.1.0",
|
|
36
|
+
"@progress/kendo-angular-buttons": "~15.1.0",
|
|
37
|
+
"@progress/kendo-data-query": "~1.7.0",
|
|
38
|
+
"@progress/kendo-angular-filter": "~15.1.0",
|
|
39
|
+
"tslib": "^2.3.0"
|
|
40
|
+
},
|
|
41
|
+
"sideEffects": false
|
|
42
|
+
}
|