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 pivot = new Flexmonster({
  container: "#pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  width: "100%",
  height: 550,
  toolbar: true,
  report: {
    dataSource: {
      type: "api",
      url: pivotEndpoint,
      index: "fm-product-sales",
      mapping: {
        Category: {
          hierarchy: "Item",
        },
        "Business Type": {
          hierarchy: "Item",
          parent: "Category",
        },
      },
    },
    slice: {
      rows: [
        {
          uniqueName: "Item",
        },
      ],
      columns: [
        {
          uniqueName: "[Measures]",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
          aggregation: "sum",
        },
      ],
      drills: {
        rows: [
          {
            tuple: ["item.[accessories]"],
          },
        ],
      },
    },
  },
});

function pivotEndpoint(requestStringified, successCallback, errorCallback) {
  let request = JSON.parse(requestStringified);
  var result = null;
  if (request.type == "handshake") {
    result = {
      version: "2.8.22",
    };
  } else if (request.type == "fields") {
    result = getFields();
  } else if (request.type == "members") {
    if (request.field.uniqueName == "Category") {
      result = getCategories();
    } else {
      result = getBusinessTypes();
    }
  } else if (request.type == "select") {
    console.log(request)
    if (request.querytype == "select") {
      result = getSelectResult();
    } else if (request.querytype == "drillDown") {
      result = getDrillDownResult();
    }
  }
  successCallback(result);
}

function getFields() {
  return {
    fields: [
      { uniqueName: "Price", type: "number" },
      { uniqueName: "Category", type: "string" },
      { uniqueName: "Business Type", type: "string" },
      { uniqueName: "Discount", type: "number" },
      { uniqueName: "Quantity", type:...