Files
gtav-src/tools_ng/web/release/shared/js/generic.js
T
2025-09-29 00:52:08 +02:00

4703 lines
141 KiB
JavaScript
Executable File

var rosPlatforms,
rosPlatformsDict,
matchTypes,
matchTypesDict,
matchSubTypesDict,
freemodeCategories,
freemodeCategoriesDict,
jobResults,
jobResultsDict,
globalHeaderAndFilters;
/* KEEP THIS IN SYNC WITH THE CSS VALUES */
var headerNavProperties = {
localStoragekey: "header-nav-settings",
//headerHideTop: "-14%",
//contentHeaderHideTop: "1%",
//contentHeaderHideHeight: "99%",
headerShowTop: 0,
headerBottomMargin: 5,
//headerBottomMargin: 15,
//contentHeaderShowTop: "15%",
//contentHeaderShowHeight: "85%",
//contentHeaderShowTop: "1%",
//contentHeaderShowHeight: "99%",
/*
navHideLeft: "-15%",
contentNavHideLeft: "1%",
contentNavHideWidth: "98%",
headerNavHideLeft: "0%",
headerNavHideWidth: "100%",
navShowLeft: "0%",
contentNavShowLeft: "15.5%",
contentNavShowWidth: "84%",
headerNavShowLeft: "15%",
headerNavShowWidth: "85%",
*/
}
var config = {
restHost: window.location.protocol + "//" + window.location.host + "/StatisticsService/",
webHost: window.location.protocol + "//" + window.location.host,
currentFilename: window.location.pathname.substr(
window.location.pathname.lastIndexOf("/") + 1,
window.location.pathname.indexOf(".html") + 5),
csvBackend: "/AspUtils/SaveCSV.aspx",
tableauAuthBackend: "/AspUtils/TableauAuth.aspx",
tableauEndpoint: "http://data.rockstargames.com/",
tableauUsername: "svcrsgewrTableauViewer",
//currentFilename: window.location.pathname.substr(window.location.pathname.lastIndexOf("/") + 1),
serverTypeScript: "/shared/server_type.js",
serverType: null,
serverTypeProd: "prod",
profileStatDefPath: "ProfileStatDefinitions/All",
profileStatsCombined: "Reports/VerticaCombinedProfileStats/Parameters",
profileStatsCombinedAsync: "Reports/VerticaCombinedProfileStats/ParametersAsync",
profileStatsCombinedDiff: "Reports/VerticaCombinedDiffProfileStats/Parameters",
profileStatsCombinedDiffAsync: "Reports/VerticaCombinedDiffProfileStats/ParametersAsync",
profileStatsDivided: "Reports/VerticaDividedProfileStats/Parameters",
profileStatsDividedAsync: "Reports/VerticaDividedProfileStats/ParametersAsync",
profileStatsDividedDiff: "Reports/VerticaDividedDiffProfileStats/Parameters",
profileStatsDividedDiffAsync: "Reports/VerticaDividedDiffProfileStats/ParametersAsync",
profileStatsPerUser: "Reports/VerticaPerUserProfileStats/Parameters",
profileStatsPerUserAsync: "Reports/VerticaPerUserProfileStats/ParametersAsync",
profileStatsHistorical: "Reports/VerticaHistoricalProfileStats/Parameters",
profileStatsHistoricalAsync: "Reports/VerticaHistoricalProfileStats/ParametersAsync",
asyncRequestFailTxt: "Request Failed! Please check the console for more info.",
//weaponsAll: "Weapons/All",
weaponsAll: "GameAssets/Weapons",
// Map Telemetry Specific
buildsAll: "Builds/All",
levelsAll: "Levels/All",
vehiclesAll: "GameAssets/Vehicles",
//platformsAll: "Platforms/All",
cutscenesAll: "Cutscenes/All",
overlayGroupsAll: ["None", "Telemetry"],
overlaysAll: [
{Name: "Fps/Draw Lists", Value: "Fps"},
{Name: "Physics Shape Test", Value: "ShapeTest"},
{Name: "Memory Shortfall", Value: "MemShortfall"},
{Name: "Capture Performance", Value: "Performance"},
{Name: "Deaths", Value: "Deaths"},
//{Name: "Spawn Points", Value: "Spawn"},
],
//{Name: "Mag Demo", Value: "Mag Demo"}],
//gametypesAll: "Gametypes/All",
//resolutionsAll: "ProcessedStatResolutions/All",
resolutionsAll: [20, 100],
//buildConfigsAll: "BuildConfigs/All",
metricAll: ["FrameTime", "UpdateTime", "DrawTime", "GpuTime",
"IndexCount", "DrawcallCount", "ObjectCount", "GBufferIndexCount",
"DrawLists"],
fpsDrawListMetricName: "DrawLists",
//drawListAll: "DrawLists/All",
drawListAll: "GameAssets/DrawLists",
statAll: [{Name:"Minimum", Value:"min"},
{Name:"Maximum", Value:"max"},
{Name:"Average", Value:"avg"}],
automatedTestsAll: [{Name: "Other", Value: 0, Description: "Automated tests that don't fall in a specific category."},
{Name: "Map Only", Value: 1, Description: "Automated test where only map rendering/update is enabled."},
{Name: "Everything", Value: 2, Description: "Automated Test where everything is enabled."},
//{Name: "Mag Demo", Value: 3, Description: "Shows stats that were captured on MagDemo play through runs."},
{Name: "Night Time Map Only", Value: 6, Description: "Automated test where only map rendering/update is enabled and the stats are captured at night."},
],
memoryTypesAll: [
{Name: "Physical Shortfall", Value: "PhysicalShortfall"},
{Name: "Virtual Shortfall", Value: "VirtualShortfall"},
],
buildsPath: "Builds/",
fpsPath: "Fps",
drawListPath: "DrawLists",
capturePerformanceMetrics: "CaptureStats/AutomatedTests/5/PerformanceMetrics",
capturePerformanceStats: "CaptureStats/AutomatedTests/5/PerformanceStats",
capturePerformanceZones: "CaptureStats/AutomatedTests/5/Zones",
capturePerformanceSummary: "CaptureStats/AutomatedTests/5/Summary",
cpsDrawListMetricName: "Draw List",
fpsPerformanceStats: "Reports/VerticaFpsPerformance/Parameters",
fpsPerformanceStatsAsync: "Reports/VerticaFpsPerformance/ParametersAsync",
fpsDrawListPerformanceStats: "Reports/VerticaFpsDrawListPerformance/Parameters",
fpsDrawListPerformanceStatsAsync: "Reports/VerticaFpsDrawListPerformance/ParametersAsync",
memoryShortfallStats: "Reports/VerticaMemoryShortfall/Parameters",
memoryShortfallStatsAsync: "Reports/VerticaMemoryShortfall/ParametersAsync",
physicsShapeTestStats: "Reports/VerticaPhysicsShapeCost/Parameters",
physicsShapeTestStatsAsync: "Reports/VerticaPhysicsShapeCost/ParametersAsync",
/*
spawnStats: "Reports/FreemodeInjuryReport/Parameters",
spawnStatsAsync: "Reports/FreemodeInjuryReport/ParametersAsync",
*/
mapDeathmatchStats: "Reports/VerticaDMInjuryHeatmap/Parameters",
mapDeathmatchStatsAsync: "Reports/VerticaDMInjuryHeatmap/ParametersAsync",
mapFpsStats: "Reports/BasicFpsPerformance/Parameters",
mapFpsStatsAsync: "Reports/BasicFpsPerformance/ParametersAsync",
// End of Map Telemetry Specific
// Social Club Lists
//SCFreemodeNames: "SocialClub/FreemodeMissions",
SCCountries: "SocialClub/Countries",
//Legacy
//SCGroupsAndUsers: "SocialClub/Actors",
SCVerticaUsersSearch: "VerticaData/Users/Search",
SCVerticaUsersGroups: "VerticaData/Users/Groups",
//SCUsers: "SocialClub/Actors/Users",
//SCGroups: "SocialClub/Actors/Groups",
//SCHierarchies: "SocialClub/Actors/Hierarchy",
VerticaGamersSearch: "VerticaData/Gamers/Search",
VerticaGamersGroups: "VerticaData/Gamers/Groups",
VerticaGamersValidate: "VerticaData/Gamers/Validate",
VerticaCrews : "VerticaData/Clans",
VerticaCrewsSearch : "VerticaData/Clans/Search",
VerticaMissionsSearch: "VerticaData/Missions/Search",
//gamersPath: "Gamers/",
//sessionsSubPath: "/Sessions",
//sessionsSummaryPath: "RawTelemetryStats/SessionSummary",
//missionsStats: "Missions/Stats",
missionsStats: "Reports/VerticaMissionAttempts/Parameters",
missionsStatsAsync: "Reports/VerticaMissionAttempts/ParametersAsync",
missionsDeaths: "Reports/VerticaMissionDeaths/Parameters",
missionsDeathsAsync: "Reports/VerticaMissionDeaths/ParametersAsync",
wantedLevels: "Reports/VerticaWantedLevels/Parameters",
wantedLevelsAsync: "Reports/VerticaWantedLevels/ParametersAsync",
freemodeMissionsStats: "Reports/VerticaFreemodeMatches/Parameters",
freemodeMissionsStatsAsync: "Reports/VerticaFreemodeMatches/ParametersAsync",
freemodeRacesStats: "Reports/VerticaFreemodeRaces/Parameters",
freemodeRacesStatsAsync: "Reports/VerticaFreemodeRaces/ParametersAsync",
freemodeActivitiesStats: "Reports/VerticaFreemodeAmbientMissions/Parameters",
freemodeActivitiesStatsAsync: "Reports/VerticaFreemodeAmbientMissions/ParametersAsync",
freemodeTutorialStats: "Reports/VerticaMPTutorial/Parameters",
freemodeTutorialStatsAsync: "Reports/VerticaMPTutorial/ParametersAsync",
freemodeContentStats: "Reports/MissionContent/Parameters",
freemodeContentStatsAsync: "Reports/MissionContent/ParametersAsync",
freemodeContentDetailsStats: "Reports/MissionContentDetails/Parameters",
freemodeContentDetailsStatsAsync: "Reports/MissionContentDetails/ParametersAsync",
cutscenesStats: "Reports/VerticaCutscenesWatched/Parameters",
cutscenesStatsAsync: "Reports/VerticaCutscenesWatched/ParametersAsync",
radioStationsStats: "Reports/VerticaRadioStationListeners/Parameters",
radioStationsStatsAsync: "Reports/VerticaRadioStationListeners/ParametersAsync",
tvShowsStats: "Reports/VerticaTVShowViewers/Parameters",
tvShowsStatsAsync: "Reports/VerticaTVShowViewers/ParametersAsync",
cinemaStats: "Reports/VerticaMovieViewers/Parameters",
cinemaStatsAsync: "Reports/VerticaMovieViewers/ParametersAsync",
vehiclesStats: "Reports/VerticaVehicleDistanceDriven/Parameters",
vehiclesStatsAsync: "Reports/VerticaVehicleDistanceDriven/ParametersAsync",
shoppingStats: "Reports/VerticaShopPurchases/Parameters",
shoppingStatsAsync: "Reports/VerticaShopPurchases/ParametersAsync",
expenditureStats: "Reports/VerticaMPExpenditure/Parameters",
expenditureStatsAsync: "Reports/VerticaMPExpenditure/ParametersAsync",
earningsStats: "Reports/VerticaMPEarnings/Parameters",
earningsStatsAsync: "Reports/VerticaMPEarnings/ParametersAsync",
characterCash: "Reports/VerticaCharacterCash/Parameters",
characterCashAsync: "Reports/VerticaCharacterCash/ParametersAsync",
characterSkills: "Reports/VerticaCharacterSkills/Parameters",
characterSkillsAsync: "Reports/VerticaCharacterSkills/ParametersAsync",
weaponKillsDeaths: "Reports/VerticaKillDeath/Parameters",
weaponKillsDeathsAsync: "Reports/VerticaKillDeath/ParametersAsync",
weaponModPurchases: "Reports/VerticaWeaponModPurchases/Parameters",
weaponModPurchasesAsync: "Reports/VerticaWeaponModPurchases/ParametersAsync",
concurrentUsers: "Reports/VerticaConcurrentUsers/Parameters",
concurrentUsersAsync: "Reports/VerticaConcurrentUsers/ParametersAsync",
onlineGamerCount: "Reports/VerticaOnlineGamerCount/Parameters",
onlineGamerCountAsync: "Reports/VerticaOnlineGamerCount/ParametersAsync",
onlineGamers: "Reports/VerticaOnlineGamers/Parameters",
onlineGamersAsync: "Reports/VerticaOnlineGamers/ParametersAsync",
topUsersCashReport: "Reports/VerticaMPTopRankedGamers/Parameters",
topUsersCashReportAsync: "Reports/VerticaMPTopRankedGamers/ParametersAsync",
userCashReport: "Reports/VerticaPerUserCashReport/Parameters",
userCashReportAsync: "Reports/VerticaPerUserCashReport/ParametersAsync",
hourlyCashReport: "Reports/VerticaMPHourlyCash/Parameters",
hourlyCashReportAsync: "Reports/VerticaMPHourlyCash/ParametersAsync",
rankCashReport: "Reports/PerRankInfo/Parameters",
rankCashReportAsync: "Reports/PerRankInfo/ParametersAsync",
cashPurchasesReport: "Reports/VerticaCashPurchases/Parameters",
cashPurchasesReportAsync: "Reports/VerticaCashPurchases/ParametersAsync",
bettingEarned: "Reports/VerticaMPBetting/Parameters",
bettingEarnedAsync: "Reports/VerticaMPBetting/ParametersAsync",
bettingEarnedNew: "Reports/NewMPBetting/Parameters",
bettingEarnedNewAsync: "Reports/NewMPBetting/ParametersAsync",
averageBets: "Reports/VerticaMPAverageBets/Parameters",
averageBetsAsync: "Reports/VerticaMPAverageBets/ParametersAsync",
transactionHistory: "Reports/VerticaMPTransactionHistory/Parameters",
transactionHistoryAsync: "Reports/VerticaMPTransactionHistory/ParametersAsync",
freemodeInvites: "Reports/VerticaMPInvites/Parameters",
freemodeInvitesAsync: "Reports/VerticaMPInvites/ParametersAsync",
websiteVisits: "Reports/VerticaWebsiteVisits/Parameters",
websiteVisitsAsync: "Reports/VerticaWebsiteVisits/ParametersAsync",
cheatsUsed: "Reports/VerticaSPCheaters/Parameters",
cheatsUsedAsync: "Reports/VerticaSPCheaters/ParametersAsync",
missionCaptureStats: "Reports/VerticaMissionPerformance/Parameters",
missionCaptureStatsAsync: "Reports/VerticaMissionPerformance/ParametersAsync",
cutsceneCaptureStats: "Reports/VerticaCutscenePerformance/Parameters",
cutsceneCaptureStatsAsync: "Reports/VerticaCutscenePerformance/ParametersAsync",
cutsceneCaptureDetailsStats: "Reports/VerticaCutscenePerformanceDetails/Parameters",
cutsceneCaptureDetailsStatsAsync: "Reports/VerticaCutscenePerformanceDetails/ParametersAsync",
cutsceneLights: "Reports/VerticaCutsceneLights/Parameters",
cutsceneLightsAsync: "Reports/VerticaCutsceneLights/ParametersAsync",
perBuildCutscenes: "Reports/PerBuildCutscenes/Parameters",
perBuildCutscenesAsync: "Reports/PerBuildCutscenes/ParametersAsync",
mapExportSummary: "Reports/MapExportsDailySummary/Parameters",
mapExportSummaryAsync: "Reports/MapExportsDailySummary/ParametersAsync",
mapExportsByUser: "Reports/MapExportsByUser/Parameters",
mapExportsByUserAsync: "Reports/MapExportsByUser/ParametersAsync",
mapExportsBySection: "Reports/MapExportsBySection/Parameters",
mapExportsBySectionAsync: "Reports/MapExportsBySection/ParametersAsync",
mapExportsSectionAge: "Reports/MapExportsSectionAge/Parameters",
mapExportsSectionAgeAsync: "Reports/MapExportsSectionAge/ParametersAsync",
mapExportHistorical: "Reports/MapExportsHistorical/Parameters",
mapExportHistoricalAsync: "Reports/MapExportsHistorical/ParametersAsync",
// Deprecated
mapExportStats: "MapExportStats/",
mapExportStatsAll: "MapExportStats/All",
mapExportStatsUsers: "MapExportStats/Users",
mapSectionsAll: "MapSections/All",
mapExportStatsRaw: "MapExportStats/AllExportStats",
//
captureStats: "CaptureStats/",
captureStatsBuildsPath: "PerfStats/",
captureStatsChangelistPath: "Changelist/",
captureStatsZonesPath: "Zones",
captureStatsHistoricalPath: "Historical",
captureStatsDecimals: 4,
captureStatsChangelists: "CaptureStats/Changelists",
captureStatsBuilds: "CaptureStats/PerfStats/Builds",
cutsceneCaptures: "Reports/CutsceneCaptures/Parameters",
cutsceneCapturesAsync: "Reports/CutsceneCaptures/ParametersAsync",
playthroughsUsers: "Playthroughs/Users",
playthroughsBuilds: "Playthroughs/Builds",
playthroughsPlatforms: "Playthroughs/Platforms",
// Reports
playthroughsSummary: "Reports/PlaythroughSummary/Parameters",
playthroughsSummaryAsync: "Reports/PlaythroughSummary/ParametersAsync",
playthroughsBreakdown: "Reports/PlaythroughBreakdown/Parameters",
playthroughsBreakdownAsync: "Reports/PlaythroughBreakdown/ParametersAsync",
playthroughsComments: "Reports/PlaythroughComments/Parameters",
playthroughsCommentsAsync: "Reports/PlaythroughComments/ParametersAsync",
playthroughsMissions: "Reports/PlaythroughMissionAttempts/Parameters",
playthroughsMissionsAsync: "Reports/PlaythroughMissionAttempts/ParametersAsync",
// For admin
playthroughsSessions: "Playthroughs/Sessions",
/* Difficutly tracking endpoints*/
userMissionCash: "Reports/VerticaPerUserMissionCash/Parameters",
userMissionCashAsync: "Reports/VerticaPerUserMissionCash/ParametersAsync",
userMissionAttempts: "Reports/VerticaPerUserMissionAttempts/Parameters",
userMissionAttemptsAsync: "Reports/VerticaPerUserMissionAttempts/ParametersAsync",
userMissionRatings: "Reports/PlaythroughMissionRatings/Parameters",
userMissionRatingsAsync: "Reports/PlaythroughMissionRatings/ParametersAsync",
userFriendActivity: "Reports/VerticaPerUserFriendActivity/Parameters",
userFriendActivityAsync: "Reports/VerticaPerUserFriendActivity/ParametersAsync",
userWantedlevels: "Reports/VerticaPerUserWantedLevels/Parameters",
userWantedlevelsAsync: "Reports/VerticaPerUserWantedLevels/ParametersAsync",
userClothChanges: "Reports/VerticaPerUserClothChanges/Parameters",
userClothChangesAsync: "Reports/VerticaPerUserClothChanges/ParametersAsync",
userPropChanges: "Reports/VerticaPerUserPropChanges/Parameters",
userPropChangesAsync: "Reports/VerticaPerUserPropChanges/ParametersAsync",
userSPCheats: "Reports/VerticaPerUserSPCheats/Parameters",
userSPCheatsAsync: "Reports/VerticaPerUserSPCheats/ParametersAsync",
userMGMedals: "Reports/VerticaPerUserMiniGameMedals/Parameters",
userMGMedalsAsync: "Reports/VerticaPerUserMiniGameMedals/ParametersAsync",
memoryPoolsStats: "Reports/VerticaMemoryPools/Parameters",
memoryPoolsStatsAsync: "Reports/VerticaMemoryPools/ParametersAsync",
memoryStoresStats: "Reports/VerticaMemoryStores/Parameters",
memoryStoresStatsAsync: "Reports/VerticaMemoryStores/ParametersAsync",
memorySkeletonsStats: "Reports/VerticaMemorySkeletons/Parameters",
memorySkeletonsStatsAsync: "Reports/VerticaMemorySkeletons/ParametersAsync",
memoryUsageStats: "Reports/VerticaMemoryUsage/Parameters",
memoryUsageStatsAsync: "Reports/VerticaMemoryUsage/ParametersAsync",
assetSizes: "Reports/GameAssetsHistoricalMapSectionAssetBreakdown/Parameters",
assetSizesAsync: "Reports/GameAssetsHistoricalMapSectionAssetBreakdown/ParametersAsync",
resourceStats: "Reports/ResourceStatReport/Parameters",
resourceStatsAsync: "Reports/ResourceStatReport/ParametersAsync",
newResourceStats: "Reports/NewResourceStats/Parameters",
newResourceStatsAsync: "Reports/NewResourceStats/ParametersAsync",
newResourceDetailsStats: "Reports/NewResourceStatDetails/Parameters",
newResourceDetailsStatsAsync: "Reports/NewResourceStatDetails/ParametersAsync",
clipsPerformanceStats: "Reports/VerticaClips/Parameters",
clipsPerformanceStatsAsync: "Reports/VerticaClips/ParametersAsync",
unusedClipsStats: "Reports/UnusedClips/Parameters",
unusedClipsStatsAsync: "Reports/UnusedClips/ParametersAsync",
// Enums
platformsEnums: "Enums/Platforms",
rosPlatformsEnums: "Enums/ROSPlatforms",
buildConfigsEnums: "Enums/BuildConfigs",
gameTypesEnums: "Enums/GameTypes",
fileTypesEnums: "Enums/FileTypes",
platformsEnums: "Enums/Platforms",
clipCategoriesEnums: "Enums/ClipDictionaryCategories",
resourceBucketEnums: "Enums/ResourceBucketTypes",
matchTypesEnums: "Enums/MatchTypes",
matchSubTypesEnumsDict: {
"Deathmatch": "Enums/DeathmatchSubTypes",
"Mission": "Enums/MissionSubTypes",
"Race": "Enums/RaceSubTypes",
},
freemodeCategoriesEnums: "Enums/FreemodeMissionCategories",
dateGroupingEnums: "Enums/DateTimeGroupModes",
weaponCategoriesEnums: "Enums/weaponcategories",
expenditureCategoriesEnums: "Enums/SpendCategories",
getJobResultsEnums: "Enums/JobResults",
gameTimes: [
{
"Name": "Day",
"Value": "7-19",
},
{
"Name": "Night",
"Value": "20-6",
}
],
ugcStatus: [
{
"Name": "Saved & Published",
"Value": null,
},
{
"Name": "Published Only",
"Value": true,
},
{
"Name": "Saved Only",
"Value": false,
},
],
/*
dateGrouping: [
"HOURLY",
"DAILY",
"WEEKLY",
"MONTHLY",
"YEARLY",
],
*/
datesBuildsOptions: [
{Name: "Dates + Builds", Value: 0},
{Name: "Dates Only", Value: 1},
{Name: "Builds Only", Value: 2},
{Name: "CWP Only", Value: 3},
],
reportsAll: "Reports/All",
reportsPrefix: "Reports/",
reportsSuffix: "/Parameters",
reportsStyleSuffix: "/Stylesheets",
reportsQueryAsync: "Reports/QueryAsync",
reportsPresets: "Reports/Presets",
reportForceSuffix: "?forceRegen=true",
transitionDuration: 600,
transitionDelay: 600,
anHourInMillisecs: (60 * 60 * 1000),
anHourInSecs: (60 * 60),
aMinInMillisecs: (60 * 1000),
aKmInMetres: 1000,
storageExpirePeriod: 86400, // (60 * 60 *24) one day in secs
// Treat input as local time
dateInputFormat: d3.time.format("%d/%m/%Y %H:%M"),
// Treat input as UTC
dateInputUTCFormat: d3.time.format.utc("%d/%m/%Y %H:%M"),
// Format of the date picker
datePickerFormat: "dd/mm/yy",
timePickerFormat: "hh:mm",
gameTypes: ["Singleplayer", "Multiplayer"],
characters: [
{ Name: "All", Value: null },
{ Name: "Michael", Value: 0 },
{ Name: "Franklin", Value: 1 },
{ Name: "Trevor", Value: 2 },
{ Name: "MP Slot 1", Value: 3 },
{ Name: "MP Slot 2", Value: 4 },
{ Name: "MP Slot 3", Value: 5 },
{ Name: "MP Slot 4", Value: 6 },
{ Name: "MP Slot 5", Value: 7 },
],
chartColour1: "#ff6600",
chartColour2: "#0054E6",
chartColour3: "#697D91",
chartColour4: "#b7bc31",
colourRange: d3.scale.category20(),
headerOptions: {
"header-sc" : {
filename: "/shared/html-snippets/header_sc.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "character-field", elementsId: ["character"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
],
storeName: "header-sc",
getParamValues: getSCParamValues,
height: 175, //px
},
"header-sc-tableau" : {
filename: "/shared/html-snippets/header_sc_tableau.html",
fields: [
{fieldId: "rosplatforms-field", elementsId: ["rosplatforms"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
],
storeName: "header-sc",
getParamValues: getSCTableauParamValues,
height: 175, //px
},
"header-sc-freemode" : {
filename: "/shared/html-snippets/header_sc_freemode.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "character-field", elementsId: ["character"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
{fieldId: "freemode-categories-field", elementsId: ["freemode-categories"]},
{fieldId: "freemode-ugcstatus-field", elementsId: ["freemode-ugcstatus"]},
{fieldId: "creators-field", elementsId: ["creators"]},
{fieldId: "created-dates-field", elementsId: ["created-date-from", "created-date-to", "created-utc-force"]},
],
storeName: "header-sc",
getParamValues: getSCFreemodeParamValues,
height: 290, //px
},
"header-sc-missions" : {
filename: "/shared/html-snippets/header_sc_missions.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "character-field", elementsId: ["character"]},
{fieldId: "date-grouping-field", elementsId: ["date-grouping"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
{fieldId: "freemode-category-field", elementsId: ["freemode-category"]},
{fieldId: "freemode-ugcstatus-field", elementsId: ["freemode-ugcstatus"]},
{fieldId: "missions-field", elementsId: ["missions"]},
{fieldId: "created-dates-field", elementsId: ["created-date-from", "created-date-to", "created-utc-force"]},
],
getParamValues: getSCMissionsParamValues,
storeName: "header-sc",
height: 290, // px
},
"header-sc-map" : {
filename: "/shared/html-snippets/header_sc_map.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "character-field", elementsId: ["character"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
{fieldId: "deathmatch-field", elementsId: ["deathmatch"]},
{fieldId: "spawn-time-field", elementsId: ["time-since-spawn"]},
],
storeName: "header-sc",
getParamValues: getSCMapParamValues,
height: 240, // px
},
"header-sc-fps" : {
filename: "/shared/html-snippets/header_sc_fps.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "character-field", elementsId: ["character"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
{fieldId: "level-field", elementsId: ["level"]},
{fieldId: "match-type-field", elementsId: ["match-type"]},
{fieldId: "resolution-field", elementsId: ["resolution"]},
{fieldId: "freeroam-field", elementsId: ["freeroam"]},
],
storeName: "header-sc",
getParamValues: getSCFpsParamValues,
height: 240, // px
},
"header-sc-weapons" : {
filename: "/shared/html-snippets/header_sc_weapons.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "character-field", elementsId: ["character"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
{fieldId: "match-type-field", elementsId: ["match-type"]},
{fieldId: "freeroam-field", elementsId: ["freeroam"]},
],
storeName: "header-sc",
getParamValues: getSCWeaponsParamValues,
height: 210, // px
},
"header-sc-dategrouping" : {
filename: "/shared/html-snippets/header_sc_dategrouping.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "character-field", elementsId: ["character"]},
{fieldId: "date-grouping-field", elementsId: ["date-grouping"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
],
storeName: "header-sc",
getParamValues: getSCDGParamValues,
height: 175, //px
},
"header-sc-debug" : {
filename: "/shared/html-snippets/header_sc_debug.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "debug-field", elementsId: ["include-debug"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
],
storeName: "header-sc",
getParamValues: getSCDebugParamValues,
height: 175, //px
},
"header-sc-topusers" : {
filename: "/shared/html-snippets/header_sc_topusers.html",
fields: [
{fieldId: "platforms-field", elementsId: ["platforms"]},
{fieldId: "locations-field", elementsId: ["locations"]},
{fieldId: "age-field", elementsId: ["age-min", "age-max"]},
{fieldId: "gamers-field", elementsId: ["sc-users", "sc-user-groups", "gamertags", "gamertag-groups", "crews"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "upper-xp-field", elementsId: ["upper-xp"]},
{fieldId: "dates-builds-field", elementsId: ["dates-builds", "date-from", "date-to", "utc-force", "builds", "cwp"]},
],
storeName: "header-sc",
getParamValues: getSCTopUsersParamValues,
height: 175, //px
},
"header-freemode" : {
filename: "/shared/html-snippets/header_freemode.html",
fields: [
{fieldId: "freemode-categories-field", elementsId: ["freemode-categories"]},
{fieldId: "freemode-ugcstatus-field", elementsId: ["freemode-ugcstatus"]},
{fieldId: "creators-field", elementsId: ["creators"]},
{fieldId: "flags-field", elementsId: ["latest-versions-only", "include-deleted"]},
{fieldId: "created-dates-field", elementsId: ["created-date-from", "created-date-to", "created-utc-force"]},
],
storeName: "header-sc",
getParamValues: getFreemodeParamValues,
height: 175, //px
},
"header-cs" : {
filename: "/shared/html-snippets/header_cs.html",
fields: [{fieldId: "platform-field", elementsId: ["platform"]},
{fieldId: "build-field", elementsId: ["build"]},
{fieldId: "build-config-field", elementsId: ["build-config"]},
],
getParamValues: getCsParamValues,
height: 175, // px
},
"header-cs-build-only" : {
filename: "/shared/html-snippets/header_cs_build_only.html",
fields: [
{fieldId: "build-field", elementsId: ["build"]},
],
getParamValues: getCsParamValues,
height: 175, // px
},
"header-cs-report" : {
filename: "/shared/html-snippets/header_cs_report.html",
fields: [{fieldId: "platform-field", elementsId: ["platform"]},
{fieldId: "cutscene-field", elementsId: ["cutscene"]},
],
getParamValues: getCsReportParamValues,
height: 175, // px
},
"header-cs-per" : {
filename: "/shared/html-snippets/header_cs_per.html",
fields: [{fieldId: "platform-field", elementsId: ["platform"]},
{fieldId: "build-field", elementsId: ["build"]},
{fieldId: "build-config-field", elementsId: ["build-config"]},
{fieldId: "percentiles-field", elementsId: ["percentile-lower", "percentile-upper"]},
{fieldId: "game-times-field", elementsId: ["game-times"]},
],
getParamValues: getCsPerParamValues,
height: 175, // px
},
"header-cl" : {
filename: "/shared/html-snippets/header_cl.html",
fields: [{fieldId: "platform-field", elementsId: ["platform"]},
{fieldId: "build-field", elementsId: ["build"]},
{fieldId: "flags-field", elementsId: ["report-detailed", "report-detailed", "report-detailed"]},
],
getParamValues: getClParamValues,
height: 175, // px
},
"header-map-exports" : {
filename: "/shared/html-snippets/header_map_exports.html",
fields: [{fieldId: "section-field", elementsId: ["section"]},
{fieldId: "user-field", elementsId: ["user"]},
{fieldId: "date-field-30pc", elementsId: ["date-from", "date-to", "utc-force"]}
],
height: 175, // px
getParamValues: getMapExpParamValues,
},
"header-dt" : {
filename: "/shared/html-snippets/header_dt.html",
fields: [{fieldId: "dt-build-field", elementsId: ["dt-build"]},
{fieldId: "dt-platform-field", elementsId: ["dt-platform"]},
{fieldId: "dt-users-field", elementsId: ["dt-users"]},
],
getParamValues: getDTParamValues,
height: 170, // px
},
"header-reports" : {
filename: "/shared/html-snippets/header_reports.html",
fields: [{fieldId: "parameters-field", elementsId: []},
{fieldId: "stylesheet-field", elementsId: []},
],
height: 350, // px
},
"header-as" : {
filename: "/shared/html-snippets/header_as.html",
fields: [
{fieldId: "platform-field", elementsId: ["platform"]},
{fieldId: "level-field", elementsId: ["level"]},
{fieldId: "file-types-field", elementsId: ["file-types"]},
],
getParamValues: getAsParamValues,
height: 175, // px
},
"header-clips" : {
filename: "/shared/html-snippets/header_clips.html",
fields: [
{fieldId: "build-field", elementsId: ["build"]},
{fieldId: "builds-field", elementsId: ["builds"]},
{fieldId: "clip-category-field", elementsId: ["clip-category"]},
],
getParamValues: getClipsParamValues,
height: 175, // px
},
"header-rs" : {
filename: "/shared/html-snippets/header_rs.html",
fields: [
{fieldId: "platform-field", elementsId: ["platform"]},
{fieldId: "file-types-field", elementsId: ["file-types"]},
{fieldId: "resource-names-field", elementsId: ["resource-names"]},
{fieldId: "report-detailed-field", elementsId: ["report-detailed"]},
{fieldId: "dates-field", elementsId: ["date-from", "date-to", "utc-force"]},
],
getParamValues: getRsParamValues,
height: 175, // px
},
"header-status" : {
filename: "/shared/html-snippets/header_status.html",
fields: [
{fieldId: "rosplatforms-field", elementsId: ["rosplatforms"]},
{fieldId: "builds-field", elementsId: ["builds"]},
{fieldId: "game-types-field", elementsId: ["game-types"]},
{fieldId: "dates-field", elementsId: ["date-from", "date-to", "utc-force"]},
{fieldId: "gamer-group-field", elementsId: ["gamer-group"]},
{fieldId: "gamer-csv-field", elementsId: []},
],
getParamValues: getStatusParamValues,
height: 175, // px
},
"header-cash-report" : {
filename: "/shared/html-snippets/header_cash_report.html",
fields: [
{fieldId: "builds-field", elementsId: ["builds"]},
{fieldId: "gamertags-field", elementsId: ["gamertags"]},
],
getParamValues: getCashRepParamValues,
storeName: "header-sc",
height: 175, // px
},
},
styleOptions: {
"staging" : "/shared/css/generic_rockstar_north.css",
"test" : "/shared/css/generic_vice_city.css",
"print" : "/shared/css/print.css",
},
noDataText: "No data returned for the specified filter options;<br/>Please refine your search criteria.",
noDataMapText: "No data returned for the selected options!",
noUserText: "You need to select at least one gamer!",
buildAliasText: "Latest",
buildAllText: "All",
redirect: {
from: "rsgedista2:8080",
//from: "127.0.0.1",
to: "rsgedista4",
//to: "rsgedista2:8080",
},
missionHashesCSV: "/shared/data/mission_names.csv",
vehicleHashesCSV: "/shared/data/vehicle_names.csv", // not used
radioHashesCSV: "/shared/data/radio_names.csv",
weaponHashesCSV: "/shared/data/weapon_names.csv",
weaponStatnamesCSV: "/shared/data/weapon_statnames.csv",
}
function getSCParamValues() {
// Get Dates
var start = getDateString("date-from", $("#utc-force").is(":checked"));
var end = getDateString("date-to", $("#utc-force").is(":checked"));
// Get Builds
var builds = getHeaderBuilds();
// Get CWP
var cwp = ($("#cwp").val()) ? Number($("#cwp").val()) : null;
// If the dropdown menu is present
if (!$("#dates-builds").parent().hasClass("hidden")) {
if ($("#dates-builds").val() == 3) { // CWP only
start = null;
end = null;
builds = null;
}
else if ($("#dates-builds").val() == 2) { // Builds only
start = null;
end = null;
cwp = null;
}
else if ($("#dates-builds").val() == 1) { // Dates only
builds = null;
cwp = null;
}
else if ($("#dates-builds").val() == 0) { // Dates and Builds only
cwp = null;
}
}
else {
builds = null;
cwp = null;
}
var platforms = ($("#platforms").val()) ? $("#platforms").val().join() : "";
var locations = ($("#locations").val()) ? $("#locations").val().join() : "";
if (locations && !$("#locations").val()[0]) // Option All selected
locations = null;
var ageMin = ($("#age-min").val()) ? Number($("#age-min").val()) : null;
var ageMax = ($("#age-max").val()) ? Number($("#age-max").val()) : null;
var scUsers, gamertags = null;
if ($("#sc-users-tab").css("display") != "none") {
var scUsers = $("#sc-users").tokenInput("get");
scUsers = scUsers.map(function(d) {return d.name}).join();
}
if ($("#sc-user-groups-tab").css("display") != "none") {
var scUserGroups = $("#sc-user-groups").tokenInput("get");
scUserGroups = scUserGroups.map(function(d) {return d.name}).join();
}
if ($("#gamertags-tab").css("display") != "none") {
var gamertags = getGamertags();
}
if ($("#gamertag-groups-tab").css("display") != "none") {
var gamerGroups = $("#gamertag-groups").tokenInput("get");
gamerGroups = gamerGroups.map(function(d) {return d.name}).join();
}
if ($("#crews-tab").css("display") != "none") {
var crews = $("#crews").tokenInput("get");
var gamertags = getGamertagsFromCrews(crews).join();
}
var gameTypes = ($("#game-types").val()) ? $("#game-types").val().join() : "";
//if ($("#game-types").attr("disabled") == "disabled")
if ($("#game-types-field").hasClass("hidden"))
gameTypes = null;
var character = ($("#character").val()) ? $("#character").val() : null;
if ($("#character-field").hasClass("hidden"))
character = null;
if (character && gameTypes) {
Sexy.alert("You cannot filter by both Game Types and Character!<br> Please choose one of them.")
return;
}
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var defaultProfileStatMax = 1000000;
var defaultProfileStatTimeMax = 360000000;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"PlatformNames": platforms,
"CountryCodes" : locations,
"AgeMin" : ageMin,
"AgeMax" : ageMax,
"SocialClubUserNames" : scUsers,
"SocialClubUserGroups" : scUserGroups,
"GamerHandlePlatformPairs" : gamertags,
"GamerGroups": gamerGroups,
"GameTypeNames": gameTypes,
"CharacterSlot": character,
"StartDate": start,
"EndDate": end,
"BuildIdentifiers": builds,
"CompanywidePlaytestId": cwp,
"TutorialRaceRootContentIds": [
"CA69F971-6A4B-4758-A16C-E919CC7A5F73",
"1380A3E4-CAC1-4E2E-97E6-41462629141D",
"D107D492-63A3-448F-A85B-1F84D7ED8CDB",
"25546EDD-AE2F-4011-99DF-9C298300398D",
"076C2F01-7A69-492E-B849-629D1E0614E4",
// 03-10-2013
"504BD5D3-512A-4670-9809-F84B259CB696", // Mall Or Nothing
].join(","),
"TutorialMissionRootContentIds": [
"A155D363-7766-4CEB-A0C0-B4237128B26D",
"87335C78-20B7-4A1C-9EC0-AA29979E8955",
"0FFB3AAC-629C-434C-8388-38C8DE57E696",
"CA31EECE-F32E-4912-AD06-0222A86D0883",
"62A592DE-EAAA-4070-A697-FB991C7EFF8E",
// 03-10-2013
"37614E68-050A-402A-B0A5-2A517121E810", // Learning The Ropes
"A4106A1B-AFFF-4BB0-B8F3-11F1F5770B01", // Learning The Ropes Alone
].join(","),
"TutorialLTSMissionRootContentIds": [
"8FEFDFCA-F994-41F6-9CD3-15F5F26FCF4A",
//"8DC093E7-13F6-47DB-87C7-0DF201D0B9D3",
// 03-10-2013
"8DC093E7-13F6-47DB-87C7-0DF201D0B9D3", // Cypress Flats LTS
].join(","),
"MaxDifference" : defaultProfileStatMax,
"MaxValue" : defaultProfileStatMax,
"MaxNumeratorDifference": defaultProfileStatMax,
"MaxDenominatorDifference": defaultProfileStatTimeMax,
}
}
return pValues;
}
function getSCFreemodeParamValues() {
var categories = ($("#freemode-categories").val()) ? $("#freemode-categories").val().join(",") : "";
var ugcStatus = ($("#freemode-ugcstatus").val()) ? $("#freemode-ugcstatus").val() : null;
var creators = getCreators();
var createdStart = getDateString("created-date-from", $("#created-utc-force").is(":checked"));
var createdEnd = getDateString("created-date-to", $("#created-utc-force").is(":checked"));
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
pValues.Pairs["MissionCategoryNames"] = categories;
pValues.Pairs["MissionPublishedOnly"] = ugcStatus;
pValues.Pairs["MissionCreatorUserIdPlatformPairs"] = creators;
pValues.Pairs["MissionCreatedStart"] = createdStart;
pValues.Pairs["MissionCreatedEnd"] = createdEnd;
return pValues;
}
function getSCMissionsParamValues() {
var dateGrouping = ($("#date-grouping").val());
var category = ($("#freemode-category").val()) ? $("#freemode-category").val() : null;
var matchIdentifiers = $("#missions").tokenInput("get");
matchIdentifiers = matchIdentifiers.map(function(d) {return d.id}).join();
var pValues = getSCFreemodeParamValues(); //same as freemode except the creators
pValues.Pairs["Grouping"] = dateGrouping;
pValues.Pairs["MissionCategoryNames"] = category;
pValues.Pairs["UGCMatchIdentifiers"] = matchIdentifiers;
return pValues;
}
function getFreemodeParamValues() {
var categories = ($("#freemode-categories").val()) ? $("#freemode-categories").val().join(",") : "";
var ugcStatus = ($("#freemode-ugcstatus").val()) ? $("#freemode-ugcstatus").val() : null;
var creators = getCreators();
var createdStart = getDateString("created-date-from", $("#created-utc-force").is(":checked"));
var createdEnd = getDateString("created-date-to", $("#created-utc-force").is(":checked"));
var latestVersionsOnly = ($("#latest-versions-only").is(":checked"));
var includeDeleted = ($("#include-deleted").is(":checked"));
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"MissionCategoryNames": categories,
"MissionPublishedOnly" : ugcStatus,
"MissionCreatorUserIdPlatformPairs" : creators,
"MissionCreatedStart" : createdStart,
"MissionCreatedEnd" : createdEnd,
"LatestVersionsOnly" : latestVersionsOnly,
"IncludeDeleted" : includeDeleted,
}
}
return pValues;
}
function getSCMapParamValues() {
var radius = 2;
//var timeSinceSpawn = ($("input#time-since-spawn").val()) ? $("input#time-since-spawn").val() : 10;
var timeSinceSpawn = $("#time-since-spawn").val();
var deathmatchUGC = $("#deathmatch").tokenInput("get");
deathmatchUGC = deathmatchUGC.map(function(d) {return d.id}).join();
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
if (!pValues)
return;
// Add the extra Spaw Points param values
pValues.Pairs["DeathmatchUGCIdentifier"] = deathmatchUGC;
pValues.Pairs["BlockSize"] = radius;
pValues.Pairs["TimeSinceSpawn"] = Number(timeSinceSpawn);
return pValues;
}
function getSCWeaponsParamValues() {
var matchType = ($("#match-type").val()) ? $("#match-type").val() : null;
var freeroam = ($("#freeroam").is(":checked"));
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
if (!pValues)
return;
// Add the extra param values
pValues.Pairs["MatchTypeNames"] = matchType;
pValues.Pairs["FreeroamOnly"] = freeroam;
return pValues;
}
function getSCDGParamValues() {
var dateGrouping = ($("#date-grouping").val());
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
if (!pValues)
return;
pValues.Pairs["Grouping"] = dateGrouping;
return pValues;
}
function getSCDebugParamValues() {
var includeDebug = ($("#include-debug").is(":checked"));
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
if (!pValues)
return;
pValues.Pairs["IncludeDebug"] = includeDebug;
pValues.Pairs["MaxEarnAmount"] = 5000000; // b* #1668783
pValues.Pairs["MaxXPAmount"] = 100000; // b* #1662039
return pValues;
}
function getSCFpsParamValues() {
var level = ($("#level").val()) ? $("#level").val() : null;
var matchType = ($("#match-type").val()) ? $("#match-type").val() : null;
var resolution = ($("#reoslution").val()) ? $("#resolution").val() : 100;
var freeroam = ($("#freeroam").is(":checked"));
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
if (!pValues)
return;
// Add the extra Spaw Points param values
pValues.Pairs["LevelIdentifier"] = level;
pValues.Pairs["MatchTypeNames"] = matchType;
pValues.Pairs["Resolution"] = resolution;
pValues.Pairs["FreeroamOnly"] = freeroam;
return pValues;
}
function getSCTopUsersParamValues() {
var upperXP = ($("#upper-xp").val() ? $("#upper-xp").val() : 0);
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
pValues.Pairs["UpperXPLimit"] = upperXP;
return pValues;
}
function getSCTableauParamValues() {
var platforms = ($("#rosplatforms").val()) ? $("#rosplatforms").val().join() : "";
// get the social club header filtering parameter values, headerAndFilters.headerType comes from local conf
var pValues = getSCParamValues();
pValues.Pairs["PlatformNames"] = platforms;
return pValues;
}
function getCsParamValues() {
var platform = ($("#platform").val()) ? $("#platform").val() : "";
var build = getHeaderBuild();
var buildConfig = ($("#build-config").val()) ? $("#build-config").val() : "";
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"PlatformName": platform,
"BuildIdentifier": build,
"BuildConfigName": buildConfig,
},
}
return pValues;
}
function getCsReportParamValues() {
var platform = ($("#platform").val()) ? $("#platform").val() : "";
var cutscene = ($("#cutscene").val()) ? $("#cutscene").val() : "";
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"PlatformName": platform,
"CutsceneName": cutscene,
},
}
return pValues;
}
function getCsPerParamValues() { // With Percentiles
var lowerPer = ($("#percentile-lower").val()) ? $("#percentile-lower").val() : "0";
var upperPer = ($("#percentile-upper").val()) ? $("#percentile-upper").val() : "100";
var gameTimes = ($("#game-times").val()) ? $("#game-times").val() : config.gameTimes.map(function(d) {return d.Value});
var pValues = getCsParamValues();
pValues.Pairs["LowerPercentileClamp"] = Number(lowerPer);
pValues.Pairs["UpperPercentileClamp"] = Number(upperPer);
// Get the first range in the array, split by - and get the first time number
pValues.Pairs["StartHour"] = Number(gameTimes[0].split("-")[0]);
// Get the last range in the array, split by - and get the last time number
pValues.Pairs["EndHour"] = Number(gameTimes.slice(-1)[0].split("-").slice(-1)[0]);
return pValues;
}
function getClParamValues() {
var platform = ($("#platform").val()) ? $("#platform").val() : "";
//var build = ($("#build").val()) ? $("#build").val() : "";
var build = getHeaderBuild();
var depth = ($("#depth-active").is(":checked"));
var camera = ($("#camera-approved").is(":checked"));
var lighting = ($("#lighting-approved").is(":checked"));
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"PlatformName": platform,
"BuildIdentifier": build,
"DepthOfFieldActive": depth,
"CameraApproved": camera,
"LightingApproved": lighting,
},
}
return pValues;
}
function getAsParamValues() {
var platform = ($("#platform").val()) ? $("#platform").val() : "";
var level = ($("#level").val()) ? $("#level").val() : "";
var fileTypes = ($("#file-types").val()) ? $("#file-types").val().join(",") : "";
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"PlatformName": platform,
"LevelIdentifier": level,
"FileTypeNames": fileTypes,
},
}
return pValues;
}
function getRsParamValues() {
var platform = ($("#platform").val()) ? $("#platform").val() : "";
var fileTypes = ($("#file-types").val()) ? $("#file-types").val().join(",") : "";
var resources = $("#resource-names").val();
var detailed = ($("#report-detailed").is(":checked"));
var start, end;
if ($("#utc-force").is(":checked")) { // UTC input forced
start = new Date(config.dateInputUTCFormat.parse($("input#date-from").val())).toISOString();
end = new Date(config.dateInputUTCFormat.parse($("input#date-to").val())).toISOString();
}
else { // Treat input as local time
start = new Date(config.dateInputFormat.parse($("input#date-from").val())).toISOString();
end = new Date(config.dateInputFormat.parse($("input#date-to").val())).toISOString();
}
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"PlatformName": platform,
"FileTypeNames": fileTypes,
"ResourceNames": resources,
"ReportDetail": detailed,
"StartDate": start,
"EndDate": end,
},
};
return pValues;
}
function getStatusParamValues() {
var platforms = ($("#rosplatforms").val()) ? $("#rosplatforms").val().join() : "";
var builds = getHeaderBuilds();
var gameTypes = ($("#game-types").val()) ? $("#game-types").val().join() : "";
var start = getDateString("date-from", $("#utc-force").is(":checked"));
var end = getDateString("date-to", $("#utc-force").is(":checked"));
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"PlatformNames": platforms,
"BuildIdentifiers": builds,
"GameTypeNames": gameTypes,
"StartDate": start,
"EndDate": end,
},
};
return pValues;
}
function getClipsParamValues() {
//var build = ($("#build").val()) ? $("#build").val() : "";
var build = getHeaderBuild();
//var builds = ($("#builds").val()) ? $("#builds").val().join(",") : "";
var builds = getHeaderBuilds();
var clipCategory = ($("#use-clip-category").is(":checked")) ? $("#clip-category").val() : null;
if (!builds)
builds = build;
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"BuildIdentifier": build,
"SourceBuildIdentifier": build,
"DataBuildIdentifiers": builds,
"ClipDictionaryCategoryName": clipCategory,
},
}
return pValues;
}
function getCashRepParamValues() {
//var build = ($("#build").val()) ? $("#build").val() : null;
var builds = getHeaderBuilds();
var gamertags = getGamertags();
//var accountIds = getAccountIds();
if (gamertags.length == 0) {
Sexy.alert(config.noUserText);
return;
}
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
//"BuildIdentifier" : build,
"BuildIdentifiers" : builds,
"GamerHandlePlatformPairs" : gamertags,
//"AccountId" : accountIds,
}
}
return pValues;
}
function getMapExpParamValues() {
var start, end;
if ($("#utc-force").is(":checked")) { // UTC input forced
start = new Date(config.dateInputUTCFormat.parse($("input#date-from").val())).toISOString();
end = new Date(config.dateInputUTCFormat.parse($("input#date-to").val())).toISOString();
}
else { // Treat input as local time
start = new Date(config.dateInputFormat.parse($("input#date-from").val())).toISOString();
end = new Date(config.dateInputFormat.parse($("input#date-to").val())).toISOString();
}
//var user = $("input#user").val();
var user = ($("input#user").val()) ? $("input#user").val() : null;
var hourOffset = 6;
var grouping = "DAY"; // DAY, WEEK, MONTH, YEAR
var forceUrlSuffix = "";
if ($("#filter-force").is(":checked"))
forceUrlSuffix = config.reportForceSuffix;
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"Date": start,
"StartDate": start,
"EndDate": end,
"Username": user,
"Grouping": grouping,
"HourOffset": hourOffset,
},
};
return pValues;
}
function getDTParamValues() {
var MAX_BUILD_SPLIT = 5;
//var MAX_GAMERTAGS = 10;
var dt_builds = ($("#dt-build").val()) ? $("#dt-build").val().join() : "";
var dt_platforms = ($("#dt-platform").val()) ? $("#dt-platform").val().join() : "";
var dt_users = $("#dt-users").tokenInput("get");
var dt_usernames = dt_users.map(function(d) {return d.name.split("(")[0]}).join();
// The #dt_users select value is the gamer tag and text is the username
var dt_gamerTags = dt_users.map(function(d) {
if (d.id)
return new String("<" + d.id + ">");
})
.join(",");
//if (!dt_gamerTags && $("#dt-platform-field").attr("disabled")) {
if (!dt_gamerTags && $("#dt-platform-field").hasClass("hidden")) {
// Sexy.alert("No Users selected!");
return;
}
//if ($("#dt-build-field").attr("disabled"))
if ($("#dt-build-field").hasClass("hidden"))
dt_builds = null;
//if ($("#dt-platform-field").attr("disabled"))
if ($("#dt-platform-field").hasClass("hidden"))
dt_platforms = null;
// Not used anymore
var exclude = ($("#exclude-user").is(":checked"));
var build_split = ($("#build-split").is(":checked"));
//var forceUrlSuffix = "";
//if ($("#filter-force").is(":checked"))
// forceUrlSuffix = config.reportForceSuffix;
var forceUrlSuffix = config.reportForceSuffix;
if (build_split && dt_builds) {
var pValues = [];
var builds = dt_builds.split(",").slice(0, MAX_BUILD_SPLIT);
//console.log(builds);
// Reversing so the newest is being drawn last at the graph
$.each(builds.reverse(), function(i, dt_build) {
pValues.push(
{
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"BuildIdentifiers" : dt_build,
"PlatformIdentifiers": dt_platforms,
//
"PlatformNames": dt_platforms,
"Users" : dt_usernames,
//"ExcludeUsers" : exclude,
"GamerHandlePlatformPairs": dt_gamerTags,
},
}
);
});
return pValues;
}
else {
var pValues = {
ForceUrlSuffix: forceUrlSuffix,
ElementKeyName: "Name",
ElementValueName: "Value",
Pairs: {
"BuildIdentifiers" : dt_builds,
"PlatformIdentifiers": dt_platforms,
//
"PlatformNames": dt_platforms,
"Users" : dt_usernames,
//"ExcludeUsers" : exclude,
"GamerHandlePlatformPairs": dt_gamerTags,
},
}
return pValues;
}
}
function initSvg(htmlId, height) {
//console.log(htmlId);
var svg = d3.select("#" + htmlId)
.append("svg:svg")
//.attr("pointer-events", "none");
if (typeof height !== "undefined")
svg.attr("height", height);
var dropShadowFilter = svg.append("svg:filter")
.attr("id", "dropShadow");
dropShadowFilter.append("svg:feOffset")
.attr("result", "offOut")
.attr("in", "SourceAlpha")
.attr('dx', 3)
.attr('dy', 3);
dropShadowFilter.append("svg:feGaussianBlur")
.attr("result", "blurOut")
.attr("in", "offOut")
.attr("stdDeviation", 3);
dropShadowFilter.append("svg:feBlend")
.attr("in", "SourceGraphic")
.attr("in2", "blurOut")
.attr("mode", "normal");
}
function cleanSvg(htmlId) {
var svg = d3.select("#" + htmlId)
.selectAll("g")
.transition()
.style("opacity", 0.01)
.remove();
}
function fadeOutGraph(htmlId) {
d3.select("#" + htmlId + " svg")
.selectAll("g")
.transition()
.duration(config.transitionDuration)
.style("opacity", 0.01)
.remove();
}
function addExportPngButton(pElementId) {
if (typeof canvg === "undefined") {
getScriptSync(config.webHost + "/libs/canvg/rgbcolor.js");
getScriptSync(config.webHost + "/libs/canvg/StackBlur.js");
getScriptSync(config.webHost + "/libs/canvg/canvg.js");
}
var elemenetID = "png-export-button";
$("#" + elemenetID).remove();
$("#" + pElementId).append(
$("<input />")
.attr("type", "button")
.attr("id", elemenetID)
.attr("name", elemenetID)
.attr("title", "Export graphs to png")
.val("Export to PNG")
.css("float", "right")
.addClass("red-button hand")
.click(exportToImage)
);
if ($.browser.msie)
$("#" + elemenetID)
.addClass("hidden");
}
function exportToImage() {
$("#content-body").find("svg").each(function(i, element) {
if ($(element).parent().hasClass("hidden")) // skip hidden elements b* #1665206
return;
var canvasId = "canvas-element-" + i;
$("#" + canvasId).remove();
//var width = ($(element).attr("width")) ? $(element).attr("width") : $(element).width();
//var height = ($(element).attr("height")) ? ($(element).attr("height")) : $(element).height();
var width = $(element).width();
var height = $(element).height();
$(element)
.parent()
.append(
$("<canvas>")
.attr("id", canvasId)
.addClass("hidden")
.attr("width", width)
.attr("height", height)
);
var svgMarkup = $("<div>").append(
$(element)
.clone()
.attr("width", width)
.attr("height", height)
)
.html();
canvg(canvasId, svgMarkup);
var canvas = document.getElementById(canvasId);
var img = canvas.toDataURL("image/png");
window.open(img);
});
}
function sortByIdentifierAsc(s1, s2) {
return s1.Identifier > s2.Identifier ? 1 : -1;
};
function sortByNameAsc(s1, s2){
return s1.Name > s2.Name ? 1 : -1;
};
function sortByIdentifierDesc(s1, s2){
return s1.Identifier > s2.Identifier ? -1 : 1;
};
function block() {
$.blockUI({
message: '<h1><img src="../images/ajax_load_black-orange.gif" />&nbsp;&nbsp;Please Wait ...</h1>',
centerY: 0,
css: {
border: 'none',
padding: '0.5em',
backgroundColor: '#000',
color: '#fcb131',
'border-radius': '5px',
opacity: 0.5,
top: '1em',
left: '',
right: '1em',
border: 'none',
baseZ: 2000,
}
});
}
function blockDt() {
block();
}
/*
function blockDt() {
$.blockUI({
message: '<div><img src="../images/ajax_load_gray-orange.gif" />&nbsp;&nbsp;Please Wait ...</div>',
centerY: 0,
css: {
'position': 'fixed',
'opacity': '0.7',
'padding': '0.5em',
'background-color': '#555555',
'color': '#fcb131',
'border-radius': '5px',
'top': '40%',
'left': '50%',
'margin-top': '-1.25em',
'margin-left': '-10em',
'width': '20em',
'height': '2.5em',
'z-index': '1500',
'font-family': '"Calibri", sans-serif',
'font-size': '20px',
'font-weight': 'bold',
'border': '1px solid rgba(255, 255, 255, 0.7)',
//baseZ: 2000,
}
});
}
*/
function unBlock() {
$.unblockUI();
}
function blockUIOnly() {
$.blockUI({ message: null, css:{backgroundColor: "#000", opacity: 0.5} });
}
function showProgressbar() {
$("#progress-bar").progressbar({value: 0});
$("#loading").fadeIn("normal");
//$.blockUI({ message: null, css:{backgroundColor: "#000", opacity: 0.5} });
blockUIOnly();
}
function hideProgressbar() {
$("#loading").fadeOut("fast");
$.unblockUI();
}
function updateProgressbar(value) {
$("#progress-bar").progressbar({value: value});
$("#progress-percent").text((value).toFixed(2) + "%");
}
function init() {
try {
checkRedirection();
// Add the project name and logo
//$("head title").text(project.name + $("head title").text());
//$("#frontpage-title").text(project.fullName + $("#frontpage-title").text());
//$("#frontpage-title-alt").text(project.fullName + $("#frontpage-title-alt").text());
/*
$("#frontpage-logo").append(
$("<img />")
.attr("src", project.logo.src)
.attr("title", project.logo.title)
);
*/
/*
$("body").append("<div id='loading'>Please Wait ... " +
"<div id='progress-bar'></div>" +
"<div id='progress-info'>Progress : <span id='progress-percent'></span><div>" +
"<div class='cancel'>" +
//"<label for='cancel-request' title='Check to Cancel'>Cancel </label>" +
"<input type='checkbox' id='cancel-request' class='hidden' />" +
"</div>" +
"</div>");
*/
$("head")
.append(
$("<meta>")
.attr("http-equiv", "cache-control")
.attr("content", "no-cache")
)
$("body")
.append(
$("<div />")
.attr("id", "loading")
.text("Please Wait ... ")
.append(
$("<div />")
.attr("id", "progress-bar")
)
.append(
$("<div />")
.attr("id", "progress-info")
.html("Progress : <span id='progress-percent'></span>")
)
.append(
$("<div />")
.addClass("cancel")
.html("<input type='checkbox' id='cancel-request' class='hidden' />")
.attr("title", "Cancel")
.click(function() { $("#cancel-request").prop("checked", true); })
)
);
$("#progress-bar").progressbar({value: 0});
// Populate the navigation menu from the config javascript object
populateNavigation(navigationItems);
initContent();
// Load antiscroll
getScriptSync(config.webHost + "/libs/antiscroll/antiscroll.js")
$(function () {
$(window).on("load resize", function() {
$("#nav-ul-wrap").css({
height: $(window).height() - $("#nav-logo").height(),
});
}).resize();
var scroller = $("#nav-ul-wrap").antiscroll().data("antiscroll");
$(window).resize(function() {
scroller.refresh();
});
});
if (isPrint()) {
loadAlternativeCss("print");
}
else
loadAlternativeCss();
}
catch(e) {
console.error(e);
}
finally {
//checkSupportedBrowser();
// For betting header
}
}
function isPrint() {
return getUrlVars()["print"];
}
function checkRedirection() {
if (config.redirect.from == window.location.host) {
alert("You will be redirected to the new stats server. Please update your bookmarks!");
window.location = window.location.protocol + "//" + config.redirect.to + window.location.pathname;
}
}
function populateNavigation(navigationItems) {
var serverType = getServerType();
$("#navigation")
//.addClass("antiscroll-wrap")
.append(
$("<div>")
.attr("id", "nav-logo")
.append(
$("<img />")
.attr("src", project.logo.src)
.attr("title", project.logo.title)
)
)
.append(
$("<div />")
.addClass("antiscroll-wrap")
.append(
$("<div />")
.attr("id", "nav-ul-wrap")
//.addClass("antiscroll-inner")
.append(
$("<ul />")
.addClass("antiscroll-inner")
.attr("id", "nav-ul")
)
)
);
$.each(navigationItems, function(i, navItem) {
$("<li />")
.css("display", function() {
return (
((navItem.hide) || ((config.serverType == config.serverTypeProd) && (navItem.notInProd)))
? "none"
: "inherit"
)
})
.append(
$("<a />")
.addClass(function() {return (navItem.href == config.currentFilename) ? "active" : ""; })
.addClass(function() {return (!navItem.subItems.length) ? "noChildren" : ""; })
.text(navItem.title)
.attr("href", navItem.href)
.attr("title", navItem.title)
)
.append($("<ul />")
.attr("id", i)
.css("display", "none"))
.appendTo("#nav-ul");
$.each(navItem.subItems, function(j, subItem) {
currentUL = $("#"+i);
$("<li />")
.css("display", function() {
return (
((subItem.hide) || ((config.serverType == config.serverTypeProd) && (subItem.notInProd)))
? "none"
: "inherit"
)
})
.append(
$("<a />")
.addClass(function() {return (subItem.href == config.currentFilename) ? "active" : ""; })
.addClass(function() {return (!navItem.subItems.length) ? "noChildren" : ""; })
.text(subItem.title)
.attr("href", subItem.href)
.attr("title", subItem.title)
)
.append($("<ul />")
.attr("id", i + "_" +j)
.css("display", "none"))
.appendTo(currentUL);
if (subItem.href == config.currentFilename) {
currentUL.parent().children("a").addClass("active");
currentUL.parent().addClass("expanded");
currentUL.css("display", "inherit");
}
if (typeof subItem.subItems === "undefined") return;
$.each(subItem.subItems, function(k, subSubItem) {
var currentSubUL = $("#"+ i + "_" + j);
$("<li />")
.css("display", function() {
return (
((subSubItem.hide) || ((config.serverType == config.serverTypeProd) && (subSubItem.notInProd)))
? "none"
: "inherit"
)
})
.append(
$("<a />")
.addClass(function() {if (subSubItem.href == config.currentFilename) return "active"; })
.text(subSubItem.title)
.attr("href", subSubItem.href)
.attr("title", subSubItem.title)
)
.appendTo(currentSubUL);
if (subSubItem.href == config.currentFilename) {
currentSubUL.parent().children("a").addClass("active");
currentSubUL.parent().addClass("expanded");
currentSubUL.parent().parent().parent().children("a").addClass("active");
currentSubUL.parent().parent().parent().addClass("expanded");
currentSubUL.css("display", "inherit");
currentSubUL.parent().parent().css("display", "inherit");
}
});
});
});
$("#navigation").find("a").click(function(e) {
if ($(this).attr("href") == "#") {
e.preventDefault();
$(this).next().slideToggle();
}
if ($(this).parent().hasClass("expanded")) // find the parent ul
$(this).parent().removeClass("expanded");
else
$(this).parent().addClass("expanded");
}); // End of click
}
function initContent() {
// Temp hack until all the pages adopt the new style
if (($("#content").find("#map-wrapper").length > 0) ||
($("#content").find("#report").length > 0))
return;
if ($("#content").find("#content-title").length == 0) {
$("#content")
.append(
$("<div>").attr("id", "content-title")
)
.append(
$("<div>").attr("id", "content-description")
)
.append(
$("<div>").attr("id", "content-body")
);
}
// Adjust the height of the content automatically
$("#content").height($(window).height() - $("#header").height() - 50); // 50 is the padding top/bottom
$(window).resize(function() {
$("#content").height($(window).height() - $("#header").height() - 50); // 50 is the padding top/bottom
});
updateTitle();
}
function updateTitle() {
$("head title").text("");
$("#content-title").text("");
var titleTokens = [project.name, navigationTitle];
$("#navigation").find(".active").each(function(i, d){
titleTokens.push($(d).attr("title"));
});
//console.log(titleTokens);
$("head title").text(titleTokens.join(" : "));
var html = titleTokens.slice(0, -1).join(" : ")
html += (" : <span class='last'>" + titleTokens.slice(-1)[0] + "</span>");
$("#content-title").html(html);
//$("#frontpage-title").text([$("#frontpage-title").text(), navigationTitle].join(" : "));
//$("#frontpage-title-alt").text([$("#frontpage-title-alt").text(), navigationTitle].join(" : "));
}
function emptyNavigation() {
$("#navigation").empty();
}
function removeNavigation() {
$("#nav-ul").remove();
}
function initAndCall(callback) {
init();
// call the callback function when everything is finished
callback();
}
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m, key, value) {
vars[key] = value;
});
return vars;
}
function loadAlternativeCss(cssType) {
if (!cssType)
cssType = getServerType();
if (config.styleOptions.hasOwnProperty(cssType)) {
$("head")
.append(
$("<link />")
.attr({
rel: "stylesheet",
type: "text/css",
href: config.styleOptions[cssType]
})
);
}
}
function getServerType() {
if (!config.serverType) {
// Load the script code synchronously
$.ajaxSetup({async: false});
$.getScript(config.serverTypeScript)
.done(function(script, textStatus) {
config.serverType = serverType;
});
$.ajaxSetup({async: true});
}
return config.serverType;
}
function getScriptSync(url) {
// Load the script code synchronously
$.ajaxSetup({async: false});
$.getScript(url)
.done(function(script, textStatus) {});
$.ajaxSetup({async: true});
};
function storeLocalObject(key, obj) {
//Stores the JavaScript object as a string
//console.log(JSON.stringify(obj));
localStorage.setItem(key, JSON.stringify(obj));
//console.log("stored : " + key + " - " + JSON.stringify(obj));
}
function retrieveLocalObject(key) {
// Parses the saved string into a JavaScript object again
//console.log("retrieved : " + key + " - " + localStorage.getItem(key));
return JSON.parse(localStorage.getItem(key));
}
//Available filters is an array of boolean values provided by each page's config file
function initHeaderAndFilters(headerAndFilters) {
globalHeaderAndFilters = headerAndFilters;
if (!headerAndFilters) {
$("#header").css("display", "none");
}
else {
// Load the header html code synchronously
jQuery.ajaxSetup({async: false});
$("#header").load(config.headerOptions[headerAndFilters.headerType].filename);
jQuery.ajaxSetup({async: true});
$("#filter").addClass("red-button hand"); // apply class to the button
// Set the header height dynamically
$("#header").height(config.headerOptions[headerAndFilters.headerType].height);
// Sync nav logo's height with the header
$("#nav-logo").height(config.headerOptions[headerAndFilters.headerType].height);
// Disable/Enable the header fields base on each page's given options
$.each(headerAndFilters.disabledFields, function(i, filterBoolean) {
if (typeof filterBoolean === "boolean") {
$("#" + config.headerOptions[headerAndFilters.headerType].fields[i].fieldId)
//.attr("disabled", filterBoolean)
//.addClass((filterBoolean) ? "disabled" : "");
.addClass((filterBoolean) ? "hidden" : "");
}
else { // filterboolean is array - must match the length of the sub fields
$("#" + config.headerOptions[headerAndFilters.headerType].fields[i].fieldId).children().each(function(j, e) {
$(e).attr("disabled", filterBoolean[j])
//.addClass((filterBoolean[j]) ? "disabled" : "");
.addClass((filterBoolean[j]) ? "hidden" : "");
});
/*
$.each(config.headerOptions[headerAndFilters.headerType].fields[i].elementsId, function(j, elementId) {
$("#" + elementId)
.attr("disabled", filterBoolean[j])
.addClass((filterBoolean[j]) ? "disabled" : "");
});
*/
}
});
populateHeader(headerAndFilters);
}
/*
$("#navigation").append(
"<div id='nav-toggle'><a href='#' title='Toggle Navigation Menu'></a></div>"
);
$("#header").append(
"<div id='header-toggle'><a href='#' title='Toggle Options Header'></a></div>"
);
*/
// Show/Hide the header/nav according to local settings and keep the object in a temp var
var localHeaderNavSettings = retrieveAndSetHeaderAndNavSettings(headerAndFilters);
var windowEventTimeout = 500;
$("#header-toggle").click(function(e) {
e.preventDefault();
// If the collapse image clicked (arrow up), increase content and nav
if ($("#header-toggle").hasClass("toggle-arrow-up")) {
hideHeader(animate = true);
localHeaderNavSettings.header = false;
}
// Else revert to normal heights/positions
else {
showHeader(animate = true);
localHeaderNavSettings.header = true;
}
storeLocalHeaderAndNavSettings(localHeaderNavSettings);
setTimeout("$(window).resize()", windowEventTimeout);
});
$("#nav-toggle").click(function(e) {
e.preventDefault();
//$("#navigation").toggle("slide", { direction: "left" }, "slow");
if ($("#nav-toggle").hasClass("toggle-arrow-left")) {
hideNav(animate = true);
localHeaderNavSettings.nav = false;
}
else {
showNav(animate = true);
localHeaderNavSettings.nav = true;
}
storeLocalHeaderAndNavSettings(localHeaderNavSettings);
setTimeout("$(window).resize()", windowEventTimeout);
});
if (isPrint()) {
headerAndFilters = null;
hideHeader();
hideNav();
}
}
function getCurrentHeaderHeight() {
return (globalHeaderAndFilters) ? config.headerOptions[globalHeaderAndFilters.headerType].height : 0;
}
function hideHeader(animate) {
if (typeof headerAndFilters === "undefined" || headerAndFilters == null)
return;
$("#header-toggle").removeClass("toggle-arrow-up").addClass("toggle-arrow-down");
if (animate) {
$("#header").animate({
top: (-1*config.headerOptions[headerAndFilters.headerType].height)
}, "slow");
$("#content").animate({top: (headerNavProperties.headerBottomMargin)}, "slow");
}
else {
$("#header").css({
top: (-1*config.headerOptions[headerAndFilters.headerType].height)
});
$("#content").css({top: (headerNavProperties.headerBottomMargin)});
}
$("#content").css({
height: $(window).height() - (2*headerNavProperties.headerBottomMargin)
});
}
function showHeader(animate) {
$("#header-toggle").removeClass("toggle-arrow-down").addClass("toggle-arrow-up");
if (animate) {
$("#header").animate({top: headerNavProperties.headerShowTop}, "slow");
$("#content").animate({
top: (config.headerOptions[headerAndFilters.headerType].height + headerNavProperties.headerBottomMargin)
}, "slow");
}
else {
$("#header").css({top: headerNavProperties.headerShowTop});
$("#content").animate({
top: (config.headerOptions[headerAndFilters.headerType].height + headerNavProperties.headerBottomMargin)
});
}
$("#content").css({height: $(window).height()
- (config.headerOptions[headerAndFilters.headerType].height + 2*headerNavProperties.headerBottomMargin)
});
}
function hideNav(animate) {
$("#nav-toggle").removeClass("toggle-arrow-left").addClass("toggle-arrow-right");
if (animate) {
$("#navigation").animate({left: headerNavProperties.navHideLeft}, "slow");
$("#header").animate({
left: headerNavProperties.headerNavHideLeft,
width: headerNavProperties.headerNavHideWidth
}, "slow");
$("#content").animate({
left: headerNavProperties.contentNavHideLeft,
width: headerNavProperties.contentNavHideWidth
}, "slow");
}
else {
$("#navigation").css({left: headerNavProperties.navHideLeft});
$("#header").css({
left: headerNavProperties.headerNavHideLeft,
width: headerNavProperties.headerNavHideWidth
});
$("#content").css({
left: headerNavProperties.contentNavHideLeft,
width: headerNavProperties.contentNavHideWidth
});
}
}
function showNav(animate) {
$("#nav-toggle").removeClass("toggle-arrow-right").addClass("toggle-arrow-left");
if (animate) {
$("#navigation").animate({left: headerNavProperties.navShowLeft}, "slow");
$("#header").animate({
left: headerNavProperties.headerNavShowLeft,
width: headerNavProperties.headerNavShowWidth
}, "slow");
$("#content").animate({
left: headerNavProperties.contentNavShowLeft,
width: headerNavProperties.contentNavShowWidth
}, "slow");
}
else {
$("#navigation").css({left: headerNavProperties.navShowLeft});
$("#header").css({
left: headerNavProperties.headerNavShowLeft,
width: headerNavProperties.headerNavShowWidth
});
$("#content").css({
left: headerNavProperties.contentNavShowLeft,
width: headerNavProperties.contentNavShowWidth
});
}
}
function populateHeader(headerAndFilters) {
//block();
$.each(config.headerOptions[headerAndFilters.headerType].fields, function(i, field) {
if (field.fieldId == "builds-field")
populateAllBuilds({elementId: "builds", async: false});
if (field.fieldId == "build-field")
populateAllBuilds({elementId: "build", async: false});
else if (field.fieldId == "dates-builds-field") {
populateAllBuilds({elementId: "builds", async: false});
populateDatesBuildsOptions("dates-builds");
}
else if (field.fieldId == "build-config-field")
populateBuildConfigs();
else if ((field.fieldId == "platforms-field") || (field.fieldId == "platform-field"))
populatePlatforms();
else if ((field.fieldId == "rosplatforms-field") || (field.fieldId == "rosplatform-field"))
populateROSPlatforms();
else if (field.fieldId == "level-field")
populateLevels();
else if (field.fieldId == "resolution-field")
populateResolutions();
else if (field.fieldId == "locations-field")
populateLocations();
else if (field.fieldId == "gamers-field") {
var headerStoreName = (config.headerOptions[headerAndFilters.headerType].storeName) ?
config.headerOptions[headerAndFilters.headerType].storeName
: headerAndFilters.headerType;
var localData = retrieveLocalObject(config.restHost + headerStoreName);
tabularise("gamers-field", (localData) ? localData["gamers-field"] : null);
populateSCUsers();
populateSCUserGroups();
populateGamertags();
populateGamertagGroups();
populateCrews();
}
/*
else if (field.fieldId == "gamers-betting-field") {
var headerStoreName = (config.headerOptions[headerAndFilters.headerType].storeName) ?
config.headerOptions[headerAndFilters.headerType].storeName
: headerAndFilters.headerType;
var localData = retrieveLocalObject(config.restHost + headerStoreName);
tabularise("gamers-betting-field", (localData) ? localData["gamers-betting-field"] : null);
populateGamertags();
populateGamertagGroups();
}
*/
else if (field.fieldId == "gamertags-field") {
populateGamertags();
}
else if (field.fieldId == "gamer-group-field") {
populateGamerGroups();
}
else if (field.fieldId == "creators-field") {
populateCreators();
}
else if (field.fieldId == "missions-field") {
$("#freemode-category").change(populateMissions);
$("#freemode-ugcstatus").change(populateMissions);
populateMissions();
}
else if (field.fieldId == "deathmatch-field") {
populateDeathmatch();
}
else if (field.fieldId == "match-type-field") {
populateMatchTypes();
}
else if (field.fieldId == "game-types-field")
populateGameTypes();
else if (field.fieldId == "character-field")
populateCharacters();
else if ((field.fieldId == "freemode-categories-field") || (field.fieldId == "freemode-category-field"))
populateFreemodeCategories();
else if (field.fieldId == "freemode-ugcstatus-field")
populateUGCStatus();
else if (field.fieldId == "user-field")
populateExportUsers();
else if (field.fieldId == "dt-build-field")
populatePlaythroughsBuilds();
else if (field.fieldId == "dt-platform-field")
populatePlaythroughsPlatforms();
else if (field.fieldId == "dt-users-field")
populatePlaythroughsUsers();
else if (field.fieldId == "file-types-field")
populateFileTypes();
else if (field.fieldId == "game-times-field")
populateGameTimes();
else if (field.fieldId == "date-grouping-field")
populateDateGrouping();
else if (field.fieldId == "cutscene-field")
populateCutscenes();
else if (field.fieldId == "clip-category-field")
populateClipCategories();
});
//unBlock();
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
$("input#date-from").datetimepicker({
dateFormat: config.datePickerFormat,
timeFormat: config.timePickerFormat,
maxDate: new Date(),
});
$("input#date-to").datetimepicker({
dateFormat: config.datePickerFormat,
timeFormat: config.timePickerFormat,
maxDate: tomorrow,
});
//
$("input#created-date-from").datetimepicker({
dateFormat: config.datePickerFormat,
timeFormat: config.timePickerFormat,
maxDate: new Date(),
});
$("input#created-date-to").datetimepicker({
dateFormat: config.datePickerFormat,
timeFormat: config.timePickerFormat,
maxDate: tomorrow,
});
var timezoneOffset = new Date().getTimezoneOffset()/60; // hours offset from utc
// reverse the offset and the sign, this happens cause timezoneOffset is the hours difference
// form our current timezone to Utc and we need the opposite
var timezoneString = "UTC" + ((timezoneOffset>0) ? "-" : "+") + -1*timezoneOffset;
$("#dates-field legend span").text("Dates (" + timezoneString + "):");
retrieveAndSetLocalHeaderOptions(headerAndFilters);
$("body input").focus(function() {
$(this).select();
});
$("#header input").keypress(function(e) {
if ($(this).attr("id") == "section" ||
$(this).attr("id") == "token-input-sc-users" ||
$(this).attr("id") == "token-input-sc-user-groups" ||
$(this).attr("id") == "token-input-gamertags" ||
$(this).attr("id") == "token-input-gamertag-groups" ||
$(this).attr("id") == "token-input-crews" ||
$(this).attr("id") == "token-input-dt-users" ||
$(this).attr("id") == "token-input-missions" ||
$(this).attr("id") == "token-input-creators")
return;
if (e.which == 13) {
$("#filter").trigger("click");
}
});
$("#filter")
.click(function() {
storeLocalHeaderOptions(headerAndFilters);
//hideHeader(animate=true);
});
}
function retrieveAndSetLocalHeaderOptions(headerAndFilters) {
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
var defaultHeaderData = {
"platform" : ["PS3"],
"platforms" : ["PS3", "Xbox360"],
"locations" : [],
"age-min" : "",
"age-max" : "",
"sc-users" : [],
"gamertags" : [],
"game-type": [],
"date-from" : $.datepicker.formatDate(config.datePickerFormat, yesterday) + " 00:00",
"date-to" : $.datepicker.formatDate(config.datePickerFormat, new Date()) + " 00:00",
"utc-force" : true,
"build" : ["-1"],
"builds" : ["-1"],
"cwp" : [0],
"build-config" : ["Beta"],
"percentile-lower" : "0",
"percentile-upper" : "100",
"radio-checked": "dates-field", // for default radio button selection
"upper-xp" : 900000,
"time-since-spawn" : 10,
"section": "",
"user": "",
"time-since-spawn": "10",
// Difficulty tracking
"dt-build" : [],
"dt-platform" : [],
"dt-user" : [],
"last_modified" : new Date(),
};
var headerStoreName = (config.headerOptions[headerAndFilters.headerType].storeName) ?
config.headerOptions[headerAndFilters.headerType].storeName
: headerAndFilters.headerType;
var headerData = retrieveLocalObject(config.restHost + headerStoreName);
if (headerData) {
var lastModified = new Date(headerData.last_modified);
// Check for expiration
if (datesDiffInSecs(new Date(), lastModified) > config.storageExpirePeriod) {
//console.log("storage expired");
headerData = defaultHeaderData;
}
}
else
headerData = defaultHeaderData;
$.each(config.headerOptions[headerAndFilters.headerType].fields, function(i, field) {
//if ($("#" + field.fieldId).is(":disabled"))
// return // continue the fields loop
/*
// If the field has a radio button and it's prefered as default
if (field.hasRadio && (headerData["radio-checked"] == field.fieldId)) {
// If the field is not disabled
if (!$("#" + field.fieldId).attr("disabled")) {
// check the radio button
$("#" + field.fieldId + " legend input:radio").prop("checked", true);
}
// If the default radio is disabled identify the alternative option
else {
var alternativeField;
if (field.fieldId == "dates-field") {
alternativeField = "builds-field";
}
else if (field.fieldId == "builds-field") {
alternativeField = "dates-field";
}
// And if it's not disabled as well, select it
if (!$("#" + alternativeField).attr("disabled")) {
$("#" + alternativeField + " legend input:radio").prop("checked", true);
}
}
}
*/
$.each(field.elementsId, function(i, elementId) {
if ($("#" + elementId).is("input")) {
// token input
if ($("#" + elementId).hasClass("token-input")) {
if (!headerData[elementId])
return;
$.each(headerData[elementId], function(i, elementObj) {
$("#" + elementId).tokenInput("add", elementObj);
});
}
else if ($("#" + elementId).is(":checkbox")) {
$("#" + elementId).prop("checked", headerData[elementId]);
}
else {
$("#" + elementId).val(headerData[elementId]);
}
}
else if ($("#" + elementId).is("select")){
$("#" + elementId + " > option").each(function(i) {
if ($.inArray($(this).val(), headerData[elementId]) != -1)
$(this).attr("selected", true);
else
$(this).attr("selected", false);
});
}
});
});
// For showing/hiding the dates/builds/cwt
if (!$("#dates-builds").parent().hasClass("hidden"))
updateDateBuildFields("dates-builds");
}
function storeLocalHeaderOptions(headerAndFilters) {
var headerStoreName = (config.headerOptions[headerAndFilters.headerType].storeName) ?
config.headerOptions[headerAndFilters.headerType].storeName
: headerAndFilters.headerType;
var localData = retrieveLocalObject(config.restHost + headerStoreName);
var headerData = (localData) ? localData : {};
$.each(config.headerOptions[headerAndFilters.headerType].fields, function(i, field) {
//console.log($("#" + field.fieldId + " legend input:radio"));
if (field.hasRadio && $("#" + field.fieldId + " legend input:radio").is(":checked"))
headerData["radio-checked"] = field.fieldId;
$.each(field.elementsId, function(i, elementId) {
// Stores the value for inputs and the selected options array for selects
//console.log(elementId);
//console.log(typeof $("#" + elementId).val());
if ((typeof $("#" + elementId).val() == "string") && $("#" + elementId).is("select"))
headerData[elementId] = [$("#" + elementId).val()];
else if ($("#" + elementId).hasClass("token-input")) {
if ($("#" + elementId).parent().css("display") != "none") // save the selected tab
headerData[field.fieldId] = i;
headerData[elementId] = $("#" + elementId).tokenInput("get");
}
else if ($("#" + elementId).is(":checkbox"))
headerData[elementId] = $("#" + elementId).is(":checked");
else
headerData[elementId] = $("#" + elementId).val();
});
});
//console.log(headerData);
headerData.last_modified = new Date();
storeLocalObject(config.restHost + headerStoreName, headerData);
}
function checkForEmptyHeaderFields() {
}
function retrieveHeaderAndNavSettings() {
var defaultHeaderNavSettings = {
header: true,
nav: true,
};
var headerNavSettings = retrieveLocalObject(headerNavProperties.localStoragekey);
headerNavSettings = (headerNavSettings) ? headerNavSettings : defaultHeaderNavSettings;
return headerNavSettings;
}
function retrieveAndSetHeaderAndNavSettings(headerAndFilters) {
/*
var defaultHeaderNavSettings = {
header: false,
nav: true,
};
var headerNavSettings = retrieveLocalObject(headerNavProperties.localStoragekey);
headerNavSettings = (headerNavSettings) ? headerNavSettings : defaultHeaderNavSettings;
*/
headerNavSettings = retrieveHeaderAndNavSettings();
/*
// css hides the header by default so check if it needs to be expanded
if (headerNavSettings.header && ($("#header").css("display") != "none")) {
showHeader();
}
else {
hideHeader();
}
// css show the nav by default so check if it needs to be hidden
if (!headerNavSettings.nav) {
hideNav();
}
else
showNav();
*/
windowEventTimeout = 500;
if (headerAndFilters) {
showHeader();
/*
$(window).resize(function() {
setTimeout(showHeader, windowEventTimeout);
});
*/
}
showNav();
return headerNavSettings;
}
function storeLocalHeaderAndNavSettings(headerNavSettings) {
storeLocalObject(headerNavProperties.localStoragekey, headerNavSettings);
}
function tabularise(elementId, selected) {
if (!selected)
selected = 0; // select first element by default
deselectAll(elementId);
$("#" + elementId).find("li").each(function(i, item) {
var link = $(item).find("a");
link.click(function(e) {
e.preventDefault();
deselectAll(elementId);
$(this).addClass("active");
$($(this).attr("href")).removeClass("hidden");
// hide/reset the token input - b*#1429040
$(".token-input-dropdown-facebook").hide();
$(".token-input-input-token-facebook input").val("");
});
if (i == selected) {
link.addClass("active");
$(link.attr("href")).removeClass("hidden");
}
});
function deselectAll(elementId) {
$("#" + elementId).find("li").find("a").each(function(j, a) {
$(this).removeClass("active");
$($(this).attr("href")).addClass("hidden");
})
}
}
function populateLevels() {
$.ajax({
url: config.restHost + config.levelsAll,
type: "GET",
data: {},
dataType: "xml",
async: false,
success: function(xml, textStatus, jqXHR) {
var levels = convertLevelsXml(xml);
$.each(levels, function(i, level) {
$("select#level").append(
$("<option />")
.text(level.Name)
.val(level.Identifier)
.attr("title", level.Name)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
}
function convertLevelsXml(xml) {
var elementsArray = [];
$(xml).find("Level").each(function(){
var element = {
Id: $(this).find("Id").text(),
CreatedOn: $(this).find("CreatedOn").text(),
ModifiedOn: $(this).find("ModifiedOn").text(),
Name: $(this).find("Name").text(),
Identifier: $(this).find("Identifier").text(),
LevelIdx: $(this).find("LevelIdx").text(),
}
elementsArray.push(element);
});
return elementsArray;
}
function populateLocations() {
$("select#locations").append(
$("<option />")
.text("All")
.val(null)
.attr("title", "All")
);
$.ajax({
url: config.restHost + config.SCCountries,
type: "GET",
data: {},
dataType: "json",
async: false,
success: function(result, textStatus, jqXHR) {
$.each(result, function(i, location) {
$("select#locations").append(
$("<option />")
.text(location.Name)
.val(location.Code)
.attr("title", location.Name)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
}
function populateSCUsers() {
$("#sc-users").tokenInput(
config.restHost + config.SCVerticaUsersSearch,
{
theme: "facebook",
hintText: "Type at least 3 characters to start searching",
searchDelay: 1000,
method: "GET",
queryParam: "name",
minChars: 3,
//preventDuplicates: true,
onResult: function(result) {
return result.map(
function(d) {return {"name": d}; }
)
.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : -1});
},
//propertyToSearch: null,
//resultsFormatter: function(item){return item},
//tokenFormatter: function(item) { return "<li><p>" + item.first_name + " <b style='color: red'>" + item.last_name + "</b></p></li>" }
}
);
}
function populateSCUserGroups() {
$("#sc-user-groups").tokenInput(
config.restHost + config.SCVerticaUsersGroups,
{
theme: "facebook",
hintText: "Type text to get matched group names",
searchDelay: 1000,
method: "GET",
queryParam: "name",
minChars: 0,
//preventDuplicates: true,
onResult: function(result) {
var input = $("#token-input-sc-user-groups").val();
var re = new RegExp(input, "i");
var filteredResult = [];
result.map(
function(d) {
if (re.test(d))
filteredResult.push({ "name": d });
});
filteredResult.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : -1});
return filteredResult;
},
}
);
}
function populateGamertags() {
rosPlatformsDict = getRosPlatformsDict();
$("#gamertags").tokenInput(
config.restHost + config.VerticaGamersSearch,
{
theme: "facebook",
hintText: "Type at least 3 characters to start searching",
//searchDelay: 1000,
method: "GET",
queryParam: "name",
minChars: 3,
//preventDuplicates: true,
onResult: function(result) {
return result.map(
function(d) {
return {
name: d.GamerHandle + "(" + rosPlatformsDict[d.Platform] + ")",
//id: rosPlatformsDict[d.Platform],
id: d.Id,
};
})
.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : -1});
},
}
);
}
function getGamertags() {
var gamertags = $("#gamertags").tokenInput("get");
gamertags = gamertags.map(function(d) {
var nameSplit = d.name.split("("); // Split on the opening brucket
return "<" + nameSplit[0] + "|" + nameSplit[1].slice(0, - 1) + ">"; // construct the gamertag
})
.join();
return gamertags;
}
function getAccountIds() {
var accountIds = $("#gamertags").tokenInput("get");
console.log(accountIds);
accountIds = accountIds.map(function(d) {
return d.id;
})
.join();
return accountIds;
}
function getGamerAccountDict() {
var gamerAccountDict = {};
var gamerObjects = $("#gamertags").tokenInput("get");
gamerObjects.map(function(d) {
if (!gamerAccountDict.hasOwnProperty(d.id)) {
gamerAccountDict[d.id] = d.name.split("(")[0];
}
});
return gamerAccountDict;
}
function populateGamertagGroups() {
$("#gamertag-groups").tokenInput(
config.restHost + config.VerticaGamersGroups,
{
theme: "facebook",
hintText: "Type text to get matched group names",
searchDelay: 1000,
method: "GET",
queryParam: "name",
minChars: 0,
//preventDuplicates: true,
onResult: function(result) {
var input = $("#token-input-gamertag-groups").val();
var re = new RegExp(input, "i");
var filteredResult = [];
result.map(
function(d) {
if (re.test(d.Name))
filteredResult.push({ "name": d.Name });
});
filteredResult.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : -1});
return filteredResult;
},
}
);
}
function populateCrews() {
$("#crews").tokenInput(
config.restHost + config.VerticaCrewsSearch,
{
theme: "facebook",
hintText: "Type text to get matched group names",
searchDelay: 1000,
method: "GET",
queryParam: "name",
minChars: 2,
//preventDuplicates: true,
onResult: function(result) {
return result.map(
function(d) {
return {
name: d.Name,
id: d.Id,
};
})
.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : -1});
},
}
);
}
function populateMissions() {
var rosPlatformsDict = getRosPlatformsDict();
var customUrl = "";
var category = ($("#freemode-category").val()) ? $("#freemode-category").val() : null;
var ugcStatus = ($("#freemode-ugcstatus").val()) ? $("#freemode-ugcstatus").val() : null;
if (category)
customUrl += ("&category=" + category);
if (ugcStatus)
customUrl += ("&isPublished=" + ugcStatus);
if (customUrl)
customUrl = "?" + customUrl;
//console.log(customUrl);
$("#missions").empty();
$("#missions-field").find("ul").remove();
$(".token-input-dropdown-facebook").hide();
$(".token-input-input-token-facebook input").val("");
$("#missions").tokenInput(
config.restHost + config.VerticaMissionsSearch + customUrl,
{
theme: "facebook",
hintText: "Type at least 3 characters to start searching",
//searchDelay: 1000,
method: "GET",
//queryParam: "name",
queryParam: "name",
minChars: 3,
//preventDuplicates: true,
onResult: function(result) {
return result.map(
function(d) {
return {
name: d.Name + " (" + d.Creator
+ ((rosPlatformsDict[d.CreatorPlatform]) ? ("[" + rosPlatformsDict[d.CreatorPlatform] + "]") : "")
+ " - v." + d.Version + ")",
id: d.Identifier,
};
})
.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? -1 : 1});
},
}
);
}
function populateDeathmatch() {
var rosPlatformsDict = getRosPlatformsDict();
$("#deathmatch").tokenInput(
config.restHost + config.VerticaMissionsSearch,
{
theme: "facebook",
hintText: "Type at least 3 characters to start searching",
//searchDelay: 1000,
method: "GET",
queryParam: "name",
minChars: 3,
//preventDuplicates: true,
tokenLimit: 1,
onResult: function(result) {
return result.map(
function(d) {
return {
name: d.Name + " (" + d.Creator
+ ((rosPlatformsDict[d.CreatorPlatform]) ? ("[" + rosPlatformsDict[d.CreatorPlatform] + "]") : "")
+ " - v." + d.Version + ")",
id: d.Identifier,
};
})
.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? -1 : 1});
},
}
);
}
function populateCreators() {
var rosPlatformsDict = getRosPlatformsDict();
$("#creators").tokenInput(
config.restHost + config.VerticaGamersSearch,
{
theme: "facebook",
hintText: "Type at least 3 characters to start searching",
//searchDelay: 1000,
method: "GET",
queryParam: "name",
minChars: 3,
//preventDuplicates: true,
onResult: function(result) {
return result.map(
function(d) {
return {
name: d.GamerHandle + "(" + rosPlatformsDict[d.Platform] + ")",
id: "<" + d.UserId + "|" + rosPlatformsDict[d.Platform] + ">",
//id: rosPlatformsDict[d.Platform],
};
})
.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : -1});
},
}
);
}
function getCreators() {
if ($("#creators").size() == 0)
return [];
var gamertags = $("#creators").tokenInput("get");
gamertags = gamertags.map(function(d) {
return d.id;
}).join(",");
//console.log(gamertags);
return gamertags;
}
// Same as above but for select element
function getGamerGroups() {
var obj = {
url: config.restHost + config.VerticaGamersGroups,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function populateGamerGroups() {
var gamerGroups = getGamerGroups();
var dfunc = {
getValue: function(d) { return JSON.stringify(d.Gamers); },
getTitle: function(d) { return d.Name; },
getText: function(d) { return d.Name; },
};
populateSelectElements(["gamer-group"], gamerGroups, dfunc);
}
function getGamertagsFromGroups(groups) {
var gamertags = [];
var rosPlatformsDict = getRosPlatformsDict();
var obj = {
url: config.restHost + config.VerticaGamersGroups,
data: {},
method: "GET",
dataType: "json",
async: false,
};
var allGroups = getAjaxData(obj);
$.each(allGroups, function(i, group) {
if ($.inArray(group.Name, groups) != -1) {
gamertags = gamertags.concat(
group.Gamers.map(function(d) {
return ("<" + d.GamerHandle + "|" + rosPlatformsDict[d.Platform] + ">");
})
);
}
});
return gamertags;
}
function getGamertagsFromCrews(crews) {
var gamertags = [];
var rosPlatformsDict = getRosPlatformsDict();
$.each(crews, function(i, crew) {
var obj = {
url: config.restHost + config.VerticaCrews + "/" + crew.id + "/Members",
data: {},
method: "GET",
dataType: "json",
async: false,
};
gamertags = gamertags.concat(getAjaxData(obj));
});
gamertags = gamertags.map(function(d) {
return ("<" + d.GamerHandle + "|" + rosPlatformsDict[d.Platform] + ">");
});
return gamertags;
}
/*
function populateGamers() {
$.ajax({
url: config.restHost + config.SCGroupsAndUsers,
type: "GET",
data: {},
dataType: "json",
async: false,
success: function(result, textStatus, jqXHR) {
//console.log(result);
var gamerNames = result.map(function(d) {return d.Name});
$("#gamer").autocomplete({
source: gamerNames,
minlength: 2,
change: function(e, ui) {
// when the typed item is not in the list, then ui.item will be null
if (!ui.item)
$("#gamer").val("");
},
})
.keypress(function(e) {
// when pressing enter check if the value is valid, otherwise set to null
if (e.which == 13) {
if ($.inArray($(this).val(), gamerNames) == -1)
$(this).val("");
}
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
}
*/
/*
function populateGameTypes() {
$.ajax({
url: config.restHost + config.gametypesAll,
type: "GET",
data: {},
dataType: "xml",
async: false,
success: function(xml, textStatus, jqXHR) {
var gametypes = convertGametypesXml(xml);
$.each(gametypes, function(i, gametype) {
$("select#game-types").append(
$("<option />")
.text(gametype.Value)
.val(gametype.Value)
.attr("title", gametype.Value)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
}
*/
function populateExportUsers() {
$.ajax({
url: config.restHost + config.mapExportStatsUsers,
type: "GET",
data: {},
dataType: "xml",
async: false,
success: function(xml, textStatus, jqXHR) {
var exportUsers = getExportUsersList(xml);
var defaultVal;
//console.log(exportUsers);
$("#user").autocomplete({
source: exportUsers,
minlength: 2,
change: function(event, ui) {
// when the typed item is not in the list, then ui.item will be null
if (!ui.item)
$("#user").val("");
},
})
.keypress(function(e) {
// when pressing enter check if the value is valid, otherwise set to null
if (e.which == 13) {
if ($.inArray($(this).val(), exportUsers) == -1)
$(this).val("");
}
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
}
function populatePlaythroughsBuilds() {
$.ajax({
url: config.restHost + config.playthroughsBuilds,
type: "GET",
dataType: "json",
data: {},
async: false,
success: function(json, textStatus, jqXHR) {
// Order the build DESC
json.sort(function(a, b) {return (a>b) ? -1 : 1})
$.each(json, function(i, build) {
$("select#dt-build").append(
$("<option />")
.text(build)
.val(build)
.attr("title", build)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
}
function populatePlaythroughsPlatforms() {
$.ajax({
url: config.restHost + config.playthroughsPlatforms,
type: "GET",
dataType: "xml",
data: {},
async: false,
success: function(xml, textStatus, jqXHR) {
$(xml).find("Platform").each(function() {
$("select#dt-platform").append(
$("<option />")
.text($(this).text())
.val($(this).text())
.attr("title", $(this).text())
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
}
function populatePlaythroughsUsers() {
var rosPlatformsDict = getRosPlatformsDict();
$("#dt-users").tokenInput(
config.restHost + config.playthroughsUsers,
{
theme: "facebook",
hintText: "Type text to select from the list",
searchDelay: 1000,
minChars: 0,
//propertyToSearch: "Username",
tokenLimit: 8,
// preventDuplicates: true,
onResult: function(result) {
var input = $("#token-input-dt-users").val();
var re = new RegExp(input, "i");
var filteredResult = [];
result.map(
function(d) {
if (re.test(d.Username))
filteredResult.push(
{
"name": d.Username + ((rosPlatformsDict[d.Platform]) ? ("(" + rosPlatformsDict[d.Platform] + ")") : ""),
"id": d.GamerHandle + ((rosPlatformsDict[d.Platform]) ? ("|" + rosPlatformsDict[d.Platform]) : ""),
}
);
});
filteredResult.sort(function(a, b) {return (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : -1});
return filteredResult;
},
//resultsFormatter: function(item){return item},
//tokenFormatter: function(item) { return "<li><p>" + item.first_name + " <b style='color: red'>" + item.last_name + "</b></p></li>" }
}
);
/*
$.ajax({
url: config.restHost + config.playthroughsUsers,
type: "GET",
data: {},
dataType: "json",
async: false,
success: function(json, textStatus, jqXHR) {
/*
$("#dt-user").autocomplete({
source: json,
minlength: 2,
change: function(event, ui) {
// when the typed item is not in the list, then ui.item will be null
if (!ui.item)
$("#dt-user").val("");
},
})
.keypress(function(e) {
// when pressing enter check if the value is valid, otherwise set to null
if (e.which == 13) {
if ($.inArray($(this).val(), json) == -1)
$(this).val("");
}
});
*/
/*
$.each(json, function(i, user) {
$("select#dt-users").append(
$("<option />")
.text(user.Username)
.val(user.GamerHandle)
.attr("title", user.Username + " :: " + user.GamerHandle)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
}
});
*/
}
/*
function populateDeathmatches() {
// Social Club Freemode Matches
$.ajax({
url: config.restHost + config.SCFreemodeNames,
type: "GET",
data: {type: "DEATHMATCH"},
dataType: "json",
async: false,
success: function(deathmatches, textStatus, jqXHR) {
$.each(deathmatches, function(i, deathmatch) {
$("select#deathmatch-list").append(
$('<option />')
.text(deathmatch.Name + " (" + deathmatch.Creator + ")")
.val(deathmatch.UGCIdentifier)
.attr("title", deathmatch.Name + " (" + deathmatch.Creator + ") : " + deathmatch.Description)
//.attr("selected", function() {
// return (pageData && pageData.deathmatch_list == deathmatch.UGCIdentifier) ? "selected" : false;
//})
)
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
},
complete: function() {
}
});
}
*/
/* Retreives the builds and populates given select element
*
* Available options {
* elementId - The DOM element ID
* async - the ajax request sync mode
* }
*
*/
function populateAllBuilds(options) {
$.ajax({
url: config.restHost + config.buildsAll,
type: "GET",
data: {},
dataType: "json",
async: options.async,
success: function(json, textStatus, jqXHR) {
var builds = json.Items.sort(sortByIdentifierDesc);
// Filter out builds without GameVersion
builds.filter(function(b) {return b.GameVersion});
/*
if (options.elementId == "build") {
$("select#" + options.elementId).append(
$("<option />")
.text(config.buildAllText)
.val("")
.attr("title", config.buildAllText)
);
}
*/
if (builds.length > 0) {
$("select#" + options.elementId).append(
$("<option />")
.text(config.buildAliasText)
.val(builds[0].Identifier)
.attr("title", config.buildAliasText)
);
}
$.each(builds, function(i, build) {
$("select#" + options.elementId).append(
$("<option />")
.text(build.Identifier)
.val(build.Identifier)
.attr("title", build.Identifier)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
},
complete: function() {}
});
}
function getAllBuilds() {
var builds = [];
$.ajax({
url: config.restHost + config.buildsAll,
type: "GET",
data: {},
dataType: "json",
async: false,
success: function(json, textStatus, jqXHR) {
builds = json.Items.map(function(b) {return b.Identifier});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
},
complete: function() {}
});
return builds;
}
function getHeaderBuilds() {
var builds = ($("#builds").val() ? $("#builds").val().join() : null);
/*
var availableBuilds = $.map($("#builds option"), function(e) {
return e.value;
});
if ($("#builds").val()) {
if (($("#builds").val().length == 1) && $("#builds").val()[0] == -1) // if latest only is select
builds = (availableBuilds.length > 1) ? availableBuilds[1] : null; // 0 is -1, 1 is actual latest
else
builds = $("#builds").val().filter(function(d) {return (d != -1);}).join(",");
}
else
builds = null;
*/
//console.log(builds);
return builds;
}
function getHeaderBuild() {
var build = ($("#build").val() ? $("#build").val() : null);
/*
var availableBuilds = $.map($("#build option"), function(e) {
return e.value;
});
//console.log(availableBuilds);
if ($("#build").val()) {
if ($("#build").val() == -1) // if latest only is select
build = (availableBuilds.length > 1) ? availableBuilds[1] : null; // 0 is -1, 1 is actual latest
else
build = $("#build").val();
}
else
build = null;
*/
return build;
}
function populateDatesBuildsOptions(elementId) {
var dfunc = {
getValue: function(d) {return d.Value},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements([elementId], config.datesBuildsOptions, dfunc);
$("#" + elementId).change(function() {updateDateBuildFields(elementId); });
}
function updateDateBuildFields(elementId) {
$("#" + elementId).parent().parent().children("fieldset").each(function(i, f) {
if ($("#" + elementId).val() == 0) {
$(f).removeClass("hidden"); // Show all
if (i == 2) // hide cwp
$(f).addClass("hidden");
}
else {
$(f).addClass("hidden"); // Hide all
if (i == ($("#" + elementId).val() - 1)) // show selected
$(f).removeClass("hidden");
}
});
};
/*
function convertBuildsXml(xml) {
var elementsArray = [];
$(xml).find("Build").each(function() {
var build = {
Id: Number($(this).find("Id").text()),
CreatedOn: $(this).find("CreatedOn").text(),
ModifiedOn: $(this).find("ModifiedOn").text(),
Identifier: ($(this).find("Identifier").text()),
HasAssetStats: ($(this).find("HasAssetStats").text() == "true"),
HasProcessedStats: ($(this).find("HasProcessedStats").text() == "true"),
HasAutomatedEverythingStats: ($(this).find("HasAutomatedEverythingStats").text() == "true"),
HasAutomatedMapOnlyStats: ($(this).find("HasAutomatedMapOnlyStats").text() == "true"),
HasMagDemoStats: ($(this).find("HasMagDemoStats").text() == "true"),
HasMemShortfallStats: ($(this).find("HasMemShortfallStats").text() == "true"),
HasShapeTestStats: ($(this).find("HasShapeTestStats").text() == "true"),
};
elementsArray.push(build);
});
//console.log(elementsArray);
return elementsArray;
}
*/
/*
function populateBuildConfigs() {
$.ajax({
url: config.restHost + config.buildConfigsAll,
type: "GET",
data: {},
dataType: "xml",
async: false,
success: function(xml, textStatus, jqXHR) {
var buildConfigs = convertBuildConfigsXml(xml);
$.each(buildConfigs, function(i, buildConfig) {
$("select#build-config").append(
$("<option />")
.text(buildConfig.Value)
.val(buildConfig.Value)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
},
complete: function() {}
});
}
function convertBuildConfigsXml(xml) {
var elementsArray = [];
$(xml).find("BuildConfig").each(function(){
var buildConfig = {
Value: $(this).find("Value").text()
};
elementsArray.push(buildConfig);
});
return elementsArray;
}
*/
function populateCutscenes() {
$.ajax({
url: config.restHost + config.cutscenesAll,
type: "GET",
data: {},
dataType: "xml",
async: false,
success: function(xml, textStatus, jqXHR) {
var cutscenes = convertCutscenesXml(xml)
.sort(function(a, b) {return ((a.Name > b.Name) ? 1 : -1)});
$.each(cutscenes, function(i, cutscene) {
$("select#cutscene").append(
$("<option />")
.text(cutscene.Name)
.val(cutscene.Name)
.attr("title", cutscene.Name)
);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
},
complete: function() {}
});
}
function convertCutscenesXml(xml) {
var elementsArray = [];
$(xml).find("Cutscene").each(function(){
var element = {
Id: $(this).find("Id").text(),
CreatedOn: $(this).find("CreatedOn").text(),
ModifiedOn: $(this).find("ModifiedOn").text(),
Name: $(this).find("Name").text(),
Identifier: $(this).find("Identifier").text(),
Duration: $(this).find("Duration").text(),
};
elementsArray.push(element);
});
return elementsArray;
}
/* End of xml? */
function getPlatforms() {
var obj = {
url: config.restHost + config.platformsEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function populatePlatforms() {
allPlatforms = getPlatforms().slice(1);
//console.log(allPlatforms);
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["platform"], allPlatforms, dfunc);
populateSelectElements(["platforms"], allPlatforms, dfunc);
}
function getRosPlatforms() {
if (!rosPlatforms) {
var obj = {
url: config.restHost + config.rosPlatformsEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
rosPlatforms = getAjaxData(obj);
}
return rosPlatforms;
}
function getRosPlatformsDict() {
if (!rosPlatformsDict) {
rosPlatformsDict = {};
getRosPlatforms().map(function(d) {rosPlatformsDict[d.Value] = d.Name});
}
return rosPlatformsDict;
}
function populateROSPlatforms() {
var rosPlatforms = getRosPlatforms();
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["rosplatform"], rosPlatforms, dfunc);
populateSelectElements(["rosplatforms"], rosPlatforms, dfunc);
}
function getGameTypes() {
var obj = {
url: config.restHost + config.gameTypesEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function populateGameTypes() {
var gameTypes = getGameTypes();
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["game-types"], gameTypes, dfunc);
}
function populateCharacters() {
var dfunc = {
getValue: function(d) {return d.Value},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
//populateSelectElements(["characters"], config.characters, dfunc);
populateSelectElements(["character"], config.characters, dfunc);
}
function getBuildConfigs() {
var obj = {
url: config.restHost + config.buildConfigsEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function populateBuildConfigs() {
var buildConfigs = getBuildConfigs();
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["build-config"], buildConfigs, dfunc);
}
function getFileTypes() {
var obj = {
url: config.restHost + config.fileTypesEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function populateFileTypes() {
var fileTypes = getFileTypes();
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["file-types"], fileTypes, dfunc);
}
function populateGameTimes() {
var dfunc = {
getValue: function(d) {return d.Value},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["game-times"], config.gameTimes, dfunc);
}
function getDateGrouping() {
var obj = {
url: config.restHost + config.dateGroupingEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function populateDateGrouping() {
var dateGrouping = getDateGrouping();
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return (d.FriendlyName) ? d.FriendlyName : d.Name},
getText: function(d) {return (d.FriendlyName) ? d.FriendlyName : d.Name},
};
populateSelectElements(["date-grouping"], dateGrouping, dfunc);
}
function getMatchTypes() {
if (!matchTypes) {
var obj = {
url: config.restHost + config.matchTypesEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
matchTypes = getAjaxData(obj);
}
return matchTypes;
}
function getMatchTypesDict() {
if (!matchTypesDict) {
matchTypesDict = {};
getMatchTypes().map(function(d) {matchTypesDict[d.Value] = (d.FriendlyName) ? d.FriendlyName : d.Name});
}
return matchTypesDict;
}
function populateMatchTypes() {
var matchTypes = getMatchTypes();
matchTypes.unshift({
"FriendlyName": "None",
"Name" : "",
"Value": null
});
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return (d.FriendlyName) ? d.FriendlyName : d.Name},
getText: function(d) {return (d.FriendlyName) ? d.FriendlyName : d.Name},
};
populateSelectElements(["match-type", "match-types"], matchTypes, dfunc);
}
function getMatchSubTypesDict() {
var matchTypesDict = getMatchTypesDict();
if (!matchSubTypesDict) {
matchSubTypesDict = {};
$.each(matchTypes, function(matchKey, matchType) {
if (config.matchSubTypesEnumsDict.hasOwnProperty(matchType.Name)) {
var obj = {
url: config.restHost + config.matchSubTypesEnumsDict[matchType.Name],
data: {},
method: "GET",
dataType: "json",
async: false,
};
var subTypeDict = {};
getAjaxData(obj).map(function(d) {subTypeDict[d.Value] = (d.FriendlyName) ? d.FriendlyName : d.Name});
matchSubTypesDict[matchKey] = subTypeDict;
}
});
//console.log(matchSubTypesDict);
}
return matchSubTypesDict;
}
function getFreemodeCategories() {
if (!freemodeCategories) {
var obj = {
url: config.restHost + config.freemodeCategoriesEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
freemodeCategories = getAjaxData(obj);
}
return freemodeCategories;
}
function getFreemodeCategoriesDict() {
if (!freemodeCategoriesDict) {
freemodeCategoriesDict = {};
getFreemodeCategories().map(function(d) {freemodeCategoriesDict[d.Value] = (d.FriendlyName) ? d.FriendlyName : d.Name});
}
return freemodeCategoriesDict;
}
function populateFreemodeCategories() {
var freemodeCategories = getFreemodeCategories();
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return (d.FriendlyName) ? d.FriendlyName : d.Name},
getText: function(d) {return (d.FriendlyName) ? d.FriendlyName : d.Name},
};
populateSelectElements(["freemode-categories"], freemodeCategories, dfunc);
freemodeCategories.unshift({FriendlyName: "All", Name: ""});
populateSelectElements(["freemode-category"], freemodeCategories, dfunc);
}
function getJobResults() {
if (!jobResults) {
var obj = {
url: config.restHost + config.getJobResultsEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
jobResults = getAjaxData(obj);
}
return jobResults;
}
function getJobResultsDict() {
if (!jobResultsDict) {
jobResultsDict = {};
getJobResults().map(function(d) {jobResultsDict[d.Value] = (d.FriendlyName) ? d.FriendlyName : d.Name});
}
return jobResultsDict;
}
function populateUGCStatus() {
var freemodeCategories = getFreemodeCategories();
var dfunc = {
getValue: function(d) {return d.Value},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["freemode-ugcstatus"], config.ugcStatus, dfunc);
}
function populateResolutions() {
var clipCategories = getClipCategories();
var dfunc = {
getValue: function(d) {return d},
getTitle: function(d) {return d},
getText: function(d) {return d},
};
populateSelectElements(["resolution"], config.resolutionsAll, dfunc);
}
function getClipCategories() {
var obj = {
url: config.restHost + config.clipCategoriesEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function populateClipCategories() {
var clipCategories = getClipCategories();
var dfunc = {
getValue: function(d) {return d.Name},
getTitle: function(d) {return d.Name},
getText: function(d) {return d.Name},
};
populateSelectElements(["clip-categories"], clipCategories, dfunc);
populateSelectElements(["clip-category"], clipCategories, dfunc);
}
function getPlaythroughsUsers() {
var obj = {
url: config.restHost + config.playthroughsUsers,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function getPlaythroughUsersAsDict() {
var dict = {};
getPlaythroughsUsers().map(function(d) {
//console.log(d.GamerHandle + " " + d.Username);
if (!d.GamerHandle)
return;
if (!dict.hasOwnProperty(d.GamerHandle))
dict[d.GamerHandle] = d.Username;
});
return dict;
}
function getMissionHashes() {
var obj = {
url: config.webHost + config.missionHashesCSV,
data: {},
method: "GET",
dataType: "text",
async: false,
};
var dict = {};
getAjaxData(obj).split("\n").map(function(d) {
var pair = d.split(",");
dict[pair[0]] = pair[1];
});
//console.log(dict);
return dict;
}
function getRadioHashes() {
var obj = {
url: config.webHost + config.radioHashesCSV,
data: {},
method: "GET",
dataType: "text",
async: false,
};
var dict = {};
getAjaxData(obj).split("\n").map(function(d) {
var pair = d.split(",");
dict[pair[0]] = pair[1];
});
//console.log(dict);
return dict;
}
function getWeaponHashes() {
var obj = {
url: config.webHost + config.weaponHashesCSV,
data: {},
method: "GET",
dataType: "text",
async: false,
};
var dict = {};
getAjaxData(obj).split("\n").map(function(d) {
var pair = d.split(",");
dict[pair[0]] = pair[1];
});
//console.log(dict);
return dict;
}
function getWeaponStatnames() {
var obj = {
url: config.webHost + config.weaponStatnamesCSV,
data: {},
method: "GET",
dataType: "text",
async: false,
};
var dict = {};
getAjaxData(obj).split("\n").map(function(d) {
var pair = d.split(",");
dict[pair[0]] = {
"Name" : pair[0],
"FriendlyName" : pair[1],
};
});
//console.log(dict);
return dict;
}
function getWeaponsAll() {
var obj = {
url: config.restHost + config.weaponsAll,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function getWeaponCategoriesEnums() {
var obj = {
url: config.restHost + config.weaponCategoriesEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function getExpenditureCategoriesEnums() {
var obj = {
url: config.restHost + config.expenditureCategoriesEnums,
data: {},
method: "GET",
dataType: "json",
async: false,
};
return getAjaxData(obj);
}
function getVehicleHashes() {
var obj = {
url: config.restHost + config.vehiclesAll,
data: {},
method: "GET",
dataType: "json",
async: false,
};
var dict = {};
getAjaxData(obj).map(function(d) {
dict[d.Identifier] = d.FriendlyName;
});
//console.log(dict);
return dict;
}
/*
*
* Generic Function to replace the ones above
*
* */
/*
datafunctions = {
getValue: function(d) {return d....},
getTitle: function(d) {return d....},
getText: function(d) {return d....},
}
data can come from getAjaxData
*/
function populateSelectElements(elementIds, data, dataFunctions) {
$.each(elementIds, function(i, elementId) {
//console.log(elementId);
$.each(data, function(j, d) {
//console.log(dataFunctions.getText(d));
var option = $("<option />");
option.text(dataFunctions.getText(d))
.val(dataFunctions.getValue(d))
.attr("title", dataFunctions.getTitle(d));
/* This will not work on IE
if (dataFunctions.onClick) {
option.on("click", function() {dataFunctions.onClick(d);})
}
*/
$("select#" + elementId).append(option);
});
if (dataFunctions.onClick) {
$("select#" + elementId).on("click", function() {
dataFunctions.onClick(data[$("select#" + elementId)[0].selectedIndex]);
});
}
if (dataFunctions.onChange) {
$("select#" + elementId).on("change", function() {
dataFunctions.onChange(data[$("select#" + elementId)[0].selectedIndex]);
});
}
});
}
/*
datafunctions = {
getValue: function(d) {return d....},
getText: function(d) {return d....},
getTitle: function(d) {return d....},
getChildren: function(d) {return d....},
onClick: function() {return d...}
};
Data can come from getAjaxData
*/
function populateHierarchicalElements(elements, data, dataFunctions) {
$.each(elements, function(i, element) {
var ul = $("<ul />");
$.each(data, function(j, d) {
var li = $("<li />");
li.append(
$("<span>")
.text(dataFunctions.getText(d))
.val(dataFunctions.getValue(d))
.attr("title", dataFunctions.getTitle(d))
.click(function() {
dataFunctions.onClick(dataFunctions.getValue(d), dataFunctions.getText(d));
})
.addClass("hand")
);
populateHierarchicalElements(li, dataFunctions.getChildren(d), dataFunctions);
li.appendTo(ul);
});
if (ul.children("li").length > 0)
ul.appendTo(element);
});
}
/**
* object has the format of
* object = {
* url: ...,
* data: {...},
* method: GET/POST,
* dataType: ...,
* contentType: ...,
* async: true/false,
* }
*/
function getAjaxData(object) {
var result = [];
$.ajax({
url: object.url,
type: object.method,
data: object.data,
dataType: object.dataType,
contentType: object.contentType,
async: object.async,
cache: object.cache,
success: function(data, textStatus, jqXHR) {
result = data;
},
error: function (xhr, ajaxOptions, thrownError) {
console.error(this.url + "\n" + ajaxOptions + " " + xhr.status + " " + thrownError);
},
complete: function() {}
});
return result;
}
/* END of retrieve and populate functions */
function cleanGraph(id) {
var svg = d3.select("#" + id + " svg");
svg.selectAll("g")
.transition()
.style("opacity", 0.01)
.remove();
svg.selectAll("text")
.transition()
.style("opacity", 0.01)
.remove();
if (typeof window.onresize === "function")
window.onresize = null;
}
// Function for key delay searches
var typewatch = function() {
var timer = 0;
return function(callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
}
}();
var commas = function(d) { return d3.format(",")(d); };
var commasFixed2 = function(d) { return d3.format(",")(d.toFixed(2)); };
var commasFixed = function(d, n) { return d3.format(",")(d.toFixed((n) ? n : 0)); };
var cashCommasFixed = function(d, n) { return "$ " + commasFixed2(d, n); };
var round2 = function(d) {return d3.round(d, 2); };
function msTicks2UnixTime(ticks) {
/*
* MS ticks counting start at 12:00:00 midnight, Jan 1, 0001
* Unix Time starts at midnight Jan 1, 1970 (in milliseconds)
* 1 tick is 10000 milliseconds
* There are 621355968000000000 ticks between 01/01/0001 and 01/01/1970
*/
return ((ticks - 621355968000000000) / 10000);
}
function msTicks2Secs(ticks) {
/* 1 tick is 10000 milliseconds */
return (ticks / (10000 * 1000));
}
function getDateString(dateElementId, isUTC) {
var dateString = $("#" + dateElementId).val();
if (!dateString)
return null;
if (isUTC) {
dateString = new Date(config.dateInputUTCFormat.parse(dateString)).toISOString();
}
else
dateString = new Date(config.dateInputFormat.parse(dateString)).toISOString();
return dateString;
}
// Returns the date object from a json date string
function parseJsonDate(jsonDate) {
//var dateRe = new RegExp("^/Date\\((\\d+)[\\+\\d]*\\)/$");
//var constructor = date.replace(dateRe, "new Date($1)");
//if (constructor == date) {
// throw 'Invalid serialized DateTime value: "' + date + '"';
//}
//var date = new Date(parseInt(jsonDate.slice(6, -1), 10));
if (!jsonDate)
return "";
var epochTime;
var jsonDateString = jsonDate.slice(6, -2);
if (jsonDateString.indexOf("+") != -1) {
var dates = jsonDateString.split("+");
epochTime = parseInt(dates[0])
+ ((dates[1]) ? Number(dates[1].slice(0, 2))*config.anHourInMillisecs : 0);
}
else if (jsonDateString.indexOf("-") != -1) {
var dates = jsonDateString.split("-");
epochTime = parseInt(dates[0])
- ((dates[1]) ? Number(dates[1].slice(0, 2))*config.anHourInMillisecs : 0);
}
else
epochTime = parseInt(jsonDateString);
return new Date(epochTime);
};
// Return the diff of two date strings in secs
function dateStringsDiffInSecs(dateString1, dateString2) {
var date1 = new Date(dateString1),
date2 = new Date(dateString2);
if (isValidDate(date1) && (isValidDate(date2)))
return datesDiffInSecs(date1, date2);
else
return 0;
}
// Return the difference of two day objects in secs
function datesDiffInSecs(date1, date2) {
// Convert to unix time millisecs and subtract; then convert to secs
return ((date1.getTime() - date2.getTime()) / 1000);
}
// Return only the date in utc from a datetime string
function extractDate(dateString) {
var date = new Date(dateString);
if (isValidDate(date))
return date.getFullYear() +"-"+ zeros(date.getMonth()+1) +"-"+ zeros(date.getDate());
else
return null;
}
function isValidDate(d) {
if (Object.prototype.toString.call(d) !== "[object Date]")
return false;
return !isNaN(d.getTime());
}
var zeros = d3.format("02d");
function truncate(string, chars) {
if (chars < 3) chars += 3;
return string.slice(0, chars-3) + "...";
}
function formatSecs(secs) {
var h = zeros(Math.floor(secs / 3600));
var m = zeros(Math.floor((secs % 3600) / 60));
var s = zeros(Math.floor((secs % 3600) % 60));
return (h + ":" + m + ":" + s);
}
function formatMins(mins) {
return formatSecs(mins*60);
}
function formatSecsWithDays(secs) {
var d = zeros(Math.floor(secs / 86400));
var h = zeros(Math.floor((secs % 86400) / 3600));
var m = zeros(Math.floor(((secs % 86400) % 3600) / 60));
var s = zeros(Math.floor(((secs % 86400) % 3600) % 60));
return (d + ":" + h + ":" + m + ":" + s);
}
function frameTimeToFPS(frameTime) {
return (frameTime) ? (1000 / frameTime) : frameTime;
}
function capitaliseString(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
function toUTCStringWOSecs(d) {
return d.toUTCString().replace(/:\d+ /g, " ");
}
function formatPercentage(value, total) {
return (commasFixed2((value/total)*100));
}
/* CSV operations*/
function exportToCSV(columnsArray, rowsArray, frameId, filename) {
var Columns = [{ ColumnNames : columnsArray.map(function(d) {return ("\"" + d +"\""); }).join(",") }];
var Rows = [];
rowsArray.map(function(r) {
Rows.push({row : r.map(function(d) {return ("\"" + d +"\""); }).join(",")});
});
var csvData = { "Columns": Columns, "Rows": Rows };
$("#" + frameId).contents().find("#CsvData")[0].value = JSON.stringify(csvData);
$("#" + frameId).contents().find("#CsvFilename")[0].value = filename;
return;
}
function addCSVButton(elementId, frameId, onClickFunction) {
$("#" + elementId)
.append(
$("<iframe />")
.attr("id", frameId)
.addClass("csv-frame")
.attr("src", config.webHost + config.csvBackend)
.load(function() {
var iFrameForm = $(this).contents().find("form");
if (iFrameForm.size() == 0)
return;
$(iFrameForm)
.find("#ExportCSVButton")
.addClass("red-button hand")
.attr("onCLick", onClickFunction)
})
)
};
function getCSVFilename(extra) {
var pValues = config.headerOptions[headerAndFilters.headerType].getParamValues();
//console.log(pValues["Pairs"]);
var dates = "";
dates += (pValues["Pairs"]["StartDate"]) ? extractDate(pValues["Pairs"]["StartDate"]) : "";
dates += (pValues["Pairs"]["EndDate"]) ? ("_" + extractDate(pValues["Pairs"]["EndDate"])) : "";
var builds = (pValues["Pairs"]["BuildIdentifiers"]) ? (pValues["Pairs"]["BuildIdentifiers"]).split(",").join("-") : "";
var cpw = (pValues["Pairs"]["CompanywidePlaytestId"]) ? (pValues["Pairs"]["CompanywidePlaytestId"]) : "";
return (encodeURI(($("#content-title").text() + ((extra) ? (" : " + extra) : "")).replace(/\s|,/g, "_"))
+ ((dates) ? ("_" + dates + "_") : dates)
+ ((builds) ? ("_" + builds + "_") : builds)
+ ((cpw) ? ("_" + cpw + "_") : cpw)
+ ".csv");
}
function fillEmptyResults(resultArray, metric, size) {
var extraItems = [];
$.each(resultArray, function(i, resultIem) {
if ((i > 0) && ((resultIem[metric]) - resultArray[i-1][metric] > size)) {
var repeat = (resultIem[metric] - resultArray[i-1][metric] -size )/size;
for(var j=1; j<=repeat; j++) {
var newItem = {};
$.each(resultArray[i-1], function(key, value) {
newItem[key] = 0;
});
newItem[metric] = resultArray[i-1][metric] + size*j;
extraItems.push(newItem);
}
}
});
if (extraItems) {
resultArray = (resultArray.concat(extraItems)).sort(
function(a, b) {
return (a[metric] >= b[metric]) ? 1 : -1;
});
}
return resultArray;
}
/*
function addCSVButton(elementId, onClickFunction) {
$("#" + elementId).append(
$("<input />")
.attr("type", "button")
.attr("id", "export-csv")
.attr("name", "export-csv")
.attr("title", "Export to CSV")
.val("Export Data to CSV")
.css("float", "right")
.addClass("red-button hand")
.click(onClickFunction)
);
}
*/
// convert xml functions
function convertGametypesXml(xml) {
var elementsArray = [];
$(xml).find("GameType").each(function(){
var gametype = {
Value: $(this).find("Value").text()
};
elementsArray.push(gametype);
});
return elementsArray;
}
function getExportUsersList(xml) {
var elementsArray = [];
$(xml).find("ExportUser").each(function(){
elementsArray.push($(this).text());
});
return elementsArray;
}