]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.ts
import ceph nautilus 14.2.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / cluster / osd / osd-pg-scrub-modal / osd-pg-scrub-modal.component.ts
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')
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 }