Flexmonster - Pivot charts

Demos

by Flexmonster Pivot Table

HTML

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

<button onclick="showGrid()">Grid</button>
<button onclick="switchChart('column')">Column</button>
<button onclick="switchChart('bar_h')">Bar</button>
<button onclick="switchChart('line')">Line</button>
<button onclick="switchChart('scatter')">Scatter</button>
<button onclick="switchChart('pie')">Pie</button>
<button onclick="switchChart('column_line')">Combo</button>
<button onclick="switchChart('stacked_column')">Stacked</button>

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

CSS

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

#fm-pivot-view .fm-chart .fm-circle {
  r: 8;
}

/* Chart style  */
.fm-charts-color-1 {
  fill: rgb(0, 164, 90) !important;
}

.fm-charts-color-2 {
  fill: rgb(223, 56, 0) !important;
}

.fm-charts-color-3 {
  fill: rgb(255, 184, 0) !important;
}

.fm-charts-color-4 {
  fill: rgb(109, 59, 216) !important;
}

.fm-charts-color-5 {
  fill: rgb(0, 117, 255) !important;
}

#fm-pivot-view .fm-bar,
#fm-pivot-view .fm-charts-view .fm-chart-legend ul li .fm-icon-display,
#fm-pivot-view .fm-line,
#fm-pivot-view .fm-arc path,
#fm-pivot-view .fm-bar-stack,
#fm-pivot-view .fm-scatter-point {
  opacity: 70% !important;
}

#fm-yAxis-label,
#fm-xAxis > text,
#fm-yAxis > text {
  display: none;
}

JavaScript

const pivot = new Flexmonster({
  container: "#pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  report: {
    dataSource: {
      type: "json",
      filename: "data/demos/pivot-charts-demo-data.json",
    },
    options: {
      viewType: "charts",
      chart: {
        type: "column",
      },
    },
    slice: {
      rows: [
        {
          uniqueName: "Order Date.Month",
        },
      ],
      columns: [
        {
          uniqueName: "City",
          filter: {
            measure: {
              uniqueName: "Orders",
              aggregation: "sum",
            },
            query: {
              top: 5,
            },
          },
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      measures: [
        {
          uniqueName: "Orders",
          aggregation: "sum",
        },
      ],
    },
    formats: [
      {
        name: "",
        thousandsSeparator: ",",
        decimalSeparator: ".",
        decimalPlaces: 0,
      },
    ],
  },
});

function switchChart(type) {
  const pivotReport = pivot.getReport();

  pivotReport.options = {
    viewType: "charts",
    chart: {
      type: type,
    },
  };

  switch (type) {
    case "column":
      pivotReport.slice = {
        rows: [
          {
            uniqueName: "Order Date.Month",
          },
        ],
        columns: [
          {
            uniqueName: "City",
            filter: {
              measure: {
                uniqueName: "Orders",
                aggregation: "sum",
              },
              query: {
                top: 5,
              },
            },
          },
          {
            uniqueName: "[Measures]",
          },
        ],
        measures: [
          {
            uniqueName: "Orders",
            aggregation: "sum",
          },
        ],
      };
      break;
    case "bar_h":
     ...