these-3-words/views/index.html

96 lines
3.6 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 3x3 m<sup>2</sup> location anywhere in the world with just four words.
</p>
<p class="text-warning">This is hot off the press. We are still
finalising the word list, locations might not be
reproducible. So do not use it to mark your
antarctic resupply drop quite yet!</p>
<p>
<ul class="lead">
<li>Type in an address to find out its four words (try <i>1600 Pennsylvania avenue ...</i>)</li>
<li>To find the location referenced by a set of four words, type them in separated by a dash (try <i>{{ sydney }}</i>)</li>
<li>Go straight to exploring the map by clicking the <i>Find on Map</i> button, it will take you to Sydney</li>
</ul>
</p>
<p id="input3wordsContainer">
<input type="text" class="form-control" id="input3words" placeholder="1600 Pennsylvania .. OR {{ sydney }}">
</p>
<p>
<button id="button3words" class="btn btn-lg btn-primary">Find on Map</button>
</p>
<p class="lead">
Some interesting locations to try out:
<ul class="lead">
<li><a href="{{ battery }}">Battery Park, NYC</a></li>
<li><a href="{{ san_fran }}">Downtown San Francisco</a></li>
<li><a href="{{ sydney }}">Sydney, Australia</a></li>
</ul>
</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 = '{{ sydney }}';
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>