diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..dc528e5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.Rhistory
diff --git a/index.html b/index.html
index 612c7fb..8d5d1fa 100644
--- a/index.html
+++ b/index.html
@@ -48,26 +48,7 @@
-
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
- - test
+
diff --git a/js/diagrams.js b/js/diagrams.js
index 443a0c0..0fc9488 100644
--- a/js/diagrams.js
+++ b/js/diagrams.js
@@ -2,8 +2,19 @@
// https://bl.ocks.org/mbostock/3884955
function createLineGraph(containerId, raceData){
- console.log(raceData);
+ // Rough input validation
+ if(raceData.raceInfo === undefined) {
+ console.error(["Sorry, that raceData is empty. :-(", raceData]);
+ return; // early return to avoid errors
+ } else {
+ console.log(raceData);
+ }
+
+ var enhancedLapData = processor.getEnhancedLapDataPerDriver(raceData);
+
+
+ // Configuration
var height = 720;
var width = 1080;
var linePointSize = 5;
diff --git a/js/main.js b/js/main.js
index 5652d8f..d1d1454 100644
--- a/js/main.js
+++ b/js/main.js
@@ -4,35 +4,64 @@
* This file contains the main control flow.
*/
-preprocessor.load(function(data) {
- var $frame = $('.strecken-selector');
- var $slidee = $frame.children('ul').eq(0);
- var $wrap = $frame.parent();
- var options = {
- horizontal: 1,
- itemNav: 'basic',
- smart: 1,
- activateOn: 'click',
- mouseDragging: 1,
- touchDragging: 1,
- releaseSwing: 1,
- startAt: 3,
- scrollBar: $wrap.find('.scrollbar'),
- scrollBy: 1,
- pagesBar: $wrap.find('.pages'),
- activatePageOn: 'click',
- speed: 300,
- elasticBounds: 1,
- dragHandle: 1,
- dynamicHandle: 1,
- clickBar: 1,
- };
- $('.frame').sly(options);
+var slyelement = {
+ obj: {},
+ curRaces: {},
+ el: '.frame',
+ options: {
+ horizontal: 1,
+ itemNav: 'basic',
+ smart: 1,
+ activateOn: 'click',
+ mouseDragging: 1,
+ touchDragging: 1,
+ releaseSwing: 1,
+ startAt: 3,
+ scrollBar: $('.strecken-selector').parent().find('.scrollbar'),
+ scrollBy: 1,
+ pagesBar: $('.strecken-selector').parent().find('.pages'),
+ activatePageOn: 'click',
+ speed: 300,
+ elasticBounds: 1,
+ dragHandle: 1,
+ dynamicHandle: 1,
+ clickBar: 1,
+ }
+};
+
+
+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
var yearSelector = $("#seasonByYearSelector");
- var seasons = processor.getSeasonsWithLapData();
- for(var season in seasons){ yearSelector.append(""); }
- createLineGraph("#lineGraphBox", processor.getRace(970));
+ var seasons = processor.getSeasonsWithLapData();
+
+ for(var season in seasons){ yearSelector.append(""); }
+
+ // Someone chose a year
+ yearSelector.change(function(event) {
+ var selectedYear = $(event.target).val();
+ slyelement.curRaces = processor.getRacesByYear(selectedYear);
+ $("#courseSelection").empty();
+ for(var race in slyelement.curRaces) {
+ var raceD = slyelement.curRaces[race];
+ $("#courseSelection").append("
" + raceD.raceInfo.name +" " + raceD.raceInfo.date + "");
+ }
+ $("#courseSelection li").click(function(event) {
+ var raceI = event.target.attributes.data.value;
+ var rdata = slyelement.curRaces.filter(r => r.raceInfo.raceId == raceI)[0];
+ $("#lineGraphBox").empty();
+ createLineGraph("#lineGraphBox", rdata);
+ });
+ slyelement.obj.reload();
+ });
+
+ $(window).resize(function(e) {
+ slyelement.obj.reload();
+ });
+
});
diff --git a/js/processor.js b/js/processor.js
index 9dabd99..56db0cb 100644
--- a/js/processor.js
+++ b/js/processor.js
@@ -34,7 +34,17 @@ var processor = {
//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 lap0 = {'driverId': driver.driverId, 'lap': 0};
+ // Figure out the position of that driver
+ if (lapData.qualifying !== undefined) {
+ // Use qualifying data, if available
+ lap0['position'] = lapData.qualifying.position;
+ } else {
+ // TODO: Easy fallback.
+ // Maybe just take result from first lap - Future: Perhaps leave out that data point at all
+ lap0['position'] = 0;
+ }
+
var endResult = raceData.results.filter(res => res.driverId == driver.driverId && res.laps == 0);
if(endResult.length > 0){
lap0.finished = endResult[0];
@@ -55,6 +65,7 @@ var processor = {
}
});
});
+ lapData.laps.sort((o1,o2) => o1["lap"] - o2["lap"]);
result.push(lapData);
});
return result;
@@ -62,7 +73,9 @@ var processor = {
getRacesByYear: function(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
diff --git a/js/queries.js b/js/queries.js
index 5d24e0c..6d55f1f 100644
--- a/js/queries.js
+++ b/js/queries.js
@@ -117,7 +117,12 @@ var queries = {
getRaceById: function(raceId){
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){