import { Component, OnInit, inject, signal } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ApiService, Registry } from '../../core/services/api.service';
@Component({
selector: 'app-registries',
standalone: true,
imports: [CommonModule, FormsModule],
template: `
Docker Registries
@if (registries().length > 0) {
| URL |
Username |
Created |
Actions |
@for (registry of registries(); track registry.id) {
| {{ registry.url }} |
{{ registry.username }} |
{{ formatDate(registry.createdAt) }} |
|
}
}
`,
})
export class RegistriesComponent implements OnInit {
private apiService = inject(ApiService);
registries = signal([]);
newRegistry = { url: '', username: '', password: '' };
ngOnInit(): void {
this.loadRegistries();
}
loadRegistries(): void {
this.apiService.getRegistries().subscribe({
next: (response) => {
if (response.success && response.data) {
this.registries.set(response.data);
}
},
});
}
addRegistry(): void {
this.apiService.createRegistry(this.newRegistry).subscribe({
next: () => {
this.newRegistry = { url: '', username: '', password: '' };
this.loadRegistries();
},
});
}
deleteRegistry(registry: Registry): void {
if (confirm(`Delete registry ${registry.url}?`)) {
this.apiService.deleteRegistry(registry.url).subscribe({
next: () => this.loadRegistries(),
});
}
}
formatDate(timestamp: number): string {
return new Date(timestamp).toLocaleDateString();
}
}