]> git.apps.os.sepia.ceph.com Git - ceph.git/blob
f472baccbb7d7dbab2984c092a9b0d0955b9353a
[ceph.git] /
1 import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
2 import { FormControl, Validators } from '@angular/forms';
3
4 import { BsModalRef } from 'ngx-bootstrap';
5 import { Observable } from 'rxjs';
6
7 import { CdFormGroup } from '../../forms/cd-form-group';
8 import { SubmitButtonComponent } from '../submit-button/submit-button.component';
9
10 @Component({
11   selector: 'cd-deletion-modal',
12   templateUrl: './deletion-modal.component.html',
13   styleUrls: ['./deletion-modal.component.scss']
14 })
15 export class DeletionModalComponent implements OnInit {
16   @ViewChild(SubmitButtonComponent)
17   submitButton: SubmitButtonComponent;
18   bodyTemplate: TemplateRef<any>;
19   submitActionObservable: () => Observable<any>;
20   submitAction: Function;
21   deletionForm: CdFormGroup;
22   itemDescription: 'entry';
23   actionDescription = 'delete';
24
25   constructor(public modalRef: BsModalRef) {}
26
27   ngOnInit() {
28     this.deletionForm = new CdFormGroup({
29       confirmation: new FormControl(false, [Validators.requiredTrue])
30     });
31
32     if (!(this.submitAction || this.submitActionObservable)) {
33       throw new Error('No submit action defined');
34     }
35   }
36
37   callSubmitAction() {
38     if (this.submitActionObservable) {
39       this.submitActionObservable().subscribe(
40         null,
41         this.stopLoadingSpinner.bind(this),
42         this.hideModal.bind(this)
43       );
44     } else {
45       this.submitAction();
46     }
47   }
48
49   hideModal() {
50     this.modalRef.hide();
51   }
52
53   stopLoadingSpinner() {
54     this.deletionForm.setErrors({ cdSubmitButton: true });
55   }
56 }