Files
gtav-src/tools_ng/web/prod/stats/js/configs/sp_epsilon-config.js
T
2025-09-29 00:52:08 +02:00

192 lines
5.5 KiB
JavaScript
Executable File

// 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, // character
[true, false, true], // dates+builds
],
};
var profStat = new ProfileStats();
var profileStatList = [
{
types: [
"MS_EP8_MONEY_STOLEN",
],
name: "Epsilon 8",
altNames: [
"Followed Instructions",
"Stole Money",
],
requestSubString: "_",
bucketSize: 1,
singleMetric: true,
//groupNonZero: true, // for 0 / non 0 values piechart
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.MissionName; },
value: function(d) { return (d.TotalAttempts) ? (d.TotalPassed/d.TotalAttempts)*100 : 0; },
fullName: function(d, extra) { return ((extra) ? this.name(d) + "<br />(" + extra + ")" : this.name(d)); },
label: function(d) {return ((d.label) ? d.label : this.name(d)); },
xLabel: "Epsilon Missions",
yLabel: "Percentage of Times Completed (%)",
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 = "<div class='title'>" + this.fullName(d, b) + "<br />" + "</div><br />"
+ "<table>"
+ "<tr><td>Percentage of Times Completed :</td><td class='right'>"
+ commasFixed2(this.value(d))
+ " %</td></tr>"
+ "<tr><td>Percentage of Times Failed :</td><td class='right'>"
+ commasFixed2((d.TotalAttempts) ? (d.TotalFailed/d.TotalAttempts)*100 : 0)
+ " %</td></tr>"
+ "<tr><td>Percentage of Times Skipped :</td><td class='right'>"
+ commasFixed2((d.TotalAttempts) ? (d.TotalSkipped/d.TotalAttempts)*100 : 0)
+ " %</td></tr>"
+ "<tr><td>Percentage of Times Canceled :</td><td class='right'>"
+ commasFixed2((d.TotalAttempts) ? (d.TotalCancelled/d.TotalAttempts)*100 : 0)
+ " %</td></tr>"
+ "</table>";
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 endpointObjects = [
{
restUrl: config.restHost + reportOptions.restEndpoint,
restAsyncUrl: config.restHost + reportOptions.restEndpointAsync + pValues.ForceUrlSuffix,
pValues: [copiedPvalues],
},
{
restUrl: config.restHost + config.missionsStats,
restAsyncUrl: config.restHost + config.missionsStatsAsync + pValues.ForceUrlSuffix,
pValues: [pValues],
},
];
return endpointObjects;
}
function formatData(data) {
var array = [];
// Prepare for piechart
//var pieData = profStat.groupNonZero(data[0][0].response);
var pieData = data[0][0].response;
var 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 epsilonMission = data[1][0].response.filter(
// return only the epsilon missions
function(d) { return d.MissionName.match("^RC - Epsilonism"); }
)
.sort(function(a, b) {return (a.MissionName < b.MissionName) ? -1 : 1});
var lineDataKey = reportOptions.breakdown.xLabel;
array.push({lineDataKey: epsilonMission});
return array;
}
function getStatNames(profileStat) {
var statNames = [];
$.each(profileStat.types, function (i, profileStatType) {
statNames.push(
profStat.constructStatNames(profileStat, profileStatType, config.gameTypes).join(",")
);
});
return statNames;
}