Skip to content

Commit fdebfb5

Browse files
authored
Merge pull request #796 from wickathou/fix/dashboard-performance-organizers
Fix - Fixes for the participant and projects view, plus improved performance Dashboard organizers
2 parents a16b615 + b20ed49 commit fdebfb5

10 files changed

Lines changed: 22001 additions & 21978 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
@@ -109,6 +112,18 @@ const ProjectsTable = ({ projects }) => {
109112
setSelected(selectedRows)
110113
}
111114

115+
// debugGroup(
116+
// 'Projects to export',
117+
// selected.map(item => {
118+
// const returnObject = {
119+
// ...flattenObject(item.original),
120+
// projectId: item.original._id,
121+
// projectURL: projectURLgenerator(event.slug, item.original._id),
122+
// }
123+
// return returnObject
124+
// }),
125+
// )
126+
112127
return (
113128
<>
114129
<EditProjectModal
@@ -131,12 +146,12 @@ const ProjectsTable = ({ projects }) => {
131146
}}
132147
data={selected.map(item => {
133148
const returnObject = {
134-
...flattenObject(item.original),
135149
projectId: item.original._id,
136150
projectURL: projectURLgenerator(
137151
event.slug,
138152
item.original._id,
139153
),
154+
...flattenObject(item.original),
140155
}
141156
return returnObject
142157
})}

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: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,22 @@ export default () => {
4949

5050
useEffect(() => {
5151
if (event) {
52-
dispatch(
53-
OrganiserActions.updateOrganisersForEvent(
54-
event.owner,
55-
event.organisers,
56-
),
57-
)
52+
// dispatch(
53+
// OrganiserActions.updateOrganisersForEvent(
54+
// event.owner,
55+
// event.organisers,
56+
// ),
57+
// )
5858
dispatch(
5959
OrganiserActions.updateRecruitersForEvent(event.recruiters),
6060
)
61-
dispatch(OrganiserActions.updateRegistrationsForEvent(slug))
62-
dispatch(OrganiserActions.updateTeamsForEvent(slug))
61+
// dispatch(OrganiserActions.updateRegistrationsForEvent(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: 13 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,22 @@ 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.updateRegistrationsForEvent(event.slug))
26+
dispatch(OrganiserActions.updateTeamsForEvent(event.slug))
27+
}
28+
}, [event, location])
1729
return (
1830
<PageWrapper>
1931
<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 () => {

frontend/src/styles/index.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
@tailwind components;
22
@tailwind utilities;
33
/* CSS */
4-
@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);
54

65
/* Create below composite classes, after you finish, from the /frontend directory, you must run the command 'npm run build:tailwind' to build tailwind css to see the changes on the development enviroment
76

0 commit comments

Comments
 (0)