import { Component, OnInit, Input } from '@angular/core'; import { MainPageService } from '../../../../main-page/main-page.service'; import { PiperingFamilyManagmentComponent } from '../pipering-family-managment/pipering-family-managment.component'; import { PiperingFamilyModel } from '../../../../models/dictionaries/pipering-family.model'; declare var $: any; @Component({ selector: 'app-pipering-families-grid', templateUrl: './pipering-families-grid.component.html', styleUrls: ['./pipering-families-grid.component.scss'] }) export class PiperingFamiliesGridComponent implements OnInit { @Input() managmentComponent: PiperingFamilyManagmentComponent; isPiperingFamiliesHidden = true; piperingFamiliesGridData: PiperingFamilyModel[]; selectedPiperingFamily: PiperingFamilyModel; isPiperingFamilyChoosen: boolean = false; elementIndex: number; headers: string[] = ['Name', 'Description', '']; constructor(private mainPageService: MainPageService) { } public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deletePiperingFamilySubject.subscribe((value) => { this.piperingFamiliesGridData = this.piperingFamiliesGridData.filter(x => x._id !== value); }); this.managmentComponent.stateSubject.subscribe((state) => { if (state !== null) { Object.assign(this.piperingFamiliesGridData[this.elementIndex], state); } this.isPiperingFamilyChoosen = false; }) } loadGridDataFromDb() { this.mainPageService.loadAllPiperingFamilies().subscribe((response) => { this.piperingFamiliesGridData = 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.isPiperingFamiliesHidden = !this.isPiperingFamiliesHidden; } createNewPiperingFamily() { const piperingFamily = new PiperingFamilyModel(); this.mainPageService.addNewPiperingFamilyIntoDb(JSON.stringify(piperingFamily)).subscribe((response) => { piperingFamily._id = response._id; piperingFamily.id = response.id; this.piperingFamiliesGridData.push(piperingFamily); this.elementIndex = this.piperingFamiliesGridData.indexOf(piperingFamily); this.managmentComponent.showManagmentPage(piperingFamily, true); }); this.isPiperingFamilyChoosen = true; } setChoosenElement(element) { this.selectedPiperingFamily = { ...element, }; this.elementIndex = this.piperingFamiliesGridData.indexOf(element); }; editPiperingFamily(element) { this.selectedPiperingFamily = { ...element, }; this.elementIndex = this.piperingFamiliesGridData.indexOf(element); this.managmentComponent.showManagmentPage(this.selectedPiperingFamily, false); this.isPiperingFamilyChoosen = true; } deletePiperingFamily() { this.mainPageService.removePiperingFamily(this.selectedPiperingFamily._id).subscribe((res) => { }, (error: any) => { }); this.mainPageService.deletePiperingFamilySubject.next(this.selectedPiperingFamily._id); } }