From 3302dd7e32f5c0075199849bf99957aa088a4416 Mon Sep 17 00:00:00 2001 From: Marcel Arndt Date: Thu, 5 Jun 2025 15:26:13 +0200 Subject: [PATCH] (web): use angulars built-in control flow everywhere --- .../accounting-item.component.ts | 58 ++-- .../accounting-lane-footer.component.ts | 26 +- ...accounting-lane-header-filter.component.ts | 114 ++++---- .../accounting-lane-header.component.ts | 36 ++- .../accounting-lane.component.html | 20 +- .../accounting-lane.component.ts | 7 +- .../accounting-tour-overview.component.ts | 67 +++-- .../accounting-tour-ticket.component.ts | 136 ++++----- .../anomaly-list/anomaly-list.component.html | 58 ++-- .../anomaly-solution-dialog.component.html | 20 +- .../anomaly-tree/anomaly-tree.component.html | 87 +++--- .../tours-per-time-kpi.component.html | 35 ++- .../tour-view-dialog.component.html | 51 ++-- .../upcoming-tours.component.html | 37 +-- .../average-revenue-metric.component.html | 15 +- .../average-revenue-summary.component.html | 24 +- .../breakeven-metric.component.html | 15 +- .../breakeven-summary.component.html | 78 ++--- .../metric-summary.component.html | 82 +++--- .../time-per-tour-metric.component.html | 15 +- .../time-per-tour-summary.component.html | 58 ++-- .../view-type-selector.component.html | 98 +++---- .../view-type-selector.component.ts | 12 +- .../monthview/monthview.component.html | 274 +++++++++--------- .../manager/overview/overview.component.html | 124 ++++---- .../time-per-tour-by-car.component.html | 40 +-- .../time-per-tour-kpi.component.html | 47 +-- .../ticket-item/ticket-item.component.html | 35 +-- .../ticket-item/ticket-item.component.ts | 4 +- .../ticket-lane-footer.component.ts | 46 +-- .../ticket-lane-header-filter.component.ts | 160 +++++----- .../ticket-lane-header.component.ts | 48 +-- .../ticket-lane/ticket-lane.component.html | 24 +- .../ticket-lane/ticket-lane.component.ts | 7 +- .../ticket-documents-missing.component.ts | 78 ++--- .../ticket-view/ticket-overview.component.ts | 162 ++++++----- .../ticket-td-uncertain.component.ts | 2 +- .../ticket-view/ticket-tours.component.ts | 2 +- .../ticket-user-action-required.component.ts | 146 +++++----- .../tickets-search-dialog.component.ts | 86 +++--- 40 files changed, 1257 insertions(+), 1177 deletions(-) diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-item.component.ts b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-item.component.ts index 15bf850..9437d1e 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-item.component.ts +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-item.component.ts @@ -1,5 +1,5 @@ import { ClipboardModule } from '@angular/cdk/clipboard'; -import { CurrencyPipe, NgClass, NgIf } from '@angular/common'; +import { CurrencyPipe, NgClass } from '@angular/common'; import { AfterViewInit, ChangeDetectionStrategy, @@ -23,32 +23,33 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-accounting-item', template: `
-
- - {{ tour.operationId }} +
+ + {{ tour.operationId }} +
+ {{ tour.ordinanceType }}
- {{ tour.ordinanceType }} -
-
- - {{ tour.revenue | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE' }} - -
- - {{ - tour.revenueDeviation | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE' - }} - `, +
+ @if (accountingState !== AccountingState.Billed) { + + {{ tour.revenue | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE' }} + + } @else { + {{ + tour.revenueDeviation | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE' + }} + } +
+ `, host: { class: 'flex flex-col rounded border p-2 m-1 bg-white cursor-pointer', }, @@ -69,10 +70,9 @@ import { MatIconModule, MatBadgeModule, ClipboardModule, - NgIf, NgClass, - CurrencyPipe, - ], + CurrencyPipe +], }) export class AccountingItemComponent implements AfterViewInit { toast = inject(HotToastService); diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-footer.component.ts b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-footer.component.ts index 038601f..0c689ef 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-footer.component.ts +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-footer.component.ts @@ -1,24 +1,28 @@ -import { AsyncPipe, CurrencyPipe, NgIf } from '@angular/common'; +import { AsyncPipe, CurrencyPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { TourStateMeta } from '../../../core/data-access/graphql/generated/generated'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-accounting-lane-footer', - template: ` - {{ tourStateMeta.count }} Touren - - - {{ - tourStateMeta.revenueSum - | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE' - }} - `, + template: `@if (withTourCount) { + + {{ tourStateMeta.count }} Touren + +} +@if (withRevenueSum) { + + {{ + tourStateMeta.revenueSum + | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE' + }} + +}`, host: { class: 'flex flex-col items-center justify-center p-2', }, styles: [``], - imports: [NgIf, CurrencyPipe], + imports: [CurrencyPipe], }) export class AccountingLaneFooterComponent { @Input() tourStateMeta!: TourStateMeta; diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header-filter.component.ts b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header-filter.component.ts index 04a38ab..480fe8b 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header-filter.component.ts +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header-filter.component.ts @@ -1,4 +1,4 @@ -import { NgFor, NgSwitch, NgSwitchCase } from '@angular/common'; + import { AfterViewInit, ChangeDetectionStrategy, @@ -23,68 +23,70 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-accounting-lane-header-filter', template: ` - - - + } + @case (AccountingState.PreparedForBilling) { + - + } + @case (AccountingState.Billed) { + - -
- -
filter_list + + } +} + + + @for (item of filter.beforeBilled; track item) { +
- {{ - item.text - }} -
-
- -
{{ + item.text + }} +
+ } +
+ + @for (item of filter.afterBilled; track item) { +
- {{ - item.text - }} -
-
- - `, + {{ + item.text + }} +
+ } +
+ +`, styles: [], imports: [ - NgSwitch, - NgSwitchCase, - NgFor, - FormsModule, - MatButtonModule, - MatIconModule, - MatMenuModule, - MatCheckboxModule, - ] + FormsModule, + MatButtonModule, + MatIconModule, + MatMenuModule, + MatCheckboxModule +] }) export class AccountingLaneHeaderFilterComponent implements AfterViewInit { @Input() state!: AccountingState; diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header.component.ts b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header.component.ts index bf4f0c3..524823f 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header.component.ts +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane-header.component.ts @@ -1,4 +1,4 @@ -import { NgSwitch, NgSwitchCase } from '@angular/common'; + import { ChangeDetectionStrategy, Component, @@ -16,19 +16,25 @@ import { AccountingLaneHeaderFilterComponent } from './accounting-lane-header-fi changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-accounting-lane-header', template: `
- -
Abrechenbar
-
- für Abrechnung vorbereitet -
-
- Abgerechnet (mit Abweichung) -
-
- `, +@switch (state) { + @case (AccountingState.Billable) { +
Abrechenbar
+ } + @case (AccountingState.PreparedForBilling) { +
+ für Abrechnung vorbereitet +
+ } + @case (AccountingState.Billed) { +
+ Abgerechnet (mit Abweichung) +
+ } +} +`, host: { class: 'flex items-center justify-between p-2 bg-secondary-container', }, @@ -39,7 +45,7 @@ import { AccountingLaneHeaderFilterComponent } from './accounting-lane-header-fi } `, ], - imports: [NgSwitch, NgSwitchCase, AccountingLaneHeaderFilterComponent], + imports: [AccountingLaneHeaderFilterComponent], }) export class AccountingLaneHeaderComponent { @Input() state!: AccountingState; diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.html b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.html index ea7c832..5ae30b2 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.html +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.html @@ -3,11 +3,11 @@ [state]="accountingState" (filterChange)="filterChanged($event)" > - +@if (tours$ | async; as tours) { + > + > - + + --> +} diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.ts b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.ts index 667e84d..4c222c6 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.ts +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-lane/accounting-lane.component.ts @@ -2,7 +2,7 @@ import { CdkVirtualScrollViewport, ScrollingModule, } from '@angular/cdk/scrolling'; -import { AsyncPipe, NgIf } from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -53,10 +53,9 @@ import { AccountingLaneHeaderComponent } from './accounting-lane-header.componen imports: [ AccountingLaneHeaderComponent, AccountingItemComponent, - NgIf, AsyncPipe, - ScrollingModule, - ], + ScrollingModule +], }) export class AccountingLaneComponent { private dialog = inject(DialogService); diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-overview.component.ts b/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-overview.component.ts index ec3ac3b..97c88e8 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-overview.component.ts +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-overview.component.ts @@ -1,4 +1,4 @@ -import { DatePipe, NgIf } from '@angular/common'; +import { DatePipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { MatDividerModule } from '@angular/material/divider'; import { MatIconModule } from '@angular/material/icon'; @@ -18,37 +18,46 @@ import { Tour } from '../../../core/data-access/graphql/generated/generated';
- Erstellt am - - {{ tour.createdAt | date : 'dd.MM.yyyy' }} - {{ tour.createdAt | date : 'HH:mm' }} Uhr - + @if (tour.createdAt) { + Erstellt am + } + @if (tour.createdAt) { + + {{ tour.createdAt | date : 'dd.MM.yyyy' }} + {{ tour.createdAt | date : 'HH:mm' }} Uhr + + }
-
+ @if (tour.driverName || tour.codriverName || tour.carName) {
- Fahrzeug - {{ tour.carName }} + class="flex flex-wrap md:flex-nowrap justify-between px-4 py-2" + > + @if (tour.carName) { +
+ Fahrzeug + {{ tour.carName }} +
+ } + @if (tour.driverName) { +
+ Fahrer + {{ tour.driverName }} +
+ } + @if (tour.codriverName) { +
+ Beifahrer + {{ tour.codriverName }} +
+ }
-
- Fahrer - {{ tour.driverName }} -
-
- Beifahrer - {{ tour.codriverName }} -
-
+ }
Patient {{ tour.patientName }} {{ tour.patientSurname }} @@ -69,9 +78,9 @@ import { Tour } from '../../../core/data-access/graphql/generated/generated'; {{ tour.targetZip }} {{ tour.targetCity }}
- `, + `, styles: [], - imports: [MatTabsModule, MatIconModule, MatDividerModule, NgIf, DatePipe] + imports: [MatTabsModule, MatIconModule, MatDividerModule, DatePipe] }) export class AccountingTourOverviewComponent { @Input() tour!: Tour; diff --git a/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-ticket.component.ts b/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-ticket.component.ts index 50a43ff..82e48dd 100644 --- a/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-ticket.component.ts +++ b/service/app-hub/dashboard/src/app/pages/accounting/accounting-tour-view/accounting-tour-ticket.component.ts @@ -1,4 +1,4 @@ -import { DatePipe, NgFor, NgIf, NgSwitch, NgSwitchCase } from '@angular/common'; +import { DatePipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { MatDividerModule } from '@angular/material/divider'; import { MatIconModule } from '@angular/material/icon'; @@ -14,33 +14,38 @@ import { Ticket, TicketValidationState, Tour } from '../../../core/data-access/g
Ticket Informationen
Status: - - Touren angenommen - - Genehmigung / Transportschein - - Transportschein unklar - - Dokumente fehlen - - Archiviert - - + @switch (tour.ticket.currentState) { + @case (TicketValidationState.Created) { + Touren angenommen + + } + @case (TicketValidationState.UserInteractionRequired) { + Genehmigung / Transportschein + + } + @case (TicketValidationState.TdUncertain) { + Transportschein unklar + + } + @case (TicketValidationState.DocumentsMissing) { + Dokumente fehlen + + } + @case (TicketValidationState.Archived) { + Archiviert + + } + } Typ: @@ -55,47 +60,46 @@ import { Ticket, TicketValidationState, Tour } from '../../../core/data-access/g - -
Ticket Anmerkungen
- - error - {{ error.split(':').at(0) }} - {{ - error.split(':').at(1) - }} - - - warning - {{ note.split(':').at(0) }} - {{ - note.split(':').at(1) - }} - -
+ @if (tour.ticket.errors.length > 0 || tour.ticket.notes.length > 0) { + +
Ticket Anmerkungen
+ @for (error of tour.ticket.errors; track error) { + + error + {{ error.split(':').at(0) }} + {{ + error.split(':').at(1) + }} + + } + @for (note of tour.ticket.notes; track note) { + + warning + {{ note.split(':').at(0) }} + {{ + note.split(':').at(1) + }} + + } +
+ } - `, + `, styles: [], imports: [ - MatIconModule, - MatListModule, - MatDividerModule, - NgIf, - NgFor, - NgSwitch, - NgSwitchCase, - ] + MatIconModule, + MatListModule, + MatDividerModule +] }) export class AccountingTourTicketComponent { @Input() tour!: Tour & { ticket: Ticket }; diff --git a/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-list.component.html b/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-list.component.html index 4a69013..16fa6ff 100644 --- a/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-list.component.html +++ b/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-list.component.html @@ -1,29 +1,31 @@ - - - + @if (anomalies.length) { + @for (anomaly of anomalies; track anomaly) { + + + + } + } @else { + Alle Mitarbeiter sind auf einem Fahrzeug angemeldet! + } + + } + - - - - - Alle Mitarbeiter sind auf einem Fahrzeug angemeldet! - - - - + diff --git a/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-solution-dialog/anomaly-solution-dialog.component.html b/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-solution-dialog/anomaly-solution-dialog.component.html index 238b598..b92e716 100644 --- a/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-solution-dialog/anomaly-solution-dialog.component.html +++ b/service/app-hub/dashboard/src/app/pages/control-center/anomaly-list/anomaly-solution-dialog/anomaly-solution-dialog.component.html @@ -1,14 +1,18 @@

{{ ref.data.title }}

-
- {{ target.name }} -
    -
  • - {{ step.description }} -
  • -
-
+ @for (target of ref.data.solution; track target) { +
+ {{ target.name }} +
    + @for (step of target.steps; track step) { +
  • + {{ step.description }} +
  • + } +
+
+ }
diff --git a/service/app-hub/dashboard/src/app/pages/control-center/anomaly-tree/anomaly-tree.component.html b/service/app-hub/dashboard/src/app/pages/control-center/anomaly-tree/anomaly-tree.component.html index 4585256..4adaeee 100644 --- a/service/app-hub/dashboard/src/app/pages/control-center/anomaly-tree/anomaly-tree.component.html +++ b/service/app-hub/dashboard/src/app/pages/control-center/anomaly-tree/anomaly-tree.component.html @@ -1,48 +1,47 @@ - - - - - - - - - {{ node.name }} -
{{ node?.childCount }}
-
-
- + + + + + + {{ node.name }} +
{{ node?.childCount }}
+
+ + } @else { Herzlichen Glückwunsch, es liegen keine Anomalien vor! + } + } + -
-
- - + diff --git a/service/app-hub/dashboard/src/app/pages/control-center/kpis/tours-per-time-kpi/tours-per-time-kpi.component.html b/service/app-hub/dashboard/src/app/pages/control-center/kpis/tours-per-time-kpi/tours-per-time-kpi.component.html index 1623654..4cb3049 100644 --- a/service/app-hub/dashboard/src/app/pages/control-center/kpis/tours-per-time-kpi/tours-per-time-kpi.component.html +++ b/service/app-hub/dashboard/src/app/pages/control-center/kpis/tours-per-time-kpi/tours-per-time-kpi.component.html @@ -2,24 +2,27 @@ {{ ordinanceType }} - -
-
+
+ @for (kpi of kpis; track kpi; let idx = $index) { +
-
- {{ kpi.kpi.value.toString().replace(".", ",") }} -
-
- {{ kpi.interval.start | date : "HH:mm" }} - - {{ kpi.interval.end | date : "HH:mm" }} -
+ > +
+ {{ kpi.kpi.value.toString().replace(".", ",") }} +
+
+ {{ kpi.interval.start | date : "HH:mm" }} - + {{ kpi.interval.end | date : "HH:mm" }} +
+
+ }
-
- + + } diff --git a/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/tour-view-dialog/tour-view-dialog.component.html b/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/tour-view-dialog/tour-view-dialog.component.html index f3b3c11..7844fb2 100644 --- a/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/tour-view-dialog/tour-view-dialog.component.html +++ b/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/tour-view-dialog/tour-view-dialog.component.html @@ -8,7 +8,9 @@
- Erstellt am + @if (ref.data.createdAt) { + Erstellt am + } {{ ref.data.createdAt | date: 'HH:mm' }} Uhr {{ ref.data.createdAt | date: 'dd.MM.yyyy' }} @@ -16,29 +18,34 @@
-
+@if (ref.data.driverName || ref.data.codriverName || ref.data.carName) {
- Fahrzeug - {{ ref.data.carName }} + class="flex flex-wrap md:flex-nowrap p-2" + > + @if (ref.data.carName) { +
+ Fahrzeug + {{ ref.data.carName }} +
+ } + @if (ref.data.driverName) { +
+ Fahrer + {{ ref.data.driverName }} +
+ } + @if (ref.data.codriverName) { +
+ Beifahrer + {{ ref.data.codriverName }} +
+ }
-
- Fahrer - {{ ref.data.driverName }} -
-
- Beifahrer - {{ ref.data.codriverName }} -
-
+}
Patient {{ ref.data.patientName }} {{ ref.data.patientSurname }} diff --git a/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/upcoming-tours.component.html b/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/upcoming-tours.component.html index fa6caa5..60ee8cd 100644 --- a/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/upcoming-tours.component.html +++ b/service/app-hub/dashboard/src/app/pages/control-center/upcoming-tours/upcoming-tours.component.html @@ -1,19 +1,20 @@ -
- -
-
-
- {{ tour.operationId }} - {{ tour.startDate | date: 'HH:mm' }} Uhr -
-
-
- Keine Touren in den nächsten 20 Minuten ohne Anfahrt -
+ @if (upcomingTours.length) { + @for (tour of upcomingTours; track tour) { +
+
+
+ {{ tour.operationId }} - {{ tour.startDate | date: 'HH:mm' }} Uhr +
+
+ } + } @else { + Keine Touren in den nächsten 20 Minuten ohne Anfahrt + } +
+} diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-metric/average-revenue-metric.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-metric/average-revenue-metric.component.html index fafedf8..b1494af 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-metric/average-revenue-metric.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-metric/average-revenue-metric.component.html @@ -1,7 +1,8 @@ -
+@if (echartsOptions$ | async; as echartsOptions) { +
+} diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-summary/average-revenue-summary.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-summary/average-revenue-summary.component.html index 5b72957..013f383 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-summary/average-revenue-summary.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/average-revenue-summary/average-revenue-summary.component.html @@ -1,12 +1,14 @@ -
-
- {{ - summary.averageRevenue | currency : 'EUR' : 'symbol' : '1.2-2' - }} Ø Umsatz +@if (metricsSummary$ | async; as summary) { +
+
+ {{ + summary.averageRevenue | currency : 'EUR' : 'symbol' : '1.2-2' + }} Ø Umsatz +
+
+ {{ + (summary.availableTime / summary.tourAmount) | number : '1.2-2' + }} Index +
-
- {{ - (summary.availableTime / summary.tourAmount) | number : '1.2-2' - }} Index -
-
\ No newline at end of file +} \ No newline at end of file diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-metric/breakeven-metric.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-metric/breakeven-metric.component.html index fafedf8..b1494af 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-metric/breakeven-metric.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-metric/breakeven-metric.component.html @@ -1,7 +1,8 @@ -
+@if (echartsOptions$ | async; as echartsOptions) { +
+} diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-summary/breakeven-summary.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-summary/breakeven-summary.component.html index 1c1a556..a2fb505 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-summary/breakeven-summary.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/breakeven-summary/breakeven-summary.component.html @@ -1,45 +1,47 @@ -
-
- {{ - summary.revenue | currency : 'EUR' : 'symbol' : '1.2-2' - }} -
- euro +@if (metricsSummary$ | async; as summary) { +
+
+ {{ + summary.revenue | currency : 'EUR' : 'symbol' : '1.2-2' + }} +
+ euro +
-
-
- {{ - summary.personnelCost | currency : 'EUR' : 'symbol' : '1.2-2' - }} -
- people +
+ {{ + summary.personnelCost | currency : 'EUR' : 'symbol' : '1.2-2' + }} +
+ people +
-
-
- {{ - summary.consumptionCost | currency : 'EUR' : 'symbol' : '1.2-2' - }} -
- local_shipping +
+ {{ + summary.consumptionCost | currency : 'EUR' : 'symbol' : '1.2-2' + }} +
+ local_shipping +
-
-
- {{ - summary.breakEven | currency : 'EUR' : 'symbol' : '1.2-2' - }} -
- account_balance +
+ {{ + summary.breakEven | currency : 'EUR' : 'symbol' : '1.2-2' + }} +
+ account_balance +
-
- - + -
+ > +
+ account_balance +
+
--> +
+} diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/metric-summary/metric-summary.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/metric-summary/metric-summary.component.html index 3ebd572..0dad299 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/metric-summary/metric-summary.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/metric-summary/metric-summary.component.html @@ -1,41 +1,43 @@ -
- - - -
- Zeige Kategorien - + @switch (selectedMetric) { + @case (DiagrammType.TimePerTour) { + -
-
- - - - - - - - -
-
+ [metricTimeScale]="metricTimeScale" + [showCategories]="showCategories" + > +
+ Zeige Kategorien + +
+ } + @case (DiagrammType.Revenue) { + + + } + @case (DiagrammType.AverageRevenue) { + + + } + } +
+ } diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-metric/time-per-tour-metric.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-metric/time-per-tour-metric.component.html index fafedf8..b1494af 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-metric/time-per-tour-metric.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-metric/time-per-tour-metric.component.html @@ -1,7 +1,8 @@ -
+@if (echartsOptions$ | async; as echartsOptions) { +
+} diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-summary/time-per-tour-summary.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-summary/time-per-tour-summary.component.html index 13b77f8..ee00fd4 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-summary/time-per-tour-summary.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/time-per-tour-summary/time-per-tour-summary.component.html @@ -1,12 +1,13 @@ -
-
- {{ summary.tourAmount | number : '1.2-2' }} -
- local_shipping +@if (metricsSummary$ | async; as summary) { +
+
+ {{ summary.tourAmount | number : '1.2-2' }} +
+ local_shipping +
-
- - + - + -
+ > +
+ account_balance +
+
--> +
+} diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.html b/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.html index 674e0ab..b95a298 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.html @@ -1,53 +1,53 @@ - - - {{ viewType }} - - - - - @switch (currentMetric) { @case (DiagrammType.TimePerTour) { -
-
- {{ summary.tourAmount.toFixed(2) }} - local_shipping -
-
- {{ summary.availableTime.toFixed(2) }} - departure_board -
-
- } @case (DiagrammType.Revenue) { -
-
- {{ summary.revenue | currency : "EUR" : "symbol" : ".2" }} - euro -
-
- {{ summary.breakEven | currency : "EUR" }} - account_balance -
-
- } @case (DiagrammType.AverageRevenue) { -
-
- Ø - {{ summary.averageRevenue | currency : "EUR" }} -
-
- {{ calculateIndex(summary).toFixed(2) }} - Index -
-
- } } -
-
+ style="border-color: var(--mat-sys-primary)" + (click)="setSelectedViewType()" + > + + {{ viewType }} + + + + @switch (currentMetric) { @case (DiagrammType.TimePerTour) { +
+
+ {{ summary.tourAmount.toFixed(2) }} + local_shipping +
+
+ {{ summary.availableTime.toFixed(2) }} + departure_board +
+
+ } @case (DiagrammType.Revenue) { +
+
+ {{ summary.revenue | currency : "EUR" : "symbol" : ".2" }} + euro +
+
+ {{ summary.breakEven | currency : "EUR" }} + account_balance +
+
+ } @case (DiagrammType.AverageRevenue) { +
+
+ Ø + {{ summary.averageRevenue | currency : "EUR" }} +
+
+ {{ calculateIndex(summary).toFixed(2) }} + Index +
+
+ } } +
+ + } diff --git a/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.ts b/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.ts index 1b755a6..9590e80 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.ts +++ b/service/app-hub/dashboard/src/app/pages/manager/components/view-type-selector/view-type-selector.component.ts @@ -1,9 +1,4 @@ -import { - AsyncPipe, - CurrencyPipe, - NgClass, - NgIf -} from '@angular/common'; +import { AsyncPipe, CurrencyPipe, NgClass } from '@angular/common'; import { Component, EventEmitter, Input, Output } from '@angular/core'; import { MatCardModule } from '@angular/material/card'; import { MatIconModule } from '@angular/material/icon'; @@ -15,13 +10,12 @@ import { summarizeMetrics } from '../../util/summarize-metrics'; @Component({ selector: 'dks-view-type-selector', imports: [ - NgIf, NgClass, AsyncPipe, CurrencyPipe, MatIconModule, - MatCardModule, - ], + MatCardModule +], templateUrl: './view-type-selector.component.html', styleUrls: ['./view-type-selector.component.css'], }) diff --git a/service/app-hub/dashboard/src/app/pages/manager/monthview/monthview.component.html b/service/app-hub/dashboard/src/app/pages/manager/monthview/monthview.component.html index b48eb8f..0c30047 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/monthview/monthview.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/monthview/monthview.component.html @@ -1,141 +1,143 @@ - -
- -
-
- -
- - {{ vm.selectedDate | date : "MM.yyyy" }} - - - +
+ + {{ vm.selectedDate | date : "MM.yyyy" }} + + + + +
+ -
- + + + Umsatz + + + Kapazität pro Tour + + + Durchschnittsumsatz + +
- - - - Umsatz - - + + + +
+ + - Kapazität pro Tour - - - Durchschnittsumsatz - - -
-
- - - - -
- - - - @switch (vm.selectedViewType) { @case (DashboardViewType.BTW) { -
- -
- } @case (DashboardViewType.TSW) { -
- -
- } @case (DashboardViewType.KTW) { -
- -
- } @case (DashboardViewType.Gesamt) { -
- -
- } } -
-
-
- - - - + + @switch (vm.selectedViewType) { @case (DashboardViewType.BTW) { +
+ +
+ } @case (DashboardViewType.TSW) { +
+ +
+ } @case (DashboardViewType.KTW) { +
+ +
+ } @case (DashboardViewType.Gesamt) { +
+ +
+ } } +
+ +
+ } @else { + + } + } @else { + + } diff --git a/service/app-hub/dashboard/src/app/pages/manager/overview/overview.component.html b/service/app-hub/dashboard/src/app/pages/manager/overview/overview.component.html index 67f3933..10950ef 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/overview/overview.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/overview/overview.component.html @@ -1,71 +1,75 @@ -
-
- - +
+ + - + - + + style="border-color: var(--mat-sys-primary);" + [text]="OrdinanceTypes.KTW" + [kpis]="vm.ktwKPI.summaries" + (click)="setSelectedOrdinanceType(OrdinanceTypes.KTW)" + > +
+ @if (vm.selectedOrdinanceType) { +
+ + + + @switch (vm.selectedOrdinanceType) { + @case (OrdinanceTypes.BTW) { + + } + @case (OrdinanceTypes.TSW) { + + } + @case (OrdinanceTypes.KTW) { + + } + } + + +
+ }
-
- - - - - - - - - - -
-
- +} @else { - +} diff --git a/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-by-car/time-per-tour-by-car.component.html b/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-by-car/time-per-tour-by-car.component.html index 39eff08..f5aefd1 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-by-car/time-per-tour-by-car.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-by-car/time-per-tour-by-car.component.html @@ -6,29 +6,33 @@ class="full-width-table" matSort aria-label="Fahrzeuge" - > - - {{ column.title }} - {{ carData[column.id] }}{{(column.id !=='carName' && carData.carName === 'Touren ohne Zuweisung') ? 'T' : ''}} - + > + @for (column of columns; track column) { + + {{ column.title }} + {{ carData[column.id] }}{{(column.id !=='carName' && carData.carName === 'Touren ohne Zuweisung') ? 'T' : ''}} + + }
-
-
- {{getSlotTitleByIndex(idx)}} + @for (detail of carData.additionalData; track detail; let idx = $index) { +
+
+ {{getSlotTitleByIndex(idx)}} +
+
+ {{detail.availableTime}}departure_board +
+
+ {{detail.tourAmount}}local_shipping +
+
+ {{detail.breakEven}}€account_balance +
-
- {{detail.availableTime}}departure_board -
-
- {{detail.tourAmount}}local_shipping -
-
- {{detail.breakEven}}€account_balance -
-
+ }
diff --git a/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-kpi/time-per-tour-kpi.component.html b/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-kpi/time-per-tour-kpi.component.html index 72afa5b..c737d53 100644 --- a/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-kpi/time-per-tour-kpi.component.html +++ b/service/app-hub/dashboard/src/app/pages/manager/time-per-tour-kpi/time-per-tour-kpi.component.html @@ -9,31 +9,32 @@
local_shipping
account_balance
-
+ @for (kpi of kpis; track kpi; let idx = $index) {
- {{ kpi.interval.start | date: 'HH:mm' }} - - {{ kpi.interval.end | date: 'HH:mm' }} + class="w-1/3 flex flex-col justify-center items-center" + > +
+ {{ kpi.interval.start | date: 'HH:mm' }} - + {{ kpi.interval.end | date: 'HH:mm' }} +
+
+ {{ kpi.kpi.value.toString().replace('.', ',') }} +
+
+ {{ kpi.kpi.meta.availableTime }} +
+
+ {{ kpi.kpi.meta.tourAmount }} +
+
+ {{ kpi.kpi.meta.breakEven}}€ +
-
- {{ kpi.kpi.value.toString().replace('.', ',') }} -
-
- {{ kpi.kpi.meta.availableTime }} -
-
- {{ kpi.kpi.meta.tourAmount }} -
-
- {{ kpi.kpi.meta.breakEven}}€ -
-
+ }
diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.html b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.html index eb093c2..6e50ee8 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.html +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.html @@ -1,28 +1,29 @@ - +@if (ticket) {
{{ ticket.tours.at(0)?.ordinanceType }}
- - error - + @if (ticket.errors.length) { + + error + + }
{{ ticket.tours.at(0)?.patientName }} {{ ticket.tours.at(0)?.patientSurname }} - {{ getToursLength() }} Tour{{ + > + {{ getToursLength() }} Tour{{ getToursLength() > 1 ? 'en' : '' - }} - {{ getDistance(ticket.createdAt) }} -
+ }} + {{ getDistance(ticket.createdAt) }} + } diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.ts index 8a696b0..28f9631 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-item/ticket-item.component.ts @@ -1,4 +1,4 @@ -import { NgIf } from '@angular/common'; + import { ChangeDetectionStrategy, Component, @@ -32,7 +32,7 @@ import CategoryColors from './category-colors'; } `, ], - imports: [MatIconModule, MatBadgeModule, NgIf], + imports: [MatIconModule, MatBadgeModule], }) export class TicketItemComponent implements OnInit { @Input() ticket!: Ticket & { tours: Tour[] }; diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-footer.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-footer.component.ts index aa5475d..8f2bbb0 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-footer.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-footer.component.ts @@ -1,31 +1,41 @@ -import { NgIf } from '@angular/common'; + import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { TicketStateMeta } from '../../../core/data-access/graphql/generated/generated'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-ticket-lane-footer', - template: ` - {{ ticketStateMeta.count }} Tickets - - - {{ ticketStateMeta.approvalRequiredCount }} davon genehmigungspflichtig - - - {{ ticketStateMeta.approvalUnknownCount }} davon auf Genehmigungspflicht - zu prüfen - - - {{ ticketStateMeta.approvalNotCompanyCount }} davon fehlende Genehmigung - - - {{ ticketStateMeta.tdNotCompanyCount }} davon fehlender Transportschein - `, + template: `@if (withTicketCount) { + + {{ ticketStateMeta.count }} Tickets + +} +@if (withApprovalRequiredCount) { + + {{ ticketStateMeta.approvalRequiredCount }} davon genehmigungspflichtig + +} +@if (withApprovalUnknownCount) { + + {{ ticketStateMeta.approvalUnknownCount }} davon auf Genehmigungspflicht + zu prüfen + +} +@if (withApprovalNotCompanyCount) { + + {{ ticketStateMeta.approvalNotCompanyCount }} davon fehlende Genehmigung + +} +@if (withTdNotCompanyCount) { + + {{ ticketStateMeta.tdNotCompanyCount }} davon fehlender Transportschein + +}`, host: { class: 'flex flex-col items-center justify-center p-2', }, styles: [``], - imports: [NgIf], + imports: [], }) export class TicketLaneFooterComponent { @Input() ticketStateMeta!: TicketStateMeta; diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header-filter.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header-filter.component.ts index 435f992..d755fda 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header-filter.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header-filter.component.ts @@ -1,4 +1,4 @@ -import { NgFor, NgSwitch, NgSwitchCase } from '@angular/common'; + import { AfterViewInit, ChangeDetectionStrategy, @@ -24,92 +24,96 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-ticket-lane-header-filter', template: ` - - - + } + @case (TicketValidationState.UserInteractionRequired) { + - + } + @case (TicketValidationState.TdUncertain) { + - + } + @case (TicketValidationState.DocumentsMissing) { + - -
- -
filter_list + + } +} + + + @for (item of filter.errors; track item) { +
- {{ - item.text - }} -
-
- -
{{ + item.text + }} +
+ } +
+ + @for (item of filter.approvalStates; track item) { +
- {{ - item.text - }} -
-
- -
- Alle -
-
- -
{{ + item.text + }} +
+ } +
+ +
+ Alle +
+
+ + @for (item of filter.documentInfo; track item) { +
- {{ - item.text - }} -
-
- - `, + {{ + item.text + }} +
+ } +
+ +`, styles: [], imports: [ - NgSwitch, - NgSwitchCase, - NgFor, - FormsModule, - MatButtonModule, - MatIconModule, - MatMenuModule, - MatCheckboxModule, - ] + FormsModule, + MatButtonModule, + MatIconModule, + MatMenuModule, + MatCheckboxModule +] }) export class TicketLaneHeaderFilterComponent implements AfterViewInit { @Input() state!: TicketValidationState; diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header.component.ts index d4cb6b8..b8a467e 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane-header.component.ts @@ -1,4 +1,4 @@ -import { NgSwitch, NgSwitchCase } from '@angular/common'; + import { ChangeDetectionStrategy, Component, @@ -16,23 +16,33 @@ import { TicketLaneHeaderFilterComponent } from './ticket-lane-header-filter.com changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-ticket-lane-header', template: `
- -
Touren angenommen
-
- Genehmigung/Transportschein -
-
- Transportschein unklar -
-
- Dokumente fehlen -
-
Archiv
-
- `, +@switch (state) { + @case (TicketValidationState.Created) { +
Touren angenommen
+ } + @case (TicketValidationState.UserInteractionRequired) { +
+ Genehmigung/Transportschein +
+ } + @case (TicketValidationState.TdUncertain) { +
+ Transportschein unklar +
+ } + @case (TicketValidationState.DocumentsMissing) { +
+ Dokumente fehlen +
+ } + @case (TicketValidationState.Archived) { +
Archiv
+ } +} +`, host: { class: 'flex items-center justify-between p-2', }, @@ -44,7 +54,7 @@ import { TicketLaneHeaderFilterComponent } from './ticket-lane-header-filter.com } `, ], - imports: [NgSwitch, NgSwitchCase, TicketLaneHeaderFilterComponent] + imports: [TicketLaneHeaderFilterComponent] }) export class TicketLaneHeaderComponent { @Input() state!: TicketValidationState; diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.html b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.html index 3e7087d..534b0e2 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.html +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.html @@ -3,34 +3,34 @@ [state]="ticketState" (filterChange)="filterChanged($event)" > - +@if (tickets$ | async; as tickets) { + > + > - +} diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.ts index c5c20ef..ad85800 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-lane/ticket-lane.component.ts @@ -2,7 +2,7 @@ import { CdkVirtualScrollViewport, ScrollingModule, } from '@angular/cdk/scrolling'; -import { AsyncPipe, NgIf } from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -51,10 +51,9 @@ import { TicketLaneHeaderComponent } from './ticket-lane-header.component'; imports: [ TicketLaneHeaderComponent, TicketItemComponent, - NgIf, AsyncPipe, - ScrollingModule, - ], + ScrollingModule +], }) export class TicketLaneComponent { private dialog = inject(DialogService); diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-documents-missing.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-documents-missing.component.ts index 441883b..d0fcebc 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-documents-missing.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-documents-missing.component.ts @@ -1,4 +1,4 @@ -import { NgIf } from '@angular/common'; + import { ChangeDetectionStrategy, Component, @@ -23,45 +23,45 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-ticket-documents-missing', template: `
-
-
- - -
-
- - Genehmigung - Transportschein -
-
-
`, +
+
+ + +
+
+ + @if (ticket.approvalState !== ApprovalState.Free) { + Genehmigung + } + Transportschein +
+
+ `, imports: [ - NgIf, - MatButtonModule, - MatIconModule, - MatFormFieldModule, - MatRadioModule, - MatCheckboxModule, - FormsModule, - ] + MatButtonModule, + MatIconModule, + MatFormFieldModule, + MatRadioModule, + MatCheckboxModule, + FormsModule +] }) export class TicketDocumentsMissingComponent { @Input() ticket!: Ticket & { tours: Tour[] }; diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-overview.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-overview.component.ts index 797e368..512742a 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-overview.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-overview.component.ts @@ -1,10 +1,4 @@ -import { - NgClass, - NgForOf, - NgIf, - NgSwitch, - NgSwitchCase, -} from '@angular/common'; +import { NgClass } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { MatIconModule } from '@angular/material/icon'; import { MatListModule } from '@angular/material/list'; @@ -18,79 +12,89 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-ticket-overview', template: `
- -
Ticket Informationen
- - Typ: - - {{ ticket.tours[0].type }} - - - - Kategorie: - - {{ ticket.tours[0].category }} - - -
- -
Gehnemigungsinformationen
- - - Genehmigungsfrei - Automatische Prüfung nicht möglich - Genehmigung benötigt - Genehmigung angefragt - Genehmigung eingegangen - - -
- -
Ticket Anmerkungen
- - error - {{ error.split(':').at(0) }} - {{ - error.split(':').at(1) - }} - - - warning - {{ note.split(':').at(0) }} - {{ note.split(':').at(1) }} - -
-
`, + +
Ticket Informationen
+ + Typ: + + {{ ticket.tours[0].type }} + + + + Kategorie: + + {{ ticket.tours[0].category }} + + +
+ @if (ticket.approvalState) { + +
Gehnemigungsinformationen
+ + @switch (ticket.approvalState) { + @case (ApprovalState.Free) { + Genehmigungsfrei + } + @case (ApprovalState.Unknown) { + Automatische Prüfung nicht möglich + } + @case (ApprovalState.Required) { + Genehmigung benötigt + } + @case (ApprovalState.Requested) { + Genehmigung angefragt + } + @case (ApprovalState.Approved) { + Genehmigung eingegangen + } + } + +
+ } + @if (ticket.errors.length > 0 || ticket.notes.length > 0) { + +
Ticket Anmerkungen
+ @for (error of ticket.errors; track error) { + + error + {{ error.split(':').at(0) }} + {{ + error.split(':').at(1) + }} + + } + @for (note of ticket.notes; track note) { + + warning + {{ note.split(':').at(0) }} + {{ note.split(':').at(1) }} + + } +
+ } + `, imports: [ - MatListModule, - MatIconModule, - NgIf, - NgForOf, - NgSwitch, - NgSwitchCase, - ] + MatListModule, + MatIconModule +] }) export class TicketOverviewComponent { @Input() ticket!: Ticket & { tours: Tour[] }; diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-td-uncertain.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-td-uncertain.component.ts index 54a120f..e3a3bbc 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-td-uncertain.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-td-uncertain.component.ts @@ -1,4 +1,4 @@ -import { NgIf } from '@angular/common'; + import { ChangeDetectionStrategy, Component, diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-tours.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-tours.component.ts index a802def..b49c524 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-tours.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-tours.component.ts @@ -1,5 +1,5 @@ import { SelectionModel } from '@angular/cdk/collections'; -import { DatePipe, NgClass, NgIf } from '@angular/common'; +import { DatePipe, NgClass } from '@angular/common'; import { ChangeDetectionStrategy, Component, diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-user-action-required.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-user-action-required.component.ts index 9acb73c..5441118 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-user-action-required.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-user-action-required.component.ts @@ -1,4 +1,4 @@ -import { NgIf } from '@angular/common'; + import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -32,92 +32,88 @@ import { AuthService } from '../../../core/components/ms-authentication/auth.ser changeDetection: ChangeDetectionStrategy.OnPush, selector: 'dks-ticket-user-action-required', template: `
-
-
- - -
-
- - - Nein - Ja - -
- + +
+ + +
- + - Avicenna - Kunde + > + Nein + Ja
- - - Name des Sachbearbeiters? - + + + Avicenna + Kunde + +
+ + Name des Sachbearbeiters? + + + } + +
+ + - - - -
- - - Im Betrieb - - In der Praxis - - - Beim Kunden - - Unklar - -
- -
`, + > + Im Betrieb + + In der Praxis + + + Beim Kunden + + Unklar + + + + `, imports: [ - NgIf, MatButtonModule, MatIconModule, MatFormFieldModule, MatRadioModule, MatInputModule, - FormsModule, - ], + FormsModule +], }) export class TicketUserActionRequiredComponent implements OnInit { @Input() ticket!: Ticket & { tours: Tour[] }; diff --git a/service/app-hub/dashboard/src/app/pages/ticket-system/tickets-search-dialog/tickets-search-dialog.component.ts b/service/app-hub/dashboard/src/app/pages/ticket-system/tickets-search-dialog/tickets-search-dialog.component.ts index 446b3c3..dfd1ce7 100644 --- a/service/app-hub/dashboard/src/app/pages/ticket-system/tickets-search-dialog/tickets-search-dialog.component.ts +++ b/service/app-hub/dashboard/src/app/pages/ticket-system/tickets-search-dialog/tickets-search-dialog.component.ts @@ -1,4 +1,4 @@ -import { AsyncPipe, NgFor, NgIf } from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { MatFormFieldModule } from '@angular/material/form-field'; @@ -20,50 +20,50 @@ import { TicketsService } from '../tickets.service'; @Component({ template: `
-
Ticket suchen
-
- - Einsatznummer oder Patient - - -
-
-
-
- {{ ticket.tours.at(0)?.ordinanceType }} - - ({{ ticket.tours.at(0)?.category }}) - -
-
- - {{ ticket.tours.at(0)?.patientName }} - {{ ticket.tours.at(0)?.patientSurname }} - - - {{ ticket.tours.length }} Tour{{ - ticket.tours.length > 1 ? 'en' : '' - }} - -
+
Ticket suchen
+
+ + Einsatznummer oder Patient + + +
+
+ @for (ticket of tickets$ | async; track ticket) { +
+
+ {{ ticket.tours.at(0)?.ordinanceType }} + @if (ticket.tours.at(0)?.category) { + + ({{ ticket.tours.at(0)?.category }}) + + } +
+
+ + {{ ticket.tours.at(0)?.patientName }} + {{ ticket.tours.at(0)?.patientSurname }} + + + {{ ticket.tours.length }} Tour{{ + ticket.tours.length > 1 ? 'en' : '' + }} + +
+
+ }
-
-
`, +
`, imports: [ - MatFormFieldModule, - MatInputModule, - ReactiveFormsModule, - AsyncPipe, - NgFor, - NgIf, - ], + MatFormFieldModule, + MatInputModule, + ReactiveFormsModule, + AsyncPipe +], changeDetection: ChangeDetectionStrategy.OnPush }) export class TicketsSearchDialogComponent {