import { Component, OnInit, Input } from '@angular/core'; import { PipeMaterialGroupModel } from '../../../../models/dictionaries/pipe-material-group.model'; import { MainPageService } from '../../../../main-page/main-page.service'; import { PipeMaterialManagmentComponent } from '../../../../main-page/dictionaries/pipe-material/pipe-material-managment/pipe-material-managment.component'; declare var $: any; @Component({ selector: 'app-pipe-materials-grid', templateUrl: './pipe-materials-grid.component.html', styleUrls: ['./pipe-materials-grid.component.scss'] }) export class PipeMaterialsGridComponent implements OnInit { @Input() managmentComponent: PipeMaterialManagmentComponent; isPipeGroupsHidden = true; pipeMaterialsGridData: PipeMaterialGroupModel[]; selectedPipeMaterial: PipeMaterialGroupModel; isPipeMaterialChoosen: boolean = false; elementIndex: number; headers: string[] = ['Name', 'Description', '']; constructor(private mainPageService: MainPageService) { } public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deletePipeMaterialSubject.subscribe((value) => { this.pipeMaterialsGridData = this.pipeMaterialsGridData.filter(x => x._id !== value); }); this.managmentComponent.stateSubject.subscribe((state) => { if (state !== null) { Object.assign(this.pipeMaterialsGridData[this.elementIndex], state); } this.isPipeMaterialChoosen = false; }); } loadGridDataFromDb() { this.mainPageService.loadAllPipeMaterials().subscribe((response) => { this.pipeMaterialsGridData = 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.isPipeGroupsHidden = !this.isPipeGroupsHidden; } createNewPipeMaterial() { const pipeMaterial = new PipeMaterialGroupModel(); this.mainPageService.addNewPipeMaterialIntoDb(JSON.stringify(pipeMaterial)).subscribe((response) => { pipeMaterial._id = response._id; pipeMaterial.id = response.id; this.pipeMaterialsGridData.push(pipeMaterial); this.elementIndex = this.pipeMaterialsGridData.indexOf(pipeMaterial); this.managmentComponent.showManagmentPage(pipeMaterial, true); }); this.isPipeMaterialChoosen = true; } setChoosenElement(element) { this.selectedPipeMaterial = { ...element, }; this.elementIndex = this.pipeMaterialsGridData.indexOf(element); }; editPipeMaterial(element) { this.selectedPipeMaterial = { ...element, }; this.elementIndex = this.pipeMaterialsGridData.indexOf(element); this.managmentComponent.showManagmentPage(this.selectedPipeMaterial); this.isPipeMaterialChoosen = true; } deletePipeMaterial() { this.mainPageService.removePipeMaterial(this.selectedPipeMaterial._id).subscribe(() => { }, () => { }); this.mainPageService.deletePipeMaterialSubject.next(this.selectedPipeMaterial._id); } }