Data Server Date Formatting
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/",
height: 400,
report: {
"dataSource": {
"type": "api",
"url": pivotEndpoint,
"index": "any"
},
"mapping": {
"year": {
caption: 'Year',
hierarchy: 'Date',
//type: "string"
type: "number"
},
"month": {
type: 'month',
caption: 'Month',
hierarchy: 'Date',
parent: 'year'
}
},
"slice": {
"rows": [{
"uniqueName": "Date"
}],
"columns": [{
"uniqueName": "[Measures]"
}],
"measures": [{
"uniqueName": "price",
"aggregation": "sum"
}]
},
}
});
function pivotEndpoint(request, successCallback, errorCallback) {
request = JSON.parse(request);
var result = null;
if (request.type == "handshake") {} else if (request.type == "fields") {
result = getSchema(request.index);
} else if (request.type == "members") {
result = getMembers(request.index, request.field, request.page);
} else if (request.type == "select") {
result = getSelectResult(request.index, request.query, request.page);
} else {
errorCallback("Request type " + request.type + " is not implemented.");
}
successCallback(result);
}
function getSchema(index) {
return {
"fields": [{
"uniqueName": "year",
"type": "number"
},
{
"uniqueName": "month",
"type": "month"
},
{
"uniqueName": "price",
"type": "number",
"caption": "Price",
"aggregations": ["sum"]
}
],
"filters": {
"advanced": true,
"any": {
"members": true,
"query": true
}
}
};
}
function getMembers(index, field, page) {
if (field.uniqueName == "year") {
return {
"members": [{
"value": "2021"
},
{
"value": "2017"
},
{
...