/* * JaCoCo Report Viewer, a web-based coverage report viewer * Copyright (C) 2018 Pacien TRAN-GIRARD * Adam NAILI * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import React, { Component } from 'react'; import {Parser} from 'xml2js'; import {Counters, SessionInfo, PackagesCoverage} from './Blocks.js'; import './App.css'; class App extends Component { constructor(props) { super(props); this.state = { report: null, hasError: false }; } componentDidCatch(error, info) { this.setState({ hasError: true }); console.err(error, info); } _useReportFile(file) { const fileReader = new FileReader(); fileReader.onloadend = (readEvent) => this._useReport(readEvent.target.result); fileReader.readAsText(file); } _useReport(xmlString) { const xmlParser = new Parser(); xmlParser.parseString(xmlString, (err, result) => this.setState({ report: result.report })); } _renderError() { return ( Something went wrong while rendering the report. Are the provided files valid? ); } _renderReport() { return this.state.hasError ? this._renderError(): (); } render() { return (

JaCoCo Report Viewer

this._useReportFile(event.target.files[0])} />
null} />

{this._renderReport()}
); } } class Report extends Component { _renderNone() { return (Please provide a JaCoCo XML report file to visualise.); } _renderReport() { return (

Viewing report: "{this.props.report.$.name}"

Session info

Global coverage

Details

); } render() { return this.props.report ? this._renderReport() : this._renderNone(); } } export default App;