Show source value difference vs previous check-in (green/red coloring)
When a source has been updated this cycle, shows the value change from the previous snapshot in green (increase) or red (decrease). Fixes #21 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -437,6 +437,15 @@ struct MonthlyCheckInView: View {
|
|||||||
ForEach(viewModel.sources, id: \.objectID) { source in
|
ForEach(viewModel.sources, id: \.objectID) { source in
|
||||||
let latestSnapshot = source.latestSnapshot
|
let latestSnapshot = source.latestSnapshot
|
||||||
let updatedThisCycle = isSnapshotInCurrentCycle(latestSnapshot)
|
let updatedThisCycle = isSnapshotInCurrentCycle(latestSnapshot)
|
||||||
|
let snapshots = source.sortedSnapshotsByDateAscending
|
||||||
|
let previousSnapshot: Snapshot? = {
|
||||||
|
guard snapshots.count >= 2 else { return nil }
|
||||||
|
return snapshots[snapshots.count - 2]
|
||||||
|
}()
|
||||||
|
let valueDiff: Decimal? = {
|
||||||
|
guard let latest = latestSnapshot, let previous = previousSnapshot else { return nil }
|
||||||
|
return latest.decimalValue - previous.decimalValue
|
||||||
|
}()
|
||||||
Button {
|
Button {
|
||||||
if updatedThisCycle, let snapshot = latestSnapshot {
|
if updatedThisCycle, let snapshot = latestSnapshot {
|
||||||
editingSnapshot = snapshot
|
editingSnapshot = snapshot
|
||||||
@@ -459,6 +468,12 @@ struct MonthlyCheckInView: View {
|
|||||||
|
|
||||||
Spacer()
|
Spacer()
|
||||||
|
|
||||||
|
if let diff = valueDiff, updatedThisCycle {
|
||||||
|
Text(diff >= 0 ? "+\(diff.compactCurrencyString)" : diff.compactCurrencyString)
|
||||||
|
.font(.caption.weight(.semibold))
|
||||||
|
.foregroundColor(diff >= 0 ? .positiveGreen : .negativeRed)
|
||||||
|
}
|
||||||
|
|
||||||
Text(latestSnapshot?.date.relativeDescription ?? String(localized: "date_never"))
|
Text(latestSnapshot?.date.relativeDescription ?? String(localized: "date_never"))
|
||||||
.font(.caption)
|
.font(.caption)
|
||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
|
|||||||
Reference in New Issue
Block a user