dashboard redesign
This commit is contained in:
parent
3c6b212101
commit
678b8a9bbd
5 changed files with 261 additions and 270 deletions
|
@ -2,12 +2,6 @@ package es.kauron.estraba.controller;
|
|||
|
||||
import com.jfoenix.controls.JFXButton;
|
||||
import com.jfoenix.controls.JFXSnackbar;
|
||||
import com.lynden.gmapsfx.GoogleMapView;
|
||||
import com.lynden.gmapsfx.javascript.object.GoogleMap;
|
||||
import com.lynden.gmapsfx.javascript.object.LatLong;
|
||||
import com.lynden.gmapsfx.javascript.object.MVCArray;
|
||||
import com.lynden.gmapsfx.shapes.Polyline;
|
||||
import com.lynden.gmapsfx.shapes.PolylineOptions;
|
||||
import es.kauron.estraba.App;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.event.ActionEvent;
|
||||
|
@ -128,8 +122,8 @@ public class DashboardController implements Initializable {
|
|||
@FXML
|
||||
private Tab tabMap;
|
||||
|
||||
@FXML
|
||||
private GoogleMapView mapView;
|
||||
//@FXML
|
||||
//private GoogleMapView mapView;
|
||||
|
||||
@FXML
|
||||
private JFXButton elevationButton;
|
||||
|
@ -143,26 +137,29 @@ public class DashboardController implements Initializable {
|
|||
@FXML
|
||||
private JFXButton cadenceButton;
|
||||
|
||||
@FXML
|
||||
private LineChart<Double, Double> mapChart;
|
||||
|
||||
@FXML
|
||||
private Tab tabGraph;
|
||||
|
||||
@FXML
|
||||
private AreaChart<Number, Number> elevationChart;
|
||||
private AreaChart<Double, Double> elevationChart;
|
||||
|
||||
@FXML
|
||||
private LineChart<Number, Number> speedChart;
|
||||
private LineChart<Double, Double> speedChart;
|
||||
|
||||
@FXML
|
||||
private LineChart<Number, Number> hrChart;
|
||||
private LineChart<Double, Double> hrChart;
|
||||
|
||||
@FXML
|
||||
private LineChart<Number, Number> cadenceChart;
|
||||
private LineChart<Double, Double> cadenceChart;
|
||||
|
||||
@FXML
|
||||
private Tab tabSettings;
|
||||
|
||||
private JFXSnackbar snackbar;
|
||||
private final double DISTANCE_EPSILON = 1;
|
||||
private final double DISTANCE_EPSILON = 10;
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
|
@ -179,12 +176,25 @@ public class DashboardController implements Initializable {
|
|||
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")));
|
||||
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void onMapButton(ActionEvent event){
|
||||
System.out.println(((JFXButton)event.getSource()).getId());
|
||||
mapChart.getData().clear();
|
||||
switch (((JFXButton)event.getSource()).getId()) {
|
||||
case "elevationButton":
|
||||
mapChart.setData(elevationChart.getData());
|
||||
break;
|
||||
case "speedButton":
|
||||
mapChart.setData(speedChart.getData());
|
||||
break;
|
||||
case "hrButton":
|
||||
mapChart.setData(hrChart.getData());
|
||||
break;
|
||||
case "cadenceButton":
|
||||
mapChart.setData(cadenceChart.getData());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void postinit() {
|
||||
|
@ -230,24 +240,44 @@ public class DashboardController implements Initializable {
|
|||
+ App.GENERAL_BUNDLE.getString("unit.m"));
|
||||
|
||||
// create charts data
|
||||
XYChart.Series<Number, Number> elevationChartData = new XYChart.Series<>();
|
||||
XYChart.Series<Number, Number> speedChartData = new XYChart.Series<>();
|
||||
XYChart.Series<Number, Number> hrChartData = new XYChart.Series<>();
|
||||
XYChart.Series<Number, Number> cadenceChartData = new XYChart.Series<>();
|
||||
MVCArray pathArray = new MVCArray();
|
||||
XYChart.Series<Double, Double> elevationChartData = new XYChart.Series<>();
|
||||
XYChart.Series<Double, Double> speedChartData = new XYChart.Series<>();
|
||||
XYChart.Series<Double, Double> hrChartData = new XYChart.Series<>();
|
||||
XYChart.Series<Double, Double> cadenceChartData = new XYChart.Series<>();
|
||||
// MVCArray pathArray = new MVCArray();
|
||||
|
||||
|
||||
// traverse the chunks
|
||||
ObservableList<Chunk> chunks = track.getChunks();
|
||||
double currentDistance = 0.0;
|
||||
double currentHeight = 0.0;
|
||||
for (Chunk chunk : chunks) {
|
||||
System.err.println(chunk.getDistance());
|
||||
currentDistance += chunk.getDistance();
|
||||
if (chunk.getDistance() < DISTANCE_EPSILON) continue;
|
||||
currentHeight += chunk.getAscent() - chunk.getDescend();
|
||||
|
||||
pathArray.push(new LatLong(chunk.getLastPoint().getLatitude(), chunk.getLastPoint().getLongitude()));
|
||||
elevationChartData.getData().add(new XYChart.Data<>(currentDistance, chunk.getAscent()));
|
||||
// pathArray.push(new LatLong(chunk.getLastPoint().getLatitude(), chunk.getLastPoint().getLongitude()));
|
||||
elevationChartData.getData().add(new XYChart.Data<>(currentDistance, currentHeight));
|
||||
speedChartData.getData().add(new XYChart.Data<>(currentDistance, chunk.getSpeed()));
|
||||
hrChartData.getData().add(new XYChart.Data<>(currentDistance, chunk.getAvgHeartRate()));
|
||||
cadenceChartData.getData().add(new XYChart.Data<>(currentDistance, chunk.getAvgCadence()));
|
||||
|
||||
String zone;
|
||||
if (chunk.getAvgHeartRate() > 170) zone = "Zone 4";
|
||||
else if (chunk.getAvgHeartRate() > 150) zone = "Zone 3";
|
||||
else if (chunk.getAvgHeartRate() > 130) zone = "Zone 2";
|
||||
else if (chunk.getAvgHeartRate() > 110) zone = "Zone 1";
|
||||
else zone = "Zone 0";
|
||||
|
||||
boolean pieFound = false;
|
||||
for (PieChart.Data d : zoneChart.getData()){
|
||||
if (d.getName().equals(zone)) {
|
||||
pieFound = true;
|
||||
d.setPieValue(d.getPieValue() + 1);
|
||||
}
|
||||
}
|
||||
if (!pieFound) zoneChart.getData().add( new PieChart.Data(zone, 1) );
|
||||
}
|
||||
|
||||
// populate the charts
|
||||
|
@ -257,13 +287,13 @@ public class DashboardController implements Initializable {
|
|||
cadenceChart.getData().add(cadenceChartData);
|
||||
|
||||
// populate and render the map
|
||||
GoogleMap map = mapView.createMap();
|
||||
map.addMapShape(new Polyline(
|
||||
new PolylineOptions()
|
||||
.path(pathArray)
|
||||
.strokeColor("red")
|
||||
.strokeWeight(2))
|
||||
);
|
||||
//GoogleMap map = mapView.createMap();
|
||||
//map.addMapShape(new Polyline(
|
||||
// new PolylineOptions()
|
||||
// .path(pathArray)
|
||||
// .strokeColor("red")
|
||||
// .strokeWeight(2))
|
||||
//);
|
||||
|
||||
}
|
||||
|
||||
|
@ -282,9 +312,9 @@ public class DashboardController implements Initializable {
|
|||
|
||||
if (gpx != null) {
|
||||
loadTrack(new TrackData(new Track(gpx.getTrk().get(0))));
|
||||
snackbar.show("GPX file: " + name + "successfully loaded", 3000);
|
||||
//snackbar.show("GPX file: " + name + "successfully loaded", 3000);
|
||||
} else {
|
||||
snackbar.show("Error loading GPX file: " + name, 3000);
|
||||
//snackbar.show("Error loading GPX file: " + name, 3000);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,11 +2,9 @@
|
|||
|
||||
<?import com.jfoenix.controls.JFXButton?>
|
||||
<?import com.jfoenix.controls.JFXTabPane?>
|
||||
<?import com.lynden.gmapsfx.GoogleMapView?>
|
||||
<?import java.lang.String?>
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.chart.AreaChart?>
|
||||
<?import javafx.scene.chart.CategoryAxis?>
|
||||
<?import javafx.scene.chart.LineChart?>
|
||||
<?import javafx.scene.chart.NumberAxis?>
|
||||
<?import javafx.scene.chart.PieChart?>
|
||||
|
@ -19,18 +17,14 @@
|
|||
<?import javafx.scene.layout.VBox?>
|
||||
<?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">
|
||||
<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">
|
||||
<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">
|
||||
<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">
|
||||
<Tab fx:id="tabDashboard" styleClass=".estraba.dashboard" text="%tab.dashboard">
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<padding>
|
||||
<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">
|
||||
<Label fx:id="labelMotivationUpper" alignment="CENTER" focusTraversable="false" maxWidth="1.7976931348623157E308" text="%label.motivation">
|
||||
<font>
|
||||
<Font name="Roboto" size="56.0" />
|
||||
</font>
|
||||
|
@ -50,16 +44,12 @@
|
|||
<HBox.margin>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</HBox.margin>
|
||||
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
|
||||
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">
|
||||
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" 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" />
|
||||
</ImageView>
|
||||
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
||||
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308"
|
||||
text="%label.hr">
|
||||
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="%label.hr">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -71,9 +61,7 @@
|
|||
<String fx:value=".estraba.dashboard.label.HR" />
|
||||
</styleClass>
|
||||
</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 size="30.0" />
|
||||
</font>
|
||||
|
@ -84,9 +72,7 @@
|
|||
</styleClass>
|
||||
</Label>
|
||||
<HBox>
|
||||
<Label fx:id="valueHRMin" alignment="CENTER_RIGHT"
|
||||
maxWidth="1.7976931348623157E308" text="60bpm"
|
||||
HBox.hgrow="ALWAYS">
|
||||
<Label fx:id="valueHRMin" alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="60bpm" HBox.hgrow="ALWAYS">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -99,9 +85,7 @@
|
|||
<String fx:value=".estraba.dashboard.value.minhr" />
|
||||
</styleClass>
|
||||
</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>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -117,16 +101,12 @@
|
|||
</HBox>
|
||||
</VBox>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
|
||||
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">
|
||||
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" 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">
|
||||
<Image url="@../img/speed.png" />
|
||||
</ImageView>
|
||||
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
||||
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308"
|
||||
text="%label.speed">
|
||||
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="%label.speed">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -138,9 +118,7 @@
|
|||
<String fx:value=".estraba.dashboard.label.HR" />
|
||||
</styleClass>
|
||||
</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 size="30.0" />
|
||||
</font>
|
||||
|
@ -150,8 +128,7 @@
|
|||
<String fx:value=".estraba.dashboard.value.avgspeed" />
|
||||
</styleClass>
|
||||
</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>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -166,16 +143,12 @@
|
|||
</Label>
|
||||
</VBox>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity"
|
||||
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">
|
||||
<HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" 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">
|
||||
<Image url="@../img/cadence.png" />
|
||||
</ImageView>
|
||||
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
||||
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308"
|
||||
text="%label.cadence">
|
||||
<Label alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="%label.cadence">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -187,9 +160,7 @@
|
|||
<String fx:value=".estraba.dashboard.label.HR" />
|
||||
</styleClass>
|
||||
</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 size="30.0" />
|
||||
</font>
|
||||
|
@ -199,8 +170,7 @@
|
|||
<String fx:value=".estraba.dashboard.value.avgcadence" />
|
||||
</styleClass>
|
||||
</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>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -216,19 +186,12 @@
|
|||
</VBox>
|
||||
</HBox>
|
||||
</VBox>
|
||||
<PieChart fx:id="zoneChart" labelsVisible="false" legendVisible="false" minHeight="-Infinity"
|
||||
minWidth="-Infinity" prefHeight="300.0" prefWidth="360.0" HBox.hgrow="ALWAYS">
|
||||
<HBox.margin>
|
||||
<Insets/>
|
||||
</HBox.margin>
|
||||
<PieChart fx:id="zoneChart" labelsVisible="false" legendVisible="true" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="360.0" HBox.hgrow="ALWAYS">
|
||||
</PieChart>
|
||||
<VBox layoutX="15.0" layoutY="15.0" minHeight="360.0" minWidth="300.0" prefHeight="300.0">
|
||||
<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">
|
||||
<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">
|
||||
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
||||
<Label fx:id="valueDate" alignment="CENTER" layoutX="10.0" layoutY="97.0"
|
||||
maxWidth="1.7976931348623157E308" text="Wednesday, 18 May 2016">
|
||||
<Label fx:id="valueDate" alignment="CENTER" layoutX="10.0" layoutY="97.0" maxWidth="1.7976931348623157E308" text="Wednesday, 18 May 2016">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -243,8 +206,7 @@
|
|||
<Insets />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Label fx:id="valueTime" 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>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -256,9 +218,7 @@
|
|||
<String fx:value=".estraba.dashboard.value.sub" />
|
||||
</styleClass>
|
||||
</Label>
|
||||
<Label fx:id="valueActiveTime" 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 size="30.0" />
|
||||
</font>
|
||||
|
@ -268,8 +228,7 @@
|
|||
<String fx:value=".estraba.dashboard.value.activetime" />
|
||||
</styleClass>
|
||||
</Label>
|
||||
<Label fx:id="valueTotalTime" 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>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -283,14 +242,11 @@
|
|||
</styleClass>
|
||||
</Label>
|
||||
</VBox>
|
||||
<ImageView fx:id="imgDate" fitHeight="100.0" fitWidth="100.0"
|
||||
pickOnBounds="true" preserveRatio="true"
|
||||
styleClass=".estraba.dashboard.icon">
|
||||
<ImageView fx:id="imgDate" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon">
|
||||
<Image url="@../img/date.png" />
|
||||
</ImageView>
|
||||
</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" prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS" VBox.vgrow="ALWAYS">
|
||||
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
||||
<Label maxWidth="1.7976931348623157E308" text="%label.distance">
|
||||
<padding>
|
||||
|
@ -304,9 +260,7 @@
|
|||
<String fx:value=".estraba.dashboard.label.HR" />
|
||||
</styleClass>
|
||||
</Label>
|
||||
<Label fx:id="valueDistance" 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 size="30.0" />
|
||||
</font>
|
||||
|
@ -317,14 +271,11 @@
|
|||
</styleClass>
|
||||
</Label>
|
||||
</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" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon">
|
||||
<Image url="@../img/distance.png" />
|
||||
</ImageView>
|
||||
</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" prefHeight="90.0" prefWidth="200.0" HBox.hgrow="ALWAYS" VBox.vgrow="ALWAYS">
|
||||
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
||||
<Label maxWidth="1.7976931348623157E308" text="%label.elevation">
|
||||
<padding>
|
||||
|
@ -338,9 +289,7 @@
|
|||
<String fx:value=".estraba.dashboard.label.HR" />
|
||||
</styleClass>
|
||||
</Label>
|
||||
<Label fx:id="valueElevation" 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 size="30.0" />
|
||||
</font>
|
||||
|
@ -351,9 +300,7 @@
|
|||
</styleClass>
|
||||
</Label>
|
||||
<HBox>
|
||||
<Label fx:id="valueAscent" alignment="CENTER_RIGHT"
|
||||
maxWidth="1.7976931348623157E308" text="+ 2053m"
|
||||
HBox.hgrow="ALWAYS">
|
||||
<Label fx:id="valueAscent" alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" text="+ 2053m" HBox.hgrow="ALWAYS">
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -366,9 +313,7 @@
|
|||
<String fx:value=".estraba.dashboard.value.ascent" />
|
||||
</styleClass>
|
||||
</Label>
|
||||
<Label fx:id="valueDescent" 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>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
|
@ -383,16 +328,13 @@
|
|||
</Label>
|
||||
</HBox>
|
||||
</VBox>
|
||||
<ImageView fx:id="imgElevation" fitHeight="100.0" fitWidth="100.0"
|
||||
pickOnBounds="true" preserveRatio="true"
|
||||
styleClass=".estraba.dashboard.icon">
|
||||
<ImageView fx:id="imgElevation" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass=".estraba.dashboard.icon">
|
||||
<Image url="@../img/climb.png" />
|
||||
</ImageView>
|
||||
</HBox>
|
||||
</VBox>
|
||||
</HBox>
|
||||
<Label fx:id="labelMotivationLower" 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 name="Roboto" size="56.0" />
|
||||
</font>
|
||||
|
@ -411,56 +353,45 @@
|
|||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
<GoogleMapView fx:id="mapView"/>
|
||||
<!-- <GoogleMapView fx:id="mapView"/> -->
|
||||
<HBox maxHeight="-Infinity" minHeight="-Infinity" prefHeight="128.0">
|
||||
<VBox>
|
||||
<JFXButton fx:id="elevationButton" minHeight="-Infinity" minWidth="-Infinity"
|
||||
onAction="#onMapButton" prefHeight="32.0" prefWidth="32.0">
|
||||
<JFXButton fx:id="elevationButton" minHeight="-Infinity" minWidth="-Infinity" onAction="#onMapButton" prefHeight="32.0" prefWidth="32.0">
|
||||
<graphic>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
|
||||
preserveRatio="true"/>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
|
||||
</graphic>
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
</VBox.margin>
|
||||
</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>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
|
||||
preserveRatio="true"/>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
|
||||
</graphic>
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
</VBox.margin>
|
||||
</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>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
|
||||
preserveRatio="true"/>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
|
||||
</graphic>
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
</VBox.margin>
|
||||
</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>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true"
|
||||
preserveRatio="true"/>
|
||||
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
|
||||
</graphic>
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
</VBox.margin>
|
||||
</JFXButton>
|
||||
</VBox>
|
||||
<LineChart HBox.hgrow="ALWAYS">
|
||||
<LineChart fx:id="mapChart" HBox.hgrow="ALWAYS">
|
||||
<xAxis>
|
||||
<CategoryAxis side="BOTTOM"/>
|
||||
<NumberAxis side="BOTTOM" />
|
||||
</xAxis>
|
||||
<yAxis>
|
||||
<NumberAxis side="LEFT" />
|
||||
|
@ -476,7 +407,7 @@
|
|||
</padding>
|
||||
<AreaChart fx:id="elevationChart" minHeight="100.0">
|
||||
<xAxis>
|
||||
<CategoryAxis side="BOTTOM"/>
|
||||
<NumberAxis side="BOTTOM" />
|
||||
</xAxis>
|
||||
<yAxis>
|
||||
<NumberAxis side="LEFT" />
|
||||
|
@ -484,7 +415,7 @@
|
|||
</AreaChart>
|
||||
<LineChart fx:id="speedChart" minHeight="100.0">
|
||||
<xAxis>
|
||||
<CategoryAxis/>
|
||||
<NumberAxis />
|
||||
</xAxis>
|
||||
<yAxis>
|
||||
<NumberAxis side="LEFT" />
|
||||
|
@ -492,7 +423,7 @@
|
|||
</LineChart>
|
||||
<LineChart fx:id="hrChart" minHeight="100.0">
|
||||
<xAxis>
|
||||
<CategoryAxis side="BOTTOM"/>
|
||||
<NumberAxis side="BOTTOM" />
|
||||
</xAxis>
|
||||
<yAxis>
|
||||
<NumberAxis side="LEFT" />
|
||||
|
@ -500,7 +431,7 @@
|
|||
</LineChart>
|
||||
<LineChart fx:id="cadenceChart" minHeight="100.0">
|
||||
<xAxis>
|
||||
<CategoryAxis side="BOTTOM"/>
|
||||
<NumberAxis side="BOTTOM" />
|
||||
</xAxis>
|
||||
<yAxis>
|
||||
<NumberAxis side="LEFT" />
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
label.cadence=Cadence
|
||||
label.distance=Distance
|
||||
label.elevation=Elevation
|
||||
label.hr=Heart rate
|
||||
label.motivation=Welcome!
|
||||
label.speed=Speed
|
||||
tab.dashboard=Dashboard
|
||||
tab.graph=Stats
|
||||
tab.map=Your Route
|
||||
tab.settings=Settings
|
||||
time.of=of
|
||||
unit.bpm=\ bpm
|
||||
unit.hz=\ Hz
|
||||
unit.kmph=\ kmph
|
||||
unit.m=\ m
|
|
@ -1,5 +1,15 @@
|
|||
label.cadence=Cadencia
|
||||
label.distance=Distancia
|
||||
label.elevation=Elevacion
|
||||
label.hr=YOLO
|
||||
label.motivation=¡Benvinguts!
|
||||
label.speed=Speed
|
||||
tab.dashboard=Sumari
|
||||
tab.graph=Estadístiques
|
||||
tab.map=La teva ruta
|
||||
tab.settings=Ajustos
|
||||
time.of=de
|
||||
unit.bpm=\ ppm
|
||||
unit.hz=\ Hz
|
||||
unit.kmph=\ kmph
|
||||
unit.m=\ m
|
|
@ -1,5 +1,15 @@
|
|||
label.cadence=Cadencia
|
||||
label.distance=Distancia
|
||||
label.elevation=Elevacion
|
||||
label.hr=Pulsaciónes
|
||||
label.motivation=¡Bienvenido!
|
||||
label.speed=Velocidad
|
||||
tab.dashboard=Resúmen
|
||||
tab.graph=Estadísticas
|
||||
tab.map=Tu ruta
|
||||
tab.settings=Ajustes
|
||||
time.of=de
|
||||
unit.bpm=\ ppm
|
||||
unit.hz=\ Hz
|
||||
unit.kmph=\ kmph
|
||||
unit.m=\ m
|
Reference in a new issue