]> git.apps.os.sepia.ceph.com Git - ceph.git/blob
410f53f7a071b6dcc3a26dbe150e6d5a62e8af5f
[ceph.git] /
1 import { Component, ViewChild } from '@angular/core';
2
3 import { I18n } from '@ngx-translate/i18n-polyfill';
4 import { BsModalRef } from 'ngx-bootstrap/modal';
5 import { forkJoin as observableForkJoin } from 'rxjs';
6
7 import { ConfigOptionComponent } from '../../../../shared/components/config-option/config-option.component';
8 import { ActionLabelsI18n } from '../../../../shared/constants/app.constants';
9 import { NotificationType } from '../../../../shared/enum/notification-type.enum';
10 import { CdFormGroup } from '../../../../shared/forms/cd-form-group';
11 import { Permissions } from '../../../../shared/models/permissions';
12 import { AuthStorageService } from '../../../../shared/services/auth-storage.service';
13 import { NotificationService } from '../../../../shared/services/notification.service';
14 import { OsdPgScrubModalOptions } from './osd-pg-scrub-modal.options';
15
16 @Component({
17   selector: 'cd-osd-pg-scrub-modal',
18   templateUrl: './osd-pg-scrub-modal.component.html',
19   styleUrls: ['./osd-pg-scrub-modal.component.scss']
20 })
21 export class OsdPgScrubModalComponent {
22   osdPgScrubForm: CdFormGroup;
23   action: string;
24   resource: string;
25   permissions: Permissions;
26
27   @ViewChild('basicOptionsValues', { static: true })
28   basicOptionsValues: ConfigOptionComponent;
29   basicOptions: Array<string> = OsdPgScrubModalOptions.basicOptions;
30
31   @ViewChild('advancedOptionsValues')
32   advancedOptionsValues: ConfigOptionComponent;
33   advancedOptions: Array<string> = OsdPgScrubModalOptions.advancedOptions;
34
35   advancedEnabled = false;
36
37   constructor(
38     public bsModalRef: BsModalRef,
39     private authStorageService: AuthStorageService,
40     private notificationService: NotificationService,
41     private i18n: I18n,
42     public actionLabels: ActionLabelsI18n
43   ) {
44     this.osdPgScrubForm = new CdFormGroup({});
45     this.resource = this.i18n('PG scrub options');
46     this.action = this.actionLabels.EDIT;
47     this.permissions = this.authStorageService.getPermissions();
48   }
49
50   submitAction() {
51     const observables = [this.basicOptionsValues.saveValues()];
52
53     if (this.advancedOptionsValues) {
54       observables.push(this.advancedOptionsValues.saveValues());
55     }
56
57     observableForkJoin(observables).subscribe(
58       () => {
59         this.notificationService.show(
60           NotificationType.success,
61           this.i18n('Updated PG scrub options')
62         );
63         this.bsModalRef.hide();
64       },
65       () => {
66         this.bsModalRef.hide();
67       }
68     );
69   }
70 }