From 83ce528e2fe2c278363c38151e19ee0a8921a109 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Wed, 21 Aug 2024 11:13:31 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20F=C3=BCge=20Eingaben=20f=C3=BCr=20die?= =?UTF-8?q?=20Umschlagstabelle=20und=20Statusfilteroptionen=20hinzu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `data`, `displayedColumns` und `schema` wurden als `@Input`-Eigenschaften für die Umschlagstabelle hinzugefügt. - `min`, `max` und `ignore` Statusfilter wurden als Objekt-Eingaben für Statusbeschränkungen eingeführt. - Die Methode `getEnvelopeReceiver` wurde aktualisiert, um Statusfilter über Abfrageparameter zu unterstützen. - `getEnvelopeReceiverAsync` wurde für die Promise-basierte Verarbeitung von Status-gefilterten Anfragen hinzugefügt. - Die Umschlag-Tab-Konfiguration wurde geändert, um Statusfilter dynamisch anzuwenden. --- .../envelope-table.component.ts | 31 +++++++++++-------- .../src/app/enums/envelope-const.ts | 6 ++-- .../pages/envelope/envelope.component.html | 4 +-- .../app/pages/envelope/envelope.component.ts | 5 +-- .../app/services/envelope-receiver.service.ts | 18 +++++++++-- 5 files changed, 42 insertions(+), 22 deletions(-) diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.ts index aa6a9ede..379d3688 100644 --- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.ts +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/components/envelope-table/envelope-table.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, Input, ViewChild } from '@angular/core'; import { EnvelopeReceiverService } from '../../services/envelope-receiver.service'; import { MatTable, MatTableModule } from '@angular/material/table'; import { CommonModule } from '@angular/common' -import {MatIconModule} from '@angular/material/icon'; -import {MatButtonModule} from '@angular/material/button'; -import {animate, state, style, transition, trigger} from '@angular/animations'; +import { MatIconModule } from '@angular/material/icon'; +import { MatButtonModule } from '@angular/material/button'; +import { animate, state, style, transition, trigger } from '@angular/animations'; +import { Status } from '../../enums/envelope-const' @Component({ selector: 'app-envelope-table', @@ -13,8 +14,8 @@ import {animate, state, style, transition, trigger} from '@angular/animations'; templateUrl: './envelope-table.component.html', animations: [ trigger('detailExpand', [ - state('collapsed,void', style({height: '0px', minHeight: '0'})), - state('expanded', style({height: '*'})), + state('collapsed,void', style({ height: '0px', minHeight: '0' })), + state('expanded', style({ height: '*' })), transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')), ]), ], @@ -22,12 +23,13 @@ import {animate, state, style, transition, trigger} from '@angular/animations'; }) export class EnvelopeTableComponent { - data: Array = [] + @Input() data: Array = [] - public displayedColumns: string[] = ['title', 'status', 'type', 'privateMessage', 'addedWhen']; - columnsToDisplayWithExpand = [...this.displayedColumns, 'expand']; - - schema: any = { + @Input() options?: { min_status?: number; max_status?: number; ignore_status?: number[] } + + @Input() displayedColumns: string[] = ['title', 'status', 'type', 'privateMessage', 'addedWhen']; + + @Input() schema: Record any; }> = { 'title': { header: 'Title', field: (element: any) => element.envelope.title @@ -50,6 +52,8 @@ export class EnvelopeTableComponent { }, } + columnsToDisplayWithExpand = [...this.displayedColumns, 'expand']; + expandedElement: any | null; @ViewChild(MatTable) table!: MatTable; @@ -57,7 +61,8 @@ export class EnvelopeTableComponent { constructor(private erService: EnvelopeReceiverService) { } async ngOnInit() { - this.data = await this.erService.getEnvelopeReceiver(); + if (this.data.length === 0) + this.data = await this.erService.getEnvelopeReceiverAsync(this.options); } public updateTable() { @@ -66,5 +71,5 @@ export class EnvelopeTableComponent { isExpandedRow(index: number, row: any): boolean { return (row?.envelopeId === this.expandedElement?.envelopeId) && (row?.receiverId === this.expandedElement?.receiverId); - } + } } \ No newline at end of file diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/enums/envelope-const.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/enums/envelope-const.ts index 492a8f6b..f5631365 100644 --- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/enums/envelope-const.ts +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/enums/envelope-const.ts @@ -1,4 +1,4 @@ -export enum Status { +enum Status { Invalid = 0, EnvelopeCreated = 1001, EnvelopeSaved = 1002, @@ -20,4 +20,6 @@ export enum Status { MessageConfirmationSent = 3003, MessageDeletionSent = 3004, MessageCompletionSent = 3005 -} \ No newline at end of file +} + +export { Status } \ No newline at end of file diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.html b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.html index 339e65a2..b131b165 100644 --- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.html +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.html @@ -1,10 +1,10 @@
- + - +
\ No newline at end of file diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.ts index 7345260f..ab10c156 100644 --- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.ts +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope/envelope.component.ts @@ -2,8 +2,7 @@ import { Component } from '@angular/core'; import { EnvelopeTableComponent } from "../../components/envelope-table/envelope-table.component"; import { MatTabsModule } from '@angular/material/tabs'; import { LocalizationService } from '../../services/localization.service'; -import { firstValueFrom } from 'rxjs/internal/firstValueFrom'; - +import { Status } from '../../enums/envelope-const' @Component({ selector: 'app-envelope', standalone: true, @@ -13,6 +12,8 @@ import { firstValueFrom } from 'rxjs/internal/firstValueFrom'; }) export class EnvelopeComponent { + readonly Status = Status; + private localizer: any = {}; constructor(private localizationService: LocalizationService) { diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts index 52232bae..e55e879d 100644 --- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts @@ -1,5 +1,5 @@ import { Injectable, inject } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; +import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable, firstValueFrom } from 'rxjs'; import { API_URL } from '../tokens/index'; @@ -14,7 +14,19 @@ export class EnvelopeReceiverService { this.url = `${api_url}/envelopereceiver`; } - getEnvelopeReceiver(): Promise { - return firstValueFrom(this.http.get(this.url)); + getEnvelopeReceiver(options?: { min_status?: number; max_status?: number; ignore_status?: number[] }): Observable { + let params = new HttpParams(); + if (options?.min_status !== undefined) + params = params.set('min_status', options?.min_status.toString()); + if (options?.max_status !== undefined) + params = params.set('max_status', options?.max_status.toString()); + if (options?.ignore_status !== undefined) + params = params.set('ignore_status', options?.ignore_status.join(',')); + return this.http.get(this.url, { params }); + } + + + getEnvelopeReceiverAsync(options?: { min_status?: number; max_status?: number; ignore_status?: number[] }): Promise { + return firstValueFrom(this.getEnvelopeReceiver(options)); } } \ No newline at end of file