From 91315e47c45b80b4525283b87f1e214088116773 Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Wed, 30 Mar 2022 14:08:26 +0200
Subject: [PATCH] Seperated the lineChart into a separate class

---
 .../java/com/application/DB/Constants.java    |   4 +-
 .../GUI/{Input.java => InputPopUpWindow.java} |   6 +--
 .../GUI/LineChartFunctionality.java           |  43 ++++++++++++++++++
 src/main/java/com/application/Main.java       |  28 ++++--------
 .../com/application/DB/Constants.class        | Bin 1677 -> 1678 bytes
 .../classes/com/application/GUI/Input.class   | Bin 4488 -> 0 bytes
 .../com/application/Main$1WorkerThread.class  | Bin 2263 -> 2263 bytes
 target/classes/com/application/Main.class     | Bin 8949 -> 7007 bytes
 8 files changed, 58 insertions(+), 23 deletions(-)
 rename src/main/java/com/application/GUI/{Input.java => InputPopUpWindow.java} (94%)
 create mode 100644 src/main/java/com/application/GUI/LineChartFunctionality.java
 delete mode 100644 target/classes/com/application/GUI/Input.class

diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java
index da40820..84b9a5e 100644
--- a/src/main/java/com/application/DB/Constants.java
+++ b/src/main/java/com/application/DB/Constants.java
@@ -71,8 +71,8 @@ public final class Constants {
     public static final String START_DRYING_NAME = "DryingStarted";
     public static final String STOP_DRYING_NAME = "DryingCompleted";
     public static final String KILIN_NAME = "KilinId";
-    public static int KILIN_ID = 18;
-    //public static int KILIN_ID = 18554;
+    //public static int KILIN_ID = 18;
+    public static int KILIN_ID = 18554;
 
     // Swappconsensordata
     public static final String KWH_NAME = "RealValue";
diff --git a/src/main/java/com/application/GUI/Input.java b/src/main/java/com/application/GUI/InputPopUpWindow.java
similarity index 94%
rename from src/main/java/com/application/GUI/Input.java
rename to src/main/java/com/application/GUI/InputPopUpWindow.java
index d94d71d..71bfe58 100644
--- a/src/main/java/com/application/GUI/Input.java
+++ b/src/main/java/com/application/GUI/InputPopUpWindow.java
@@ -15,7 +15,7 @@ import com.application.Main;
  * @author Eilert Tunheim, Karin Pettersen, Mads Arnesen
  * @version 1.0
  */
-public class Input {
+public class InputPopUpWindow {
 
     public static void display()
     {
@@ -79,7 +79,7 @@ public class Input {
 
             // Call på getKwh()
             try {
-                Main.createLineChart();
+                //Main.createLineChart();
             } catch (Exception ex) {
                 ex.printStackTrace();
             }
@@ -92,7 +92,7 @@ public class Input {
         layout.setAlignment(Pos.CENTER);
 
         Scene scene = new Scene(layout, 600, 600);
-        scene.getStylesheets().add(Input.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm());
+        scene.getStylesheets().add(InputPopUpWindow.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm());
         window.setScene(scene);
         window.showAndWait();
     }
diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java
new file mode 100644
index 0000000..a928239
--- /dev/null
+++ b/src/main/java/com/application/GUI/LineChartFunctionality.java
@@ -0,0 +1,43 @@
+package com.application.GUI;
+
+import javafx.scene.chart.CategoryAxis;
+import javafx.scene.chart.LineChart;
+import javafx.scene.chart.NumberAxis;
+import javafx.scene.chart.XYChart;
+
+public class LineChartFunctionality {
+
+    LineChart<String, Number> lineChart;
+    XYChart.Series<String, Number> series;
+    CategoryAxis xAxis;
+    NumberAxis yAxis;
+
+
+    public LineChartFunctionality(){
+        xAxis = new CategoryAxis();
+        yAxis = new NumberAxis();
+        series = new XYChart.Series<String, Number>();
+        lineChart = new LineChart<>(xAxis,yAxis);
+        lineChart.getData().add(series);
+        xAxis.setLabel("Date");
+        yAxis.setLabel("Kwh");
+        lineChart.setTitle("Drying Processes");
+    }
+
+    public LineChart<String, Number> getLineChart() {
+        return lineChart;
+    }
+
+    public void setLineChart(LineChart<String, Number> lineChart) {
+        this.lineChart = lineChart;
+    }
+
+    public XYChart.Series<String, Number> getSeries() {
+        return series;
+    }
+
+    public void setSeries(XYChart.Series<String, Number> series) {
+        this.series = series;
+    }
+
+}
diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java
index 2f19a21..39fa1a0 100644
--- a/src/main/java/com/application/Main.java
+++ b/src/main/java/com/application/Main.java
@@ -1,8 +1,8 @@
 package com.application;
 
-import com.application.DB.DB;
-import com.application.GUI.Input;
+import com.application.GUI.InputPopUpWindow;
 import com.application.GUI.RingProgressIndicator;
+import com.application.GUI.LineChartFunctionality;
 
 import javafx.application.Application;
 import javafx.application.Platform;
@@ -13,14 +13,10 @@ import javafx.scene.image.ImageView;
 import javafx.scene.layout.*;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
-import javafx.scene.chart.CategoryAxis;
-import javafx.scene.chart.NumberAxis;
-import javafx.scene.chart.XYChart;
 
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.util.*;
 import java.util.logging.Logger;
 
 import static java.util.logging.Level.SEVERE;
@@ -37,6 +33,7 @@ public class Main extends Application {
     private HBox logoBar;
     private VBox sideBar;
     private MenuBar menuBar;
+    private LineChartFunctionality lineChartFunctionality;
 
     /**
      * Starts the application
@@ -62,6 +59,7 @@ public class Main extends Application {
         this.logoBar = new HBox();
         this.sideBar = new VBox();
         this.menuBar = new MenuBar();
+        this.lineChartFunctionality = new LineChartFunctionality();
     }
 
     /**
@@ -78,7 +76,8 @@ public class Main extends Application {
         this.menuBar = createMenuBar();
         this.sideBar = createSideBar();
         this.logoBar = createLogoBar();
-        LineChart<String, Number> lineChart = createLineChart();
+
+        LineChart<String, Number> lineChart = this.lineChartFunctionality.getLineChart();
 
         //Set id's to connect to css stylesheet
         root.setId("root");
@@ -174,7 +173,7 @@ public class Main extends Application {
 
         Button finish = new Button("Finish");
         finish.setId("sideBarButtonFinish");
-        finish.setOnAction(e -> Input.display());
+        finish.setOnAction(e -> InputPopUpWindow.display());
 
 
         // Creating the circular progressbar
@@ -261,16 +260,9 @@ public class Main extends Application {
     }
 
 
-    public static LineChart<String,Number> createLineChart() throws Exception {
-
-        final CategoryAxis xAxis = new CategoryAxis();
-        final NumberAxis yAxis = new NumberAxis();
-        xAxis.setLabel("Date");
-
-        final LineChart<String, Number> lineChart = new LineChart<>(xAxis, yAxis);
 
-        lineChart.setTitle("Drying Processes");
 
+        /*
         Map<Integer, Map> kWh = DB.getKwh();
 
 
@@ -293,13 +285,13 @@ public class Main extends Application {
             lineChart.getData().add(series);
             //System.out.println("\n\nNew line\n\n");
         }
+
+         */
 /*
         for (Map.Entry<Integer, Map> entryKwh : kWh.entrySet()) {
             System.out.printf("Index: \t%s\t\t\tkWh: \t%s\n",entryKwh.getKey(),entryKwh.getValue());
         }
  */
-        return lineChart;
-    }
 }
 
 
diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class
index 7cf43aea48c35042683a053b5794db086fc0ec92..3cffa8e8d8a94a99337892ff984d856f80e48a45 100644
GIT binary patch
delta 41
ucmeC>?c?1b&BmF*z{CIoCX-dzbeRP`swM}s>2rHCFf!OPFfcGNH~;{gy9QwZ

delta 40
tcmeC<?d9Dd&BmF|z{CIo#*<apbeRN%CWo-;b9*r`GT1XPFfcJV004}@1+4%8

diff --git a/target/classes/com/application/GUI/Input.class b/target/classes/com/application/GUI/Input.class
deleted file mode 100644
index 90cc636ac48decad559bbc5e830e886dd9fdcb9d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4488
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
W8D23+GPFTUiFO8Nh7N{KhAsfFZ`?uv

diff --git a/target/classes/com/application/Main$1WorkerThread.class b/target/classes/com/application/Main$1WorkerThread.class
index fc1cb79295b938a5ba6bc65d216611f6e1d0be64..ecdd8db78db05984f51b2e5159c022801f31209d 100644
GIT binary patch
delta 89
zcmcaEcwKOVAv^CL22O@u415fG8H5@3O}1lSX?mD}jo}yrC&Lj2E{3BFd<-WUL>SI8
vh%=mGkYG5?Aj5EmL66}agE_+m21kaA3|<VE7<?J7PL|=wVmvpwog)AMBOe#r

delta 89
zcmcaEcwKOVAv^D022O_E415gx7=#)2Pqt%UX?lc#jo~;0C&N(&E{0<ad<>@;L>SI7
vh%=mKkYG5&Aj5E$L66})gE_-R21kZV3|<VE8GIS8O_t%vVmv>&og)AMCRP{j

diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class
index 80979f33ddbb4b67750a37f6c45e96cd1f729d8e..ba9aec1158e5eb2b28ba0a08e90d814dcfda0e05 100644
GIT binary patch
delta 3121
zcmezBdf%-6)W2Q(7#J8#7|XdBN*IoEF%&Z#1F?>?Go0XJU|~4Q$xzI2lAYlc7Xv$l
zbDEvu3>O0zgmadi;T#tOFNAZRo#6r(g8+nc5oFXQ5OEnqTmea3<zScsGV~e;LnX+(
zYaI0qwIJ=+I2fuyW?ti9n99X)o#7fg!wnGsCP?)y5OEts+~H)n%Ww}Qai5*x0h`05
z0}LR*=FkLTa4~2wJOmMsxELNYJmFw?%Ej=E;W-z>3x=2646hhob1=N&VtC8&4n({M
z5%nKH<VO(k2}FEmXZXUw@Rf_fn&BG<!*>pbA0X%bWM}xr!SI`l!4V|-2Si_EXZXv-
z;06jYH->8*4F5o!|6B}ij0_x%j2w(i9E{8yj4T|CtQ?GN?2POjj2v7HK@8tG7&$@o
zH6aEDMt&}a`XELDc1A%ihDeY}k&HrI43Uh&?2IB@46%%&AVQ3bfs0X`o8c9s1UsW7
zJEIf_qcj&oGQ&46h9pKA4n|paMma8q3`Ti2he%LhFff343Lrv}ol%L4ArE9SJEJlv
zz;ALfsxYduGpeyOsxvb1gy&DrVLBismXn#6>YR~SRN_{emt2yWpO=`ESyIW!pfh<s
zo2Zx%R@up#%&WLH7#UbH^D;}=88tWGV?M{ss5P05t5l$op^1l4o1v43p^u@7kwI?q
zMlO-b^SOAK%NZ&ruj7(su4Jg1e2z<&xtgJ7@;fd?wpxZdMh30P3)n<*u-nGNP|wi7
z!!U<oE)T;ZhQ&M#n;Ew7FzPVs@-XT#>a#N%Ffs^cC6*<oRp=Kdr{<;V`{k#k@-Q?q
z8uBn2F&gtQnt%vXMq_qHGag2BMhhNBOGc~73EbiWjf~bjj5dt6?2L9ijP{HUliRs9
z#2k4Tofw_j8C`f7T^Zfj8QpmpJs3SFALW);^5S9iX4L0l^kMYnVf174=V1&05rK?B
zJdD90?@CVo$R#;ho`+Mckx`$KfyFf?vxJd>#UnMRfQK=J(RQ*OPc}y=$cQjTx5*oM
zCQF11Fh=mRF-8h79N=M$VvOctjA4vrWYC<vfK8K&hcS*Zo`*4kp=okIuexX>V<Hd3
z1W*7cG1~GlCNrimGDu8r<dc~Em^XsCkui0$9bckABV!s5V>-xP8H~P+3{s#N5DrRB
z&&<!`Va#N-VrR_aVa#S|nyetuCdQVNSelod!N|aqo>~GA|H&U%L?+jBuucwO;o)R0
zPA&0FVPp`U+$bi(62{0NGr5pMcya&>=jKNOmzdac7;_mJ#3u`gh;UeIhH)_zGv;l+
zCY;R3r~-;qb<ezl(vpDug3yBS%)FHRaz+OBl+5CSoWx3Y#(W;e0>)w<hW!i&CTEJ9
zGL}xBFMf-qjFCZgvVw%{<XI9r^~DS&3=9mc3``8=3>6Fv3``7_3{_ydnxO_v*D}<B
z>3W6+1_lNW21bTPh9(9^hGqr^27Lxb21by6t?dkq8^Ow27#JAXz=CoNtqcqdJYY5}
zLmNXo0|NsmLkB}A0~1)YF#{t*07Ul=1}21VE(RtB1_oUQ76v^O6S^3>85kIP7#J8>
z7#JCP85luX0BTkp12fnjo5{VB2K8FI83ZD?GYD>F5JDI$$H30Oz+le6!eGU~&tT0U
z#bCpr%3#Z2z+lH<&0vpYl?~LfFsu3*7#SuoOoUj)xS4^SfsKKI;o)uumdNc4tiD=W
z+ZlwnGVp_Fk*y3oTJ>7n8AP`-aB6K~5ZcBd=BFbhzKuabYYPLXkmNQ7DXlFG{6f;(
z7-Y1zFz^V;Zex(s6_Ve^ps<^PE0Sd|gJL8zNJa2=1|=&Ntt|{}k}TU8ltB!T3ELP{
zbU^HF49XyyXB&g6j_x)F6_DH}2DKdw>bn{0H6nFH7&Ju~w6`<pTCqy9Ze!5X+Qy(S
zWU!6Fa2tcsP6lHphHz~mlWh#9+AP}`%(O)qw6`&sYl|>wZey^}25GR=-o{`B3Or^8
zP>g0VNHH)lcr$P?_%H}C_%cW^_%SFj1TbhY1T*L{gfN&hgfciVgfVzBgfsZpGek2a
zGsH3EFvK&IGbAz8GbA&#Go&!|Fr+a|W5{G!#*oFZmm!DYFhefG35Gm|^9=b6*BA;I
z?l2TGJYXmS$AldujG-~X!0?b^62oK$Mg|Usn+#JJDj1j;G#GX=Ol6qHz|4@$P{%Nx
zp@xBlVHtxp!wd$^nGCE9vlt+0529=~12a73^fNGlN;^;zo_t<ftlm0O$Ywi(t?zCI
z>qsHH?F_blV3z%M23so@?QIMWI?w>y#^9ifU`nz;*&E>LUWtK&fq|ixfrFueL5QJ|
zL587;L7kzE!HA)q!Iq(e!IPmI>^Tz#R&Z#7^F%!Z2ZJ*MD3>uZ2r*bP%ww3(z{DWK
zpwF;?VLk&hgF1r>!$OAn3@i*xpz;~yYz77<F9ucy9tH+RGf=A8&cN-no53+s$Z0!+
zv#*Yj%Qgnr-3)G#+Zo*bbU{21T_MkH3|_k17`(&53VpUSI9stuvIx0stB0!vB^9u0
zNme1>Z46#um3|<VY?5ps37DZ)?2_ytzK0~ckUvae07xN+BnL<Wu8>ob6U6tB<P-`7
zD-4Ph3f|5TV#OuNB^0`iAxx6Xco#!B1H(3kh}{g4k=q%fthgn)1yZ&#L`!mSV~E+!
z5F4o_$-SK+ZW}|q_BMtD0j|9aij$|xn$;(Q5-}vrYa`;Ii9vyZfnhQO2g6hbA%<xT
z5)9KB6c}bOs4>iB&|#RxV8}3s!G>WjgEPZC1|Np`48aTw7@`;!F{CmqX2@Y!!cfYv
zl%a-U8ACI}3Wh$0l?+oERx!+DSk17MVGY9?hII_v8P+rGW7xoOqMl(3!$pRz3^y3I
zG2CUi!SIUV4x=u^Jw_9T2jEDqg2WFr1#>X!F)U%IVPIqsVpL&R%CL-qi9vx;jA1#$
z3I=8d8-`yDD;btCurT;Aykc0zu!4b=A(i1G!)k_Q3~UUg3<nw3Fsxu;XXs;C!LXKL
z83PByJcjxi4C@$HFmN(#XQ*db&#-}ki{T<eD#J#GO$^)&OrTmET41R$uz`!d3A-7R
zB6l++M+&8EXGq=7kmdsyNQVgc?q<k{)ZWgJ=?7xyY-h-{V$l_0$lAt`qsy|5Ay<+G
z!jWWQ*~U<xyPF{|ayvslDA|Ccp#UbpCdmd9V2@-67iqe|kt~v|!I7+zEWwd%l5D}-
z843}RX2!tFz`*dHL6G4CgA&7M25p8f45kd<8EhDSFgP;&WbkD8#o*8Immz}TA438o
z14AYwBSU>5BQrRlJs`e=2DBhUJ;PRpZ48VIN(^}n+ZnboFfnK|q%!Pa*vY`mV9F59
zu!~_Q0}De0g9XEGhCK|d44Dk-40{>&FtEW(h<yTFpgI$h)fn^`7{GN4%MOMjP>IL{
zE)m&$z=9jVPJmQ$EDQ%34lyt=Ff$wm7YRog$`}|Jgcz6@Vi_11N*Nd!3mHooix?ys
SxgdoTBR2yxBM&1lBOd^Gkd)2<

delta 4990
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

-- 
GitLab