@memberjunction/ng-explorer-core 1.8.1 → 2.0.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.
Files changed (70) hide show
  1. package/dist/app-routing.module.d.ts +4 -0
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +60 -3
  4. package/dist/generic/Item.types.d.ts +5 -5
  5. package/dist/lib/app-view/application-view.component.d.ts +1 -2
  6. package/dist/lib/app-view/application-view.component.d.ts.map +1 -1
  7. package/dist/lib/app-view/application-view.component.js +25 -30
  8. package/dist/lib/auth-button/auth-button.component.js +1 -1
  9. package/dist/lib/base-browser-component/base-browser-component.d.ts +2 -1
  10. package/dist/lib/base-browser-component/base-browser-component.d.ts.map +1 -1
  11. package/dist/lib/base-browser-component/base-browser-component.js +7 -5
  12. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts.map +1 -1
  13. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +15 -3
  14. package/dist/lib/data-browser-component/data-browser.component.d.ts +2 -2
  15. package/dist/lib/data-browser-component/data-browser.component.d.ts.map +1 -1
  16. package/dist/lib/data-browser-component/data-browser.component.js +23 -9
  17. package/dist/lib/expansion-panel-component/expansion-panel-component.js +5 -5
  18. package/dist/lib/favorites/favorites.component.d.ts.map +1 -1
  19. package/dist/lib/favorites/favorites.component.js +11 -4
  20. package/dist/lib/files/files.component.d.ts +3 -1
  21. package/dist/lib/files/files.component.d.ts.map +1 -1
  22. package/dist/lib/files/files.component.js +20 -5
  23. package/dist/lib/generic/form-toolbar.js +1 -1
  24. package/dist/lib/generic/resource-container-component.js +1 -1
  25. package/dist/lib/generic-browse-list/generic-browse-list.component.js +1 -1
  26. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +1 -1
  27. package/dist/lib/generic-browser-list/generic-browser-list.component.js +2 -2
  28. package/dist/lib/header/header.component.js +1 -1
  29. package/dist/lib/home-component/home.component.d.ts +5 -2
  30. package/dist/lib/home-component/home.component.d.ts.map +1 -1
  31. package/dist/lib/home-component/home.component.js +49 -51
  32. package/dist/lib/join-grid/join-grid.component.d.ts +31 -0
  33. package/dist/lib/join-grid/join-grid.component.d.ts.map +1 -0
  34. package/dist/lib/join-grid/join-grid.component.js +222 -0
  35. package/dist/lib/list-view/list-view.component.d.ts.map +1 -1
  36. package/dist/lib/list-view/list-view.component.js +15 -3
  37. package/dist/lib/navigation/navigation.component.d.ts +2 -2
  38. package/dist/lib/navigation/navigation.component.d.ts.map +1 -1
  39. package/dist/lib/navigation/navigation.component.js +43 -17
  40. package/dist/lib/query-browser-component/query-browser.component.d.ts.map +1 -1
  41. package/dist/lib/query-browser-component/query-browser.component.js +17 -5
  42. package/dist/lib/report-browser-component/report-browser.component.d.ts.map +1 -1
  43. package/dist/lib/report-browser-component/report-browser.component.js +15 -3
  44. package/dist/lib/resource-wrappers/dashboard-resource.component.js +1 -1
  45. package/dist/lib/resource-wrappers/query-resource.component.js +1 -1
  46. package/dist/lib/resource-wrappers/record-resource.component.js +1 -1
  47. package/dist/lib/resource-wrappers/report-resource.component.js +1 -1
  48. package/dist/lib/resource-wrappers/search-results-resource.component.js +1 -1
  49. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  50. package/dist/lib/resource-wrappers/view-resource.component.js +5 -4
  51. package/dist/lib/single-application/single-application.component.js +1 -1
  52. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +2 -2
  53. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +1 -1
  54. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +1 -1
  55. package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
  56. package/dist/lib/single-entity/single-entity.component.js +1 -1
  57. package/dist/lib/single-list-detail/single-list-detail.component.d.ts +14 -4
  58. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  59. package/dist/lib/single-list-detail/single-list-detail.component.js +232 -120
  60. package/dist/lib/single-query/single-query.component.d.ts +1 -1
  61. package/dist/lib/single-query/single-query.component.js +1 -1
  62. package/dist/lib/single-record/single-record.component.js +1 -1
  63. package/dist/lib/single-report/single-report.component.d.ts +1 -1
  64. package/dist/lib/single-report/single-report.component.js +1 -1
  65. package/dist/lib/single-search-result/single-search-result.component.js +1 -1
  66. package/dist/lib/single-view/single-view.component.d.ts +1 -1
  67. package/dist/lib/single-view/single-view.component.js +2 -2
  68. package/dist/lib/user-notifications/user-notifications.component.js +2 -2
  69. package/dist/lib/user-profile/user-profile.component.js +1 -1
  70. package/package.json +18 -18
@@ -27,6 +27,10 @@ interface DetachedRouteHandleExt extends DetachedRouteHandle {
27
27
  componentRef: ComponentRef<any>;
28
28
  }
29
29
  export declare class AppRoutingModule {
30
+ private router;
31
+ constructor(router: Router);
32
+ loadDynamicRoutes(): void;
33
+ protected innerLoadDynamicRoutes(): Promise<void>;
30
34
  static ɵfac: i0.ɵɵFactoryDeclaration<AppRoutingModule, never>;
31
35
  static ɵmod: i0.ɵɵNgModuleDeclaration<AppRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
32
36
  static ɵinj: i0.ɵɵInjectorDeclaration<AppRoutingModule>;
@@ -1 +1 @@
1
- {"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAwB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,EAAoD,MAAM,iBAAiB,CAAC;AAoBvK,OAAO,EAAc,aAAa,EAAgB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;;AAE1E,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAA;KAAE,CAAM;IAGpE,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAMpD,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAYjF,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAUpD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI;IAgBnE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO;IAIvF,OAAO,CAAC,QAAQ;CAUjB;AAED,qBAGa,gBAAiB,YAAW,OAAO,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,MAAM;gBAA5C,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAexE,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;yCAhB7D,gBAAgB;6CAAhB,gBAAgB;CAsF5B;AAmDD,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;CACjC;AAED,qBAKa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
1
+ {"version":3,"file":"app-routing.module.d.ts","sourceRoot":"","sources":["../src/app-routing.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAwB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,EAAoD,MAAM,iBAAiB,CAAC;AAoBvK,OAAO,EAAc,aAAa,EAAyC,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;;AAG1E,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAA;KAAE,CAAM;IAGpE,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAMpD,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAYjF,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAUpD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI;IAgBnE,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO;IAIvF,OAAO,CAAC,QAAQ;CAUjB;AAED,qBAGa,gBAAiB,YAAW,OAAO,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,MAAM;gBAA5C,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAexE,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;yCAhB7D,gBAAgB;6CAAhB,gBAAgB;CAsF5B;AAmDD,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;CACjC;AAED,qBAIa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAIlC,iBAAiB;cAWD,sBAAsB;yCAhB3B,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAoD5B"}
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { Injectable, NgModule } from '@angular/core';
2
11
  import { RouterModule } from '@angular/router';
3
12
  import { SingleApplicationComponent, SingleEntityComponent, SingleRecordComponent, HomeComponent, UserNotificationsComponent, DataBrowserComponent, ReportBrowserComponent, DashboardBrowserComponent, AuthGuardService as AuthGuard, FilesComponent, QueryBrowserComponent, ListViewComponent, SingleListDetailComponent } from './public-api';
@@ -5,7 +14,7 @@ import { SettingsComponent } from '@memberjunction/ng-explorer-settings';
5
14
  import { LogError, Metadata } from '@memberjunction/core';
6
15
  import { MJEventType, MJGlobal } from '@memberjunction/global';
7
16
  import { SkipChatComponent } from '@memberjunction/ng-ask-skip';
8
- import { EventCodes, ResourceData } from '@memberjunction/ng-shared';
17
+ import { EventCodes, ResourceData, BaseNavigationComponent } from '@memberjunction/ng-shared';
9
18
  import * as i0 from "@angular/core";
10
19
  import * as i1 from "@memberjunction/ng-shared";
11
20
  import * as i2 from "@angular/router";
@@ -212,8 +221,56 @@ const routes = [
212
221
  },
213
222
  ];
214
223
  export class AppRoutingModule {
224
+ constructor(router) {
225
+ this.router = router;
226
+ this.loadDynamicRoutes();
227
+ }
228
+ loadDynamicRoutes() {
229
+ MJGlobal.Instance.GetEventListener(true) // true gets us replay of past events so we can "catch up" as needed
230
+ .subscribe((event) => {
231
+ // event handler
232
+ switch (event.event) {
233
+ case MJEventType.LoggedIn:
234
+ this.innerLoadDynamicRoutes();
235
+ }
236
+ });
237
+ }
238
+ innerLoadDynamicRoutes() {
239
+ return __awaiter(this, void 0, void 0, function* () {
240
+ // gets called after we're logged in
241
+ const md = new Metadata();
242
+ const dynamicRoutes = md.VisibleExplorerNavigationItems.map(item => {
243
+ const registration = MJGlobal.Instance.ClassFactory.GetRegistration(BaseNavigationComponent, item.Name);
244
+ if (registration) {
245
+ // remove the leading slash from the route if it exists
246
+ const route = item.Route.startsWith('/') ? item.Route.substring(1) : item.Route;
247
+ return {
248
+ path: route,
249
+ component: registration.SubClass,
250
+ canActivate: [AuthGuard],
251
+ };
252
+ }
253
+ else {
254
+ throw new Error(`No registration found for Explorer Navigation Item: ${item.Name}`);
255
+ }
256
+ });
257
+ // Find and remove the wildcard route
258
+ const wildcardRouteIndex = routes.findIndex(route => { var _a; return ((_a = route.path) === null || _a === void 0 ? void 0 : _a.trim()) === '**'; });
259
+ const wildcardRoute = routes[wildcardRouteIndex];
260
+ if (wildcardRouteIndex > -1) {
261
+ routes.splice(wildcardRouteIndex, 1);
262
+ }
263
+ // create a combined routes array and make sure that we filter out any dynamic routes that are ALREADY in the router config
264
+ const newCombinedRoutes = [...routes, ...dynamicRoutes.filter(route => !routes.some(r => { var _a, _b; return ((_a = r.path) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase()) === ((_b = route.path) === null || _b === void 0 ? void 0 : _b.trim().toLowerCase()); }))];
265
+ // Re-add the wildcard route at the end
266
+ if (wildcardRoute) {
267
+ newCombinedRoutes.push(wildcardRoute);
268
+ }
269
+ this.router.resetConfig(newCombinedRoutes);
270
+ });
271
+ }
215
272
  }
216
- AppRoutingModule.ɵfac = function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(); };
273
+ AppRoutingModule.ɵfac = function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(i0.ɵɵinject(i2.Router)); };
217
274
  AppRoutingModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AppRoutingModule });
218
275
  AppRoutingModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' }), RouterModule] });
219
276
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppRoutingModule, [{
@@ -222,5 +279,5 @@ AppRoutingModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [RouterM
222
279
  imports: [RouterModule.forRoot(routes, { initialNavigation: 'disabled' })],
223
280
  exports: [RouterModule],
224
281
  }]
225
- }], null, null); })();
282
+ }], () => [{ type: i2.Router }], null); })();
226
283
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AppRoutingModule, { imports: [i2.RouterModule], exports: [RouterModule] }); })();
@@ -24,14 +24,14 @@ export declare class TreeItem extends Item {
24
24
  * Report Categories, Query Categories, etc.
25
25
  */
26
26
  export declare class Folder {
27
- ID: number;
28
- ParentFolderID?: number | null;
27
+ ID: string;
28
+ ParentFolderID?: string | null;
29
29
  Name: string;
30
30
  Description: string | null;
31
- constructor(id: number, folderName: string);
31
+ constructor(id: string, folderName: string);
32
32
  }
33
33
  export declare class TreeFolder extends Folder {
34
- EntityID: number;
35
- constructor(entityID: number, id: number, folderName: string);
34
+ EntityID: string;
35
+ constructor(entityID: string, id: string, folderName: string);
36
36
  }
37
37
  //# sourceMappingURL=Item.types.d.ts.map
@@ -17,7 +17,7 @@ export declare class ApplicationViewComponent extends BaseBrowserComponent imple
17
17
  private cdr;
18
18
  entityRowRef: Element | undefined;
19
19
  viewPropertiesDialog: UserViewPropertiesDialogComponent;
20
- categoryEntityID: number;
20
+ categoryEntityID: string;
21
21
  currentlySelectedAppEntity: EntityEntity | undefined;
22
22
  AppEntitySelectionDialogVisible: boolean;
23
23
  AllAppEntities: EntityEntity[];
@@ -48,7 +48,6 @@ export declare class ApplicationViewComponent extends BaseBrowserComponent imple
48
48
  }): Promise<void>;
49
49
  GoToApps(event: Event): Promise<void>;
50
50
  GoHome(event: Event): Promise<void>;
51
- sortAppEntites(entities: EntityEntity[]): EntityEntity[];
52
51
  static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationViewComponent, never>;
53
52
  static ɵcmp: i0.ɵɵComponentDeclaration<ApplicationViewComponent, "mj-application-view", never, { "categoryEntityID": { "alias": "categoryEntityID"; "required": false; }; }, {}, never, never, false, never>;
54
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"application-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/app-view/application-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAwB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA0C,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAA+B,kBAAkB,EAAkB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7K,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAY,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEvF,qBAKa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM;IAenE,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,GAAG;IAdzH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAG,iCAAiC,CAAC;IAEtE,gBAAgB,EAAG,MAAM,CAAC;IAEnC,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;IAErD,+BAA+B,EAAE,OAAO,CAAS;IACjD,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,mBAAmB,EAAE,YAAY,EAAE,CAAM;IACzC,qBAAqB,EAAE,YAAY,EAAE,CAAM;IAC3C,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAAC;gBAE7B,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,QAAQ,EAAE,QAAQ,EAAU,aAAa,EAAE,aAAa,EAAU,GAAG,EAAE,iBAAiB;IAM9J,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkFxB,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAMrC,4BAA4B;IAKtB,gCAAgC,CAAC,IAAI,EAAE,OAAO;IA8DpD,wBAAwB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;cAStC,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9E,WAAW,CAAC,IAAI,EAAE,IAAI;IAc7B,eAAe,CAAC,IAAI,EAAE,qBAAqB;IAO3C,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAYzC,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,WAAW;IAKZ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/C,aAAa,CAAC,KAAK,EAAE,kBAAkB;IAW1B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD,2BAA2B,CAAC,IAAI,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvJ,QAAQ,CAAC,KAAK,EAAE,KAAK;IAKrB,MAAM,CAAC,KAAK,EAAE,KAAK;IAMzB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;yCA5U/C,wBAAwB;2CAAxB,wBAAwB;CAuVpC"}
1
+ {"version":3,"file":"application-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/app-view/application-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAwB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA0C,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAA+B,kBAAkB,EAAkB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7K,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAU,IAAI,EAAY,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEvF,qBAKa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM;IAenE,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,aAAa;IAAiB,OAAO,CAAC,GAAG;IAdzH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAG,iCAAiC,CAAC;IAEtE,gBAAgB,EAAG,MAAM,CAAC;IAEnC,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;IAErD,+BAA+B,EAAE,OAAO,CAAS;IACjD,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,mBAAmB,EAAE,YAAY,EAAE,CAAM;IACzC,qBAAqB,EAAE,YAAY,EAAE,CAAM;IAC3C,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAAC;gBAE7B,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,QAAQ,EAAE,QAAQ,EAAU,aAAa,EAAE,aAAa,EAAU,GAAG,EAAE,iBAAiB;IAM9J,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyFxB,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAMrC,4BAA4B;IAKtB,gCAAgC,CAAC,IAAI,EAAE,OAAO;IAgEpD,wBAAwB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;cAStC,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9E,WAAW,CAAC,IAAI,EAAE,IAAI;IAc7B,eAAe,CAAC,IAAI,EAAE,qBAAqB;IAO3C,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAYzC,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,WAAW;IAKZ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI/C,aAAa,CAAC,KAAK,EAAE,kBAAkB;IAW1B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD,2BAA2B,CAAC,IAAI,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvJ,QAAQ,CAAC,KAAK,EAAE,KAAK;IAKrB,MAAM,CAAC,KAAK,EAAE,KAAK;yCA/UhB,wBAAwB;2CAAxB,wBAAwB;CAoVpC"}
@@ -169,24 +169,31 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
169
169
  // next up we need to find the UserApplication record based on the app and the current user
170
170
  const userAppResult = yield rv.RunView({
171
171
  EntityName: "User Applications",
172
- ExtraFilter: `UserID=${md.CurrentUser.ID} AND ApplicationID=${this.app.ID}`,
172
+ ExtraFilter: `UserID='${md.CurrentUser.ID}' AND ApplicationID='${this.app.ID}'`,
173
173
  ResultType: 'entity_object'
174
174
  });
175
175
  if (!userAppResult || userAppResult.Success === false || userAppResult.Results.length === 0)
176
176
  throw new Error('User Application Record for current user and selected application not found');
177
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
178
+ const matches = this.app.ApplicationEntities
179
+ .map(ae => md.Entities.find(e => e.ID === ae.EntityID))
180
+ .filter(e => e) // filter out null entries
181
+ .sort((a, b) => {
182
+ if (!a || !b) {
183
+ return 0;
184
+ }
185
+ return a.Name.localeCompare(b.Name);
186
+ }); // sort by name
179
187
  // store the entire list of POSSIBLE app entities in this list
180
188
  this.AllAppEntities = matches; // we filter out null above so this cast is safe;
181
189
  const userAppEntities = yield rv.RunView({
182
190
  EntityName: 'User Application Entities',
183
191
  ResultType: 'entity_object',
184
- ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
185
- OrderBy: 'Sequence'
192
+ ExtraFilter: `UserApplicationID = '${this.userApp.ID}'`,
193
+ OrderBy: 'Sequence, Entity'
186
194
  });
187
195
  if (userAppEntities && userAppEntities.Success) {
188
- this.SelectedAppEntities = this.AllAppEntities.filter(e => userAppEntities.Results.some(uae => uae.EntityID === e.ID));
189
- this.SelectedAppEntities = this.sortAppEntites(this.SelectedAppEntities);
196
+ this.SelectedAppEntities = userAppEntities.Results.map(uae => this.AllAppEntities.find(ae => uae.EntityID === ae.ID)).filter(val => val); // now we have our selected app entities and they're sorted properly
190
197
  this.UnselectedAppEntities = this.AllAppEntities.filter(e => !this.SelectedAppEntities.some(sa => sa.ID === e.ID));
191
198
  // 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
192
199
  const defaultEntities = this.app.ApplicationEntities.filter(a => a.DefaultForNewUser);
@@ -241,7 +248,7 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
241
248
  const userAppEntities = yield rv.RunView({
242
249
  EntityName: 'User Application Entities',
243
250
  ResultType: 'entity_object',
244
- ExtraFilter: `UserApplicationID = ${this.userApp.ID}`,
251
+ ExtraFilter: `UserApplicationID = '${this.userApp.ID}'`,
245
252
  OrderBy: 'Sequence'
246
253
  });
247
254
  // userAppEntities.results is the current DB state, we need to now compare it to the SelectedAppEntities array
@@ -254,15 +261,17 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
254
261
  const e = this.SelectedAppEntities[index];
255
262
  const existing = existingUserAppEntities.find(uae => uae.EntityID === e.ID);
256
263
  if (existing) {
257
- existing.Sequence = index;
258
- userAppEntitiesToSave.push(existing);
264
+ if (existing.Sequence !== index) {
265
+ existing.Sequence = index;
266
+ userAppEntitiesToSave.push(existing);
267
+ }
259
268
  }
260
269
  else {
261
270
  // this is a new app entity that the user has selected
262
271
  const newApp = yield md.GetEntityObject("User Application Entities");
263
272
  newApp.UserApplicationID = this.userApp.ID;
264
- newApp.EntityID = e.ID;
265
273
  newApp.Sequence = index;
274
+ newApp.EntityID = e.ID;
266
275
  userAppEntitiesToSave.push(newApp);
267
276
  }
268
277
  }
@@ -312,7 +321,7 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
312
321
  this.showLoader = true;
313
322
  this.currentlySelectedAppEntity = entity;
314
323
  if (this.selectedFolderID) {
315
- let viewResult = yield _super.RunView.call(this, this.categoryEntityName, `ID=${this.selectedFolderID}`);
324
+ let viewResult = yield _super.RunView.call(this, this.categoryEntityName, `ID='${this.selectedFolderID}'`);
316
325
  if (viewResult.length > 0) {
317
326
  this.pageTitle = viewResult[0].Name;
318
327
  }
@@ -321,10 +330,10 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
321
330
  this.pageTitle = this.currentlySelectedAppEntity.Name;
322
331
  }
323
332
  const md = new Metadata();
324
- const parentFolderIDFilter = this.selectedFolderID ? `ParentID=${this.selectedFolderID}` : 'ParentID IS NULL';
325
- const categoryFilter = `UserID=${md.CurrentUser.ID} AND EntityID=${this.currentlySelectedAppEntity.ID} AND ` + parentFolderIDFilter;
326
- const categoryIDFilter = this.selectedFolderID ? `CategoryID=${this.selectedFolderID}` : 'CategoryID IS NULL';
327
- const userViewFilter = `UserID = ${md.CurrentUser.ID} AND EntityID = ${this.currentlySelectedAppEntity.ID} AND ` + categoryIDFilter;
333
+ const parentFolderIDFilter = this.selectedFolderID ? `ParentID='${this.selectedFolderID}'` : 'ParentID IS NULL';
334
+ const categoryFilter = `UserID='${md.CurrentUser.ID}' AND EntityID='${this.currentlySelectedAppEntity.ID}' AND ` + parentFolderIDFilter;
335
+ const categoryIDFilter = this.selectedFolderID ? `CategoryID='${this.selectedFolderID}'` : 'CategoryID IS NULL';
336
+ const userViewFilter = `UserID = '${md.CurrentUser.ID}' AND EntityID='${this.currentlySelectedAppEntity.ID}' AND ` + categoryIDFilter;
328
337
  yield _super.LoadData.call(this, {
329
338
  sortItemsAfterLoad: true,
330
339
  categoryItemFilter: categoryFilter,
@@ -438,20 +447,6 @@ export class ApplicationViewComponent extends BaseBrowserComponent {
438
447
  this.router.navigate(['home']);
439
448
  });
440
449
  }
441
- sortAppEntites(entities) {
442
- entities.sort(function (a, b) {
443
- const aName = a.Name.toLowerCase();
444
- const bName = b.Name.toLowerCase();
445
- if (aName < bName) {
446
- return -1;
447
- }
448
- if (aName > bName) {
449
- return 1;
450
- }
451
- return 0;
452
- });
453
- return entities;
454
- }
455
450
  }
456
451
  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)); };
457
452
  ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ApplicationViewComponent, selectors: [["mj-application-view"]], viewQuery: function ApplicationViewComponent_Query(rf, ctx) { if (rf & 1) {
@@ -478,4 +473,4 @@ ApplicationViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Ap
478
473
  }], categoryEntityID: [{
479
474
  type: Input
480
475
  }] }); })();
481
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ApplicationViewComponent, { className: "ApplicationViewComponent", filePath: "src/lib/app-view/application-view.component.ts", lineNumber: 17 }); })();
476
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ApplicationViewComponent, { className: "ApplicationViewComponent" }); })();
@@ -41,4 +41,4 @@ AuthButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthBut
41
41
  type: Inject,
42
42
  args: [DOCUMENT]
43
43
  }] }, { type: i1.MJAuthBase }], null); })();
44
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AuthButtonComponent, { className: "AuthButtonComponent", filePath: "src/lib/auth-button/auth-button.component.ts", lineNumber: 10 }); })();
44
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AuthButtonComponent, { className: "AuthButtonComponent" }); })();
@@ -1,7 +1,8 @@
1
1
  import { Folder, Item, ItemType } from "../../generic/Item.types";
2
2
  import { Router, Params, ActivatedRoute } from '@angular/router';
3
3
  import { BaseEvent } from "../../generic/Events.types";
4
- export declare class BaseBrowserComponent {
4
+ import { BaseNavigationComponent } from "@memberjunction/ng-shared";
5
+ export declare class BaseBrowserComponent extends BaseNavigationComponent {
5
6
  showLoader: boolean;
6
7
  items: Item[];
7
8
  folders: Folder[];
@@ -1 +1 @@
1
- {"version":3,"file":"base-browser-component.d.ts","sourceRoot":"","sources":["../../../src/lib/base-browser-component/base-browser-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAyD,MAAM,4BAA4B,CAAC;AAE9G,qBAAa,oBAAoB;IACtB,UAAU,EAAE,OAAO,CAAS;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,SAAS,EAAE,MAAM,CAAM;IAE9B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAM;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAM;IACjC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAM;IACzC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAM;IACtC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAM;IAC1C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAU;IACpC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAQ/C,IAAW,aAAa,IAAI,OAAO,CAAqC;IAExE,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAM/E,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrD,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;cAOvC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;cAY1B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmB5F,SAAS,CAAC,yBAAyB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE;IAUlF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;IAa3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAe7D,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAa/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAGlD;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA"}
1
+ {"version":3,"file":"base-browser-component.d.ts","sourceRoot":"","sources":["../../../src/lib/base-browser-component/base-browser-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAyD,MAAM,4BAA4B,CAAC;AAC9G,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,oBAAqB,SAAQ,uBAAuB;IACtD,UAAU,EAAE,OAAO,CAAS;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,SAAS,EAAE,MAAM,CAAM;IAE9B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAM;IAChC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAM;IACjC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAM;IACzC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAM;IACtC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAM;IAC1C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAU;IACpC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAS/C,IAAW,aAAa,IAAI,OAAO,CAAqC;IAExE,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAM/E,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrD,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;cAOvC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;cAY1B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmB5F,SAAS,CAAC,yBAAyB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE;IAUlF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;IAa3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAe7D,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAa/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAGlD;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA"}
@@ -10,8 +10,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { LogStatus, Metadata, RunView } from "@memberjunction/core";
11
11
  import { Folder, Item, ItemType } from "../../generic/Item.types";
12
12
  import { EventTypes } from "../../generic/Events.types";
13
- export class BaseBrowserComponent {
13
+ import { BaseNavigationComponent } from "@memberjunction/ng-shared";
14
+ export class BaseBrowserComponent extends BaseNavigationComponent {
14
15
  constructor() {
16
+ super();
15
17
  this.showLoader = false;
16
18
  this.selectedFolderID = null;
17
19
  this.pageTitle = '';
@@ -35,11 +37,11 @@ export class BaseBrowserComponent {
35
37
  buildFiltersAndLoadData() {
36
38
  return __awaiter(this, void 0, void 0, function* () {
37
39
  const md = new Metadata();
38
- let categoryFilter = this.selectedFolderID ? `CategoryID = ${this.selectedFolderID}` : `CategoryID IS NULL`;
39
- let resourceFilter = `UserID = ${md.CurrentUser.ID} AND ${categoryFilter}`;
40
+ let categoryFilter = this.selectedFolderID ? `CategoryID = '${this.selectedFolderID}'` : `CategoryID IS NULL`;
41
+ let resourceFilter = `UserID = '${md.CurrentUser.ID}' AND ${categoryFilter}`;
40
42
  //filter for the folders
41
- let resourceCategoryFilter = this.selectedFolderID ? `ParentID = ${this.selectedFolderID}` : `ParentID IS NULL`;
42
- resourceCategoryFilter += ` AND UserID = ${md.CurrentUser.ID}`;
43
+ let resourceCategoryFilter = this.selectedFolderID ? `ParentID = '${this.selectedFolderID}'` : `ParentID IS NULL`;
44
+ resourceCategoryFilter += ` AND UserID = '${md.CurrentUser.ID}'`;
43
45
  LogStatus("resourceFilter: " + resourceFilter + " category filter: " + resourceCategoryFilter);
44
46
  yield this.LoadData({
45
47
  sortItemsAfterLoad: true,
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAEnE,qBAMa,yBAA0B,SAAQ,oBAAoB;IAErD,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,aAAa;gBAApE,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,aAAa,EAAE,aAAa;IAajG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,CAAC,IAAI,EAAE,IAAI;IAWpB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;yCAlCvD,yBAAyB;2CAAzB,yBAAyB;CA0CrC"}
1
+ {"version":3,"file":"dashboard-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAA2B,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;;AAGnE,qBAMa,yBAA0B,SAAQ,oBAAoB;IAErD,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,aAAa;gBAApE,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,aAAa,EAAE,aAAa;IAajG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,CAAC,IAAI,EAAE,IAAI;IAWpB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;yCAlCvD,yBAAyB;2CAAzB,yBAAyB;CA0CrC"}
@@ -1,3 +1,9 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
1
7
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
8
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
9
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,12 +14,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
14
  });
9
15
  };
10
16
  import { Component } from '@angular/core';
17
+ import { BaseNavigationComponent } from '@memberjunction/ng-shared';
11
18
  import { BaseBrowserComponent } from '../base-browser-component/base-browser-component';
19
+ import { RegisterClass } from '@memberjunction/global';
12
20
  import * as i0 from "@angular/core";
13
21
  import * as i1 from "@angular/router";
14
22
  import * as i2 from "@memberjunction/ng-shared";
15
23
  import * as i3 from "../generic-browser-list/generic-browser-list.component";
16
- export class DashboardBrowserComponent extends BaseBrowserComponent {
24
+ let DashboardBrowserComponent = class DashboardBrowserComponent extends BaseBrowserComponent {
17
25
  constructor(router, route, sharedService) {
18
26
  var _a;
19
27
  super();
@@ -54,7 +62,7 @@ export class DashboardBrowserComponent extends BaseBrowserComponent {
54
62
  let dashboard = item.Data;
55
63
  this.router.navigate(['resource', this.routeNameSingular, dashboard.ID], { queryParams: { edit: true } });
56
64
  }
57
- }
65
+ };
58
66
  DashboardBrowserComponent.ɵfac = function DashboardBrowserComponent_Factory(t) { return new (t || DashboardBrowserComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.SharedService)); };
59
67
  DashboardBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DashboardBrowserComponent, selectors: [["app-dashboard-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 4, consts: [["title", "Dashboards", "itemType", "dashboard", "iconName", "aggregateFields", "addText", "Create New Dashboard", "ItemEntityName", "Dashboards", "resourceName", "Dashboard", "CategoryEntityName", "Dashboard Categories", 3, "itemClickEvent", "AfterAddFolderEvent", "AfterAddItemEvent", "AfterDeleteItemEvent", "AfterDeleteFolderEvent", "BeforeUpdateItemEvent", "viewModeChangeEvent", "items", "selectedFolderID", "showLoader", "displayAsGrid"]], template: function DashboardBrowserComponent_Template(rf, ctx) { if (rf & 1) {
60
68
  i0.ɵɵelementStart(0, "app-generic-browser-list", 0);
@@ -63,8 +71,12 @@ DashboardBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: D
63
71
  } if (rf & 2) {
64
72
  i0.ɵɵproperty("items", ctx.items)("selectedFolderID", ctx.selectedFolderID)("showLoader", ctx.showLoader)("displayAsGrid", ctx.displayAsGrid);
65
73
  } }, dependencies: [i3.GenericBrowserListComponent], styles: [".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}"] });
74
+ DashboardBrowserComponent = __decorate([
75
+ RegisterClass(BaseNavigationComponent, 'Dashboards')
76
+ ], DashboardBrowserComponent);
77
+ export { DashboardBrowserComponent };
66
78
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardBrowserComponent, [{
67
79
  type: Component,
68
80
  args: [{ selector: 'app-dashboard-browser', template: "<app-generic-browser-list \n title=\"Dashboards\" \n itemType=\"dashboard\" \n iconName=\"aggregateFields\" \n [items]=\"items\" \n addText=\"Create New Dashboard\"\n ItemEntityName=\"Dashboards\"\n resourceName=\"Dashboard\"\n CategoryEntityName=\"Dashboard Categories\"\n (itemClickEvent)=\"itemClick($event)\" \n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (BeforeUpdateItemEvent)=\"onBeforeUpdateItemEvent($event)\"\n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [displayAsGrid]=\"displayAsGrid\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n/>\n", styles: ["\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"] }]
69
81
  }], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }], null); })();
70
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardBrowserComponent, { className: "DashboardBrowserComponent", filePath: "src/lib/dashboard-browser-component/dashboard-browser.component.ts", lineNumber: 15 }); })();
82
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardBrowserComponent, { className: "DashboardBrowserComponent" }); })();
@@ -1,8 +1,8 @@
1
1
  import { Router } from '@angular/router';
2
2
  import { ApplicationEntity } from '@memberjunction/core-entities';
3
- import { SharedService } from '@memberjunction/ng-shared';
3
+ import { BaseNavigationComponent, SharedService } from '@memberjunction/ng-shared';
4
4
  import * as i0 from "@angular/core";
5
- export declare class DataBrowserComponent {
5
+ export declare class DataBrowserComponent extends BaseNavigationComponent {
6
6
  sharedService: SharedService;
7
7
  private router;
8
8
  showLoader: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"data-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/data-browser-component/data-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAyB,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAE1D,qBAKa,oBAAoB;IAOZ,aAAa,EAAE,aAAa;IAAE,OAAO,CAAC,MAAM;IANxD,UAAU,EAAE,OAAO,CAAQ;IAE3B,eAAe,EAAE,iBAAiB,EAAE,CAAM;IAC1C,oBAAoB,EAAE,iBAAiB,EAAE,CAAM;IAC/C,sBAAsB,EAAE,iBAAiB,EAAE,CAAM;gBAErC,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAEvE,QAAQ,IAAI,IAAI;IAGV,QAAQ;IA4BP,YAAY,CAAC,IAAI,EAAE,iBAAiB;IAMpC,yBAAyB,EAAE,OAAO,CAAS;IAC5C,sBAAsB;IAItB,MAAM,CAAC,KAAK,EAAE,KAAK;IAMnB,0BAA0B,CAAC,IAAI,EAAE,OAAO;yCAzDnC,oBAAoB;2CAApB,oBAAoB;CAmHhC"}
1
+ {"version":3,"file":"data-browser.component.d.ts","sourceRoot":"","sources":["../../../src/lib/data-browser-component/data-browser.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAyB,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAEnF,qBAMa,oBAAqB,SAAQ,uBAAuB;IAO5C,aAAa,EAAE,aAAa;IAAE,OAAO,CAAC,MAAM;IANxD,UAAU,EAAE,OAAO,CAAQ;IAE3B,eAAe,EAAE,iBAAiB,EAAE,CAAM;IAC1C,oBAAoB,EAAE,iBAAiB,EAAE,CAAM;IAC/C,sBAAsB,EAAE,iBAAiB,EAAE,CAAM;gBAErC,aAAa,EAAE,aAAa,EAAU,MAAM,EAAE,MAAM;IAIvE,QAAQ,IAAI,IAAI;IAGV,QAAQ;IA6BP,YAAY,CAAC,IAAI,EAAE,iBAAiB;IAMpC,yBAAyB,EAAE,OAAO,CAAS;IAC5C,sBAAsB;IAItB,MAAM,CAAC,KAAK,EAAE,KAAK;IAMnB,0BAA0B,CAAC,IAAI,EAAE,OAAO;yCA5DnC,oBAAoB;2CAApB,oBAAoB;CAsHhC"}
@@ -1,3 +1,9 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
1
7
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
8
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
9
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -9,6 +15,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
15
  };
10
16
  import { Component } from '@angular/core';
11
17
  import { Metadata, RunView } from '@memberjunction/core';
18
+ import { RegisterClass } from '@memberjunction/global';
19
+ import { BaseNavigationComponent } from '@memberjunction/ng-shared';
12
20
  import * as i0 from "@angular/core";
13
21
  import * as i1 from "@memberjunction/ng-shared";
14
22
  import * as i2 from "@angular/router";
@@ -71,8 +79,9 @@ function DataBrowserComponent_div_17_Template(rf, ctx) { if (rf & 1) {
71
79
  i0.ɵɵadvance();
72
80
  i0.ɵɵconditional(ctx_r2.SelectedApplications.length === 0 && !ctx_r2.showLoader ? 2 : -1);
73
81
  } }
74
- export class DataBrowserComponent {
82
+ let DataBrowserComponent = class DataBrowserComponent extends BaseNavigationComponent {
75
83
  constructor(sharedService, router) {
84
+ super();
76
85
  this.sharedService = sharedService;
77
86
  this.router = router;
78
87
  this.showLoader = true;
@@ -90,7 +99,8 @@ export class DataBrowserComponent {
90
99
  const rv = new RunView();
91
100
  const results = yield rv.RunView({
92
101
  EntityName: 'Applications',
93
- ResultType: 'entity_object'
102
+ ResultType: 'entity_object',
103
+ OrderBy: 'Name'
94
104
  });
95
105
  if (results && results.Success) {
96
106
  this.AllApplications = results.Results;
@@ -98,8 +108,8 @@ export class DataBrowserComponent {
98
108
  const userApps = yield rv.RunView({
99
109
  EntityName: 'User Applications',
100
110
  ResultType: 'entity_object',
101
- ExtraFilter: `UserID = ${new Metadata().CurrentUser.ID}`,
102
- OrderBy: 'Sequence'
111
+ ExtraFilter: `UserID = '${new Metadata().CurrentUser.ID}'`,
112
+ OrderBy: 'Sequence, Application'
103
113
  });
104
114
  if (userApps && userApps.Success) {
105
115
  const apps = userApps.Results.map(ua => this.AllApplications.find(a => a.ID === ua.ApplicationID && ua.IsActive)).filter(a => a); // filter out null entries
@@ -138,9 +148,9 @@ export class DataBrowserComponent {
138
148
  const rv = new RunView();
139
149
  const userApps = yield rv.RunView({
140
150
  EntityName: 'User Applications',
141
- ExtraFilter: `UserID=${md.CurrentUser.ID}`,
151
+ ExtraFilter: `UserID='${md.CurrentUser.ID}'`,
142
152
  ResultType: 'entity_object',
143
- OrderBy: 'Sequence',
153
+ OrderBy: 'Sequence, Application',
144
154
  });
145
155
  // userApps.results is the current DB state, we need to now compare it to the SelectedApplications array
146
156
  // and if there are changes either update sequence values or set IsActive=false for records that are not selected anyomre. We
@@ -189,9 +199,9 @@ export class DataBrowserComponent {
189
199
  }
190
200
  });
191
201
  }
192
- }
202
+ };
193
203
  DataBrowserComponent.ɵfac = function DataBrowserComponent_Factory(t) { return new (t || DataBrowserComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router)); };
194
- DataBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBrowserComponent, selectors: [["app-data-browser"]], decls: 18, vars: 6, consts: [[1, "data-browser-container"], [1, "card-header-entity"], [1, "title-wrap"], [1, "title-wrap-inner"], [1, "breadcrumb", 3, "click"], [1, "fa-solid", "fa-house", "home-icon"], [1, "breadcrumb-separator"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumb-end"], [1, "config-button"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-gear"], ["DisplayField", "Name", "DisplayIconField", "Icon", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "main-area"], ["type", "converging-spinner", 4, "ngIf"], ["class", "card-list k-d-flex k-flex-row k-h-full k-flex-wrap", 4, "ngIf"], ["type", "converging-spinner"], [1, "card-list", "k-d-flex", "k-flex-row", "k-h-full", "k-flex-wrap"], ["class", "card-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "card-item"], [1, "card-item", 3, "click"], [1, "card-wrapper"], [1, "view-card-content", "k-cursor-pointer"], [3, "ngClass"], ["kendoCardTitle", ""], ["kendoCardSubtitle", ""]], template: function DataBrowserComponent_Template(rf, ctx) { if (rf & 1) {
204
+ DataBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBrowserComponent, selectors: [["app-data-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 6, consts: [[1, "data-browser-container"], [1, "card-header-entity"], [1, "title-wrap"], [1, "title-wrap-inner"], [1, "breadcrumb", 3, "click"], [1, "fa-solid", "fa-house", "home-icon"], [1, "breadcrumb-separator"], [1, "fa-solid", "fa-chevron-right"], [1, "breadcrumb-end"], [1, "config-button"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-gear"], ["DisplayField", "Name", "DisplayIconField", "Icon", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "main-area"], ["type", "converging-spinner", 4, "ngIf"], ["class", "card-list k-d-flex k-flex-row k-h-full k-flex-wrap", 4, "ngIf"], ["type", "converging-spinner"], [1, "card-list", "k-d-flex", "k-flex-row", "k-h-full", "k-flex-wrap"], ["class", "card-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "card-item"], [1, "card-item", 3, "click"], [1, "card-wrapper"], [1, "view-card-content", "k-cursor-pointer"], [3, "ngClass"], ["kendoCardTitle", ""], ["kendoCardSubtitle", ""]], template: function DataBrowserComponent_Template(rf, ctx) { if (rf & 1) {
195
205
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "span", 4);
196
206
  i0.ɵɵlistener("click", function DataBrowserComponent_Template_span_click_4_listener($event) { return ctx.GoHome($event); });
197
207
  i0.ɵɵelement(5, "span", 5);
@@ -221,8 +231,12 @@ DataBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBr
221
231
  i0.ɵɵadvance();
222
232
  i0.ɵɵproperty("ngIf", !ctx.showLoader);
223
233
  } }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.LoaderComponent, i5.ButtonComponent, i6.CardComponent, i6.CardBodyComponent, i6.CardTitleDirective, i6.CardSubtitleDirective, i7.RecordSelectorDialogComponent], styles: [".data-browser-container[_ngcontent-%COMP%] {\n padding: 15px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%] {\n background: #fff;\n border-radius: 10px;\n height: 200px;\n border: 3px solid transparent;\n}\n\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%]:hover {\n border: 3px solid var(--border-active);\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n\n }\n .main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%]:hover .view-card-content[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n color: var(--border-active);\n }\n .view-card-content[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 36px;\n text-align: center;\n line-height: 42px;\n font-weight: 500;\n color: var(--text-darked);\n }\n .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 18px;\n line-height: 28px;\n color: var(--text-darked);\n }\n \n.view-card-content[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] {\n position: absolute;\n top: 20px; \n left: 20px; \n font-size: 32px;\n}\n.card-list[_ngcontent-%COMP%] .card-item[_ngcontent-%COMP%] {\n position: relative; \n}\n\n .card-wrapper[_ngcontent-%COMP%] {\n height: 100%;\n border: none;\n }\n .card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center; \n align-items: center;\n }\n\n .card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\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.breadcrumb-separator[_ngcontent-%COMP%] {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.home-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n\n.config-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\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}"] });
234
+ DataBrowserComponent = __decorate([
235
+ RegisterClass(BaseNavigationComponent, 'Data')
236
+ ], DataBrowserComponent);
237
+ export { DataBrowserComponent };
224
238
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataBrowserComponent, [{
225
239
  type: Component,
226
240
  args: [{ selector: 'app-data-browser', template: "<div class=\"data-browser-container\">\n <div class=\"card-header-entity\">\n <div class=\"title-wrap\">\n <div class=\"title-wrap-inner\">\n <span class=\"breadcrumb\" (click)=\"GoHome($event)\">\n <span class=\"fa-solid fa-house home-icon\"></span>Home\n </span>\n <span class=\"breadcrumb-separator\"><span class=\"fa-solid fa-chevron-right\"></span></span>\n <span class=\"breadcrumb-end\">Applications</span>\n </div>\n </div>\n <div class=\"config-button\">\n <button kendoButton (click)=\"ShowAppSelectionDialog()\"><span class=\"fa-solid fa-gear\"></span></button>\n <mj-record-selector-dialog [AvailableRecords]=\"AllApplications\" \n [SelectedRecords]=\"SelectedApplications\" \n [UnselectedRecords]=\"UnselectedApplications\"\n [DialogVisible]=\"AppSelectionDialogVisible\"\n DisplayField=\"Name\"\n DisplayIconField=\"Icon\"\n (DialogClosed)=\"OnAppSelectionDialogClosed($event)\">\n </mj-record-selector-dialog>\n </div>\n </div>\n <div class=\"main-area\"> \n <kendo-loader *ngIf=\"showLoader\" type=\"converging-spinner\" ></kendo-loader>\n <div class=\"card-list k-d-flex k-flex-row k-h-full k-flex-wrap\" *ngIf=\"!showLoader\">\n <div class=\"card-item\" *ngFor=\"let app of SelectedApplications\" (click)=\"appItemClick(app)\">\n <kendo-card class=\"card-wrapper\">\n <kendo-card-body>\n <div class=\"view-card-content k-cursor-pointer\">\n @if (app.Icon && app.Icon.length > 0) {\n <span [ngClass]=\"app.Icon + ' icon'\"></span>\n }\n <h2 kendoCardTitle>{{ app.Name }}</h2>\n <p kendoCardSubtitle>{{ app.Description }}</p>\n </div>\n </kendo-card-body>\n </kendo-card>\n </div>\n @if (SelectedApplications.length === 0 && !showLoader) {\n <div class=\"card-item\" (click)=\"ShowAppSelectionDialog()\">\n <kendo-card class=\"card-wrapper\">\n <kendo-card-body>\n <div class=\"view-card-content k-cursor-pointer\">\n <span class=\"fa-solid fa-gear\"></span>\n <h2 kendoCardTitle>Select Apps</h2>\n <p kendoCardSubtitle>No apps selected yet, click here to add some</p>\n </div>\n </kendo-card-body>\n </kendo-card>\n </div>\n }\n </div>\n </div>\n</div>", styles: [".data-browser-container {\n padding: 15px;\n}\n.main-area .card-list .card-item {\n background: #fff;\n border-radius: 10px;\n height: 200px;\n border: 3px solid transparent;\n}\n\n.main-area .card-list .card-item:hover {\n border: 3px solid var(--border-active);\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n\n }\n .main-area .card-list .card-item:hover .view-card-content h2 {\n color: var(--border-active);\n }\n .view-card-content h2 {\n font-size: 36px;\n text-align: center;\n line-height: 42px;\n font-weight: 500;\n color: var(--text-darked);\n }\n .view-card-content p {\n text-align: center;\n font-size: 18px;\n line-height: 28px;\n color: var(--text-darked);\n }\n \n.view-card-content .icon {\n position: absolute;\n top: 20px; \n left: 20px; \n font-size: 32px;\n}\n.card-list .card-item {\n position: relative; \n}\n\n .card-wrapper {\n height: 100%;\n border: none;\n }\n .card-wrapper .k-card-body {\n display: flex;\n justify-content: center; \n align-items: center;\n }\n\n .card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: center;\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.breadcrumb-separator {\n font-size: 14px;\n display: inline;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n.home-icon {\n margin-right: 5px;\n font-size: 18px;\n vertical-align: middle;\n}\n\n.config-button {\n display: flex;\n align-items: center;\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"] }]
227
241
  }], () => [{ type: i1.SharedService }, { type: i2.Router }], null); })();
228
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataBrowserComponent, { className: "DataBrowserComponent", filePath: "src/lib/data-browser-component/data-browser.component.ts", lineNumber: 12 }); })();
242
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataBrowserComponent, { className: "DataBrowserComponent" }); })();
@@ -88,8 +88,8 @@ export class ExpansionPanelComponent {
88
88
  getFoldersForTreeNode(entityID, selectedFolderID) {
89
89
  return __awaiter(this, void 0, void 0, function* () {
90
90
  const md = new Metadata();
91
- const categoryIDFilter = selectedFolderID ? `ParentID=${selectedFolderID}` : 'ParentID IS NULL';
92
- const userViewFilter = `EntityID = ${entityID} AND ` + categoryIDFilter;
91
+ const categoryIDFilter = selectedFolderID ? `ParentID='${selectedFolderID}'` : 'ParentID IS NULL';
92
+ const userViewFilter = `EntityID = '${entityID}' AND ` + categoryIDFilter;
93
93
  const viewResults = yield this.RunView('User View Categories', userViewFilter);
94
94
  return viewResults.map((result) => {
95
95
  let treeFolder = new TreeFolder(result.EntityID, result.ID, result.Name);
@@ -104,8 +104,8 @@ export class ExpansionPanelComponent {
104
104
  getUserViewsForTreeNode(entityID, selectedFolderID) {
105
105
  return __awaiter(this, void 0, void 0, function* () {
106
106
  const md = new Metadata();
107
- const categoryIDFilter = selectedFolderID ? `CategoryID=${selectedFolderID}` : 'CategoryID IS NULL';
108
- const userViewFilter = `UserID = ${md.CurrentUser.ID} AND EntityID = ${entityID} AND ` + categoryIDFilter;
107
+ const categoryIDFilter = selectedFolderID ? `CategoryID='${selectedFolderID}'` : 'CategoryID IS NULL';
108
+ const userViewFilter = `UserID = '${md.CurrentUser.ID}' AND EntityID = '${entityID}' AND ` + categoryIDFilter;
109
109
  const viewResults = yield this.RunView('User Views', userViewFilter);
110
110
  return viewResults.map((result) => {
111
111
  let treeItem = new TreeItem(result, ItemType.UserView);
@@ -171,4 +171,4 @@ ExpansionPanelComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Exp
171
171
  }], () => [{ type: i1.SharedService }, { type: i2.Router }], { items: [{
172
172
  type: Input
173
173
  }] }); })();
174
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExpansionPanelComponent, { className: "ExpansionPanelComponent", filePath: "src/lib/expansion-panel-component/expansion-panel-component.ts", lineNumber: 13 }); })();
174
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExpansionPanelComponent, { className: "ExpansionPanelComponent" }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.component.d.ts","sourceRoot":"","sources":["../../../src/lib/favorites/favorites.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;;AAEnE,qBAKa,kBAAkB;IAIjB,OAAO,CAAC,MAAM;IAHnB,SAAS,EAAE,kBAAkB,EAAE,CAAM;IACrC,WAAW,EAAE,MAAM,CAAM;gBAEZ,MAAM,EAAE,MAAM;IAE5B,QAAQ;IA6Bd,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAgCzC,uBAAuB,CAAC,GAAG,EAAE,GAAG;yCAnErB,kBAAkB;2CAAlB,kBAAkB;CA6E9B"}
1
+ {"version":3,"file":"favorites.component.d.ts","sourceRoot":"","sources":["../../../src/lib/favorites/favorites.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;;AAGnE,qBAKa,kBAAkB;IAIjB,OAAO,CAAC,MAAM;IAHnB,SAAS,EAAE,kBAAkB,EAAE,CAAM;IACrC,WAAW,EAAE,MAAM,CAAM;gBAEZ,MAAM,EAAE,MAAM;IAE5B,QAAQ;IAsCd,iBAAiB,CAAC,GAAG,EAAE,kBAAkB;IAiCzC,uBAAuB,CAAC,GAAG,EAAE,GAAG;yCA7ErB,kBAAkB;2CAAlB,kBAAkB;CAuF9B"}