Integration with ECharts

Other charting libraries

by Flexmonster Pivot Table

HTML

<script src="https://cdn.flexmonster.com/flexmonster.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.0.4/echarts.min.js"></script>

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

CSS

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

#chart-container {
  height: 400px;
  width: 100%;
}

JavaScript

let pivot = new Flexmonster({
  container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  licenseFilePath: "https://cdn.flexmonster.com/jsfiddle.charts.key",
  report: {
    dataSource: {
      dataSourceType: "csv",
      filename: "data/data.csv",
    },
    slice: {
      rows: [
        {
          uniqueName: "Category",
          filter: {
            exclude: ["Cars"],
          },
        },
      ],
      measures: [
        {
          uniqueName: "Price",
          aggregation: "sum",
        },
      ],
    },
    options: {
      grid: {
        showHeaders: false,
      },
    },
  },
  height: 300,
  toolbar: true,
  reportcomplete: function () {
    pivot.off("reportcomplete");
    createChart();
  },
});

function createChart() {
  pivot.getData({}, drawChart, updateChart);
}

function prepareDataFunction(rawData) {
  let data = [];
  for (let i = 0; i < rawData.data.length; i++) {
    let record = rawData.data[i];
    if (record.r0 == undefined || record.v0 == undefined) continue; //taking only facts for this sample
    let _record = {
      member: record.r0,
      value: !isNaN(record.v0) ? record.v0 : 0,
    };
    data.push(_record);
  }
  return data;
}

function drawChart(rawData) {
  // based on prepared DOM, initialize echarts instance
  let myChart = echarts.init(document.getElementById("chart-container"));
  let data = prepareDataFunction(rawData);
  // specify chart configuration item and data
  let option = {
    tooltip: {},
    xAxis: {
      data: data.map(function (d) {
        return d.member;
      }),
      axisLabel: {
        fontSize: 15,
      },
    },
    yAxis: {
      axisLabel: {
        fontSize: 14,
      },
    },
    series: [
      {
        name: "Category",
        type: "bar",
        data: data.map(function (d) {
          return d.value;
        }),
      },
    ],
  };
  // use configuration item...