// @hash v3-E0D2B74CF526BE1086106942F1D76560BE0E871F
// Automatically generated by ReactJS.NET. Do not edit, your changes will be overridden.
// Version: 3.0.0 (build 0) with Babel 6.7.7
// Generated at: 04/01/2017 20:57:18
///////////////////////////////////////////////////////////////////////////////
var TubeStatus = React.createClass({
    displayName: 'TubeStatus',

    loadLineStatusInfo: function loadLineStatusInfo() {
        var xhr = new XMLHttpRequest();
        xhr.open('get', 'https://api.tfl.gov.uk/line/mode/tube,overground,dlr,elizabeth-line,tram/status', true);
        xhr.onload = function () {
            var data = JSON.parse(xhr.responseText);
            this.setState({
                statusData: data,
                statusTimestamp: moment()
            });
        }.bind(this);
        xhr.send();
    },
    getInitialState: function getInitialState() {
        return {
            statusData: this.props.initialData,
            statusTimestamp: moment()
        };
    },
    componentDidMount: function componentDidMount() {
        window.setInterval(this.loadLineStatusInfo, 60000);
        this.loadLineStatusInfo();
    },
    render: function render() {
        return React.createElement(
            'div',
            { className: 'tubeStatus' },
            React.createElement(StatusTable, { statusData: this.state.statusData }),
            React.createElement(
                'p',
                null,
                this.state.statusTimestamp.format("dddd Do MMMM YYYY hh:mm:ss A")
            ),
            React.createElement(
                'p',
                null,
                React.createElement(
                    'a',
                    { href: 'https://unop.uk' },
                    'unop.uk'
                )
            )
        );
    }
});

var StatusTable = React.createClass({
    displayName: 'StatusTable',

    render: function render() {
        return React.createElement(
            'div',
            { className: 'statusTable' },
            React.createElement(
                'table',
                null,
                React.createElement(
                    'thead',
                    null,
                    React.createElement(
                        'tr',
                        null,
                        React.createElement(
                            'th',
                            null,
                            'Line'
                        ),
                        React.createElement(
                            'th',
                            null,
                            'Status'
                        )
                    )
                ),
                React.createElement(StatusTableRowList, { statusData: this.props.statusData })
            )
        );
    }
});

var StatusTableRowList = React.createClass({
    displayName: 'StatusTableRowList',

    render: function render() {
        var lineStatusList = this.props.statusData.map(function (line) {
            var order = 9;
            if (line.modeName === 'tube') order = 1;
            if (line.modeName === 'overground') order = 2;
            if (line.modeName === 'elizabeth-line') order = 3;
            if (line.modeName === 'dlr') order = 4;
            if (line.modeName === 'tram') order = 5;
            return React.createElement(StatusTableRow, { lineStatusData: line, key: line.id, order: order });
        }).sort(function (a, b) {
            // Sort by list above
            if (a.props.order < b.props.order) return -1;
            if (a.props.order > b.props.order) return 1;
            // Then by mode name
            if (a.props.lineStatusData.modeName < b.props.lineStatusData.modeName) return -1;
            if (a.props.lineStatusData.modeName > b.props.lineStatusData.modeName) return 1;
            // Then by id (~ lower case name)
            if (a.props.lineStatusData.id < b.props.lineStatusData.id) return -1;
            if (a.props.lineStatusData.id > b.props.lineStatusData.id) return 1;
            return 0;
        });
        return React.createElement(
            'tbody',
            null,
            lineStatusList
        );
    }
});

var StatusTableRow = React.createClass({
    displayName: 'StatusTableRow',

    render: function render() {
        var status = React.createElement(
            'td',
            null,
            'Getting Status Data....'
        );
        if (this.props.lineStatusData.lineStatuses && this.props.lineStatusData.lineStatuses.length > 0) {
            status = this.props.lineStatusData.lineStatuses[0].statusSeverity === 10 ? React.createElement(
                'td',
                { className: 'standard' },
                'Bog Standard Service'
            ) : React.createElement(
                'td',
                { className: 'bad' },
                React.createElement(
                    'details',
                    null,
                    React.createElement(
                        'summary',
                        null,
                        this.props.lineStatusData.lineStatuses[0].statusSeverityDescription
                    ),
                    this.props.lineStatusData.lineStatuses[0].reason
                )
            );
        }
        return React.createElement(
            'tr',
            null,
            React.createElement(
                'td',
                { className: this.props.lineStatusData.id },
                this.props.lineStatusData.name
            ),
            status
        );
    }
});