Merge remote-tracking branch 'origin/master'

pull/8/head
FlayInAHook 4 years ago
commit f921f7897a

@ -63,8 +63,8 @@ export class AppComponent {
} }
logout() { logout() {
this.navService.closeNav();
this.authService.logout().subscribe().add(() => this.router.navigate(['login'])); this.authService.logout().subscribe().add(() => this.router.navigate(['login']));
this.sideNav.close();
} }
ngAfterViewInit() { ngAfterViewInit() {

@ -1,4 +1,4 @@
<div routerLink = "/profile" > <div routerLink = "/profile" class="sidenav-profile">
<img class="navbar-photo" src={{profileURL}}> <img class="navbar-photo" src={{profileURL}}>
<p>{{name}}</p> <p>{{name}}</p>
<p>{{email}}</p> <p>{{email}}</p>

@ -5,4 +5,8 @@
height:100px; height:100px;
border-radius:50%; border-radius:50%;
margin-top:10px; margin-top:10px;
}
.sidenav-profile {
outline: none;
} }

@ -0,0 +1,137 @@
import {async, TestBed} from '@angular/core/testing';
import {CellComponent} from './cell.component';
import {DatePipe} from '@angular/common';
describe('CellComponent', () => {
let fixture, cell;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [CellComponent],
providers: [DatePipe]
});
fixture = TestBed.createComponent(CellComponent);
cell = fixture.componentInstance;
});
it('should accept value true', async(() => {
cell._value = true;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._value).toBe(true);
});
}));
it('should set value true', async(() => {
cell.value = true;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._value).toBe(true);
});
}));
it('should return value false', async(() => {
cell._value = false;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.value).toBe(false);
});
}));
it('should accept editable true', async(() => {
cell._editable = true;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._editable).toBe(true);
});
}));
it('should set editable false', async(() => {
cell.editable = false;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._editable).toBe(false);
});
}));
it('should return editable false', async(() => {
cell._editable = false;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.editable).toBe(false);
});
}));
it('should accept input type String', async(() => {
cell._inputType = 'String';
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._inputType).toBe('String');
});
}));
it('should set input type String', async(() => {
cell.inputType = 'String';
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._inputType).toBe('String');
});
}));
it('should return input type String', async(() => {
cell._inputType = 'String';
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.inputType).toBe('String');
});
}));
it('should accept required true', async(() => {
cell._required = true;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._required).toBe(true);
});
}));
it('should set required false', async(() => {
cell.required = false;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._required).toBe(false);
});
}));
it('should return required true', async(() => {
cell._required = true;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.required).toBe(true);
});
}));
it('should return html input type text', async(() => {
cell.getHtmlInputType('String');
expect(cell.htmlInputType).toBe('text');
}));
it('should return html input type enum', async(() => {
cell.getHtmlInputType('Enum');
expect(cell.htmlInputType).toBe('enum');
}));
it('should return html input type number', async(() => {
cell.getHtmlInputType('Int');
expect(cell.htmlInputType).toBe('number');
}));
it('should return html input type boolean', async(() => {
cell.getHtmlInputType('Boolean');
expect(cell.htmlInputType).toBe('boolean');
}));
});

@ -0,0 +1,50 @@
import {async, TestBed} from "@angular/core/testing";
import {CellComponent} from "../cell/cell.component";
import {DatePipe} from "@angular/common";
import {DateRangeCellComponent} from "./date-range-cell.component";
describe('DateRangeCellComponent', () => {
let fixture, daterangecell;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [DateRangeCellComponent],
providers: [DatePipe]
});
fixture = TestBed.createComponent(DateRangeCellComponent);
daterangecell = fixture.componentInstance;
});
it('should set from date value', async(() => {
let event = {
value: '2020-11-23'
};
daterangecell.startDateChange(event);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(daterangecell.from).toBe('2020-11-23');
});
}));
it('should set to date value', async(() => {
let event = {
value: '2020-11-23'
};
daterangecell.endDateChange(event);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(daterangecell.to).toBe('2020-11-23');
});
}));
it('should transform 23-Nov-2020 to 2020-11.23', async(() => {
expect(daterangecell.transformDate('23-Nov-2020')).toBe('2020-11-23');
}));
it('should return 2020-11-23 as 23.11.2020 ', async(() => {
expect(daterangecell.toLocaleDate('2020-11-23')).toBe('23.11.2020');
}));
});

@ -0,0 +1,139 @@
import {async, TestBed} from '@angular/core/testing';
import {DatePipe} from '@angular/common';
import {NumberRangeCellComponent} from './number-range-cell.component';
import {FormControl, FormGroup} from '@angular/forms';
describe('NumberRangeCellComponent', () => {
let fixture, cell;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [NumberRangeCellComponent],
providers: [DatePipe]
});
fixture = TestBed.createComponent(NumberRangeCellComponent);
cell = fixture.componentInstance;
});
it('should set minimum value as 0', async(() => {
cell.min = 0;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._min).toBe(0);
});
}));
it('should return minimum value 0', async(() => {
cell._min = 0;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.min).toBe(0);
});
}));
it('should set max value as 100', async(() => {
cell.max = 100;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._max).toBe(100);
});
}));
it('should return max value 100', async(() => {
cell._max = 100;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.max).toBe(100);
});
}));
it('should set editable true', async(() => {
cell.editable = true;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell._editable).toBe(true);
});
}));
it('should change min value, from event with value -5, to 5', async(() => {
const targ = {
value: -5
};
const event = {
target: targ
};
let rangeForm = new FormGroup({
minValue: new FormControl(),
maxValue: new FormControl(),
});
cell.rangeForm = rangeForm;
cell.minValueChange(event);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.min).toBe(5);
});
}));
it('should change max value, from event with value -100, to 100', async(() => {
const targ = {
value: -100
};
const event = {
target: targ
};
let rangeForm = new FormGroup({
minValue: new FormControl(),
maxValue: new FormControl(),
});
cell.rangeForm = rangeForm;
cell.maxValueChange(event);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(cell.max).toBe(100);
});
}));
it('should set rangeError at check for invalid range of min 50 and max 10', async(() => {
let rangeForm = new FormGroup({
minValue: new FormControl(),
maxValue: new FormControl(),
});
cell.rangeForm = rangeForm;
cell.min = 50;
cell.max = 10;
cell.checkIfRangeIsValid();
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(rangeForm.controls['minValue'].errors.rangeError).toBe(true);
expect(rangeForm.controls['maxValue'].errors.rangeError).toBe(true);
});
}));
it('should set rangeError for parameter true', async(() => {
let rangeForm = new FormGroup({
minValue: new FormControl(),
maxValue: new FormControl(),
});
cell.rangeForm = rangeForm;
cell.setRangeError(true);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(rangeForm.controls['minValue'].errors.rangeError).toBe(true);
expect(rangeForm.controls['maxValue'].errors.rangeError).toBe(true);
});
}));
it('should return 5 from string -5', async(() => {
expect(cell.toPositiveNumber('-5')).toBe(5);
}));
it('should return null from string "" ', async(() => {
expect(cell.toPositiveNumber('')).toBe(null);
}));
});

@ -1,7 +1,9 @@
fragment ParticipantFieldsForBikePage on Participant { fragment ParticipantFieldsForBikePage on Participant {
id id
start dateRange {
end from
to
}
usernamefLotte usernamefLotte
usernameSlack usernameSlack
contactInformation { contactInformation {

@ -226,10 +226,14 @@ export class BikeComponent implements OnInit {
dataService: null, dataService: null,
columnInfo: [ columnInfo: [
{ dataPath: 'dateRange', translation: 'Zeitraum' }, { dataPath: 'dateRange', translation: 'Zeitraum' },
{ dataPath: 'lendingStation.name', translation: 'Standort' }, {
dataPath: 'lendingStation.name',
translation: 'Standort',
link: (row) => '/lendingStation/' + row["lendingStation.id"],
},
], ],
editableReferences: false, editableReferences: false,
linkToTable: (element) => '/table/timeFrames', linkToTable: () => '/table/timeFrames',
linkToTableParams: (bike) => { linkToTableParams: (bike) => {
return { filter: bike.name }; return { filter: bike.name };
}, },
@ -237,7 +241,7 @@ export class BikeComponent implements OnInit {
]; ];
headlineDataPath = 'name'; headlineDataPath = 'name';
headlineIconName = 'directions_bike' headlineIconName = 'directions_bike';
pageDataGQLType: string = 'CargoBike'; pageDataGQLType: string = 'CargoBike';
pageDataGQLUpdateInputType: string = 'CargoBikeUpdateInput'; pageDataGQLUpdateInputType: string = 'CargoBikeUpdateInput';

@ -43,7 +43,9 @@ export class LendingStationComponent implements OnInit {
' ' + ' ' +
contact.email + contact.email +
' ' + ' ' +
contact.phone contact.phone +
' ' +
contact.note
); );
}, },
propertyPrefixToOverwrite: 'contactInformationIntern', propertyPrefixToOverwrite: 'contactInformationIntern',
@ -85,7 +87,9 @@ export class LendingStationComponent implements OnInit {
' ' + ' ' +
contact.email + contact.email +
' ' + ' ' +
contact.phone contact.phone +
' ' +
contact.note
); );
}, },
propertyPrefixToOverwrite: 'contactInformationExtern', propertyPrefixToOverwrite: 'contactInformationExtern',
@ -115,26 +119,6 @@ export class LendingStationComponent implements OnInit {
{ dataPath: 'contactInformationExtern.note', translation: 'Anmerkung' }, { dataPath: 'contactInformationExtern.note', translation: 'Anmerkung' },
], ],
}, },
/*
{
type: 'ReferenceTable',
title: 'Equipment',
dataPath: 'equipment',
dataService: null,
columnInfo: [
{ dataPath: 'serialNo', translation: 'Seriennummer' },
{ dataPath: 'title', translation: 'Name' },
{ dataPath: 'description', translation: 'Beschreibung' },
],
nameToShowInSelection: (element) => {
return element.title + ' (' + element.serialNo + ')';
},
linkToTable: (element) => '/table/equipment',
linkToTableParams: (lendingStation) => {
return { filter: lendingStation.name };
},
propertyNameOfUpdateInput: 'equipmentIds',
},
{ {
type: 'ReferenceTable', type: 'ReferenceTable',
title: 'Zeitscheiben', title: 'Zeitscheiben',
@ -142,14 +126,18 @@ export class LendingStationComponent implements OnInit {
dataService: null, dataService: null,
columnInfo: [ columnInfo: [
{ dataPath: 'dateRange', translation: 'Zeitraum' }, { dataPath: 'dateRange', translation: 'Zeitraum' },
{ dataPath: 'lendingStation.name', translation: 'Standort' }, {
dataPath: 'cargoBike.name',
translation: 'Lastenrad',
link: (row) => '/bike/' + row['cargoBike.id'],
},
], ],
editableReferences: false, editableReferences: false,
linkToTable: (element) => '/table/timeFrames', linkToTable: () => '/table/timeFrames',
linkToTableParams: (lendingStation) => { linkToTableParams: (lendingStation) => {
return { filter: lendingStation.name }; return { filter: lendingStation.name };
}, },
},*/ },
]; ];
headlineDataPath = 'name'; headlineDataPath = 'name';
@ -163,9 +151,6 @@ export class LendingStationComponent implements OnInit {
private lendingStationsService: LendingStationsService, private lendingStationsService: LendingStationsService,
private contactInformationService: ContactInformationService private contactInformationService: ContactInformationService
) { ) {
/*this.propertiesInfo.find(
(prop) => prop.dataPath === 'equipmentType'
).dataService = this.equipmentTypeService;*/
this.contactInformationService.loadTableData(); this.contactInformationService.loadTableData();
this.contactInformationService.tableData.subscribe((data) => { this.contactInformationService.tableData.subscribe((data) => {
this.propertiesInfo.find( this.propertiesInfo.find(

@ -1,41 +1,46 @@
<div id="login-form"> <div id="login-wrapper">
<h1>fLotte Login</h1> <h1>fLotte Login</h1>
<mat-form-field (keyup.enter)="login()"> <form id="login-form">
<mat-label>E-Mail-Adresse eingeben</mat-label> <mat-form-field (keyup.enter)="login()">
<input matInput placeholder="fLotte@beispiel.de" [formControl]="email" /> <mat-label>E-Mail-Adresse eingeben</mat-label>
<mat-error *ngIf="email.hasError('required')"> <input matInput placeholder="fLotte@beispiel.de" autocomplete="email" [formControl]="email" />
Bitte geben Sie eine E-Mail-Adresse ein. <mat-error *ngIf="email.hasError('required')">
</mat-error> Bitte geben Sie eine E-Mail-Adresse ein.
<mat-error *ngIf="email.hasError('email')"> </mat-error>
Bitte geben Sie eine valide E-Mail-Adresse ein. <mat-error *ngIf="email.hasError('email')">
</mat-error> Bitte geben Sie eine valide E-Mail-Adresse ein.
</mat-form-field> </mat-error>
</mat-form-field>
<mat-form-field (keyup.enter)="login()"> <mat-form-field (keyup.enter)="login()">
<mat-label>Passwort eingeben</mat-label> <mat-label>Passwort eingeben</mat-label>
<input <input
matInput matInput
[type]="hide ? 'password' : 'text'" autocomplete="password"
[formControl]="password" [type]="hide ? 'password' : 'text'"
/> [formControl]="password"
<mat-error *ngIf="password.hasError('required')"> />
Bitte geben Sie Ihr Passwort ein. <mat-error *ngIf="password.hasError('required')">
</mat-error> Bitte geben Sie Ihr Passwort ein.
<button </mat-error>
mat-icon-button <button
matSuffix mat-icon-button
(click)="hide = !hide" matSuffix
[attr.aria-label]="'Hide password'" (click)="hide = !hide"
[attr.aria-pressed]="hide" [attr.aria-label]="'Hide password'"
> [attr.aria-pressed]="hide"
<mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon> >
</button> <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
</mat-form-field> </button>
<mat-progress-bar mode="indeterminate" id="loading-bar" *ngIf="loading"></mat-progress-bar> </mat-form-field>
<button mat-stroked-button color="primary" (click)="login()"> </form>
Login <mat-progress-bar
</button> mode="indeterminate"
id="loading-bar"
*ngIf="loading"
></mat-progress-bar>
<button mat-stroked-button color="primary" (click)="login()">Login</button>
<mat-error class="login-error-message" *ngIf="errorOccurred"> <mat-error class="login-error-message" *ngIf="errorOccurred">
{{errorMessage}} {{ errorMessage }}
</mat-error> </mat-error>
</div> </div>

@ -1,4 +1,7 @@
#login-form { #login-wrapper {
#login-form {
display: contents;
}
display: flex; display: flex;
flex-direction: column; flex-direction: column;
max-width: 32em; max-width: 32em;

@ -13,8 +13,6 @@ export class AuthService {
private currentUserSubject: BehaviorSubject<AuthUser>; private currentUserSubject: BehaviorSubject<AuthUser>;
public currentUser: Observable<AuthUser>; public currentUser: Observable<AuthUser>;
public loggedIn: BehaviorSubject<boolean>; public loggedIn: BehaviorSubject<boolean>;
private readonly REQUEST_TOKEN = 'requestToken';
private readonly REFRESH_TOKEN = 'refreshToken';
private readonly CURRENT_USER = 'currentUser'; private readonly CURRENT_USER = 'currentUser';
constructor(private http: HttpClient) { constructor(private http: HttpClient) {
@ -38,7 +36,7 @@ export class AuthService {
} }
private checkIfUserIsLoggedIn(): void { private checkIfUserIsLoggedIn(): void {
this.loggedIn.next(!!this.getRequestToken()); this.loggedIn.next(!!localStorage.getItem(this.CURRENT_USER));
} }
public getRequestToken(): string { public getRequestToken(): string {
@ -74,6 +72,7 @@ export class AuthService {
finalize(() => { finalize(() => {
this.removeTokens(); this.removeTokens();
this.checkIfUserIsLoggedIn(); this.checkIfUserIsLoggedIn();
}) })
); );
} }

@ -6,7 +6,7 @@ import jsonSchema from 'src/generated/graphql.schema.json';
}) })
export class SchemaService { export class SchemaService {
/** expects startingObject and variablePath and returns its type e.g. cargoBike, security.name -> returns the type of the name variable */ /** expects startingObject and variablePath and returns its type e.g. cargoBike, security.name -> returns the type of the name variable */
getPropertyTypeFromSchema( /*getPropertyTypeFromSchema(
startingObjectName: string, startingObjectName: string,
variable: string variable: string
): string { ): string {
@ -38,7 +38,7 @@ export class SchemaService {
variablePath.slice(1).join('.') variablePath.slice(1).join('.')
); );
} }
} }*/
getEnumValuesFromSchema(typeName: string): string[] { getEnumValuesFromSchema(typeName: string): string[] {
const types = jsonSchema.__schema.types; const types = jsonSchema.__schema.types;
@ -67,7 +67,7 @@ export class SchemaService {
if (!field) { if (!field) {
return { isPartOfType: false, type: '', isRequired: false }; return { isPartOfType: false, type: '', isRequired: false };
} }
const type = field.type.name || field.type.ofType.name; const type = this.getTypeNameFromTypeObject(field.type);
if (variablePath.length === 1) { if (variablePath.length === 1) {
const isRequired = field.type.kind === 'NON_NULL'; const isRequired = field.type.kind === 'NON_NULL';
if ( if (
@ -94,6 +94,14 @@ export class SchemaService {
} }
} }
private getTypeNameFromTypeObject(typeObject: any) {
let object =typeObject;
while (object.name == null && object.ofType != null) {
object = object.ofType;
}
return object.name;
}
filterObject(graphQLTypeName: string, object: object): any { filterObject(graphQLTypeName: string, object: object): any {
let filteredObject; let filteredObject;
if (Array.isArray(object)) { if (Array.isArray(object)) {

@ -75,9 +75,13 @@
"description": "see column A in info tabelle", "description": "see column A in info tabelle",
"args": [], "args": [],
"type": { "type": {
"kind": "ENUM", "kind": "NON_NULL",
"name": "Group", "name": null,
"ofType": null "ofType": {
"kind": "ENUM",
"name": "Group",
"ofType": null
}
}, },
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
@ -2374,33 +2378,21 @@
"deprecationReason": null "deprecationReason": null
}, },
{ {
"name": "start", "name": "dateRange",
"description": null, "description": null,
"args": [], "args": [],
"type": { "type": {
"kind": "NON_NULL", "kind": "NON_NULL",
"name": null, "name": null,
"ofType": { "ofType": {
"kind": "SCALAR", "kind": "OBJECT",
"name": "Date", "name": "DateRange",
"ofType": null "ofType": null
} }
}, },
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{
"name": "end",
"description": null,
"args": [],
"type": {
"kind": "SCALAR",
"name": "Date",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{ {
"name": "contactInformation", "name": "contactInformation",
"description": null, "description": null,
@ -2610,22 +2602,16 @@
"fields": null, "fields": null,
"inputFields": [ "inputFields": [
{ {
"name": "start", "name": "dateRange",
"description": "if not set, CURRENT_DATE will be used", "description": "if not set, CURRENT_DATE will be used",
"type": { "type": {
"kind": "SCALAR", "kind": "NON_NULL",
"name": "Date", "name": null,
"ofType": null "ofType": {
}, "kind": "INPUT_OBJECT",
"defaultValue": null "name": "DateRangeInput",
}, "ofType": null
{ }
"name": "end",
"description": null,
"type": {
"kind": "SCALAR",
"name": "Date",
"ofType": null
}, },
"defaultValue": null "defaultValue": null
}, },
@ -2745,21 +2731,11 @@
"defaultValue": null "defaultValue": null
}, },
{ {
"name": "start", "name": "dateRange",
"description": "if not set, CURRENT_DATE will be used",
"type": {
"kind": "SCALAR",
"name": "Date",
"ofType": null
},
"defaultValue": null
},
{
"name": "end",
"description": null, "description": null,
"type": { "type": {
"kind": "SCALAR", "kind": "INPUT_OBJECT",
"name": "Date", "name": "DateRangeInput",
"ofType": null "ofType": null
}, },
"defaultValue": null "defaultValue": null
@ -3769,9 +3745,13 @@
"name": "dateRange", "name": "dateRange",
"description": null, "description": null,
"type": { "type": {
"kind": "INPUT_OBJECT", "kind": "NON_NULL",
"name": "DateRangeInput", "name": null,
"ofType": null "ofType": {
"kind": "INPUT_OBJECT",
"name": "DateRangeInput",
"ofType": null
}
}, },
"defaultValue": null "defaultValue": null
}, },

@ -39,7 +39,7 @@ export type CargoBike = {
__typename?: 'CargoBike'; __typename?: 'CargoBike';
id: Scalars['ID']; id: Scalars['ID'];
/** see column A in info tabelle */ /** see column A in info tabelle */
group?: Maybe<Group>; group: Group;
name: Scalars['String']; name: Scalars['String'];
state?: Maybe<BikeState>; state?: Maybe<BikeState>;
modelName?: Maybe<Scalars['String']>; modelName?: Maybe<Scalars['String']>;
@ -406,8 +406,7 @@ export enum Group {
export type Participant = { export type Participant = {
__typename?: 'Participant'; __typename?: 'Participant';
id: Scalars['ID']; id: Scalars['ID'];
start: Scalars['Date']; dateRange: DateRange;
end?: Maybe<Scalars['Date']>;
contactInformation: ContactInformation; contactInformation: ContactInformation;
usernamefLotte?: Maybe<Scalars['String']>; usernamefLotte?: Maybe<Scalars['String']>;
usernameSlack?: Maybe<Scalars['String']>; usernameSlack?: Maybe<Scalars['String']>;
@ -432,8 +431,7 @@ export type Participant = {
export type ParticipantCreateInput = { export type ParticipantCreateInput = {
/** if not set, CURRENT_DATE will be used */ /** if not set, CURRENT_DATE will be used */
start?: Maybe<Scalars['Date']>; dateRange: DateRangeInput;
end?: Maybe<Scalars['Date']>;
/** must create contactinformation first, if you want to use new */ /** must create contactinformation first, if you want to use new */
contactInformationId: Scalars['ID']; contactInformationId: Scalars['ID'];
usernamefLotte?: Maybe<Scalars['String']>; usernamefLotte?: Maybe<Scalars['String']>;
@ -448,9 +446,7 @@ export type ParticipantCreateInput = {
export type ParticipantUpdateInput = { export type ParticipantUpdateInput = {
id: Scalars['ID']; id: Scalars['ID'];
/** if not set, CURRENT_DATE will be used */ dateRange?: Maybe<DateRangeInput>;
start?: Maybe<Scalars['Date']>;
end?: Maybe<Scalars['Date']>;
/** must create contactinformation first, if you want to use new */ /** must create contactinformation first, if you want to use new */
contactInformationId?: Maybe<Scalars['ID']>; contactInformationId?: Maybe<Scalars['ID']>;
usernamefLotte?: Maybe<Scalars['String']>; usernamefLotte?: Maybe<Scalars['String']>;
@ -562,7 +558,7 @@ export type Engagement = {
export type EngagementCreateInput = { export type EngagementCreateInput = {
engagementTypeId: Scalars['ID']; engagementTypeId: Scalars['ID'];
dateRange?: Maybe<DateRangeInput>; dateRange: DateRangeInput;
participantId: Scalars['ID']; participantId: Scalars['ID'];
cargoBikeId: Scalars['ID']; cargoBikeId: Scalars['ID'];
}; };
@ -2014,7 +2010,7 @@ export type DeleteEquipmentTypeMutation = { __typename?: 'Mutation', deleteEquip
export type AddressFieldsFragment = { __typename?: 'Address', street: string, number: string, zip: string }; export type AddressFieldsFragment = { __typename?: 'Address', street: string, number: string, zip: string };
export type CargoBikeFieldsForTableFragment = { __typename?: 'CargoBike', id: string, group?: Maybe<Group>, name: string, modelName?: Maybe<string>, state?: Maybe<BikeState>, numberOfChildren?: Maybe<number>, numberOfWheels?: Maybe<number>, forCargo?: Maybe<boolean>, forChildren?: Maybe<boolean>, stickerBikeNameState?: Maybe<StickerBikeNameState>, note?: Maybe<string>, isLocked: boolean, isLockedByMe: boolean, lockedBy?: Maybe<string>, lockedUntil?: Maybe<any>, insuranceData?: Maybe<{ __typename?: 'InsuranceData', billing?: Maybe<string>, hasFixedRate?: Maybe<boolean>, name?: Maybe<string>, benefactor?: Maybe<string>, noPnP?: Maybe<string>, maintenanceResponsible?: Maybe<string>, maintenanceBenefactor?: Maybe<string>, maintenanceAgreement?: Maybe<string>, fixedRate?: Maybe<number>, projectAllowance?: Maybe<any>, notes?: Maybe<string> }>, dimensionsAndLoad?: Maybe<{ __typename?: 'DimensionsAndLoad', bikeLength?: Maybe<number>, bikeWeight?: Maybe<number>, bikeHeight?: Maybe<number>, bikeWidth?: Maybe<number>, hasCoverBox?: Maybe<boolean>, lockable?: Maybe<boolean>, maxWeightBox?: Maybe<number>, maxWeightLuggageRack?: Maybe<number>, maxWeightTotal?: Maybe<number>, boxHeightRange?: Maybe<{ __typename?: 'NumRange', max?: Maybe<number>, min?: Maybe<number> }>, boxLengthRange?: Maybe<{ __typename?: 'NumRange', min?: Maybe<number>, max?: Maybe<number> }>, boxWidthRange?: Maybe<{ __typename?: 'NumRange', min?: Maybe<number>, max?: Maybe<number> }> }>, security?: Maybe<{ __typename?: 'Security', frameNumber?: Maybe<string>, adfcCoding?: Maybe<string>, keyNumberAXAChain?: Maybe<string>, keyNumberFrameLock?: Maybe<string>, policeCoding?: Maybe<string> }>, technicalEquipment?: Maybe<{ __typename?: 'TechnicalEquipment', bicycleShift?: Maybe<string>, isEBike?: Maybe<boolean>, hasLightSystem?: Maybe<boolean>, specialFeatures?: Maybe<string> }>, taxes?: Maybe<{ __typename?: 'Taxes', costCenter?: Maybe<string>, organisationArea?: Maybe<OrganisationArea> }>, provider?: Maybe<( export type CargoBikeFieldsForTableFragment = { __typename?: 'CargoBike', id: string, group: Group, name: string, modelName?: Maybe<string>, state?: Maybe<BikeState>, numberOfChildren?: Maybe<number>, numberOfWheels?: Maybe<number>, forCargo?: Maybe<boolean>, forChildren?: Maybe<boolean>, stickerBikeNameState?: Maybe<StickerBikeNameState>, note?: Maybe<string>, isLocked: boolean, isLockedByMe: boolean, lockedBy?: Maybe<string>, lockedUntil?: Maybe<any>, insuranceData?: Maybe<{ __typename?: 'InsuranceData', billing?: Maybe<string>, hasFixedRate?: Maybe<boolean>, name?: Maybe<string>, benefactor?: Maybe<string>, noPnP?: Maybe<string>, maintenanceResponsible?: Maybe<string>, maintenanceBenefactor?: Maybe<string>, maintenanceAgreement?: Maybe<string>, fixedRate?: Maybe<number>, projectAllowance?: Maybe<any>, notes?: Maybe<string> }>, dimensionsAndLoad?: Maybe<{ __typename?: 'DimensionsAndLoad', bikeLength?: Maybe<number>, bikeWeight?: Maybe<number>, bikeHeight?: Maybe<number>, bikeWidth?: Maybe<number>, hasCoverBox?: Maybe<boolean>, lockable?: Maybe<boolean>, maxWeightBox?: Maybe<number>, maxWeightLuggageRack?: Maybe<number>, maxWeightTotal?: Maybe<number>, boxHeightRange?: Maybe<{ __typename?: 'NumRange', max?: Maybe<number>, min?: Maybe<number> }>, boxLengthRange?: Maybe<{ __typename?: 'NumRange', min?: Maybe<number>, max?: Maybe<number> }>, boxWidthRange?: Maybe<{ __typename?: 'NumRange', min?: Maybe<number>, max?: Maybe<number> }> }>, security?: Maybe<{ __typename?: 'Security', frameNumber?: Maybe<string>, adfcCoding?: Maybe<string>, keyNumberAXAChain?: Maybe<string>, keyNumberFrameLock?: Maybe<string>, policeCoding?: Maybe<string> }>, technicalEquipment?: Maybe<{ __typename?: 'TechnicalEquipment', bicycleShift?: Maybe<string>, isEBike?: Maybe<boolean>, hasLightSystem?: Maybe<boolean>, specialFeatures?: Maybe<string> }>, taxes?: Maybe<{ __typename?: 'Taxes', costCenter?: Maybe<string>, organisationArea?: Maybe<OrganisationArea> }>, provider?: Maybe<(
{ __typename?: 'Provider' } { __typename?: 'Provider' }
& ProviderFieldsGeneralFragment & ProviderFieldsGeneralFragment
)>, lendingStation?: Maybe<( )>, lendingStation?: Maybe<(
@ -2116,7 +2112,7 @@ export type OrganisationFieldsGeneralFragment = { __typename?: 'Organisation', i
& AddressFieldsFragment & AddressFieldsFragment
)> }; )> };
export type ParticipantFieldsForBikePageFragment = { __typename?: 'Participant', id: string, start: any, end?: Maybe<any>, usernamefLotte?: Maybe<string>, usernameSlack?: Maybe<string>, isLocked: boolean, isLockedByMe: boolean, lockedBy?: Maybe<string>, lockedUntil?: Maybe<any>, contactInformation: ( export type ParticipantFieldsForBikePageFragment = { __typename?: 'Participant', id: string, usernamefLotte?: Maybe<string>, usernameSlack?: Maybe<string>, isLocked: boolean, isLockedByMe: boolean, lockedBy?: Maybe<string>, lockedUntil?: Maybe<any>, dateRange: { __typename?: 'DateRange', from: any, to?: Maybe<any> }, contactInformation: (
{ __typename?: 'ContactInformation' } { __typename?: 'ContactInformation' }
& ContactInformationFieldsGeneralFragment & ContactInformationFieldsGeneralFragment
) }; ) };
@ -2457,8 +2453,10 @@ export const ContactInformationFieldsGeneralFragmentDoc = gql`
export const ParticipantFieldsForBikePageFragmentDoc = gql` export const ParticipantFieldsForBikePageFragmentDoc = gql`
fragment ParticipantFieldsForBikePage on Participant { fragment ParticipantFieldsForBikePage on Participant {
id id
start dateRange {
end from
to
}
usernamefLotte usernamefLotte
usernameSlack usernameSlack
contactInformation { contactInformation {

Loading…
Cancel
Save