diff options
Diffstat (limited to 'frontend/site/projects/museum/views/nav.overlay.js')
| -rw-r--r-- | frontend/site/projects/museum/views/nav.overlay.js | 74 |
1 files changed, 58 insertions, 16 deletions
diff --git a/frontend/site/projects/museum/views/nav.overlay.js b/frontend/site/projects/museum/views/nav.overlay.js index 36af7db..ed6a0f5 100644 --- a/frontend/site/projects/museum/views/nav.overlay.js +++ b/frontend/site/projects/museum/views/nav.overlay.js @@ -4,7 +4,9 @@ import actions from 'site/actions' import "./nav.css" -import { ARTISTS } from "site/projects/museum/constants" +import { ARTISTS, ARTIST_ORDER } from "site/projects/museum/constants" +import { ArrowLeft, ArrowRight } from "site/projects/museum/icons" +import { history } from "site/store" export default class NavOverlay extends Component { state = { @@ -16,58 +18,98 @@ export default class NavOverlay extends Component { constructor(props) { super(props) + this.previousArtist = this.previousArtist.bind(this) + this.nextArtist = this.nextArtist.bind(this) + this.goHome = this.goHome.bind(this) } componentDidMount() { this.load() } - componentDidUpdate() { + + componentDidUpdate(prevProps) { + // console.log(this.props.location.pathname, prevProps.location.pathname) if (this.props.location.pathname !== prevProps.location.pathname) { this.load() } } load() { - const { pathname } = this.props.location - const pathPartz = pathname.split("-") + const { page_name } = this.props.match.params + const pathPartz = page_name.split("-") const pathkey = pathPartz[0] + // console.log(pathkey) if (pathkey === 'start') { this.setState({ showFooter: true, showArtist: false, - artist: {} + currentArtist: null, + artist: {}, }) } else if (pathkey in ARTISTS) { this.setState({ + showHome: true, showFooter: true, showArtist: true, - artist: ARTISTS[pathkey] + currentArtist: pathkey, + artist: ARTISTS[pathkey], }) } else { this.setState({ showFooter: false, showArtist: false, - artist: {} + currentArtist: null, + artist: {}, }) } } + previousArtist() { + this.go(-1) + } + + nextArtist() { + this.go(1) + } + + go(step) { + if (!this.state.currentArtist) return + const index = ARTIST_ORDER.indexOf(this.state.currentArtist) + const nextIndex = (index + step + ARTIST_ORDER.length) % ARTIST_ORDER.length + const currentArtist = ARTIST_ORDER[nextIndex] + const artist = ARTISTS[currentArtist] + this.setState({ currentArtist, artist }) + history.push(`/last-museum/${artist.start}`) + } + + goHome() { + history.push(`/last-museum/`) + } + render() { - const { showArtist, showHome, artist } = this.state + const { showArtist, showHome, showFooter, artist } = this.state return ( <div className="museum-nav"> + {showHome && ( + <div className="home-link" onClick={this.goHome}> + Home + </div> + )} {showFooter && ( showArtist ? ( - <div className="footer"> - <span className="arrow-left">{ArrowLeft}</span> - <span className="artist-name">{artist.name}</span> - <span className="artist-location">{artist.location}</span> - <span className="arrow-right">{ArrowRight}</span> + <div className="footer with-artist"> + <div className="footer-gradient" /> + <div className="artist-desc"> + <span className="artist-name">{artist.name}</span> + <span className="artist-location">{artist.location}</span> + </div> + <div className="arrow arrow-left" onClick={this.previousArtist}>{ArrowLeft}</div> + <div className="arrow arrow-right" onClick={this.nextArtist}>{ArrowRight}</div> </div> - } : ( - <div className="footer" /> + ) : ( + <div className="footer no-artist" /> ) - ))} + )} </div> ) } |
