Our request page is redesigned with a new header and search bar. It also has a better way of redrawing when the page size is changed to a mobile device. This is not very reactonic, but this file contains the intire search and request logic of the page, but this means we still have things todo :)

This commit is contained in:
2018-01-09 16:53:41 +01:00
parent 65bce27a2b
commit e0da166406
2 changed files with 93 additions and 37 deletions

View File

@@ -47,7 +47,7 @@ class SearchRequest extends React.Component {
// this.setState({responseMovieList: null}) // this.setState({responseMovieList: null})
this.resetPageNumber(); this.resetPageNumber();
this.state.loadResults = true; this.state.loadResults = true;
this.fetchTmdbList('upcoming'); this.fetchTmdbList('discover');
} }
// Handles all errors of the response of a fetch call // Handles all errors of the response of a fetch call
@@ -384,25 +384,28 @@ class SearchRequest extends React.Component {
<div style={searchRequestCSS.body}> <div style={searchRequestCSS.body}>
<div className='backgroundHeader' style={searchRequestCSS.backgroundLargeHeader}> <div className='backgroundHeader' style={searchRequestCSS.backgroundLargeHeader}>
<div className='pageTitle' style={searchRequestCSS.pageTitle}> <div className='pageTitle' style={searchRequestCSS.pageTitle}>
<span style={searchRequestCSS.pageTitleLargeSpan}>Request new content</span> <span style={searchRequestCSS.pageTitleLargeSpan}>Request new content for plex</span>
</div> </div>
<div className='box' style={searchRequestCSS.box}> <div style={searchRequestCSS.searchLargeContainer}>
<div style={searchRequestCSS.searchLargeContainer}> <span style={searchRequestCSS.searchIcon}><i className="fa fa-search"></i></span>
<span style={searchRequestCSS.searchIcon}><i className="fa fa-search"></i></span>
<input style={searchRequestCSS.searchLargeBar} type="text" id="search" placeholder="Search for new content..." <input style={searchRequestCSS.searchLargeBar} type="text" id="search" placeholder="Search for new content..."
onKeyPress={(event) => this._handleQueryKeyPress(event)} onKeyPress={(event) => this._handleQueryKeyPress(event)}
onChange={event => this.updateQueryState(event)} onChange={event => this.updateQueryState(event)}
value={this.state.searchQuery}/> value={this.state.searchQuery}/>
</div>
</div> </div>
</div> </div>
<div id='requestMovieList' ref='requestMovieList' style={searchRequestCSS.requestWrapper}> <div id='requestMovieList' ref='requestMovieList' style={searchRequestCSS.requestWrapper}>
<span style={searchRequestCSS.resultLargeHeader}>{this.state.resultHeader}</span> <div style={{marginLeft: '30px'}}>
<br></br><br></br> <div style={searchRequestCSS.resultLargeHeader}>{this.state.resultHeader}</div>
<span style={{content: '', display: 'block', width: '2em', borderTop: '2px solid #000,'}}></span>
</div>
<br></br>
{this.state.responseMovieList} {this.state.responseMovieList}
</div> </div>
@@ -441,7 +444,21 @@ class SearchRequest extends React.Component {
) )
} }
// <form style={searchRequestCSS.controls}>
// <label style={searchRequestCSS.withData}>
// <div style={searchRequestCSS.sortOptions}>Discover</div>
// </label>
// </form>
// <form style={searchRequestCSS.controls}>
// <label style={searchRequestCSS.withData}>
// <select style={searchRequestCSS.sortOptions}>
// <option value="discover">All</option>
// <option value="nowplaying">Movies</option>
// <option value="nowplaying">TV Shows</option>
// </select>
// </label>
// </form>
} }
export default SearchRequest; export default SearchRequest;

View File

@@ -10,19 +10,19 @@ export default {
backgroundLargeHeader: { backgroundLargeHeader: {
width: '100%', width: '100%',
minHeight: '400px', minHeight: '180px',
backgroundColor: 'rgb(1, 28, 35)', backgroundColor: 'rgb(1, 28, 35)',
// backgroundImage: 'radial-gradient(circle, #004c67 0, #005771 120%)', // backgroundImage: 'radial-gradient(circle, #004c67 0, #005771 120%)',
zIndex: 1, zIndex: 1,
marginBottom: '-100px' marginBottom: '80px'
}, },
backgroundSmallHeader: { backgroundSmallHeader: {
width: '100%', width: '100%',
minHeight: '300px', minHeight: '120px',
backgroundColor: '#011c23', backgroundColor: '#011c23',
zIndex: 1, zIndex: 1,
marginBottom: '-100px' marginBottom: '40px'
}, },
requestWrapper: { requestWrapper: {
@@ -44,7 +44,7 @@ export default {
pageTitleLargeSpan: { pageTitleLargeSpan: {
color: 'white', color: 'white',
fontSize: '4em', fontSize: '3em',
marginTop: '4vh', marginTop: '4vh',
marginBottom: '6vh' marginBottom: '6vh'
}, },
@@ -54,39 +54,35 @@ export default {
fontSize: '2em', fontSize: '2em',
marginTop: '3vh', marginTop: '3vh',
marginBottom: '3vh' marginBottom: '3vh'
},
box: {
height: '50px',
}, },
searchLargeContainer: { searchLargeContainer: {
margin: '0 25%', height: '52px',
width: '77%',
paddingLeft: '23%',
backgroundColor: 'white',
}, },
searchSmallContainer: { searchSmallContainer: {
margin: '0 10%',
}, },
searchIcon: { searchIcon: {
position: 'absolute', position: 'absolute',
fontSize: '1.2em', fontSize: '1.6em',
marginTop: '12px', marginTop: '7px',
marginLeft: '-13px', color: '#4f5b66',
color: '#4f5b66' display: 'block',
}, },
searchLargeBar: { searchLargeBar: {
width: '100%', width: '50%',
height: '50px', height: '50px',
background: '#ffffff', background: '#ffffff',
border: 'none', border: 'none',
fontSize: '10pt', fontSize: '12pt',
float: 'left', float: 'left',
color: '#63717f', color: '#63717f',
paddingLeft: '45px', paddingLeft: '40px',
marginLeft: '-25px',
borderRadius: '5px',
}, },
searchSmallBar: { searchSmallBar: {
@@ -94,14 +90,58 @@ export default {
height: '50px', height: '50px',
background: '#ffffff', background: '#ffffff',
border: 'none', border: 'none',
fontSize: '13pt', fontSize: '11pt',
float: 'left', float: 'left',
color: '#63717f', color: '#63717f',
paddingLeft: '45px', paddingLeft: '65px',
marginLeft: '-25px', marginLeft: '-25px',
borderRadius: '5px', borderRadius: '5px',
}, },
// Dropdown for selecting tmdb lists
controls: {
textAlign: 'left',
paddingTop: '8px',
width: '33.3333%',
marginLeft: '0',
marginRight: '0',
},
withData: {
boxSizing: 'border-box',
marginBottom: '0',
display: 'block',
padding: '0',
verticalAlign: 'baseline',
font: 'inherit',
textAlign: 'left',
boxSizing: 'border-box',
},
sortOptions: {
border: '1px solid #000',
maxWidth: '100%',
overflow: 'hidden',
lineHeight: 'normal',
textAlign: 'left',
padding: '4px 12px',
paddingRight: '2rem',
backgroundImage: 'url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+CiAgPHRpdGxlPmFycm93LWRvd24tbWljcm88L3RpdGxlPgogIDxwb2x5bGluZSBwb2ludHM9IjE0IDQuNjcgOSAxMy4zMyA0IDQuNjciIHN0eWxlPSJmaWxsOiBub25lO3N0cm9rZTogIzAwMDtzdHJva2UtbWl0ZXJsaW1pdDogMTA7c3Ryb2tlLXdpZHRoOiAycHgiLz4KPC9zdmc+Cg==")',
backgroundSize: '18px 18px',
backgroundPosition: 'right 8px center',
backgroundRepeat: 'no-repeat',
width: 'auto',
display: 'inline-block',
outline: 'none',
boxSizing: 'border-box',
fontSize: '15px',
WebkitAppearance: 'none',
MozAppearance: 'none',
appearance: 'none',
},
searchFilterActive: { searchFilterActive: {
color: '#00d17c', color: '#00d17c',
fontSize: '1em', fontSize: '1em',
@@ -116,7 +156,6 @@ export default {
cursor: 'pointer' cursor: 'pointer'
}, },
filter: { filter: {
color: 'white', color: 'white',
paddingLeft: '40px', paddingLeft: '40px',
@@ -124,9 +163,9 @@ export default {
}, },
resultLargeHeader: { resultLargeHeader: {
paddingLeft: '30px',
color: 'black', color: 'black',
fontSize: '1.6em', fontSize: '1.6em',
width: '20%',
}, },
resultSmallHeader: { resultSmallHeader: {