diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-06-14 08:56:56 -0400 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2017-06-14 08:56:56 -0400 |
commit | 1138dd67705829a6af0d6c610cf3dbe09082187c (patch) | |
tree | 23bdc3db76221bead172be1c51eb52a4987636f1 /webapp/components/admin_console/server_logs/logs.jsx | |
parent | 40efd8367a85e3333e9b7cc45c390259d412088c (diff) | |
download | chat-1138dd67705829a6af0d6c610cf3dbe09082187c.tar.gz chat-1138dd67705829a6af0d6c610cf3dbe09082187c.tar.bz2 chat-1138dd67705829a6af0d6c610cf3dbe09082187c.zip |
PLT-6657 Move system console to use v4 endpoints and redux (#6572)
* Move system console to use v4 endpoints and redux
* Rename logs dir to get past gitignore
* Fix test email
* Update brand unit test
* Updates per feedback
Diffstat (limited to 'webapp/components/admin_console/server_logs/logs.jsx')
-rw-r--r-- | webapp/components/admin_console/server_logs/logs.jsx | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/webapp/components/admin_console/server_logs/logs.jsx b/webapp/components/admin_console/server_logs/logs.jsx new file mode 100644 index 000000000..b60a66ce6 --- /dev/null +++ b/webapp/components/admin_console/server_logs/logs.jsx @@ -0,0 +1,123 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import LoadingScreen from 'components/loading_screen.jsx'; + +import React from 'react'; +import PropTypes from 'prop-types'; +import {FormattedMessage} from 'react-intl'; + +export default class Logs extends React.PureComponent { + static propTypes = { + + /* + * Array of logs to render + */ + logs: PropTypes.arrayOf(PropTypes.string).isRequired, + + actions: PropTypes.shape({ + + /* + * Function to fetch logs + */ + getLogs: PropTypes.func.isRequired + }).isRequired + } + + constructor(props) { + super(props); + + this.state = { + loadingLogs: true + }; + } + + componentDidMount() { + this.refs.logPanel.focus(); + + this.props.actions.getLogs().then( + () => this.setState({loadingLogs: false}) + ); + } + + componentDidUpdate() { + // Scroll Down to get the latest logs + var node = this.refs.logPanel; + node.scrollTop = node.scrollHeight; + node.focus(); + } + + reload = () => { + this.setState({loadingLogs: true}); + this.props.actions.getLogs().then( + () => this.setState({loadingLogs: false}) + ); + } + + render() { + let content = null; + + if (this.state.loadingLogs) { + content = <LoadingScreen/>; + } else { + content = []; + + for (let i = 0; i < this.props.logs.length; i++) { + const style = { + whiteSpace: 'nowrap', + fontFamily: 'monospace' + }; + + if (this.props.logs[i].indexOf('[EROR]') > 0) { + style.color = 'red'; + } + + content.push(<br key={'br_' + i}/>); + content.push( + <span + key={'log_' + i} + style={style} + > + {this.props.logs[i]} + </span> + ); + } + } + + return ( + <div className='panel'> + <h3 className='admin-console-header'> + <FormattedMessage + id='admin.logs.title' + defaultMessage='Server Logs' + /> + </h3> + <div className='banner'> + <div className='banner__content'> + <FormattedMessage + id='admin.logs.bannerDesc' + defaultMessage='To look up users by User ID, go to Reporting > Users and paste the ID into the search filter.' + /> + </div> + </div> + <button + type='submit' + className='btn btn-primary' + onClick={this.reload} + > + <FormattedMessage + id='admin.logs.reload' + defaultMessage='Reload' + /> + </button> + <div + tabIndex='-1' + ref='logPanel' + className='log__panel' + > + {content} + </div> + </div> + ); + } +} |