6 Commits

Author SHA1 Message Date
71c0bf6644 MainActivity: generate dynamic menu from last two weeks 2026-02-19 00:14:41 +01:00
905aeadabe LunaEvent: rework sleep event
Make the UI more flexible and
slightly easier to understand.
2026-02-19 00:05:55 +01:00
2a307fd77c MainActivity: rename datepicker 2026-02-19 00:05:55 +01:00
176774352c 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 00:05:55 +01:00
104bb08134 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 00:05:55 +01:00
8684270a22 StatisticsActivity: rework all statistics
Improve the overall code.
2026-02-19 00:05:51 +01:00

View File

@@ -14,7 +14,6 @@ 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
@@ -280,8 +279,8 @@ class StatisticsActivity : AppCompatActivity() {
//Log.d(TAG, "Range $index, vals: ${vals.joinToString { it.toInt().toString() }}") //, allColors: ${allColors.joinToString { it.toString() }}")
assert(values.size == index)
values.add(BarEntry(values.size.toFloat(), vals.toFloatArray()))
//Log.d(TAG, "index: ${index.toFloat()}")
values.add(BarEntry(index.toFloat(), vals.toFloatArray()))
}
//Log.d(TAG, "daysWithData: ${state.dayCounter.daysWithData.joinToString()}")
@@ -351,27 +350,28 @@ 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)
val valueCount = min(values.size, 24)
barChart.setData(data)
barChart.legend.isEnabled = false
val valueCount = min(values.size, 24)
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
barChart.xAxis.setLabelCount(valueCount)
barChart.xAxis.setCenterAxisLabels(false)
barChart.moveViewTo(data.getEntryCount().toFloat(), 0f, YAxis.AxisDependency.LEFT)
barChart.invalidate()
}
@@ -402,8 +402,7 @@ class StatisticsActivity : AppCompatActivity() {
// update value
val newYVals = appendToFloatArray(yVals, awakeDuration.toFloat(), sleepDuration.toFloat())
assert(index == x.toInt())
values[index] = BarEntry(index.toFloat(), newYVals)
values[index] = BarEntry(x, newYVals)
}
for (range in ranges) {
@@ -434,11 +433,12 @@ class StatisticsActivity : AppCompatActivity() {
}
}
// awake phase color is transparent
val set1 = BarDataSet(values, "")
val data = BarData(set1)
// awake phase color is transparent
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,19 +479,18 @@ 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}")
val valueCount = min(values.size, 24)
barChart.setData(data)
barChart.legend.isEnabled = false
val valueCount = min(values.size, 24)
barChart.setVisibleXRangeMaximum(valueCount.toFloat())
barChart.xAxis.setLabelCount(valueCount)
barChart.xAxis.setCenterAxisLabels(false)
barChart.moveViewTo(data.getEntryCount().toFloat(), 0f, YAxis.AxisDependency.LEFT)
barChart.invalidate()
}
@@ -593,7 +592,6 @@ 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()
}
@@ -656,7 +654,6 @@ 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()
}