Highlighting cells based on its semantic - member, hierarchy, measure

Customizing the grid

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);

#fm-pivot-view .fm-grid-view div.fm-cell[hierarchy-r-0="Country"][member-r-0="Canada"] {
  background-color: #E1E1E1;
}

#fm-pivot-view .fm-grid-view div.fm-cell[measure="Price"],
#fm-pivot-view .fm-grid-view div.fm-cell.fm-header[measure="Price"] {
  color: #C00000;
}

JavaScript

const pivot = new Flexmonster({
  container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  toolbar: true,
  customizeCell: customizeCellFunction,
  report: {
    dataSource: {
      filename: "data/data.json",
    },
    slice: {
      rows: [
        {
          uniqueName: "Country",
        },
        {
          uniqueName: "Business Type",
        },
        {
          uniqueName: "Category",
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      columns: [
        {
          uniqueName: "Color",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
        },
        {
          uniqueName: "Quantity",
        },
        {
          uniqueName: "Discount",
        },
      ],
    },
  },
});

function customizeCellFunction(cell, data) {
  if (data.measure) {
    cell.attr.measure = data.measure.name;
  }

  if (data.rows) {
    for (var i = 0; i < data.rows.length; i++) {
      cell.attr["hierarchy-r-" + i] = data.rows[i]["hierarchyCaption"];
      cell.attr["member-r-" + i] = data.rows[i]["caption"];
    }
  }

  if (data.columns) {
    for (var i = 0; i < data.columns.length; i++) {
      cell.attr["hierarchy-c-" + i] = data.columns[i].hierarchyCaption;
      cell.attr["member-c-" + i] = data.columns[i].caption;
    }
  }
}