Pie chart

Integration with amCharts 5

by Flexmonster Pivot Table

HTML

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

<script src="https://cdn.amcharts.com/lib/5/index.js"></script>
<script src="https://cdn.amcharts.com/lib/5/percent.js"></script>

<div id="pivotContainer">The component will appear here</div>

<div id="chartContainer"></div>

CSS

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

#chartContainer {
  height: 350px;
}

JavaScript

const pivot = new Flexmonster({
  container: "pivotContainer",
  componentFolder: "https://cdn.flexmonster.com/",
  licenseFilePath: "https://cdn.flexmonster.com/jsfiddle.charts.key",
  height: 330,
  report: {
    dataSource: {
      filename: "data/data.csv"
    },
    slice: {
      rows: [
        {
          uniqueName: "Country"
        }
      ],
      columns: [
        {
          uniqueName: "Color"
        },
        {
          uniqueName: "[Measures]"
        }
      ],
      measures: [
        {
          uniqueName: "Price"
        }
      ]
    },
  },
  reportcomplete: function() {
    pivot.off("reportcomplete");
    createChart();
  }
});

// Create and initialize the root element
const root = am5.Root.new("chartContainer");

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

function drawChart(chartConfig, rawData) {
  // Create the chart
  let chart = root.container.children.push(
    am5percent.PieChart.new(root, {})
  );

  // Create and configure pie series
  let series = chart.series.push(
    am5percent.PieSeries.new(root, {
      valueField: pivot.amcharts.getMeasureNameByIndex(rawData, 0),
      categoryField: pivot.amcharts.getCategoryName(rawData),
    })
  );
  series.slices.template.setAll({
    stroke: am5.color("#fff"),
    strokeWidth: 2,
  });
  series.labels.template.setAll({
    fontSize: 15
  });

  // Fill the chart with the data from Flexmonster
  series.data.setAll(chartConfig.data);
}

function updateChart(chartConfig, rawData) {
  root.container.children.clear();
  drawChart(chartConfig, rawData);
}