Fix bug where metatagging would not fully calculate in some cases
This commit is contained in:
parent
27a43fdbe0
commit
65470cbac5
8 changed files with 34 additions and 20 deletions
|
@ -353,20 +353,21 @@ export default class FeaturePipeline {
|
|||
|
||||
private applyMetaTags(src: FeatureSourceForLayer) {
|
||||
const self = this
|
||||
console.debug("Applying metatagging onto ", src.name)
|
||||
window.setTimeout(
|
||||
() => {
|
||||
console.debug("Applying metatagging onto ", src.name)
|
||||
const layerDef = src.layer.layerDef;
|
||||
MetaTagging.addMetatags(
|
||||
src.features.data,
|
||||
{
|
||||
memberships: this.relationTracker,
|
||||
getFeaturesWithin: (layerId, bbox: BBox) => self.GetFeaturesWithin(layerId, bbox)
|
||||
},
|
||||
src.layer.layerDef,
|
||||
layerDef,
|
||||
{
|
||||
includeDates: true,
|
||||
// We assume that the non-dated metatags are already set by the cache generator
|
||||
includeNonDates: !src.layer.layerDef.source.isOsmCacheLayer
|
||||
includeNonDates: layerDef.source.geojsonSource === undefined || !layerDef.source.isOsmCacheLayer
|
||||
}
|
||||
)
|
||||
},
|
||||
|
|
|
@ -61,7 +61,15 @@ export default class MetaTagging {
|
|||
// All keys are already defined, we probably already ran this one
|
||||
continue
|
||||
}
|
||||
somethingChanged = somethingChanged || metatag.applyMetaTagsOnFeature(feature, freshness)
|
||||
const newValueAdded = metatag.applyMetaTagsOnFeature(feature, freshness)
|
||||
/* Note that the expression:
|
||||
* `somethingChanged = newValueAdded || metatag.applyMetaTagsOnFeature(feature, freshness)`
|
||||
* Is WRONG
|
||||
*
|
||||
* IF something changed is `true` due to an earlier run, it will short-circuit and _not_ evaluate the right hand of the OR,
|
||||
* thus not running an update!
|
||||
*/
|
||||
somethingChanged = newValueAdded || somethingChanged
|
||||
} catch (e) {
|
||||
console.error("Could not calculate metatag for ", metatag.keys.join(","), ":", e, e.stack)
|
||||
}
|
||||
|
|
|
@ -146,14 +146,14 @@ export default class SimpleMetaTagger {
|
|||
private static country = new SimpleMetaTagger(
|
||||
{
|
||||
keys: ["_country"],
|
||||
doc: "The country code of the property (with latlon2country)"
|
||||
doc: "The country code of the property (with latlon2country)",
|
||||
includesDates: false
|
||||
},
|
||||
feature => {
|
||||
|
||||
((feature, _) => {
|
||||
let centerPoint: any = GeoOperations.centerpoint(feature);
|
||||
const lat = centerPoint.geometry.coordinates[1];
|
||||
const lon = centerPoint.geometry.coordinates[0];
|
||||
|
||||
|
||||
SimpleMetaTagger.coder?.GetCountryCodeFor(lon, lat, (countries: string[]) => {
|
||||
try {
|
||||
const oldCountry = feature.properties["_country"];
|
||||
|
@ -167,7 +167,7 @@ export default class SimpleMetaTagger {
|
|||
}
|
||||
})
|
||||
return false;
|
||||
}
|
||||
})
|
||||
)
|
||||
private static isOpen = new SimpleMetaTagger(
|
||||
{
|
||||
|
|
|
@ -118,7 +118,7 @@ export default class MinimapImplementation extends BaseUIElement implements Mini
|
|||
self.InitMap();
|
||||
self.leafletMap?.data?.invalidateSize()
|
||||
} catch (e) {
|
||||
console.error("Could not construct a minimap:", e)
|
||||
console.warn("Could not construct a minimap:", e)
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ export default class UserBadge extends Toggle {
|
|||
)
|
||||
|
||||
|
||||
this.SetClass("shadow rounded-full h-min overflow-hidden block w-max")
|
||||
this.SetClass("shadow rounded-full h-min overflow-hidden block w-full md:w-max")
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1062,12 +1062,6 @@ video {
|
|||
width: min-content;
|
||||
}
|
||||
|
||||
.w-max {
|
||||
width: -webkit-max-content;
|
||||
width: -moz-max-content;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.w-6 {
|
||||
width: 1.5rem;
|
||||
}
|
||||
|
@ -1076,6 +1070,12 @@ video {
|
|||
width: 50%;
|
||||
}
|
||||
|
||||
.w-max {
|
||||
width: -webkit-max-content;
|
||||
width: -moz-max-content;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.min-w-min {
|
||||
min-width: -webkit-min-content;
|
||||
min-width: -moz-min-content;
|
||||
|
@ -2339,6 +2339,12 @@ li::marker {
|
|||
width: auto;
|
||||
}
|
||||
|
||||
.md\:w-max {
|
||||
width: -webkit-max-content;
|
||||
width: -moz-max-content;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.md\:grid-flow-row {
|
||||
grid-auto-flow: row;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
clear: right;
|
||||
}
|
||||
|
||||
.wikipedia-article svg, img {
|
||||
.wikipedia-article svg, .wikipedia-article img {
|
||||
width: unset;
|
||||
height: unset;
|
||||
display: unset;
|
||||
|
|
3
index.ts
3
index.ts
|
@ -19,8 +19,7 @@ import SimpleMetaTagger from "./Logic/SimpleMetaTagger";
|
|||
MinimapImplementation.initialize()
|
||||
// Workaround for a stupid crash: inject some functions which would give stupid circular dependencies or crash the other nodejs scripts
|
||||
ValidatedTextField.bestLayerAt = (location, layerPref) => AvailableBaseLayers.SelectBestLayerAccordingTo(location, layerPref)
|
||||
|
||||
SimpleMetaTagger.coder = new CountryCoder("https://pietervdvn.github.io/latlon2country/");
|
||||
SimpleMetaTagger.coder = new CountryCoder("https://pietervdvn.github.io/latlon2country/");
|
||||
|
||||
let defaultLayout = ""
|
||||
// --------------------- Special actions based on the parameters -----------------
|
||||
|
|
Loading…
Reference in a new issue