mirror of
https://github.com/stylersnico/librenms.git
synced 2026-07-28 08:02:41 +02:00
Fix getVisibleParent when no parent is visible. Add tests for getVisibleParent. Fixes #265
This commit is contained in:
@@ -105,6 +105,7 @@ markers.on('clusterclick', function (a) {
|
||||
|
||||
### Getting the visible parent of a marker
|
||||
If you have a marker in your MarkerClusterGroup and you want to get the visible parent of it (Either itself or a cluster it is contained in that is currently visible on the map).
|
||||
This will return null if the marker and its parent clusters are not visible currently (they are not near the visible viewpoint)
|
||||
```
|
||||
var visibleOne = markerClusterGroup.getVisibleParent(myMarker);
|
||||
console.log(visibleOne.getLatLng());
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
<script type="text/javascript" src="suites/eventsSpec.js"></script>
|
||||
<script type="text/javascript" src="suites/getBoundsSpec.js"></script>
|
||||
<script type="text/javascript" src="suites/getLayersSpec.js"></script>
|
||||
<script type="text/javascript" src="suites/getVisibleParentSpec.js"></script>
|
||||
|
||||
<script type="text/javascript" src="suites/NonPointSpec.js"></script>
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
describe('getVisibleParent', function () {
|
||||
var map, div;
|
||||
beforeEach(function () {
|
||||
div = document.createElement('div');
|
||||
div.style.width = '200px';
|
||||
div.style.height = '200px';
|
||||
document.body.appendChild(div);
|
||||
|
||||
map = L.map(div, { maxZoom: 18 });
|
||||
|
||||
map.fitBounds(new L.LatLngBounds([
|
||||
[1, 1],
|
||||
[2, 2]
|
||||
]));
|
||||
});
|
||||
afterEach(function () {
|
||||
document.body.removeChild(div);
|
||||
});
|
||||
|
||||
it('gets the marker if the marker is visible', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var marker = new L.Marker([1.5, 1.5]);
|
||||
|
||||
group.addLayer(marker);
|
||||
map.addLayer(group);
|
||||
|
||||
var vp = group.getVisibleParent(marker);
|
||||
|
||||
expect(vp).to.be(marker);
|
||||
});
|
||||
|
||||
it('gets the visible cluster if it is clustered', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var marker = new L.Marker([1.5, 1.5]);
|
||||
var marker2 = new L.Marker([1.5, 1.5]);
|
||||
|
||||
group.addLayers([marker, marker2]);
|
||||
map.addLayer(group);
|
||||
|
||||
var vp = group.getVisibleParent(marker);
|
||||
|
||||
expect(vp).to.be.a(L.MarkerCluster);
|
||||
expect(vp._icon).to.not.be(null);
|
||||
expect(vp._icon).to.not.be(undefined);
|
||||
});
|
||||
|
||||
it('returns null if the marker and parents are all not visible', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var marker = new L.Marker([5.5, 1.5]);
|
||||
var marker2 = new L.Marker([5.5, 1.5]);
|
||||
|
||||
group.addLayers([marker, marker2]);
|
||||
map.addLayer(group);
|
||||
|
||||
var vp = group.getVisibleParent(marker);
|
||||
|
||||
expect(vp).to.be(null);
|
||||
});
|
||||
});
|
||||
@@ -467,10 +467,10 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
|
||||
getVisibleParent: function (marker) {
|
||||
var vMarker = marker;
|
||||
while (vMarker !== null && !vMarker._icon) {
|
||||
while (vMarker && !vMarker._icon) {
|
||||
vMarker = vMarker.__parent;
|
||||
}
|
||||
return vMarker;
|
||||
return vMarker || null;
|
||||
},
|
||||
|
||||
//Remove the given object from the given array
|
||||
|
||||
Reference in New Issue
Block a user