import QtQuick 2.0
import Sailfish.Silica 1.0
+import harbour.pedalo.graph 1.0
import "../components"
Page {
SilicaFlickable {
id: statsView
anchors.fill: parent
- contentHeight: statsColumn.implicitHeight
+ contentHeight: statsColumn.implicitHeight + headerItem.height
VerticalScrollDecorator {}
+ PageHeader {
+ id: headerItem
+ title: qsTr("Stats")
+ }
+
Column {
id: statsColumn
spacing: Theme.paddingLarge
- width: parent.width
-
- PageHeader {
- title: qsTr("Stats")
- }
+ width: isPortrait ? parent.width : parent.width * 0.5
+ y: headerItem.height
InfoRow {
label: qsTr("Journeys:")
- value: "0"
+ value: currentStatus.getJourneyCount()
midlineRatio: 0.7
midlineMin: Theme.fontSizeSmall * 10
- midlineMax: Theme.fontSizeSmall * 15
+ midlineMax: Theme.fontSizeSmall * 20
pixelSize: Theme.fontSizeMedium
labelTextBold: true
+ horizontalAlignment: Text.AlignRight
}
InfoRow {
label: qsTr("Time spent cycling:")
- value: "0"
- midlineRatio: 0.7
+ value: currentStatus.getFormattedTime(currentStatus.getTimeSpentCycling(), 0, 5)
+ midlineRatio: 0.5
midlineMin: Theme.fontSizeSmall * 10
- midlineMax: Theme.fontSizeSmall * 15
+ midlineMax: Theme.fontSizeSmall * 20
pixelSize: Theme.fontSizeMedium
labelTextBold: true
+ horizontalAlignment: Text.AlignRight
}
InfoRow {
label: qsTr("Average journey duration:")
- value: "0"
- midlineRatio: 0.7
+ value: currentStatus.getFormattedTime(currentStatus.getAverageDuration(), 1, 5)
+ midlineRatio: 0.6
midlineMin: Theme.fontSizeSmall * 10
- midlineMax: Theme.fontSizeSmall * 15
+ midlineMax: Theme.fontSizeSmall * 20
pixelSize: Theme.fontSizeMedium
labelTextBold: true
+ horizontalAlignment: Text.AlignRight
}
InfoRow {
label: qsTr("Speed percentile:")
- value: "0%"
+ value: Math.round(100.0 - currentStatus.getSpeedPercentile() * 100) + "%"
midlineRatio: 0.7
midlineMin: Theme.fontSizeSmall * 10
- midlineMax: Theme.fontSizeSmall * 15
+ midlineMax: Theme.fontSizeSmall * 20
pixelSize: Theme.fontSizeMedium
labelTextBold: true
+ horizontalAlignment: Text.AlignRight
+ }
+ }
+
+ Column {
+ id: graphsColumn
+ spacing: Theme.paddingLarge
+ width: isPortrait ? parent.width : parent.width * 0.5
+ y: (isPortrait ? (statsPage.height / 2.0) : statsColumn.y)
+ anchors.left: isPortrait ? statsColumn.left : statsColumn.right
+ anchors.leftMargin: Theme.horizontalPageMargin
+
+
+ Graph {
+ id: graph
+ width: parent.width - 2 * Theme.horizontalPageMargin
+ height: isPortrait ? (statsPage.height / 2.0) - Theme.paddingLarge : statsPage.height - Theme.paddingLarge - headerItem.height
+ model: currentStatus.getGraphData()
+ labelsx: ["M", "T", "W", "Th", "F", "S", "Su", "A", "B", "C"]
+ //labelsy: ["0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"]
+ unitsy: "%"
+ primary: Theme.primaryColor
+ secondary: Theme.highlightColor
+ highlight: Theme.highlightColor
+ miny: 0.0
+ maxy: 1.0
+ stepy: 0.1
+ gap: 0.1
+ fontsize: Theme.fontSizeExtraSmall
+ PropertyAnimation on animate {
+ duration: 2000
+ easing.type: Easing.InOutExpo
+ from: 0.0
+ to: 1.0
+ }
}
}
}