1
1
import React , { useState , useEffect } from 'react' ;
2
- import { Link } from 'react-router-dom' ;
3
2
import { useQuery } from '@apollo/client' ;
4
-
5
3
import { GET_PROJECTS } from './gqlStrings' ;
6
4
import Project from './Project.tsx' ;
7
5
import NavBar from './NavbarDash' ;
@@ -20,52 +18,42 @@ const ProjectContainer = () => {
20
18
// }
21
19
22
20
// --------------------------Sorting Buttons------------------------------------//
21
+
23
22
// hook for sorting menu
24
23
const [ selectedOption , setSelectedOption ] = useState ( null ) ;
25
24
26
25
const sortByRating = ( projects ) => {
27
- // console.log('sort by rating :', projects);
28
26
// generate a sorted array of public projects based on likes
29
- const sortedRatings = projects . sort ( ( a , b ) => b . likes - a . likes ) ;
30
- // console.log('sort by rating result >>>', sortedRatings);
31
-
32
- // setRenderedOption(sortedRatings);
27
+ const sortedRatings = projects . sort ( ( a , b ) => b . likes - a . likes ) ;
33
28
return sortedRatings ;
34
29
} ;
35
30
36
31
const sortByDate = ( projects ) => {
37
- console . log ( 'sort by date' , projects ) ;
38
-
32
+ // generate a sorted array of public projects based on date
39
33
const sortedRatings = projects . sort ( ( a , b ) => b . createdAt - a . createdAt ) ;
40
- console . log ( 'sort by date result >>>' , sortedRatings ) ;
41
-
42
34
return sortedRatings ;
43
35
} ;
44
36
45
37
const sortByUser = ( projects ) => {
46
- console . log ( 'sort by user' , projects ) ;
38
+ // generate a sorted array of public projects based on username
47
39
const sortedRatings = projects . sort ( ( a , b ) => b . user - a . user ) ;
48
- console . log ( 'sort by rating result >>>' , sortedRatings ) ;
49
-
50
40
return sortedRatings ;
51
41
} ;
52
-
53
-
54
42
// ===================================================================================== //
55
43
56
44
// useQuery hook abstracts fetch request
57
- // Need to find where the userId is stored for the logged in user.
58
- const { loading, error, data } = useQuery ( GET_PROJECTS , { pollInterval : 2000 , variables : myVar } ) ;
45
+ const { loading, error, data } = useQuery ( GET_PROJECTS , { pollInterval : 2000 , variables : myVar } ) ;
59
46
if ( loading ) return < p > Loading...</ p > ;
60
47
if ( error ) return < p > Error :{ error } </ p > ;
48
+
61
49
// based on resolver(getAllProject) for this query, the data is stored in the data object with the key 'getAllProjects'
62
50
const projects = data . getAllProjects ;
63
- console . log ( "projects >>>>>>" , projects ) ;
51
+
52
+ // create array to hold the data recieved in the public dashboard the will be conditionally rendered
64
53
let sortedProjects = [ ] ;
65
- // console.log('Projects >>> ', projects);
66
- // generate an array of Project components based on data
67
- let publicDisplay = [ ] ;
54
+ // create array to hold the components Project of loggin-in users
68
55
const userDisplay = [ ] ;
56
+ // generate an array of Project components based on queried data
69
57
projects . forEach ( ( proj , index ) => {
70
58
const component = < Project
71
59
key = { index }
@@ -77,34 +65,27 @@ const ProjectContainer = () => {
77
65
createdAt = { proj . createdAt }
78
66
id = { proj . id }
79
67
/> ;
68
+ // sorting the public and private dashboards based on the user's username
80
69
if ( username === proj . username ) userDisplay . push ( component ) ;
81
70
if ( proj . published ) {
82
- // publicDisplay.push(component);
71
+
83
72
sortedProjects . push ( proj ) ;
84
73
}
85
74
} ) ;
86
75
87
76
88
- // function for sorting menu in nav bar
89
-
77
+ // function for selecting drop down sorting menu
90
78
const optionClicked = ( value ) => {
91
- console . log ( 'value' , value ) ;
92
79
setSelectedOption ( value ) ;
93
80
} ;
94
-
95
-
96
-
97
- console . log ( 'SortedProject >>> ' , sortedProjects ) ;
98
-
99
- // if selectedOption === null, displaySorted = publicProjects
100
- // else displaySorted = convert to components from return value of a sortBy function)
81
+ // checking which sorting method was selected from drop down menu and invoking correct sorting function
101
82
if ( selectedOption === 'date' ) sortedProjects = sortByDate ( sortedProjects ) ;
102
83
else if ( selectedOption === 'user' ) sortedProjects = sortByUser ( sortedProjects ) ;
103
84
else if ( selectedOption === 'rating' ) sortedProjects = sortByRating ( sortedProjects ) ;
104
85
86
+ // create an array of components Project that will be conditionally rendered
105
87
const sortedDisplay = [ ] ;
106
88
sortedProjects . forEach ( ( proj , index ) => {
107
- console . log ( 'Pushing to displayProjects >>> ' , proj ) ;
108
89
sortedDisplay . push ( < Project
109
90
key = { index }
110
91
name = { proj . name }
@@ -116,29 +97,20 @@ const ProjectContainer = () => {
116
97
id = { proj . id }
117
98
/> ) ;
118
99
} ) ;
119
- console . log ( 'displaySorted >>> ' , sortedDisplay ) ;
120
-
121
-
122
- // if (selectedOption === 'date') sortByDate(publicProjects);
123
- // if (selectedOption === 'user') sortByUser(publicProjects);
124
- // console.log('selectedOption', selectedOption);
125
-
126
-
127
-
100
+
128
101
return (
129
102
< div >
130
- < NavBar optionClicked = { optionClicked } />
131
- < h1 > Public Dashboard </ h1 >
103
+ < NavBar optionClicked = { optionClicked } />
104
+ < h1 > Public Dashboard </ h1 >
132
105
< div className = "projectContainer" >
133
106
{ sortedDisplay }
134
107
</ div >
135
- < hr > </ hr >
108
+ < hr > </ hr >
136
109
< h1 > User Dashboard </ h1 >
137
110
< div className = "projectContainer" >
138
- { userDisplay }
139
- </ div >
140
-
111
+ { userDisplay }
141
112
</ div >
113
+ </ div >
142
114
) ;
143
115
} ;
144
116
export default ProjectContainer ;
0 commit comments