import { Component, OnInit, Input } from '@angular/core'; import { MainPageService } from '../../../main-page.service'; import { FormGroup, FormControl, Validators } from '@angular/forms'; import { PipeRingsManagmentComponent } from '../pipe-rings-managment/pipe-rings-managment.component'; import { PipeRingModel } from '../../../../models/parts/pipering.model.'; import { PiperingGroupModel } from '../../../../models/dictionaries/pipering-group.model'; import { CorosiveProtectionModel } from '../../../../models/dictionaries/corosive-protection.model'; declare var $: any; @Component({ selector: 'app-pipe-rings-grid', templateUrl: './pipe-rings-grid.component.html', styleUrls: ['./pipe-rings-grid.component.scss'] }) export class PipeRingsGridComponent implements OnInit { @Input() pipeRingsComponent: PipeRingsManagmentComponent; isPipeRingHidden = true; pipeRingsGridData: PipeRingModel[] = []; public selectedRowId; templatePipeRing = new PipeRingModel(); headers: string[] = ['Article no.', 'Name']; public formGroup: FormGroup; public piperingGroupsData: PiperingGroupModel[] = []; public corrosionProtectionData: CorosiveProtectionModel[] = []; public piperingFamiliesArray: any[] = []; constructor(private mainPageService: MainPageService) { mainPageService.loadAllPiperingFamilies().subscribe((res) => { this.piperingFamiliesArray = res; }); } public ngOnInit(): void { this.loadData(); // this.mainPageService.mysubject.subscribe((value) => { // this.updatePipeRingInDB(value); // }); this.mainPageService.deletePiperingSubject.subscribe((value) => { this.pipeRingsGridData = this.pipeRingsGridData.filter(x => x._id !== value); }); this.createForm(); } loadData(): void { this.mainPageService.loadAllPiperings().subscribe((response) => { this.pipeRingsGridData = response.sort(function (a, b) { if (a.articleId < b.articleId) { return -1; }; if (a.articleId > b.articleId) { return 1; }; return 0; }); }); this.mainPageService.loadAllPiperingGroups().subscribe((response) => { this.piperingGroupsData = response; }); this.mainPageService.loadAllCorosionProtections().subscribe((response) => { this.corrosionProtectionData = response; }); } 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.isPipeRingHidden = !this.isPipeRingHidden; } onPipeRingClick(sender) { this.pipeRingsComponent.showPipeRing(sender); } onRowClick(row, id) { this.selectedRowId = id; this.pipeRingsComponent.showPipeRing(this.pipeRingsGridData[row]); } updatePipeRingInDB(id) { let dataToSend; let preparedData; for (const item of this.pipeRingsGridData) { if (item._id === id) { dataToSend = item; break; } } for (const item of this.pipeRingsGridData) { if (item._id === id) { preparedData = item; break; } } preparedData.articleNumber = dataToSend.articleNumber; preparedData.corrosionProtectionId = dataToSend.corrosionProtectionId; preparedData.piperingGroupId = dataToSend.piperingGroupId; preparedData.name = dataToSend.name; this.mainPageService.updatePiperingInDb(JSON.stringify(preparedData)).subscribe(() => { }); } saveNewPipeRing() { this.mainPageService.addNewPiperingIntoDb(JSON.stringify(this.templatePipeRing)).subscribe((response) => { this.templatePipeRing._id = response; this.pipeRingsGridData.push(this.templatePipeRing); this.templatePipeRing = new PipeRingModel(); }); } public prepareCreate() { this.templatePipeRing = new PipeRingModel(); this.createForm(); } private createForm() { this.formGroup = new FormGroup({ name: new FormControl(this.templatePipeRing.name, Validators.required), articleId: new FormControl(this.templatePipeRing.articleId, Validators.required), corrosionProtectionId: new FormControl(this.templatePipeRing.corrosionProtectionId, Validators.required), piperingGroupId: new FormControl(this.templatePipeRing.piperingGroupId, Validators.required), piperingFamilyId: new FormControl(this.templatePipeRing.piperingFamilyId, Validators.required), }); } }