import React from 'react';
import classnames from 'classnames';
import moment from 'moment';
import { transformField, colorField } from 'utils/calendar';
import map from 'lodash/map';

export default class SecurityEventsRow extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      event: props.event,
      hidden: false
    };
  }

  componentWillMount() {
    // Check for missing dates.  Some old events (dividends) have this.
    if (!this.state.event.date) {
      this.state.hidden = true;
    }
  }

  eventMarket(eventTime) {
    const formattedEventTime = moment(eventTime, 'hh:mm:ss');
    const preMarket = moment('9:30:00', 'hh:mm:ss');
    const afterMarket = moment('15:59:59', 'hh:mm:ss');

    if (formattedEventTime.isBefore(preMarket)) {
      return 'Pre-Market';
    } else if (formattedEventTime.isAfter(afterMarket)) {
      return 'After-Market';
    }
    return 'Intraday';
  }

  surprisePercent(est, actual) {
    return est && actual ? 100 * ((actual - est) / Math.abs(est)) : '\u00a0';
  }


  eventRow() {
    const { fields, type, event } = this.props;
    return map(fields, (field, fieldName) => {
      return (
        <td key={fieldName}>
          {field.transform ? transformField(field.transform, event[fieldName]) : event[fieldName]}
        </td>
      );
    });
  }

  render() {
    return (
      <tr>{this.eventRow()}</tr>
    );
  }
}

SecurityEventsRow.propTypes = {
  event: React.PropTypes.object.isRequired,
  type: React.PropTypes.string.isRequired,
  fields: React.PropTypes.object.isRequired
};

export default SecurityEventsRow;
