Member properties in JSON

Mapping configuration

by Flexmonster Pivot Table

HTML

<script src="https://cdn.flexmonster.com/flexmonster.js"></script>

<p>Click a cell to output its product ID under the component.</p>

<div id="pivot-container"></div>

<div class="output" id="output">Output will appear here</div>

CSS

@import url(https://cdn.flexmonster.com/assets/jsfiddle-styles.css);

JavaScript

let pivot = new Flexmonster({
  container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  height: 340,
  toolbar: true,
  report: {
    dataSource: {
      data: getData(),
      mapping: {
        "ProductID": {
          type: "property",
          hierarchy: "Product"
        }
      }
    },
    slice: {
      rows: [
        { uniqueName: "Product" }
      ],
      columns: [
        { uniqueName: "[Measures]" }
      ],
      measures: [
        { uniqueName: "Price" }
      ]
    }
  },
  cellclick: function(cell) {
    if (cell.rows[0]) {
      showOutput(`Product: ${cell.rows[0].caption}, product ID: ${cell.rows[0].properties.ProductID}`);
    }
  }
});

let outputInitialized = false;

function showOutput(content) {
  var log = "[" + (new Date()).toLocaleTimeString('en-US') + "] " + content;
  var outputElement = document.getElementById("output");
  if (!outputInitialized) {
    outputElement.innerText = '';
    outputInitialized = true;
  }
  outputElement.innerText += log + "\n";
  outputElement.scrollTop = outputElement.scrollHeight;
}

function getData() {
  return [
    {
      "Product": "Banana cake",
      "ProductID": "0816",
      "Price": 24
    },
    {
      "Product": "Chocolate",
      "ProductID": "2626",
      "Price": 31
    },
    {
      "Product": "Chocolate",
      "ProductID": "2626",
      "Price": 56
    }
  ];
}