feat(3-1): stale state detection and dimmed display

When fetch times out or returns empty after prior data, retain last aircraft
with is_stale=True and render them as black outlines so the display stays
informative rather than blank or crashing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt Edholm
2026-04-22 23:47:04 -04:00
parent 316e7aa9a8
commit 833a7f0917
6 changed files with 131 additions and 28 deletions
+10 -2
View File
@@ -5,7 +5,12 @@ import math
from PIL import Image, ImageDraw, ImageFont
from planemapper.constants import COLOUR_TRAIL, TRAIL_DOT_SIZE_MAX, TRAIL_DOT_SIZE_MIN
from planemapper.constants import (
COLOUR_STALE_OUTLINE,
COLOUR_TRAIL,
TRAIL_DOT_SIZE_MAX,
TRAIL_DOT_SIZE_MIN,
)
from planemapper.models import Aircraft
from planemapper.renderer.colours import altitude_to_colour
@@ -78,5 +83,8 @@ def draw_aircraft(
colour = altitude_to_colour(aircraft.altitude_ft)
draw = ImageDraw.Draw(image)
_draw_trail(draw, trail)
_draw_arrow(draw, cx, cy, aircraft.heading or 0.0, colour, aircraft.is_mlat)
if aircraft.is_stale:
_draw_arrow(draw, cx, cy, aircraft.heading or 0.0, COLOUR_STALE_OUTLINE, is_mlat=True)
else:
_draw_arrow(draw, cx, cy, aircraft.heading or 0.0, colour, aircraft.is_mlat)
_draw_label(draw, cx, cy, aircraft, colour)