From 83e66b37052321482edc261192b4631fe175ba1c Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Tue, 10 Jun 2014 21:08:50 +0200 Subject: [PATCH] Improved address preset --- js/id/ui/preset/address.js | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/js/id/ui/preset/address.js b/js/id/ui/preset/address.js index b0e917bad..ff6a04bc6 100644 --- a/js/id/ui/preset/address.js +++ b/js/id/ui/preset/address.js @@ -5,7 +5,8 @@ iD.ui.preset.address = function(field, context) { street, city, postcode, - entity; + entity, + isInitialized; function getStreets() { var extent = entity.extent(context.graph()), @@ -90,6 +91,8 @@ iD.ui.preset.address = function(field, context) { } function address(selection) { + selection.selectAll('.preset-input-wrap').remove(); + var wrap = selection.selectAll('.preset-input-wrap').data([0]), center = entity.extent(context.graph()).center(), addressFormat; @@ -148,6 +151,7 @@ iD.ui.preset.address = function(field, context) { .on('change', change); event.init(); + isInitialized = true; }); } @@ -161,6 +165,14 @@ iD.ui.preset.address = function(field, context) { }); } + function updateTags(tags) { + housename.value(tags['addr:housename'] || ''); + housenumber.value(tags['addr:housenumber'] || ''); + street.value(tags['addr:street'] || ''); + city.value(tags['addr:city'] || ''); + postcode.value(tags['addr:postcode'] || ''); + } + address.entity = function(_) { if (!arguments.length) return entity; entity = _; @@ -168,13 +180,14 @@ iD.ui.preset.address = function(field, context) { }; address.tags = function(tags) { - event.on('init', function () { - housename.value(tags['addr:housename'] || ''); - housenumber.value(tags['addr:housenumber'] || ''); - street.value(tags['addr:street'] || ''); - city.value(tags['addr:city'] || ''); - postcode.value(tags['addr:postcode'] || ''); - }); + if (isInitialized) { + updateTags(tags); + } + else { + event.on('init', function () { + updateTags(tags); + }); + } }; address.focus = function() {