Compare commits
	
		
			5 Commits
		
	
	
		
			f507824005
			...
			a70ddebc8a
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						a70ddebc8a | |
| 
							
							
								
								 | 
						562f91f61c | |
| 
							
							
								
								 | 
						d523372464 | |
| 
							
							
								
								 | 
						b9f2833283 | |
| 
							
							
								
								 | 
						d0bc6faec0 | 
							
								
								
									
										58
									
								
								src/App.css
								
								
								
								
							
							
						
						
									
										58
									
								
								src/App.css
								
								
								
								
							| 
						 | 
					@ -10,6 +10,31 @@
 | 
				
			||||||
  width: 100%;
 | 
					  width: 100%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: "Jura";
 | 
				
			||||||
 | 
					  src: url("fonts/Jura-VariableFont_wght.ttf");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: "RobotoBold";
 | 
				
			||||||
 | 
					  src: url("fonts/Roboto-Bold.ttf")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  font-family: Jura;
 | 
				
			||||||
 | 
					  color: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.main-container {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  background-size: cover;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main {
 | 
					main {
 | 
				
			||||||
  display: flex;
 | 
					  display: flex;
 | 
				
			||||||
  background-size: cover;
 | 
					  background-size: cover;
 | 
				
			||||||
| 
						 | 
					@ -17,26 +42,51 @@ main {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#movie-wall-container {
 | 
					#movie-wall-container {
 | 
				
			||||||
  display: inline-flex;
 | 
					  display: inline-flex;
 | 
				
			||||||
  flex-wrap: wrap;
 | 
					  flex-wrap: wrap;
 | 
				
			||||||
  flex-basis: 60%;
 | 
					  flex-basis: 60%;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
  gap: 1em;
 | 
					  gap: 1em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					img {
 | 
				
			||||||
 | 
					  aspect-ratio: 2/3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#sidebar {
 | 
					#sidebar {
 | 
				
			||||||
  flex-basis: calc(var(--poster-width)*2)
 | 
					  flex-basis: calc(var(--poster-width)*2);
 | 
				
			||||||
 | 
					  font-size: 1.6rem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  h1 {
 | 
				
			||||||
 | 
					    font-size: 2em;
 | 
				
			||||||
 | 
					    margin-bottom: 0.2em;
 | 
				
			||||||
 | 
					    /* line-height: 0.8em; */
 | 
				
			||||||
 | 
					    font-family: RobotoBold;
 | 
				
			||||||
 | 
					    padding: 0.1em 0.2em 0 0.2em;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  p {
 | 
				
			||||||
 | 
					    font-family: Jura;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  img {
 | 
				
			||||||
 | 
					    width: 90%;
 | 
				
			||||||
 | 
					    aspect-ratio: 2/3;
 | 
				
			||||||
 | 
					    box-shadow: 1em 1em 1em rgba(0, 0, 0, 0.5);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.poster {
 | 
					.poster {
 | 
				
			||||||
  width: var(--poster-width);
 | 
					  width: var(--poster-width);
 | 
				
			||||||
  aspect-ratio: 2/3;
 | 
					 | 
				
			||||||
  background-size: cover;
 | 
					 | 
				
			||||||
  display: grid;
 | 
					  display: grid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  img {
 | 
					  img {
 | 
				
			||||||
    height: 100%;
 | 
					    height: 100%;
 | 
				
			||||||
    aspect-ratio: 2/3;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										13
									
								
								src/App.tsx
								
								
								
								
							
							
						
						
									
										13
									
								
								src/App.tsx
								
								
								
								
							| 
						 | 
					@ -34,15 +34,15 @@ function App() {
 | 
				
			||||||
  useEffect(() => {
 | 
					  useEffect(() => {
 | 
				
			||||||
    setLoadedMovies(movies.length)
 | 
					    setLoadedMovies(movies.length)
 | 
				
			||||||
    if (movies[0].backdrop_path) {
 | 
					    if (movies[0].backdrop_path) {
 | 
				
			||||||
      setBackdrop(tmdb.makeBgImgUrl(movies[0].backdrop_path))
 | 
					      const bgString = "linear-gradient(rgba(0, 0, 0, 0.5),rgba(0, 0, 0, 0.5)), " + tmdb.makeBgImgUrl(movies[0].backdrop_path)
 | 
				
			||||||
 | 
					      setBackdrop(bgString)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }, [movies])
 | 
					  }, [movies])
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <>
 | 
					    <>
 | 
				
			||||||
      <header>
 | 
					      <div className='main-container' style={{ backgroundImage: backdrop }}>
 | 
				
			||||||
        <h1>Movie Explorer</h1>
 | 
					        <main >
 | 
				
			||||||
      </header>
 | 
					          <Sidebar movie={chosenMovie} />
 | 
				
			||||||
      <main style={{ backgroundImage: backdrop }}>
 | 
					 | 
				
			||||||
          <div id="movie-wall-container">
 | 
					          <div id="movie-wall-container">
 | 
				
			||||||
            {loadedMovies === movies.length ?
 | 
					            {loadedMovies === movies.length ?
 | 
				
			||||||
              <MovieWall movies={movies}
 | 
					              <MovieWall movies={movies}
 | 
				
			||||||
| 
						 | 
					@ -52,9 +52,8 @@ function App() {
 | 
				
			||||||
                setLoadedMovies={setLoadedMovies}
 | 
					                setLoadedMovies={setLoadedMovies}
 | 
				
			||||||
              />
 | 
					              />
 | 
				
			||||||
              : "LOADING  " + loadedMovies} </div>
 | 
					              : "LOADING  " + loadedMovies} </div>
 | 
				
			||||||
        <Sidebar movie={chosenMovie} />
 | 
					 | 
				
			||||||
        </main>
 | 
					        </main>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
    </>
 | 
					    </>
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -1,22 +0,0 @@
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
   * Move array item from provided index to specified index
 | 
					 | 
				
			||||||
   * @remarks 'to' index refers to position in original array, i.e. if to > from, to = to -1
 | 
					 | 
				
			||||||
   * @param array 
 | 
					 | 
				
			||||||
   * @param from - the index of the item we want moved
 | 
					 | 
				
			||||||
   * @param to - the index we want the item moved to
 | 
					 | 
				
			||||||
   * @returns The modified array
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @beta
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
export function relocateArrayItem(array: Array<any>, from: number, to: number) {
 | 
					 | 
				
			||||||
  const newArray = structuredClone(array)
 | 
					 | 
				
			||||||
  const element = newArray.splice(from, 1)[0]
 | 
					 | 
				
			||||||
  newArray.splice(to < from ? to : to - 1, 0, element)
 | 
					 | 
				
			||||||
  console.log("reordered array: ")
 | 
					 | 
				
			||||||
  console.log(newArray)
 | 
					 | 
				
			||||||
  return newArray
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Returns a complete tmdb image url
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -5,11 +5,9 @@ export interface SidebarProps extends React.ComponentPropsWithRef<"div"> {
 | 
				
			||||||
  movie: Movie;
 | 
					  movie: Movie;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
export function Sidebar({ movie }: SidebarProps) {
 | 
					export function Sidebar({ movie }: SidebarProps) {
 | 
				
			||||||
  const style = {
 | 
					  return <div id="sidebar">
 | 
				
			||||||
    backgroundImage: tmdb.makeBgImgUrl(movie.backdrop_path ?? "")
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return <div id="sidebar" style={style}>
 | 
					 | 
				
			||||||
    <h1>{movie?.title ?? "loading"}</h1>
 | 
					    <h1>{movie?.title ?? "loading"}</h1>
 | 
				
			||||||
 | 
					    <img src={tmdb.makeImgUrl(movie.poster_path ?? "")} />
 | 
				
			||||||
    <p>{movie?.overview ?? "loading"}</p>
 | 
					    <p>{movie?.overview ?? "loading"}</p>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,7 +51,7 @@ export default {
 | 
				
			||||||
          return e.poster_path
 | 
					          return e.poster_path
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
      array.splice(19)
 | 
					      array.splice(19)
 | 
				
			||||||
      array.unshift(movie)
 | 
					      // array.unshift(movie)
 | 
				
			||||||
      callback(array)
 | 
					      callback(array)
 | 
				
			||||||
      return true
 | 
					      return true
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue