From 1c7c6543c8733a3ec147ce105073e16cfa24ca06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 26 Dec 2017 01:51:37 +0100 Subject: [PATCH] shorter descriptions and icons for custom locations --- src/c3nav/locale/de/LC_MESSAGES/django.po | 76 ++++++++++++----------- src/c3nav/mapdata/utils/locations.py | 15 +++-- src/c3nav/routing/api.py | 2 +- src/c3nav/routing/locator.py | 3 +- src/c3nav/site/static/site/js/c3nav.js | 4 +- 5 files changed, 55 insertions(+), 45 deletions(-) diff --git a/src/c3nav/locale/de/LC_MESSAGES/django.po b/src/c3nav/locale/de/LC_MESSAGES/django.po index 4de6647e..b2030074 100644 --- a/src/c3nav/locale/de/LC_MESSAGES/django.po +++ b/src/c3nav/locale/de/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-25 22:23+0100\n" -"PO-Revision-Date: 2017-12-24 05:02+0100\n" +"POT-Creation-Date: 2017-12-26 01:50+0100\n" +"PO-Revision-Date: 2017-12-26 01:51+0100\n" "Last-Translator: Laura Klünder \n" "Language-Team: \n" "Language: de\n" @@ -157,7 +157,7 @@ msgstr "Benutzer" #: c3nav/control/templates/control/announcements.html:9 #: c3nav/control/templates/control/users.html:15 -#: c3nav/mapdata/models/base.py:41 c3nav/mapdata/utils/locations.py:299 +#: c3nav/mapdata/models/base.py:41 c3nav/mapdata/utils/locations.py:302 msgid "ID" msgstr "ID" @@ -542,7 +542,7 @@ msgstr "letzte Statusänderung" #: c3nav/editor/models/changeset.py:48 c3nav/mapdata/models/base.py:59 #: c3nav/mapdata/models/graph.py:34 c3nav/mapdata/models/locations.py:183 -#: c3nav/mapdata/utils/locations.py:334 +#: c3nav/mapdata/utils/locations.py:337 msgid "Title" msgstr "Titel" @@ -869,7 +869,7 @@ msgstr "Einstellungen für neue Kanten" #: c3nav/editor/templates/editor/index.html:10 #: c3nav/editor/templates/editor/level.html:16 #: c3nav/mapdata/models/geometry/level.py:55 c3nav/mapdata/models/level.py:29 -#: c3nav/mapdata/utils/locations.py:301 +#: c3nav/mapdata/utils/locations.py:304 msgid "Level" msgstr "Etage" @@ -901,7 +901,7 @@ msgstr "Details anzeigen" #: c3nav/editor/templates/editor/space.html:9 #: c3nav/mapdata/models/geometry/level.py:119 #: c3nav/mapdata/models/geometry/space.py:79 -#: c3nav/mapdata/utils/locations.py:307 +#: c3nav/mapdata/utils/locations.py:310 msgid "Space" msgstr "Raum" @@ -1389,7 +1389,7 @@ msgstr "Zugangserlaubnis-Token" msgid "Access Permission" msgstr "Zugangserlaubnis" -#: c3nav/mapdata/models/base.py:40 c3nav/mapdata/utils/locations.py:298 +#: c3nav/mapdata/models/base.py:40 c3nav/mapdata/utils/locations.py:301 msgid "Type" msgstr "Typ" @@ -1534,7 +1534,7 @@ msgid "Area" msgstr "Bereich" #: c3nav/mapdata/models/geometry/space.py:121 -#: c3nav/mapdata/utils/locations.py:313 +#: c3nav/mapdata/utils/locations.py:316 msgid "Areas" msgstr "Bereiche" @@ -1749,7 +1749,7 @@ msgid "default height" msgstr "Standarddeckenhöhe" #: c3nav/mapdata/models/locations.py:45 c3nav/mapdata/models/locations.py:65 -#: c3nav/mapdata/utils/locations.py:300 +#: c3nav/mapdata/utils/locations.py:303 msgid "Slug" msgstr "Slug" @@ -1881,63 +1881,63 @@ msgstr[1] "%d Kartenupdates verarbeitet." msgid "Last processed update: %(date)s (#%(id)d)" msgstr "Letztes verarbeitetes Update: %(date)s (#%(id)d)" -#: c3nav/mapdata/utils/locations.py:298 +#: c3nav/mapdata/utils/locations.py:301 msgid "Coordinates" msgstr "Koordinaten" -#: c3nav/mapdata/utils/locations.py:319 +#: c3nav/mapdata/utils/locations.py:322 msgid "Near Area" msgstr "Naher Bereich" -#: c3nav/mapdata/utils/locations.py:325 +#: c3nav/mapdata/utils/locations.py:328 msgid "Near POI" msgstr "Naher POI" -#: c3nav/mapdata/utils/locations.py:331 +#: c3nav/mapdata/utils/locations.py:334 msgid "X Coordinate" msgstr "X-Koordinate" -#: c3nav/mapdata/utils/locations.py:332 +#: c3nav/mapdata/utils/locations.py:335 msgid "Y Coordinate" msgstr "Y-Koordinate" -#: c3nav/mapdata/utils/locations.py:333 +#: c3nav/mapdata/utils/locations.py:336 msgid "Altitude" msgstr "Höhe" -#: c3nav/mapdata/utils/locations.py:335 +#: c3nav/mapdata/utils/locations.py:338 msgid "Subtitle" msgstr "Untertitel" -#: c3nav/mapdata/utils/locations.py:367 +#: c3nav/mapdata/utils/locations.py:370 #, python-format -msgid "Point in %(level)s" -msgstr "Punkt innerhalb %(level)s" +msgid "In %(level)s" +msgstr "In %(level)s" -#: c3nav/mapdata/utils/locations.py:373 +#: c3nav/mapdata/utils/locations.py:376 #, python-format -msgid "Point near %(poi)s" -msgstr "Punkt nahe %(poi)s" +msgid "Near %(poi)s" +msgstr "Nahe %(poi)s" -#: c3nav/mapdata/utils/locations.py:377 +#: c3nav/mapdata/utils/locations.py:380 #, python-format msgid "near %(area)s" msgstr "nahe %(area)s" -#: c3nav/mapdata/utils/locations.py:379 +#: c3nav/mapdata/utils/locations.py:382 #, python-format -msgid "Point in %(area)s" -msgstr "Punkt innerhalb %(area)s" +msgid "In %(area)s" +msgstr "Nahe %(area)s" -#: c3nav/mapdata/utils/locations.py:383 +#: c3nav/mapdata/utils/locations.py:386 #, python-format -msgid "Point near %(area)s" -msgstr "Punkt nahe %(area)s" +msgid "Near %(area)s" +msgstr "Nahe %(area)s" -#: c3nav/mapdata/utils/locations.py:385 +#: c3nav/mapdata/utils/locations.py:388 #, python-format -msgid "Point in %(space)s" -msgstr "Punkt innerhalb %(space)s" +msgid "In %(space)s" +msgstr "In %(space)s" #: c3nav/mapdata/utils/user.py:15 msgid "not logged in" @@ -1954,18 +1954,22 @@ msgstr[1] "%d freigeschaltete Bereiche" msgid "Login" msgstr "Anmelden" -#: c3nav/routing/api.py:46 +#: c3nav/routing/api.py:47 msgid "Not yet routable, try again shortly." msgstr "Noch nicht routebar, bitte einige Minuten warten." -#: c3nav/routing/api.py:50 +#: c3nav/routing/api.py:51 msgid "Unreachable location." msgstr "Unerreichbarer Ort." -#: c3nav/routing/api.py:54 +#: c3nav/routing/api.py:55 msgid "No route found." msgstr "Keine Route gefunden." +#: c3nav/routing/api.py:88 +msgid "Invalid scan data." +msgstr "Invalide Scandaten." + #: c3nav/routing/forms.py:18 msgid "Unknown origin." msgstr "Unbekannter Startort." @@ -1974,7 +1978,7 @@ msgstr "Unbekannter Startort." msgid "Unknown destination." msgstr "Unbekannter Zielort." -#: c3nav/routing/locator.py:129 +#: c3nav/routing/locator.py:177 msgid "Invalid Scan." msgstr "Invalider Scan." diff --git a/src/c3nav/mapdata/utils/locations.py b/src/c3nav/mapdata/utils/locations.py index 7e1c0c66..c8339430 100644 --- a/src/c3nav/mapdata/utils/locations.py +++ b/src/c3nav/mapdata/utils/locations.py @@ -250,7 +250,7 @@ class CustomLocation: can_describe = True access_restriction_id = None - def __init__(self, level, x, y, permissions): + def __init__(self, level, x, y, permissions, icon='pin_drop'): x = round(x, 2) y = round(y, 2) self.pk = 'c:%s:%s:%s' % (level.short_label, x, y) @@ -258,6 +258,7 @@ class CustomLocation: self.level = level self.x = x self.y = y + self.icon = icon @property def serialized_geometry(self): @@ -270,6 +271,7 @@ class CustomLocation: result = OrderedDict(( ('id', self.pk), ('slug', self.pk), + ('icon', self.icon), ('title', self.title), ('subtitle', self.subtitle), ('level', self.level.pk), @@ -289,6 +291,7 @@ class CustomLocation: if geometry: result['geometry'] = self.serialized_geometry + return result def details_display(self): @@ -364,25 +367,25 @@ class CustomLocation: @cached_property def title_subtitle(self): - title = _('Point in %(level)s') % {'level': self.level.title} + title = _('In %(level)s') % {'level': self.level.title} if not self.space: return title, self.level.title, subtitle = () if self.near_poi: - title = _('Point near %(poi)s') % {'poi': self.near_poi.title} + title = _('Near %(poi)s') % {'poi': self.near_poi.title} if self.areas: subtitle = (area.title for area in self.areas[:2]) elif self.near_area: subtitle = (_('near %(area)s') % {'area': self.near_area.title}, ) elif self.areas: - title = _('Point in %(area)s') % {'area': self.areas[0].title} + title = _('In %(area)s') % {'area': self.areas[0].title} if self.areas: subtitle = (area.title for area in self.areas[1:2]) elif self.near_area: - title = _('Point near %(area)s') % {'area': self.near_area.title} + title = _('Near %(area)s') % {'area': self.near_area.title} else: - return _('Point in %(space)s') % {'space': self.space.title}, self.level.title + return _('In %(space)s') % {'space': self.space.title}, self.level.title subtitle = ', '.join(str(title) for title in chain(subtitle, (self.space.title, self.level.title))) return title, subtitle diff --git a/src/c3nav/routing/api.py b/src/c3nav/routing/api.py index d316417f..b14cbb37 100644 --- a/src/c3nav/routing/api.py +++ b/src/c3nav/routing/api.py @@ -88,4 +88,4 @@ class RoutingViewSet(ViewSet): 'errors': (_('Invalid scan data.'),), }, status=400) - return Response({'location': None if location is None else location.serialize()}) + return Response({'location': None if location is None else location.serialize(simple_geometry=True)}) diff --git a/src/c3nav/routing/locator.py b/src/c3nav/routing/locator.py index dffe93b3..2c66ee53 100644 --- a/src/c3nav/routing/locator.py +++ b/src/c3nav/routing/locator.py @@ -89,7 +89,8 @@ class Locator: for pk, space, station_ids in good_spaces: point, score = space.get_best_point(scan_values, station_ids) if score < best_score: - location = CustomLocation(router.spaces[pk].level, point.x, point.y, permissions=permissions) + location = CustomLocation(router.spaces[pk].level, point.x, point.y, + permissions=permissions, icon='my_location') best_location = location best_score = score diff --git a/src/c3nav/site/static/site/js/c3nav.js b/src/c3nav/site/static/site/js/c3nav.js index ae6c58d9..2cc2a22b 100644 --- a/src/c3nav/site/static/site/js/c3nav.js +++ b/src/c3nav/site/static/site/js/c3nav.js @@ -714,7 +714,7 @@ c3nav = { }, _build_location_html: function(location, add_data) { html = $('
') - .append($('').text('place')) + .append($('').text(location.icon || 'map')) .append($('').text(location.title)) .append($('').text(location.subtitle)).attr('data-id', location.id); if (add_data) html.attr('data-location', JSON.stringify(location)); @@ -726,6 +726,7 @@ c3nav = { c3nav._locationinput_reset_autocomplete(); elem.toggleClass('selected', !!location).toggleClass('empty', !location) .data('location', location).data('lastlocation', location).removeData('suggestion'); + elem.find('.icon').text(location ? (location.icon || 'place') : ''); elem.find('input').val(location ? location.title : '').removeData('origval'); elem.find('small').text(location ? location.subtitle : ''); }, @@ -748,6 +749,7 @@ c3nav = { } if (c3nav._current_user_location) { c3nav._locationinput_set($(this).parent(), c3nav._current_user_location); + c3nav.update_state(); } }, _locationinput_reset_autocomplete: function () {