@@ -13,119 +13,81 @@ import Paper from '@material-ui/core/Paper';
13
13
import styles from '../../../assets/jss/material-dashboard-react/views/dashboardStyle' ;
14
14
import { getPushes } from '../../../services/git-push' ;
15
15
import { KeyboardArrowRight } from '@material-ui/icons' ;
16
- import Search from '../../../components/Search/Search' ; // Import the Search component
17
- import Pagination from '../../../components/Pagination/Pagination' ; // Import Pagination component
16
+ import Search from '../../../components/Search/Search' ;
17
+ import Pagination from '../../../components/Pagination/Pagination' ;
18
18
19
19
export default function PushesTable ( props ) {
20
20
const useStyles = makeStyles ( styles ) ;
21
21
const classes = useStyles ( ) ;
22
22
const [ data , setData ] = useState ( [ ] ) ;
23
- const [ filteredData , setFilteredData ] = useState ( [ ] ) ; // State for filtered data
23
+ const [ filteredData , setFilteredData ] = useState ( [ ] ) ;
24
24
const [ isLoading , setIsLoading ] = useState ( false ) ;
25
25
const [ isError , setIsError ] = useState ( false ) ;
26
26
const navigate = useNavigate ( ) ;
27
27
const [ , setAuth ] = useState ( true ) ;
28
- const [ currentPage , setCurrentPage ] = useState ( 1 ) ; // State for current page
28
+ const [ currentPage , setCurrentPage ] = useState ( 1 ) ;
29
29
const itemsPerPage = 5 ;
30
- const [ searchTerm , setSearchTerm ] = useState ( '' ) ; // Define searchTerm state
30
+ const [ searchTerm , setSearchTerm ] = useState ( '' ) ;
31
31
const openPush = ( push ) => navigate ( `/admin/push/${ push } ` , { replace : true } ) ;
32
32
33
-
34
-
35
-
36
33
useEffect ( ( ) => {
37
34
const query = { } ;
38
-
39
35
for ( const k in props ) {
40
- if ( ! k ) continue ;
41
- query [ k ] = props [ k ] ;
36
+ if ( k ) query [ k ] = props [ k ] ;
42
37
}
43
38
getPushes ( setIsLoading , setData , setAuth , setIsError , query ) ;
44
39
} , [ props ] ) ;
45
40
46
-
47
-
48
41
useEffect ( ( ) => {
49
- // Initialize filtered data with full data on load
50
- const filtered = filterByStatus ( data ) ;
51
- setFilteredData ( filtered ) ;
52
- } , [ props ] ) ;
53
-
54
- const filterByStatus = ( data ) => {
55
- if ( props . authorised ) {
56
- return data . filter ( item => item . status === 'approved' ) ;
57
- }
58
- if ( props . rejected ) {
59
- return data . filter ( item => item . status === 'rejected' ) ;
60
- }
61
- if ( props . canceled ) {
62
- return data . filter ( item => item . status === 'canceled' ) ;
63
- }
64
- if ( props . blocked ) {
65
- return data . filter ( item => item . status === 'pending' ) ;
66
- }
67
- return data ;
68
- } ;
42
+ setFilteredData ( data ) ;
43
+ } , [ data ] ) ;
69
44
70
-
71
- // Apply search to the filtered data
72
45
useEffect ( ( ) => {
73
- const filtered = filterByStatus ( data ) ; // Apply status filter first
74
- if ( searchTerm ) {
75
- const lowerCaseTerm = searchTerm . toLowerCase ( ) ;
76
- const searchFiltered = filtered . filter ( ( item ) =>
77
- item . repo . toLowerCase ( ) . includes ( lowerCaseTerm ) ||
78
- item . commitTo . toLowerCase ( ) . includes ( lowerCaseTerm ) ||
79
-
80
- item . commitData [ 0 ] . message . toLowerCase ( ) . includes ( lowerCaseTerm )
81
- ) ;
82
- setFilteredData ( searchFiltered ) ;
83
- } else {
84
- setFilteredData ( filtered ) ; // Reset to filtered data after clearing search
85
- }
86
- setCurrentPage ( 1 ) ; // Reset pagination on search
87
- } , [ searchTerm , props ] ) ; // Trigger on search or tab change
88
-
89
- // Handler function for search input
90
- const handleSearch = ( searchTerm ) => {
91
- setSearchTerm ( searchTerm ) ; // Update search term state
92
- } ;
46
+ const lowerCaseTerm = searchTerm . toLowerCase ( ) ;
47
+ const filtered = searchTerm
48
+ ? data . filter (
49
+ ( item ) =>
50
+ item . repo . toLowerCase ( ) . includes ( lowerCaseTerm ) ||
51
+ item . commitTo . toLowerCase ( ) . includes ( lowerCaseTerm ) ||
52
+ item . commitData [ 0 ] . message . toLowerCase ( ) . includes ( lowerCaseTerm ) ,
53
+ )
54
+ : data ;
55
+ setFilteredData ( filtered ) ;
56
+ setCurrentPage ( 1 ) ;
57
+ } , [ searchTerm , data ] ) ;
93
58
59
+ const handleSearch = ( term ) => setSearchTerm ( term . trim ( ) ) ;
94
60
95
61
const handlePageChange = ( page ) => {
96
- setCurrentPage ( page ) ; // Update current page
62
+ setCurrentPage ( page ) ;
97
63
} ;
98
64
99
- // Logic for pagination (getting items for the current page)
100
- const indexOfLastItem = currentPage * itemsPerPage ;
101
- const indexOfFirstItem = indexOfLastItem - itemsPerPage ;
102
- const currentItems = filteredData . slice ( indexOfFirstItem , indexOfLastItem ) ;
103
-
104
- // Change page
105
- const paginate = ( pageNumber ) => setCurrentPage ( pageNumber ) ;
65
+ const indexOfLastItem = currentPage * itemsPerPage ;
66
+ const indexOfFirstItem = indexOfLastItem - itemsPerPage ;
67
+ const currentItems = filteredData . slice ( indexOfFirstItem , indexOfLastItem ) ;
68
+
69
+ const paginate = ( pageNumber ) => setCurrentPage ( pageNumber ) ;
106
70
107
71
if ( isLoading ) return < div > Loading...</ div > ;
108
72
if ( isError ) return < div > Something went wrong ...</ div > ;
109
73
110
74
return (
111
75
< div >
112
- < Search onSearch = { handleSearch } /> { /* Use the Search component */ }
113
-
114
-
76
+ < Search onSearch = { handleSearch } /> { }
115
77
< TableContainer component = { Paper } >
116
- < Table className = { classes . table } aria-label = " simple table" >
78
+ < Table className = { classes . table } aria-label = ' simple table' >
117
79
< TableHead >
118
80
< TableRow >
119
- < TableCell align = " left" > Timestamp</ TableCell >
120
- < TableCell align = " left" > Repository</ TableCell >
121
- < TableCell align = " left" > Branch</ TableCell >
122
- < TableCell align = " left" > Commit SHA</ TableCell >
123
- < TableCell align = " left" > Committer</ TableCell >
124
- < TableCell align = " left" > Author</ TableCell >
125
- < TableCell align = " left" > Author E-mail</ TableCell >
126
- < TableCell align = " left" > Commit Message</ TableCell >
127
- < TableCell align = " left" > No. of Commits</ TableCell >
128
- < TableCell align = " right" > </ TableCell >
81
+ < TableCell align = ' left' > Timestamp</ TableCell >
82
+ < TableCell align = ' left' > Repository</ TableCell >
83
+ < TableCell align = ' left' > Branch</ TableCell >
84
+ < TableCell align = ' left' > Commit SHA</ TableCell >
85
+ < TableCell align = ' left' > Committer</ TableCell >
86
+ < TableCell align = ' left' > Author</ TableCell >
87
+ < TableCell align = ' left' > Author E-mail</ TableCell >
88
+ < TableCell align = ' left' > Commit Message</ TableCell >
89
+ < TableCell align = ' left' > No. of Commits</ TableCell >
90
+ < TableCell align = ' right' > </ TableCell >
129
91
</ TableRow >
130
92
</ TableHead >
131
93
< TableBody >
@@ -135,53 +97,53 @@ export default function PushesTable(props) {
135
97
136
98
return (
137
99
< TableRow key = { row . id } >
138
- < TableCell align = " left" >
100
+ < TableCell align = ' left' >
139
101
{ moment
140
102
. unix ( row . commitData [ 0 ] . commitTs || row . commitData [ 0 ] . commitTimestamp )
141
103
. toString ( ) }
142
104
</ TableCell >
143
- < TableCell align = " left" >
144
- < a href = { `https://github.com/${ row . repo } ` } rel = " noreferrer" target = " _blank" >
105
+ < TableCell align = ' left' >
106
+ < a href = { `https://github.com/${ row . repo } ` } rel = ' noreferrer' target = ' _blank' >
145
107
{ repoFullName }
146
108
</ a >
147
109
</ TableCell >
148
- < TableCell align = " left" >
110
+ < TableCell align = ' left' >
149
111
< a
150
112
href = { `https://github.com/${ repoFullName } /tree/${ repoBranch } ` }
151
- rel = " noreferrer"
152
- target = " _blank"
113
+ rel = ' noreferrer'
114
+ target = ' _blank'
153
115
>
154
116
{ repoBranch }
155
117
</ a >
156
118
</ TableCell >
157
- < TableCell align = " left" >
119
+ < TableCell align = ' left' >
158
120
< a
159
121
href = { `https://github.com/${ repoFullName } /commit/${ row . commitTo } ` }
160
- rel = " noreferrer"
161
- target = " _blank"
122
+ rel = ' noreferrer'
123
+ target = ' _blank'
162
124
>
163
125
{ row . commitTo . substring ( 0 , 8 ) }
164
126
</ a >
165
127
</ TableCell >
166
- < TableCell align = " left" >
128
+ < TableCell align = ' left' >
167
129
< a
168
130
href = { `https://github.com/${ row . commitData [ 0 ] . committer } ` }
169
- rel = " noreferrer"
170
- target = " _blank"
131
+ rel = ' noreferrer'
132
+ target = ' _blank'
171
133
>
172
134
{ row . commitData [ 0 ] . committer }
173
135
</ a >
174
136
</ TableCell >
175
- < TableCell align = " left" >
137
+ < TableCell align = ' left' >
176
138
< a
177
139
href = { `https://github.com/${ row . commitData [ 0 ] . author } ` }
178
- rel = " noreferrer"
179
- target = " _blank"
140
+ rel = ' noreferrer'
141
+ target = ' _blank'
180
142
>
181
143
{ row . commitData [ 0 ] . author }
182
144
</ a >
183
145
</ TableCell >
184
- < TableCell align = " left" >
146
+ < TableCell align = ' left' >
185
147
{ row . commitData [ 0 ] . authorEmail ? (
186
148
< a href = { `mailto:${ row . commitData [ 0 ] . authorEmail } ` } >
187
149
{ row . commitData [ 0 ] . authorEmail }
@@ -190,10 +152,10 @@ export default function PushesTable(props) {
190
152
'No data...'
191
153
) }
192
154
</ TableCell >
193
- < TableCell align = " left" > { row . commitData [ 0 ] . message } </ TableCell >
194
- < TableCell align = " left" > { row . commitData . length } </ TableCell >
195
- < TableCell component = "th" scope = " row" >
196
- < Button variant = " contained" color = " primary" onClick = { ( ) => openPush ( row . id ) } >
155
+ < TableCell align = ' left' > { row . commitData [ 0 ] . message } </ TableCell >
156
+ < TableCell align = ' left' > { row . commitData . length } </ TableCell >
157
+ < TableCell component = 'th' scope = ' row' >
158
+ < Button variant = ' contained' color = ' primary' onClick = { ( ) => openPush ( row . id ) } >
197
159
< KeyboardArrowRight />
198
160
</ Button >
199
161
</ TableCell >
@@ -203,18 +165,14 @@ export default function PushesTable(props) {
203
165
</ TableBody >
204
166
</ Table >
205
167
</ TableContainer >
206
- { /* Pagination Component */ }
207
- < Pagination
168
+ { /* Pagination Component */ }
169
+ < Pagination
208
170
itemsPerPage = { itemsPerPage }
209
171
totalItems = { filteredData . length }
210
172
paginate = { paginate }
211
173
currentPage = { currentPage }
212
- onPageChange = { handlePageChange }
174
+ onPageChange = { handlePageChange }
213
175
/>
214
176
</ div >
215
177
) ;
216
178
}
217
-
218
-
219
-
220
-
0 commit comments