]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/blob
2b17dba5bde1d7305005e47415ba8a59cd346af5
[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 { NotificationService } from '../../../../shared/services/notification.service';
12 import { OsdPgScrubModalOptions } from './osd-pg-scrub-modal.options';
13
14 @Component({
15   selector: 'cd-osd-pg-scrub-modal',
16   templateUrl: './osd-pg-scrub-modal.component.html',
17   styleUrls: ['./osd-pg-scrub-modal.component.scss']
18 })
19 export class OsdPgScrubModalComponent {
20   osdPgScrubForm: CdFormGroup;
21   action: string;
22   resource: string;
23
24   @ViewChild('basicOptionsValues')
25   basicOptionsValues: ConfigOptionComponent;
26   basicOptions: Array<string> = OsdPgScrubModalOptions.basicOptions;
27
28   @ViewChild('advancedOptionsValues')
29   advancedOptionsValues: ConfigOptionComponent;
30   advancedOptions: Array<string> = OsdPgScrubModalOptions.advancedOptions;
31
32   advancedEnabled = false;
33
34   constructor(
35     public bsModalRef: BsModalRef,
36     private notificationService: NotificationService,
37     private i18n: I18n,
38     public actionLabels: ActionLabelsI18n
39   ) {
40     this.osdPgScrubForm = new CdFormGroup({});
41     this.resource = this.i18n('PG scrub options');
42     this.action = this.actionLabels.EDIT;
43   }
44
45   submitAction() {
46     const observables = [this.basicOptionsValues.saveValues()];
47
48     if (this.advancedOptionsValues) {
49       observables.push(this.advancedOptionsValues.saveValues());
50     }
51
52     observableForkJoin(observables).subscribe(
53       () => {
54         this.notificationService.show(
55           NotificationType.success,
56           this.i18n('Updated PG scrub options')
57         );
58         this.bsModalRef.hide();
59       },
60       () => {
61         this.bsModalRef.hide();
62       }
63     );
64   }
65 }