mirror of
https://github.com/ascribe/onion.git
synced 2024-12-23 01:39:36 +01:00
piece_detail thumb + header
This commit is contained in:
parent
54866cda84
commit
f564e909f7
71
css/main.css
71
css/main.css
@ -56,3 +56,74 @@
|
|||||||
background-color: rgba(2, 182, 163, 0.5);
|
background-color: rgba(2, 182, 163, 0.5);
|
||||||
border-color: rgba(2, 182, 163, 0.5);
|
border-color: rgba(2, 182, 163, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ascribe-detail-header{
|
||||||
|
margin-top: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ascribe-detail-header > div{
|
||||||
|
padding-bottom: 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ascribe-detail-title {
|
||||||
|
font-size: 2em;
|
||||||
|
margin-bottom: -0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* columns of same height styles */
|
||||||
|
/* http://www.minimit.com/articles/solutions-tutorials/bootstrap-3-responsive-columns-of-same-height */
|
||||||
|
.row-full-height {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-full-height {
|
||||||
|
height: 100%;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-same-height {
|
||||||
|
display: table;
|
||||||
|
width: 100%;
|
||||||
|
/* fix overflow */
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-xs-height {
|
||||||
|
display: table-cell;
|
||||||
|
float: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.col-sm-height {
|
||||||
|
display: table-cell;
|
||||||
|
float: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 992px) {
|
||||||
|
.col-md-height {
|
||||||
|
display: table-cell;
|
||||||
|
float: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
.col-lg-height {
|
||||||
|
display: table-cell;
|
||||||
|
float: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* vertical alignment styles */
|
||||||
|
|
||||||
|
.col-top {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-middle {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-bottom {
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
@ -19,6 +19,6 @@ class EditionListActions {
|
|||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export default alt.createActions(EditionListActions);
|
export default alt.createActions(EditionListActions);
|
@ -18,6 +18,6 @@ class PieceActions {
|
|||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export default alt.createActions(PieceActions);
|
export default alt.createActions(PieceActions);
|
||||||
|
25
js/components/ascribe_media/image_viewer.js
Normal file
25
js/components/ascribe_media/image_viewer.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the component that implements display-specific functionality
|
||||||
|
*/
|
||||||
|
let ImageViewer = React.createClass({
|
||||||
|
propTypes: {
|
||||||
|
thumbnail: React.PropTypes.string.isRequired
|
||||||
|
},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
let thumbnail = <img className="img-responsive" src={this.props.thumbnail}/>;
|
||||||
|
let aligner = <span className="vcenter"></span>;
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
{aligner}
|
||||||
|
{thumbnail}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default ImageViewer;
|
@ -1,18 +1,106 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import ImageViewer from './ascribe_media/image_viewer';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the component that implements display-specific functionality
|
* This is the component that implements display-specific functionality
|
||||||
*/
|
*/
|
||||||
let Piece = React.createClass({
|
let Piece = React.createClass({
|
||||||
propTypes: {
|
//propTypes: {
|
||||||
title: React.PropTypes.string.isRequired
|
// title: React.PropTypes.string.isRequired
|
||||||
},
|
//},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<p>Title: {this.props.title}</p>
|
<div>
|
||||||
|
<div className="col-md-7">
|
||||||
|
<ImageViewer thumbnail={this.props.piece.thumbnail}/>
|
||||||
|
</div>
|
||||||
|
<div className="col-md-5">
|
||||||
|
<PieceHeader piece={this.props.piece}/>
|
||||||
|
<PieceEdition piece={this.props.piece}/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let PieceHeader = React.createClass({
|
||||||
|
//propTypes: {
|
||||||
|
// title: React.PropTypes.string.isRequired
|
||||||
|
//},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<div className="ascribe-detail-header">
|
||||||
|
<div className="row">
|
||||||
|
<div className="row-same-height">
|
||||||
|
<div className="col-md-2 col-xs-height col-bottom">
|
||||||
|
<div>TITLE:</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-md-10 col-xs-height col-bottom">
|
||||||
|
<div className="ascribe-detail-title">{this.props.piece.title}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-2">
|
||||||
|
<div>BY:</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-md-10">
|
||||||
|
<div>{this.props.piece.artist_name}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-2">
|
||||||
|
<div>DATE:</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-md-10">
|
||||||
|
<div>{ this.props.piece.date_created.slice(0,4) }</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let PieceEdition = React.createClass({
|
||||||
|
//propTypes: {
|
||||||
|
// title: React.PropTypes.string.isRequired
|
||||||
|
//},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<div className="ascribe-detail-header">
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-2">
|
||||||
|
<div>EDITION:</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-md-10">
|
||||||
|
<div>{ this.props.piece.edition_number } of {this.props.piece.num_editions}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-2">
|
||||||
|
<div>ID:</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-md-10">
|
||||||
|
<div>{ this.props.piece.bitcoin_id }</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-2">
|
||||||
|
<div>OWNER:</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-md-10">
|
||||||
|
<div>{ this.props.piece.owner }</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
export default Piece;
|
export default Piece;
|
@ -31,7 +31,7 @@ let PieceContainer = React.createClass({
|
|||||||
|
|
||||||
if('title' in this.state.piece) {
|
if('title' in this.state.piece) {
|
||||||
return (
|
return (
|
||||||
<Piece title={this.state.piece.title}></Piece>
|
<Piece piece={this.state.piece}></Piece>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
|
@ -11,7 +11,7 @@ let PieceFetcher = {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
fetchOne(pieceId) {
|
fetchOne(pieceId) {
|
||||||
return fetch(AppConstants.baseUrl + 'pieces/' + pieceId + '/', {
|
return fetch(AppConstants.baseUrl + 'editions/' + pieceId + '/', {
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': 'Basic ' + AppConstants.debugCredentialBase64
|
'Authorization': 'Basic ' + AppConstants.debugCredentialBase64
|
||||||
}
|
}
|
||||||
|
@ -4,13 +4,13 @@ import PieceAction from '../actions/piece_actions';
|
|||||||
|
|
||||||
class PieceStore {
|
class PieceStore {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.piece = {}
|
this.piece = {};
|
||||||
this.bindActions(PieceAction);
|
this.bindActions(PieceAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
onUpdatePiece(piece) {
|
onUpdatePiece(piece) {
|
||||||
this.piece = piece;
|
this.piece = piece;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export default alt.createStore(PieceStore);
|
export default alt.createStore(PieceStore);
|
||||||
|
@ -35,6 +35,7 @@ let GeneralUtils = {
|
|||||||
l.forEach((num) => sum += parseFloat(num) || 0);
|
l.forEach((num) => sum += parseFloat(num) || 0);
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default GeneralUtils;
|
export default GeneralUtils;
|
||||||
|
Loading…
Reference in New Issue
Block a user