update angular core & cli to v19
This commit is contained in:
parent
dde00abe54
commit
d8a2930247
File diff suppressed because it is too large
Load Diff
|
|
@ -10,17 +10,17 @@
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^18.1.0",
|
"@angular/animations": "^19.2.6",
|
||||||
"@angular/cdk": "^18.1.1",
|
"@angular/cdk": "^18.1.1",
|
||||||
"@angular/common": "^18.1.0",
|
"@angular/common": "^19.2.6",
|
||||||
"@angular/compiler": "^18.1.0",
|
"@angular/compiler": "^19.2.6",
|
||||||
"@angular/core": "^18.1.0",
|
"@angular/core": "^19.2.6",
|
||||||
"@angular/forms": "^18.1.0",
|
"@angular/forms": "^19.2.6",
|
||||||
"@angular/material": "^18.1.1",
|
"@angular/material": "^18.1.1",
|
||||||
"@angular/material-date-fns-adapter": "^18.1.1",
|
"@angular/material-date-fns-adapter": "^18.1.1",
|
||||||
"@angular/platform-browser": "^18.1.0",
|
"@angular/platform-browser": "^19.2.6",
|
||||||
"@angular/platform-browser-dynamic": "^18.1.0",
|
"@angular/platform-browser-dynamic": "^19.2.6",
|
||||||
"@angular/router": "^18.1.0",
|
"@angular/router": "^19.2.6",
|
||||||
"@apollo/client": "^3.0.0",
|
"@apollo/client": "^3.0.0",
|
||||||
"@azure/msal-angular": "^3.0.22",
|
"@azure/msal-angular": "^3.0.22",
|
||||||
"@azure/msal-browser": "^3.19.1",
|
"@azure/msal-browser": "^3.19.1",
|
||||||
|
|
@ -46,13 +46,13 @@
|
||||||
"graphql-ws": "^5.16.0",
|
"graphql-ws": "^5.16.0",
|
||||||
"rxjs": "~7.8.0",
|
"rxjs": "~7.8.0",
|
||||||
"tslib": "^2.3.0",
|
"tslib": "^2.3.0",
|
||||||
"zone.js": "~0.14.3"
|
"zone.js": "~0.15.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^18.1.1",
|
"@angular-devkit/build-angular": "^19.2.7",
|
||||||
"@angular/cli": "^18.1.1",
|
"@angular/cli": "^19.2.7",
|
||||||
"@angular/compiler-cli": "^18.1.0",
|
"@angular/compiler-cli": "^19.2.6",
|
||||||
"@angular/localize": "^18.1.1",
|
"@angular/localize": "^19.2.6",
|
||||||
"@types/jasmine": "~5.1.0",
|
"@types/jasmine": "~5.1.0",
|
||||||
"autoprefixer": "^10.4.19",
|
"autoprefixer": "^10.4.19",
|
||||||
"jasmine-core": "~5.1.0",
|
"jasmine-core": "~5.1.0",
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,10 @@ import { AppShellComponent } from './core/components/app-shell/app-shell.compone
|
||||||
import { MsalService } from '@azure/msal-angular';
|
import { MsalService } from '@azure/msal-angular';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
standalone: true,
|
imports: [AppShellComponent, RouterOutlet],
|
||||||
imports: [AppShellComponent, RouterOutlet],
|
templateUrl: './app.component.html',
|
||||||
templateUrl: './app.component.html',
|
styleUrl: './app.component.scss'
|
||||||
styleUrl: './app.component.scss',
|
|
||||||
})
|
})
|
||||||
export class AppComponent {
|
export class AppComponent {
|
||||||
title = 'dashboard';
|
title = 'dashboard';
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import {
|
import {
|
||||||
APP_INITIALIZER,
|
|
||||||
ApplicationConfig,
|
ApplicationConfig,
|
||||||
ErrorHandler,
|
ErrorHandler,
|
||||||
importProvidersFrom,
|
importProvidersFrom,
|
||||||
provideZoneChangeDetection,
|
provideZoneChangeDetection,
|
||||||
|
provideAppInitializer,
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { provideRouter } from '@angular/router';
|
import { provideRouter } from '@angular/router';
|
||||||
|
|
||||||
|
|
@ -19,15 +19,13 @@ import { GlobalErrorHandler } from './core/telemetry/global-error-handler';
|
||||||
|
|
||||||
export const appConfig: ApplicationConfig = {
|
export const appConfig: ApplicationConfig = {
|
||||||
providers: [
|
providers: [
|
||||||
{
|
provideAppInitializer(() => {
|
||||||
provide: APP_INITIALIZER,
|
const initializerFn = faroInitializer();
|
||||||
useFactory: faroInitializer,
|
return initializerFn();
|
||||||
deps: [],
|
}),
|
||||||
multi: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
provide: ErrorHandler,
|
provide: ErrorHandler,
|
||||||
useClass: GlobalErrorHandler
|
useClass: GlobalErrorHandler,
|
||||||
},
|
},
|
||||||
provideZoneChangeDetection({ eventCoalescing: true }),
|
provideZoneChangeDetection({ eventCoalescing: true }),
|
||||||
provideRouter(routes),
|
provideRouter(routes),
|
||||||
|
|
|
||||||
|
|
@ -19,23 +19,22 @@ import { AvatarComponent } from '../avatar/avatar.component';
|
||||||
import { RoleDirective } from '../ms-authentication/role.directive';
|
import { RoleDirective } from '../ms-authentication/role.directive';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-app-shell',
|
selector: 'app-app-shell',
|
||||||
standalone: true,
|
imports: [
|
||||||
imports: [
|
MatButtonModule,
|
||||||
MatButtonModule,
|
MatIconModule,
|
||||||
MatIconModule,
|
MatToolbarModule,
|
||||||
MatToolbarModule,
|
MatSidenavModule,
|
||||||
MatSidenavModule,
|
MatListModule,
|
||||||
MatListModule,
|
AvatarComponent,
|
||||||
AvatarComponent,
|
RouterOutlet,
|
||||||
RouterOutlet,
|
RouterLink,
|
||||||
RouterLink,
|
RouterLinkActive,
|
||||||
RouterLinkActive,
|
AsyncPipe,
|
||||||
AsyncPipe,
|
RoleDirective,
|
||||||
RoleDirective,
|
],
|
||||||
],
|
templateUrl: './app-shell.component.html',
|
||||||
templateUrl: './app-shell.component.html',
|
styleUrl: './app-shell.component.scss'
|
||||||
styleUrl: './app-shell.component.scss',
|
|
||||||
})
|
})
|
||||||
export class AppShellComponent {
|
export class AppShellComponent {
|
||||||
isHandset$: Observable<boolean>;
|
isHandset$: Observable<boolean>;
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,9 @@ import { map } from 'rxjs';
|
||||||
import { AuthService } from '../ms-authentication/auth.service';
|
import { AuthService } from '../ms-authentication/auth.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-avatar',
|
||||||
selector: 'dks-avatar',
|
template: `<div
|
||||||
template: `<div
|
|
||||||
class="flex items-center justify-center rounded-full h-10 w-10 bg-gray-100 text-blue-500 cursor-pointer transition ease-in-out hover:bg-white hover:shadow-md hover:scale-105 duration-200 "
|
class="flex items-center justify-center rounded-full h-10 w-10 bg-gray-100 text-blue-500 cursor-pointer transition ease-in-out hover:bg-white hover:shadow-md hover:scale-105 duration-200 "
|
||||||
[matMenuTriggerFor]="menu"
|
[matMenuTriggerFor]="menu"
|
||||||
>
|
>
|
||||||
|
|
@ -17,7 +16,7 @@ import { AuthService } from '../ms-authentication/auth.service';
|
||||||
<mat-menu #menu="matMenu">
|
<mat-menu #menu="matMenu">
|
||||||
<button mat-menu-item (click)="logout()">Logout</button>
|
<button mat-menu-item (click)="logout()">Logout</button>
|
||||||
</mat-menu>`,
|
</mat-menu>`,
|
||||||
imports: [AsyncPipe, MatMenuModule],
|
imports: [AsyncPipe, MatMenuModule]
|
||||||
})
|
})
|
||||||
export class AvatarComponent {
|
export class AvatarComponent {
|
||||||
private authService = inject(AuthService);
|
private authService = inject(AuthService);
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ export interface ConfirmDialogData {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
template: `<div class="flex flex-col items-center justify-start p-4">
|
template: `<div class="flex flex-col items-center justify-start p-4">
|
||||||
<div class="text-lg font-bold pb-2">{{ ref.data.title }}</div>
|
<div class="text-lg font-bold pb-2">{{ ref.data.title }}</div>
|
||||||
<div class="pb-4 border-b border-gray-400">{{ ref.data.body }}</div>
|
<div class="pb-4 border-b border-gray-400">{{ ref.data.body }}</div>
|
||||||
<div class="pt-4">
|
<div class="pt-4">
|
||||||
|
|
@ -16,9 +16,8 @@ export interface ConfirmDialogData {
|
||||||
<button mat-stroked-button color="warn" [dialogClose]="true">Bestätigen</button>
|
<button mat-stroked-button color="warn" [dialogClose]="true">Bestätigen</button>
|
||||||
</div>
|
</div>
|
||||||
</div>`,
|
</div>`,
|
||||||
standalone: true,
|
imports: [MatButtonModule, DialogCloseDirective],
|
||||||
imports: [MatButtonModule, DialogCloseDirective],
|
changeDetection: ChangeDetectionStrategy.OnPush
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
||||||
})
|
})
|
||||||
export class ConfirmDialogComponent {
|
export class ConfirmDialogComponent {
|
||||||
ref: DialogRef<ConfirmDialogData> = inject(DialogRef);
|
ref: DialogRef<ConfirmDialogData> = inject(DialogRef);
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,8 @@ import * as echarts from 'echarts/core';
|
||||||
import { CanvasRenderer } from 'echarts/renderers';
|
import { CanvasRenderer } from 'echarts/renderers';
|
||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[dksEcharts]'
|
selector: '[dksEcharts]',
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class EchartsDirective implements OnInit, OnDestroy, OnChanges {
|
export class EchartsDirective implements OnInit, OnDestroy, OnChanges {
|
||||||
@Input() options?: EChartsOption;
|
@Input() options?: EChartsOption;
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,9 @@ import { HotToastService } from '@ngxpert/hot-toast';
|
||||||
import { Tour, Ticket, AccountingState, TicketValidationState } from '../../../core/data-access/graphql/generated/generated';
|
import { Tour, Ticket, AccountingState, TicketValidationState } from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-accounting-item',
|
||||||
selector: 'dks-accounting-item',
|
template: ` <div class="flex justify-between">
|
||||||
template: ` <div class="flex justify-between">
|
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
|
|
@ -45,22 +44,22 @@ import { Tour, Ticket, AccountingState, TicketValidationState } from '../../../c
|
||||||
tour.revenueDeviation | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE'
|
tour.revenueDeviation | currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE'
|
||||||
}}
|
}}
|
||||||
</ng-template>`,
|
</ng-template>`,
|
||||||
styles: [
|
styles: [
|
||||||
`
|
`
|
||||||
:host {
|
:host {
|
||||||
@apply flex flex-col rounded border p-2 m-1 bg-white cursor-pointer;
|
@apply flex flex-col rounded border p-2 m-1 bg-white cursor-pointer;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatBadgeModule,
|
MatBadgeModule,
|
||||||
ClipboardModule,
|
ClipboardModule,
|
||||||
NgIf,
|
NgIf,
|
||||||
NgClass,
|
NgClass,
|
||||||
CurrencyPipe,
|
CurrencyPipe,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class AccountingItemComponent implements AfterViewInit {
|
export class AccountingItemComponent implements AfterViewInit {
|
||||||
toast = inject(HotToastService);
|
toast = inject(HotToastService);
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,9 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
||||||
import { TourStateMeta } from '../../../core/data-access/graphql/generated/generated';
|
import { TourStateMeta } from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-accounting-lane-footer',
|
||||||
selector: 'dks-accounting-lane-footer',
|
template: `<span *ngIf="withTourCount" class="text-left text-xs">
|
||||||
template: `<span *ngIf="withTourCount" class="text-left text-xs">
|
|
||||||
{{ tourStateMeta.count }} Touren
|
{{ tourStateMeta.count }} Touren
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="withRevenueSum" class="text-left text-xs">
|
<span *ngIf="withRevenueSum" class="text-left text-xs">
|
||||||
|
|
@ -15,14 +14,14 @@ import { TourStateMeta } from '../../../core/data-access/graphql/generated/gener
|
||||||
| currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE'
|
| currency : 'EUR' : 'symbol' : '1.2-2' : 'de-DE'
|
||||||
}}
|
}}
|
||||||
</span>`,
|
</span>`,
|
||||||
styles: [
|
styles: [
|
||||||
`
|
`
|
||||||
:host {
|
:host {
|
||||||
@apply flex flex-col items-center justify-center p-2;
|
@apply flex flex-col items-center justify-center p-2;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [NgIf, AsyncPipe, CurrencyPipe],
|
imports: [NgIf, AsyncPipe, CurrencyPipe]
|
||||||
})
|
})
|
||||||
export class AccountingLaneFooterComponent {
|
export class AccountingLaneFooterComponent {
|
||||||
@Input() tourStateMeta!: TourStateMeta;
|
@Input() tourStateMeta!: TourStateMeta;
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,9 @@ import {
|
||||||
} from '../../../core/data-access/graphql/generated/generated';
|
} from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-accounting-lane-header-filter',
|
||||||
selector: 'dks-accounting-lane-header-filter',
|
template: `
|
||||||
template: `
|
|
||||||
<ng-container [ngSwitch]="state">
|
<ng-container [ngSwitch]="state">
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
|
|
@ -75,17 +74,17 @@ import {
|
||||||
</mat-menu>
|
</mat-menu>
|
||||||
</form>
|
</form>
|
||||||
`,
|
`,
|
||||||
styles: [],
|
styles: [],
|
||||||
imports: [
|
imports: [
|
||||||
NgSwitch,
|
NgSwitch,
|
||||||
NgSwitchCase,
|
NgSwitchCase,
|
||||||
NgFor,
|
NgFor,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatMenuModule,
|
MatMenuModule,
|
||||||
MatCheckboxModule,
|
MatCheckboxModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class AccountingLaneHeaderFilterComponent implements AfterViewInit {
|
export class AccountingLaneHeaderFilterComponent implements AfterViewInit {
|
||||||
@Input() state!: AccountingState;
|
@Input() state!: AccountingState;
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,9 @@ import { AccountingLaneHeaderFilterComponent } from './accounting-lane-header-fi
|
||||||
import { AccountingFilterArgs, AccountingState } from '../../../core/data-access/graphql/generated/generated';
|
import { AccountingFilterArgs, AccountingState } from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-accounting-lane-header',
|
||||||
selector: 'dks-accounting-lane-header',
|
template: `<div></div>
|
||||||
template: `<div></div>
|
|
||||||
<ng-container [ngSwitch]="state">
|
<ng-container [ngSwitch]="state">
|
||||||
<div *ngSwitchCase="AccountingState.Billable">Abrechenbar</div>
|
<div *ngSwitchCase="AccountingState.Billable">Abrechenbar</div>
|
||||||
<div *ngSwitchCase="AccountingState.PreparedForBilling">
|
<div *ngSwitchCase="AccountingState.PreparedForBilling">
|
||||||
|
|
@ -27,14 +26,14 @@ import { AccountingFilterArgs, AccountingState } from '../../../core/data-access
|
||||||
[state]="state"
|
[state]="state"
|
||||||
(filterChange)="filterChanged($event)"
|
(filterChange)="filterChanged($event)"
|
||||||
></dks-accounting-lane-header-filter>`,
|
></dks-accounting-lane-header-filter>`,
|
||||||
styles: [
|
styles: [
|
||||||
`
|
`
|
||||||
:host {
|
:host {
|
||||||
@apply flex items-center justify-between p-2 bg-gray-50;
|
@apply flex items-center justify-between p-2 bg-gray-50;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [NgSwitch, NgSwitchCase, AccountingLaneHeaderFilterComponent],
|
imports: [NgSwitch, NgSwitchCase, AccountingLaneHeaderFilterComponent]
|
||||||
})
|
})
|
||||||
export class AccountingLaneHeaderComponent {
|
export class AccountingLaneHeaderComponent {
|
||||||
@Input() state!: AccountingState;
|
@Input() state!: AccountingState;
|
||||||
|
|
|
||||||
|
|
@ -36,29 +36,28 @@ import { AccountingLaneFooterComponent } from './accounting-lane-footer.componen
|
||||||
import { AccountingLaneHeaderComponent } from './accounting-lane-header.component';
|
import { AccountingLaneHeaderComponent } from './accounting-lane-header.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-accounting-lane',
|
selector: 'dks-accounting-lane',
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
templateUrl: './accounting-lane.component.html',
|
||||||
templateUrl: './accounting-lane.component.html',
|
styles: [
|
||||||
styles: [
|
`
|
||||||
`
|
|
||||||
:host {
|
:host {
|
||||||
@apply rounded bg-gray-200 h-full w-full grid;
|
@apply rounded bg-gray-200 h-full w-full grid;
|
||||||
grid-template-rows: auto 1fr auto;
|
grid-template-rows: auto 1fr auto;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
AccountingLaneHeaderComponent,
|
AccountingLaneHeaderComponent,
|
||||||
AccountingLaneFooterComponent,
|
AccountingLaneFooterComponent,
|
||||||
AccountingItemComponent,
|
AccountingItemComponent,
|
||||||
NgFor,
|
NgFor,
|
||||||
NgIf,
|
NgIf,
|
||||||
NgClass,
|
NgClass,
|
||||||
AsyncPipe,
|
AsyncPipe,
|
||||||
CurrencyPipe,
|
CurrencyPipe,
|
||||||
ScrollingModule,
|
ScrollingModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class AccountingLaneComponent {
|
export class AccountingLaneComponent {
|
||||||
private dialog = inject(DialogService);
|
private dialog = inject(DialogService);
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,9 @@ import { MatTabsModule } from '@angular/material/tabs';
|
||||||
import { Tour } from '../../../core/data-access/graphql/generated/generated';
|
import { Tour } from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-accounting-tour-overview',
|
||||||
selector: 'dks-accounting-tour-overview',
|
template: `
|
||||||
template: `
|
|
||||||
<div class="px-4 py-2 flex justify-between">
|
<div class="px-4 py-2 flex justify-between">
|
||||||
<div class="flex flex-col text-gray-600 text-sm">
|
<div class="flex flex-col text-gray-600 text-sm">
|
||||||
<span class="font-medium">Startzeit</span>
|
<span class="font-medium">Startzeit</span>
|
||||||
|
|
@ -71,8 +70,8 @@ import { Tour } from '../../../core/data-access/graphql/generated/generated';
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
styles: [],
|
styles: [],
|
||||||
imports: [MatTabsModule, MatIconModule, MatDividerModule, NgIf, DatePipe],
|
imports: [MatTabsModule, MatIconModule, MatDividerModule, NgIf, DatePipe]
|
||||||
})
|
})
|
||||||
export class AccountingTourOverviewComponent {
|
export class AccountingTourOverviewComponent {
|
||||||
@Input() tour!: Tour;
|
@Input() tour!: Tour;
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,9 @@ import { MatListModule } from '@angular/material/list';
|
||||||
import { Ticket, TicketValidationState, Tour } from '../../../core/data-access/graphql/generated/generated';
|
import { Ticket, TicketValidationState, Tour } from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-accounting-tour-ticket',
|
||||||
selector: 'dks-accounting-tour-ticket',
|
template: `
|
||||||
template: `
|
|
||||||
<div class="grid grid-cols-4">
|
<div class="grid grid-cols-4">
|
||||||
<mat-list class="col-span-2" role="list">
|
<mat-list class="col-span-2" role="list">
|
||||||
<div mat-subheader class="text-sm">Ticket Informationen</div>
|
<div mat-subheader class="text-sm">Ticket Informationen</div>
|
||||||
|
|
@ -87,17 +86,17 @@ import { Ticket, TicketValidationState, Tour } from '../../../core/data-access/g
|
||||||
</mat-list>
|
</mat-list>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
styles: [],
|
styles: [],
|
||||||
imports: [
|
imports: [
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatListModule,
|
MatListModule,
|
||||||
MatDividerModule,
|
MatDividerModule,
|
||||||
NgIf,
|
NgIf,
|
||||||
NgFor,
|
NgFor,
|
||||||
NgSwitch,
|
NgSwitch,
|
||||||
NgSwitchCase,
|
NgSwitchCase,
|
||||||
DatePipe,
|
DatePipe,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class AccountingTourTicketComponent {
|
export class AccountingTourTicketComponent {
|
||||||
@Input() tour!: Tour & { ticket: Ticket };
|
@Input() tour!: Tour & { ticket: Ticket };
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,9 @@ import { AccountingTourOverviewComponent } from './accounting-tour-overview.comp
|
||||||
import { AccountingTourTicketComponent } from './accounting-tour-ticket.component';
|
import { AccountingTourTicketComponent } from './accounting-tour-ticket.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-accounting-tour-view',
|
||||||
selector: 'dks-accounting-tour-view',
|
template: `<h3 class="py-2 px-3 !mb-0">
|
||||||
template: `<h3 class="py-2 px-3 !mb-0">
|
|
||||||
{{ ref.data.ordinanceType }} -
|
{{ ref.data.ordinanceType }} -
|
||||||
{{ ref.data.patientName }}
|
{{ ref.data.patientName }}
|
||||||
{{ ref.data.patientSurname }}
|
{{ ref.data.patientSurname }}
|
||||||
|
|
@ -31,13 +30,13 @@ import { AccountingTourTicketComponent } from './accounting-tour-ticket.componen
|
||||||
></dks-accounting-tour-ticket>
|
></dks-accounting-tour-ticket>
|
||||||
</mat-tab>
|
</mat-tab>
|
||||||
</mat-tab-group> `,
|
</mat-tab-group> `,
|
||||||
styles: [],
|
styles: [],
|
||||||
imports: [
|
imports: [
|
||||||
MatTabsModule,
|
MatTabsModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
AccountingTourOverviewComponent,
|
AccountingTourOverviewComponent,
|
||||||
AccountingTourTicketComponent,
|
AccountingTourTicketComponent,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class AccountingTourViewComponent {
|
export class AccountingTourViewComponent {
|
||||||
ref: DialogRef<Tour & { ticket: Ticket }, undefined | any> =
|
ref: DialogRef<Tour & { ticket: Ticket }, undefined | any> =
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,9 @@ import { AccountingLaneComponent } from './accounting-lane/accounting-lane.compo
|
||||||
import { AccountingState } from '../../core/data-access/graphql/generated/generated';
|
import { AccountingState } from '../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-dashboard-accounting',
|
selector: 'dks-dashboard-accounting',
|
||||||
standalone: true,
|
imports: [AccountingLaneComponent],
|
||||||
imports: [AccountingLaneComponent],
|
template: `<section class="h-full p-6 grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||||
template: `<section class="h-full p-6 grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
||||||
<div class="col-span-1 md:col-span-5 flex justify-end items-center">
|
<div class="col-span-1 md:col-span-5 flex justify-end items-center">
|
||||||
<!-- Action Buttons -->
|
<!-- Action Buttons -->
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -18,8 +17,8 @@ import { AccountingState } from '../../core/data-access/graphql/generated/genera
|
||||||
></dks-accounting-lane>
|
></dks-accounting-lane>
|
||||||
<dks-accounting-lane [accountingState]="AccountingState.Billed"></dks-accounting-lane>
|
<dks-accounting-lane [accountingState]="AccountingState.Billed"></dks-accounting-lane>
|
||||||
</section>`,
|
</section>`,
|
||||||
styles: [
|
styles: [
|
||||||
`
|
`
|
||||||
:host {
|
:host {
|
||||||
display: block;
|
display: block;
|
||||||
height: calc(100% - 64px);
|
height: calc(100% - 64px);
|
||||||
|
|
@ -28,8 +27,8 @@ import { AccountingState } from '../../core/data-access/graphql/generated/genera
|
||||||
grid-template-rows: 2rem 1fr;
|
grid-template-rows: 2rem 1fr;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush
|
||||||
})
|
})
|
||||||
export class DashboardAccountingComponent {
|
export class DashboardAccountingComponent {
|
||||||
AccountingState = AccountingState;
|
AccountingState = AccountingState;
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,11 @@ interface Anomaly {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-anomaly-list-item',
|
selector: 'dks-anomaly-list-item',
|
||||||
templateUrl: './anomaly-list-item.component.html',
|
templateUrl: './anomaly-list-item.component.html',
|
||||||
styleUrls: ['./anomaly-list-item.component.css'],
|
styleUrls: ['./anomaly-list-item.component.css'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class AnomalyListItemComponent {
|
export class AnomalyListItemComponent {
|
||||||
isHovering = false;
|
isHovering = false;
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,11 @@ import {
|
||||||
import { AnomaliesService } from '../anomalies.service';
|
import { AnomaliesService } from '../anomalies.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-anomaly-list',
|
selector: 'dks-anomaly-list',
|
||||||
templateUrl: './anomaly-list.component.html',
|
templateUrl: './anomaly-list.component.html',
|
||||||
styleUrls: ['./anomaly-list.component.css'],
|
styleUrls: ['./anomaly-list.component.css'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class AnomalyListComponent implements OnInit, OnDestroy {
|
export class AnomalyListComponent implements OnInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator, { static: true }) private paginator!: MatPaginator;
|
@ViewChild(MatPaginator, { static: true }) private paginator!: MatPaginator;
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,10 @@ interface SolutionTarget {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-anomaly-solution-dialog',
|
selector: 'dks-anomaly-solution-dialog',
|
||||||
templateUrl: './anomaly-solution-dialog.component.html',
|
templateUrl: './anomaly-solution-dialog.component.html',
|
||||||
styleUrls: ['./anomaly-solution-dialog.component.css'],
|
styleUrls: ['./anomaly-solution-dialog.component.css'],
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class AnomalySolutionDialogComponent {
|
export class AnomalySolutionDialogComponent {
|
||||||
constructor(
|
constructor(
|
||||||
|
|
|
||||||
|
|
@ -41,10 +41,11 @@ interface AnomalyFlatNode {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-anomaly-tree',
|
selector: 'dks-anomaly-tree',
|
||||||
templateUrl: './anomaly-tree.component.html',
|
templateUrl: './anomaly-tree.component.html',
|
||||||
styleUrls: ['./anomaly-tree.component.css'],
|
styleUrls: ['./anomaly-tree.component.css'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class AnomalyTreeComponent implements OnInit, OnDestroy {
|
export class AnomalyTreeComponent implements OnInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator, { static: true }) private paginator!: MatPaginator;
|
@ViewChild(MatPaginator, { static: true }) private paginator!: MatPaginator;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-control-center-dashboard',
|
selector: 'dks-control-center-dashboard',
|
||||||
templateUrl: './control-center-dashboard.component.html',
|
templateUrl: './control-center-dashboard.component.html',
|
||||||
styleUrls: ['./control-center-dashboard.component.scss'],
|
styleUrls: ['./control-center-dashboard.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class ControlCenterDashboardComponent {}
|
export class ControlCenterDashboardComponent {}
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,11 @@ import {
|
||||||
} from '../../../../core/data-access/graphql/generated/generated';
|
} from '../../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-tours-per-time-kpi',
|
selector: 'dks-tours-per-time-kpi',
|
||||||
templateUrl: './tours-per-time-kpi.component.html',
|
templateUrl: './tours-per-time-kpi.component.html',
|
||||||
styleUrls: ['./tours-per-time-kpi.component.css'],
|
styleUrls: ['./tours-per-time-kpi.component.css'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class ToursPerTimeKPIComponent implements OnInit {
|
export class ToursPerTimeKPIComponent implements OnInit {
|
||||||
@Input() ordinanceType!: string;
|
@Input() ordinanceType!: string;
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,10 @@ import { DialogRef } from '@ngneat/dialog';
|
||||||
import { Tour } from '../../../../core/data-access/graphql/generated/generated';
|
import { Tour } from '../../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-tour-view-dialog',
|
selector: 'dks-tour-view-dialog',
|
||||||
templateUrl: './tour-view-dialog.component.html',
|
templateUrl: './tour-view-dialog.component.html',
|
||||||
styleUrls: ['./tour-view-dialog.component.css'],
|
styleUrls: ['./tour-view-dialog.component.css'],
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class TourViewDialogComponent {
|
export class TourViewDialogComponent {
|
||||||
ref = inject<DialogRef<Partial<Tour>>>(DialogRef);
|
ref = inject<DialogRef<Partial<Tour>>>(DialogRef);
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,11 @@ import { TourViewDialogComponent } from './tour-view-dialog/tour-view-dialog.com
|
||||||
import { Tour } from '../../../core/data-access/graphql/generated/generated';
|
import { Tour } from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-upcoming-tours',
|
selector: 'dks-upcoming-tours',
|
||||||
templateUrl: './upcoming-tours.component.html',
|
templateUrl: './upcoming-tours.component.html',
|
||||||
styleUrls: ['./upcoming-tours.component.css'],
|
styleUrls: ['./upcoming-tours.component.css'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class UpcomingToursComponent {
|
export class UpcomingToursComponent {
|
||||||
upcomingTours$;
|
upcomingTours$;
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,10 @@ import { UtilNgxEchartsModule } from '../../../../core/components/ngx-echarts/ut
|
||||||
import { TimePerTourMetric } from '../../../../core/data-access/graphql/generated/generated';
|
import { TimePerTourMetric } from '../../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-average-revenue-metric',
|
selector: 'dks-average-revenue-metric',
|
||||||
standalone: true,
|
imports: [CommonModule, UtilNgxEchartsModule],
|
||||||
imports: [CommonModule, UtilNgxEchartsModule],
|
templateUrl: './average-revenue-metric.component.html',
|
||||||
templateUrl: './average-revenue-metric.component.html',
|
styleUrls: ['./average-revenue-metric.component.css']
|
||||||
styleUrls: ['./average-revenue-metric.component.css'],
|
|
||||||
})
|
})
|
||||||
export class AverageRevenueMetricComponent implements OnChanges {
|
export class AverageRevenueMetricComponent implements OnChanges {
|
||||||
@Input() metrics: TimePerTourMetric[] = [];
|
@Input() metrics: TimePerTourMetric[] = [];
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,10 @@ import { TimePerTourMetric } from '../../../../core/data-access/graphql/generate
|
||||||
import { summarizeMetrics } from '../../util/summarize-metrics';
|
import { summarizeMetrics } from '../../util/summarize-metrics';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-average-revenue-summary',
|
selector: 'dks-average-revenue-summary',
|
||||||
standalone: true,
|
imports: [CommonModule, MatIconModule],
|
||||||
imports: [CommonModule, MatIconModule],
|
templateUrl: './average-revenue-summary.component.html',
|
||||||
templateUrl: './average-revenue-summary.component.html',
|
styleUrls: ['./average-revenue-summary.component.css']
|
||||||
styleUrls: ['./average-revenue-summary.component.css'],
|
|
||||||
})
|
})
|
||||||
export class AverageRevenueSummaryComponent {
|
export class AverageRevenueSummaryComponent {
|
||||||
@Input() set metrics(value: TimePerTourMetric[]) {
|
@Input() set metrics(value: TimePerTourMetric[]) {
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,10 @@ import { TimePerTourMetric } from '../../../../core/data-access/graphql/generate
|
||||||
import { MetricTimeScale } from '../../types';
|
import { MetricTimeScale } from '../../types';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-breakeven-metric',
|
selector: 'dks-breakeven-metric',
|
||||||
standalone: true,
|
imports: [CommonModule, UtilNgxEchartsModule],
|
||||||
imports: [CommonModule, UtilNgxEchartsModule],
|
templateUrl: './breakeven-metric.component.html',
|
||||||
templateUrl: './breakeven-metric.component.html',
|
styleUrls: ['./breakeven-metric.component.css']
|
||||||
styleUrls: ['./breakeven-metric.component.css'],
|
|
||||||
})
|
})
|
||||||
export class BreakevenMetricComponent implements OnChanges {
|
export class BreakevenMetricComponent implements OnChanges {
|
||||||
@Input() metrics: TimePerTourMetric[] = [];
|
@Input() metrics: TimePerTourMetric[] = [];
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,10 @@ import { TimePerTourMetric } from '../../../../core/data-access/graphql/generate
|
||||||
import { summarizeMetrics } from '../../util/summarize-metrics';
|
import { summarizeMetrics } from '../../util/summarize-metrics';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-breakeven-summary',
|
selector: 'dks-breakeven-summary',
|
||||||
standalone: true,
|
imports: [CommonModule, MatIconModule],
|
||||||
imports: [CommonModule, MatIconModule],
|
templateUrl: './breakeven-summary.component.html',
|
||||||
templateUrl: './breakeven-summary.component.html',
|
styleUrls: ['./breakeven-summary.component.css']
|
||||||
styleUrls: ['./breakeven-summary.component.css'],
|
|
||||||
})
|
})
|
||||||
export class BreakevenSummaryComponent {
|
export class BreakevenSummaryComponent {
|
||||||
@Input() set metrics(value: TimePerTourMetric[]) {
|
@Input() set metrics(value: TimePerTourMetric[]) {
|
||||||
|
|
|
||||||
|
|
@ -12,20 +12,19 @@ import { TimePerTourMetricComponent } from '../time-per-tour-metric/time-per-tou
|
||||||
import { TimePerTourSummaryComponent } from '../time-per-tour-summary/time-per-tour-summary.component';
|
import { TimePerTourSummaryComponent } from '../time-per-tour-summary/time-per-tour-summary.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-metric-summary',
|
selector: 'dks-metric-summary',
|
||||||
standalone: true,
|
imports: [
|
||||||
imports: [
|
CommonModule,
|
||||||
CommonModule,
|
AverageRevenueMetricComponent,
|
||||||
AverageRevenueMetricComponent,
|
AverageRevenueSummaryComponent,
|
||||||
AverageRevenueSummaryComponent,
|
BreakevenMetricComponent,
|
||||||
BreakevenMetricComponent,
|
BreakevenSummaryComponent,
|
||||||
BreakevenSummaryComponent,
|
TimePerTourMetricComponent,
|
||||||
TimePerTourMetricComponent,
|
TimePerTourSummaryComponent,
|
||||||
TimePerTourSummaryComponent,
|
MatSlideToggleModule,
|
||||||
MatSlideToggleModule,
|
],
|
||||||
],
|
templateUrl: './metric-summary.component.html',
|
||||||
templateUrl: './metric-summary.component.html',
|
styleUrls: ['./metric-summary.component.css']
|
||||||
styleUrls: ['./metric-summary.component.css'],
|
|
||||||
})
|
})
|
||||||
export class MetricSummaryComponent {
|
export class MetricSummaryComponent {
|
||||||
@Input() set metrics(metrics: TimePerTourMetric[]) {
|
@Input() set metrics(metrics: TimePerTourMetric[]) {
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,10 @@ import { TimePerTourMetric } from '../../../../core/data-access/graphql/generate
|
||||||
import { MetricTimeScale } from '../../types';
|
import { MetricTimeScale } from '../../types';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-time-per-tour-metric',
|
selector: 'dks-time-per-tour-metric',
|
||||||
standalone: true,
|
imports: [CommonModule, UtilNgxEchartsModule],
|
||||||
imports: [CommonModule, UtilNgxEchartsModule],
|
templateUrl: './time-per-tour-metric.component.html',
|
||||||
templateUrl: './time-per-tour-metric.component.html',
|
styleUrls: ['./time-per-tour-metric.component.css']
|
||||||
styleUrls: ['./time-per-tour-metric.component.css'],
|
|
||||||
})
|
})
|
||||||
export class TimePerTourMetricComponent implements OnChanges {
|
export class TimePerTourMetricComponent implements OnChanges {
|
||||||
@Input() metrics: TimePerTourMetric[] = [];
|
@Input() metrics: TimePerTourMetric[] = [];
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,10 @@ import { summarizeMetrics } from '../../util/summarize-metrics';
|
||||||
import { TimePerTourMetric } from '../../../../core/data-access/graphql/generated/generated';
|
import { TimePerTourMetric } from '../../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-time-per-tour-summary',
|
selector: 'dks-time-per-tour-summary',
|
||||||
standalone: true,
|
imports: [CommonModule, MatIconModule],
|
||||||
imports: [CommonModule, MatIconModule],
|
templateUrl: './time-per-tour-summary.component.html',
|
||||||
templateUrl: './time-per-tour-summary.component.html',
|
styleUrls: ['./time-per-tour-summary.component.css']
|
||||||
styleUrls: ['./time-per-tour-summary.component.css'],
|
|
||||||
})
|
})
|
||||||
export class TimePerTourSummaryComponent {
|
export class TimePerTourSummaryComponent {
|
||||||
@Input() set metrics(value: TimePerTourMetric[]) {
|
@Input() set metrics(value: TimePerTourMetric[]) {
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,10 @@ import { summarizeMetrics } from '../../util/summarize-metrics';
|
||||||
import { TimePerTourMetric } from '../../../../core/data-access/graphql/generated/generated';
|
import { TimePerTourMetric } from '../../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-view-type-selector',
|
selector: 'dks-view-type-selector',
|
||||||
standalone: true,
|
imports: [NgIf, NgSwitch, NgSwitchCase, NgClass, AsyncPipe, CurrencyPipe, MatIconModule],
|
||||||
imports: [NgIf, NgSwitch, NgSwitchCase, NgClass, AsyncPipe, CurrencyPipe, MatIconModule],
|
templateUrl: './view-type-selector.component.html',
|
||||||
templateUrl: './view-type-selector.component.html',
|
styleUrls: ['./view-type-selector.component.css']
|
||||||
styleUrls: ['./view-type-selector.component.css'],
|
|
||||||
})
|
})
|
||||||
export class ViewTypeSelectorComponent {
|
export class ViewTypeSelectorComponent {
|
||||||
@Input() viewType!: DashboardViewType;
|
@Input() viewType!: DashboardViewType;
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,10 @@ import {
|
||||||
import { mergeMetrics } from '../util/merge-metric';
|
import { mergeMetrics } from '../util/merge-metric';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-dayview',
|
selector: 'dks-dayview',
|
||||||
templateUrl: './dayview.component.html',
|
templateUrl: './dayview.component.html',
|
||||||
styleUrls: ['./dayview.component.css'],
|
styleUrls: ['./dayview.component.css'],
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class DayviewComponent {
|
export class DayviewComponent {
|
||||||
OrdinanceTypes = OrdinanceTypes;
|
OrdinanceTypes = OrdinanceTypes;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-manager-dashboard',
|
selector: 'dks-manager-dashboard',
|
||||||
templateUrl: './manager-dashboard.component.html',
|
templateUrl: './manager-dashboard.component.html',
|
||||||
styleUrls: ['./manager-dashboard.component.css'],
|
styleUrls: ['./manager-dashboard.component.css'],
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class ManagerDashboardComponent {
|
export class ManagerDashboardComponent {
|
||||||
tabs: { title: string; route: string }[] = [
|
tabs: { title: string; route: string }[] = [
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,10 @@ import {
|
||||||
import { mergeMetrics } from '../util/merge-metric';
|
import { mergeMetrics } from '../util/merge-metric';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-monthview',
|
selector: 'dks-monthview',
|
||||||
templateUrl: './monthview.component.html',
|
templateUrl: './monthview.component.html',
|
||||||
styleUrls: ['./monthview.component.css'],
|
styleUrls: ['./monthview.component.css'],
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class MonthviewComponent {
|
export class MonthviewComponent {
|
||||||
OrdinanceTypes = OrdinanceTypes;
|
OrdinanceTypes = OrdinanceTypes;
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,10 @@ import { ManagerDashboardService } from '../manager-dashboard.service';
|
||||||
import { OrdinanceTypes } from '../types';
|
import { OrdinanceTypes } from '../types';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-overview',
|
selector: 'dks-overview',
|
||||||
templateUrl: './overview.component.html',
|
templateUrl: './overview.component.html',
|
||||||
styleUrls: ['./overview.component.css'],
|
styleUrls: ['./overview.component.css'],
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class OverviewComponent {
|
export class OverviewComponent {
|
||||||
OrdinanceTypes = OrdinanceTypes;
|
OrdinanceTypes = OrdinanceTypes;
|
||||||
|
|
|
||||||
|
|
@ -8,19 +8,17 @@ import {
|
||||||
import { Component, Input, OnChanges, OnInit } from '@angular/core';
|
import { Component, Input, OnChanges, OnInit } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-time-per-tour-by-car',
|
selector: 'dks-time-per-tour-by-car',
|
||||||
templateUrl: './time-per-tour-by-car.component.html',
|
templateUrl: './time-per-tour-by-car.component.html',
|
||||||
styleUrls: ['./time-per-tour-by-car.component.css'],
|
styleUrls: ['./time-per-tour-by-car.component.css'],
|
||||||
animations: [
|
animations: [
|
||||||
trigger('detailExpand', [
|
trigger('detailExpand', [
|
||||||
state('collapsed', style({ height: '0px', minHeight: '0' })),
|
state('collapsed', style({ height: '0px', minHeight: '0' })),
|
||||||
state('expanded', style({ height: '*' })),
|
state('expanded', style({ height: '*' })),
|
||||||
transition(
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
||||||
'expanded <=> collapsed',
|
]),
|
||||||
animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')
|
],
|
||||||
),
|
standalone: false
|
||||||
]),
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
export class TimePerTourByCarComponent implements OnInit, OnChanges {
|
export class TimePerTourByCarComponent implements OnInit, OnChanges {
|
||||||
@Input() columns: { id: string; title: string }[] = [];
|
@Input() columns: { id: string; title: string }[] = [];
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,10 @@ import { Interval, isWithinInterval } from 'date-fns';
|
||||||
import { interval, map, startWith } from 'rxjs';
|
import { interval, map, startWith } from 'rxjs';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'dks-time-per-tour-kpi',
|
selector: 'dks-time-per-tour-kpi',
|
||||||
templateUrl: './time-per-tour-kpi.component.html',
|
templateUrl: './time-per-tour-kpi.component.html',
|
||||||
styleUrls: ['./time-per-tour-kpi.component.css'],
|
styleUrls: ['./time-per-tour-kpi.component.css'],
|
||||||
|
standalone: false
|
||||||
})
|
})
|
||||||
export class TimePerTourKPIComponent {
|
export class TimePerTourKPIComponent {
|
||||||
@Input() text = '';
|
@Input() text = '';
|
||||||
|
|
|
||||||
|
|
@ -18,18 +18,17 @@ import {
|
||||||
import CategoryColors from './category-colors';
|
import CategoryColors from './category-colors';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-item',
|
||||||
selector: 'dks-ticket-item',
|
templateUrl: './ticket-item.component.html',
|
||||||
templateUrl: './ticket-item.component.html',
|
styles: [
|
||||||
styles: [
|
`
|
||||||
`
|
|
||||||
:host {
|
:host {
|
||||||
@apply flex flex-col rounded border-l-2 border-r-8 p-2 m-2 bg-white cursor-pointer;
|
@apply flex flex-col rounded border-l-2 border-r-8 p-2 m-2 bg-white cursor-pointer;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [MatIconModule, MatBadgeModule, NgIf],
|
imports: [MatIconModule, MatBadgeModule, NgIf]
|
||||||
})
|
})
|
||||||
export class TicketItemComponent implements OnInit {
|
export class TicketItemComponent implements OnInit {
|
||||||
@Input() ticket!: Ticket & { tours: Tour[] };
|
@Input() ticket!: Ticket & { tours: Tour[] };
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,9 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
||||||
import { TicketStateMeta } from '../../../core/data-access/graphql/generated/generated';
|
import { TicketStateMeta } from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-lane-footer',
|
||||||
selector: 'dks-ticket-lane-footer',
|
template: `<span *ngIf="withTicketCount" class="text-left text-xs">
|
||||||
template: `<span *ngIf="withTicketCount" class="text-left text-xs">
|
|
||||||
{{ ticketStateMeta.count }} Tickets
|
{{ ticketStateMeta.count }} Tickets
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="withApprovalRequiredCount" class="text-left text-xs">
|
<span *ngIf="withApprovalRequiredCount" class="text-left text-xs">
|
||||||
|
|
@ -22,14 +21,14 @@ import { TicketStateMeta } from '../../../core/data-access/graphql/generated/gen
|
||||||
<span *ngIf="withTdNotCompanyCount" class="text-left text-xs">
|
<span *ngIf="withTdNotCompanyCount" class="text-left text-xs">
|
||||||
{{ ticketStateMeta.tdNotCompanyCount }} davon fehlender Transportschein
|
{{ ticketStateMeta.tdNotCompanyCount }} davon fehlender Transportschein
|
||||||
</span> `,
|
</span> `,
|
||||||
styles: [
|
styles: [
|
||||||
`
|
`
|
||||||
:host {
|
:host {
|
||||||
@apply flex flex-col items-center justify-center p-2;
|
@apply flex flex-col items-center justify-center p-2;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [NgIf, AsyncPipe, CurrencyPipe],
|
imports: [NgIf, AsyncPipe, CurrencyPipe]
|
||||||
})
|
})
|
||||||
export class TicketLaneFooterComponent {
|
export class TicketLaneFooterComponent {
|
||||||
@Input() ticketStateMeta!: TicketStateMeta;
|
@Input() ticketStateMeta!: TicketStateMeta;
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,9 @@ import {
|
||||||
} from '../../../core/data-access/graphql/generated/generated';
|
} from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-lane-header-filter',
|
||||||
selector: 'dks-ticket-lane-header-filter',
|
template: `
|
||||||
template: `
|
|
||||||
<ng-container [ngSwitch]="state">
|
<ng-container [ngSwitch]="state">
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
|
|
@ -100,17 +99,17 @@ import {
|
||||||
</mat-menu>
|
</mat-menu>
|
||||||
</form>
|
</form>
|
||||||
`,
|
`,
|
||||||
styles: [],
|
styles: [],
|
||||||
imports: [
|
imports: [
|
||||||
NgSwitch,
|
NgSwitch,
|
||||||
NgSwitchCase,
|
NgSwitchCase,
|
||||||
NgFor,
|
NgFor,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatMenuModule,
|
MatMenuModule,
|
||||||
MatCheckboxModule,
|
MatCheckboxModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketLaneHeaderFilterComponent implements AfterViewInit {
|
export class TicketLaneHeaderFilterComponent implements AfterViewInit {
|
||||||
@Input() state!: TicketValidationState;
|
@Input() state!: TicketValidationState;
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,9 @@ import {
|
||||||
import { TicketLaneHeaderFilterComponent } from './ticket-lane-header-filter.component';
|
import { TicketLaneHeaderFilterComponent } from './ticket-lane-header-filter.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-lane-header',
|
||||||
selector: 'dks-ticket-lane-header',
|
template: `<div></div>
|
||||||
template: `<div></div>
|
|
||||||
<ng-container [ngSwitch]="state">
|
<ng-container [ngSwitch]="state">
|
||||||
<div *ngSwitchCase="TicketValidationState.Created">Touren angenommen</div>
|
<div *ngSwitchCase="TicketValidationState.Created">Touren angenommen</div>
|
||||||
<div *ngSwitchCase="TicketValidationState.UserInteractionRequired">
|
<div *ngSwitchCase="TicketValidationState.UserInteractionRequired">
|
||||||
|
|
@ -34,14 +33,14 @@ import { TicketLaneHeaderFilterComponent } from './ticket-lane-header-filter.com
|
||||||
[state]="state"
|
[state]="state"
|
||||||
(filterChange)="filterChanged($event)"
|
(filterChange)="filterChanged($event)"
|
||||||
></dks-ticket-lane-header-filter>`,
|
></dks-ticket-lane-header-filter>`,
|
||||||
styles: [
|
styles: [
|
||||||
`
|
`
|
||||||
:host {
|
:host {
|
||||||
@apply flex items-center justify-between p-2 bg-gray-50;
|
@apply flex items-center justify-between p-2 bg-gray-50;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [NgSwitch, NgSwitchCase, TicketLaneHeaderFilterComponent],
|
imports: [NgSwitch, NgSwitchCase, TicketLaneHeaderFilterComponent]
|
||||||
})
|
})
|
||||||
export class TicketLaneHeaderComponent {
|
export class TicketLaneHeaderComponent {
|
||||||
@Input() state!: TicketValidationState;
|
@Input() state!: TicketValidationState;
|
||||||
|
|
|
||||||
|
|
@ -37,29 +37,28 @@ import { TicketLaneFooterComponent } from './ticket-lane-footer.component';
|
||||||
import { TicketLaneHeaderComponent } from './ticket-lane-header.component';
|
import { TicketLaneHeaderComponent } from './ticket-lane-header.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-lane',
|
||||||
selector: 'dks-ticket-lane',
|
templateUrl: './ticket-lane.component.html',
|
||||||
templateUrl: './ticket-lane.component.html',
|
styles: [
|
||||||
styles: [
|
`
|
||||||
`
|
|
||||||
:host {
|
:host {
|
||||||
@apply rounded bg-gray-200 h-full w-full grid;
|
@apply rounded bg-gray-200 h-full w-full grid;
|
||||||
grid-template-rows: auto 1fr auto;
|
grid-template-rows: auto 1fr auto;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
TicketLaneHeaderComponent,
|
TicketLaneHeaderComponent,
|
||||||
TicketLaneFooterComponent,
|
TicketLaneFooterComponent,
|
||||||
TicketItemComponent,
|
TicketItemComponent,
|
||||||
TicketViewComponent,
|
TicketViewComponent,
|
||||||
NgIf,
|
NgIf,
|
||||||
NgFor,
|
NgFor,
|
||||||
AsyncPipe,
|
AsyncPipe,
|
||||||
RoleDirective,
|
RoleDirective,
|
||||||
ScrollingModule,
|
ScrollingModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketLaneComponent {
|
export class TicketLaneComponent {
|
||||||
private dialog = inject(DialogService);
|
private dialog = inject(DialogService);
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,9 @@ import {
|
||||||
} from '../../../core/data-access/graphql/generated/generated';
|
} from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-documents-missing',
|
||||||
selector: 'dks-ticket-documents-missing',
|
template: `<div class="flex items-center p-3">
|
||||||
template: `<div class="flex items-center p-3">
|
|
||||||
<form #form="ngForm" class="flex flex-col w-full">
|
<form #form="ngForm" class="flex flex-col w-full">
|
||||||
<div class="flex justify-end pt-4">
|
<div class="flex justify-end pt-4">
|
||||||
<button mat-stroked-button class="mr-2" (click)="form.resetForm()">
|
<button mat-stroked-button class="mr-2" (click)="form.resetForm()">
|
||||||
|
|
@ -54,15 +53,15 @@ import {
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>`,
|
</div>`,
|
||||||
imports: [
|
imports: [
|
||||||
NgIf,
|
NgIf,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatFormFieldModule,
|
MatFormFieldModule,
|
||||||
MatRadioModule,
|
MatRadioModule,
|
||||||
MatCheckboxModule,
|
MatCheckboxModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketDocumentsMissingComponent {
|
export class TicketDocumentsMissingComponent {
|
||||||
@Input() ticket!: Ticket & { tours: Tour[] };
|
@Input() ticket!: Ticket & { tours: Tour[] };
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,9 @@ import {
|
||||||
} from '../../../core/data-access/graphql/generated/generated';
|
} from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-overview',
|
||||||
selector: 'dks-ticket-overview',
|
template: `<div class="grid grid-cols-4">
|
||||||
template: `<div class="grid grid-cols-4">
|
|
||||||
<mat-list class="col-span-2" role="list">
|
<mat-list class="col-span-2" role="list">
|
||||||
<div mat-subheader class="text-sm">Ticket Informationen</div>
|
<div mat-subheader class="text-sm">Ticket Informationen</div>
|
||||||
<mat-list-item role="listitem">
|
<mat-list-item role="listitem">
|
||||||
|
|
@ -84,15 +83,15 @@ import {
|
||||||
</mat-list-item>
|
</mat-list-item>
|
||||||
</mat-list>
|
</mat-list>
|
||||||
</div>`,
|
</div>`,
|
||||||
imports: [
|
imports: [
|
||||||
MatListModule,
|
MatListModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
NgClass,
|
NgClass,
|
||||||
NgIf,
|
NgIf,
|
||||||
NgForOf,
|
NgForOf,
|
||||||
NgSwitch,
|
NgSwitch,
|
||||||
NgSwitchCase,
|
NgSwitchCase,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketOverviewComponent {
|
export class TicketOverviewComponent {
|
||||||
@Input() ticket!: Ticket & { tours: Tour[] };
|
@Input() ticket!: Ticket & { tours: Tour[] };
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,9 @@ import {
|
||||||
} from '../../../core/data-access/graphql/generated/generated';
|
} from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-td-uncertain',
|
||||||
selector: 'dks-ticket-td-uncertain',
|
template: `<div class="flex flex-col p-3">
|
||||||
template: `<div class="flex flex-col p-3">
|
|
||||||
<form #form="ngForm" class="flex flex-col w-full">
|
<form #form="ngForm" class="flex flex-col w-full">
|
||||||
<div class="flex justify-end pt-4">
|
<div class="flex justify-end pt-4">
|
||||||
<button mat-stroked-button class="mr-2" (click)="form.resetForm()">
|
<button mat-stroked-button class="mr-2" (click)="form.resetForm()">
|
||||||
|
|
@ -52,14 +51,14 @@ import {
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>`,
|
</div>`,
|
||||||
imports: [
|
imports: [
|
||||||
NgIf,
|
NgIf,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatFormFieldModule,
|
MatFormFieldModule,
|
||||||
MatRadioModule,
|
MatRadioModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketTdUncertainComponent {
|
export class TicketTdUncertainComponent {
|
||||||
@Input() ticket!: Ticket & { tours: Tour[] };
|
@Input() ticket!: Ticket & { tours: Tour[] };
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,9 @@ import {
|
||||||
} from '../../../core/data-access/graphql/generated/generated';
|
} from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-tours',
|
||||||
selector: 'dks-ticket-tours',
|
template: ` <div class="max-h-96 overflow-y-auto">
|
||||||
template: ` <div class="max-h-96 overflow-y-auto">
|
|
||||||
<table mat-table [dataSource]="dataSource" class="w-full">
|
<table mat-table [dataSource]="dataSource" class="w-full">
|
||||||
<ng-container matColumnDef="select">
|
<ng-container matColumnDef="select">
|
||||||
<th mat-header-cell *matHeaderCellDef>
|
<th mat-header-cell *matHeaderCellDef>
|
||||||
|
|
@ -79,15 +78,15 @@ import {
|
||||||
></tr>
|
></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>`,
|
</div>`,
|
||||||
imports: [
|
imports: [
|
||||||
NgIf,
|
NgIf,
|
||||||
NgClass,
|
NgClass,
|
||||||
DatePipe,
|
DatePipe,
|
||||||
RoleDirective,
|
RoleDirective,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatCheckboxModule,
|
MatCheckboxModule,
|
||||||
MatTableModule,
|
MatTableModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketToursComponent implements OnInit {
|
export class TicketToursComponent implements OnInit {
|
||||||
@Input() ticket!: Ticket & { tours: Tour[] };
|
@Input() ticket!: Ticket & { tours: Tour[] };
|
||||||
|
|
|
||||||
|
|
@ -22,10 +22,9 @@ import {
|
||||||
} from '../../../core/data-access/graphql/generated/generated';
|
} from '../../../core/data-access/graphql/generated/generated';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-user-action-required',
|
||||||
selector: 'dks-ticket-user-action-required',
|
template: `<div class="flex flex-col p-3">
|
||||||
template: `<div class="flex flex-col p-3">
|
|
||||||
<form #form="ngForm" class="flex flex-col w-full">
|
<form #form="ngForm" class="flex flex-col w-full">
|
||||||
<div class="flex justify-end pt-4">
|
<div class="flex justify-end pt-4">
|
||||||
<button mat-stroked-button class="mr-2" (click)="form.resetForm()">
|
<button mat-stroked-button class="mr-2" (click)="form.resetForm()">
|
||||||
|
|
@ -100,15 +99,15 @@ import {
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>`,
|
</div>`,
|
||||||
imports: [
|
imports: [
|
||||||
NgIf,
|
NgIf,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatFormFieldModule,
|
MatFormFieldModule,
|
||||||
MatRadioModule,
|
MatRadioModule,
|
||||||
MatInputModule,
|
MatInputModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketUserActionRequiredComponent implements OnInit {
|
export class TicketUserActionRequiredComponent implements OnInit {
|
||||||
@Input() ticket!: Ticket & { tours: Tour[] };
|
@Input() ticket!: Ticket & { tours: Tour[] };
|
||||||
|
|
|
||||||
|
|
@ -19,22 +19,21 @@ import { TicketToursComponent } from './ticket-tours.component';
|
||||||
import { TicketUserActionRequiredComponent } from './ticket-user-action-required.component';
|
import { TicketUserActionRequiredComponent } from './ticket-user-action-required.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-ticket-view',
|
||||||
selector: 'dks-ticket-view',
|
templateUrl: './ticket-view.component.html',
|
||||||
templateUrl: './ticket-view.component.html',
|
imports: [
|
||||||
imports: [
|
MatTabsModule,
|
||||||
MatTabsModule,
|
MatIconModule,
|
||||||
MatIconModule,
|
TicketOverviewComponent,
|
||||||
TicketOverviewComponent,
|
TicketToursComponent,
|
||||||
TicketToursComponent,
|
TicketUserActionRequiredComponent,
|
||||||
TicketUserActionRequiredComponent,
|
TicketTdUncertainComponent,
|
||||||
TicketTdUncertainComponent,
|
TicketDocumentsMissingComponent,
|
||||||
TicketDocumentsMissingComponent,
|
NgIf,
|
||||||
NgIf,
|
NgSwitch,
|
||||||
NgSwitch,
|
NgSwitchCase,
|
||||||
NgSwitchCase,
|
]
|
||||||
],
|
|
||||||
})
|
})
|
||||||
export class TicketViewComponent {
|
export class TicketViewComponent {
|
||||||
private ticketsService = inject(TicketsService);
|
private ticketsService = inject(TicketsService);
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,9 @@ import { TicketLaneComponent } from './ticket-lane/ticket-lane.component';
|
||||||
import { TicketsSearchDialogComponent } from './tickets-search-dialog/tickets-search-dialog.component';
|
import { TicketsSearchDialogComponent } from './tickets-search-dialog/tickets-search-dialog.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
selector: 'dks-tickets-page',
|
||||||
selector: 'dks-tickets-page',
|
template: `<section class="h-full p-6 grid grid-cols-1 md:grid-cols-4 gap-6">
|
||||||
template: `<section class="h-full p-6 grid grid-cols-1 md:grid-cols-4 gap-6">
|
|
||||||
<div class="col-span-1 md:col-span-4 flex justify-end items-center">
|
<div class="col-span-1 md:col-span-4 flex justify-end items-center">
|
||||||
<button mat-icon-button (click)="showSearchDialog()">
|
<button mat-icon-button (click)="showSearchDialog()">
|
||||||
<mat-icon>search</mat-icon>
|
<mat-icon>search</mat-icon>
|
||||||
|
|
@ -39,8 +38,8 @@ import { TicketsSearchDialogComponent } from './tickets-search-dialog/tickets-se
|
||||||
[ticketState]="TicketState.Archived"
|
[ticketState]="TicketState.Archived"
|
||||||
></dks-ticket-lane> -->
|
></dks-ticket-lane> -->
|
||||||
</section>`,
|
</section>`,
|
||||||
styles: [
|
styles: [
|
||||||
`
|
`
|
||||||
:host {
|
:host {
|
||||||
display: block;
|
display: block;
|
||||||
height: calc(100% - 64px);
|
height: calc(100% - 64px);
|
||||||
|
|
@ -49,14 +48,14 @@ import { TicketsSearchDialogComponent } from './tickets-search-dialog/tickets-se
|
||||||
grid-template-rows: 2rem 1fr;
|
grid-template-rows: 2rem 1fr;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
TicketLaneComponent,
|
TicketLaneComponent,
|
||||||
TicketsSearchDialogComponent,
|
TicketsSearchDialogComponent,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
RoleDirective,
|
RoleDirective,
|
||||||
],
|
]
|
||||||
})
|
})
|
||||||
export class TicketsPageComponent {
|
export class TicketsPageComponent {
|
||||||
private dialog = inject(DialogService);
|
private dialog = inject(DialogService);
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,7 @@ import { TicketViewComponent } from '../ticket-view/ticket-view.component';
|
||||||
import { TicketsService } from '../tickets.service';
|
import { TicketsService } from '../tickets.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
standalone: true,
|
template: `<div class="flex flex-col items-center justify-start p-4">
|
||||||
template: `<div class="flex flex-col items-center justify-start p-4">
|
|
||||||
<div class="text-lg font-bold pb-2">Ticket suchen</div>
|
<div class="text-lg font-bold pb-2">Ticket suchen</div>
|
||||||
<hr />
|
<hr />
|
||||||
<mat-form-field class="w-full">
|
<mat-form-field class="w-full">
|
||||||
|
|
@ -57,16 +56,16 @@ import { TicketsService } from '../tickets.service';
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>`,
|
</div>`,
|
||||||
imports: [
|
imports: [
|
||||||
TicketViewComponent,
|
TicketViewComponent,
|
||||||
MatFormFieldModule,
|
MatFormFieldModule,
|
||||||
MatInputModule,
|
MatInputModule,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
AsyncPipe,
|
AsyncPipe,
|
||||||
NgFor,
|
NgFor,
|
||||||
NgIf,
|
NgIf,
|
||||||
],
|
],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush
|
||||||
})
|
})
|
||||||
export class TicketsSearchDialogComponent {
|
export class TicketsSearchDialogComponent {
|
||||||
private ticketsService = inject(TicketsService);
|
private ticketsService = inject(TicketsService);
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,7 @@
|
||||||
"ES2022",
|
"ES2022",
|
||||||
"dom",
|
"dom",
|
||||||
"esnext.asynciterable"
|
"esnext.asynciterable"
|
||||||
],
|
]
|
||||||
"allowSyntheticDefaultImports": true
|
|
||||||
},
|
},
|
||||||
"angularCompilerOptions": {
|
"angularCompilerOptions": {
|
||||||
"enableI18nLegacyMessageIdFormat": false,
|
"enableI18nLegacyMessageIdFormat": false,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue