]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/index/changeset.js
Render flash in sidebar
[rails.git] / app / assets / javascripts / index / changeset.js
1 OSM.ChangesetList = function(map) {
2   var page = {};
3
4   var group = L.featureGroup()
5     .on({
6       mouseover: function (e) {
7         highlightChangeset(e.layer.id);
8       },
9       mouseout: function (e) {
10         unHighlightChangeset(e.layer.id);
11       }
12     });
13
14   group.getLayerId = function(layer) {
15     return layer.id;
16   };
17
18   function highlightChangeset(id) {
19     group.getLayer(id).setStyle({fillOpacity: 0.5});
20     $("#changeset_" + id).addClass("selected");
21   }
22
23   function unHighlightChangeset(id) {
24     group.getLayer(id).setStyle({fillOpacity: 0});
25     $("#changeset_" + id).removeClass("selected");
26   }
27
28   page.pushstate = page.popstate = function(path) {
29     $("#history_tab").addClass("current");
30     $('#sidebar_content').load(path, page.load);
31   };
32
33   page.load = function() {
34     map.addLayer(group);
35
36     var changesets = [];
37     $("[data-changeset]").each(function () {
38       var changeset = $(this).data('changeset');
39       if (changeset.bbox) {
40         changeset.bounds = L.latLngBounds([changeset.bbox.minlat, changeset.bbox.minlon],
41           [changeset.bbox.maxlat, changeset.bbox.maxlon]);
42         changesets.push(changeset);
43       }
44     });
45
46     changesets.sort(function (a, b) {
47       return b.bounds.getSize() - a.bounds.getSize();
48     });
49
50     for (var i = 0; i < changesets.length; ++i) {
51       var changeset = changesets[i],
52         rect = L.rectangle(changeset.bounds,
53           {weight: 2, color: "#ee9900", fillColor: "#ffff55", fillOpacity: 0});
54       rect.id = changeset.id;
55       rect.addTo(group);
56     }
57
58     $("[data-changeset]").on({
59       mouseover: function () {
60         highlightChangeset($(this).data("changeset").id);
61       },
62       mouseout: function () {
63         unHighlightChangeset($(this).data("changeset").id);
64       }
65     });
66   };
67
68   page.unload = function() {
69     map.removeLayer(group);
70     group.clearLayers();
71     $("#history_tab").removeClass("current");
72   };
73
74   return page;
75 };