Integration with ApexCharts: Stacked column chart
Other charting libraries
by Flexmonster Pivot Table
HTML
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<div id="pivot-container"></div>
<div id="chart"></div>
CSS
@import url(https://cdn.flexmonster.com/assets/jsfiddle-styles.css);
#chart {
margin-top: 20px;
}
JavaScript
const pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
licenseFilePath: "https://cdn.flexmonster.com/jsfiddle.charts.key",
toolbar: true,
height: 350,
report: {
dataSource: {
filename: "data/data.json",
},
slice: {
rows: [
{
uniqueName: "Category",
filter: {
exclude: ["Cars"],
},
},
],
columns: [
{
uniqueName: "Country",
},
{
uniqueName: "[Measures]",
},
],
measures: [
{
uniqueName: "Price",
aggregation: "sum",
},
],
},
},
reportcomplete: function () {
pivot.off("reportcomplete");
pivot.getData({}, drawChart, updateChart);
},
});
// Preprocess the data from Flexmonster
function prepareDataFunction(rawData) {
const addCategory = (list, c) => {
if (!list.includes(c)) list.push(c);
return list;
};
const addSeries = (list, key, value) => {
let seriesItemIdx = list.findIndex((el, idx, arr) => el.name === key);
if (seriesItemIdx === -1) {
list.push({
name: key,
data: [value],
});
} else {
list[seriesItemIdx].data.push(value);
}
return list;
};
let data = {
series: [],
categories: [],
};
for (let element of rawData.data) {
if (element.c0 && element.r0) {
data.categories = addCategory(data.categories, element.c0);
data.series = addSeries(data.series, element.r0, element.v0);
}
}
return data;
}
// Store chart variable
let chart;
// Draw chart when the data is ready
function drawChart(rawData) {
let data = prepareDataFunction(rawData);
const options = {
series: data.series,
chart: {
type: "bar",
height: 400,
stacked: true,
toolbar: {
show: true,
...