kauron/estraba
Archived
1
0
Fork 0

dashboard redesign

This commit is contained in:
Jesús Vélez Palacios 2016-05-18 21:45:29 +02:00
parent 5de13b6c5b
commit 3c6b212101
2 changed files with 592 additions and 508 deletions

View file

@ -1,7 +1,6 @@
package es.kauron.estraba.controller; package es.kauron.estraba.controller;
import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXListView;
import com.jfoenix.controls.JFXSnackbar; import com.jfoenix.controls.JFXSnackbar;
import com.lynden.gmapsfx.GoogleMapView; import com.lynden.gmapsfx.GoogleMapView;
import com.lynden.gmapsfx.javascript.object.GoogleMap; import com.lynden.gmapsfx.javascript.object.GoogleMap;
@ -36,6 +35,9 @@ import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller; import javax.xml.bind.Unmarshaller;
import java.io.File; import java.io.File;
import java.net.URL; import java.net.URL;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.ResourceBundle; import java.util.ResourceBundle;
/** /**
@ -52,16 +54,76 @@ public class DashboardController implements Initializable {
private Tab tabDashboard; private Tab tabDashboard;
@FXML @FXML
private JFXListView<?> listLeft; private Label labelMotivationUpper;
@FXML
private ImageView imgHR;
@FXML
private Label valueHRAvg;
@FXML
private Label valueHRMin;
@FXML
private Label valueHRMax;
@FXML
private ImageView imgSpeed;
@FXML
private Label valueSpeedAvg;
@FXML
private Label valueSpeedMax;
@FXML
private ImageView imgCadence;
@FXML
private Label valueCadenceAvg;
@FXML
private Label valueCadenceMax;
@FXML @FXML
private PieChart zoneChart; private PieChart zoneChart;
@FXML @FXML
private JFXListView<?> listRight; private Label valueDate;
@FXML @FXML
private Label motivationLabel; private Label valueTime;
@FXML
private Label valueActiveTime;
@FXML
private Label valueTotalTime;
@FXML
private ImageView imgDate;
@FXML
private Label valueDistance;
@FXML
private ImageView imgDistance;
@FXML
private Label valueElevation;
@FXML
private Label valueAscent;
@FXML
private Label valueDescent;
@FXML
private ImageView imgElevation;
@FXML
private Label labelMotivationLower;
@FXML @FXML
private Tab tabMap; private Tab tabMap;
@ -69,9 +131,6 @@ public class DashboardController implements Initializable {
@FXML @FXML
private GoogleMapView mapView; private GoogleMapView mapView;
@FXML
private JFXListView<?> mapSummary;
@FXML @FXML
private JFXButton elevationButton; private JFXButton elevationButton;
@ -102,7 +161,6 @@ public class DashboardController implements Initializable {
@FXML @FXML
private Tab tabSettings; private Tab tabSettings;
private TrackData trackData;
private JFXSnackbar snackbar; private JFXSnackbar snackbar;
private final double DISTANCE_EPSILON = 1; private final double DISTANCE_EPSILON = 1;
@ -114,6 +172,13 @@ public class DashboardController implements Initializable {
((ImageView)hrButton.getGraphic()).setImage(new Image(App.class.getResourceAsStream("img/hr.png"))); ((ImageView)hrButton.getGraphic()).setImage(new Image(App.class.getResourceAsStream("img/hr.png")));
((ImageView)cadenceButton.getGraphic()).setImage(new Image(App.class.getResourceAsStream("img/cadence.png"))); ((ImageView)cadenceButton.getGraphic()).setImage(new Image(App.class.getResourceAsStream("img/cadence.png")));
// set icons of dashboard
imgHR.setImage(new Image(App.class.getResourceAsStream("img/hr.png")));
imgSpeed.setImage(new Image(App.class.getResourceAsStream("img/speed.png")));
imgCadence.setImage(new Image(App.class.getResourceAsStream("img/cadence.png")));
imgDate.setImage(new Image(App.class.getResourceAsStream("img/date.png")));
imgDistance.setImage(new Image(App.class.getResourceAsStream("img/distance.png")));
imgElevation.setImage(new Image(App.class.getResourceAsStream("img/elevation.png")));
} }
@ -129,20 +194,40 @@ public class DashboardController implements Initializable {
} }
private void loadTrack(TrackData track) { private void loadTrack(TrackData track) {
// populate dashboard valueHRAvg.setText(track.getAverageHeartrate()
trackData.getStartTime(); + App.GENERAL_BUNDLE.getString("unit.bpm"));
trackData.getTotalDuration(); valueHRMax.setText(track.getMaxHeartrate()
trackData.getMovingTime(); + App.GENERAL_BUNDLE.getString("unit.bpm"));
trackData.getTotalDistance(); valueHRMin.setText(track.getMinHeartRate()
trackData.getTotalAscent(); + App.GENERAL_BUNDLE.getString("unit.bpm"));
trackData.getTotalDescend();
trackData.getMaxSpeed(); valueSpeedAvg.setText(String.format("%.2f", track.getAverageSpeed())
trackData.getAverageSpeed(); + App.GENERAL_BUNDLE.getString("unit.kmph"));
trackData.getMaxHeartrate(); valueSpeedMax.setText(String.format("%.2f", track.getMaxSpeed())
trackData.getMinHeartRate(); + App.GENERAL_BUNDLE.getString("unit.kmph"));
trackData.getAverageHeartrate();
trackData.getMaxCadence(); valueCadenceAvg.setText(track.getAverageCadence()
trackData.getAverageCadence(); + App.GENERAL_BUNDLE.getString("unit.hz"));
valueCadenceMax.setText(track.getMaxCadence()
+ App.GENERAL_BUNDLE.getString("unit.hz"));
valueDate.setText(track.getStartTime().format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));
valueTime.setText(track.getStartTime().format(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM)));
valueActiveTime.setText(LocalTime.MIDNIGHT.plus(track.getMovingTime())
.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM)));
valueTotalTime.setText(App.GENERAL_BUNDLE.getString("time.of")
+ LocalTime.MIDNIGHT.plus(track.getTotalDuration())
.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM)));
valueDistance.setText(track.getTotalDistance()
+ App.GENERAL_BUNDLE.getString("unit.m"));
valueElevation.setText((int)(track.getTotalAscent() - track.getTotalDescend())
+ App.GENERAL_BUNDLE.getString("unit.m"));
valueAscent.setText((int)track.getTotalAscent()
+ App.GENERAL_BUNDLE.getString("unit.m"));
valueDescent.setText((int)track.getTotalDescend()
+ App.GENERAL_BUNDLE.getString("unit.m"));
// create charts data // create charts data
XYChart.Series<Number, Number> elevationChartData = new XYChart.Series<>(); XYChart.Series<Number, Number> elevationChartData = new XYChart.Series<>();
@ -151,7 +236,8 @@ public class DashboardController implements Initializable {
XYChart.Series<Number, Number> cadenceChartData = new XYChart.Series<>(); XYChart.Series<Number, Number> cadenceChartData = new XYChart.Series<>();
MVCArray pathArray = new MVCArray(); MVCArray pathArray = new MVCArray();
ObservableList<Chunk> chunks = trackData.getChunks(); // traverse the chunks
ObservableList<Chunk> chunks = track.getChunks();
double currentDistance = 0.0; double currentDistance = 0.0;
for (Chunk chunk : chunks) { for (Chunk chunk : chunks) {
currentDistance += chunk.getDistance(); currentDistance += chunk.getDistance();
@ -190,6 +276,7 @@ public class DashboardController implements Initializable {
String name = file.getName(); String name = file.getName();
JAXBContext jaxbContext = JAXBContext.newInstance(GpxType.class, TrackPointExtensionT.class); JAXBContext jaxbContext = JAXBContext.newInstance(GpxType.class, TrackPointExtensionT.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
@SuppressWarnings("unchecked")
JAXBElement<Object> jaxbElement = (JAXBElement<Object>) unmarshaller.unmarshal(file); JAXBElement<Object> jaxbElement = (JAXBElement<Object>) unmarshaller.unmarshal(file);
GpxType gpx = (GpxType) jaxbElement.getValue(); GpxType gpx = (GpxType) jaxbElement.getValue();

View file

@ -19,15 +19,18 @@
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<AnchorPane fx:id="root" xmlns="http://javafx.com/javafx/8.0.76-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="es.kauron.estraba.controller.DashboardController"> <AnchorPane fx:id="root" xmlns="http://javafx.com/javafx/8.0.76-ea" xmlns:fx="http://javafx.com/fxml/1"
<children> fx:controller="es.kauron.estraba.controller.DashboardController">
<JFXTabPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1000.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <JFXTabPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1000.0"
<tabs> AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
AnchorPane.topAnchor="0.0">
<Tab fx:id="tabDashboard" styleClass=".estraba.dashboard" text="%tab.dashboard"> <Tab fx:id="tabDashboard" styleClass=".estraba.dashboard" text="%tab.dashboard">
<content>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <padding>
<Label fx:id="labelMotivationUpper" alignment="CENTER" focusTraversable="false" maxWidth="1.7976931348623157E308" text="%label.motivation"> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding>
<Label fx:id="labelMotivationUpper" alignment="CENTER" focusTraversable="false"
maxWidth="1.7976931348623157E308" text="%label.motivation">
<font> <font>
<Font name="Roboto" size="56.0"/> <Font name="Roboto" size="56.0"/>
</font> </font>
@ -40,19 +43,23 @@
</styleClass> </styleClass>
</Label> </Label>
<HBox prefHeight="360.0" prefWidth="800.0" VBox.vgrow="ALWAYS"> <HBox prefHeight="360.0" prefWidth="800.0" VBox.vgrow="ALWAYS">
<children> <VBox.margin>
<Insets/>
</VBox.margin>
<VBox minHeight="360.0" minWidth="300.0" prefHeight="300.0"> <VBox minHeight="360.0" minWidth="300.0" prefHeight="300.0">
<children> <HBox.margin>
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="90.0" prefWidth="200.0" VBox.vgrow="ALWAYS"> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
<children> </HBox.margin>
<ImageView fx:id="imgHR" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon"> <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
<image> prefHeight="90.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
<ImageView fx:id="imgHR" fitHeight="100.0" fitWidth="100.0"
pickOnBounds="true" preserveRatio="true"
styleClass=".estraba.dashboard.icon">
<Image url="@../img/hr.png"/> <Image url="@../img/hr.png"/>
</image>
</ImageView> </ImageView>
<VBox alignment="CENTER" HBox.hgrow="ALWAYS"> <VBox alignment="CENTER" HBox.hgrow="ALWAYS">
<children> <Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308"
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="%label.hr"> text="%label.hr">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -64,7 +71,9 @@
<String fx:value=".estraba.dashboard.label.HR"/> <String fx:value=".estraba.dashboard.label.HR"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueHRAvg" alignment="CENTER" maxWidth="1.7976931348623157E308" text="92 bpm" textAlignment="CENTER"> <Label fx:id="valueHRAvg" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="92 bpm"
textAlignment="CENTER">
<font> <font>
<Font size="30.0"/> <Font size="30.0"/>
</font> </font>
@ -75,8 +84,9 @@
</styleClass> </styleClass>
</Label> </Label>
<HBox> <HBox>
<children> <Label fx:id="valueHRMin" alignment="CENTER_RIGHT"
<Label fx:id="valueHRMin" alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="60bpm" HBox.hgrow="ALWAYS"> maxWidth="1.7976931348623157E308" text="60bpm"
HBox.hgrow="ALWAYS">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -89,7 +99,9 @@
<String fx:value=".estraba.dashboard.value.minhr"/> <String fx:value=".estraba.dashboard.value.minhr"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueHRMax" layoutX="10.0" layoutY="10.0" maxWidth="1.7976931348623157E308" text="100bpm" HBox.hgrow="ALWAYS"> <Label fx:id="valueHRMax" layoutX="10.0" layoutY="10.0"
maxWidth="1.7976931348623157E308" text="100bpm"
HBox.hgrow="ALWAYS">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -102,22 +114,19 @@
<String fx:value=".estraba.dashboard.value.maxhr"/> <String fx:value=".estraba.dashboard.value.maxhr"/>
</styleClass> </styleClass>
</Label> </Label>
</children>
</HBox> </HBox>
</children>
</VBox> </VBox>
</children>
</HBox> </HBox>
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="90.0" prefWidth="200.0" VBox.vgrow="ALWAYS"> <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
<children> prefHeight="90.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
<ImageView fx:id="imgSpeed" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon"> <ImageView fx:id="imgSpeed" fitHeight="100.0" fitWidth="100.0"
<image> pickOnBounds="true" preserveRatio="true"
styleClass=".estraba.dashboard.icon">
<Image url="@../img/speed.png"/> <Image url="@../img/speed.png"/>
</image>
</ImageView> </ImageView>
<VBox alignment="CENTER" HBox.hgrow="ALWAYS"> <VBox alignment="CENTER" HBox.hgrow="ALWAYS">
<children> <Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308"
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="%label.speed"> text="%label.speed">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -129,7 +138,9 @@
<String fx:value=".estraba.dashboard.label.HR"/> <String fx:value=".estraba.dashboard.label.HR"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueSpeedAvg" alignment="CENTER" maxWidth="1.7976931348623157E308" text="35 Km/h" textAlignment="CENTER"> <Label fx:id="valueSpeedAvg" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="35 Km/h"
textAlignment="CENTER">
<font> <font>
<Font size="30.0"/> <Font size="30.0"/>
</font> </font>
@ -139,7 +150,8 @@
<String fx:value=".estraba.dashboard.value.avgspeed"/> <String fx:value=".estraba.dashboard.value.avgspeed"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueSpeedMax" alignment="CENTER" maxWidth="1.7976931348623157E308" text="56 Km/h"> <Label fx:id="valueSpeedMax" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="56 Km/h">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -152,20 +164,18 @@
<String fx:value=".estraba.dashboard.value.maxspeed"/> <String fx:value=".estraba.dashboard.value.maxspeed"/>
</styleClass> </styleClass>
</Label> </Label>
</children>
</VBox> </VBox>
</children>
</HBox> </HBox>
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="90.0" prefWidth="200.0" VBox.vgrow="ALWAYS"> <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
<children> prefHeight="90.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
<ImageView fx:id="imgCadence" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon"> <ImageView fx:id="imgCadence" fitHeight="100.0" fitWidth="100.0"
<image> pickOnBounds="true" preserveRatio="true"
styleClass=".estraba.dashboard.icon">
<Image url="@../img/cadence.png"/> <Image url="@../img/cadence.png"/>
</image>
</ImageView> </ImageView>
<VBox alignment="CENTER" HBox.hgrow="ALWAYS"> <VBox alignment="CENTER" HBox.hgrow="ALWAYS">
<children> <Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308"
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="%label.cadence"> text="%label.cadence">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -177,7 +187,9 @@
<String fx:value=".estraba.dashboard.label.HR"/> <String fx:value=".estraba.dashboard.label.HR"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueCadenceAvg" alignment="CENTER" maxWidth="1.7976931348623157E308" text="90 Hz" textAlignment="CENTER"> <Label fx:id="valueCadenceAvg" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="90 Hz"
textAlignment="CENTER">
<font> <font>
<Font size="30.0"/> <Font size="30.0"/>
</font> </font>
@ -187,7 +199,8 @@
<String fx:value=".estraba.dashboard.value.avgcadence"/> <String fx:value=".estraba.dashboard.value.avgcadence"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueCadenceMax" alignment="CENTER" maxWidth="1.7976931348623157E308" text="152 Hz"> <Label fx:id="valueCadenceMax" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="152 Hz">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -200,26 +213,22 @@
<String fx:value=".estraba.dashboard.value.maxcadence"/> <String fx:value=".estraba.dashboard.value.maxcadence"/>
</styleClass> </styleClass>
</Label> </Label>
</children>
</VBox> </VBox>
</children>
</HBox> </HBox>
</children>
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</VBox> </VBox>
<PieChart fx:id="zoneChart" labelsVisible="false" legendVisible="false" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="360.0" HBox.hgrow="ALWAYS"> <PieChart fx:id="zoneChart" labelsVisible="false" legendVisible="false" minHeight="-Infinity"
minWidth="-Infinity" prefHeight="300.0" prefWidth="360.0" HBox.hgrow="ALWAYS">
<HBox.margin> <HBox.margin>
<Insets/> <Insets/>
</HBox.margin></PieChart> </HBox.margin>
</PieChart>
<VBox layoutX="15.0" layoutY="15.0" minHeight="360.0" minWidth="300.0" prefHeight="300.0"> <VBox layoutX="15.0" layoutY="15.0" minHeight="360.0" minWidth="300.0" prefHeight="300.0">
<children> <HBox alignment="CENTER" layoutX="10.0" layoutY="10.0" minHeight="-Infinity"
<HBox alignment="CENTER" layoutX="10.0" layoutY="10.0" minHeight="-Infinity" minWidth="-Infinity" prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS" VBox.vgrow="ALWAYS"> minWidth="-Infinity" prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS"
<children> VBox.vgrow="ALWAYS">
<VBox alignment="CENTER" HBox.hgrow="ALWAYS"> <VBox alignment="CENTER" HBox.hgrow="ALWAYS">
<children> <Label fx:id="valueDate" alignment="CENTER" layoutX="10.0" layoutY="97.0"
<Label fx:id="valueCadenceMax11" alignment="CENTER" layoutX="10.0" layoutY="97.0" maxWidth="1.7976931348623157E308" text="Wednesday, 18 May 2016"> maxWidth="1.7976931348623157E308" text="Wednesday, 18 May 2016">
<padding> <padding>
<Insets left="5.0" right="5.0" top="5.0"/> <Insets left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -234,7 +243,8 @@
<Insets/> <Insets/>
</VBox.margin> </VBox.margin>
</Label> </Label>
<Label fx:id="valueCadenceMax111" alignment="CENTER" layoutX="10.0" layoutY="30.0" maxWidth="1.7976931348623157E308" text="17:00:14"> <Label fx:id="valueTime" alignment="CENTER" layoutX="10.0" layoutY="30.0"
maxWidth="1.7976931348623157E308" text="17:00:14">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0"/>
</padding> </padding>
@ -246,7 +256,9 @@
<String fx:value=".estraba.dashboard.value.sub"/> <String fx:value=".estraba.dashboard.value.sub"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueCadenceAvg1" alignment="CENTER" maxWidth="1.7976931348623157E308" text="4:37:42" textAlignment="CENTER"> <Label fx:id="valueActiveTime" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="4:37:42"
textAlignment="CENTER">
<font> <font>
<Font size="30.0"/> <Font size="30.0"/>
</font> </font>
@ -256,7 +268,8 @@
<String fx:value=".estraba.dashboard.value.activetime"/> <String fx:value=".estraba.dashboard.value.activetime"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueCadenceMax1" alignment="CENTER" maxWidth="1.7976931348623157E308" text="of 5:00:00"> <Label fx:id="valueTotalTime" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="of 5:00:00">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -269,19 +282,16 @@
<String fx:value=".estraba.dashboard.value.totaltime"/> <String fx:value=".estraba.dashboard.value.totaltime"/>
</styleClass> </styleClass>
</Label> </Label>
</children>
</VBox> </VBox>
<ImageView fx:id="imgDistance1" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon"> <ImageView fx:id="imgDate" fitHeight="100.0" fitWidth="100.0"
<image> pickOnBounds="true" preserveRatio="true"
<Image url="@../img/timespan.png" /> styleClass=".estraba.dashboard.icon">
</image> <Image url="@../img/date.png"/>
</ImageView> </ImageView>
</children>
</HBox> </HBox>
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS" VBox.vgrow="ALWAYS"> <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
<children> prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS" VBox.vgrow="ALWAYS">
<VBox alignment="CENTER" HBox.hgrow="ALWAYS"> <VBox alignment="CENTER" HBox.hgrow="ALWAYS">
<children>
<Label maxWidth="1.7976931348623157E308" text="%label.distance"> <Label maxWidth="1.7976931348623157E308" text="%label.distance">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
@ -294,7 +304,9 @@
<String fx:value=".estraba.dashboard.label.HR"/> <String fx:value=".estraba.dashboard.label.HR"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueCadenceAvg111" alignment="CENTER" maxWidth="1.7976931348623157E308" text="46714 m" textAlignment="CENTER"> <Label fx:id="valueDistance" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="46714 m"
textAlignment="CENTER">
<font> <font>
<Font size="30.0"/> <Font size="30.0"/>
</font> </font>
@ -304,19 +316,16 @@
<String fx:value=".estraba.dashboard.value.distance"/> <String fx:value=".estraba.dashboard.value.distance"/>
</styleClass> </styleClass>
</Label> </Label>
</children>
</VBox> </VBox>
<ImageView fx:id="imgDistance" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon"> <ImageView fx:id="imgDistance" fitHeight="100.0" fitWidth="100.0"
<image> pickOnBounds="true" preserveRatio="true"
styleClass=".estraba.dashboard.icon">
<Image url="@../img/distance.png"/> <Image url="@../img/distance.png"/>
</image>
</ImageView> </ImageView>
</children>
</HBox> </HBox>
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS" VBox.vgrow="ALWAYS"> <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
<children> prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS" VBox.vgrow="ALWAYS">
<VBox alignment="CENTER" HBox.hgrow="ALWAYS"> <VBox alignment="CENTER" HBox.hgrow="ALWAYS">
<children>
<Label maxWidth="1.7976931348623157E308" text="%label.elevation"> <Label maxWidth="1.7976931348623157E308" text="%label.elevation">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
@ -329,7 +338,9 @@
<String fx:value=".estraba.dashboard.label.HR"/> <String fx:value=".estraba.dashboard.label.HR"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueCadenceAvg11" alignment="CENTER" maxWidth="1.7976931348623157E308" text="3166 m" textAlignment="CENTER"> <Label fx:id="valueElevation" alignment="CENTER"
maxWidth="1.7976931348623157E308" text="3166 m"
textAlignment="CENTER">
<font> <font>
<Font size="30.0"/> <Font size="30.0"/>
</font> </font>
@ -340,8 +351,9 @@
</styleClass> </styleClass>
</Label> </Label>
<HBox> <HBox>
<children> <Label fx:id="valueAscent" alignment="CENTER_RIGHT"
<Label fx:id="valueHRMin1" alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="+ 2053m" HBox.hgrow="ALWAYS"> maxWidth="1.7976931348623157E308" text="+ 2053m"
HBox.hgrow="ALWAYS">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -354,7 +366,9 @@
<String fx:value=".estraba.dashboard.value.ascent"/> <String fx:value=".estraba.dashboard.value.ascent"/>
</styleClass> </styleClass>
</Label> </Label>
<Label fx:id="valueHRMax1" layoutX="10.0" layoutY="10.0" maxWidth="1.7976931348623157E308" text="- 1113 m" HBox.hgrow="ALWAYS"> <Label fx:id="valueDescent" layoutX="10.0" layoutY="10.0"
maxWidth="1.7976931348623157E308" text="- 1113 m"
HBox.hgrow="ALWAYS">
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
@ -367,25 +381,18 @@
<String fx:value=".estraba.dashboard.value.descent"/> <String fx:value=".estraba.dashboard.value.descent"/>
</styleClass> </styleClass>
</Label> </Label>
</children>
</HBox> </HBox>
</children>
</VBox> </VBox>
<ImageView fx:id="imgAscent" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon"> <ImageView fx:id="imgElevation" fitHeight="100.0" fitWidth="100.0"
<image> pickOnBounds="true" preserveRatio="true"
styleClass=".estraba.dashboard.icon">
<Image url="@../img/climb.png"/> <Image url="@../img/climb.png"/>
</image>
</ImageView> </ImageView>
</children>
</HBox> </HBox>
</children>
</VBox> </VBox>
</children>
<VBox.margin>
<Insets />
</VBox.margin>
</HBox> </HBox>
<Label fx:id="motivationLabel" alignment="CENTER" focusTraversable="false" maxWidth="1.7976931348623157E308" text="%label.motivation"> <Label fx:id="labelMotivationLower" alignment="CENTER" focusTraversable="false"
maxWidth="1.7976931348623157E308" text="%label.motivation">
<font> <font>
<Font name="Roboto" size="56.0"/> <Font name="Roboto" size="56.0"/>
</font> </font>
@ -397,55 +404,59 @@
<String fx:value=".estraba.dashboard.motivation.lower"/> <String fx:value=".estraba.dashboard.motivation.lower"/>
</styleClass> </styleClass>
</Label> </Label>
</children> </VBox>
</Tab>
<Tab fx:id="tabMap" text="%tab.map">
<VBox>
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
</VBox>
</content>
</Tab>
<Tab fx:id="tabMap" text="%tab.map">
<content>
<VBox>
<children>
<GoogleMapView fx:id="mapView"/> <GoogleMapView fx:id="mapView"/>
<HBox maxHeight="-Infinity" minHeight="-Infinity" prefHeight="128.0"> <HBox maxHeight="-Infinity" minHeight="-Infinity" prefHeight="128.0">
<children>
<VBox> <VBox>
<children> <JFXButton fx:id="elevationButton" minHeight="-Infinity" minWidth="-Infinity"
<JFXButton fx:id="elevationButton" minHeight="-Infinity" minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0" prefWidth="32.0"> onAction="#onMapButton" prefHeight="32.0" prefWidth="32.0">
<graphic> <graphic>
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" /> <ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
preserveRatio="true"/>
</graphic> </graphic>
<VBox.margin> <VBox.margin>
<Insets/> <Insets/>
</VBox.margin> </VBox.margin>
</JFXButton> </JFXButton>
<JFXButton fx:id="speedButton" layoutX="10.0" layoutY="10.0" minHeight="-Infinity" minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0" prefWidth="32.0"> <JFXButton fx:id="speedButton" layoutX="10.0" layoutY="10.0" minHeight="-Infinity"
minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0"
prefWidth="32.0">
<graphic> <graphic>
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" /> <ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
preserveRatio="true"/>
</graphic> </graphic>
<VBox.margin> <VBox.margin>
<Insets/> <Insets/>
</VBox.margin> </VBox.margin>
</JFXButton> </JFXButton>
<JFXButton fx:id="hrButton" layoutX="10.0" layoutY="10.0" minHeight="-Infinity" minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0" prefWidth="32.0"> <JFXButton fx:id="hrButton" layoutX="10.0" layoutY="10.0" minHeight="-Infinity"
minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0"
prefWidth="32.0">
<graphic> <graphic>
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" /> <ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
preserveRatio="true"/>
</graphic> </graphic>
<VBox.margin> <VBox.margin>
<Insets/> <Insets/>
</VBox.margin> </VBox.margin>
</JFXButton> </JFXButton>
<JFXButton fx:id="cadenceButton" layoutX="10.0" layoutY="42.0" minHeight="-Infinity" minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0" prefWidth="32.0"> <JFXButton fx:id="cadenceButton" layoutX="10.0" layoutY="42.0" minHeight="-Infinity"
minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0"
prefWidth="32.0">
<graphic> <graphic>
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" /> <ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
preserveRatio="true"/>
</graphic> </graphic>
<VBox.margin> <VBox.margin>
<Insets/> <Insets/>
</VBox.margin> </VBox.margin>
</JFXButton> </JFXButton>
</children>
</VBox> </VBox>
<LineChart HBox.hgrow="ALWAYS"> <LineChart HBox.hgrow="ALWAYS">
<xAxis> <xAxis>
@ -455,19 +466,14 @@
<NumberAxis side="LEFT"/> <NumberAxis side="LEFT"/>
</yAxis> </yAxis>
</LineChart> </LineChart>
</children>
</HBox> </HBox>
</children> </VBox>
</Tab>
<Tab fx:id="tabGraph" text="%tab.graph">
<VBox>
<padding> <padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/> <Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding> </padding>
</VBox>
</content>
</Tab>
<Tab fx:id="tabGraph" text="%tab.graph">
<content>
<VBox>
<children>
<AreaChart fx:id="elevationChart" minHeight="100.0"> <AreaChart fx:id="elevationChart" minHeight="100.0">
<xAxis> <xAxis>
<CategoryAxis side="BOTTOM"/> <CategoryAxis side="BOTTOM"/>
@ -500,19 +506,10 @@
<NumberAxis side="LEFT"/> <NumberAxis side="LEFT"/>
</yAxis> </yAxis>
</LineChart> </LineChart>
</children>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
</VBox> </VBox>
</content>
</Tab> </Tab>
<Tab fx:id="tabSettings" text="%tab.settings"> <Tab fx:id="tabSettings" text="%tab.settings">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"/> <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"/>
</content>
</Tab> </Tab>
</tabs>
</JFXTabPane> </JFXTabPane>
</children>
</AnchorPane> </AnchorPane>