/*- * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ * Copyright (C) 2019 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END============================================ * =================================================================== * */ import React from 'react'; import Table from 'react-bootstrap/Table'; import LoopCache from '../../../api/LoopCache'; import styled from 'styled-components'; const TableRow = ({ logRow }) => ( <tr> <td>{logRow.logInstant}</td> <td>{logRow.logType}</td> <td>{logRow.logComponent}</td> <td>{logRow.message}</td> </tr> ) const LoopLogsHeaderDivStyled = styled.div` background-color: ${props => props.theme.loopViewerHeaderBackgroundColor}; padding: 10px 10px; color: ${props => props.theme.loopViewerHeaderFontColor}; overflow: auto; ` export default class LoopLogs extends React.Component { state = { loopCache: new LoopCache({}), } constructor(props) { super(props); this.renderLogs = this.renderLogs.bind(this); this.state.loopCache=props.loopCache; } shouldComponentUpdate(nextProps, nextState) { return this.state.loopCache !== nextState.loopCache; } componentWillReceiveProps(newProps) { this.setState({ loopCache: newProps.loopCache, }); } renderLogs() { if (this.state.loopCache.getLoopLogsArray() != null) { return ( this.state.loopCache.getLoopLogsArray().map(row => <TableRow logRow={row} />) ) } } render() { return ( <LoopLogsHeaderDivStyled> <label>Loop Logs</label> <Table striped hover bordeless variant responsive> <thead> <tr> <th><span align="left">Date</span></th> <th><span align="left">Type</span></th> <th><span align="left">Component</span></th> <th><span align="right">Log</span></th> </tr> </thead> <tbody> {this.renderLogs()} </tbody> </Table> </LoopLogsHeaderDivStyled> ); } }