redeemed filter

This commit is contained in:
_Bastler 2021-05-07 14:41:12 +02:00
parent 908a54506c
commit 348a59820a
4 changed files with 77 additions and 13 deletions

View File

@ -4,6 +4,27 @@
<mat-form-field> <mat-form-field>
<input matInput [formControl]="searchFormControl" placeholder="{{'invites.search' | i18n}}"> <input matInput [formControl]="searchFormControl" placeholder="{{'invites.search' | i18n}}">
</mat-form-field> </mat-form-field>
<mat-form-field appearance="fill">
<mat-label>{{'invites.redeemed.filter' | i18n}}</mat-label>
<mat-select [formControl]="redeemedFormControl">
<mat-option>{{'invites.redeemed.filter.none' | i18n}}</mat-option>
<mat-option value="true">
<mat-icon>how_to_reg</mat-icon>{{'invites.redeemed.filter.true' | i18n}}
</mat-option>
<mat-option value="false">
<mat-icon>person_remove</mat-icon>{{'invites.redeemed.filter.false' | i18n}}
</mat-option>
<mat-select-trigger [ngSwitch]="redeemedFormControl.value">
<span *ngSwitchCase="'true'">
<mat-icon inline="true">how_to_reg</mat-icon>{{'invites.redeemed.filter.true' | i18n}}
</span>
<span *ngSwitchCase="'false'">
<mat-icon inline="true">person_remove</mat-icon>{{'invites.redeemed.filter.false' | i18n}}
</span>
<span *ngSwitchDefault>{{'invites.redeemed.filter.none' | i18n}}</span>
</mat-select-trigger>
</mat-select>
</mat-form-field>
<table mat-table matSort [dataSource]="invites.content"> <table mat-table matSort [dataSource]="invites.content">
<ng-container matColumnDef="starts"> <ng-container matColumnDef="starts">
@ -71,12 +92,41 @@
<mat-form-field> <mat-form-field>
<input matInput [formControl]="searchOthersFormControl" placeholder="{{'invites.search' | i18n}}"> <input matInput [formControl]="searchOthersFormControl" placeholder="{{'invites.search' | i18n}}">
</mat-form-field> </mat-form-field>
<mat-form-field appearance="fill">
<mat-label>{{'invites.redeemed.filter' | i18n}}</mat-label>
<mat-select [formControl]="redeemedOthersFormControl">
<mat-option>{{'invites.redeemed.filter.none' | i18n}}</mat-option>
<mat-option value="true">
<mat-icon>how_to_reg</mat-icon>{{'invites.redeemed.filter.true' | i18n}}
</mat-option>
<mat-option value="false">
<mat-icon>person_remove</mat-icon>{{'invites.redeemed.filter.false' | i18n}}
</mat-option>
<mat-select-trigger [ngSwitch]="redeemedOthersFormControl.value">
<span *ngSwitchCase="'true'">
<mat-icon inline="true">how_to_reg</mat-icon>{{'invites.redeemed.filter.true' | i18n}}
</span>
<span *ngSwitchCase="'false'">
<mat-icon inline="true">person_remove</mat-icon>{{'invites.redeemed.filter.false' | i18n}}
</span>
<span *ngSwitchDefault>{{'invites.redeemed.filter.none' | i18n}}</span>
</mat-select-trigger>
</mat-select>
</mat-form-field>
<table mat-table matSort [dataSource]="others.content"> <table mat-table matSort [dataSource]="others.content">
<ng-container matColumnDef="note"> <ng-container matColumnDef="note">
<th mat-header-cell *matHeaderCellDef> {{'invite.note' | i18n}} </th> <th mat-header-cell *matHeaderCellDef> {{'invite.note' | i18n}} </th>
<td mat-cell *matCellDef="let invite"> <span *ngIf="invite.note">{{ invite.note}}</span> <i *ngIf="!invite.note">{{ 'invite.noNote' | i18n}}</i> </td> <td mat-cell *matCellDef="let invite"> <span *ngIf="invite.note">{{ invite.note}}</span> <i *ngIf="!invite.note">{{ 'invite.noNote' | i18n}}</i> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="redeemed">
<th mat-header-cell *matHeaderCellDef> {{'invite.redeemed' | i18n}} </th>
<td mat-cell *matCellDef="let invite">
<mat-icon *ngIf="invite.redeemed">how_to_reg</mat-icon>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="otherColumns"></tr> <tr mat-header-row *matHeaderRowDef="otherColumns"></tr>
<tr mat-row *matRowDef="let myRowData; columns: otherColumns"></tr> <tr mat-row *matRowDef="let myRowData; columns: otherColumns"></tr>
</table> </table>

View File

@ -1,3 +1,3 @@
mat-form-field { .mat-form-field+.mat-form-field {
display: block; margin-left: 8px;
} }

View File

@ -26,10 +26,12 @@ export class InvitesComponent implements OnInit {
datetimeformat: string; datetimeformat: string;
pageSizeOptions: number[] = [5, 10, 25, 50]; pageSizeOptions: number[] = [5, 10, 25, 50];
searchFormControl = new FormControl(); searchFormControl = new FormControl();
redeemedFormControl = new FormControl();
searchOthersFormControl = new FormControl(); searchOthersFormControl = new FormControl();
redeemedOthersFormControl = new FormControl();
inviteColumns = ["starts", "expires", "link", "note", "message", "redeemed"]; inviteColumns = ["starts", "expires", "link", "note", "message", "redeemed"];
otherColumns = ["note"]; otherColumns = ["note", "redeemed"];
constructor( constructor(
private authService: AuthService, private authService: AuthService,
@ -43,13 +45,25 @@ export class InvitesComponent implements OnInit {
async ngOnInit() { async ngOnInit() {
this.datetimeformat = this.i18n.get('format.datetime', []); this.datetimeformat = this.i18n.get('format.datetime', []);
this.quota = this.route.snapshot.paramMap.get('quota'); this.quota = this.route.snapshot.paramMap.get('quota');
this.searchFormControl.valueChanges.pipe(debounceTime(500)).subscribe(value => { this.searchFormControl.valueChanges.pipe(debounceTime(500)).subscribe(value => {
this.inviteService.getPages(this.quota, 0, this.invites.size, value).subscribe((data: any) => { this.inviteService.getPages(this.quota, 0, this.invites.size, value, this.redeemedFormControl.value).subscribe((data: any) => {
this.invites = data; this.invites = data;
}, (error) => {}) }, (error) => {})
}) })
this.redeemedFormControl.valueChanges.subscribe(value => {
this.inviteService.getPages(this.quota, 0, this.invites.size, this.searchFormControl.value ? this.searchFormControl.value : "", value).subscribe((data: any) => {
this.invites = data;
}, (error) => {})
})
this.searchOthersFormControl.valueChanges.pipe(debounceTime(500)).subscribe(value => { this.searchOthersFormControl.valueChanges.pipe(debounceTime(500)).subscribe(value => {
this.inviteService.getOthersPages(this.quota, 0, this.others.size, value).subscribe((data: any) => { this.inviteService.getOthersPages(this.quota, 0, this.others.size, value, this.redeemedOthersFormControl.value).subscribe((data: any) => {
this.others = data;
}, (error) => {})
})
this.redeemedOthersFormControl.valueChanges.subscribe(value => {
this.inviteService.getOthersPages(this.quota, 0, this.others.size, this.searchOthersFormControl.value ? this.searchOthersFormControl.value : "", value).subscribe((data: any) => {
this.others = data; this.others = data;
}, (error) => {}) }, (error) => {})
}) })
@ -73,7 +87,7 @@ export class InvitesComponent implements OnInit {
this.invites = data; this.invites = data;
}) })
} else { } else {
this.inviteService.getPages(this.quota, this.invites.number || 0, this.invites.size || 10, this.searchFormControl.value ? this.searchFormControl.value : "").subscribe((data: any) => { this.inviteService.getPages(this.quota, this.invites.number || 0, this.invites.size || 10, this.searchFormControl.value ? this.searchFormControl.value : "", this.redeemedFormControl.value).subscribe((data: any) => {
this.invites = data; this.invites = data;
}, (error) => {}) }, (error) => {})
} }
@ -84,7 +98,7 @@ export class InvitesComponent implements OnInit {
} }
updatePages(event: PageEvent) { updatePages(event: PageEvent) {
this.inviteService.getPages(this.quota, event.pageIndex, event.pageSize, this.searchFormControl.value ? this.searchFormControl.value : "").subscribe((data: any) => { this.inviteService.getPages(this.quota, event.pageIndex, event.pageSize, this.searchFormControl.value ? this.searchFormControl.value : "", this.redeemedFormControl.value).subscribe((data: any) => {
this.invites = data; this.invites = data;
}, (error) => {}) }, (error) => {})
} }
@ -109,7 +123,7 @@ export class InvitesComponent implements OnInit {
} }
updateOthers(event: PageEvent) { updateOthers(event: PageEvent) {
this.inviteService.getOthersPages(this.quota, event.pageIndex, event.pageSize, this.searchOthersFormControl.value ? this.searchOthersFormControl.value : "").subscribe((data: any) => { this.inviteService.getOthersPages(this.quota, event.pageIndex, event.pageSize, this.searchOthersFormControl.value ? this.searchOthersFormControl.value : "", this.redeemedOthersFormControl.value).subscribe((data: any) => {
this.others = data; this.others = data;
}, (error) => {}) }, (error) => {})
} }

View File

@ -15,16 +15,16 @@ export class InviteService {
return this.http.get(environment.apiUrl + "/invites" + (quota ? "?quota=" + quota : "")); return this.http.get(environment.apiUrl + "/invites" + (quota ? "?quota=" + quota : ""));
} }
getPages(quota: string, page: number, size: number, search: string) { getPages(quota: string, page: number, size: number, search: string, redeemed: string) {
return this.http.get(environment.apiUrl + "/invites" + (quota ? "?quota=" + quota + "&" : "?") + "page=" + page + "&size=" + size + "&search=" + search); return this.http.get(environment.apiUrl + "/invites" + (quota ? "?quota=" + quota + "&" : "?") + "page=" + page + "&size=" + size + "&search=" + search + (redeemed ? "&redeemed=" + redeemed : ""));
} }
getOthers(quota: string) { getOthers(quota: string) {
return this.http.get(environment.apiUrl + "/invites/" + quota + "/others"); return this.http.get(environment.apiUrl + "/invites/" + quota + "/others");
} }
getOthersPages(quota: string, page: number, size: number, search: string) { getOthersPages(quota: string, page: number, size: number, search: string, redeemed: string) {
return this.http.get(environment.apiUrl + "/invites/" + quota + "/others?page=" + page + "&size=" + size + "&search=" + search); return this.http.get(environment.apiUrl + "/invites/" + quota + "/others?page=" + page + "&size=" + size + "&search=" + search + (redeemed ? "&redeemed=" + redeemed : ""));
} }
create(quota: string, invite: any) { create(quota: string, invite: any) {