Fix bug where metatagging would not fully calculate in some cases

This commit is contained in:
pietervdvn 2021-10-04 00:18:08 +02:00
parent 27a43fdbe0
commit 65470cbac5
8 changed files with 34 additions and 20 deletions

View file

@ -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
}
)
},

View file

@ -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)
}

View file

@ -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(
{

View file

@ -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)
}
});

View file

@ -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")
}

View file

@ -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;
}

View file

@ -9,7 +9,7 @@
clear: right;
}
.wikipedia-article svg, img {
.wikipedia-article svg, .wikipedia-article img {
width: unset;
height: unset;
display: unset;

View file

@ -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 -----------------