]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/blob
05605a7385342ddb6e17f19b6f21be27329aae92
[ceph.git] /
1 import {
2   CephCertificateStatus,
3   CephServiceCertificate
4 } from '~/app/shared/models/service.interface';
5 import { Component, EventEmitter, Input, Output } from '@angular/core';
6 import { ICON_TYPE } from '~/app/shared/enum/icons.enum';
7 import { CdDatePipe } from '~/app/shared/pipes/cd-date.pipe';
8
9 @Component({
10   selector: 'cd-service-certificate-details',
11   templateUrl: './service-certificate-details.component.html',
12   styleUrls: ['./service-certificate-details.component.scss'],
13   providers: [CdDatePipe],
14   standalone: false
15 })
16 export class ServiceCertificateDetailsComponent {
17   @Input() certificate: CephServiceCertificate;
18   @Input() serviceName?: string;
19   @Input() serviceType?: string;
20
21   @Output() editService = new EventEmitter<{ serviceName?: string; serviceType?: string }>();
22
23   readonly statusIconMap: Record<string, keyof typeof ICON_TYPE> = {
24     valid: 'success',
25     expiring: 'warning',
26     expiring_soon: 'warning',
27     expired: 'danger',
28     default: 'warning'
29   };
30
31   constructor(private cdDatePipe: CdDatePipe) {}
32
33   formatCertificateStatus(cert: CephServiceCertificate): string {
34     if (!cert || !cert.requires_certificate || !cert.status) {
35       return '-';
36     }
37
38     const formattedDate = this.formatDate(cert.expiry_date);
39     switch (cert.status) {
40       case CephCertificateStatus.valid:
41         return formattedDate ? `Valid - ${formattedDate}` : 'Valid';
42       case CephCertificateStatus.expiringSoon:
43         return formattedDate ? `Expiring soon - ${formattedDate}` : 'Expiring soon';
44       case CephCertificateStatus.expired:
45         return formattedDate ? `Expired - ${formattedDate}` : 'Expired';
46       case CephCertificateStatus.notConfigured:
47         return 'Not configured';
48       default:
49         return formattedDate ? `${cert.status} - ${formattedDate}` : cert.status;
50     }
51   }
52
53   formatDate(dateValue: string | Date | null | undefined): string | null {
54     if (!dateValue) {
55       return null;
56     }
57     return this.cdDatePipe.transform(dateValue, 'DD MMM y');
58   }
59
60   onEdit(): void {
61     this.editService.emit({ serviceName: this.serviceName, serviceType: this.serviceType });
62   }
63 }