X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/652e94485f21ffbae1fc83acdd4f229c5957b7c1..7ad58d1411289ad241a49abb87e414ff13b60173:/app/views/browse/start.js.erb diff --git a/app/views/browse/start.js.erb b/app/views/browse/start.js.erb index 6831f6f6d..1b57f48a0 100644 --- a/app/views/browse/start.js.erb +++ b/app/views/browse/start.js.erb @@ -35,6 +35,8 @@ function startBrowse() { map.events.register("moveend", map, updateData); map.events.triggerEvent("moveend"); + $("#browse_select_view").click(useMap); + $("#browse_select_box").click(startDrag); $("#browse_hide_areas_box").html("<%=j t 'browse.start_rjs.hide_areas' %>"); @@ -133,8 +135,6 @@ function showAreas() { useMap(true); } -$("#browse_select_view").click(useMap); - function endDrag(bbox) { var bounds = bbox.getBounds(); var projected = bounds.clone().transform(map.getProjectionObject(), epsg4326); @@ -149,59 +149,42 @@ function endDrag(bbox) { $("#browse_select_view").show(); } -function displayFeatureWarning() { +function displayFeatureWarning(count, limit, callback) { clearStatus(); var div = document.createElement("div"); var p = document.createElement("p"); - p.appendChild(document.createTextNode(i18n("<%=j t 'browse.start_rjs.loaded_an_area_with_num_features' %>", { num_features: browseFeatureList.length }))); + 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 = "<%=j t 'browse.start_rjs.load_data' %>"; - input.onclick = loadFeatureList; + input.onclick = callback; div.appendChild(input); $("#browse_content").html(""); $("#browse_content").append(div); } -function loadFeatureList() { - browseDataLayer.addFeatures(browseFeatureList); - browseDataLayer.events.triggerEvent("loadend"); - - browseFeatureList = []; - - return false; -} - -function customDataLoader(request) { - if (this.map.dataLayer.active) { +function customDataLoader(resp, options) { + if (map.dataLayer.active) { + var request = resp.priv; var doc = request.responseXML; if (!doc || !doc.documentElement) { doc = request.responseText; } - var options = {}; - - OpenLayers.Util.extend(options, this.formatOptions); - - if (this.map && !this.projection.equals(this.map.getProjectionObject())) { - options.externalProjection = this.projection; - options.internalProjection = this.map.getProjectionObject(); - } - - var gml = this.format ? new this.format(options) : new OpenLayers.Format.GML(options); - - browseFeatureList = gml.read(doc); + resp.features = this.format.read(doc); - if (!this.maxFeatures || browseFeatureList.length <= this.maxFeatures) { - loadFeatureList(); + if (!this.maxFeatures || resp.features.length <= this.maxFeatures) { + options.callback.call(options.scope, resp); } else { - displayFeatureWarning(); + displayFeatureWarning(resp.features.length, this.maxFeatures, function () { + options.callback.call(options.scope, resp); + }); } } } @@ -211,13 +194,13 @@ function getData(bounds, reload) { var size = projected.getWidth() * projected.getHeight(); if (size > <%= MAX_REQUEST_AREA %>) { - setStatus(i18n("<%=j t 'browse.start_rjs.unable_to_load_size', :max_bbox_size => MAX_REQUEST_AREA %>", { bbox_size: size })); + setStatus(I18n.t("browse.start_rjs.unable_to_load_size", { max_bbox_size: <%= MAX_REQUEST_AREA %>, bbox_size: size })); } else { - loadGML("/api/<%= API_VERSION %>/map?bbox=" + projected.toBBOX(), reload); + loadData("/api/<%= API_VERSION %>/map?bbox=" + projected.toBBOX(), reload); } } -function loadGML(url, reload) { +function loadData(url, reload) { setStatus("<%=j t 'browse.start_rjs.loading' %>"); $("#browse_content").empty(); @@ -242,11 +225,17 @@ function loadGML(url, reload) { if (browseDataLayer) browseDataLayer.destroyFeatures(); - browseDataLayer = new OpenLayers.Layer.GML("Data", url, { - format: OpenLayers.Format.OSM, - formatOptions: formatOptions, - maxFeatures: <%= @max_features %>, - requestSuccess: customDataLoader, + browseDataLayer = new OpenLayers.Layer.Vector("Data", { + strategies: [ + new OpenLayers.Strategy.Fixed() + ], + protocol: new OpenLayers.Protocol.HTTP({ + url: url, + format: new OpenLayers.Format.OSM(formatOptions), + maxFeatures: <%= @max_features %>, + handleRead: customDataLoader + }), + projection: new OpenLayers.Projection("EPSG:4326"), displayInLayerSwitcher: false, styleMap: new OpenLayers.StyleMap({ 'default': style, @@ -263,8 +252,7 @@ function loadGML(url, reload) { browseSelectControl.activate(); } else { browseDataLayer.destroyFeatures(); - browseDataLayer.format(formatOptions); - browseDataLayer.setUrl(url); + browseDataLayer.refresh({ url: url }); } browseActiveFeature = null; @@ -307,7 +295,7 @@ function dataLoaded() { browseObjectList.appendChild(list); var link = document.createElement("a"); - link.href = this.url; + link.href = this.protocol.url; link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.api' %>")); browseObjectList.appendChild(link); @@ -453,7 +441,7 @@ function displayHistory(request) { table.appendChild(tr); var heading = document.createElement("td"); - heading.appendChild(document.createTextNode(i18n("<%=j t 'browse.start_rjs.history_for_feature' %>", { feature: featureNameHistory(this.feature) }))); + heading.appendChild(document.createTextNode(I18n.t("browse.start_rjs.history_for_feature", { feature: featureNameHistory(this.feature) }))); tr.appendChild(heading); var td = document.createElement("td"); @@ -474,7 +462,7 @@ function displayHistory(request) { var user = nodes[i].getAttribute("user") || "<%=j t 'browse.start_rjs.private_user' %>"; var timestamp = nodes[i].getAttribute("timestamp"); var item = document.createElement("li"); - item.appendChild(document.createTextNode(i18n("<%=j t 'browse.start_rjs.edited_by_user_at_timestamp' %>", { user: user, timestamp: timestamp }))); + item.appendChild(document.createTextNode(I18n.t("browse.start_rjs.edited_by_user_at_timestamp", { user: user, timestamp: timestamp }))); history.appendChild(item); } div.appendChild(history); @@ -514,9 +502,9 @@ function featureNameSelect(feature) { } else if (feature.attributes.name) { return feature.attributes.name; } else if (featureType(feature) == "node") { - return i18n("<%=j t 'browse.start_rjs.object_list.selected.type.node' %>", { id: feature.osm_id }); + return I18n.t("browse.start_rjs.object_list.selected.type.node", { id: feature.osm_id }); } else if (featureType(feature) == "way") { - return i18n("<%=j t 'browse.start_rjs.object_list.selected.type.way' %>", { id: feature.osm_id }); + return I18n.t("browse.start_rjs.object_list.selected.type.way", { id: feature.osm_id }); } } @@ -526,9 +514,9 @@ function featureNameHistory(feature) { } else if (feature.attributes.name) { return feature.attributes.name; } else if (featureType(feature) == "node") { - return i18n("<%=j t 'browse.start_rjs.object_list.history.type.node' %>", { id: feature.osm_id }); + return I18n.t("browse.start_rjs.object_list.history.type.node", { id: feature.osm_id }); } else if (featureType(feature) == "way") { - return i18n("<%=j t 'browse.start_rjs.object_list.history.type.way' %>", { id: feature.osm_id }); + return I18n.t("browse.start_rjs.object_list.history.type.way", { id: feature.osm_id }); } }