Daniel Friesel
ff75b16bfc
move exit direction calculation to a helper function
2019-08-03 11:14:29 +02:00
Daniel Friesel
90dd96e08f
Handle race condition when several workers are updating the same history entry
2019-07-20 20:58:28 +02:00
Daniel Friesel
7c7b5e9f95
Do not show station duplicates in geolocation list
2019-07-20 15:42:49 +02:00
Daniel Friesel
b12b5a821b
Show departures of all linked stations
...
Not well-tested yet, deployment will have to wait a bit. Issue #15
2019-07-14 21:29:52 +02:00
Daniel Friesel
b08b0fb921
handle ambiguous train numbers when requesting train details
2019-07-14 17:17:44 +02:00
Daniel Friesel
04cc32b7a0
Fix wrong directions on long-distance arrivals
2019-06-25 20:19:21 +02:00
Daniel Friesel
36121ccffc
show wagon order before departure
2019-06-24 18:02:45 +02:00
Daniel Friesel
590b27f2ca
also show exit direction for regional trains at select stations
2019-06-23 18:46:25 +02:00
Daniel Friesel
16c441e433
also show exit direction based on wagon order
2019-06-23 17:08:47 +02:00
Daniel Friesel
b3b0823829
show exit direction on kopfgleis platforms
2019-06-22 17:02:04 +02:00
Daniel Friesel
75aa4a961a
disable wagonorder for now (not used yet anyway)
2019-06-19 21:08:35 +02:00
Daniel Friesel
0bbdd768f4
prepare for wagon order support
2019-06-17 20:59:57 +02:00
Daniel Friesel
b54c977e08
increase checkout delay to work around IRIS information lag
2019-06-10 18:09:54 +02:00
Daniel Friesel
962aac63af
connections: order by realtime, not scheduled departure
2019-06-07 20:34:28 +02:00
Daniel Friesel
7be3a4219e
checked in: Show QoS messages before departure and HIM messages at all times
2019-06-04 21:12:36 +02:00
Daniel Friesel
d90c44ccff
Work around Safari violating the spec for SameSite=Lax cookies
...
This fixes users being logged out whenever following an external link to
travelynx in Safari (iOS/macOS)
2019-06-01 18:04:50 +02:00
Daniel Friesel
f355a8d95e
disappearing trains are no longer critical with the latest change
2019-06-01 12:38:26 +02:00
Daniel Friesel
5f80c151c1
run update hook after setting arrival time
2019-06-01 12:06:22 +02:00
Daniel Friesel
d701442306
Set arrival time via HAFAS if not available from IRIS
2019-06-01 11:52:42 +02:00
Daniel Friesel
b1591eed54
show current/next stop while checked in
2019-05-31 20:18:22 +02:00
Daniel Friesel
155f9f39cc
use journey-specific status links -> one twitter card per journey
2019-05-29 20:01:52 +02:00
Daniel Friesel
146b3a2682
add twitter preview tags to public user status page
2019-05-29 18:11:25 +02:00
Daniel Friesel
7fe95532c1
Use JSON for messages and route storage, prepare for extended route data
2019-05-26 17:28:21 +02:00
Daniel Friesel
45c32ff5c7
Fix missing update event when arrival time at destination is unknown
2019-05-24 17:17:04 +02:00
Daniel Friesel
f4a6f8a400
Increase suggestion time range to 4 months
2019-05-24 17:09:11 +02:00
Daniel Friesel
1dc04eb45a
show journey suggestions on departure board as well
2019-05-20 19:15:21 +02:00
Daniel Friesel
531cb95c17
Handle accidental double-checkins
2019-05-20 18:59:28 +02:00
Daniel Friesel
d9d3aac792
allow checkin from connections view
2019-05-19 10:32:57 +02:00
Daniel Friesel
7960114f71
Work in progress: show connections when arriving soon
...
At the moment, the heuristic used to determine connection targets is quite
simple: $station is a target iff there were at least two trips in the past
6 weeks with checkin at the current destination station and checkout at
$station.
Todo / enhanhement options:
* Consider current origin station as well, i.e.: $station is a target
iff there were at least two trips in the past 6 weeks which are preceded by
a trip from the current origin station and (same as above)
* Make connection links clickable once the current journey has ended.
Connections need to be added to _checked_out as well for this to work.
2019-05-19 08:55:23 +02:00
Daniel Friesel
7486920a6a
Proactively recompute yearly stats to avoid long user wait times
2019-05-18 17:11:28 +02:00
Daniel Friesel
e68043b8fb
Show arrival/departure platform in journey card
2019-05-18 17:10:53 +02:00
Daniel Friesel
283f5aad04
remove debug output
2019-05-18 08:29:39 +02:00
Daniel Friesel
fa98aba3d3
Pre-select theme css in backend
2019-05-18 08:23:59 +02:00
Daniel Friesel
b85db3a10d
Show web-hook test result immediately after saving it
...
Closes #12
2019-05-14 20:05:45 +02:00
Daniel Friesel
0f28fdfb85
get_journey_stats: Support uid override, fix uninitialized value warning
2019-05-11 15:23:29 +02:00
Daniel Friesel
59c677ba12
history: validate year and month
2019-05-11 01:35:57 +02:00
Daniel Friesel
269b8536f4
Add webhook to account page
2019-05-10 19:03:18 +02:00
Daniel Friesel
66a35a35eb
set a custom user agent
2019-05-09 17:58:23 +02:00
Daniel Friesel
022465d2a7
Fix division by zero when calculating journey completion
2019-05-08 07:12:54 +02:00
Daniel Friesel
2ddab75644
basic webhook support, onwards to betatesting
2019-05-06 16:59:48 +02:00
Daniel Friesel
b36ba45aef
WiP webhook support
2019-05-05 18:09:11 +02:00
Daniel Friesel
954638e7c7
data export: use station names, not IDs
2019-05-03 21:14:49 +02:00
Daniel Friesel
709919a962
Experimental PWA support ( #13 )
2019-05-03 20:43:46 +02:00
Daniel Friesel
9f3b80a859
use /account/... links for mail/password change
2019-05-03 18:57:24 +02:00
Daniel Friesel
b4bb68b7c3
Add worker command for Docker setups ( #9 )
2019-05-03 18:26:05 +02:00
Daniel Friesel
bc6a59d43e
Do not show origin station in destination list
2019-05-03 10:52:30 +02:00
Daniel Friesel
bf2dae7c45
Add changelog
2019-05-03 10:32:58 +02:00
Daniel Friesel
af5c26bf8a
Do not error out when receiving UIDs > INT_MAX
2019-05-02 11:34:52 +02:00
Daniel Friesel
be1e5dda23
Public API documentation
2019-05-02 11:29:43 +02:00
Daniel Friesel
fb2a06c59c
work: Not finding a train at the destination is usually not an error
2019-05-02 10:05:49 +02:00
Daniel Friesel
3de5de7db2
Finish public-facing exposed user status (opt-in)
2019-05-02 10:05:15 +02:00
Daniel Friesel
f0d61a4083
Prepare settings and templates for opt-in public travel status
2019-04-30 23:23:49 +02:00
Daniel Friesel
2d7c75f877
show imprint and version on landing page
2019-04-30 18:18:09 +02:00
Daniel Friesel
048767149e
use a separate table for registration tokens
2019-04-30 18:05:07 +02:00
Daniel Friesel
a57a24c2d6
add "active user count" munin command
2019-04-30 12:56:11 +02:00
Daniel Friesel
99aa3a4a0d
Implement deletion of inactive accounts
2019-04-30 12:48:23 +02:00
Daniel Friesel
867a5d4afb
allow users to change their mail address
...
Closes #6
2019-04-30 12:08:51 +02:00
Daniel Friesel
4ad1a1d20e
Move invalid input errors into common sub-template
2019-04-30 10:46:46 +02:00
Daniel Friesel
0226eba60a
maintenance: Also delete pending_passwords entries
2019-04-29 20:32:04 +02:00
Daniel Friesel
25d0530e86
Add password reset functionality
...
Closes #5
2019-04-29 20:12:59 +02:00
Daniel Friesel
6ff397c9b3
add database table/column comments
2019-04-29 10:25:17 +02:00
Daniel Friesel
fd6d12d355
Handle inconsistent data when calculating monthly/yearly stats
...
Closes #11
2019-04-28 22:33:09 +02:00
Daniel Friesel
d6e6c9992e
History: Only show months and years with logged journeys
2019-04-27 09:11:42 +02:00
Daniel Friesel
e500c2e537
work: Update route and messages
2019-04-26 22:12:34 +02:00
Daniel Friesel
a760274c7c
Invalidate stats cache after adding a new journey
2019-04-26 20:39:44 +02:00
Daniel Friesel
d77566bba4
add_journey: Fix incorrect return in case of unmatched station
2019-04-26 19:56:03 +02:00
Daniel Friesel
e07063c52c
Add manual journey entry
...
Closes #3
2019-04-26 19:53:01 +02:00
Daniel Friesel
2cae5a51d2
undo: Redirect to departure station when undoing a checkin
2019-04-25 09:22:54 +02:00
Daniel Friesel
aa0f9fdeea
show recent delay/qos messages in checked_in view
2019-04-24 14:58:08 +02:00
Daniel Friesel
b992a6dc75
$render(status => ...) is a special variable. derp.
2019-04-24 09:00:30 +02:00
Daniel Friesel
fd314e327d
maintenance, munin: Use journeys, not user_actions
2019-04-24 08:45:56 +02:00
Daniel Friesel
438319e63a
Bump API to v1
2019-04-24 07:34:41 +02:00
Daniel Friesel
906ec60ea2
export: Add in_transit field
2019-04-24 07:13:38 +02:00
Daniel Friesel
4c63efe4a1
Remove legacy action_type attributes
2019-04-23 23:04:04 +02:00
Daniel Friesel
3389ca2bcf
Fix checkin/checkout of cancelled journeys
2019-04-23 23:02:57 +02:00
Daniel Friesel
6c1cae86f4
Primitive auto-refresh of current journey status
...
Todo: Redirect user to destination station upon arrival
2019-04-23 22:27:13 +02:00
Daniel Friesel
ffaa0c44a7
Automatic checkout \o/
2019-04-23 21:30:31 +02:00
Daniel Friesel
e168d9cd39
Use one row per journey instead of split checkin/checkout entries
...
Whether a user is in transit or not is now determined by an entry in the
in_transit table instead of a dangling checkin.
All completed journeys are stored in the "journeys" table.
This does most of the work needed for automatic checkout. However, note that
the corresponding worker process is not implemented yet.
2019-04-23 18:08:07 +02:00
Daniel Friesel
812be4f0cb
Finish transition from DBI to Mojo::Pg
2019-04-22 13:42:41 +02:00
Daniel Friesel
c65232904f
Use Mojo::Pg for migrations
2019-04-22 12:30:05 +02:00
Daniel Friesel
2aece36803
Use Mojo::Pg for all remaining Controller and Helper logic
2019-04-22 12:11:22 +02:00
Daniel Friesel
4ed24c5565
Also use Mojo::Pg for user_status and user_travels queries
2019-04-22 11:11:14 +02:00
Daniel Friesel
fb3fda9736
More Mojo::Pg migrations
2019-04-22 09:58:39 +02:00
Daniel Friesel
b860b46e52
database migrate: Use truncate
2019-04-21 17:45:25 +02:00
Daniel Friesel
78b2d995ef
Ignore stations without coordinates in distance calculation
...
Reported by @marudor
2019-04-21 15:46:19 +02:00
Daniel Friesel
24d0943cdc
refactor set_status_query and get_token_query
2019-04-19 15:56:54 -04:00
Daniel Friesel
eff979081c
Add a registration test
2019-04-18 14:51:45 -04:00
Daniel Friesel
065c844fde
Refactor munin command to use Mojo::Pg
2019-04-17 13:36:01 -04:00
Daniel Friesel
8ad05720a2
Refactor user_actions insert/update/delete statements with Mojo::Pg
2019-04-17 13:35:38 -04:00
Daniel Friesel
ecedc6a4f2
Add a dumpconfig command, mostly useful to debug Docker setups
2019-04-17 07:11:04 -04:00
Daniel Friesel
c23334896d
Initiate transition to Mojo::Pg
2019-04-17 07:10:49 -04:00
Daniel Friesel
d9b82a4133
Sendmail: Actually print info log messages as documented
2019-04-17 07:07:05 -04:00
Daniel Friesel
e1e07d5811
Set version via config
2019-04-14 17:34:30 -04:00
Daniel Friesel
c19f239d1d
Do not print error when encountering an empty database
2019-04-14 08:44:27 +02:00
Markus Witt
ed397093c2
database setup: merge setup and migration code paths
2019-04-13 23:36:58 +02:00
Daniel Friesel
13dbcf8761
add explicit config toggle to disable sendmail
2019-04-13 18:56:06 +02:00
Daniel Friesel
4d413d06a3
"database" sub-command: Provide an exit status
2019-04-13 17:17:44 +02:00
Daniel Friesel
ee53b8f37e
Pass config to sendmail helper
2019-04-13 17:09:10 +02:00
Markus Witt
4bf62cf2a8
fix dbschema: add type for edited
2019-04-13 16:56:15 +02:00
Daniel Friesel
80a6317ac5
Use travelynx.conf for configuration and secrets
...
This avoids having to specify secrets in the environment, where they can leak
easily.
2019-04-13 12:18:26 +02:00
Daniel Friesel
61b1ef398e
maintenance: Fix stats table name
2019-04-13 11:52:26 +02:00
Daniel Friesel
1ee185d26b
work-in-progress manual journey entry. incomplete and not enabled yet.
2019-04-13 10:43:05 +02:00
Daniel Friesel
4ce9326495
Let us never talk of this again
2019-04-10 07:21:18 +02:00
Daniel Friesel
bba6721754
Allow journey editing, keep track of edited journey attributes
...
Provides a workaround for #2
2019-04-09 18:37:21 +02:00
Daniel Friesel
3ae6bda093
time travel is prohibited
2019-04-09 18:11:55 +02:00
Daniel Friesel
c0c7b1a589
Work-in-progress journey editor. Not ready for deployment.
2019-04-08 21:20:04 +02:00
Daniel Friesel
beb17acb84
Prepare forms for manual journey entry and editing
2019-04-07 20:20:37 +02:00
Daniel Friesel
ffee7177ac
Refactor history template, add yearly stats
2019-04-07 18:44:33 +02:00
Daniel Friesel
fa621418bc
drop cached statistics on checkout and journey deletion
2019-04-07 17:16:06 +02:00
Daniel Friesel
d0b6b7e052
Cache journey stats
2019-04-07 16:55:35 +02:00
Daniel Friesel
8096c33c00
Add a note about updating travelynx
2019-04-07 14:18:56 +02:00
Daniel Friesel
4e7f7a1d0e
detect development mode for travelynx_dev* databases
2019-04-06 21:21:35 +02:00
Daniel Friesel
c4a60375f4
Add a database command for database setup and migrations
2019-04-06 21:08:36 +02:00
Daniel Friesel
1405eb6ea3
Add password change form
2019-04-06 11:20:10 +02:00
Daniel Friesel
6630cdcd9e
checkout: Do not cardcode action type
2019-04-05 21:45:40 +02:00
Daniel Friesel
7f84288db5
checkin: Fix checkout path if currently checked into cancelled train
2019-04-05 21:45:05 +02:00
Daniel Friesel
45f409e3df
Fix export layout
2019-04-05 21:42:54 +02:00
Daniel Friesel
e2598df25b
Allow journey deletion
...
See issue #3
2019-04-04 18:26:53 +02:00
Daniel Friesel
b0ad209a23
Fix intentional typo in dev mode check (left over from testing)
2019-04-02 20:11:34 +02:00
Daniel Friesel
4787dbae15
move mailing to sendmail helper
2019-04-02 20:10:48 +02:00
Daniel Friesel
335ab8209f
statistics: Add interchange wait time and journey count
2019-04-01 20:28:06 +02:00
Daniel Friesel
8d843dc432
Fix another journey error
2019-03-31 19:38:21 +02:00
Daniel Friesel
10c995e15f
journey: show error for _all_ invalid IDs
2019-03-31 19:34:29 +02:00
Daniel Friesel
3ce1cfc55f
Select journeys by ID
2019-03-31 19:32:41 +02:00
Daniel Friesel
76f6922e82
maintenance: delete accounts which requested deletion
2019-03-31 17:58:05 +02:00
Daniel Friesel
8bf145b5c4
remove code related to undo-as-database-entry concept
2019-03-31 09:11:52 +02:00
Daniel Friesel
a8a3aa17ce
Perform undo by deleting the erroneous database entry
2019-03-31 08:45:51 +02:00
Daniel Friesel
341665c79b
sort journeys by departure time
2019-03-30 21:43:35 +01:00
Daniel Friesel
eb929811b2
add per-month links to history
2019-03-27 21:46:52 +01:00
Daniel Friesel
1aa5e786ed
add history per month
2019-03-27 21:20:59 +01:00
Daniel Friesel
87a3ceb0c1
remove sleep(1) workaround in checkout-before-checkin code path
...
The unique constraint on (user id, timestamp) is no longer present
2019-03-25 21:37:11 +01:00
Daniel Friesel
00efb2e320
Move maintenance script to Mojolicious command
2019-03-25 19:54:49 +01:00
Daniel Friesel
edf4642933
Migrate munin command
2019-03-25 18:17:54 +01:00
Daniel Friesel
a3688f64d5
Log SQL errors
2019-03-25 18:12:01 +01:00
Daniel Friesel
e2b78170a5
Postgres does not require decode() calls
2019-03-25 18:11:48 +01:00
Daniel Friesel
62929a570a
Remove unused login controller
2019-03-25 17:18:28 +01:00
Daniel Friesel
632f731940
Migrate to postgresql
2019-03-25 17:04:39 +01:00
Daniel Friesel
d114a6248e
more configuration options, more performance
2019-03-23 22:08:21 +01:00
Daniel Friesel
d0e1c5d1db
Explicitly enable autocommit
2019-03-23 21:41:23 +01:00
Daniel Friesel
1fe8ee8e6a
remove unused function
2019-03-23 19:10:04 +01:00
Daniel Friesel
e53ab5f781
move munin-stats to a mojolicious command
2019-03-22 21:18:03 +01:00
Daniel Friesel
98822bdbf7
perltidy
2019-03-22 16:57:24 +01:00
Daniel Friesel
32cc2f0f81
More refactoring
2019-03-22 16:56:49 +01:00
Daniel Friesel
21fe8a6990
Initiate transition to a Mojolicious MVC web application
2019-03-21 22:12:45 +01:00