From 95fce11d006b8f0a96b64f6334baab7ce89809ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 25 Dec 2018 18:08:33 +0100 Subject: [PATCH] show locations immediately after searching --- src/c3nav/mapdata/api.py | 10 +++++++--- src/c3nav/mapdata/utils/locations.py | 3 +++ src/c3nav/site/static/site/js/c3nav.js | 24 +++++++++++++++++++++--- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/c3nav/mapdata/api.py b/src/c3nav/mapdata/api.py index 9fc57882..489f5af1 100644 --- a/src/c3nav/mapdata/api.py +++ b/src/c3nav/mapdata/api.py @@ -359,9 +359,13 @@ class LocationViewSetBase(RetrieveModelMixin, GenericViewSet): if isinstance(location, LocationRedirect): return redirect('../' + str(location.target.pk) + '/geometry/') - return Response(location.get_geometry( - detailed_geometry=MapdataViewSet.can_access_geometry(request, location), - )) + return Response({ + 'id': location.id, + 'level': getattr(location, 'level_id', None), + 'geometry': location.get_geometry( + detailed_geometry=MapdataViewSet.can_access_geometry(request, location) + ) + }) class LocationViewSet(LocationViewSetBase): diff --git a/src/c3nav/mapdata/utils/locations.py b/src/c3nav/mapdata/utils/locations.py index b927b0aa..3f6c1fc3 100644 --- a/src/c3nav/mapdata/utils/locations.py +++ b/src/c3nav/mapdata/utils/locations.py @@ -348,6 +348,9 @@ class CustomLocation: result['display'].pop(6) return result + def get_geometry(self, detailed_geometry=True): + return None + @cached_property def description(self): from c3nav.routing.router import Router diff --git a/src/c3nav/site/static/site/js/c3nav.js b/src/c3nav/site/static/site/js/c3nav.js index c9d60292..4a34eb02 100644 --- a/src/c3nav/site/static/site/js/c3nav.js +++ b/src/c3nav/site/static/site/js/c3nav.js @@ -1161,6 +1161,7 @@ c3nav = { shadowSize: [41, 41] }); }, + visible_map_locations: [], update_map_locations: function () { // update locations markers on the map var origin = $('#origin-input').data('location'), @@ -1170,6 +1171,7 @@ c3nav = { for (var level_id in c3nav._locationLayers) { c3nav._locationLayers[level_id].clearLayers() } + c3nav._visible_map_locations = []; if (origin) c3nav._merge_bounds(bounds, c3nav._add_location_to_map(origin, single ? new L.Icon.Default() : c3nav.originIcon)); if (destination) c3nav._merge_bounds(bounds, c3nav._add_location_to_map(destination, single ? new L.Icon.Default() : c3nav.destinationIcon)); c3nav._locationLayerBounds = bounds; @@ -1231,7 +1233,7 @@ c3nav = { ]; }, _location_point_overrides: {}, - _add_location_to_map: function(location, icon) { + _add_location_to_map: function(location, icon, no_geometry) { if (!location) { // if location is not in the searchable list... return @@ -1239,12 +1241,17 @@ c3nav = { // add a location to the map as a marker if (location.locations) { var bounds = {}; - for (var i=0; i