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>
	<button onclick="refreshCustomData()">Refresh Custom DataSource</button>
</div>
<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: "any",
    },
    slice: {
      rows: [
        {
          uniqueName: "Color",
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      columns: [
        {
          uniqueName: "Country",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
          aggregation: "sum",
        },
      ],
    },
    options: {
      grid: {
        title: "Plano",
        showHeaders: false,
        type: "classic",
        showGrandTotals: "off",
        //grandTotalsPosition: "top",
        showHierarchies: false,
        showHierarchyCaptions: true,
        //tem que desligar o filtro, pois se o usuários filtrar multiplas posições, o motar de cálculo tem que conseguir calcular múltolas posições de uma só vez
        showFilter: false,
        //showTotals: "columns"
      },
      configuratorButton: false,
      showAggregationLabels: false,
      caseSensitiveMembers: true,
      drillThrough: false,
      showDrillThroughConfigurator: false,
      //fieldListPosition: "right",
      showEmptyValues: true,
      //defaultHierarchySortName: "unsorted",
      allowBrowsersCache: false,
    },
  },
})

function pivotEndpoint(request, successCallback, errorCallback) {
  request = JSON.parse(request)
  var result = null
  if (request.type == "handshake") {
  } else if (request.type == "fields") {
    result = getSchema(request.index)
  } else if (request.type == "members") {
    result = getMembers(request.index, request.field, request.page)
  } else if (request.type == "select") {
    result = getSelectResult(request.index, request.query, request.page)
  } else {
    errorCallback("Request type " + request.type + " is not implemented.")
  }
  successCallback(result)
}

function pivotEndpoint2(request,...