JSFiddle - React, Tailwind, and code Playground

by Flexmonster Pivot Table

HTML

<script src="https://cdn.flexmonster.com/flexmonster.js"></script>

<div id="pivot-container"></div>

JavaScript

var colorScheme = [
  "#F8746D",
  "#FA9172",
  "#FBAE78",
  "#FDD17F",
  "#F7E683",
  "#DBE081",
  "#C3D980",
  "#9FCF7E",
  "#7DC57C",
  "#68BF7B",
];

var minValue = 0;
var maxValue = 15000;

function customizeCellFunction(cell, data) {
  if (data && data.type == "value" && !data.isTotal) {
    cell.style["background-color"] = getColorFromRange(data.value);
  }
}

function getColorFromRange(value) {
  if (isNaN(value)) {
    value = minValue;
  }
  value = Math.max(minValue, Math.min(value, maxValue));
  var perc = (minValue + value) / maxValue;
  var colorIdx = Math.round((colorScheme.length - 1) * perc);
  return colorScheme[colorIdx];
}

var pivot = new Flexmonster({
  container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  width: "100%",
  height: 600,
  toolbar: true,
  customizeCell: customizeCellFunction,
  report: {
    dataSource: {
      filename: "data/sales.csv",
    },
    slice: {
      drills: {
        columns: [
          {
            tuple: ["category.[bakery]"],
          },
        ],
      },

      rows: [
        {
          uniqueName: "Month",
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      columns: [
        {
          uniqueName: "Category",
          levelName: "Product Name",
          filter: {
            members: [
              "category.[condiments].[bbq sauce]",
              "category.[breakfast cereals].[corn flakes]",
              "category.[confectionery]",
              "category.[bakery].[chocolate biscuits]",
              "category.[fruit preserves].[apple jam]",
              "category.[bakery].[apple cake]",
              "category.[soups].[tomato soup]",
            ],
          },
        },
      ],
      measures: [
        {
          uniqueName: "Revenue",
          aggregation: "sum",
        },
      ],
    },
    formats: [
      {
        name: "",
       ...