@memberjunction/ng-explorer-core 1.6.1 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/lib/app-view/application-view.component.d.ts +21 -21
  2. package/dist/lib/app-view/application-view.component.d.ts.map +1 -1
  3. package/dist/lib/app-view/application-view.component.js +289 -100
  4. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +1 -1
  5. package/dist/lib/data-browser-component/data-browser.component.d.ts +9 -3
  6. package/dist/lib/data-browser-component/data-browser.component.d.ts.map +1 -1
  7. package/dist/lib/data-browser-component/data-browser.component.js +167 -28
  8. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +4 -1
  9. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +1 -1
  10. package/dist/lib/generic-browser-list/generic-browser-list.component.js +6 -1
  11. package/dist/lib/header/header.component.d.ts.map +1 -1
  12. package/dist/lib/header/header.component.js +6 -3
  13. package/dist/lib/home-component/home.component.js +2 -2
  14. package/dist/lib/navigation/navigation.component.d.ts +1 -0
  15. package/dist/lib/navigation/navigation.component.d.ts.map +1 -1
  16. package/dist/lib/navigation/navigation.component.js +21 -4
  17. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +1 -0
  18. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  19. package/dist/lib/resource-wrappers/dashboard-resource.component.js +5 -0
  20. package/dist/lib/resource-wrappers/query-resource.component.d.ts +1 -0
  21. package/dist/lib/resource-wrappers/query-resource.component.d.ts.map +1 -1
  22. package/dist/lib/resource-wrappers/query-resource.component.js +5 -0
  23. package/dist/lib/resource-wrappers/record-resource.component.d.ts +1 -0
  24. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  25. package/dist/lib/resource-wrappers/record-resource.component.js +15 -0
  26. package/dist/lib/resource-wrappers/report-resource.component.d.ts +1 -0
  27. package/dist/lib/resource-wrappers/report-resource.component.d.ts.map +1 -1
  28. package/dist/lib/resource-wrappers/report-resource.component.js +5 -0
  29. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +1 -0
  30. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  31. package/dist/lib/resource-wrappers/search-results-resource.component.js +17 -1
  32. package/dist/lib/resource-wrappers/view-resource.component.d.ts +1 -0
  33. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  34. package/dist/lib/resource-wrappers/view-resource.component.js +5 -0
  35. package/dist/lib/single-application/single-application.component.d.ts +2 -1
  36. package/dist/lib/single-application/single-application.component.d.ts.map +1 -1
  37. package/dist/lib/single-application/single-application.component.js +6 -6
  38. package/dist/module.d.ts +2 -1
  39. package/dist/module.d.ts.map +1 -1
  40. package/dist/module.js +9 -5
  41. 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-buttons";
19
- import * as i5 from "@memberjunction/ng-user-view-properties";
20
- import * as i6 from "../generic-browser-list/generic-browser-list.component";
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 ApplicationViewComponent_button_8_Template(rf, ctx) { if (rf & 1) {
24
- const _r2 = i0.ɵɵgetCurrentView();
25
- i0.ɵɵelementStart(0, "button", 11);
26
- i0.ɵɵlistener("click", function ApplicationViewComponent_button_8_Template_button_click_0_listener() { const button_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onAppEntityButtonClicked(button_r3)); });
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.ɵɵtext(2);
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 button_r3 = ctx.$implicit;
32
- i0.ɵɵproperty("toggleable", true)("selected", button_r3.Selected);
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.ɵɵtextInterpolate1(" ", button_r3.Name, " ");
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.appNameFromURL = '';
44
- this.appName = '';
45
- this.appDescription = '';
46
- this.appEntities = [];
47
- this.AppEntityButtons = [];
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 app = md.Applications.find(a => a.Name == appName);
66
- if (app) {
67
- this.appDescription = app.Description;
68
- this.appEntities = app.ApplicationEntities;
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
- this.AppEntityButtons = this.appEntities.map(entity => new ApplicationEntityButton(entity));
71
- if (this.AppEntityButtons.length) {
72
- if (entityName) {
73
- const entityNameToLower = entityName.toLowerCase();
74
- const selectedAppEntity = this.AppEntityButtons.find(e => e.Name.toLocaleLowerCase() == entityNameToLower);
75
- if (selectedAppEntity) {
76
- selectedAppEntity.Selected = true;
77
- yield this.loadEntitiesAndFolders(selectedAppEntity);
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
- const defaultEntity = this.AppEntityButtons[0];
82
- defaultEntity.Selected = true;
83
- yield this.loadEntitiesAndFolders(defaultEntity);
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
- onAppEntityButtonClicked(appEntityButton) {
90
- if (appEntityButton.Selected) {
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.selectedAppEntity = appEntityButton.Data;
298
+ this.currentlySelectedAppEntity = e;
95
299
  this.navigateToCurrentPage();
96
300
  }
97
- loadEntitiesAndFolders(appEntityButton) {
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 (!appEntityButton) {
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.appName = appEntityButton.Name;
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.selectedAppEntity.Entity;
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.selectedAppEntity.EntityID} AND ` + parentFolderIDFilter;
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 = ${appEntityButton.Data.EntityID} AND ` + categoryIDFilter;
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.appNameFromURL];
169
- let appEntityName = this.selectedAppEntity ? this.selectedAppEntity.Entity : null;
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.appName);
189
- this.viewPropertiesDialog.CreateView(this.appName);
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
- const entityNameToLower = this.appName.toLowerCase();
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: 13, vars: 11, consts: [["entityRow", ""], ["userViewDialog", ""], [1, "app-container"], [1, "card-header-entity", "cloumn"], [1, "title-wrap"], [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"], ["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"], [3, "dialogClosed", "ShowPropertiesButton"], ["kendoButton", "", "fillMode", "flat", 3, "click", "toggleable", "selected"]], template: function ApplicationViewComponent_Template(rf, ctx) { if (rf & 1) {
235
- const _r1 = i0.ɵɵgetCurrentView();
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.ɵɵadvance(4);
250
- i0.ɵɵtextInterpolate(ctx.appNameFromURL);
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 class=\"app-container\">\n <div class=\"card-header-entity cloumn\">\n <div class=\"title-wrap\">\n <h1>{{appNameFromURL}}</h1>\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 button of AppEntityButtons\"\n kendoButton\n fillMode=\"flat\"\n [toggleable]=\"true\"\n [selected]=\"button.Selected\"\n (click)=\"onAppEntityButtonClicked(button)\"\n >\n <span>\n {{button.Name}}\n </span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"main-area margin-top-neg-20\">\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 <mj-user-view-properties-dialog #userViewDialog [ShowPropertiesButton]=\"false\"(dialogClosed)=\"OnViewPropertiesDialogClose($event)\"></mj-user-view-properties-dialog>\n</div>\n", styles: [".app-container {\n padding: 10px;\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.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"] }]
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
- }