From 7de506d39099fe28e1a34016a62c6cd951930c75 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Wed, 7 Aug 2024 12:51:17 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20L=C3=B6schfunktionalit=C3=A4t=20mit=20B?= =?UTF-8?q?est=C3=A4tigungsdialog=20hinzuf=C3=BCgen=20und=20Tastatur-Delet?= =?UTF-8?q?e-Ereignis=20verarbeiten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `@HostListener` für das `window:keydown.delete`-Ereignis hinzugefügt, um die Löschung von Elementen über die Tastatur zu verarbeiten. - `deleteItem`-Methode implementiert, um den Benutzer vor dem Löschen ausgewählter Elemente mit SweetAlert2 zur Bestätigung aufzufordern. - `forkJoin` integriert, um mehrere Löschanfragen gleichzeitig zu bearbeiten und Erfolg- oder Fehlermeldungen je nach Ergebnis anzuzeigen. --- .../src/app/pages/user/user.component.ts | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts index 384c1c7..9ee4179 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/pages/user/user.component.ts @@ -1,15 +1,14 @@ -import { AfterViewInit, Component, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, ViewChild, HostListener } from '@angular/core'; import { GuiCellEdit, GuiSelectedRow } from '@generic-ui/ngx-grid'; import { UserTableComponent } from '../../components/tables/user-table/user-table.component'; -import { RefreshService } from '../../services/refresh.service'; import { MatTabsModule } from '@angular/material/tabs'; import { GroupTableComponent } from '../../components/tables/group-table/group-table.component'; import { ModuleTableComponent } from '../../components/tables/module-table/module-table.component'; -import { CreationService } from '../../services/creation.service'; import { UserFormComponent } from '../../components/forms/user-form/user-form.component'; import { BasePageComponent } from '../base-page/base-page.component'; import { User } from '../../models/user-management.api.models'; -import { firstValueFrom } from 'rxjs'; +import { firstValueFrom, forkJoin } from 'rxjs'; +import Swal from 'sweetalert2'; @Component({ standalone: true, @@ -63,4 +62,39 @@ export class UserComponent extends BasePageComponent implements AfterViewInit { } } } + + @HostListener('window:keydown.delete', ['$event']) + handleDelete(event: KeyboardEvent) { + this.deleteItem(); + } + + deleteItem() { + const sRows = this.userTable.selectedRows; + if (sRows.length > 0) + Swal.fire({ + title: "Löschen bestätigen", + html: `

Dieser Vorgang ist unwiderruflich. Möchten Sie fortfahren?

Anzahl der zu löschenden Einträge: ${sRows.length}

`, + showDenyButton: true, + confirmButtonText: "Ja", + denyButtonText: `Nein` + }).then((result) => { + if (result.isConfirmed) { + const deleteRequests = sRows.map(sRow => this.userTable.service.delete(sRow.source.id!)); + forkJoin(deleteRequests).subscribe({ + next: () => { + this.refreshService.executeAll(), + Swal.fire({ + text: `${sRows.length} Einträge wurden erfolgreich gelöscht.`, + icon: "success" + }) + }, + error: err => Swal.fire({ + title: "Fehler", + text: `${err.message}`, + icon: "error" + }) + }); + } + }); + } } \ No newline at end of file