edit stops should fetch stops for area / route
This commit is contained in:
parent
0d051bcbb7
commit
338e5a4ead
|
@ -18,8 +18,11 @@ def area(request, slug):
|
||||||
area = get_object_or_404_json(Area, slug=slug)
|
area = get_object_or_404_json(Area, slug=slug)
|
||||||
stops = [stop.get_geojson() for stop in Stop.objects.filter(area=area)]
|
stops = [stop.get_geojson() for stop in Stop.objects.filter(area=area)]
|
||||||
return render_to_json_response({
|
return render_to_json_response({
|
||||||
'type': 'FeatureCollection',
|
'area': area.get_dict(),
|
||||||
'features': stops
|
'stops': {
|
||||||
|
'type': 'FeatureCollection',
|
||||||
|
'features': stops
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
def routes(request):
|
def routes(request):
|
||||||
|
|
|
@ -51,6 +51,17 @@ class Area(models.Model):
|
||||||
geometry = models.PolygonField(blank=True, null=True)
|
geometry = models.PolygonField(blank=True, null=True)
|
||||||
alt_names = generic.GenericRelation("AlternativeName")
|
alt_names = generic.GenericRelation("AlternativeName")
|
||||||
|
|
||||||
|
def get_dict(self):
|
||||||
|
return {
|
||||||
|
'id': self.id,
|
||||||
|
'code': self.code,
|
||||||
|
'slug': self.slug,
|
||||||
|
'name': self.name,
|
||||||
|
'name_mr': self.name_mr,
|
||||||
|
'display_name': self.display_name
|
||||||
|
#FIXME add alt_names and geometry
|
||||||
|
}
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return "/area/%s/" % self.name
|
return "/area/%s/" % self.name
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
html, body {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wrapper {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#listsCol {
|
||||||
|
width: 24%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mapCol {
|
||||||
|
width: 50%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#formCol {
|
||||||
|
width: 24%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.listWrapper {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
|
@ -13,14 +13,16 @@ $(function() {
|
||||||
$that.data("loaded", true);
|
$that.data("loaded", true);
|
||||||
var $list = $('#' + name + 'List');
|
var $list = $('#' + name + 'List');
|
||||||
var url = API_BASE + name + "/";
|
var url = API_BASE + name + "/";
|
||||||
$.get(url, {}, function(items) {
|
var $loadingLi = $('<div />').text("Loading...").appendTo($list);
|
||||||
|
$.getJSON(url, {}, function(items) {
|
||||||
|
$loadingLi.remove();
|
||||||
$.each(items, function(i,v) {
|
$.each(items, function(i,v) {
|
||||||
var $li = $('<li />')
|
var $li = $('<div />')
|
||||||
.addClass("listItem")
|
.addClass("listItem")
|
||||||
.text(v)
|
.text(v)
|
||||||
.appendTo($list);
|
.appendTo($list);
|
||||||
});
|
});
|
||||||
}, "json");
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.listWrapper').hide();
|
$('.listWrapper').hide();
|
||||||
|
@ -29,4 +31,38 @@ $(function() {
|
||||||
$that.addClass("selected");
|
$that.addClass("selected");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.list').click(function(e) {
|
||||||
|
var name = $(this).attr("id").replace("List", "");
|
||||||
|
var $target = $(e.target);
|
||||||
|
if (!target.hasClass('list')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($target.data("loading")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($target.data("hasList")) {
|
||||||
|
$target.find(".stopList").toggle();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var url = API_BASE + name + "/" + $target.text();
|
||||||
|
$target.data("loading", true);
|
||||||
|
$.getJSON(url, {}, function(area) {
|
||||||
|
var stops = area.stops.features;
|
||||||
|
var $stopsList = getStopsList(stops);
|
||||||
|
$target.append($stopsList);
|
||||||
|
$target.data("hasList", true);
|
||||||
|
$target.data("loading", false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function getStopsList(stops) {
|
||||||
|
var $ul = $('<ul />').addClass("stopsList");
|
||||||
|
$.each(stops, function(i,v) {
|
||||||
|
var props = v.properties;
|
||||||
|
var geom = v.geometry;
|
||||||
|
var $li = $('<li />').addClass("stopItem").data("slug", props.slug).data("geometry", geom).text(props.display_name).appendTo($ul);
|
||||||
|
});
|
||||||
|
return $ul;
|
||||||
|
}
|
||||||
|
|
|
@ -19,13 +19,13 @@
|
||||||
<div id="listsWrapper">
|
<div id="listsWrapper">
|
||||||
<div id="areas" class="listWrapper">
|
<div id="areas" class="listWrapper">
|
||||||
<input type="text" id="areasSearch" class="listSearch" />
|
<input type="text" id="areasSearch" class="listSearch" />
|
||||||
<ul id="areasList">
|
<div id="areasList" class="list">
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="routes" class="listWrapper">
|
<div id="routes" class="listWrapper">
|
||||||
<input type="text" id="routesSearch" class="listSearch" />
|
<input type="text" id="routesSearch" class="listSearch" />
|
||||||
<ul id="routesList">
|
<div id="routesList" class="list">
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user