Updated code

This commit is contained in:
2023-10-08 20:40:14 +07:00
parent 756103b07e
commit 166fe024ed
+51 -46
View File
@@ -51,20 +51,35 @@ const average = (arr) =>
arr.reduce((acc, cur, i, arr) => acc + cur / arr.length, 0); arr.reduce((acc, cur, i, arr) => acc + cur / arr.length, 0);
export default function App() { export default function App() {
const [movies, setMovies] = useState(tempMovieData);
const [watched, setWatched] = useState(tempWatchedData);
return ( return (
<> <>
<NavBar /> <NavBar>
<Main /> <Search />
<NumResults movies={movies} />
</NavBar>
<Main>
<Box>
<MovieList movies={movies} />
</Box>
<Box>
<WatchedSummary watched={watched} />
<WatchMovieList watched={watched} />
</Box>
</Main>
</> </>
); );
} }
function NavBar() { function NavBar({ children }) {
return ( return (
<nav className="nav-bar"> <nav className="nav-bar">
<Logo /> <Logo />
<Search /> {children}
<NumResults />
</nav> </nav>
); );
} }
@@ -91,42 +106,54 @@ function Search() {
); );
} }
function NumResults() { function NumResults({ movies }) {
return ( return (
<p className="num-results"> <p className="num-results">
Found <strong>X</strong> results Found <strong>{movies.length}</strong> results
</p> </p>
); );
} }
function Main() { function Main({ children }) {
return ( return <main className="main">{children}</main>;
<main className="main">
<ListBox />
<WatchedBox />
</main>
);
} }
function ListBox() { function Box({ children }) {
const [isOpen1, setIsOpen1] = useState(true); const [isOpen, setIsOpen] = useState(true);
return ( return (
<div className="box"> <div className="box">
<button <button className="btn-toggle" onClick={() => setIsOpen((open) => !open)}>
className="btn-toggle" {isOpen ? "" : "+"}
onClick={() => setIsOpen1((open) => !open)}
>
{isOpen1 ? "" : "+"}
</button> </button>
{isOpen1 && <MovieList />} {isOpen && children}
</div> </div>
); );
} }
function MovieList() { // function WatchedBox() {
const [movies, setMovies] = useState(tempMovieData); // const [watched, setWatched] = useState(tempWatchedData);
// const [isOpen2, setIsOpen2] = useState(true);
// return (
// <div className="box">
// <button
// className="btn-toggle"
// onClick={() => setIsOpen2((open) => !open)}
// >
// {isOpen2 ? "" : "+"}
// </button>
// {isOpen2 && (
// <>
// <WatchedSummary watched={watched} />
// <WatchMovieList watched={watched} />
// </>
// )}
// </div>
// );
// }
function MovieList({ movies }) {
return ( return (
<ul className="list"> <ul className="list">
{movies?.map((movie) => ( {movies?.map((movie) => (
@@ -151,28 +178,6 @@ function Movie({ movie }) {
); );
} }
function WatchedBox() {
const [watched, setWatched] = useState(tempWatchedData);
const [isOpen2, setIsOpen2] = useState(true);
return (
<div className="box">
<button
className="btn-toggle"
onClick={() => setIsOpen2((open) => !open)}
>
{isOpen2 ? "" : "+"}
</button>
{isOpen2 && (
<>
<WatchedSummary watched={watched} />
<WatchMovieList watched={watched} />
</>
)}
</div>
);
}
function WatchedSummary({ watched }) { function WatchedSummary({ watched }) {
const avgImdbRating = average(watched.map((movie) => movie.imdbRating)); const avgImdbRating = average(watched.map((movie) => movie.imdbRating));
const avgUserRating = average(watched.map((movie) => movie.userRating)); const avgUserRating = average(watched.map((movie) => movie.userRating));