diff --git a/js/components/whitelabel/prize/actions/prize_rating_actions.js b/js/components/whitelabel/prize/actions/prize_rating_actions.js
index e36023a0..73569875 100644
--- a/js/components/whitelabel/prize/actions/prize_rating_actions.js
+++ b/js/components/whitelabel/prize/actions/prize_rating_actions.js
@@ -9,16 +9,17 @@ class PrizeRatingActions {
constructor() {
this.generateActions(
'updatePrizeRatings',
+ 'updatePrizeRatingAverage',
'updatePrizeRating'
);
}
- fetch() {
+ fetchAverage(pieceId) {
return Q.Promise((resolve, reject) => {
PrizeRatingFetcher
- .fetch()
+ .fetchAverage(pieceId)
.then((res) => {
- this.actions.updatePrizeRatings(res.ratings);
+ this.actions.updatePrizeRatingAverage(res.data);
resolve(res);
})
.catch((err) => {
diff --git a/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js b/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js
index fd25190f..f49d430d 100644
--- a/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js
+++ b/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js
@@ -17,6 +17,7 @@ import PrizeRatingStore from '../../stores/prize_rating_store';
import UserStore from '../../../../../stores/user_store';
import Piece from '../../../../../components/ascribe_detail/piece';
+import Note from '../../../../../components/ascribe_detail/note';
import AppConstants from '../../../../../constants/application_constants';
@@ -53,6 +54,15 @@ let PieceContainer = React.createClass({
UserStore.listen(this.onChange);
},
+ // This is done to update the container when the user clicks on the prev or next
+ // button to update the URL parameter (and therefore to switch pieces)
+ componentWillReceiveProps(nextProps) {
+ if(this.props.params.pieceId !== nextProps.params.pieceId) {
+ PieceActions.updatePiece({});
+ PieceActions.fetchOne(nextProps.params.pieceId);
+ }
+ },
+
componentWillUnmount() {
// Every time we're leaving the piece detail page,
// just reset the piece that is saved in the piece store
@@ -63,14 +73,6 @@ let PieceContainer = React.createClass({
UserStore.unlisten(this.onChange);
},
- // This is done to update the container when the user clicks on the prev or next
- // button to update the URL parameter (and therefore to switch pieces)
- componentWillReceiveProps(nextProps) {
- if(this.props.params.pieceId !== nextProps.params.pieceId) {
- PieceActions.updatePiece({});
- PieceActions.fetchOne(nextProps.params.pieceId);
- }
- },
onChange(state) {
this.setState(state);
@@ -167,6 +169,7 @@ let PrizePieceRatings = React.createClass({
componentDidMount() {
PrizeRatingStore.listen(this.onChange);
PrizeRatingActions.fetchOne(this.props.piece.id);
+ PrizeRatingActions.fetchAverage(this.props.piece.id);
PieceListStore.listen(this.onChange);
},
@@ -204,8 +207,35 @@ let PrizePieceRatings = React.createClass({
);
},
+ getId() {
+ return {'piece_id': this.props.piece.id};
+ },
+
render(){
- if (this.props.currentUser && this.props.currentUser.is_jury) {
+ if (this.props.currentUser && this.props.currentUser.is_judge && this.state.average) {
+ return (
+
+
+
+
+
+ {this.state.ratings.map((item) => {
+ return item.user;
+ })}
+
+ );
+ }
+ else if (this.props.currentUser && this.props.currentUser.is_jury) {
return (
-
);
}
diff --git a/js/components/whitelabel/prize/constants/prize_api_urls.js b/js/components/whitelabel/prize/constants/prize_api_urls.js
index 63eb71e7..880a707b 100644
--- a/js/components/whitelabel/prize/constants/prize_api_urls.js
+++ b/js/components/whitelabel/prize/constants/prize_api_urls.js
@@ -17,6 +17,7 @@ function getPrizeApiUrls(subdomain) {
'jury_resend': AppPrizeConstants.prizeApiEndpoint + subdomain + '/jury/${email}/resend/',
'ratings': AppPrizeConstants.prizeApiEndpoint + subdomain + '/ratings/',
'rating': AppPrizeConstants.prizeApiEndpoint + subdomain + '/ratings/${piece_id}/',
+ 'rating_average': AppPrizeConstants.prizeApiEndpoint + subdomain + '/ratings/${piece_id}/average/',
'notes': AppPrizeConstants.prizeApiEndpoint + subdomain + '/notes/',
'note': AppPrizeConstants.prizeApiEndpoint + subdomain + '/notes/${piece_id}/'
diff --git a/js/components/whitelabel/prize/fetchers/prize_rating_fetcher.js b/js/components/whitelabel/prize/fetchers/prize_rating_fetcher.js
index b7af8845..eae4f53a 100644
--- a/js/components/whitelabel/prize/fetchers/prize_rating_fetcher.js
+++ b/js/components/whitelabel/prize/fetchers/prize_rating_fetcher.js
@@ -4,8 +4,8 @@ import requests from '../../../../utils/requests';
let PrizeRatingFetcher = {
- fetch() {
- return requests.get('rating');
+ fetchAverage(pieceId) {
+ return requests.get('rating_average', {'piece_id': pieceId});
},
fetchOne(pieceId) {
@@ -13,7 +13,7 @@ let PrizeRatingFetcher = {
},
rate(pieceId, rating) {
- return requests.post('ratings', {body: {'piece_id': pieceId, 'value': rating}});
+ return requests.post('ratings', {body: {'piece_id': pieceId, 'note': rating}});
}
};
diff --git a/js/components/whitelabel/prize/stores/prize_rating_store.js b/js/components/whitelabel/prize/stores/prize_rating_store.js
index 4a31501c..9b7a2126 100644
--- a/js/components/whitelabel/prize/stores/prize_rating_store.js
+++ b/js/components/whitelabel/prize/stores/prize_rating_store.js
@@ -8,16 +8,22 @@ class PrizeRatingStore {
constructor() {
this.ratings = [];
this.currentRating = null;
+ this.average = null;
this.bindActions(PrizeRatingActions);
}
- onUpdatePrizeRatings( ratings ) {
+ onUpdatePrizeRatings(ratings) {
this.ratings = ratings;
}
- onUpdatePrizeRating( rating ) {
+ onUpdatePrizeRating(rating) {
this.currentRating = parseInt(rating, 10);
}
+
+ onUpdatePrizeRatingAverage(data) {
+ this.average = data.average;
+ this.ratings = data.ratings;
+ }
}
export default alt.createStore(PrizeRatingStore, 'PrizeRatingStore');
\ No newline at end of file