Commit graph

350 commits

Author SHA1 Message Date
Daniel Friesel
7e92e6b5d4 retroactively add polylines to non-polyline journeys 2020-01-30 18:06:04 +01:00
Daniel Friesel
dadb0f6637 map: improve polyline duplicate detection 2020-01-29 19:54:32 +01:00
Daniel Friesel
993f6be6c9 map: set bounds on stations; move polyline feature to staging 2020-01-29 18:48:58 +01:00
Daniel Friesel
fca6a5df6c journey_sanity_check: handle duration == 0 2020-01-28 20:01:00 +01:00
Daniel Friesel
297718603c munin: return number of stored polylines 2020-01-27 20:33:35 +01:00
Daniel Friesel
b47a29d484 Store journey polylines in DB
Squashed commit of the following:

commit d60c7d3c98d88a8f5b0e3ced6c11b56053e1e44b
Author: Daniel Friesel <derf@finalrewind.org>
Date:   Mon Jan 27 20:22:46 2020 +0100

    fix bugs related to users without past journeys

commit 707fcc937ac7f6bc3dc29024273f5e74963f7f15
Author: Daniel Friesel <derf@finalrewind.org>
Date:   Mon Jan 27 20:19:14 2020 +0100

    work around Cache::file turning floats into strings

commit 55831121eb30bc30ed20134bbb48e4bee9772feb
Author: Daniel Friesel <derf@finalrewind.org>
Date:   Mon Jan 27 19:43:29 2020 +0100

    store journey polylines for later use

commit 1971d511037ff2b8fbc9699cb98e4f8fd51261e5
Author: Daniel Friesel <derf@finalrewind.org>
Date:   Sat Jan 25 16:49:48 2020 +0100

    set preliminary database schema for polyline storage.

    deduplication will follow at a later stage
2020-01-27 20:32:15 +01:00
Daniel Friesel
47171500b7 fix bugs related to users without past journeys 2020-01-27 20:25:02 +01:00
Daniel Friesel
cc25a56864 Api: Import: Set correct route key for add_journey 2020-01-26 16:04:08 +01:00
Daniel Friesel
21234707fc add_journey: allow up to 99 journeys per 24 hours 2020-01-26 15:31:01 +01:00
Daniel Friesel
d7c69acf41 import API: route -> intermediateStops 2020-01-26 10:50:21 +01:00
Daniel Friesel
ba62df34ea validate_journey: handle 0 timestamps 2020-01-26 10:48:14 +01:00
Daniel Friesel
c31254e996 import API: Add deprecated field, remove development check 2020-01-26 10:47:51 +01:00
Daniel Friesel
1723f8c1fb import API: invalidate stats cache after adding a journey 2020-01-26 10:08:46 +01:00
Daniel Friesel
ce6237b9fb status API: nextStops -> intermediateStops; documentation 2020-01-26 09:59:45 +01:00
Daniel Friesel
3e9807b393 map, journey view: handle renamed stations 2020-01-25 15:46:42 +01:00
Daniel Friesel
1028e47a35 map: list skipped journeys 2020-01-25 14:55:51 +01:00
Daniel Friesel
ee1285e8fa map: support multiple polyline groups with different colors 2020-01-25 14:41:33 +01:00
Daniel Friesel
8157f38854 JSON Status API: Add experimental and undocumented nextStops key 2020-01-23 18:18:50 +01:00
Daniel Friesel
75363c35cc work: Fix race condition
When a user changes their destination station or checks into a new train
while work is updating data for their in_transit entry, values for no longer
valid database entrie would be entered.
2020-01-23 17:14:01 +01:00
Daniel Friesel
cda8e53b34 has_wagonorder: Fix promise result mixup 2020-01-22 20:18:37 +01:00
Daniel Friesel
9232cdaa5f Return HTTP 404 for unknown journeys 2020-01-19 19:21:14 +01:00
Daniel Friesel
2764826da0 /journey/🆔 verify that id is numeric
As a side effect, this turns the response of GET /journey/edit (which should
never happen in the first place) from an exception into a 404 error (#36)
2020-01-19 19:15:53 +01:00
Daniel Friesel
243302b9bb Fix IOLoop crashes caused by using log->warning instead of log->warn
The issue manifested itself by the ioloop using 100%cpu without making any
progress.
2020-01-15 22:13:20 +01:00
Daniel Friesel
263fe6da63 do not store wagonorder error results in database 2020-01-15 21:48:50 +01:00
Daniel Friesel
e8b610f3e6 fetch trip ID when checked in 2020-01-08 18:42:17 +01:00
Daniel Friesel
172c8a3d00 move old station names to external JSON as well 2020-01-06 18:24:28 +01:00
Daniel Friesel
8a73a65656 Switch back to JSON::XS for decoding 2020-01-06 18:03:50 +01:00
Daniel Friesel
f99e069928 Move ICE names to a separate JSON file 2020-01-06 17:59:40 +01:00
Markus Heinrich
d1c005606c
remove unnecessary whitespace 2020-01-06 11:22:03 +01:00
Daniel Friesel
62b68b5010 map ICE train numbers to names where possible 2020-01-04 18:48:46 +01:00
Daniel Friesel
a9a7fa4492 Release Travel API 2019-12-31 13:27:14 +01:00
Daniel Friesel
61889603f7 Checkin API: error out if fromStation / toStation are ambiguous 2019-12-30 01:31:26 +01:00
Daniel Friesel
5435f34aa1 Set travelynx UserAgent for webhook requests 2019-12-29 23:06:51 +01:00
Daniel Friesel
6fde013585 Strip newline from version string 2019-12-29 23:06:39 +01:00
Daniel Friesel
f8436b9b4b perltidy 2019-12-28 15:01:21 +01:00
Knuspel
d8b46dff89 Added links for old/new station names. 2019-12-28 14:35:07 +01:00
Daniel Friesel
d9126b927f fix connections display 2019-12-26 22:48:50 +01:00
Daniel Friesel
fe6340abeb Handle undefined user data in conncetion suggestion with no previous journey
Closes #30
2019-12-26 21:39:24 +01:00
Daniel Friesel
f9f1eec499 Use EVA IDs instead of travelynx-internal station IDs. Not 100% tested yet. 2019-12-23 22:57:45 +01:00
Daniel Friesel
c6634b4097 maintenance: remove checkins which were entered more than 48 hours ago 2019-12-20 18:56:57 +01:00
Daniel Friesel
e7f278574f more travel API documentation 2019-12-20 18:33:59 +01:00
Daniel Friesel
11a2e94a04 travel API: more helpful errors on invalid input 2019-12-20 16:39:15 +01:00
Daniel Friesel
bd372d57e2 Travel API: Add "deprecated" field 2019-12-20 16:23:41 +01:00
Daniel Friesel
ebb7c22a4b checkin api: only set comment if checkin was successful 2019-12-20 16:18:32 +01:00
Daniel Friesel
e0a2b9aa26 save all the wagon orders we can get 2019-12-19 20:16:10 +01:00
Daniel Friesel
b0ddada5d1 munin: Add 'currently checked in' counter 2019-12-19 19:22:56 +01:00
Daniel Friesel
69f961a23c disable import and checkin API endpoints in production mode 2019-12-19 19:20:06 +01:00
Daniel Friesel
f895d34f31 undo: pass UID to invalidate_stats_cache 2019-12-19 18:18:26 +01:00
Daniel Friesel
c8695ecb1c travel, import API: Verify that payload is a hash 2019-12-17 20:41:36 +01:00
Daniel Friesel
934a9ac21a api/import: More helpful errors, fix "lax" support 2019-12-17 20:09:02 +01:00
Daniel Friesel
ae21896982 API: Add lax option 2019-12-17 20:01:39 +01:00
Daniel Friesel
9adec3ee8d remove debug output 2019-12-16 22:17:40 +01:00
Daniel Friesel
bb22915fc3 Fix has_wagonorder_p logic. request success ≠ result success! 2019-12-16 22:15:37 +01:00
Daniel Friesel
cabf159f46 Handle Berlin Ringbahn and other transfer-at-destination trains
Requires Travel::Status::DE::IRIS v1.38 (not released yet)
2019-12-15 13:42:11 +01:00
Daniel Friesel
7ae60f2ea4 Travel API: comment support 2019-12-14 23:46:36 +01:00
Daniel Friesel
46fc64de48 Add travel (checkin/checkout/undo) API 2019-12-14 21:53:23 +01:00
Daniel Friesel
5fe4174feb Add API entry point for journey import 2019-12-14 20:46:02 +01:00
Daniel Friesel
ba97fd2a3c do not insert duplicate wagongroups 2019-12-13 20:37:51 +01:00
Daniel Friesel
f6bff01f76 save wagongroups if available 2019-12-13 17:28:52 +01:00
Daniel Friesel
b211e0842a permanently store wagon numbers and types when available 2019-12-12 19:21:39 +01:00
Daniel Friesel
e6160d75de show wagon order for regional trains too, if available 2019-12-11 21:36:41 +01:00
Daniel Friesel
315a94affe allow a journey's cancellation status to be edited
Closes #27
2019-12-08 19:46:45 +01:00
Daniel Friesel
561ff4574b Allow status visibility to be limited to travelynx users 2019-12-08 11:06:17 +01:00
Daniel Friesel
402a5597f5 Account: unset public_comment when public_status is disabled 2019-12-08 10:32:22 +01:00
Daniel Friesel
07ee4d216a add hash tables for is_public and journey edited bitmasks 2019-12-08 10:29:25 +01:00
Daniel Friesel
fb126c6928 optionally show journey comment in public user status
Closes #19
2019-12-06 21:44:31 +01:00
Daniel Friesel
094c536eb4 Allow comments to be entered while still in transit 2019-12-06 21:40:51 +01:00
Daniel Friesel
119f0a6b7d Do not show cancelled journeys without substitute in passengerrights list 2019-11-27 21:09:49 +01:00
Daniel Friesel
0e2e8cd78e history map: Add checkbox to display manually added journeys 2019-11-27 18:26:15 +01:00
Daniel Friesel
4f0fee7783 show cancelled trains in connections list 2019-11-25 21:18:57 +01:00
Daniel Friesel
613f7d6087 Passengerrights: Fix typo 2019-11-24 20:32:24 +01:00
Daniel Friesel
b3b0a055b9 improve get_user_travels performance, most notably when rendering map
only create DateTime objects when needed
2019-11-24 20:29:52 +01:00
Daniel Friesel
8aced49bc3 Log unknown route entries on checkout 2019-11-22 17:59:50 +01:00
Daniel Friesel
57f47d2a3c allow routes to be edited after recording a journey 2019-11-20 17:41:21 +01:00
Daniel Friesel
b80613b8a8 allow route input when adding journeys manually (#26) 2019-11-19 19:46:39 +01:00
Daniel Friesel
13e59b3aa1 add journey: make realtime data optional (default to schedule data)
Closes #25
2019-11-18 21:02:57 +01:00
Daniel Friesel
783a540cb0 history map: show time range; handle users with no journeys 2019-11-16 23:47:18 +01:00
Daniel Friesel
e0187c5308 history map: Do not show route for manually added journeys 2019-11-16 23:46:45 +01:00
Daniel Friesel
cea4b71ca3 history map: skip duplicates earlier 2019-11-16 21:24:35 +01:00
Daniel Friesel
4f2eac9cef map_history: uniq_by_route did not consider the actual passenger route, scrap it 2019-11-16 16:03:03 +01:00
Daniel Friesel
733fe2d853 map: add legend, link to history map from history page 2019-11-16 15:57:09 +01:00
Daniel Friesel
77e4998708 move station -> location map to generic helper 2019-11-16 15:24:16 +01:00
Daniel Friesel
45f747961e map: add station names to points 2019-11-16 14:50:07 +01:00
Daniel Friesel
0bfb71d78d add map view of past journeys. unfinished and unreferenced. 2019-11-16 00:01:50 +01:00
Daniel Friesel
ead18f1212 Fix implicit checkout when checking in from a related station
Previously, realtime data was missing in this case
2019-11-12 19:13:38 +01:00
Daniel Friesel
663b4dc6d8 live update of next station via javascript 2019-10-29 21:18:46 +01:00
Daniel Friesel
f13b4755c7 route diff: remove debug output 2019-10-25 17:05:39 +02:00
Daniel Friesel
4ba82b51d3 Fix invalid geolocation list when less than 5 unique station names are nearby
This issue was introduced in 7c7b5e9f95 and
caused the client-side javascript code to crash
2019-10-19 16:47:33 +02:00
Daniel Friesel
780cdafcf5 show related stations in departure list 2019-10-19 10:15:18 +02:00
Daniel Friesel
aaaeec5c30 Travelynx.pm: Document the real cause of sched_arr-isa-DateTime bug 2019-10-06 16:32:58 +02:00
Daniel Friesel
a2d08bca26 derp 2019-10-06 11:02:29 +02:00
Daniel Friesel
e97c943154 Work around crash when a train has the same stop more than once 2019-10-06 10:55:09 +02:00
Daniel Friesel
6d45533c14 mark cancelled stops in checkin view 2019-10-04 23:27:45 +02:00
Daniel Friesel
1cb26e2053 handle substitute connections in passenger rights form 2019-09-18 20:21:16 +02:00
Daniel Friesel
8e6ee729e0 passengerrights: improve support for cancelled trains
To do: also do so in form generation
2019-09-18 18:19:54 +02:00
Daniel Friesel
aac8e2a0e1 Save scheduled arrival time for cancelled trains 2019-09-18 18:08:06 +02:00
Daniel Friesel
a9850d073e improve connection detection heuristic 2019-09-14 12:27:36 +02:00
Daniel Friesel
35cc18dfae add passenger rights heuristic for missed connections 2019-09-13 23:39:28 +02:00
Daniel Friesel
c891da97fb Explicitly set passenger rights form filename 2019-09-12 18:23:23 +02:00
Daniel Friesel
0822cfc993 add auto-generated passenger rights forms 2019-09-12 18:07:21 +02:00
Daniel Friesel
8c160f6854 Fix wagon order and direction display
This was broken by a database migration introduced in
commit f6d56d3134
2019-08-31 09:18:49 +02:00
Daniel Friesel
a40aa1936b Allow comments to be edited 2019-08-23 12:02:22 +02:00
Daniel Friesel
f6d56d3134 Add proper journey comment support 2019-08-23 10:34:02 +02:00
Daniel Friesel
e259a5e5dd Fix beeline distance calculation when start/stop has no geo-coordinates 2019-08-13 21:30:59 +02:00
Daniel Friesel
c9592e3f76 show boarding countdown in departure overview 2019-08-06 20:21:57 +02:00
Daniel Friesel
a48352ada4 also show train direction on departure 2019-08-03 12:35:47 +02:00
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