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: {
Year: {
preloadMemberCaptions: true,
},
Month: {
preloadMemberCaptions: true,
},
},
},
slice: {
rows: [
{
uniqueName: "Calendario",
},
],
columns: [
{
uniqueName: "[Measures]",
},
],
measures: [
{
uniqueName: "Price",
aggregation: "sum",
},
],
drills: {
rows: [
{
tuple: ["calendario.[202400]"],
},
],
},
},
},
});
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 == "Month") {
result = getMonths();
} else if (request.field.uniqueName == "Year") {
result = getYears();
}
} 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: "Year",
type: "string",
hierarchy: "Calendario",
aggregations: ["none"],
// preloadMemberCaptions: true,
caption:...