Skip to content

Commit 0c8f68d

Browse files
committed
Fixed flattenObject function in organiser/projects pages to enable export
Moved dispatch of organizer actions to their respective pages, to avoid loading data that is not necessary Removed unused packages and commented code Renamed outdated components to use their latest name in material
1 parent af2d5b8 commit 0c8f68d

8 files changed

Lines changed: 60 additions & 35 deletions

File tree

frontend/src/components/tables/ProjectsTable/index.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@ const ProjectsTable = ({ projects }) => {
1414
const event = useSelector(OrganiserSelectors.event)
1515

1616
const skipArray = ['_id', '__v', 'id', 'key', 'section']
17-
function flattenObject(ob) {
17+
const flattenObject = ob => {
1818
let toReturn = {}
1919
for (let i in ob) {
2020
if (!ob.hasOwnProperty(i) || skipArray.some(val => val === i))
2121
continue
2222

23-
if (typeof ob[i] === 'object' && ob[i] !== null) {
23+
if (i === 'description' || i === 'punchline') {
24+
toReturn[i] = ob[i].replace(/"/g, '""')
25+
continue
26+
} else if (typeof ob[i] === 'object' && ob[i] !== null) {
2427
let flatObject = flattenObject(ob[i])
2528
for (let x in flatObject) {
2629
if (!flatObject.hasOwnProperty(x)) continue
@@ -98,6 +101,18 @@ const ProjectsTable = ({ projects }) => {
98101
setSelected(selectedRows)
99102
}
100103

104+
// debugGroup(
105+
// 'Projects to export',
106+
// selected.map(item => {
107+
// const returnObject = {
108+
// ...flattenObject(item.original),
109+
// projectId: item.original._id,
110+
// projectURL: projectURLgenerator(event.slug, item.original._id),
111+
// }
112+
// return returnObject
113+
// }),
114+
// )
115+
101116
return (
102117
<>
103118
<EditProjectModal
@@ -120,12 +135,12 @@ const ProjectsTable = ({ projects }) => {
120135
}}
121136
data={selected.map(item => {
122137
const returnObject = {
123-
...flattenObject(item.original),
124138
projectId: item.original._id,
125139
projectURL: projectURLgenerator(
126140
event.slug,
127141
item.original._id,
128142
),
143+
...flattenObject(item.original),
129144
}
130145
return returnObject
131146
})}

frontend/src/pages/_dashboard/renderDashboard/organiser/edit/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import ChallengesTab from './challenges'
2121
import ScheduleTab from './schedule'
2222
import QuestionsTab from './questions'
2323
import SubmissionFormTab from './submission'
24-
import TimelineTab from './timeline'
24+
// import TimelineTab from './timeline'
2525
import MeetingRoomsTab from './meetingRooms'
2626
import OtherTab from './other'
2727
import HackerpackTab from './hackerpack'

frontend/src/pages/_dashboard/renderDashboard/organiser/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ export default () => {
5959
OrganiserActions.updateRecruitersForEvent(event.recruiters),
6060
)
6161
dispatch(OrganiserActions.updateRegistrationsForEvent(slug))
62-
dispatch(OrganiserActions.updateTeamsForEvent(slug))
62+
// dispatch(OrganiserActions.updateTeamsForEvent(slug))
6363
dispatch(OrganiserActions.updateFilterGroups(slug))
64-
dispatch(OrganiserActions.updateProjects(slug))
65-
dispatch(OrganiserActions.updateGavelProjects(slug))
66-
dispatch(OrganiserActions.updateRankings(slug))
67-
dispatch(OrganiserActions.generateResults(slug)) // TODO do we need to get results always?
64+
// dispatch(OrganiserActions.updateProjects(slug))
65+
// dispatch(OrganiserActions.updateGavelProjects(slug))
66+
// dispatch(OrganiserActions.updateRankings(slug))
67+
// dispatch(OrganiserActions.generateResults(slug)) // TODO do we need to get results always?
6868
}
6969
}, [dispatch, slug, event])
7070
return (

frontend/src/pages/_dashboard/renderDashboard/organiser/participants/index.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react'
1+
import React, { useEffect } from 'react'
22

33
import { useRouteMatch, useLocation } from 'react-router'
44
import PageWrapper from 'components/layouts/PageWrapper'
@@ -10,10 +10,21 @@ import TeamsTab from './teams'
1010
import AssignedTab from './assigned'
1111
// import TravelTab from './travel'
1212
import AdminTab from './admin'
13+
import * as OrganiserSelectors from 'redux/organiser/selectors'
14+
import * as OrganiserActions from 'redux/organiser/actions'
15+
import { useDispatch, useSelector } from 'react-redux'
1316

1417
export default () => {
18+
const event = useSelector(OrganiserSelectors.event)
19+
const dispatch = useDispatch()
1520
const match = useRouteMatch()
1621
const location = useLocation()
22+
23+
useEffect(() => {
24+
if (event) {
25+
dispatch(OrganiserActions.updateTeamsForEvent(event.slug))
26+
}
27+
}, [event, location])
1728
return (
1829
<PageWrapper>
1930
<PageHeader

frontend/src/pages/_dashboard/renderDashboard/organiser/projects/by-challenge/index.js

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { useSelector } from 'react-redux'
33
import { sortBy } from 'lodash-es'
44
import {
55
Box,
6-
ExpansionPanel,
7-
ExpansionPanelSummary,
8-
ExpansionPanelDetails,
6+
Accordion,
7+
AccordionSummary,
8+
AccordionDetails,
99
ListItemText,
1010
} from '@material-ui/core'
1111
import ExpandMoreIcon from '@material-ui/icons/ExpandMore'
@@ -24,7 +24,6 @@ export default () => {
2424
const projectsWithTeam = projects
2525
.map(project => {
2626
const teamFound = teams.find(team => {
27-
console.log(team._id, project.team)
2827
return team._id === project.team
2928
})
3029
if (teamFound) {
@@ -48,8 +47,8 @@ export default () => {
4847
{challenges.map(challenge => {
4948
const projects = getProjectsForChallenge(challenge.slug)
5049
return (
51-
<ExpansionPanel key={challenge.slug}>
52-
<ExpansionPanelSummary
50+
<Accordion key={challenge.slug}>
51+
<AccordionSummary
5352
expandIcon={<ExpandMoreIcon />}
5453
aria-controls="panel1a-content"
5554
id="panel1a-header"
@@ -58,8 +57,8 @@ export default () => {
5857
primary={challenge.name}
5958
secondary={`${challenge.partner} // ${projects.length} projects`}
6059
></ListItemText>
61-
</ExpansionPanelSummary>
62-
<ExpansionPanelDetails>
60+
</AccordionSummary>
61+
<AccordionDetails>
6362
<Box
6463
display="flex"
6564
flexDirection="column"
@@ -68,13 +67,10 @@ export default () => {
6867
<Box p={1}>
6968
<ChallengeLink challenge={challenge.slug} />
7069
</Box>
71-
<ProjectsTable
72-
baseURL={`/projects/${event.slug}/view/`}
73-
projects={projects}
74-
/>
70+
<ProjectsTable projects={projects} />
7571
</Box>
76-
</ExpansionPanelDetails>
77-
</ExpansionPanel>
72+
</AccordionDetails>
73+
</Accordion>
7874
)
7975
})}
8076
</Box>

frontend/src/pages/_dashboard/renderDashboard/organiser/projects/default/index.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ import ProjectsTable from 'components/tables/ProjectsTable'
55

66
export default () => {
77
const projects = useSelector(OrganiserSelectors.projects)
8-
const event = useSelector(OrganiserSelectors.event)
98

10-
return (
11-
<ProjectsTable
12-
baseURL={`/projects/${event.slug}/view/`}
13-
projects={projects}
14-
/>
15-
)
9+
return <ProjectsTable projects={projects} />
1610
}

frontend/src/pages/_dashboard/renderDashboard/organiser/projects/index.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import React, { useMemo } from 'react'
1+
import React, { useEffect, useMemo } from 'react'
22

3-
import { useSelector } from 'react-redux'
3+
import { useDispatch, useSelector } from 'react-redux'
44
import { useRouteMatch, useLocation } from 'react-router'
55
import { OverallReviewingMethods } from '@hackjunction/shared'
66

@@ -17,12 +17,21 @@ import WinnersTab from './winners'
1717
import FinalistSelectionTab from './finalist-selection'
1818
import VotingTokensTab from './votingTokens'
1919
import * as OrganiserSelectors from 'redux/organiser/selectors'
20+
import * as OrganiserActions from 'redux/organiser/actions'
2021

2122
export default () => {
23+
const dispatch = useDispatch()
2224
const event = useSelector(OrganiserSelectors.event)
23-
const projectsLoading = useSelector(OrganiserSelectors.projectsLoading)
2425
const match = useRouteMatch()
2526
const location = useLocation()
27+
useEffect(() => {
28+
if (event.slug) {
29+
dispatch(OrganiserActions.updateTeamsForEvent(event.slug))
30+
dispatch(OrganiserActions.updateProjects(event.slug))
31+
}
32+
}, [event, location])
33+
34+
const projectsLoading = useSelector(OrganiserSelectors.projectsLoading)
2635

2736
const tabs = useMemo(() => {
2837
const data = [

frontend/src/pages/_dashboard/renderDashboard/organiser/router.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react'
22
import { useRouteMatch } from 'react-router'
33
import { Route, Switch, Redirect } from 'react-router-dom'
44

5-
import DefaultPage from './default'
5+
// import DefaultPage from './default'
66
import SlugPage from './index'
77

88
export default () => {

0 commit comments

Comments
 (0)