]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/changeset.js
d9c09bab49ee5a288d200eadad22978a2837a9e5
[rails.git] / app / assets / javascripts / changeset.js
1 $(document).ready(function () {
2   var changesets = [], rects = {};
3
4   var map = L.map("changeset_list_map", {
5     attributionControl: false,
6     zoomControl: false
7   }).addLayer(new L.OSM.Mapnik());
8
9   L.OSM.zoom()
10     .addTo(map);
11
12   var group = L.featureGroup().addTo(map);
13
14   $("[data-changeset]").each(function () {
15     var changeset = $(this).data('changeset');
16     if (changeset.bbox) {
17       changeset.bounds = L.latLngBounds([changeset.bbox.minlat, changeset.bbox.minlon],
18                                         [changeset.bbox.maxlat, changeset.bbox.maxlon]);
19       changesets.push(changeset);
20     }
21   });
22
23   changesets.sort(function (a, b) {
24     return b.bounds.getSize() - a.bounds.getSize();
25   });
26
27   for (var i = 0; i < changesets.length; ++i) {
28     var changeset = changesets[i],
29         rect = L.rectangle(changeset.bounds,
30                            {weight: 2, color: "#ee9900", fillColor: "#ffff55", fillOpacity: 0});
31     rect.id = changeset.id;
32     rects[changeset.id] = rect;
33     rect.addTo(group);
34   }
35
36   function highlightChangeset(id) {
37     rects[id].setStyle({fillOpacity: 0.5});
38     $("#changeset_" + id).addClass("selected");
39   }
40
41   function unHighlightChangeset(id) {
42     rects[id].setStyle({fillOpacity: 0});
43     $("#changeset_" + id).removeClass("selected");
44   }
45
46   group.on({
47     mouseover: function (e) {
48       highlightChangeset(e.layer.id);
49     },
50     mouseout: function (e) {
51       unHighlightChangeset(e.layer.id);
52     }
53   });
54
55   $("[data-changeset]").on({
56     mouseover: function () {
57       highlightChangeset($(this).data("changeset").id);
58     },
59     mouseout: function () {
60       unHighlightChangeset($(this).data("changeset").id);
61     }
62   });
63
64   $(window).scroll(function() {
65         if ($(window).scrollTop() > $('.content-heading').outerHeight() + $('#top-bar').outerHeight() ) {
66             $('#changeset_list_map_wrapper').addClass('scrolled');
67         } else {
68             $('#changeset_list_map_wrapper').removeClass('scrolled');
69         }
70   });
71
72   map.fitBounds(OSM.mapParams().bounds || group.getBounds());
73 });