✨ sorting by Title/Year implemented
Co-authored-by: haraldnilsen <harald_998@hotmail.com>
This commit is contained in:
		
							parent
							
								
									33ad71c460
								
							
						
					
					
						commit
						51a192ccba
					
				
					 1 changed files with 27 additions and 4 deletions
				
			
		
							
								
								
									
										31
									
								
								src/App.tsx
									
										
									
									
									
								
							
							
						
						
									
										31
									
								
								src/App.tsx
									
										
									
									
									
								
							|  | @ -7,7 +7,7 @@ import Modal from 'react-modal' | |||
| 
 | ||||
| function App() { | ||||
|   const API_MOVIE_KEY = 'd92949d8' | ||||
|   const [movies, setMovies] = useState([]) | ||||
|   const [movies, setMovies] = useState<movieObject[]>([]) | ||||
|   const [loading, setLoading] = useState(true) | ||||
|   const [currentPage, setCurrentPage] = useState(1) | ||||
|   const [totalPages, setTotalPages] = useState(0) | ||||
|  | @ -16,6 +16,7 @@ function App() { | |||
|   const [movieType, setMovieType] = useState('') | ||||
|   const [movieYear, setMovieYear] = useState('') | ||||
|   const [movieTitle, setMovieTitle] = useState('') | ||||
|   const [sortAscending, setSortAscending] = useState(true) | ||||
| 
 | ||||
|   console.log('App mounted') | ||||
| 
 | ||||
|  | @ -61,6 +62,28 @@ function App() { | |||
|       .catch((error) => console.log(error)) | ||||
|   } | ||||
| 
 | ||||
|   const sortHandler = (sortType: string) => { | ||||
|     let sortedMovies: movieObject[] = [] | ||||
| 
 | ||||
|     if (sortType === 'title') { | ||||
|       sortedMovies = [...movies].sort((m1, m2) => | ||||
|         sortAscending | ||||
|           ? m1.Title.localeCompare(m2.Title) | ||||
|           : m2.Title.localeCompare(m1.Title) | ||||
|       ) | ||||
|     } | ||||
|     if (sortType === 'year') { | ||||
|       sortedMovies = [...movies].sort((m1, m2) => | ||||
|         sortAscending | ||||
|           ? m1.Year.localeCompare(m2.Year) | ||||
|           : m2.Year.localeCompare(m1.Year) | ||||
|       ) | ||||
|     } | ||||
| 
 | ||||
|     setSortAscending(!sortAscending) | ||||
|     setMovies(sortedMovies) | ||||
|   } | ||||
| 
 | ||||
|   return ( | ||||
|     <> | ||||
|       <q.div className="flex flex-col justify-center items-center mx-auto w-2/4"> | ||||
|  | @ -117,12 +140,12 @@ function App() { | |||
|                 <q.thead> | ||||
|                   <q.tr> | ||||
|                     <q.th>Poster</q.th> | ||||
|                     <q.th>Title</q.th> | ||||
|                     <q.th>Year</q.th> | ||||
|                     <q.th onClick={() => sortHandler('title')}>Title</q.th> | ||||
|                     <q.th onClick={() => sortHandler('year')}>Year</q.th> | ||||
|                   </q.tr> | ||||
|                 </q.thead> | ||||
|                 <q.tbody> | ||||
|                   {movies.map((movie: any) => ( | ||||
|                   {movies.map((movie: movieObject) => ( | ||||
|                     <MovieTableRow | ||||
|                       movie={movie} | ||||
|                       key={movie.imdbID} | ||||
|  |  | |||
		Reference in a new issue
	
	 Sindre Kjelsrud
						Sindre Kjelsrud