6 Commits

Author SHA1 Message Date
64fde74e2e MainActivity: generate dynamic menu from last two weeks 2026-02-19 08:48:49 +01:00
d2a71d500d LunaEvent: rework sleep event
Make the UI more flexible and
slightly easier to understand.
2026-02-19 08:48:49 +01:00
3d893fa7db MainActivity: rename datepicker 2026-02-19 08:48:49 +01:00
d64f0b9627 layout: replace menu icon with utf8 character
The three dot menu icosn looks odd when stretched
due to the dynamic menu feature. Thus replace it
with the hamburger menu character that looks better
when scaled.
2026-02-19 08:48:49 +01:00
2dbfdcf9d5 MainActivity: sort events before saving
Also replace notifyItemInserted since it does not
call the adapter to redraw the row striping when
a new event is added.
2026-02-19 08:48:49 +01:00
0c8b7503f0 StatisticsActivity: rework all statistics
Improve the overall code.
2026-02-19 08:48:45 +01:00

View File

@@ -14,6 +14,7 @@ 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.components.YAxis
import com.github.mikephil.charting.data.BarData
import com.github.mikephil.charting.data.BarDataSet
import com.github.mikephil.charting.data.BarEntry
@@ -279,8 +280,8 @@ class StatisticsActivity : AppCompatActivity() {
//Log.d(TAG, "Range $index, vals: ${vals.joinToString { it.toInt().toString() }}") //, allColors: ${allColors.joinToString { it.toString() }}")
//Log.d(TAG, "index: ${index.toFloat()}")
values.add(BarEntry(index.toFloat(), vals.toFloatArray()))
assert(values.size == index)
values.add(BarEntry(values.size.toFloat(), vals.toFloatArray()))
}
//Log.d(TAG, "daysWithData: ${state.dayCounter.daysWithData.joinToString()}")
@@ -350,28 +351,27 @@ class StatisticsActivity : AppCompatActivity() {
})
val set1 = BarDataSet(values, "")
val data = BarData(set1)
set1.colors = allColors
set1.setDrawValues(false) // usually too many values
set1.isHighlightEnabled = true
set1.setDrawIcons(false)
//Log.d(TAG, "showSleepPatternBarGraphSlotted; barChart.xAxis.labelCount: ${barChart.xAxis.labelCount}, barChart.visibleXRange: ${barChart.visibleXRange}, barChart.xAxis.isCenterAxisLabelsEnabled: ${barChart.xAxis.isCenterAxisLabelsEnabled}, barChart.isAutoScaleMinMaxEnabled: ${barChart.isAutoScaleMinMaxEnabled}, barChart.isScaleXEnabled: ${barChart.isScaleXEnabled}, barChart.isScaleYEnabled: ${barChart.isScaleYEnabled}")
val data = BarData(set1)
data.setValueTextSize(12f)
barChart.setData(data)
// does not work quite right yet
//Log.d(TAG, "xChartMax: ${barChart.xChartMax}")
//barChart.centerViewTo(barChart.xChartMax, 0F, YAxis.AxisDependency.LEFT)
barChart.legend.isEnabled = false
val valueCount = min(values.size, 24)
barChart.setData(data)
barChart.legend.isEnabled = false
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
barChart.xAxis.setLabelCount(valueCount)
barChart.xAxis.setCenterAxisLabels(false)
barChart.moveViewTo(data.getEntryCount().toFloat(), 0f, YAxis.AxisDependency.LEFT)
barChart.invalidate()
}
@@ -402,7 +402,8 @@ class StatisticsActivity : AppCompatActivity() {
// update value
val newYVals = appendToFloatArray(yVals, awakeDuration.toFloat(), sleepDuration.toFloat())
values[index] = BarEntry(x, newYVals)
assert(index == x.toInt())
values[index] = BarEntry(index.toFloat(), newYVals)
}
for (range in ranges) {
@@ -433,12 +434,11 @@ class StatisticsActivity : AppCompatActivity() {
}
}
val set1 = BarDataSet(values, "")
val data = BarData(set1)
// awake phase color is transparent
val set1 = BarDataSet(values, "")
set1.colors = arrayListOf("#00000000".toColorInt(), "#72d7f5".toColorInt())
set1.setDrawValues(false) // usually too many values
set1.setDrawIcons(false)
set1.isHighlightEnabled = true
barChart.setOnChartValueSelectedListener(object : OnChartValueSelectedListener {
@@ -479,18 +479,19 @@ class StatisticsActivity : AppCompatActivity() {
override fun onNothingSelected() {}
})
//Log.d(TAG, "showSleepPatternBarGraphDaily: values.size: ${values.size}, barChart.xAxis.labelCount: ${barChart.xAxis.labelCount}")
set1.setDrawIcons(false)
val data = BarData(set1)
data.setValueTextSize(12f)
barChart.setData(data)
//Log.d(TAG, "showSleepPatternBarGraphDaily: new barChart.xAxis.labelCount: ${barChart.xAxis.labelCount}")
barChart.legend.isEnabled = false
val valueCount = min(values.size, 24)
barChart.setData(data)
barChart.legend.isEnabled = false
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
barChart.xAxis.setLabelCount(valueCount)
barChart.xAxis.setCenterAxisLabels(false)
barChart.moveViewTo(data.getEntryCount().toFloat(), 0f, YAxis.AxisDependency.LEFT)
barChart.invalidate()
}
@@ -592,6 +593,7 @@ class StatisticsActivity : AppCompatActivity() {
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
barChart.xAxis.setLabelCount(valueCount)
barChart.xAxis.setCenterAxisLabels(false)
barChart.moveViewTo(data.getEntryCount().toFloat(), 0f, YAxis.AxisDependency.LEFT)
barChart.invalidate()
}
@@ -654,6 +656,7 @@ class StatisticsActivity : AppCompatActivity() {
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
barChart.xAxis.setLabelCount(valueCount)
barChart.xAxis.setCenterAxisLabels(false)
barChart.moveViewTo(data.getEntryCount().toFloat(), 0f, YAxis.AxisDependency.LEFT)
barChart.invalidate()
}