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="pivot-container"></div>

JavaScript

let pivot = new Flexmonster({
  container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  height: 400,
  report: {
    dataSource: {
      type: "api",
      url: pivotEndpoint,
      index: "fm-product-sales",
    },
    slice: {
      rows: [
        {
          uniqueName: "Color",
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      columns: [
        {
          uniqueName: "Country",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
          aggregation: "sum",
        },
      ],
    },
  },
})

//Replace with your server URL
let API_BASE_URL = "https://olap.flexmonster.com:9500"

function pivotEndpoint(request, successCallback, errorCallback) {
  request = JSON.parse(request)

  let response = fetch(`${API_BASE_URL}/${request.type}`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(request),
  })
    .then((response) => {
      if (!response.ok) {
        errorCallback(response)
      }
      return response.json()
    })
    .then((result) => {
      successCallback(result)
    })
    .catch((error) => {
      errorCallback(error)
    })
}