Skip to content

Commit be6b088

Browse files
Merge pull request #720 from ibi-group/resolve-missing-defaults
fix(saveEntity, saveTripsForCalendar): Resolve missing defaults with GTFS spec changes
2 parents 59d429a + cda4f65 commit be6b088

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

lib/editor/actions/active.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import {createAction, type ActionType} from 'redux-actions'
66

77
import {createVoidPayloadAction, secureFetch} from '../../common/actions'
88
import {ENTITY} from '../constants'
9-
import {newGtfsEntity, fetchBaseGtfs} from './editor'
109
import {fetchFeedSourceAndProject} from '../../manager/actions/feeds'
1110
import {fetchGTFSEntities} from '../../manager/actions/versions'
12-
import {saveTripPattern} from './tripPattern'
1311
import {
1412
getEditorNamespace,
1513
getTableById,
@@ -18,10 +16,12 @@ import {
1816
subSubComponentList
1917
} from '../util/gtfs'
2018
import {getMapFromGtfsStrategy, entityIsNew} from '../util/objects'
21-
2219
import type {Entity, Feed} from '../../types'
2320
import type {dispatchFn, getStateFn, AppState} from '../../types/reducers'
2421

22+
import {saveTripPattern} from './tripPattern'
23+
import {newGtfsEntity, fetchBaseGtfs} from './editor'
24+
2525
export const clearGtfsContent = createVoidPayloadAction('CLEAR_GTFSEDITOR_CONTENT')
2626
const receivedNewEntity = createAction(
2727
'RECEIVE_NEW_ENTITY',
@@ -331,14 +331,25 @@ export function saveEntity (
331331
return
332332
}
333333
dispatch(savingActiveGtfsEntity())
334-
const notNew = !entityIsNew(entity)
334+
// Add default vals for component
335+
const defaults = {}
336+
if (component === 'route') {
337+
defaults.continuous_pickup = 1 // Default value for no continuous pickup
338+
defaults.continuous_drop_off = 1 // Default value for no continuous drop off
339+
} else if (component === 'feedinfo') {
340+
defaults.default_lang = ''
341+
defaults.feed_contact_url = ''
342+
defaults.feed_contact_email = ''
343+
}
344+
const entityWithDefaults = {...defaults, ...(entity: any)} // add defaults, if any.
345+
const notNew = !entityIsNew(entityWithDefaults)
335346
const method = notNew ? 'put' : 'post'
336-
const idParam = notNew ? `/${entity.id || ''}` : ''
347+
const idParam = notNew ? `/${entityWithDefaults.id || ''}` : ''
337348
const {sessionId} = getState().editor.data.lock
338349
const route = component === 'fare' ? 'fareattribute' : component
339350
const url = `/api/editor/secure/${route}${idParam}?feedId=${feedId}&sessionId=${sessionId || ''}`
340351
const mappingStrategy = getMapFromGtfsStrategy(component)
341-
const data = mappingStrategy(entity)
352+
const data = mappingStrategy(entityWithDefaults)
342353
return dispatch(secureFetch(url, method, data))
343354
.then(res => res.json())
344355
.then(savedEntity => {

lib/editor/actions/editor.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {createAction, type ActionType} from 'redux-actions'
88

99
import {createVoidPayloadAction, fetchGraphQL, secureFetch} from '../../common/actions'
1010
import {generateUID} from '../../common/util/util'
11-
import {clearGtfsContent, saveActiveGtfsEntity, setActiveGtfsEntity} from './active'
1211
import {ENTITY} from '../constants'
1312
import {
1413
generateNullProps,
@@ -17,7 +16,6 @@ import {
1716
getTableById
1817
} from '../util/gtfs'
1918
import {fetchGTFSEntities} from '../../manager/actions/versions'
20-
2119
import type {
2220
dispatchFn,
2321
getStateFn,
@@ -26,6 +24,8 @@ import type {
2624
LockState
2725
} from '../../types/reducers'
2826

27+
import {clearGtfsContent, saveActiveGtfsEntity, setActiveGtfsEntity} from './active'
28+
2929
export const updateEntitySort = createAction('UPDATE_ENTITY_SORT')
3030

3131
const createGtfsEntity = createAction(
@@ -384,6 +384,9 @@ export function fetchBaseGtfs ({
384384
feed_version
385385
default_route_color
386386
default_route_type
387+
default_lang
388+
feed_contact_url
389+
feed_contact_email
387390
}
388391
agency (limit: -1) {
389392
id

lib/editor/actions/trip.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
// @flow
2-
2+
import clone from 'lodash/cloneDeep'
33
import {createAction, type ActionType} from 'redux-actions'
44

55
import {snakeCaseKeys} from '../../common/util/map-keys'
66
import {createVoidPayloadAction, fetchGraphQL, secureFetch} from '../../common/actions'
77
import {setErrorMessage} from '../../manager/actions/status'
88
import {entityIsNew} from '../util/objects'
99
import {getEditorNamespace} from '../util/gtfs'
10-
1110
import type {Pattern, TimetableColumn, Trip} from '../../types'
1211
import type {dispatchFn, getStateFn, TripCounts} from '../../types/reducers'
1312

@@ -159,11 +158,21 @@ export function saveTripsForCalendar (
159158
trips = trips.map(snakeCaseKeys)
160159
return Promise.all(trips.filter(t => t).map((trip, index) => {
161160
const tripExists = !entityIsNew(trip) && trip.id !== null
161+
const tripCopy: any = clone((trip: any))
162+
// Add default value to continuous pickup if not provided
163+
// Editing continuous pickup/drop off is not currently supported in the schedule editor
164+
const defaults = {
165+
continuous_pickup: 1,
166+
continuous_drop_off: 1
167+
}
168+
tripCopy.stop_times = tripCopy.stop_times.map((stopTime, index) => {
169+
return {...defaults, ...(stopTime: any)}
170+
})
162171
const method = tripExists ? 'put' : 'post'
163172
const url = tripExists && trip.id
164173
? `/api/editor/secure/trip/${trip.id}?feedId=${feedId}&sessionId=${sessionId}`
165174
: `/api/editor/secure/trip?feedId=${feedId}&sessionId=${sessionId}`
166-
return dispatch(secureFetch(url, method, trip))
175+
return dispatch(secureFetch(url, method, tripCopy))
167176
.then(res => res.json())
168177
.catch(err => {
169178
console.warn(err)

0 commit comments

Comments
 (0)