import { Component, OnInit, Input } from '@angular/core'; import { MainPageService } from '../../main-page.service'; import { DesignBaseModel } from '../../../models/dictionaries/design-base.model'; declare var $: any; @Component({ selector: 'app-design-bases-grid', templateUrl: './design-bases-grid.component.html', styleUrls: ['./design-bases-grid.component.scss'] }) export class DesignBasesGridComponent implements OnInit { isComponentHidden = true; designBasesGridData: DesignBaseModel[]; templateDesignBase = new DesignBaseModel(); editedDesignBase = new DesignBaseModel(); rowNumber: number; headers: string[] = ['Name', 'Description', 'Displacement beam', 'Displacement bracket', 'Safety factor', 'Shear factor', 'Buckling lenght', 'Min deflection limit', '']; constructor(private mainPageService: MainPageService) {} public ngOnInit(): void { this.loadGridDataFromDb(); this.mainPageService.deleteDesignBaseSubject.subscribe( (value) => { this.designBasesGridData = this.designBasesGridData.filter(x => x._id !== value); }); } loadGridDataFromDb() { this.mainPageService.loadAllDesignBases().subscribe((response) => { this.designBasesGridData = 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; } saveNewDesignBase() { this.mainPageService.addNewDesignBaseIntoDb(JSON.stringify(this.templateDesignBase)).subscribe((response) => { this.templateDesignBase._id = response; this.designBasesGridData.push(this.templateDesignBase); this.templateDesignBase = new DesignBaseModel(); }); } setChoosenElement(element, row) { this.editedDesignBase = { ...element, }; this.rowNumber = row; } editDesignBase() { console.log(this.designBasesGridData[this.rowNumber]); Object.assign(this.designBasesGridData[this.rowNumber], this.editedDesignBase); this.mainPageService.updateDesignBaseInDb(JSON.stringify(this.editedDesignBase)).subscribe((response) => {}); } deleteDesignBase(element) { this.mainPageService.removeDesignBase(element._id).subscribe((res) => {}, (error: any) => {}); this.mainPageService.deleteDesignBaseSubject.next(element._id); } }