X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/e5ca823f30e4bf0e705ce71b88711e05413d97c0..48fff2bfeabb9a9bafd78c9cd4a0077e6569b631:/app/assets/javascripts/index/browse.js diff --git a/app/assets/javascripts/index/browse.js b/app/assets/javascripts/index/browse.js index 772690ba3..1140515f5 100644 --- a/app/assets/javascripts/index/browse.js +++ b/app/assets/javascripts/index/browse.js @@ -1,6 +1,5 @@ -function initializeBrowse(map) { +OSM.initializeBrowse = function (map) { var browseBounds; - var selectedLayer; var dataLayer = map.dataLayer; dataLayer.setStyle({ @@ -26,63 +25,49 @@ function initializeBrowse(map) { onSelect(e.layer); }); - map.on('layeradd', function (e) { + map.on("layeradd", function (e) { if (e.layer === dataLayer) { map.on("moveend", updateData); updateData(); } }); - map.on('layerremove', function (e) { + map.on("layerremove", function (e) { if (e.layer === dataLayer) { map.off("moveend", updateData); + $("#browse_status").empty(); } }); function updateData() { - if (map.getZoom() >= 15) { - var bounds = map.getBounds(); - if (!browseBounds || !browseBounds.contains(bounds)) { - browseBounds = bounds; - getData(); - } - } else { - setStatus(I18n.t('browse.start_rjs.zoom_or_select')); + var bounds = map.getBounds(); + if (!browseBounds || !browseBounds.contains(bounds)) { + getData(); } } - function displayFeatureWarning(count, limit, callback) { - clearStatus(); - - var div = document.createElement("div"); - - var p = document.createElement("p"); - p.appendChild(document.createTextNode(I18n.t("browse.start_rjs.loaded_an_area_with_num_features", { num_features: count, max_features: limit }))); - div.appendChild(p); - - var input = document.createElement("input"); - input.type = "submit"; - input.value = I18n.t('browse.start_rjs.load_data'); - input.onclick = callback; - div.appendChild(input); - - $("#browse_content").html(""); - $("#browse_content").append(div); + function displayFeatureWarning(count, limit, add, cancel) { + $("#browse_status").html( + $("
") + .append( + $("

") + .text(I18n.t("browse.start_rjs.load_data")) + .prepend($("").click(cancel))) + .append( + $("
") + .append( + $("

") + .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit }))) + .append( + $("") + .val(I18n.t("browse.start_rjs.load_data")) + .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(); /* @@ -105,21 +90,28 @@ function initializeBrowse(map) { dataLoader = $.ajax({ url: url, success: function (xml) { - clearStatus(); - dataLayer.clearLayers(); - selectedLayer = null; var features = dataLayer.buildFeatures(xml); function addFeatures() { + $("#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); + } + + if (map._objectLayer) { + map._objectLayer.bringToFront(); } dataLoader = null; @@ -128,24 +120,6 @@ function initializeBrowse(map) { } function onSelect(layer) { - // Unselect previously selected feature - if (selectedLayer) { - selectedLayer.setStyle(selectedLayer.originalStyle); - } - - // Redraw in selected style - layer.originalStyle = layer.options; - layer.setStyle({color: '#0000ff', weight: 8}); - - OSM.route('/browse/' + layer.feature.type + '/' + layer.feature.id); - - // Stash the currently drawn feature - selectedLayer = layer; - } - - function setStatus(status) { - } - - function clearStatus() { + OSM.router.route("/" + layer.feature.type + "/" + layer.feature.id); } -} +};