Flexmonster - Shared filter for multiple reports
by Ian Sadovy
HTML
<script src="https://s3.amazonaws.com/flexmonster/2.2/flexmonster.js"></script>
<div id="pivot-content-1"></div><br>
<div id="pivot-content-2"></div>
JavaScript
var p1 = flexmonster.embedPivotComponent("https://s3.amazonaws.com/flexmonster/2.2/", "pivot-content-1", "100%", "300", {
licenseKey: "Z53G-1T1WC3-1V1M-0L12-2M0A-1233-1I0Y-2Y2Q-1903-322S-0T2C-1I",
configuratorActive: false,
data: getData(),
jsPivotUpdateHandler: syncFilters,
pages: [{ uniqueName: "city"}],
rows: [{uniqueName: "Color"}],
columns: [{uniqueName: "[Measures]"}],
measures: [{uniqueName: "Price"}]
});
var p2 = flexmonster.embedPivotComponent("https://s3.amazonaws.com/flexmonster/2.2/", "pivot-content-2", "100%", "300", {
licenseKey: "Z53G-1T1WC3-1V1M-0L12-2M0A-1233-1I0Y-2Y2Q-1903-322S-0T2C-1I",
configuratorActive: false,
data: getData(),
pages: [{ uniqueName: "city"}],
rows: [{uniqueName: "Color"}],
columns: [{uniqueName: "[Measures]"}],
measures: [{uniqueName: "Quantity"}]
});
function syncFilters() {
// set same filter hierarchies from p1 to p2
var pages = p1.getPages();
var slice = {
pages: pages,
rows: p2.getRows(),
columns: p2.getColumns(),
measures: p2.getMeasures()
}
p2.runQuery(slice);
// apply filters from p1 to p2
pages.forEach(function(item){
p2.setFilter(item.uniqueName, p1.getFilter(item.uniqueName));
});
}
function getData() {
return [{
"Color": "green",
"M": "September",
"W": "Wed",
"country": "Canada",
"state": "Ontario",
"city": "Toronto",
"Price": 174,
"Quantity": 22
}, {
"Color": "red",
"M": "March",
"W": "Mon",
"Time": "1000",
"country": "USA",
"state": "California",
"city": "Los Angeles",
"Price": 1664,
"Quantity": 19
}, {
"Color": "red",
"M": "January",
"W": "Mon",
"country": "Canada",
"state": "Quebec",
"city": "Montreal",
"Price": 1190,
"Quantity": 292
}, {
"Color": "green",
"D": "04/08/2014",
"M": "August",
"W": "Fri",
"Time": "1000",
"country": "USA",
"state": "California",
"city": "Los Angeles",
"Price": 1222,
...