fifteen_min/
lib.rs

1#![allow(clippy::type_complexity)]
2
3use structopt::StructOpt;
4
5use widgetry::Settings;
6
7#[macro_use]
8extern crate log;
9
10mod amenities_details;
11mod bus;
12mod common;
13mod from_amenity;
14mod isochrone;
15mod render;
16mod score_homes;
17mod single_start;
18
19type App = map_gui::SimpleApp<crate::isochrone::Options>;
20
21pub fn main() {
22    let settings = Settings::new("15-minute neighborhoods");
23    run(settings);
24}
25
26fn run(mut settings: Settings) {
27    let mut options = map_gui::options::Options::load_or_default();
28    let args = map_gui::SimpleAppArgs::from_iter(abstutil::cli_args());
29    args.override_options(&mut options);
30
31    settings = args
32        .update_widgetry_settings(settings)
33        .canvas_settings(options.canvas_settings.clone());
34
35    let session = crate::isochrone::Options {
36        movement: crate::isochrone::MovementOptions::Walking(
37            map_model::connectivity::WalkingOptions::default(),
38        ),
39        thresholds: crate::isochrone::Options::default_thresholds(),
40    };
41
42    widgetry::run(settings, |ctx| {
43        map_gui::SimpleApp::new(
44            ctx,
45            options,
46            Some(args.map_name()),
47            args.cam,
48            session,
49            |ctx, app| vec![single_start::SingleStart::random_start(ctx, app)],
50        )
51    });
52}
53
54#[cfg(target_arch = "wasm32")]
55use wasm_bindgen::prelude::*;
56
57#[cfg(target_arch = "wasm32")]
58#[wasm_bindgen(js_name = "run")]
59pub fn run_wasm(root_dom_id: String, assets_base_url: String, assets_are_gzipped: bool) {
60    let settings = Settings::new("15-minute neighborhoods")
61        .root_dom_element_id(root_dom_id)
62        .assets_base_url(assets_base_url)
63        .assets_are_gzipped(assets_are_gzipped);
64
65    run(settings);
66}