import { Component, OnInit } from '@angular/core'; import { MainPageService } from '../../main-page.service'; import { ReleaseModel } from '../../../models/dictionaries/release.model'; import { FormGroup, FormControl, Validators } from '@angular/forms'; declare var $: any; @Component({ selector: 'app-releases-grid', templateUrl: './releases-grid.component.html', styleUrls: ['./releases-grid.component.scss'] }) export class ReleasesComponent implements OnInit { isReleasesHidden = true; releasesGridData: ReleaseModel[]; templateRelease = new ReleaseModel(); editedRelease = new ReleaseModel(); releaseForm: FormGroup; rowNumber: number; headers: string[] = ['Name', '']; constructor(private mainPageService: MainPageService) { } public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deleteReleaseSubject.subscribe((value) => { this.releasesGridData = this.releasesGridData.filter(x => x._id !== value); }); this.createForm(); } loadGridDataFromDb() { this.mainPageService.loadAllReleases().subscribe((response) => { this.releasesGridData = response.sort(function (a, b) { return (a.name < b.name) ? -1 : 1; }); }); } prepareCreate() { this.editedRelease = new ReleaseModel(); this.createForm(); } private createForm() { this.releaseForm = new FormGroup({ name: new FormControl(this.editedRelease.name, Validators.required), isUxSet: new FormControl(this.editedRelease.isUxSet), valueUx: new FormControl(this.editedRelease.valueUx, Validators.compose([Validators.min(0), Validators.pattern('^\\d+(?:\\.\\d{1,3})?$')])), isUySet: new FormControl(this.editedRelease.isUySet), valueUy: new FormControl(this.editedRelease.valueUy, Validators.compose([Validators.min(0), Validators.pattern('^\\d+(?:\\.\\d{1,3})?$')])), isUzSet: new FormControl(this.editedRelease.isUzSet), valueUz: new FormControl(this.editedRelease.valueUz, Validators.compose([Validators.min(0), Validators.pattern('^\\d+(?:\\.\\d{1,3})?$')])), isPhixSet: new FormControl(this.editedRelease.isPhixSet), valuePhix: new FormControl(this.editedRelease.valuePhix, Validators.compose([Validators.min(0), Validators.pattern('^\\d+(?:\\.\\d{1,3})?$')])), isPhiySet: new FormControl(this.editedRelease.isPhiySet), valuePhiy: new FormControl(this.editedRelease.valuePhiy, Validators.compose([Validators.min(0), Validators.pattern('^\\d+(?:\\.\\d{1,3})?$')])), isPhizSet: new FormControl(this.editedRelease.isPhizSet), valuePhiz: new FormControl(this.editedRelease.valuePhiz, Validators.compose([Validators.min(0), Validators.pattern('^\\d+(?:\\.\\d{1,3})?$')])), }); } 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.isReleasesHidden = !this.isReleasesHidden; } checkRealease(release: ReleaseModel) { if (!release.isUxSet) { release.valueUx = null; } else if ( release.valueUx === null){ release.valueUx = 0; } if (!release.isUySet) { release.valueUy = null; } else if ( release.valueUy === null){ release.valueUy = 0; } if (!release.isUzSet) { release.valueUz = null; } else if ( release.valueUz === null){ release.valueUz = 0; } if (!release.isPhixSet) { release.valuePhix = null; } else if ( release.valuePhix === null){ release.valuePhix = 0; } if (!release.isPhiySet) { release.valuePhiy = null; } else if ( release.valuePhiy === null){ release.valuePhiy = 0; } if (!release.isPhizSet) { release.valuePhiz = null; } else if ( release.valuePhiz === null){ release.valuePhiz = 0; } } saveNewRelease() { this.checkRealease(this.editedRelease); this.mainPageService.addNewReleaseIntoDb(JSON.stringify(this.editedRelease)).subscribe((response) => { this.editedRelease._id = response; this.releasesGridData.push(this.editedRelease); this.editedRelease = new ReleaseModel(); }); } setChoosenElement(element: ReleaseModel, row) { this.editedRelease = { ...element, }; this.rowNumber = row; } editRelease() { this.checkRealease(this.editedRelease); console.log(this.releasesGridData[this.rowNumber]); Object.assign(this.releasesGridData[this.rowNumber], this.editedRelease); this.mainPageService.updateReleaseInDb(JSON.stringify(this.editedRelease)).subscribe(() => { }); } deleteRelease(release) { this.mainPageService.removeRelease(release._id).subscribe(() => { }, () => { }); this.mainPageService.deleteReleaseSubject.next(release._id); } }