@@ -225,9 +225,7 @@ private struct TypeDiffRow: View {
|
||
| 225 | 225 |
.foregroundStyle(Color.criticalRed) |
| 226 | 226 |
|
| 227 | 227 |
case .stable: |
| 228 |
- Image(systemName: "minus") |
|
| 229 |
- .font(.system(size: 12, weight: .semibold)) |
|
| 230 |
- .foregroundStyle(.secondary) |
|
| 228 |
+ EmptyView() |
|
| 231 | 229 |
|
| 232 | 230 |
case .new: |
| 233 | 231 |
Image(systemName: "sparkles") |
@@ -104,28 +104,33 @@ struct TypeEvolutionTimeline: View {
|
||
| 104 | 104 |
private func timelineConnector(from: Int, to: Int) -> some View {
|
| 105 | 105 |
let fromHeight = 40 + CGFloat(from - minCount) / CGFloat(countRange) * 40 |
| 106 | 106 |
let toHeight = 40 + CGFloat(to - minCount) / CGFloat(countRange) * 40 |
| 107 |
+ let heightDiff = abs(toHeight - fromHeight) |
|
| 107 | 108 |
|
| 108 | 109 |
let isIncreasing = to > from |
| 109 |
- let changeIndicator = isIncreasing ? "▲" : "▼" |
|
| 110 |
- let color = isIncreasing ? Color.healthyGreen : Color.criticalRed |
|
| 110 |
+ let percentChange = from > 0 ? Double(to - from) / Double(from) * 100 : 0 |
|
| 111 |
+ let isSignificantIncrease = isIncreasing && percentChange > 10 |
|
| 111 | 112 |
|
| 112 | 113 |
return VStack {
|
| 113 | 114 |
Spacer() |
| 114 | 115 |
.frame(height: fromHeight) |
| 115 | 116 |
|
| 116 |
- HStack(spacing: 2) {
|
|
| 117 |
- Spacer(minLength: 0) |
|
| 118 |
- Text(changeIndicator) |
|
| 119 |
- .font(.system(size: 10, weight: .bold)) |
|
| 120 |
- .foregroundStyle(color) |
|
| 121 |
- Spacer(minLength: 0) |
|
| 117 |
+ if isSignificantIncrease {
|
|
| 118 |
+ HStack(spacing: 2) {
|
|
| 119 |
+ Spacer(minLength: 0) |
|
| 120 |
+ Text("▲")
|
|
| 121 |
+ .font(.system(size: 10, weight: .bold)) |
|
| 122 |
+ .foregroundStyle(Color.healthyGreen) |
|
| 123 |
+ Spacer(minLength: 0) |
|
| 124 |
+ } |
|
| 125 |
+ .frame(height: heightDiff.isZero ? 1 : heightDiff) |
|
| 126 |
+ } else {
|
|
| 127 |
+ Color.clear |
|
| 128 |
+ .frame(height: heightDiff.isZero ? 1 : heightDiff) |
|
| 122 | 129 |
} |
| 123 |
- .frame(height: abs(toHeight - fromHeight).isZero ? 1 : abs(toHeight - fromHeight)) |
|
| 124 | 130 |
|
| 125 | 131 |
Spacer() |
| 126 | 132 |
} |
| 127 | 133 |
.frame(height: 80) |
| 128 |
- .foregroundStyle(color) |
|
| 129 | 134 |
} |
| 130 | 135 |
|
| 131 | 136 |
private var compactStatsRow: some View {
|