import React from 'react'; import { Modal, Button } from 'react-bootstrap'; import { ERROR } from './actions'; import { app } from './app'; /** * Standard view of application errors */ export default class ErrorView extends React.Component { constructor(props) { super(props); this._onAppChange = this._onAppChange.bind(this); this.close = this.close.bind(this); } componentDidMount() { app.add(this._onAppChange); } componentWillUmount() { app.remove(this._onAppChange); } /** * Called when application state changes * @param {[type]} action [description] * @return {[type]} [description] */ _onAppChange(action, data) { if (action === ERROR) { this.setState(data); } } /** * Called to close the error message */ close() { // clean up the error message this.setState({ error: null }); } render() { const err = this.state ? this.state.error : null; const show = err !== null; return React.createElement( Modal, { show: show, onHide: this.close }, React.createElement( Modal.Header, { closeButton: true }, React.createElement( 'h2', null, __('error.title') ) ), React.createElement( Modal.Body, null, React.createElement( 'div', { className: 'pull-left', style: { marginRight: '20px' } }, React.createElement('i', { className: 'fa fa-5x fa-bomb' }) ), React.createElement( 'div', { style: { minHeight: '60px' } }, React.createElement( 'p', { className: 'lead' }, __('error.msg1') ), React.createElement( 'p', { className: 'text-muted' }, React.createElement( 'b', null, __('form.reason') + ': ' ), err ) ) ), React.createElement( Modal.Footer, null, React.createElement( Button, { bsStyle: 'danger', onClick: this.close }, __('action.close') ) ) ); } }