fix(log): the table grid was nearly invisible and the sent column vanished at night
Three contrast defects, each measured with a WCAG relative-luminance probe rather than eyeballed. GridLineColor was 0xFF3A3A3A: 1.65:1 against the navBar background and 1.36:1 against a card, where Material asks 3:1 for non-text elements. Every rule and column separator on the Log page is drawn with it, so the grid the page is built around was barely there - and gone in sunlight. 0xFF6D6D6D is the lowest grey clearing 3:1 against both (3.62:1 and 3.00:1). The upload column was a green tick and nothing else. This app applies a night filter that zeroes green and blue, under which CheckGreen computes to 1.17:1 - the column disappeared entirely. Changing the colour does not fix it, because colour was also the only thing separating sent from waiting, which is the case Material calls out directly. The cell now reads OK or an ellipsis, so the state survives both the filter and colour blindness, and a contact that has not been tried is finally distinguishable from one that has. The linear-transponder passband range was 11sp, below Material's body-small floor of 12sp. That is the frequency an operator reads mid-pass to know where the transponder ends. The session group header stays at 11sp: it is a label, not information. Yellow survives the night filter at 4.69:1 because it is red-dominant, so the swipe and undo affordances needed nothing here.
This commit is contained in:
1 parent
91263674a9
commit
e2263668ce
2 files changed
+25
-11
No files matched your search
@@ -405,7 +405,7 @@ private fun ExpandedLogInput(
|
||||
if (isLinearRange) {
|
||||
Text(
|
||||
text = " (${formatFrequency(upLow)} – ${formatFrequency(upHigh)})",
|
||||
fontSize = 11.sp,
|
||||
fontSize = 12.sp,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
@@ -426,7 +426,7 @@ private fun ExpandedLogInput(
|
||||
if (downLow != null && downHigh != null && downLow != downHigh) {
|
||||
Text(
|
||||
text = " (${formatFrequency(downLow)} – ${formatFrequency(downHigh)})",
|
||||
fontSize = 11.sp,
|
||||
fontSize = 12.sp,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
|
||||
+23
-9
@@ -44,7 +44,15 @@ import java.util.Calendar
|
||||
import java.util.TimeZone
|
||||
|
||||
private val CheckGreen = Color(0xFF4CAF50)
|
||||
private val GridLineColor = Color(0xFF3A3A3A)
|
||||
/**
|
||||
* Grid rules and column separators.
|
||||
*
|
||||
* Was 0xFF3A3A3A, which computes to 1.65:1 against the navBar background and 1.36:1 against a card,
|
||||
* where Material asks 3:1 for non-text elements - the grid this page is built around was nearly
|
||||
* invisible, and gone in sunlight. 0xFF6D6D6D is the lowest grey clearing 3:1 against both
|
||||
* (3.62:1 and 3.00:1).
|
||||
*/
|
||||
private val GridLineColor = Color(0xFF6D6D6D)
|
||||
|
||||
@Composable
|
||||
fun WavelogLogScreen(
|
||||
@@ -139,15 +147,21 @@ fun WavelogLogScreen(
|
||||
GridVLine()
|
||||
Cell(entry.call, 0.dp, weight = 1f)
|
||||
GridVLine()
|
||||
// Upload state carried by the glyph, not by colour alone. The
|
||||
// green tick collapses to 1.17:1 under this app's night filter,
|
||||
// which zeroes green and blue, so the column disappeared entirely -
|
||||
// and colour was the only thing separating sent from waiting.
|
||||
Box(modifier = Modifier.width(44.dp)) {
|
||||
if (entry.uploaded) {
|
||||
Text(
|
||||
text = "✓",
|
||||
fontSize = 15.sp,
|
||||
fontWeight = FontWeight.Bold,
|
||||
color = CheckGreen
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = if (entry.uploaded) "OK" else "...",
|
||||
fontSize = 13.sp,
|
||||
fontWeight = FontWeight.Bold,
|
||||
color = if (entry.uploaded) {
|
||||
CheckGreen
|
||||
} else {
|
||||
MaterialTheme.colorScheme.onSurfaceVariant
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
// Row divider
|
||||
|
||||
Reference in new issue
Block a user