mirror of
https://github.com/stylersnico/librenms.git
synced 2026-07-28 00:24:21 +02:00
More tests and more making them work
This commit is contained in:
+64
-35
@@ -43,6 +43,18 @@
|
||||
expect(polygon._container.parentNode).to.be(map._pathRoot);
|
||||
});
|
||||
|
||||
it('Removes polygons from map when removed', function () {
|
||||
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayer(polygon);
|
||||
map.addLayer(group);
|
||||
map.removeLayer(group);
|
||||
|
||||
expect(polygon._container.parentNode).to.be(null);
|
||||
});
|
||||
|
||||
describe('hasLayer', function () {
|
||||
it('returns false when not added', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
@@ -89,37 +101,6 @@
|
||||
});
|
||||
});
|
||||
|
||||
describe('getBounds', function() {
|
||||
it('returns the correct bounds before adding to the map', function() {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayer(polygon);
|
||||
|
||||
expect(group.getBounds()).to.be(polygon.getBounds());
|
||||
});
|
||||
|
||||
it('returns the correct bounds after adding to the map after adding polygon', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayer(polygon);
|
||||
map.addLayer(group);
|
||||
|
||||
expect(group.getBounds()).to.be(polygon.getBounds());
|
||||
});
|
||||
|
||||
it('returns the correct bounds after adding to the map before adding polygon', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
map.addLayer(group);
|
||||
group.addLayer(polygon);
|
||||
|
||||
expect(group.getBounds()).to.be(polygon.getBounds());
|
||||
});
|
||||
});
|
||||
|
||||
describe('removeLayer', function() {
|
||||
it('removes before adding to map', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
@@ -147,8 +128,8 @@
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayers(polygon);
|
||||
map.addLayers(group);
|
||||
group.addLayer(polygon);
|
||||
map.addLayer(group);
|
||||
expect(group.hasLayer(polygon)).to.be(true);
|
||||
|
||||
group.removeLayer(polygon);
|
||||
@@ -159,12 +140,60 @@
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
map.addLayers(group);
|
||||
group.addLayers(polygon);
|
||||
map.addLayer(group);
|
||||
group.addLayer(polygon);
|
||||
expect(group.hasLayer(polygon)).to.be(true);
|
||||
|
||||
group.removeLayer(polygon);
|
||||
expect(group.hasLayer(polygon)).to.be(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('removeLayers', function () {
|
||||
it('removes before adding to map', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayer(polygon);
|
||||
expect(group.hasLayer(polygon)).to.be(true);
|
||||
|
||||
group.removeLayers([polygon]);
|
||||
expect(group.hasLayer(polygon)).to.be(false);
|
||||
});
|
||||
|
||||
it('removes before adding to map', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayers([polygon]);
|
||||
expect(group.hasLayer(polygon)).to.be(true);
|
||||
|
||||
group.removeLayers([polygon]);
|
||||
expect(group.hasLayer(polygon)).to.be(false);
|
||||
});
|
||||
|
||||
it('removes after adding to map after adding polygon', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayer(polygon);
|
||||
map.addLayer(group);
|
||||
expect(group.hasLayer(polygon)).to.be(true);
|
||||
|
||||
group.removeLayers([polygon]);
|
||||
expect(group.hasLayer(polygon)).to.be(false);
|
||||
});
|
||||
|
||||
it('removes after adding to map before adding polygon', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
map.addLayer(group);
|
||||
group.addLayer(polygon);
|
||||
expect(group.hasLayer(polygon)).to.be(true);
|
||||
|
||||
group.removeLayers([polygon]);
|
||||
expect(group.hasLayer(polygon)).to.be(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,91 @@
|
||||
describe('adding non point data works', 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);
|
||||
});
|
||||
|
||||
describe('polygon layer', function() {
|
||||
describe('getBounds', function() {
|
||||
it('returns the correct bounds before adding to the map', function() {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayer(polygon);
|
||||
|
||||
expect(group.getBounds().equals(polygon.getBounds())).to.be(true);
|
||||
});
|
||||
|
||||
it('returns the correct bounds after adding to the map after adding polygon', function() {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
group.addLayer(polygon);
|
||||
map.addLayer(group);
|
||||
|
||||
expect(group.getBounds().equals(polygon.getBounds())).to.be(true);
|
||||
});
|
||||
|
||||
it('returns the correct bounds after adding to the map before adding polygon', function() {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]);
|
||||
|
||||
map.addLayer(group);
|
||||
group.addLayer(polygon);
|
||||
|
||||
expect(group.getBounds().equals(polygon.getBounds())).to.be(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('marker layers', function () {
|
||||
describe('getBounds', function () {
|
||||
it('returns the correct bounds before adding to the map', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var marker = new L.Marker([1.5, 1.5]);
|
||||
var marker2 = new L.Marker([1.0, 5.0]);
|
||||
var marker3 = new L.Marker([6.0, 2.0]);
|
||||
|
||||
group.addLayers([marker, marker2, marker3]);
|
||||
|
||||
expect(group.getBounds().equals(L.latLngBounds([1.0, 5.0], [6.0, 1.5]))).to.be(true);
|
||||
});
|
||||
|
||||
it('returns the correct bounds after adding to the map after adding markers', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var marker = new L.Marker([1.5, 1.5]);
|
||||
var marker2 = new L.Marker([1.0, 5.0]);
|
||||
var marker3 = new L.Marker([6.0, 2.0]);
|
||||
|
||||
group.addLayers([marker, marker2, marker3]);
|
||||
map.addLayer(group);
|
||||
|
||||
expect(group.getBounds().equals(L.latLngBounds([1.0, 5.0], [6.0, 1.5]))).to.be(true);
|
||||
});
|
||||
|
||||
it('returns the correct bounds after adding to the map before adding markers', function () {
|
||||
var group = new L.MarkerClusterGroup();
|
||||
var marker = new L.Marker([1.5, 1.5]);
|
||||
var marker2 = new L.Marker([1.0, 5.0]);
|
||||
var marker3 = new L.Marker([6.0, 2.0]);
|
||||
|
||||
map.addLayer(group);
|
||||
group.addLayers([marker, marker2, marker3]);
|
||||
|
||||
expect(group.getBounds().equals(L.latLngBounds([1.0, 5.0], [6.0, 1.5]))).to.be(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
+45
-19
@@ -40,6 +40,9 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
this._featureGroup = L.featureGroup();
|
||||
this._featureGroup.on(L.FeatureGroup.EVENTS, this._propagateEvent, this);
|
||||
|
||||
this._nonPointGroup = L.featureGroup();
|
||||
this._nonPointGroup.on(L.FeatureGroup.EVENTS, this._propagateEvent, this);
|
||||
|
||||
this._inZoomAnimation = 0;
|
||||
this._needsClustering = [];
|
||||
this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of
|
||||
@@ -57,6 +60,12 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
return this.addLayers(array);
|
||||
}
|
||||
|
||||
//Don't cluster non point data
|
||||
if (!layer.getLatLng) {
|
||||
this._nonPointGroup.addLayer(layer);
|
||||
return this;
|
||||
}
|
||||
|
||||
if (!this._map) {
|
||||
this._needsClustering.push(layer);
|
||||
return this;
|
||||
@@ -66,6 +75,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
//If we have already clustered we'll need to add this one to a cluster
|
||||
|
||||
if (this._unspiderfy) {
|
||||
@@ -95,9 +105,9 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
|
||||
removeLayer: function (layer) {
|
||||
|
||||
//If the layer doesn't have a getLatLng then we can't cluster it, so add it to our child featureGroup
|
||||
//Non point layers
|
||||
if (!layer.getLatLng) {
|
||||
this._featureGroup.removeLayer(layer);
|
||||
this._nonPointGroup.removeLayer(layer);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -133,19 +143,16 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
//Takes an array of markers and adds them in bulk
|
||||
addLayers: function (layersArray) {
|
||||
var i, l, m,
|
||||
fg = this._featureGroup;
|
||||
|
||||
if (!this._map) {
|
||||
this._needsClustering = this._needsClustering.concat(layersArray);
|
||||
return this;
|
||||
}
|
||||
onMap = this._map,
|
||||
fg = this._featureGroup,
|
||||
npg = this._nonPointGroup;
|
||||
|
||||
for (i = 0, l = layersArray.length; i < l; i++) {
|
||||
m = layersArray[i];
|
||||
|
||||
//Not point data, can't be clustered
|
||||
if (!m.getLatLng) {
|
||||
fg.addLayer(m);
|
||||
npg.addLayer(m);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -153,6 +160,11 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!onMap) {
|
||||
this._needsClustering.push(m);
|
||||
continue;
|
||||
}
|
||||
|
||||
this._addLayer(m, this._maxZoom);
|
||||
|
||||
//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will
|
||||
@@ -165,14 +177,16 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
}
|
||||
}
|
||||
|
||||
//Update the icons of all those visible clusters that were affected
|
||||
fg.eachLayer(function (c) {
|
||||
if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {
|
||||
c._updateIcon();
|
||||
}
|
||||
});
|
||||
if (onMap) {
|
||||
//Update the icons of all those visible clusters that were affected
|
||||
fg.eachLayer(function (c) {
|
||||
if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {
|
||||
c._updateIcon();
|
||||
}
|
||||
});
|
||||
|
||||
this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
|
||||
this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
@@ -180,11 +194,14 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
//Takes an array of markers and removes them in bulk
|
||||
removeLayers: function (layersArray) {
|
||||
var i, l, m,
|
||||
fg = this._featureGroup;
|
||||
fg = this._featureGroup,
|
||||
npg = this._nonPointGroup;
|
||||
|
||||
if (!this._map) {
|
||||
for (i = 0, l = layersArray.length; i < l; i++) {
|
||||
this._arraySplice(this._needsClustering, layersArray[i]);
|
||||
m = layersArray[i];
|
||||
this._arraySplice(this._needsClustering, m);
|
||||
npg.removeLayer(m);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@@ -193,6 +210,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
m = layersArray[i];
|
||||
|
||||
if (!m.__parent) {
|
||||
npg.removeLayer(m);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -235,6 +253,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
|
||||
//Remove all the visible layers
|
||||
this._featureGroup.clearLayers();
|
||||
this._nonPointGroup.clearLayers();
|
||||
|
||||
this.eachLayer(function (marker) {
|
||||
delete marker.__parent;
|
||||
@@ -258,6 +277,9 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
bounds.extend(this._needsClustering[i].getLatLng());
|
||||
}
|
||||
}
|
||||
|
||||
bounds.extend(this._nonPointGroup.getBounds());
|
||||
|
||||
return bounds;
|
||||
},
|
||||
|
||||
@@ -273,6 +295,8 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
for (i = markers.length - 1; i >= 0; i--) {
|
||||
method.call(context, markers[i]);
|
||||
}
|
||||
|
||||
this._nonPointGroup.eachLayer(method, context);
|
||||
},
|
||||
|
||||
//Returns true if the given layer is in this MarkerClusterGroup
|
||||
@@ -296,7 +320,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
}
|
||||
}
|
||||
|
||||
return !!(layer.__parent && layer.__parent._group === this);
|
||||
return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);
|
||||
},
|
||||
|
||||
//Zoom down to show the given layer (spiderfying if necessary) then calls the callback
|
||||
@@ -343,6 +367,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
var i, l, layer;
|
||||
|
||||
this._featureGroup.onAdd(map);
|
||||
this._nonPointGroup.onAdd(map);
|
||||
|
||||
if (!this._gridClusters) {
|
||||
this._generateInitialClusters();
|
||||
@@ -408,6 +433,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||
|
||||
//Clean up all the layers we added to the map
|
||||
this._featureGroup.onRemove(map);
|
||||
this._nonPointGroup.onRemove(map);
|
||||
|
||||
this._map = null;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user