diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-11-16 20:04:31 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-11-16 20:04:31 +0100 |
commit | 0eca93c576e26e2abe6a1f347b5b1630e8776123 (patch) | |
tree | a0b7de59a470f3d5d8fcdcabab1a8e309849efc4 | |
parent | be7a35065f090c2f5c51eddbb6b3c6817cd9945c (diff) | |
download | Chimère-0eca93c576e26e2abe6a1f347b5b1630e8776123.tar.bz2 Chimère-0eca93c576e26e2abe6a1f347b5b1630e8776123.zip |
Manage inconsistent data
-rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 84 | ||||
-rw-r--r-- | chimere/views.py | 4 |
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 a2d2d5e..2df7d78 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 594f8a8..572aef3 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -791,13 +791,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, |