Compare commits
5 Commits
be5463bf18
...
43f0519487
| Author | SHA1 | Date | |
|---|---|---|---|
| 43f0519487 | |||
| 1bcfc18a71 | |||
| e345e98668 | |||
| 09f5a4e27b | |||
| b3b432525e |
@@ -1,5 +1,6 @@
|
||||
package it.danieleverducci.lunatracker
|
||||
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
@@ -11,6 +12,7 @@ import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.graphics.toColorInt
|
||||
import com.github.mikephil.charting.animation.ChartAnimator
|
||||
import com.github.mikephil.charting.charts.BarChart
|
||||
import com.github.mikephil.charting.data.BarData
|
||||
import com.github.mikephil.charting.data.BarDataSet
|
||||
@@ -18,7 +20,10 @@ import com.github.mikephil.charting.data.BarEntry
|
||||
import com.github.mikephil.charting.data.Entry
|
||||
import com.github.mikephil.charting.formatter.ValueFormatter
|
||||
import com.github.mikephil.charting.highlight.Highlight
|
||||
import com.github.mikephil.charting.interfaces.dataprovider.BarDataProvider
|
||||
import com.github.mikephil.charting.listener.OnChartValueSelectedListener
|
||||
import com.github.mikephil.charting.renderer.HorizontalBarChartRenderer
|
||||
import com.github.mikephil.charting.utils.ViewPortHandler
|
||||
import it.danieleverducci.lunatracker.entities.LunaEvent
|
||||
import utils.DateUtils
|
||||
import utils.NumericUtils
|
||||
@@ -316,10 +321,7 @@ class StatisticsActivity : AppCompatActivity() {
|
||||
format.format((dayStartUnix + startSeconds) * 1000).toString()
|
||||
val endTimeString =
|
||||
format.format((dayStartUnix + endSeconds) * 1000).toString()
|
||||
val durationString = NumericUtils(applicationContext).formatEventQuantity(
|
||||
LunaEvent.Type.SLEEP,
|
||||
durationSeconds
|
||||
)
|
||||
val durationString = DateUtils.formatTimeDuration(applicationContext, durationSeconds.toLong())
|
||||
|
||||
val daysWithData =
|
||||
stack[e.x.toInt()][startSeconds / SLEEP_PATTERN_GRANULARITY]
|
||||
@@ -461,7 +463,7 @@ class StatisticsActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
val duration = value.yVals[h.stackIndex].toInt()
|
||||
val durationString = NumericUtils(applicationContext).formatEventQuantity(LunaEvent.Type.SLEEP, duration)
|
||||
val durationString = DateUtils.formatTimeDuration(applicationContext, duration.toLong())
|
||||
|
||||
val offsetUnix = spanToUnix(state.startSpan + e.x.toInt()) // start of the time span (day/week/month)
|
||||
val startUnix = offsetUnix + value.yVals.sliceArray(0..<h.stackIndex).fold(0) { acc, y -> acc + y.toInt() }
|
||||
@@ -492,6 +494,21 @@ class StatisticsActivity : AppCompatActivity() {
|
||||
barChart.invalidate()
|
||||
}
|
||||
|
||||
// Make sure the value on the bar is not out of screen.
|
||||
class CustomHorizontalBarChartRenderer(chart: BarDataProvider, animator: ChartAnimator, viewPortHandler: ViewPortHandler): HorizontalBarChartRenderer(chart, animator, viewPortHandler) {
|
||||
override fun drawValue(
|
||||
c: Canvas,
|
||||
valueText: String,
|
||||
x: Float,
|
||||
y: Float,
|
||||
color: Int
|
||||
) {
|
||||
mValuePaint.setColor(color)
|
||||
c.drawText(valueText, x.coerceAtLeast(60F), y, mValuePaint)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun showSleepBarGraph(state: GraphState) {
|
||||
val ranges = toSleepRanges(state.events)
|
||||
val values = ArrayList(List(state.endSpan - state.startSpan + 1) { BarEntry(it.toFloat(), 0F) })
|
||||
@@ -556,7 +573,7 @@ class StatisticsActivity : AppCompatActivity() {
|
||||
prefix + value.toInt().toString()
|
||||
}
|
||||
GraphType.SLEEP_SUM -> {
|
||||
prefix + NumericUtils(applicationContext).formatEventQuantity(LunaEvent.Type.SLEEP, value.toInt())
|
||||
prefix + DateUtils.formatTimeDuration(applicationContext, value.toLong())
|
||||
}
|
||||
else -> {
|
||||
Log.e(TAG, "unhandled graphTypeSelection $graphTypeSelection")
|
||||
@@ -571,6 +588,8 @@ class StatisticsActivity : AppCompatActivity() {
|
||||
data.setValueTextSize(12f)
|
||||
barChart.setData(data)
|
||||
|
||||
barChart.setRenderer(CustomHorizontalBarChartRenderer(barChart, barChart.getAnimator(), barChart.getViewPortHandler()))
|
||||
|
||||
barChart.legend.isEnabled = false
|
||||
val valueCount = min(values.size, 24)
|
||||
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
|
||||
@@ -635,6 +654,8 @@ class StatisticsActivity : AppCompatActivity() {
|
||||
data.setValueTextSize(12f)
|
||||
barChart.setData(data)
|
||||
|
||||
barChart.setRenderer(CustomHorizontalBarChartRenderer(barChart, barChart.getAnimator(), barChart.getViewPortHandler()))
|
||||
|
||||
val valueCount = min(values.size, 24)
|
||||
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
|
||||
barChart.xAxis.setLabelCount(valueCount)
|
||||
|
||||
Reference in New Issue
Block a user