Merge branch 'master' of github.com:F1Vis/f1vis

This commit is contained in:
Jan Philipp Timme 2017-12-22 13:33:20 +01:00
commit 09a6c20a64
6 changed files with 70 additions and 52 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.Rhistory

View File

@ -48,26 +48,7 @@
</div> </div>
<div class="content-box chart-box strecken-selector"> <div class="content-box chart-box strecken-selector">
<div class="frame"> <div class="frame">
<ul class="slidee"> <ul class="slidee" id="courseSelection">
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
<li>test</li>
</ul> </ul>
</div> </div>
<div class="scrollbar"> <div class="scrollbar">

View File

@ -2,6 +2,7 @@
// https://bl.ocks.org/mbostock/3884955 // https://bl.ocks.org/mbostock/3884955
function createLineGraph(containerId, raceData){ function createLineGraph(containerId, raceData){
// Rough input validation // Rough input validation
if(raceData.raceInfo === undefined) { if(raceData.raceInfo === undefined) {
console.error(["Sorry, that raceData is empty. :-(", raceData]); console.error(["Sorry, that raceData is empty. :-(", raceData]);
@ -11,7 +12,7 @@ function createLineGraph(containerId, raceData){
} }
var enhancedLapData = processor.getEnhancedLapDataPerDriver(raceData); var enhancedLapData = processor.getEnhancedLapDataPerDriver(raceData);
console.log(enhancedLapData);
// Configuration // Configuration
var height = 720; var height = 720;
@ -109,7 +110,7 @@ function createLineGraph(containerId, raceData){
d3.axisLeft(y) d3.axisLeft(y)
.ticks(raceData.drivers.length) .ticks(raceData.drivers.length)
.tickFormat(function(d) { .tickFormat(function(d) {
console.log(getDriverCodeFromPosAndLap(raceData, 0, d) + " " + d); //console.log(getDriverCodeFromPosAndLap(raceData, 0, d) + " " + d);
return getDriverCodeFromPosAndLap(raceData, 0, d) + " " + d; return getDriverCodeFromPosAndLap(raceData, 0, d) + " " + d;
}) })
); );
@ -119,7 +120,7 @@ function createLineGraph(containerId, raceData){
d3.axisRight(y) d3.axisRight(y)
.ticks(raceData.drivers.length) .ticks(raceData.drivers.length)
.tickFormat(function(d) { .tickFormat(function(d) {
console.log(getDriverCodeFromPosAndLap(raceData, raceData.lapTimes.size, d) + " " + d); //console.log(getDriverCodeFromPosAndLap(raceData, raceData.lapTimes.size, d) + " " + d);
return d + " " + getDriverCodeFromPosAndLap(raceData, raceData.lapTimes.size, d) ; return d + " " + getDriverCodeFromPosAndLap(raceData, raceData.lapTimes.size, d) ;
}) })
) )

View File

@ -4,35 +4,63 @@
* This file contains the main control flow. * This file contains the main control flow.
*/ */
preprocessor.load(function(data) { var slyelement = {
var $frame = $('.strecken-selector'); obj: {},
var $slidee = $frame.children('ul').eq(0); el: '.frame',
var $wrap = $frame.parent(); options: {
var options = { horizontal: 1,
horizontal: 1, itemNav: 'basic',
itemNav: 'basic', smart: 1,
smart: 1, activateOn: 'click',
activateOn: 'click', mouseDragging: 1,
mouseDragging: 1, touchDragging: 1,
touchDragging: 1, releaseSwing: 1,
releaseSwing: 1, startAt: 3,
startAt: 3, scrollBar: $('.strecken-selector').parent().find('.scrollbar'),
scrollBar: $wrap.find('.scrollbar'), scrollBy: 1,
scrollBy: 1, pagesBar: $('.strecken-selector').parent().find('.pages'),
pagesBar: $wrap.find('.pages'), activatePageOn: 'click',
activatePageOn: 'click', speed: 300,
speed: 300, elasticBounds: 1,
elasticBounds: 1, dragHandle: 1,
dragHandle: 1, dynamicHandle: 1,
dynamicHandle: 1, clickBar: 1,
clickBar: 1, }
}; };
$('.frame').sly(options);
preprocessor.load(function(data) {
slyelement.obj = new Sly($(slyelement.el), slyelement.options);
slyelement.obj.init();
// Some sample code for a year selector - TODO: Improve a lot and move somewhere else // Some sample code for a year selector - TODO: Improve a lot and move somewhere else
var yearSelector = $("#seasonByYearSelector"); var yearSelector = $("#seasonByYearSelector");
var seasons = processor.getSeasonsWithLapData();
for(var season in seasons){ yearSelector.append("<option>" + seasons[season].year + "</option>"); }
createLineGraph("#lineGraphBox", processor.getRace(970)); var seasons = processor.getSeasonsWithLapData();
for(var season in seasons){ yearSelector.append("<option>" + seasons[season].year + "</option>"); }
// Someone chose a year
yearSelector.change(function(event) {
var selectedYear = $(event.target).val();
var races = processor.getRacesByYear(selectedYear);
$("#courseSelection").empty();
for(var race in races) {
$("#courseSelection").append("<li data=\"" + races[race].raceInfo.raceId + "\">" + races[race].raceInfo.name +" " + races[race].raceInfo.date + "</li>");
}
$("#courseSelection li").click(function(event) {
var race = event.target.attributes.data.value;
$("#lineGraphBox").empty();
createLineGraph("#lineGraphBox", processor.getRace(race));
});
slyelement.obj.reload();
var raceData = races[0];
});
$(window).resize(function(e) {
slyelement.obj.reload();
});
}); });

View File

@ -72,7 +72,9 @@ var processor = {
getRacesByYear: function(year) { getRacesByYear: function(year) {
var races = queries.getRacesByYear(year); var races = queries.getRacesByYear(year);
return races.map(race => processor.getRace(race.raceId)); var racesUnsorted = races.map(race => processor.getRace(race.raceId));
racesUnsorted.sort((o1,o2) => o1["raceInfo"]["round"] - o2["raceInfo"]["round"]);
return racesUnsorted;
}, },
//Gets the position of Driver with driverid in specific lap //Gets the position of Driver with driverid in specific lap

View File

@ -112,7 +112,12 @@ var queries = {
getRaceById: function(raceId){ getRaceById: function(raceId){
var rawData = preprocessor.getResults(); var rawData = preprocessor.getResults();
return rawData.races[raceId]; for(var key in rawData.races){
if(rawData.races[key].raceId == raceId){
return rawData.races[key];
}
}
return null;
}, },
getRacesByYear: function(year){ getRacesByYear: function(year){