OpenLayers.Feature.Vector.style['default'].strokeWidth = 3;
OpenLayers.Feature.Vector.style['default'].cursor = "pointer";
-function startBrowse() {
+function startBrowse(sidebarHtml) {
map.dataLayer.active = true;
- $("#sidebar_title").html("<%=j t 'browse.start_rjs.data_frame_title' %>");
- $("#sidebar_content").html("<%=j render :partial => "sidebar" %>");
+ $("#sidebar_title").html(I18n.t('browse.start_rjs.data_frame_title'));
+ $("#sidebar_content").html(sidebarHtml);
openSidebar({ onclose: stopBrowse });
browseBoxControl.handler.callbacks.done = endDrag;
map.addControl(browseBoxControl);
- map.events.register("moveend", map, showData);
+ 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' %>");
+ $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas'));
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(hideAreas);
}
-function showData() {
+function updateData() {
if (browseMode == "auto") {
if (map.getZoom() >= 15) {
useMap(false);
} else {
- setStatus("<%=j t 'browse.start_rjs.zoom_or_select' %>");
+ setStatus(I18n.t('browse.start_rjs.zoom_or_select'));
}
}
}
}
map.dataLayer.setVisibility(false);
- map.events.unregister("moveend", map, showData);
+ map.events.unregister("moveend", map, updateData);
}
}
function startDrag() {
- $("#browse_select_box").html("<%=j t 'browse.start_rjs.drag_a_box' %>");
+ $("#browse_select_box").html(I18n.t('browse.start_rjs.drag_a_box'));
browseBoxControl.activate();
}
function hideAreas() {
- $("#browse_hide_areas_box").html("<%=j t 'browse.start_rjs.show_areas' %>");
+ $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.show_areas'));
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(showAreas);
}
function showAreas() {
- $("#browse_hide_areas_box").html("<%=j t 'browse.start_rjs.hide_areas' %>");
+ $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas'));
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(hideAreas);
useMap(true);
}
-$("#browse_select_view").click(useMap);
-
function endDrag(bbox) {
var bounds = bbox.getBounds();
var projected = bounds.clone().transform(map.getProjectionObject(), epsg4326);
browseMode = "manual";
- $("#browse_select_box").html("<%=j t 'browse.start_rjs.manually_select' %>");
+ $("#browse_select_box").html(I18n.t('browse.start_rjs.manually_select'));
$("#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.value = I18n.t('browse.start_rjs.load_data');
+ 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 = {};
+ resp.features = this.format.read(doc);
- 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);
-
- 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);
+ });
}
}
}
var projected = bounds.clone().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
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 }));
+ 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 }));
} else {
- loadGML("/api/<%= API_VERSION %>/map?bbox=" + projected.toBBOX(), reload);
+ loadData("/api/" + OSM.API_VERSION + "/map?bbox=" + projected.toBBOX(), reload);
}
}
-function loadGML(url, reload) {
- setStatus("<%=j t 'browse.start_rjs.loading' %>");
+function loadData(url, reload) {
+ setStatus(I18n.t('browse.start_rjs.loading'));
$("#browse_content").empty();
if (browseDataLayer) browseDataLayer.destroyFeatures();
- browseDataLayer = new OpenLayers.Layer.GML("Data", url, {
- format: OpenLayers.Format.OSM,
- formatOptions: formatOptions,
- maxFeatures: 100,
- requestSuccess: customDataLoader,
+ var maxFeatures = 2000;
+
+ /*@cc_on
+ if (navigator.appVersion < 8) {
+ maxFeatures = 100;
+ } else if (navigator.appVersion < 9) {
+ maxFeatures = 500;
+ }
+ @*/
+
+ 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: maxFeatures,
+ handleRead: customDataLoader
+ }),
+ projection: new OpenLayers.Projection("EPSG:4326"),
displayInLayerSwitcher: false,
styleMap: new OpenLayers.StyleMap({
'default': style,
browseSelectControl.activate();
} else {
browseDataLayer.destroyFeatures();
- browseDataLayer.format(formatOptions);
- browseDataLayer.setUrl(url);
+ browseDataLayer.refresh({ url: url });
}
browseActiveFeature = null;
var heading = document.createElement("p");
heading.className = "browse_heading";
- heading.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.heading' %>"));
+ heading.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.heading')));
browseObjectList.appendChild(heading);
var list = document.createElement("ul");
browseObjectList.appendChild(list);
var link = document.createElement("a");
- link.href = this.url;
- link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.api' %>"));
+ link.href = this.protocol.url;
+ link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.api')));
browseObjectList.appendChild(link);
$("#browse_content").html(browseObjectList);
var link = document.createElement("a");
link.href = "#";
link.onclick = loadObjectList;
- link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.back' %>"));
+ link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.back')));
div.appendChild(link);
var table = document.createElement("table");
var type = featureType(feature);
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id;
- link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.details' %>"));
+ link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.details')));
td.appendChild(link);
var div = document.createElement("div");
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id + "/history";
- link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.show_history' %>"));
+ link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.show_history')));
link.onclick = OpenLayers.Function.bind(loadHistory, {
type: type, feature: feature, link: link
});
function loadHistory() {
this.link.href = "";
- this.link.innerHTML = "<%=j t 'browse.start_rjs.wait' %>";
+ this.link.innerHTML = I18n.t('browse.start_rjs.wait');
- $.ajax("/api/<%= API_VERSION %>/" + this.type + "/" + this.feature.osm_id + "/history", {
+ $.ajax("/api/" + OSM.API_VERSION + "/" + this.type + "/" + this.feature.osm_id + "/history", {
complete: OpenLayers.Function.bind(displayHistory, this)
});
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");
var link = document.createElement("a");
link.href = "/browse/" + this.type + "/" + this.feature.osm_id + "/history";
- link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.details' %>"));
+ link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.details')));
td.appendChild(link);
var div = document.createElement("div");
var nodes = doc.getElementsByTagName(this.type);
var history = document.createElement("ul");
for (var i = nodes.length - 1; i >= 0; i--) {
- var user = nodes[i].getAttribute("user") || "<%=j t 'browse.start_rjs.private_user' %>";
+ var user = nodes[i].getAttribute("user") || I18n.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);
function featureTypeName(feature) {
if (featureType(feature) == "node") {
- return "<%=j t 'browse.start_rjs.object_list.type.node' %>";
+ return I18n.t('browse.start_rjs.object_list.type.node');
} else if (featureType(feature) == "way") {
- return "<%=j t 'browse.start_rjs.object_list.type.way' %>";
+ return I18n.t('browse.start_rjs.object_list.type.way');
}
}
function featureName(feature) {
- if (feature.attributes['name:<%= I18n.locale %>']) {
- return feature.attributes['name:<%= I18n.locale %>'];
+ var lang = $('html').attr('lang');
+ if (feature.attributes['name:' + lang]) {
+ return feature.attributes['name:' + lang];
} else if (feature.attributes.name) {
return feature.attributes.name;
} else {
}
function featureNameSelect(feature) {
- if (feature.attributes['name:<%= I18n.locale %>']) {
- return feature.attributes['name:<%= I18n.locale %>'];
+ var lang = $('html').attr('lang');
+ if (feature.attributes['name:' + lang]) {
+ return feature.attributes['name:' + lang];
} 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 });
}
}
function featureNameHistory(feature) {
- if (feature.attributes['name:<%= I18n.locale %>']) {
- return feature.attributes['name:<%= I18n.locale %>'];
+ var lang = $('html').attr('lang');
+ if (feature.attributes['name:' + lang]) {
+ return feature.attributes['name:' + lang];
} 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 });
}
}
$("#browse_status").hide();
}
-startBrowse();
+startBrowse("<%=j render :partial => "sidebar" %>");