import { Component, OnInit, Input } from '@angular/core'; import { MainPageService } from '../../../../main-page/main-page.service'; import { InsulationMaterialManagmentComponent } from '../insulation-material-managment/insulation-material-managment.component'; import { InsulationMaterialModel } from '../../../../models/dictionaries/insulation-material.model'; declare var $: any; @Component({ selector: 'app-insulation-materials-grid', templateUrl: './insulation-materials-grid.component.html', styleUrls: ['./insulation-materials-grid.component.scss'] }) export class InsulationMaterialsGridComponent implements OnInit { @Input() managmentComponent: InsulationMaterialManagmentComponent; isInsulationMaterialsHidden = true; insulationMaterialsGridData: InsulationMaterialModel[]; selectedInsulationMaterial: InsulationMaterialModel; isInsulationMaterialChoosen: boolean = false; elementIndex: number; headers: string[] = ['Name', 'Density', '']; constructor(private mainPageService: MainPageService) { } public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deleteInsulationMaterialSubject.subscribe((value) => { this.insulationMaterialsGridData = this.insulationMaterialsGridData.filter(x => x._id !== value); }); this.managmentComponent.stateSubject.subscribe((state) => { if (state !== null) { Object.assign(this.insulationMaterialsGridData[this.elementIndex], state); } this.isInsulationMaterialChoosen = false; }) } loadGridDataFromDb() { this.mainPageService.loadAllInsulationMaterials().subscribe((response) => { this.insulationMaterialsGridData = 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.isInsulationMaterialsHidden = !this.isInsulationMaterialsHidden; } createNewInsulationMaterial() { const insulationMaterial = new InsulationMaterialModel(); this.mainPageService.addNewInsulationMaterialIntoDb(JSON.stringify(insulationMaterial)).subscribe((response) => { insulationMaterial._id = response._id; insulationMaterial.id = response.id; this.insulationMaterialsGridData.push(insulationMaterial); this.elementIndex = this.insulationMaterialsGridData.indexOf(insulationMaterial); this.managmentComponent.showManagmentPage(insulationMaterial, true); }); this.isInsulationMaterialChoosen = true; } setChoosenElement(element) { this.selectedInsulationMaterial = { ...element, }; this.elementIndex = this.insulationMaterialsGridData.indexOf(element); }; editInsulationMaterial(element) { this.selectedInsulationMaterial = { ...element, }; this.elementIndex = this.insulationMaterialsGridData.indexOf(element); this.managmentComponent.showManagmentPage(this.selectedInsulationMaterial); this.isInsulationMaterialChoosen = true; } deleteInsulationMaterial() { this.mainPageService.removeInsulationMaterial(this.selectedInsulationMaterial._id).subscribe((res) => { }, (error: any) => { }); this.mainPageService.deleteInsulationMaterialSubject.next(this.selectedInsulationMaterial._id); } }