don't fetch overlay updates when the overlay is not shown
This commit is contained in:
parent
e5ac1e12df
commit
a06c6033fc
1 changed files with 14 additions and 6 deletions
|
@ -3143,6 +3143,7 @@ L.SquareGridLayer = L.Layer.extend({
|
||||||
class DataOverlay {
|
class DataOverlay {
|
||||||
levels = null;
|
levels = null;
|
||||||
feature_geometries = {};
|
feature_geometries = {};
|
||||||
|
fetch_timeout = null;
|
||||||
|
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
this.id = options.id;
|
this.id = options.id;
|
||||||
|
@ -3167,8 +3168,8 @@ class DataOverlay {
|
||||||
|
|
||||||
this.update_features(features);
|
this.update_features(features);
|
||||||
|
|
||||||
if (this.update_interval !== null) {
|
if (this.update_interval !== null && this.fetch_timeout === null) {
|
||||||
window.setTimeout(() => {
|
this.fetch_timeout = window.setTimeout(() => {
|
||||||
this.fetch_features()
|
this.fetch_features()
|
||||||
.catch(err => console.error(err))
|
.catch(err => console.error(err))
|
||||||
}, this.update_interval);
|
}, this.update_interval);
|
||||||
|
@ -3176,12 +3177,16 @@ class DataOverlay {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetch_features() {
|
async fetch_features() {
|
||||||
|
if (this.fetch_timeout !== null) {
|
||||||
|
window.clearTimeout(this.fetch_timeout);
|
||||||
|
this.fetch_timeout = null;
|
||||||
|
}
|
||||||
const features= await c3nav_api.get(`mapdata/dataoverlayfeatures/?overlay=${this.id}`);
|
const features= await c3nav_api.get(`mapdata/dataoverlayfeatures/?overlay=${this.id}`);
|
||||||
|
|
||||||
this.update_features(features);
|
this.update_features(features);
|
||||||
|
|
||||||
if (this.update_interval !== null) {
|
if (this.update_interval !== null && this.fetch_timeout === null) {
|
||||||
window.setTimeout(() => {
|
this.fetch_timeout = window.setTimeout(() => {
|
||||||
this.fetch_features()
|
this.fetch_features()
|
||||||
.catch(err => console.error(err))
|
.catch(err => console.error(err))
|
||||||
}, this.update_interval);
|
}, this.update_interval);
|
||||||
|
@ -3267,6 +3272,9 @@ class DataOverlay {
|
||||||
async enable(levels) {
|
async enable(levels) {
|
||||||
if (!this.levels) {
|
if (!this.levels) {
|
||||||
await this.create();
|
await this.create();
|
||||||
|
} else {
|
||||||
|
this.fetch_features()
|
||||||
|
.catch(err => console.error(err));
|
||||||
}
|
}
|
||||||
for (const id in levels) {
|
for (const id in levels) {
|
||||||
if (id in this.levels) {
|
if (id in this.levels) {
|
||||||
|
@ -3281,7 +3289,7 @@ class DataOverlay {
|
||||||
levels[id].removeLayer(this.levels[id]);
|
levels[id].removeLayer(this.levels[id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
window.clearTimeout(this.fetch_timeout);
|
||||||
|
this.fetch_timeout = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue