//= require templates/browse/feature_list
//= require templates/browse/feature_history
-$(document).ready(function () {
+function initializeBrowse(map) {
var browseBounds;
var layersById;
var selectedLayer;
var areasHidden = false;
var locationFilter;
- var dataLayer = new L.OSM.DataLayer(null, {
- styles: {
- way: {
- weight: 3,
- color: "#000000",
- opacity: 0.4
- },
- area: {
- weight: 3,
- color: "#ff0000"
- },
- node: {
- color: "#00ff00"
- }
+ var dataLayer = map.dataLayer;
+
+ dataLayer.setStyle({
+ way: {
+ weight: 3,
+ color: "#000000",
+ opacity: 0.4
+ },
+ area: {
+ weight: 3,
+ color: "#ff0000"
+ },
+ node: {
+ color: "#00ff00"
}
});
onSelect(e.layer);
});
- if (OSM.STATUS != 'api_offline' && OSM.STATUS != 'database_offline') {
- map.layersControl.addOverlay(dataLayer, I18n.t("browse.start_rjs.data_layer_name"));
- }
-
map.on('layeradd', function (e) {
if (e.layer === dataLayer) {
$.ajax({ url: "/browse/start", success: function (sidebarHtml) {
locationFilter.on("change", getData);
- $("#sidebar_title").html(I18n.t('browse.start_rjs.data_frame_title'));
$("#sidebar_content").html(sidebarHtml);
- openSidebar();
+ if (browseObjectList) loadObjectList();
map.on("moveend", updateData);
updateData();
- $("#browse_filter_toggle").toggle(enableFilter, disableFilter);
+ $("#browse_filter_toggle").click(toggleFilter);
$("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas'));
- $("#browse_hide_areas_box").toggle(hideAreas, showAreas);
+ $("#browse_hide_areas_box").click(toggleAreas);
$("#sidebar").one("closed", function () {
map.removeLayer(dataLayer);
}
}
- function enableFilter() {
- $("#browse_filter_toggle").html(I18n.t('browse.start_rjs.view_data'));
- locationFilter.setBounds(map.getBounds().pad(-0.2));
- locationFilter.enable();
- getData();
- }
+ function toggleFilter() {
+ if (locationFilter.isEnabled()) {
+ $("#browse_filter_toggle").html(I18n.t('browse.start_rjs.manually_select'));
+ locationFilter.disable();
+ } else {
+ $("#browse_filter_toggle").html(I18n.t('browse.start_rjs.view_data'));
+ locationFilter.setBounds(map.getBounds().pad(-0.2));
+ locationFilter.enable();
+ }
- function disableFilter() {
- $("#browse_filter_toggle").html(I18n.t('browse.start_rjs.manually_select'));
- locationFilter.disable();
getData();
}
- function hideAreas() {
- $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.show_areas'));
- areasHidden = true;
- getData();
- }
+ function toggleAreas(e) {
+ e.preventDefault();
+
+ if (areasHidden) {
+ $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas'));
+ areasHidden = false;
+ } else {
+ $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.show_areas'));
+ areasHidden = true;
+ }
- function showAreas() {
- $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas'));
- areasHidden = false;
getData();
}
$("#browse_content").append(div);
}
+ var dataLoader;
+
function getData() {
var bounds = locationFilter.isEnabled() ? locationFilter.getBounds() : map.getBounds();
var size = bounds.getSize();
setStatus(I18n.t('browse.start_rjs.loading'));
- var url = "/api/" + OSM.API_VERSION + "/map?bbox=" + bounds.toBBOX();
+ var url = "/api/" + OSM.API_VERSION + "/map?bbox=" + bounds.toBBoxString();
/*
* Modern browsers are quite happy showing far more than 100 features in
}
@*/
- $.ajax({
+ if (dataLoader) dataLoader.abort();
+
+ dataLoader = $.ajax({
url: url,
success: function (xml) {
clearStatus();
} else {
displayFeatureWarning(features.length, maxFeatures, addFeatures);
}
+
+ dataLoader = null;
}
});
}
$("#browse_status").html("");
$("#browse_status").hide();
}
-});
+}