From 6d7f012666cbbccfecbadfee6886c72fb9c79fdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 28 Nov 2017 11:03:22 +0100 Subject: [PATCH] _location_details_loaded --- src/c3nav/mapdata/models/base.py | 1 + src/c3nav/site/static/site/js/c3nav.js | 72 +++++++++++++------------- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/src/c3nav/mapdata/models/base.py b/src/c3nav/mapdata/models/base.py index 5bf892f9..fc7a83fd 100644 --- a/src/c3nav/mapdata/models/base.py +++ b/src/c3nav/mapdata/models/base.py @@ -34,6 +34,7 @@ class SerializableMixin(models.Model): def details_display(self): return { + 'id': self.pk, 'display': [ (str(_('Type')), str(self.__class__._meta.verbose_name)), (str(_('ID')), str(self.pk)), diff --git a/src/c3nav/site/static/site/js/c3nav.js b/src/c3nav/site/static/site/js/c3nav.js index cf13372c..9fd1cde1 100644 --- a/src/c3nav/site/static/site/js/c3nav.js +++ b/src/c3nav/site/static/site/js/c3nav.js @@ -139,44 +139,44 @@ c3nav = { if (parseInt($location_details.attr('data-id')) !== location.id) { $location_details.addClass('loading').attr('data-id', location.id); var location_id = location.id; - $.getJSON('/api/locations/'+location.id+'/display', function (data) { - if (parseInt($location_details.attr('data-id')) !== location_id) { - // loaded too late, information no longer needed - return; - } - var line, sublocations, loc, loclist, elem = $('
'); - for (var i = 0; i < data.display.length; i++) { - line = data.display[i]; - elem.append($('
').text(line[0])); - if (typeof line[1] === 'string') { - elem.append($('
').text(line[1])); - } else if (line[1] === null) { - elem.append($('
').text('-')); - } else { - sublocations = (line[1].length === undefined) ? [line[1]] : line[1]; - loclist = $('
'); - console.log(sublocations); - for (var j = 0; j < sublocations.length; j++) { - loc = sublocations[j]; - if (loc.can_searc) { - loclist.append($('').attr('href', '/l/' + loc.slug + '/details/').attr('data-id', loc.id).click(function (e) { - e.preventDefault(); - c3nav._locationinput_set($('#destination-input'), c3nav.locations_by_id[parseInt($(this).attr('data-id'))]); - c3nav.update_state(false, false, true); - }).text(loc.title)); - } else { - loclist.append($('').text(loc.title)); - } - } - elem.append(loclist); - } - - } - $location_details.find('.details-body').html('').append(elem); - $location_details.removeClass('loading').find('.editor').attr('href', data.editor_url); - }); + $.getJSON('/api/locations/'+location.id+'/display', c3nav._location_details_loaded); } }, + _location_details_loaded: function(data) { + if (parseInt($location_details.attr('data-id')) !== data.id) { + // loaded too late, information no longer needed + return; + } + var line, sublocations, loc, loclist, elem = $('
'); + for (var i = 0; i < data.display.length; i++) { + line = data.display[i]; + elem.append($('
').text(line[0])); + if (typeof line[1] === 'string') { + elem.append($('
').text(line[1])); + } else if (line[1] === null) { + elem.append($('
').text('-')); + } else { + sublocations = (line[1].length === undefined) ? [line[1]] : line[1]; + loclist = $('
'); + console.log(sublocations); + for (var j = 0; j < sublocations.length; j++) { + loc = sublocations[j]; + if (loc.can_searc) { + loclist.append($('').attr('href', '/l/' + loc.slug + '/details/').attr('data-id', loc.id).click(function (e) { + e.preventDefault(); + c3nav._locationinput_set($('#destination-input'), c3nav.locations_by_id[parseInt($(this).attr('data-id'))]); + c3nav.update_state(false, false, true); + }).text(loc.title)); + } else { + loclist.append($('').text(loc.title)); + } + } + elem.append(loclist); + } + } + $location_details.find('.details-body').html('').append(elem); + $location_details.removeClass('loading').find('.editor').attr('href', data.editor_url); + }, _equal_states: function (a, b) { if (a.routing !== b.routing || a.details !== b.details) return false; if ((a.origin && a.origin.id) !== (b.origin && b.origin.id)) return false;