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>
CSS
/* #pivot-container .fm-scroll-pane{
overflow: hidden !important;
} */
JavaScript
let preFilterScrollState;
let pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
width: "100%",
toolbar: true,
height: 430,
filteropen: (params) => {
preFilterScrollState = document.querySelector("#pivot-container .fm-scroll-pane").scrollLeft;
},
filterclose: () => {
setTimeout(() => {
document.querySelector("#pivot-container .fm-scroll-pane").scroll({
left: preFilterScrollState
})
}, 50)
},
report: {
dataSource: {
"type": "api",
"url": "https://olap.flexmonster.com:9500",
"index": "fm-product-sales"
},
options: {
grid: {
type: "flat"
}
},
slice: {
"rows": [{
"uniqueName": "Category"
},
{
"uniqueName": "Size"
},
{
"uniqueName": "Color"
},
{
"uniqueName": "Destination"
},
{
"uniqueName": "Business Type"
},
{
"uniqueName": "Country"
}
],
"columns": [{
"uniqueName": "[Measures]"
}],
"measures": [{
"uniqueName": "Price",
"aggregation": "sum"
},
{
"uniqueName": "Quantity",
"aggregation": "sum"
},
{
"uniqueName": "Discount",
"aggregation": "sum"
}
],
"flatOrder": [
"Category",
"Size",
"Color",
"Destination",
"Business Type",
"Country",
"Price",
"Quantity",
"Discount"
]
}
}
});