-
Notifications
You must be signed in to change notification settings - Fork 10
/
manage-capabilities.component.ts
50 lines (42 loc) · 1.83 KB
/
manage-capabilities.component.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import { Component } from '@angular/core';
import { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { Beans, ProviderRegisterCommand, ProviderUnregisterCommand, mapToBody, MessageClient, Provider, Topics } from '@scion/microfrontend-platform';
import { SciParamsEnterComponent } from '@scion/app/common';
import { Observable } from 'rxjs';
const TYPE = 'type';
const QUALIFIER = 'qualifier';
const PRIVATE = 'private';
@Component({
selector: 'app-manage-capabilities',
templateUrl: './manage-capabilities.component.html',
styleUrls: ['./manage-capabilities.component.scss'],
})
export class ManageCapabilitiesComponent {
public readonly TYPE = TYPE;
public readonly QUALIFIER = QUALIFIER;
public readonly PRIVATE = PRIVATE;
public form: FormGroup;
public capabilities$: Observable<Provider[]>;
constructor(fb: FormBuilder) {
this.form = fb.group({
[TYPE]: new FormControl('', Validators.required),
[QUALIFIER]: fb.array([]),
[PRIVATE]: new FormControl(true, Validators.required),
});
this.capabilities$ = Beans.get(MessageClient).request$<Provider[]>(Topics.Providers).pipe(mapToBody());
}
public onCapabilityRegister(): void {
const registerCommand: ProviderRegisterCommand = {
provider: {
type: this.form.get(TYPE).value,
qualifier: SciParamsEnterComponent.toParams(this.form.get(QUALIFIER) as FormArray),
private: this.form.get(PRIVATE).value,
},
};
Beans.get(MessageClient).publish$(Topics.RegisterProvider, registerCommand).subscribe();
}
public onCapabilityUnregister(capability: Provider): void {
const unregisterCommand: ProviderUnregisterCommand = {type: capability.type, qualifier: capability.qualifier};
Beans.get(MessageClient).publish$(Topics.UnregisterProvider, unregisterCommand).subscribe();
}
}