Refaktorierung der Benutzerzuweisungskomponente: Vereinfachung der Drag-and-Drop-Logik

- Entfernte Drag-and-Drop-Event-Handler aus der HTML-Vorlage
- Vereinfachte Drag-and-Drop-Logik in der Komponentenklasse
- Hinzufügen von transferService zur Verwaltung von Benutzerzuweisungen und -zuweisungen
- Gewährleistung einer nahtlosen Aktualisierung der Benutzertabellen nach der Datenübertragung
- Verbesserung der Code-Lesbarkeit und Wartbarkeit
- Behebung von Problemen mit der Synchronisation der Zeilenauswahl zwischen zugewiesenen und nicht zugewiesenen Benutzertabellen
This commit is contained in:
Developer 02 2024-08-08 09:59:55 +02:00
parent 7eabbd4b99
commit 321a4c83bb
2 changed files with 60 additions and 71 deletions

View File

@ -17,9 +17,7 @@
<mat-tab-group> <mat-tab-group>
<mat-tab label="Nicht zugeordnete Benutzer"> <mat-tab label="Nicht zugeordnete Benutzer">
<app-user-table #unassignedUsers class="body-content" [onSelectedRows]="unassignedUsersOnSelectedRows" <app-user-table #unassignedUsers class="body-content" [onSelectedRows]="unassignedUsersOnSelectedRows"
[rowSelection]="userRowSelection" (drop)="dropToUnassigned($event)" [rowSelection]="userRowSelection" [initData]="initWithoutData"></app-user-table>
(dragover)="allowDropOnUnassigned($event)" (dragstart)="dragUnassigned($event)"
[draggable]="true" [initData]="initWithoutData"></app-user-table>
<!-- <mt-table></mt-table> --> <!-- <mt-table></mt-table> -->
</mat-tab> </mat-tab>
</mat-tab-group> </mat-tab-group>
@ -29,11 +27,9 @@
<mat-tab-group> <mat-tab-group>
<mat-tab label="{{userInLabel}}"> <mat-tab label="{{userInLabel}}">
<app-user-table #assignedUsers class="body-content" [onSelectedRows]="assignedUsersOnSelectedRows" <app-user-table #assignedUsers class="body-content" [onSelectedRows]="assignedUsersOnSelectedRows"
[rowSelection]="userRowSelection" (drop)="dropToAssigned($event)" (dragover)="allowDropOnAssigned($event)" [rowSelection]="userRowSelection" [initData]="initWithoutData"></app-user-table>
(dragstart)="dragAssigned($event)" [draggable]="true" [initData]="initWithoutData"></app-user-table>
</mat-tab> </mat-tab>
</mat-tab-group> </mat-tab-group>
</div> </div>
</div> </div>
</div> </div>

View File

@ -57,35 +57,23 @@ export class UserAssignmentComponent extends BasePageComponent implements OnInit
if (this.anySelected) if (this.anySelected)
this.updateUserTables(); this.updateUserTables();
}); });
}
createAssignDragMethod(target: string): (event: DragEvent) => void { this.transferService.add(() => {
return (event: DragEvent) => { if (this.isAssignment) {
this.dragging = target; this.dropToUnassigned();
event.dataTransfer?.setData("text", target); this.refreshService.executeAll();
} }
else if (this.isUnassignment) {
this.dropToAssigned();
this.refreshService.executeAll();
}
});
} }
target: Target = Target.Module; target: Target = Target.Module;
targetId = 0; targetId = 0;
dragging: string = ""; dropToAssigned() {
dragAssigned = this.createAssignDragMethod("assigned")
dragUnassigned = this.createAssignDragMethod("unassigned")
allowDropOnAssigned(event: DragEvent) {
if (this.dragging == "unassigned")
event.preventDefault();
}
allowDropOnUnassigned(event: DragEvent) {
if (this.dragging == "assigned")
event.preventDefault();
}
dropToAssigned(event: DragEvent) {
if (event.dataTransfer?.getData("text") == "unassigned") {
var rows = this.unassignedUsers.selectedRows; var rows = this.unassignedUsers.selectedRows;
var users: User[] = new Array<User>(); var users: User[] = new Array<User>();
if (!rows) if (!rows)
@ -106,18 +94,16 @@ export class UserAssignmentComponent extends BasePageComponent implements OnInit
break; break;
} }
} }
}
dropToUnassigned(event: DragEvent) { dropToUnassigned() {
if (event.dataTransfer?.getData("text") == "assigned") {
var rows = this.assignedUsers.selectedRows; var rows = this.assignedUsers.selectedRows;
var users: User[] = new Array<User>(); var users: User[] = new Array<User>();
if (!rows) if (!rows)
return return
for (var row of rows) for (var row of rows)
users.push(row.source); users.push(row.source);
this.unselectUserTables() this.unselectUserTables()
switch (this.target) { switch (this.target) {
case Target.Module: case Target.Module:
@ -130,7 +116,6 @@ export class UserAssignmentComponent extends BasePageComponent implements OnInit
break; break;
} }
} }
}
unselectUserTables() { unselectUserTables() {
this.assignedUsers.safelyUnselectAll() this.assignedUsers.safelyUnselectAll()
@ -176,6 +161,14 @@ export class UserAssignmentComponent extends BasePageComponent implements OnInit
private sUnassgnCount = 0; private sUnassgnCount = 0;
private sAssgnCount = 0; private sAssgnCount = 0;
private get isAssignment() {
return this.sAssgnCount > 0;
}
private get isUnassignment() {
return this.sUnassgnCount > 0;
}
unassignedUsersOnSelectedRows = (rows: GuiSelectedRow[]) => { unassignedUsersOnSelectedRows = (rows: GuiSelectedRow[]) => {
if (rows.length > this.sUnassgnCount && this.unassignedUsers.selectedRows.length > 0) { if (rows.length > this.sUnassgnCount && this.unassignedUsers.selectedRows.length > 0) {
this.assignedUsers.safelyUnselectAll() this.assignedUsers.safelyUnselectAll()