forked from MapComplete/MapComplete
Add metacalculation on currentview
This commit is contained in:
parent
c76b0a6340
commit
65b1891cb6
8 changed files with 85 additions and 27 deletions
|
@ -70,7 +70,7 @@ export default class MetaTagging {
|
|||
|
||||
// @ts-ignore
|
||||
metatag.applyMetaTagsOnFeature(feature, freshness, layer)
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
|
@ -121,8 +121,8 @@ export default class MetaTagging {
|
|||
const func = new Function("feat", "return " + code + ";");
|
||||
|
||||
const f = (feature: any) => {
|
||||
|
||||
|
||||
|
||||
|
||||
delete feature.properties[key]
|
||||
Object.defineProperty(feature.properties, key, {
|
||||
configurable: true,
|
||||
|
@ -144,7 +144,7 @@ export default class MetaTagging {
|
|||
return result;
|
||||
} catch (e) {
|
||||
if (MetaTagging.errorPrintCount < MetaTagging.stopErrorOutputAt) {
|
||||
console.warn("Could not calculate a calculated tag for key "+key+" defined by " + code + " (in layer"+layerId+") due to \n" + e + "\n. Are you the theme creator? Doublecheck your code. Note that the metatags might not be stable on new features", e, e.stack)
|
||||
console.warn("Could not calculate a calculated tag for key " + key + " defined by " + code + " (in layer" + layerId + ") due to \n" + e + "\n. Are you the theme creator? Doublecheck your code. Note that the metatags might not be stable on new features", e, e.stack)
|
||||
MetaTagging.errorPrintCount++;
|
||||
if (MetaTagging.errorPrintCount == MetaTagging.stopErrorOutputAt) {
|
||||
console.error("Got ", MetaTagging.stopErrorOutputAt, " errors calculating this metatagging - stopping output now")
|
||||
|
@ -162,6 +162,8 @@ export default class MetaTagging {
|
|||
return functions;
|
||||
}
|
||||
|
||||
private static retaggingFuncCache = new Map<string, ((feature: any) => void)[]>()
|
||||
|
||||
private static createRetaggingFunc(layer: LayerConfig):
|
||||
((params: ExtraFuncParams, feature: any) => void) {
|
||||
|
||||
|
@ -170,6 +172,13 @@ export default class MetaTagging {
|
|||
return undefined;
|
||||
}
|
||||
|
||||
let functions = MetaTagging.retaggingFuncCache.get(layer.id);
|
||||
if (functions === undefined) {
|
||||
functions = MetaTagging.createFunctionsForFeature(layer.id, calculatedTags)
|
||||
MetaTagging.retaggingFuncCache.set(layer.id, functions)
|
||||
}
|
||||
|
||||
|
||||
return (params: ExtraFuncParams, feature) => {
|
||||
const tags = feature.properties
|
||||
if (tags === undefined) {
|
||||
|
@ -177,7 +186,6 @@ export default class MetaTagging {
|
|||
}
|
||||
|
||||
try {
|
||||
const functions = MetaTagging.createFunctionsForFeature(layer.id, calculatedTags)
|
||||
ExtraFunctions.FullPatchFeature(params, feature);
|
||||
for (const f of functions) {
|
||||
f(feature);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue