diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index 988a4b0b78b5475bb8931dd28822c67fd5160300..19a1d0009fc5f504f8f36f412c2107376cfcdfa5 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -16,47 +16,73 @@ import org.jblas.Solve; import java.util.*; -import static com.application.DB.Constants.ADJUST_REGRESSION; -import static com.application.DB.Constants.CONFIDENCE_INTERVAL; - public class LineChartFunctionality { private static LineChart<String, Number> lineChart; private static XYChart.Series<String, Number> liveDataSeries; private static XYChart.Series<String, Number> regressionSeries; + private static XYChart.Series<String, Number> regressionSeriesConfidenceInterval; private static CategoryAxis xAxis; private static NumberAxis yAxis; private static int dataPointsXAxis = 0; private static int dataPointsYAxis = 0; private static Map<String, Number> liveData; + private static ArrayList<XYChart.Series<String, Number>> previousData; + + private static boolean printRegression; + private static boolean printRegressionConfidenceInterval; + private static boolean printLiveData; + private static boolean printPreviousData; public LineChartFunctionality() { xAxis = new CategoryAxis(); yAxis = new NumberAxis(); lineChart = new LineChart<>(xAxis, yAxis); + lineChart.setTitle("Drying Processes"); + lineChart.setAnimated(false); xAxis.setLabel("Data Points"); xAxis.setAnimated(false); yAxis.setLabel("Kwh"); yAxis.setAnimated(false); - lineChart.setTitle("Drying Processes"); + regressionSeries = new XYChart.Series<String, Number>(); + regressionSeriesConfidenceInterval = new XYChart.Series<String, Number>(); + liveDataSeries = new XYChart.Series<String, Number>(); + previousData = new ArrayList<>(); + + printRegression = true; + printRegressionConfidenceInterval = true; + printLiveData = true; + printPreviousData = true; } - public static LineChart<String, Number> getLineChart() { - return lineChart; + public static void printGraphs() { + clearLineChart(); + if(printLiveData){ + updateLineChart(getLiveDataSeries()); + } + if(printRegression){ + if (!printLiveData){updateLineChart(new XYChart.Series<>());} + updateLineChart(getRegressionSeries()); + } + if(printRegressionConfidenceInterval){ + if (!printLiveData){updateLineChart(new XYChart.Series<>());} + if (!printRegression){updateLineChart(new XYChart.Series<>());} + updateLineChart(getRegressionSeriesConfidenceInterval()); + } + if(printPreviousData){ + if (!printLiveData){updateLineChart(new XYChart.Series<>());} + if (!printRegression){updateLineChart(new XYChart.Series<>());} + if (!printRegressionConfidenceInterval){updateLineChart(new XYChart.Series<>());} + for (int i = 0; i < getPreviousData().size(); i++) { + updateLineChart(getPreviousData().get(i)); + } + } } - public static void updateLineChart(XYChart.Series<String, Number> series) { - lineChart.getData().add(series); - series.getNode().setId("dataGraphs"); - lineChart.getStylesheets().add(LineChartFunctionality.class.getResource("/com.application/GUI/graphStyles.css").toExternalForm()); - } - public static void clearLineChart() { - lineChart.getData().clear(); - } private static Map<Integer, ArrayList<Double>> statistics(Map<Integer, ArrayList<Double>> multiMap){ @@ -142,8 +168,10 @@ public class LineChartFunctionality { int numberOfGraphs = 0; ArrayList<Double> dataArraylistXAxis = new ArrayList<>(); ArrayList<Double> dataArraylistYAxis = new ArrayList<>(); + //ArrayList<Double> confidenceIntervalShadowArrayList = new ArrayList<>(); Map<Integer, ArrayList<Double>> endOfGraphPointsXAxis = new HashMap<>(); Map<Integer, ArrayList<Double>> endOfGraphPointsYAxis = new HashMap<>(); + //Map<Integer, ArrayList<Double>> confidenceIntervalShadowMap = new HashMap<>(); for (int i = 0; i < multiMap.size(); i++) { ArrayList<Double> list = multiMap.get(i); for (int j = 0; j < list.size(); j++) { @@ -256,8 +284,7 @@ public class LineChartFunctionality { } - liveDataSeries = new XYChart.Series<String, Number>(); - updateLineChart(liveDataSeries); + //updateLineChart(liveDataSeries); //XYChart.Series<String, Number> regressionSeries = new XYChart.Series<String, Number>(); @@ -292,7 +319,7 @@ public class LineChartFunctionality { - regressionSeries.getData().add(new XYChart.Data<String, Number>( + getRegressionSeries().getData().add(new XYChart.Data<String, Number>( String.valueOf(i), getNonLinearRegression( confidenceIntervalData, @@ -304,11 +331,12 @@ public class LineChartFunctionality { } - updateLineChart(regressionSeries); + //updateLineChart(getRegressionSeries()); //lineChart.setOpacity(1); + getPreviousData().clear(); for (Map.Entry<Integer, Map<String, Number>> entryKwh : userInput.entrySet()) { //System.out.println(data.size()); XYChart.Series<String, Number> newSeries = new XYChart.Series<String, Number>(); @@ -322,8 +350,9 @@ public class LineChartFunctionality { newSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue)); index++; } + addPreviousData(newSeries); //allSeries.add(newSeries); - updateLineChart(newSeries); + //updateLineChart(newSeries); //lineChart.setOpacity(1); } @@ -347,6 +376,8 @@ public class LineChartFunctionality { getTimeLeft(0); + printGraphs(); + return getLineChart(); } @@ -360,7 +391,7 @@ public class LineChartFunctionality { Double kwhValue = entryKwh.getValue().doubleValue(); // Connect the data to a series - liveDataSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue)); + getLiveDataSeries().getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue)); index++; } } @@ -539,4 +570,67 @@ public class LineChartFunctionality { public static XYChart.Series<String, Number> getRegressionSeries() { return regressionSeries; } + + public static boolean isPrintRegression() { + return printRegression; + } + + public static void setPrintRegression(boolean printRegression) { + LineChartFunctionality.printRegression = printRegression; + } + + public static boolean isPrintRegressionConfidenceInterval() { + return printRegressionConfidenceInterval; + } + + public static void setPrintRegressionConfidenceInterval(boolean printRegressionConfidenceInterval) { + LineChartFunctionality.printRegressionConfidenceInterval = printRegressionConfidenceInterval; + } + + public static boolean isPrintLiveData() { + return printLiveData; + } + + public static void setPrintLiveData(boolean printLiveData) { + LineChartFunctionality.printLiveData = printLiveData; + } + + public static boolean isPrintPreviousData() { + return printPreviousData; + } + + public static void setPrintPreviousData(boolean printPreviousData) { + LineChartFunctionality.printPreviousData = printPreviousData; + } + + public static ArrayList<XYChart.Series<String, Number>> getPreviousData() { + return previousData; + } + + public static void addPreviousData(XYChart.Series<String, Number> previousData) { + LineChartFunctionality.previousData.add(previousData); + } + + public static XYChart.Series<String, Number> getRegressionSeriesConfidenceInterval() { + return regressionSeriesConfidenceInterval; + } + + public static void setRegressionSeriesConfidenceInterval(XYChart.Series<String, Number> regressionSeriesConfidenceInterval) { + LineChartFunctionality.regressionSeriesConfidenceInterval = regressionSeriesConfidenceInterval; + } + + public static LineChart<String, Number> getLineChart() { + return lineChart; + } + + public static void updateLineChart(XYChart.Series<String, Number> series) { + lineChart.getData().add(series); + series.getNode().setId("dataGraphs"); + lineChart.getStylesheets().add(LineChartFunctionality.class.getResource("/com.application/GUI/graphStyles.css").toExternalForm()); + } + + public static void clearLineChart() { + lineChart.getData().clear(); + //lineChart.getData(). + } } diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 4c8e32fa038e005d793a12bbfd02cc85b5b5baba..d24550fc9d29cff40c765264d656775955bdb501 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -319,46 +319,72 @@ public class Main extends Application { Label liveDataText = new Label("View Live Data"); CheckBox liveDataBox = new CheckBox(); + liveDataBox.setSelected(true); liveDataBox.setOnAction(event -> { if(liveDataBox.isSelected()){ - if(LineChartFunctionality.getLineChart().getData().contains(LineChartFunctionality.getLiveDataSeries())){ + System.out.println("Pressed"); + LineChartFunctionality.setPrintLiveData(true); + LineChartFunctionality.printGraphs(); - System.out.println("@@@@"); - LineChartFunctionality.getLiveDataSeries().getNode().setVisible(!LineChartFunctionality.getLiveDataSeries().getNode().isVisible()); - } else { - - } } else { System.out.println("not pressed"); + LineChartFunctionality.setPrintLiveData(false); + LineChartFunctionality.printGraphs(); } }); Label regressionText = new Label("View Regression"); CheckBox regressionBox = new CheckBox(); + regressionBox.setSelected(true); regressionBox.setOnAction(event -> { if(regressionBox.isSelected()){ - //System.out.println("@@@"); - if(LineChartFunctionality.getLineChart().getData().contains(LineChartFunctionality.getRegressionSeries())){ - System.out.println("fant series"); - LineChartFunctionality.getRegressionSeries().getNode().setVisible(!LineChartFunctionality.getRegressionSeries().getNode().isVisible()); - } else { + System.out.println("Pressed"); + LineChartFunctionality.setPrintRegression(true); + LineChartFunctionality.printGraphs(); - } } else { System.out.println("not pressed"); + LineChartFunctionality.setPrintRegression(false); + LineChartFunctionality.printGraphs(); } }); + Label regressionConfidenceIntervalText = new Label("View Regression Shadow"); + CheckBox regressionConfidenceIntervalBox = new CheckBox(); + regressionConfidenceIntervalBox.setSelected(true); + regressionConfidenceIntervalBox.setOnAction(event -> { + if(regressionConfidenceIntervalBox.isSelected()){ + System.out.println("Pressed"); + LineChartFunctionality.setPrintRegressionConfidenceInterval(true); + LineChartFunctionality.printGraphs(); + + } else { + System.out.println("not pressed"); + LineChartFunctionality.setPrintRegressionConfidenceInterval(false); + LineChartFunctionality.printGraphs(); + } + }); + Label previousText = new Label("View Previous Data"); CheckBox previousBox = new CheckBox(); + previousBox.setSelected(true); previousBox.setOnAction(event -> { + if(previousBox.isSelected()){ + System.out.println("Pressed"); + LineChartFunctionality.setPrintPreviousData(true); + LineChartFunctionality.printGraphs(); + } else { + System.out.println("not pressed"); + LineChartFunctionality.setPrintPreviousData(false); + LineChartFunctionality.printGraphs(); + } }); - hBox.getChildren().addAll(liveDataText, liveDataBox, regressionText, regressionBox, previousText, previousBox); + hBox.getChildren().addAll(liveDataText, liveDataBox, regressionText, regressionBox, regressionConfidenceIntervalText, regressionConfidenceIntervalBox, previousText, previousBox); hBox.setAlignment(Pos.CENTER_RIGHT); hBox.setSpacing(5); diff --git a/src/main/resources/com.application/GUI/graphStyles.css b/src/main/resources/com.application/GUI/graphStyles.css index fbc50cdb17da7664837fcf7e3b83160e96b07869..e59a1618e2b809ab8427f1604320facf2e22bc5f 100644 --- a/src/main/resources/com.application/GUI/graphStyles.css +++ b/src/main/resources/com.application/GUI/graphStyles.css @@ -11,7 +11,7 @@ .default-color0.chart-series-line{-fx-stroke: red; -fx-opacity: 1.0} .default-color1.chart-series-line{-fx-stroke: green; -fx-opacity: 1.0} -.default-color2.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} +.default-color2.chart-earlier-data-line{-fx-stroke: black; -fx-opacity: 0.1} .default-color3.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} .default-color4.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} .default-color5.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} @@ -20,7 +20,7 @@ .default-color0.chart-line-symbol{-fx-background-color: red,red;} .default-color1.chart-line-symbol{-fx-background-color: green,green;} -.default-color2.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;} +.default-color2.chart-line-symbol{-fx-background-color: black,black;} .default-color3.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;} .default-color4.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;} .default-color5.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;} diff --git a/target/classes/com.application/GUI/graphStyles.css b/target/classes/com.application/GUI/graphStyles.css index fbc50cdb17da7664837fcf7e3b83160e96b07869..e59a1618e2b809ab8427f1604320facf2e22bc5f 100644 --- a/target/classes/com.application/GUI/graphStyles.css +++ b/target/classes/com.application/GUI/graphStyles.css @@ -11,7 +11,7 @@ .default-color0.chart-series-line{-fx-stroke: red; -fx-opacity: 1.0} .default-color1.chart-series-line{-fx-stroke: green; -fx-opacity: 1.0} -.default-color2.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} +.default-color2.chart-earlier-data-line{-fx-stroke: black; -fx-opacity: 0.1} .default-color3.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} .default-color4.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} .default-color5.chart-earlier-data-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} @@ -20,7 +20,7 @@ .default-color0.chart-line-symbol{-fx-background-color: red,red;} .default-color1.chart-line-symbol{-fx-background-color: green,green;} -.default-color2.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;} +.default-color2.chart-line-symbol{-fx-background-color: black,black;} .default-color3.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;} .default-color4.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;} .default-color5.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),white;}