From 08d3b846c7718cb4232bdf88ffcde5abb64ac17c Mon Sep 17 00:00:00 2001 From: Tomasz Knapik <hi@tmkn.org> Date: Wed, 9 Jan 2019 20:10:27 +0000 Subject: [PATCH] Show status on the list --- opentech/apply/funds/serializers.py | 2 +- .../static_src/src/app/src/api/submissions.js | 4 +++- opentech/static_src/src/app/src/api/utils.js | 4 +++- .../src/components/SubmissionsByRoundList.js | 9 ++++++--- .../components/SubmissionsByRoundListItem.js | 17 ++++++++++++++++ .../app/src/redux/selectors/submissions.js | 20 ++++++++++++++----- 6 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 opentech/static_src/src/app/src/components/SubmissionsByRoundListItem.js diff --git a/opentech/apply/funds/serializers.py b/opentech/apply/funds/serializers.py index acaf39eb7..6275248cf 100644 --- a/opentech/apply/funds/serializers.py +++ b/opentech/apply/funds/serializers.py @@ -6,7 +6,7 @@ from .models import ApplicationSubmission class SubmissionListSerializer(serializers.ModelSerializer): class Meta: model = ApplicationSubmission - fields = ('id',) + fields = ('id', 'title', 'status') class SubmissionDetailSerializer(serializers.ModelSerializer): diff --git a/opentech/static_src/src/app/src/api/submissions.js b/opentech/static_src/src/app/src/api/submissions.js index 5b8f5b169..c51e1f568 100644 --- a/opentech/static_src/src/app/src/api/submissions.js +++ b/opentech/static_src/src/app/src/api/submissions.js @@ -1,5 +1,7 @@ import { apiFetch } from '@api/utils'; export async function fetchSubmissionsByRound(id) { - return apiFetch('/apply/api/submissions/'); + return apiFetch('/apply/api/submissions/', 'GET', { + 'round': id, + }); } diff --git a/opentech/static_src/src/app/src/api/utils.js b/opentech/static_src/src/app/src/api/utils.js index 0794fface..4a9db7711 100644 --- a/opentech/static_src/src/app/src/api/utils.js +++ b/opentech/static_src/src/app/src/api/utils.js @@ -7,7 +7,9 @@ export async function apiFetch(path, method = 'GET', params, options) { url.pathname = path; if (params !== undefined) { - url.searchParams = new URLSearchParams(params); + for (const [paramKey, paramValue] of Object.entries(params)) { + url.searchParams.set(paramKey, paramValue); + } } return fetch(url, { diff --git a/opentech/static_src/src/app/src/components/SubmissionsByRoundList.js b/opentech/static_src/src/app/src/components/SubmissionsByRoundList.js index 581ae53ff..13fb62442 100644 --- a/opentech/static_src/src/app/src/components/SubmissionsByRoundList.js +++ b/opentech/static_src/src/app/src/components/SubmissionsByRoundList.js @@ -1,16 +1,19 @@ import React from 'react'; import SubmissionsByRoundListHeading from '@components/SubmissionsByRoundListHeading'; +import SubmissionsByRoundListItem from '@components/SubmissionsByRoundListItem'; export default class SubmissionsByRoundList extends React.Component { renderListItems() { return this.props.items.map(v => { - const applications = []; + const submissions = v.submissions.map(v => { + return <SubmissionsByRoundListItem key={`submission-${v.id}`} title={v.title} />; + }); return ( <> - <SubmissionsByRoundListHeading key="status-{v.title}" title={v.title} count={v.applications.length} /> + <SubmissionsByRoundListHeading key="status-{v.title}" title={v.title} count={v.submissions.length} /> <ul> - {applications} + {submissions} </ul> </> ); diff --git a/opentech/static_src/src/app/src/components/SubmissionsByRoundListItem.js b/opentech/static_src/src/app/src/components/SubmissionsByRoundListItem.js new file mode 100644 index 000000000..ecb3f91db --- /dev/null +++ b/opentech/static_src/src/app/src/components/SubmissionsByRoundListItem.js @@ -0,0 +1,17 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + + +export default class SubmissionsByRoundListItem extends React.Component { + render() { + return ( + <li> + <a>{this.props.title}</a> + </li> + ); + } +} + +SubmissionsByRoundListItem.propTypes = { + title: PropTypes.string, +}; diff --git a/opentech/static_src/src/app/src/redux/selectors/submissions.js b/opentech/static_src/src/app/src/redux/selectors/submissions.js index 37a267695..4b231e4e7 100644 --- a/opentech/static_src/src/app/src/redux/selectors/submissions.js +++ b/opentech/static_src/src/app/src/redux/selectors/submissions.js @@ -12,11 +12,21 @@ const getCurrentRoundSubmissions = createSelector( const getCurrentRoundSubmissionsByStatus = createSelector( [getCurrentRoundSubmissions] , currentRoundSubmissions => { - const submissionsByStatus = [{ - title: 'Test stage', - applications: currentRoundSubmissions, - }]; - return submissionsByStatus; + const submissionsByStatus = {}; + for (const submission of currentRoundSubmissions) { + if (!(submission.status in submissionsByStatus)) { + submissionsByStatus[submission.status] = []; + } + submissionsByStatus[submission.status].push(submission); + } + const formattedSubmissionsByStatus = []; + for (const [submissionStatus, statusSubmissions] of Object.entries(submissionsByStatus)) { + formattedSubmissionsByStatus.push({ + title: submissionStatus, + submissions: statusSubmissions, + }); + } + return formattedSubmissionsByStatus; } ); -- GitLab