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
let pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
toolbar: true,
report: {
dataSource: {
filename: "data/data.csv",
},
slice: {
rows: [{
uniqueName: "Color"
},
{
uniqueName: "Country"
},
],
columns: [{
uniqueName: "[Measures]"
}],
measures: [{
uniqueName: "Price",
aggregation: "sum"
},
{
uniqueName: "Formula #1",
formula: "sum(\"Price\") * 2",
caption: "Formula #1"
}
],
expands: {
rows: [{
tuple: [
"color.[green]"
]
}]
}
}
}
});
let type = "compact";
let flatSlice = {
rows: [{
uniqueName: "Color"
},
{
uniqueName: "Country"
},
],
measures: [{
uniqueName: "Price"
}]
};
let pivotSlice = {
rows: [{
uniqueName: "Color"
},
{
uniqueName: "Country"
},
],
columns: [{
uniqueName: "[Measures]"
}],
measures: [{
uniqueName: "Price",
aggregation: "sum"
},
{
uniqueName: "Formula #1",
formula: "sum(\"Price\") * 2",
caption: "Formula #1"
}
],
expands: {
rows: [{
tuple: [
"color.[green]"
]
}]
}
};
flexmonster.on("reportchange", () => {
if (type != flexmonster.getOptions().grid.type) {
if (flexmonster.getOptions().grid.type == "flat") {
type = "flat";
flexmonster.runQuery(flatSlice);
} else if (flexmonster.getOptions().grid.type == "compact") {
type = "compact";
flexmonster.runQuery(pivotSlice);
} else if (flexmonster.getOptions().grid.type == "classic") {
type = "classic";
flexmonster.runQuery(pivotSlice);
}
}
});