86 lines
2.9 KiB
JavaScript
86 lines
2.9 KiB
JavaScript
"use strict";
|
|
|
|
var processor = {
|
|
|
|
getRace: function(raceId) {
|
|
var race = {
|
|
drivers: null,
|
|
lapTimes: null,
|
|
pitStops: null,
|
|
qualifying: null,
|
|
results: null,
|
|
raceInfo: null,
|
|
|
|
};
|
|
|
|
race.drivers = queries.getDriversByRaceId(raceId);
|
|
race.lapTimes = queries.getLapDataByRaceId(raceId);
|
|
race.qualifying = queries.getQualifingDataByRaceId(raceId);
|
|
race.pitStops = queries.getPitStopsByRaceId(raceId);
|
|
race.results = queries.getResultsByRaceId(raceId);
|
|
race.raceInfo = queries.getRaceById(raceId);
|
|
|
|
return race;
|
|
},
|
|
|
|
getEnhancedLapDataPerDriver: function(raceData) {
|
|
var result = [];
|
|
raceData.drivers.forEach((driver) => {
|
|
var lapData = {
|
|
driver: null,
|
|
laps: [],
|
|
};
|
|
lapData.driver = driver;
|
|
//Attach Qualifying Data
|
|
lapData.qualifying = processor.getQualifyingForDriver(raceData, driver);
|
|
//add Qualifying Data to the Laps
|
|
var lap0 = {'driverId': driver.driverId, 'lap': 0, 'position': lapData.qualifying.position};
|
|
var endResult = raceData.results.filter(res => res.driverId == driver.driverId && res.laps == 0);
|
|
if(endResult.length > 0){
|
|
lap0.finished = endResult[0];
|
|
}
|
|
lapData.laps.push(lap0);
|
|
raceData.lapTimes.forEach(lap => {
|
|
lap.forEach(curLap => {
|
|
if( curLap.driverId == driver.driverId ){
|
|
var pitstop = raceData.pitStops.filter(pitstop => pitstop.driverId == driver.driverId && pitstop.lap == curLap.lap);
|
|
var endResult = raceData.results.filter(res => res.driverId == driver.driverId && res.laps == curLap.lap);
|
|
if(pitstop.length > 0){
|
|
curLap.pitStop = pitstop[0];
|
|
}
|
|
if(endResult.length > 0){
|
|
curLap.finished = endResult[0];
|
|
}
|
|
|
|
lapData.laps.push(curLap);
|
|
}
|
|
});
|
|
});
|
|
result.push(lapData);
|
|
});
|
|
return result;
|
|
},
|
|
|
|
getRacesByYear: function(year) {
|
|
var races = queries.getRacesByYear(year);
|
|
return races.map(race => processor.getRace(race.raceId));
|
|
},
|
|
|
|
//Gets the position of Driver with driverid in specific lap
|
|
// lapData: an array of the lap data for one lap
|
|
getPositionOfDriver: function(driver, lapData, defaultReturn){
|
|
var lapEntryWithDrivId = lapData.filter( drivLap => drivLap.driverId == driver.driverId );
|
|
if(lapEntryWithDrivId.length > 0){
|
|
return lapEntryWithDrivId[0].position;
|
|
}else{
|
|
return defaultReturn;
|
|
}
|
|
},
|
|
|
|
getQualifyingForDriver: function(raceData, driver){
|
|
var qualData = raceData.qualifying.filter( qualData => qualData.driverId == driver.driverId);
|
|
return qualData[0];
|
|
}
|
|
|
|
};
|