@memberjunction/ng-explorer-core 4.0.0 → 4.2.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 (142) hide show
  1. package/README.md +117 -726
  2. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  3. package/dist/lib/resource-wrappers/record-resource.component.js +11 -29
  4. package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
  5. package/dist/lib/shell/components/header/app-nav.component.d.ts +71 -14
  6. package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
  7. package/dist/lib/shell/components/header/app-nav.component.js +195 -54
  8. package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
  9. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  10. package/dist/lib/shell/components/tabs/component-cache-manager.js +0 -6
  11. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  12. package/dist/lib/shell/shell.component.d.ts +5 -1
  13. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  14. package/dist/lib/shell/shell.component.js +28 -17
  15. package/dist/lib/shell/shell.component.js.map +1 -1
  16. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +1 -1
  17. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +1 -1
  18. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +1 -1
  19. package/dist/lib/single-record/single-record.component.d.ts +9 -0
  20. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  21. package/dist/lib/single-record/single-record.component.js +43 -2
  22. package/dist/lib/single-record/single-record.component.js.map +1 -1
  23. package/dist/lib/user-menu/base-user-menu.d.ts.map +1 -1
  24. package/dist/lib/user-menu/base-user-menu.js +2 -13
  25. package/dist/lib/user-menu/base-user-menu.js.map +1 -1
  26. package/package.json +35 -35
  27. package/dist/generic/Events.types.d.ts +0 -174
  28. package/dist/generic/Events.types.d.ts.map +0 -1
  29. package/dist/generic/Events.types.js +0 -220
  30. package/dist/generic/Events.types.js.map +0 -1
  31. package/dist/lib/app-view/application-view.component.d.ts +0 -65
  32. package/dist/lib/app-view/application-view.component.d.ts.map +0 -1
  33. package/dist/lib/app-view/application-view.component.js +0 -611
  34. package/dist/lib/app-view/application-view.component.js.map +0 -1
  35. package/dist/lib/auth-button/auth-button.component.d.ts +0 -13
  36. package/dist/lib/auth-button/auth-button.component.d.ts.map +0 -1
  37. package/dist/lib/auth-button/auth-button.component.js +0 -36
  38. package/dist/lib/auth-button/auth-button.component.js.map +0 -1
  39. package/dist/lib/base-browser-component/base-browser-component.d.ts +0 -44
  40. package/dist/lib/base-browser-component/base-browser-component.d.ts.map +0 -1
  41. package/dist/lib/base-browser-component/base-browser-component.js +0 -195
  42. package/dist/lib/base-browser-component/base-browser-component.js.map +0 -1
  43. package/dist/lib/chat-wrapper/chat-wrapper.component.d.ts +0 -54
  44. package/dist/lib/chat-wrapper/chat-wrapper.component.d.ts.map +0 -1
  45. package/dist/lib/chat-wrapper/chat-wrapper.component.js +0 -257
  46. package/dist/lib/chat-wrapper/chat-wrapper.component.js.map +0 -1
  47. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts +0 -32
  48. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts.map +0 -1
  49. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +0 -244
  50. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js.map +0 -1
  51. package/dist/lib/data-browser-component/data-browser.component.d.ts +0 -23
  52. package/dist/lib/data-browser-component/data-browser.component.d.ts.map +0 -1
  53. package/dist/lib/data-browser-component/data-browser.component.js +0 -267
  54. package/dist/lib/data-browser-component/data-browser.component.js.map +0 -1
  55. package/dist/lib/expansion-panel-component/expansion-panel-component.d.ts +0 -21
  56. package/dist/lib/expansion-panel-component/expansion-panel-component.d.ts.map +0 -1
  57. package/dist/lib/expansion-panel-component/expansion-panel-component.js +0 -158
  58. package/dist/lib/expansion-panel-component/expansion-panel-component.js.map +0 -1
  59. package/dist/lib/favorites/favorites.component.d.ts +0 -15
  60. package/dist/lib/favorites/favorites.component.d.ts.map +0 -1
  61. package/dist/lib/favorites/favorites.component.js +0 -135
  62. package/dist/lib/favorites/favorites.component.js.map +0 -1
  63. package/dist/lib/files/files.component.d.ts +0 -10
  64. package/dist/lib/files/files.component.d.ts.map +0 -1
  65. package/dist/lib/files/files.component.js +0 -41
  66. package/dist/lib/files/files.component.js.map +0 -1
  67. package/dist/lib/generic-browse-list/generic-browse-list.component.d.ts +0 -30
  68. package/dist/lib/generic-browse-list/generic-browse-list.component.d.ts.map +0 -1
  69. package/dist/lib/generic-browse-list/generic-browse-list.component.js +0 -171
  70. package/dist/lib/generic-browse-list/generic-browse-list.component.js.map +0 -1
  71. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +0 -120
  72. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +0 -1
  73. package/dist/lib/generic-browser-list/generic-browser-list.component.js +0 -1093
  74. package/dist/lib/generic-browser-list/generic-browser-list.component.js.map +0 -1
  75. package/dist/lib/header/MSFT_UserImageService.d.ts +0 -12
  76. package/dist/lib/header/MSFT_UserImageService.d.ts.map +0 -1
  77. package/dist/lib/header/MSFT_UserImageService.js +0 -25
  78. package/dist/lib/header/MSFT_UserImageService.js.map +0 -1
  79. package/dist/lib/header/header.component.d.ts +0 -69
  80. package/dist/lib/header/header.component.d.ts.map +0 -1
  81. package/dist/lib/header/header.component.js +0 -342
  82. package/dist/lib/header/header.component.js.map +0 -1
  83. package/dist/lib/home-component/home.component.d.ts +0 -22
  84. package/dist/lib/home-component/home.component.d.ts.map +0 -1
  85. package/dist/lib/home-component/home.component.js +0 -194
  86. package/dist/lib/home-component/home.component.js.map +0 -1
  87. package/dist/lib/home-wrapper/home-wrapper.component.d.ts +0 -7
  88. package/dist/lib/home-wrapper/home-wrapper.component.d.ts.map +0 -1
  89. package/dist/lib/home-wrapper/home-wrapper.component.js +0 -30
  90. package/dist/lib/home-wrapper/home-wrapper.component.js.map +0 -1
  91. package/dist/lib/list-view/list-view.component.d.ts +0 -45
  92. package/dist/lib/list-view/list-view.component.d.ts.map +0 -1
  93. package/dist/lib/list-view/list-view.component.js +0 -329
  94. package/dist/lib/list-view/list-view.component.js.map +0 -1
  95. package/dist/lib/navigation/navigation.component.d.ts +0 -142
  96. package/dist/lib/navigation/navigation.component.d.ts.map +0 -1
  97. package/dist/lib/navigation/navigation.component.js +0 -1212
  98. package/dist/lib/navigation/navigation.component.js.map +0 -1
  99. package/dist/lib/query-browser-component/query-browser.component.d.ts +0 -75
  100. package/dist/lib/query-browser-component/query-browser.component.d.ts.map +0 -1
  101. package/dist/lib/query-browser-component/query-browser.component.js +0 -908
  102. package/dist/lib/query-browser-component/query-browser.component.js.map +0 -1
  103. package/dist/lib/report-browser-component/report-browser.component.d.ts +0 -22
  104. package/dist/lib/report-browser-component/report-browser.component.d.ts.map +0 -1
  105. package/dist/lib/report-browser-component/report-browser.component.js +0 -80
  106. package/dist/lib/report-browser-component/report-browser.component.js.map +0 -1
  107. package/dist/lib/resource-browser/resource-browser.component.d.ts +0 -178
  108. package/dist/lib/resource-browser/resource-browser.component.d.ts.map +0 -1
  109. package/dist/lib/resource-browser/resource-browser.component.js +0 -1012
  110. package/dist/lib/resource-browser/resource-browser.component.js.map +0 -1
  111. package/dist/lib/resource-wrappers/report-resource.component.d.ts +0 -13
  112. package/dist/lib/resource-wrappers/report-resource.component.d.ts.map +0 -1
  113. package/dist/lib/resource-wrappers/report-resource.component.js +0 -49
  114. package/dist/lib/resource-wrappers/report-resource.component.js.map +0 -1
  115. package/dist/lib/shared/custom-icon/custom-icon.component.d.ts +0 -11
  116. package/dist/lib/shared/custom-icon/custom-icon.component.d.ts.map +0 -1
  117. package/dist/lib/shared/custom-icon/custom-icon.component.js +0 -44
  118. package/dist/lib/shared/custom-icon/custom-icon.component.js.map +0 -1
  119. package/dist/lib/single-application/single-application.component.d.ts +0 -24
  120. package/dist/lib/single-application/single-application.component.d.ts.map +0 -1
  121. package/dist/lib/single-application/single-application.component.js +0 -122
  122. package/dist/lib/single-application/single-application.component.js.map +0 -1
  123. package/dist/lib/single-entity/single-entity.component.d.ts +0 -34
  124. package/dist/lib/single-entity/single-entity.component.d.ts.map +0 -1
  125. package/dist/lib/single-entity/single-entity.component.js +0 -245
  126. package/dist/lib/single-entity/single-entity.component.js.map +0 -1
  127. package/dist/lib/single-report/single-report.component.d.ts +0 -17
  128. package/dist/lib/single-report/single-report.component.d.ts.map +0 -1
  129. package/dist/lib/single-report/single-report.component.js +0 -55
  130. package/dist/lib/single-report/single-report.component.js.map +0 -1
  131. package/dist/lib/single-view/single-view.component.d.ts +0 -43
  132. package/dist/lib/single-view/single-view.component.d.ts.map +0 -1
  133. package/dist/lib/single-view/single-view.component.js +0 -207
  134. package/dist/lib/single-view/single-view.component.js.map +0 -1
  135. package/dist/lib/style-guide-test/style-guide-test.component.d.ts +0 -70
  136. package/dist/lib/style-guide-test/style-guide-test.component.d.ts.map +0 -1
  137. package/dist/lib/style-guide-test/style-guide-test.component.js +0 -1024
  138. package/dist/lib/style-guide-test/style-guide-test.component.js.map +0 -1
  139. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts +0 -46
  140. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts.map +0 -1
  141. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js +0 -547
  142. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"style-guide-test.component.js","sourceRoot":"","sources":["../../../src/lib/style-guide-test/style-guide-test.component.ts","../../../src/lib/style-guide-test/style-guide-test.component.html"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { OnInit, ElementRef, AfterViewInit, ViewContainerRef, OnDestroy } from '@angular/core';
2
- import { DashboardEntity, DashboardUserStateEntity } from '@memberjunction/core-entities';
3
- import { BaseDashboard } from '@memberjunction/ng-shared';
4
- import { MJTabStripComponent } from '@memberjunction/ng-tabstrip';
5
- import { Router } from '@angular/router';
6
- import * as i0 from "@angular/core";
7
- export declare class TabbedDashboardComponent implements OnInit, AfterViewInit, OnDestroy {
8
- private router;
9
- tabstrip: MJTabStripComponent;
10
- contentWrapper: ElementRef;
11
- noTabsContainer: ElementRef;
12
- tabContainer: ElementRef;
13
- tabstripContainer: ViewContainerRef;
14
- /**
15
- * Specify the application to display dashboards for. If not specified, the scope is global.
16
- */
17
- ApplicationID: string | null;
18
- /**
19
- * Name for the default tab when no dashboards are available.
20
- */
21
- DefaultTabName: string;
22
- /**
23
- * Specify the position of the default dashboard, first, last or not shown at all.
24
- */
25
- DefaultDashboardPosition: 'first' | 'last' | 'none';
26
- dashboards: DashboardEntity[];
27
- loading: boolean;
28
- error: string | null;
29
- private dashboardInstances;
30
- private dashboardComponentRefs;
31
- constructor(router: Router);
32
- ngOnInit(): Promise<void>;
33
- ngAfterViewInit(): Promise<void>;
34
- private moveContentToCorrectContainer;
35
- private loadDashboards;
36
- getDashboardInstance(dashboardId: string): BaseDashboard | undefined;
37
- private displayDashboardError;
38
- protected loadDashboardUserState(dashboardId: string): Promise<DashboardUserStateEntity>;
39
- onTabSelect(tabIndex: number): void;
40
- openPreferencesDialog(): void;
41
- private refreshDashboards;
42
- ngOnDestroy(): void;
43
- static ɵfac: i0.ɵɵFactoryDeclaration<TabbedDashboardComponent, never>;
44
- static ɵcmp: i0.ɵɵComponentDeclaration<TabbedDashboardComponent, "mj-tabbed-dashboard", never, { "ApplicationID": { "alias": "ApplicationID"; "required": false; }; "DefaultTabName": { "alias": "DefaultTabName"; "required": false; }; "DefaultDashboardPosition": { "alias": "DefaultDashboardPosition"; "required": false; }; }, {}, never, ["*"], false, never>;
45
- }
46
- //# sourceMappingURL=tabbed-dashboard.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabbed-dashboard.component.d.ts","sourceRoot":"","sources":["../../../src/lib/tabbed-dashboard/tabbed-dashboard.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAa,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1I,OAAO,EAAE,eAAe,EAAiC,wBAAwB,EAAgB,MAAM,+BAA+B,CAAC;AACvI,OAAO,EAAE,aAAa,EAAmB,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;;AAKzC,qBAKa,wBAAyB,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS;IA6BnE,OAAO,CAAC,MAAM;IA5BH,QAAQ,EAAG,mBAAmB,CAAC;IACzB,cAAc,EAAG,UAAU,CAAC;IAC3B,eAAe,EAAG,UAAU,CAAC;IAChC,YAAY,EAAG,UAAU,CAAC;IACO,iBAAiB,EAAG,gBAAgB,CAAC;IAEjG;;OAEG;IACa,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEpD;;OAEG;IACa,cAAc,EAAE,MAAM,CAAa;IAEnD;;OAEG;IACa,wBAAwB,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAU;IAEtE,UAAU,EAAE,eAAe,EAAE,CAAM;IACnC,OAAO,EAAE,OAAO,CAAQ;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEnC,OAAO,CAAC,kBAAkB,CAAyC;IACnE,OAAO,CAAC,sBAAsB,CAAuD;gBAEjE,MAAM,EAAE,MAAM;IAE5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,eAAe;IA6BrB,OAAO,CAAC,6BAA6B;YAavB,cAAc;IAuErB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAuG3E,OAAO,CAAC,qBAAqB;cAiBb,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAsBvF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IA0BnC,qBAAqB,IAAI,IAAI;YAqCtB,iBAAiB;IAqC/B,WAAW,IAAI,IAAI;yCAtYR,wBAAwB;2CAAxB,wBAAwB;CA8YpC"}
@@ -1,547 +0,0 @@
1
- import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
2
- import { LogError, Metadata, RunView } from '@memberjunction/core';
3
- import { ResourceData } from '@memberjunction/core-entities';
4
- import { BaseDashboard } from '@memberjunction/ng-shared';
5
- import { InvokeManualResize, MJGlobal, SafeJSONParse } from '@memberjunction/global';
6
- import { DashboardPreferencesDialogComponent } from '../dashboard-preferences-dialog/dashboard-preferences-dialog.component';
7
- import { SingleDashboardComponent } from '../single-dashboard/single-dashboard.component';
8
- import { SharedService } from '@memberjunction/ng-shared';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/router";
11
- import * as i2 from "@memberjunction/ng-tabstrip";
12
- import * as i3 from "@memberjunction/ng-shared-generic";
13
- const _c0 = ["tabstrip"];
14
- const _c1 = ["contentWrapper"];
15
- const _c2 = ["noTabsContainer"];
16
- const _c3 = ["tabContainer"];
17
- const _c4 = ["tabstripContainer"];
18
- const _c5 = ["*"];
19
- const _forTrack0 = ($index, $item) => $item.ID;
20
- function TabbedDashboardComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelementStart(0, "div", 5);
22
- i0.ɵɵelement(1, "mj-loading", 11);
23
- i0.ɵɵelementEnd();
24
- } }
25
- function TabbedDashboardComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
26
- i0.ɵɵelementStart(0, "div", 9);
27
- i0.ɵɵtext(1);
28
- i0.ɵɵelementEnd();
29
- } if (rf & 2) {
30
- const ctx_r1 = i0.ɵɵnextContext();
31
- i0.ɵɵadvance();
32
- i0.ɵɵtextInterpolate1(" ", ctx_r1.error, " ");
33
- } }
34
- function TabbedDashboardComponent_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵelement(0, "div", null, 2);
36
- } }
37
- function TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "mj-tab", 13);
39
- i0.ɵɵelement(1, "span", 14);
40
- i0.ɵɵtext(2);
41
- i0.ɵɵelementEnd();
42
- } if (rf & 2) {
43
- const ctx_r1 = i0.ɵɵnextContext(3);
44
- i0.ɵɵproperty("Name", ctx_r1.DefaultTabName);
45
- i0.ɵɵadvance(2);
46
- i0.ɵɵtextInterpolate1(" ", ctx_r1.DefaultTabName, " ");
47
- } }
48
- function TabbedDashboardComponent_Conditional_5_Conditional_3_For_4_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelementStart(0, "mj-tab", 13);
50
- i0.ɵɵelement(1, "span", 15);
51
- i0.ɵɵtext(2);
52
- i0.ɵɵelementEnd();
53
- } if (rf & 2) {
54
- const dashboard_r4 = ctx.$implicit;
55
- i0.ɵɵproperty("Name", dashboard_r4.Name);
56
- i0.ɵɵadvance(2);
57
- i0.ɵɵtextInterpolate1(" ", dashboard_r4.Name, " ");
58
- } }
59
- function TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "mj-tab", 13);
61
- i0.ɵɵelement(1, "span", 14);
62
- i0.ɵɵtext(2);
63
- i0.ɵɵelementEnd();
64
- } if (rf & 2) {
65
- const ctx_r1 = i0.ɵɵnextContext(3);
66
- i0.ɵɵproperty("Name", ctx_r1.DefaultTabName);
67
- i0.ɵɵadvance(2);
68
- i0.ɵɵtextInterpolate1(" ", ctx_r1.DefaultTabName, " ");
69
- } }
70
- function TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
71
- i0.ɵɵelementStart(0, "mj-tab-body")(1, "div", 16);
72
- i0.ɵɵelement(2, "div", null, 4);
73
- i0.ɵɵelementEnd()();
74
- } }
75
- function TabbedDashboardComponent_Conditional_5_Conditional_3_For_8_Template(rf, ctx) { if (rf & 1) {
76
- i0.ɵɵelementStart(0, "mj-tab-body")(1, "div", 16);
77
- i0.ɵɵelement(2, "div", 17);
78
- i0.ɵɵelementEnd()();
79
- } if (rf & 2) {
80
- const dashboard_r5 = ctx.$implicit;
81
- i0.ɵɵadvance(2);
82
- i0.ɵɵpropertyInterpolate1("id", "dashboard-", dashboard_r5.ID, "");
83
- } }
84
- function TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
85
- i0.ɵɵelementStart(0, "mj-tab-body")(1, "div", 16);
86
- i0.ɵɵelement(2, "div", null, 4);
87
- i0.ɵɵelementEnd()();
88
- } }
89
- function TabbedDashboardComponent_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
90
- const _r3 = i0.ɵɵgetCurrentView();
91
- i0.ɵɵelementStart(0, "mj-tabstrip", 12, 3);
92
- i0.ɵɵlistener("TabSelected", function TabbedDashboardComponent_Conditional_5_Conditional_3_Template_mj_tabstrip_TabSelected_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTabSelect($event.index)); });
93
- i0.ɵɵtemplate(2, TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_2_Template, 3, 2, "mj-tab", 13);
94
- i0.ɵɵrepeaterCreate(3, TabbedDashboardComponent_Conditional_5_Conditional_3_For_4_Template, 3, 2, "mj-tab", 13, _forTrack0);
95
- i0.ɵɵtemplate(5, TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_5_Template, 3, 2, "mj-tab", 13)(6, TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_6_Template, 4, 0, "mj-tab-body");
96
- i0.ɵɵrepeaterCreate(7, TabbedDashboardComponent_Conditional_5_Conditional_3_For_8_Template, 3, 2, "mj-tab-body", null, _forTrack0);
97
- i0.ɵɵtemplate(9, TabbedDashboardComponent_Conditional_5_Conditional_3_Conditional_9_Template, 4, 0, "mj-tab-body");
98
- i0.ɵɵelementEnd();
99
- } if (rf & 2) {
100
- const ctx_r1 = i0.ɵɵnextContext(2);
101
- i0.ɵɵadvance(2);
102
- i0.ɵɵconditional(ctx_r1.DefaultDashboardPosition === "first" ? 2 : -1);
103
- i0.ɵɵadvance();
104
- i0.ɵɵrepeater(ctx_r1.dashboards);
105
- i0.ɵɵadvance(2);
106
- i0.ɵɵconditional(ctx_r1.DefaultDashboardPosition === "last" ? 5 : -1);
107
- i0.ɵɵadvance();
108
- i0.ɵɵconditional(ctx_r1.DefaultDashboardPosition === "first" ? 6 : -1);
109
- i0.ɵɵadvance();
110
- i0.ɵɵrepeater(ctx_r1.dashboards);
111
- i0.ɵɵadvance(2);
112
- i0.ɵɵconditional(ctx_r1.DefaultDashboardPosition === "last" ? 9 : -1);
113
- } }
114
- function TabbedDashboardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelementStart(0, "div", null, 1);
116
- i0.ɵɵtemplate(2, TabbedDashboardComponent_Conditional_5_Conditional_2_Template, 2, 0, "div")(3, TabbedDashboardComponent_Conditional_5_Conditional_3_Template, 10, 4, "mj-tabstrip");
117
- i0.ɵɵelementEnd();
118
- } if (rf & 2) {
119
- const ctx_r1 = i0.ɵɵnextContext();
120
- i0.ɵɵadvance(2);
121
- i0.ɵɵconditional(ctx_r1.dashboards.length === 0 ? 2 : 3);
122
- } }
123
- export class TabbedDashboardComponent {
124
- router;
125
- tabstrip;
126
- contentWrapper;
127
- noTabsContainer;
128
- tabContainer;
129
- tabstripContainer;
130
- /**
131
- * Specify the application to display dashboards for. If not specified, the scope is global.
132
- */
133
- ApplicationID = null;
134
- /**
135
- * Name for the default tab when no dashboards are available.
136
- */
137
- DefaultTabName = 'Default';
138
- /**
139
- * Specify the position of the default dashboard, first, last or not shown at all.
140
- */
141
- DefaultDashboardPosition = 'last';
142
- dashboards = [];
143
- loading = true;
144
- error = null;
145
- dashboardInstances = new Map();
146
- dashboardComponentRefs = new Map();
147
- constructor(router) {
148
- this.router = router;
149
- }
150
- async ngOnInit() {
151
- }
152
- async ngAfterViewInit() {
153
- try {
154
- this.loading = true;
155
- await this.loadDashboards();
156
- // Move content after loading is complete and view might have changed
157
- setTimeout(() => {
158
- // Move content to appropriate container after view is initialized
159
- this.moveContentToCorrectContainer();
160
- // if the first tab is the default tab, nothing to do, otherwise we need to do the loading of the first tab since it is dynamic content
161
- if (this.DefaultDashboardPosition !== 'first' && this.dashboards.length > 0) {
162
- const dashboardId = this.dashboards[0].ID;
163
- const instance = this.getDashboardInstance(dashboardId);
164
- if (instance) {
165
- instance.SetVisible(true);
166
- // now, we need to invoke a manual resize to ensure everything shows up right
167
- InvokeManualResize(100);
168
- }
169
- }
170
- }, 10);
171
- }
172
- catch (error) {
173
- LogError('Error in TabbedDashboardComponent.ngOnInit', null, error);
174
- this.error = 'Failed to load dashboards';
175
- }
176
- finally {
177
- this.loading = false;
178
- }
179
- }
180
- moveContentToCorrectContainer() {
181
- if (this.contentWrapper) {
182
- const content = this.contentWrapper.nativeElement.children[0];
183
- if (content) {
184
- if (this.dashboards.length === 0 && this.noTabsContainer) {
185
- this.noTabsContainer.nativeElement.appendChild(content);
186
- }
187
- else if (this.dashboards.length > 0 && this.tabContainer) {
188
- this.tabContainer.nativeElement.appendChild(content);
189
- }
190
- }
191
- }
192
- }
193
- async loadDashboards() {
194
- try {
195
- const md = new Metadata();
196
- const rv = new RunView();
197
- const appFilter = this.ApplicationID ? ` AND ApplicationID='${this.ApplicationID}'` : '';
198
- const ds = await md.GetAndCacheDatasetByName("MJ_Metadata"); // get the main MJ_Metadata dataset which is usually already cached
199
- if (!ds || !ds.Success) {
200
- this.error = ds.Status || 'Failed to load metadata dataset';
201
- this.dashboards = [];
202
- return;
203
- }
204
- const dashList = ds.Results.find(r => r.Code === 'Dashboards');
205
- if (!dashList) {
206
- this.error = 'Dashboards dataset not found';
207
- this.dashboards = [];
208
- return;
209
- }
210
- // now get the data from the dataset which is usually cached
211
- const scope = this.ApplicationID ? 'App' : 'Global';
212
- const baseCondition = `Scope='${scope}'${appFilter}`;
213
- const userFilter = `UserID='${md.CurrentUser.ID}' AND ${baseCondition}`;
214
- const upEntity = md.EntityByName('MJ: Dashboard User Preferences');
215
- const filter = `(${userFilter})
216
- OR
217
- (UserID IS NULL AND ${baseCondition} AND
218
- NOT EXISTS (SELECT 1 FROM [${upEntity.SchemaName}].[${upEntity.BaseView}]
219
- WHERE ${userFilter}))`;
220
- const params = {
221
- EntityName: 'MJ: Dashboard User Preferences',
222
- ExtraFilter: filter,
223
- ResultType: 'entity_object',
224
- OrderBy: 'DisplayOrder',
225
- };
226
- const prefsResult = await rv.RunView(params); // Use RunView for user preferences because we don't want to cache this data as it would cause cache being refreshed all the time since
227
- // user preferences can change frequently and we want to ensure we always have the latest preferences for the current user
228
- if (prefsResult && prefsResult.Success && prefsResult.Results.length > 0) {
229
- const dashResults = dashList.Results.filter((d) => {
230
- return prefsResult.Results.some((p) => p.DashboardID === d.ID);
231
- });
232
- if (dashResults.length > 0) {
233
- // now sort the dashboards based on the user preferences
234
- this.dashboards = dashResults.sort((a, b) => {
235
- const prefA = prefsResult.Results.find(p => p.DashboardID === a.ID);
236
- const prefB = prefsResult.Results.find(p => p.DashboardID === b.ID);
237
- if (prefA && prefB) {
238
- // we want to sort by DisplayOrder where lower numbers come first
239
- return (prefA.DisplayOrder || 0) - (prefB.DisplayOrder || 0);
240
- }
241
- return 0;
242
- });
243
- }
244
- else {
245
- this.error = 'Failed to load dashboards';
246
- this.dashboards = [];
247
- }
248
- }
249
- else {
250
- // No dashboard preferences found - this is normal, show default content
251
- this.dashboards = [];
252
- }
253
- }
254
- catch (error) {
255
- LogError('Error loading dashboards', null, error);
256
- this.error = 'Failed to load dashboards';
257
- this.dashboards = [];
258
- }
259
- }
260
- getDashboardInstance(dashboardId) {
261
- if (!this.dashboardInstances.has(dashboardId)) {
262
- try {
263
- // Create instance of the appropriate dashboard class
264
- const dashboardEntity = this.dashboards.find(d => d.ID === dashboardId);
265
- if (dashboardEntity && this.tabstripContainer) {
266
- // Use the type of the dashboard to determine which class to instantiate
267
- let instance;
268
- let componentRef;
269
- if (dashboardEntity.Type === 'Code') {
270
- const classInfo = MJGlobal.Instance.ClassFactory.GetRegistration(BaseDashboard, dashboardEntity.DriverClass);
271
- if (!classInfo || !classInfo.SubClass) {
272
- // Class not found error
273
- const errorMsg = `Dashboard class '${dashboardEntity.DriverClass}' not found`;
274
- console.error(`Error loading dashboard '${dashboardEntity.Name}': ${errorMsg}`);
275
- this.displayDashboardError(dashboardId, `Dashboard component not available: ${dashboardEntity.DriverClass}`, 'The dashboard class is not registered. Please contact your system administrator.');
276
- return undefined;
277
- }
278
- // Create the component dynamically
279
- componentRef = this.tabstripContainer.createComponent(classInfo.SubClass);
280
- instance = componentRef.instance;
281
- }
282
- else {
283
- // configuration type dashboard, so we can use the
284
- // Create the component dynamically
285
- componentRef = this.tabstripContainer.createComponent(SingleDashboardComponent);
286
- instance = componentRef.instance;
287
- // get the single dashboard component to set the DashboardID
288
- const resData = new ResourceData();
289
- resData.ResourceRecordID = dashboardId;
290
- instance.ResourceData = resData;
291
- }
292
- if (!instance) {
293
- // Instance creation failed error
294
- const errorMsg = `Failed to create instance of dashboard class '${dashboardEntity.DriverClass}'`;
295
- console.error(`Error loading dashboard '${dashboardEntity.Name}': ${errorMsg}`);
296
- this.displayDashboardError(dashboardId, 'Dashboard failed to initialize', 'The dashboard could not be created. Please contact your system administrator.');
297
- return undefined;
298
- }
299
- // Store both the instance and component reference
300
- this.dashboardInstances.set(dashboardId, instance);
301
- this.dashboardComponentRefs.set(dashboardId, componentRef);
302
- // Find the target container element and append the component
303
- setTimeout(async () => {
304
- const targetElement = document.getElementById(`dashboard-${dashboardId}`);
305
- if (targetElement && componentRef.location.nativeElement) {
306
- targetElement.appendChild(componentRef.location.nativeElement);
307
- const userStateEntity = await this.loadDashboardUserState(dashboardId);
308
- const config = {
309
- dashboard: dashboardEntity,
310
- userState: userStateEntity.UserState ? SafeJSONParse(userStateEntity.UserState) : {}
311
- };
312
- // handle open entity record events in MJ Explorer with routing
313
- instance.OpenEntityRecord.subscribe((data) => {
314
- // check to see if the data has entityname/pkey
315
- if (data && data.EntityName && data.RecordPKey) {
316
- // open the record in the explorer
317
- SharedService.Instance.OpenEntityRecord(data.EntityName, data.RecordPKey);
318
- // this.router.navigate(['resource', 'record', data.RecordPKey.ToURLSegment()],
319
- // { queryParams: { Entity: data.EntityName } })
320
- }
321
- });
322
- instance.UserStateChanged.subscribe(async (userState) => {
323
- if (!userState) {
324
- // if the user state is null, we need to remove it from the user state
325
- userState = {};
326
- }
327
- // save the user state to the dashboard user state entity
328
- userStateEntity.UserState = JSON.stringify(userState);
329
- if (!await userStateEntity.Save()) {
330
- LogError('Error saving user state', null, userStateEntity.LatestResult.Error);
331
- }
332
- });
333
- // now that we have state loaded and our events are wired up, we can set the config
334
- instance.Config = config;
335
- instance.Refresh();
336
- // now invoke a manual resize
337
- InvokeManualResize(100);
338
- }
339
- }, 0);
340
- return instance;
341
- }
342
- }
343
- catch (error) {
344
- const dashboardEntity = this.dashboards.find(d => d.ID === dashboardId);
345
- const errorMsg = `Error creating dashboard instance for '${dashboardEntity?.Name || dashboardId}'`;
346
- console.error(errorMsg, error);
347
- LogError(errorMsg, null, error);
348
- this.displayDashboardError(dashboardId, 'Dashboard loading error', 'An unexpected error occurred while loading the dashboard. Please contact your system administrator.');
349
- }
350
- }
351
- return this.dashboardInstances.get(dashboardId);
352
- }
353
- displayDashboardError(dashboardId, title, message) {
354
- // Display error message in the dashboard container
355
- setTimeout(() => {
356
- const targetElement = document.getElementById(`dashboard-${dashboardId}`);
357
- if (targetElement) {
358
- targetElement.innerHTML = `
359
- <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 300px; text-align: center; padding: 20px; color: #666;">
360
- <div style="font-size: 48px; color: #dc3545; margin-bottom: 20px;">⚠️</div>
361
- <h3 style="color: #dc3545; margin: 0 0 10px 0;">${title}</h3>
362
- <p style="margin: 0 0 20px 0; max-width: 400px; line-height: 1.5;">${message}</p>
363
- <small style="color: #999;">Dashboard ID: ${dashboardId}</small>
364
- </div>
365
- `;
366
- }
367
- }, 0);
368
- }
369
- async loadDashboardUserState(dashboardId) {
370
- // handle user state changes for the dashboard
371
- const rv = new RunView();
372
- const md = new Metadata();
373
- const stateResult = await rv.RunView({
374
- EntityName: 'MJ: Dashboard User States',
375
- ExtraFilter: `DashboardID='${dashboardId}' AND UserID='${md.CurrentUser.ID}'`,
376
- ResultType: 'entity_object',
377
- });
378
- let stateObject;
379
- if (stateResult && stateResult.Success && stateResult.Results.length > 0) {
380
- stateObject = stateResult.Results[0];
381
- }
382
- else {
383
- stateObject = await md.GetEntityObject('MJ: Dashboard User States');
384
- stateObject.DashboardID = dashboardId;
385
- stateObject.UserID = md.CurrentUser.ID;
386
- // don't save becuase we don't care about the state until something changes
387
- }
388
- return stateObject;
389
- }
390
- onTabSelect(tabIndex) {
391
- // Initialize the dashboard if needed when its tab is selected
392
- const dashboardIndex = tabIndex - 1; // Adjust for the default tab
393
- if (dashboardIndex >= 0 && dashboardIndex < this.dashboards.length) {
394
- const dashboard = this.dashboards[dashboardIndex];
395
- const instance = this.getDashboardInstance(dashboard.ID);
396
- if (instance) {
397
- // You might want to trigger a refresh or other actions here when tab is selected
398
- instance.SetVisible(true);
399
- // now get all the other instances and let them know they're not visible
400
- this.dashboards.forEach((d, index) => {
401
- if (index !== dashboardIndex) {
402
- const otherInstance = this.getDashboardInstance(d.ID);
403
- if (otherInstance) {
404
- otherInstance.SetVisible(false);
405
- }
406
- }
407
- });
408
- // now invoke a manual resize
409
- InvokeManualResize(100);
410
- }
411
- }
412
- }
413
- openPreferencesDialog() {
414
- try {
415
- // Create the preferences dialog component dynamically
416
- const componentRef = this.tabstripContainer.createComponent(DashboardPreferencesDialogComponent);
417
- const dialogInstance = componentRef.instance;
418
- // Configure the dialog
419
- dialogInstance.applicationId = this.ApplicationID;
420
- dialogInstance.scope = this.ApplicationID ? 'App' : 'Global';
421
- // Handle dialog result
422
- dialogInstance.result.subscribe((result) => {
423
- if (result.saved) {
424
- // Preferences were saved, reload dashboards
425
- this.refreshDashboards();
426
- }
427
- // Clean up the dialog component
428
- componentRef.destroy();
429
- });
430
- // The Kendo dialog will handle its own modal overlay and positioning
431
- // Just append to body for proper z-index stacking
432
- document.body.appendChild(componentRef.location.nativeElement);
433
- // Clean up when dialog closes
434
- dialogInstance.result.subscribe(() => {
435
- if (document.body.contains(componentRef.location.nativeElement)) {
436
- document.body.removeChild(componentRef.location.nativeElement);
437
- }
438
- });
439
- }
440
- catch (error) {
441
- LogError('Error opening preferences dialog', null, error);
442
- }
443
- }
444
- async refreshDashboards() {
445
- try {
446
- this.loading = true;
447
- this.error = null;
448
- // Clear existing dashboard instances
449
- this.dashboardComponentRefs.forEach(componentRef => {
450
- componentRef.destroy();
451
- });
452
- this.dashboardComponentRefs.clear();
453
- this.dashboardInstances.clear();
454
- // Reload dashboards
455
- await this.loadDashboards();
456
- // Move content to correct container
457
- setTimeout(() => {
458
- this.moveContentToCorrectContainer();
459
- // Load first dashboard if available
460
- if (this.DefaultDashboardPosition !== 'first' && this.dashboards.length > 0) {
461
- const dashboardId = this.dashboards[0].ID;
462
- const instance = this.getDashboardInstance(dashboardId);
463
- if (instance) {
464
- instance.SetVisible(true);
465
- InvokeManualResize(100);
466
- }
467
- }
468
- }, 10);
469
- }
470
- catch (error) {
471
- LogError('Error refreshing dashboards', null, error);
472
- this.error = 'Failed to refresh dashboards';
473
- }
474
- finally {
475
- this.loading = false;
476
- }
477
- }
478
- ngOnDestroy() {
479
- // Clean up component references
480
- this.dashboardComponentRefs.forEach(componentRef => {
481
- componentRef.destroy();
482
- });
483
- this.dashboardComponentRefs.clear();
484
- this.dashboardInstances.clear();
485
- }
486
- static ɵfac = function TabbedDashboardComponent_Factory(t) { return new (t || TabbedDashboardComponent)(i0.ɵɵdirectiveInject(i1.Router)); };
487
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TabbedDashboardComponent, selectors: [["mj-tabbed-dashboard"]], viewQuery: function TabbedDashboardComponent_Query(rf, ctx) { if (rf & 1) {
488
- i0.ɵɵviewQuery(_c0, 5);
489
- i0.ɵɵviewQuery(_c1, 5);
490
- i0.ɵɵviewQuery(_c2, 5);
491
- i0.ɵɵviewQuery(_c3, 5);
492
- i0.ɵɵviewQuery(_c4, 5, ViewContainerRef);
493
- } if (rf & 2) {
494
- let _t;
495
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabstrip = _t.first);
496
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentWrapper = _t.first);
497
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noTabsContainer = _t.first);
498
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabContainer = _t.first);
499
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabstripContainer = _t.first);
500
- } }, inputs: { ApplicationID: "ApplicationID", DefaultTabName: "DefaultTabName", DefaultDashboardPosition: "DefaultDashboardPosition" }, ngContentSelectors: _c5, decls: 9, vars: 3, consts: [["contentWrapper", ""], ["tabstripContainer", ""], ["noTabsContainer", ""], ["tabstrip", ""], ["tabContainer", ""], [1, "loading-overlay"], [1, "tabbed-dashboard-container"], ["type", "button", "title", "Dashboard Preferences", 1, "preferences-button", 3, "click"], [1, "fa-solid", "fa-cog"], [1, "error-message"], [2, "display", "none"], ["text", "Loading dashboard...", "size", "large"], [3, "TabSelected"], [3, "Name"], [1, "fa-solid", "tab-icon"], [1, "fa-solid", "fa-grip", "tab-icon"], [1, "dashboard-container"], [1, "dashboard-instance", 3, "id"]], template: function TabbedDashboardComponent_Template(rf, ctx) { if (rf & 1) {
501
- const _r1 = i0.ɵɵgetCurrentView();
502
- i0.ɵɵprojectionDef();
503
- i0.ɵɵtemplate(0, TabbedDashboardComponent_Conditional_0_Template, 2, 0, "div", 5);
504
- i0.ɵɵelementStart(1, "div", 6)(2, "button", 7);
505
- i0.ɵɵlistener("click", function TabbedDashboardComponent_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.openPreferencesDialog()); });
506
- i0.ɵɵelement(3, "i", 8);
507
- i0.ɵɵelementEnd();
508
- i0.ɵɵtemplate(4, TabbedDashboardComponent_Conditional_4_Template, 2, 1, "div", 9)(5, TabbedDashboardComponent_Conditional_5_Template, 4, 1, "div");
509
- i0.ɵɵelementEnd();
510
- i0.ɵɵelementStart(6, "div", 10, 0);
511
- i0.ɵɵprojection(8);
512
- i0.ɵɵelementEnd();
513
- } if (rf & 2) {
514
- i0.ɵɵconditional(ctx.loading ? 0 : -1);
515
- i0.ɵɵadvance(4);
516
- i0.ɵɵconditional(ctx.error ? 4 : -1);
517
- i0.ɵɵadvance();
518
- i0.ɵɵconditional(!ctx.loading && !ctx.error ? 5 : -1);
519
- } }, dependencies: [i2.MJTabStripComponent, i2.MJTabBodyComponent, i2.MJTabComponent, i3.LoadingComponent], styles: [".tabbed-dashboard-container[_ngcontent-%COMP%] {\n border: solid 1px white;\n background-color: white;\n position: relative;\n}\n\n.loading-indicator[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n font-size: 1.2rem;\n color: #666;\n}\n\n.error-message[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n font-size: 1.2rem;\n color: #d9534f;\n}\n\n.dashboard-container[_ngcontent-%COMP%] {\n height: 100%;\n width: 100%;\n overflow: auto;\n}\n\n.dashboard-instance-container[_ngcontent-%COMP%] {\n height: 100%;\n width: 100%;\n}\n\n.dashboard-placeholder[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n font-size: 1.2rem;\n color: #666;\n border: 1px dashed #ccc;\n padding: 20px;\n}\n\n.tab-icon[_ngcontent-%COMP%] {\n margin-right: 8px;\n}"] });
520
- }
521
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TabbedDashboardComponent, [{
522
- type: Component,
523
- args: [{ selector: 'mj-tabbed-dashboard', template: "@if (loading) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading dashboard...\" size=\"large\"></mj-loading>\n </div>\n}\n<div class=\"tabbed-dashboard-container\">\n <!-- Dashboard Preferences Button -->\n <button type=\"button\" class=\"preferences-button\" (click)=\"openPreferencesDialog()\" title=\"Dashboard Preferences\">\n <i class=\"fa-solid fa-cog\"></i>\n </button>\n\n @if (error) {\n <div class=\"error-message\">\n {{ error }}\n </div>\n }\n\n @if (!loading && !error) {\n <div #tabstripContainer>\n @if (dashboards.length === 0) {\n <!-- Show default content without any tabs, if no dashboards are set for this user, cleaner this way -->\n <div #noTabsContainer></div>\n }\n @else {\n <!-- Show tab strip with dashboards -->\n <mj-tabstrip #tabstrip (TabSelected)=\"onTabSelect($event.index)\">\n <!-- Show default tab if no dashboards are available -->\n @if (DefaultDashboardPosition === 'first') {\n <mj-tab [Name]=\"DefaultTabName\">\n <span class=\"fa-solid tab-icon\"></span>\n {{ DefaultTabName }}\n </mj-tab>\n }\n\n <!-- Show dashboard tabs -->\n @for (dashboard of dashboards; track dashboard.ID; let i = $index) {\n <mj-tab [Name]=\"dashboard.Name\">\n <span class=\"fa-solid fa-grip tab-icon\"></span>\n {{ dashboard.Name }}\n </mj-tab>\n }\n\n @if (DefaultDashboardPosition === 'last') {\n <mj-tab [Name]=\"DefaultTabName\">\n <span class=\"fa-solid tab-icon\"></span>\n {{ DefaultTabName }}\n </mj-tab>\n }\n\n <!-- ****** -->\n <!-- TAB BODIES -->\n <!-- ****** -->\n\n <!-- Default tab body when it is shown first -->\n @if (DefaultDashboardPosition === 'first') {\n <mj-tab-body>\n <div class=\"dashboard-container\">\n <div #tabContainer></div>\n </div>\n </mj-tab-body>\n }\n\n <!-- Dashboard tab bodies -->\n @for (dashboard of dashboards; track dashboard.ID; let i = $index) {\n <mj-tab-body>\n <div class=\"dashboard-container\">\n <div id=\"dashboard-{{ dashboard.ID }}\" class=\"dashboard-instance\">\n </div>\n </div>\n </mj-tab-body>\n }\n\n <!-- Default tab body, when it is shown last -->\n @if (DefaultDashboardPosition === 'last') {\n <mj-tab-body>\n <div class=\"dashboard-container\">\n <div #tabContainer></div>\n </div>\n </mj-tab-body>\n }\n </mj-tabstrip>\n }\n </div>\n }\n</div>\n\n<!-- Single ng-content that will be moved programmatically -->\n<div #contentWrapper style=\"display: none;\">\n <ng-content></ng-content>\n</div>", styles: [".tabbed-dashboard-container {\n border: solid 1px white;\n background-color: white;\n position: relative;\n}\n\n.loading-indicator {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n font-size: 1.2rem;\n color: #666;\n}\n\n.error-message {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n font-size: 1.2rem;\n color: #d9534f;\n}\n\n.dashboard-container {\n height: 100%;\n width: 100%;\n overflow: auto;\n}\n\n.dashboard-instance-container {\n height: 100%;\n width: 100%;\n}\n\n.dashboard-placeholder {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n font-size: 1.2rem;\n color: #666;\n border: 1px dashed #ccc;\n padding: 20px;\n}\n\n.tab-icon {\n margin-right: 8px;\n}"] }]
524
- }], () => [{ type: i1.Router }], { tabstrip: [{
525
- type: ViewChild,
526
- args: ['tabstrip']
527
- }], contentWrapper: [{
528
- type: ViewChild,
529
- args: ['contentWrapper']
530
- }], noTabsContainer: [{
531
- type: ViewChild,
532
- args: ['noTabsContainer']
533
- }], tabContainer: [{
534
- type: ViewChild,
535
- args: ['tabContainer']
536
- }], tabstripContainer: [{
537
- type: ViewChild,
538
- args: ['tabstripContainer', { read: ViewContainerRef }]
539
- }], ApplicationID: [{
540
- type: Input
541
- }], DefaultTabName: [{
542
- type: Input
543
- }], DefaultDashboardPosition: [{
544
- type: Input
545
- }] }); })();
546
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TabbedDashboardComponent, { className: "TabbedDashboardComponent" }); })();
547
- //# sourceMappingURL=tabbed-dashboard.component.js.map