summaryrefslogtreecommitdiff
path: root/frontend.js
blob: fcf85049e60482306f82f06710380ef0420a1059 (plain)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
var streets = [];
var img_dir = '/streets/images/';
var street_file = '/streets/streets.min.json';

function doSearch() {

	// take out previous results
	$('#results').text('');

	// figure out which districts to search
	var enabled_districts = [];

	if ($('#dist_51').prop('checked')) {
		enabled_districts.push('51');
	}

	if ($('#dist_52').prop('checked')) {
		enabled_districts.push('52');
	}

	if ($('#dist_53').prop('checked')) {
		enabled_districts.push('53');
	}

	// perform the search
	var f = new Fuse(streets, {keys: ['name', 'alternates'], threshold: 0.3});
	var result = f.search($('#search').val());

	// display results
	result.forEach(function(street) {

		// ensure it is in an enabled district
		if (enabled_districts.indexOf(street.district) > -1) {

			var html = '<div class="street">'
				+ '<p class="name">' + street.name + '</p>';

			if (street.hasOwnProperty("route")) {
				html += '<p class="directions">' + street.route + '</p>';
			} else if (street.hasOwnProperty("routes")) {

				street.routes.forEach(function(route) {
					html += '<div class="route">'
						+ '<p class="title">' + route.title + '</p>'
						+ '<p class="directions">' + route.route + '</p>'
						+ '</div>';
				});
			}

			if (street.hasOwnProperty('note')) {
				html += '<p class="note">' + street.note + '</p>';
			}

			if (street.hasOwnProperty('image')) {
				html += '<a href="' + img_dir + street.image + '"><img src="' + img_dir + street.image + '" alt="map" /></a>';
			}

			// add street to the results
			$('#results').append(html);
		}

	});

}


$(document).ready(function() {

	// give focus to search box
	$('#search').focus();

	// load the streets
	$.getJSON(street_file, function (data) {
		streets = data;
	});

	// search when value changed
	$('#search').keyup(doSearch);

	// search and refocus when checkboxes change
	$(':checkbox').change(function () {
		doSearch();
		$('#search').focus();
	});

	$('#dist_51').prop('checked', true);

});