var React = require("react");
var flowutils = require("../flow/utils.js");
var utils = require("../utils.js");
var TLSColumn = React.createClass({
    statics: {
        renderTitle: function () {
            return 
 | ;
        }
    },
    render: function () {
        var flow = this.props.flow;
        var ssl = (flow.request.scheme == "https");
        var classes;
        if (ssl) {
            classes = "col-tls col-tls-https";
        } else {
            classes = "col-tls col-tls-http";
        }
        return  | ;
    }
});
var IconColumn = React.createClass({
    statics: {
        renderTitle: function () {
            return  | ;
        }
    },
    render: function () {
        var flow = this.props.flow;
        var icon;
        if (flow.response) {
            var contentType = flowutils.ResponseUtils.getContentType(flow.response);
            //TODO: We should assign a type to the flow somewhere else.
            if (flow.response.code == 304) {
                icon = "resource-icon-not-modified";
            } else if (300 <= flow.response.code && flow.response.code < 400) {
                icon = "resource-icon-redirect";
            } else if (contentType && contentType.indexOf("image") >= 0) {
                icon = "resource-icon-image";
            } else if (contentType && contentType.indexOf("javascript") >= 0) {
                icon = "resource-icon-js";
            } else if (contentType && contentType.indexOf("css") >= 0) {
                icon = "resource-icon-css";
            } else if (contentType && contentType.indexOf("html") >= 0) {
                icon = "resource-icon-document";
            }
        }
        if (!icon) {
            icon = "resource-icon-plain";
        }
        icon += " resource-icon";
        return 
            
         | ;
    }
});
var PathColumn = React.createClass({
    statics: {
        renderTitle: function () {
            return Path | ;
        }
    },
    render: function () {
        var flow = this.props.flow;
        return 
            {flow.request.is_replay ?  : null}
            {flow.intercepted ?  : null}
            {flow.request.scheme + "://" + flow.request.host + flow.request.path}
         | ;
    }
});
var MethodColumn = React.createClass({
    statics: {
        renderTitle: function () {
            return Method | ;
        }
    },
    render: function () {
        var flow = this.props.flow;
        return {flow.request.method} | ;
    }
});
var StatusColumn = React.createClass({
    statics: {
        renderTitle: function () {
            return Status | ;
        }
    },
    render: function () {
        var flow = this.props.flow;
        var status;
        if (flow.response) {
            status = flow.response.code;
        } else {
            status = null;
        }
        return {status} | ;
    }
});
var SizeColumn = React.createClass({
    statics: {
        renderTitle: function () {
            return Size | ;
        }
    },
    render: function () {
        var flow = this.props.flow;
        var total = flow.request.contentLength;
        if (flow.response) {
            total += flow.response.contentLength || 0;
        }
        var size = utils.formatSize(total);
        return {size} | ;
    }
});
var TimeColumn = React.createClass({
    statics: {
        renderTitle: function () {
            return Time | ;
        }
    },
    render: function () {
        var flow = this.props.flow;
        var time;
        if (flow.response) {
            time = utils.formatTimeDelta(1000 * (flow.response.timestamp_end - flow.request.timestamp_start));
        } else {
            time = "...";
        }
        return {time} | ;
    }
});
var all_columns = [
    TLSColumn,
    IconColumn,
    PathColumn,
    MethodColumn,
    StatusColumn,
    SizeColumn,
    TimeColumn];
module.exports = all_columns;