-function initializeBrowse(map) {
+OSM.initializeBrowse = function (map) {
var browseBounds;
- var selectedLayer;
var dataLayer = map.dataLayer;
dataLayer.setStyle({
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(
+ $("<div class='p-3'>").append(
+ $("<div class='d-flex'>").append(
+ $("<h2 class='flex-grow-1 text-break'>")
+ .text(I18n.t("browse.start_rjs.load_data")),
+ $("<div>").append(
+ $("<button type='button' class='btn-close'>")
+ .attr("aria-label", I18n.t("javascripts.close"))
+ .click(cancel))),
+ $("<p class='alert alert-warning'>")
+ .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit })),
+ $("<input type='submit' class='btn btn-primary d-block mx-auto'>")
+ .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();
/*
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;
}
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);
}
-}
+};