").attr("id", mainDOMId)
//.addClass((reportOptions.isClickable) ? "clickable" : "")
)
.append(
$("
").attr("id", breakdownDOMId)
);
initSvg(mainDOMId);
$("#filter").click(function() {
generateCharts();
});
generateCharts();
}
function generateCharts() {
chartsData = [];
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = config.headerOptions[headerAndFilters.headerType].getParamValues();
if (!pValues)
return;
if (reportOptions.multipleRequests) {
var endpointsArray = reportOptions.multipleRequests(pValues);
var req = new ReportRequest(null, "json", null, config.restHost + config.reportsQueryAsync);
req.sendMultipleAsyncRequest(endpointsArray, drawCharts);
}
else {
if (reportOptions.hasExtraRestParams) {
$.each(reportOptions.hasExtraRestParams, function(i, paramObj) {
var value;
if (typeof paramObj.value === "function") {
value = paramObj.value();
}
else
value = paramObj.value;
pValues.Pairs[paramObj.key] = value;
});
}
var req = new ReportRequest(config.restHost + reportOptions.restEndpoint,
"json",
config.restHost + reportOptions.restEndpointAsync + pValues.ForceUrlSuffix,
config.restHost + config.reportsQueryAsync);
req.sendSingleAsyncRequest(pValues, drawCharts);
}
} //end of generateCharts()
function cleanCharts() {
cleanGraph(mainDOMId);
cleanDetailedChart();
}
function cleanDetailedChart() {
cleanGraph(breakdownDOMId);
lastSliceClicked = null;
}
function drawCharts(data) {
//cleanDetailedChart();
//$("#detailed-piechart").hide("fade", {}, "normal");
// If a processFunction function is specified
if (data) {
if (reportOptions.processFunction)
chartsData = reportOptions.processFunction(data);
else
chartsData = data;
}
var graphOptions = reportOptions.main;
var datum = [{
key: graphOptions.getPieLabel(chartsData),
values: graphOptions.getValuesArray(chartsData),
metadata: graphOptions.getMetadata(chartsData),
}];
var clickFunction = (reportOptions.isClickable) ?
(function(event) {
lastSliceClicked = event.label;
event.point["label"] = event.label;
drawDetailedChart(event.point);
})
: null;
NVGraphs.drawPiechart(datum, mainDOMId, graphOptions, clickFunction);
if (!reportOptions.isClickable)
drawDetailedChart(chartsData);
if (lastSliceClicked) {
var availableLabels = datum[0].values.map(function(d) { return graphOptions.getName(d); });
var searchIndex = availableLabels.indexOf(lastSliceClicked);
if (searchIndex != -1) {
drawDetailedChart(datum[0].values[searchIndex]);
}
else {
// clean it cause the previous selected item is not available
cleanDetailedChart();
}
}
}
function drawDetailedChart(selectedObject) {
// Construct the chart data in a format that nvd3 understands
var graphOptions = reportOptions.breakdown;
var detailedObject = graphOptions.getObject(selectedObject);
// This will add the svg on the first time
if ($("#" + breakdownDOMId).find("#" + graphOptions.elementId).size() == 0) {
$("#" + breakdownDOMId)
.append(
$("
")
.attr("id", graphOptions.elementId)
);
initSvg(graphOptions.elementId);
}
//NVGraphs.drawPiechart(datum, breakdownItemDOMId, graphOptions);
LineGraphs.draw(detailedObject, graphOptions, graphOptions.elementId, breakdownDOMId);
}