455 lines
24 KiB
XML
455 lines
24 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<!--
|
|
~ Copyright (c) 2016 Jesús "baudlord" Vélez Palacios, Carlos "kauron" Santiago Galindo Jiménez
|
|
~
|
|
~ Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
~ of this software and associated documentation files (the "Software"), to deal
|
|
~ in the Software without restriction, including without limitation the rights
|
|
~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
~ copies of the Software, and to permit persons to whom the Software is
|
|
~ furnished to do so, subject to the following conditions:
|
|
~
|
|
~ The above copyright notice and this permission notice shall be included in
|
|
~ all copies or substantial portions of the Software.
|
|
~
|
|
~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
~ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
~ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
~ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
~ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
~ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
~ THE SOFTWARE.
|
|
~
|
|
~ If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.
|
|
~
|
|
-->
|
|
|
|
<?import com.jfoenix.controls.*?>
|
|
<?import com.lynden.gmapsfx.GoogleMapView?>
|
|
<?import javafx.geometry.*?>
|
|
<?import javafx.scene.chart.*?>
|
|
<?import javafx.scene.control.*?>
|
|
<?import javafx.scene.image.*?>
|
|
<?import javafx.scene.layout.*?>
|
|
<?import java.lang.*?>
|
|
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:id="root" xmlns="http://javafx.com/javafx/8.0.76-ea"
|
|
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" 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">
|
|
<VBox.margin>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</VBox.margin>
|
|
<styleClass>
|
|
<String fx:value="motivation" />
|
|
<String fx:value="motivation.upper" />
|
|
</styleClass>
|
|
</Label>
|
|
<HBox prefHeight="360.0" prefWidth="800.0" VBox.vgrow="ALWAYS">
|
|
<VBox.margin>
|
|
<Insets />
|
|
</VBox.margin>
|
|
<VBox minHeight="360.0" minWidth="300.0" prefHeight="300.0" HBox.hgrow="ALWAYS">
|
|
<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="icon">
|
|
</ImageView>
|
|
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
|
<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>
|
|
<styleClass>
|
|
<String fx:value="label" />
|
|
<String fx:value="label-hr" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueHRAvg" alignment="CENTER" maxWidth="1.7976931348623157E308" textAlignment="CENTER">
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-main" />
|
|
<String fx:value="value-avghr" />
|
|
</styleClass>
|
|
</Label>
|
|
<HBox>
|
|
<Label fx:id="valueHRMin" alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
<String fx:value="value-minhr" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueHRMax" layoutX="10.0" layoutY="10.0" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
<String fx:value="value-maxhr" />
|
|
</styleClass>
|
|
</Label>
|
|
</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="icon">
|
|
</ImageView>
|
|
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
|
<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>
|
|
<styleClass>
|
|
<String fx:value="label" />
|
|
<String fx:value="label-speed" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueSpeedAvg" alignment="CENTER" maxWidth="1.7976931348623157E308" textAlignment="CENTER">
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-main" />
|
|
<String fx:value="value-avgspeed" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueSpeedMax" alignment="CENTER" maxWidth="1.7976931348623157E308">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
<String fx:value="value-maxspeed" />
|
|
</styleClass>
|
|
</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="icon">
|
|
</ImageView>
|
|
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
|
|
<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>
|
|
<styleClass>
|
|
<String fx:value="label" />
|
|
<String fx:value="label-cadence" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueCadenceAvg" alignment="CENTER" maxWidth="1.7976931348623157E308" textAlignment="CENTER">
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-main" />
|
|
<String fx:value="value-avgcadence" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueCadenceMax" alignment="CENTER" maxWidth="1.7976931348623157E308">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
<String fx:value="value-maxcadence" />
|
|
</styleClass>
|
|
</Label>
|
|
</VBox>
|
|
</HBox>
|
|
</VBox>
|
|
<PieChart fx:id="zoneChart" labelsVisible="false" legendVisible="true" minHeight="-Infinity"
|
|
minWidth="-Infinity" prefHeight="300.0" prefWidth="360.0" startAngle="90" HBox.hgrow="ALWAYS">
|
|
</PieChart>
|
|
<VBox layoutX="15.0" layoutY="15.0" minHeight="360.0" minWidth="300.0" prefHeight="300.0"
|
|
HBox.hgrow="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">
|
|
<padding>
|
|
<Insets left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
</styleClass>
|
|
<VBox.margin>
|
|
<Insets />
|
|
</VBox.margin>
|
|
</Label>
|
|
<Label fx:id="valueTime" alignment="CENTER" layoutX="10.0" layoutY="30.0" maxWidth="1.7976931348623157E308">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueActiveTime" alignment="CENTER" maxWidth="1.7976931348623157E308" textAlignment="CENTER">
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-main" />
|
|
<String fx:value="value-activetime" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueTotalTime" alignment="CENTER" maxWidth="1.7976931348623157E308">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
<String fx:value="value-totaltime" />
|
|
</styleClass>
|
|
</Label>
|
|
</VBox>
|
|
<ImageView fx:id="imgDate" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass="icon">
|
|
</ImageView>
|
|
</HBox>
|
|
<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>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="label" />
|
|
<String fx:value="label-distance" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueDistance" alignment="CENTER" maxWidth="1.7976931348623157E308" textAlignment="CENTER">
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-main" />
|
|
<String fx:value="value-distance" />
|
|
</styleClass>
|
|
</Label>
|
|
</VBox>
|
|
<ImageView fx:id="imgDistance" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass="icon">
|
|
</ImageView>
|
|
</HBox>
|
|
<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>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="label" />
|
|
<String fx:value="label-elevation" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueElevation" alignment="CENTER" maxWidth="1.7976931348623157E308" textAlignment="CENTER">
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-main" />
|
|
<String fx:value="value-elevation" />
|
|
</styleClass>
|
|
</Label>
|
|
<HBox>
|
|
<Label fx:id="valueAscent" alignment="CENTER_RIGHT" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
<String fx:value="value-ascent" />
|
|
</styleClass>
|
|
</Label>
|
|
<Label fx:id="valueDescent" layoutX="10.0" layoutY="10.0" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<styleClass>
|
|
<String fx:value="value" />
|
|
<String fx:value="value-sub" />
|
|
<String fx:value="value-descent" />
|
|
</styleClass>
|
|
</Label>
|
|
</HBox>
|
|
</VBox>
|
|
<ImageView fx:id="imgElevation" fitHeight="100.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true" styleClass="icon">
|
|
</ImageView>
|
|
</HBox>
|
|
</VBox>
|
|
</HBox>
|
|
<HBox alignment="CENTER" spacing="10.0">
|
|
<children>
|
|
<JFXButton minWidth="70.0" onAction="#loadFile" style="-fx-background-color: #fc4c02;"
|
|
text="Load another file" textAlignment="CENTER" textFill="WHITE">
|
|
<HBox.margin>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="10.0"/>
|
|
</HBox.margin>
|
|
</JFXButton>
|
|
</children>
|
|
</HBox>
|
|
</VBox>
|
|
</Tab>
|
|
<Tab fx:id="tabMap" text="%tab.map">
|
|
<VBox>
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<StackPane prefHeight="150.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
|
|
<children>
|
|
<GoogleMapView fx:id="mapView" />
|
|
<JFXSpinner fx:id="mapSpinner" />
|
|
</children>
|
|
</StackPane>
|
|
<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">
|
|
<graphic>
|
|
<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">
|
|
<graphic>
|
|
<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">
|
|
<graphic>
|
|
<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">
|
|
<graphic>
|
|
<ImageView fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
|
|
</graphic>
|
|
<VBox.margin>
|
|
<Insets />
|
|
</VBox.margin>
|
|
</JFXButton>
|
|
</VBox>
|
|
<LineChart fx:id="mapChart" animated="false" createSymbols="false" legendSide="TOP" minHeight="0.0"
|
|
minWidth="0.0" HBox.hgrow="ALWAYS">
|
|
<xAxis>
|
|
<NumberAxis side="BOTTOM" />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</LineChart>
|
|
</HBox>
|
|
</VBox>
|
|
</Tab>
|
|
<Tab fx:id="tabGraph" text="%tab.graph">
|
|
<VBox alignment="CENTER">
|
|
<padding>
|
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
</padding>
|
|
<HBox alignment="CENTER" spacing="5.0">
|
|
<children>
|
|
<Label text="%label.distance" />
|
|
<JFXToggleButton fx:id="toggleCharts" toggleColor="#fc4c02" toggleLineColor="#ffba9e"
|
|
unToggleColor="#fc4c02" unToggleLineColor="#ffba9e">
|
|
<padding>
|
|
<Insets bottom="-5.0" left="-5.0" right="-5.0" top="-5.0" />
|
|
</padding>
|
|
</JFXToggleButton>
|
|
<Label text="%label.time" />
|
|
</children>
|
|
</HBox>
|
|
<StackPane fx:id="charts">
|
|
<children>
|
|
<VBox>
|
|
<children>
|
|
<AreaChart fx:id="elevationChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis side="BOTTOM" />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</AreaChart>
|
|
<LineChart fx:id="speedChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</LineChart>
|
|
<LineChart fx:id="hrChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis side="BOTTOM" />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</LineChart>
|
|
<LineChart fx:id="cadenceChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis side="BOTTOM" />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</LineChart>
|
|
</children>
|
|
</VBox>
|
|
<VBox visible="false">
|
|
<children>
|
|
<AreaChart fx:id="elevationTChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</AreaChart>
|
|
<LineChart fx:id="speedTChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</LineChart>
|
|
<LineChart fx:id="hrTChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</LineChart>
|
|
<LineChart fx:id="cadenceTChart" createSymbols="false" legendVisible="false" minHeight="100.0">
|
|
<xAxis>
|
|
<NumberAxis />
|
|
</xAxis>
|
|
<yAxis>
|
|
<NumberAxis side="LEFT" />
|
|
</yAxis>
|
|
</LineChart>
|
|
</children>
|
|
</VBox>
|
|
</children>
|
|
</StackPane>
|
|
</VBox>
|
|
</Tab>
|
|
</JFXTabPane>
|
|
</AnchorPane>
|