Bar graphs may populate correctly. Unable to test due to unrelated compliation issue.
This commit is contained in:
@@ -32,17 +32,18 @@ public class BarChooserController extends Controller{
|
||||
ObservableList airportOptions = FXCollections.observableArrayList("Name", "ICAO", "IATA FFA", "Altitude",
|
||||
"City", "Country");
|
||||
|
||||
ObservableList airlineOptions = FXCollections.observableArrayList("ID", "Name", "ICAO", "IATA", "Alias",
|
||||
ObservableList airlineOptions = FXCollections.observableArrayList("Name", "ICAO", "IATA", "Alias",
|
||||
"Call Sign", "Active", "Country");
|
||||
|
||||
ObservableList routeOptions = FXCollections.observableArrayList("ID", "Stops", "Codeshare", "Equipment", "Airline",
|
||||
"Departure Airport", "Arival airport");
|
||||
ObservableList routeOptions = FXCollections.observableArrayList("Stops", "Codeshare", "Equipment", "Airline",
|
||||
"Departure Airport", "Arrival airport");
|
||||
|
||||
ArrayList<ObservableList> allOptions = new ArrayList<ObservableList>();
|
||||
|
||||
public void buildGraph() {
|
||||
Session currentsession = this.getParent().getSession();
|
||||
currentsession.setSelectedgraphagainst(graph_options.getSelectionModel().getSelectedItem().toString());
|
||||
ArrayList<String> temp = new ArrayList<>(graph_options.getSelectionModel().getSelectedItems());
|
||||
currentsession.setSelectedgraphoptions(temp);
|
||||
currentsession.setUsefilter(usefilter.isSelected());
|
||||
currentsession.setForceGraph(Boolean.FALSE);
|
||||
replaceSceneContent(SceneCode.ROUTE_ANALYSER);
|
||||
|
||||
@@ -4,13 +4,18 @@ package seng202.group9.GUI;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.chart.BarChart;
|
||||
import javafx.scene.chart.XYChart;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.ButtonBar;
|
||||
import javafx.scene.control.ButtonType;
|
||||
import seng202.group9.Controller.Dataset;
|
||||
import seng202.group9.Controller.SceneCode;
|
||||
import seng202.group9.Controller.Session;
|
||||
import seng202.group9.Core.Airline;
|
||||
import seng202.group9.Core.Airport;
|
||||
import seng202.group9.Core.Route;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
/**
|
||||
@@ -34,6 +39,18 @@ public class BarGraphController extends Controller {
|
||||
private HashMap<String, Integer> departureAirportData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> arrivalAirportData = new HashMap<String, Integer>();
|
||||
|
||||
private HashMap<String, Integer> nameData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> ICAOData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> IATAData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> altitudeData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> cityData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> countryData = new HashMap<String, Integer>();
|
||||
|
||||
private HashMap<String, Integer> aliasData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> callSignData = new HashMap<String, Integer>();
|
||||
private HashMap<String, Integer> activeData = new HashMap<String, Integer>();
|
||||
|
||||
|
||||
private void datasetupCustomRoute(ArrayList<Route> current_routes){
|
||||
//Takes out the specified field then adds to the used data dict.
|
||||
for (Route entry : current_routes){
|
||||
@@ -88,8 +105,286 @@ public class BarGraphController extends Controller {
|
||||
seriesArivals.setName("Arrivals");
|
||||
seriesDeparts.setName("Departures");
|
||||
//Gives the formatted data to the graph.
|
||||
for (String entry : stopsData.keySet()){
|
||||
seriesStops.getData().add(new XYChart.Data(entry,stopsData.get(entry)));
|
||||
}
|
||||
for (String entry : codeShareData.keySet()){
|
||||
seriesCode.getData().add(new XYChart.Data(entry,codeShareData.get(entry)));
|
||||
}
|
||||
for (String entry : equipmentData.keySet()){
|
||||
seriesEquipment.getData().add(new XYChart.Data(entry,equipmentData.get(entry)));
|
||||
}
|
||||
for (String entry : airlineData.keySet()){
|
||||
seriesAirline.getData().add(new XYChart.Data(entry,airlineData.get(entry)));
|
||||
}
|
||||
for (String entry : arrivalAirportData.keySet()){
|
||||
seriesArivals.getData().add(new XYChart.Data(entry,arrivalAirportData.get(entry)));
|
||||
}
|
||||
for (String entry : departureAirportData.keySet()){
|
||||
seriesDeparts.getData().add(new XYChart.Data(entry,departureAirportData.get(entry)));
|
||||
}
|
||||
if (stopsData.keySet().size() > 125 && !currentsession.getForceGraph()){
|
||||
ButtonType yes = new ButtonType("Yes", ButtonBar.ButtonData.YES);
|
||||
ButtonType no = new ButtonType("No", ButtonBar.ButtonData.NO);
|
||||
Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "", yes, no);
|
||||
alert.setTitle("Too many fields selected");
|
||||
alert.setHeaderText("You have selected too many fields to graph.");
|
||||
alert.setContentText("This could potentially cause errors in the program.\nDo you want to proceed?");
|
||||
//alert.showAndWait();
|
||||
Optional<ButtonType> result = alert.showAndWait();
|
||||
if (result.isPresent() && result.get() == no) {
|
||||
replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (currentsession.getSelectedgraphoptions().contains("Stops")) {
|
||||
analyserGraph.getData().add(seriesStops);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Codeshare")) {
|
||||
analyserGraph.getData().add(seriesCode);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Equipment")) {
|
||||
analyserGraph.getData().add(seriesEquipment);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Airline")) {
|
||||
analyserGraph.getData().add(seriesAirline);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Arrival airport")) {
|
||||
analyserGraph.getData().add(seriesArivals);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Departure Airport")) {
|
||||
analyserGraph.getData().add(seriesDeparts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void datasetupCustomAirport(ArrayList<Airport> current_airports){
|
||||
//Takes out the specified field then adds to the used data dict.
|
||||
for (Airport entry : current_airports){
|
||||
if (nameData.containsKey(entry.getName())){
|
||||
nameData.replace(String.valueOf(entry.getName()),nameData.get(entry.getName())+1);
|
||||
}else {
|
||||
nameData.put(String.valueOf(entry.getName()),1);
|
||||
}
|
||||
if (ICAOData.containsKey(entry.getICAO())){
|
||||
ICAOData.replace(String.valueOf(entry.getICAO()),ICAOData.get(entry.getICAO())+1);
|
||||
}else {
|
||||
ICAOData.put(String.valueOf(entry.getICAO()),1);
|
||||
}
|
||||
if (IATAData.containsKey(entry.getIATA_FFA())){
|
||||
IATAData.replace(String.valueOf(entry.getIATA_FFA()),IATAData.get(entry.getIATA_FFA())+1);
|
||||
}else {
|
||||
IATAData.put(String.valueOf(entry.getIATA_FFA()),1);
|
||||
}
|
||||
if (altitudeData.containsKey(entry.getAltitude())){
|
||||
altitudeData.replace(String.valueOf(entry.getAltitude()), altitudeData.get(entry.getAltitude())+1);
|
||||
}else {
|
||||
altitudeData.put(String.valueOf(entry.getAltitude()),1);
|
||||
}
|
||||
if (cityData.containsKey(entry.getCityName())){
|
||||
cityData.replace(String.valueOf(entry.getCityName()),cityData.get(entry.getCityName())+1);
|
||||
}else {
|
||||
departureAirportData.put(String.valueOf(entry.getCityName()),1);
|
||||
}
|
||||
if (countryData.containsKey(entry.getCountryName())){
|
||||
countryData.replace(String.valueOf(entry.getCountryName()),countryData.get(entry.getCountryName())+1);
|
||||
}else {
|
||||
countryData.put(String.valueOf(entry.getCountryName()),1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes data from the current dataset and places it into the displayed bar graph.
|
||||
*/
|
||||
public void buildAirportGraph(){
|
||||
XYChart.Series seriesName = new XYChart.Series();
|
||||
XYChart.Series seriesICAO = new XYChart.Series();
|
||||
XYChart.Series seriesIATA = new XYChart.Series();
|
||||
XYChart.Series seriesAltitude = new XYChart.Series();
|
||||
XYChart.Series seriesCity = new XYChart.Series();
|
||||
XYChart.Series seriesCountry = new XYChart.Series();
|
||||
|
||||
seriesName.setName("Name");
|
||||
seriesICAO.setName("ICAO");
|
||||
seriesIATA.setName("IATA FFA");
|
||||
seriesAltitude.setName("Altitude");
|
||||
seriesCity.setName("City");
|
||||
seriesCountry.setName("Country");
|
||||
//Gives the formatted data to the graph.
|
||||
for (String entry : nameData.keySet()){
|
||||
seriesName.getData().add(new XYChart.Data(entry,nameData.get(entry)));
|
||||
}
|
||||
for (String entry : ICAOData.keySet()){
|
||||
seriesICAO.getData().add(new XYChart.Data(entry,ICAOData.get(entry)));
|
||||
}
|
||||
for (String entry : IATAData.keySet()){
|
||||
seriesIATA.getData().add(new XYChart.Data(entry,IATAData.get(entry)));
|
||||
}
|
||||
for (String entry : altitudeData.keySet()){
|
||||
seriesAltitude.getData().add(new XYChart.Data(entry,altitudeData.get(entry)));
|
||||
}
|
||||
for (String entry : cityData.keySet()){
|
||||
seriesCity.getData().add(new XYChart.Data(entry,cityData.get(entry)));
|
||||
}
|
||||
for (String entry : countryData.keySet()){
|
||||
seriesCountry.getData().add(new XYChart.Data(entry,countryData.get(entry)));
|
||||
}
|
||||
if (nameData.keySet().size() > 125 && !currentsession.getForceGraph()){
|
||||
ButtonType yes = new ButtonType("Yes", ButtonBar.ButtonData.YES);
|
||||
ButtonType no = new ButtonType("No", ButtonBar.ButtonData.NO);
|
||||
Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "", yes, no);
|
||||
alert.setTitle("Too many fields selected");
|
||||
alert.setHeaderText("You have selected too many fields to graph.");
|
||||
alert.setContentText("This could potentially cause errors in the program.\nDo you want to proceed?");
|
||||
//alert.showAndWait();
|
||||
Optional<ButtonType> result = alert.showAndWait();
|
||||
if (result.isPresent() && result.get() == no) {
|
||||
replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (currentsession.getSelectedgraphoptions().contains("Name")) {
|
||||
analyserGraph.getData().add(seriesName);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("ICAO")) {
|
||||
analyserGraph.getData().add(seriesIATA);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("IATA FFA")) {
|
||||
analyserGraph.getData().add(seriesIATA);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Altitude")) {
|
||||
analyserGraph.getData().add(seriesAltitude);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("City")) {
|
||||
analyserGraph.getData().add(seriesCity);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Country")) {
|
||||
analyserGraph.getData().add(seriesCountry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void datasetupCustomAirline(ArrayList<Airline> current_airlines){
|
||||
//Takes out the specified field then adds to the used data dict.
|
||||
for (Airline entry : current_airlines){
|
||||
if (nameData.containsKey(entry.getName())){
|
||||
nameData.replace(String.valueOf(entry.getName()),nameData.get(entry.getName())+1);
|
||||
}else {
|
||||
nameData.put(String.valueOf(entry.getName()),1);
|
||||
}
|
||||
if (ICAOData.containsKey(entry.getICAO())){
|
||||
ICAOData.replace(String.valueOf(entry.getICAO()),ICAOData.get(entry.getICAO())+1);
|
||||
}else {
|
||||
ICAOData.put(String.valueOf(entry.getICAO()),1);
|
||||
}
|
||||
if (IATAData.containsKey(entry.getIATA())){
|
||||
IATAData.replace(String.valueOf(entry.getIATA()),IATAData.get(entry.getIATA())+1);
|
||||
}else {
|
||||
IATAData.put(String.valueOf(entry.getIATA()),1);
|
||||
}
|
||||
if (altitudeData.containsKey(entry.getAlias())){
|
||||
aliasData.replace(String.valueOf(entry.getAlias()), aliasData.get(entry.getAlias())+1);
|
||||
}else {
|
||||
aliasData.put(String.valueOf(entry.getAlias()),1);
|
||||
}
|
||||
if (cityData.containsKey(entry.getCallSign())){
|
||||
callSignData.replace(String.valueOf(entry.getCallSign()),cityData.get(entry.getCallSign())+1);
|
||||
}else {
|
||||
departureAirportData.put(String.valueOf(entry.getCallSign()),1);
|
||||
}
|
||||
if (activeData.containsKey(entry.getCallSign())){
|
||||
activeData.replace(String.valueOf(entry.getActive()),activeData.get(entry.getActive())+1);
|
||||
}else {
|
||||
activeData.put(String.valueOf(entry.getActive()),1);
|
||||
}
|
||||
if (countryData.containsKey(entry.getCountryName())){
|
||||
countryData.replace(String.valueOf(entry.getCountryName()),countryData.get(entry.getCountryName())+1);
|
||||
}else {
|
||||
countryData.put(String.valueOf(entry.getCountryName()),1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes data from the current dataset and places it into the displayed bar graph.
|
||||
*/
|
||||
public void buildAirlineGraph(){
|
||||
XYChart.Series seriesName = new XYChart.Series();
|
||||
XYChart.Series seriesICAO = new XYChart.Series();
|
||||
XYChart.Series seriesIATA = new XYChart.Series();
|
||||
XYChart.Series seriesAlias = new XYChart.Series();
|
||||
XYChart.Series seriesCallsign = new XYChart.Series();
|
||||
XYChart.Series seriesActive = new XYChart.Series();
|
||||
XYChart.Series seriesCountry = new XYChart.Series();
|
||||
|
||||
seriesName.setName("Name");
|
||||
seriesICAO.setName("ICAO");
|
||||
seriesIATA.setName("IATA");
|
||||
seriesAlias.setName("Alias");
|
||||
seriesCallsign.setName("Call sign");
|
||||
seriesActive.setName("Active");
|
||||
seriesCountry.setName("Country");
|
||||
//Gives the formatted data to the graph.
|
||||
for (String entry : nameData.keySet()){
|
||||
seriesName.getData().add(new XYChart.Data(entry,nameData.get(entry)));
|
||||
}
|
||||
for (String entry : ICAOData.keySet()){
|
||||
seriesICAO.getData().add(new XYChart.Data(entry,ICAOData.get(entry)));
|
||||
}
|
||||
for (String entry : IATAData.keySet()){
|
||||
seriesIATA.getData().add(new XYChart.Data(entry,IATAData.get(entry)));
|
||||
}
|
||||
for (String entry : aliasData.keySet()){
|
||||
seriesAlias.getData().add(new XYChart.Data(entry,aliasData.get(entry)));
|
||||
}
|
||||
for (String entry : callSignData.keySet()){
|
||||
seriesCallsign.getData().add(new XYChart.Data(entry,callSignData.get(entry)));
|
||||
}
|
||||
for (String entry : activeData.keySet()){
|
||||
seriesActive.getData().add(new XYChart.Data(entry,activeData.get(entry)));
|
||||
}
|
||||
for (String entry : countryData.keySet()){
|
||||
seriesCountry.getData().add(new XYChart.Data(entry,countryData.get(entry)));
|
||||
}
|
||||
if (nameData.keySet().size() > 125 && !currentsession.getForceGraph()){
|
||||
ButtonType yes = new ButtonType("Yes", ButtonBar.ButtonData.YES);
|
||||
ButtonType no = new ButtonType("No", ButtonBar.ButtonData.NO);
|
||||
Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "", yes, no);
|
||||
alert.setTitle("Too many fields selected");
|
||||
alert.setHeaderText("You have selected too many fields to graph.");
|
||||
alert.setContentText("This could potentially cause errors in the program.\nDo you want to proceed?");
|
||||
//alert.showAndWait();
|
||||
Optional<ButtonType> result = alert.showAndWait();
|
||||
if (result.isPresent() && result.get() == no) {
|
||||
replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (currentsession.getSelectedgraphoptions().contains("Name")) {
|
||||
analyserGraph.getData().add(seriesName);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("ICAO")) {
|
||||
analyserGraph.getData().add(seriesIATA);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("IATA FFA")) {
|
||||
analyserGraph.getData().add(seriesIATA);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Altitude")) {
|
||||
analyserGraph.getData().add(seriesAlias);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Call Sign")) {
|
||||
analyserGraph.getData().add(seriesCallsign);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Active")) {
|
||||
analyserGraph.getData().add(seriesActive);
|
||||
}
|
||||
if (currentsession.getSelectedgraphoptions().contains("Country")) {
|
||||
analyserGraph.getData().add(seriesCountry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@@ -112,7 +407,8 @@ public class BarGraphController extends Controller {
|
||||
else{
|
||||
d = currentdata.getAirports();
|
||||
}
|
||||
//datasetupCustomarAirport(d);
|
||||
datasetupCustomAirport(d);
|
||||
buildAirportGraph();
|
||||
}
|
||||
else if (temp == "Airlines"){
|
||||
ArrayList<Airline> d = new ArrayList();
|
||||
|
||||
Reference in New Issue
Block a user