Skip to content

Commit 289e1ee

Browse files
authored
Merge pull request #1219 from osmlab/prerelease
v3.6.1
2 parents 52de58e + bd0dd30 commit 289e1ee

File tree

10 files changed

+74
-7
lines changed

10 files changed

+74
-7
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ This project adheres to
88
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
99

1010

11+
## [v3.6.1] - 2020-04-28
12+
### Added
13+
- Links to review tasks on Browse Challenge and Browse Project pages
14+
15+
### Fixed
16+
- User metrics failing to load
17+
- Remove limit when fetching lists of challenges and projects for review
18+
19+
1120
## [v3.6.0] - 2020-04-23
1221
### Added
1322
- Cooperative challenges

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "maproulette3",
3-
"version": "3.6.0",
3+
"version": "3.6.1",
44
"private": true,
55
"dependencies": {
66
"@mapbox/geo-viewport": "^0.4.0",

src/components/ChallengeDetail/ChallengeDetail.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { Component } from 'react'
22
import { Link } from 'react-router-dom'
33
import { FormattedMessage, FormattedRelative, injectIntl } from 'react-intl'
4+
import classNames from 'classnames'
45
import _isObject from 'lodash/isObject'
56
import _get from 'lodash/get'
67
import _findIndex from 'lodash/findIndex'
@@ -225,7 +226,19 @@ export class ChallengeDetail extends Component {
225226
{unsaveControl}
226227
</li>
227228
)}
228-
{manageControl && <li>{manageControl}</li>}
229+
<li>
230+
{_get(this.props.user, 'settings.isReviewer') &&
231+
<Link
232+
className={classNames(
233+
"mr-text-green-lighter hover:mr-text-white mr-mr-4 mr-leading-none",
234+
{"mr-border-r-2 mr-border-white-10 mr-pr-4 mr-mr-4": manageControl})}
235+
to={`/review?challengeId=${challenge.id}&challengeName=${challenge.name}`}
236+
>
237+
<FormattedMessage {...messages.viewReviews} />
238+
</Link>
239+
}
240+
{manageControl}
241+
</li>
229242
</ul>
230243
</div>
231244
</div>

src/components/ChallengeDetail/Messages.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,9 @@ export default defineMessages({
5454
defaultMessage: "View Leaderboard",
5555
},
5656

57+
viewReviews: {
58+
id: "ChallengeDetails.fields.viewReviews.label",
59+
defaultMessage: "Review",
60+
},
61+
5762
})

src/components/ProjectDetail/Messages.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,9 @@ export default defineMessages({
5555
id: "ProjectDetails.fields.viewLeaderboard.label",
5656
defaultMessage: "View Leaderboard",
5757
},
58+
59+
viewReviews: {
60+
id: "ProjectDetails.fields.viewReviews.label",
61+
defaultMessage: "Review",
62+
},
5863
})

src/components/ProjectDetail/ProjectDetail.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { Component } from 'react'
22
import { Link } from 'react-router-dom'
3+
import classNames from 'classnames'
34
import { FormattedMessage, FormattedRelative, injectIntl } from 'react-intl'
45
import _isObject from 'lodash/isObject'
56
import _get from 'lodash/get'
@@ -124,8 +125,20 @@ export class ProjectDetail extends Component {
124125

125126
<ProjectProgress className="mr-my-4" {...this.props} />
126127

127-
<ul className="mr-card-challenge__actions">
128-
{manageControl && <li>{manageControl}</li>}
128+
<ul className="mr-card-challenge__actions mr-mt-4 mr-leading-none mr-text-base">
129+
<li>
130+
{_get(this.props.user, 'settings.isReviewer') &&
131+
<Link
132+
className={classNames(
133+
"mr-text-green-lighter hover:mr-text-white mr-mr-4",
134+
{"mr-border-r-2 mr-border-white-10 mr-pr-4 mr-mr-4": manageControl})}
135+
to={`/review?projectId=${project.id}&projectName=${project.displayName}`}
136+
>
137+
<FormattedMessage {...messages.viewReviews} />
138+
</Link>
139+
}
140+
{manageControl}
141+
</li>
129142
</ul>
130143
</div>
131144
</div>

src/lang/en-US.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@
309309
"ChallengeDetails.fields.lastChallengeDetails.TaskRefresh.label": "Tasks From",
310310
"ChallengeDetails.fields.lastChallengeDetails.DataOriginDate.label": "Tasks built on {refreshDate} from data sourced on {sourceDate}.",
311311
"ChallengeDetails.fields.viewLeaderboard.label": "View Leaderboard",
312+
"ChallengeDetails.fields.viewReviews.label": "Review",
312313
"ChallengeEndModal.header": "Challenge End",
313314
"ChallengeEndModal.primaryMessage": "You have marked all remaining tasks in this challenge as either skipped or too hard.",
314315
"ChallengeEndModal.control.dismiss.label": "Continue",
@@ -613,6 +614,7 @@
613614
"ProjectDetails.fields.created.label": "Created",
614615
"ProjectDetails.fields.modified.label": "Modified",
615616
"ProjectDetails.fields.viewLeaderboard.label": "View Leaderboard",
617+
"ProjectDetails.fields.viewReviews.label": "Review",
616618
"Admin.TaskReview.controls.updateReviewStatusTask.label": "Update Review Status",
617619
"Admin.TaskReview.controls.currentTaskStatus.label": "Task Status:",
618620
"Admin.TaskReview.controls.currentReviewStatus.label": "Review Status:",
@@ -1021,7 +1023,7 @@
10211023
"Review.Dashboard.myReviewTasks": "My Reviewed Tasks",
10221024
"Review.Dashboard.allReviewedTasks": "All Review-related Tasks",
10231025
"Review.Dashboard.volunteerAsReviewer.label": "Volunteer as a Reviewer",
1024-
"Review.Dashboard.goBack.label": "Go Back",
1026+
"Review.Dashboard.goBack.label": "Reconfigure Reviews",
10251027
"ReviewStatus.metrics.title": "Review Status",
10261028
"ReviewStatus.metrics.awaitingReview": "Tasks awaiting review",
10271029
"ReviewStatus.metrics.approvedReview": "Review tasks that passed",

src/pages/Review/Messages.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ export default defineMessages({
3131

3232
goBack: {
3333
id: "Review.Dashboard.goBack.label",
34-
defaultMessage: "Go Back",
34+
defaultMessage: "Reconfigure Reviews",
3535
}
3636
})

src/pages/Review/Review.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import PropTypes from 'prop-types'
44
import { Link } from 'react-router-dom'
55
import { injectIntl } from 'react-intl'
66
import MediaQuery from 'react-responsive'
7+
import queryString from 'query-string'
78
import classNames from 'classnames'
89
import _cloneDeep from 'lodash/cloneDeep'
910
import _get from 'lodash/get'
11+
import _isFinite from 'lodash/isFinite'
12+
import _parseInt from 'lodash/parseInt'
1013
import _isUndefined from 'lodash/isUndefined'
1114
import AsEndUser from '../../interactions/User/AsEndUser'
1215
import WithCurrentUser from '../../components/HOCs/WithCurrentUser/WithCurrentUser'
@@ -63,6 +66,19 @@ export class ReviewTasksDashboard extends Component {
6366
}
6467

6568
componentDidUpdate(prevProps) {
69+
if (!this.state.filterSelected[this.state.showType] &&
70+
_get(this.props.history, 'location.search')) {
71+
const urlParams = queryString.parse(_get(this.props, 'location.search'))
72+
if (_isFinite(_parseInt(urlParams.challengeId))) {
73+
this.setSelectedChallenge(urlParams.challengeId, urlParams.challengeName)
74+
return
75+
}
76+
else if (_isFinite(_parseInt(urlParams.projectId))) {
77+
this.setSelectedProject(urlParams.projectId, urlParams.projectName)
78+
return
79+
}
80+
}
81+
6682
if (this.props.location.pathname !== prevProps.location.pathname &&
6783
this.props.location.search !== prevProps.location.search) {
6884
window.scrollTo(0, 0)
@@ -103,6 +119,9 @@ export class ReviewTasksDashboard extends Component {
103119
const filterSelected = _cloneDeep(this.state.filterSelected)
104120
filterSelected[this.state.showType] = null
105121
this.setState({filterSelected})
122+
this.props.history.push({
123+
pathname: `/review/${this.state.showType}`
124+
})
106125
}
107126

108127
changeTab = (tab) => {

src/services/Task/TaskReview/TaskReview.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,8 @@ export const fetchReviewChallenges = function(reviewTasksType,
331331
return new Endpoint(
332332
api.challenges.withReviewTasks,
333333
{schema: [challengeSchema()],
334-
params:{reviewTasksType: type, excludeOtherReviewers, tStatus}}
334+
params:{reviewTasksType: type, excludeOtherReviewers, tStatus,
335+
limit: -1}}
335336
).execute().then(normalizedResults => {
336337
dispatch(receiveReviewChallenges(normalizedResults.entities.challenges, RequestStatus.success))
337338
dispatch(receiveReviewProjects(normalizedResults.entities.projects, RequestStatus.success))

0 commit comments

Comments
 (0)