Tweaking the loading screen
This commit is contained in:
parent
dd63ed7ab0
commit
b8b63dc34c
6 changed files with 59 additions and 91 deletions
|
@ -294,83 +294,43 @@ export default class SimpleMetaTaggers {
|
|||
return true;
|
||||
}
|
||||
|
||||
// _isOpen is calculated dynamically on every call
|
||||
Object.defineProperty(feature.properties, "_isOpen", {
|
||||
enumerable: false,
|
||||
configurable: true,
|
||||
get: () => {
|
||||
if (feature.properties.id === "node/7464543832") {
|
||||
console.log("Getting _isOpen for ", feature.properties.i)
|
||||
const tags = feature.properties
|
||||
if (tags.opening_hours === undefined) {
|
||||
return;
|
||||
}
|
||||
if (tags._country === undefined) {
|
||||
return;
|
||||
}
|
||||
delete feature.properties._isOpen
|
||||
feature.properties._isOpen = undefined
|
||||
const tagsSource = state.allElements.getEventSourceById(feature.properties.id);
|
||||
tagsSource.addCallbackAndRunD(tags => {
|
||||
// Install a listener to the tags...
|
||||
if (tags.opening_hours === undefined) {
|
||||
return;
|
||||
}
|
||||
if (tags._country === undefined) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const [lon, lat] = GeoOperations.centerpointCoordinates(feature)
|
||||
const oh = new opening_hours(tags["opening_hours"], {
|
||||
lat: lat,
|
||||
lon: lon,
|
||||
address: {
|
||||
country_code: tags._country.toLowerCase()
|
||||
}
|
||||
}, {tag_key: "opening_hours"});
|
||||
|
||||
// AUtomatically triggered on the next change (and a bit below)
|
||||
const updateTags = () => {
|
||||
const oldValueIsOpen = tags["_isOpen"];
|
||||
const oldNextChange = tags["_isOpen:nextTrigger"] ?? 0;
|
||||
|
||||
if (oldNextChange > (new Date()).getTime() &&
|
||||
tags["_isOpen:oldvalue"] === tags["opening_hours"] // Check that changes have to be made
|
||||
&& tags["_isOpen"] !== undefined) {
|
||||
// Already calculated and should not yet be triggered
|
||||
return false;
|
||||
}
|
||||
|
||||
// Recalculate!
|
||||
tags["_isOpen"] = oh.getState() ? "yes" : "no";
|
||||
const comment = oh.getComment();
|
||||
if (comment) {
|
||||
tags["_isOpen:description"] = comment;
|
||||
}
|
||||
|
||||
if (oldValueIsOpen !== tags._isOpen) {
|
||||
tagsSource.ping();
|
||||
}
|
||||
|
||||
const nextChange = oh.getNextChange();
|
||||
if (nextChange !== undefined) {
|
||||
const timeout = nextChange.getTime() - (new Date()).getTime();
|
||||
tags["_isOpen:nextTrigger"] = nextChange.getTime();
|
||||
tags["_isOpen:oldvalue"] = tags.opening_hours
|
||||
window.setTimeout(
|
||||
() => {
|
||||
console.log("Updating the _isOpen tag for ", tags.id, ", it's timer expired after", timeout);
|
||||
updateTags();
|
||||
},
|
||||
timeout
|
||||
)
|
||||
}
|
||||
try {
|
||||
const [lon, lat] = GeoOperations.centerpointCoordinates(feature)
|
||||
const oh = new opening_hours(tags["opening_hours"], {
|
||||
lat: lat,
|
||||
lon: lon,
|
||||
address: {
|
||||
country_code: tags._country.toLowerCase()
|
||||
}
|
||||
updateTags();
|
||||
} catch (e) {
|
||||
console.warn("Error while parsing opening hours of ", tags.id, e);
|
||||
delete tags._isOpen
|
||||
tags["_isOpen"] = "parse_error";
|
||||
}
|
||||
}, {tag_key: "opening_hours"});
|
||||
|
||||
})
|
||||
return undefined
|
||||
}
|
||||
})
|
||||
return true;
|
||||
// Recalculate!
|
||||
return oh.getState() ? "yes" : "no";
|
||||
|
||||
} catch (e) {
|
||||
console.warn("Error while parsing opening hours of ", tags.id, e);
|
||||
delete tags._isOpen
|
||||
tags["_isOpen"] = "parse_error";
|
||||
}
|
||||
}});
|
||||
|
||||
|
||||
const tagsSource = state.allElements.getEventSourceById(feature.properties.id);
|
||||
|
||||
|
||||
|
||||
})
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue