From 897b8e5bba42be4f0f3e3d9da92d2219a6e6af6e Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Fri, 8 Apr 2022 16:34:41 +0200 Subject: [PATCH] started converting the x-axis to hours --- .../GUI/LineChartFunctionality.java | 47 ++++++++++++++++-- src/main/java/com/application/Main.java | 2 +- .../com/application/DB/Constants.class | Bin 5208 -> 6026 bytes target/classes/com/application/Main.class | Bin 8195 -> 8190 bytes 4 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index 5d80390..b257001 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -1,11 +1,13 @@ package com.application.GUI; -import com.application.DB.DB; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; +import javafx.scene.shape.Line; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.Map; public class LineChartFunctionality { @@ -42,6 +44,27 @@ public class LineChartFunctionality { lineChart.getData().clear(); } + private static long findDifference(String start_date, String end_date) { + // Defining a simple date format + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + try{ + // try to convert the string to Date datatype + Date dateStart = dateFormat.parse(start_date); + Date dateEnd = dateFormat.parse(end_date); + + // Finds the difference in millis + long differenceMillis = dateEnd.getTime() - dateStart.getTime(); + + // Finds the difference in minutes + return (differenceMillis / (1000 * 60 )) % 60; + + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return 0; + } + public static LineChart<String, Number> loadSingleSeries(Map<Integer, Map<String, Number>> userInput) throws Exception { clearLineChart(); @@ -54,20 +77,34 @@ public class LineChartFunctionality { Map data = entryKwh.getValue(); //System.out.println(data.size()); XYChart.Series<String, Number> newSeries = new XYChart.Series<String, Number>(); - int index = 0; + long minutes = 0; + long hours; + String previouseDate = ""; for (Object entryData : data.entrySet()) { //System.out.println("data: \t"+entryData); String entryString = entryData.toString(); String[] arr = entryString.split("="); - String date = arr[0]; + String currentDate = arr[0]; int kwhValue = Integer.parseInt(arr[1]); + + //System.out.printf("previouse date: \t%s\n",previouseDate); + //System.out.printf("Current date: \t\t%s\n",currentDate); + //System.out.printf("is prev empty?: \t%s\n",previouseDate.isEmpty()); + + + minutes += findDifference(previouseDate, currentDate); + + hours = (minutes/60); + System.out.println(hours); + previouseDate = currentDate; + //System.out.printf("Date: \t%s\t\t\tkWh: \t%s\n",date,kwhValue); + //System.out.printf("Hours: \t\t%s\n",hours); // Connect the data to a series - newSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue)); - index += 1; + newSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(hours), kwhValue)); } updateLineChart(newSeries); } diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 51c2313..c7af669 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -85,7 +85,7 @@ public class Main extends Application { this.sideBar = createSideBar(); this.logoBar = createLogoBar(); - LineChart<String, Number> lineChart = this.lineChartFunctionality.getLineChart(); + LineChart<String, Number> lineChart = LineChartFunctionality.getLineChart(); //Set id's to connect to css stylesheet root.setId("root"); diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class index 091a895c5cc5d2a74b30a21bae9762ebf5626ea0..935d57ead8c7405cef6220d66de39651a4d10b64 100644 GIT binary patch literal 6026 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 a7z`P_7%UmG8T=V~7{VAB8T!GM+XMjfhLvOh delta 2278 zcmeCuzoAio>ff$?3=9k=45zplj2W8P8Jf8mm_T$37egyU8y5o$Lpw;M1H|eC5nUV% z-5`-35T}=ep$|m&b1+QcV3^3kFo}a<G6%yH4u+{54AVFmrgJi|FwEd$n8`4UgJCuY z!yFEVxf~4hI2h)0Ff8C=U<qSb2-3a?L@efDSi-@ul!IXz2g7oZz7-q{D>)ceaWSlB zSi{AzmSG);wH_q1frDWqh~5MuHiL*QAYv<s*v8JVed5P{#vPLz86Qu+$`mu%n|YHw zzhjV>qn~@cx2KP%U%aOaBLfdq#K+UuGi0(Ri?b+9O_-xksB65Z3o`=)gYf2NmQY51 z&fv`Syu^~yqEtqPE)C7ejBIj~b69gWr?Ty2WK~X2EeV^vo<ni+S`OvOuQ-Y(S97{g zzRju09LEqpnVrknft_I|55q2o-8>Ar3~4+Jdl>feFjRn8g$!wo44h$!Ik~ANnaRaG z4Eq@N^DvZvM47$IGk6%vKum?nG2F6~r*I|8vU_LdWafFg@G!VDShF)60GWD_k%84G zGdHtjG6%OkZxzVcY7kM&kTyAzJ1RPy!J3hQGblANCoD0iG?kG-xU#acQrFj4Hzh^E z!^0{!*Q&Ufo#7A<!(oOa><mYF7>+R<=V3U(aFU0?gu#@Nfq{p?jKP$L!5l<bfCx(v zVZ~rQ*`G&GNH8n0EKxrvF)v-;Gp{5yJ+)|aHP2ecdIm!V76xMm1_nh2NsvJd3=Etg zgTS;ogDIG{fYO#w+KR!Nfq_Ai!G^(<fsw(Mfq{XE!Hz+a!Jfey&UavtWN<{1=Vy>) za6;k>Fi0{uGt?st5M+>Ka6wWa#30Gwio_RTkYsQ};)^nHg2ET<5Dz4aJsBh!ypYsM zGe|OcBk^SzBpG~Q{CWl^1~~>v245rt{1_w|{E_$p43Z3iFbxb$3`z`=3_(bIWd=!x zU?e`sBOyq9kVit1_$myN3}H}yJt*i@88{ijp+OpfWHHDmkx+#ob?OX~3{gmYkWZqK z_#ltOAnA`~;AUWAh+~LnU}Q*OU|=w2U}RuqU|?X?+RnhZ5gcpUi3|)3pn?LFepndz z7?K!3EU+quWQG)Q^rteUF)%SCOujB)<_l6U#K6M9z!1j3!4S?M$`HYz%n%9J$H5@W zkj{|7z`&3RH3=e;#lXOj4Yo3efeVzuz$QisS|gbl$H2i5&mh5&z@Wj9h-9J?Lmrxm zAd!5yi3JRt424iPJ`&W8M7S}PfrBB9L69MxL5d**$wUzh6G0+Ha1)CexIp<E<VFSt zh6N1F;BfPp%q1!}xlKs0eiMWE4hD&B4D8`rLXv{aFJPPv3=9m+3?TcJ7&sUh7;+dm z7;+f|8S)sU81fmE844J57z!CI8HyO(7>beH<G@gg=0lJOs(Z>HK4f5EXsm}i$Z$6U zQ{;9AW^XMaDIsZyb7X{MAPiX{IS4~ez!=kgQVeVi3=HKA91Il<f((@mQVdlL$_&*E z`V2Kl?$Tr^M{^fQq(}rMpei5^oBT%@IWij=I2f83Bp8|*G#FZtj8tN%L^Bd3f*P4s zP!n53kR!8$frFuwL6D(~L5iUp$wW}pp(Z$x2x{O}Lrg@AO#S*z3~I2j!5fkN3>*v- z7z7z6GDtB@Vo+w7%%H<Cg~5_xDuWxtG$gk;Fw~&=4kUu=mRh)5ut%giB-*e=q%h2} zh=c}-$XN^=46_*o8RjrZG0bI9W|+sI&oCd!U78GaXzl`u6xAa|BnLx1yrf8BU}69P z10jta44OL_w6-y5Z)VUD(%sCU2O{)AgaL>!WZBGM#Icz{TtH|ugBqw%VMI#*f((2N mA`HR|q6`uYVhpkj;tWa*QVePgIt*G29t?~O><!=|p%DO4*h=XD diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index d2bf5a43d4db88a06915f89a71f9d0b69159cbad..edc2049c922de5c72aaf6cb05f0b0082c79796d3 100644 GIT binary patch delta 201 zcmZp6_-DUisyOFi26hHE1_p+gljn&mOg=3Bs$PX5nn8;phQXL2mcfQ0j=_~7p23?T znIWDbjUj^}ouQZ^i=mn!o1vK@hoOTZk6{u+A;ThuB8Hs|B@Fu+N*RtYlrfxUC}+6D zP{DA6p_1VaLk+`yhB}594D}4N7#JArAoelLW|+eO0xubsGpt}>WZ+<U$gq;3LyLil yL51Nc!zzZ=49pDi3|$Os7<w337#1<OGpuD;$H2<4o`HdZhk=nnWpkM1S~dVoY%rz( delta 207 zcmexo-|VnqsyOEf26hHE1_p+Aljn&muxf2#5DK5XPyAKACPOrXK0^$H1w$-@BSRd6 z7ehQl07EiE3PT!0E<-v)1w$4?14A}L2SW}+FGC)~bcRBP<qSm(`xr_XjxdxmoMb3t zxWG`(aGjxo;VwfZ!$XD|h9?Yl3~w3g8D=psFxWwCWthz{hXDlMF)U|T!NADC!SIY> zB}0c60~3QL!%>D+467NK8B!R!7}hZKFt9KzXK-g&%dn1tm0>*t0|O5OBZKDVK*_ai E0H*aahyVZp -- GitLab