X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/4bfbdcc2f14a7c1f11f67d7454ada8ea36e130ff..efd50cd529990069dc1ca95f66ec6f61471fe29d:/app/assets/javascripts/index/browse.js diff --git a/app/assets/javascripts/index/browse.js b/app/assets/javascripts/index/browse.js index 3ebe9531d..28a830858 100644 --- a/app/assets/javascripts/index/browse.js +++ b/app/assets/javascripts/index/browse.js @@ -1,4 +1,4 @@ -function initializeBrowse(map) { +OSM.initializeBrowse = function (map) { var browseBounds; var selectedLayer; var dataLayer = map.dataLayer; @@ -36,45 +36,34 @@ function initializeBrowse(map) { map.on('layerremove', function (e) { if (e.layer === dataLayer) { map.off("moveend", updateData); - clearStatus(); + $('#browse_status').empty(); } }); function updateData() { - if (map.getZoom() >= 15) { - var bounds = map.getBounds(); - if (!browseBounds || !browseBounds.contains(bounds)) { - browseBounds = bounds; - getData(); - } + var bounds = map.getBounds(); + if (!browseBounds || !browseBounds.contains(bounds)) { + getData(); } } - function displayFeatureWarning(count, limit, callback) { - clearStatus(); - - $('#browse_status').append( + function displayFeatureWarning(count, limit, add, cancel) { + $('#browse_status').html( $("

") - .text(I18n.t("browse.start_rjs.loaded_an_area_with_num_features", { num_features: count, max_features: limit })) + .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit })) + .prepend( + $("") + .click(cancel)) .append( $("") .val(I18n.t('browse.start_rjs.load_data')) - .click(callback))); + .click(add))); } var dataLoader; function getData() { var bounds = map.getBounds(); - var size = bounds.getSize(); - - if (size > OSM.MAX_REQUEST_AREA) { - setStatus(I18n.t("browse.start_rjs.unable_to_load_size", { max_bbox_size: OSM.MAX_REQUEST_AREA, bbox_size: size })); - return; - } - - setStatus(I18n.t('browse.start_rjs.loading')); - var url = "/api/" + OSM.API_VERSION + "/map?bbox=" + bounds.toBBoxString(); /* @@ -103,14 +92,19 @@ function initializeBrowse(map) { var features = dataLayer.buildFeatures(xml); function addFeatures() { - clearStatus(); + $('#browse_status').empty(); dataLayer.addData(features); + browseBounds = bounds; + } + + function cancelAddFeatures() { + $('#browse_status').empty(); } if (features.length < maxFeatures) { addFeatures(); } else { - displayFeatureWarning(features.length, maxFeatures, addFeatures); + displayFeatureWarning(features.length, maxFeatures, addFeatures, cancelAddFeatures); } dataLoader = null; @@ -128,19 +122,9 @@ function initializeBrowse(map) { layer.originalStyle = layer.options; layer.setStyle({color: '#0000ff', weight: 8}); - OSM.route('/browse/' + layer.feature.type + '/' + layer.feature.id); + OSM.router.route('/' + layer.feature.type + '/' + layer.feature.id); // Stash the currently drawn feature selectedLayer = layer; } - - function setStatus(status) { - if($('#browse_status').is(':empty')) { - $('#browse_status').append($('

').text(status)); - } - } - - function clearStatus() { - $('#browse_status').empty(); - } -} +};