Skip to content

Commit 3d38fa8

Browse files
Merge branch 'fares-v2' into fares-v2-e2e
2 parents b0a097e + 74ed692 commit 3d38fa8

9 files changed

Lines changed: 90 additions & 6 deletions

File tree

gtfs.yml

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1199,4 +1199,41 @@
11991199
inputType: TIME
12001200
- name: service_id
12011201
required: true
1202-
inputType: GTFS_SERVICE
1202+
inputType: GTFS_SERVICE
1203+
- id: ridercategory
1204+
name: rider_categories.txt
1205+
helpContent: Categories of riders that can be used to define fare products.
1206+
fields:
1207+
- name: rider_category_id
1208+
required: true
1209+
inputType: GTFS_ID
1210+
- name: rider_category_name
1211+
required: true
1212+
inputType: TEXT
1213+
- name: is_default_fare_category
1214+
required: true
1215+
inputType: DROPDOWN
1216+
options:
1217+
- value: '0'
1218+
text: No (0)
1219+
- value: '1'
1220+
text: Yes (1)
1221+
- name: eligibility_url
1222+
required: false
1223+
inputType: URL
1224+
- id: farelegjoinrule
1225+
name: fare_leg_join_rules.txt
1226+
helpContent: Rules for joining fare legs when calculating total fare for a journey with multiple legs.
1227+
fields:
1228+
- name: from_network_id
1229+
required: true
1230+
inputType: TEXT # FARE-TODO: Needs to reference routes.network_id or networks.network_id
1231+
- name: to_network_id
1232+
required: true
1233+
inputType: TEXT # FARE-TODO: Needs to reference routes.network_id or networks.network_id
1234+
- name: from_stop_id
1235+
required: false
1236+
inputType: GTFS_STOP
1237+
- name: to_stop_id
1238+
required: false
1239+
inputType: GTFS_STOP

lib/editor/actions/editor.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,11 +523,20 @@ export function fetchBaseGtfs ({
523523
leg_group_id
524524
id
525525
}
526+
fare_leg_join_rule (limit: -1) {
527+
from_network_id
528+
to_network_id
529+
id
530+
}
526531
network (limit: -1) {
527532
id
528533
network_id
529534
network_name
530535
}
536+
rider_category (limit: -1) {
537+
id
538+
rider_category_id
539+
}
531540
routes (limit: -1) {
532541
id
533542
route_id

lib/editor/components/EntityListSecondaryActions.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,9 @@ export default class EntityListSecondaryActions extends Component<Props> {
148148
case 'faremedia':
149149
case 'faretransferrule':
150150
case 'farelegrule':
151+
case 'farelegjoinrule':
151152
case 'network':
153+
case 'ridercategory':
152154
case 'timeframe':
153155
console.log('entities::::::', entities)
154156
const faresv2Tables = [
@@ -157,7 +159,9 @@ export default class EntityListSecondaryActions extends Component<Props> {
157159
'fareproduct',
158160
'faretransferrule',
159161
'farelegrule',
162+
'farelegjoinrule',
160163
'network',
164+
'ridercategory',
161165
'timeframe'
162166
]
163167
return (

lib/editor/reducers/data.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ export const defaultState = {
3434
calendar: [],
3535
fares: [],
3636
fare_leg_rule: [],
37+
fare_leg_join_rule: [],
3738
fare_media: [],
3839
fare_product: [],
3940
fare_transfer_rule: [],
4041
feed_info: [],
4142
network: [],
43+
rider_category: [],
4244
routes: [],
4345
schedule_exceptions: [],
4446
stops: [],

lib/editor/util/gtfs.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ export const COMPONENT_LIST = [
3636
{ id: 'faremedia', tableName: 'fare_media' },
3737
{ id: 'faretransferrule', tableName: 'fare_transfer_rule' },
3838
{ id: 'farelegrule', tableName: 'fare_leg_rule' },
39+
{ id: 'farelegjoinrule', tableName: 'fare_leg_join_rule' },
40+
{ id: 'ridercategory', tableName: 'rider_category' },
3941
{ id: 'area', tableName: 'area' },
4042
{ id: 'network', tableName: 'network' },
4143
{ id: 'timeframe', tableName: 'time_frame' }
@@ -269,6 +271,8 @@ export function getEntityName (entity: any): string {
269271
nameKey = 'network_id' // FARE-TODO: network_name?
270272
} else if (typeof entity.timeframe_group_id !== 'undefined') {
271273
nameKey = 'timeframe_group_id' // FARE-TODO: timeframe name?
274+
} else if (typeof entity.rider_category_id !== 'undefined') {
275+
nameKey = 'rider_category_id'
272276
}
273277
// FARE-TODO: what to do with fare_products.txt?
274278

@@ -402,5 +406,5 @@ export function gtfsSort (a: Entity, b: Entity): number {
402406
}
403407

404408
export function isComponentFaresv2 (component: string): boolean {
405-
return ['fareproduct', 'faremedia', 'faretransferrule', 'farelegrule', 'timeframe'].includes(component)
409+
return ['fareproduct', 'faremedia', 'faretransferrule', 'farelegrule', 'farelegjoinrule', 'ridercategory', 'timeframe'].includes(component)
406410
}

lib/editor/util/objects.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ export function componentToText (component: string): string {
1515
return 'transfer rule'
1616
case 'farelegrule':
1717
return 'leg rule'
18+
case 'farelegjoinrule':
19+
return 'leg join rule'
1820
default:
1921
return component
2022
}

lib/editor/util/validation.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,17 @@ export function validate (
177177
console.log('validating fare_product_id uniqueness', {field, value, entities, entity})
178178
if (isRequiredButEmpty) return emptyFieldValidationIssue()
179179
if (entities && value) {
180-
const currentFareMediaId = entity && typeof entity.fare_media_id !== 'undefined' ? entity.fare_media_id : null
181-
const currentRiderCategoryId = entity && typeof entity.rider_category_id !== 'undefined' ? entity.rider_category_id : null
180+
// $FlowFixMe: fare_media_id and rider_category_id are fares v2 fields
181+
const currentFareMediaId = entity && 'fare_media_id' in entity ? entity.fare_media_id : null
182+
// $FlowFixMe: fare_media_id and rider_category_id are fares v2 fields
183+
const currentRiderCategoryId = entity && 'rider_category_id' in entity ? entity.rider_category_id : null
182184
for (let i = 0; i < entities.length; i++) {
183185
const e = entities[i]
184186
if (entity && e.id === entity.id) continue
187+
// $FlowFixMe: fare_media_id and rider_category_id are fares v2 fields
185188
if (e.fare_product_id === value) {
186-
const eFareMedia = typeof e.fare_media_id !== 'undefined' ? e.fare_media_id : null
187-
const eRider = typeof e.rider_category_id !== 'undefined' ? e.rider_category_id : null
189+
const eFareMedia = 'fare_media_id' in e && typeof e.fare_media_id !== 'undefined' ? e.fare_media_id : null
190+
const eRider = 'rider_category_id' in e && typeof e.rider_category_id !== 'undefined' ? e.rider_category_id : null
188191
if (eFareMedia === currentFareMediaId && eRider === currentRiderCategoryId) {
189192
return validationIssue(messages('fareProductIdCombinationDuplicate'))
190193
}

lib/gtfs/util/index.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ export function getEntityIdField (type: string): string {
2323
return 'id'
2424
case 'farelegrule':
2525
return 'id'
26+
case 'farelegjoinrule':
27+
return 'id'
28+
case 'ridercategory':
29+
return 'rider_category_id'
2630
case 'area':
2731
return 'area_id'
2832
case 'network':
@@ -137,6 +141,15 @@ export function getGraphQLFieldsForEntity (type: string, editor: boolean = false
137141
id
138142
${fields}
139143
`
144+
case 'farelegjoinrule':
145+
return `
146+
id
147+
${fields}
148+
`
149+
case 'ridercategory':
150+
return `
151+
${fields}
152+
`
140153
case 'area':
141154
return `
142155
${fields}
@@ -200,6 +213,10 @@ export function getEntityGraphQLRoot (type: string): string {
200213
return 'fare_transfer_rule'
201214
case 'farelegrule':
202215
return 'fare_leg_rule'
216+
case 'farelegjoinrule':
217+
return 'fare_leg_join_rule'
218+
case 'ridercategory':
219+
return 'rider_category'
203220
case 'timeframe':
204221
return 'time_frame'
205222
case 'feedinfo':
@@ -247,6 +264,10 @@ export function getEntityTableString (type: string): string {
247264
return 'faretransferrule'
248265
case 'farelegrule':
249266
return 'farelegrule'
267+
case 'farelegjoinrule':
268+
return 'farelegjoinrule'
269+
case 'ridercategory':
270+
return 'ridercategory'
250271
case 'timeframe':
251272
return 'timeframe'
252273
case 'feedinfo':

lib/types/reducers.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ export type EditorTables = {
122122
id: number,
123123
service_id: string
124124
}>,
125+
fare_leg_join_rule: Array<{}>, // FARE-TODO: Do this
125126
fare_leg_rule: Array<{}>, // FARE-TODO: Do this
126127
fare_media: Array<{}>, // FARE-TODO: Do this
127128
fare_product: Array<{}>, // FARE-TODO: Do this
@@ -146,6 +147,7 @@ export type EditorTables = {
146147
network_id: string,
147148
network_name: ?string
148149
}>,
150+
rider_category: Array<{}>, // FARE-TODO: Do this
149151
routes: Array<{
150152
id: number,
151153
route_id: string,

0 commit comments

Comments
 (0)