Skip to content

Commit ddb1f6b

Browse files
fix(FeedVersionViewer.VersionList): Fix rendering of feed versions.
1 parent 4d53b59 commit ddb1f6b

File tree

7 files changed

+37
-28
lines changed

7 files changed

+37
-28
lines changed

__tests__/test-utils/mock-data/manager.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ export const mockFeedVersion = {
267267
uniqueIdentifier: 'ugez_nbyelwgcecgmjjabppvknj'
268268
},
269269
feedSource: mockFeedWithVersion,
270+
feedSourceId: mockFeedWithVersion.id,
270271
fileSize: 126865,
271272
fileTimestamp: 1533824462000,
272273
id: 'mock-feed-version-id',

lib/manager/actions/versions.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {ENTITY} from '../../editor/constants'
1212
import {getKeyForId} from '../../editor/util/gtfs'
1313
import {getEntityGraphQLRoot, getEntityIdField, getGraphQLFieldsForEntity} from '../../gtfs/util'
1414
import {validateGtfsPlusFeed} from '../../gtfsplus/actions/gtfsplus'
15-
import type {Feed, FeedVersion, ShapefileExportType} from '../../types'
15+
import type {Feed, FeedVersion, FeedVersionSummary, ShapefileExportType} from '../../types'
1616
import type {dispatchFn, getStateFn, ValidationIssueCount} from '../../types/reducers'
1717

1818
import {handleJobResponse, setErrorMessage, startJobMonitor} from './status'
@@ -228,14 +228,14 @@ export function uploadFeed (feedSource: Feed, file: File) {
228228
* Permanently delete the feed version object and the loaded GTFS data in the
229229
* SQL database.
230230
*/
231-
export function deleteFeedVersion (feedVersion: FeedVersion) {
231+
export function deleteFeedVersion (feedVersion: FeedVersionSummary) {
232232
return function (dispatch: dispatchFn, getState: getStateFn) {
233233
dispatch(deletingFeedVersion())
234234
const url = `${SECURE_API_PREFIX}feedversion/${feedVersion.id}`
235235
return dispatch(secureFetch(url, 'delete'))
236236
.then((res) => {
237237
// Re-fetch feed source with versions + snapshots
238-
return dispatch(fetchFeedSource(feedVersion.feedSource.id))
238+
return dispatch(fetchFeedSource(feedVersion.feedSourceId))
239239
})
240240
}
241241
}
@@ -508,13 +508,13 @@ export function fetchFeedVersionIsochrones (
508508
* Download a GTFS file for a a given feed version.
509509
*/
510510
export function downloadFeedViaToken (
511-
feedVersion: FeedVersion,
511+
feedVersionId: string,
512512
isPublic: ?boolean,
513513
prefix: ?string = 'gtfs'
514514
) {
515515
return function (dispatch: dispatchFn, getState: getStateFn) {
516516
const route = isPublic ? 'public' : 'secure'
517-
const url = `/api/manager/${route}/feedversion/${feedVersion.id}/downloadtoken`
517+
const url = `/api/manager/${route}/feedversion/${feedVersionId}/downloadtoken`
518518
return dispatch(secureFetch(url))
519519
.then(response => response.json())
520520
.then(json => {

lib/manager/components/version/FeedVersionReport.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import numeral from 'numeral'
88

99
import EditableTextField from '../../../common/components/EditableTextField'
1010
import {getProfileLink} from '../../../common/util/util'
11+
import TransformationsIndicatorBadge from '../transform/TransformationsIndicatorBadge'
12+
1113
import FeedVersionDetails from './FeedVersionDetails'
1214
import FeedVersionMap from './FeedVersionMap'
1315
import FeedVersionTabs from './FeedVersionTabs'
14-
import TransformationsIndicatorBadge from '../transform/TransformationsIndicatorBadge'
1516
import VersionButtonToolbar from './VersionButtonToolbar'
1617
import VersionRetrievalBadge from './VersionRetrievalBadge'
17-
1818
import type {Props as FeedVersionViewerProps} from './FeedVersionViewer'
1919

2020
const dateFormat = 'MMM. DD, YYYY'
@@ -112,7 +112,7 @@ export default class FeedVersionReport extends Component<Props, State> {
112112
disabled={isPublic}
113113
onChange={this._onVersionNameChange} />
114114
}
115-
<VersionButtonToolbar size='small' {...this.props} />
115+
<VersionButtonToolbar size='small' versionSummary={version} {...this.props} />
116116
</h4>
117117
<small>
118118
<VersionRetrievalBadge version={version} />

lib/manager/components/version/FeedVersionViewer.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,10 +294,12 @@ export type ListProps = Props
294294

295295
class VersionList extends Component<ListProps> {
296296
render () {
297+
const { feedSource } = this.props
298+
const { feedVersionSummaries } = feedSource
297299
return <Panel header={<h3>List of feed versions</h3>}>
298300
<ListGroup fill>
299-
{this.props.versions
300-
? this.props.versions.map(v => {
301+
{feedVersionSummaries
302+
? feedVersionSummaries.map(v => {
301303
return (
302304
<ListGroupItem key={v.id}>
303305
{v.name}
@@ -306,7 +308,7 @@ class VersionList extends Component<ListProps> {
306308
<VersionDateLabel version={v} />
307309
</small>
308310
<VersionButtonToolbar
309-
version={v}
311+
versionSummary={v}
310312
size='xsmall'
311313
{...this.props} />
312314
</ListGroupItem>

lib/manager/components/version/VersionButtonToolbar.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,47 @@ import {Button, Glyphicon, ButtonGroup, DropdownButton, MenuItem} from 'react-bo
66

77
import ConfirmModal from '../../../common/components/ConfirmModal'
88
import {getComponentMessages, isModuleEnabled} from '../../../common/util/config'
9+
import type {FeedVersionSummary, ShapefileExportType} from '../../../types'
910

1011
import type {ListProps} from './FeedVersionViewer'
11-
import type {ShapefileExportType} from '../../../types'
1212

13-
type ToolbarProps = ListProps & {size: string}
13+
type ToolbarProps = ListProps & {
14+
size: string,
15+
versionSummary: FeedVersionSummary
16+
}
1417

1518
export default class VersionButtonToolbar extends Component<ToolbarProps> {
1619
messages = getComponentMessages('VersionButtonToolbar')
1720

18-
_onClickDownload = () =>
19-
this.props.downloadFeedViaToken(this.props.version, this.props.isPublic)
21+
_onClickDownload = () => {
22+
const { downloadFeedViaToken, isPublic, versionSummary } = this.props
23+
downloadFeedViaToken(versionSummary.id, isPublic)
24+
}
2025

2126
_onClickLoadIntoEditor = (evt: SyntheticMouseEvent<HTMLInputElement>) => {
22-
const {loadFeedVersionForEditing, version} = this.props
27+
const {loadFeedVersionForEditing, versionSummary} = this.props
2328

24-
const {id: feedVersionId, feedSource} = version
29+
const {id: feedVersionId, feedSourceId} = versionSummary
2530
this.refs.confirm.open({
2631
title: this.messages('load'),
2732
body: this.messages('confirmLoad'),
2833
onConfirm: () =>
29-
loadFeedVersionForEditing({feedSourceId: feedSource.id, feedVersionId})
34+
loadFeedVersionForEditing({feedSourceId, feedVersionId})
3035
})
3136
}
3237

3338
_onClickDeleteVersion = (evt: SyntheticMouseEvent<HTMLInputElement>) => {
34-
const {deleteFeedVersion, version} = this.props
39+
const {deleteFeedVersion, versionSummary} = this.props
3540
this.refs.confirm.open({
3641
title: `${this.messages('delete')} ${this.messages('version')}`,
3742
body: this.messages('confirmDelete'),
38-
onConfirm: () => deleteFeedVersion(version)
43+
onConfirm: () => deleteFeedVersion(versionSummary)
3944
})
4045
}
4146

4247
_onDownloadShapes = (type: ShapefileExportType) => {
43-
this.props.exportVersionShapes(this.props.version.id, type)
48+
const { exportVersionShapes, versionSummary } = this.props
49+
exportVersionShapes(versionSummary.id, type)
4450
}
4551

4652
render () {

lib/manager/components/version/VersionDateLabel.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ import React, {Component} from 'react'
44
import {Label as BsLabel} from 'react-bootstrap'
55
import moment from 'moment'
66

7-
import type {FeedVersion} from '../../../types'
7+
import type {FeedVersionSummary} from '../../../types'
88

99
type Props = {
10-
version: FeedVersion
10+
version: FeedVersionSummary
1111
}
1212

1313
export default class VersionDateLabel extends Component<Props> {
1414
render () {
1515
const {version} = this.props
16-
const {validationSummary: summary} = version
16+
const {validationResult: summary} = version
1717
if (!summary) return null
1818
const now = +moment().startOf('day')
19-
const start = +moment(summary.startDate)
20-
const end = +moment(summary.endDate)
19+
const start = +moment(summary.firstCalendarDate)
20+
const end = +moment(summary.lastCalendarDate)
2121
const future = start > now
2222
const expired = end < now
2323
const bsStyle = future ? 'info' : expired ? 'danger' : 'success'

lib/types/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ export type FeedTransformResult = {
508508
*/
509509
export type FeedVersionSummary = {
510510
dateCreated: number,
511+
feedSourceId: string,
511512
fileSize: number,
512513
id: string,
513514
lastUpdated: number,
@@ -516,13 +517,13 @@ export type FeedVersionSummary = {
516517
originNamespace: ?string,
517518
retrievalMethod: ?RetrievalMethod,
518519
updated: number,
520+
validationResult: ValidationResult,
519521
version: number
520522
}
521523

522524
export type FeedVersion = FeedVersionSummary & {
523525
feedLoadResult: FeedLoadResult,
524526
feedSource: Feed,
525-
feedSourceId?: string,
526527
feedTransformResult?: FeedTransformResult,
527528
fileTimestamp: number,
528529
isCreating?: boolean,
@@ -534,7 +535,6 @@ export type FeedVersion = FeedVersionSummary & {
534535
processedByExternalPublisher: ?number,
535536
sentToExternalPublisher: ?number,
536537
user: string,
537-
validationResult: ValidationResult,
538538
validationSummary: ValidationSummary
539539
}
540540

0 commit comments

Comments
 (0)