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:
parent
7eabbd4b99
commit
321a4c83bb
@ -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>
|
||||||
@ -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()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user