| @@ -1,19 +1,24 @@ | |||||
| <div class="mb-3"> | |||||
| <label [for]="fieldId" class="form-label">{{ label }}:</label> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label [for]="fieldId" class="form-label">{{ label }}:</label> | |||||
| <!-- File-Input ist deaktiviert, wenn ein Bild existiert und nicht zum Löschen markiert ist --> | |||||
| <input type="file" class="form-control" [id]="fieldId" | |||||
| [disabled]="disabled || (imageUrl && showImage)" | |||||
| (change)="onFileSelected($event)"/> | |||||
| <!-- File-Input ist deaktiviert, wenn ein Bild existiert und nicht zum Löschen markiert ist --> | |||||
| <input type="file" class="form-control" [id]="fieldId" | |||||
| [disabled]="disabled || (imageUrl && showImage)" | |||||
| (change)="onFileSelected($event)"/> | |||||
| @if (selectedFile) { | |||||
| <small class="text-muted">{{ selectedFile.name }}</small> | |||||
| } | |||||
| @if (selectedFile) { | |||||
| <small class="text-muted">{{ selectedFile.name }}</small> | |||||
| } | |||||
| </div> | |||||
| @if (imageUrl && showImage) { | @if (imageUrl && showImage) { | ||||
| <div class="mt-1 d-flex align-items-start gap-2"> | |||||
| <img [src]="imageUrl" [alt]="label" class="img-fluid" /> | |||||
| <button type="button" class="btn btn-sm btn-danger" (click)="deleteImage()">X</button> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <span class="form-label"> </span> | |||||
| <div class="image-display"> | |||||
| <img [src]="imageUrl" [alt]="label" class="img-fluid" /> | |||||
| <button type="button" class="btn btn-sm btn-danger" (click)="deleteImage()">X</button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| } | } | ||||
| </div> | </div> | ||||
| @@ -295,7 +295,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy { | |||||
| if (elementValue !== undefined && elementValue !== null) { | if (elementValue !== undefined && elementValue !== null) { | ||||
| return elementValue; | return elementValue; | ||||
| } | } | ||||
| return "/assets/images/icons/dummy-product.png" | |||||
| return "/assets/images/icons/dummy-person.png" | |||||
| } | } | ||||
| @@ -4,63 +4,63 @@ | |||||
| </div> | </div> | ||||
| <div class="spt-form"> | <div class="spt-form"> | ||||
| <form [formGroup]="locationForm" (ngSubmit)="onSubmit()"> | <form [formGroup]="locationForm" (ngSubmit)="onSubmit()"> | ||||
| <div class="mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" class="form-control" id="name" formControlName="name" required/> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" class="form-control" id="name" formControlName="name" required/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="code" class="form-label">{{ 'common.code' | translate }}*:</label> | |||||
| <input type="text" class="form-control" id="code" formControlName="code" required/> | |||||
| </div> | |||||
| <div class="col-12 mb-3"> | |||||
| <label for="zoneIri" class="form-label">{{ 'model.zone' | translate }}:</label> | |||||
| <app-search-select #zoneSearchSelect | |||||
| [formId]="'zoneIri'" | |||||
| [formLabelLangKey]="'model.zone'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getZones" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="zoneColDefinitions" | |||||
| [dataSet]="data?.zone" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="zoneIri" type="hidden" formControlName="zoneIri"/> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'location.is_zone' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isZone"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'location.is_place' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isPlace"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'location.is_port' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isPort"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <div class="mb-3"> | |||||
| <label for="code" class="form-label">{{ 'common.code' | translate }}*:</label> | |||||
| <input type="text" class="form-control" id="code" formControlName="code" required/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="zoneIri" class="form-label">{{ 'model.zone' | translate }}:</label> | |||||
| <app-search-select #zoneSearchSelect | |||||
| [formId]="'zoneIri'" | |||||
| [formLabelLangKey]="'model.zone'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getZones" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="zoneColDefinitions" | |||||
| [dataSet]="data?.zone" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="zoneIri" type="hidden" formControlName="zoneIri"/> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'location.is_zone' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isZone"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'location.is_place' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isPlace"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'location.is_port' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isPort"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| <div class="flex gap-2"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.location' | translate }} | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | </button> | ||||
| } | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.location' | translate }} | |||||
| </button> | |||||
| } | |||||
| </div> | |||||
| </div> | </div> | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| @@ -4,34 +4,36 @@ | |||||
| </div> | </div> | ||||
| <div class="spt-form"> | <div class="spt-form"> | ||||
| <form [formGroup]="form" (ngSubmit)="onSubmit()"> | <form [formGroup]="form" (ngSubmit)="onSubmit()"> | ||||
| <div class="mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="name" | |||||
| formControlName="name" | |||||
| required/> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="name" | |||||
| formControlName="name" | |||||
| required/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="code" class="form-label">{{ 'common.code' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="code" | |||||
| formControlName="code" | |||||
| required/> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <div class="mb-3"> | |||||
| <label for="code" class="form-label">{{ 'common.code' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="code" | |||||
| formControlName="code" | |||||
| required/> | |||||
| </div> | |||||
| <div class="flex gap-2"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.shipping_company' | translate }} | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | </button> | ||||
| } | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.shipping_company' | translate }} | |||||
| </button> | |||||
| } | |||||
| </div> | |||||
| </div> | </div> | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| @@ -17,9 +17,9 @@ | |||||
| <div> | <div> | ||||
| <h4 class="mb-4">{{ 'trip.itinerary_locations' | translate }}</h4> | <h4 class="mb-4">{{ 'trip.itinerary_locations' | translate }}</h4> | ||||
| <div *ngFor="let tripLocation of tripLocations; let i = index" class="mb-4"> | |||||
| <div *ngFor="let tripLocation of tripLocations; let i = index" class="p-2 mb-2 changing-list"> | |||||
| <div class="row"> | <div class="row"> | ||||
| <div class="col-12 col-md-4 mb-3"> | |||||
| <div class="col-12 col-md-4 mb-1"> | |||||
| <label [for]="'location_' + i" class="form-label">Location*:</label> | <label [for]="'location_' + i" class="form-label">Location*:</label> | ||||
| <app-search-select | <app-search-select | ||||
| [formId]="'location'" | [formId]="'location'" | ||||
| @@ -33,7 +33,7 @@ | |||||
| </app-search-select> | </app-search-select> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-3"> | |||||
| <div class="col-12 col-md-2 mb-1"> | |||||
| <label class="form-label">trip.date (Date):</label> | <label class="form-label">trip.date (Date):</label> | ||||
| <div> | <div> | ||||
| <input | <input | ||||
| @@ -45,7 +45,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-3"> | |||||
| <div class="col-12 col-md-2 mb-1"> | |||||
| <label class="form-label">trip.date (Time):</label> | <label class="form-label">trip.date (Time):</label> | ||||
| <div> | <div> | ||||
| <input | <input | ||||
| @@ -57,7 +57,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-3 d-flex align-items-end"> | |||||
| <div class="col-12 col-md-2 mb-1 d-flex align-items-end"> | |||||
| <div class="form-check"> | <div class="form-check"> | ||||
| <input | <input | ||||
| class="form-check-input" | class="form-check-input" | ||||
| @@ -72,30 +72,33 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-3 d-flex align-items-end"> | |||||
| <button type="button" class="btn btn-danger" (click)="removeTripLocation(i)">X</button> | |||||
| <div class="col-12 col-md-2 mb-1 d-flex align-items-end"> | |||||
| <button type="button" class="btn btn-danger mb-3" (click)="removeTripLocation(i)">X</button> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="my-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="addNewTripLocation()">+</button> | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="addNewTripLocation()">+</button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <div class="mt-4"> | |||||
| <button type="button" class="btn btn-primary" (click)="saveAllTripLocations()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="saveAllTripLocations()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </mat-tab> | </mat-tab> | ||||
| <mat-tab label="{{ 'trip.assigned_users' | translate }}"> | <mat-tab label="{{ 'trip.assigned_users' | translate }}"> | ||||
| <div> | <div> | ||||
| <h4 class="mb-4">{{ 'trip.assigned_users' | translate }}</h4> | <h4 class="mb-4">{{ 'trip.assigned_users' | translate }}</h4> | ||||
| <div *ngFor="let userTrip of userTrips; let i = index" class="mb-4"> | |||||
| <div *ngFor="let userTrip of userTrips; let i = index" class="p-2 mb-2 changing-list"> | |||||
| <div class="row"> | <div class="row"> | ||||
| <div class="col-12 col-md-6 mb-3"> | |||||
| <div class="col-12 col-md-10 mb-1"> | |||||
| <label [for]="'user_' + i" class="form-label">{{ 'model.user' | translate }}*:</label> | <label [for]="'user_' + i" class="form-label">{{ 'model.user' | translate }}*:</label> | ||||
| <app-search-select | <app-search-select | ||||
| [formId]="'user'" | [formId]="'user'" | ||||
| @@ -110,20 +113,24 @@ | |||||
| </app-search-select> | </app-search-select> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-3 d-flex align-items-end"> | |||||
| <button type="button" class="btn btn-danger" (click)="removeUserTrip(i)">X</button> | |||||
| <div class="col-12 col-md-2 d-flex align-items-end"> | |||||
| <button type="button" class="btn btn-danger mb-3" (click)="removeUserTrip(i)">X</button> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="my-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="addNewUserTrip()">+</button> | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="addNewUserTrip()">+</button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <div class="mt-4"> | |||||
| <button type="button" class="btn btn-primary" (click)="saveAllUserTrips()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="saveAllUserTrips()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </mat-tab> | </mat-tab> | ||||
| @@ -6,87 +6,87 @@ | |||||
| } | } | ||||
| <div class="spt-form"> | <div class="spt-form"> | ||||
| <form [formGroup]="tripForm" (ngSubmit)="onSubmit()"> | <form [formGroup]="tripForm" (ngSubmit)="onSubmit()"> | ||||
| <div class="mb-3"> | |||||
| <label for="vesselIri" class="form-label">{{ 'trip.vessel' | translate }}*:</label> | |||||
| <app-search-select #vesselSearchSelect | |||||
| [formId]="'vesselIri'" | |||||
| [formLabelLangKey]="'model.vessel'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getVessels" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="vesselColDefinitions" | |||||
| [dataSet]="data?.vessel" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="vesselIri" type="hidden" formControlName="vesselIri" required/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="startLocationIri" class="form-label">{{ 'trip.start_location' | translate }}*:</label> | |||||
| <app-search-select #startLocationSearchSelect | |||||
| [formId]="'startLocationIri'" | |||||
| [formLabelLangKey]="'model.location'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getLocations" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="locationColDefinitions" | |||||
| [dataSet]="data?.startLocation" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="startLocationIri" type="hidden" formControlName="startLocationIri" required/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="endLocationIri" class="form-label">{{ 'trip.end_location' | translate }}*:</label> | |||||
| <app-search-select #endLocationSearchSelect | |||||
| [formId]="'endLocationIri'" | |||||
| [formLabelLangKey]="'model.location'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getLocations" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="locationColDefinitions" | |||||
| [dataSet]="data?.endLocation" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="endLocationIri" type="hidden" formControlName="endLocationIri" required/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="customerReference" class="form-label">{{ 'trip.customer_reference' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="customerReference" formControlName="customerReference"/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="captainName" class="form-label">{{ 'trip.captain_name' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="captainName" formControlName="captainName"/> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3"> | |||||
| <app-datetime-picker | |||||
| [label]="'trip.start_date' | translate" | |||||
| [inputId]="'startDate'" | |||||
| [initialValue]="tripForm.get('startDate')?.value ?? null" | |||||
| (dateTimeChange)="onDateChange($event, 'startDate')" | |||||
| ></app-datetime-picker> | |||||
| </div> | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <label for="vesselIri" class="form-label">{{ 'trip.vessel' | translate }}*:</label> | |||||
| <app-search-select #vesselSearchSelect | |||||
| [formId]="'vesselIri'" | |||||
| [formLabelLangKey]="'model.vessel'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getVessels" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="vesselColDefinitions" | |||||
| [dataSet]="data?.vessel" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="vesselIri" type="hidden" formControlName="vesselIri" required/> | |||||
| </div> | |||||
| <div class="col-12 mb-3"> | |||||
| <label for="startLocationIri" class="form-label">{{ 'trip.start_location' | translate }}*:</label> | |||||
| <app-search-select #startLocationSearchSelect | |||||
| [formId]="'startLocationIri'" | |||||
| [formLabelLangKey]="'model.location'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getLocations" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="locationColDefinitions" | |||||
| [dataSet]="data?.startLocation" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="startLocationIri" type="hidden" formControlName="startLocationIri" required/> | |||||
| </div> | |||||
| <div class="col-12 mb-3"> | |||||
| <label for="endLocationIri" class="form-label">{{ 'trip.end_location' | translate }}*:</label> | |||||
| <app-search-select #endLocationSearchSelect | |||||
| [formId]="'endLocationIri'" | |||||
| [formLabelLangKey]="'model.location'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getLocations" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="locationColDefinitions" | |||||
| [dataSet]="data?.endLocation" | |||||
| > | |||||
| </app-search-select> | |||||
| <input id="endLocationIri" type="hidden" formControlName="endLocationIri" required/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="customerReference" class="form-label">{{ 'trip.customer_reference' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="customerReference" formControlName="customerReference"/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="captainName" class="form-label">{{ 'trip.captain_name' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="captainName" formControlName="captainName"/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <app-datetime-picker | |||||
| [label]="'trip.start_date' | translate" | |||||
| [inputId]="'startDate'" | |||||
| [initialValue]="tripForm.get('startDate')?.value ?? null" | |||||
| (dateTimeChange)="onDateChange($event, 'startDate')" | |||||
| ></app-datetime-picker> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3"> | |||||
| <app-datetime-picker | |||||
| [label]="'trip.end_date' | translate" | |||||
| [inputId]="'startDate'" | |||||
| [initialValue]="tripForm.get('endDate')?.value ?? null" | |||||
| (dateTimeChange)="onDateChange($event, 'endDate')" | |||||
| ></app-datetime-picker> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <app-datetime-picker | |||||
| [label]="'trip.end_date' | translate" | |||||
| [inputId]="'startDate'" | |||||
| [initialValue]="tripForm.get('endDate')?.value ?? null" | |||||
| (dateTimeChange)="onDateChange($event, 'endDate')" | |||||
| ></app-datetime-picker> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <div class="flex gap-2"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.trip' | translate }} | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | </button> | ||||
| } | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.trip' | translate }} | |||||
| </button> | |||||
| } | |||||
| </div> | |||||
| </div> | </div> | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| @@ -19,9 +19,9 @@ | |||||
| <div> | <div> | ||||
| <h4 class="mb-4">{{ 'user_trip.events' | translate }}</h4> | <h4 class="mb-4">{{ 'user_trip.events' | translate }}</h4> | ||||
| <div *ngFor="let userTripEvent of userTripEvents; let i = index" class="mb-4"> | |||||
| <div *ngFor="let userTripEvent of userTripEvents; let i = index" class="p-2 mb-2 changing-list"> | |||||
| <div class="row"> | <div class="row"> | ||||
| <div class="col-12 col-md-3 mb-3"> | |||||
| <div class="col-12 col-md-6 mb-3"> | |||||
| <label [for]="'event_' + i" class="form-label">{{ 'model.event' | translate }}*:</label> | <label [for]="'event_' + i" class="form-label">{{ 'model.event' | translate }}*:</label> | ||||
| <app-search-select | <app-search-select | ||||
| [formId]="'eventIri'" | [formId]="'eventIri'" | ||||
| @@ -35,7 +35,7 @@ | |||||
| </app-search-select> | </app-search-select> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-3 mb-3"> | |||||
| <div class="col-12 col-md-6 mb-3"> | |||||
| <label [for]="'location_' + i" class="form-label">{{ 'model.location' | translate }}*:</label> | <label [for]="'location_' + i" class="form-label">{{ 'model.location' | translate }}*:</label> | ||||
| <app-search-select | <app-search-select | ||||
| [formId]="'locationIri'" | [formId]="'locationIri'" | ||||
| @@ -49,7 +49,7 @@ | |||||
| </app-search-select> | </app-search-select> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-3"> | |||||
| <div class="col-12 col-md-3 mb-1"> | |||||
| <label class="form-label">{{ 'user_trip.event_date' | translate }} ({{ 'common.date' | translate }}):</label> | <label class="form-label">{{ 'user_trip.event_date' | translate }} ({{ 'common.date' | translate }}):</label> | ||||
| <div> | <div> | ||||
| <input | <input | ||||
| @@ -61,7 +61,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-3"> | |||||
| <div class="col-12 col-md-3 mb-1"> | |||||
| <label class="form-label">{{ 'user_trip.event_date' | translate }} ({{ 'common.time' | translate }}):</label> | <label class="form-label">{{ 'user_trip.event_date' | translate }} ({{ 'common.time' | translate }}):</label> | ||||
| <div> | <div> | ||||
| <input | <input | ||||
| @@ -73,32 +73,34 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-1 mb-3 d-flex align-items-end"> | |||||
| <button type="button" class="btn btn-danger" (click)="removeUserTripEvent(i)">X</button> | |||||
| </div> | |||||
| </div> | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <div class="col-12 col-md-4 mb-1"> | |||||
| <label [for]="'note_' + i" class="form-label">{{ 'common.note' | translate }}:</label> | <label [for]="'note_' + i" class="form-label">{{ 'common.note' | translate }}:</label> | ||||
| <textarea | <textarea | ||||
| class="form-control" | |||||
| [id]="'note_' + i" | |||||
| rows="2" | |||||
| [(ngModel)]="userTripEvent.note" | |||||
| class="form-control" | |||||
| [id]="'note_' + i" | |||||
| rows="2" | |||||
| [(ngModel)]="userTripEvent.note" | |||||
| ></textarea> | ></textarea> | ||||
| </div> | </div> | ||||
| <div class="col-12 col-md-2 mb-1 d-flex align-items-end"> | |||||
| <button type="button" class="btn btn-danger" (click)="removeUserTripEvent(i)">X</button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="my-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="addNewUserTripEvent()">+</button> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="addNewUserTripEvent()">+</button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <div class="mt-4"> | |||||
| <button type="button" class="btn btn-primary" (click)="saveAllUserTripEvents()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <button type="button" class="btn btn-primary" (click)="saveAllUserTripEvents()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| </div> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </mat-tab> | </mat-tab> | ||||
| @@ -2,22 +2,24 @@ | |||||
| <div class="spt-form"> | <div class="spt-form"> | ||||
| @if (data !== undefined) { | @if (data !== undefined) { | ||||
| <form [formGroup]="userTripForm" (ngSubmit)="onSubmit()"> | <form [formGroup]="userTripForm" (ngSubmit)="onSubmit()"> | ||||
| <input type="hidden" formControlName="tripIri" /> | <input type="hidden" formControlName="tripIri" /> | ||||
| <input type="hidden" formControlName="userIri" /> | <input type="hidden" formControlName="userIri" /> | ||||
| <input type="hidden" formControlName="signatureIri" /> | <input type="hidden" formControlName="signatureIri" /> | ||||
| <div class="mb-3"> | |||||
| <label for="captainName" class="form-label">{{ 'trip.captain_name' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="captainName" formControlName="captainName"/> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'user_trip.completed' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="completed" [disabled]="data.completed"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="captainName" class="form-label">{{ 'trip.captain_name' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="captainName" formControlName="captainName"/> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'user_trip.completed' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="completed" [disabled]="data.completed"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <!-- Verwende die neue ImageUpload-Komponente --> | <!-- Verwende die neue ImageUpload-Komponente --> | ||||
| <app-image-upload | <app-image-upload | ||||
| #imageUpload | #imageUpload | ||||
| @@ -32,15 +34,17 @@ | |||||
| </div> | </div> | ||||
| <div class="flex gap-2"> | |||||
| <button type="submit" class="btn btn-primary" (click)="onSubmit()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.user_trip' | translate }} | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="submit" class="btn btn-primary" (click)="onSubmit()"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | </button> | ||||
| } | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.user_trip' | translate }} | |||||
| </button> | |||||
| } | |||||
| </div> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -7,49 +7,43 @@ | |||||
| <div class="spt-form"> | <div class="spt-form"> | ||||
| <form [formGroup]="userForm" (ngSubmit)="onSubmit()"> | <form [formGroup]="userForm" (ngSubmit)="onSubmit()"> | ||||
| <input type="hidden" formControlName="imageIri" /> | <input type="hidden" formControlName="imageIri" /> | ||||
| <div class="mb-3"> | |||||
| <label for="email" class="form-label">{{ 'users.email' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="email" formControlName="email"/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="firstName" class="form-label">{{ 'users.firstname' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="firstName" formControlName="firstName"/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="lastName" class="form-label">{{ 'users.lastname' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="lastName" formControlName="lastName"/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="referenceId" class="form-label">{{ 'users.pilotIdNo' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="referenceId" formControlName="referenceId"/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="password" class="form-label">{{ 'users.password' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="password" formControlName="password"/> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'users.active' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="active"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'users.is_admin' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isAdmin"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="firstName" class="form-label">{{ 'users.firstname' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="firstName" formControlName="firstName"/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="lastName" class="form-label">{{ 'users.lastname' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="lastName" formControlName="lastName"/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="email" class="form-label">{{ 'users.email' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="email" formControlName="email"/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="password" class="form-label">{{ 'users.password' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="password" formControlName="password"/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="referenceId" class="form-label">{{ 'users.pilotIdNo' | translate }}:</label> | |||||
| <input type="text" class="form-control" id="referenceId" formControlName="referenceId"/> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'users.active' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="active"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| <div class="col-12 col-sm-6 col-md-4 col-lg-3 mb-3 switch-widget"> | |||||
| <p class="form-label">{{ 'users.is_admin' | translate }}:</p> | |||||
| <label class="switch"> | |||||
| <input type="checkbox" formControlName="isAdmin"> | |||||
| <span class="slider round"></span> | |||||
| </label> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <!-- Verwende die neue ImageUpload-Komponente --> | |||||
| <app-image-upload | <app-image-upload | ||||
| #imageUpload | #imageUpload | ||||
| [imageUrl]="data?.imageUrl" | [imageUrl]="data?.imageUrl" | ||||
| @@ -57,17 +51,18 @@ | |||||
| (fileSelected)="handleFileSelected($event)" | (fileSelected)="handleFileSelected($event)" | ||||
| (fileDeleted)="handleFileDeleted()"> | (fileDeleted)="handleFileDeleted()"> | ||||
| </app-image-upload> | </app-image-upload> | ||||
| <div class="flex gap-2"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.user' | translate }} | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | </button> | ||||
| } | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.user' | translate }} | |||||
| </button> | |||||
| } | |||||
| </div> | |||||
| </div> | </div> | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| @@ -4,48 +4,49 @@ | |||||
| </div> | </div> | ||||
| <div class="spt-form"> | <div class="spt-form"> | ||||
| <form [formGroup]="form" (ngSubmit)="onSubmit()"> | <form [formGroup]="form" (ngSubmit)="onSubmit()"> | ||||
| <div class="mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="name" | |||||
| formControlName="name" | |||||
| required/> | |||||
| <div class="row"> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="name" | |||||
| formControlName="name" | |||||
| required/> | |||||
| </div> | |||||
| <div class="col-12 col-lg-6 mb-3"> | |||||
| <label for="code" class="form-label">{{ 'common.code' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="code" | |||||
| formControlName="code" | |||||
| required/> | |||||
| </div> | |||||
| <div class="col-12 mb-3"> | |||||
| <label for="companyIri" class="form-label">{{ 'model.shipping_company' | translate }}:</label> | |||||
| <app-search-select #shippingCompanySearchSelect | |||||
| [formId]="'companyIri'" | |||||
| [formLabelLangKey]="'model.shipping_company'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getShippingCompanies" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="shippingCompanyColDefinitions" | |||||
| [dataSet]="data?.company"> | |||||
| </app-search-select> | |||||
| <input id="companyIri" type="hidden" formControlName="companyIri"/> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <div class="mb-3"> | |||||
| <label for="code" class="form-label">{{ 'common.code' | translate }}*:</label> | |||||
| <input type="text" | |||||
| class="form-control" | |||||
| id="code" | |||||
| formControlName="code" | |||||
| required/> | |||||
| </div> | |||||
| <div class="mb-3"> | |||||
| <label for="companyIri" class="form-label">{{ 'model.shipping_company' | translate }}:</label> | |||||
| <app-search-select #shippingCompanySearchSelect | |||||
| [formId]="'companyIri'" | |||||
| [formLabelLangKey]="'model.shipping_company'" | |||||
| [documentForm]="form" | |||||
| [getDataFunction]="getShippingCompanies" | |||||
| [displayedDataField]="'name'" | |||||
| [listColDefinitions]="shippingCompanyColDefinitions" | |||||
| [dataSet]="data?.company"> | |||||
| </app-search-select> | |||||
| <input id="companyIri" type="hidden" formControlName="companyIri"/> | |||||
| </div> | |||||
| <div class="flex gap-2"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.vessel' | translate }} | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | </button> | ||||
| } | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.vessel' | translate }} | |||||
| </button> | |||||
| } | |||||
| </div> | |||||
| </div> | </div> | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| @@ -4,21 +4,23 @@ | |||||
| </div> | </div> | ||||
| <div class="spt-form"> | <div class="spt-form"> | ||||
| <form [formGroup]="form" (ngSubmit)="onSubmit()"> | <form [formGroup]="form" (ngSubmit)="onSubmit()"> | ||||
| <div class="mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" class="form-control" id="name" formControlName="name" required/> | |||||
| </div> | |||||
| <div class="flex gap-2"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | |||||
| <div class="row"> | |||||
| <div class="col-12 mb-3"> | |||||
| <label for="name" class="form-label">{{ 'common.name' | translate }}*:</label> | |||||
| <input type="text" class="form-control" id="name" formControlName="name" required/> | |||||
| </div> | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.zone' | translate }} | |||||
| <div class="col-12 mb-3"> | |||||
| <button type="submit" class="btn btn-primary" [disabled]="form.invalid"> | |||||
| {{ 'basic.save' | translate }} | |||||
| </button> | </button> | ||||
| } | |||||
| @if (isEditMode()) { | |||||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||||
| {{ 'basic.delete' | translate }} {{ 'model.zone' | translate }} | |||||
| </button> | |||||
| } | |||||
| </div> | |||||
| </div> | </div> | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| @@ -19,7 +19,6 @@ import { ConstraintViolationJsonViolationsInner } from './constraintViolationJso | |||||
| export interface ConstraintViolationJsonldJsonld { | export interface ConstraintViolationJsonldJsonld { | ||||
| context?: ConstraintViolationJsonldJsonldContext; | context?: ConstraintViolationJsonldJsonldContext; | ||||
| readonly id?: string; | readonly id?: string; | ||||
| readonly type?: string; | |||||
| status?: number; | status?: number; | ||||
| violations?: Array<ConstraintViolationJsonViolationsInner>; | violations?: Array<ConstraintViolationJsonViolationsInner>; | ||||
| readonly detail?: string; | readonly detail?: string; | ||||
| @@ -18,7 +18,6 @@ import { ConstraintViolationJsonldJsonldContext } from './constraintViolationJso | |||||
| export interface ErrorJsonld { | export interface ErrorJsonld { | ||||
| context?: ConstraintViolationJsonldJsonldContext; | context?: ConstraintViolationJsonldJsonldContext; | ||||
| readonly id?: string; | readonly id?: string; | ||||
| readonly type?: string; | |||||
| /** | /** | ||||
| * A short, human-readable summary of the problem. | * A short, human-readable summary of the problem. | ||||
| */ | */ | ||||
| @@ -13,7 +13,10 @@ | |||||
| { | { | ||||
| "name": "Name", | "name": "Name", | ||||
| "code": "Code", | "code": "Code", | ||||
| "created_at": "Created at" | |||||
| "created_at": "Created at", | |||||
| "date": "Date", | |||||
| "time": "Time", | |||||
| "note": "Note" | |||||
| }, | }, | ||||
| "trip": | "trip": | ||||
| { | { | ||||
| @@ -43,7 +46,8 @@ | |||||
| "events": "Events", | "events": "Events", | ||||
| "completed": "Completed", | "completed": "Completed", | ||||
| "completed_at": "Completed at", | "completed_at": "Completed at", | ||||
| "signature": "Signature Image" | |||||
| "signature": "Signature Image", | |||||
| "event_date": "Event date" | |||||
| }, | }, | ||||
| "base_data": | "base_data": | ||||
| { | { | ||||
| @@ -134,7 +134,7 @@ body { | |||||
| } | } | ||||
| } | } | ||||
| .spt-headline { | |||||
| .spt-headline:not(.modal-content .spt-headline) { | |||||
| @media only screen and (min-width: 1200px) { | @media only screen and (min-width: 1200px) { | ||||
| margin: -32px 0 0 50px; | margin: -32px 0 0 50px; | ||||
| } | } | ||||
| @@ -142,6 +142,7 @@ body { | |||||
| label, | label, | ||||
| .form-label { | .form-label { | ||||
| display: block; | |||||
| font-size: 13px; | font-size: 13px; | ||||
| margin-bottom: 5px !important; | margin-bottom: 5px !important; | ||||
| @@ -270,7 +271,7 @@ textarea#pasteCodes { | |||||
| width: 85.5%; | width: 85.5%; | ||||
| min-width: calc(100% - 200px); | min-width: calc(100% - 200px); | ||||
| @media only screen and (max-width: 1199px) { | @media only screen and (max-width: 1199px) { | ||||
| width: auto; | |||||
| width: 100%; | |||||
| //width: calc(100% - calc(var(--bs-gutter-x) * 0.5) - calc(var(--bs-gutter-x) * 0.5)); | //width: calc(100% - calc(var(--bs-gutter-x) * 0.5) - calc(var(--bs-gutter-x) * 0.5)); | ||||
| } | } | ||||
| } | } | ||||
| @@ -597,6 +598,7 @@ textarea#pasteCodes { | |||||
| line-height: 24px; | line-height: 24px; | ||||
| min-height: 38px; | min-height: 38px; | ||||
| cursor: text; | cursor: text; | ||||
| background-color: #fff; | |||||
| &.search-empty { | &.search-empty { | ||||
| &:before { | &:before { | ||||
| @@ -27,9 +27,13 @@ | |||||
| select, | select, | ||||
| label a, | label a, | ||||
| .form-label a, | .form-label a, | ||||
| .card-body { | |||||
| .card-body, | |||||
| .search-select .show-name p { | |||||
| color: #fff !important; | color: #fff !important; | ||||
| } | } | ||||
| .search-select .show-name p { | |||||
| background: transparent; | |||||
| } | |||||
| .mat-mdc-paginator-icon { | .mat-mdc-paginator-icon { | ||||
| fill: #fff; | fill: #fff; | ||||
| @@ -53,7 +57,8 @@ | |||||
| fill: #3e525f; | fill: #3e525f; | ||||
| } | } | ||||
| .mat-mdc-tab-list .mat-ripple { | |||||
| .mat-mdc-tab-list .mat-ripple, | |||||
| .changing-list { | |||||
| background: #4e697b; | background: #4e697b; | ||||
| } | } | ||||
| @@ -80,4 +85,31 @@ | |||||
| background-image: url("../images/icons/icon-back-white.svg"); | background-image: url("../images/icons/icon-back-white.svg"); | ||||
| background-size: 100% auto; | background-size: 100% auto; | ||||
| } | } | ||||
| } | |||||
| table, | |||||
| p, | |||||
| ul, | |||||
| ol, | |||||
| dl, | |||||
| .post h3, | |||||
| .tasks h3 { | |||||
| a { | |||||
| color: #fff; | |||||
| &:hover { | |||||
| color: #ddd; | |||||
| } | |||||
| } | |||||
| } | |||||
| .btn-link { | |||||
| color: #fff; | |||||
| &:hover { | |||||
| color: #ddd; | |||||
| } | |||||
| } | |||||
| .spt-clear { | |||||
| background-color: transparent; | |||||
| &:before, | |||||
| &:after { | |||||
| background: #fff; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -5,6 +5,7 @@ | |||||
| } | } | ||||
| .spt-form { | .spt-form { | ||||
| overflow: hidden; | |||||
| .delete-image { | .delete-image { | ||||
| display: flex; | display: flex; | ||||
| justify-content: flex-start; | justify-content: flex-start; | ||||
| @@ -34,3 +35,37 @@ | |||||
| } | } | ||||
| } | } | ||||
| .image-display { | |||||
| position: relative; | |||||
| max-width: 300px; | |||||
| img { | |||||
| width: 100%; | |||||
| } | |||||
| .btn { | |||||
| position: absolute; | |||||
| right: 0; | |||||
| top: 0; | |||||
| padding: 6px 14px; | |||||
| } | |||||
| } | |||||
| .form-control::file-selector-button { | |||||
| margin: 0; | |||||
| padding: 3px 5px; | |||||
| color: #000; | |||||
| border: none; | |||||
| } | |||||
| textarea.form-control { | |||||
| min-height: auto; | |||||
| height: 34px; | |||||
| } | |||||
| .form-check { | |||||
| margin-bottom: 1.25rem; | |||||
| } | |||||
| .btn-margin { | |||||
| margin-bottom: 0.75rem; | |||||
| } | |||||
| .changing-list { | |||||
| background-color: #f6f6f6; | |||||
| } | |||||
| @@ -41,7 +41,8 @@ class AppFixtures extends Fixture | |||||
| 'firstName' => 'Jakob', | 'firstName' => 'Jakob', | ||||
| 'lastName' => 'Nordstrøm', | 'lastName' => 'Nordstrøm', | ||||
| 'password' => '12spawntree345', | 'password' => '12spawntree345', | ||||
| 'roles' => ['ROLE_ADMIN'] | |||||
| 'roles' => ['ROLE_ADMIN'], | |||||
| 'reference_id' => 1 | |||||
| ] | ] | ||||
| ); | ); | ||||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | $system->_set('image', MediaObjectFactory::createOne()->_real()); | ||||
| @@ -53,7 +54,8 @@ class AppFixtures extends Fixture | |||||
| 'firstName' => 'Daniel', | 'firstName' => 'Daniel', | ||||
| 'lastName' => 'Knudsen', | 'lastName' => 'Knudsen', | ||||
| 'password' => '12spawntree345', | 'password' => '12spawntree345', | ||||
| 'roles' => ['ROLE_ADMIN'] | |||||
| 'roles' => ['ROLE_ADMIN'], | |||||
| 'reference_id' => 1 | |||||
| ] | ] | ||||
| ); | ); | ||||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | $system->_set('image', MediaObjectFactory::createOne()->_real()); | ||||
| @@ -66,7 +68,8 @@ class AppFixtures extends Fixture | |||||
| 'lastName' => 'Eisenmenger', | 'lastName' => 'Eisenmenger', | ||||
| 'password' => '12spawntree345', | 'password' => '12spawntree345', | ||||
| 'image' => MediaObjectFactory::createOne(), | 'image' => MediaObjectFactory::createOne(), | ||||
| 'roles' => ['ROLE_ADMIN'] | |||||
| 'roles' => ['ROLE_ADMIN'], | |||||
| 'reference_id' => 1 | |||||
| ] | ] | ||||
| ); | ); | ||||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | $system->_set('image', MediaObjectFactory::createOne()->_real()); | ||||
| @@ -79,7 +82,8 @@ class AppFixtures extends Fixture | |||||
| 'lastName' => 'Pilot1', | 'lastName' => 'Pilot1', | ||||
| 'password' => '12spawntree345', | 'password' => '12spawntree345', | ||||
| 'image' => MediaObjectFactory::createOne(), | 'image' => MediaObjectFactory::createOne(), | ||||
| 'roles' => ['ROLE_USER'] | |||||
| 'roles' => ['ROLE_USER'], | |||||
| 'reference_id' => 1 | |||||
| ] | ] | ||||
| ); | ); | ||||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | $system->_set('image', MediaObjectFactory::createOne()->_real()); | ||||
| @@ -87,12 +91,13 @@ class AppFixtures extends Fixture | |||||
| UserFactory::createOne( | UserFactory::createOne( | ||||
| [ | [ | ||||
| 'email' => 'pilot1@spawntree.de', | |||||
| 'email' => 'pilot2@spawntree.de', | |||||
| 'firstName' => 'Pilot2', | 'firstName' => 'Pilot2', | ||||
| 'lastName' => 'Pilot2', | 'lastName' => 'Pilot2', | ||||
| 'password' => '12spawntree345', | 'password' => '12spawntree345', | ||||
| 'image' => MediaObjectFactory::createOne(), | 'image' => MediaObjectFactory::createOne(), | ||||
| 'roles' => ['ROLE_USER'] | |||||
| 'roles' => ['ROLE_USER'], | |||||
| 'reference_id' => 1 | |||||
| ] | ] | ||||
| ); | ); | ||||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | $system->_set('image', MediaObjectFactory::createOne()->_real()); | ||||
| @@ -100,12 +105,13 @@ class AppFixtures extends Fixture | |||||
| UserFactory::createOne( | UserFactory::createOne( | ||||
| [ | [ | ||||
| 'email' => 'pilot1@spawntree.de', | |||||
| 'email' => 'pilot3@spawntree.de', | |||||
| 'firstName' => 'Pilot3', | 'firstName' => 'Pilot3', | ||||
| 'lastName' => 'Pilot3', | 'lastName' => 'Pilot3', | ||||
| 'password' => '12spawntree345', | 'password' => '12spawntree345', | ||||
| 'image' => MediaObjectFactory::createOne(), | 'image' => MediaObjectFactory::createOne(), | ||||
| 'roles' => ['ROLE_USER'] | |||||
| 'roles' => ['ROLE_USER'], | |||||
| 'reference_id' => 1 | |||||
| ] | ] | ||||
| ); | ); | ||||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | $system->_set('image', MediaObjectFactory::createOne()->_real()); | ||||
| @@ -113,12 +119,13 @@ class AppFixtures extends Fixture | |||||
| UserFactory::createOne( | UserFactory::createOne( | ||||
| [ | [ | ||||
| 'email' => 'pilot1@spawntree.de', | |||||
| 'email' => 'pilot4@spawntree.de', | |||||
| 'firstName' => 'Pilot4', | 'firstName' => 'Pilot4', | ||||
| 'lastName' => 'Pilot4', | 'lastName' => 'Pilot4', | ||||
| 'password' => '12spawntree345', | 'password' => '12spawntree345', | ||||
| 'image' => MediaObjectFactory::createOne(), | 'image' => MediaObjectFactory::createOne(), | ||||
| 'roles' => ['ROLE_USER'] | |||||
| 'roles' => ['ROLE_USER'], | |||||
| 'reference_id' => 1 | |||||
| ] | ] | ||||
| ); | ); | ||||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | $system->_set('image', MediaObjectFactory::createOne()->_real()); | ||||