/** @jsx React.DOM */ var FlowDetailNav = React.createClass({ render: function(){ var items = ["request", "response", "details"].map(function(e){ var str = e.charAt(0).toUpperCase() + e.slice(1); var className = this.props.active === e ? "active" : ""; var onClick = function(){ this.props.selectTab(e); return false; }.bind(this); return {str}; }.bind(this)); return ( ); } }); var Headers = React.createClass({ render: function(){ var rows = this.props.message.headers.map(function(header){ return ( {header[0]} {header[1]} ); }) return ( {rows}
); } }) var FlowDetailRequest = React.createClass({ render: function(){ var flow = this.props.flow; var first_line = [ flow.request.method, RequestUtils.pretty_url(flow.request), "HTTP/"+ flow.response.httpversion.join(".") ].join(" "); var content = null; if(flow.request.contentLength > 0){ content = "Request Content Size: "+ formatSize(flow.request.contentLength); } else { content =
No Content
; } //TODO: Styling return (
{ first_line }
{content}
); } }); var FlowDetailResponse = React.createClass({ render: function(){ var flow = this.props.flow; var first_line = [ "HTTP/"+ flow.response.httpversion.join("."), flow.response.code, flow.response.msg ].join(" "); var content = null; if(flow.response.contentLength > 0){ content = "Response Content Size: "+ formatSize(flow.response.contentLength); } else { content =
No Content
; } //TODO: Styling return (
{ first_line }
{content}
); } }); var FlowDetailConnectionInfo = React.createClass({ render: function(){ return
details
; } }); var tabs = { request: FlowDetailRequest, response: FlowDetailResponse, details: FlowDetailConnectionInfo }; var FlowDetail = React.createClass({ mixins: [StickyHeadMixin], render: function(){ var flow = JSON.stringify(this.props.flow, null, 2); var Tab = tabs[this.props.active]; return (
); } });