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