// set true for disabled filter var headerAndFilters = { headerType: "header-sc", // social club filtering header disabledFields: // disables header fields [ false, // platforms false, // locations false, // age false, // gamers true, // game-types [true, false, true], // dates+builds ], }; var profStat = new ProfileStats(); var profileStatList = [ { types: [ "CHOP_APP_USED", ], name: "Chop App Used", altNames: [ "No", "Yes", ], requestSubString: "_", bucketSize: 1, singleMetric: true, groupNonZero: true, // for 0 / non 0 values piechart unit: "players", }, { types: [ "CHOP_APP_USED", ], name: "Times Chop App Used", requestSubString: "_", bucketSize: 5, singleMetric: true, //showOnlyLowerRange: true, unit: "players", }, ]; var reportOptions = { restEndpoint: config.profileStatsCombinedDiff, restEndpointAsync: config.profileStatsCombinedDiffAsync, processFunction: formatData, availableCharts: profileStatList, multipleRequests: generateEndpoints, isClickable: false, // This is a piechart main: { legend: false, pieLabelsOutside: false, labelSunbeamLayout: false, donut: true, donutLabelsOutside: true, sortByValueDesc: true, getPieLabel: function(d) { return d[0].label; }, getValuesArray: function(d) {return d[0].values; }, getMetadata: function(d) {return d[0].metadata; }, // function to get the name from the rest data getName: function(d) {return d.name; }, // this is added to the results // function to calculate the value from the rest data getValue: function(d) { return d.value; }, getObject: function(d) { return (d); }, // unit: "players" - not always lrMargin: 15, }, // This is a lingraph breakdown: { elementId: "line-area-chart", backgroundColour: "transparent", lineColour: config.chartColour1, textColour: "#000000", gridColour: "#333333", name: function(d) { return d.name; }, value: function(d) { return ((d.TotalUsers) ? (Number(d.YValue)/d.TotalUsers)*100 : 0); }, fullName: function(d, extra) { return ((extra) ? this.name(d) + "
(" + extra + ")" : this.name(d)); }, label: function(d) {return ((d.label) ? d.label : this.name(d)); }, xLabel: profileStatList[1].name, yLabel: "Percentage of Players (%)", orientation: "horizontal", margin: {top: 10, right: 10, bottom: 10, left: 10}, hideLegend: true, legend: {height: 30, width: 180, rectWidth: 18}, legendDataConst : [], legendDataVar: {label : "", colour: config.chartColour1}, // keep this colour in sync with lineColour valueTooltipContent: function(d, b) { var content = "
" + this.fullName(d, b) + "
" + profileStatList[1].name + "" + "

" + "" + "" + "" + "" + "
Percentage of Players:" + commasFixed2(this.value(d)) + " %
Number of Players:" + commasFixed2(Number(d.YValue)) + "
Total Players:" + commasFixed2(d.TotalUsers) + "
"; return content; }, getObject: function(d) {return d[1];}, }, }; function generateEndpoints(pValues) { //$("#date-from").addClass("hidden"); //$("#date-from").parent().addClass("hidden"); // store the obj to local for processing the results //requestPValues = pValues; var statName = getStatNames(profileStatList[0]).join(","); var copiedPvalues = $.extend(true, {}, pValues); copiedPvalues.Pairs["StatNames"] = statName; copiedPvalues.Pairs["BucketSize"] = profileStatList[0].bucketSize; var linePvalues = $.extend(true, {}, pValues); linePvalues.Pairs["StatNames"] = statName; linePvalues.Pairs["BucketSize"] = profileStatList[1].bucketSize; var endpointObjects = [ { restUrl: config.restHost + reportOptions.restEndpoint, restAsyncUrl: config.restHost + reportOptions.restEndpointAsync + pValues.ForceUrlSuffix, pValues: [copiedPvalues], }, { restUrl: config.restHost + reportOptions.restEndpoint, restAsyncUrl: config.restHost + reportOptions.restEndpointAsync + pValues.ForceUrlSuffix, pValues: [linePvalues], }, ]; return endpointObjects; } function formatData(data) { var array = []; // Prepare for piechart pieData = profStat.groupNonZero(data[0][0].response); pieValues = pieData.map(function(d) { d["name"] = profStat.getName(d, profileStatList[0]); d["value"] = profStat.getValue(d, profileStatList[0]); return d; }); array.push( { "label": profileStatList[0].name, "values": pieValues, "metadata": {"unit": profileStatList[0].unit}, } ); // Calc the total users var totalUsers = 0; data[1][0].response.map(function(r) {totalUsers += Number(r.YValue); }); // Prepare for Linegraph var lineData = data[1][0].response.map(function(d) { d["name"] = profStat.getName(d, profileStatList[1]); d["value"] = profStat.getValue(d, profileStatList[1]); d["TotalUsers"] = totalUsers; return d; }); var lineDataKey = profileStatList[1].name; array.push({lineDataKey: lineData}); return array; } function getStatNames(profileStat) { var statNames = []; $.each(profileStat.types, function (i, profileStatType) { statNames.push( profStat.constructStatNames(profileStat, profileStatType, config.gameTypes).join(",") ); }); return statNames; }