JSFiddle - React, Tailwind, and code Playground
by Flexmonster Pivot Table
HTML
<link rel="stylesheet" href="https://s3.amazonaws.com/flexmonster/2.3/demo.css">
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>
<div id="pivot-container"></div>
CSS
#fm-pivot-view .fm-grid-view div.fm-cell[hierarchy-r-0="Country"][member-r-0="Canada"] {
background-color: #CCCCCC;
}
#fm-pivot-view .fm-grid-view div.fm-cell[measure="Price"],
#fm-pivot-view .fm-grid-view div.fm-cell.fm-header[measure="Price"] {
background-color: #B2DBBF;
}
JavaScript
let pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
toolbar: true,
customizeCell: customizeCellFunction,
report: {
dataSource: {
"filename": "data/retail-data.json",
mapping: {
"Country": {
hierarchy: "Hierarchy"
},
"City": {
hierarchy: "Hierarchy",
parent: "Country"
},
"Product Code": {
hierarchy: "Hierarchy",
parent: "City"
}
}
},
options: {
showAggregationLabels: false,
},
slice: {
rows: [{
uniqueName: "Hierarchy"
}],
columns: [{
uniqueName: "[Measures]"
}],
measures: [{
uniqueName: "Price",
aggregation: "sum"
}, {
uniqueName: "Quantity",
aggregation: "sum"
}, {
uniqueName: "Contact Last Name",
caption: "Unique customers"
}]
}
}
});
function customizeCellFunction(cell, data) {
if (data.type == 'value' && data.isTotal && data.hierarchy && data.hierarchy.uniqueName == 'Contact Last Name') {
cell.text = '';
}
if (data.type == 'value' && data.rows && data.hierarchy && data.hierarchy.uniqueName == 'Contact Last Name') {
console.log(data)
if (data.rows.length !== 1 ||
data.rows[0].hierarchyName != 'Hierarchy' ||
(pivot.getReport().slice.rows[0].levelName && pivot.getReport().slice.rows[0].levelName!=='Country')) {
cell.text = '';
}
}
}