]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/index/export.js
Move sidebar footer elements elsewhere
[rails.git] / app / assets / javascripts / index / export.js
1 OSM.Export = function(map) {
2   var page = {};
3
4   var locationFilter = new L.LocationFilter({
5     enableButton: false,
6     adjustButton: false
7   }).on("change", update);
8
9   function getBounds() {
10     return L.latLngBounds(
11       L.latLng($("#minlat").val(), $("#minlon").val()),
12       L.latLng($("#maxlat").val(), $("#maxlon").val()));
13   }
14
15   function boundsChanged() {
16     var bounds = getBounds();
17
18     map.fitBounds(bounds);
19     locationFilter.setBounds(bounds);
20
21     enableFilter();
22     validateControls();
23   }
24
25   function enableFilter(e) {
26     e.preventDefault();
27
28     $("#drag_box").hide();
29
30     locationFilter.setBounds(map.getBounds().pad(-0.2));
31     locationFilter.enable();
32   }
33
34   function update() {
35     setBounds(locationFilter.isEnabled() ? locationFilter.getBounds() : map.getBounds());
36     validateControls();
37   }
38
39   function setBounds(bounds) {
40     var precision = zoomPrecision(map.getZoom());
41     $("#minlon").val(bounds.getWest().toFixed(precision));
42     $("#minlat").val(bounds.getSouth().toFixed(precision));
43     $("#maxlon").val(bounds.getEast().toFixed(precision));
44     $("#maxlat").val(bounds.getNorth().toFixed(precision));
45   }
46
47   function validateControls() {
48     $("#export_osm_too_large").toggle(getBounds().getSize() > OSM.MAX_REQUEST_AREA);
49     $("#export_commit").toggle(getBounds().getSize() < OSM.MAX_REQUEST_AREA);
50   }
51
52   page.pushstate = page.popstate = function(path) {
53     $("#export_tab").addClass("current");
54     $("#sidebar").removeClass("minimized");
55     map.invalidateSize();
56     $("#sidebar_content").load(path, page.load);
57   };
58
59   page.load = function() {
60     $("#sidebar").removeClass("minimized");
61     map
62       .addLayer(locationFilter)
63       .on("moveend", update);
64
65     $("#maxlat, #minlon, #maxlon, #minlat").change(boundsChanged);
66     $("#drag_box").click(enableFilter);
67     $("#sidebar_content .close").on("click", page.minimizeSidebar);
68
69     update();
70   };
71
72   page.unload = function() {
73     map
74       .removeLayer(locationFilter)
75       .off("moveend", update);
76
77     $("#export_tab").removeClass("current");
78   };
79
80   return page;
81 };