| @@ -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) { | |||
| <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> | |||
| @@ -295,7 +295,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy { | |||
| if (elementValue !== undefined && elementValue !== null) { | |||
| return elementValue; | |||
| } | |||
| return "/assets/images/icons/dummy-product.png" | |||
| return "/assets/images/icons/dummy-person.png" | |||
| } | |||
| @@ -4,63 +4,63 @@ | |||
| </div> | |||
| <div class="spt-form"> | |||
| <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 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> | |||
| } | |||
| @if (isEditMode()) { | |||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||
| {{ 'basic.delete' | translate }} {{ 'model.location' | translate }} | |||
| </button> | |||
| } | |||
| </div> | |||
| </div> | |||
| </form> | |||
| </div> | |||
| @@ -4,34 +4,36 @@ | |||
| </div> | |||
| <div class="spt-form"> | |||
| <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 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> | |||
| } | |||
| @if (isEditMode()) { | |||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||
| {{ 'basic.delete' | translate }} {{ 'model.shipping_company' | translate }} | |||
| </button> | |||
| } | |||
| </div> | |||
| </div> | |||
| </form> | |||
| </div> | |||
| @@ -17,9 +17,9 @@ | |||
| <div> | |||
| <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="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> | |||
| <app-search-select | |||
| [formId]="'location'" | |||
| @@ -33,7 +33,7 @@ | |||
| </app-search-select> | |||
| </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> | |||
| <div> | |||
| <input | |||
| @@ -45,7 +45,7 @@ | |||
| </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> | |||
| <div> | |||
| <input | |||
| @@ -57,7 +57,7 @@ | |||
| </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"> | |||
| <input | |||
| class="form-check-input" | |||
| @@ -72,30 +72,33 @@ | |||
| </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 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 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> | |||
| </mat-tab> | |||
| <mat-tab label="{{ 'trip.assigned_users' | translate }}"> | |||
| <div> | |||
| <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="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> | |||
| <app-search-select | |||
| [formId]="'user'" | |||
| @@ -110,20 +113,24 @@ | |||
| </app-search-select> | |||
| </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 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 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> | |||
| </mat-tab> | |||
| @@ -6,87 +6,87 @@ | |||
| } | |||
| <div class="spt-form"> | |||
| <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 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> | |||
| } | |||
| @if (isEditMode()) { | |||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||
| {{ 'basic.delete' | translate }} {{ 'model.trip' | translate }} | |||
| </button> | |||
| } | |||
| </div> | |||
| </div> | |||
| </form> | |||
| </div> | |||
| @@ -19,9 +19,9 @@ | |||
| <div> | |||
| <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="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> | |||
| <app-search-select | |||
| [formId]="'eventIri'" | |||
| @@ -35,7 +35,7 @@ | |||
| </app-search-select> | |||
| </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> | |||
| <app-search-select | |||
| [formId]="'locationIri'" | |||
| @@ -49,7 +49,7 @@ | |||
| </app-search-select> | |||
| </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> | |||
| <div> | |||
| <input | |||
| @@ -61,7 +61,7 @@ | |||
| </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> | |||
| <div> | |||
| <input | |||
| @@ -73,32 +73,34 @@ | |||
| </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> | |||
| <textarea | |||
| class="form-control" | |||
| [id]="'note_' + i" | |||
| rows="2" | |||
| [(ngModel)]="userTripEvent.note" | |||
| class="form-control" | |||
| [id]="'note_' + i" | |||
| rows="2" | |||
| [(ngModel)]="userTripEvent.note" | |||
| ></textarea> | |||
| </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 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 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> | |||
| </mat-tab> | |||
| @@ -2,22 +2,24 @@ | |||
| <div class="spt-form"> | |||
| @if (data !== undefined) { | |||
| <form [formGroup]="userTripForm" (ngSubmit)="onSubmit()"> | |||
| <input type="hidden" formControlName="tripIri" /> | |||
| <input type="hidden" formControlName="userIri" /> | |||
| <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> | |||
| <!-- Verwende die neue ImageUpload-Komponente --> | |||
| <app-image-upload | |||
| #imageUpload | |||
| @@ -32,15 +34,17 @@ | |||
| </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> | |||
| } | |||
| @if (isEditMode()) { | |||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||
| {{ 'basic.delete' | translate }} {{ 'model.user_trip' | translate }} | |||
| </button> | |||
| } | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -7,49 +7,43 @@ | |||
| <div class="spt-form"> | |||
| <form [formGroup]="userForm" (ngSubmit)="onSubmit()"> | |||
| <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> | |||
| <!-- Verwende die neue ImageUpload-Komponente --> | |||
| <app-image-upload | |||
| #imageUpload | |||
| [imageUrl]="data?.imageUrl" | |||
| @@ -57,17 +51,18 @@ | |||
| (fileSelected)="handleFileSelected($event)" | |||
| (fileDeleted)="handleFileDeleted()"> | |||
| </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> | |||
| } | |||
| @if (isEditMode()) { | |||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||
| {{ 'basic.delete' | translate }} {{ 'model.user' | translate }} | |||
| </button> | |||
| } | |||
| </div> | |||
| </div> | |||
| </form> | |||
| </div> | |||
| @@ -4,48 +4,49 @@ | |||
| </div> | |||
| <div class="spt-form"> | |||
| <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 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> | |||
| } | |||
| @if (isEditMode()) { | |||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||
| {{ 'basic.delete' | translate }} {{ 'model.vessel' | translate }} | |||
| </button> | |||
| } | |||
| </div> | |||
| </div> | |||
| </form> | |||
| </div> | |||
| @@ -4,21 +4,23 @@ | |||
| </div> | |||
| <div class="spt-form"> | |||
| <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> | |||
| } | |||
| @if (isEditMode()) { | |||
| <button type="button" class="ms-3 btn btn-primary" (click)="onDelete()"> | |||
| {{ 'basic.delete' | translate }} {{ 'model.zone' | translate }} | |||
| </button> | |||
| } | |||
| </div> | |||
| </div> | |||
| </form> | |||
| </div> | |||
| @@ -19,7 +19,6 @@ import { ConstraintViolationJsonViolationsInner } from './constraintViolationJso | |||
| export interface ConstraintViolationJsonldJsonld { | |||
| context?: ConstraintViolationJsonldJsonldContext; | |||
| readonly id?: string; | |||
| readonly type?: string; | |||
| status?: number; | |||
| violations?: Array<ConstraintViolationJsonViolationsInner>; | |||
| readonly detail?: string; | |||
| @@ -18,7 +18,6 @@ import { ConstraintViolationJsonldJsonldContext } from './constraintViolationJso | |||
| export interface ErrorJsonld { | |||
| context?: ConstraintViolationJsonldJsonldContext; | |||
| readonly id?: string; | |||
| readonly type?: string; | |||
| /** | |||
| * A short, human-readable summary of the problem. | |||
| */ | |||
| @@ -13,7 +13,10 @@ | |||
| { | |||
| "name": "Name", | |||
| "code": "Code", | |||
| "created_at": "Created at" | |||
| "created_at": "Created at", | |||
| "date": "Date", | |||
| "time": "Time", | |||
| "note": "Note" | |||
| }, | |||
| "trip": | |||
| { | |||
| @@ -43,7 +46,8 @@ | |||
| "events": "Events", | |||
| "completed": "Completed", | |||
| "completed_at": "Completed at", | |||
| "signature": "Signature Image" | |||
| "signature": "Signature Image", | |||
| "event_date": "Event date" | |||
| }, | |||
| "base_data": | |||
| { | |||
| @@ -134,7 +134,7 @@ body { | |||
| } | |||
| } | |||
| .spt-headline { | |||
| .spt-headline:not(.modal-content .spt-headline) { | |||
| @media only screen and (min-width: 1200px) { | |||
| margin: -32px 0 0 50px; | |||
| } | |||
| @@ -142,6 +142,7 @@ body { | |||
| label, | |||
| .form-label { | |||
| display: block; | |||
| font-size: 13px; | |||
| margin-bottom: 5px !important; | |||
| @@ -270,7 +271,7 @@ textarea#pasteCodes { | |||
| width: 85.5%; | |||
| min-width: calc(100% - 200px); | |||
| @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)); | |||
| } | |||
| } | |||
| @@ -597,6 +598,7 @@ textarea#pasteCodes { | |||
| line-height: 24px; | |||
| min-height: 38px; | |||
| cursor: text; | |||
| background-color: #fff; | |||
| &.search-empty { | |||
| &:before { | |||
| @@ -27,9 +27,13 @@ | |||
| select, | |||
| label a, | |||
| .form-label a, | |||
| .card-body { | |||
| .card-body, | |||
| .search-select .show-name p { | |||
| color: #fff !important; | |||
| } | |||
| .search-select .show-name p { | |||
| background: transparent; | |||
| } | |||
| .mat-mdc-paginator-icon { | |||
| fill: #fff; | |||
| @@ -53,7 +57,8 @@ | |||
| fill: #3e525f; | |||
| } | |||
| .mat-mdc-tab-list .mat-ripple { | |||
| .mat-mdc-tab-list .mat-ripple, | |||
| .changing-list { | |||
| background: #4e697b; | |||
| } | |||
| @@ -80,4 +85,31 @@ | |||
| background-image: url("../images/icons/icon-back-white.svg"); | |||
| 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 { | |||
| overflow: hidden; | |||
| .delete-image { | |||
| display: flex; | |||
| 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', | |||
| 'lastName' => 'Nordstrøm', | |||
| 'password' => '12spawntree345', | |||
| 'roles' => ['ROLE_ADMIN'] | |||
| 'roles' => ['ROLE_ADMIN'], | |||
| 'reference_id' => 1 | |||
| ] | |||
| ); | |||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | |||
| @@ -53,7 +54,8 @@ class AppFixtures extends Fixture | |||
| 'firstName' => 'Daniel', | |||
| 'lastName' => 'Knudsen', | |||
| 'password' => '12spawntree345', | |||
| 'roles' => ['ROLE_ADMIN'] | |||
| 'roles' => ['ROLE_ADMIN'], | |||
| 'reference_id' => 1 | |||
| ] | |||
| ); | |||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | |||
| @@ -66,7 +68,8 @@ class AppFixtures extends Fixture | |||
| 'lastName' => 'Eisenmenger', | |||
| 'password' => '12spawntree345', | |||
| 'image' => MediaObjectFactory::createOne(), | |||
| 'roles' => ['ROLE_ADMIN'] | |||
| 'roles' => ['ROLE_ADMIN'], | |||
| 'reference_id' => 1 | |||
| ] | |||
| ); | |||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | |||
| @@ -79,7 +82,8 @@ class AppFixtures extends Fixture | |||
| 'lastName' => 'Pilot1', | |||
| 'password' => '12spawntree345', | |||
| 'image' => MediaObjectFactory::createOne(), | |||
| 'roles' => ['ROLE_USER'] | |||
| 'roles' => ['ROLE_USER'], | |||
| 'reference_id' => 1 | |||
| ] | |||
| ); | |||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | |||
| @@ -87,12 +91,13 @@ class AppFixtures extends Fixture | |||
| UserFactory::createOne( | |||
| [ | |||
| 'email' => 'pilot1@spawntree.de', | |||
| 'email' => 'pilot2@spawntree.de', | |||
| 'firstName' => 'Pilot2', | |||
| 'lastName' => 'Pilot2', | |||
| 'password' => '12spawntree345', | |||
| 'image' => MediaObjectFactory::createOne(), | |||
| 'roles' => ['ROLE_USER'] | |||
| 'roles' => ['ROLE_USER'], | |||
| 'reference_id' => 1 | |||
| ] | |||
| ); | |||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | |||
| @@ -100,12 +105,13 @@ class AppFixtures extends Fixture | |||
| UserFactory::createOne( | |||
| [ | |||
| 'email' => 'pilot1@spawntree.de', | |||
| 'email' => 'pilot3@spawntree.de', | |||
| 'firstName' => 'Pilot3', | |||
| 'lastName' => 'Pilot3', | |||
| 'password' => '12spawntree345', | |||
| 'image' => MediaObjectFactory::createOne(), | |||
| 'roles' => ['ROLE_USER'] | |||
| 'roles' => ['ROLE_USER'], | |||
| 'reference_id' => 1 | |||
| ] | |||
| ); | |||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | |||
| @@ -113,12 +119,13 @@ class AppFixtures extends Fixture | |||
| UserFactory::createOne( | |||
| [ | |||
| 'email' => 'pilot1@spawntree.de', | |||
| 'email' => 'pilot4@spawntree.de', | |||
| 'firstName' => 'Pilot4', | |||
| 'lastName' => 'Pilot4', | |||
| 'password' => '12spawntree345', | |||
| 'image' => MediaObjectFactory::createOne(), | |||
| 'roles' => ['ROLE_USER'] | |||
| 'roles' => ['ROLE_USER'], | |||
| 'reference_id' => 1 | |||
| ] | |||
| ); | |||
| $system->_set('image', MediaObjectFactory::createOne()->_real()); | |||