import { Component, OnInit, Input } from '@angular/core'; import { MainPageService } from '../../main-page.service'; import { CorosiveProtectionModel } from '../../../models/dictionaries/corosive-protection.model'; declare var $: any; @Component({ selector: 'app-corosion-protections-grid', templateUrl: './corosion-protections-grid.component.html', styleUrls: ['./corosion-protections-grid.component.scss'] }) export class CorosionProtectionGridComponent implements OnInit { isComponentHidden = true; corosionProtectionGridData: CorosiveProtectionModel[]; templateCorosionProtection= new CorosiveProtectionModel(); editedCorosionProtection= new CorosiveProtectionModel(); rowNumber: number; headers: string[] = ['Name', 'Description', '']; constructor(private mainPageService: MainPageService) {} public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deleteCorosionProtectionSubject.subscribe( (value) => { this.corosionProtectionGridData = this.corosionProtectionGridData.filter(x => x._id !== value); }); } loadGridDataFromDb() { this.mainPageService.loadAllCorosionProtections().subscribe((response) => { this.corosionProtectionGridData = 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.isComponentHidden = !this.isComponentHidden; } saveNewCorosionProtection() { this.templateCorosionProtection.id = this.corosionProtectionGridData.length + 1; this.mainPageService.addNewCorosionProtectionIntoDb(JSON.stringify(this.templateCorosionProtection)).subscribe((response) => { this.templateCorosionProtection._id = response; this.corosionProtectionGridData.push(this.templateCorosionProtection); this.templateCorosionProtection = new CorosiveProtectionModel(); }); } setChoosenElement(element, row) { this.editedCorosionProtection = { ...element, }; this.rowNumber = row; } editCorosionProtection() { console.log(this.corosionProtectionGridData[this.rowNumber]); Object.assign(this.corosionProtectionGridData[this.rowNumber], this.editedCorosionProtection); this.mainPageService.updateCorosionProtectionInDb(JSON.stringify(this.editedCorosionProtection)).subscribe((response) => {}); } deleteCorosionProtection(element) { this.mainPageService.removeCorosionProtection(element._id).subscribe((res) => {}, (error: any) => {}); this.mainPageService.deleteCorosionProtectionSubject.next(element._id); } }