From a1c06e0414a4c3e363dcae997fc8720e78ecbe28 Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Wed, 30 Mar 2022 19:07:42 +0200
Subject: [PATCH] minor updates to the priority and the linechart

---
 .../java/com/application/DB/Constants.java    |  14 ++-
 src/main/java/com/application/DB/DB.java      | 109 ++++++++++++++----
 .../com/application/GUI/InputPopUpWindow.java |  12 +-
 .../GUI/LineChartFunctionality.java           |  47 ++++++--
 .../com/application/DB/Constants.class        | Bin 1679 -> 1725 bytes
 target/classes/com/application/DB/DB.class    | Bin 11236 -> 13089 bytes
 .../application/GUI/InputPopUpWindow.class    | Bin 4521 -> 4608 bytes
 .../GUI/LineChartFunctionality.class          | Bin 4132 -> 4486 bytes
 8 files changed, 140 insertions(+), 42 deletions(-)

diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java
index 1cb72d1..69d7d92 100644
--- a/src/main/java/com/application/DB/Constants.java
+++ b/src/main/java/com/application/DB/Constants.java
@@ -25,6 +25,10 @@ public final class Constants {
     public static  String SAWSET = "";
     public static  String MOISTURE_GOAL = "";
 
+    // Number of wanted drying periods
+
+    public static int NUMBER_OF_PERIODS = 2;
+
     // Database ID/name
     public static final String PROJECT_ID = "sf-drying-optimization";
 
@@ -44,6 +48,7 @@ public final class Constants {
     public static final String KILIN_NAME = "KilnName";
     public static int KILIN_ID = 5;                 // Kammer 5
     //public static int KILIN_ID = 6;                 // Kammer 6
+    public static final int LIMIT = 1000;
 
     // Winccsensordata
     public static final String KWH_NAME = "VariantValue";
@@ -51,7 +56,9 @@ public final class Constants {
     public static final String VALUE_ID_NAME = "ValueID";
     public static final int VALUE_ID = 51;          // Kammer 5
     //public static final int VALUE_ID = 56;          // Kammer 6
-    public static final int LIMIT = 1000;
+
+
+
 
 
 
@@ -73,13 +80,13 @@ public final class Constants {
     public static final String KILIN_NAME = "KilinId";
     public static int KILIN_ID = 18;
     //public static int KILIN_ID = 18554;
+    public static final int LIMIT = 1000;
 
     // Swappconsensordata
     public static final String KWH_NAME = "RealValue";
     public static final String TIMESTAMP_NAME = "Timestamp";
     public static final String VALUE_ID_NAME = "ValueID";
     public static final int VALUE_ID = 19;
-    public static final int LIMIT = 1000;
 
 
  */
@@ -91,4 +98,7 @@ public final class Constants {
 
 
 
+
+
+
 }
diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java
index f33f407..7e976b1 100644
--- a/src/main/java/com/application/DB/DB.java
+++ b/src/main/java/com/application/DB/DB.java
@@ -57,7 +57,7 @@ public class DB {
      * @throws Exception throws exception in case of error
      */
     public static void main(String[] args) throws Exception {
-        getKwh();
+        //getKwh();
         //getName();
         //getZeroPointDate();
     }
@@ -125,6 +125,78 @@ public class DB {
 
     }
 
+    public static Map<Integer, Map<String, Number>> setInputParameters() throws Exception {
+
+        String extraInputParameter = "";
+        String treeSpecies = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ TREE_SPECIES +"%"+'"'+" ";
+        String width = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ WIDTH_DIMENTION +"%"+'"'+" ";
+        String height = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ HEIGHT_DIMENTION +"%"+'"'+" ";
+        String widthXHeight = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ WIDTH_DIMENTION+"x"+HEIGHT_DIMENTION +"%"+'"'+" ";
+        String sawset = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ SAWSET +"%"+'"'+" ";
+        String moistureGoal = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ MOISTURE_GOAL+'%' +"%"+'"'+" ";
+
+        System.out.printf("Tree species: \t%s\n",TREE_SPECIES);
+        System.out.printf("Width: \t\t\t%s\n",WIDTH_DIMENTION);
+        System.out.printf("Height: \t\t%s\n",HEIGHT_DIMENTION);
+        System.out.printf("Sawset: \t\t%s\n",SAWSET);
+        System.out.printf("Moisture: \t\t%s\n",MOISTURE_GOAL);
+
+        // Input parameters
+        if(!TREE_SPECIES.isEmpty()){
+            extraInputParameter += treeSpecies;
+        }
+        if(!WIDTH_DIMENTION.isEmpty() && !HEIGHT_DIMENTION.isEmpty()){
+            extraInputParameter += widthXHeight;
+        }
+        else if(!WIDTH_DIMENTION.isEmpty()){
+            extraInputParameter += width;
+        }
+        else if(!HEIGHT_DIMENTION.isEmpty()){
+            extraInputParameter += height;
+        }
+        if(!SAWSET.isEmpty()){
+            extraInputParameter += sawset;
+        }
+        if(!MOISTURE_GOAL.isEmpty()){
+            extraInputParameter += moistureGoal;
+        }
+
+
+
+        Map<String, String> results = new HashMap<>();
+        while(true){
+            System.out.printf("\nExtra parameters:\n %s\n\n",extraInputParameter);
+            // Retrieves the dates
+            results =  getZeroPointDate(extraInputParameter);
+
+            // Checks if any dates where found, if not parameters are removed until dates are found
+            if(results.size()<NUMBER_OF_PERIODS){
+                if(extraInputParameter.contains(width)) {
+                    extraInputParameter = extraInputParameter.replace(width,"");
+                    System.out.println("Width is removed");
+                } else if(extraInputParameter.contains(sawset)) {
+                    extraInputParameter = extraInputParameter.replace(sawset,"");
+                    System.out.println("Sawset is removed");
+                } else if(extraInputParameter.contains(treeSpecies)) {
+                    extraInputParameter = extraInputParameter.replace(treeSpecies,"");
+                    System.out.println("Tree species is removed");
+                } else if(extraInputParameter.contains(height)) {
+                    extraInputParameter = extraInputParameter.replace(height,"");
+                    System.out.println("Height is removed");
+                } else if(extraInputParameter.contains(widthXHeight)) {
+                    extraInputParameter = extraInputParameter.replace(widthXHeight,"");
+                    System.out.println("widthXHeight is removed");
+                } else if(extraInputParameter.contains(moistureGoal)) {
+                    extraInputParameter = extraInputParameter.replace(moistureGoal,"");
+                    System.out.println("Moisture goal is removed");
+                } else break;
+            }
+            else break;
+        }
+
+        return getKwh(results);
+    }
+
 
     /**
      * Retrieves information about kWh and the corresponding date
@@ -132,14 +204,14 @@ public class DB {
      * @return the results
      * @throws Exception returns potential error
      */
-    public static Map<Integer, Map<String, Number>> getKwh() throws Exception {
+    public static Map<Integer, Map<String, Number>> getKwh(Map<String, String> dates) throws Exception {
 
         // Initializing the data map to store the results
         Map<Integer, Map<String, Number>> finalResults = new HashMap<>();
 
         int index = 0;
 
-        for (Map.Entry<String, String> entry : getZeroPointDate().entrySet()) {
+        for (Map.Entry<String, String> entry : dates.entrySet()) {
             //System.out.printf("Intid: \t%s\t\t\tOuttid: \t%s\n",entry.getKey(),entry.getValue());
 
             // Initializing the data map to store the results
@@ -224,7 +296,7 @@ public class DB {
      * @return Returns a treemap that sorts the Start- and End time for each drying period incrementally
      * @throws Exception Throws exception if an error occurs
      */
-    private static Map<String, String> getZeroPointDate() throws Exception{
+    private static Map<String, String> getZeroPointDate(String extraUserInput) throws Exception{
 
         // Initializing the dates map to store the results
         Map<String, String> dates = new HashMap<>();
@@ -240,6 +312,7 @@ public class DB {
 
         // Defining extra parameters if required
         String extraInputParameter = "";
+        extraInputParameter += extraUserInput;
         if(LOCATION_ID == 124){
             extraInputParameter += "AND CalculatedStart BETWEEN \"1990-01-01 00:00:00\" AND \"" + TODAYS_DATE + "\" ";
         }
@@ -247,24 +320,6 @@ public class DB {
             // KILIN_ID starts at 0 not 1 in the database.
             KILIN_ID -= 1;
         }
-        // Input parameters
-        if(!TREE_SPECIES.isEmpty()){
-            extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ TREE_SPECIES +"%"+'"'+" ";
-        }
-        if(!WIDTH_DIMENTION.isEmpty()){
-            extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ WIDTH_DIMENTION +"%"+'"'+" ";
-        }
-        if(!HEIGHT_DIMENTION.isEmpty()){
-            extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ HEIGHT_DIMENTION +"%"+'"'+" ";
-        }
-        if(!SAWSET.isEmpty()){
-            extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ SAWSET +"%"+'"'+" ";
-        }
-        if(!MOISTURE_GOAL.isEmpty()){
-            extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ MOISTURE_GOAL +"%"+'"'+" ";
-        }
-
-
 
         // Sqlstatement for Valåsen(124)
         final String sqlStatement =
@@ -305,6 +360,9 @@ public class DB {
             String formatedInTidTork = "";
             String formatedUtTidTork = "";
 
+            System.out.println(row.get("DryingSchedule").getStringValue());
+
+
             //System.out.println("Start: "+row.get("DryingStarted").getTimestampValue());
             //System.out.println("Stop: "+row.get("DryingCompleted").getTimestampValue());
 
@@ -372,12 +430,13 @@ public class DB {
         // Defining a treemap to sort the data incrementally
         NavigableMap<String, String> sortedFinalResults = new TreeMap<>(dates);
 
+        System.out.println("\n");
+
         for (Map.Entry<String, String> entry : sortedFinalResults.entrySet()) {
-            System.out.printf("Timestamp: \t%s\t\t\tkWh: \t%s\n",entry.getKey(),entry.getValue());
+            System.out.printf("Intid: \t%s\t\t\tUttid: \t%s\n",entry.getKey(),entry.getValue());
         }
 
-        System.out.printf("Size of dates: %s\n\n", dates.size());
-
+        System.out.printf("Size of dates: %s\n\n", sortedFinalResults.size());
 
 
         // Returns a treemap that sorts the dates incrementally
diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java
index 806619f..730687c 100644
--- a/src/main/java/com/application/GUI/InputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/InputPopUpWindow.java
@@ -7,9 +7,6 @@ import javafx.scene.layout.*;
 import javafx.stage.*;
 
 import static com.application.DB.Constants.*;
-import com.application.Main;
-
-import javax.sound.sampled.Line;
 
 /**
  * This class handles the popup input window
@@ -74,19 +71,22 @@ public class InputPopUpWindow {
 
         startButton.setOnAction(e -> {
             TREE_SPECIES = treeSpeciesInputText.getText();
-            WIDTH_DIMENTION = treeSpeciesInputText.getText();
+            WIDTH_DIMENTION = widthInputText.getText();
             HEIGHT_DIMENTION = heightInputText.getText();
             SAWSET = sawsetInputText.getText();
             MOISTURE_GOAL = moistureGoalInputText.getText();
 
+            window.close();
+
             // Call på getKwh()
             try {
-                LineChartFunctionality.loadData();
+                //LineChartFunctionality.loadSingleSeries();
+                LineChartFunctionality.loadMultipleSeries();
                 //Main.createLineChart();
             } catch (Exception ex) {
                 ex.printStackTrace();
             }
-            window.close();
+
         });
 
         VBox layout = new VBox(10);
diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java
index 3339bc6..446a8f2 100644
--- a/src/main/java/com/application/GUI/LineChartFunctionality.java
+++ b/src/main/java/com/application/GUI/LineChartFunctionality.java
@@ -1,8 +1,6 @@
 package com.application.GUI;
 
 import com.application.DB.DB;
-import javafx.collections.FXCollections;
-import javafx.collections.ObservableList;
 import javafx.scene.chart.CategoryAxis;
 import javafx.scene.chart.LineChart;
 import javafx.scene.chart.NumberAxis;
@@ -34,19 +32,52 @@ public class LineChartFunctionality {
         return lineChart;
     }
 
-
     public static XYChart.Series<String, Number> getSeries() {
         return series;
     }
 
-
     public static void updateLineChart(XYChart.Series<String, Number> series){
         lineChart.getData().add(series);
     }
 
-    public static void loadData() throws Exception {
+    public static void clearLineChart(){
+        lineChart.getData().clear();
+    }
+
+
+    public static void loadSingleSeries() throws Exception {
+        clearLineChart();
+
+        Map<Integer, Map<String, Number>> kWh = DB.setInputParameters();
+        //System.out.println(kWh.size());
+
+        for (Map.Entry<Integer, Map<String, Number>> entryKwh : kWh.entrySet()) {
+            Map data = entryKwh.getValue();
+            //System.out.println(data.size());
+
+            XYChart.Series<String, Number> newSeries = new XYChart.Series<String, Number>();
+            int index = 0;
+            for (Object entryData : data.entrySet()) {
+                //System.out.println("data: \t"+entryData);
+                String entryString = entryData.toString();
+                String[] arr = entryString.split("=");
+                String date = arr[0];
+                int kwhValue = Integer.parseInt(arr[1]);
+
+                //System.out.printf("Date: \t%s\t\t\tkWh: \t%s\n",date,kwhValue);
+
+
+                // Connect the data to a series
+                newSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue));
+                index += 1;
+            }
+            updateLineChart(newSeries);
+        }
+    }
+
+    public static void loadMultipleSeries() throws Exception {
 
-        Map<Integer, Map<String, Number>> kWh = DB.getKwh();
+        Map<Integer, Map<String, Number>> kWh = DB.setInputParameters();
         //System.out.println(kWh.size());
 
         for (Map.Entry<Integer, Map<String, Number>> entryKwh : kWh.entrySet()) {
@@ -71,6 +102,7 @@ public class LineChartFunctionality {
             updateLineChart(newSeries);
         }
 
+
 /*
         for (Map.Entry<Integer, Map> entryKwh : kWh.entrySet()) {
             System.out.printf("Index: \t%s\t\t\tkWh: \t%s\n",entryKwh.getKey(),entryKwh.getValue());
@@ -78,7 +110,4 @@ public class LineChartFunctionality {
  */
     }
 
-
-
-
 }
diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class
index a8b1e2286f71cef22fb37dcab7357266091bf176..e9f7b13a7cc2894e84287aeae17f80c67373d3ee 100644
GIT binary patch
delta 943
zcmeC@-OHPD>ff$?3=9k=4C!19f(*_a3@%&@t_*IR3<3=9Tnruzo*=Fli0jS4-~*z4
zL4+TO@COkAAR-V%1c8WPc7_mkhEPTZwzT}B+{6+_1{I&l7nzkNHWt?l`i1&Bxdz4i
zyTu2%26_6s1T!))dNML_1qAtfxjKi$d%7?(@H*$`6_+IDm4qecl%{epgfTL3`}jLM
zhIsn>#e2FiGcYjJFfxdQI6C>b#``(?y2gh&`uIAAcsd7jFoZKQ@FB@~hkI}^L@+Y&
zgVogsI0iZTI)=Cg1#>V&GBOAThd2g>#JdDVdiuG8jpAU4Vq_2q4)G5_6^&+O;PUqL
z@$`eLieY5nfbc;sX7%y(^$cNVU|@a$5)b!)s)_|U#?#j|IK<I6Al}bW!`GFAA&!xO
zH_Xu|)HUAI1*$Hdk%0py1oEEoWHzP=ah42Lj10n+m6esczP`FCDGDAQR=K%W#l`Fl
z2|Nsm3`sl;LJY#}49PqUDGaF~P8tt`2!kji0|O6(7=tJegE)wg01=WPLJCAkGsy5T
z=rPD_e$RA*v0i{dkb!|gjDZ7W6axc;B**{;1_n-$0bp93K@?0&Kxs)REd`~e8Dzlv
zWEn&m7#ZXk7#Nrs<QXIx6c}XSd_@LH1|=kUWd=zG6%fB3szH@Ol0gk50OhMQNHS<3
z@iiGF8MKi2+6<BmI!Jt722PNlzz)$zve<w@lEDy3oe_g1gE11n-h@Gt!4yfrj6ssY
z9LWF+1||k321^Dj21W*J1_lOW21W)(1_lOJt?dkq8^NBnVPIh3VqjumVBlk5VGv-j
zWdMagSP_FAgFOQS0|$cx+<-i=N(KfqA*LM+%#(H4G(=f9Gw^Y2X5a@I$H)LOPK|+c
Vaw?lVzZ`=hgCPSWgCp1?CjkB@fAjzV

delta 791
zcmdnX+s_+x>ff$?3=9k=3@Ka;0t}8E3{G4O&I~S`4EzkPTnugu?jWuQi0jG0;02<+
zL4*&8@C6ZmAi^I+1h6v%vNHrt3|}-^kWp4Rn2~|o$KTm8#M9p|-qVGVfzflaEu)-h
z2qObuh@+E_YrLPMuWP(_xCaMA=;Q)Mk@_%32EpJE$DojSm!L>bKX<SK4u)_>27%xZ
z{{U3c2u21jZ%-djKd7omMg|TDA7mGYcen>sA_`=mr>|>ph@)=+R4kg2fj7+2C)73G
z(*-IN!zjbR0TW|pU|=w2WMK92^z{s3W?*1`F<G8zLZmr^1tWuSWo2chuCK3dN{WJq
zhgEK_RdF#pLo5$N978-0gCK(tJ3|5wLn1>Gh?C62Aj}}b$iTqEAj%-Z!ypDC#6g4v
zh>!#kIt+4~d6`cz*7Gw6FfcHPGH`%QVPIg81nFg9VBiGl1=C^-B4An^N=ra#NiZ$R
zAjKfUz{nuYz`(%7Aj2TZAj=>J=gTulGAJO)D>6tjC?WBc>lq{&RFDKz86+9hkof8h
zk_;M1d`$*P1}!AMHUlSv4uc%n;kroTdJK{b`bc~O21y1(B)$=YB!e-79D^#%<t7Z0
z45mmfH)CL8U}7+5uwY<hu$;suW^Tp6z`(`8#K6G7$H2lMz+lY)3SdSC1_o9J8wOhj
z1_llWJBV@y28J}SN(Kg_$-Zp5f*hL}_%<>yFfcNJOi^OsnB31M&#lYA$Y2i+HU|Kr
Cu3t?6

diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class
index cb01b5595c382de6d3477bfe571dcdbc0b056354..f6de3c037d0b46daa2274512d5f7e0109cf16b89 100644
GIT binary patch
delta 6383
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
GAPE4Ho&*R0

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

diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class
index 7a6978ec5f538cf200aa2739309e0191862ecb56..97f734cb6427535c2b5d47da833e92a806a0fc53 100644
GIT binary patch
delta 793
zcmZ3f+@P{Sl#!2#VGS3<T84G(4C}cVoHr{oIxsO^)R=spQEYNGbMfSJ%+ndyZ%$+B
zW>V&1c+B9=&hUhX;VFYVBZF{OVp*boPGVlVzH3EtYC%b6e%@vgc2h=F?b@5~b4+96
zWKGV=FHU7-(3)JpC^ET=TS7%BCqFU8w=}0DvmhrmIJGD<wV08Czn~~HuOzr6F*!S=
zC^32S5$?5&nt}{o3=9lB42%p646F>^3_c7D44e$U4DJk!3?2*&%xnzo4EziXjB7T}
z;^kmuWSzW_Z&SS}0|$dR13!ZVgD8VEgFJ%_gDQgpgFb^IgDHa&gDrzHgENB)gC~P3
zgCBziLnMPHLjr>qLnebZLji*hLpg&!Llc7mLnnhF!z2bHhM5e;3=0^{7*;cwGi+k8
zVA#!I$#96lis2-KEyEQCJBHf~_6$!L92j0RI5K=<aAo*g&)~+$!r;Lu!4Si!!Vt??
z%n;95&5+30!;r+dkRh3IIYSELYKBy>&t@?2GjK32Ven({XJBBEXY6GNU<hPjWYA}<
zWe8#jWME>jWz1&?W(Z+mW{6}AW(Z{nWME;)WOQZ-V+dhjWoTm5VhCplWME^M#3;oO
z!4Sg0&QQOak&z*iA&`NCVK>7^hA4&*22O@63^y2}83Gx&7@jbkV2EJ|Vc=%?%dnmy
zmLZOThf#&0gCU+Ffq|E?he3fMks*nJPk@UdnIQ!d%nVN$7#TPi7#Pg8wlRoqX0Xu)
zQ?@!_%1#$d*-Ns3X@`1A)@=-qI~bgnGjLh4OR{fcaM{Sf$e_uf!=TUL%)rdx$-uy%
z$H2|Nz~ITi&fvws$KcH%%HYEw!{E!H!r;%K$q>Sz!w|us&k)97$Pmt8#t;P#tRMys
z215o`hE#?$26m8ZzyZSmW`TkOlt|1OB1{=V7?{9<Ag?onSs)LyfLWlBW(Bj-88R5y
S7%~|c7}yz@@+Vgc8UO&1u$D9c

delta 715
zcmZorS*g51l#y=@!&-KRbzBTi4C}cVm^LdjIxsP9)R=spQEc*T=2wjCHn*{KGqJHV
zJmz6|GFgUQiuoyn`(_h%Q$~cUy3O*O)0h~wCKoV@Ouob|p~R7spP1s3Sdz%dz+X_5
znO72Al9-$wQk0mS%E-W)oReR?nU7~JBcsUVJ-qUqEDY=n{0t0?t2RI3<zSrrj&EbV
z1Oo?y6aznlG=nIE9D_WAJcBBOGJ`&Y3WF(wDuXS98iO-~I)f*J27@1iHbW$X4nqQi
zE<+}R9zy|xK0`T!5knJ$F+(SV3Bx1?Q-+xgW(*4$EE!faSTSs3ux8lJV8d{T!It49
zg9F1A21kb53{DJB7@QeiGq^B(V(?)2ThHLh$im>wD8>-OsKgM<SjZ61Sjmvc*u{{<
zIG-VzaVbLz<4T591}_E%h8Ya}3>=J$82lLg85kJk8M_$*7y=m>8T1*e8G;xB8JHMs
z8FLwe8A2GC86p`28A2HX8CV!H866qI7(y6W8JZY17{VC>8Q2&mF-kB*FoZC$Gt{qU
z_|Fi@5Xiv6u$$pMLli>@11G~3hHDJb41o+>3{M!2F~l&0FmN;cWmwA)%Mi!F!>Gj2
z!4S`oz`)Dc#h}2D$dJUqC&0y!%#gys$l$@iz;Kg+k%66ofx%2`8-wU(1{(-vs}1Ja
z>3}JFT`=Xaqn^QWIRlp!n<U#d24_i@Z453O85kLq8Ppgw8JrlH89W&n81xvp85kIR
z7}yzn8Tc6d7(^NT8Dtm&7?c@87}OXd7&IBe7_=F}84MUA8B7_Xz+vUVz|Nq}z{-%y
zkjB6Uatt_J7{Dx$&l$n2C<d(%1|~2Q<V$8S3lzL8U{*Rq1_LWYCIbTlI|EbZ<O_lZ
E0Hp1QZvX%Q

diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class
index 9e9130093a4a0bdcbb9ee3a1afb06ff2defcd05e..b77b52c27533ea481f924a8716e9cf5e13ea0918 100644
GIT binary patch
delta 1983
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
RB@7k}k_-wAN(>2XoB&G@SqT6D

delta 1722
zcmZouUZPNc>ff$?3=9k=4ClBQG#T>P8S=Rpm>BXn8T1(n*cl4B7+4{kB6fxnE(Q(=
zr<9$cjEjLA!YOBGsNiDYW2gk_sp4R$1{qMp!B7j*Tf@On2a>D@5e?i7jSNj(49yHJ
zoD8iDZQKmXQ4H-|3>^%e+ziSLUEB=a3_aWoy$pRIqMw~%0yl#q!$fw5Ng%gP=3tn@
z#W0m&8W+QKh8Y|TGuattfta&F2FwAutpVhwxm*nT4D;9-=5M_CpP7>*CqFU8C9x!N
z@+X$Llc%%(mzu=Ruz;Om0y{$qBLkOfMRICENoIatF+0P;$w%3A*&G?17#ZXz7c$9n
z@G#gi*fBE5PJAdlc>@y{HxGk7g9AImB1Q&9kkEQYJ`NrR69#ie26+gdg9l_24}&Fx
zH6w$}#D_9sJPeKui+LCf7z`O1SX>fIQh6AbFf5&Xl3m(;8N*T@hUE+^*cn#xFsx!&
z&CalfhhZ(lI(CNjJPaEcHu5lRV%W^iu!V<VE5kM(hV2YH*co>6FzjO3&CalZhhY!H
zULJ;h4ErZ5a7ff2VA#*dz?+p=mZ)D^l9{9Ln^?fZaFF2;BLkx?JHuffh9e9|*%^-U
zFdSz%!N?#Aa)^}zr)n`LCueqe2AIjk$RGeVASW>|UEe<`D>b=<hv6i{DISK?3}-<8
zILpJ}$KcP%pp~4TtDjg<kdv952nsrV_sKmR(wld2C^5>5qRY8B>AN^FGO(qmmUx$E
zOy=hjt4FdXxU#q;HJ6crIlr`okwMf4?10RC{eYs(yprIOqSVA(Yeoi^;>@a4Mh0dL
zO;1J!VJvDG8Q2RzI&$(D8CWztHNzMgI8yUUiYkLsOBfjhH8ddxgM%h`vpts-<K#ka
zNmn+orZh$d8x4p8u-Ai2iZb)kt)r2IAfaImH3rpvliRuVg7q0R85kH?8Mr_(&A`ZD
z#K6G7#9++81xg-pz6AppC~3g?HVj;#6vn{7zy(TKU=tV_92uM#7#W-=bMU0qyD%^?
zXfbdxFffQQurP=-@G(d*NH9n;C^1Me=rBk#*f7X2xG=~v_%O&ZgfPf6xH2#>@Gvkk
zFffENxG}ghFfcGOcrbV}FflkYFfiybFoNY+HZcfn0J{)mJ{wp}2}v&tRIiZ}SdkY4
zCxbVG57ZDDuyO_lmQ4&?AVU}#5QeBjJ?_iE2}&v;9h3EW<-y(n6$%UtIt;uFx=2>>
zfdhzvApq`hkcb5X1JtBI22O?`1}Bh73=E8q8Q2)O85kJO>|l`e-ozlKwUa@bkzpHy
zjMh#DSw@DP404PNKH57O<QW-eGOX0z$)Lc<aDYLv-dATQgA$0T?6-+QN*AVUHv>oH
zb_Px>7F~pPD^^KXr~!!}mI5P#6`Lg6HU<?dc1d<2)ol!FRveNX%tlt6k{m2XI~df>
zxHd6J32CtIWzdXdmgEeMWD(`s!JrkqjX^tHl4To%&hB~!?np^au;_LM-JJ{)Obp@6
z|Ie0W*}<T<{C~(s1_lNea45Pl2r@7*7&5Rh7%>Pim@w!wm@-&0m@&9ASTOi8STf`>
zSTmF|*f7*F*fO***fI1nI4~?{aA7#W;Kp#6!JXj*g9pQD27hq)#xQU)lrnfT1T%!x
zGq5w%F*q@VGK4X3Ftjk(FoZLNFmN*TG8i*NFhnwNG2}4>F+?#$Gq5pOGW0XVFvK!2
zGx#x7F~l*LGq5n|Gt6X&XGmmVVqjr7!H~od%K(Wm1-L2;xT<8hsuTtWhE%Y3cv=23
z$gne{u`{IqXRw>BFDPN3{-1%Jfsvgdje&t73+#VJhHM5Vh8%E;%VjWQU|^79U}oT8
aC}uEakYwOyC}yx?kYrF~P-aMA;{*VpNliuo

-- 
GitLab