96 lines
2.3 KiB
JavaScript
96 lines
2.3 KiB
JavaScript
"use strict";
|
|
|
|
/*
|
|
* This file defines functions that create d3 datasets from the rawData provided by preprocessor.getResults()
|
|
*/
|
|
|
|
var queries = {
|
|
|
|
/*
|
|
* Count drivers belonging to nationalities
|
|
*/
|
|
getDriversByNationality: function() {
|
|
var rawData = preprocessor.getResults();
|
|
|
|
// Extract interesting data from raw data.
|
|
var nationalities = {};
|
|
for(var i in rawData.drivers) {
|
|
var d = rawData.drivers[i];
|
|
var nationality = d["nationality"];
|
|
if(nationalities[nationality] === undefined) {
|
|
nationalities[nationality] = 1;
|
|
} else {
|
|
nationalities[nationality] += 1;
|
|
}
|
|
}
|
|
|
|
// Transform into d3 dataset format
|
|
var dataset = [];
|
|
var n;
|
|
for(n in nationalities) {
|
|
dataset.push({
|
|
label: n,
|
|
count: nationalities[n]
|
|
});
|
|
}
|
|
|
|
// Return d3 dataset
|
|
return dataset;
|
|
},
|
|
|
|
getDriverById: function(driverId) {
|
|
var rawData = preprocessor.getResults();
|
|
|
|
var result = null;
|
|
|
|
var tempList = rawData.drivers.filter((cur) => (cur.driverId == driverId));
|
|
if(tempList.length > 0){
|
|
result = tempList[0];
|
|
}
|
|
|
|
// Return d3 dataset
|
|
return result;
|
|
},
|
|
|
|
getDriversByRaceId: function(raceId) {
|
|
var rawData = preprocessor.getResults();
|
|
|
|
|
|
var tempList = rawData.results.filter((cur) => (cur.raceId == raceId));
|
|
|
|
var result = tempList.map((cur) => queries.getDriverById(cur.driverId));
|
|
|
|
// Return d3 dataset
|
|
return result;
|
|
},
|
|
|
|
getLapDataByRaceId: function(raceId) {
|
|
var rawData = preprocessor.getResults();
|
|
var lapTimes = rawData['lapTimes'].filter((val) => val['raceId'] == raceId);
|
|
var myMap = new Map();
|
|
lapTimes.forEach(function(d,i) {
|
|
var lapNum = d["lap"];
|
|
var driverId = d["driverId"];
|
|
if(!myMap.has(lapNum)){
|
|
var data = [];
|
|
myMap.set(lapNum,data);
|
|
}
|
|
var dt = myMap.get(lapNum);
|
|
dt.push(d);
|
|
myMap.set(lapNum,dt);
|
|
});
|
|
|
|
myMap.forEach((d,i) => d.sort((o1,o2) => o1["position"] - o2["position"]));
|
|
|
|
return myMap;
|
|
},
|
|
|
|
getQualifingDataByRaceId: function(raceId) {
|
|
var rawData = preprocessor.getResults();
|
|
var result = rawData.qualifying.filter((cur) => (cur.raceId == raceId));
|
|
result.sort((o1,o2) => o1["position"] - o2["position"]);
|
|
return result;
|
|
}
|
|
|
|
};
|