add level_index so short_label can look nicer

This commit is contained in:
Laura Klünder 2024-12-19 10:56:38 +01:00
parent 6167c92e98
commit fe98f5e618
14 changed files with 89 additions and 31 deletions

View file

@ -12,7 +12,7 @@ class LocationConverter:
class CoordinatesConverter:
regex = r'[a-z0-9-_:]+:-?\d+(\.\d+)?:-?\d+(\.\d+)?'
regex = r'[a-z0-9-_.]+:-?\d+(\.\d+)?:-?\d+(\.\d+)?'
def to_python(self, value):
return value
@ -25,7 +25,7 @@ AtPos = namedtuple('AtPos', ('level', 'x', 'y', 'zoom'))
class AtPositionConverter:
regex = r'(@[a-z0-9-_:]+,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?)?'
regex = r'(@[a-z0-9-_.]+,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?)?'
def to_python(self, value):
if not value:

View file

@ -758,7 +758,7 @@ c3nav = {
url += 'options/'
}
if (state.center) {
url += '@' + String(c3nav.level_labels_by_id[state.level]) + ',' + String(state.center[0]) + ',' + String(state.center[1]) + ',' + String(state.zoom);
url += '@' + String(c3nav.level_indices_by_id[state.level]) + ',' + String(state.center[0]) + ',' + String(state.center[1]) + ',' + String(state.zoom);
}
return url
},
@ -1414,9 +1414,9 @@ c3nav = {
c3nav.initial_level = 0
}
c3nav.level_labels_by_id = {};
c3nav.level_indices_by_id = {};
for (i = 0; i < c3nav.levels.length; i++) {
c3nav.level_labels_by_id[c3nav.levels[i][0]] = c3nav.levels[i][1];
c3nav.level_indices_by_id[c3nav.levels[i][0]] = c3nav.levels[i][1];
}
minZoom = Math.log2(Math.max(0.25, Math.min(
@ -1468,7 +1468,7 @@ c3nav = {
c3nav._labelLayer = L.LayerGroup.collision({margin: 5}).addTo(c3nav.map);
for (i = c3nav.levels.length - 1; i >= 0; i--) {
var level = c3nav.levels[i];
var layerGroup = c3nav._levelControl.addLevel(level[0], level[1]);
var layerGroup = c3nav._levelControl.addLevel(level[0], level[2]);
c3nav._detailLayers[level[0]] = L.layerGroup().addTo(layerGroup);
c3nav._locationLayers[level[0]] = L.layerGroup().addTo(layerGroup);
c3nav._routeLayers[level[0]] = L.layerGroup().addTo(layerGroup);
@ -1572,7 +1572,7 @@ c3nav = {
},
_latlng_to_name: function (latlng) {
var level = c3nav.current_level();
return 'c:' + String(c3nav.level_labels_by_id[level]) + ':' + Math.round(latlng.lng * 100) / 100 + ':' + Math.round(latlng.lat * 100) / 100;
return 'c:' + String(c3nav.level_indices_by_id[level]) + ':' + Math.round(latlng.lng * 100) / 100 + ':' + Math.round(latlng.lat * 100) / 100;
},
_click_anywhere_load: function (nearby, latlng) {
if (!c3nav._click_anywhere_popup && !latlng) return;

View file

@ -40,7 +40,7 @@ from c3nav.mapdata.models.locations import (LocationGroup, LocationRedirect, Pos
from c3nav.mapdata.models.report import Report, ReportUpdate
from c3nav.mapdata.schemas.models import SlimLocationSchema
from c3nav.mapdata.utils.locations import (get_location_by_id_for_request, get_location_by_slug_for_request,
levels_by_short_label_for_request)
levels_by_level_index_for_request)
from c3nav.mapdata.utils.user import can_access_editor, get_user_data
from c3nav.mapdata.views import set_tile_access_cookie
from c3nav.routing.models import RouteOptions
@ -134,7 +134,7 @@ def map_index(request, mode=None, slug=None, slug2=None, details=None, options=N
'nearby': True if nearby else False,
}
levels = levels_by_short_label_for_request(request)
levels = levels_by_level_index_for_request(request)
level = levels.get(pos.level, None) if pos else None
if level is not None:
@ -198,7 +198,7 @@ def map_index(request, mode=None, slug=None, slug2=None, details=None, options=N
from c3nav.mapdata.models.theme import Theme
ctx = {
'bounds': json.dumps(Source.max_bounds(), separators=(',', ':')),
'levels': json.dumps(tuple((level.pk, level.short_label) for level in levels.values()), separators=(',', ':')),
'levels': json.dumps(tuple((level.pk, level.level_index, level.short_label) for level in levels.values()), separators=(',', ':')),
'state': json.dumps(state, separators=(',', ':'), cls=DjangoJSONEncoder),
'tile_cache_server': settings.TILE_CACHE_SERVER,
'initial_level': settings.INITIAL_LEVEL,