Skip to content

Commit a5d3f2c

Browse files
committed
Code review feedback
Run setupShowHideGroupsOnZoom lazily
1 parent 377be0f commit a5d3f2c

File tree

3 files changed

+65
-55
lines changed

3 files changed

+65
-55
lines changed

inst/htmlwidgets/leaflet.js

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -496,30 +496,6 @@ function preventUnintendedZoomOnScroll(map) {
496496
});
497497
}
498498

499-
function setupShowHideGroupsOnZoom(map) {
500-
function setVisibility(layer, visible) {
501-
if (visible !== map.hasLayer(layer)) {
502-
if (visible) map.addLayer(layer);else map.removeLayer(layer);
503-
}
504-
}
505-
506-
function showHideGroupsOnZoom() {
507-
if (!map.layerManager) return;
508-
509-
var zoom = map.getZoom();
510-
map.layerManager.getAllGroupNames().forEach(function (group) {
511-
var layer = map.layerManager.getLayerGroup(group, false);
512-
if (layer && typeof layer.zoomLevels !== "undefined") {
513-
setVisibility(layer, layer.zoomLevels === true || layer.zoomLevels.indexOf(zoom) >= 0);
514-
}
515-
});
516-
}
517-
518-
map.showHideGroupsOnZoom = showHideGroupsOnZoom;
519-
map.on("zoomend", showHideGroupsOnZoom);
520-
showHideGroupsOnZoom();
521-
}
522-
523499
_htmlwidgets2.default.widget({
524500

525501
name: "leaflet",
@@ -558,7 +534,6 @@ _htmlwidgets2.default.widget({
558534
}
559535

560536
preventUnintendedZoomOnScroll(map);
561-
setupShowHideGroupsOnZoom(map);
562537

563538
// Store some state in the map object
564539
map.leafletr = {
@@ -1964,6 +1939,34 @@ methods.showGroup = function (group) {
19641939
});
19651940
};
19661941

1942+
function setupShowHideGroupsOnZoom(map) {
1943+
if (map.leafletr._hasInitializedShowHideGroups) {
1944+
return;
1945+
}
1946+
map.leafletr._hasInitializedShowHideGroups = true;
1947+
1948+
function setVisibility(layer, visible) {
1949+
if (visible !== map.hasLayer(layer)) {
1950+
if (visible) map.addLayer(layer);else map.removeLayer(layer);
1951+
}
1952+
}
1953+
1954+
function showHideGroupsOnZoom() {
1955+
if (!map.layerManager) return;
1956+
1957+
var zoom = map.getZoom();
1958+
map.layerManager.getAllGroupNames().forEach(function (group) {
1959+
var layer = map.layerManager.getLayerGroup(group, false);
1960+
if (layer && typeof layer.zoomLevels !== "undefined") {
1961+
setVisibility(layer, layer.zoomLevels === true || layer.zoomLevels.indexOf(zoom) >= 0);
1962+
}
1963+
});
1964+
}
1965+
1966+
map.showHideGroupsOnZoom = showHideGroupsOnZoom;
1967+
map.on("zoomend", showHideGroupsOnZoom);
1968+
}
1969+
19671970
methods.setGroupOptions = function (group, options) {
19681971
var _this8 = this;
19691972

@@ -1974,6 +1977,8 @@ methods.setGroupOptions = function (group, options) {
19741977
layer.zoomLevels = (0, _util.asArray)(options.zoomLevels);
19751978
}
19761979
});
1980+
1981+
setupShowHideGroupsOnZoom(this);
19771982
this.showHideGroupsOnZoom();
19781983
};
19791984

javascript/src/index.js

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -79,35 +79,6 @@ function preventUnintendedZoomOnScroll(map) {
7979
});
8080
}
8181

82-
function setupShowHideGroupsOnZoom(map) {
83-
function setVisibility(layer, visible) {
84-
if (visible !== map.hasLayer(layer)) {
85-
if (visible)
86-
map.addLayer(layer);
87-
else
88-
map.removeLayer(layer);
89-
}
90-
}
91-
92-
function showHideGroupsOnZoom() {
93-
if (!map.layerManager)
94-
return;
95-
96-
let zoom = map.getZoom();
97-
map.layerManager.getAllGroupNames().forEach(group => {
98-
let layer = map.layerManager.getLayerGroup(group, false);
99-
if (layer && typeof(layer.zoomLevels) !== "undefined") {
100-
setVisibility(layer,
101-
layer.zoomLevels === true || layer.zoomLevels.indexOf(zoom) >= 0);
102-
}
103-
});
104-
}
105-
106-
map.showHideGroupsOnZoom = showHideGroupsOnZoom;
107-
map.on("zoomend", showHideGroupsOnZoom);
108-
showHideGroupsOnZoom();
109-
}
110-
11182
HTMLWidgets.widget({
11283

11384
name: "leaflet",
@@ -144,7 +115,6 @@ HTMLWidgets.widget({
144115
}
145116

146117
preventUnintendedZoomOnScroll(map);
147-
setupShowHideGroupsOnZoom(map);
148118

149119
// Store some state in the map object
150120
map.leafletr = {

javascript/src/methods.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,39 @@ methods.showGroup = function(group) {
871871
});
872872
};
873873

874+
function setupShowHideGroupsOnZoom(map) {
875+
if (map.leafletr._hasInitializedShowHideGroups) {
876+
return;
877+
}
878+
map.leafletr._hasInitializedShowHideGroups = true;
879+
880+
function setVisibility(layer, visible) {
881+
if (visible !== map.hasLayer(layer)) {
882+
if (visible)
883+
map.addLayer(layer);
884+
else
885+
map.removeLayer(layer);
886+
}
887+
}
888+
889+
function showHideGroupsOnZoom() {
890+
if (!map.layerManager)
891+
return;
892+
893+
let zoom = map.getZoom();
894+
map.layerManager.getAllGroupNames().forEach(group => {
895+
let layer = map.layerManager.getLayerGroup(group, false);
896+
if (layer && typeof(layer.zoomLevels) !== "undefined") {
897+
setVisibility(layer,
898+
layer.zoomLevels === true || layer.zoomLevels.indexOf(zoom) >= 0);
899+
}
900+
});
901+
}
902+
903+
map.showHideGroupsOnZoom = showHideGroupsOnZoom;
904+
map.on("zoomend", showHideGroupsOnZoom);
905+
}
906+
874907
methods.setGroupOptions = function(group, options) {
875908
$.each(asArray(group), (i, g) => {
876909
let layer = this.layerManager.getLayerGroup(g, true);
@@ -879,6 +912,8 @@ methods.setGroupOptions = function(group, options) {
879912
layer.zoomLevels = asArray(options.zoomLevels);
880913
}
881914
});
915+
916+
setupShowHideGroupsOnZoom(this);
882917
this.showHideGroupsOnZoom();
883918
};
884919

0 commit comments

Comments
 (0)