]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/changeset.js
Refactor updatelinks to avoid exceptions in updateLocation
[rails.git] / app / assets / javascripts / changeset.js
1 $(document).ready(function () {
2   var highlight;
3
4   function highlightChangeset(id) {
5     var feature = vectors.getFeatureByFid(id);
6     var bounds = feature.geometry.getBounds();
7
8     if (bounds.containsBounds(map.getExtent())) {
9       bounds = map.getExtent().scale(1.1);
10     }
11
12     if (highlight) vectors.removeFeatures(highlight);
13
14     highlight = new OpenLayers.Feature.Vector(bounds.toGeometry(), {}, {
15       strokeWidth: 2,
16       strokeColor: "#ee9900",
17       fillColor: "#ffff55",
18       fillOpacity: 0.5
19     });
20
21     vectors.addFeatures(highlight);
22
23     $("#tr-changeset-" + id).addClass("selected");
24   }
25
26   function unHighlightChangeset(id) {
27     vectors.removeFeatures(highlight);
28
29     $("#tr-changeset-" + id).removeClass("selected");
30   }
31
32   var map = createMap("changeset_list_map", {
33     controls: [
34       new OpenLayers.Control.Navigation(),
35       new OpenLayers.Control.Zoom(),
36       new OpenLayers.Control.SimplePanZoom()
37     ]
38   });
39
40   var bounds = new OpenLayers.Bounds();
41
42   $("[data-changeset]").each(function () {
43     var changeset = $(this).data('changeset');
44     if (changeset.bbox) {
45       var bbox = new OpenLayers.Bounds(changeset.bbox.minlon, changeset.bbox.minlat, changeset.bbox.maxlon, changeset.bbox.maxlat);
46
47       bounds.extend(bbox);
48
49       addBoxToMap(bbox, changeset.id, true);
50     }
51   });
52
53   vectors.events.on({
54     "featureselected": function(feature) {
55       highlightChangeset(feature.feature.fid);
56     },
57     "featureunselected": function(feature) {
58       unHighlightChangeset(feature.feature.fid);
59     }
60   });
61
62   var selectControl = new OpenLayers.Control.SelectFeature(vectors, {
63     multiple: false,
64     hover: true
65   });
66   map.addControl(selectControl);
67   selectControl.activate();
68
69   var params = OSM.mapParams();
70   if (params.bbox) {
71     map.zoomToExtent(proj(new OpenLayers.Bounds(params.minlon, params.minlat, params.maxlon, params.maxlat)));
72   } else {
73     map.zoomToExtent(proj(bounds));
74   }
75
76   $("[data-changeset]").mouseover(function() {
77     highlightChangeset($(this).data("changeset").id);
78   });
79
80   $("[data-changeset]").mouseout(function() {
81     unHighlightChangeset($(this).data("changeset").id);
82   });
83 });