From c694d9b4d987f3d0af5660cb82833af3db14a47c Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Tue, 2 Dec 2025 18:48:08 +0100 Subject: [PATCH] Update sorting & view UI. --- app/build.gradle.kts | 21 +--------- app/release/baselineProfiles/0/app-release.dm | Bin 3914 -> 0 bytes app/release/baselineProfiles/1/app-release.dm | Bin 3876 -> 0 bytes app/release/output-metadata.json | 37 ------------------ .../summary/monthly/MonthSummaryFactory.kt | 1 + .../page/summary/monthly/MonthSummaryPage.kt | 13 +++--- .../ui/page/summary/report/ReportBox.kt | 32 +++++++++------ .../ui/page/summary/report/ReportFactory.kt | 30 ++++++++------ .../ui/page/summary/report/ReportPage.kt | 7 ++-- .../page/summary/yearly/YearSummaryFactory.kt | 14 +++++-- .../ui/page/summary/yearly/YearSummaryPage.kt | 21 +++++----- 11 files changed, 75 insertions(+), 101 deletions(-) delete mode 100644 app/release/baselineProfiles/0/app-release.dm delete mode 100644 app/release/baselineProfiles/1/app-release.dm delete mode 100644 app/release/output-metadata.json diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 00ecb78..7b30f85 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -28,7 +28,7 @@ android { minSdk = 26 targetSdk = 36 versionCode = 1 - versionName = "1.0" + versionName = "1.0.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -38,9 +38,6 @@ android { applicationIdSuffix = ".dev" isDebuggable = true isMinifyEnabled = false - defaultConfig { - versionCode = 1 - } proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" @@ -50,9 +47,6 @@ android { isDebuggable = false isMinifyEnabled = true signingConfig = signingConfigs.getByName("pixelized") - defaultConfig { - versionCode = getGitBuildNumber() - } proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" @@ -110,19 +104,6 @@ dependencies { ksp("com.google.dagger:hilt-compiler:2.57.2") } -@Suppress("DEPRECATION") -private fun getGitBuildNumber( - charset: Charset = Charset.defaultCharset(), -): Int { - return ByteArrayOutputStream().use { stream -> - rootProject.exec { - commandLine("git", "rev-list", "--count", "HEAD") - standardOutput = stream - } - stream.toString(charset).trim().toIntOrNull() ?: 1 - } -} - fun SigningConfig.populatePixelizedSigningConfig() { storeFile = (project.properties["PIXELIZED_RELEASE_STORE_FILE"] as? String)?.let { file(it) } storePassword = project.properties["PIXELIZED_RELEASE_STORE_PASSWORD"] as? String diff --git a/app/release/baselineProfiles/0/app-release.dm b/app/release/baselineProfiles/0/app-release.dm deleted file mode 100644 index 5c6fb5a7dc38ccc7b2c184e1010bb909843c7197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3914 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 diff --git a/app/release/baselineProfiles/1/app-release.dm b/app/release/baselineProfiles/1/app-release.dm deleted file mode 100644 index 5b90df902f80488cbabdcb180cd39e3f7994b681..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3876 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 when{ diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt index 4d6d667..d33bca0 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/monthly/MonthSummaryPage.kt @@ -21,6 +21,7 @@ import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.keepScreenOn import androidx.compose.ui.tooling.preview.Preview @@ -90,14 +91,9 @@ private fun MonthSummaryContent( flingBehavior = flingBehavior, contentPadding = listPadding, verticalArrangement = Arrangement.spacedBy(space = spacing), - reverseLayout = false, + reverseLayout = true, ) { events.value.forEach { entry -> - item { - MonthSummaryTitle( - item = entry.key, - ) - } items( items = entry.value, key = { item -> item.date }, @@ -107,6 +103,11 @@ private fun MonthSummaryContent( onItem = onItem, ) } + item { + MonthSummaryTitle( + item = entry.key, + ) + } } } } diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt index 13071a7..16fab59 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportBox.kt @@ -1,18 +1,17 @@ package com.pixelized.headache.ui.page.summary.report -import android.R import android.annotation.SuppressLint import android.icu.text.DateFormat import android.icu.text.SimpleDateFormat import android.icu.util.Calendar import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width @@ -153,13 +152,24 @@ private fun Month( ), contentAlignment = Alignment.TopCenter, ) { - Text( - style = MaterialTheme.typography.labelSmall, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - color = Color.White, - text = stat.label, - ) + when (index == 0 && item.stats.size >= 2) { + true -> Text( + modifier = Modifier.offset(y = (-14).dp), + style = MaterialTheme.typography.labelSmall, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + color = MaterialTheme.colorScheme.onSurface, + text = stat.label, + ) + + else -> Text( + style = MaterialTheme.typography.labelSmall, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + color = Color.White, + text = stat.label, + ) + } } } } @@ -227,8 +237,8 @@ private class ReportBoxPreviewProvider : PreviewParameterProvider month(month = Calendar.JULY, headache = 7, pills = 3), month(month = Calendar.AUGUST, headache = 8, pills = 5), month(month = Calendar.SEPTEMBER, headache = 8, pills = 5), - month(month = Calendar.OCTOBER), - month(month = Calendar.NOVEMBER), + month(month = Calendar.OCTOBER, headache = 15, pills = 15), + month(month = Calendar.NOVEMBER, headache = 9, pills = 7), month(month = Calendar.DECEMBER), ) ) diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportFactory.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportFactory.kt index b1d05cf..1b02f5f 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportFactory.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportFactory.kt @@ -38,17 +38,25 @@ class ReportFactory @Inject constructor() { year = yearEntry.key ) }.time, - stats = listOf( - ReportBoxUio.Bar( - color = HeadacheColorPalette.Calendar.Headache, - label = "$headache", - ratio = headache.toFloat() / dayInMonth.toFloat(), - ), - ReportBoxUio.Bar( - color = HeadacheColorPalette.Calendar.Pill, - label = "$pills", - ratio = pills.toFloat() / maxPillAmountPerMonth.toFloat(), - ), + stats = listOfNotNull( + if (headache > 0) { + ReportBoxUio.Bar( + color = HeadacheColorPalette.Calendar.Headache, + label = "$headache", + ratio = headache.toFloat() / dayInMonth.toFloat(), + ) + } else { + null + }, + if (pills > 0) { + ReportBoxUio.Bar( + color = HeadacheColorPalette.Calendar.Pill, + label = "$pills", + ratio = pills.toFloat() / maxPillAmountPerMonth.toFloat(), + ) + } else { + null + }, ).sortedByDescending { it.ratio }, ) } diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt index a824989..4d45fd1 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/report/ReportPage.kt @@ -91,6 +91,7 @@ private fun ReportContent( state = state, flingBehavior = flingBehavior, contentPadding = paddingValues, + reverseLayout = true, verticalArrangement = Arrangement.spacedBy(space = contentSpace), ) { items( @@ -158,9 +159,9 @@ private class ReportPreviewProvider : PreviewParameterProvider { val monthFirstDayCalendar = Calendar.getInstance().apply { firstDayOfWeek = Calendar.MONDAY - setMinimalDaysInFirstWeek(1) + minimalDaysInFirstWeek = 1 } val monthLastDayCalendar = Calendar.getInstance().apply { firstDayOfWeek = Calendar.MONDAY - setMinimalDaysInFirstWeek(1) + minimalDaysInFirstWeek = 1 } val currentDayCalendar = Calendar.getInstance().apply { firstDayOfWeek = Calendar.MONDAY - setMinimalDaysInFirstWeek(1) + minimalDaysInFirstWeek = 1 } return events @@ -73,6 +73,14 @@ class YearSummaryFactory @Inject constructor() { date = monthFirstDayCalendar.time, weeks = weeks, ) + }.sortedWith { s1, s2 -> + when { + s1.date.month / 3 < s2.date.month / 3 -> 1 + s1.date.month / 3 > s2.date.month / 3 -> -1 + s1.date.month < s2.date.month -> -1 + s1.date.month > s2.date.month -> 1 + else -> 0 + } }, ) } diff --git a/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt b/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt index c271c11..140f877 100644 --- a/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt +++ b/app/src/main/java/com/pixelized/headache/ui/page/summary/yearly/YearSummaryPage.kt @@ -111,19 +111,10 @@ fun YearSummaryContent( columns = GridCells.Adaptive(minSize = daySize * 7), horizontalArrangement = Arrangement.spacedBy(space = space), verticalArrangement = Arrangement.spacedBy(space = space), + reverseLayout = true, contentPadding = paddingValues, ) { uio.value.forEachIndexed { index, (year, months) -> - item( - span = { GridItemSpan(maxLineSpan) }, - contentType = { "Title" }, - ) { - Text( - modifier = Modifier.padding(top = 16.dp), - style = MaterialTheme.typography.displaySmall, - text = "$year", - ) - } items( items = months, key = { it.date.time }, @@ -137,6 +128,16 @@ fun YearSummaryContent( onMonth = onMonth, ) } + item( + span = { GridItemSpan(maxLineSpan) }, + contentType = { "Title" }, + ) { + Text( + modifier = Modifier.padding(top = 16.dp), + style = MaterialTheme.typography.displaySmall, + text = "$year", + ) + } } } }