Skip to content
Snippets Groups Projects
dashboard.component.ts 2.75 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { Component, OnInit, AfterViewInit, QueryList, ViewChildren } from '@angular/core';
    
    import { HttpClient } from '@angular/common/http';
    import { TranslateService } from '@ngx-translate/core';
    
    import { DashboardService } from './dashboard.service';
    import { FunctionsService } from '@service/functions.service';
    
    
    @Component({
        selector: 'app-dashboard',
        templateUrl: 'dashboard.component.html',
    
        styleUrls: ['dashboard.component.scss'],
        providers: [DashboardService]
    
    })
    export class DashboardComponent implements OnInit, AfterViewInit {
    
    
        tiles: any = [];
        hoveredTool: boolean = false;
    
        @ViewChildren('tileComponent') tileComponent: QueryList<any>;
    
    
        constructor(
            public translate: TranslateService,
            public http: HttpClient,
    
            private dashboardService: DashboardService,
            private functionsService: FunctionsService
    
        ngOnInit(): void {
            this.getDashboardConfig();
        }
    
    
        ngAfterViewInit(): void { }
    
        enterTile(tile: any, index: number) {
    
            this.hoveredTool = false;
    
            this.tiles.forEach((element: any, indexTile: number) => {
                element.editMode = indexTile === index ? true : false;
            });
        }
    
    
        leaveTile(tile: any) {
            if (!this.hoveredTool) {
                tile.editMode = false;
            }
        }
    
        getDashboardConfig() {
            const test: any = [
                {
                    id: 1,
                    type: 'lastViewMails',
                    view: 'resume',
                    sequence: 0
                },
                {
                    id: 1,
                    type: 'lastViewMails',
                    view: 'list',
                    sequence: 3
                },
                {
                    id: 1,
                    type: 'lastViewMails',
                    view: 'chart',
                    sequence: 5
                }
            ];
    
            for (let index = 0; index < 6; index++) {
                const tmpTile = test.find((tile: any) => tile.sequence === index);
                if (!this.functionsService.empty(tmpTile)) {
                    const objTile = {...this.dashboardService.getTile(tmpTile.type), ...tmpTile};
                    this.tiles.push(objTile);
                } else {
                    this.tiles.push({
                        id: null,
                        sequence: index,
                        editMode: false
                    });
                }
            }
        }
    
        changeView(tile: any, view: string) {
            const indexTile = this.tiles.filter((tileItem: any) => tileItem.id !== null).map((tileItem: any) => tileItem.sequence).indexOf(tile.sequence);
            this.tileComponent.toArray()[indexTile].changeView(view);
        }
    
        transferDataSuccess() {
            this.tiles.forEach((tile: any, index: number) => {
                tile.sequence = index;
            });
            // TO DO : SAVE IN BACK
        }