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>

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

JavaScript

var pivot = new Flexmonster({
  container: "pivotContainer",
  componentFolder: "https://cdn.flexmonster.com/",
  toolbar: true,
  report: {
    dataSource: {
      data: getData(),
      mapping: {
        ARTICLE_CODE: {
          type: "string",
          caption: "Atrticle"
        },
        ARTICLE_NAME: {
          type: "property",
          hierarchy: "ARTICLE_CODE"
        },
        ARTICLE_PRICE: {
          type: "number"
        },
        ARTICLE_DISCOUNT: {
          type: "number"
        }
      }
    },
    "slice": {
      "rows": [{
        "uniqueName": "ARTICLE_CODE"
      }],
      "columns": [{
        "uniqueName": "[Measures]"
      }],
      "measures": [{
          "uniqueName": "ARTICLE_PRICE",
          "aggregation": "sum"
        },
        {
          "uniqueName": "ARTICLE_DISCOUNT",
          "aggregation": "sum"
        }
      ]
    }
  }
});

flexmonster.customizeCell((cell, data) => {
	if(data.hierarchy && data.hierarchy.uniqueName == "ARTICLE_CODE" && data.type == "header")
  	cell.text += ` - ${data.member.properties['ARTICLE_NAME']}`
})

function getData() {
  return [{
      "ARTICLE_CODE": 543,
      "ARTICLE_NAME": "Scooter",
      "ARTICLE_PRICE": 7189,
      "ARTICLE_DISCOUNT": 49
    },
    {
      "ARTICLE_CODE": 951,
      "ARTICLE_NAME": "Bike",
      "ARTICLE_PRICE": 1432,
      "ARTICLE_DISCOUNT": 20
    },
    {
      "ARTICLE_CODE": 535,
      "ARTICLE_NAME": "Toy",
      "ARTICLE_PRICE": 7622,
      "ARTICLE_DISCOUNT": 11
    },
    {
      "ARTICLE_CODE": 343,
      "ARTICLE_NAME": "Keyboard",
      "ARTICLE_PRICE": 2329,
      "ARTICLE_DISCOUNT": 57
    },
    {
      "ARTICLE_CODE": 595,
      "ARTICLE_NAME": "Cup",
      "ARTICLE_PRICE": 2799,
      "ARTICLE_DISCOUNT": 22
    }
  ]
}