these-3-words/views/index.html

88 lines
3.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<!-- Meta -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>These3Words Map</title>
<!-- Style -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/css/style.css">
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
<script src="/static/js/app.js"></script>
</head>
<body>
<div class="container">
% if err:
<aside class="alert alert-danger" role="alert">Error: {{ err }}</aside>
% end
<main class="jumbotron">
<h1>These3Words Map</h1>
<p class="lead">
Remember a location anywhere in the world with just three words.
</p>
<p class="text-warning">This is hot off the press. We are still
finalising the word list so locations might not be
reproducible. So do not use it to mark the location of your
antarctic resupply drop quite yet!</p>
<p>
<ul class="lead">
<li>Type in a location to find out the three words by which to remember it (try <i>1600 Pennsylvania avenue ...</i>)</li>
<li>To find the location referenced by a set of three words given to you, type them in separated by a dash (try <i>scone-scud-inbox</i>)</li>
<li>Go straight to exploring the map by clicking the <i>Find on Map</i> button</li>
</ul>
</p>
<p id="input3wordsContainer">
<input type="text" class="form-control" id="input3words" placeholder="1600 Pennsylvania .. OR scone-scud-inbox">
</p>
<p>
<button id="button3words" class="btn btn-lg btn-primary">Find on Map</button>
</p>
</main>
<footer>
<p class="text-center text-muted">Made with ♥ by <a href="https://betatim.github.io/">Tim</a> and <a href="https://dun.gs">Kevin</a>. <a href="https://github.com/betatim/these-3-words">Fork it on GitHub</a>.
</footer>
</div>
<script>
(function () {
var initialise = function () {
var default3words = 'scone-scud-inbox';
var searchbox = new google.maps.places.SearchBox(
(document.getElementById('input3words')));
google.maps.event.addListener(searchbox, 'places_changed', function() {
// Get the place details from the autocomplete object.
var places = searchbox.getPlaces();
if (places.length > 0) {
place = places[0];
These3Words.apiGetFromLatLng(place.geometry.location,
function(status, data) {
if (status >= 200 && status < 400) {
window.location = "/" + data.three;
}
});
} else {
var words = document.getElementById('input3words').value;
if (/\w+-\w+-\w+/.test(words)) {
window.location = '/' + words;
}
}
});
document.getElementById('button3words').addEventListener('click', function(evt) {
var threewords = document.getElementById('input3words').value;
if (threewords.length === 0) {
threewords = default3words;
}
if (/\w+-\w+-\w+/.test(threewords)) {
window.location = '/' + threewords;
} else {
document.getElementById('input3wordsContainer').classList.add('has-error');
}
});
};
window.addEventListener('load', initialise);
}());
</script>
</body>
</html>