import { Loader } from 'UI'; import styles from './logTab.css'; const REQUEST = '[REQUEST]'; const RESPONSE = '[RESPONSE]'; const parse = text => text.split('\n').map((bText) => { if (bText.indexOf(REQUEST) !== -1) { return (
{'REQUEST: '} { bText.slice(REQUEST.length) }
); } if (bText.indexOf(RESPONSE) !== -1) { return (
{'RESPONSE: '} { bText.slice(RESPONSE.length) }
); } return bText; }); export default class LogTab extends React.PureComponent { state = { blocks: null, errors: null, }; componentWillMount() { fetch(this.props.src) .then(responce => responce.text()) .then(parse) .then(blocks => this.setState({ errors: null, blocks })) .catch(errors => this.setState({ errors, blocks: null })); } scrollToSelected = (wrapper) => { const { selectedIndex } = this.props; if (!selectedIndex || !wrapper) return; wrapper.scrollTop = wrapper.children[ selectedIndex ].offsetTop; } render() { const { blocks, errors } = this.state; const { selectedIndex, className } = this.props; if (errors) return 'Connection error'; if (!blocks) return ; return (
{ blocks.map((block, i) =>
{ block }
)}
); } }