JSFiddle - React, Tailwind, and code Playground

by Flexmonster Pivot Table

HTML

<link rel="stylesheet" href="https://s3.amazonaws.com/flexmonster/2.3/demo.css">
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>

<input id="file" type="file" accept=".json"/>

<div id="pivotContainer"></div>

CSS

#file {
  margin: 10px;
}

JavaScript

var pivot = new Flexmonster({
  container: "pivotContainer",
  componentFolder: "https://cdn.flexmonster.com/",
  toolbar: true,
  report: {
    dataSource: {
      filename: "data/data.csv"
    }
  }
});

pivot.on('reportcomplete', () => {
	console.log(pivot.getReport());
});

(function() {
  function onChange(event) {
    var reader = new FileReader();
    if (event.target.files[0]) {
      reader.onload = onReaderLoad;
      reader.readAsText(event.target.files[0]);
    }
  }

  function onReaderLoad(event) {
    try {
      setReport(JSON.parse(event.target.result));
    } catch (e) {
      pivot.alert({
        title: "Error",
        message: "Invalid JSON",
        type: "error",
        buttons: [{
          label: "OK"
        }],
        blocking: false
      });
    }
  }
  document.getElementById('file').addEventListener('change', onChange);
}());

function setReport(report) {
  report.dataSource.requestHeaders = {
    key: 'value'
  }
  console.log(report);
  pivot.setReport(report);
}