@memberjunction/ng-explorer-core 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/app-view/application-view.component.d.ts +21 -21
- package/dist/lib/app-view/application-view.component.d.ts.map +1 -1
- package/dist/lib/app-view/application-view.component.js +289 -100
- package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +1 -1
- package/dist/lib/data-browser-component/data-browser.component.d.ts +9 -3
- package/dist/lib/data-browser-component/data-browser.component.d.ts.map +1 -1
- package/dist/lib/data-browser-component/data-browser.component.js +167 -28
- package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +4 -1
- package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +1 -1
- package/dist/lib/generic-browser-list/generic-browser-list.component.js +6 -1
- package/dist/lib/header/header.component.d.ts.map +1 -1
- package/dist/lib/header/header.component.js +6 -3
- package/dist/lib/home-component/home.component.js +2 -2
- package/dist/lib/navigation/navigation.component.d.ts +1 -0
- package/dist/lib/navigation/navigation.component.d.ts.map +1 -1
- package/dist/lib/navigation/navigation.component.js +21 -4
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +1 -0
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +5 -0
- package/dist/lib/resource-wrappers/query-resource.component.d.ts +1 -0
- package/dist/lib/resource-wrappers/query-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js +5 -0
- package/dist/lib/resource-wrappers/record-resource.component.d.ts +1 -0
- package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.js +15 -0
- package/dist/lib/resource-wrappers/report-resource.component.d.ts +1 -0
- package/dist/lib/resource-wrappers/report-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/report-resource.component.js +5 -0
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +1 -0
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +17 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts +1 -0
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +5 -0
- package/dist/lib/single-application/single-application.component.d.ts +2 -1
- package/dist/lib/single-application/single-application.component.d.ts.map +1 -1
- package/dist/lib/single-application/single-application.component.js +6 -6
- package/dist/module.d.ts +2 -1
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +9 -5
- package/package.json +18 -17
|
@@ -7,106 +7,309 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { Component, ViewChild } from '@angular/core';
|
|
11
|
-
import { Metadata, LogError } from '@memberjunction/core';
|
|
10
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
11
|
+
import { Metadata, LogError, RunView } from '@memberjunction/core';
|
|
12
12
|
import { ItemType } from '../../generic/Item.types';
|
|
13
13
|
import { BaseBrowserComponent } from '../base-browser-component/base-browser-component';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
import * as i1 from "@angular/router";
|
|
16
16
|
import * as i2 from "@angular/common";
|
|
17
17
|
import * as i3 from "@memberjunction/ng-shared";
|
|
18
|
-
import * as i4 from "@progress/kendo-angular-
|
|
19
|
-
import * as i5 from "@
|
|
20
|
-
import * as i6 from "
|
|
18
|
+
import * as i4 from "@progress/kendo-angular-indicators";
|
|
19
|
+
import * as i5 from "@progress/kendo-angular-buttons";
|
|
20
|
+
import * as i6 from "@memberjunction/ng-user-view-properties";
|
|
21
|
+
import * as i7 from "@memberjunction/ng-record-selector";
|
|
22
|
+
import * as i8 from "../generic-browser-list/generic-browser-list.component";
|
|
21
23
|
const _c0 = ["entityRow"];
|
|
22
24
|
const _c1 = ["userViewDialog"];
|
|
23
|
-
function
|
|
24
|
-
|
|
25
|
-
i0.ɵɵ
|
|
26
|
-
i0.ɵɵ
|
|
25
|
+
function ApplicationViewComponent_div_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 6);
|
|
27
|
+
i0.ɵɵelement(1, "span", 22);
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
31
|
+
i0.ɵɵadvance();
|
|
32
|
+
i0.ɵɵproperty("ngClass", ctx_r1.app.Icon);
|
|
33
|
+
} }
|
|
34
|
+
function ApplicationViewComponent_div_0_button_23_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
i0.ɵɵelement(0, "span", 22);
|
|
36
|
+
} if (rf & 2) {
|
|
37
|
+
const item_r4 = i0.ɵɵnextContext().$implicit;
|
|
38
|
+
i0.ɵɵproperty("ngClass", item_r4.Icon + " button-icon");
|
|
39
|
+
} }
|
|
40
|
+
function ApplicationViewComponent_div_0_button_23_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
42
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
43
|
+
i0.ɵɵlistener("click", function ApplicationViewComponent_div_0_button_23_Template_button_click_0_listener() { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onAppEntityButtonClicked(item_r4)); });
|
|
27
44
|
i0.ɵɵelementStart(1, "span");
|
|
28
|
-
i0.ɵɵ
|
|
45
|
+
i0.ɵɵtemplate(2, ApplicationViewComponent_div_0_button_23_Conditional_2_Template, 1, 1, "span", 22);
|
|
46
|
+
i0.ɵɵtext(3);
|
|
47
|
+
i0.ɵɵelementEnd()();
|
|
48
|
+
} if (rf & 2) {
|
|
49
|
+
const item_r4 = ctx.$implicit;
|
|
50
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
51
|
+
i0.ɵɵproperty("toggleable", true)("selected", ctx_r1.IsEntitySelected(item_r4));
|
|
52
|
+
i0.ɵɵadvance(2);
|
|
53
|
+
i0.ɵɵconditional(item_r4.Icon && item_r4.Icon.length > 0 ? 2 : -1);
|
|
54
|
+
i0.ɵɵadvance();
|
|
55
|
+
i0.ɵɵtextInterpolate1(" ", item_r4.Name, " ");
|
|
56
|
+
} }
|
|
57
|
+
function ApplicationViewComponent_div_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
59
|
+
i0.ɵɵelementStart(0, "div", 24);
|
|
60
|
+
i0.ɵɵlistener("click", function ApplicationViewComponent_div_0_Conditional_24_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ShowAppEntitySelectionDialog()); });
|
|
61
|
+
i0.ɵɵelement(1, "span", 15);
|
|
62
|
+
i0.ɵɵtext(2, " Click Here to Select Entities ");
|
|
63
|
+
i0.ɵɵelementEnd();
|
|
64
|
+
} }
|
|
65
|
+
function ApplicationViewComponent_div_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelement(0, "kendo-loader");
|
|
67
|
+
} }
|
|
68
|
+
function ApplicationViewComponent_div_0_Conditional_26_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
70
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "app-generic-browser-list", 26);
|
|
71
|
+
i0.ɵɵlistener("itemClickEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_itemClickEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onItemClick($event)); })("AfterAddFolderEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_AfterAddFolderEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onEvent($event)); })("AfterAddItemEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_AfterAddItemEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onEvent($event)); })("AfterDeleteItemEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_AfterDeleteItemEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onEvent($event)); })("AfterDeleteFolderEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_AfterDeleteFolderEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onEvent($event)); })("viewModeChangeEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_viewModeChangeEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onViewModeChange($event)); })("BeforeAddItemEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_BeforeAddItemEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.createNewView($event)); })("BeforeUpdateItemEvent", function ApplicationViewComponent_div_0_Conditional_26_div_0_Template_app_generic_browser_list_BeforeUpdateItemEvent_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.editView($event)); });
|
|
29
72
|
i0.ɵɵelementEnd()();
|
|
30
73
|
} if (rf & 2) {
|
|
31
|
-
const
|
|
32
|
-
i0.ɵɵ
|
|
74
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
75
|
+
i0.ɵɵadvance();
|
|
76
|
+
i0.ɵɵproperty("items", ctx_r1.items)("categoryEntityID", ctx_r1.categoryEntityID)("title", ctx_r1.pageTitle)("CategoryEntityName", ctx_r1.categoryEntityName)("selectedFolderID", ctx_r1.selectedFolderID)("showLoader", ctx_r1.showLoader)("viewingResource", false)("displayAsGrid", ctx_r1.displayAsGrid);
|
|
77
|
+
} }
|
|
78
|
+
function ApplicationViewComponent_div_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
79
|
+
i0.ɵɵtemplate(0, ApplicationViewComponent_div_0_Conditional_26_div_0_Template, 2, 8, "div", 25);
|
|
80
|
+
} if (rf & 2) {
|
|
81
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
82
|
+
i0.ɵɵproperty("ngIf", ctx_r1.SelectedAppEntities.length > 0);
|
|
83
|
+
} }
|
|
84
|
+
function ApplicationViewComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
85
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
86
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 4)(2, "div", 5);
|
|
87
|
+
i0.ɵɵtemplate(3, ApplicationViewComponent_div_0_Conditional_3_Template, 2, 1, "div", 6);
|
|
88
|
+
i0.ɵɵelementStart(4, "div", 7)(5, "div", 8)(6, "span", 9);
|
|
89
|
+
i0.ɵɵlistener("click", function ApplicationViewComponent_div_0_Template_span_click_6_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.GoHome($event)); });
|
|
90
|
+
i0.ɵɵtext(7, "Home");
|
|
91
|
+
i0.ɵɵelementEnd();
|
|
92
|
+
i0.ɵɵelementStart(8, "span", 10);
|
|
93
|
+
i0.ɵɵelement(9, "span", 11);
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
i0.ɵɵelementStart(10, "span", 9);
|
|
96
|
+
i0.ɵɵlistener("click", function ApplicationViewComponent_div_0_Template_span_click_10_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.GoToApps($event)); });
|
|
97
|
+
i0.ɵɵtext(11, "Applications");
|
|
98
|
+
i0.ɵɵelementEnd();
|
|
99
|
+
i0.ɵɵelementStart(12, "span", 10);
|
|
100
|
+
i0.ɵɵelement(13, "span", 11);
|
|
101
|
+
i0.ɵɵelementEnd();
|
|
102
|
+
i0.ɵɵelementStart(14, "span", 12);
|
|
103
|
+
i0.ɵɵtext(15);
|
|
104
|
+
i0.ɵɵelementEnd()()();
|
|
105
|
+
i0.ɵɵelementStart(16, "div", 13)(17, "button", 14);
|
|
106
|
+
i0.ɵɵlistener("click", function ApplicationViewComponent_div_0_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ShowAppEntitySelectionDialog()); });
|
|
107
|
+
i0.ɵɵelement(18, "span", 15);
|
|
108
|
+
i0.ɵɵelementEnd();
|
|
109
|
+
i0.ɵɵelementStart(19, "mj-record-selector-dialog", 16);
|
|
110
|
+
i0.ɵɵlistener("DialogClosed", function ApplicationViewComponent_div_0_Template_mj_record_selector_dialog_DialogClosed_19_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnAppEntitySelectionDialogClosed($event)); });
|
|
111
|
+
i0.ɵɵelementEnd()()();
|
|
112
|
+
i0.ɵɵelementStart(20, "div", 17, 0)(22, "div", 18);
|
|
113
|
+
i0.ɵɵtemplate(23, ApplicationViewComponent_div_0_button_23_Template, 4, 4, "button", 19);
|
|
114
|
+
i0.ɵɵelementEnd()()();
|
|
115
|
+
i0.ɵɵtemplate(24, ApplicationViewComponent_div_0_Conditional_24_Template, 3, 0, "div")(25, ApplicationViewComponent_div_0_Conditional_25_Template, 1, 0, "kendo-loader")(26, ApplicationViewComponent_div_0_Conditional_26_Template, 1, 1, "div", 20);
|
|
116
|
+
i0.ɵɵelementStart(27, "mj-user-view-properties-dialog", 21, 1);
|
|
117
|
+
i0.ɵɵlistener("dialogClosed", function ApplicationViewComponent_div_0_Template_mj_user_view_properties_dialog_dialogClosed_27_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnViewPropertiesDialogClose($event)); });
|
|
118
|
+
i0.ɵɵelementEnd()();
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
121
|
+
i0.ɵɵadvance(3);
|
|
122
|
+
i0.ɵɵconditional(ctx_r1.app.Icon && ctx_r1.app.Icon.length > 0 ? 3 : -1);
|
|
123
|
+
i0.ɵɵadvance(12);
|
|
124
|
+
i0.ɵɵtextInterpolate(ctx_r1.app.Name);
|
|
125
|
+
i0.ɵɵadvance(4);
|
|
126
|
+
i0.ɵɵproperty("AvailableRecords", ctx_r1.AllAppEntities)("SelectedRecords", ctx_r1.SelectedAppEntities)("UnselectedRecords", ctx_r1.UnselectedAppEntities)("DialogVisible", ctx_r1.AppEntitySelectionDialogVisible);
|
|
127
|
+
i0.ɵɵadvance(4);
|
|
128
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.SelectedAppEntities);
|
|
129
|
+
i0.ɵɵadvance();
|
|
130
|
+
i0.ɵɵconditional(ctx_r1.SelectedAppEntities.length === 0 && !ctx_r1.showLoader ? 24 : -1);
|
|
131
|
+
i0.ɵɵadvance();
|
|
132
|
+
i0.ɵɵconditional(ctx_r1.showLoader ? 25 : 26);
|
|
33
133
|
i0.ɵɵadvance(2);
|
|
34
|
-
i0.ɵɵ
|
|
134
|
+
i0.ɵɵproperty("ShowPropertiesButton", false);
|
|
35
135
|
} }
|
|
36
136
|
export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
37
|
-
constructor(router, route, location, sharedService) {
|
|
137
|
+
constructor(router, route, location, sharedService, cdr) {
|
|
38
138
|
super();
|
|
39
139
|
this.router = router;
|
|
40
140
|
this.route = route;
|
|
41
141
|
this.location = location;
|
|
42
142
|
this.sharedService = sharedService;
|
|
43
|
-
this.
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.selectedAppEntity = null;
|
|
49
|
-
this.categoryEntityID = null;
|
|
143
|
+
this.cdr = cdr;
|
|
144
|
+
this.AppEntitySelectionDialogVisible = false;
|
|
145
|
+
this.AllAppEntities = [];
|
|
146
|
+
this.SelectedAppEntities = [];
|
|
147
|
+
this.UnselectedAppEntities = [];
|
|
50
148
|
this.categoryEntityName = "User View Categories";
|
|
51
149
|
this.itemEntityName = "User Views";
|
|
52
150
|
}
|
|
53
151
|
ngOnInit() {
|
|
54
152
|
return __awaiter(this, void 0, void 0, function* () {
|
|
55
153
|
this.route.paramMap.subscribe((params) => __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
var _a;
|
|
56
155
|
const appName = params.get('appName');
|
|
57
156
|
const entityName = params.get('entityName');
|
|
58
157
|
const folderID = params.get('folderID');
|
|
158
|
+
this.showLoader = true;
|
|
59
159
|
if (folderID) {
|
|
60
160
|
this.selectedFolderID = parseInt(folderID) || null;
|
|
61
161
|
}
|
|
62
|
-
if (appName) {
|
|
63
|
-
this.appName = this.appNameFromURL = appName;
|
|
162
|
+
if (appName && appName !== ((_a = this.app) === null || _a === void 0 ? void 0 : _a.Name)) {
|
|
64
163
|
const md = new Metadata();
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
164
|
+
const rv = new RunView();
|
|
165
|
+
this.app = md.Applications.find(a => a.Name === appName);
|
|
166
|
+
// if we get here and we have a blank app, problem
|
|
167
|
+
if (!this.app)
|
|
168
|
+
throw new Error(`Application ${appName} not found`);
|
|
169
|
+
// next up we need to find the UserApplication record based on the app and the current user
|
|
170
|
+
const userAppResult = yield rv.RunView({
|
|
171
|
+
EntityName: "User Applications",
|
|
172
|
+
ExtraFilter: `UserID=${md.CurrentUser.ID} AND ApplicationID=${this.app.ID}`,
|
|
173
|
+
ResultType: 'entity_object'
|
|
174
|
+
});
|
|
175
|
+
if (!userAppResult || userAppResult.Success === false || userAppResult.Results.length === 0)
|
|
176
|
+
throw new Error('User Application Record for current user and selected application not found');
|
|
177
|
+
this.userApp = userAppResult.Results[0];
|
|
178
|
+
const matches = this.app.ApplicationEntities.map(ae => md.Entities.find(e => e.ID === ae.EntityID)).filter(e => e); // filter out null entries
|
|
179
|
+
// store the entire list of POSSIBLE app entities in this list
|
|
180
|
+
this.AllAppEntities = matches; // we filter out null above so this cast is safe;
|
|
181
|
+
const userAppEntities = yield rv.RunView({
|
|
182
|
+
EntityName: 'User Application Entities',
|
|
183
|
+
ResultType: 'entity_object',
|
|
184
|
+
ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
|
|
185
|
+
OrderBy: 'Sequence'
|
|
186
|
+
});
|
|
187
|
+
if (userAppEntities && userAppEntities.Success) {
|
|
188
|
+
this.SelectedAppEntities = this.AllAppEntities.filter(e => userAppEntities.Results.some(uae => uae.EntityID === e.ID));
|
|
189
|
+
this.UnselectedAppEntities = this.AllAppEntities.filter(e => !this.SelectedAppEntities.some(sa => sa.ID === e.ID));
|
|
190
|
+
// special case - if we have NO user app entities and the application has entities that are marked as DefaultForNewUser=1 we will add them now
|
|
191
|
+
const defaultEntities = this.app.ApplicationEntities.filter(a => a.DefaultForNewUser);
|
|
192
|
+
if (this.SelectedAppEntities.length === 0 && defaultEntities.length > 0) {
|
|
193
|
+
// there are some entities that should default for a new user, so let's add them to the selected entities and remove from the Unselected
|
|
194
|
+
// app entities and then call the Save method that we use when the user dialog ends
|
|
195
|
+
this.SelectedAppEntities = defaultEntities.map(de => this.AllAppEntities.find(aae => de.EntityID === aae.ID)).filter(val => val);
|
|
196
|
+
// now we have the default entities in place for the app, remove them from the Unselected array
|
|
197
|
+
this.UnselectedAppEntities = this.UnselectedAppEntities.filter(e => !this.SelectedAppEntities.some(se => se.ID === e.ID));
|
|
198
|
+
// now save
|
|
199
|
+
yield this.OnAppEntitySelectionDialogClosed(true);
|
|
200
|
+
}
|
|
69
201
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
202
|
+
}
|
|
203
|
+
// now down here we have either loaded the app above, or already had the current app loaded. Now we move on to set the current entity and load er up
|
|
204
|
+
if (this.app && this.SelectedAppEntities.length) {
|
|
205
|
+
if (entityName) {
|
|
206
|
+
const entityNameToLower = entityName.toLowerCase();
|
|
207
|
+
const selectedAppEntity = this.SelectedAppEntities.find(e => e.Name.toLocaleLowerCase() == entityNameToLower);
|
|
208
|
+
if (selectedAppEntity) {
|
|
209
|
+
yield this.loadEntityAndFolders(selectedAppEntity);
|
|
80
210
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
211
|
+
else
|
|
212
|
+
yield this.loadEntityAndFolders(this.SelectedAppEntities[0]);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
yield this.loadEntityAndFolders(this.SelectedAppEntities[0]);
|
|
84
216
|
}
|
|
85
217
|
}
|
|
218
|
+
this.showLoader = false;
|
|
86
219
|
}));
|
|
87
220
|
});
|
|
88
221
|
}
|
|
89
|
-
|
|
90
|
-
|
|
222
|
+
IsEntitySelected(entity) {
|
|
223
|
+
var _a;
|
|
224
|
+
if (((_a = this.currentlySelectedAppEntity) === null || _a === void 0 ? void 0 : _a.ID) === entity.ID)
|
|
225
|
+
return true;
|
|
226
|
+
else
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
ShowAppEntitySelectionDialog() {
|
|
230
|
+
this.AppEntitySelectionDialogVisible = true;
|
|
231
|
+
}
|
|
232
|
+
OnAppEntitySelectionDialogClosed(save) {
|
|
233
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
this.AppEntitySelectionDialogVisible = false;
|
|
235
|
+
// now we need to process the changes if the user hit save
|
|
236
|
+
if (save) {
|
|
237
|
+
// we need to basically make sure the User Application Entities entity for this user maps to the set of selected Entities within the application, in the order selected as well
|
|
238
|
+
const rv = new RunView();
|
|
239
|
+
const md = new Metadata();
|
|
240
|
+
const userAppEntities = yield rv.RunView({
|
|
241
|
+
EntityName: 'User Application Entities',
|
|
242
|
+
ResultType: 'entity_object',
|
|
243
|
+
ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
|
|
244
|
+
OrderBy: 'Sequence'
|
|
245
|
+
});
|
|
246
|
+
// userAppEntities.results is the current DB state, we need to now compare it to the SelectedAppEntities array
|
|
247
|
+
// and if there are changes either update sequence values or delete records that aren't selected anymore.
|
|
248
|
+
const existingUserAppEntities = userAppEntities.Results;
|
|
249
|
+
const userAppEntitiesToSave = [];
|
|
250
|
+
const userAppEntitiesToDelete = [];
|
|
251
|
+
// first we need to update the sequence values for the selected applications
|
|
252
|
+
for (let index = 0; index < this.SelectedAppEntities.length; index++) {
|
|
253
|
+
const e = this.SelectedAppEntities[index];
|
|
254
|
+
const existing = existingUserAppEntities.find(uae => uae.EntityID === e.ID);
|
|
255
|
+
if (existing) {
|
|
256
|
+
existing.Sequence = index;
|
|
257
|
+
userAppEntitiesToSave.push(existing);
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
// this is a new app entity that the user has selected
|
|
261
|
+
const newApp = yield md.GetEntityObject("User Application Entities");
|
|
262
|
+
newApp.UserApplicationID = this.userApp.ID;
|
|
263
|
+
newApp.EntityID = e.ID;
|
|
264
|
+
newApp.Sequence = index;
|
|
265
|
+
userAppEntitiesToSave.push(newApp);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// now we need to add the records that aren't selected anymore to a delete array
|
|
269
|
+
for (let index = 0; index < existingUserAppEntities.length; index++) {
|
|
270
|
+
const existing = existingUserAppEntities[index];
|
|
271
|
+
if (!this.SelectedAppEntities.some(sa => sa.ID === existing.EntityID)) {
|
|
272
|
+
userAppEntitiesToDelete.push(existing);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// finally, we need to submit a single transaction so we have one server round trip to commit all this good stuff
|
|
276
|
+
const tg = yield md.CreateTransactionGroup();
|
|
277
|
+
userAppEntitiesToSave.forEach(toSave => {
|
|
278
|
+
toSave.TransactionGroup = tg;
|
|
279
|
+
toSave.Save(); // no await since we are in a transaction group
|
|
280
|
+
});
|
|
281
|
+
userAppEntitiesToDelete.forEach(d => {
|
|
282
|
+
d.TransactionGroup = tg;
|
|
283
|
+
d.Delete(); // no await
|
|
284
|
+
});
|
|
285
|
+
if (!(yield tg.Submit())) {
|
|
286
|
+
// the data doesn't need to be updated when we are succesful because we're all bound to the same data which is cool
|
|
287
|
+
// but in this case we need to notify the user it failed
|
|
288
|
+
this.sharedService.CreateSimpleNotification('There was an error saving your entity selections. Please try again later or notify a system administrator.', "error", 3500);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
onAppEntityButtonClicked(e) {
|
|
294
|
+
var _a;
|
|
295
|
+
if (e.ID === ((_a = this.currentlySelectedAppEntity) === null || _a === void 0 ? void 0 : _a.ID))
|
|
91
296
|
return;
|
|
92
|
-
}
|
|
93
297
|
this.selectedFolderID = null;
|
|
94
|
-
this.
|
|
298
|
+
this.currentlySelectedAppEntity = e;
|
|
95
299
|
this.navigateToCurrentPage();
|
|
96
300
|
}
|
|
97
|
-
|
|
301
|
+
loadEntityAndFolders(entity) {
|
|
98
302
|
const _super = Object.create(null, {
|
|
99
303
|
RunView: { get: () => super.RunView },
|
|
100
304
|
LoadData: { get: () => super.LoadData }
|
|
101
305
|
});
|
|
102
306
|
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
-
if (!
|
|
307
|
+
if (!entity) {
|
|
308
|
+
this.currentlySelectedAppEntity = undefined; // make sure our current selection is wiped out here
|
|
104
309
|
return;
|
|
105
310
|
}
|
|
106
311
|
this.showLoader = true;
|
|
107
|
-
this.
|
|
108
|
-
this.selectedAppEntity = appEntityButton.Data;
|
|
109
|
-
this.categoryEntityID = this.selectedAppEntity.EntityID;
|
|
312
|
+
this.currentlySelectedAppEntity = entity;
|
|
110
313
|
if (this.selectedFolderID) {
|
|
111
314
|
let viewResult = yield _super.RunView.call(this, this.categoryEntityName, `ID=${this.selectedFolderID}`);
|
|
112
315
|
if (viewResult.length > 0) {
|
|
@@ -114,13 +317,13 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
114
317
|
}
|
|
115
318
|
}
|
|
116
319
|
else {
|
|
117
|
-
this.pageTitle = this.
|
|
320
|
+
this.pageTitle = this.currentlySelectedAppEntity.Name;
|
|
118
321
|
}
|
|
119
322
|
const md = new Metadata();
|
|
120
323
|
const parentFolderIDFilter = this.selectedFolderID ? `ParentID=${this.selectedFolderID}` : 'ParentID IS NULL';
|
|
121
|
-
const categoryFilter = `UserID=${md.CurrentUser.ID} AND EntityID=${this.
|
|
324
|
+
const categoryFilter = `UserID=${md.CurrentUser.ID} AND EntityID=${this.currentlySelectedAppEntity.ID} AND ` + parentFolderIDFilter;
|
|
122
325
|
const categoryIDFilter = this.selectedFolderID ? `CategoryID=${this.selectedFolderID}` : 'CategoryID IS NULL';
|
|
123
|
-
const userViewFilter = `UserID = ${md.CurrentUser.ID} AND EntityID = ${
|
|
326
|
+
const userViewFilter = `UserID = ${md.CurrentUser.ID} AND EntityID = ${this.currentlySelectedAppEntity.ID} AND ` + categoryIDFilter;
|
|
124
327
|
yield _super.LoadData.call(this, {
|
|
125
328
|
sortItemsAfterLoad: true,
|
|
126
329
|
categoryItemFilter: categoryFilter,
|
|
@@ -128,6 +331,7 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
128
331
|
showLoader: true
|
|
129
332
|
});
|
|
130
333
|
this.showLoader = false;
|
|
334
|
+
this.cdr.detectChanges(); // tell Angular to detect changes as we just change the current entity so that affects some UI elements visualy like which button shows as selected
|
|
131
335
|
});
|
|
132
336
|
}
|
|
133
337
|
onItemClick(item) {
|
|
@@ -160,13 +364,15 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
160
364
|
}
|
|
161
365
|
}
|
|
162
366
|
navigateToCurrentPage() {
|
|
367
|
+
if (!this.app)
|
|
368
|
+
throw new Error('Application Not Loaded');
|
|
163
369
|
//we're capable of loading the data associated with the selected ApplicationEntityInfo object
|
|
164
370
|
//without a page refresh, but we'd need additonal logic to handle routing, e.g. back
|
|
165
371
|
//button in the browser taking you to the last selected entity.
|
|
166
372
|
//so its easier if we instead navigate to this page with an updated url and leverage angular's router
|
|
167
373
|
let folderID = this.selectedFolderID ? this.selectedFolderID.toString() : null;
|
|
168
|
-
let url = ["/app", this.
|
|
169
|
-
let appEntityName = this.
|
|
374
|
+
let url = ["/app", this.app.Name];
|
|
375
|
+
let appEntityName = this.currentlySelectedAppEntity ? this.currentlySelectedAppEntity.Name : null;
|
|
170
376
|
if (appEntityName) {
|
|
171
377
|
url.push(`${appEntityName}`);
|
|
172
378
|
if (folderID) {
|
|
@@ -183,10 +389,11 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
183
389
|
this.viewMode = viewMode;
|
|
184
390
|
}
|
|
185
391
|
createNewView(event) {
|
|
392
|
+
var _a;
|
|
186
393
|
event.Cancel = true;
|
|
187
|
-
if (this.viewPropertiesDialog) {
|
|
188
|
-
console.log("Creating new view", this.
|
|
189
|
-
this.viewPropertiesDialog.CreateView(this.
|
|
394
|
+
if (this.viewPropertiesDialog && this.currentlySelectedAppEntity) {
|
|
395
|
+
console.log("Creating new view ", (_a = this.currentlySelectedAppEntity) === null || _a === void 0 ? void 0 : _a.Name);
|
|
396
|
+
this.viewPropertiesDialog.CreateView(this.currentlySelectedAppEntity.Name);
|
|
190
397
|
}
|
|
191
398
|
else {
|
|
192
399
|
LogError("View Properties Dialog not found");
|
|
@@ -211,67 +418,49 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
|
|
|
211
418
|
//dont need to do anything here
|
|
212
419
|
return;
|
|
213
420
|
}
|
|
214
|
-
if (args && args.Saved) {
|
|
421
|
+
if (args && args.Saved && this.currentlySelectedAppEntity) {
|
|
215
422
|
args.Cancel = true;
|
|
216
|
-
|
|
217
|
-
const selectedAppEntity = this.AppEntityButtons.find(e => e.Name.toLocaleLowerCase() == entityNameToLower);
|
|
218
|
-
if (selectedAppEntity) {
|
|
219
|
-
selectedAppEntity.Selected = true;
|
|
220
|
-
yield this.loadEntitiesAndFolders(selectedAppEntity);
|
|
221
|
-
}
|
|
423
|
+
yield this.loadEntityAndFolders(this.currentlySelectedAppEntity);
|
|
222
424
|
}
|
|
223
425
|
});
|
|
224
426
|
}
|
|
427
|
+
GoToApps(event) {
|
|
428
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
429
|
+
event.preventDefault();
|
|
430
|
+
this.router.navigate(['data']);
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
GoHome(event) {
|
|
434
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
435
|
+
event.preventDefault();
|
|
436
|
+
// tell the router to go to /home
|
|
437
|
+
this.router.navigate(['home']);
|
|
438
|
+
});
|
|
439
|
+
}
|
|
225
440
|
}
|
|
226
|
-
ApplicationViewComponent.ɵfac = function ApplicationViewComponent_Factory(t) { return new (t || ApplicationViewComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Location), i0.ɵɵdirectiveInject(i3.SharedService)); };
|
|
227
|
-
ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ApplicationViewComponent, selectors: [["application-view"]], viewQuery: function ApplicationViewComponent_Query(rf, ctx) { if (rf & 1) {
|
|
441
|
+
ApplicationViewComponent.ɵfac = function ApplicationViewComponent_Factory(t) { return new (t || ApplicationViewComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Location), i0.ɵɵdirectiveInject(i3.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
442
|
+
ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ApplicationViewComponent, selectors: [["mj-application-view"]], viewQuery: function ApplicationViewComponent_Query(rf, ctx) { if (rf & 1) {
|
|
228
443
|
i0.ɵɵviewQuery(_c0, 5);
|
|
229
444
|
i0.ɵɵviewQuery(_c1, 5);
|
|
230
445
|
} if (rf & 2) {
|
|
231
446
|
let _t;
|
|
232
447
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityRowRef = _t.first);
|
|
233
448
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewPropertiesDialog = _t.first);
|
|
234
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
235
|
-
|
|
236
|
-
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "h1");
|
|
237
|
-
i0.ɵɵtext(4);
|
|
238
|
-
i0.ɵɵelementEnd()();
|
|
239
|
-
i0.ɵɵelementStart(5, "div", 5, 0)(7, "div", 6);
|
|
240
|
-
i0.ɵɵtemplate(8, ApplicationViewComponent_button_8_Template, 3, 3, "button", 7);
|
|
241
|
-
i0.ɵɵelementEnd()()();
|
|
242
|
-
i0.ɵɵelementStart(9, "div", 8)(10, "app-generic-browser-list", 9);
|
|
243
|
-
i0.ɵɵlistener("itemClickEvent", function ApplicationViewComponent_Template_app_generic_browser_list_itemClickEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemClick($event)); })("AfterAddFolderEvent", function ApplicationViewComponent_Template_app_generic_browser_list_AfterAddFolderEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onEvent($event)); })("AfterAddItemEvent", function ApplicationViewComponent_Template_app_generic_browser_list_AfterAddItemEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onEvent($event)); })("AfterDeleteItemEvent", function ApplicationViewComponent_Template_app_generic_browser_list_AfterDeleteItemEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onEvent($event)); })("AfterDeleteFolderEvent", function ApplicationViewComponent_Template_app_generic_browser_list_AfterDeleteFolderEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onEvent($event)); })("viewModeChangeEvent", function ApplicationViewComponent_Template_app_generic_browser_list_viewModeChangeEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onViewModeChange($event)); })("BeforeAddItemEvent", function ApplicationViewComponent_Template_app_generic_browser_list_BeforeAddItemEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.createNewView($event)); })("BeforeUpdateItemEvent", function ApplicationViewComponent_Template_app_generic_browser_list_BeforeUpdateItemEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.editView($event)); });
|
|
244
|
-
i0.ɵɵelementEnd()();
|
|
245
|
-
i0.ɵɵelementStart(11, "mj-user-view-properties-dialog", 10, 1);
|
|
246
|
-
i0.ɵɵlistener("dialogClosed", function ApplicationViewComponent_Template_mj_user_view_properties_dialog_dialogClosed_11_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnViewPropertiesDialogClose($event)); });
|
|
247
|
-
i0.ɵɵelementEnd()();
|
|
449
|
+
} }, inputs: { categoryEntityID: "categoryEntityID" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["entityRow", ""], ["userViewDialog", ""], ["class", "app-container", 4, "ngIf"], [1, "app-container"], [1, "card-header-entity", "cloumn"], [1, "header-wrap"], [1, "title-icon"], [1, "title-wrap"], [1, "title-wrap-inner"], [1, "breadcrumb", 3, "click"], [1, "breadcrumb-separator"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumb-end"], [1, "config-button"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-gear"], ["EntityName", "Entities", "DisplayField", "Name", "DisplayIconField", "Icon", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "row", 2, "max-width", "100%"], [1, "col-xs-12", "col-sm-6", "example-col"], ["kendoButton", "", "fillMode", "flat", 3, "toggleable", "selected", "click", 4, "ngFor", "ngForOf"], [1, "main-area", "margin-top-neg-20"], [3, "dialogClosed", "ShowPropertiesButton"], [3, "ngClass"], ["kendoButton", "", "fillMode", "flat", 3, "click", "toggleable", "selected"], [3, "click"], ["class", "main-area margin-top-neg-20", 4, "ngIf"], ["iconName", "aggregateFields", "addText", "Create New View", "ItemEntityName", "User Views", "resourceName", "View", 3, "itemClickEvent", "AfterAddFolderEvent", "AfterAddItemEvent", "AfterDeleteItemEvent", "AfterDeleteFolderEvent", "viewModeChangeEvent", "BeforeAddItemEvent", "BeforeUpdateItemEvent", "items", "categoryEntityID", "title", "CategoryEntityName", "selectedFolderID", "showLoader", "viewingResource", "displayAsGrid"]], template: function ApplicationViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
450
|
+
i0.ɵɵtemplate(0, ApplicationViewComponent_div_0_Template, 29, 10, "div", 2);
|
|
248
451
|
} if (rf & 2) {
|
|
249
|
-
i0.ɵɵ
|
|
250
|
-
|
|
251
|
-
i0.ɵɵadvance(4);
|
|
252
|
-
i0.ɵɵproperty("ngForOf", ctx.AppEntityButtons);
|
|
253
|
-
i0.ɵɵadvance(2);
|
|
254
|
-
i0.ɵɵproperty("items", ctx.items)("categoryEntityID", ctx.categoryEntityID)("title", ctx.pageTitle)("CategoryEntityName", ctx.categoryEntityName)("selectedFolderID", ctx.selectedFolderID)("showLoader", ctx.showLoader)("viewingResource", false)("displayAsGrid", ctx.displayAsGrid);
|
|
255
|
-
i0.ɵɵadvance();
|
|
256
|
-
i0.ɵɵproperty("ShowPropertiesButton", false);
|
|
257
|
-
} }, dependencies: [i2.NgForOf, i4.ButtonComponent, i5.UserViewPropertiesDialogComponent, i6.GenericBrowserListComponent], styles: [".app-container[_ngcontent-%COMP%] {\n padding: 10px;\n}\n \n.entity-list[_ngcontent-%COMP%] {\n width: 500px;\n}\n.favorites-list[_ngcontent-%COMP%] {\n width: 400px;\n}\n\n.cloumn[_ngcontent-%COMP%] {\n flex-direction: column;\n}\n.example-col[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n.example-col[_ngcontent-%COMP%] .k-selected[_ngcontent-%COMP%] {\n font-weight: 800;\n color: var(--tdata-color);\n border-bottom: 3px solid var(--border-blue) !important;\n background: var(--white-color);\n}\n\n.margin-top-neg-20[_ngcontent-%COMP%] {\n margin-top: -20px;\n padding: 0px !important\n}", ".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
|
|
452
|
+
i0.ɵɵproperty("ngIf", ctx.app);
|
|
453
|
+
} }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i4.LoaderComponent, i5.ButtonComponent, i6.UserViewPropertiesDialogComponent, i7.RecordSelectorDialogComponent, i8.GenericBrowserListComponent], styles: [".app-container[_ngcontent-%COMP%] {\n padding: 15px;\n}\n \n.entity-list[_ngcontent-%COMP%] {\n width: 500px;\n}\n.favorites-list[_ngcontent-%COMP%] {\n width: 400px;\n}\n\n.cloumn[_ngcontent-%COMP%] {\n flex-direction: column;\n}\n.example-col[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n.example-col[_ngcontent-%COMP%] .k-selected[_ngcontent-%COMP%] {\n font-weight: 800;\n color: var(--tdata-color);\n border-bottom: 3px solid var(--border-blue) !important;\n background: var(--white-color);\n}\n\n.margin-top-neg-20[_ngcontent-%COMP%] {\n margin-top: -20px;\n padding: 0px !important\n}\n\n.header-wrap[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n width: 100%;\n}\n\n.title-wrap[_ngcontent-%COMP%] {\n flex-grow: 1;\n font-size: 24px;\n}\n.title-wrap-inner[_ngcontent-%COMP%] {\n display: block;\n}\n\n.breadcrumb[_ngcontent-%COMP%] {\n color: darkblue;\n cursor: pointer;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.breadcrumb-end[_ngcontent-%COMP%] {\n display: inline;\n margin-left: 5px;\n}\n\n\n.breadcrumb-separator[_ngcontent-%COMP%] {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n.home-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n \n.title-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-right: 15px;\n}\n\n.config-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.button-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n font-size: 16px;\n}", ".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
|
|
258
454
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ApplicationViewComponent, [{
|
|
259
455
|
type: Component,
|
|
260
|
-
args: [{ selector: 'application-view', template: "<div
|
|
261
|
-
}], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.Location }, { type: i3.SharedService }], { entityRowRef: [{
|
|
456
|
+
args: [{ selector: 'mj-application-view', template: "<div class=\"app-container\" *ngIf=\"this.app\">\n <div class=\"card-header-entity cloumn\">\n <div class=\"header-wrap\"> \n @if (this.app.Icon && this.app.Icon.length > 0) {\n <div class=\"title-icon\">\n <span [ngClass]=\"this.app.Icon\"></span>\n </div> \n }\n <div class=\"title-wrap\">\n <div class=\"title-wrap-inner\">\n <span class=\"breadcrumb\" (click)=\"GoHome($event)\">Home</span> \n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb\" (click)=\"GoToApps($event)\">Applications</span>\n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb-end\">{{this.app.Name}}</span>\n </div>\n </div>\n <div class=\"config-button\">\n <button kendoButton (click)=\"ShowAppEntitySelectionDialog()\"><span class=\"fa-solid fa-gear\"></span></button>\n <mj-record-selector-dialog \n EntityName=\"Entities\"\n [AvailableRecords]=\"AllAppEntities\" \n [SelectedRecords]=\"SelectedAppEntities\" \n [UnselectedRecords]=\"UnselectedAppEntities\"\n [DialogVisible]=\"AppEntitySelectionDialogVisible\"\n DisplayField=\"Name\"\n DisplayIconField=\"Icon\"\n (DialogClosed)=\"OnAppEntitySelectionDialogClosed($event)\"\n >\n </mj-record-selector-dialog>\n </div>\n </div> \n <div class=\"row\" #entityRow style=\"max-width: 100%;\">\n <div class=\"col-xs-12 col-sm-6 example-col\">\n <button\n *ngFor=\"let item of SelectedAppEntities\"\n kendoButton\n fillMode=\"flat\"\n [toggleable]=\"true\"\n [selected]=\"IsEntitySelected(item)\"\n (click)=\"onAppEntityButtonClicked(item)\"\n >\n <span>\n @if (item.Icon && item.Icon.length > 0) {\n <span [ngClass]=\"item.Icon + ' button-icon'\" ></span>\n }\n {{item.Name}}\n </span>\n </button>\n </div>\n </div>\n </div>\n @if (SelectedAppEntities.length === 0 && !showLoader) {\n <div (click)=\"ShowAppEntitySelectionDialog()\">\n <span class=\"fa-solid fa-gear\"></span>\n Click Here to Select Entities\n </div>\n }\n @if(showLoader) {\n <kendo-loader></kendo-loader>\n }\n @else {\n <div class=\"main-area margin-top-neg-20\" *ngIf=\"SelectedAppEntities.length > 0\">\n <app-generic-browser-list \n iconName=\"aggregateFields\" \n [items]=\"items\"\n [categoryEntityID]=\"categoryEntityID\"\n addText=\"Create New View\"\n ItemEntityName=\"User Views\"\n resourceName=\"View\"\n [title]=\"pageTitle\"\n [CategoryEntityName]=\"categoryEntityName\"\n (itemClickEvent)=\"onItemClick($event)\" \n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [viewingResource]=false\n [displayAsGrid]=\"displayAsGrid\"\n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n (BeforeAddItemEvent)=\"createNewView($event)\"\n (BeforeUpdateItemEvent)=\"editView($event)\"\n />\n </div>\n }\n\n <mj-user-view-properties-dialog #userViewDialog [ShowPropertiesButton]=\"false\"(dialogClosed)=\"OnViewPropertiesDialogClose($event)\"></mj-user-view-properties-dialog>\n</div>\n", styles: [".app-container {\n padding: 15px;\n}\n \n.entity-list {\n width: 500px;\n}\n.favorites-list {\n width: 400px;\n}\n\n.cloumn {\n flex-direction: column;\n}\n.example-col {\n overflow-x: auto;\n}\n.example-col .k-selected {\n font-weight: 800;\n color: var(--tdata-color);\n border-bottom: 3px solid var(--border-blue) !important;\n background: var(--white-color);\n}\n\n.margin-top-neg-20 {\n margin-top: -20px;\n padding: 0px !important\n}\n\n.header-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n width: 100%;\n}\n\n.title-wrap {\n flex-grow: 1;\n font-size: 24px;\n}\n.title-wrap-inner {\n display: block;\n}\n\n.breadcrumb {\n color: darkblue;\n cursor: pointer;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.breadcrumb-end {\n display: inline;\n margin-left: 5px;\n}\n\n\n.breadcrumb-separator {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n.home-icon {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n \n.title-icon {\n font-size: 32px;\n margin-right: 15px;\n}\n\n.config-button {\n display: flex;\n align-items: center;\n}\n\n.button-icon {\n margin-right: 5px;\n font-size: 16px;\n}", "\n.main-area {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n::ng-deep .list-view .k-listview-header, \n::ng-deep .list-view .k-listview-footer {\n border: none;\n}\n::ng-deep .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header,\n.footer {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header .head-tag {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header .count {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card .view-icon {\n color: var(--sideNav);\n}\n.card-wrapper {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper .k-card-body {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper .view-card {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card .btn-wrapper {\n display: flex;\n align-items: center;\n}\n\n.k-card-body .view-card-content h5 {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body .view-card-content p {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area .card-list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}\n"] }]
|
|
457
|
+
}], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.Location }, { type: i3.SharedService }, { type: i0.ChangeDetectorRef }], { entityRowRef: [{
|
|
262
458
|
type: ViewChild,
|
|
263
459
|
args: ['entityRow']
|
|
264
460
|
}], viewPropertiesDialog: [{
|
|
265
461
|
type: ViewChild,
|
|
266
462
|
args: ['userViewDialog']
|
|
463
|
+
}], categoryEntityID: [{
|
|
464
|
+
type: Input
|
|
267
465
|
}] }); })();
|
|
268
466
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ApplicationViewComponent, { className: "ApplicationViewComponent", filePath: "src/lib/app-view/application-view.component.ts", lineNumber: 17 }); })();
|
|
269
|
-
//This is a simple wrapper for the ApplicationEntityInfo class
|
|
270
|
-
//that just adds a Selected property
|
|
271
|
-
class ApplicationEntityButton {
|
|
272
|
-
constructor(data) {
|
|
273
|
-
this.Data = data;
|
|
274
|
-
this.Name = data.Entity;
|
|
275
|
-
this.Selected = false;
|
|
276
|
-
}
|
|
277
|
-
}
|