Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
e9a67b3
feat: assets
whes1015 Aug 9, 2026
39e7521
fix: background
whes1015 Aug 9, 2026
01c64f7
fix: lang
whes1015 Aug 9, 2026
1b56b42
fix: background
whes1015 Aug 9, 2026
01ec52a
fix: android crash
whes1015 Aug 9, 2026
869b511
fix: background
whes1015 Aug 9, 2026
47dea66
fix: pin maplibre_gl to gzip fix
whes1015 Aug 9, 2026
ee5ec55
fix: developer mode
whes1015 Aug 10, 2026
91bf45c
fix: home page weather card
whes1015 Aug 10, 2026
3246c08
fix: home page weather icon
whes1015 Aug 10, 2026
42589dc
fix: home page weather background
whes1015 Aug 10, 2026
1e1eeec
feat: home sheet next-hour rain trend from rainforecast API
whes1015 Aug 10, 2026
fd8db7d
fix: home background blur/dim flicker
whes1015 Aug 10, 2026
8776ea3
feat: weather phenomenon icons finer than the backdrop modes
whes1015 Aug 10, 2026
46a9245
feat: beautify data page
whes1015 Aug 10, 2026
b777bf1
feat: home rain trend summary + minute axis
whes1015 Aug 10, 2026
3bce5ad
feat: wind map arrows with baked-in outline, speed-coloured
whes1015 Aug 10, 2026
30e38f8
feat: wind chart segments coloured by speed bucket
whes1015 Aug 10, 2026
6f73fb3
fix: wind chart tooltip crash on segmented bars
whes1015 Aug 10, 2026
9f97889
feat: 24M tile cache with fill-style warm injection
whes1015 Aug 10, 2026
1fab8d7
feat: QPESUMS forecast overlay with scan/county/town chrome
whes1015 Aug 10, 2026
b9493ad
fix: self-heal map platform view on iOS hot restart
whes1015 Aug 10, 2026
163c289
fix: compass above all overlays
whes1015 Aug 10, 2026
d740ca8
fix: space the QPESUMS layer label
whes1015 Aug 10, 2026
7e3c228
refactor: extract notification tap routing into its own file
whes1015 Aug 10, 2026
2d1a290
feat: open DPM points in an external map app
whes1015 Aug 10, 2026
5187dca
style: reformat the notification route navigator typedef
whes1015 Aug 10, 2026
e51250d
feat: show rain-trend update time and a no-data pane
whes1015 Aug 10, 2026
cd54102
feat: outline lightning markers for visibility over pale tiles
whes1015 Aug 10, 2026
e9126d4
refactor: bake lightning colours in so the outline survives tinting
whes1015 Aug 10, 2026
42b18ea
style: thicken the lightning outline to match the wind arrows
whes1015 Aug 10, 2026
087140d
feat: expose the township-name toggle on every map layer
whes1015 Aug 10, 2026
96e3793
fix: settle the compass needle on reset and park it lower
whes1015 Aug 10, 2026
0906bf9
feat: use the Flutter MapCompass on the report and replay maps
whes1015 Aug 10, 2026
a430cc4
feat: treat a dry rain-hour forecast as no rain
whes1015 Aug 10, 2026
a0d69dd
feat: grow the hero forecast card on a dry hour
whes1015 Aug 10, 2026
70a4d8e
feat: centre the home backdrop on GPS in current-location mode
whes1015 Aug 10, 2026
f006195
perf: square the radar scan-range terms by multiplication
whes1015 Aug 10, 2026
6f74601
perf: binary-search the wind chart's nearest sample
whes1015 Aug 10, 2026
82f34cb
refactor: share the wind arrow outline directions
whes1015 Aug 10, 2026
d6dc1bd
refactor: drop the dead string sort in the lightning cache eviction
whes1015 Aug 10, 2026
cf5b42c
refactor: tidy the tile-cache inject chunk boundary
whes1015 Aug 10, 2026
1348358
perf: cut scroll-frame cost on the home sheet
whes1015 Aug 10, 2026
55199aa
perf: cut the home backdrop's per-frame cost and fix forced-look rain
whes1015 Aug 10, 2026
e9c750d
feat: custom layer order in the map layer picker
whes1015 Aug 10, 2026
d918991
feat: add QPESUMS as a default map layer choice
whes1015 Aug 10, 2026
a451a02
feat: group map layers into six ordered categories
whes1015 Aug 10, 2026
0bf2b48
feat: let the layer order editor reorder categories too
whes1015 Aug 10, 2026
a934af4
refactor: split the layer order editor into two levels
whes1015 Aug 10, 2026
00cbb55
feat: reorder default map-layer categories
whes1015 Aug 10, 2026
c0bf2e1
chore: bump flutter-maplibre-gl to 7c2e249
whes1015 Aug 10, 2026
1e5f950
perf: render weather/cloud shaders at mediump precision
whes1015 Aug 10, 2026
6354040
refactor: merge the three v2 tile APIs and repositories
whes1015 Aug 10, 2026
82ac382
refactor: share degToRad, rampColor, and drop dead ramp code
whes1015 Aug 10, 2026
9ff5ab0
refactor: give MapLayer a defaults mixin for unused members
whes1015 Aug 10, 2026
589ff91
refactor: share meteor repo decodes, bounds, and calibrated time
whes1015 Aug 10, 2026
d08cde6
refactor: fold RainMapLayer into a generic station layer
whes1015 Aug 11, 2026
c9d68ce
refactor: generalize the meteor snapshot API and repositories
whes1015 Aug 11, 2026
17199cf
refactor: share typhoon payload decoding
whes1015 Aug 11, 2026
0f749f1
refactor: route Taipei wall-clock conversions through AppTime.taipei
whes1015 Aug 11, 2026
2c73243
refactor: share small inline UI building blocks
whes1015 Aug 11, 2026
3ed307d
refactor: share the map sheets' extent plumbing and chrome
whes1015 Aug 11, 2026
bdcefa0
refactor: centralize API path constants and drop the dead v1 report e…
whes1015 Aug 11, 2026
5fd2d02
feat: more satellite channel
whes1015 Aug 11, 2026
7459bc8
feat: expand satellite channels to all Himawari bands and products
whes1015 Aug 11, 2026
3ec3845
feat: bright-yellow admin frame over satellite layers
whes1015 Aug 11, 2026
eb3a22b
feat: satellite layer styles, legends and switcher subtitles
whes1015 Aug 11, 2026
165eb53
fix: degrade 所在地 to nationwide when GPS is unavailable
whes1015 Aug 11, 2026
9650b6d
chore: pin maplibre_gl git dependency in pubspec.lock
whes1015 Aug 11, 2026
bac1a7f
fix: clear the stale township frame when 所在地 loses GPS
whes1015 Aug 11, 2026
2c8ee7a
fix: weather icon
whes1015 Aug 11, 2026
c109471
feat: ECMWF/GFS wind-forecast overlays with particle animation
whes1015 Aug 11, 2026
0453678
feat: 國界 borders default-off on every reference overlay
whes1015 Aug 11, 2026
1c5d122
refactor: legend units always shown under the scale
whes1015 Aug 11, 2026
19de96d
feat: cache wind-forecast tiles in the immutable ETag store
whes1015 Aug 11, 2026
0e307e5
perf: equivalent simplification of the wind particle hot path
whes1015 Aug 11, 2026
b08405d
feat: per-hour usage history chart on the Debug page
whes1015 Aug 11, 2026
ddcaf56
feat: colour-coded 現在/歷史/未來 eras on the map timeline
whes1015 Aug 11, 2026
a26bb82
refactor: extract Debug network chart into a tested public widget
whes1015 Aug 11, 2026
c3a94ab
style: reformat drifted map timeline and wind files
whes1015 Aug 11, 2026
2996ce6
feat: red/green network chart with mixed or single-series toggle
whes1015 Aug 11, 2026
a83a1d1
feat: 24h/7d window toggle on the network usage chart
whes1015 Aug 11, 2026
eed7c4d
fix: space out x-axis labels on the network usage chart
whes1015 Aug 11, 2026
358382c
fix: keep the network chart tooltip inside the screen
whes1015 Aug 11, 2026
fa2474c
fix: a future forecast step is never labelled 現在
whes1015 Aug 11, 2026
d7b535b
feat: surface a snackbar when the chosen map app cannot open
whes1015 Aug 11, 2026
55bda87
feat: map timeline shows a forecast's issue time and valid span
whes1015 Aug 11, 2026
36f36ad
refactor: DPM sheet accents per sub-layer, drop category filters
whes1015 Aug 11, 2026
4c473ef
style: polish typhoon warning and waypoint cards
whes1015 Aug 11, 2026
8c072ae
fix: restore maplibre_gl git dependency in pubspec.lock
whes1015 Aug 11, 2026
4b6e76a
fix: typhoon cards
whes1015 Aug 11, 2026
37220f1
fix: typhoon cards
whes1015 Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: keep the network chart tooltip inside the screen
The tooltip for edge bars rendered past the phone bounds. Clamp the
bubble with fitInsideHorizontally/Vertically and cap its width so it
always stays within the chart.
  • Loading branch information
whes1015 committed Aug 11, 2026
commit 358382cf5777ef7584efadea8008f8821d8a3441
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,11 @@ class _NetworkUsageChartState extends State<NetworkUsageChart> {
vertical: AppSpacing.sm,
),
tooltipMargin: AppSpacing.sm,
// Edge bars sit under the screen edge — clamp the bubble
// inside the chart so it never spills off the phone.
maxContentWidth: 200,
fitInsideHorizontally: true,
fitInsideVertically: true,
getTooltipItem: (group, groupIndex, rod, rodIndex) {
final sample = samples[group.x];
final lines = StringBuffer(_taipeiLabel(sample.hour));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,12 @@ void main() {
expect(find.text('1日8時'), findsOneWidget);
// Labels are spaced out, not one per bar: 24 h at every 6 → 4 labels.
expect(find.textContaining('日'), findsNWidgets(4));
// The tooltip clamps inside the chart so an edge bar never spills off the
// phone screen.
final tooltip = data.barTouchData.touchTooltipData;
expect(tooltip.fitInsideHorizontally, isTrue);
expect(tooltip.fitInsideVertically, isTrue);
expect(tooltip.maxContentWidth, 200);
});

testWidgets('switching to 7d shows 28 six-hour buckets', (tester) async {
Expand Down
Loading