From af4f6df4b5ebe3c748e6d05d53491803dc55692d Mon Sep 17 00:00:00 2001 From: Tykayn Date: Sat, 5 Aug 2023 12:09:14 +0200 Subject: [PATCH] enable conditionnal converter --- .../mappings/engine.ts | 106 +++++++++--------- .../mappings/mapping-config.type.ts | 1 + 2 files changed, 54 insertions(+), 53 deletions(-) diff --git a/mapping_geojson_to_osm_tags/mappings/engine.ts b/mapping_geojson_to_osm_tags/mappings/engine.ts index e47989a8..c8e1aea8 100644 --- a/mapping_geojson_to_osm_tags/mappings/engine.ts +++ b/mapping_geojson_to_osm_tags/mappings/engine.ts @@ -158,63 +158,63 @@ export default class { if (convertedValue) { newProperties[keyConvertedFromMapping] = convertedValue } - } else if (isConfigMappingObject) { - debugLog('convertProperty: is config object') } else { debugLog('convertProperty: no string value') } + // TODO handle config object for complex mapping - // else if (isConfigMappingObject) { - // let newKey = '' - // let configObject = valueConvertedFromMapping - // - // if (configObject.key_converted) { - // newKey = configObject.key_converted - // } - // - // /** - // * gestion des valeurs conditionnelles - // * nous pouvons renseigner une string ou un objet décrivant les transformations à réaliser - // */ - // if (configObject.conditional_values) { - // let keysConditionnalValues = Object.keys(configObject.conditional_values) - // let isFoundValue = keysConditionnalValues.indexOf(valueConvertedFromMapping) - // if (isFoundValue !== -1) { - // let conditionnalConfig :any = keysConditionnalValues[isFoundValue] - // - // if (conditionnalConfig.tags_to_add) { - // // on peut définir un ensemble de tags à rajouter - // newProperties.push(...conditionnalConfig.tags_to_add) - // } - // if (conditionnalConfig.truthy_value) { - // // convertir la valeur, si elle est truthy, la transformer en ce que donne la propriété truthy_value - // // exemple: le jeu de données dit que la colonne cable_t2_attache vaut "True", mais on veut le convertir en "1". - // // on met donc truthy_value: '1' - // if (this.truthyValues.indexOf(valueConvertedFromMapping) !== -1) { - // convertedValue = conditionnalConfig.truthy_value - // } - // } - // if (conditionnalConfig.falsy_value) { - // if (this.falsyValues.indexOf(valueConvertedFromMapping) !== -1) { - // convertedValue = conditionnalConfig.falsy_value - // } - // } - // if (conditionnalConfig.transform_function) { - // // une transformation de la valeur - // // apply transformation to value - // convertedValue = conditionnalConfig.transform_function(valueConvertedFromMapping) - // } - // // use the value converted - // else if (conditionnalConfig.value_converted) { - // convertedValue = conditionnalConfig.value_converted - // } - // } - // } - // - // if (newKey && !configObject.ignore_this_data) { - // newProperties[newKey] = convertedValue - // } - // } + if (isConfigMappingObject) { + debugLog('convertProperty: is config object') + let newKey = '' + let configObject = valueConvertedFromMapping + + if (configObject.key_converted) { + newKey = configObject.key_converted + } + + /** + * gestion des valeurs conditionnelles + * nous pouvons renseigner une string ou un objet décrivant les transformations à réaliser + */ + if (configObject.conditional_values) { + let keysConditionnalValues: any = Object.keys(configObject.conditional_values) + let isFoundValue = keysConditionnalValues.indexOf(valueConvertedFromMapping) + if (isFoundValue !== -1) { + let conditionnalConfig: any = keysConditionnalValues[isFoundValue] + + if (conditionnalConfig.tags_to_add) { + // on peut définir un ensemble de tags à rajouter + newProperties.push(...conditionnalConfig.tags_to_add) + } + if (conditionnalConfig.truthy_value) { + // convertir la valeur, si elle est truthy, la transformer en ce que donne la propriété truthy_value + // exemple: le jeu de données dit que la colonne cable_t2_attache vaut "True", mais on veut le convertir en "1". + // on met donc truthy_value: '1' + if (this.truthyValues.indexOf(valueConvertedFromMapping) !== -1) { + convertedValue = conditionnalConfig.truthy_value + } + } + if (conditionnalConfig.falsy_value) { + if (this.falsyValues.indexOf(valueConvertedFromMapping) !== -1) { + convertedValue = conditionnalConfig.falsy_value + } + } + if (conditionnalConfig.transform_function) { + // une transformation de la valeur + // apply transformation to value + convertedValue = conditionnalConfig.transform_function(valueConvertedFromMapping) + } + // use the value converted + else if (conditionnalConfig.value_converted) { + convertedValue = conditionnalConfig.value_converted + } + } + } + + if (newKey && !configObject.ignore_this_data) { + newProperties[newKey] = convertedValue + } + } } } diff --git a/mapping_geojson_to_osm_tags/mappings/mapping-config.type.ts b/mapping_geojson_to_osm_tags/mappings/mapping-config.type.ts index 906cf20b..a034af60 100644 --- a/mapping_geojson_to_osm_tags/mappings/mapping-config.type.ts +++ b/mapping_geojson_to_osm_tags/mappings/mapping-config.type.ts @@ -21,6 +21,7 @@ export interface FeaturePropertyMappingConfigType{ [key:string]: any, key_converted?:string, truthy_value?:any, + transformer?:Function, } export interface BoundingBoxCoordinatesType{ xMin: number,