diff --git a/package.json b/package.json index 95854cff..6e8b3ce6 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "@types/react-csv": "^1.1.1", "apollo-cache-inmemory": "^1.0.0", "apollo-client": "^2.0.1", "apollo-client-preset": "^1.0.1", diff --git a/src/actions/statisticsActions.js b/src/actions/statisticsActions.js index abc79207..42b3bab5 100644 --- a/src/actions/statisticsActions.js +++ b/src/actions/statisticsActions.js @@ -2,7 +2,10 @@ import { queryStatistics } from '../api/graphQL' import { FETCH_STATISTICS_START, FETCH_STATISTICS_PASS, - FETCH_STATISTICS_FAIL + FETCH_STATISTICS_FAIL, + FETCH_PARTNER_STATISTICS_PASS, + FETCH_PARTNER_STATISTICS_START, + FETCH_PARTNER_STATISTICS_FAIL } from '../types' function startFetchStatistics () { @@ -33,7 +36,35 @@ export function fetchStatisticsPass (statistics) { ) } -export default function fetchStatistics (semester, partner) { +function startFetchPartnerStatistics () { + return ( + { + type: FETCH_PARTNER_STATISTICS_START + } + ) +} + +function fetchPartnerStatisticsFail (error) { + return ( + { + type: FETCH_PARTNER_STATISTICS_FAIL, + payload: { error } + } + ) +} + +export function fetchPartnerStatisticsPass (partnerStatistics) { + return ( + { + type: FETCH_PARTNER_STATISTICS_PASS, + payload: { + partnerStatistics + } + } + ) +} + +export function fetchStatistics (semester, partner) { return function disp (dispatch) { dispatch(startFetchStatistics()) queryStatistics(semester, partner) @@ -43,4 +74,16 @@ export default function fetchStatistics (semester, partner) { dispatch(fetchStatisticsFail(e.message)) }) } +} + +export function fetchPartnerStatistics (semester, partner) { + return function disp (dispatch) { + dispatch(startFetchPartnerStatistics()) + queryStatistics(semester, partner) + .then(res => { dispatch(fetchPartnerStatisticsPass(res)) } + ) + .catch((e) => { + dispatch(fetchPartnerStatisticsFail(e.message)) + }) + } } \ No newline at end of file diff --git a/src/api/graphQL.js b/src/api/graphQL.js index f5e03c2a..7849e87f 100644 --- a/src/api/graphQL.js +++ b/src/api/graphQL.js @@ -94,6 +94,7 @@ function requestedTime(requirements, semester){ }) return reqTime } +const removeRejectedProposals = proposals => proposals.filter(proposal => proposal.status !== 'Rejected') export function convertProposals(proposals, semester, partner){ if (!proposals.proposals){ return []} @@ -264,7 +265,10 @@ export function queryProposals(semester, partner){ ` return graphqlClient().post('/graphql', { query }) .then( - response => convertProposals(response.data.data, semester, partner) + response => { + const convertedProposals = convertProposals(response.data.data, semester, partner) + return removeRejectedProposals(convertedProposals) + } ) } diff --git a/src/components/Filters.js b/src/components/Filters.js index 94c06a82..0535de50 100644 --- a/src/components/Filters.js +++ b/src/components/Filters.js @@ -10,7 +10,7 @@ import { storePartnerAllocations } from '../actions/timeAllocationActions' import { semestersArray, getPartnerList, getAstronomersList } from '../util/filters' import { defaultSemester } from '../util' import { ADMINISTRATOR, SALT_ASTRONOMER, BOARD, TAC_CHAIR } from '../types' -import fetchStatistics from '../actions/statisticsActions' +import {fetchStatistics, fetchPartnerStatistics} from '../actions/statisticsActions' class Filters extends React.Component { updateSemester = value => { @@ -18,7 +18,7 @@ class Filters extends React.Component { dispatch(fetchProposals( value, filters.selectedPartner)) dispatch(fetchPartnerStatProposals( value, filters.selectedPartner)) dispatch(fetchStatistics( value, filters.selectedPartner)) - dispatch(fetchStatistics(value, filters.selectedPartner)) + dispatch(fetchPartnerStatistics(value, filters.selectedPartner)) dispatch(storePartnerAllocations(value, filters.selectedPartner)) dispatch(semesterChange(value)) }; @@ -26,7 +26,8 @@ class Filters extends React.Component { const { dispatch, filters } = this.props dispatch(fetchProposals( filters.selectedSemester, value)) dispatch(fetchPartnerStatProposals( filters.selectedPartnerStatsSemester, value)) - dispatch(fetchStatistics(filters.selectedPartnerStatsSemester, value)) + dispatch(fetchStatistics(filters.selectedSemester, value)) + dispatch(fetchPartnerStatistics(filters.selectedPartnerStatsSemester, value)) dispatch(storePartnerAllocations(filters.selectedSemester, value)) dispatch(partnerChange(value)) }; diff --git a/src/components/messages/NoRejectedProposalsMessage.js b/src/components/messages/NoRejectedProposalsMessage.js new file mode 100644 index 00000000..703c5355 --- /dev/null +++ b/src/components/messages/NoRejectedProposalsMessage.js @@ -0,0 +1,13 @@ +import React from 'react' + +const NoRejectedProposalsMessage = () => ( +
Please note that rejected proposals are not included.
+Click here for navigating to the dashboard
@@ -149,7 +151,7 @@ export default connect(store => ( user: store.user.user, partnerShareTimes: store.partnerShareTimes.partnerShareTimes, loading: store.partnerStatProposals.fetching, - statistics: store.statistics.statistics, + statistics: store.statistics.partnerStatistics, submittingCompletionComment: store.partnerStatProposals.submittingCompletionComment, submittedCompletionComment: store.partnerStatProposals.submittedCompletionComment, submittingCommentError: store.partnerStatProposals.errors.submittingCommentError diff --git a/src/components/pages/StatisticsPage.js b/src/components/pages/StatisticsPage.js index 65552851..9c5e8b8a 100644 --- a/src/components/pages/StatisticsPage.js +++ b/src/components/pages/StatisticsPage.js @@ -25,6 +25,7 @@ import RSSDetectorModeTable from '../tables/statisticsTables/RSSDetectorModeTabl import HRSStatistics from '../tables/statisticsTables/HRSStatistics' import RSSObservingModeTable from '../tables/statisticsTables/RSSObservingModeTable' import SALTICAMStatistics from '../tables/statisticsTables/SALTICAMStatistics' +import NoRejectedProposalsMessage from '../messages/NoRejectedProposalsMessage' class StatisticsPage extends React.Component { @@ -53,7 +54,7 @@ class StatisticsPage extends React.Component { return(