summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-11-16 20:04:31 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-11-18 11:58:32 +0100
commit1613a568856c02b481cd96e46c5bd294fbebe36e (patch)
tree6adb952b3788215ae5b989ef39f9b285e13163b4
parent8b8dac7ba6343107791cdd9062b3037f8c957e73 (diff)
downloadChimère-1613a568856c02b481cd96e46c5bd294fbebe36e.tar.bz2
Chimère-1613a568856c02b481cd96e46c5bd294fbebe36e.zip
Manage inconsistent data
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js84
-rw-r--r--chimere/views.py4
2 files changed, 53 insertions, 35 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index d944561..fa85637 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -739,6 +739,13 @@ function transformCoordToLonLat(coord) {
}
},
_move_end: function(e){
+ // prevent too fast reloading when UI is inconsistent
+ var d = new Date();
+ var n = d.getTime();
+ if (typeof settings._move_end_time != 'undefined'){
+ if ((n - settings._move_end_time) < 500) return;
+ }
+ settings._move_end_time = n;
settings._reload_on_move(e);
},
update_permalink: function(e){
@@ -817,41 +824,48 @@ function transformCoordToLonLat(coord) {
/* zoom & center */
var zoom = items[0];
- var center = items[1].split(':');
- center = [Math.round(center[0] * 1000) / 1000,
- Math.round(center[1] * 1000) / 1000];
- center = ol.proj.transform(
- center,
- EPSG_DISPLAY_PROJECTION,
- EPSG_PROJECTION);
- //methods._set_animation();
- view.setZoom(zoom);
- view.setCenter(center);
-
+ if (zoom){
+ view.setZoom(zoom);
+ }
+ if (items[1]){
+ var center = items[1].split(':');
+ center = [Math.round(center[0] * 1000) / 1000,
+ Math.round(center[1] * 1000) / 1000];
+ center = ol.proj.transform(
+ center,
+ EPSG_DISPLAY_PROJECTION,
+ EPSG_PROJECTION);
+ //methods._set_animation();
+ view.setCenter(center);
+ }
/* layers */
- var layers = items[2].split(':');
- $.each(settings.map.getLayers().getArray(), function(i, l){
- var idx = l.getProperties()['base-layer-idx'];
- if (typeof idx != 'undefined' && String(idx) != '0'){
- if (layers.indexOf(String(idx)) != -1){
- if (!l.getVisible()) l.setVisible(true);
- } else {
- if (l.getVisible()) l.setVisible(false);
+ if (items[2]){
+ var layers = items[2].split(':');
+ $.each(settings.map.getLayers().getArray(), function(i, l){
+ var idx = l.getProperties()['base-layer-idx'];
+ if (typeof idx != 'undefined' && String(idx) != '0'){
+ if (layers.indexOf(String(idx)) != -1){
+ if (!l.getVisible()) l.setVisible(true);
+ } else {
+ if (l.getVisible()) l.setVisible(false);
+ }
}
- }
- });
+ });
+ }
/* categories */
- var checked_categories = items[3].split('-');
- $('#frm_categories .subcategories input:checkbox').each(
- function(index){
- var cat_id = $(this).attr('id').split('_').pop();
- if (checked_categories.indexOf(cat_id) != -1){
- $(this).click();
- } else {
- $(this).attr('checked', '');
- }
- });
+ if (items[3]){
+ var checked_categories = items[3].split('-');
+ $('#frm_categories .subcategories input:checkbox').each(
+ function(index){
+ var cat_id = $(this).attr('id').split('_').pop();
+ if (checked_categories.indexOf(cat_id) != -1){
+ $(this).click();
+ } else {
+ $(this).attr('checked', '');
+ }
+ });
+ }
var routing_speed = items[5];
if (routing_speed)
@@ -955,9 +969,11 @@ function transformCoordToLonLat(coord) {
current_extent[1] = current_extent[1] - y_extent;
current_extent[2] = current_extent[2] + x_extent;
current_extent[3] = current_extent[3] + y_extent;
- settings._cache_boundingbox = current_extent;
- settings._cache_zoom = current_zoom;
-
+ if (!isNaN(current_extent[0]) && !isNaN(current_extent[1])
+ && !isNaN(current_extent[2]) && !isNaN(current_extent[3])){
+ settings._cache_boundingbox = current_extent;
+ settings._cache_zoom = current_zoom;
+ }
if(!init) methods.loadGeoObjects();
}
};
diff --git a/chimere/views.py b/chimere/views.py
index 520cfee..c063038 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -789,13 +789,15 @@ def getGeoObjects(request, area_name, category_ids, status):
bounding_box = []
for attr in ['min_lon', 'min_lat', 'max_lon', 'max_lat']:
value = request.GET.get(attr, None)
- if not value:
+ if not value or value == 'NaN':
bounding_box = None
break
bounding_box.append(value)
if bounding_box:
bounding_box = GEOSPolygon.from_bbox(bounding_box)
zoom_level = request.GET.get('zoom_level', None)
+ if zoom_level == '0':
+ zoom_level = None
jsons, zoom_need_reload = _getGeoObjects(
area_name, category_ids, status, bounding_box=bounding_box,