feat(base-table.component): Erstellt Klick-Ereignis.

- Klick-Ereignisse anstelle von OnSelectedRows-Ereignissen hinzugefügt
This commit is contained in:
Developer 02 2024-11-12 13:46:10 +01:00
parent 0657bbe2c4
commit 2e1bf69889
4 changed files with 44 additions and 9 deletions

View File

@ -15,5 +15,6 @@
[theme]="theme"
[rowStyle] = "rowStyle"
[rowClass] = "rowClass"
(selectedRows)="onSelectedRows($event)">
(selectedRows)="onSelectedRows($event)"
(click)="click && click(this)">
</gui-grid>

View File

@ -69,6 +69,10 @@ export class BaseTableComponent<TModel, TApiService extends ApiService<TModel>>
private themeSubscription: Subscription = new Subscription();
private static count: number = 0;
public readonly id: number = (BaseTableComponent.count++)
constructor(@Inject(ApiService<TModel>) service: TApiService, columns: Array<GuiColumn>, private cModeService: ColorModeService) {
this.service = service;
if (this.columns.length == 0)
@ -114,7 +118,9 @@ export class BaseTableComponent<TModel, TApiService extends ApiService<TModel>>
@Input() rowStyle: GuiRowStyle = {}
@Input() rowClass: GuiRowClass = {}
@Input() click: ((table: BaseTableComponent<TModel, TApiService>) => void) | undefined;
selected: boolean = false;
safelyUnselectAll() {
this.selected = true

View File

@ -5,10 +5,10 @@
<div class="col-5">
<mat-tab-group>
<mat-tab label="Benutzer">
<app-user-table #users [onSelectedRows]="userOnSelectedRows"></app-user-table>
<app-user-table #users [click]="userOnClick"></app-user-table>
</mat-tab>
<mat-tab label="Gruppe">
<app-group-table #groups [columns]="groupColumns" [onSelectedRows]="groupOnSelectedRows"></app-group-table>
<app-group-table #groups [columns]="groupColumns" [click]="groupOnClick"></app-group-table>
</mat-tab>
</mat-tab-group>
</div>
@ -16,10 +16,10 @@
<div class="col-4">
<mat-tab-group>
<mat-tab label="Rep. Benutzer">
<app-user-table #repUsers [onSelectedRows]="repUserOnSelectedRows"></app-user-table>
<app-user-table #repUsers [click]="repUserOnClick"></app-user-table>
</mat-tab>
<mat-tab label="Rep. Gruppen">
<app-group-table #repGroups [columns]="groupRepCols" [onSelectedRows]="repGroupOnSelectedRows"></app-group-table>
<app-group-table #repGroups [columns]="groupRepCols" [click]="repGroupOnClick"></app-group-table>
</mat-tab>
</mat-tab-group>
</div>
@ -27,7 +27,7 @@
<div class="col-3">
<mat-tab-group>
<mat-tab label="{{useRepLabel}}">
<app-user-rep-table #userReps [initData]="initWithoutData" [onSelectedRows]="repOnSelectedRows" [rowClass]="rep_row_class"></app-user-rep-table>
<app-user-rep-table #userReps [initData]="initWithoutData" [rowClass]="rep_row_class" [click]="repOnClick"></app-user-rep-table>
</mat-tab>
</mat-tab-group>
</div>

View File

@ -8,9 +8,12 @@ import Swal from 'sweetalert2';
import { MatTabsModule, MatTabGroup } from '@angular/material/tabs';
import { env } from '../../../environments/environment';
import { BasePageComponent } from '../base-page/base-page.component';
import { UserRep } from '../../models/user-management.api.models';
import { Group, User, UserRep } from '../../models/user-management.api.models';
import { RepCreateFormComponent } from '../../components/forms/rep-create-form/rep-create-form.component';
import { MatDialog } from '@angular/material/dialog';
import { BaseTableComponent } from '../../components/tables/base-table/base-table.component';
import { GroupService } from '../../services/api/group.service';
import { UserService } from '../../services/api/user.service';
@Component({
standalone: true,
@ -78,16 +81,22 @@ export class UserRepresentationComponent extends BasePageComponent implements Af
@ViewChild("repGroups") repGroups!: GroupTableComponent;
@ViewChild("userReps") userReps!: UserRepTableComponent;
// user
userOnSelectedRows = (rows: GuiSelectedRow[]) => {
if (rows.length > 0) {
this.useRepLabel = `Vertretungen von ${rows[0].source?.username}`
this.users.safelyUnselectAll();
//this.users.safelyUnselectAll();
this.userReps.fetchByUser(rows[0].source?.id);
this.slGroupId = undefined;
this.slUserId = rows[0].source?.id
}
}
userOnClick = (table: BaseTableComponent<User, UserService>) => {
this.userOnSelectedRows(table.selectedRows);
}
// group
groupOnSelectedRows = (rows: GuiSelectedRow[]) => {
if (rows.length > 0) {
this.useRepLabel = `Vertretungen von ${rows[0].source?.name}`
@ -98,6 +107,11 @@ export class UserRepresentationComponent extends BasePageComponent implements Af
}
}
groupOnClick = (table: BaseTableComponent<Group, GroupService>) => {
this.groupOnSelectedRows(table.selectedRows);
}
//repUser
repUserOnSelectedRows = (rows: GuiSelectedRow[]) => {
if (rows.length == 0 && this.slRepUserId) {
if (!this.slUserId && !this.slGroupId) {
@ -149,6 +163,11 @@ export class UserRepresentationComponent extends BasePageComponent implements Af
}
}
repUserOnClick = (table: BaseTableComponent<User, UserService>) => {
this.repUserOnSelectedRows(table.selectedRows);
}
// repGroup
repGroupOnSelectedRows = (rows: GuiSelectedRow[]) => {
if (rows.length == 0 && this.slRepGroupId) {
if (!this.slUserId && !this.slGroupId) {
@ -199,6 +218,11 @@ export class UserRepresentationComponent extends BasePageComponent implements Af
}
}
repGroupOnClick = (table: BaseTableComponent<Group, GroupService>) => {
this.repGroupOnSelectedRows(table.selectedRows);
}
// rep events
repOnSelectedRows = (rows: GuiSelectedRow[]) => {
if (rows.length == 0 && this.slRepId) {
this.userRepService.delete(this.slRepId).subscribe({
@ -226,6 +250,10 @@ export class UserRepresentationComponent extends BasePageComponent implements Af
}
}
repOnClick = (table: BaseTableComponent<UserRep, UserRepService>) => {
this.repOnSelectedRows(table.selectedRows);
}
openCreateSheet(userRep: UserRep, afterCreation: (any: any) => any): void {
this.dialog.open(RepCreateFormComponent, {