@ -3,6 +3,9 @@ package seng302.Controllers;
import javafx.collections.ObservableList ;
import javafx.collections.ObservableList ;
import javafx.fxml.FXML ;
import javafx.fxml.FXML ;
import javafx.scene.chart.LineChart ;
import javafx.scene.chart.NumberAxis ;
import javafx.scene.chart.XYChart ;
import javafx.scene.control.* ;
import javafx.scene.control.* ;
import javafx.scene.layout.GridPane ;
import javafx.scene.layout.GridPane ;
import seng302.Mock.StreamedRace ;
import seng302.Mock.StreamedRace ;
@ -22,6 +25,7 @@ public class RaceController extends Controller {
//user saved data for annotation display
//user saved data for annotation display
private ArrayList < Boolean > presetAnno ;
private ArrayList < Boolean > presetAnno ;
private Integer sparkLineNumber = 0 ;
private ResizableRaceCanvas raceMap ;
private ResizableRaceCanvas raceMap ;
private ResizableRaceMap raceBoundaries ;
private ResizableRaceMap raceBoundaries ;
@FXML SplitPane race ;
@FXML SplitPane race ;
@ -41,6 +45,9 @@ public class RaceController extends Controller {
@FXML TableColumn < Boat , String > boatTeamColumn ;
@FXML TableColumn < Boat , String > boatTeamColumn ;
@FXML TableColumn < Boat , String > boatMarkColumn ;
@FXML TableColumn < Boat , String > boatMarkColumn ;
@FXML TableColumn < Boat , String > boatSpeedColumn ;
@FXML TableColumn < Boat , String > boatSpeedColumn ;
@FXML LineChart < Number , Number > sparklineChart ;
@FXML NumberAxis xAxis ;
@FXML NumberAxis yAxis ;
/ * *
/ * *
* Updates the ResizableRaceCanvas ( raceMap ) with most recent data
* Updates the ResizableRaceCanvas ( raceMap ) with most recent data
@ -75,6 +82,7 @@ public class RaceController extends Controller {
@Override
@Override
public void initialize ( URL location , ResourceBundle resources ) {
public void initialize ( URL location , ResourceBundle resources ) {
createSparkLine ( ) ;
//listener for fps
//listener for fps
showFPS . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
showFPS . selectedProperty ( ) . addListener ( ( ov , old_val , new_val ) - > {
if ( showFPS . isSelected ( ) ) {
if ( showFPS . isSelected ( ) ) {
@ -85,6 +93,34 @@ public class RaceController extends Controller {
} ) ;
} ) ;
}
}
private void createSparkLine ( ) {
// TODO replace for loop with boatsInRace
int [ ] boats = { 1 , 2 , 3 , 4 , 5 , 6 } ;
// set a line for each boat
for ( int i = 0 ; i < boats . length ; i + + ) {
XYChart . Series < Number , Number > series = new XYChart . Series ( ) ;
series . getData ( ) . add ( new XYChart . Data ( 0 , i + 1 ) ) ;
sparklineChart . getData ( ) . add ( series ) ;
}
// reverse Y axis order (0 at top) and set axis height/width
// TODO change lower bound to boatsInRace + 1
yAxis . setLowerBound ( boats . length + 1 ) ;
yAxis . setUpperBound ( 0 ) ;
yAxis . setAutoRanging ( false ) ;
xAxis . setAutoRanging ( false ) ;
// hide axis ticks and labels
sparklineChart . getXAxis ( ) . setTickLabelsVisible ( false ) ;
sparklineChart . getYAxis ( ) . setTickLabelsVisible ( false ) ;
sparklineChart . getXAxis ( ) . setTickMarkVisible ( false ) ;
sparklineChart . getYAxis ( ) . setTickMarkVisible ( false ) ;
sparklineChart . getXAxis ( ) .
lookup ( ".axis-minor-tick-mark" ) . setVisible ( false ) ;
sparklineChart . getYAxis ( ) .
lookup ( ".axis-minor-tick-mark" ) . setVisible ( false ) ;
}
/ * *
/ * *
* Initializes and runs the race , based on the user ' s chosen scale factor
* Initializes and runs the race , based on the user ' s chosen scale factor
* Currently uses an example racecourse
* Currently uses an example racecourse
@ -163,6 +199,24 @@ public class RaceController extends Controller {
} ) ;
} ) ;
}
}
public void updateSparkline ( ) {
// TODO replace for loops with correct boats
int [ ] startingBoats = { 1 , 2 , 3 , 4 , 5 , 6 } ;
int [ ] boatsInRace = { 1 , 2 , 3 , 4 , 5 , 6 } ;
sparkLineNumber + + ;
for ( int i = 0 ; i < startingBoats . length ; i + + ) {
for ( int j = 0 ; j < boatsInRace . length ; j + + ) {
// TODO if startingBoat[i] == boatsInRace[j]
if ( i = = j ) {
sparklineChart . getData ( ) . get ( i ) . getData ( ) . add ( new XYChart . Data < >
( sparkLineNumber , j + 1 ) ) ;
}
}
}
xAxis . setUpperBound ( sparkLineNumber ) ;
}
/ * *
/ * *
* Set up boat annotations
* Set up boat annotations
* /
* /