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">`;
}
}
}