From 3a4c6fa22103e94c7b695d7c160711042f335e32 Mon Sep 17 00:00:00 2001 From: andres alcocer Date: Fri, 16 Nov 2018 22:07:43 -0500 Subject: [PATCH] netflix originals movieshowcase --- .../MovieOriginalsRows/MovieOriginalsRows.js | 14 ++++ src/containers/MovieShowcase/MovieShowcase.js | 79 +++++++++++++------ .../MovieShowcaseRow/MovieShowcaseRow.js | 29 +++++-- .../sass/components/_movieShowcase.scss | 11 ++- 4 files changed, 99 insertions(+), 34 deletions(-) create mode 100644 src/containers/MovieOriginals/MovieOriginalsRows/MovieOriginalsRows.js diff --git a/src/containers/MovieOriginals/MovieOriginalsRows/MovieOriginalsRows.js b/src/containers/MovieOriginals/MovieOriginalsRows/MovieOriginalsRows.js new file mode 100644 index 0000000..178c54e --- /dev/null +++ b/src/containers/MovieOriginals/MovieOriginalsRows/MovieOriginalsRows.js @@ -0,0 +1,14 @@ +import React, { Component } from 'react'; + +// `url(https://image.tmdb.org/t/p/original/${this.props.movie.backdrop_path})`; + +const movieOriginalsRows = (props) => ( + + +
+ +
+ +); + +export default movieOriginalsRows; \ No newline at end of file diff --git a/src/containers/MovieShowcase/MovieShowcase.js b/src/containers/MovieShowcase/MovieShowcase.js index 342597d..ad7f36b 100644 --- a/src/containers/MovieShowcase/MovieShowcase.js +++ b/src/containers/MovieShowcase/MovieShowcase.js @@ -8,12 +8,14 @@ class MovieShowcase extends Component { state = { trendingMovieRows: [], + netflixOriginalsRows: [], toggle: false, - movieDetails: {} + movieDetails: {}, } componentWillMount() { this.getTrending(); + this.getNetflixMovies(); } /** @@ -21,7 +23,7 @@ class MovieShowcase extends Component { @param {object} movieObject - A single movie object */ getMovieDetails = (movieObject) => { - this.setState({ toggle: true }); + this.setState({toggle: true}) this.setState({ movieDetails: movieObject }); } @@ -29,46 +31,77 @@ class MovieShowcase extends Component { this.setState({toggle: false}) } + + /** Extract our movie data */ + getMovieRows = (res, url) => { + const results = res.data.results; + let movieRows = []; + + results.forEach((movie) => { + let movieImageUrl = "https://image.tmdb.org/t/p/original/" + movie.backdrop_path; + if (url === "https://api.themoviedb.org/3/discover/tv?api_key=224ce27b38a3805ecf6f6c36eb3ba9d0&with_networks=213") { + movieImageUrl = "https://image.tmdb.org/t/p/original/" + movie.poster_path; + } + + console.log(movieImageUrl); + const movieComponent = this.getMovieDetails(movie)} + key={movie.id} + url={url} + posterUrl={movieImageUrl} + movie={movie} /> + movieRows.push(movieComponent); + }) + // update state + return movieRows; + + } + + /** + * Send request for movies that are popular + */ getTrending = () => { const url = 'https://api.themoviedb.org/3/movie/popular?api_key=224ce27b38a3805ecf6f6c36eb3ba9d0&language=en-US&page=1'; axios.get(url) .then(res => { - console.log(res.data.results); - const results = res.data.results; - let movieRows = []; - - results.forEach((movie) => { - const movieImageUrl = "https://image.tmdb.org/t/p/original/" + movie.backdrop_path; - console.log(movieImageUrl); - const movieComponent = this.getMovieDetails(movie)} - key={movie.id} - posterUrl={movieImageUrl} - movie={movie}/> - movieRows.push(movieComponent); - }) - // update state - this.setState({trendingMovieRows: movieRows}) - + const movieRows = this.getMovieRows(res, url); + this.setState({ trendingMovieRows: movieRows }); }).catch(error => { console.log(error); }) } + /** + * Get Netflix originals + */ + getNetflixMovies = () => { + + const url = "https://api.themoviedb.org/3/discover/tv?api_key=224ce27b38a3805ecf6f6c36eb3ba9d0&with_networks=213"; - + axios.get(url) + .then(res => { + console.log(res); + const movieRows = this.getMovieRows(res, url); + this.setState({ netflixOriginalsRows: movieRows }); + }) + .catch(error => { + console.log(error); + }) + } render() { return (
-

Trending Now

+ +

Netflix Originals

- {this.state.trendingMovieRows} + {this.state.netflixOriginalsRows}
-

Popular on Netflix

+ +

Trending Now

{this.state.trendingMovieRows}
diff --git a/src/containers/MovieShowcase/MovieShowcaseRow/MovieShowcaseRow.js b/src/containers/MovieShowcase/MovieShowcaseRow/MovieShowcaseRow.js index be090ef..6632567 100644 --- a/src/containers/MovieShowcase/MovieShowcaseRow/MovieShowcaseRow.js +++ b/src/containers/MovieShowcase/MovieShowcaseRow/MovieShowcaseRow.js @@ -1,14 +1,29 @@ import React, { Component } from 'react'; + -// `url(https://image.tmdb.org/t/p/original/${this.props.movie.backdrop_path})`; +class movieShowcaseRow extends Component { -const movieShowcaseRow = (props) => ( - -
- -
+ render() { + let netflixUrl = false; + const netflixStyle = { + height: "52rem", + width: "50%" + } -); + if (this.props.url === "https://api.themoviedb.org/3/discover/tv?api_key=224ce27b38a3805ecf6f6c36eb3ba9d0&with_networks=213") { + netflixUrl = true; + } + + return ( + +
+ +
+ + + ); + } +} export default movieShowcaseRow; \ No newline at end of file diff --git a/src/static/sass/components/_movieShowcase.scss b/src/static/sass/components/_movieShowcase.scss index c6d0df5..f4f38dd 100644 --- a/src/static/sass/components/_movieShowcase.scss +++ b/src/static/sass/components/_movieShowcase.scss @@ -8,9 +8,9 @@ } &__container { - + overflow-y:hidden; transition: transform 450ms; - overflow: scroll; + overflow-x: scroll; flex: 1 1 auto; display: grid; grid-template-columns: repeat(20, 1fr); @@ -32,13 +32,15 @@ transform: translate3d(5rem, 0, 0); } + &--movie { + cursor: pointer; transition: all 450ms; transform: center left; - padding-top: 4rem; + padding-top: 3.5rem; padding-bottom: 4rem; - height: 20rem; + height: 18rem; &:not(:last-child) { padding-right: .5rem; @@ -47,6 +49,7 @@ &-image { height: 100%; } + } } }