add initil location api and javascript calls to it

This commit is contained in:
Laura Klünder 2017-12-24 04:37:05 +01:00
parent 8e90aa7e3c
commit 6805f2fb5f
3 changed files with 46 additions and 2 deletions

View file

@ -16,6 +16,7 @@ class RoutingViewSet(ViewSet):
"""
/route/ Get routes.
/options/ Get or set route options.
/locate/ Wifi locate.
"""
@list_route(methods=['get', 'post'])
def route(self, request, *args, **kwargs):
@ -76,3 +77,8 @@ class RoutingViewSet(ViewSet):
options.save()
return Response(options.serialize())
@list_route(methods=('POST', ))
def locate(self, request, *args, **kwargs):
# todo: implement wifi location
return Response({'location': None})

View file

@ -127,6 +127,10 @@ c3nav = {
window.setInterval(c3nav.load_searchable_locations, 42000);
if (window.mobileclient) {
window.setInterval(function() { mobileclient.scanNow(); }, 2000);
}
c3nav.init_completed = true;
},
get_csrf_token: function() {
@ -1217,10 +1221,41 @@ c3nav = {
var $user = $('header #user');
$user.find('span').text(data.title);
$user.find('small').text(data.subtitle || '');
},
_last_wifi_scant: 0,
_wifi_scan_results: function(data) {
if (!JSON.parse(data).length) {
c3nav._set_user_location(null);
}
var now = Date.now();
if (now-2000 < c3nav._last_wifi_scan) return;
$.post({
url: '/api/routing/locate/',
data: data,
dataType: 'json',
contentType: 'application/json',
beforeSend: function(xhrObj){
xhrObj.setRequestHeader('X-CSRFToken', c3nav.get_csrf_token());
},
success: function(data) {
c3nav._set_user_location(data.location);
}
}).fail(function() {
c3nav._set_user_location(null);
});
},
_set_user_location: function(location) {
}
};
$(document).ready(c3nav.init);
function nearby_stations_available() {
c3nav._wifi_scan_results(mobileclient.getNearbyStations());
}
LevelControl = L.Control.extend({
options: {

View file

@ -8,12 +8,15 @@ mobileclient = {
return JSON.stringify(this.nearbyStations);
},
port: 8042,
wait: false,
scanNow: function() {
console.log('mobileclient: scanNow');
if (mobileclient.wait) return;
mobileclient.wait = true;
$.getJSON('http://localhost:'+String(mobileclient.port)+'/scan', function(data) {
mobileclient.setNearbyStations(data.data);
}).fail(function() {
mobileclient.scanNow();
}).always(function() {
mobileclient.wait = false;
});
},
shareUrl: function(url) {