Commit 37a149e698da3cc7d31643c255d7fad28fd1ca68
Exists in
master
Merge branch 'master' of git.ucsd.edu:prwallac/cse-170-group-project
Not sure what is happening
Showing 4 changed files Inline Diff
public/stylesheets/main.css
View file @
37a149e
#alt-routes { | 1 | 1 | #alt-routes { | |
height: 75px; | 2 | 2 | height: 75px; | |
} | 3 | 3 | } | |
4 | 4 | |||
#map { | 5 | 5 | #map { | |
6 | height: 600px; | |||
margin-bottom: 10px; | 6 | 7 | margin-bottom: 10px; | |
8 | width: 100%; | |||
} | 7 | 9 | } | |
8 | 10 | |||
#map-top { | 9 | 11 | #map-top { | |
margin-bottom: 30px; | 10 | 12 | margin-bottom: 30px; | |
} | 11 | 13 | } | |
12 | 14 | |||
.img-responsive { | 13 | 15 | .img-responsive { | |
margin: 0 auto; | 14 | 16 | margin: 0 auto; | |
} | 15 | 17 | } | |
16 | 18 | |||
.status { | 17 | 19 | .status { | |
margin-top: 5px; | 18 | 20 | margin-top: 5px; | |
} | 19 | 21 | } | |
20 | 22 | |||
.text-field { | 21 | 23 | .text-field { | |
margin-top: 30px; | 22 | 24 | margin-top: 30px; | |
margin-bottom: 30px; | 23 | 25 | margin-bottom: 30px; | |
} | 24 | 26 | } | |
25 | 27 | |||
.center-this { | 26 | 28 | .center-this { | |
margin: 0 auto; | 27 | 29 | margin: 0 auto; |
views/pages/index.ejs
View file @
37a149e
<!DOCTYPE html> | 1 | 1 | <!DOCTYPE html> | |
<html lang="en"> | 2 | 2 | <html lang="en"> | |
<head> | 3 | 3 | <head> | |
<!-- <% include ../partials/header %> --> | 4 | 4 | <% include ../partials/header %> | |
</head> | 5 | 5 | </head> | |
6 | 6 | |||
<!-- Homepage --> | 7 | 7 | <!-- Homepage --> | |
8 | 8 | |||
<body> | 9 | 9 | <body> | |
<div class="container-fluid"> | 10 | 10 | <div class="container-fluid"> | |
<div class="jumbotron text-center"> | 11 | 11 | <div class="jumbotron text-center"> | |
<h1>Safe Routes</h1> | 12 | 12 | <h1>Safe Routes</h1> | |
<p>The best way to find the safest routes.</p> | 13 | 13 | <p>The best way to find the safest routes.</p> | |
</div> | 14 | 14 | </div> | |
15 | 15 | |||
<!--What are for and type for?--> | 16 | 16 | <!--What are for and type for?--> | |
<!-- current submit button takes you to the landing page --> | 17 | 17 | <!-- current submit button takes you to the landing page --> | |
<form action="/landing"> | 18 | 18 | <form action="/landing"> | |
<!-- First text field and label above the text field for current location --> | 19 | 19 | <!-- First text field and label above the text field for current location --> | |
<div class="form-group text-center"> | 20 | 20 | <div class="form-group text-center"> | |
<label for="currentLocation">From</label> | 21 | 21 | <label for="currentLocation">From</label> | |
<input type="currentLocation" class="form-control" placeholder="Enter Current Location"> | 22 | 22 | <input type="currentLocation" class="form-control" id="origin" placeholder="Enter Current Location" onchange="saveFrom()"> | |
</div> | 23 | 23 | </div> | |
<!-- Second text field and label above the text field for destination --> | 24 | 24 | <!-- Second text field and label above the text field for destination --> | |
<div class="form-group text-center"> | 25 | 25 | <div class="form-group text-center"> | |
<label for="destination">To</label> | 26 | 26 | <label for="destination">To</label> | |
<input type="destination" class="form-control" placeholder="Enter Destination"> | 27 | 27 | <input type="destination" class="form-control" id="dest" placeholder="Enter Destination" onchange="saveTo()"> | |
</div> | 28 | 28 | </div> | |
<!-- First travel option button, walking | 29 | 29 | <!-- First travel option button, walking | |
This contains a row that holds buttons of type button. Buttons are highlighted upon selection. | 30 | 30 | This contains a row that holds buttons of type button. Buttons are highlighted upon selection. | |
--> | 31 | 31 | --> | |
<div class="row"> | 32 | 32 | <div class="row"> | |
<button type="button" class="btn-default img-thumbnail col-xs-4"> | 33 | 33 | <button type="button" class="btn-default img-thumbnail col-xs-4" onclick="walk();"> | |
<img class="img-responsive" src="images/pedestrian-walking.svg" alt="Walking Option" width="40" height="40"> | 34 | 34 | <img class="img-responsive" src="images/pedestrian-walking.svg" alt="Walking Option" width="40" height="40"> | |
</button> | 35 | 35 | </button> | |
36 | 36 | |||
<!-- Second travel button, driving --> | 37 | 37 | <!-- Second travel button, driving --> | |
<button type="button" class="btn-default img-thumbnail col-xs-4"> | 38 | 38 | <button type="button" class="btn-default img-thumbnail col-xs-4" onclick="drive();"> | |
<img class="img-responsive" src="images/car-compact.svg" alt="Walking Option" width="40" height="40"> | 39 | 39 | <img class="img-responsive" src="images/car-compact.svg" alt="Walking Option" width="40" height="40"> | |
</button> | 40 | 40 | </button> | |
41 | 41 | |||
<!-- Third travel button, bus --> | 42 | 42 | <!-- Third travel button, bus --> | |
<button type="button" class="btn-default img-thumbnail col-xs-4" onclick="javascript:autofill();"> | 43 | 43 | <button type="button" class="btn-default img-thumbnail col-xs-4" onclick="bus();"> | |
<img class="img-responsive" src="images/bus.svg" alt="Walking Option" width="40" height="40"> | 44 | 44 | <img class="img-responsive" src="images/bus.svg" alt="Walking Option" width="40" height="40"> | |
</button> | 45 | 45 | </button> | |
</div> | 46 | 46 | </div> | |
47 | ||||
<div class="text-center"> | 47 | 48 | <div class="text-center"> | |
<button type="submit" class="btn btn-primary btn-space">Go</button> | 48 | 49 | <button type="submit" class="btn btn-primary btn-space">Go</button> | |
49 | ||||
</div> | 50 | 50 | </div> | |
</form> | 51 | 51 | </form> | |
52 | ||||
</div> | 53 | 52 | </div> | |
53 | ||||
54 | <!-- Google Map functionality. --> | |||
55 | <script> | |||
56 | function saveFrom() { | |||
57 | var fromInput = document.getElementById("origin").value; | |||
58 | localStorage.setItem("from", fromInput); | |||
59 | } | |||
60 | function saveTo() { | |||
61 | var toInput = document.getElementById("dest").value; | |||
62 | localStorage.setItem("to", toInput); | |||
63 | } | |||
64 | function walk() { | |||
65 | localStorage.setItem("mode", "WALKING"); | |||
66 | } | |||
67 | function drive() { | |||
68 | localStorage.setItem("mode", "DRIVING"); | |||
69 | } | |||
70 | function bus() { | |||
71 | localStorage.setItem("mode", "TRANSIT"); | |||
72 | } | |||
73 | </script> | |||
54 | 74 |
views/pages/landing.ejs
View file @
37a149e
<!DOCTYPE html> | 1 | 1 | <!DOCTYPE html> | |
<html lang="en"> | 2 | 2 | <html lang="en"> | |
<head> | 3 | 3 | <head> | |
<% include ../partials/header %> | 4 | 4 | <% include ../partials/header %> | |
</head> | 5 | 5 | </head> | |
6 | 6 | |||
7 | 7 | |||
<body> | 8 | 8 | <body> | |
<div class="container"> | 9 | 9 | <div class="container"> | |
10 | 10 | |||
<!-- My LOCATION --> | 11 | 11 | <!-- My LOCATION --> | |
<div> | 12 | 12 | <div> | |
<input type="text" class="form-control text-field" placeholder="MY LOCATION"> | 13 | 13 | <input type="text" class="form-control text-field" id="from" name="fromText" placeholder="MY LOCATION"> | |
</div> | 14 | 14 | </div> | |
<!-- Destination --> | 15 | 15 | <!-- Destination --> | |
<div> | 16 | 16 | <div> | |
<input type="text" class="form-control text-field" placeholder="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna..."> | 17 | 17 | <input type="text" class="form-control text-field" id="to" name="toText" placeholder="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna..."> | |
</div> | 18 | 18 | </div> | |
19 | 19 | |||
<!-- Buttons and status information on top of the map. --> | 20 | 20 | <!-- Buttons and status information on top of the map. --> | |
<div class="container" id="map-top"> | 21 | 21 | <div class="container" id="map-top"> | |
<div class="row"> | 22 | 22 | <div class="row"> | |
<!-- Status --> | 23 | 23 | <!-- Status --> | |
<div class="col-xs-6"> | 24 | 24 | <div class="col-xs-6"> | |
<!-- Title: Current Route --> | 25 | 25 | <!-- Title: Current Route --> | |
<div> | 26 | 26 | <div> | |
Current Route: | 27 | 27 | Current Route: | |
</div> | 28 | 28 | </div> | |
<!-- Icons + Status --> | 29 | 29 | <!-- Icons + Status --> | |
<div class="row status"> | 30 | 30 | <div class="row status"> | |
<!-- Safety Rating --> | 31 | 31 | <!-- Safety Rating --> | |
<div class="col-xs-6"> | 32 | 32 | <div class="col-xs-6"> | |
80% Safe | 33 | 33 | 80% Safe | |
</div> | 34 | 34 | </div> | |
<!-- Travel Duration --> | 35 | 35 | <!-- Travel Duration --> | |
<div class="col-xs-6"> | 36 | 36 | <div class="col-xs-6"> | |
10 Mins | 37 | 37 | 10 Mins | |
</div> | 38 | 38 | </div> | |
</div> | 39 | 39 | </div> | |
</div> | 40 | 40 | </div> | |
<!-- Alt Routes --> | 41 | 41 | <!-- Alt Routes --> | |
<div class="col-xs-6"> | 42 | 42 | <div class="col-xs-6"> | |
<button type="button" class="btn btn-default btn-block" id="alt-routes" onclick="todo()">Alternate Routes</button> | 43 | 43 | <button type="button" class="btn btn-default btn-block" id="alt-routes" onclick="todo()">Alternate Routes</button> | |
</div> | 44 | 44 | </div> | |
</div> | 45 | 45 | </div> | |
</div> | 46 | 46 | </div> | |
47 | 47 | |||
<!-- Google Maps --> | 48 | 48 | <!-- Div container for map. --> | |
<div class="container" id="map"> | 49 | 49 | <div id="map"></div> | |
<!-- Placeholder --> | 50 | 50 | ||
<img class="img-responsive" src="images/temp.png" alt="temp" width="800" height="600"> | 51 | 51 | <!-- Javascript for the map. --> | |
</div> | 52 | 52 | <script> | |
53 | function initMap() { | |||
54 | // Used by the Google Maps Direction API. | |||
55 | var directionsService = new google.maps.DirectionsService; | |||
56 | var directionsDisplay = new google.maps.DirectionsRenderer; | |||
57 | // Setting default map location. | |||
58 | var map = document.getElementById("map"); | |||
59 | var options = { | |||
60 | center: new google.maps.LatLng(32.8804526, -117.2376329), | |||
61 | zoom: 17 | |||
62 | } | |||
63 | map = new google.maps.Map(map, options); | |||
64 | directionsDisplay.setMap(map); | |||
65 | ||||
66 | // Keeping the map center when the browser is resized. | |||
67 | function resizing() { | |||
68 | var center = map.getCenter(); | |||
69 | google.maps.event.trigger(map, "resize"); | |||
70 | map.setCenter(center); | |||
71 | } | |||
72 | ||||
73 | google.maps.event.addDomListener(window, "resize", resizing); | |||
74 | ||||
75 | // Showing route. | |||
76 | displayRoute(directionsService, directionsDisplay); | |||
77 | } | |||
78 | ||||
79 | function displayRoute(directionsService, directionsDisplay) { | |||
80 | // Textfields that show from and to. | |||
81 | document.getElementsByName("fromText")[0].placeholder=localStorage.getItem("from"); | |||
82 | document.getElementsByName("toText")[0].placeholder=localStorage.getItem("to"); | |||
83 | ||||
84 | var request = { | |||
85 | origin: localStorage.getItem("from"), | |||
86 | destination: localStorage.getItem("to"), | |||
87 | travelMode: localStorage.getItem("mode") | |||
88 | }; | |||
89 | ||||
90 | directionsService.route(request, function(response, status) { | |||
91 | if (status === "OK") { | |||
92 | directionsDisplay.setDirections(response); | |||
93 | } | |||
94 | else { | |||
95 | window.alert("Directions request failed due to " + status); | |||
96 | } | |||
97 | }); | |||
98 | } | |||
99 | </script> | |||
100 | ||||
101 | <!-- Calling google maps API using the function defined above. --> | |||
102 | <script async defer | |||
103 | src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDAXDHeZXEv4H4ZnThVDxpyAuxVpzOcj_U&callback=initMap"> | |||
104 | </script> | |||
53 | 105 | |||
<!-- Buttons at the bottom of the map --> | 54 | 106 | <!-- Buttons at the bottom of the map --> | |
<div class="container"> | 55 | 107 | <div class="container"> | |
<div class="row"> | 56 | 108 | <div class="row"> | |
<!-- Status --> | 57 | 109 | <!-- Status --> | |
<div class="col-xs-4"> | 58 | 110 | <div class="col-xs-4"> | |
<!-- Title: Current Area --> | 59 | 111 | <!-- Title: Current Area --> | |
<div> | 60 | 112 | <div> | |
Current Area: | 61 | 113 | Current Area: | |
</div> | 62 | 114 | </div> | |
<!-- Icons + Status --> | 63 | 115 | <!-- Icons + Status --> | |
<div> | 64 | 116 | <div> | |
80% Safe | 65 | 117 | 80% Safe | |
</div> | 66 | 118 | </div> | |
</div> | 67 | 119 | </div> | |
<!-- Emergency --> | 68 | 120 | <!-- Emergency --> | |
<div class="col-xs-4"> | 69 | 121 | <div class="col-xs-4"> | |
<button type="button" class="btn btn-danger btn-block" onclick="todo()">Emergency</button> | 70 | 122 | <button type="button" class="btn btn-danger btn-block" onclick="todo()">Emergency</button> | |
</div> | 71 | 123 | </div> | |
<!-- Open Map --> | 72 | 124 | <!-- Open Map --> | |
<div class="col-xs-4"> | 73 | 125 | <div class="col-xs-4"> | |
<button type="button" class="btn btn-default btn-block" onclick="todo()">Open in Map</button> | 74 | 126 | <button type="button" class="btn btn-default btn-block" onclick="todo()">Open in Map</button> | |
</div> | 75 | 127 | </div> | |
</div> | 76 | 128 | </div> | |
</div> | 77 | 129 | </div> | |
78 | 130 | |||
</div> | 79 | 131 | </div> | |
80 | 132 | |||
81 | 133 | |||
<script> | 82 | 134 | <script> | |
function todo() { | 83 | 135 | function todo() { | |
alert("This button is brought to you by the wonderful Wizard of Oz."); | 84 | 136 | alert("This button is brought to you by the wonderful Wizard of Oz."); | |
} | 85 | 137 | } | |
</script> | 86 | 138 | </script> |
views/partials/header.ejs
View file @
37a149e
<meta charset="utf-8"> | 1 | 1 | <meta charset="utf-8"> | |
<!-- Ensure that Bootstrap is mobile friendly --> | 2 | 2 | <!-- Ensure that Bootstrap is mobile friendly --> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | 3 | 3 | <meta name="viewport" content="width=device-width, initial-scale=1"> | |
<!-- Latest compiled and minified CSS --> | 4 | 4 | <!-- Latest compiled and minified CSS --> | |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> | 5 | 5 | <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> | |
6 | 6 | |||
<!-- Optional theme --> | 7 | 7 | <!-- Optional theme --> | |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> | 8 | 8 | <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> | |
9 | 9 | |||
<!-- JQuery | 10 | 10 | <!-- JQuery --> | |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> --> | 11 | 11 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> | |
12 | 12 | |||
<!-- Latest compiled and minified JavaScript --> | 13 | 13 | <!-- Latest compiled and minified JavaScript --> | |
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> | 14 | 14 | <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> |