Commit Graph

2900 Commits

Author SHA1 Message Date
Dustin Carlino
90a1d2ff83 Initially launch with edits loaded remotely 2021-08-16 16:00:01 -07:00
Dustin Carlino
090256668e Get the HTTP POST working on wasm too 2021-08-16 14:22:57 -07:00
Dustin Carlino
01fbfd37ae Hook up ungap tool to YIMBYhoodlum, saving proposals.
(Native only, might need some work to get this working on wasm...)
2021-08-16 13:26:49 -07:00
Dustin Carlino
07e738905c Color intersections in the ungap tool, so the coloring looks less
choppy.

Remove the "click to zoom" -- it's too easy to accidentally do this.
2021-08-15 11:05:17 -07:00
Dustin Carlino
5287308f6f Fix broken web build.
- I accidentally enabled something to debug map serialization, which
  broke in wasm -- fast_paths not meant to be serialized there, only
  deserialized.
- makefile for interactive development copied directories slightly wrong

Also picking up a slight UI panel change to the bike network tool from
days ago.

Also probably time to [rebuild] [release]
2021-08-15 09:05:41 -07:00
Dustin Carlino
8101324fa5 Improve heuristics slightly for quick sketching a bike network on roads without parking, but with many lanes. 2021-08-12 10:31:59 -07:00
Dustin Carlino
d392c67c00 Start unit tests for the quick bike sketch tool, to understand how lane transformations work
(And fix bucketize tests, which just haven't been run in a bit)
2021-08-12 09:47:40 -07:00
Dustin Carlino
19134163dc Fix ungap crash -- no need to explain what changed/edited roads are. 2021-08-10 09:20:54 -07:00
Dustin Carlino
207f91a018 Thicken lines in unzoomed view; stop trying to show which side of the road has lanes. 2021-08-08 11:37:23 -07:00
Dustin Carlino
1787611f56 More ergonomic route sketcher:
- still zoom when hovering on points
- more clearly show nodes being dragged
2021-08-08 10:00:44 -07:00
Dustin Carlino
9b4107f061 Track when a map is edited and update things better, in both the game's edit mode and the new tool. 2021-08-08 09:22:32 -07:00
Dustin Carlino
a393f4f66c Merge view/edit mode 2021-08-07 21:33:51 -07:00
Dustin Carlino
b59419ea84 Just rearrange code, in preparation for merging edit mode and the main explore map mode 2021-08-07 10:35:54 -07:00
Dustin Carlino
22dfb616a3 Split the route sketching out to a dedicated state, instead of squishing into edit mode. The dropdown value changing and being able to suddenly open a proposal in the middle doesn't make any sense. 2021-08-07 10:21:18 -07:00
Dustin Carlino
fdea0c8a91 Sort edits better -- untitled's to the back of the line, please 2021-08-07 10:02:49 -07:00
Dustin Carlino
51367088df Adding a 'nearby houses and shops' feature to the bike network tool
Results have major issues, probably going to leave this out of v1.
2021-08-06 20:05:04 -07:00
Dustin Carlino
e9aaeb8675 Load/save edits from new tool 2021-08-06 15:42:35 -07:00
Dustin Carlino
fe4adb9691 A thin veil of mist... 2021-08-06 15:19:20 -07:00
Dustin Carlino
20b8e7f94a Show edits. Regenerate layers on changes. 2021-08-06 14:47:05 -07:00
Dustin Carlino
96c55a067b Magnify while editing. Not feeling skeletal commit messages... 2021-08-06 14:20:03 -07:00
Dustin Carlino
190eaef251 Swap a femur with a tibia. A questionable trade, but I'm calling it
progress.
2021-08-05 18:51:19 -07:00
Dustin Carlino
116198e863 Revive the ability to render in greyscale with the fragment shader, for quicker color scheme tuning... 2021-08-05 15:37:49 -07:00
Dustin Carlino
b080c70d83 Sinew is meant to stretch. 2021-08-05 14:06:11 -07:00
Dustin Carlino
85b46e2dfa Set the default width of a newly added lane better. #597 2021-08-04 16:46:05 -07:00
Dustin Carlino
4bc8421066 There's more than devils in these details 2021-08-04 16:32:26 -07:00
Dustin Carlino
3bddceb275 Skeleton hands can't grasp the tip of tools, but they can refract the
gaze of the living...
2021-08-04 15:56:44 -07:00
Dustin Carlino
78f37e68e9 Broad strokes for fleshless folks 2021-08-04 13:46:34 -07:00
Dustin Carlino
1585eed66f Don't keep jamming the same button for the skeletonvator, that doesn't help 2021-08-04 10:51:31 -07:00
Dustin Carlino
4935ea4fd6 Come take a ride on my skele-skeletonvator
(I am so sorry)
2021-08-03 22:33:06 -07:00
Dustin Carlino
82865b4e08 The skeleton is already feeling conscious about its appearance, so early 2021-08-03 22:08:10 -07:00
Dustin Carlino
46eb26fd5c The skeleton begins to cover some of its bones 2021-08-03 19:23:28 -07:00
Dustin Carlino
a12c894eb5 The skeleton is implored to peek at its innards... (but skeleton bones
aren't polished)
2021-08-03 19:23:28 -07:00
Dustin Carlino
c019304ee3 A skeleton emerges, from whatever sort of place skeletons lurk 2021-08-03 19:23:28 -07:00
Dustin Carlino
e687dd0391 Automatically collapse more degenerate intersections. Manually tested
around the university bridge. Still far to go, but progress.

Not regenerating yet.
2021-08-02 12:06:47 -07:00
Dustin Carlino
314bed3d83 Adjust traffic signal editor icons, since they blended into the new grey scheme. #715 2021-08-01 12:36:37 -07:00
Dustin Carlino
2ae6dea692 Upgrade to rust 1.54, fix new clippy warnings 2021-07-30 09:48:31 -07:00
Dustin Carlino
c98b4f293e Regenerate all maps after last few changes. Split out the actdev scripts to more easily regenerate actdev scenarios. This is necessary if map intersection IDs change, for instance.
Rainier Valley starts crashing in the simulation! Not sure why the
regression happened, disabling for now, will look into it later.
2021-07-29 14:19:46 -07:00
Dustin Carlino
4547395067 Move the cycleway snapping step to happen just before RawMap->Map, so we can play with it in the map_editor. #330 2021-07-27 11:20:57 -07:00
Dustin Carlino
163244ace9 Trim dead-end cycleway and service road stubs. Not regenerating yet, but
spot checked in Tempe and the UDistrict.
2021-07-27 11:13:47 -07:00
Dustin Carlino
de5b7e7d43 Adjust colors and tooltips for multi road editor. #718 2021-07-26 12:59:45 -07:00
Dustin Carlino
9366116c9b Add a location button to the road / multi road editor. #718 2021-07-26 12:50:20 -07:00
Dustin Carlino
c5e769d276 Start a very basic binary classifier for high-stress cycling road, with a layer to check it. Use this to filter the mode shift dashboard -- effectively revealing PCT-esque gaps in the infrastructure. #448, #494 2021-07-26 10:48:00 -07:00
Dustin Carlino
06429d0d5f In the mode shift dashboard, show roads that might be highly used by converted trips... but that're missing bike infrastructure. #448 2021-07-26 10:41:51 -07:00
Dustin Carlino
d03d1b1305
When you change a lane type, also adjust to the default width for the new type. #597 (#714) 2021-07-25 16:05:51 -07:00
Dustin Carlino
0bce76e172 Parallelize commuter pattern calculation, to speed up the new concave hull algorithm on native 2021-07-25 10:20:27 -07:00
Michael Kirk
760d75e12a
Use concave hull for neighborhoods (#716)
Also, for sidewalks, interpolate points every n-meters to get a better
concave hull.
2021-07-25 10:11:12 -07:00
Dustin Carlino
b45f9e0134
Create new lane types to express different types of buffers for prote… (#704)
* Create new lane types to express different types of buffers for protected bike lanes. They're only created manually right now, to explore rendering.

* Update planter rendering

* Update planter - simplify

* fmt after merge

* Fixing up existing rendering

* Add curb buffer

* Adjust stripes

Co-authored-by: Robin Lovelace <rob00x@gmail.com>
2021-07-23 11:31:36 -07:00
Dustin Carlino
c5210e9887 Actually, keep the broken list of ways, to manually run with backtraces 2021-07-20 11:36:53 -07:00
Dustin Carlino
8dff4c5da5 If we fail to merge a road from debug mode, rollback the change to the JSON list of ways to merge. #654 2021-07-20 11:21:38 -07:00
Dustin Carlino
d10d8ceb33 Clean up code and regenerate everything with new the consolidation algorithm... #654
Phinney gridlocks again; 68daa6884a was
too ambitious. Otherwise all fine!
2021-07-19 15:07:10 -07:00
Dustin Carlino
68daa6884a Phinney and Wallingfjord don't gridlock right now, so opt them back into prebaked results 2021-07-18 22:58:22 -07:00
Dustin Carlino
9b40186c9c Avoid crashing when editing a stop sign near a tiny road. #707 [rebuild] [release] 2021-07-18 14:20:24 -07:00
Dustin Carlino
98978fa600 Remember which dashboard was open, and return to it when pressing 'more
data.' This makes it slightly less jarring to click on a specific trip
in a table or matrix, then return to the dashboard. Future work will
also remember filters/pagination of individual tables, maybe! (Since the
dashboards change over time, this might be weird.)

This also required adding a proper way to pick the dashboard from two of
the full-screen map dashboards. Otherwise, somebody would pick them and
get stuck!
2021-07-18 14:14:19 -07:00
Dustin Carlino
f6a94e8a58 Allow DrawWithTooltip to return custom data instead of string labels.
CloneableAny revived from e35c69f6f3
2021-07-18 14:14:19 -07:00
Dustin Carlino
ceff520ff4 Use the unedited map for elevation when viewing before edits. Fixes a crash when turns don't exist. 2021-07-18 14:14:19 -07:00
Dustin Carlino
2354ffa59d Don't make cells with 0 entries clickable 2021-07-18 14:14:19 -07:00
Dustin Carlino
942f2292fc Steps towards clicking cells in the problem matrix to explore trips with differences. #600
- Add optional clickable labels to DrawWithTooltips
- Wire up problem_matrix to remember the list of trips associated with
  each cell
- When clicking a cell, just open one arbitrary example trip
2021-07-18 14:14:19 -07:00
Dustin Carlino
d142b4fbd0 Refactor lots of the places walking along a PolyLine with a step size
Verified no behavioral change using the screenshot test. (Which only had
the driveway diff from b3ce53aa5f)
2021-07-16 14:17:08 -07:00
Dustin Carlino
9828006bcc Avoid a crash when editing very short roads. #703 2021-07-16 12:53:37 -07:00
Dustin Carlino
16f7796c68 Comparing paths before/after edits requires the unedited map.
Previously, this was done through an incredibly complicated dance of
loading the map file again when needed. This was slow (especially on
web!), made the InfoPanel API have a bizarre edge case, and even had
some way of crashing if you open a trip panel in some situation.

Rip all that nonsense out. The unedited map can just be cloned before
applying the first edit.
2021-07-15 23:01:35 -07:00
Dustin Carlino
ff310af3d1 Consistently follow rules for whether a lane can be edited. #597
Allow sidewalks, shoulders, and center turn lanes to be edited now.
Still don't touch service roads or light rail.
2021-07-15 18:21:49 -07:00
Dustin Carlino
b3ce53aa5f Draw building driveways per zoomed-in road, rather than as one map-wide batch. Otherwise, every single edit to road width needs to redraw all driveways. This doesn't scale with larger maps!
When zoomed in on just a building but not its road, this means the driveway won't show up until the road is in view. Acceptable trade-off.
2021-07-15 18:05:04 -07:00
Dustin Carlino
10fdaa8e92 estimate_duration already knows the mode, from the PathRequest 2021-07-14 12:38:19 -07:00
Dustin Carlino
9c3fe9e229 Add filters to the mode shift table. #448 2021-07-14 12:31:54 -07:00
Dustin Carlino
03d21c4fe9 A first mode-shift experiment: create a table of trips showing expected
time to drive/bike, the elevation profile, and the distance. #448
2021-07-14 12:17:03 -07:00
Dustin Carlino
149df630d4 Fix web build -- have to WASM-guard the debug tool that calls the importer 2021-07-13 23:00:45 -07:00
Dustin Carlino
38be4c0f68 Fixing small style/clippy problems and kicking off a [rebuild] [release] 2021-07-13 22:52:56 -07:00
Michael Kirk
7bf3f03251 add y-axis to aggregate duration table 2021-07-13 22:51:18 -07:00
Michael Kirk
43a3f2cdc2 round duration strings to largest unit 2021-07-13 22:51:18 -07:00
Dustin Carlino
14a0e005c8 Make sliders trigger Outcome::Changed, except for scrollbars. Manually
verified this doesn't break or slow down existing uses of sliders.
2021-07-13 12:36:54 -07:00
Dustin Carlino
e20ce2d041 While modifying a scenario, show how many trips match the filter.
(Except not updating the filter when changing sliders yet...)
2021-07-13 10:44:20 -07:00
Dustin Carlino
3d5955c2b6 Hardcode infinite parking option for a few maps. #688
This is an interim option until we decide whether this setting belongs
on the map, the scenario, or something else.
2021-07-13 09:03:07 -07:00
Dustin Carlino
aa5baa57de Get less confused when switching back&forth between two debugged maps 2021-07-11 15:21:59 -07:00
Dustin Carlino
e750048141 Improve intersection merging workflow by hiding popup msg for successful imports #654 2021-07-11 13:41:29 -07:00
Dustin Carlino
2224dccda9 Add a tool in the main UI to try to merge junctions. #654
It maintains a JSON file of ways to merge that the importer also uses.
For maps fast to import, this is the nicest workflow. Unlike map_editor,
turns and trimmed roads can also be checked.
2021-07-11 13:19:00 -07:00
Dustin Carlino
2d16f5d878 Get the crazy pathfinding revamp to work
- initialization order
- reusing node ordering and applying edits

Importing, editing the map, and the basic scenario seem OK! --skip_ch
breaks, because of the lack of serialization
2021-07-10 17:14:10 -07:00
Dustin Carlino
da704b4546 Extend the parking thought bubbles to handle people climbing steep hills.
(And some clippy fixes)
2021-07-10 17:14:10 -07:00
Dustin Carlino
184593094e Also round up the X axis for the elevation plot, and lower the number of
line plot labels by default
2021-07-09 09:23:56 -07:00
Dustin Carlino
2fad01d729 Use a fixed maximum for the Y scale of the elevation profile, based on a
map's max height. This helps compare elevation profiles before/after map
edits.
2021-07-09 09:23:56 -07:00
Dustin Carlino
c5113b868c Let one vehicle attempt to lane-change around another vehicle on every
lane that they're stuck behind them. Only record a risk exposure event
the first time, but let passing happen anywhere. #382

Also add scenario name to PrebakeSummary, to disambiguate the Poundbury
results.
2021-07-07 21:20:06 -07:00
Dustin Carlino
fffd323cb4 Refactor the monstrosity that is App setup 2021-07-07 11:26:55 -07:00
Dustin Carlino
2d1368fe13 Revive some form of the ancient A/B test mode, where two maps can be swapped quickly. Using this for more rapidly testing intersection consolidation algorithms. #654 2021-07-07 10:14:48 -07:00
Dustin Carlino
ed59a8a386 Reimport all actdev scenarios, and restore Poundbury prebaked data. This was temporarily broken by a JSON format change (a-b-street/abstr#29) 2021-07-06 15:29:51 -07:00
Dustin Carlino
964cc23df8 Improve 3-way signal timing by explicitly specifying crosswalks. This
fixes a very dramatic problem in the Green Lake map.

Regenerating everything...

Also added total trip time to the prebaked summary, to get a quick sense
if a change net helps or hurts and have a record in version control.
2021-07-06 14:37:50 -07:00
Dustin Carlino
fe49a093e6 Add a revert button to the road editor. #597 2021-07-06 13:00:11 -07:00
Dustin Carlino
3a53380c46 Don't block after launching JSON viewer. Often I want to find an ID in
the JSON somewhere, then warp to it.
2021-07-06 11:49:44 -07:00
Dustin Carlino
3db4c827b8 Draw building outlines in unzoomed view also. It's a subtle effect, but important in dense areas like Sao Paulo. 2021-07-06 09:53:13 -07:00
Dustin Carlino
f37e71236f Some fixups to the regenerated data from the past two commits:
- handle when the equiv_pos of a driveway gets too close to the edge of
  another lane
- make the updater workflow handle files from S3 that're a bit older
- remove pathfinding_avoiding_roads
- strip out old vehicle capping from map edit JSON, then fix up
  proposals
- delete old capping API example
- temporarily give up on phinney; it starts gridlocking
- add broadmoor proposal link in-game
2021-07-05 17:51:40 -07:00
Dustin Carlino
a0dcc255c3 Rip out all congestion capping code. #325
This collaboration is abandoned, the code slows down refactoring, and
if we started this idea again today, it'd be better to do it from
scratch anyway.

Regenerating everything.
2021-07-05 11:15:31 -07:00
Dustin Carlino
bae86bf885 Add a debug tool to visualize equiv_pos, before trying to improve this for curvy roads. 2021-07-05 10:16:39 -07:00
Dustin Carlino
6039063d28 Add a debug tool to dump JSON for different objects and open up with an external viewer. [rebuild] [release]
And fix some clippy problems
2021-07-04 15:32:49 -07:00
Dustin Carlino
95ffa62218 Fix the unparking position. When we exit a driveway in EITHER direction,
we need to adjust the start position to account for the vehicle's
length.

Also add a very convenient debug tool to understand positions along
lanes.

This probably breaks static blockages; I'll check into that next.
2021-07-04 14:34:20 -07:00
Dustin Carlino
bf316fa99c Fix a crash in the trip info panel. If you happen to open a trip of a
car waiting to spawn, its total path distance is briefly 0.

Also silence the lane-changing info for the moment, until work resumes
there.
2021-07-03 08:28:16 -07:00
Dustin Carlino
160d65ca28 Try loading a built-in proposal with --edits, if player data is missing. 2021-07-02 13:14:08 -07:00
Dustin Carlino
6c1c6a3235 Fix crash when changing speed limit. At some point, we started changing lane IDs for every road edit and never updated this. Closes #685 2021-07-02 11:54:59 -07:00
Dustin Carlino
4fd86c8a41 Entering edit mode is slow on large maps, because clearing the simulation recreates parking state for every building. Parallelize it to speed it up at least a bit. 2021-07-02 11:47:05 -07:00
Dustin Carlino
866ecd5f88 Fix a bug in efaf6085e4 that was using walking paths for vehicles. Now prebaked data doesn't budge.
And add some more timing to demonstrate why editing a single lane in a
huge map is so slow...
2021-07-02 11:25:02 -07:00
Dustin Carlino
f4c8a508da Keep a JSON file with a summary of prebaked simulations, to more easily detect regressions with broken trips. 2021-07-02 10:07:37 -07:00
Dustin Carlino
4f00c8d2bb Phinney runs without gridlock again, so re-enable it. Pretty sure
f57278e9cd fixed it.
2021-06-30 16:51:03 -07:00
Dustin Carlino
efaf6085e4 Prepare for exiting driveways on the off-side by switching to
specialized PathRequest constructors
2021-06-30 12:35:22 -07:00
Dustin Carlino
137e9a0c2c Fix up some places affected by the f64 serialization:
- offstreet_parking_length in importer config
- backwards compatibility for map edits
- fixing up the baked-in proposals
- working around a few PolyLine bugs that happen with the new rounding
- Don't regenerate actdev scenarios yet -- the upstream JSON format is
  out of date, will have to fix separately.
2021-06-30 06:35:42 -07:00
Dustin Carlino
44171500b7 Get the Green Lake map to complete without gridlock!!!
- Allow blocking the box around two complex intersections in Green Lake.
  This makes the vehicle behavior much more realistic there, by visual
  inspection.
- Amp up offstreet parking to 10 per building. I noticed the simulation
  completes easily with --infinite_parking. This is an approximation of
  that. We make really bad guesses about carpooling and the amount of
  parking available around here, so effectively just remove it from
  consideration for now.
2021-06-23 13:56:42 -07:00
Dustin Carlino
8c2b84c37c Keep the trip info panel open when the user clicks before/after and has to initially load the unedited map. #684 2021-06-23 12:52:18 -07:00
Dustin Carlino
9f22d4893a Fix a crash with time-warping to the past when the map is edited. See #684 for an explanation.
Verified working on native. It should also be fine on web -- loading the
unedited map has to be a whole separate state because of web IO in the
first place.
2021-06-23 10:29:10 -07:00
Michael Kirk
321c9d9c40 Label contingency matrix axes 2021-06-23 10:13:51 -07:00
Dustin Carlino
d8cdfaba05 Make the multi-road editor only check and edit lanes_ltr, not speed limit. The Aurora cycletrack edit stopped matching because the speed limit happens to change along Aurora. We can think through a better UX to handle both, but I suspect most use cases will focus on lane configuration. #597 2021-06-20 10:00:05 -07:00
Dustin Carlino
e6e6fb267d Reset current selection after editing multiple roads. This sometimes crashes if the selected lane gets deleted or assigned a new ID. Fixes a crash trying to make the West Green Lake cycletrack. #597 2021-06-20 09:50:33 -07:00
Dustin Carlino
8f199177f5 Upgrade to Rust 1.53
- arrays are now iterable directly
- switch to using BTree{Set,Map}::retain!
- a round of clippy
- regenerate scenarios and prebaked data; not sure why, but there's a
  diff
2021-06-17 23:04:35 -07:00
Rémi Lauzier
1a4b997818 Fix some clippy warnings 2021-06-16 16:21:35 -07:00
Dustin Carlino
d42c1310b0 CLI flag to start in the KML viewer for convenience 2021-06-16 11:14:17 -07:00
Dustin Carlino
01a2dfe215 Create a new panel to show how trips are distributed through the day.
Refactor some of the sliding window code along the way.
2021-06-14 17:32:18 -07:00
Dustin Carlino
d272b745f2 Add a simple Python script to run grid2demand. I need to produce a scenario for Tempe, and it's also useful for #608 2021-06-14 11:00:02 -07:00
Dustin Carlino
96aa09edd0 Small steps towards matching more GMNS signals: #626
- toss a loading screen around it
- allow jump to ID in edit mode
- break down failure types more
2021-06-13 11:59:37 -07:00
Dustin Carlino
59597708ec Draw polylines as arrows in the KML viewer; it's pretty much always useful to see the direction of the raw data 2021-06-13 11:32:02 -07:00
Dustin Carlino
500f14869f Le Fournil special: don't redraw KML text constantly; it was sluggish for signal timing. 2021-06-13 11:26:08 -07:00
Dustin Carlino
76aba75082 Update links to docs after some reorg in the other repo 2021-06-12 13:38:38 -07:00
Dustin Carlino
972f5b0187 Lower the priority of service roads when placing stop signs
Regenerate all data. Wallingford started gridlocking due to this change;
plowing ahead and will follow up and fix it.
2021-06-11 09:40:44 -07:00
Dustin Carlino
18ff0eefc0 Store Turns per Intersection, instead of a massive BTreeMap. #368
Minimal file size savings, but substantial runtime improvement!
2021-06-11 09:40:44 -07:00
Dustin Carlino
cabee219db Fix some crashing spinners; the rust compiler inferred the wrong numeric type. #674 2021-06-10 18:21:24 -07:00
Dustin Carlino
fc4f0a8c8e Some Tempe fixes:
- Stop importing rail in Tempe. Not simulating anything on it yet, and it complicates gridlock. #672
- Update the GMNS timing.csv import based on slight format change. #626
2021-06-09 16:35:46 -07:00
Dustin Carlino
d827673ace Periodically free memory in the middle of screenshot test, to avoid
running out on my current machine. Fixes #671.

Finally regenerate screenshots for the first time in ages... just
blindly accepting everything, because the slightly different screen size
means everything was slightly shifted down.
2021-06-09 14:31:40 -07:00
Dustin Carlino
889c500eb1 Force geojson to use geo-types feature everywhere. This lets different
binaries properly share workspace dependencies.

See
https://www.reddit.com/r/rust/comments/nvd6y7/common_crates_in_cargo_workspace_recompiled_due/
for the full story behind this mess.

I'm going to keep repeating this process until I get game and importer
to share dependencies again.
2021-06-09 09:48:53 -07:00
Dustin Carlino
a38125ad2c Adjust multi road editor more -- custom cursor icons for select/unselect 2021-06-03 15:23:55 -07:00
Dustin Carlino
8721c4f6d9 When the desktop version is old, have a button to go directly to the releases page to grab a new one 2021-06-03 09:14:17 -07:00
Dustin Carlino
bf2e4be2a2 Adjust road editor based on real live coffeeshop feedback:
- "x/y similar segments" to relate to explanatory text about lane
  configurations below
- "edit multiple" -> "apply to multiple", since you have to change the
  road first
- start with all candidates selected
2021-06-03 09:02:12 -07:00
Dustin Carlino
b1150c9524 Export raw CSV data about problems per trip, for a data analyst to explore possible dataviz in their more familiar tools 2021-06-02 19:23:48 -07:00
Dustin Carlino
c9e4f754e1 Fix a crash in the problem map layer, caused by checkboxes getting out of sync 2021-06-02 16:26:04 -07:00
Dustin Carlino
ef4ea01c71 Add a button to import all traffic signals map-wide from a timing.csv file, reporting the total number of successes and failures. #626 2021-06-02 12:18:24 -07:00
Dustin Carlino
d2ecab44a7 Be sure to validate signals before committing the results, since GMNS imports aren't validated upfront. #626 2021-06-02 11:40:54 -07:00
Dustin Carlino
cd66d7209e Automatically fill out crosswalks to the GMNS signal import. #626 2021-06-02 11:13:30 -07:00
Dustin Carlino
dc1ce15c30 Heavily penalize GMNS snapping if the bearing doesn't match the movement. #626
University/Mill looks great now.
2021-05-28 15:56:04 -07:00
Dustin Carlino
30a317cf94 Make the KML viewer be able to inspect multiple overlapping objects. Useful for GMNS timing.csv files. #626 2021-05-28 15:21:07 -07:00
Dustin Carlino
4227371bbe Rewrite the GMNS signal movement snapping algorithm. Instead of
independently picking the best match for "from" and "to", it considers
all vehicle movements, and minimizes "turn_type_cost * (from_cost +
to_cost)", using a hint about turn type to correct for geometry
mismatches at consolidated intersections. #626

Gets better results in Tempe at University and Mill, at least.
2021-05-28 14:55:53 -07:00
Dustin Carlino
5aa00955f9 Clean up the timer.parallelize API, getting rid of the weird enum to
toggle how many CPUs to thrash. We always use all of them, except for
one case, where a separately named method is more clear. Also make that
variation use all but 1 CPU, instead of just half.
2021-05-27 17:47:22 -07:00
Dustin Carlino
53430319b1 Filter out trips between the same place. Regenerate all Britain background scenarios. Fixes #664 2021-05-27 07:57:25 -07:00
Dustin Carlino
455399b90e Collapse degenerate intersections between cycle+footpaths. At various
times in the past, I've also tried doing this for other roads, but wound
up reverting for reasons only git remembers. But it seems like an
obvious win for bike paths; especially around Seattle, the ways are
split because of all of this raised curb data we're ignoring anyway.

Tested manually around Montlake.

Finally regenerating all data... Only Phinney breaks. One for tomorrow.
2021-05-26 22:27:29 -07:00
Dustin Carlino
3a68e5677f Allow all vehicles to use bus-only lanes that also happen to be turn lanes. #555
There are some caveats with the implementation commented inside.
Verified manually in Montlake -- down to just 122 cancelled turns!

Still not regenerating...
2021-05-26 19:13:14 -07:00
Dustin Carlino
e4a95b604e Fix Rainier Valley gridlock, fallout from #664.
https://www.openstreetmap.org/changeset/105381427 mapping a turn lane is
the fix, preventing crazy U-turns using the service road. Not sure how I
missed that lane when looking here before. I made the edit to .osm
locally instead of grabbing fresh data for all of Seattle.
2021-05-26 15:02:20 -07:00
Dustin Carlino
9fc79b1089 Use explicit start/endpoints for trips in scenarios. This is necessary
for people that leave one border, then re-enter a different one. #664

Alternative considered: insert a dummy remote trip between the two
borders. We used to do something like this at non-trivial code
complexity expense and having to explain the trip in the UI.

Regenerated all scenarios and prebaked data.

- Modest file size increase, as expected. Montlake scenario goes from
  1.3MB to 1.5, downtown from 37MB to 43MB, all Seattle scenarios from
  280MB to 327MB
- Eyeballed a few of the previously broken trips; they work now!
- Montlake goes from 3127 cancelled trips to just 302!
- No new gridlock, except in Rainier Valley -- disabling that for now
- I discovered missing validation in Poundbury for no-op trips between
  the same building. I'll filter those out and restore prebaked results
  there in a followup.
2021-05-26 14:30:01 -07:00
Dustin Carlino
3b375078b1 Prebake data until the simulation is done, not just until midnight. That
way, we have trip stats for people starting near the end of the day, and
we stop incorrectly showing failed trips when comparing.

Prebaked data: no change in size (245MB)
Montlake: 3135 "cancelled" trips -> 3127
Lakeslice: 6766 "cancelled" trips -> 6647
2021-05-26 10:22:09 -07:00
Dustin Carlino
c95a0b0f64 Handle another case for creating multiple left/right turns at an intersection. Use the new validation for connectivity at an intersection and give up on using OSM turn restrictions in some cases.
39 problems in Montlake down to 33, but regressions on some of the LCing unit tests...
2021-05-25 20:24:11 -07:00
Michael Kirk
93c56f4ded make clippy happy 2021-05-25 16:06:39 -07:00
Michael Kirk
cba8ba761b update drawn problems when switching before/after 2021-05-25 16:02:26 -07:00
Michael Kirk
11a49e7c55 Add "arterial crossing" risk for pedestrians.
Also:clarify "Complex" vs "Large" intersection, which is now ambiguous.
2021-05-25 16:02:26 -07:00
Dustin Carlino
2f71751929
Add support for tooltips on disabled buttons. Use this to explain a f… (#661)
* Add support for tooltips on disabled buttons. Use this to explain a few pecularities of the road editor UI.

* Consistent tooltip storage
2021-05-24 15:05:32 -07:00
Dustin Carlino
cc344af231 Add a file-picker UI to import JSON scenarios easily 2021-05-24 14:55:11 -07:00
Dustin Carlino
13bb434249 Highlight the lane card when hovering on the lane in the map. #597
[rebuild] [release]
2021-05-23 10:06:45 -07:00
Dustin Carlino
a6e707eb8a Upgrade more dependencies.
(Can't upgrade winit yet, because glutin doesn't have a crates.io
release that's caught up)
2021-05-22 16:36:57 -07:00
Vinzent Steinberg
a1899e29f8
Update dependencies (#656)
* Update dependencies

* Use github for polylabel, to make all dependencies use geo 0.18, not a mix of 0.18 and 0.17

* Downgrade lyon to avoid a crash

Co-authored-by: Dustin Carlino <dabreegster@gmail.com>
2021-05-22 16:23:06 -07:00
Dustin Carlino
d85cd7f797 Per feedback in #659, change the road editor to automatically compress
edits to a road before entering the zone editor. Users can use edit
mode's undo if they made a mistake. It's more fluid than prompting.

Use the same auto-compress flow to allow switching to different roads,
without leaving the road editor
2021-05-22 16:02:03 -07:00
Dustin Carlino
541c82a601 Add missing icon for shared left turns, preventing a crash 2021-05-21 14:34:04 -07:00
Dustin Carlino
d7d45b9052 Enforce parking lanes requiring a driving lane; the simulation crashes otherwise. #597
The enforcement is a bit more invasive, because there's a few ways of
getting into a bad state.
2021-05-21 14:34:04 -07:00
Dustin Carlino
644935114d Enforce max 2 sidewalks and max 2 parking lanes per road. It was working
for adding new lanes, but not changing existing lanes. #597
2021-05-21 14:34:04 -07:00
Dustin Carlino
256d280f50 Delete the old lane editor. Jump straight into the new road editor, focused on a particular lane. #597 2021-05-21 14:34:04 -07:00
Dustin Carlino
548acc1024 Add access restrictions button to new road editor. #597
The design in Figma treats it like a dropdown, but I think we still need
the dedicated UI to draw the bounds of the access-restricted zone.
2021-05-21 14:34:04 -07:00
Dustin Carlino
a5ae881be5 Start to dismantle the old lane editor by moving the old bulk road
selector into debug mode. #597

Previously, it was used both to search/replace lane types and to
select roads, then dump them in various formats. Just preserve the
latter behavior.
2021-05-21 14:34:04 -07:00
Dustin Carlino
ef90721741 Fix missing study area polygons on the web. The refactor to Polygon::from_geojson_file introduced filesystem IO to the geom crate. Instead, we need to be explicit about how we do file IO.
Also fix some clippy errors
2021-05-20 14:33:04 -07:00
Dustin Carlino
922ec40a61 UX fixes for the multi-road editor:
- Disable the 'edit multiple' button if the current road hasn't been
  changed yet
- Start with no other roads selected
- Add a "select all" and "select none" button
- Show the count of segments in the panel
2021-05-19 10:26:54 -07:00
Dustin Carlino
289475d894 Simplify multiple road editor:
- only handle roads with the same name
- use different colors for the 3 states
2021-05-19 10:26:54 -07:00
Dustin Carlino
a528409233 Create a UI to apply edits from one road to others with matching configurations. #597 2021-05-19 10:26:54 -07:00
Dustin Carlino
28afbe1224 Add hotkeys for lane types in the new road editor, but only for modifying an existing lane. 2021-05-19 10:26:54 -07:00
Dustin Carlino
11df7f79c7 In the travel times dash, retain the scroll state when toggling filters 2021-05-17 18:19:06 -07:00
Michael Kirk
94501e4699 size horizontal-divider WRT its parent size, not absolute window size 2021-05-17 18:19:06 -07:00
Michael Kirk
4e8136d4ff delay chart on "travel times" 2021-05-17 18:19:06 -07:00
Dustin Carlino
1e3ed254a9 Reorganize canvas settings, so that they can actually be saved. #216 2021-05-17 13:12:45 -07:00
Dustin Carlino
1fe60eb8bb Automatically save/restore user settings. #216
On a best-effort basis, of course. If the format changes, just start
fresh.
2021-05-17 10:34:13 -07:00
Dustin Carlino
d33a88281f Handle fixed column names in timing.csv. #626 [rebuild] [release] 2021-05-16 11:12:39 -07:00
Dustin Carlino
ca400ae61b Add a file picker for GMNS timing.csv. #626 2021-05-16 11:03:05 -07:00
Dustin Carlino
d6539f7449 Refactor file picker 2021-05-16 10:51:03 -07:00
Dustin Carlino
72d0e53fdc Make ChooseSomething take a FnOnce callback, so we can avoid cloning at a few call-sites 2021-05-16 08:41:37 -07:00
Dustin Carlino
7a262fb25f Set the gameplay mode correctly when loading from a savestate, so that prebaked results actually are loaded correctly 2021-05-15 17:11:31 -07:00
Dustin Carlino
27da792df6 cargo fmt 2021-05-15 16:28:50 -07:00
Vinzent Steinberg
ac62dde925 Prefer turbofish over temporary binding when collecting 2021-05-15 14:24:08 -07:00
Vinzent Steinberg
9d17faa878 Prefer slices over reference to owned type 2021-05-15 14:24:08 -07:00
Dustin Carlino
7767da39b9 Add fire icon to tutorial 2021-05-15 14:00:55 -07:00
Dustin Carlino
913f7b770f Load prebaked results when restoring a savestate from the command line 2021-05-15 09:19:41 -07:00
Dustin Carlino
1edbca6509
Refactor most of the places extracting polygons from geojson files (#644) 2021-05-15 09:05:28 -07:00
Vinzent Steinberg
446a21696d
Fix most clippy warnings (#646)
* More conventional spelling of acronym identifiers

* `new` -> `new_state`

* Remove redundant field name

* Remove needless `collect`

* `to_controls` -> `make_controls`

* Simplify long if statement

* Fix module inception

* Simplify chained if let

* Return directly instead of creating a binding

* Disable clippy warning about `borrow` method

Implementing the `Borrow` trait instead would result in excessive type
annotations.

* Fix most remaining clippy warnings

* Allow clippy::type_complexity

* Fix bad merge from web editor

* Run cargo fmt

* Suppress large_enum_variant warnings

* Rename FYI state to ShowMessage

* Fix upper_case_acronyms warnings

Co-authored-by: Dustin Carlino <dabreegster@gmail.com>
2021-05-14 17:31:32 -07:00
Michael Kirk
9fc2505df8
touch up "travel times" screen (formerly "trip summaries") (#645)
* touch-up scatter plot

* Bespoke bucket durations for faster/slower, rename duration summaries

* codify secondary text color per theme

* clarify axis labels apply to bar boundaries

* address clippy
2021-05-14 16:19:00 -07:00
Dustin Carlino
29c881ffc3 Switch from cargo +nighty fmt to the stable cargo fmt. Whatever edge-case formatting was happening with stable has been fixed 2021-05-14 08:39:51 -07:00
Dustin Carlino
efd10ac9b0 Fix build errors not caught by merge conflicts from #642 2021-05-14 08:37:46 -07:00
Vinzent Steinberg
fd3b0e2a14
Fix compilation failures and most clippy warnings (#642)
* abstutil: Fix compilation failure

* map_gui: Fix compilation

* traffic_signal_data: Fix compilation failure

* map_model: Fix compilation failure

* abstutil: Fix doctests

* abstio: Fix most clippy warnings

* abstutil: Fix most clippy warnings

* collisions: Fix clippy warning

* convert_osm: Fix clippy warnings

* sim: Fix most clippy warnings

* geom: Fix clippy warnings

* kml: Fix clippy warnings

* map_model: Fix most clippy warnings

* fifteen_min: Fix clippy warnings

* game: Fix many clippy warnings

* Disable some noisy clippy warnings

* headless: Fix clippy warnings

* importer: Fix clippy warnings

* map_editor: Fix clippy warnings

* map_gui: Fix clippy warnings

* osm_viewer: Fix clippy warnings

* parking_mapper: Fix most clippy warnings

* popdat: Fix clippy warnings

* santa: Fix clippy warnings

* sumo: Fix clippy warnings

* traffic_seitan: Fix clippy warning

* updater: Fix clippy warnings

* widgetry: Fix clippy warnings

* tests: Fix some clippy warnings

* Fix compilation on stable Rust

* Simplify unwrapping

* Make use of `Entry` more readable

* Fix formatting

* Fix code that was broken in the refactoring

* Apply cargo +stable fmt

* Fix code that was broken in the refactoring, second try

* Remove `Default` impls that are equivalent to `new`

* Remove obsolete clippy wrapper

* Avoid turbofish

* Prefer `unwrap_or_else` over allowing `clippy::or_fun_call`

* Remove redundant `into_iter`

* Fix typo

* Prefer `&& false` over commenting code out

* Fix some clippy warnings

Co-authored-by: Dustin Carlino <dabreegster@gmail.com>
2021-05-14 08:32:56 -07:00
Michael Kirk
0d758c74f1 Polish contingency matrix / risk screen
- better color contrast
- don't color neutral/no-change buckets
- show "-" rather than "0" for cells which have been filtered out
- bespoke, non-linear, bucket durations for x-axis
- less buckets for y-axis
- better copy for tooltips
- label axes
- show empty chart rather than no chart
- remove "delays" which aren't really risks
- clarify that risk visualizations are just for bikes for now
    - remove filter UI and only include bikes
2021-05-13 13:35:04 -07:00
Dustin Carlino
0ed933aa9c Create a contingency matrix showing how number of problems change per
trip duration. #600
2021-05-13 12:36:20 -07:00
Michael Kirk
cfbd58cdce shrink down jump-to menu w/ exact sizing 2021-05-12 17:39:19 -07:00
Michael Kirk
d185195bba toggle "draw" while warping rather than before
This is helpful if you forget to check the box, or if you want to take a
quick peak of what's going on in the map while warping without stopping
the warp.
2021-05-12 17:39:19 -07:00
Michael Kirk
ec82b728dc hotkeys for proposal navigation 2021-05-12 17:39:19 -07:00
Dustin Carlino
2c5e0dae03 Fix static trait object method warning that we're now hitting in Rust 1.52
The <dyn ...> syntax is gross, but I don't think there's a way to avoid
this without defining a differently named empty struct and putting the
static method on that
2021-05-11 12:31:58 -07:00
Dustin Carlino
1e5771897f Fix lakeslice gridlock; S Charles and Rainier has a tiny driveway causing low throughput due to cars not wanting to block the box 2021-05-11 10:55:01 -07:00
Dustin Carlino
5bac09bf2a Restore popdat.bin and Seattle scenarios and prebaked data. For whatever reason, the GDAL transformation is returning coordinates in a flipped order on my new machine.
Lakeslice prebaked disabled, because it starts gridlocking around 5pm.
I'll fix separately.
2021-05-11 09:34:40 -07:00
Dustin Carlino
1bcbe057f0 Use more realistic lane widths during importing. #597 2021-05-10 20:10:23 -07:00
Dustin Carlino
775b1fcfc4 GMNS through movements are always protected. #626 2021-05-08 11:05:49 -07:00
Dustin Carlino
cc007d0c6e Adjust the signal editor panel layout based on Figma mocks. Many issues
left, but this seems good enough to push forward for now. Can go
through a proper review next week.
2021-05-08 10:57:25 -07:00
Dustin Carlino
6e3040f5a2 Rewrite the snapping algorithm for the GMNS signal importer, based on the new example data. #626 2021-05-07 13:45:42 -07:00
Trevor Nederlof
4080d0d130
Add craft and office to import and add/reorg AmenityType (#638)
* Add craft and office to import and add/reorg AmenityType

* Remove bike rental/parking and rename BikeShop to Bike

* add in leisure and tourism tags, add more categories to AmenityType and remove lesser used tags

* add dependency on strum and strum_macros and removed some manual code for text display of Enum and Enum into string

* include lock file, fix color of buildings for amenity layer, fix formatting and use orders
2021-05-06 08:43:52 -07:00
Dustin Carlino
8826af31cb Make the CSV extra shapes parser handle WKT linestrings, so we can
visualize the GMNS signal timing data easily. #626

And fiddle with the KML viewer UI a bit to make it easier to inspect the
movement polylines.
2021-05-05 13:40:53 -07:00
Dustin Carlino
81f9ee5a1b Change the KML/external shapefile debug tool to use a real file picker 2021-05-05 11:09:56 -07:00
Dustin Carlino
8fa0f97d37 Highlight just the lane or the whole road, not both. #597 2021-05-05 08:26:41 -07:00
Dustin Carlino
488c9ffe68 Start to import GMNS timing.csv just based on line-strings. #626 2021-05-04 10:34:34 -07:00
Dustin Carlino
f400663b01 Better choices for lane width. #597 [rebuild] [release] 2021-05-02 09:11:21 -07:00
Trevor Nederlof
b430a3acc2
Add default behavior for driving, non driving and sidewalks (#634)
for #597
2021-04-30 14:35:13 -07:00
Dustin Carlino
d3c035ffb3 Remember the last map loaded, and start the game with that, unless using --dev or some other override 2021-04-30 12:36:24 -07:00
Dustin Carlino
03fade1aa7 Change the tooltip wording 2021-04-29 14:23:08 -07:00
Dustin Carlino
a11cd866c2 Add tooltips to the signal editor. 2021-04-29 14:23:08 -07:00
Dustin Carlino
5186957ce4
Store a generic type in the Spinner widget. (#631) 2021-04-29 11:35:22 -07:00
Dustin Carlino
8c5f603c39 Pick default scenarios better, and describe some of the UK scenarios in the picker.
And the tiny Widget::evenly_spaced_row refactor from the previous PR
2021-04-28 18:01:08 -07:00
Michael Kirk
4a18c64701
tweaks to get closer to the design (#630) 2021-04-28 17:59:23 -07:00
Dustin Carlino
7f2dafb489
Get closer to the Figma card style for road editor buttons. #597 (#627) 2021-04-28 17:39:21 -07:00
Dustin Carlino
71e559b6d5 Compress all of the road edits when we confirm, same as the signal editor. And add a cancel button. #597 2021-04-27 17:54:36 -07:00
Dustin Carlino
a4584f7427 Add new lanes more intelligently: #597
- Don't allow adding >2 parking lanes or sidewalks
- Set the initial position and direction based on the new lane type and
  existing confguration

Much more work needed here, but this is some progress.
2021-04-27 15:35:54 -07:00
Dustin Carlino
e917cb7772 Refactor internal panel management of road selector UI 2021-04-26 14:47:20 -07:00
Dustin Carlino
bba48ec654 For the new road editor, also select lanes on the map directly. #597 2021-04-26 14:41:08 -07:00
Dustin Carlino
36427d163c Fix the traffic signal challenge. It shouldn't reset the simulation after editing!
And fix up the score panel a bit
2021-04-26 10:49:15 -07:00
Dustin Carlino
97b41b9e19 Make the deploy_actdev script work again 2021-04-24 13:57:00 -07:00
Dustin Carlino
55127924ea Fix more junctions in Tempe, and opt it into the screenshot testing 2021-04-23 18:04:00 -07:00
Dustin Carlino
298d322054 Record the time of a problem, and add a filter for that in the layer. #600
Also change the dot map color to purple, start with the heatmap by
default, and add the count to the panel.

Regenerate prebaked data
2021-04-23 10:15:52 -07:00
Dustin Carlino
46f7d7e099 Add a layer to show where on the map problems are occurring, either individually or as a heatmap. #600 2021-04-23 10:15:52 -07:00
Dustin Carlino
bc591c1b5f Plumb back the widget name in Outcome::Changed 2021-04-22 13:09:32 -07:00
Dustin Carlino
babdc9e384 Let TextBox know its own name, and clean up the API for creating them 2021-04-22 13:09:32 -07:00
Dustin Carlino
ff039f017a Let Spinner know its own name 2021-04-22 13:09:32 -07:00
Michael Kirk
e8e678f4ca remove repeated choice from "speed". use nicer method 2021-04-22 10:43:09 -07:00
Dustin Carlino
8722c102b9 Fix bug moving lanes left/right where the width of different lanes
wasn't getting updated, due to the code-path handling the old case...
2021-04-22 10:22:06 -07:00
Dustin Carlino
2112736a1f Polish UI of new road editor 2021-04-22 07:57:23 -07:00
Dustin Carlino
e0871d9db2 Undo/redo in the new road editor 2021-04-22 07:57:23 -07:00
Dustin Carlino
8dbb1a47e5 Refactor how edits are applied inside the new road editor 2021-04-22 07:57:23 -07:00
Dustin Carlino
f781d3e74f Delete the temporary old road editor. I didn't expect the new editor to become usable so quickly.
And enable the new editor for everyone, with the experimental warning
2021-04-22 07:57:23 -07:00
Dustin Carlino
9aa5d97271 Select the newly created lane 2021-04-22 07:57:23 -07:00
Dustin Carlino
1fb1253e97 Refactor speed_limit_choices 2021-04-22 07:57:23 -07:00
Dustin Carlino
6cd869e494 Temporary way to move lanes left/right 2021-04-22 07:57:23 -07:00
Dustin Carlino
acfe095a3f Handle editing just the width of one lane 2021-04-22 07:57:23 -07:00
Dustin Carlino
c73ceebd35 MVP of Yuwen's new road editor! 2021-04-22 07:57:23 -07:00
Dustin Carlino
38f5da4f80 Make the native download progress screen show how many files are left. 2021-04-21 17:01:51 -07:00
Dustin Carlino
3b9a7cfa1f Add a basic per-file progress bar for native downloads! 2021-04-21 17:01:51 -07:00
Dustin Carlino
d644bf3b5f Debug tool to change color schemes without recompiling 2021-04-20 17:03:55 -07:00
Dustin Carlino
ee78644089 Download files before starting a challenge mode or Santa level, if needed 2021-04-20 16:10:17 -07:00
Dustin Carlino
7176994a87 Refactor CarID to be a struct, not a tuple
And regenerate prebaked data from a few commits ago
2021-04-19 15:16:48 -07:00
Dustin Carlino
bc2a21ca89 Refactor some methods in Traversable 2021-04-19 14:50:51 -07:00
Dustin Carlino
c62cf1c90c Refine the detection for when a car wants to over-take a bike, and expose it in the UI as a problem. #81, #600 2021-04-19 14:44:42 -07:00
Dustin Carlino
478a146350 Display a caution icon for large intersection crossings, and add tooltips for all drawn problems. #600 2021-04-19 11:40:39 -07:00
Dustin Carlino
6380bd74ec Refactor a concept of per-trip Problem. #600, #170
The simulation analytics tracks problems per trip. The previous
measurements for delay at intersections is one case, and the new
cyclist-crossing-large-interection event is another. I removed the lane
speed measurement, since it's kind of redundant with the delay.

Consolidated the reporting in the trip info panel / drawn on the route.
2021-04-19 11:40:39 -07:00
Dustin Carlino
6f5a7b980a Track when a pedestrian or bike crosses a large intersection. Start to
show it in individual trip info panels. #600
2021-04-19 11:40:39 -07:00
Dustin Carlino
31070ccadf Tutorial fixes after a UX study:
- Fix a typo
- Draw a star on the car that the player is supposed to follow
- Move the message panel to the left when pointing to the minimap and
  layers
- Add button icons to the message box to really emphasize what we're
  pointing to
2021-04-18 11:14:01 -07:00
Dustin Carlino
3a6b8f2919 Make the 'no sidewalks' layer understand how shared cycle+foot paths look right now. 2021-04-16 16:22:48 -07:00
Michael Kirk
bc3a121cd6 introduce --minimal_controls option for screen recordings 2021-04-15 19:22:37 -07:00
Dustin Carlino
d41482febd Fix running external tools on Windows [rebuild] [release] 2021-04-15 11:29:29 -07:00
Dustin Carlino
5bcd2a5526 Fix the grid2demand import, when repeatedly importing different files. 2021-04-15 08:58:21 -07:00
Dustin Carlino
179daa5d25 Clean up commented out code from #170. Going to re-evaluate how problems along a trip are shown in the UI anyway. 2021-04-14 17:25:58 -07:00
Dustin Carlino
79fdf01690 Remove the fade overlay from the tutorial. It makes some of the arrows pointing at stuff hard to see. If we just use it on message screens without an arrow, it looks odd to appear/disappear.
Also prep a mid-week [rebuild] [release]...
2021-04-14 13:05:54 -07:00
Dustin Carlino
4a06a7285b Change the grid2demand file picker to be async. #605 2021-04-14 09:54:04 -07:00
Dustin Carlino
1e94ba9b06 Update some tutorial wording from Yuwen's designs.
Internally, overhaul some of the crazy tutorial code to just use Text,
not Vec<String>.
2021-04-13 16:56:39 -07:00
Dustin Carlino
ae6414abd5 Rename building path->driveway, since path is such an overloaded term. 2021-04-13 15:13:36 -07:00
Dustin Carlino
9923c1270a Repair parking lot connections after road widening. #597 2021-04-13 15:13:36 -07:00
Dustin Carlino
b9a9e8e5c5 Redraw building paths when needed 2021-04-13 15:13:36 -07:00
Dustin Carlino
7852e1d2b8 Import scenarios from grid2demand's input_agents.csv directly from the UI! #603 [rebuild]
For reference, the input_agents.csv -> abst input is ported from
https://github.com/asu-trans-ai-lab/grid2demand/blob/main/src/demand_to_abst_scenario.py
2021-04-13 13:39:50 -07:00
Dustin Carlino
6b30bffc43 Recreate the road in the quadtree when modifying width. #597 2021-04-10 11:56:05 -07:00
Dustin Carlino
10255c2835 Recalculate intersection geometry when road width changes. #579
No effect on the road geometry yet, though...
2021-04-10 11:56:05 -07:00
Dustin Carlino
e8b7019ef7 Use LaneSpec in map edits, letting width of each lane be modified too. #597 2021-04-09 14:35:49 -07:00
Dustin Carlino
14609ab157 Fix lane geometry after changing the number of lanes. #597 2021-04-09 14:35:49 -07:00
Dustin Carlino
584c1be9e0 A humble start to deleting lanes. #597 2021-04-09 14:35:49 -07:00
Dustin Carlino
c6906f6153 Change Vec<Lane> to BTreeMap<LaneID, Lane> to prepare for
adding/deleting lanes. #597

Not regenerating all maps yet. Haven't evaluated performance impact yet.
2021-04-09 14:35:49 -07:00
Dustin Carlino
2a89b68121 Create a temporary dev-only UI for modifying the number of lanes in a road. #597
It crashes when actually trying to change the number of lanes, as
expected.
2021-04-09 14:35:49 -07:00
Dustin Carlino
da3272e2ee Convert the alternative path debugger to use directed roads, not lanes. #555
This lets us clean up some of the old pathfinding v1 code, removing some
duplicate code!

Also improve that debugger to show a different cost for each side of the
road. The cost to turn around and reach a building on the other side of
the road may be high, so this really makes the debugger more
understandable.
2021-04-07 10:58:48 -07:00
Dustin Carlino
ad5c573a27 Change congestion capping to pathfind avoiding roads, not lanes. #555
Capping only happens when you edit a road and introduce a per-hour
vehicle cap.
2021-04-07 10:04:00 -07:00
Dustin Carlino
9263e95e83 Only show elevation line plot in the trip info panel for walking and biking trips. It's just noise to see it for somebody walking to their car. #82 2021-04-07 09:42:25 -07:00
Dustin Carlino
ce9e98782e Poundbury once again completes without gridlock! 2021-04-06 17:03:24 -07:00
Dustin Carlino
196af2a1f4 Refactor: store Direction for a Lane, simplifying Lane->DirectedRoadID. #555 2021-04-06 17:03:24 -07:00
Dustin Carlino
8cfb377dfa Unbreak the cancelled/unfinished trip tables. The start/end filters were
only added to finished trips, but the other tables also tried to grab
the filter.
2021-04-06 10:39:27 -07:00
Dustin Carlino
1e3708f9b4 Remove UberTurnGroup and the prototype of editing a cluster of traffic
signals using uber turn groups. #555

This was an old half-baked experiment for handling a cluster of traffic
signals.  Since then, merging intersections (by manually tagging them in
OSM for now, maybe automatically in the future) has proven better.

Removing this old code in preparation for pathfinding v2.
2021-04-05 10:05:27 -07:00
Dustin Carlino
df7d1080d9 Update trip start/end icons 2021-04-03 11:26:01 -07:00
Dustin Carlino
cc4bcae1cb Color the 'more finished trips' tooltip green, to be consistent with other good/bad colors 2021-04-03 10:37:24 -07:00
Michael Kirk
4f81f186af
embed mode and reworked web build system (#592)
* root element id from Settings, respect element size

* Plumb assets root via settings

* adapt crates to new wasm api

* more FileLoader cleanup

* use tsc bin from node_modules

* avoid spurious unlink errors

GNU Make considers the src/*/wasm_pkg targets as intermediate build
files and attempted to `rm` them. We can stop that my marking them as
`.PRECIOUS`

https://www.gnu.org/software/make/manual/html_node/Special-Targets.html

* `open` doesn't work on Linux

We could do something with xdg-open, but meh, not worth having platform
dependent logic for this.

* fix typo, clarify instructions

* make server compatible with older python install on linux

* revert change - we dont want to include music on web

the leading "-" means exclude a subdir of an included dir.

* better wrap of comments

* fix misfire in copy/pasted comment

* update docs
2021-04-01 19:31:02 -07:00
Dustin Carlino
20de91bae7 Also refactor walking speeds. #82 2021-04-01 15:03:20 -07:00
Dustin Carlino
892afddcd5 Refactor uses of biking speed between the sim and pathfinding, in preparation for incorporating incline. #82
(This was a bigger mess than I expected, so worth doing separately.)
2021-04-01 11:52:25 -07:00
Dustin Carlino
3c601b50c1 Clean up the trip table rectangular selection UI: #574
- explicit clear/apply buttons
- show start/end filters on the trip table preview
2021-03-31 16:35:56 -07:00
Dustin Carlino
0e86b94408 Make the start/end rectangular filter actually apply to the trip tables. #574 2021-03-31 16:35:56 -07:00
Dustin Carlino
c89e918fec Create a dummy widget to stash generic state in a Panel, and use it to plumb around the rectangular regions to the trip table filters. #574
The filter still doesn't make use of the regions yet.
2021-03-31 16:35:56 -07:00
Dustin Carlino
dff923b3e6 Make a tool to select a rectangular region. No way to pass back the
results yet. #574
2021-03-31 16:35:56 -07:00
Dustin Carlino
7f4f83d4e0 Refactor all of the places drawing start/goal markers on the map, and actually line up the tip of the icon with the position. 2021-03-31 14:23:16 -07:00
Dustin Carlino
afb962f73b Use the start/end markers in the interactive trip spawner. 2021-03-31 13:44:19 -07:00
Dustin Carlino
3f1abda5e2 Use chevrons, not arrows, to point uphill, per discussion with Yuwen. #82 2021-03-27 09:25:06 -07:00
Dustin Carlino
ef7cbdcf48 Generalize LinePlot to handle any kind of X-axis, not just time. #82
Also split out some common code to a plots module. Fan charts and
scatter plots are still hardcoded to use Time as the X-axis and
duplicate lots of code, but this is a step towards refactoring
everything.
2021-03-26 12:07:21 -07:00
Dustin Carlino
73a31d1633 Add a line plot showing the elevation of the route taken by pedestrians
and cyclists. Add support for Distance as the Y axis of a LinePlot. #82
2021-03-26 12:07:21 -07:00
Dustin Carlino
00323925f3
Add a layer showing elevation using contours. #82 (#589) 2021-03-26 11:53:41 -07:00
Dustin Carlino
7a565f114f Adjust the steep streets panel: #82
- Move the steepest grade under the legend
- Use an arrow icon in the text
2021-03-26 11:40:01 -07:00
Dustin Carlino
fac9f8159d
Change the color scheme of the steep streets layer. #82 (#588) 2021-03-25 16:44:32 -07:00
Dustin Carlino
f0dba4b65c In the path cost debugger, show all roads with a cost less than the chosen route 2021-03-25 15:30:54 -07:00
Dustin Carlino
92d3a890ea
Express all pathfinding costs in units of seconds. #82, #494 (#587)
This is simpler to reason about, allows the penalty for entering a zone
or taking an unprotected turn to be expressed in terms of a time
penalty, and is a step towards adjusting bike/foot routing for elevation
data.

When we later add things like "safety/quietness" for cycling, maybe we
can switch to using a (time, quietness) tuple, and transform into a
single number with a linear combination parameterized by that agent's
preference for time/safety. This change is compatible with that future
idea.

There are behavior changes here, particularly for zones and unprotected
turns. No new maps start gridlocking, and in fact, Rainier starts
working again.
2021-03-25 12:59:36 -07:00
Dustin Carlino
4ef04f5bd1 Change road incline calculations to be stored in RawMap. Previously, the
"rise / run" calculation used the trimmed road center-lines, which don't
match up with the elevation at each original intersection point.

Also handle infinity in the output and reduce the resolution of the
query from every 1m to every 5m.

Regenerate all maps due to the map format change. Try bringing in
elevation data for all of Seattle using the LIDAR source, since
the data quality assessed in eldang/elevation_lookups#12 seems to be
similar, and LIDAR is way faster than contours.
2021-03-23 22:47:52 -07:00
Dustin Carlino
e57cacaab4 Rename pathfind/driving -> pathfind/vehicles to reflect bikes using it too, and likewise for driving_cost 2021-03-22 16:34:46 -07:00
Dustin Carlino
7d2e8409e8 Implement no-through-traffic zones instead by adding a huge cost to crossing into the zones. #555, #574
Regenerate all maps. Gridlock-wise, Rainier and Poundbury broke, but
Wallingford started working again. Acceptable cost for a change this
useful; I'll work on fixing those maps later.
2021-03-22 16:34:46 -07:00
Michael Kirk
b6c5ee38c2 clarify "time difference" chart
- bar height represents accumulated time, not trip count
- buckets are from duration *before* edits
2021-03-22 15:59:20 -07:00
Dustin Carlino
75b39c7b35 Add a debug tool to show the pathfinding costs to each node. Trying to figure out why a new impl of pathing through zones isn't working as expected. 2021-03-22 12:03:50 -07:00
Michael Kirk
b07ac626d4 fixup proposal "tabs" 2021-03-22 12:00:43 -07:00
Michael Kirk
761e2e6412 new tab styles for info panels 2021-03-20 14:33:54 -07:00
Dustin Carlino
cb4cd1b13a Don't recalculate failed paths in the freeform trip spawner. Makes
debugging #574 easier.
2021-03-19 17:48:37 -07:00
Michael Kirk
af079c24e6 rename txt.add -> txt.add_line 2021-03-19 17:48:30 -07:00
Dustin Carlino
58ee3175ac Add a new Seattle map focused on the Arboretum, for #574, along with
prebaked data for the baseline (because it doesn't gridlock, without any
interventions needed!) and a proposal for opening up Broadmoor.
2021-03-19 17:24:11 -07:00
Dustin Carlino
dcf2bf0422 Apply the Text::from(str) pattern in a few more places.
Found using: vi `./rgrep.sh 'Text::from(Line'|grep -v fg|grep -v
big_h|grep -v displa|grep -v big_m|grep -v small|grep -v second | grep
-v underl|grep2files `  (Some of those are local bash aliases)
2021-03-19 16:56:18 -07:00
Michael Kirk
affd582093 more concise Text / tooltip() 2021-03-19 16:48:54 -07:00
Dustin Carlino
2bebd8a2c9 Allow specifying go active scenario when launching actdev. cyipt/actdev#150 2021-03-19 16:25:37 -07:00
Dustin Carlino
edfb745bb2 Change the default color scheme to day mode. Behaviorally, this rolls out the change for the OSM viewer, 15m app, parking mapper, and map_editor. 2021-03-19 15:26:35 -07:00
Michael Kirk
cbad223a90 clarify scenario buttons & style link as link 2021-03-19 12:43:32 -07:00
Michael Kirk
9da9c9b092 extract "percent" function, put header text first 2021-03-19 11:56:22 -07:00
Michael Kirk
cf14515110 CR: use already-defined transition 2021-03-19 11:56:22 -07:00
Michael Kirk
9a2276c66d Code review: prefer unreachable to todo for checkins 2021-03-19 11:56:22 -07:00
Michael Kirk
3d5876a4fd fixup! convert trip tables to new tabs 2021-03-19 11:56:22 -07:00
Michael Kirk
e493c02d83 convert trip tables to new tabs
The GenericTable machinery lost a lot of it's utility now that we have
proper tabs. I've left a couple of free functions to be shared, and
inlined the remaining simple functionality.
2021-03-19 11:56:22 -07:00
Michael Kirk
e39059644c fixup! wip apply tabs to TimeWarp 2021-03-19 11:56:22 -07:00
Michael Kirk
1d57bb5f25 wip apply tabs to TimeWarp 2021-03-19 11:56:22 -07:00
Michael Kirk
7f00154ae6 style tabs 2021-03-19 11:56:22 -07:00
Michael Kirk
1c2231aced fix missized icon 2021-03-19 11:03:40 -07:00
Dustin Carlino
a0461e990d Workaround an issue with how the length of roads is measured and related
to the elevation measured at the original intersection point. #82

Upload montlake, downtown, and phinney with elevation data, as an
initial demo.
2021-03-18 19:04:15 -07:00
Dustin Carlino
ca4e04b6e9 Add tooltips to the elevation layer 2021-03-18 18:25:11 -07:00
Dustin Carlino
b61291d905 Revive the elevation layer in the UI. Add some sanity checking around the inclines we're assigning to roads, but also, I realized a problem with how the elevation lookup not matching the trimmed roads. #82 2021-03-18 18:19:41 -07:00
Dustin Carlino
e841024025 Use the outline style for the before/after trip comparison button. 2021-03-18 10:20:50 -07:00
Dustin Carlino
a390f72a1c Change how the original map is loaded in the UI for checking the original route. Fixes this on the web.
This also solves the static case of #361.
2021-03-18 09:54:43 -07:00
Michael Kirk
119b0e8b7e fix mismatched icon sizes in challenge screen 2021-03-17 19:06:43 -07:00
Michael Kirk
546599e4f9 Replace ButtonImage with Image 2021-03-17 19:06:43 -07:00
Michael Kirk
463c48411a jump to time: slider width corresponds to traffic chart 2021-03-17 19:06:43 -07:00
Michael Kirk
c1dfdc4550 jump to time: theme traffic curve 2021-03-17 19:06:43 -07:00
Michael Kirk
b60a6d3d96 theme disclosure icon 2021-03-17 19:06:43 -07:00
Dustin Carlino
4b2eedd2f2 Only show the info panel or the layer panel, never both at the same time. 2021-03-17 14:15:13 -07:00
Dustin Carlino
1773782975 Place layer panels and info panels in the same place, on the left side of the screen. Simplify layer code, now that we don't need to align relative to the minimap. 2021-03-17 14:15:13 -07:00
Dustin Carlino
a0c82088b9 Use our native download function instead of external curl command from the importer. #523
This forces the main importer to include tokio and propagate async a
bit. That seems worth it.

Also removed the quiet param from the download helpers; we always want
progress.
2021-03-17 10:29:28 -07:00
Dustin Carlino
e071b39553 Add a button to save scenarios to a file if they're generated. This is useful for avoiding the performance hit of regenerating them again. 2021-03-17 10:02:52 -07:00
Dustin Carlino
9f2737b2b5 Don't offer the census-based scenario outside of the US or on oneshot test maps, since it won't work. 2021-03-16 19:03:03 -07:00
Michael Kirk
e0aa2ad279 fix jitter as agent meters update 2021-03-16 18:28:50 -07:00
Michael Kirk
264f1f939f minimap controls: agent toggles and meters into one row
Some ancillary changes:

Made the GeomBatchStack public and extracted the ImageSource
functionality from ButtonBuilder to Image.
2021-03-16 18:28:50 -07:00
Michael Kirk
810c89eeb1
meter shows "finished trips vs baseline" instead of time (#565) 2021-03-15 17:10:08 -07:00
Dustin Carlino
0d8cc27961 Move per-gameplay panels from top-center to top-right. Left align time. #551 2021-03-12 17:48:35 -08:00
Dustin Carlino
b6536122e0 Fold the score panel used by the 2 challenge modes into the gameplay mode-specific top-center panel. #551 2021-03-12 17:48:35 -08:00
Dustin Carlino
229f2d5dca Fix merge 2021-03-12 17:48:35 -08:00
Dustin Carlino
d7d994066a A few adjustments to the consolidated panels: #551
- invert the histogram icon colors
- stretch out the time bar
- put the time bar above the finished trips counter
2021-03-12 17:48:35 -08:00
Dustin Carlino
880a293093 Make the time panel height override stickier. Otherwise it jumps height quite noticeably when pausing/resuming. #551 2021-03-12 17:48:35 -08:00
Dustin Carlino
59e9735318 Force actdev top panels to have the same height. #551 2021-03-12 17:48:35 -08:00
Dustin Carlino
da1c133a67 Adjust actdev panel layout to work on narrow screens. #551 2021-03-12 17:48:35 -08:00
Dustin Carlino
69b248cd66 Move agent counters to the minimap, removing the top-right agent panel entirely. #551
Adjust the tutorial for these changes.
2021-03-12 17:48:35 -08:00
Dustin Carlino
5b386af6ba Move most things out of the top-right agent meter panel to reclaim more horizontal space. #551
1) Move finished trips to the top-left time panel.
2) Move "tentative results" and "recording trips" controls (only
   occasionally used) to the top-left time panel.
3) Move the "more data" button to the minimap.
2021-03-12 17:48:35 -08:00
Dustin Carlino
8ac62fed47 Trying out some UI changes suggested by Martin:
- Increase day mode panel opacity to 95% to help text legibility
- Combine the time/speed panels, and remove the sunrise/sunset icons
- 4 mode colors matching actdev, also changing night mode residential
  buildings
2021-03-12 17:48:35 -08:00
Dustin Carlino
95b1d884cf Rename Map::new to be more clear that it should only be used in non-UI
tools. There's one place in the UI that doesn't work on the web!
2021-03-12 06:38:17 -08:00
Dustin Carlino
522b902453 Improve the traffic signal timing UI. There's a choice between fixed and
variable timing, but currently you have to remember to toggle it; the
two extra spinners get ignored otherwise. The new version is still
confusing, but I think it's an improvement.
2021-03-11 11:39:58 -08:00
Dustin Carlino
8be24bf007 Use AsRef<str> in more widgetry methods, getting rid of &format at many
call-sites. #253

To make some of these work, changed Label to store a String. Ultimately
it gets transformed into Text, so we need to allocate eventually.
2021-03-11 11:29:18 -08:00
Dustin Carlino
f0de4e4583 Don't use Bezier curves for right/left turns at tiny intersections. They
wind up looping back on themselves in a nonsensical way, causing
vehicles to visually glitch when moving through.

This was started in 081819d86b, but it
used to gridlock 2 maps. All the recent roundabout fixes seems to have
resolved those! And adjusting offstreet parking for two maps.

But wallingford does regress; plunging forward for now.
2021-03-10 15:58:16 -08:00
Dustin Carlino
bf8f51ae05 Consistently count hours for a time. There was some disagreement between
recorded analytics and code that later summed things up, making the
relative throughput layer more confusing than it is already. #85
2021-03-10 13:59:38 -08:00
Dustin Carlino
957d08e8b9 Add tooltips to the relative throughput layer, to get exact before/after counts of the data being displayed. #85
(The before counts are still bucketed on the hour mark)
2021-03-10 13:24:56 -08:00
Dustin Carlino
f0b522f89a Figure out which files are in the us/huge_seattle DataPack more consistently. This'll now work from the proposals screen. 2021-03-10 12:40:55 -08:00
Dustin Carlino
fdc6601520 Prompt the user to download missing cities from the Proposals screen, too. 2021-03-10 12:10:16 -08:00
Dustin Carlino
db96b0a7c4 Add an included proposal for making Poundbury<->Dorchester use a pair of one-way roads. cyipt/actdev#114
And handle community proposals when the weekday scenario doesn't exist.
2021-03-09 13:23:40 -08:00
Dustin Carlino
d13478f355 Make Poundbury run more smoothly, and prebake sim data for all
scenarios, so we can run A/B tests with map edits. cyipt/actdev#114

To fix it up, I hand-timed
https://www.openstreetmap.org/node/2124133019, which could have smarter
heuristics as a button-operated half-signal in the future. And allowed
blocking-the-box on some small intersections near that area.
2021-03-09 10:45:44 -08:00
Dustin Carlino
65d7bc5c8e Rename {Text,TextSpan}::draw to into_widget, for consistency. #253 2021-03-09 09:59:30 -08:00