var ListView = React.createClass({
css: {
narrow: {
width: '85px'
}
},
getInitialState: function() {
return { Records: [] }
},
componentDidMount: function() {
this.loadRecords(0, 25);
},
loadRecords: function(offset, limit) {
$.ajax({
url: '/api',
data: {
offset: offset,
limit: limit,
search: JSON.stringify(this.props.search)
},
success: function(data) {
this.setState(data);
}.bind(this),
error: function(xhr, status, err) {
console.error('/api', status, err.toString());
}.bind(this)
});
},
render: function() {
return (
{this.props.title}
| ID |
Märke |
Växellåda |
Serienummer |
Ändrad |
|
{this.rows()}
{this.pagination()}
);
},
rows: function() {
return this.state.Records.map(function(record) {
return (
| {record.Id} |
{record.Brand} |
{record.Transmission} |
{record.SerialNumber} |
{this.dateFor(record)} |
);
}.bind(this));
},
recordClicked: function(record) {
return function() {
this.props.onRecordClicked(record);
}.bind(this);
},
pagination: function() {
var atFirst = this.state.Offset > 0 ? '' : 'disabled'
var atLast = this.state.Offset + this.state.Limit < this.state.Count ? '' : 'disabled';
var first = » Första
var prev = « Föregående
var next = Nästa »
var last = Sista »
return (
{first}
{prev}
{next}
{last}
)
},
firstClicked: function() {
this.loadRecords(0, 25);
},
prevClicked: function() {
this.loadRecords(this.state.Offset - 25, 25)
},
nextClicked: function() {
this.loadRecords(this.state.Offset + this.state.Limit, 25)
},
lastClicked: function() {
this.loadRecords(Math.floor(this.state.Count / 25) * 25, 25)
},
dateFor: function(record) {
var d = record.UpdatedAt.substr(0, 10);
return (d[0] == '0') ? 'N/A' : d;
}
});