Line 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/xy.js"></script>
<script src="https://cdn.amcharts.com/lib/5/themes/Animated.js"></script>
<script src="https://cdn.amcharts.com/lib/5/themes/Kelly.js"></script>

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

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

CSS

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

#amcharts-container {
  margin: 20px 0 20px 0;
  height: 400px;
  font-size: 15px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}

JavaScript

let pivot = new Flexmonster({
  container: "pivotContainer",
  componentFolder: "https://cdn.flexmonster.com/",
  licenseFilePath: "https://cdn.flexmonster.com/jsfiddle.charts.key",
  toolbar: true,
  height: 400,
  report: {
    dataSource: {
      filename: "data/data.csv",
    },
    slice: {
      rows: [
        {
          uniqueName: "Country",
          filter: {
            exclude: ["country.[united kingdom]"],
          },
        },
      ],
      columns: [
        {
          uniqueName: "Business Type",
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
        },
      ],
    },
  },
  reportcomplete: function () {
    pivot.off("reportcomplete");
    createChart();
  },
});

let chart;
let root;

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

function drawChart(chartConfig, rawData) {
  root = am5.Root.new("amcharts-container");
  const data = chartConfig.data;

  root.setThemes([am5themes_Animated.new(root), am5themes_Kelly.new(root)]);
  root.numberFormatter.set(
    "numberFormat",
    pivot.amcharts.getNumberFormatPattern(rawData.meta.formats[0]),
  );

  const chart = root.container.children.push(
    am5xy.XYChart.new(root, { layout: root.verticalLayout }),
  );

  const yAxis = chart.yAxes.push(
    am5xy.ValueAxis.new(root, {
      renderer: am5xy.AxisRendererY.new(root, {}),
    }),
  );

  const xRenderer = am5xy.AxisRendererX.new(root, {
    cellStartLocation: 0.6,
    cellEndLocation: 0.9,
    cursorTooltipEnabled: true,
    minGridDistance: 20,
  });

  const xAxis = chart.xAxes.push(
    am5xy.CategoryAxis.new(root, {
      categoryField: pivot.amcharts.getCategoryName(rawData),
      renderer: xRenderer,
      tooltip: am5.Tooltip.new(root, {}),
    }),
  );

  xAxis.data.setAll(data);

  const series = chart.series.push(
   ...