Skip to content

Commit

Permalink
fix(FeedVersionViewer.VersionList): Fix rendering of feed versions.
Browse files Browse the repository at this point in the history
  • Loading branch information
binh-dam-ibigroup committed May 11, 2022
1 parent 4d53b59 commit ddb1f6b
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 28 deletions.
1 change: 1 addition & 0 deletions __tests__/test-utils/mock-data/manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ export const mockFeedVersion = {
uniqueIdentifier: 'ugez_nbyelwgcecgmjjabppvknj'
},
feedSource: mockFeedWithVersion,
feedSourceId: mockFeedWithVersion.id,
fileSize: 126865,
fileTimestamp: 1533824462000,
id: 'mock-feed-version-id',
Expand Down
10 changes: 5 additions & 5 deletions lib/manager/actions/versions.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {ENTITY} from '../../editor/constants'
import {getKeyForId} from '../../editor/util/gtfs'
import {getEntityGraphQLRoot, getEntityIdField, getGraphQLFieldsForEntity} from '../../gtfs/util'
import {validateGtfsPlusFeed} from '../../gtfsplus/actions/gtfsplus'
import type {Feed, FeedVersion, ShapefileExportType} from '../../types'
import type {Feed, FeedVersion, FeedVersionSummary, ShapefileExportType} from '../../types'
import type {dispatchFn, getStateFn, ValidationIssueCount} from '../../types/reducers'

import {handleJobResponse, setErrorMessage, startJobMonitor} from './status'
Expand Down Expand Up @@ -228,14 +228,14 @@ export function uploadFeed (feedSource: Feed, file: File) {
* Permanently delete the feed version object and the loaded GTFS data in the
* SQL database.
*/
export function deleteFeedVersion (feedVersion: FeedVersion) {
export function deleteFeedVersion (feedVersion: FeedVersionSummary) {
return function (dispatch: dispatchFn, getState: getStateFn) {
dispatch(deletingFeedVersion())
const url = `${SECURE_API_PREFIX}feedversion/${feedVersion.id}`
return dispatch(secureFetch(url, 'delete'))
.then((res) => {
// Re-fetch feed source with versions + snapshots
return dispatch(fetchFeedSource(feedVersion.feedSource.id))
return dispatch(fetchFeedSource(feedVersion.feedSourceId))
})
}
}
Expand Down Expand Up @@ -508,13 +508,13 @@ export function fetchFeedVersionIsochrones (
* Download a GTFS file for a a given feed version.
*/
export function downloadFeedViaToken (
feedVersion: FeedVersion,
feedVersionId: string,
isPublic: ?boolean,
prefix: ?string = 'gtfs'
) {
return function (dispatch: dispatchFn, getState: getStateFn) {
const route = isPublic ? 'public' : 'secure'
const url = `/api/manager/${route}/feedversion/${feedVersion.id}/downloadtoken`
const url = `/api/manager/${route}/feedversion/${feedVersionId}/downloadtoken`
return dispatch(secureFetch(url))
.then(response => response.json())
.then(json => {
Expand Down
6 changes: 3 additions & 3 deletions lib/manager/components/version/FeedVersionReport.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import numeral from 'numeral'

import EditableTextField from '../../../common/components/EditableTextField'
import {getProfileLink} from '../../../common/util/util'
import TransformationsIndicatorBadge from '../transform/TransformationsIndicatorBadge'

import FeedVersionDetails from './FeedVersionDetails'
import FeedVersionMap from './FeedVersionMap'
import FeedVersionTabs from './FeedVersionTabs'
import TransformationsIndicatorBadge from '../transform/TransformationsIndicatorBadge'
import VersionButtonToolbar from './VersionButtonToolbar'
import VersionRetrievalBadge from './VersionRetrievalBadge'

import type {Props as FeedVersionViewerProps} from './FeedVersionViewer'

const dateFormat = 'MMM. DD, YYYY'
Expand Down Expand Up @@ -112,7 +112,7 @@ export default class FeedVersionReport extends Component<Props, State> {
disabled={isPublic}
onChange={this._onVersionNameChange} />
}
<VersionButtonToolbar size='small' {...this.props} />
<VersionButtonToolbar size='small' versionSummary={version} {...this.props} />
</h4>
<small>
<VersionRetrievalBadge version={version} />
Expand Down
8 changes: 5 additions & 3 deletions lib/manager/components/version/FeedVersionViewer.js
Original file line number Diff line number Diff line change
Expand Up @@ -294,10 +294,12 @@ export type ListProps = Props

class VersionList extends Component<ListProps> {
render () {
const { feedSource } = this.props
const { feedVersionSummaries } = feedSource
return <Panel header={<h3>List of feed versions</h3>}>
<ListGroup fill>
{this.props.versions
? this.props.versions.map(v => {
{feedVersionSummaries
? feedVersionSummaries.map(v => {
return (
<ListGroupItem key={v.id}>
{v.name}
Expand All @@ -306,7 +308,7 @@ class VersionList extends Component<ListProps> {
<VersionDateLabel version={v} />
</small>
<VersionButtonToolbar
version={v}
versionSummary={v}
size='xsmall'
{...this.props} />
</ListGroupItem>
Expand Down
26 changes: 16 additions & 10 deletions lib/manager/components/version/VersionButtonToolbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,47 @@ import {Button, Glyphicon, ButtonGroup, DropdownButton, MenuItem} from 'react-bo

import ConfirmModal from '../../../common/components/ConfirmModal'
import {getComponentMessages, isModuleEnabled} from '../../../common/util/config'
import type {FeedVersionSummary, ShapefileExportType} from '../../../types'

import type {ListProps} from './FeedVersionViewer'
import type {ShapefileExportType} from '../../../types'

type ToolbarProps = ListProps & {size: string}
type ToolbarProps = ListProps & {
size: string,
versionSummary: FeedVersionSummary
}

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

_onClickDownload = () =>
this.props.downloadFeedViaToken(this.props.version, this.props.isPublic)
_onClickDownload = () => {
const { downloadFeedViaToken, isPublic, versionSummary } = this.props
downloadFeedViaToken(versionSummary.id, isPublic)
}

_onClickLoadIntoEditor = (evt: SyntheticMouseEvent<HTMLInputElement>) => {
const {loadFeedVersionForEditing, version} = this.props
const {loadFeedVersionForEditing, versionSummary} = this.props

const {id: feedVersionId, feedSource} = version
const {id: feedVersionId, feedSourceId} = versionSummary
this.refs.confirm.open({
title: this.messages('load'),
body: this.messages('confirmLoad'),
onConfirm: () =>
loadFeedVersionForEditing({feedSourceId: feedSource.id, feedVersionId})
loadFeedVersionForEditing({feedSourceId, feedVersionId})
})
}

_onClickDeleteVersion = (evt: SyntheticMouseEvent<HTMLInputElement>) => {
const {deleteFeedVersion, version} = this.props
const {deleteFeedVersion, versionSummary} = this.props
this.refs.confirm.open({
title: `${this.messages('delete')} ${this.messages('version')}`,
body: this.messages('confirmDelete'),
onConfirm: () => deleteFeedVersion(version)
onConfirm: () => deleteFeedVersion(versionSummary)
})
}

_onDownloadShapes = (type: ShapefileExportType) => {
this.props.exportVersionShapes(this.props.version.id, type)
const { exportVersionShapes, versionSummary } = this.props
exportVersionShapes(versionSummary.id, type)
}

render () {
Expand Down
10 changes: 5 additions & 5 deletions lib/manager/components/version/VersionDateLabel.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ import React, {Component} from 'react'
import {Label as BsLabel} from 'react-bootstrap'
import moment from 'moment'

import type {FeedVersion} from '../../../types'
import type {FeedVersionSummary} from '../../../types'

type Props = {
version: FeedVersion
version: FeedVersionSummary
}

export default class VersionDateLabel extends Component<Props> {
render () {
const {version} = this.props
const {validationSummary: summary} = version
const {validationResult: summary} = version
if (!summary) return null
const now = +moment().startOf('day')
const start = +moment(summary.startDate)
const end = +moment(summary.endDate)
const start = +moment(summary.firstCalendarDate)
const end = +moment(summary.lastCalendarDate)
const future = start > now
const expired = end < now
const bsStyle = future ? 'info' : expired ? 'danger' : 'success'
Expand Down
4 changes: 2 additions & 2 deletions lib/types/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,7 @@ export type FeedTransformResult = {
*/
export type FeedVersionSummary = {
dateCreated: number,
feedSourceId: string,
fileSize: number,
id: string,
lastUpdated: number,
Expand All @@ -516,13 +517,13 @@ export type FeedVersionSummary = {
originNamespace: ?string,
retrievalMethod: ?RetrievalMethod,
updated: number,
validationResult: ValidationResult,
version: number
}

export type FeedVersion = FeedVersionSummary & {
feedLoadResult: FeedLoadResult,
feedSource: Feed,
feedSourceId?: string,
feedTransformResult?: FeedTransformResult,
fileTimestamp: number,
isCreating?: boolean,
Expand All @@ -534,7 +535,6 @@ export type FeedVersion = FeedVersionSummary & {
processedByExternalPublisher: ?number,
sentToExternalPublisher: ?number,
user: string,
validationResult: ValidationResult,
validationSummary: ValidationSummary
}

Expand Down

0 comments on commit ddb1f6b

Please sign in to comment.