@memberjunction/ng-explorer-core 6.2.0-edge.0 → 6.2.0-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-routing.module.d.ts +23 -1
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +50 -14
- package/dist/app-routing.module.js.map +1 -1
- package/dist/lib/command-palette/command-palette.component.d.ts +7 -1
- package/dist/lib/command-palette/command-palette.component.d.ts.map +1 -1
- package/dist/lib/command-palette/command-palette.component.js +28 -14
- package/dist/lib/command-palette/command-palette.component.js.map +1 -1
- package/dist/lib/conversation-feedback/conversation-feedback.d.ts +103 -13
- package/dist/lib/conversation-feedback/conversation-feedback.d.ts.map +1 -1
- package/dist/lib/conversation-feedback/conversation-feedback.js +219 -67
- package/dist/lib/conversation-feedback/conversation-feedback.js.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts +64 -10
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +172 -66
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
- package/dist/lib/generic/resource-container-component.d.ts +19 -5
- package/dist/lib/generic/resource-container-component.d.ts.map +1 -1
- package/dist/lib/generic/resource-container-component.js +43 -13
- package/dist/lib/generic/resource-container-component.js.map +1 -1
- package/dist/lib/guards/entities.guard.d.ts +4 -0
- package/dist/lib/guards/entities.guard.d.ts.map +1 -1
- package/dist/lib/guards/entities.guard.js +10 -2
- package/dist/lib/guards/entities.guard.js.map +1 -1
- package/dist/lib/identity-claims/claim-redeem.component.d.ts +4 -0
- package/dist/lib/identity-claims/claim-redeem.component.d.ts.map +1 -1
- package/dist/lib/identity-claims/claim-redeem.component.js +10 -2
- package/dist/lib/identity-claims/claim-redeem.component.js.map +1 -1
- package/dist/lib/oauth/oauth-callback.component.d.ts +4 -0
- package/dist/lib/oauth/oauth-callback.component.d.ts.map +1 -1
- package/dist/lib/oauth/oauth-callback.component.js +10 -2
- package/dist/lib/oauth/oauth-callback.component.js.map +1 -1
- package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
- package/dist/lib/profile/profile-dialog.component.js +194 -191
- package/dist/lib/profile/profile-dialog.component.js.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +20 -2
- package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.js +33 -9
- package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +80 -10
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js +168 -56
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +186 -23
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +500 -177
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts +2 -0
- package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-deeplink-params.js +5 -1
- package/dist/lib/resource-wrappers/chat-deeplink-params.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-search-routing.d.ts +25 -0
- package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/chat-search-routing.js +24 -0
- package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -0
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +14 -2
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +32 -8
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +54 -8
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +138 -46
- package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +223 -30
- package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/livekit-room-resource.component.js +438 -118
- package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +7 -3
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +23 -15
- package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts +68 -10
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +178 -62
- package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
- package/dist/lib/services/startup-validation.service.d.ts +4 -0
- package/dist/lib/services/startup-validation.service.d.ts.map +1 -1
- package/dist/lib/services/startup-validation.service.js +10 -2
- package/dist/lib/services/startup-validation.service.js.map +1 -1
- package/dist/lib/services/system-validation.service.d.ts +13 -1
- package/dist/lib/services/system-validation.service.d.ts.map +1 -1
- package/dist/lib/services/system-validation.service.js +29 -5
- package/dist/lib/services/system-validation.service.js.map +1 -1
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts +54 -4
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts.map +1 -1
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.js +130 -40
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.js.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.d.ts +29 -1
- package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.js +56 -12
- package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
- package/dist/lib/shell/components/header/app-switcher.component.d.ts +33 -5
- package/dist/lib/shell/components/header/app-switcher.component.d.ts.map +1 -1
- package/dist/lib/shell/components/header/app-switcher.component.js +85 -29
- package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.js +1 -1
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.js.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +50 -6
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.js +95 -22
- package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts +91 -9
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.js +257 -101
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
- package/dist/lib/shell/loading-themes.d.ts +16 -12
- package/dist/lib/shell/loading-themes.d.ts.map +1 -1
- package/dist/lib/shell/loading-themes.js +145 -137
- package/dist/lib/shell/loading-themes.js.map +1 -1
- package/dist/lib/shell/readiness-beacon.d.ts +2 -0
- package/dist/lib/shell/readiness-beacon.d.ts.map +1 -1
- package/dist/lib/shell/readiness-beacon.js +5 -1
- package/dist/lib/shell/readiness-beacon.js.map +1 -1
- package/dist/lib/shell/services/about-dialog.service.d.ts +6 -0
- package/dist/lib/shell/services/about-dialog.service.d.ts.map +1 -1
- package/dist/lib/shell/services/about-dialog.service.js +16 -4
- package/dist/lib/shell/services/about-dialog.service.js.map +1 -1
- package/dist/lib/shell/services/profile-dialog.service.d.ts +6 -0
- package/dist/lib/shell/services/profile-dialog.service.d.ts.map +1 -1
- package/dist/lib/shell/services/profile-dialog.service.js +16 -4
- package/dist/lib/shell/services/profile-dialog.service.js.map +1 -1
- package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts +6 -0
- package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts.map +1 -1
- package/dist/lib/shell/services/user-sharing-center-dialog.service.js +15 -3
- package/dist/lib/shell/services/user-sharing-center-dialog.service.js.map +1 -1
- package/dist/lib/shell/shell.component.d.ts +262 -39
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +688 -292
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts +64 -8
- 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 +129 -37
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts +26 -2
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +48 -10
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts +84 -6
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +133 -29
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts +173 -23
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +383 -109
- package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts +383 -55
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +962 -326
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/lib/single-query/single-query.component.d.ts +22 -2
- package/dist/lib/single-query/single-query.component.d.ts.map +1 -1
- package/dist/lib/single-query/single-query.component.js +40 -10
- package/dist/lib/single-query/single-query.component.js.map +1 -1
- package/dist/lib/single-record/single-record.component.d.ts +41 -3
- package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
- package/dist/lib/single-record/single-record.component.js +71 -11
- package/dist/lib/single-record/single-record.component.js.map +1 -1
- package/dist/lib/single-search-result/single-search-result.component.d.ts +23 -3
- package/dist/lib/single-search-result/single-search-result.component.d.ts.map +1 -1
- package/dist/lib/single-search-result/single-search-result.component.js +42 -12
- package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
- package/dist/lib/system-validation/system-validation-banner.component.d.ts +12 -2
- package/dist/lib/system-validation/system-validation-banner.component.d.ts.map +1 -1
- package/dist/lib/system-validation/system-validation-banner.component.js +25 -5
- package/dist/lib/system-validation/system-validation-banner.component.js.map +1 -1
- package/dist/lib/user-menu/user-menu.types.d.ts +4 -0
- package/dist/lib/user-menu/user-menu.types.d.ts.map +1 -1
- package/dist/lib/user-menu/user-menu.types.js +10 -2
- package/dist/lib/user-menu/user-menu.types.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts +59 -7
- package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +151 -47
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/lib/user-profile/user-profile.component.d.ts +3 -2
- package/dist/lib/user-profile/user-profile.component.d.ts.map +1 -1
- package/dist/lib/user-profile/user-profile.component.js +5 -4
- package/dist/lib/user-profile/user-profile.component.js.map +1 -1
- package/package.json +52 -52
|
@@ -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, takeUntil } 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), takeUntil(this.destroy$))\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 = this.ProviderToUse;\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 '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 <mj-empty-state class=\"empty-dashboard\"\n Icon=\"fa-solid fa-grip-vertical\"\n Title=\"This dashboard is empty\"\n Message=\"Start by adding reports or user views to your dashboard\"\n ActionText=\"Add Item\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addItem()\" />\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, takeUntil } 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 /** @deprecated Use {@link DashboardNameInput}. */\n get dashboardNameInput(): ElementRef<HTMLInputElement> {\n return this.DashboardNameInput;\n }\n /** @deprecated Use {@link DashboardNameInput}. */\n set dashboardNameInput(value: ElementRef<HTMLInputElement>) {\n this.DashboardNameInput = value;\n }\n\n @Input() public ResourceData!: ResourceData;\n @Output() public DashboardSaved: EventEmitter<MJDashboardEntityExtended> = new EventEmitter<MJDashboardEntityExtended>();\n\n /**\n * @deprecated Use {@link DashboardSaved}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (dashboardSaved) keeps working. Must stay AFTER DashboardSaved: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() public dashboardSaved = this.DashboardSaved;\n @Output() public loadComplete: EventEmitter<any> = new EventEmitter<any>(); // case-violation-ok-legacy-back-compat: an ancestor class already declares the PascalCase name\n @Output() public loadStarted: EventEmitter<any> = new EventEmitter<any>(); // case-violation-ok-legacy-back-compat: an ancestor class already declares the PascalCase name\n\n public Items: DashboardItem[] = [];\n\n /** @deprecated Use {@link Items}. */\n public get items(): DashboardItem[] {\n return this.Items;\n }\n /** @deprecated Use {@link Items}. */\n public set items(value: DashboardItem[]) {\n this.Items = value;\n }\n public DashboardEntity!: MJDashboardEntityExtended;\n\n /** @deprecated Use {@link DashboardEntity}. */\n public get dashboardEntity(): MJDashboardEntityExtended {\n return this.DashboardEntity;\n }\n /** @deprecated Use {@link DashboardEntity}. */\n public set dashboardEntity(value: MJDashboardEntityExtended) {\n this.DashboardEntity = value;\n }\n public config: DashboardConfigDetails = new DashboardConfigDetails();\n public IsItemDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsItemDialogOpened}. */\n public get isItemDialogOpened(): boolean {\n return this.IsItemDialogOpened;\n }\n /** @deprecated Use {@link IsItemDialogOpened}. */\n public set isItemDialogOpened(value: boolean) {\n this.IsItemDialogOpened = value;\n }\n public IsEditDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsEditDialogOpened}. */\n public get isEditDialogOpened(): boolean {\n return this.IsEditDialogOpened;\n }\n /** @deprecated Use {@link IsEditDialogOpened}. */\n public set isEditDialogOpened(value: boolean) {\n this.IsEditDialogOpened = value;\n }\n public IsEditDashboardNameDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsEditDashboardNameDialogOpened}. */\n public get isEditDashboardNameDialogOpened(): boolean {\n return this.IsEditDashboardNameDialogOpened;\n }\n /** @deprecated Use {@link IsEditDashboardNameDialogOpened}. */\n public set isEditDashboardNameDialogOpened(value: boolean) {\n this.IsEditDashboardNameDialogOpened = value;\n }\n public IsDeletingDashboardItem: boolean = false;\n\n /** @deprecated Use {@link IsDeletingDashboardItem}. */\n public get isDeletingDashboardItem(): boolean {\n return this.IsDeletingDashboardItem;\n }\n /** @deprecated Use {@link IsDeletingDashboardItem}. */\n public set isDeletingDashboardItem(value: boolean) {\n this.IsDeletingDashboardItem = value;\n }\n public AllowResize: boolean = false;\n\n /** @deprecated Use {@link AllowResize}. */\n public get allowResize(): boolean {\n return this.AllowResize;\n }\n /** @deprecated Use {@link AllowResize}. */\n public set allowResize(value: boolean) {\n this.AllowResize = value;\n }\n public AllowReorder: boolean = false;\n\n /** @deprecated Use {@link AllowReorder}. */\n public get allowReorder(): boolean {\n return this.AllowReorder;\n }\n /** @deprecated Use {@link AllowReorder}. */\n public set allowReorder(value: boolean) {\n this.AllowReorder = value;\n }\n public IsEditingDashboard: boolean = false;\n\n /** @deprecated Use {@link IsEditingDashboard}. */\n public get isEditingDashboard(): boolean {\n return this.IsEditingDashboard;\n }\n /** @deprecated Use {@link IsEditingDashboard}. */\n public set isEditingDashboard(value: boolean) {\n this.IsEditingDashboard = value;\n }\n public SelectedResource!: MJResourceTypeEntity | null;\n\n /** @deprecated Use {@link SelectedResource}. */\n public get selectedResource(): MJResourceTypeEntity | null {\n return this.SelectedResource;\n }\n /** @deprecated Use {@link SelectedResource}. */\n public set selectedResource(value: MJResourceTypeEntity | null) {\n this.SelectedResource = value;\n }\n public SelectedDashboardItem!: DashboardItem | null;\n\n /** @deprecated Use {@link SelectedDashboardItem}. */\n public get selectedDashboardItem(): DashboardItem | null {\n return this.SelectedDashboardItem;\n }\n /** @deprecated Use {@link SelectedDashboardItem}. */\n public set selectedDashboardItem(value: DashboardItem | null) {\n this.SelectedDashboardItem = value;\n }\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 /** @deprecated Use {@link ContentLoading}. */\n public get contentLoading(): boolean {\n return this.ContentLoading;\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), takeUntil(this.destroy$))\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 /** @deprecated Use {@link SharedService}. */\n public get sharedService(): SharedService {\n return this.SharedService;\n }\n /** @deprecated Use {@link SharedService}. */\n public set sharedService(value: SharedService) {\n this.SharedService = value;\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 = this.ProviderToUse;\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 /** @deprecated Use {@link LoadingStarted}. */\n public loadingStarted(resourceComponent: ResourceContainerComponent) {\n return this.LoadingStarted(resourceComponent);\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 /** @deprecated Use {@link LoadingComplete}. */\n public loadingComplete(resourceComponent: ResourceContainerComponent) {\n return this.LoadingComplete(resourceComponent);\n }\n\n public AddItem(resourceType: any = null): void {\n this.SelectedResource = resourceType;\n this.IsItemDialogOpened = true;\n this.IsEditDialogOpened = false;\n }\n\n /** @deprecated Use {@link AddItem}. */\n public addItem(resourceType: any = null): void {\n return this.AddItem(resourceType);\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 /** @deprecated Use {@link CloseDialog}. */\n public closeDialog(data: any): void {\n return this.CloseDialog(data);\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 /** @deprecated Use {@link ToggleEditDashboard}. */\n public toggleEditDashboard(allowEdit: boolean): void {\n return this.ToggleEditDashboard(allowEdit);\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 /** @deprecated Use {@link OnClickSaveDashboard}. */\n public async onClickSaveDashboard(): Promise<void> {\n return this.OnClickSaveDashboard();\n }\n\n public async OnclickCancelChanges(): Promise<void> {\n this.ToggleEditDashboard(false);\n await this.ngOnInit();\n }\n\n /** @deprecated Use {@link OnclickCancelChanges}. */\n public async onclickCancelChanges(): Promise<void> {\n return this.OnclickCancelChanges();\n }\n\n public CloseDashboardDialog(data: any = null){\n this.IsEditDialogOpened = false;\n }\n\n /** @deprecated Use {@link CloseDashboardDialog}. */\n public closeDashboardDialog(data: any = null) {\n return this.CloseDashboardDialog(data);\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 /** @deprecated Use {@link SaveChanges}. */\n saveChanges(data: any): void {\n return this.SaveChanges(data);\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 /** @deprecated Use {@link DashboardSaveComplete}. */\n public dashboardSaveComplete(entity: MJDashboardEntityExtended): void {\n return this.DashboardSaveComplete(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 /** @deprecated Use {@link ToggleInlineNameEdit}. */\n public toggleInlineNameEdit(visible: boolean): void {\n return this.ToggleInlineNameEdit(visible);\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 /** @deprecated Use {@link SaveDashboardName}. */\n public saveDashboardName(): void {\n return this.SaveDashboardName();\n }\n\n public CancelNameChange(): void {\n this.ToggleInlineNameEdit(false);\n }\n\n /** @deprecated Use {@link CancelNameChange}. */\n public cancelNameChange(): void {\n return this.CancelNameChange();\n }\n\n public CloseDeleteItemComponent(): void {\n this.SelectedDashboardItem = null;\n this.IsDeletingDashboardItem = false;\n }\n\n /** @deprecated Use {@link CloseDeleteItemComponent}. */\n public closeDeleteItemComponent(): void {\n return this.CloseDeleteItemComponent();\n }\n\n public ShowConfirmDeleteDashboardItem(item: DashboardItem): void {\n this.SelectedDashboardItem = item;\n this.IsDeletingDashboardItem = true;\n }\n\n /** @deprecated Use {@link ShowConfirmDeleteDashboardItem}. */\n public showConfirmDeleteDashboardItem(item: DashboardItem): void {\n return this.ShowConfirmDeleteDashboardItem(item);\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 /** @deprecated Use {@link DeleteDashboardItem}. */\n public async deleteDashboardItem(item: DashboardItem): Promise<void> {\n return this.DeleteDashboardItem(item);\n }\n\n public GetIsEditingItemBodyStyle(): string {\n return this.IsEditingDashboard ? \"bg-light-grey\" : \"\";\n }\n\n /** @deprecated Use {@link GetIsEditingItemBodyStyle}. */\n public getIsEditingItemBodyStyle(): string {\n return this.GetIsEditingItemBodyStyle();\n }\n\n public GetIsEditingItemHeaderStyle(): string {\n return this.IsEditingDashboard ? \"bg-dark-grey\" : \"bg-blue\";\n }\n\n /** @deprecated Use {@link GetIsEditingItemHeaderStyle}. */\n public getIsEditingItemHeaderStyle(): string {\n return this.GetIsEditingItemHeaderStyle();\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 /** @deprecated Use {@link OnReorder}. */\n onReorder(e: { oldIndex: number; newIndex: number; newCol?: number; newRow?: number; uniqueId?: number }): void {\n return this.OnReorder(e);\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 /** @deprecated Use {@link OnResize}. */\n onResize(e: { newColSpan: number; newRowSpan: number; uniqueId?: number }): void {\n return this.OnResize(e);\n }\n\n OnMouseEnter(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /** @deprecated Use {@link OnMouseEnter}. */\n onMouseEnter(e: MouseEvent): void {\n return this.OnMouseEnter(e);\n }\n\n OnMouseOut(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /** @deprecated Use {@link OnMouseOut}. */\n onMouseOut(e: MouseEvent): void {\n return this.OnMouseOut(e);\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 '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 /** @deprecated Use {@link GetResourceIcon}. */\n getResourceIcon(resourceType: string | undefined): string {\n return this.GetResourceIcon(resourceType);\n }\n}\n\nexport class DashboardConfigDetails {\n columns: number = 4; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n rowHeight: number = 150; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n resizable: boolean = true; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n reorderable: boolean = true; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\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\n /** @deprecated Use {@link UniqueId}. */\n get uniqueId(): number {\n return this.UniqueId;\n }\n /** @deprecated Use {@link UniqueId}. */\n set uniqueId(value: number) {\n this.UniqueId = value;\n }\n Title!: string;\n\n /** @deprecated Use {@link Title}. */\n get title(): string {\n return this.Title;\n }\n /** @deprecated Use {@link Title}. */\n set title(value: string) {\n this.Title = value;\n }\n Col!: number;\n\n /** @deprecated Use {@link Col}. */\n get col(): number {\n return this.Col;\n }\n /** @deprecated Use {@link Col}. */\n set col(value: number) {\n this.Col = value;\n }\n Row!: number;\n\n /** @deprecated Use {@link Row}. */\n get row(): number {\n return this.Row;\n }\n /** @deprecated Use {@link Row}. */\n set row(value: number) {\n this.Row = value;\n }\n RowSpan!: number;\n\n /** @deprecated Use {@link RowSpan}. */\n get rowSpan(): number {\n return this.RowSpan;\n }\n /** @deprecated Use {@link RowSpan}. */\n set rowSpan(value: number) {\n this.RowSpan = value;\n }\n ColSpan!: number;\n\n /** @deprecated Use {@link ColSpan}. */\n get colSpan(): number {\n return this.ColSpan;\n }\n /** @deprecated Use {@link ColSpan}. */\n set colSpan(value: number) {\n this.ColSpan = value;\n }\n Order!: number;\n\n /** @deprecated Use {@link Order}. */\n get order(): number {\n return this.Order;\n }\n /** @deprecated Use {@link Order}. */\n set order(value: number) {\n this.Order = value;\n }\n ResourceData!: ResourceData;\n ContentLoading: boolean = false;\n\n /** @deprecated Use {@link ContentLoading}. */\n get contentLoading(): boolean {\n return this.ContentLoading;\n }\n /** @deprecated Use {@link ContentLoading}. */\n set contentLoading(value: boolean) {\n this.ContentLoading = value;\n }\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 <mj-empty-state class=\"empty-dashboard\"\n Icon=\"fa-solid fa-grip-vertical\"\n Title=\"This dashboard is empty\"\n Message=\"Start by adding reports or user views to your dashboard\"\n ActionText=\"Add Item\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addItem()\" />\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"]}
|