Commit graph

29 commits

Author SHA1 Message Date
751b8a5f1b
improve dialyzer 2025-10-13 10:02:15 -05:00
cc5b3ec027
fix: Handle string timestamps in weather view DateTime comparison
The weather view was crashing with FunctionClauseError when comparing
string timestamps with DateTime structs. This happens when packets are
broadcast with string timestamps instead of DateTime objects.

Changes:
- Add cases to handle when one timestamp is a string and the other is DateTime
- Parse ISO8601 string timestamps before comparison
- Append 'Z' to timestamps that don't have timezone info
- Fallback safely when parsing fails

This prevents crashes when the weather view receives packets with
mixed timestamp formats from different parts of the system.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 15:49:46 -05:00
9b147101e1
fix: Handle both atom and string keys in weather view packet comparison
The weather view was crashing with KeyError when receiving packets with
string keys instead of atom keys. This was happening when packets were
broadcast from different parts of the system.

Changes:
- Updated should_update_weather? to handle both atom and string keys
- Added proper nil checking for received_at timestamps
- Handle string timestamp comparisons as well as DateTime comparisons

This prevents crashes when the weather view receives packets with
inconsistent key types from PubSub broadcasts.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 15:46:12 -05:00
e6d8894bf6
fix: Handle numeric weather values and hide N/A fields in weather view
The weather view was crashing with CaseClauseError when receiving numeric
values (like 83.0) from the database instead of strings. Also improved
the UI to only show weather fields that have valid data.

Changes:
- Added support for numeric values in format_weather_value function
- Added has_weather_field? helper to check for valid weather data
- Updated template to conditionally display weather fields
- Fields with nil, "N/A", or empty values are now hidden
- Wind field shows direction and speed independently if available

This prevents crashes and provides a cleaner UI by only showing available
weather data instead of displaying N/A values.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 15:33:09 -05:00
48bc27e43c
fix: Resolve majority of dialyzer type errors
- Fix leader election guard test for :undefined pid
- Fix cpu_sup.util() pattern matching to handle numeric return
- Fix encoding_utils to always return explicit nil when needed
- Remove unused finite_float? function
- Fix signal handler to match :ok return from :os.set_signal/2
- Remove redundant catch-all pattern in database metrics
- Fix Gridsquare pattern matching in info_live template
- Remove unnecessary nil check for calculate_course result
- Fix get_packet_received_at to not check for nil (always returns DateTime)
- Remove redundant catch-all pattern in weather format_weather_value
- Fix query builder to use from(p in Packet) instead of bare Packet atom

Reduced dialyzer errors from 49 to 6. Remaining warnings are mostly
false positives from template compilation and overloaded function specs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 13:30:21 -05:00
41c148650d
refactor: Remove CachedQueries and rename optimized functions
- Remove all CachedQueries usage throughout the codebase
- Replace with direct Packets module calls
- Delete CachedQueries module entirely
- Rename get_recent_packets_optimized to get_recent_packets
- Add has_weather_packets? function to Packets module
- Fix duplicate function definitions
- Update all test references to use new function names

This simplifies the codebase by removing the caching layer and
eliminates the database ownership errors in tests.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 13:17:56 -05:00
7dc6c616a2
Bundle all vendor JavaScript files locally instead of loading from CDNs
This change eliminates all external CDN dependencies by bundling JavaScript
libraries locally using esbuild. All vendor files are now served from the
application's own assets, improving reliability and privacy.

Changes:
- Created assets/js/vendor.js to bundle all external libraries
- Added vendor bundle configuration to esbuild in config files
- Updated all templates to use local vendor.js instead of CDN scripts
- Created download-vendor-files.sh script to fetch vendor libraries
- Added vendor files to .gitignore (they're downloaded during setup)
- Updated CSS imports to include vendor stylesheets
- Added vendor build step to assets.deploy mix task

Bundled libraries:
- Leaflet 1.9.4 (mapping library)
- Leaflet.heat 0.2.0 (heatmap plugin)
- Leaflet.markercluster 1.5.3 (marker clustering)
- OverlappingMarkerSpiderfier 0.2.6 (overlapping marker handling)
- Chart.js 4.5.0 (charting library)
- chartjs-adapter-date-fns 3.0.0 (date adapter for Chart.js)

All functionality tested and working correctly with local bundles.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 09:52:39 -05:00
566198afa7
clean up warnings 2025-07-16 08:55:46 -05:00
532a81c0b4
integrate /:call to main page 2025-07-13 10:36:58 -05:00
4348d34f62
fix weather 2025-07-12 10:53:11 -05:00
48447ab42e
refactor and performance improvements 2025-07-10 10:53:34 -05:00
9a39c783fa
show 48 hour history on weather page 2025-07-08 13:25:29 -05:00
4f02966aab
fix weather page 2025-07-08 12:35:49 -05:00
711d92ebb6
performance improvements 2025-07-08 10:03:52 -05:00
524c8208c3
more i18n 2025-07-06 10:28:27 -05:00
fc449ed5f9
en español 2025-07-05 15:51:39 -05:00
8c06f1f8fa
more typescript and update weather charts in real time 2025-07-05 12:47:11 -05:00
53dc32f8fc
use daisyui components 2025-07-05 09:22:47 -05:00
5bdb40b9f8
indexes 2025-07-04 12:49:35 -05:00
802c6982c7
change to chart.js 2025-07-04 12:37:03 -05:00
d6417ff16b
more live updates and chart version update 2025-07-04 12:15:38 -05:00
a78fb8a385
live update info page 2025-07-04 11:45:00 -05:00
7a36960eb6
device identifier fix and other cleanup 2025-07-04 11:39:43 -05:00
d15821e72e
more detail fixing 2025-07-04 10:23:37 -05:00
bebead0fb0
fix icons on pages 2025-07-04 09:55:22 -05:00
1b4ac972de
fix icon on pages 2025-07-04 09:37:01 -05:00
48b8c7de94
add index for weather 2025-07-03 13:07:34 -05:00
c8ee465015
weather charts 2025-07-03 11:29:01 -05:00
ce7c50caa1
refactor to use external parser 2025-06-24 14:22:09 -05:00