import React from 'react'; import { withRouter, Link } from 'react-router-dom'; import PropTypes from 'prop-types'; class PagedCombatLog extends React.Component { constructor(props) { super(props); this.state = { data: {} } if (props.getFetch) { props.getFetch(this.fetchCombatLog.bind(this)); } } render() { return (

When

Attacker

Defender

Attacking Force

Defending Force

Undefended?

Victor

Gold Lost

Victor Casualties

{Object.keys(this.state.data).map((key) =>

{ this.parseDate(this.state.data[key].eventTime) }

{this.state.data[key].attackerUsername}

{this.state.data[key].defenderUsername}

{this.state.data[key].attackingUnits}

{this.state.data[key].defendingUnits}

{this.state.data[key].undefended ? 'yes' : 'no'}

{this.state.data[key].victor}

{this.state.data[key].spoilsGold}

{this.state.data[key].casualtiesVictor}

)}
); } fetchCombatLog(username = this.props.username, start = this.props.start, length = this.props.length) { //build the XHR let xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { if (xhr.readyState === 4) { if (xhr.status === 200) { let data = JSON.parse(xhr.responseText); this.setState({data: data}); if (this.props.onReceived) { this.props.onReceived(data); } } } } xhr.open('POST', '/combatlogrequest', true); xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); xhr.send(JSON.stringify({ username: username, start: start, length: length })); } parseDate(eventTime) { let month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; let date = new Date(eventTime); return `${date.getDate()} ${month[date.getMonth()]}`; } } PagedCombatLog.propTypes = { username: PropTypes.string.isRequired, start: PropTypes.number.isRequired, length: PropTypes.number.isRequired, getFetch: PropTypes.func, onReceived: PropTypes.func }; export default withRouter(PagedCombatLog);