summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Parecki <aaron@parecki.com>2018-06-21 18:33:32 -0700
committerAaron Parecki <aaron@parecki.com>2018-06-21 18:33:32 -0700
commitc67f48eb28a8aa3fafa161104fc360babf3ed038 (patch)
treef3bfbd5680ccd359ef68a3d58ccca7650b920a4e
parent63655f119bf2f0c70d1b563ca69c88a4d0988fb7 (diff)
set timezone of itinerary legs based on airport location
-rw-r--r--controllers/controllers.php20
-rw-r--r--views/new-itinerary.php26
2 files changed, 44 insertions, 2 deletions
diff --git a/controllers/controllers.php b/controllers/controllers.php
index bc13dd3..9a49305 100644
--- a/controllers/controllers.php
+++ b/controllers/controllers.php
@@ -1005,3 +1005,23 @@ $app->get('/edit', function() use($app) {
$app->redirect($url . '?edit=' . $params['url'], 302);
}
});
+
+$app->get('/airport-info', function() use($app){
+ if($user=require_login($app)) {
+ $params = $app->request()->params();
+ if(!isset($params['code'])) return;
+
+ $ch = curl_init('https://atlas.p3k.io/api/timezone?airport='.urlencode($params['code']));
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ $data = json_decode(curl_exec($ch), true);
+
+ if(!$data)
+ $response = ['error' => 'unknown'];
+ else {
+ $response = $data;
+ }
+
+ $app->response()['Content-type'] = 'application/json';
+ $app->response()->body(json_encode($response));
+ }
+});
diff --git a/views/new-itinerary.php b/views/new-itinerary.php
index c3176f9..14deb65 100644
--- a/views/new-itinerary.php
+++ b/views/new-itinerary.php
@@ -44,7 +44,7 @@
<div class="form-group leg-departure">
<input type="text" class="form-control leg-departure-date date" style="max-width:160px; float:left; margin-right: 4px;" value="">
<input type="text" class="form-control leg-departure-time time" style="max-width:85px; float:left; margin-right: 4px;" value="">
- <input type="text" class="form-control leg-departure-tz tz" style="max-width:75px;" value="">
+ <span><input type="text" class="form-control leg-departure-tz tz" style="max-width:75px;" value=""></span>
</div>
</div>
</div>
@@ -58,7 +58,7 @@
<div class="form-group leg-arrival">
<input type="text" class="form-control leg-arrival-date date" style="max-width:160px; float:left; margin-right: 4px;" value="">
<input type="text" class="form-control leg-arrival-time time" style="max-width:85px; float:left; margin-right: 4px;" value="">
- <input type="text" class="form-control leg-arrival-tz tz" style="max-width:75px;" value="">
+ <span><input type="text" class="form-control leg-arrival-tz tz" style="max-width:75px;" value=""></span>
</div>
</div>
</div>
@@ -127,6 +127,27 @@ $(function(){
});
}
+ function timezone_for_airport(code, callback) {
+ $.getJSON("/airport-info?code="+code, function(data){
+ callback(data.offset);
+ });
+ }
+
+ function bind_leg_timezone() {
+ $(".itinerary-leg .leg-origin").unbind("change").change(function(el){
+ timezone_for_airport($(this).val(), function(offset){
+ $(el.target).parents(".itinerary-leg").find(".leg-departure-tz").val(offset);
+ $(el.target).parents(".itinerary-leg").find(".leg-departure-tz").parent().addClass("has-success");
+ });
+ });
+ $(".itinerary-leg .leg-destination").unbind("change").change(function(el){
+ timezone_for_airport($(this).val(), function(offset){
+ $(el.target).parents(".itinerary-leg").find(".leg-arrival-tz").val(offset);
+ $(el.target).parents(".itinerary-leg").find(".leg-arrival-tz").parent().addClass("has-success");
+ });
+ });
+ }
+
function add_leg() {
$("#itinerary-legs-container").append($("#leg-template").html());
@@ -152,6 +173,7 @@ $(function(){
*/
bind_leg_x();
+ bind_leg_timezone();
}
add_leg();