Flexmonster - Custom cells

Demos

by Flexmonster Pivot Table

HTML

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

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

CSS

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

img.centered {
  display: block !important;
  margin: auto !important;
  color: transparent !important;
}

#fm-pivot-view .fm-grid-row {
  min-height: 47px;
}

JavaScript

const pivot = new Flexmonster({
  container: "#pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  height: 600,
  report: {
    dataSource: {
      type: "csv",
      filename: "data/data.csv",
    },
    slice: {
      rows: [
        {
          uniqueName: "Country",
        },
        {
          uniqueName: "Business Type",
        },
      ],
      columns: [
        {
          uniqueName: "Color",
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      measures: [
        {
          uniqueName: "Quantity",
          aggregation: "percentofcolumn",
        },
      ],
      expands: {
        expandAll: true,
      },
    },
    formats: [
      {
        decimalPlaces: 2,
      },
    ],
  },
  customizeCell: customizeCellFunction,
});

function customizeCellFunction(cell, data) {
  if (data && data.type === "value" && !data.isDrillThrough) {
    if (data.value < 5) {
      cell.text = `<img src="https://cdn.flexmonster.com/i/empty_pie.svg" class="centered">`;
    } else if (data.value >= 5 && data.value < 10) {
      cell.text = `<img src="https://cdn.flexmonster.com/i/quarter_pie.svg" class="centered">`;
    } else if (data.value >= 10 && data.value < 25) {
      cell.text = `<img src="https://cdn.flexmonster.com/i/half_pie.svg" class="centered">`;
    } else if (data.value >= 25 && data.value < 50) {
      cell.text = `<img src="https://cdn.flexmonster.com/i/three_quarters_pie.svg" class="centered">`;
    } else if (data.value >= 50) {
      cell.text = `<img src="https://cdn.flexmonster.com/i/full_pie.svg" class="centered">`;
    }
  }
}