Flexmonster - Heat map
Demos
by Flexmonster Pivot Table
HTML
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tinycolor/1.4.1/tinycolor.min.js"></script>
<div id="pivot-container"></div>
CSS
@import url(https://cdn.flexmonster.com/assets/jsfiddle-styles.css);
JavaScript
const pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
height: 600,
report: {
dataSource: {
type: "csv",
filename: "data/sales.csv",
},
slice: {
rows: [
{
uniqueName: "Month",
},
{
uniqueName: "[Measures]",
},
],
columns: [
{
uniqueName: "Category",
levelName: "Product Name",
filter: {
members: [
"category.[condiments].[bbq sauce]",
"category.[breakfast cereals].[corn flakes]",
"category.[confectionery]",
"category.[bakery].[chocolate biscuits]",
"category.[fruit preserves].[apple jam]",
"category.[bakery].[apple cake]",
"category.[soups].[tomato soup]",
],
},
},
],
measures: [
{
uniqueName: "Revenue",
aggregation: "sum",
format: "currency",
},
],
},
formats: [
{
name: "",
thousandsSeparator: ",",
decimalSeparator: ".",
decimalPlaces: 2,
},
{
name: "currency",
currencySymbol: "$",
},
],
},
customizeCell: customizeCellFunction,
});
const colorScheme = [
"#DF3800",
"#FF6D1E",
"#FF9900",
"#FFB600",
"#A5CE31",
"#6CBD05",
"#00A45A",
];
const minValue = 0;
const maxValue = 15000;
function customizeCellFunction(cell, data) {
if (data && data.type === "value" && !data.isGrandTotal) {
let backgroundColor = getColorFromRange(data.value);
let textShadowColor = tinycolor(backgroundColor).darken(15).toString();
let borderColor = tinycolor(backgroundColor).darken(3).toString();
cell.style = {
...cell.style,
"background-color": backgroundColor,
"color": "white",
...