]> git.apps.os.sepia.ceph.com Git - ceph.git/blob
65c0a4f5ee2d20d7f91b294360e30e99b406878c
[ceph.git] /
1 import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
2 import { UntypedFormControl, Validators } from '@angular/forms';
3
4 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
5 import { Observable } from 'rxjs';
6
7 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
8 import { SubmitButtonComponent } from '../submit-button/submit-button.component';
9
10 @Component({
11   selector: 'cd-deletion-modal',
12   templateUrl: './critical-confirmation-modal.component.html',
13   styleUrls: ['./critical-confirmation-modal.component.scss']
14 })
15 export class CriticalConfirmationModalComponent implements OnInit {
16   @ViewChild(SubmitButtonComponent, { static: true })
17   submitButton: SubmitButtonComponent;
18   bodyTemplate: TemplateRef<any>;
19   bodyContext: object;
20   submitActionObservable: () => Observable<any>;
21   callBackAtionObservable: () => Observable<any>;
22   submitAction: Function;
23   backAction: Function;
24   deletionForm: CdFormGroup;
25   itemDescription: 'entry';
26   itemNames: string[];
27   actionDescription = 'delete';
28   infoMessage: string;
29
30   childFormGroup: CdFormGroup;
31   childFormGroupTemplate: TemplateRef<any>;
32
33   constructor(public activeModal: NgbActiveModal) {}
34
35   ngOnInit() {
36     const controls = {
37       confirmation: new UntypedFormControl(false, [Validators.requiredTrue])
38     };
39     if (this.childFormGroup) {
40       controls['child'] = this.childFormGroup;
41     }
42     this.deletionForm = new CdFormGroup(controls);
43     if (!(this.submitAction || this.submitActionObservable)) {
44       throw new Error('No submit action defined');
45     }
46   }
47
48   callSubmitAction() {
49     if (this.submitActionObservable) {
50       this.submitActionObservable().subscribe({
51         error: this.stopLoadingSpinner.bind(this),
52         complete: this.hideModal.bind(this)
53       });
54     } else {
55       this.submitAction();
56     }
57   }
58
59   callBackAction() {
60     if (this.callBackAtionObservable) {
61       this.callBackAtionObservable().subscribe({
62         error: this.stopLoadingSpinner.bind(this),
63         complete: this.hideModal.bind(this)
64       });
65     } else {
66       this.backAction();
67     }
68   }
69
70   hideModal() {
71     this.activeModal.close();
72   }
73
74   stopLoadingSpinner() {
75     this.deletionForm.setErrors({ cdSubmitButton: true });
76   }
77 }