JSFiddle - React, Tailwind, and code Playground
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="pivotContainer"></div>
CSS
.link {
text-decoration: underline !important;
cursor: pointer;
color: #726b04 !important;
}
JavaScript
var pivot = new Flexmonster({
container: "pivotContainer",
componentFolder: "https://cdn.flexmonster.com/",
toolbar: true,
report: {
dataSource: {
data: getData(),
mapping: {
Country: {
type: "string"
},
CountryId: {
type: "id",
hierarchy: "Country"
},
Year: {
type: "string"
},
Cases: {
type: "number"
}
}
},
"slice": {
"rows": [{
"uniqueName": "Country"
}],
"columns": [{
"uniqueName": "Year"
},
{
"uniqueName": "[Measures]"
}
],
"measures": [{
"uniqueName": "Cases",
"aggregation": "sum"
}]
}
}
});
let urlList = {
"USA": "https://en.wikipedia.org/wiki/United_States",
"Canada": "https://en.wikipedia.org/wiki/Canada",
"Mexico": "https://en.wikipedia.org/wiki/Mexico"
}
flexmonster.customizeCell((cell, data) => {
if (data.hierarchy && data.hierarchy.uniqueName == "Country" && data.member) {
let wrapper = document.createElement('div');
wrapper.innerHTML = cell.text;
var parts = cell.text.split(wrapper.innerText);
if (parts.length == 2)
cell.text = `${parts[0]}<a href="${urlList[data.member.caption]}" class='link' onclick='preventExpand(event)'>${wrapper.innerText}</a>${parts[1]}`;
else cell.text = `<a href="${urlList[data.member.caption]}" class='link' onclick='preventExpand(event)'>${wrapper.innerText}</a>`;
console.log(data.recordId);
} else if (data.isDrillThrough && data.type != "header" && data.hierarchy && data.hierarchy.uniqueName == "Country") {
cell.style['z-index'] = 1;
cell.text = `<a href="${urlList[data.label]}" class='link' onclick='preventExpand(event)'>${data.label}</a>`;
console.log(data);
}
});
function preventExpand(e) {
e.stopImmediatePropagation();
}
function getData() {
return [{
"Country": "Mexico",
"CountryId": 1,
...