You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
argos/dmp-frontend/src/app/shared/components/available-profiles/available-profiles.componen...

53 lines
1.9 KiB
TypeScript

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<AvailableProfilesComponent>,
@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;
}
}