mirror of
https://github.com/ascribe/onion.git
synced 2024-06-30 13:41:57 +02:00
piece navigation prev next WIP
This commit is contained in:
parent
c25de71b4b
commit
97c298e304
|
@ -17,7 +17,7 @@ let DetailProperty = React.createClass({
|
||||||
|
|
||||||
getDefaultProps() {
|
getDefaultProps() {
|
||||||
return {
|
return {
|
||||||
separator: ':',
|
separator: '',
|
||||||
labelClassName: 'col-xs-3 col-sm-3 col-md-2 col-lg-2 col-xs-height col-bottom ascribe-detail-property-label',
|
labelClassName: 'col-xs-3 col-sm-3 col-md-2 col-lg-2 col-xs-height col-bottom ascribe-detail-property-label',
|
||||||
valueClassName: 'col-xs-9 col-sm-9 col-md-10 col-lg-10 col-xs-height col-bottom ascribe-detail-property-value'
|
valueClassName: 'col-xs-9 col-sm-9 col-md-10 col-lg-10 col-xs-height col-bottom ascribe-detail-property-value'
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import Router from 'react-router';
|
||||||
|
|
||||||
import StarRating from 'react-star-rating';
|
import StarRating from 'react-star-rating';
|
||||||
|
|
||||||
|
@ -32,17 +33,23 @@ import DetailProperty from '../../../../ascribe_detail/detail_property';
|
||||||
import ApiUrls from '../../../../../constants/api_urls';
|
import ApiUrls from '../../../../../constants/api_urls';
|
||||||
import { mergeOptions } from '../../../../../utils/general_utils';
|
import { mergeOptions } from '../../../../../utils/general_utils';
|
||||||
import { getLangText } from '../../../../../utils/lang_utils';
|
import { getLangText } from '../../../../../utils/lang_utils';
|
||||||
|
|
||||||
|
let Link = Router.Link;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the component that implements resource/data specific functionality
|
* This is the component that implements resource/data specific functionality
|
||||||
*/
|
*/
|
||||||
let PieceContainer = React.createClass({
|
let PieceContainer = React.createClass({
|
||||||
getInitialState() {
|
getInitialState() {
|
||||||
return PieceStore.getState();
|
return mergeOptions(
|
||||||
|
PieceStore.getState(),
|
||||||
|
UserStore.getState()
|
||||||
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
PieceStore.listen(this.onChange);
|
PieceStore.listen(this.onChange);
|
||||||
PieceActions.fetchOne(this.props.params.pieceId);
|
UserStore.listen(this.onChange);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
|
@ -52,6 +59,16 @@ let PieceContainer = React.createClass({
|
||||||
// the piece detail a second time
|
// the piece detail a second time
|
||||||
PieceActions.updatePiece({});
|
PieceActions.updatePiece({});
|
||||||
PieceStore.unlisten(this.onChange);
|
PieceStore.unlisten(this.onChange);
|
||||||
|
UserStore.unlisten(this.onChange);
|
||||||
|
},
|
||||||
|
|
||||||
|
componentDidUpdate() {
|
||||||
|
console.log('call me ')
|
||||||
|
PieceActions.fetchOne(this.props.params.pieceId);
|
||||||
|
},
|
||||||
|
|
||||||
|
shouldComponentUpdate(nextProps, nextState) {
|
||||||
|
return this.props.params.pieceId !== nextProps.params.pieceId
|
||||||
},
|
},
|
||||||
|
|
||||||
onChange(state) {
|
onChange(state) {
|
||||||
|
@ -63,6 +80,7 @@ let PieceContainer = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
console.log(this.props)
|
||||||
if('title' in this.state.piece) {
|
if('title' in this.state.piece) {
|
||||||
return (
|
return (
|
||||||
<Piece
|
<Piece
|
||||||
|
@ -70,7 +88,9 @@ let PieceContainer = React.createClass({
|
||||||
loadPiece={this.loadPiece}
|
loadPiece={this.loadPiece}
|
||||||
header={
|
header={
|
||||||
<div className="ascribe-detail-header">
|
<div className="ascribe-detail-header">
|
||||||
<NavigationHeader/>
|
<NavigationHeader
|
||||||
|
piece={this.state.piece}
|
||||||
|
currentUser={this.state.currentUser}/>
|
||||||
<h1 className="ascribe-detail-title">{this.state.piece.title}</h1>
|
<h1 className="ascribe-detail-title">{this.state.piece.title}</h1>
|
||||||
<hr/>
|
<hr/>
|
||||||
<DetailProperty label="BY" value={this.state.piece.artist_name} />
|
<DetailProperty label="BY" value={this.state.piece.artist_name} />
|
||||||
|
@ -79,7 +99,9 @@ let PieceContainer = React.createClass({
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
subheader={
|
subheader={
|
||||||
<PrizePieceRatings piece={this.state.piece}/>
|
<PrizePieceRatings
|
||||||
|
piece={this.state.piece}
|
||||||
|
currentUser={this.state.currentUser}/>
|
||||||
}>
|
}>
|
||||||
<PrizePieceDetails piece={this.state.piece}/>
|
<PrizePieceDetails piece={this.state.piece}/>
|
||||||
</Piece>
|
</Piece>
|
||||||
|
@ -96,13 +118,26 @@ let PieceContainer = React.createClass({
|
||||||
|
|
||||||
let NavigationHeader = React.createClass({
|
let NavigationHeader = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
piece: React.PropTypes.object
|
piece: React.PropTypes.object,
|
||||||
|
currentUser: React.PropTypes.object
|
||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div style={{marginBottom: '1em'}}>
|
||||||
navigation
|
<div className="row no-margin">
|
||||||
|
<Link to='piece' params={{pieceId: this.props.piece.navigation.prev_index}}>
|
||||||
|
<span className="glyphicon glyphicon-chevron-left pull-left" aria-hidden="true">
|
||||||
|
Previous
|
||||||
|
</span>
|
||||||
|
</Link>
|
||||||
|
<Link to='piece' params={{pieceId: this.props.piece.navigation.next_index}}>
|
||||||
|
<span className="pull-right">
|
||||||
|
Next
|
||||||
|
<span className="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||||||
|
</span>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -111,14 +146,14 @@ let NavigationHeader = React.createClass({
|
||||||
|
|
||||||
let PrizePieceRatings = React.createClass({
|
let PrizePieceRatings = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
piece: React.PropTypes.object
|
piece: React.PropTypes.object,
|
||||||
|
currentUser: React.PropTypes.object
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialState() {
|
getInitialState() {
|
||||||
return mergeOptions(
|
return mergeOptions(
|
||||||
PieceListStore.getState(),
|
PieceListStore.getState(),
|
||||||
PrizeRatingStore.getState(),
|
PrizeRatingStore.getState()
|
||||||
UserStore.getState()
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -126,7 +161,6 @@ let PrizePieceRatings = React.createClass({
|
||||||
PrizeRatingStore.listen(this.onChange);
|
PrizeRatingStore.listen(this.onChange);
|
||||||
PrizeRatingActions.fetchOne(this.props.piece.id);
|
PrizeRatingActions.fetchOne(this.props.piece.id);
|
||||||
PieceListStore.listen(this.onChange);
|
PieceListStore.listen(this.onChange);
|
||||||
UserStore.listen(this.onChange);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
|
@ -137,7 +171,6 @@ let PrizePieceRatings = React.createClass({
|
||||||
PrizeRatingActions.updateRating({});
|
PrizeRatingActions.updateRating({});
|
||||||
PrizeRatingStore.unlisten(this.onChange);
|
PrizeRatingStore.unlisten(this.onChange);
|
||||||
PieceListStore.unlisten(this.onChange);
|
PieceListStore.unlisten(this.onChange);
|
||||||
UserStore.unlisten(this.onChange);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onChange(state) {
|
onChange(state) {
|
||||||
|
@ -160,7 +193,7 @@ let PrizePieceRatings = React.createClass({
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
render(){
|
render(){
|
||||||
if (this.state.currentUser && this.state.currentUser.is_jury) {
|
if (this.props.currentUser && this.props.currentUser.is_jury) {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<DetailProperty
|
<DetailProperty
|
||||||
|
@ -181,7 +214,7 @@ let PrizePieceRatings = React.createClass({
|
||||||
}/>
|
}/>
|
||||||
<PersonalNote
|
<PersonalNote
|
||||||
piece={this.props.piece}
|
piece={this.props.piece}
|
||||||
currentUser={this.state.currentUser}/>
|
currentUser={this.props.currentUser}/>
|
||||||
</div>);
|
</div>);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user