From: John Firebaugh Date: Sat, 5 Oct 2013 00:00:44 +0000 (-0700) Subject: Work towards integrating data overlay and browse pages X-Git-Tag: live~4625^2~211 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/e5ca823f30e4bf0e705ce71b88711e05413d97c0?ds=sidebyside Work towards integrating data overlay and browse pages --- diff --git a/app/assets/javascripts/index/browse.js b/app/assets/javascripts/index/browse.js index f00d3999f..772690ba3 100644 --- a/app/assets/javascripts/index/browse.js +++ b/app/assets/javascripts/index/browse.js @@ -1,15 +1,6 @@ -//= require templates/browse/feature -//= require templates/browse/feature_list -//= require templates/browse/feature_history - function initializeBrowse(map) { var browseBounds; - var layersById; var selectedLayer; - var browseObjectList; - var areasHidden = false; - var locationFilter; - var dataLayer = map.dataLayer; dataLayer.setStyle({ @@ -28,7 +19,7 @@ function initializeBrowse(map) { }); dataLayer.isWayArea = function () { - return !areasHidden && L.OSM.DataLayer.prototype.isWayArea.apply(this, arguments); + return false; }; dataLayer.on("click", function (e) { @@ -37,85 +28,27 @@ function initializeBrowse(map) { map.on('layeradd', function (e) { if (e.layer === dataLayer) { - $.ajax({ url: "/browse/start", success: function (sidebarHtml) { - startBrowse(sidebarHtml); - }}); + map.on("moveend", updateData); + updateData(); } }); map.on('layerremove', function (e) { if (e.layer === dataLayer) { - closeSidebar(); + map.off("moveend", updateData); } }); - function startBrowse(sidebarHtml) { - locationFilter = new L.LocationFilter({ - enableButton: false, - adjustButton: false - }).addTo(map); - - locationFilter.on("change", getData); - - $("#sidebar_content").html(sidebarHtml); - - if (browseObjectList) loadObjectList(); - - map.on("moveend", updateData); - updateData(); - - $("#browse_filter_toggle").click(toggleFilter); - - $("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas')); - $("#browse_hide_areas_box").click(toggleAreas); - - $("#sidebar").one("closed", function () { - map.removeLayer(dataLayer); - map.removeLayer(locationFilter); - map.off("moveend", updateData); - locationFilter.off("change", getData); - }); - } - function updateData() { - if (!locationFilter.isEnabled()) { - 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')); + if (map.getZoom() >= 15) { + var bounds = map.getBounds(); + if (!browseBounds || !browseBounds.contains(bounds)) { + browseBounds = bounds; + 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(); + setStatus(I18n.t('browse.start_rjs.zoom_or_select')); } - - 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; - } - - getData(); } function displayFeatureWarning(count, limit, callback) { @@ -140,7 +73,7 @@ function initializeBrowse(map) { var dataLoader; function getData() { - var bounds = locationFilter.isEnabled() ? locationFilter.getBounds() : map.getBounds(); + var bounds = map.getBounds(); var size = bounds.getSize(); if (size > OSM.MAX_REQUEST_AREA) { @@ -174,7 +107,6 @@ function initializeBrowse(map) { success: function (xml) { clearStatus(); - $("#browse_content").empty(); dataLayer.clearLayers(); selectedLayer = null; @@ -182,25 +114,6 @@ function initializeBrowse(map) { function addFeatures() { dataLayer.addData(features); - - layersById = {}; - - dataLayer.eachLayer(function (layer) { - var feature = layer.feature; - layersById[feature.id] = layer; - $.extend(feature, { - typeName: featureTypeName(feature), - url: "/browse/" + feature.type + "/" + feature.id, - name: featureName(feature) - }); - }); - - browseObjectList = $(JST["templates/browse/feature_list"]({ - features: features, - url: url - }))[0]; - - loadObjectList(); } if (features.length < maxFeatures) { @@ -214,25 +127,6 @@ function initializeBrowse(map) { }); } - function viewFeatureLink() { - var layer = layersById[$(this).data("feature-id")]; - - onSelect(layer); - - if (locationFilter.isEnabled()) { - map.panTo(layer.getBounds().getCenter()); - } - - return false; - } - - function loadObjectList() { - $("#browse_content").html(browseObjectList); - $("#browse_content").find("a[data-feature-id]").click(viewFeatureLink); - - return false; - } - function onSelect(layer) { // Unselect previously selected feature if (selectedLayer) { @@ -243,91 +137,15 @@ function initializeBrowse(map) { layer.originalStyle = layer.options; layer.setStyle({color: '#0000ff', weight: 8}); - // If the current object is the list, don't innerHTML="", since that could clear it. - if ($("#browse_content").firstChild == browseObjectList) { - $("#browse_content").removeChild(browseObjectList); - } else { - $("#browse_content").empty(); - } - - var feature = layer.feature; - - $("#browse_content").html(JST["templates/browse/feature"]({ - name: featureNameSelect(feature), - url: "/browse/" + feature.type + "/" + feature.id, - attributes: feature.tags - })); - - $("#browse_content").find("a.browse_show_list").click(loadObjectList); - $("#browse_content").find("a.browse_show_history").click(loadHistory); + OSM.route('/browse/' + layer.feature.type + '/' + layer.feature.id); // Stash the currently drawn feature selectedLayer = layer; } - function loadHistory() { - $(this).attr("href", "").text(I18n.t('browse.start_rjs.wait')); - - var feature = selectedLayer.feature; - - $.ajax({ - url: "/api/" + OSM.API_VERSION + "/" + feature.type + "/" + feature.id + "/history", - success: function (xml) { - if (selectedLayer.feature != feature || $("#browse_content").firstChild == browseObjectList) { - return; - } - - $(this).remove(); - - var history = []; - var nodes = xml.getElementsByTagName(feature.type); - for (var i = nodes.length - 1; i >= 0; i--) { - history.push({ - user: nodes[i].getAttribute("user") || I18n.t('browse.start_rjs.private_user'), - timestamp: nodes[i].getAttribute("timestamp") - }); - } - - $("#browse_content").append(JST["templates/browse/feature_history"]({ - name: featureNameHistory(feature), - url: "/browse/" + feature.type + "/" + feature.id, - history: history - })); - }.bind(this) - }); - - return false; - } - - function featureTypeName(feature) { - return I18n.t('browse.start_rjs.object_list.type.' + feature.type); - } - - function featureName(feature) { - return feature.tags['name:' + $('html').attr('lang')] || - feature.tags.name || - feature.id; - } - - function featureNameSelect(feature) { - return feature.tags['name:' + $('html').attr('lang')] || - feature.tags.name || - I18n.t("browse.start_rjs.object_list.selected.type." + feature.type, { id: feature.id }); - } - - function featureNameHistory(feature) { - return feature.tags['name:' + $('html').attr('lang')] || - feature.tags.name || - I18n.t("browse.start_rjs.object_list.history.type." + feature.type, { id: feature.id }); - } - function setStatus(status) { - $("#browse_status").html(status); - $("#browse_status").show(); } function clearStatus() { - $("#browse_status").html(""); - $("#browse_status").hide(); } } diff --git a/app/assets/javascripts/templates/browse/feature.jst.ejs b/app/assets/javascripts/templates/browse/feature.jst.ejs deleted file mode 100644 index d80c68922..000000000 --- a/app/assets/javascripts/templates/browse/feature.jst.ejs +++ /dev/null @@ -1,15 +0,0 @@ -
- -

<%- name %>

- <%- I18n.t('browse.start_rjs.object_list.details') %> - - - -
- -<%- I18n.t('browse.start_rjs.object_list.back') %> \ No newline at end of file diff --git a/app/assets/javascripts/templates/browse/feature_history.jst.ejs b/app/assets/javascripts/templates/browse/feature_history.jst.ejs deleted file mode 100644 index c579070e1..000000000 --- a/app/assets/javascripts/templates/browse/feature_history.jst.ejs +++ /dev/null @@ -1,10 +0,0 @@ -
-

<%- I18n.t("browse.start_rjs.history_for_feature", {feature: name}) %>

- <%- I18n.t('browse.start_rjs.details') %> - - -
diff --git a/app/assets/javascripts/templates/browse/feature_list.jst.ejs b/app/assets/javascripts/templates/browse/feature_list.jst.ejs deleted file mode 100644 index 7b8a193ad..000000000 --- a/app/assets/javascripts/templates/browse/feature_list.jst.ejs +++ /dev/null @@ -1,13 +0,0 @@ -
-

<%- I18n.t('browse.start_rjs.object_list.heading') %>

-
-
    - <% for (var i = 0; i < features.length; i++) { %> -
  • <%- features[i].typeName %> <%- features[i].name %>
  • - <% } %> -
-
- - - -