JSFiddle - React, Tailwind, and code Playground

Slice configuration

by Flexmonster Pivot Table

HTML

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

<div id="filtersArea">
<label for="topN">Top N Contries by Value:</label>
    <select id="topN">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3" selected>3</option>
      <option value="4">4</option>
      <option value="5">5</option>
    </select>
    <button onclick="applyTopN()">Apply</button>
</div>

<div class="pivot-wrapper">
  <div id="pivot-container1"></div>
  <div id="pivot-container2"></div>
</div>

CSS

#filtersArea {
  padding: 5px 7px;
  border: 1px solid #e5e5e5;
}

#filtersArea button {
  padding: 7px 15px 7px 10px;
  border: none;
  color: #111;
  background-color: #e9e9e9;
  font-size: 12px;
  font-family: Arial, sans-serif;
  font-weight: bold;
  margin: 5px;
}

#filtersArea button:hover {
  background-color: #dcdcdc;
  color: #111;
}

.pivot-wrapper {
  display: flex;
}

JavaScript

let pivot1 = new Flexmonster({
  container: "pivot-container1",
  componentFolder: "https://cdn.flexmonster.com/",
  report: {
    dataSource: {
      type: "api",
      url: "https://olap.flexmonster.com:9500",
      index: "fm-product-sales",
    },
    options: {
      grid: {
        showReportFiltersArea: false,
        showFilter: false,
      },
    },
    slice: {
      reportFilters: [
        {
          uniqueName: "Business Type",
          filter: {
            members: ["business type.[specialty bike shop]"],
          },
        },
      ],
      rows: [
        {
          uniqueName: "Country",
          filter: {
            measure: {
              uniqueName: "Price",
              aggregation: "sum"
            },
            query: {
              top: 3
            }
          }
        },
        {
          uniqueName: "Category",
        },
        {
          uniqueName: "Color",
        },
      ],
      columns: [
        {
          uniqueName: "[Measures]",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
          aggregation: "sum",
        },
      ],
      expands: {
        expandAll: true,
      },
    },
  },
  reportchange: () => {
    //Define which filters are common for two tables
    interpolateFilter(["Business Type"], pivot1, pivot2)
  },
  reportcomplete: () => {
    showFilters("Business Type")
  },
})

let pivot2 = new Flexmonster({
  container: "pivot-container2",
  componentFolder: "https://cdn.flexmonster.com/",
  report: {
    dataSource: {
      filename: "data/data.csv",
    },
    options: {
      grid: {
        showReportFiltersArea: false,
        showFilter: false,
      },
    },
    slice: {
      reportFilters: [
        {
          uniqueName: "Business Type",
          filter: {
            members: ["business type.[specialty bike shop]"],
          },
        },
      ],
     ...