@memberjunction/ng-explorer-core 2.122.2 → 2.123.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 (25) hide show
  1. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +83 -18
  2. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  3. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +297 -93
  4. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  5. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +12 -0
  6. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  7. package/dist/lib/resource-wrappers/dashboard-resource.component.js +91 -5
  8. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  9. package/dist/lib/resource-wrappers/view-resource.component.d.ts +57 -3
  10. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  11. package/dist/lib/resource-wrappers/view-resource.component.js +247 -30
  12. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  13. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +5 -0
  14. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  15. package/dist/lib/shell/components/tabs/tab-container.component.js +65 -31
  16. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  17. package/dist/lib/shell/shell.component.d.ts +4 -0
  18. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  19. package/dist/lib/shell/shell.component.js +25 -9
  20. package/dist/lib/shell/shell.component.js.map +1 -1
  21. package/dist/module.d.ts +2 -1
  22. package/dist/module.d.ts.map +1 -1
  23. package/dist/module.js +7 -3
  24. package/dist/module.js.map +1 -1
  25. package/package.json +36 -34
@@ -14,6 +14,37 @@ import { DataExplorerDashboardComponent } from '@memberjunction/ng-dashboards';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "@memberjunction/ng-shared";
16
16
  const _c0 = ["container"];
17
+ function DashboardResource_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "details", 7)(1, "summary");
19
+ i0.ɵɵtext(2, "Technical Details");
20
+ i0.ɵɵelementEnd();
21
+ i0.ɵɵelementStart(3, "pre");
22
+ i0.ɵɵtext(4);
23
+ i0.ɵɵelementEnd()();
24
+ } if (rf & 2) {
25
+ const ctx_r0 = i0.ɵɵnextContext(2);
26
+ i0.ɵɵadvance(4);
27
+ i0.ɵɵtextInterpolate(ctx_r0.errorDetails);
28
+ } }
29
+ function DashboardResource_Conditional_2_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "div", 2)(1, "div", 3);
31
+ i0.ɵɵelement(2, "i", 4);
32
+ i0.ɵɵelementEnd();
33
+ i0.ɵɵelementStart(3, "h2", 5);
34
+ i0.ɵɵtext(4, "Unable to Load Dashboard");
35
+ i0.ɵɵelementEnd();
36
+ i0.ɵɵelementStart(5, "p", 6);
37
+ i0.ɵɵtext(6);
38
+ i0.ɵɵelementEnd();
39
+ i0.ɵɵtemplate(7, DashboardResource_Conditional_2_Conditional_7_Template, 5, 1, "details", 7);
40
+ i0.ɵɵelementEnd();
41
+ } if (rf & 2) {
42
+ const ctx_r0 = i0.ɵɵnextContext();
43
+ i0.ɵɵadvance(6);
44
+ i0.ɵɵtextInterpolate(ctx_r0.errorMessage);
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵconditional(ctx_r0.errorDetails ? 7 : -1);
47
+ } }
17
48
  export function LoadDashboardResource() {
18
49
  }
19
50
  /**
@@ -27,6 +58,32 @@ let DashboardResource = class DashboardResource extends BaseResourceComponent {
27
58
  componentRef = null;
28
59
  dataLoaded = false;
29
60
  containerElement;
61
+ /** Error message to display when dashboard fails to load */
62
+ errorMessage = null;
63
+ /** Technical error details (shown in expandable section) */
64
+ errorDetails = null;
65
+ /**
66
+ * Sets the error state with a user-friendly message and optional technical details
67
+ */
68
+ setError(message, error) {
69
+ this.errorMessage = message;
70
+ if (error instanceof Error) {
71
+ this.errorDetails = error.message;
72
+ if (error.stack) {
73
+ this.errorDetails += '\n\nStack trace:\n' + error.stack;
74
+ }
75
+ }
76
+ else if (error) {
77
+ this.errorDetails = String(error);
78
+ }
79
+ }
80
+ /**
81
+ * Clears any previous error state
82
+ */
83
+ clearError() {
84
+ this.errorMessage = null;
85
+ this.errorDetails = null;
86
+ }
30
87
  constructor(viewContainer, navigationService) {
31
88
  super();
32
89
  this.viewContainer = viewContainer;
@@ -53,6 +110,8 @@ let DashboardResource = class DashboardResource extends BaseResourceComponent {
53
110
  * Routes between code-based dashboards (registered classes) and config-based dashboards
54
111
  */
55
112
  async loadDashboard() {
113
+ // Clear any previous error state
114
+ this.clearError();
56
115
  const data = this.Data;
57
116
  console.log('[DashboardResource] loadDashboard called with:', data);
58
117
  if (!data?.ResourceRecordID) {
@@ -89,6 +148,7 @@ let DashboardResource = class DashboardResource extends BaseResourceComponent {
89
148
  }
90
149
  catch (error) {
91
150
  console.error('Error loading dashboard:', error);
151
+ this.setError('The dashboard could not be loaded. This may be due to a missing component or configuration issue.', error);
92
152
  this.NotifyLoadComplete();
93
153
  }
94
154
  }
@@ -140,6 +200,7 @@ let DashboardResource = class DashboardResource extends BaseResourceComponent {
140
200
  }
141
201
  catch (error) {
142
202
  console.error('Error loading Data Explorer:', error);
203
+ this.setError('The Data Explorer could not be loaded.', error);
143
204
  this.NotifyLoadComplete();
144
205
  }
145
206
  }
@@ -202,6 +263,7 @@ let DashboardResource = class DashboardResource extends BaseResourceComponent {
202
263
  }
203
264
  catch (error) {
204
265
  console.error('Error loading code-based dashboard:', error);
266
+ this.setError(`The dashboard "${dashboard.Name}" could not be loaded. The dashboard class may not be registered or may have failed to initialize.`, error);
205
267
  this.NotifyLoadComplete();
206
268
  }
207
269
  }
@@ -264,6 +326,7 @@ let DashboardResource = class DashboardResource extends BaseResourceComponent {
264
326
  }
265
327
  catch (error) {
266
328
  console.error('Error loading config-based dashboard:', error);
329
+ this.setError(`The dashboard "${dashboard.Name}" could not be loaded. There may be an issue with the dashboard configuration.`, error);
267
330
  this.NotifyLoadComplete();
268
331
  }
269
332
  }
@@ -301,9 +364,14 @@ let DashboardResource = class DashboardResource extends BaseResourceComponent {
301
364
  } if (rf & 2) {
302
365
  let _t;
303
366
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerElement = _t.first);
304
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 0, consts: [["container", ""], [1, "dashboard-resource-container"]], template: function DashboardResource_Template(rf, ctx) { if (rf & 1) {
305
- i0.ɵɵelement(0, "div", 1, 0);
306
- } }, styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .dashboard-resource-container[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: auto;\n }"] });
367
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [["container", ""], [1, "dashboard-resource-container"], [1, "error-state"], [1, "error-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-title"], [1, "error-message"], [1, "error-details"]], template: function DashboardResource_Template(rf, ctx) { if (rf & 1) {
368
+ i0.ɵɵelementStart(0, "div", 1, 0);
369
+ i0.ɵɵtemplate(2, DashboardResource_Conditional_2_Template, 8, 2, "div", 2);
370
+ i0.ɵɵelementEnd();
371
+ } if (rf & 2) {
372
+ i0.ɵɵadvance(2);
373
+ i0.ɵɵconditional(ctx.errorMessage ? 2 : -1);
374
+ } }, styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .dashboard-resource-container[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: auto;\n }\n .error-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px;\n text-align: center;\n color: #424242;\n }\n .error-icon[_ngcontent-%COMP%] {\n font-size: 64px;\n color: #f44336;\n margin-bottom: 24px;\n opacity: 0.8;\n }\n .error-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 500;\n margin: 0 0 12px 0;\n color: #212121;\n }\n .error-message[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #616161;\n margin: 0 0 24px 0;\n max-width: 500px;\n line-height: 1.5;\n }\n .error-details[_ngcontent-%COMP%] {\n background: #f5f5f5;\n border-radius: 8px;\n padding: 12px 16px;\n max-width: 600px;\n text-align: left;\n font-size: 13px;\n }\n .error-details[_ngcontent-%COMP%] summary[_ngcontent-%COMP%] {\n cursor: pointer;\n font-weight: 500;\n color: #757575;\n margin-bottom: 8px;\n }\n .error-details[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-word;\n color: #d32f2f;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 12px;\n }"] });
307
375
  };
308
376
  DashboardResource = __decorate([
309
377
  RegisterClass(BaseResourceComponent, 'DashboardResource')
@@ -311,10 +379,28 @@ DashboardResource = __decorate([
311
379
  export { DashboardResource };
312
380
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardResource, [{
313
381
  type: Component,
314
- args: [{ selector: 'mj-dashboard-resource', template: `<div #container class="dashboard-resource-container"></div>`, styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .dashboard-resource-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: auto;\n }\n "] }]
382
+ args: [{ selector: 'mj-dashboard-resource', template: `
383
+ <div #container class="dashboard-resource-container">
384
+ @if (errorMessage) {
385
+ <div class="error-state">
386
+ <div class="error-icon">
387
+ <i class="fa-solid fa-triangle-exclamation"></i>
388
+ </div>
389
+ <h2 class="error-title">Unable to Load Dashboard</h2>
390
+ <p class="error-message">{{ errorMessage }}</p>
391
+ @if (errorDetails) {
392
+ <details class="error-details">
393
+ <summary>Technical Details</summary>
394
+ <pre>{{ errorDetails }}</pre>
395
+ </details>
396
+ }
397
+ </div>
398
+ }
399
+ </div>
400
+ `, styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .dashboard-resource-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: auto;\n }\n .error-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 40px;\n text-align: center;\n color: #424242;\n }\n .error-icon {\n font-size: 64px;\n color: #f44336;\n margin-bottom: 24px;\n opacity: 0.8;\n }\n .error-title {\n font-size: 24px;\n font-weight: 500;\n margin: 0 0 12px 0;\n color: #212121;\n }\n .error-message {\n font-size: 16px;\n color: #616161;\n margin: 0 0 24px 0;\n max-width: 500px;\n line-height: 1.5;\n }\n .error-details {\n background: #f5f5f5;\n border-radius: 8px;\n padding: 12px 16px;\n max-width: 600px;\n text-align: left;\n font-size: 13px;\n }\n .error-details summary {\n cursor: pointer;\n font-weight: 500;\n color: #757575;\n margin-bottom: 8px;\n }\n .error-details pre {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-word;\n color: #d32f2f;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 12px;\n }\n "] }]
315
401
  }], () => [{ type: i0.ViewContainerRef }, { type: i1.NavigationService }], { containerElement: [{
316
402
  type: ViewChild,
317
403
  args: ['container', { static: true }]
318
404
  }] }); })();
319
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardResource, { className: "DashboardResource", filePath: "src/lib/resource-wrappers/dashboard-resource.component.ts", lineNumber: 39 }); })();
405
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardResource, { className: "DashboardResource", filePath: "src/lib/resource-wrappers/dashboard-resource.component.ts", lineNumber: 108 }); })();
320
406
  //# sourceMappingURL=dashboard-resource.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-resource.component.js","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/dashboard-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-resource.component.js","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/dashboard-resource.component.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,64 @@
1
- import { BaseResourceComponent } from '@memberjunction/ng-shared';
2
- import { ResourceData } from '@memberjunction/core-entities';
1
+ import { ElementRef, ChangeDetectorRef } from '@angular/core';
2
+ import { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';
3
+ import { ResourceData, UserViewEntityExtended } from '@memberjunction/core-entities';
4
+ import { EntityInfo } from '@memberjunction/core';
5
+ import { RecordOpenedEvent, ViewGridStateConfig } from '@memberjunction/ng-entity-viewer';
3
6
  import * as i0 from "@angular/core";
4
7
  export declare function LoadViewResource(): void;
8
+ /**
9
+ * UserViewResource - Resource wrapper for displaying User Views in tabs
10
+ *
11
+ * This component wraps the EntityViewerComponent to display view data.
12
+ * It loads the view configuration and entity, then renders the data grid/cards.
13
+ *
14
+ * Key features:
15
+ * - Loads view by ID from ResourceRecordID
16
+ * - Supports dynamic views by entity name + extra filter
17
+ * - Applies view's WhereClause, GridState, and SortState
18
+ * - Opens records in new tabs via NavigationService
19
+ */
5
20
  export declare class UserViewResource extends BaseResourceComponent {
21
+ private navigationService;
22
+ private cdr;
23
+ containerElement: ElementRef<HTMLDivElement>;
24
+ isLoading: boolean;
25
+ errorMessage: string | null;
26
+ entityInfo: EntityInfo | null;
27
+ viewEntity: UserViewEntityExtended | null;
28
+ gridState: ViewGridStateConfig | null;
29
+ private dataLoaded;
30
+ private metadata;
31
+ constructor(navigationService: NavigationService, cdr: ChangeDetectorRef);
32
+ set Data(value: ResourceData);
33
+ get Data(): ResourceData;
34
+ /**
35
+ * Load the view and entity based on ResourceData
36
+ */
37
+ private loadView;
38
+ /**
39
+ * Load a saved view by its ID
40
+ */
41
+ private loadViewById;
42
+ /**
43
+ * Load a dynamic view (no saved view, just entity + filter)
44
+ */
45
+ private loadDynamicView;
46
+ /**
47
+ * Handle record opened event - open in new tab
48
+ */
49
+ onRecordOpened(event: RecordOpenedEvent): void;
50
+ /**
51
+ * Handle data loaded event from entity-viewer
52
+ */
53
+ onDataLoaded(): void;
54
+ /**
55
+ * Get display name for the resource tab
56
+ */
6
57
  GetResourceDisplayName(data: ResourceData): Promise<string>;
7
- GetResourceIconClass(data: ResourceData): Promise<string>;
58
+ /**
59
+ * Get icon class for the resource tab
60
+ */
61
+ GetResourceIconClass(_data: ResourceData): Promise<string>;
8
62
  static ɵfac: i0.ɵɵFactoryDeclaration<UserViewResource, never>;
9
63
  static ɵcmp: i0.ɵɵComponentDeclaration<UserViewResource, "mj-userview-resource", never, {}, {}, never, never, false, never>;
10
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"view-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;;AAI7D,wBAAgB,gBAAgB,SAE/B;AAED,qBAUa,gBAAiB,SAAQ,qBAAqB;IACjD,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3D,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAftD,gBAAgB;2CAAhB,gBAAgB;CAkB5B"}
1
+ {"version":3,"file":"view-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAY,MAAM,+BAA+B,CAAC;AAE/F,OAAO,EAA0B,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;;AAE1F,wBAAgB,gBAAgB,SAE/B;AAED;;;;;;;;;;;GAWG;AACH,qBAyFa,gBAAiB,SAAQ,qBAAqB;IAanD,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IAb2B,gBAAgB,EAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAEjF,SAAS,EAAE,OAAO,CAAS;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAQ;IACrC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IACjD,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAQ;IAEpD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAkB;gBAGtB,iBAAiB,EAAE,iBAAiB,EACpC,GAAG,EAAE,iBAAiB;IAKlC,IAAa,IAAI,CAAC,KAAK,EAAE,YAAY,EAMpC;IAED,IAAa,IAAI,IAAI,YAAY,CAEhC;IAED;;OAEG;YACW,QAAQ;IA2CtB;;OAEG;YACW,YAAY;IAmC1B;;OAEG;YACW,eAAe;IAiB7B;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAMrD;;OAEG;IACI,YAAY,IAAI,IAAI;IAI3B;;OAEG;IACY,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1E;;OAEG;IACY,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCA3KhE,gBAAgB;2CAAhB,gBAAgB;CA8K5B"}
@@ -4,41 +4,236 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
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
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { Component } from '@angular/core';
7
+ import { Component, ViewChild } from '@angular/core';
8
8
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
9
+ import { ViewInfo } from '@memberjunction/core-entities';
9
10
  import { RegisterClass } from '@memberjunction/global';
10
11
  import { CompositeKey, Metadata } from '@memberjunction/core';
11
12
  import * as i0 from "@angular/core";
12
- import * as i1 from "../single-view/single-view.component";
13
+ import * as i1 from "@memberjunction/ng-shared";
14
+ import * as i2 from "@memberjunction/ng-shared-generic";
15
+ import * as i3 from "@memberjunction/ng-entity-viewer";
16
+ const _c0 = ["container"];
17
+ function UserViewResource_Conditional_2_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "div", 2);
19
+ i0.ɵɵelement(1, "mj-loading", 4);
20
+ i0.ɵɵelementEnd();
21
+ } }
22
+ function UserViewResource_Conditional_3_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "div", 3);
24
+ i0.ɵɵelement(1, "i", 5);
25
+ i0.ɵɵelementStart(2, "p");
26
+ i0.ɵɵtext(3);
27
+ i0.ɵɵelementEnd()();
28
+ } if (rf & 2) {
29
+ const ctx_r0 = i0.ɵɵnextContext();
30
+ i0.ɵɵadvance(3);
31
+ i0.ɵɵtextInterpolate(ctx_r0.errorMessage);
32
+ } }
33
+ function UserViewResource_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "p", 8);
35
+ i0.ɵɵtext(1);
36
+ i0.ɵɵelementEnd();
37
+ } if (rf & 2) {
38
+ const ctx_r0 = i0.ɵɵnextContext(2);
39
+ i0.ɵɵadvance();
40
+ i0.ɵɵtextInterpolate(ctx_r0.viewEntity.Description);
41
+ } }
42
+ function UserViewResource_Conditional_4_Template(rf, ctx) { if (rf & 1) {
43
+ const _r2 = i0.ɵɵgetCurrentView();
44
+ i0.ɵɵelementStart(0, "div", 6)(1, "h2", 7);
45
+ i0.ɵɵtext(2);
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵtemplate(3, UserViewResource_Conditional_4_Conditional_3_Template, 2, 1, "p", 8);
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵelementStart(4, "mj-entity-viewer", 9);
50
+ i0.ɵɵlistener("recordOpened", function UserViewResource_Conditional_4_Template_mj_entity_viewer_recordOpened_4_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onRecordOpened($event)); })("dataLoaded", function UserViewResource_Conditional_4_Template_mj_entity_viewer_dataLoaded_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onDataLoaded()); });
51
+ i0.ɵɵelementEnd();
52
+ } if (rf & 2) {
53
+ const ctx_r0 = i0.ɵɵnextContext();
54
+ i0.ɵɵadvance(2);
55
+ i0.ɵɵtextInterpolate((ctx_r0.viewEntity == null ? null : ctx_r0.viewEntity.Name) || ctx_r0.entityInfo.Name);
56
+ i0.ɵɵadvance();
57
+ i0.ɵɵconditional((ctx_r0.viewEntity == null ? null : ctx_r0.viewEntity.Description) ? 3 : -1);
58
+ i0.ɵɵadvance();
59
+ i0.ɵɵproperty("entity", ctx_r0.entityInfo)("viewEntity", ctx_r0.viewEntity)("gridState", ctx_r0.gridState);
60
+ } }
13
61
  export function LoadViewResource() {
14
- const test = new UserViewResource(); // this looks really dumb. Thing is, in production builds, tree shaking causes the class below to not be included in the bundle. This is a hack to force it to be included.
62
+ // Force class to be included in production builds (tree shaking workaround)
15
63
  }
64
+ /**
65
+ * UserViewResource - Resource wrapper for displaying User Views in tabs
66
+ *
67
+ * This component wraps the EntityViewerComponent to display view data.
68
+ * It loads the view configuration and entity, then renders the data grid/cards.
69
+ *
70
+ * Key features:
71
+ * - Loads view by ID from ResourceRecordID
72
+ * - Supports dynamic views by entity name + extra filter
73
+ * - Applies view's WhereClause, GridState, and SortState
74
+ * - Opens records in new tabs via NavigationService
75
+ */
16
76
  let UserViewResource = class UserViewResource extends BaseResourceComponent {
77
+ navigationService;
78
+ cdr;
79
+ containerElement;
80
+ isLoading = false;
81
+ errorMessage = null;
82
+ entityInfo = null;
83
+ viewEntity = null;
84
+ gridState = null;
85
+ dataLoaded = false;
86
+ metadata = new Metadata();
87
+ constructor(navigationService, cdr) {
88
+ super();
89
+ this.navigationService = navigationService;
90
+ this.cdr = cdr;
91
+ }
92
+ set Data(value) {
93
+ super.Data = value;
94
+ if (!this.dataLoaded) {
95
+ this.dataLoaded = true;
96
+ this.loadView();
97
+ }
98
+ }
99
+ get Data() {
100
+ return super.Data;
101
+ }
102
+ /**
103
+ * Load the view and entity based on ResourceData
104
+ */
105
+ async loadView() {
106
+ const data = this.Data;
107
+ if (!data) {
108
+ this.NotifyLoadComplete();
109
+ return;
110
+ }
111
+ this.isLoading = true;
112
+ this.errorMessage = null;
113
+ this.NotifyLoadStarted();
114
+ this.cdr.detectChanges();
115
+ try {
116
+ // Case 1: Load view by ID
117
+ if (data.ResourceRecordID) {
118
+ await this.loadViewById(data.ResourceRecordID);
119
+ }
120
+ // Case 2: Load dynamic view by entity name
121
+ else if (data.Configuration?.Entity) {
122
+ await this.loadDynamicView(data.Configuration.Entity, data.Configuration.ExtraFilter);
123
+ }
124
+ else {
125
+ this.errorMessage = 'No view ID or entity specified';
126
+ }
127
+ }
128
+ catch (error) {
129
+ console.error('Error loading view:', error);
130
+ this.errorMessage = error instanceof Error ? error.message : 'Failed to load view';
131
+ }
132
+ finally {
133
+ this.isLoading = false;
134
+ this.cdr.detectChanges();
135
+ // If there was an error, notify load complete now
136
+ if (this.errorMessage) {
137
+ this.NotifyLoadComplete();
138
+ }
139
+ // Otherwise, wait for dataLoaded event from entity-viewer
140
+ }
141
+ }
142
+ /**
143
+ * Load a saved view by its ID
144
+ */
145
+ async loadViewById(viewId) {
146
+ // Load the view entity
147
+ const view = await ViewInfo.GetViewEntity(viewId);
148
+ if (!view) {
149
+ throw new Error(`View with ID ${viewId} not found`);
150
+ }
151
+ this.viewEntity = view;
152
+ // Check permissions
153
+ if (!this.viewEntity.UserCanView) {
154
+ throw new Error('You do not have permission to view this view');
155
+ }
156
+ // Load the entity info
157
+ const entity = this.metadata.Entities.find(e => e.ID === this.viewEntity.EntityID);
158
+ if (!entity) {
159
+ throw new Error(`Entity for view not found`);
160
+ }
161
+ this.entityInfo = entity;
162
+ // Parse grid state if available
163
+ if (this.viewEntity.GridState) {
164
+ try {
165
+ this.gridState = JSON.parse(this.viewEntity.GridState);
166
+ }
167
+ catch (e) {
168
+ console.warn('Failed to parse GridState:', e);
169
+ this.gridState = null;
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * Load a dynamic view (no saved view, just entity + filter)
175
+ */
176
+ async loadDynamicView(entityName, _extraFilter) {
177
+ const entity = this.metadata.Entities.find(e => e.Name.trim().toLowerCase() === entityName.trim().toLowerCase());
178
+ if (!entity) {
179
+ throw new Error(`Entity '${entityName}' not found`);
180
+ }
181
+ this.entityInfo = entity;
182
+ this.viewEntity = null;
183
+ this.gridState = null;
184
+ // For dynamic views, we could create a synthetic viewEntity with just the WhereClause
185
+ // but for now, we'll rely on the entity-viewer's default behavior
186
+ }
187
+ /**
188
+ * Handle record opened event - open in new tab
189
+ */
190
+ onRecordOpened(event) {
191
+ if (event && event.entity && event.compositeKey) {
192
+ this.navigationService.OpenEntityRecord(event.entity.Name, event.compositeKey);
193
+ }
194
+ }
195
+ /**
196
+ * Handle data loaded event from entity-viewer
197
+ */
198
+ onDataLoaded() {
199
+ this.NotifyLoadComplete();
200
+ }
201
+ /**
202
+ * Get display name for the resource tab
203
+ */
17
204
  async GetResourceDisplayName(data) {
18
- const md = new Metadata();
19
205
  if (data.ResourceRecordID) {
20
- let compositeKey = new CompositeKey([{ FieldName: "ID", Value: data.ResourceRecordID }]);
21
- const name = await md.GetEntityRecordName('User Views', compositeKey);
206
+ const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: data.ResourceRecordID }]);
207
+ const name = await this.metadata.GetEntityRecordName('User Views', compositeKey);
22
208
  return name ? name : `View: ${data.ResourceRecordID}`;
23
209
  }
24
- else if (data.Configuration?.Entity && data.Configuration?.Entity.length > 0) {
25
- return `${data.Configuration?.Entity} [Dynamic${data.Configuration.ExtraFilter ? ' - Filtered' : ' - All'}]`;
26
- }
27
- else {
28
- return 'User Views [Error]';
210
+ else if (data.Configuration?.Entity) {
211
+ const entityName = data.Configuration.Entity;
212
+ const hasFilter = data.Configuration.ExtraFilter;
213
+ return `${entityName} [Dynamic${hasFilter ? ' - Filtered' : ' - All'}]`;
29
214
  }
215
+ return 'User Views [Error]';
30
216
  }
31
- async GetResourceIconClass(data) {
32
- return '';
217
+ /**
218
+ * Get icon class for the resource tab
219
+ */
220
+ async GetResourceIconClass(_data) {
221
+ return 'fa-solid fa-table-list';
33
222
  }
34
- static ɵfac = /*@__PURE__*/ (() => { let ɵUserViewResource_BaseFactory; return function UserViewResource_Factory(t) { return (ɵUserViewResource_BaseFactory || (ɵUserViewResource_BaseFactory = i0.ɵɵgetInheritedFactory(UserViewResource)))(t || UserViewResource); }; })();
35
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserViewResource, selectors: [["mj-userview-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 4, consts: [[3, "loadComplete", "viewId", "viewName", "entityName", "extraFilter"]], template: function UserViewResource_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelementStart(0, "mj-single-view", 0);
37
- i0.ɵɵlistener("loadComplete", function UserViewResource_Template_mj_single_view_loadComplete_0_listener() { return ctx.NotifyLoadComplete(); });
223
+ static ɵfac = function UserViewResource_Factory(t) { return new (t || UserViewResource)(i0.ɵɵdirectiveInject(i1.NavigationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
224
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserViewResource, selectors: [["mj-userview-resource"]], viewQuery: function UserViewResource_Query(rf, ctx) { if (rf & 1) {
225
+ i0.ɵɵviewQuery(_c0, 7);
226
+ } if (rf & 2) {
227
+ let _t;
228
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerElement = _t.first);
229
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 1, consts: [["container", ""], [1, "view-resource-container"], [1, "view-loading-state"], [1, "view-error-state"], ["text", "Loading view...", "size", "large"], [1, "fas", "fa-exclamation-triangle"], [1, "view-header"], [1, "view-title"], [1, "view-description"], [3, "recordOpened", "dataLoaded", "entity", "viewEntity", "gridState"]], template: function UserViewResource_Template(rf, ctx) { if (rf & 1) {
230
+ i0.ɵɵelementStart(0, "div", 1, 0);
231
+ i0.ɵɵtemplate(2, UserViewResource_Conditional_2_Template, 2, 0, "div", 2)(3, UserViewResource_Conditional_3_Template, 4, 1, "div", 3)(4, UserViewResource_Conditional_4_Template, 5, 5);
38
232
  i0.ɵɵelementEnd();
39
233
  } if (rf & 2) {
40
- i0.ɵɵproperty("viewId", ctx.Data.ResourceRecordID)("viewName", ctx.Data.Configuration == null ? null : ctx.Data.Configuration.ViewName)("entityName", ctx.Data.Configuration == null ? null : ctx.Data.Configuration.Entity)("extraFilter", ctx.Data.Configuration == null ? null : ctx.Data.Configuration.ExtraFilter);
41
- } }, dependencies: [i1.SingleViewComponent], encapsulation: 2 });
234
+ i0.ɵɵadvance(2);
235
+ i0.ɵɵconditional(ctx.isLoading ? 2 : ctx.errorMessage ? 3 : ctx.entityInfo ? 4 : -1);
236
+ } }, dependencies: [i2.LoadingComponent, i3.EntityViewerComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .view-resource-container[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .view-header[_ngcontent-%COMP%] {\n padding: 16px 20px 8px 20px;\n flex-shrink: 0;\n }\n .view-title[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--text-primary, #1a1a1a);\n }\n .view-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--text-secondary, #666);\n }\n .view-loading-state[_ngcontent-%COMP%], \n .view-error-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 16px;\n }\n .view-error-state[_ngcontent-%COMP%] {\n color: var(--danger-color, #dc3545);\n }\n .view-error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2rem;\n }\n .view-error-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n }\n mj-entity-viewer[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n }"] });
42
237
  };
43
238
  UserViewResource = __decorate([
44
239
  RegisterClass(BaseResourceComponent, 'ViewResource')
@@ -46,15 +241,37 @@ UserViewResource = __decorate([
46
241
  export { UserViewResource };
47
242
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewResource, [{
48
243
  type: Component,
49
- args: [{
50
- selector: 'mj-userview-resource',
51
- template: `<mj-single-view [viewId]="Data.ResourceRecordID"
52
- [viewName]="Data.Configuration?.ViewName"
53
- [entityName]="Data.Configuration?.Entity"
54
- [extraFilter]="Data.Configuration?.ExtraFilter"
55
- (loadComplete)="NotifyLoadComplete()">
56
- </mj-single-view>`
57
- }]
58
- }], null, null); })();
59
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewResource, { className: "UserViewResource", filePath: "src/lib/resource-wrappers/view-resource.component.ts", lineNumber: 21 }); })();
244
+ args: [{ selector: 'mj-userview-resource', template: `
245
+ <div #container class="view-resource-container">
246
+ @if (isLoading) {
247
+ <div class="view-loading-state">
248
+ <mj-loading text="Loading view..." size="large"></mj-loading>
249
+ </div>
250
+ } @else if (errorMessage) {
251
+ <div class="view-error-state">
252
+ <i class="fas fa-exclamation-triangle"></i>
253
+ <p>{{ errorMessage }}</p>
254
+ </div>
255
+ } @else if (entityInfo) {
256
+ <div class="view-header">
257
+ <h2 class="view-title">{{ viewEntity?.Name || entityInfo.Name }}</h2>
258
+ @if (viewEntity?.Description) {
259
+ <p class="view-description">{{ viewEntity!.Description }}</p>
260
+ }
261
+ </div>
262
+ <mj-entity-viewer
263
+ [entity]="entityInfo"
264
+ [viewEntity]="viewEntity"
265
+ [gridState]="gridState"
266
+ (recordOpened)="onRecordOpened($any($event))"
267
+ (dataLoaded)="onDataLoaded()">
268
+ </mj-entity-viewer>
269
+ }
270
+ </div>
271
+ `, styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .view-resource-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .view-header {\n padding: 16px 20px 8px 20px;\n flex-shrink: 0;\n }\n .view-title {\n margin: 0 0 4px 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--text-primary, #1a1a1a);\n }\n .view-description {\n margin: 0;\n font-size: 0.875rem;\n color: var(--text-secondary, #666);\n }\n .view-loading-state,\n .view-error-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 16px;\n }\n .view-error-state {\n color: var(--danger-color, #dc3545);\n }\n .view-error-state i {\n font-size: 2rem;\n }\n .view-error-state p {\n margin: 0;\n font-size: 1rem;\n }\n mj-entity-viewer {\n flex: 1;\n min-height: 0;\n }\n "] }]
272
+ }], () => [{ type: i1.NavigationService }, { type: i0.ChangeDetectorRef }], { containerElement: [{
273
+ type: ViewChild,
274
+ args: ['container', { static: true }]
275
+ }] }); })();
276
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewResource, { className: "UserViewResource", filePath: "src/lib/resource-wrappers/view-resource.component.ts", lineNumber: 113 }); })();
60
277
  //# sourceMappingURL=view-resource.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-resource.component.js","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;;AAE9D,MAAM,UAAU,gBAAgB;IAC5B,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC,CAAC,2KAA2K;AACpN,CAAC;AAYM,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,qBAAqB;IACvD,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC3C,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,YAAY,GAAiB,IAAI,YAAY,CAAC,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAC,CAAC,CAAC,CAAC;YACrG,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1D,CAAC;aACI,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3E,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC;QACjH,CAAC;aACG,CAAC;YACD,OAAO,oBAAoB,CAAC;QAChC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,oBAAoB,CAAC,IAAkB;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;6NAjBQ,gBAAgB,SAAhB,gBAAgB;6DAAhB,gBAAgB;YAPd,yCAIuD;YAAtC,mHAAgB,wBAAoB,IAAC;YACrD,iBAAiB;;YAFD,AADA,AADA,AADD,kDAAgC,qFACU,qFACA,2FACM;;;AAIlE,gBAAgB;IAV5B,aAAa,CAAC,qBAAqB,EAAE,cAAc,CAAC;GAUxC,gBAAgB,CAkB5B;;iFAlBY,gBAAgB;cAT5B,SAAS;eAAC;gBACP,QAAQ,EAAE,sBAAsB;gBAChC,QAAQ,EAAE;;;;;kCAKoB;aACjC;;kFACY,gBAAgB"}
1
+ {"version":3,"file":"view-resource.component.js","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,11 @@ export declare class TabContainerComponent implements OnInit, OnDestroy, AfterVi
95
95
  * Determine resource type from route
96
96
  */
97
97
  private getResourceTypeFromRoute;
98
+ /**
99
+ * Count the number of component nodes in a layout tree.
100
+ * Used to validate that saved layout matches the tabs array before restoring.
101
+ */
102
+ private countLayoutComponents;
98
103
  /**
99
104
  * Cleanup a tab's component
100
105
  * Detaches from DOM but keeps in cache for potential reuse