aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Server.GtfsRealtime: yet another TripUpdateTooOldHEADmainstuebinm2024-05-212-4/+12
| | | | | Google really is picky about these … and does not even seem willing to tell which thresholds it uses …
* Config: fix OsPath valuesstuebinm2024-05-212-3/+8
| | | | | | | | | my annoyance with conferer increases. It should really, /really/ be a compile error if a thing used in the config does not have a FromConfig instance. Or at least the documentation should mention that in such cases it will simply always take the default value without telling anyone, instead of just saying "the generic instance has reasonable defaults" (well, /which/ defaults?)
* use OsPath instead of FilePath in easy casesstuebinm2024-05-206-22/+44
| | | | | | | | | this is still far from being supported by most libraries, but does make it possible to remove some uses of String (though most times, there is a conversion back to String later). Note that using the default.nix now only works on nixpkgs-unstable for a bit; using the newer filepath package on stable leads to broken other packages.
* Server.Ingest: bugfix (tentative)stuebinm2024-05-191-12/+12
|
* Persist: add cascade rules to foreign keysstuebinm2024-05-161-9/+7
| | | | | | | | | | It turns out persist does support these, they're just not mentioned in the yesod book. (for future reference, the syntax is defined in Database.Persist.Quasi, which does include some documentation [1]) [1] https://hackage.haskell.org/package/persistent-2.14.6.1/docs/Database-Persist-Quasi.html
* new feature: Server.Frontend.Tickerstuebinm2024-05-1610-1/+95
| | | | | | | | A simple way to have "announcements" available via API, and otherwise distinct from the service announcements which show up in Gtfs Realtime. These are meant to go e.g. be embedded on the operator's website, or in other places where it's not as easy to display per-trip specific messages.
* Frontend.Tickets: add a space-time diagram in ticket viewstuebinm2024-05-151-0/+5
| | | | | not sure if i'll keep it here — it should probably gain some logic for real-time udpates and be moved to the map view instead.
* Frontend.SpaceTime: make diagram's y axis scalablestuebinm2024-05-152-22/+23
| | | | in preparation for using these elsewhere, where they are less cramped
* Frontend.Tickets: fix "last call" in ticket viewstuebinm2024-05-151-1/+1
| | | | (same as previous commit, this displayed the wrong ping)
* Frontend.Tickets,Server.Ingest: fix map viewstuebinm2024-05-152-12/+13
| | | | | | | this is really two changes: - some leftover lat,long keys in the clientside javascript - the Server.Subscribe module should send a correct ping after a connection has been opened
* update todo filestuebinm2024-05-151-5/+18
|
* Server.GtfsRealtime: bugfixstuebinm2024-05-151-1/+1
| | | | | | | | | can't believe it was this simple … but seems to be all that was wrong. Tracktrain should now automatically remove tripUpdates for tickets whose trip has ended more than five minutes ago (taking delay into account). Nothing in the gtfs-rt spec says you should do this, but google likes to complain if one doesn't do this.
* Server.Frontend.SpaceTime: fix lots of bugsstuebinm2024-05-151-49/+54
| | | | | also make the code generally look nicer. Turns out I made a lot more fragile assumptions than I thought I did.
* Server.Ingest: new handling of unassigned trackersstuebinm2024-05-155-88/+170
| | | | | | | | now takes all potential stops along each trip into account when guessing tickets; also checks if a ticket is still likely in case the tracker switched its direction. This should solve many cases where a tracker is accidentally turned off or falls asleep halfway before the last station of one trip, then wakes up in the middle of the next.
* config: add a debug mode optionstuebinm2024-05-152-3/+8
| | | | | this is meant to be false by default, and otherwise relaxes requirements on e.g. incoming pings, which are inconvenient when testing by hand.
* space time diagrams: real time & time zonesstuebinm2024-05-104-86/+179
|
* rough initial work on space-time diagramsstuebinm2024-05-096-0/+110
| | | | | | this does svg templating with hamlet. It might be better to use a javascript library instead (templating svgs is a little confusing tbh), but for now i'll see how far i get with this.
* restructure: split web frontend into several modulesstuebinm2024-05-099-582/+487
|
* restructure: split up the server modulestuebinm2024-05-085-302/+394
|
* onboard/tracker: remember token as query parameterstuebinm2024-05-032-14/+24
| | | | | | there's some trade-offs here (cookies may be discarded by the browser, query parameters lost if people use a bookmark), but either works fine for not re-issuing tokens if someone reloads the web site.
* todo: warnings given by google mapsstuebinm2024-05-031-0/+3
|
* fix: tripupdates should not contain old tripsstuebinm2024-05-031-2/+2
| | | | apparently i forgot an if here?
* update todo itemsstuebinm2024-05-021-33/+69
| | | | | largely based on things noticed on 2024-05-01, this year's first day of Ilztalbahn trains running.
* changelog for 0.0.2stuebinm2024-05-022-1/+6
| | | | this is the initial version used during 2024's Ilztalbahn season.
* document new config options in config.yaml.samplestuebinm2024-05-021-0/+6
|
* restructure: get the tracker to work againstuebinm2024-05-0211-135/+407
| | | | | | | | | | | | | | | This should hopefully be the final (major) part of the restructuring: a tracker no longer has to know which trip it is on (and indeed it has no idea for now), instead the server keeps state about which trips are currently running and will insert incoming pings in a hopefully reasonable manner, based on their geoposition & time. There's lots of associated TODO items here (especially there should be manual overrides for all this logic in the web ui), but that's work for a future me. (incidentally, this also adds support for sending all log messages out via ntfy-sh)
* correct styling on mobile devicesstuebinm2024-04-241-1/+4
|
* restructure: save a ticket's stop in the databasestuebinm2024-04-2411-332/+508
| | | | now mostly independent of the gtfs, but still no live-reloading of it.
* restructure: have "tickets" independent of gtfsstuebinm2024-04-2015-208/+341
| | | | | | this is mostly meant to guard against the gtfs changing under tracktrain, and not yet complete (e.g. a ticket does not yet save its expected stops, which it probably should).
* add config.yaml.sample filestuebinm2024-04-202-3/+6
|
* use direnv for dependenciesstuebinm2024-04-202-0/+6
|
* general housekeepingstuebinm2024-04-1715-173/+119
| | | | | jumps to GHC2021 as default language, adds in some fields, moves the old org mode glossary to markdown, etc.
* replace protocol-buffers with proto-lensstuebinm2024-04-1739-3690/+10916
| | | | | | I do not really like either option, but at least the second one seems more likely to be maintained (and a little less clunky to use, too, for what it's worth).
* update nix overridesstuebinm2023-06-301-18/+14
| | | | | | | | protocol-buffers's last release has been some while ago, and since then a deprecated function it used to use has been removed from the bytestring package. so here's some fun overrides to ignore that.
* change server timetables apistuebinm2023-05-261-1/+2
|
* expose sequence length of trip to onboard unitstuebinm2023-05-264-23/+41
|
* gtfs-rt: discard old trips from tripupdates feedstuebinm2023-05-231-7/+12
| | | | google maps complains about it otherwise
* onboard-tools: fix httpsstuebinm2023-05-202-3/+3
|
* expose the gtfs.zip used in the APIstuebinm2023-05-205-29/+49
|
* … add assets to gitstuebinm2023-03-161-0/+62
|
* add assets to nix derivationstuebinm2023-03-161-0/+4
|
* simple on-board toolsstuebinm2023-03-118-10/+289
| | | | | | these are just enough to send train positions to tracktrain with the current API, but are somewhat brittle (e.g. will fail if not restarted between trips, etc.)
* don't hardcode cssstuebinm2023-02-234-68/+10
|
* better web interface & cssstuebinm2023-01-285-31/+108
|
* yaml be imprecise & confusingstuebinm2023-01-281-0/+3
|
* config: prefer env varsstuebinm2023-01-221-1/+1
|
* switch to ghc 9.0.2stuebinm2023-01-224-61/+83
| | | | this makes the nix builds /much/ nicer
* oauth2 via uffdstuebinm2023-01-229-52/+232
| | | | | | this is unfortunately uffd-specific, since oauth2 is apparently sort of a vague standard. But since it doesn't actually do much it should probably be possible to make it fully configurable & generic if needed.
* simple realtime position mapstuebinm2022-12-135-2/+60
| | | | | (what was that about doing the realtime stuff somewhere else and /not/ in this monolithic server thingie? oh well …)
* stylish-haskell runstuebinm2022-12-123-6/+7
|