import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { ActivatedRoute, Router } from '@angular/router'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DatasetProfileModel } from '../../../models/datasetprofile/DatasetProfileModel'; import { DatasetService } from '../../../services/dataset/dataset.service'; import { JsonSerializer } from '../../../utilities/JsonSerializer'; @Component({ selector: 'app-available-profiles-component', templateUrl: 'available-profiles.component.html', }) export class AvailableProfilesComponent extends BaseComponent implements OnInit { public formGroup: FormGroup; public profiles: DatasetProfileModel[] = []; public selectedProfiles: DatasetProfileModel[] = []; public selectedOptions: any; constructor( private datasetService: DatasetService, private route: ActivatedRoute, public router: Router, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any ) { super(); } ngOnInit(): void { this.formGroup = this.data['profiles']; this.datasetService.getDatasetProfiles() .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.profiles = JsonSerializer.fromJSONArray(data, DatasetProfileModel); }); } addProfiles(profiles) { profiles.selectedOptions.selected.forEach(element => { const selectedElement = new DatasetProfileModel(); selectedElement.id = element.value.id; selectedElement.label = element.value.label; this.selectedProfiles.push(selectedElement); }); this.formGroup.setValue(this.selectedProfiles); this.dialogRef.close(); } isOptionSelected(profile: any) { return this.formGroup.value.map(x => x.id).indexOf(profile.id) !== -1; } }