@memberjunction/ng-explorer-core 5.24.0 → 5.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +14 -19
- package/dist/app-routing.module.js.map +1 -1
- package/dist/generated/lazy-feature-config.js +3 -3
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.js +1 -0
- package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +16 -17
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js +56 -62
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +2 -4
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +9 -13
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +2 -15
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +18 -52
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +2 -3
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +7 -9
- package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.js +1 -0
- package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/notifications-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/notifications-resource.component.js +1 -0
- package/dist/lib/resource-wrappers/notifications-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js +1 -0
- package/dist/lib/resource-wrappers/query-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +74 -4
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +786 -25
- package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts +7 -4
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +30 -14
- package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.js +10 -3
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
- package/dist/lib/shell/shell.component.d.ts +28 -8
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +416 -218
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/shell/shell.module.d.ts +2 -1
- package/dist/lib/shell/shell.module.d.ts.map +1 -1
- package/dist/lib/shell/shell.module.js +7 -3
- package/dist/lib/shell/shell.module.js.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts +6 -0
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +63 -38
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +1 -0
- package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
- package/dist/lib/user-menu/base-user-menu.d.ts +7 -7
- package/dist/lib/user-menu/base-user-menu.d.ts.map +1 -1
- package/dist/lib/user-menu/base-user-menu.js +8 -1
- package/dist/lib/user-menu/base-user-menu.js.map +1 -1
- package/dist/lib/user-menu/user-menu.types.d.ts +15 -0
- package/dist/lib/user-menu/user-menu.types.d.ts.map +1 -1
- package/dist/lib/user-menu/user-menu.types.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts +6 -3
- package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +46 -19
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/module.d.ts +3 -1
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +8 -0
- package/dist/module.js.map +1 -1
- package/package.json +40 -38
|
@@ -10,9 +10,10 @@ import * as i8 from "@angular/forms";
|
|
|
10
10
|
import * as i9 from "@memberjunction/ng-ui-components";
|
|
11
11
|
import * as i10 from "@memberjunction/ng-explorer-settings";
|
|
12
12
|
import * as i11 from "@memberjunction/ng-shared-generic";
|
|
13
|
+
import * as i12 from "@memberjunction/ng-search";
|
|
13
14
|
export declare class ShellModule {
|
|
14
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<ShellModule, never>;
|
|
15
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ShellModule, [typeof i1.ShellComponent, typeof i2.AppSwitcherComponent, typeof i3.AppNavComponent, typeof i4.TabContainerComponent, typeof i5.AppAccessDialogComponent, typeof i6.CommandPaletteComponent], [typeof i7.CommonModule, typeof i8.FormsModule, typeof i9.MJDropdownComponent, typeof i10.ExplorerSettingsModule, typeof i11.SharedGenericModule], [typeof i1.ShellComponent]>;
|
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ShellModule, [typeof i1.ShellComponent, typeof i2.AppSwitcherComponent, typeof i3.AppNavComponent, typeof i4.TabContainerComponent, typeof i5.AppAccessDialogComponent, typeof i6.CommandPaletteComponent], [typeof i7.CommonModule, typeof i8.FormsModule, typeof i9.MJDropdownComponent, typeof i10.ExplorerSettingsModule, typeof i11.SharedGenericModule, typeof i12.SearchModule], [typeof i1.ShellComponent]>;
|
|
16
17
|
static ɵinj: i0.ɵɵInjectorDeclaration<ShellModule>;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=shell.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.module.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shell.module.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,qBAwBa,WAAW;yCAAX,WAAW;0CAAX,WAAW;0CAAX,WAAW;CAAI"}
|
|
@@ -11,6 +11,7 @@ import { CommandPaletteService } from '../command-palette/command-palette.servic
|
|
|
11
11
|
import { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';
|
|
12
12
|
import { SharedGenericModule } from '@memberjunction/ng-shared-generic';
|
|
13
13
|
import { MJDropdownComponent } from '@memberjunction/ng-ui-components';
|
|
14
|
+
import { SearchModule } from '@memberjunction/ng-search';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
export class ShellModule {
|
|
16
17
|
static ɵfac = function ShellModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ShellModule)(); };
|
|
@@ -21,7 +22,8 @@ export class ShellModule {
|
|
|
21
22
|
FormsModule,
|
|
22
23
|
MJDropdownComponent,
|
|
23
24
|
ExplorerSettingsModule,
|
|
24
|
-
SharedGenericModule
|
|
25
|
+
SharedGenericModule,
|
|
26
|
+
SearchModule] });
|
|
25
27
|
}
|
|
26
28
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ShellModule, [{
|
|
27
29
|
type: NgModule,
|
|
@@ -39,7 +41,8 @@ export class ShellModule {
|
|
|
39
41
|
FormsModule,
|
|
40
42
|
MJDropdownComponent,
|
|
41
43
|
ExplorerSettingsModule,
|
|
42
|
-
SharedGenericModule
|
|
44
|
+
SharedGenericModule,
|
|
45
|
+
SearchModule
|
|
43
46
|
],
|
|
44
47
|
providers: [
|
|
45
48
|
CommandPaletteService
|
|
@@ -58,5 +61,6 @@ export class ShellModule {
|
|
|
58
61
|
FormsModule,
|
|
59
62
|
MJDropdownComponent,
|
|
60
63
|
ExplorerSettingsModule,
|
|
61
|
-
SharedGenericModule
|
|
64
|
+
SharedGenericModule,
|
|
65
|
+
SearchModule], exports: [ShellComponent] }); })();
|
|
62
66
|
//# sourceMappingURL=shell.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.module.js","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;;
|
|
1
|
+
{"version":3,"file":"shell.module.js","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AA0BzD,MAAM,OAAO,WAAW;qGAAX,WAAW;4DAAX,WAAW;iEAPX;YACT,qBAAqB;SACtB,YATC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,sBAAsB;YACtB,mBAAmB;YACnB,YAAY;;iFASH,WAAW;cAxBvB,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,cAAc;oBACd,oBAAoB;oBACpB,eAAe;oBACf,qBAAqB;oBACrB,wBAAwB;oBACxB,uBAAuB;iBACxB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,sBAAsB;oBACtB,mBAAmB;oBACnB,YAAY;iBACb;gBACD,SAAS,EAAE;oBACT,qBAAqB;iBACtB;gBACD,OAAO,EAAE;oBACP,cAAc;iBACf;aACF;;wFACY,WAAW,mBAtBpB,cAAc;QACd,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,wBAAwB;QACxB,uBAAuB,aAGvB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,sBAAsB;QACtB,mBAAmB;QACnB,YAAY,aAMZ,cAAc","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ShellComponent } from './shell.component';\nimport { AppSwitcherComponent } from './components/header/app-switcher.component';\nimport { AppNavComponent } from './components/header/app-nav.component';\nimport { TabContainerComponent } from './components/tabs/tab-container.component';\nimport { AppAccessDialogComponent } from './components/dialogs/app-access-dialog.component';\nimport { CommandPaletteComponent } from '../command-palette/command-palette.component';\nimport { CommandPaletteService } from '../command-palette/command-palette.service';\nimport { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\nimport { MJDropdownComponent } from '@memberjunction/ng-ui-components';\nimport { SearchModule } from '@memberjunction/ng-search';\n\n@NgModule({\n declarations: [\n ShellComponent,\n AppSwitcherComponent,\n AppNavComponent,\n TabContainerComponent,\n AppAccessDialogComponent,\n CommandPaletteComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MJDropdownComponent,\n ExplorerSettingsModule,\n SharedGenericModule,\n SearchModule\n ],\n providers: [\n CommandPaletteService\n ],\n exports: [\n ShellComponent\n ]\n})\nexport class ShellModule { }\n"]}
|
|
@@ -11,6 +11,12 @@ export declare class AddItemComponent implements OnInit {
|
|
|
11
11
|
selectedEntity: any;
|
|
12
12
|
selectedView: any;
|
|
13
13
|
selectedReport: any;
|
|
14
|
+
selectedViewMode: string;
|
|
15
|
+
viewModeOptions: {
|
|
16
|
+
label: string;
|
|
17
|
+
value: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
}[];
|
|
14
20
|
Entities: any[];
|
|
15
21
|
Views: any[];
|
|
16
22
|
Reports: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-item.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/single-dashboard/Components/add-item/add-item.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAU,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAW,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAE1D,qBAMa,gBAAiB,YAAW,MAAM;
|
|
1
|
+
{"version":3,"file":"add-item.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/single-dashboard/Components/add-item/add-item.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAU,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAW,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAE1D,qBAMa,gBAAiB,YAAW,MAAM;IAuBjC,OAAO,CAAC,aAAa;IAtBvB,OAAO,oBAA2B;IACnC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,UAAU,EAAE,OAAO,CAAS;IAC5B,YAAY,EAAE,GAAG,CAAQ;IACzB,cAAc,EAAE,GAAG,CAAQ;IAC3B,YAAY,EAAE,GAAG,CAAQ;IACzB,cAAc,EAAE,GAAG,CAAQ;IAC3B,gBAAgB,EAAE,MAAM,CAAU;IAClC,eAAe;;;;QAKpB;IACK,QAAQ,EAAE,GAAG,EAAE,CAAM;IACrB,KAAK,EAAE,GAAG,EAAE,CAAM;IAClB,OAAO,EAAE,GAAG,EAAE,CAAM;IAC3B,IAAW,aAAa,IAAI,GAAG,EAAE,CAEhC;IACD,OAAO,CAAC,EAAE,CAA4B;gBAElB,aAAa,EAAE,aAAa;IAEhD,QAAQ,IAAI,IAAI;IASV,oBAAoB,CAAC,KAAK,EAAE,GAAG;IAQ/B,QAAQ;IAeR,UAAU;IAmBhB,cAAc,CAAC,KAAK,EAAE,GAAG;IAOzB,YAAY,CAAC,KAAK,EAAE,GAAG;IAQhB,OAAO;IAwCd,WAAW;yCAnIA,gBAAgB;2CAAhB,gBAAgB;CAsI5B"}
|
|
@@ -8,31 +8,45 @@ import * as i1 from "@memberjunction/ng-shared";
|
|
|
8
8
|
import * as i2 from "@angular/forms";
|
|
9
9
|
import * as i3 from "@memberjunction/ng-shared-generic";
|
|
10
10
|
import * as i4 from "@memberjunction/ng-ui-components";
|
|
11
|
-
function
|
|
12
|
-
const
|
|
11
|
+
function AddItemComponent_Case_8_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
13
13
|
i0.ɵɵelementStart(0, "label");
|
|
14
|
-
i0.ɵɵtext(1, "
|
|
15
|
-
i0.ɵɵ
|
|
16
|
-
i0.ɵɵ
|
|
17
|
-
i0.ɵɵ
|
|
18
|
-
i0.ɵɵ
|
|
14
|
+
i0.ɵɵtext(1, "View ");
|
|
15
|
+
i0.ɵɵelementStart(2, "span", 11);
|
|
16
|
+
i0.ɵɵtext(3, "(optional \u2014 leave blank for default)");
|
|
17
|
+
i0.ɵɵelementEnd();
|
|
18
|
+
i0.ɵɵelement(4, "br");
|
|
19
|
+
i0.ɵɵelementStart(5, "mj-dropdown", 3);
|
|
20
|
+
i0.ɵɵlistener("ValueChange", function AddItemComponent_Case_8_Conditional_4_Conditional_0_Template_mj_dropdown_ValueChange_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onViewChange($event)); });
|
|
21
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AddItemComponent_Case_8_Conditional_4_Conditional_0_Template_mj_dropdown_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedView, $event) || (ctx_r1.selectedView = $event); return i0.ɵɵresetView($event); });
|
|
19
22
|
i0.ɵɵelementEnd()();
|
|
20
23
|
} if (rf & 2) {
|
|
21
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
22
|
-
i0.ɵɵadvance(
|
|
24
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
25
|
+
i0.ɵɵadvance(5);
|
|
23
26
|
i0.ɵɵproperty("Data", ctx_r1.Views)("TextField", "Name")("ValueField", "ID");
|
|
24
27
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.selectedView);
|
|
25
28
|
} }
|
|
29
|
+
function AddItemComponent_Case_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
31
|
+
i0.ɵɵconditionalCreate(0, AddItemComponent_Case_8_Conditional_4_Conditional_0_Template, 6, 4, "label");
|
|
32
|
+
i0.ɵɵelementStart(1, "label");
|
|
33
|
+
i0.ɵɵtext(2, "View Mode ");
|
|
34
|
+
i0.ɵɵelement(3, "br");
|
|
35
|
+
i0.ɵɵelementStart(4, "mj-dropdown", 10);
|
|
36
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AddItemComponent_Case_8_Conditional_4_Template_mj_dropdown_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedViewMode, $event) || (ctx_r1.selectedViewMode = $event); return i0.ɵɵresetView($event); });
|
|
37
|
+
i0.ɵɵelementEnd()();
|
|
38
|
+
} if (rf & 2) {
|
|
39
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
40
|
+
i0.ɵɵconditional(ctx_r1.Views.length ? 0 : -1);
|
|
41
|
+
i0.ɵɵadvance(4);
|
|
42
|
+
i0.ɵɵproperty("Data", ctx_r1.viewModeOptions)("TextField", "label")("ValueField", "value");
|
|
43
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.selectedViewMode);
|
|
44
|
+
} }
|
|
26
45
|
function AddItemComponent_Case_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
27
46
|
i0.ɵɵelement(0, "mj-loading", 9);
|
|
28
47
|
} if (rf & 2) {
|
|
29
48
|
i0.ɵɵproperty("showText", false);
|
|
30
49
|
} }
|
|
31
|
-
function AddItemComponent_Case_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
i0.ɵɵelementStart(0, "div", 10);
|
|
33
|
-
i0.ɵɵtext(1, " No views available for this entity ");
|
|
34
|
-
i0.ɵɵelementEnd();
|
|
35
|
-
} }
|
|
36
50
|
function AddItemComponent_Case_8_Template(rf, ctx) { if (rf & 1) {
|
|
37
51
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
38
52
|
i0.ɵɵelementStart(0, "label");
|
|
@@ -42,29 +56,26 @@ function AddItemComponent_Case_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
42
56
|
i0.ɵɵlistener("ValueChange", function AddItemComponent_Case_8_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEntityChange($event)); });
|
|
43
57
|
i0.ɵɵtwoWayListener("ngModelChange", function AddItemComponent_Case_8_Template_mj_dropdown_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedEntity, $event) || (ctx_r1.selectedEntity = $event); return i0.ɵɵresetView($event); });
|
|
44
58
|
i0.ɵɵelementEnd()();
|
|
45
|
-
i0.ɵɵconditionalCreate(4, AddItemComponent_Case_8_Conditional_4_Template,
|
|
59
|
+
i0.ɵɵconditionalCreate(4, AddItemComponent_Case_8_Conditional_4_Template, 5, 5);
|
|
46
60
|
i0.ɵɵconditionalCreate(5, AddItemComponent_Case_8_Conditional_5_Template, 1, 1, "mj-loading", 9);
|
|
47
|
-
i0.ɵɵconditionalCreate(6, AddItemComponent_Case_8_Conditional_6_Template, 2, 0, "div", 10);
|
|
48
61
|
} if (rf & 2) {
|
|
49
62
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
50
63
|
i0.ɵɵadvance(3);
|
|
51
64
|
i0.ɵɵproperty("Data", ctx_r1.Entities)("TextField", "Name")("ValueField", "ID");
|
|
52
65
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.selectedEntity);
|
|
53
66
|
i0.ɵɵadvance();
|
|
54
|
-
i0.ɵɵconditional(ctx_r1.selectedEntity && ctx_r1.
|
|
55
|
-
i0.ɵɵadvance();
|
|
56
|
-
i0.ɵɵconditional(ctx_r1.selectedEntity && !ctx_r1.Views.length && ctx_r1.showloader ? 5 : -1);
|
|
67
|
+
i0.ɵɵconditional(ctx_r1.selectedEntity && !ctx_r1.showloader ? 4 : -1);
|
|
57
68
|
i0.ɵɵadvance();
|
|
58
|
-
i0.ɵɵconditional(ctx_r1.selectedEntity &&
|
|
69
|
+
i0.ɵɵconditional(ctx_r1.selectedEntity && ctx_r1.showloader ? 5 : -1);
|
|
59
70
|
} }
|
|
60
71
|
function AddItemComponent_Case_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
-
const
|
|
72
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
62
73
|
i0.ɵɵelementStart(0, "label");
|
|
63
74
|
i0.ɵɵtext(1, "Reports ");
|
|
64
75
|
i0.ɵɵelement(2, "br");
|
|
65
76
|
i0.ɵɵelementStart(3, "mj-dropdown", 3);
|
|
66
|
-
i0.ɵɵlistener("ValueChange", function AddItemComponent_Case_9_Conditional_0_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(
|
|
67
|
-
i0.ɵɵtwoWayListener("ngModelChange", function AddItemComponent_Case_9_Conditional_0_Template_mj_dropdown_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(
|
|
77
|
+
i0.ɵɵlistener("ValueChange", function AddItemComponent_Case_9_Conditional_0_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onViewChange($event)); });
|
|
78
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AddItemComponent_Case_9_Conditional_0_Template_mj_dropdown_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedReport, $event) || (ctx_r1.selectedReport = $event); return i0.ɵɵresetView($event); });
|
|
68
79
|
i0.ɵɵelementEnd()();
|
|
69
80
|
} if (rf & 2) {
|
|
70
81
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -78,14 +89,14 @@ function AddItemComponent_Case_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
78
89
|
i0.ɵɵproperty("showText", false);
|
|
79
90
|
} }
|
|
80
91
|
function AddItemComponent_Case_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
-
i0.ɵɵelementStart(0, "div",
|
|
92
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
82
93
|
i0.ɵɵtext(1, " No reports available ");
|
|
83
94
|
i0.ɵɵelementEnd();
|
|
84
95
|
} }
|
|
85
96
|
function AddItemComponent_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
86
97
|
i0.ɵɵconditionalCreate(0, AddItemComponent_Case_9_Conditional_0_Template, 4, 4, "label");
|
|
87
98
|
i0.ɵɵconditionalCreate(1, AddItemComponent_Case_9_Conditional_1_Template, 1, 1, "mj-loading", 9);
|
|
88
|
-
i0.ɵɵconditionalCreate(2, AddItemComponent_Case_9_Conditional_2_Template, 2, 0, "div",
|
|
99
|
+
i0.ɵɵconditionalCreate(2, AddItemComponent_Case_9_Conditional_2_Template, 2, 0, "div", 12);
|
|
89
100
|
} if (rf & 2) {
|
|
90
101
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
91
102
|
i0.ɵɵconditional(ctx_r1.Reports.length ? 0 : -1);
|
|
@@ -103,6 +114,13 @@ export class AddItemComponent {
|
|
|
103
114
|
selectedEntity = null;
|
|
104
115
|
selectedView = null;
|
|
105
116
|
selectedReport = null;
|
|
117
|
+
selectedViewMode = 'grid';
|
|
118
|
+
viewModeOptions = [
|
|
119
|
+
{ label: 'Grid', value: 'grid', icon: 'fa-solid fa-list' },
|
|
120
|
+
{ label: 'Cards', value: 'cards', icon: 'fa-solid fa-grip' },
|
|
121
|
+
{ label: 'Timeline', value: 'timeline', icon: 'fa-solid fa-timeline' },
|
|
122
|
+
{ label: 'Map', value: 'map', icon: 'fa-solid fa-map' }
|
|
123
|
+
];
|
|
106
124
|
Entities = [];
|
|
107
125
|
Views = [];
|
|
108
126
|
Reports = [];
|
|
@@ -168,27 +186,34 @@ export class AddItemComponent {
|
|
|
168
186
|
}
|
|
169
187
|
}
|
|
170
188
|
addItem() {
|
|
171
|
-
|
|
189
|
+
// For views, allow "Default View" (no specific view selected) when an entity is chosen
|
|
190
|
+
const isViewResource = this.resourceType?.Name === 'UserViews' || this.resourceType?.Entity === 'MJ: User Views';
|
|
191
|
+
const isDefaultView = isViewResource && this.selectedEntity && !this.selectedView;
|
|
192
|
+
if (!this.selectedReport && !this.selectedView && !isDefaultView) {
|
|
172
193
|
this.sharedService.CreateSimpleNotification('Please select an item to add', 'warning', 2000);
|
|
173
194
|
return;
|
|
174
195
|
}
|
|
175
|
-
const name = this.selectedReport?.Name || this.selectedView?.Name;
|
|
176
|
-
const id = this.selectedReport?.ID || this.selectedView?.ID;
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
196
|
+
const name = this.selectedReport?.Name || this.selectedView?.Name || (isDefaultView ? `${this.selectedEntity.Name} (Default View)` : null);
|
|
197
|
+
const id = this.selectedReport?.ID || this.selectedView?.ID || null;
|
|
198
|
+
// Build configuration — include viewMode for view resources
|
|
199
|
+
const configuration = {};
|
|
200
|
+
if (isViewResource && this.selectedViewMode && this.selectedViewMode !== 'grid') {
|
|
201
|
+
configuration['viewMode'] = this.selectedViewMode;
|
|
202
|
+
}
|
|
203
|
+
if (isDefaultView && this.selectedEntity) {
|
|
204
|
+
configuration['Entity'] = this.selectedEntity.Name;
|
|
180
205
|
}
|
|
181
206
|
const dashboardItem = {
|
|
182
|
-
title: name ? name : 'New Item
|
|
207
|
+
title: name ? name : 'New Item',
|
|
183
208
|
col: 1,
|
|
184
209
|
rowSpan: 3,
|
|
185
210
|
colSpan: 2,
|
|
186
211
|
ResourceData: new ResourceData({
|
|
187
212
|
Name: name,
|
|
188
|
-
ResourceType: this.resourceType.Name,
|
|
213
|
+
ResourceType: this.resourceType.Name,
|
|
189
214
|
ResourceTypeID: this.resourceType.ID,
|
|
190
215
|
ResourceRecordID: id,
|
|
191
|
-
Configuration:
|
|
216
|
+
Configuration: configuration
|
|
192
217
|
}),
|
|
193
218
|
};
|
|
194
219
|
this.sharedService.CreateSimpleNotification(`Added "${name}" to dashboard`, 'success', 2000);
|
|
@@ -198,7 +223,7 @@ export class AddItemComponent {
|
|
|
198
223
|
this.onClose.emit();
|
|
199
224
|
}
|
|
200
225
|
static ɵfac = function AddItemComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AddItemComponent)(i0.ɵɵdirectiveInject(i1.SharedService)); };
|
|
201
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AddItemComponent, selectors: [["app-add-item-dialog"]], inputs: { selectedResource: "selectedResource" }, outputs: { onClose: "onClose" }, standalone: false, decls: 16, vars: 10, consts: [[1, "k-overlay"], ["Title", "Add Item to Dashboard", 3, "Close", "Visible", "Width", "MinHeight", "MinWidth", "Resizable"], [1, "k-d-flex", "k-flex-col", "resource-wrap"], [3, "ValueChange", "ngModelChange", "Data", "TextField", "ValueField", "ngModel"], [1, "user-view-wrap"], [1, "k-actions", "k-actions-end", "popup-actions", "customBtn"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "fa-solid", "fa-check"], ["mjButton", "", "variant", "outline", 3, "click"], ["size", "medium", 3, "showText"], [1, "
|
|
226
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AddItemComponent, selectors: [["app-add-item-dialog"]], inputs: { selectedResource: "selectedResource" }, outputs: { onClose: "onClose" }, standalone: false, decls: 16, vars: 10, consts: [[1, "k-overlay"], ["Title", "Add Item to Dashboard", 3, "Close", "Visible", "Width", "MinHeight", "MinWidth", "Resizable"], [1, "k-d-flex", "k-flex-col", "resource-wrap"], [3, "ValueChange", "ngModelChange", "Data", "TextField", "ValueField", "ngModel"], [1, "user-view-wrap"], [1, "k-actions", "k-actions-end", "popup-actions", "customBtn"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "fa-solid", "fa-check"], ["mjButton", "", "variant", "outline", 3, "click"], ["size", "medium", 3, "showText"], [3, "ngModelChange", "Data", "TextField", "ValueField", "ngModel"], [1, "optional-hint"], [1, "no-items-message"]], template: function AddItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
202
227
|
i0.ɵɵelement(0, "div", 0);
|
|
203
228
|
i0.ɵɵelementStart(1, "mj-window", 1);
|
|
204
229
|
i0.ɵɵlistener("Close", function AddItemComponent_Template_mj_window_Close_1_listener() { return ctx.closeDialog(); });
|
|
@@ -210,7 +235,7 @@ export class AddItemComponent {
|
|
|
210
235
|
i0.ɵɵtwoWayListener("ngModelChange", function AddItemComponent_Template_mj_dropdown_ngModelChange_6_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.resourceType, $event) || (ctx.resourceType = $event); return $event; });
|
|
211
236
|
i0.ɵɵelementEnd()();
|
|
212
237
|
i0.ɵɵelementStart(7, "div", 4);
|
|
213
|
-
i0.ɵɵconditionalCreate(8, AddItemComponent_Case_8_Template,
|
|
238
|
+
i0.ɵɵconditionalCreate(8, AddItemComponent_Case_8_Template, 6, 6)(9, AddItemComponent_Case_9_Template, 3, 3);
|
|
214
239
|
i0.ɵɵelementEnd()();
|
|
215
240
|
i0.ɵɵelementStart(10, "div", 5)(11, "button", 6);
|
|
216
241
|
i0.ɵɵlistener("click", function AddItemComponent_Template_button_click_11_listener() { return ctx.addItem(); });
|
|
@@ -230,11 +255,11 @@ export class AddItemComponent {
|
|
|
230
255
|
i0.ɵɵtwoWayProperty("ngModel", ctx.resourceType);
|
|
231
256
|
i0.ɵɵadvance(2);
|
|
232
257
|
i0.ɵɵconditional((tmp_9_0 = ctx.resourceType.Entity) === "MJ: User Views" ? 8 : tmp_9_0 === "Reports" ? 9 : -1);
|
|
233
|
-
} }, dependencies: [i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i4.MJButtonDirective, i4.MJDropdownComponent, i4.MJWindowComponent], styles: [".popup-actions[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n .modal-body-wrap .k-window-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n flex: 1;\n padding: 0;\n}\n.resource-wrap[_ngcontent-%COMP%] {\n flex: 1;\n padding: 24px;\n margin: 16px;\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n.user-view-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n .resource-wrap .k-label {\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n .resource-wrap .k-dropdownlist {\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n background: transparent;\n line-height: 32px;\n margin: 0;\n}\n .customBtn button {\n flex: 1;\n border-radius: 10px;\n line-height: 34px;\n}\n\n.no-items-message[_ngcontent-%COMP%], .no-views-message[_ngcontent-%COMP%] {\n padding: 12px;\n background-color: var(--mj-bg-surface-card);\n border-radius: 4px;\n color: var(--mj-text-muted);\n text-align: center;\n font-size: 14px;\n margin-top: 5px;\n border: 1px dashed var(--mj-border-default);\n}"] });
|
|
258
|
+
} }, dependencies: [i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i4.MJButtonDirective, i4.MJDropdownComponent, i4.MJWindowComponent], styles: [".popup-actions[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n .modal-body-wrap .k-window-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n flex: 1;\n padding: 0;\n}\n.resource-wrap[_ngcontent-%COMP%] {\n flex: 1;\n padding: 24px;\n margin: 16px;\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n.user-view-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n .resource-wrap .k-label {\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n .resource-wrap .k-dropdownlist {\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n background: transparent;\n line-height: 32px;\n margin: 0;\n}\n .customBtn button {\n flex: 1;\n border-radius: 10px;\n line-height: 34px;\n}\n\n.optional-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 400;\n margin-left: 4px;\n}\n\n.no-items-message[_ngcontent-%COMP%], .no-views-message[_ngcontent-%COMP%] {\n padding: 12px;\n background-color: var(--mj-bg-surface-card);\n border-radius: 4px;\n color: var(--mj-text-muted);\n text-align: center;\n font-size: 14px;\n margin-top: 5px;\n border: 1px dashed var(--mj-border-default);\n}"] });
|
|
234
259
|
}
|
|
235
260
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddItemComponent, [{
|
|
236
261
|
type: Component,
|
|
237
|
-
args: [{ standalone: false, selector: 'app-add-item-dialog', template: "<div class=\"k-overlay\"></div>\n<mj-window [Visible]=\"true\" [Width]=\"500\" [MinHeight]=\"300\" [MinWidth]=\"400\" [Resizable]=\"true\" (Close)=\"closeDialog()\"\n Title=\"Add Item to Dashboard\">\n <div class=\"k-d-flex k-flex-col resource-wrap\">\n <label>Resource Type\n <br />\n <mj-dropdown [Data]=\"ResourceTypes\" [TextField]=\"'DisplayName'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onResourceTypeChange($any($event))\" [(ngModel)]=\"resourceType\">\n </mj-dropdown>\n </label>\n <div class=\"user-view-wrap\">\n @switch (resourceType.Entity ) {\n @case ('MJ: User Views') {\n <label>Entity\n <br />\n <mj-dropdown [Data]=\"Entities\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onEntityChange($any($event))\" [(ngModel)]=\"selectedEntity\">\n </mj-dropdown>\n </label>\n @if (selectedEntity && Views.length) {\n
|
|
262
|
+
args: [{ standalone: false, selector: 'app-add-item-dialog', template: "<div class=\"k-overlay\"></div>\n<mj-window [Visible]=\"true\" [Width]=\"500\" [MinHeight]=\"300\" [MinWidth]=\"400\" [Resizable]=\"true\" (Close)=\"closeDialog()\"\n Title=\"Add Item to Dashboard\">\n <div class=\"k-d-flex k-flex-col resource-wrap\">\n <label>Resource Type\n <br />\n <mj-dropdown [Data]=\"ResourceTypes\" [TextField]=\"'DisplayName'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onResourceTypeChange($any($event))\" [(ngModel)]=\"resourceType\">\n </mj-dropdown>\n </label>\n <div class=\"user-view-wrap\">\n @switch (resourceType.Entity ) {\n @case ('MJ: User Views') {\n <label>Entity\n <br />\n <mj-dropdown [Data]=\"Entities\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onEntityChange($any($event))\" [(ngModel)]=\"selectedEntity\">\n </mj-dropdown>\n </label>\n @if (selectedEntity && !showloader) {\n @if (Views.length) {\n <label>View\n <span class=\"optional-hint\">(optional \u2014 leave blank for default)</span>\n <br />\n <mj-dropdown [Data]=\"Views\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onViewChange($any($event))\" [(ngModel)]=\"selectedView\">\n </mj-dropdown>\n </label>\n }\n <!-- View Mode Selector -->\n <label>View Mode\n <br />\n <mj-dropdown [Data]=\"viewModeOptions\" [TextField]=\"'label'\" [ValueField]=\"'value'\"\n [(ngModel)]=\"selectedViewMode\">\n </mj-dropdown>\n </label>\n }\n @if (selectedEntity && showloader) {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n }\n @case ('Reports') {\n @if (Reports.length) {\n <label>Reports\n <br />\n <mj-dropdown [Data]=\"Reports\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onViewChange($any($event))\" [(ngModel)]=\"selectedReport\">\n </mj-dropdown>\n </label>\n }\n @if (!Reports.length && showloader) {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n @if (!Reports.length && !showloader) {\n <div class=\"no-items-message\">\n No reports available\n </div>\n }\n }\n }\n </div>\n </div>\n <div class=\"k-actions k-actions-end popup-actions customBtn\">\n <button mjButton variant=\"primary\" (click)=\"addItem()\">\n <span class=\"fa-solid fa-check\"></span> Add\n </button>\n <button mjButton variant=\"outline\" (click)=\"closeDialog()\">Cancel</button>\n </div>\n</mj-window>\n", styles: [".popup-actions {\n width: 100%;\n padding: 10px;\n border-top: 1px solid rgba(0, 0, 0, 0.08);\n}\n::ng-deep .modal-body-wrap .k-window-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n flex: 1;\n padding: 0;\n}\n.resource-wrap {\n flex: 1;\n padding: 24px;\n margin: 16px;\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n.user-view-wrap {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n::ng-deep .resource-wrap .k-label {\n color: var(--mj-text-secondary);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n::ng-deep .resource-wrap .k-dropdownlist {\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n background: transparent;\n line-height: 32px;\n margin: 0;\n}\n::ng-deep .customBtn button {\n flex: 1;\n border-radius: 10px;\n line-height: 34px;\n}\n\n.optional-hint {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 400;\n margin-left: 4px;\n}\n\n.no-items-message, .no-views-message {\n padding: 12px;\n background-color: var(--mj-bg-surface-card);\n border-radius: 4px;\n color: var(--mj-text-muted);\n text-align: center;\n font-size: 14px;\n margin-top: 5px;\n border: 1px dashed var(--mj-border-default);\n}\n"] }]
|
|
238
263
|
}], () => [{ type: i1.SharedService }], { onClose: [{
|
|
239
264
|
type: Output
|
|
240
265
|
}], selectedResource: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-item.component.js","sourceRoot":"","sources":["../../../../../src/lib/single-dashboard/Components/add-item/add-item.component.ts","../../../../../src/lib/single-dashboard/Components/add-item/add-item.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { MJResourceTypeEntity, ViewInfo} from '@memberjunction/core-entities';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { SharedService } from '@memberjunction/ng-shared';\n\n@Component({\n standalone: false,\n selector: 'app-add-item-dialog',\n templateUrl: './add-item.component.html',\n styleUrls: ['./add-item.component.css']\n})\nexport class AddItemComponent implements OnInit {\n @Output() onClose = new EventEmitter<any>();\n @Input() selectedResource!:MJResourceTypeEntity | null;\n public showloader: boolean = false;\n public resourceType: any = null;\n public selectedEntity: any = null;\n public selectedView: any = null;\n public selectedReport: any = null;\n public Entities: any[] = [];\n public Views: any[] = [];\n public Reports: any[] = [];\n public get ResourceTypes(): any[] {\n return SharedService.Instance.ResourceTypes.filter((rt: any) => rt.Name !== 'Dashboards' && rt.Name !== 'Records');\n }\n private md: Metadata = new Metadata();\n\n constructor(private sharedService: SharedService) { }\n\n ngOnInit(): void {\n this.resourceType = this.selectedResource || SharedService.Instance.ViewResourceType;\n this.onResourceTypeChange(this.resourceType);\n // Sort entities alphabetically by name\n this.Entities = [...this.md.Entities].sort((a, b) => \n a.Name.localeCompare(b.Name)\n );\n }\n\n async onResourceTypeChange(event: any) {\n this.resourceType = event;\n this.selectedEntity = null;\n if (this.resourceType.Name === 'Reports') {\n this.getReports();\n }\n }\n\n async getViews() {\n if (!this.selectedEntity) return;\n \n this.showloader = true;\n this.Views = await ViewInfo.GetViewsForUser(this.selectedEntity.ID);\n \n // Sort views alphabetically\n if (this.Views && this.Views.length) {\n this.Views = this.Views.sort((a, b) => a.Name.localeCompare(b.Name));\n }\n \n // Always set showloader to false when done, even if no views found\n this.showloader = false;\n }\n\n async getReports() {\n if (!this.resourceType) return;\n \n this.showloader = true;\n this.selectedReport = null;\n this.Reports = [];\n \n const rv = new RunView();\n const reports = await rv.RunView({ EntityName: this.resourceType.Entity, ExtraFilter: `UserID='${this.md.CurrentUser.ID}'` });\n \n if (reports.Success && reports.Results) {\n // Sort reports alphabetically\n this.Reports = reports.Results.sort((a, b) => a.Name.localeCompare(b.Name));\n }\n \n // Always set showloader to false when done, even if no reports found\n this.showloader = false;\n }\n\n onEntityChange(event: any) {\n this.selectedEntity = event;\n this.selectedView = null;\n this.selectedReport = null;\n this.getViews();\n }\n\n onViewChange(event: any) {\n if (this.resourceType.Name === 'Reports') {\n this.selectedReport = event;\n } else {\n this.selectedView = event;\n }\n }\n\n public addItem() {\n if (!this.selectedReport && !this.selectedView) {\n this.sharedService.CreateSimpleNotification('Please select an item to add', 'warning', 2000);\n return;\n }\n \n const name = this.selectedReport?.Name || this.selectedView?.Name;\n const id = this.selectedReport?.ID || this.selectedView?.ID;\n \n if (!id) {\n this.sharedService.CreateSimpleNotification('Invalid selection', 'error', 2000);\n return;\n }\n \n const dashboardItem = {\n title: name ? name : 'New Item - ' + id,\n col: 1,\n rowSpan: 3,\n colSpan: 2,\n ResourceData: new ResourceData({\n Name: name,\n ResourceType: this.resourceType.Name, // Add ResourceType\n ResourceTypeID: this.resourceType.ID,\n ResourceRecordID: id,\n Configuration: {}\n }),\n };\n \n this.sharedService.CreateSimpleNotification(`Added \"${name}\" to dashboard`, 'success', 2000);\n this.onClose.emit(dashboardItem);\n\n }\n\n closeDialog() {\n this.onClose.emit();\n }\n}\n","<div class=\"k-overlay\"></div>\n<mj-window [Visible]=\"true\" [Width]=\"500\" [MinHeight]=\"300\" [MinWidth]=\"400\" [Resizable]=\"true\" (Close)=\"closeDialog()\"\n Title=\"Add Item to Dashboard\">\n <div class=\"k-d-flex k-flex-col resource-wrap\">\n <label>Resource Type\n <br />\n <mj-dropdown [Data]=\"ResourceTypes\" [TextField]=\"'DisplayName'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onResourceTypeChange($any($event))\" [(ngModel)]=\"resourceType\">\n </mj-dropdown>\n </label>\n <div class=\"user-view-wrap\">\n @switch (resourceType.Entity ) {\n @case ('MJ: User Views') {\n <label>Entity\n <br />\n <mj-dropdown [Data]=\"Entities\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onEntityChange($any($event))\" [(ngModel)]=\"selectedEntity\">\n </mj-dropdown>\n </label>\n @if (selectedEntity && Views.length) {\n <label>Views\n <br />\n <mj-dropdown [Data]=\"Views\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onViewChange($any($event))\" [(ngModel)]=\"selectedView\">\n </mj-dropdown>\n </label>\n }\n @if (selectedEntity && !Views.length && showloader) {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n @if (selectedEntity && !Views.length && !showloader) {\n <div class=\"no-views-message\">\n No views available for this entity\n </div>\n }\n }\n @case ('Reports') {\n @if (Reports.length) {\n <label>Reports\n <br />\n <mj-dropdown [Data]=\"Reports\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onViewChange($any($event))\" [(ngModel)]=\"selectedReport\">\n </mj-dropdown>\n </label>\n }\n @if (!Reports.length && showloader) {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n @if (!Reports.length && !showloader) {\n <div class=\"no-items-message\">\n No reports available\n </div>\n }\n }\n }\n </div>\n </div>\n <div class=\"k-actions k-actions-end popup-actions customBtn\">\n <button mjButton variant=\"primary\" (click)=\"addItem()\">\n <span class=\"fa-solid fa-check\"></span> Add\n </button>\n <button mjButton variant=\"outline\" (click)=\"closeDialog()\">Cancel</button>\n </div>\n</mj-window>\n"]}
|
|
1
|
+
{"version":3,"file":"add-item.component.js","sourceRoot":"","sources":["../../../../../src/lib/single-dashboard/Components/add-item/add-item.component.ts","../../../../../src/lib/single-dashboard/Components/add-item/add-item.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { MJResourceTypeEntity, ViewInfo} from '@memberjunction/core-entities';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { SharedService } from '@memberjunction/ng-shared';\n\n@Component({\n standalone: false,\n selector: 'app-add-item-dialog',\n templateUrl: './add-item.component.html',\n styleUrls: ['./add-item.component.css']\n})\nexport class AddItemComponent implements OnInit {\n @Output() onClose = new EventEmitter<any>();\n @Input() selectedResource!:MJResourceTypeEntity | null;\n public showloader: boolean = false;\n public resourceType: any = null;\n public selectedEntity: any = null;\n public selectedView: any = null;\n public selectedReport: any = null;\n public selectedViewMode: string = 'grid';\n public viewModeOptions = [\n { label: 'Grid', value: 'grid', icon: 'fa-solid fa-list' },\n { label: 'Cards', value: 'cards', icon: 'fa-solid fa-grip' },\n { label: 'Timeline', value: 'timeline', icon: 'fa-solid fa-timeline' },\n { label: 'Map', value: 'map', icon: 'fa-solid fa-map' }\n ];\n public Entities: any[] = [];\n public Views: any[] = [];\n public Reports: any[] = [];\n public get ResourceTypes(): any[] {\n return SharedService.Instance.ResourceTypes.filter((rt: any) => rt.Name !== 'Dashboards' && rt.Name !== 'Records');\n }\n private md: Metadata = new Metadata();\n\n constructor(private sharedService: SharedService) { }\n\n ngOnInit(): void {\n this.resourceType = this.selectedResource || SharedService.Instance.ViewResourceType;\n this.onResourceTypeChange(this.resourceType);\n // Sort entities alphabetically by name\n this.Entities = [...this.md.Entities].sort((a, b) => \n a.Name.localeCompare(b.Name)\n );\n }\n\n async onResourceTypeChange(event: any) {\n this.resourceType = event;\n this.selectedEntity = null;\n if (this.resourceType.Name === 'Reports') {\n this.getReports();\n }\n }\n\n async getViews() {\n if (!this.selectedEntity) return;\n \n this.showloader = true;\n this.Views = await ViewInfo.GetViewsForUser(this.selectedEntity.ID);\n \n // Sort views alphabetically\n if (this.Views && this.Views.length) {\n this.Views = this.Views.sort((a, b) => a.Name.localeCompare(b.Name));\n }\n \n // Always set showloader to false when done, even if no views found\n this.showloader = false;\n }\n\n async getReports() {\n if (!this.resourceType) return;\n \n this.showloader = true;\n this.selectedReport = null;\n this.Reports = [];\n \n const rv = new RunView();\n const reports = await rv.RunView({ EntityName: this.resourceType.Entity, ExtraFilter: `UserID='${this.md.CurrentUser.ID}'` });\n \n if (reports.Success && reports.Results) {\n // Sort reports alphabetically\n this.Reports = reports.Results.sort((a, b) => a.Name.localeCompare(b.Name));\n }\n \n // Always set showloader to false when done, even if no reports found\n this.showloader = false;\n }\n\n onEntityChange(event: any) {\n this.selectedEntity = event;\n this.selectedView = null;\n this.selectedReport = null;\n this.getViews();\n }\n\n onViewChange(event: any) {\n if (this.resourceType.Name === 'Reports') {\n this.selectedReport = event;\n } else {\n this.selectedView = event;\n }\n }\n\n public addItem() {\n // For views, allow \"Default View\" (no specific view selected) when an entity is chosen\n const isViewResource = this.resourceType?.Name === 'UserViews' || this.resourceType?.Entity === 'MJ: User Views';\n const isDefaultView = isViewResource && this.selectedEntity && !this.selectedView;\n\n if (!this.selectedReport && !this.selectedView && !isDefaultView) {\n this.sharedService.CreateSimpleNotification('Please select an item to add', 'warning', 2000);\n return;\n }\n\n const name = this.selectedReport?.Name || this.selectedView?.Name || (isDefaultView ? `${this.selectedEntity.Name} (Default View)` : null);\n const id = this.selectedReport?.ID || this.selectedView?.ID || null;\n\n // Build configuration — include viewMode for view resources\n const configuration: Record<string, unknown> = {};\n if (isViewResource && this.selectedViewMode && this.selectedViewMode !== 'grid') {\n configuration['viewMode'] = this.selectedViewMode;\n }\n if (isDefaultView && this.selectedEntity) {\n configuration['Entity'] = this.selectedEntity.Name;\n }\n\n const dashboardItem = {\n title: name ? name : 'New Item',\n col: 1,\n rowSpan: 3,\n colSpan: 2,\n ResourceData: new ResourceData({\n Name: name,\n ResourceType: this.resourceType.Name,\n ResourceTypeID: this.resourceType.ID,\n ResourceRecordID: id,\n Configuration: configuration\n }),\n };\n\n this.sharedService.CreateSimpleNotification(`Added \"${name}\" to dashboard`, 'success', 2000);\n this.onClose.emit(dashboardItem);\n }\n\n closeDialog() {\n this.onClose.emit();\n }\n}\n","<div class=\"k-overlay\"></div>\n<mj-window [Visible]=\"true\" [Width]=\"500\" [MinHeight]=\"300\" [MinWidth]=\"400\" [Resizable]=\"true\" (Close)=\"closeDialog()\"\n Title=\"Add Item to Dashboard\">\n <div class=\"k-d-flex k-flex-col resource-wrap\">\n <label>Resource Type\n <br />\n <mj-dropdown [Data]=\"ResourceTypes\" [TextField]=\"'DisplayName'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onResourceTypeChange($any($event))\" [(ngModel)]=\"resourceType\">\n </mj-dropdown>\n </label>\n <div class=\"user-view-wrap\">\n @switch (resourceType.Entity ) {\n @case ('MJ: User Views') {\n <label>Entity\n <br />\n <mj-dropdown [Data]=\"Entities\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onEntityChange($any($event))\" [(ngModel)]=\"selectedEntity\">\n </mj-dropdown>\n </label>\n @if (selectedEntity && !showloader) {\n @if (Views.length) {\n <label>View\n <span class=\"optional-hint\">(optional — leave blank for default)</span>\n <br />\n <mj-dropdown [Data]=\"Views\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onViewChange($any($event))\" [(ngModel)]=\"selectedView\">\n </mj-dropdown>\n </label>\n }\n <!-- View Mode Selector -->\n <label>View Mode\n <br />\n <mj-dropdown [Data]=\"viewModeOptions\" [TextField]=\"'label'\" [ValueField]=\"'value'\"\n [(ngModel)]=\"selectedViewMode\">\n </mj-dropdown>\n </label>\n }\n @if (selectedEntity && showloader) {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n }\n @case ('Reports') {\n @if (Reports.length) {\n <label>Reports\n <br />\n <mj-dropdown [Data]=\"Reports\" [TextField]=\"'Name'\" [ValueField]=\"'ID'\"\n (ValueChange)=\"onViewChange($any($event))\" [(ngModel)]=\"selectedReport\">\n </mj-dropdown>\n </label>\n }\n @if (!Reports.length && showloader) {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n @if (!Reports.length && !showloader) {\n <div class=\"no-items-message\">\n No reports available\n </div>\n }\n }\n }\n </div>\n </div>\n <div class=\"k-actions k-actions-end popup-actions customBtn\">\n <button mjButton variant=\"primary\" (click)=\"addItem()\">\n <span class=\"fa-solid fa-check\"></span> Add\n </button>\n <button mjButton variant=\"outline\" (click)=\"closeDialog()\">Cancel</button>\n </div>\n</mj-window>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-dashboard.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-dashboard/single-dashboard.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,YAAY,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAEhG,OAAO,EAAE,aAAa,EAAuB,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"single-dashboard.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-dashboard/single-dashboard.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-dashboard.component.js","sourceRoot":"","sources":["../../../src/lib/single-dashboard/single-dashboard.component.ts","../../../src/lib/single-dashboard/single-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { MJDashboardEntityExtended, MJResourceTypeEntity } from '@memberjunction/core-entities';\nimport { Metadata } from '@memberjunction/core';\nimport { SharedService, RecentAccessService } from '@memberjunction/ng-shared';\nimport { ResourceContainerComponent } from '../generic/resource-container-component';\nimport { Subject, debounceTime } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\n\n@Component({\n standalone: false,\n selector: 'mj-single-dashboard',\n templateUrl: './single-dashboard.component.html',\n styleUrls: ['./single-dashboard.component.css']\n})\nexport class SingleDashboardComponent extends BaseDashboard implements OnInit {\n\n @ViewChild('dashboardNameInput') dashboardNameInput!: ElementRef<HTMLInputElement>\n\n @Input() public ResourceData!: ResourceData;\n @Output() public dashboardSaved: EventEmitter<MJDashboardEntityExtended> = new EventEmitter<MJDashboardEntityExtended>();\n @Output() public loadComplete: EventEmitter<any> = new EventEmitter<any>();\n @Output() public loadStarted: EventEmitter<any> = new EventEmitter<any>();\n\n public items: DashboardItem[] = [];\n public dashboardEntity!: MJDashboardEntityExtended;\n public config: DashboardConfigDetails = new DashboardConfigDetails();\n public isItemDialogOpened: boolean = false;\n public isEditDialogOpened: boolean = false;\n public isEditDashboardNameDialogOpened: boolean = false;\n public isDeletingDashboardItem: boolean = false;\n public allowResize: boolean = false;\n public allowReorder: boolean = false;\n public isEditingDashboard: boolean = false;\n public selectedResource!: MJResourceTypeEntity | null;\n public selectedDashboardItem!: DashboardItem | null;\n private saveChangesSubject: Subject<any> = new Subject();\n private editOnLoad: boolean = false;\n private recentAccessService: RecentAccessService;\n\n public get contentLoading(): boolean {\n for (const item of this.items) {\n if (item.contentLoading) {\n return true;\n }\n }\n return false;\n }\n\n protected initDashboard(): void {\n \n }\n protected loadData(): void {\n \n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return \"Dashboard\"\n }\n\n constructor(private route: ActivatedRoute, public sharedService: SharedService) {\n super();\n this.recentAccessService = new RecentAccessService();\n\n this.saveChangesSubject\n .pipe(debounceTime(500))\n .subscribe(() => {\n this.SaveDashboard();\n });\n\n let edit = this.route.snapshot.queryParamMap.get('edit');\n if(edit){\n this.editOnLoad = true;\n }\n }\n\n async ngOnInit(): Promise<void> {\n // load up the dashboard\n const d = this.ResourceData;\n const config = this.ResourceData.Configuration;\n if (this.ResourceData) {\n const md = new Metadata();\n let uiConfig: any = {items:[]};\n this.dashboardEntity = await md.GetEntityObject<MJDashboardEntityExtended>('MJ: Dashboards');\n if (this.ResourceData.ResourceRecordID && this.ResourceData.ResourceRecordID.length > 0) {\n await this.dashboardEntity.Load(this.ResourceData.ResourceRecordID);\n // Log access to dashboard (fire-and-forget, don't await)\n this.recentAccessService.logAccess('Dashboards', this.ResourceData.ResourceRecordID, 'dashboard');\n\n // now we have loaded and we need to get the UIConfigDetails\n const raw = this.dashboardEntity.UIConfigDetails;\n if (raw) {\n uiConfig = JSON.parse(raw);\n this.config.columns = uiConfig.columns;\n this.config.rowHeight = uiConfig.rowHeight;\n this.config.resizable = uiConfig.resizable;\n this.config.reorderable = uiConfig.reorderable;\n }\n\n //the save and canel functions call this function\n //and we only want to show the edit view once\n if(this.editOnLoad){\n this.editOnLoad = false;\n this.toggleEditDashboard(true);\n }\n }\n else {\n this.dashboardEntity.NewRecord(); // creating a new dashboard\n this.dashboardEntity.UserID = md.CurrentUser.ID;\n \n // We should never get here now because dashboard creation is handled in dashboard-browser\n // But just in case, set a better default name\n this.dashboardEntity.Name = 'My Dashboard';\n \n // Set default configuration\n this.config.columns = 4; // 4-column layout\n this.config.rowHeight = 150;\n this.config.resizable = true;\n this.config.reorderable = true;\n \n // Automatically show edit mode for new dashboards to encourage adding items\n setTimeout(() => {\n this.toggleEditDashboard(true);\n }, 500);\n }\n\n // now we need to load up the items\n this.items = [];\n //const tempItems = uiConfig.items.sort((a: any, b: any) => a.order - b.order);\n for (const item of uiConfig.items) {\n const dashboardItem = this.CreateDashboardItem(item);\n this.items.push(dashboardItem);\n }\n }\n\n this.NotifyLoadComplete();\n }\n\n protected CreateDashboardItem(item: any): DashboardItem {\n const dashboardItem = new DashboardItem();\n if (item) {\n dashboardItem.title = item.title;\n dashboardItem.order = item.order ? item.order : 0;\n dashboardItem.col = item.col;\n dashboardItem.row = item.row;\n dashboardItem.rowSpan = item.rowSpan;\n dashboardItem.colSpan = item.colSpan;\n dashboardItem.ResourceData = new ResourceData(item.ResourceData); \n }\n return dashboardItem;\n }\n\n public loadingStarted(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = true;\n this.loadStarted.emit();\n }\n }\n\n public loadingComplete(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = false;\n if (!this.contentLoading) {\n this.loadComplete.emit();\n }\n }\n }\n\n public addItem(resourceType: any = null): void {\n this.selectedResource = resourceType;\n this.isItemDialogOpened = true;\n this.isEditDialogOpened = false;\n }\n\n public closeDialog(data: any): void {\n if(data) {\n const dashboardItem = this.CreateDashboardItem(data);\n this.items.push(dashboardItem);\n console.log(dashboardItem);\n this.saveChangesSubject.next(true);\n }\n this.selectedResource = null;\n this.isItemDialogOpened = false;\n }\n\n public toggleEditDashboard(allowEdit: boolean): void {\n this.allowReorder = allowEdit;\n this.allowResize = allowEdit;\n this.isEditingDashboard = allowEdit;\n this.toggleInlineNameEdit(false);\n }\n\n public async onClickSaveDashboard(): Promise<void> {\n this.toggleEditDashboard(false);\n let result = await this.SaveDashboard();\n if(result){\n this.sharedService.CreateSimpleNotification(\"Dashboard changes have been saved.\", \"success\", 1000);\n await this.ngOnInit();\n }\n else{\n this.sharedService.CreateSimpleNotification(\"An error occured saving the dashboard changes\", \"error\", 1000);\n }\n }\n\n public async onclickCancelChanges(): Promise<void> {\n this.toggleEditDashboard(false);\n await this.ngOnInit();\n }\n\n public closeDashboardDialog(data: any = null){\n this.isEditDialogOpened = false;\n }\n\n saveChanges(data: any): void {\n if(data.config){\n this.config = data.config;\n }\n if(data.itemsChanged && data.items){\n this.items = data.items;\n this.sharedService.InvokeManualResize();\n }\n this.SaveDashboard();\n this.closeDashboardDialog();\n }\n\n public async SaveDashboard(): Promise<boolean> {\n if (this.dashboardEntity) {\n const configData = {\n columns: this.config.columns,\n rowHeight: this.config.rowHeight,\n resizable: this.config.resizable,\n reorderable: this.config.reorderable,\n items: this.items\n }\n const configJSON = JSON.stringify(configData);\n this.dashboardEntity.UIConfigDetails = configJSON;\n const result = await this.dashboardEntity.Save();\n \n return result;\n }\n else \n return false;\n }\n\n public dashboardSaveComplete(entity: MJDashboardEntityExtended): void {\n this.dashboardSaved.emit(entity);\n }\n\n public toggleInlineNameEdit(visible: boolean): void {\n this.isEditDashboardNameDialogOpened = visible;\n if(this.isEditDashboardNameDialogOpened){\n this.dashboardNameInput?.nativeElement?.focus();\n }\n }\n\n public saveDashboardName(): void {\n this.toggleInlineNameEdit(true);\n const inputValue = this.dashboardNameInput.nativeElement.value;\n if(inputValue && inputValue.length > 3){\n this.dashboardEntity.Name = inputValue;\n this.SaveDashboard();\n }\n else {\n this.sharedService.CreateSimpleNotification('Invalid dashboard name: Must be at least 3 characters.','warning', 1000);\n }\n }\n\n public cancelNameChange(): void {\n this.toggleInlineNameEdit(false);\n }\n\n public closeDeleteItemComponent(): void {\n this.selectedDashboardItem = null;\n this.isDeletingDashboardItem = false;\n }\n\n public showConfirmDeleteDashboardItem(item: DashboardItem): void {\n this.selectedDashboardItem = item;\n this.isDeletingDashboardItem = true;\n }\n\n public async deleteDashboardItem(item: DashboardItem): Promise<void> {\n this.items = this.items.filter(i => i.uniqueId != item.uniqueId);\n let result = await this.SaveDashboard();\n if(result){\n this.sharedService.CreateSimpleNotification(`Dashboard item ${item.uniqueId} deleted successfully`, \"success\", 1000);\n }\n else{\n this.sharedService.CreateSimpleNotification(`Unable to delete dashboard item ${item.uniqueId}`, \"error\", 1000);\n }\n this.selectedDashboardItem = null;\n this.isDeletingDashboardItem = false;\n }\n\n public getIsEditingItemBodyStyle(): string {\n return this.isEditingDashboard ? \"bg-light-grey\" : \"\";\n }\n\n public getIsEditingItemHeaderStyle(): string {\n return this.isEditingDashboard ? \"bg-dark-grey\" : \"bg-blue\";\n }\n\n onReorder(e: { oldIndex: number; newIndex: number; newCol?: number; newRow?: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.items.find(i => i.uniqueId === e.uniqueId) : this.items[e.oldIndex];\n if (item) {\n if (e.oldIndex !== e.newIndex) {\n this.items.splice(e.oldIndex, 1);\n this.items.splice(e.newIndex, 0, item);\n }\n item.col = e.newCol ?? item.col;\n item.row = e.newRow ?? item.row;\n }\n }\n\n onResize(e: { newColSpan: number; newRowSpan: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.items.find(i => i.uniqueId === e.uniqueId) : undefined;\n if (item) {\n item.colSpan = e.newColSpan;\n item.rowSpan = e.newRowSpan;\n }\n }\n\n onMouseEnter(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n onMouseOut(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /**\n * Get the appropriate icon for a resource type\n * @param resourceType The type of resource\n * @returns FontAwesome icon class\n */\n getResourceIcon(resourceType: string | undefined): string {\n // Default to a cube icon if type is undefined\n if (!resourceType) return 'fa-solid fa-cube';\n \n // Map resource types to appropriate FontAwesome icons\n const iconMap: {[key: string]: string} = {\n 'Reports': 'fa-solid fa-chart-line',\n 'UserViews': 'fa-solid fa-table',\n 'Dashboards': 'fa-solid fa-grip',\n 'Lists': 'fa-solid fa-list',\n 'default': 'fa-solid fa-cube'\n };\n \n return iconMap[resourceType] || iconMap['default'];\n }\n}\n\nexport class DashboardConfigDetails {\n columns: number = 4;\n rowHeight: number = 150;\n resizable: boolean = true;\n reorderable: boolean = true;\n}\n\nexport class DashboardItem {\n private static nextUniqueId: number = 1;\n private getNextUniqueID(): number {\n return DashboardItem.nextUniqueId++;\n }\n constructor() {\n this.uniqueId = this.getNextUniqueID();\n }\n uniqueId!: number;\n title!: string;\n col!: number;\n row!: number;\n rowSpan!: number;\n colSpan!: number;\n order!: number;\n ResourceData!: ResourceData;\n contentLoading: boolean = false;\n}","@if (isItemDialogOpened) {\n <app-add-item-dialog (onClose)=\"closeDialog($event)\" [selectedResource]=\"selectedResource\"></app-add-item-dialog>\n}\n@if (isEditDialogOpened) {\n <div>\n <app-edit-dashboard (onClose)=\"closeDashboardDialog($event)\" (triggerAddItem)=\"addItem($event)\" [items]=\"items\" [config]=\"config\" (onSave)=\"saveChanges($event)\"></app-edit-dashboard>\n </div>\n}\n\n@if (isDeletingDashboardItem) {\n <app-delete-item-dialog [dashboardItem]=\"selectedDashboardItem\" (removeDashboardItem)=\"deleteDashboardItem($event)\" (onClose)=\"closeDeleteItemComponent()\"></app-delete-item-dialog>\n}\n\n<div class=\"dashboard-container\">\n <div class=\"main-head-dashboard\">\n <div class=\"dashboard-title\">\n @if (isEditDashboardNameDialogOpened) {\n <div class=\"dashboard-header\">\n <input class=\"mj-input\" (keydown.enter)=\"saveDashboardName()\" type=\"text\" placeholder=\"Enter name here\" id=\"txtDashboardName\" #dashboardNameInput>\n <button mjButton (click)=\"saveDashboardName()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"cancelNameChange()\" >\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <i class=\"fa-solid fa-star dashboard-star-icon\" aria-hidden=\"true\"></i>\n <h3 (click)=\"toggleInlineNameEdit(true)\">{{dashboardEntity ? dashboardEntity.Name : ''}}</h3>\n }\n </div>\n <div class=\"dashboard-header\">\n @if (isEditingDashboard) {\n <div>\n <button mjButton (click)=\"onClickSaveDashboard()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"onclickCancelChanges()\">\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <button mjButton (click)=\"addItem()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add Item\n </button>\n <button mjButton (click)=\"toggleEditDashboard(true)\" >\n <span class=\"fa-solid fa-gear\"></span>\n Edit Dashboard\n </button>\n }\n </div>\n </div>\n <div class=\"tile-resource-container\">\n <!-- Show empty state if no items -->\n @if (items.length === 0 && !isEditingDashboard) {\n <div class=\"empty-dashboard\">\n <i class=\"fa-solid fa-grip-vertical\" aria-hidden=\"true\"></i>\n <h3>This dashboard is empty</h3>\n <p>Start by adding reports or user views to your dashboard</p>\n <button mjButton variant=\"primary\" (click)=\"addItem()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add Item\n </button>\n </div>\n }\n\n <!-- Show tile layout if there are items or if editing -->\n @if (items.length > 0 || isEditingDashboard) {\n <div class=\"mj-tile-layout\"\n [style.grid-template-columns]=\"'repeat(' + config.columns + ', 1fr)'\"\n [style.grid-auto-rows]=\"config.rowHeight + 'px'\">\n @for (item of items; track item.uniqueId) {\n <div class=\"mj-tile-item\"\n [style.grid-column]=\"item.col + ' / span ' + item.colSpan\"\n [style.grid-row]=\"'span ' + item.rowSpan\"\n [id]=\"item.uniqueId\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseOut($event)\">\n <div class=\"mj-tile-header\" [ngClass]=\"[getIsEditingItemHeaderStyle()]\">\n <div class=\"item-title\">\n <i [class]=\"getResourceIcon(item.ResourceData.ResourceType)\" aria-hidden=\"true\"></i>\n {{item.title}}\n </div>\n @if (!isEditingDashboard) {\n <div>\n <div class=\"btn-wrapper\">\n <button mjButton title=\"Edit dashboard\" (click)=\"toggleEditDashboard(true)\">\n <span class=\"fa-solid fa-pen-to-square\"></span>\n </button>\n <button mjButton title=\"Remove item\" (click)=\"showConfirmDeleteDashboardItem(item)\">\n <span class=\"fa-solid fa-trash\"></span>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"mj-tile-body\" [ngClass]=\"[getIsEditingItemBodyStyle()]\">\n <mj-resource [Data]=\"item.ResourceData\" [isVisible]=\"true\" (ContentLoadingStarted)=\"loadingStarted($event)\" (ContentLoadingComplete)=\"loadingComplete($event)\"></mj-resource>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n"]}
|
|
1
|
+
{"version":3,"file":"single-dashboard.component.js","sourceRoot":"","sources":["../../../src/lib/single-dashboard/single-dashboard.component.ts","../../../src/lib/single-dashboard/single-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { MJDashboardEntityExtended, MJResourceTypeEntity } from '@memberjunction/core-entities';\nimport { Metadata } from '@memberjunction/core';\nimport { SharedService, RecentAccessService } from '@memberjunction/ng-shared';\nimport { ResourceContainerComponent } from '../generic/resource-container-component';\nimport { Subject, debounceTime } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\n\n@Component({\n standalone: false,\n selector: 'mj-single-dashboard',\n templateUrl: './single-dashboard.component.html',\n styleUrls: ['./single-dashboard.component.css']\n})\nexport class SingleDashboardComponent extends BaseDashboard implements OnInit {\n\n @ViewChild('dashboardNameInput') dashboardNameInput!: ElementRef<HTMLInputElement>\n\n @Input() public ResourceData!: ResourceData;\n @Output() public dashboardSaved: EventEmitter<MJDashboardEntityExtended> = new EventEmitter<MJDashboardEntityExtended>();\n @Output() public loadComplete: EventEmitter<any> = new EventEmitter<any>();\n @Output() public loadStarted: EventEmitter<any> = new EventEmitter<any>();\n\n public items: DashboardItem[] = [];\n public dashboardEntity!: MJDashboardEntityExtended;\n public config: DashboardConfigDetails = new DashboardConfigDetails();\n public isItemDialogOpened: boolean = false;\n public isEditDialogOpened: boolean = false;\n public isEditDashboardNameDialogOpened: boolean = false;\n public isDeletingDashboardItem: boolean = false;\n public allowResize: boolean = false;\n public allowReorder: boolean = false;\n public isEditingDashboard: boolean = false;\n public selectedResource!: MJResourceTypeEntity | null;\n public selectedDashboardItem!: DashboardItem | null;\n private saveChangesSubject: Subject<any> = new Subject();\n private editOnLoad: boolean = false;\n private recentAccessService: RecentAccessService;\n\n public get contentLoading(): boolean {\n for (const item of this.items) {\n if (item.contentLoading) {\n return true;\n }\n }\n return false;\n }\n\n protected initDashboard(): void {\n \n }\n protected loadData(): void {\n \n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return \"Dashboard\"\n }\n\n constructor(private route: ActivatedRoute, public sharedService: SharedService) {\n super();\n this.recentAccessService = new RecentAccessService();\n\n this.saveChangesSubject\n .pipe(debounceTime(500))\n .subscribe(() => {\n this.SaveDashboard();\n });\n\n let edit = this.route.snapshot.queryParamMap.get('edit');\n if(edit){\n this.editOnLoad = true;\n }\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n // load up the dashboard\n const d = this.ResourceData;\n const config = this.ResourceData.Configuration;\n if (this.ResourceData) {\n const md = new Metadata();\n let uiConfig: any = {items:[]};\n this.dashboardEntity = await md.GetEntityObject<MJDashboardEntityExtended>('MJ: Dashboards');\n if (this.ResourceData.ResourceRecordID && this.ResourceData.ResourceRecordID.length > 0) {\n await this.dashboardEntity.Load(this.ResourceData.ResourceRecordID);\n // Log access to dashboard (fire-and-forget, don't await)\n this.recentAccessService.logAccess('Dashboards', this.ResourceData.ResourceRecordID, 'dashboard');\n\n // now we have loaded and we need to get the UIConfigDetails\n const raw = this.dashboardEntity.UIConfigDetails;\n if (raw) {\n uiConfig = JSON.parse(raw);\n this.config.columns = uiConfig.columns;\n this.config.rowHeight = uiConfig.rowHeight;\n this.config.resizable = uiConfig.resizable;\n this.config.reorderable = uiConfig.reorderable;\n }\n\n //the save and canel functions call this function\n //and we only want to show the edit view once\n if(this.editOnLoad){\n this.editOnLoad = false;\n this.toggleEditDashboard(true);\n }\n }\n else {\n this.dashboardEntity.NewRecord(); // creating a new dashboard\n this.dashboardEntity.UserID = md.CurrentUser.ID;\n \n // We should never get here now because dashboard creation is handled in dashboard-browser\n // But just in case, set a better default name\n this.dashboardEntity.Name = 'My Dashboard';\n \n // Set default configuration\n this.config.columns = 4; // 4-column layout\n this.config.rowHeight = 150;\n this.config.resizable = true;\n this.config.reorderable = true;\n \n // Automatically show edit mode for new dashboards to encourage adding items\n setTimeout(() => {\n this.toggleEditDashboard(true);\n }, 500);\n }\n\n // now we need to load up the items\n this.items = [];\n //const tempItems = uiConfig.items.sort((a: any, b: any) => a.order - b.order);\n for (const item of uiConfig.items) {\n const dashboardItem = this.CreateDashboardItem(item);\n this.items.push(dashboardItem);\n }\n }\n\n this.NotifyLoadComplete();\n }\n\n protected CreateDashboardItem(item: any): DashboardItem {\n const dashboardItem = new DashboardItem();\n if (item) {\n dashboardItem.title = item.title;\n dashboardItem.order = item.order ? item.order : 0;\n dashboardItem.col = item.col;\n dashboardItem.row = item.row;\n dashboardItem.rowSpan = item.rowSpan;\n dashboardItem.colSpan = item.colSpan;\n dashboardItem.ResourceData = new ResourceData(item.ResourceData); \n }\n return dashboardItem;\n }\n\n public loadingStarted(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = true;\n this.loadStarted.emit();\n }\n }\n\n public loadingComplete(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = false;\n if (!this.contentLoading) {\n this.loadComplete.emit();\n }\n }\n }\n\n public addItem(resourceType: any = null): void {\n this.selectedResource = resourceType;\n this.isItemDialogOpened = true;\n this.isEditDialogOpened = false;\n }\n\n public closeDialog(data: any): void {\n if(data) {\n const dashboardItem = this.CreateDashboardItem(data);\n this.items.push(dashboardItem);\n console.log(dashboardItem);\n this.saveChangesSubject.next(true);\n }\n this.selectedResource = null;\n this.isItemDialogOpened = false;\n }\n\n public toggleEditDashboard(allowEdit: boolean): void {\n this.allowReorder = allowEdit;\n this.allowResize = allowEdit;\n this.isEditingDashboard = allowEdit;\n this.toggleInlineNameEdit(false);\n }\n\n public async onClickSaveDashboard(): Promise<void> {\n this.toggleEditDashboard(false);\n let result = await this.SaveDashboard();\n if(result){\n this.sharedService.CreateSimpleNotification(\"Dashboard changes have been saved.\", \"success\", 1000);\n await this.ngOnInit();\n }\n else{\n this.sharedService.CreateSimpleNotification(\"An error occured saving the dashboard changes\", \"error\", 1000);\n }\n }\n\n public async onclickCancelChanges(): Promise<void> {\n this.toggleEditDashboard(false);\n await this.ngOnInit();\n }\n\n public closeDashboardDialog(data: any = null){\n this.isEditDialogOpened = false;\n }\n\n saveChanges(data: any): void {\n if(data.config){\n this.config = data.config;\n }\n if(data.itemsChanged && data.items){\n this.items = data.items;\n this.sharedService.InvokeManualResize();\n }\n this.SaveDashboard();\n this.closeDashboardDialog();\n }\n\n public async SaveDashboard(): Promise<boolean> {\n if (this.dashboardEntity) {\n const configData = {\n columns: this.config.columns,\n rowHeight: this.config.rowHeight,\n resizable: this.config.resizable,\n reorderable: this.config.reorderable,\n items: this.items\n }\n const configJSON = JSON.stringify(configData);\n this.dashboardEntity.UIConfigDetails = configJSON;\n const result = await this.dashboardEntity.Save();\n \n return result;\n }\n else \n return false;\n }\n\n public dashboardSaveComplete(entity: MJDashboardEntityExtended): void {\n this.dashboardSaved.emit(entity);\n }\n\n public toggleInlineNameEdit(visible: boolean): void {\n this.isEditDashboardNameDialogOpened = visible;\n if(this.isEditDashboardNameDialogOpened){\n this.dashboardNameInput?.nativeElement?.focus();\n }\n }\n\n public saveDashboardName(): void {\n this.toggleInlineNameEdit(true);\n const inputValue = this.dashboardNameInput.nativeElement.value;\n if(inputValue && inputValue.length > 3){\n this.dashboardEntity.Name = inputValue;\n this.SaveDashboard();\n }\n else {\n this.sharedService.CreateSimpleNotification('Invalid dashboard name: Must be at least 3 characters.','warning', 1000);\n }\n }\n\n public cancelNameChange(): void {\n this.toggleInlineNameEdit(false);\n }\n\n public closeDeleteItemComponent(): void {\n this.selectedDashboardItem = null;\n this.isDeletingDashboardItem = false;\n }\n\n public showConfirmDeleteDashboardItem(item: DashboardItem): void {\n this.selectedDashboardItem = item;\n this.isDeletingDashboardItem = true;\n }\n\n public async deleteDashboardItem(item: DashboardItem): Promise<void> {\n this.items = this.items.filter(i => i.uniqueId != item.uniqueId);\n let result = await this.SaveDashboard();\n if(result){\n this.sharedService.CreateSimpleNotification(`Dashboard item ${item.uniqueId} deleted successfully`, \"success\", 1000);\n }\n else{\n this.sharedService.CreateSimpleNotification(`Unable to delete dashboard item ${item.uniqueId}`, \"error\", 1000);\n }\n this.selectedDashboardItem = null;\n this.isDeletingDashboardItem = false;\n }\n\n public getIsEditingItemBodyStyle(): string {\n return this.isEditingDashboard ? \"bg-light-grey\" : \"\";\n }\n\n public getIsEditingItemHeaderStyle(): string {\n return this.isEditingDashboard ? \"bg-dark-grey\" : \"bg-blue\";\n }\n\n onReorder(e: { oldIndex: number; newIndex: number; newCol?: number; newRow?: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.items.find(i => i.uniqueId === e.uniqueId) : this.items[e.oldIndex];\n if (item) {\n if (e.oldIndex !== e.newIndex) {\n this.items.splice(e.oldIndex, 1);\n this.items.splice(e.newIndex, 0, item);\n }\n item.col = e.newCol ?? item.col;\n item.row = e.newRow ?? item.row;\n }\n }\n\n onResize(e: { newColSpan: number; newRowSpan: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.items.find(i => i.uniqueId === e.uniqueId) : undefined;\n if (item) {\n item.colSpan = e.newColSpan;\n item.rowSpan = e.newRowSpan;\n }\n }\n\n onMouseEnter(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n onMouseOut(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /**\n * Get the appropriate icon for a resource type\n * @param resourceType The type of resource\n * @returns FontAwesome icon class\n */\n getResourceIcon(resourceType: string | undefined): string {\n // Default to a cube icon if type is undefined\n if (!resourceType) return 'fa-solid fa-cube';\n \n // Map resource types to appropriate FontAwesome icons\n const iconMap: {[key: string]: string} = {\n 'Reports': 'fa-solid fa-chart-line',\n 'UserViews': 'fa-solid fa-table',\n 'Dashboards': 'fa-solid fa-grip',\n 'Lists': 'fa-solid fa-list',\n 'default': 'fa-solid fa-cube'\n };\n \n return iconMap[resourceType] || iconMap['default'];\n }\n}\n\nexport class DashboardConfigDetails {\n columns: number = 4;\n rowHeight: number = 150;\n resizable: boolean = true;\n reorderable: boolean = true;\n}\n\nexport class DashboardItem {\n private static nextUniqueId: number = 1;\n private getNextUniqueID(): number {\n return DashboardItem.nextUniqueId++;\n }\n constructor() {\n this.uniqueId = this.getNextUniqueID();\n }\n uniqueId!: number;\n title!: string;\n col!: number;\n row!: number;\n rowSpan!: number;\n colSpan!: number;\n order!: number;\n ResourceData!: ResourceData;\n contentLoading: boolean = false;\n}","@if (isItemDialogOpened) {\n <app-add-item-dialog (onClose)=\"closeDialog($event)\" [selectedResource]=\"selectedResource\"></app-add-item-dialog>\n}\n@if (isEditDialogOpened) {\n <div>\n <app-edit-dashboard (onClose)=\"closeDashboardDialog($event)\" (triggerAddItem)=\"addItem($event)\" [items]=\"items\" [config]=\"config\" (onSave)=\"saveChanges($event)\"></app-edit-dashboard>\n </div>\n}\n\n@if (isDeletingDashboardItem) {\n <app-delete-item-dialog [dashboardItem]=\"selectedDashboardItem\" (removeDashboardItem)=\"deleteDashboardItem($event)\" (onClose)=\"closeDeleteItemComponent()\"></app-delete-item-dialog>\n}\n\n<div class=\"dashboard-container\">\n <div class=\"main-head-dashboard\">\n <div class=\"dashboard-title\">\n @if (isEditDashboardNameDialogOpened) {\n <div class=\"dashboard-header\">\n <input class=\"mj-input\" (keydown.enter)=\"saveDashboardName()\" type=\"text\" placeholder=\"Enter name here\" id=\"txtDashboardName\" #dashboardNameInput>\n <button mjButton (click)=\"saveDashboardName()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"cancelNameChange()\" >\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <i class=\"fa-solid fa-star dashboard-star-icon\" aria-hidden=\"true\"></i>\n <h3 (click)=\"toggleInlineNameEdit(true)\">{{dashboardEntity ? dashboardEntity.Name : ''}}</h3>\n }\n </div>\n <div class=\"dashboard-header\">\n @if (isEditingDashboard) {\n <div>\n <button mjButton (click)=\"onClickSaveDashboard()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"onclickCancelChanges()\">\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <button mjButton (click)=\"addItem()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add Item\n </button>\n <button mjButton (click)=\"toggleEditDashboard(true)\" >\n <span class=\"fa-solid fa-gear\"></span>\n Edit Dashboard\n </button>\n }\n </div>\n </div>\n <div class=\"tile-resource-container\">\n <!-- Show empty state if no items -->\n @if (items.length === 0 && !isEditingDashboard) {\n <div class=\"empty-dashboard\">\n <i class=\"fa-solid fa-grip-vertical\" aria-hidden=\"true\"></i>\n <h3>This dashboard is empty</h3>\n <p>Start by adding reports or user views to your dashboard</p>\n <button mjButton variant=\"primary\" (click)=\"addItem()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add Item\n </button>\n </div>\n }\n\n <!-- Show tile layout if there are items or if editing -->\n @if (items.length > 0 || isEditingDashboard) {\n <div class=\"mj-tile-layout\"\n [style.grid-template-columns]=\"'repeat(' + config.columns + ', 1fr)'\"\n [style.grid-auto-rows]=\"config.rowHeight + 'px'\">\n @for (item of items; track item.uniqueId) {\n <div class=\"mj-tile-item\"\n [style.grid-column]=\"item.col + ' / span ' + item.colSpan\"\n [style.grid-row]=\"'span ' + item.rowSpan\"\n [id]=\"item.uniqueId\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseOut($event)\">\n <div class=\"mj-tile-header\" [ngClass]=\"[getIsEditingItemHeaderStyle()]\">\n <div class=\"item-title\">\n <i [class]=\"getResourceIcon(item.ResourceData.ResourceType)\" aria-hidden=\"true\"></i>\n {{item.title}}\n </div>\n @if (!isEditingDashboard) {\n <div>\n <div class=\"btn-wrapper\">\n <button mjButton title=\"Edit dashboard\" (click)=\"toggleEditDashboard(true)\">\n <span class=\"fa-solid fa-pen-to-square\"></span>\n </button>\n <button mjButton title=\"Remove item\" (click)=\"showConfirmDeleteDashboardItem(item)\">\n <span class=\"fa-solid fa-trash\"></span>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"mj-tile-body\" [ngClass]=\"[getIsEditingItemBodyStyle()]\">\n <mj-resource [Data]=\"item.ResourceData\" [isVisible]=\"true\" (ContentLoadingStarted)=\"loadingStarted($event)\" (ContentLoadingComplete)=\"loadingComplete($event)\"></mj-resource>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n"]}
|