refactor: Gemeinsame Löschbehandlung in die Basisklasse verschieben und in Unterklassen überschreiben

- Methoden `handleCtrlS`, `handleDelete` und `deleteItem` in die `BasePageComponent` verschoben, um gemeinsame Funktionalität zu nutzen.
- Methode `deleteItem` in `GroupComponent` und `UserComponent` überschrieben, um spezifische Löschlogik und Bestätigungsdialoge bereitzustellen.
- Methode `deleteItem` aktualisiert, um SweetAlert2 für Bestätigung sowie Erfolg-/Fehlermeldungen zu integrieren.
- Sicherstellt, dass `BasePageComponent` gemeinsame Shortcut-Aktionen behandelt, während Unterklassen das Löschverhalten anpassen.
This commit is contained in:
Developer 02
2024-08-07 13:53:57 +02:00
parent 0b31b78544
commit 9cef878380
3 changed files with 29 additions and 33 deletions

View File

@@ -1,4 +1,4 @@
import { Component, inject } from '@angular/core'; import { Component, HostListener, inject } from '@angular/core';
import { RefreshService } from '../../services/refresh.service'; import { RefreshService } from '../../services/refresh.service';
import { CreationService } from '../../services/creation.service'; import { CreationService } from '../../services/creation.service';
import { UpdateService } from '../../services/update.service'; import { UpdateService } from '../../services/update.service';
@@ -23,4 +23,17 @@ export class BasePageComponent {
this.updateService.executeAll().then() this.updateService.executeAll().then()
} }
} }
}
@HostListener('window:keydown.control.s', ['$event'])
protected handleCtrlS(event: KeyboardEvent) {
event.preventDefault();
this.updateService.executeAll();
}
@HostListener('window:keydown.delete', ['$event'])
protected handleDelete(event: KeyboardEvent) {
this.deleteItem();
}
deleteItem() { }
}

View File

@@ -55,22 +55,11 @@ export class GroupComponent extends BasePageComponent implements AfterViewInit {
} }
} }
@HostListener('window:keydown.control.s', ['$event']) override deleteItem() {
handleCtrlS(event: KeyboardEvent) {
event.preventDefault();
this.updateService.executeAll();
}
@HostListener('window:keydown.delete', ['$event'])
handleDelete(event: KeyboardEvent) {
this.deleteItem();
}
deleteItem() {
const sRows = this.groupTable.selectedRows; const sRows = this.groupTable.selectedRows;
if (sRows.length > 0) if (sRows.length > 0)
Swal.fire({ Swal.fire({
title: "Löschen bestätigen", title: "Löschen besttigen",
html: `<p class="text-start">Dieser Vorgang ist unwiderruflich. Möchten Sie fortfahren?<br><br>Anzahl der zu löschenden Einträge: ${sRows.length}</p>`, html: `<p class="text-start">Dieser Vorgang ist unwiderruflich. Möchten Sie fortfahren?<br><br>Anzahl der zu löschenden Einträge: ${sRows.length}</p>`,
showDenyButton: true, showDenyButton: true,
confirmButtonText: "Ja", confirmButtonText: "Ja",
@@ -80,11 +69,14 @@ export class GroupComponent extends BasePageComponent implements AfterViewInit {
const deleteRequests = sRows.map(sRow => this.groupTable.service.delete(sRow.source.id!)); const deleteRequests = sRows.map(sRow => this.groupTable.service.delete(sRow.source.id!));
forkJoin(deleteRequests).subscribe({ forkJoin(deleteRequests).subscribe({
next: () => { next: () => {
this.refreshService.executeAll(), this.updateService.executeAll().then(() => {
Swal.fire({ this.refreshService.executeAll();
text: `${sRows.length} Einträge wurden erfolgreich gelöscht.`, })
icon: "success"
}) Swal.fire({
text: `${sRows.length} Einträge wurden erfolgreich gelöscht.`,
icon: "success"
})
}, },
error: err => Swal.fire({ error: err => Swal.fire({
title: "Fehler", title: "Fehler",

View File

@@ -63,18 +63,7 @@ export class UserComponent extends BasePageComponent implements AfterViewInit {
} }
} }
@HostListener('window:keydown.control.s', ['$event']) override deleteItem() {
handleCtrlS(event: KeyboardEvent) {
event.preventDefault();
this.updateService.executeAll();
}
@HostListener('window:keydown.delete', ['$event'])
handleDelete(event: KeyboardEvent) {
this.deleteItem();
}
deleteItem() {
const sRows = this.userTable.selectedRows; const sRows = this.userTable.selectedRows;
if (sRows.length > 0) if (sRows.length > 0)
Swal.fire({ Swal.fire({
@@ -88,7 +77,9 @@ export class UserComponent extends BasePageComponent implements AfterViewInit {
const deleteRequests = sRows.map(sRow => this.userTable.service.delete(sRow.source.id!)); const deleteRequests = sRows.map(sRow => this.userTable.service.delete(sRow.source.id!));
forkJoin(deleteRequests).subscribe({ forkJoin(deleteRequests).subscribe({
next: () => { next: () => {
this.refreshService.executeAll(), this.updateService.executeAll().then(() => {
this.refreshService.executeAll();
})
Swal.fire({ Swal.fire({
text: `${sRows.length} Einträge wurden erfolgreich gelöscht.`, text: `${sRows.length} Einträge wurden erfolgreich gelöscht.`,
icon: "success" icon: "success"