Improve data page

urls
Max Ehrlicher-Schmidt 4 years ago
parent 14c080195e
commit 6ec98d868c

@ -11,15 +11,18 @@
<h1>
{{ data[headlineDataPath] }}
</h1>
<ng-container *ngFor="let object of propertiesInfo">
<mat-card class="card" *ngIf="object.isGroup">
<mat-card-title>{{object.title}}</mat-card-title>
<div *ngFor="let prop of propertiesInfo">
<app-cell
<app-cell *ngFor="let prop of object.properties"
[editable]="data.isLockedByMe && !prop.readonly"
[(value)]="data[prop.name]"
[label]="prop.translation || prop.name"
[inputType]="prop.type"
></app-cell>
</div>
</mat-card>
</ng-container>
</div>
<button
@ -33,6 +36,7 @@
<mat-icon>sync</mat-icon>
</button>
<div id="floating-fab-button-box">
<button
mat-fab
(click)="lock()"
@ -43,6 +47,15 @@
>
<mat-icon>edit</mat-icon>
</button>
<button
mat-mini-fab
(click)="cancel()"
*ngIf="data.isLockedByMe"
class="floating-fab-button"
[disabled]="isSavingOrLocking || isLoading"
>
<mat-icon>cancel</mat-icon>
</button>
<button
mat-fab
(click)="save()"
@ -60,3 +73,4 @@
>
<mat-icon>locked</mat-icon>
</button>
</div>

@ -6,11 +6,22 @@
box-sizing: border-box;
overflow: auto;
padding: 2em;
.card {
display: inline-table;
width: 20em;
margin: 1em;
}
}
.floating-fab-button {
#floating-fab-button-box {
position: absolute;
bottom: 2em;
right: 2em;
display: flex;
flex-direction: column;
align-items: center;
.floating-fab-button {
margin-top: 0.5em;
}
}
.floating-fab-button-top {
position: absolute;

@ -1,17 +1,21 @@
import {
AfterViewInit,
Component,
EventEmitter,
Input,
OnInit,
Output,
} from '@angular/core';
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { deepen } from 'src/app/helperFunctions/deepenObject';
import { flatten } from 'src/app/helperFunctions/flattenObject';
import { BikesService } from 'src/app/services/bikes.service';
import { SchemaService } from 'src/app/services/schema.service';
import { runInThisContext } from 'vm';
interface PropertyInfoType {
name: string;
translation: string;
readonly?: boolean;
type?: string;
}
interface PropertyGroup {
isGroup: boolean;
title: string;
properties: PropertyInfoType[];
}
@Component({
selector: 'app-data-page',
@ -20,12 +24,7 @@ import { runInThisContext } from 'vm';
})
export class DataPageComponent implements OnInit {
@Input()
propertiesInfo: {
name: string;
translation: string;
readonly?: boolean;
type?: string;
}[] = [];
propertiesInfo: Array<PropertyInfoType | PropertyGroup> = [];
@Input()
dataService: any;
@ -39,6 +38,7 @@ export class DataPageComponent implements OnInit {
@Output() lockEvent = new EventEmitter();
@Output() saveEvent = new EventEmitter();
@Output() cancelEvent = new EventEmitter();
id: string;
data: any;
@ -51,7 +51,7 @@ export class DataPageComponent implements OnInit {
) {}
ngOnInit(): void {
this.addPropertiesFromGQLSchemaToPropertiesInfo();
this.addPropertiesFromGQLSchemaToObject(this.propertiesInfo);
this.id = this.route.snapshot.paramMap.get('id');
this.reloadPageData();
this.dataService.pageData.subscribe((data) => {
@ -60,26 +60,27 @@ export class DataPageComponent implements OnInit {
this.dataService.isLoadingPageData.subscribe(
(isLoading) => (this.isLoading = isLoading)
);
this.dataService.loadingRowIds.subscribe(loadingRowIds => {
console.log(loadingRowIds);
this.dataService.loadingRowIds.subscribe((loadingRowIds) => {
this.isSavingOrLocking = loadingRowIds.includes(this.id);
})
});
}
addPropertiesFromGQLSchemaToPropertiesInfo() {
for (const column of this.propertiesInfo) {
addPropertiesFromGQLSchemaToObject(infoObject: any) {
for (const prop of infoObject) {
if (prop.isGroup) {
this.addPropertiesFromGQLSchemaToObject(prop.properties);
} else {
const typeInformation = this.schemaService.getTypeInformation(
this.pageDataGQLType,
column.name
prop.name
);
column.type = column.type || typeInformation.type;
}
for (const column of this.propertiesInfo) {
const typeInformation = this.schemaService.getTypeInformation(
prop.type = prop.type || typeInformation.type;
const updateTypeInformation = this.schemaService.getTypeInformation(
this.pageDataGQLUpdateInputType,
column.name
prop.name
);
column.readonly = column.readonly || !typeInformation.isPartOfType;
prop.readonly = prop.readonly || !updateTypeInformation.isPartOfType;
}
}
}
@ -96,6 +97,10 @@ export class DataPageComponent implements OnInit {
);
}
cancel() {
this.cancelEvent.emit(deepen(this.data))
}
reloadPageData() {
this.dataService.loadPageData({ id: this.id });
}

@ -33,6 +33,10 @@
min-width: 3em;
box-sizing: border-box;
padding: 0 0.25em;
::ng-deep.mat-form-field-infix {
width: auto !important;
min-width: 50px !important;
}
}
::ng-deep.mat-form-field {
width: 100%;
@ -49,5 +53,4 @@
}
}
}
}
}

@ -12,7 +12,6 @@ import { flatten } from 'src/app/helperFunctions/flattenObject';
import { deepen } from 'src/app/helperFunctions/deepenObject';
import { SchemaService } from 'src/app/services/schema.service';
import { logArrayInColumnInfoForm } from 'src/app/helperFunctions/logArrayInColumnInfoForm';
import { MatTableDataSource } from '@angular/material/table';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';

@ -1,4 +0,0 @@
::ng-deep.mat-form-field-infix {
width: auto !important;
min-width: 50px !important;
}

@ -1,5 +1,5 @@
query GetCargoBikes {
cargoBikes(limit: 1000, offset: 0) {
cargoBikes {
...CargoBikeFieldsForTable
}
}

@ -78,13 +78,13 @@ fragment CargoBikeFieldsForPage on CargoBike {
bikeEvents {
...BikeEventFieldsForBikePage
}
equipment(offset: 0, limit: 1000) {
equipment {
...EquipmentFieldsForBikePage
}
equipmentType {
...EquipmentTypeFieldsForBikePage
}
engagement(offset: 0, limit: 1000) {
engagement {
...EngagementFieldsForBikePage
}
currentEngagements {

@ -6,4 +6,5 @@
[pageDataGQLUpdateInputType]="pageDataGQLUpdateInputType"
(lockEvent)="lock($event)"
(saveEvent)="save($event)"
(cancelEvent)="cancel($event)"
></app-data-page>

@ -1,8 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { flatten } from 'src/app/helperFunctions/flattenObject';
import { BikesService } from 'src/app/services/bikes.service';
import { SchemaService } from 'src/app/services/schema.service';
@Component({
selector: 'app-bike',
@ -11,11 +8,24 @@ import { SchemaService } from 'src/app/services/schema.service';
})
export class BikeComponent implements OnInit {
propertiesInfo = [
{
isGroup: true,
title: 'Allgemein',
properties: [
{ name: 'name', translation: 'Name' },
{ name: 'id', translation: 'ID', readonly: true },
{ name: 'group', translation: 'Gruppe' },
{ name: 'modelName', translation: 'Modell' },
{ name: 'insuranceData.billing', translation: 'Versicherung Abrechnung' },
],
},
{
isGroup: true,
title: 'Versicherungsdaten',
properties: [
{
name: 'insuranceData.billing',
translation: 'Versicherung Abrechnung',
},
{ name: 'insuranceData.hasFixedRate', translation: 'Pauschale j/n' },
{ name: 'insuranceData.fixedRate', translation: 'Pauschale Betrag' },
{ name: 'insuranceData.name', translation: 'Versicherer' },
@ -33,8 +43,17 @@ export class BikeComponent implements OnInit {
name: 'insuranceData.maintenanceAgreement',
translation: 'Wartungsvereinbarung',
},
{ name: 'insuranceData.projectAllowance', translation: 'Projektzuschuss' },
{
name: 'insuranceData.projectAllowance',
translation: 'Projektzuschuss',
},
{ name: 'insuranceData.notes', translation: 'Sonstiges' },
],
},
{
isGroup: true,
title: 'Maße und Ladungen',
properties: [
{ name: 'dimensionsAndLoad.bikeLength', translation: 'Länge' },
{ name: 'dimensionsAndLoad.bikeWeight', translation: 'Gewicht' },
{ name: 'dimensionsAndLoad.bikeHeight', translation: 'Höhe' },
@ -42,9 +61,15 @@ export class BikeComponent implements OnInit {
{ name: 'dimensionsAndLoad.boxHeight', translation: 'Boxhöhe' },
{ name: 'dimensionsAndLoad.boxLength', translation: 'Boxlänge' },
{ name: 'dimensionsAndLoad.boxWidth', translation: 'Boxbreite' },
{ name: 'dimensionsAndLoad.hasCoverBox', translation: 'Boxabdeckung j/n' },
{
name: 'dimensionsAndLoad.hasCoverBox',
translation: 'Boxabdeckung j/n',
},
{ name: 'dimensionsAndLoad.lockable', translation: 'Box abschließbar' },
{ name: 'dimensionsAndLoad.maxWeightBox', translation: 'max Zuladung Box' },
{
name: 'dimensionsAndLoad.maxWeightBox',
translation: 'max Zuladung Box',
},
{
name: 'dimensionsAndLoad.maxWeightLuggageRack',
translation: 'max Zuladung Gepäckträger',
@ -57,6 +82,12 @@ export class BikeComponent implements OnInit {
{ name: 'numberOfWheels', translation: 'Anzahl Räder' },
{ name: 'forCargo', translation: 'für Lasten j/n' },
{ name: 'forChildren', translation: 'für Kinder j/n' },
],
},
{
isGroup: true,
title: 'Sicherheitsinformationen',
properties: [
{ name: 'security.frameNumber', translation: 'Rahmennummer' },
{ name: 'security.adfcCoding', translation: 'ADFC Codierung' },
{
@ -68,6 +99,12 @@ export class BikeComponent implements OnInit {
translation: 'Schlüsselnrummer AXA-Kette',
},
{ name: 'security.policeCoding', translation: 'Polizei Codierung' },
],
},
{
isGroup: true,
title: 'Ausstattung',
properties: [
{ name: 'technicalEquipment.bicycleShift', translation: 'Schaltung' },
{ name: 'technicalEquipment.isEBike', translation: 'E-Bike j/n' },
{
@ -78,10 +115,25 @@ export class BikeComponent implements OnInit {
name: 'technicalEquipment.specialFeatures',
translation: 'Besonderheiten',
},
],
},
{
isGroup: true,
title: 'Sonstiges',
properties: [
{ name: 'stickerBikeNameState', translation: 'Aufkleber Status' },
{ name: 'note', translation: 'Aufkleber Kommentar' },
{ name: 'taxes.costCenter', translation: 'Steuern Kostenstelle' },
{ name: 'taxes.organisationArea', translation: 'Steuern Vereinsbereich' },
{
name: 'taxes.organisationArea',
translation: 'Steuern Vereinsbereich',
},
],
},
{
isGroup: true,
title: 'provider',
properties: [
{ name: 'provider.id', translation: '' },
{ name: 'provider.formName', translation: '' },
{ name: 'provider.privatePerson.id', translation: '' },
@ -92,11 +144,19 @@ export class BikeComponent implements OnInit {
name: 'provider.privatePerson.person.contactInformation.email',
translation: '',
},
],
},
{
isGroup: true,
title: 'lendingstation',
properties: [
{ name: 'lendingStation.id', translation: '' },
{ name: 'lendingStation.name', translation: '' },
{ name: 'lendingStation.address.number', translation: '' },
{ name: 'lendingStation.address.street', translation: '' },
{ name: 'lendingStation.address.zip', translation: '' },
],
},
];
headlineDataPath = 'name';
@ -112,10 +172,14 @@ export class BikeComponent implements OnInit {
}
lock(row: any) {
this.bikesService.lockBike({id: row.id});
this.bikesService.lockBike({ id: row.id });
}
save(row: any) {
this.bikesService.updateBike({bike: row})
this.bikesService.updateBike({ bike: row });
}
cancel(row: any) {
this.bikesService.unlockBike({ id: row.id });
}
}

File diff suppressed because it is too large Load Diff

@ -52,7 +52,9 @@ export type CargoBike = {
technicalEquipment?: Maybe<TechnicalEquipment>;
/** Does not refer to an extra table in the database. */
dimensionsAndLoad: DimensionsAndLoad;
/** If offset or limit is not provided, both values are ignored */
bikeEvents?: Maybe<Array<Maybe<BikeEvent>>>;
/** If offset or limit is not provided, both values are ignored */
equipment?: Maybe<Array<Maybe<Equipment>>>;
/** Refers to equipment that is not unique. See kommentierte info tabelle -> Fragen -> Frage 2 */
equipmentType?: Maybe<Array<Maybe<EquipmentType>>>;
@ -66,6 +68,7 @@ export type CargoBike = {
lendingStation?: Maybe<LendingStation>;
taxes?: Maybe<Taxes>;
currentEngagements?: Maybe<Array<Maybe<Engagement>>>;
/** If offset or limit is not provided, both values are ignored */
engagement?: Maybe<Array<Maybe<Engagement>>>;
timeFrames?: Maybe<Array<Maybe<TimeFrame>>>;
isLocked: Scalars['Boolean'];
@ -85,15 +88,15 @@ export type CargoBikeBikeEventsArgs = {
/** The CargoBike type is central to the graph. You could call it the root. */
export type CargoBikeEquipmentArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
/** The CargoBike type is central to the graph. You could call it the root. */
export type CargoBikeEngagementArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
/** if you want to add bike to a lending station, create a new timeFrame with to: Date = null */
@ -358,6 +361,7 @@ export enum Group {
Tk = 'TK'
}
/** A participant in the organization */
export type Participant = {
__typename?: 'Participant';
id: Scalars['ID'];
@ -419,6 +423,7 @@ export type ParticipantUpdateInput = {
keepLock?: Maybe<Scalars['Boolean']>;
};
/** A workshop event */
export type Workshop = {
__typename?: 'Workshop';
id: Scalars['ID'];
@ -591,6 +596,10 @@ export type EquipmentUpdateInput = {
keepLock?: Maybe<Scalars['Boolean']>;
};
/**
* A type of equipment that is not being tracked but can be assigned
* to any bike.
*/
export type EquipmentType = {
__typename?: 'EquipmentType';
id: Scalars['ID'];
@ -626,7 +635,7 @@ export type BikeEvent = {
date: Scalars['Date'];
description?: Maybe<Scalars['String']>;
/** Path to documents */
documents: Array<Maybe<Scalars['String']>>;
documents: Array<Scalars['String']>;
remark?: Maybe<Scalars['String']>;
isLocked: Scalars['Boolean'];
isLockedByMe: Scalars['Boolean'];
@ -667,6 +676,8 @@ export type BikeEventType = {
name: Scalars['String'];
isLockedByMe: Scalars['Boolean'];
isLocked: Scalars['Boolean'];
/** null if not locked by other user */
lockedBy?: Maybe<Scalars['ID']>;
lockedUntil?: Maybe<Scalars['Date']>;
};
@ -683,7 +694,7 @@ export type Provider = {
formName?: Maybe<Scalars['String']>;
privatePerson?: Maybe<ContactInformation>;
organisation?: Maybe<Organisation>;
cargoBikes?: Maybe<Array<Maybe<CargoBike>>>;
cargoBikes?: Maybe<Array<CargoBike>>;
isLocked: Scalars['Boolean'];
isLockedByMe: Scalars['Boolean'];
/** null if not locked by other user */
@ -696,7 +707,7 @@ export type ProviderCreateInput = {
formName: Scalars['String'];
privatePersonId?: Maybe<Scalars['ID']>;
organisationId?: Maybe<Scalars['ID']>;
cargoBikeIds?: Maybe<Array<Maybe<Scalars['ID']>>>;
cargoBikeIds?: Maybe<Array<Scalars['ID']>>;
};
export type ProviderUpdateInput = {
@ -718,7 +729,7 @@ export type Person = {
id: Scalars['ID'];
name: Scalars['String'];
firstName: Scalars['String'];
contactInformation?: Maybe<Array<Maybe<ContactInformation>>>;
contactInformation?: Maybe<Array<ContactInformation>>;
isLocked: Scalars['Boolean'];
isLockedByMe: Scalars['Boolean'];
/** null if not locked by other user */
@ -780,7 +791,7 @@ export type Organisation = {
name: Scalars['String'];
address?: Maybe<Address>;
/** (dt. Ausleihstation) */
lendingStations?: Maybe<Array<Maybe<LendingStation>>>;
lendingStations?: Maybe<Array<LendingStation>>;
/** registration number of association */
associationNo?: Maybe<Scalars['String']>;
/** If Club, at what court registered */
@ -827,9 +838,9 @@ export type LendingStation = {
contactInformationIntern?: Maybe<ContactInformation>;
contactInformationExtern?: Maybe<ContactInformation>;
address: Address;
timeFrames: Array<Maybe<TimeFrame>>;
timeFrames: Array<TimeFrame>;
loanPeriod?: Maybe<LoanPeriod>;
cargoBikes?: Maybe<Array<Maybe<CargoBike>>>;
cargoBikes?: Maybe<Array<CargoBike>>;
/** Total amount of cargoBikes currently assigned to the lending station */
numCargoBikes: Scalars['Int'];
organisation?: Maybe<Organisation>;
@ -879,12 +890,12 @@ export type LoanPeriod = {
export type LoanPeriodInput = {
generalRemark?: Maybe<Scalars['String']>;
/** notes for each day of the week, starting on Monday */
notes?: Maybe<Array<Maybe<Scalars['String']>>>;
notes?: Maybe<Array<Scalars['String']>>;
/**
* Loan times from and until for each day of the week.
* Starting with Monday from, Monday to, Tuesday from, ..., Sunday to
*/
loanTimes?: Maybe<Array<Maybe<Scalars['String']>>>;
loanTimes?: Maybe<Array<Scalars['String']>>;
};
/** (dt. Zeitscheibe) When was a bike where */
@ -959,48 +970,62 @@ export type Query = {
__typename?: 'Query';
/** Will (eventually) return all properties of cargo bike */
cargoBikeById?: Maybe<CargoBike>;
/** returns cargoBikes ordered by name ascending, relations are not loaded, use cargoBikeById instead */
cargoBikes: Array<Maybe<CargoBike>>;
/** Returns cargoBikes ordered by name ascending. If offset or limit is not provided, both values are ignored. */
cargoBikes: Array<CargoBike>;
engagementById?: Maybe<Engagement>;
engagements: Array<Maybe<Engagement>>;
/** If offset or limit is not provided, both values are ignored */
engagements: Array<Engagement>;
engagementTypeById?: Maybe<EngagementType>;
engagementTypes: Array<Maybe<EngagementType>>;
/** If offset or limit is not provided, both values are ignored */
engagementTypes: Array<EngagementType>;
/** equipment by id, will return null if id not found */
equipmentById?: Maybe<Equipment>;
equipment: Array<Maybe<Equipment>>;
/** If offset or limit is not provided, both values are ignored */
equipment: Array<Equipment>;
equipmentTypeById?: Maybe<EquipmentType>;
equipmentTypes: Array<Maybe<EquipmentType>>;
/** If offset or limit is not provided, both values are ignored */
equipmentTypes: Array<EquipmentType>;
/** return null if id not found */
providerById?: Maybe<Provider>;
/** unique equipment with pagination, contains relation to bike (with no further joins), so if you wanna know more about the bike, use cargoBikeById */
providers: Array<Maybe<Provider>>;
/** Returns providers with pagination. If offset or limit is not provided, both values are ignored */
providers: Array<Provider>;
/** participant by id */
participantById?: Maybe<Participant>;
participants: Array<Maybe<Participant>>;
/** If offset or limit is not provided, both values are ignored */
participants: Array<Participant>;
workshopTypeById?: Maybe<WorkshopType>;
workshopTypes: Array<Maybe<WorkshopType>>;
/** If offset or limit is not provided, both values are ignored */
workshopTypes: Array<WorkshopType>;
workshopById?: Maybe<Workshop>;
workshops: Array<Maybe<Workshop>>;
/** If offset or limit is not provided, both values are ignored */
workshops: Array<Workshop>;
lendingStationById?: Maybe<LendingStation>;
lendingStations: Array<Maybe<LendingStation>>;
/** If offset or limit is not provided, both values are ignored */
lendingStations: Array<LendingStation>;
organisationById?: Maybe<Organisation>;
organisations: Array<Maybe<Organisation>>;
/** If offset or limit is not provided, both values are ignored */
organisations: Array<Organisation>;
timeFrameById?: Maybe<TimeFrame>;
timeframes: Array<Maybe<TimeFrame>>;
/** If offset or limit is not provided, both values are ignored */
timeFrames: Array<TimeFrame>;
contactInformationById?: Maybe<ContactInformation>;
contactInformation: Array<Maybe<ContactInformation>>;
/** If offset or limit is not provided, both values are ignored */
contactInformation: Array<ContactInformation>;
personById?: Maybe<Person>;
persons?: Maybe<Array<Maybe<Person>>>;
bikeEventTypes?: Maybe<Array<Maybe<BikeEventType>>>;
/** If offset or limit is not provided, both values are ignored */
persons?: Maybe<Array<Person>>;
/** If offset or limit is not provided, both values are ignored */
bikeEventTypes?: Maybe<Array<BikeEventType>>;
bikeEventTypeByd?: Maybe<BikeEventType>;
bikeEvents: Array<Maybe<BikeEvent>>;
/** If offset or limit is not provided, both values are ignored */
bikeEvents: Array<BikeEvent>;
bikeEventById?: Maybe<BikeEvent>;
/** actionLog for current user */
actionLog?: Maybe<Array<Maybe<ActionLog>>>;
actionLog?: Maybe<Array<ActionLog>>;
/** actionLog for specific user */
actionLogByUser?: Maybe<Array<Maybe<ActionLog>>>;
actionLogByUser?: Maybe<Array<ActionLog>>;
/** actionLog form all users */
actionLogAll?: Maybe<Array<Maybe<ActionLog>>>;
actionLogAll?: Maybe<Array<ActionLog>>;
};
@ -1010,8 +1035,8 @@ export type QueryCargoBikeByIdArgs = {
export type QueryCargoBikesArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1021,8 +1046,8 @@ export type QueryEngagementByIdArgs = {
export type QueryEngagementsArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1032,8 +1057,8 @@ export type QueryEngagementTypeByIdArgs = {
export type QueryEngagementTypesArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1043,8 +1068,8 @@ export type QueryEquipmentByIdArgs = {
export type QueryEquipmentArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1054,8 +1079,8 @@ export type QueryEquipmentTypeByIdArgs = {
export type QueryEquipmentTypesArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1065,8 +1090,8 @@ export type QueryProviderByIdArgs = {
export type QueryProvidersArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1076,8 +1101,8 @@ export type QueryParticipantByIdArgs = {
export type QueryParticipantsArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1087,8 +1112,8 @@ export type QueryWorkshopTypeByIdArgs = {
export type QueryWorkshopTypesArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1098,8 +1123,8 @@ export type QueryWorkshopByIdArgs = {
export type QueryWorkshopsArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1109,8 +1134,8 @@ export type QueryLendingStationByIdArgs = {
export type QueryLendingStationsArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1120,8 +1145,8 @@ export type QueryOrganisationByIdArgs = {
export type QueryOrganisationsArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1130,9 +1155,9 @@ export type QueryTimeFrameByIdArgs = {
};
export type QueryTimeframesArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
export type QueryTimeFramesArgs = {
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1142,8 +1167,8 @@ export type QueryContactInformationByIdArgs = {
export type QueryContactInformationArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1153,14 +1178,14 @@ export type QueryPersonByIdArgs = {
export type QueryPersonsArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
export type QueryBikeEventTypesArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1170,8 +1195,8 @@ export type QueryBikeEventTypeBydArgs = {
export type QueryBikeEventsArgs = {
offset: Scalars['Int'];
limit: Scalars['Int'];
offset?: Maybe<Scalars['Int']>;
limit?: Maybe<Scalars['Int']>;
};
@ -1704,10 +1729,10 @@ export type GetCargoBikesQueryVariables = Exact<{ [key: string]: never; }>;
export type GetCargoBikesQuery = (
{ __typename?: 'Query' }
& { cargoBikes: Array<Maybe<(
& { cargoBikes: Array<(
{ __typename?: 'CargoBike' }
& CargoBikeFieldsForTableFragment
)>> }
)> }
);
export type GetCargoBikeByIdQueryVariables = Exact<{
@ -1952,10 +1977,10 @@ export type ProviderFieldsGeneralFragment = (
& { person: (
{ __typename?: 'Person' }
& Pick<Person, 'id' | 'name' | 'firstName'>
& { contactInformation?: Maybe<Array<Maybe<(
& { contactInformation?: Maybe<Array<(
{ __typename?: 'ContactInformation' }
& Pick<ContactInformation, 'email'>
)>>> }
)>> }
) }
)> }
);
@ -2254,13 +2279,13 @@ export const CargoBikeFieldsForPageFragmentDoc = gql`
bikeEvents {
...BikeEventFieldsForBikePage
}
equipment(offset: 0, limit: 1000) {
equipment {
...EquipmentFieldsForBikePage
}
equipmentType {
...EquipmentTypeFieldsForBikePage
}
engagement(offset: 0, limit: 1000) {
engagement {
...EngagementFieldsForBikePage
}
currentEngagements {
@ -2278,7 +2303,7 @@ ${EngagementFieldsForBikePageFragmentDoc}
${TimeFrameFieldsForBikePageFragmentDoc}`;
export const GetCargoBikesDocument = gql`
query GetCargoBikes {
cargoBikes(limit: 1000, offset: 0) {
cargoBikes {
...CargoBikeFieldsForTable
}
}

Loading…
Cancel
Save