import { Component, OnInit, Input } from '@angular/core'; import { MainPageService } from '../../../../main-page/main-page.service'; import { PiperingBossesManagementComponent } from '../pipering-bosses-managment/pipering-bosses-managment.component'; import { PiperingBossModel } from '../../../../models/parts/pipering-boss.model'; declare var $: any; @Component({ selector: 'app-pipering-bosses-grid', templateUrl: './pipering-bosses-grid.component.html', styleUrls: ['./pipering-bosses-grid.component.scss'] }) export class PiperingBossesGridComponent implements OnInit { @Input() managmentComponent: PiperingBossesManagementComponent; isPiperingBossesHidden = true; piperingBossesGridData: PiperingBossModel[]; selectedPiperingBoss: PiperingBossModel; isPiperingBossChoosen: boolean = false; elementIndex: number; headers: string[] = ['Name', 'Claw [mm]', 'Is double connected', '']; constructor(private mainPageService: MainPageService) { } public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deletePiperingBossSubject.subscribe((value) => { this.piperingBossesGridData = this.piperingBossesGridData.filter(x => x._id !== value); }); this.managmentComponent.stateSubject.subscribe((state) => { if (state !== null) { Object.assign(this.piperingBossesGridData[this.elementIndex], state); } this.isPiperingBossChoosen = false; }) } loadGridDataFromDb() { this.mainPageService.loadAllPiperingBosses().subscribe((response) => { this.piperingBossesGridData = 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.isPiperingBossesHidden = !this.isPiperingBossesHidden; } createNewPiperingBoss() { const piperingBoss = new PiperingBossModel(); this.mainPageService.addNewPiperingBossIntoDb(JSON.stringify(piperingBoss)).subscribe((response) => { piperingBoss._id = response._id; piperingBoss.id = response.id; this.piperingBossesGridData.push(piperingBoss); this.elementIndex = this.piperingBossesGridData.indexOf(piperingBoss); this.managmentComponent.showManagmentPage(piperingBoss, true); }); this.isPiperingBossChoosen = true; } setChoosenElement(element) { this.selectedPiperingBoss = { ...element, }; this.elementIndex = this.piperingBossesGridData.indexOf(element); }; editPiperingBoss(element) { this.selectedPiperingBoss = { ...element, }; this.elementIndex = this.piperingBossesGridData.indexOf(element); this.managmentComponent.showManagmentPage(this.selectedPiperingBoss); this.isPiperingBossChoosen = true; } deletePiperingBoss() { this.mainPageService.removePiperingBoss(this.selectedPiperingBoss._id).subscribe(() => { }, () => { }); this.mainPageService.deletePiperingBossSubject.next(this.selectedPiperingBoss._id); } }