import { Component } from '@angular/core' import { SavedViewService } from 'src/app/services/rest/saved-view.service' import { SettingsService } from 'src/app/services/settings.service' import { ComponentWithPermissions } from '../with-permissions/with-permissions.component' import { TourService } from 'ngx-ui-tour-ng-bootstrap' import { SavedView } from 'src/app/data/saved-view' import { ToastService } from 'src/app/services/toast.service' import { CdkDragDrop, CdkDragEnd, CdkDragStart, moveItemInArray, } from '@angular/cdk/drag-drop' import { environment } from 'src/environments/environment' @Component({ selector: 'pngx-dashboard', templateUrl: './dashboard.component.html', styleUrls: ['./dashboard.component.scss'], }) export class DashboardComponent extends ComponentWithPermissions { public dashboardViews: SavedView[] = [] constructor( public settingsService: SettingsService, public savedViewService: SavedViewService, private tourService: TourService, private toastService: ToastService ) { super() this.savedViewService.listAll().subscribe(() => { this.dashboardViews = this.savedViewService.dashboardViews }) } get subtitle() { if (this.settingsService.displayName) { return $localize`Hello ${this.settingsService.displayName}, welcome to ${environment.appTitle}` } else { return $localize`Welcome to ${environment.appTitle}` } } completeTour() { if (this.tourService.getStatus() !== 0) { this.tourService.end() // will call settingsService.completeTour() } else { this.settingsService.completeTour() } } onDragStart(event: CdkDragStart) { this.settingsService.globalDropzoneEnabled = false } onDragEnd(event: CdkDragEnd) { this.settingsService.globalDropzoneEnabled = true } onDrop(event: CdkDragDrop) { moveItemInArray( this.dashboardViews, event.previousIndex, event.currentIndex ) this.settingsService .updateDashboardViewsSort(this.dashboardViews) .subscribe({ next: () => { this.toastService.showInfo($localize`Dashboard updated`) }, error: (e) => { this.toastService.showError($localize`Error updating dashboard`, e) }, }) } }