fifteen_min/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#![allow(clippy::type_complexity)]

use structopt::StructOpt;

use widgetry::Settings;

#[macro_use]
extern crate log;

mod amenities_details;
mod bus;
mod common;
mod from_amenity;
mod isochrone;
mod render;
mod score_homes;
mod single_start;

type App = map_gui::SimpleApp<crate::isochrone::Options>;

pub fn main() {
    let settings = Settings::new("15-minute neighborhoods");
    run(settings);
}

fn run(mut settings: Settings) {
    let mut options = map_gui::options::Options::load_or_default();
    let args = map_gui::SimpleAppArgs::from_iter(abstutil::cli_args());
    args.override_options(&mut options);

    settings = args
        .update_widgetry_settings(settings)
        .canvas_settings(options.canvas_settings.clone());

    let session = crate::isochrone::Options {
        movement: crate::isochrone::MovementOptions::Walking(
            map_model::connectivity::WalkingOptions::default(),
        ),
        thresholds: crate::isochrone::Options::default_thresholds(),
    };

    widgetry::run(settings, |ctx| {
        map_gui::SimpleApp::new(
            ctx,
            options,
            Some(args.map_name()),
            args.cam,
            session,
            |ctx, app| vec![single_start::SingleStart::random_start(ctx, app)],
        )
    });
}

#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;

#[cfg(target_arch = "wasm32")]
#[wasm_bindgen(js_name = "run")]
pub fn run_wasm(root_dom_id: String, assets_base_url: String, assets_are_gzipped: bool) {
    let settings = Settings::new("15-minute neighborhoods")
        .root_dom_element_id(root_dom_id)
        .assets_base_url(assets_base_url)
        .assets_are_gzipped(assets_are_gzipped);

    run(settings);
}