import { Component, OnInit, Input } from '@angular/core'; import { MainPageService } from '../../../../main-page/main-page.service'; import { PipesManagmentComponent } from '../pipes-managment/pipes-managment.component'; import { PipeModel } from '../../../../models/parts/pipe.model'; declare var $: any; @Component({ selector: 'app-pipes-grid', templateUrl: './pipes-grid.component.html', styleUrls: ['./pipes-grid.component.scss'] }) export class PipesGridComponent implements OnInit { @Input() managmentComponent: PipesManagmentComponent; isPipesHidden = true; pipesGridData: PipeModel[]; selectedPipe: PipeModel; isPipeChoosen: boolean = false; elementIndex: number; headers: string[] = ['Name', 'Description', '']; constructor(private mainPageService: MainPageService) { } public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deletePipeSubject.subscribe((value) => { this.pipesGridData = this.pipesGridData.filter(x => x._id !== value); }); this.managmentComponent.stateSubject.subscribe((state) => { if (state !== null) { Object.assign(this.pipesGridData[this.elementIndex], state); } this.isPipeChoosen = false; }); } loadGridDataFromDb() { this.mainPageService.loadAllPipes().subscribe((response) => { this.pipesGridData = response.sort(function (a, b) { return (a.name < b.name) ? -1 : 1; }); }); } toggle() { const actionButtons = $('.mat-icon-button'); $(actionButtons[1]).css('visibility', 'hidden'); for (let i = 2; i < actionButtons.length; i += 2) { $(actionButtons[i]).css('visibility', 'hidden'); } this.isPipesHidden = !this.isPipesHidden; } createNewPipe() { const pipe = new PipeModel(); this.mainPageService.addNewPipeIntoDb(JSON.stringify(pipe)).subscribe((response) => { pipe._id = response._id; pipe.id = response.id; this.pipesGridData.push(pipe); this.elementIndex = this.pipesGridData.indexOf(pipe); this.managmentComponent.showManagmentPage(pipe, true); }); this.isPipeChoosen = true; } setChoosenElement(element) { this.selectedPipe = { ...element, }; this.elementIndex = this.pipesGridData.indexOf(element); }; editPipe(element) { this.selectedPipe = { ...element, }; this.elementIndex = this.pipesGridData.indexOf(element); this.managmentComponent.showManagmentPage(this.selectedPipe, false); this.isPipeChoosen = true; } deletePipe() { this.mainPageService.removePipe(this.selectedPipe._id).subscribe(() => { }, () => { }); this.mainPageService.deletePipeSubject.next(this.selectedPipe._id); } }