/*** @jsx React.DOM */ var valid_versions = Object.keys(window.rivals); var pagenav = new History(valid_versions); var rivals_view = createReactClass({ getInitialState: function(props) { var profiles = Object.keys(window.rivals); var version = pagenav.getInitialState(profiles[profiles.length - 1]); return { rivals: window.rivals, players: window.players, profiles: profiles, version: version, term: "", results: {}, searching: false, offset: 0, limit: 5, }; }, componentDidMount: function() { pagenav.onChange(function(version) { this.setState({version: version, offset: 0}); }.bind(this)); this.refreshRivals(); }, refreshRivals: function() { AJAX.get( Link.get('refresh'), function(response) { this.setState({ rivals: response.rivals, players: response.players, }); setTimeout(this.refreshRivals, 5000); }.bind(this) ); }, searchForPlayers: function(event) { this.setState({searching: true}); AJAX.post( Link.get('search'), { version: this.state.version, term: this.state.term, }, function(response) { this.setState({ results: response.results, searching: false, }); }.bind(this) ); event.preventDefault(); }, addRival: function(event, type, userid) { AJAX.post( Link.get('addrival'), { version: this.state.version, type: type, userid: userid, }, function(response) { this.setState({ rivals: response.rivals, players: response.players, }); }.bind(this) ); event.preventDefault(); }, removeRival: function(event, type, userid) { AJAX.post( Link.get('removerival'), { version: this.state.version, type: type, userid: userid, }, function(response) { this.setState({ rivals: response.rivals, players: response.players, }); }.bind(this) ); event.preventDefault(); }, addSPDPRivals: function(userid) { if (userid == window.userid) { return null; } var sp_avail = true; var dp_avail = true; var sp_count = 0; var dp_count = 0; var current_rivals = this.state.rivals[this.state.version]; for (var i = 0; i < current_rivals.length; i++) { if (current_rivals[i].type == 'sp_rival') { sp_count++; } if (current_rivals[i].type == 'dp_rival') { dp_count++; } if (current_rivals[i].userid == userid) { if (current_rivals[i].type == 'sp_rival') { sp_avail = false; } if (current_rivals[i].type == 'dp_rival') { dp_avail = false; } } } if (sp_count >= 5) { sp_avail = false; } if (dp_count >= 5) { dp_avail = false; } return ( {sp_avail ? : null } {dp_avail ? : null } ); }, render: function() { if (this.state.rivals[this.state.version]) { var rivals = this.state.rivals[this.state.version]; var resultlength = 0; Object.keys(this.state.results).map(function(userid, index) { var player = this.state.results[userid][this.state.version]; if (player) { resultlength++; } }.bind(this)); return (

Rivals

{this.state.profiles.map(function(version) { return (

{ this.state.searching ? : null }
{resultlength > 0 ? { Object.keys(this.state.results).map(function(userid, index) { if (index < this.state.offset || index >= this.state.offset + this.state.limit) { return null; } var player = this.state.results[userid][this.state.version]; if (!player) { return null; } return ( ); }.bind(this)) }
DJ Name IIDX ID SP Dan DP Dan SP DJ Points DP DJ Points
{ player.extid } { player.sdan } { player.ddan } { player.sdjp } { player.ddjp } {this.addSPDPRivals(userid)}
{ this.state.offset > 0 ? : null } { (this.state.offset + this.state.limit) < resultlength ? = resultlength) { return; } this.setState({offset: page}); }.bind(this)}/> : null }
:
No players match the specified search.
}
{['sp_rival', 'dp_rival'].map(function(rival_type) { var type = ''; if (rival_type == 'sp_rival') { type = 'SP'; } else { type = 'DP'; } return (

{type} Rivals

{this.state.rivals[this.state.version].map(function(rival, index) { if (rival.type != rival_type) { return null; } var player = this.state.players[rival.userid][this.state.version]; return ( ); }.bind(this))}
DJ Name IIDX ID {type} Dan {type} DJ Points
{ player.extid } { rival_type == 'sp_rival' ? player.sdan : player.ddan } { rival_type == 'sp_rival' ? player.sdjp : player.ddjp }
); }.bind(this))}
); } else { return (
You have no profile for {window.versions[this.state.version]}!
{this.state.profiles.map(function(version) { return (
); } }, }); ReactDOM.render( React.createElement(rivals_view, null), document.getElementById('content') );