Restructure assets to top-level package and add Reset Map button
- Move assets from internal/assets to top-level assets/ package for clean embed directive - Consolidate all static files in single location (assets/static/) - Remove duplicate static file locations to maintain single source of truth - Add Reset Map button to map controls with full functionality - Implement resetMap() method to return map to calculated origin position - Store origin in this.mapOrigin for reset functionality - Fix go:embed pattern to work without parent directory references 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
af9bf8ecac
commit
1425f0a018
20 changed files with 263 additions and 2139 deletions
|
|
@ -52,7 +52,7 @@ func (c *Dump1090Client) startDataStream(ctx context.Context) {
|
|||
|
||||
func (c *Dump1090Client) connectAndRead(ctx context.Context) error {
|
||||
address := fmt.Sprintf("%s:%d", c.config.Dump1090.Host, c.config.Dump1090.DataPort)
|
||||
|
||||
|
||||
conn, err := net.Dial("tcp", address)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to connect to %s: %w", address, err)
|
||||
|
|
@ -109,7 +109,7 @@ func (c *Dump1090Client) updateExistingAircraft(existing, update *parser.Aircraf
|
|||
if update.Latitude != 0 && update.Longitude != 0 {
|
||||
existing.Latitude = update.Latitude
|
||||
existing.Longitude = update.Longitude
|
||||
|
||||
|
||||
// Add to track history if position changed significantly
|
||||
if c.shouldAddTrackPoint(existing, update) {
|
||||
trackPoint := parser.TrackPoint{
|
||||
|
|
@ -120,9 +120,9 @@ func (c *Dump1090Client) updateExistingAircraft(existing, update *parser.Aircraf
|
|||
Speed: update.GroundSpeed,
|
||||
Track: update.Track,
|
||||
}
|
||||
|
||||
|
||||
existing.TrackHistory = append(existing.TrackHistory, trackPoint)
|
||||
|
||||
|
||||
// Keep only last 200 points (about 3-4 hours at 1 point/minute)
|
||||
if len(existing.TrackHistory) > 200 {
|
||||
existing.TrackHistory = existing.TrackHistory[1:]
|
||||
|
|
@ -136,7 +136,7 @@ func (c *Dump1090Client) updateExistingAircraft(existing, update *parser.Aircraf
|
|||
existing.Squawk = update.Squawk
|
||||
}
|
||||
existing.OnGround = update.OnGround
|
||||
|
||||
|
||||
// Preserve country and registration
|
||||
if update.Country != "" && update.Country != "Unknown" {
|
||||
existing.Country = update.Country
|
||||
|
|
@ -152,19 +152,19 @@ func (c *Dump1090Client) shouldAddTrackPoint(existing, update *parser.Aircraft)
|
|||
if len(existing.TrackHistory) == 0 {
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
lastPoint := existing.TrackHistory[len(existing.TrackHistory)-1]
|
||||
|
||||
|
||||
// 2. At least 30 seconds since last point
|
||||
if time.Since(lastPoint.Timestamp) < 30*time.Second {
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
// 3. Position changed by at least 0.001 degrees (~100m)
|
||||
latDiff := existing.Latitude - lastPoint.Latitude
|
||||
lonDiff := existing.Longitude - lastPoint.Longitude
|
||||
distanceChange := latDiff*latDiff + lonDiff*lonDiff
|
||||
|
||||
|
||||
return distanceChange > 0.000001 // ~0.001 degrees squared
|
||||
}
|
||||
|
||||
|
|
@ -249,7 +249,7 @@ func (c *Dump1090Client) cleanupStaleAircraft() {
|
|||
|
||||
cutoff := time.Now().Add(-2 * time.Minute)
|
||||
trackCutoff := time.Now().Add(-24 * time.Hour)
|
||||
|
||||
|
||||
for hex, aircraft := range c.aircraftMap {
|
||||
if aircraft.LastSeen.Before(cutoff) {
|
||||
delete(c.aircraftMap, hex)
|
||||
|
|
@ -264,4 +264,4 @@ func (c *Dump1090Client) cleanupStaleAircraft() {
|
|||
aircraft.TrackHistory = validTracks
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue