JSFiddle - React, Tailwind, and code Playground

Customizing the context menu

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/",
  width: "100%",
  height: 700,
  toolbar: true,
  customizeContextMenu: customizeContextMenuFunction,
  report: {
    dataSource: {
      filename: "data/data.csv",
    },
    slice: {
      rows: [
        {
          uniqueName: "Category",
          filter: {
            exclude: ["category.[cars]"],
          },
        },
      ],
      columns: [
        {
          uniqueName: "[Measures]",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
          aggregation: "sum",
        },
        {
          uniqueName: "Price",
          aggregation: "min",
        },
        {
          uniqueName: "Price",
          aggregation: "max",
        },
      ],
    },
  },
})

function customizeContextMenuFunction(items, data, viewType) {
  if (data.measure) {
    items.push({
      label: "Remove other measures",
      handler: function () {
        removeOtherMeasures(data.measure.uniqueName, data.measure.aggregation)
      },
    })
  }
  return items
}

function removeOtherMeasures(measureName, measureAggregation) {
  let slice = flexmonster.getReport().slice
  slice.measures = slice.measures.filter(
    (measure) =>
      measure.uniqueName === measureName &&
      measure.aggregation === measureAggregation,
  )
  pivot.runQuery(slice)
}