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"
        },
        {
...