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}

{this.rows()}
ID Märke Växellåda Serienummer Ändrad
{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; } });