|
|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package seng202.group9.GUI;
|
|
|
|
|
|
|
|
|
|
import javafx.collections.FXCollections;
|
|
|
|
|
import javafx.fxml.FXML;
|
|
|
|
|
import javafx.scene.chart.BarChart;
|
|
|
|
|
import javafx.scene.chart.CategoryAxis;
|
|
|
|
|
@ -15,10 +16,7 @@ import seng202.group9.Core.Airline;
|
|
|
|
|
import seng202.group9.Core.Airport;
|
|
|
|
|
import seng202.group9.Core.Route;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Created by fwy13 on 2/10/2016.
|
|
|
|
|
@ -60,9 +58,9 @@ public class RouteGraphController extends Controller{
|
|
|
|
|
@FXML
|
|
|
|
|
private PieChart stopsGraph;
|
|
|
|
|
@FXML
|
|
|
|
|
private BarChart contienentGraph;
|
|
|
|
|
private BarChart zoneGraph;
|
|
|
|
|
@FXML
|
|
|
|
|
private CategoryAxis contienentXAxis;
|
|
|
|
|
private CategoryAxis zoneXAxis;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void load() {
|
|
|
|
|
@ -95,6 +93,8 @@ public class RouteGraphController extends Controller{
|
|
|
|
|
loadOutCountryGraph();
|
|
|
|
|
loadEquipGraph();
|
|
|
|
|
loadSimilarGraph();
|
|
|
|
|
loadStopsGraph();
|
|
|
|
|
loadZoneGraph();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void loadAirlineGraph(){
|
|
|
|
|
@ -328,7 +328,6 @@ public class RouteGraphController extends Controller{
|
|
|
|
|
equipGraph.getData().add(series);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void loadSimilarGraph(){
|
|
|
|
|
similarGraph.setTitle("Top 10 Most Similar Routes");
|
|
|
|
|
similarXAxis.setLabel("Routes");
|
|
|
|
|
@ -364,41 +363,66 @@ public class RouteGraphController extends Controller{
|
|
|
|
|
similarGraph.getData().add(series);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*public void loadStopsGraph(){
|
|
|
|
|
stopsGraph.setTitle("Top 10 Equipment used by Routes");
|
|
|
|
|
XYChart.Series<String,Integer> series = new XYChart.Series<>();
|
|
|
|
|
series.setName("Number of Equipment");
|
|
|
|
|
HashMap<String, Integer> equipmentList = new HashMap<>();//equipment, count
|
|
|
|
|
public void loadStopsGraph(){
|
|
|
|
|
stopsGraph.setTitle("Top 10 Most Common Amount of Stops by Routes");
|
|
|
|
|
ArrayList<PieChart.Data> data = new ArrayList<>();
|
|
|
|
|
HashMap<Integer, Integer> stops = new HashMap<>();//equipment, count
|
|
|
|
|
for (Route route: routesFiltered){
|
|
|
|
|
String equipment[] = route.getEquipment().split(" ");
|
|
|
|
|
for (String equip : equipment){
|
|
|
|
|
if (equipmentList.containsKey(equip)){
|
|
|
|
|
equipmentList.put(equip, equipmentList.get(equip) + 1);
|
|
|
|
|
}else{
|
|
|
|
|
equipmentList.put(equip, 1);
|
|
|
|
|
}
|
|
|
|
|
if (stops.containsKey(route.getStops())){
|
|
|
|
|
stops.put(route.getStops(), stops.get(route.getStops()) + 1);
|
|
|
|
|
}else{
|
|
|
|
|
stops.put(route.getStops(), 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int stop: stops.keySet()){
|
|
|
|
|
stopsGraph.getData().add(new PieChart.Data(String.valueOf(stop), stops.get(stop)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void loadZoneGraph(){
|
|
|
|
|
zoneGraph.setTitle("Top Zones With Flights.");
|
|
|
|
|
zoneXAxis.setLabel("Zones");
|
|
|
|
|
XYChart.Series<String,Integer> series = new XYChart.Series<>();
|
|
|
|
|
series.setName("Number of Zones");
|
|
|
|
|
LinkedHashMap<String, Integer> zones = new LinkedHashMap<>();
|
|
|
|
|
for (Route route: routesFiltered) {
|
|
|
|
|
Airport source = route.getSourceAirport();
|
|
|
|
|
if (source != null){
|
|
|
|
|
if (zones.containsKey(source.getTz())) {
|
|
|
|
|
zones.put(source.getTz(), zones.get(source.getTz()) + 1);
|
|
|
|
|
} else {
|
|
|
|
|
zones.put(source.getTz(), 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Airport dest = route.getDestinationAirport();
|
|
|
|
|
if (dest != null){
|
|
|
|
|
if (zones.containsKey(dest.getTz())) {
|
|
|
|
|
zones.put(dest.getTz(), zones.get(dest.getTz()) + 1);
|
|
|
|
|
} else {
|
|
|
|
|
zones.put(dest.getTz(), 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int length = 10;
|
|
|
|
|
if (equipmentList.size() < 10){
|
|
|
|
|
length = equipmentList.size();
|
|
|
|
|
if (zones.size() < 10){
|
|
|
|
|
length = zones.size();
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0 ; i < length; i ++) {
|
|
|
|
|
int max = 0;
|
|
|
|
|
String maxEquip = "";
|
|
|
|
|
for (String equip: equipmentList.keySet()){
|
|
|
|
|
if (equipmentList.get(equip) > max){
|
|
|
|
|
max = equipmentList.get(equip);
|
|
|
|
|
maxEquip = equip;
|
|
|
|
|
String maxZone = null;
|
|
|
|
|
for (String zone: zones.keySet()){
|
|
|
|
|
if (zones.get(zone) > max){
|
|
|
|
|
maxZone = zone;
|
|
|
|
|
max = zones.get(zone);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
series.getData().add(new XYChart.Data<String, Integer>(maxEquip, max));
|
|
|
|
|
equipmentList.remove(maxEquip);
|
|
|
|
|
series.getData().add(new XYChart.Data<String, Integer>(maxZone, max));
|
|
|
|
|
zones.remove(maxZone);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
equipGraph.getData().add(series);
|
|
|
|
|
}*/
|
|
|
|
|
zoneGraph.getData().add(series);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void goToRawData(){
|
|
|
|
|
replaceSceneContent(SceneCode.ROUTE_RAW_DATA);
|
|
|
|
|
|