Refactor search JS
This commit is contained in:
parent
f18740a7af
commit
c6cde2653b
3 changed files with 77 additions and 57 deletions
56
app/assets/javascripts/index/search.js
Normal file
56
app/assets/javascripts/index/search.js
Normal file
|
@ -0,0 +1,56 @@
|
|||
function initializeSearch(map) {
|
||||
$("#search_form").submit(submitSearch);
|
||||
|
||||
if ($("#query").val()) {
|
||||
$("#search_form").submit();
|
||||
}
|
||||
|
||||
// Focus the search field for browsers that don't support
|
||||
// the HTML5 'autofocus' attribute
|
||||
if (!("autofocus" in document.createElement("input"))) {
|
||||
$("#query").focus();
|
||||
}
|
||||
|
||||
$("#sidebar_content").on("click", ".search_results_entry a.set_position", clickSearchResult);
|
||||
|
||||
var marker = L.marker([0, 0], {icon: getUserIcon()});
|
||||
|
||||
function submitSearch(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var bounds = map.getBounds();
|
||||
|
||||
$("#sidebar_title").html(I18n.t('site.sidebar.search_results'));
|
||||
$("#sidebar_content").load($(this).attr("action"), {
|
||||
query: $("#query").val(),
|
||||
minlon: bounds.getWest(),
|
||||
minlat: bounds.getSouth(),
|
||||
maxlon: bounds.getEast(),
|
||||
maxlat: bounds.getNorth()
|
||||
});
|
||||
|
||||
openSidebar();
|
||||
}
|
||||
|
||||
function clickSearchResult(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var data = $(this).data(),
|
||||
center = L.latLng(data.lat, data.lon);
|
||||
|
||||
if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
|
||||
map.fitBounds([[data.minLat, data.minLon],
|
||||
[data.maxLat, data.maxLon]]);
|
||||
} else {
|
||||
map.setView(center, data.zoom);
|
||||
}
|
||||
|
||||
marker
|
||||
.setLatLng(center)
|
||||
.addTo(map);
|
||||
|
||||
if (data.type && data.id) {
|
||||
map.addObject(data, { zoom: false, style: { opacity: 0.2, fill: false } });
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue