@@ -24,16 +24,16 @@ export function uiFieldAddress(field, context) {
24
24
[ 'housenumber' , 'street' ] ,
25
25
[ 'city' , 'postcode' ]
26
26
]
27
- } ] ;
27
+ } ] ;
28
28
29
29
fileFetcher . get ( 'address_formats' )
30
- . then ( function ( d ) {
30
+ . then ( function ( d ) {
31
31
_addressFormats = d ;
32
32
if ( ! _selection . empty ( ) ) {
33
33
_selection . call ( address ) ;
34
34
}
35
35
} )
36
- . catch ( function ( ) { /* ignore */ } ) ;
36
+ . catch ( function ( ) { /* ignore */ } ) ;
37
37
38
38
39
39
function getNear ( isAddressable , type , searchRadius , resultProp ) {
@@ -70,7 +70,7 @@ export function uiFieldAddress(field, context) {
70
70
klass : `address-${ type } `
71
71
} ;
72
72
} )
73
- . sort ( function ( a , b ) {
73
+ . sort ( function ( a , b ) {
74
74
return a . dist - b . dist ;
75
75
} ) ;
76
76
@@ -114,9 +114,10 @@ export function uiFieldAddress(field, context) {
114
114
}
115
115
116
116
function getNearPostcodes ( ) {
117
- return [ ... new Set ( [ ]
117
+ const postcodes = [ ]
118
118
. concat ( getNearValues ( 'postcode' ) )
119
- . concat ( getNear ( d => d . tags . postal_code , 'postcode' , 200 , 'postal_code' ) ) ) ] ;
119
+ . concat ( getNear ( d => d . tags . postal_code , 'postcode' , 200 , 'postal_code' ) ) ;
120
+ return utilArrayUniqBy ( postcodes , item => item . value ) ;
120
121
}
121
122
122
123
function getNearValues ( key ) {
@@ -152,17 +153,17 @@ export function uiFieldAddress(field, context) {
152
153
] ;
153
154
154
155
var widths = addressFormat . widths || {
155
- housenumber : 1 / 5 , unit : 1 / 5 , street : 1 / 2 , place : 1 / 2 ,
156
- city : 2 / 3 , state : 1 / 4 , postcode : 1 / 3
156
+ housenumber : 1 / 5 , unit : 1 / 5 , street : 1 / 2 , place : 1 / 2 ,
157
+ city : 2 / 3 , state : 1 / 4 , postcode : 1 / 3
157
158
} ;
158
159
159
160
function row ( r ) {
160
161
// Normalize widths.
161
- var total = r . reduce ( function ( sum , key ) {
162
+ var total = r . reduce ( function ( sum , key ) {
162
163
return sum + ( widths [ key ] || 0.5 ) ;
163
164
} , 0 ) ;
164
165
165
- return r . map ( function ( key ) {
166
+ return r . map ( function ( key ) {
166
167
return {
167
168
id : key ,
168
169
width : ( widths [ key ] || 0.5 ) / total
@@ -171,7 +172,7 @@ export function uiFieldAddress(field, context) {
171
172
}
172
173
173
174
var rows = _wrap . selectAll ( '.addr-row' )
174
- . data ( addressFormat . format , function ( d ) {
175
+ . data ( addressFormat . format , function ( d ) {
175
176
return d . toString ( ) ;
176
177
} ) ;
177
178
@@ -201,23 +202,23 @@ export function uiFieldAddress(field, context) {
201
202
switch ( d . id ) {
202
203
case 'street' :
203
204
nearValues = getNearStreets ;
204
- break ;
205
+ break ;
205
206
case 'place' :
206
207
nearValues = getNearPlaces ;
207
- break ;
208
+ break ;
208
209
case 'street+place' :
209
210
nearValues = ( ) => [ ]
210
211
. concat ( getNearStreets ( ) )
211
212
. concat ( getNearPlaces ( ) ) ;
212
213
d . isAutoStreetPlace = true ;
213
214
d . id = _tags [ `${ field . key } :place` ] ? 'place' : 'street' ;
214
- break ;
215
+ break ;
215
216
case 'city' :
216
217
nearValues = getNearCities ;
217
- break ;
218
+ break ;
218
219
case 'postcode' :
219
220
nearValues = getNearPostcodes ;
220
- break ;
221
+ break ;
221
222
default :
222
223
nearValues = getNearValues ;
223
224
}
@@ -226,12 +227,12 @@ export function uiFieldAddress(field, context) {
226
227
. call ( uiCombobox ( context , `address-${ d . isAutoStreetPlace ? 'street-place' : d . id } ` )
227
228
. minItems ( 1 )
228
229
. caseSensitive ( true )
229
- . fetcher ( function ( typedValue , callback ) {
230
+ . fetcher ( function ( typedValue , callback ) {
230
231
typedValue = typedValue . toLowerCase ( ) ;
231
232
callback ( nearValues ( d . id )
232
233
. filter ( v => v . value . toLowerCase ( ) . indexOf ( typedValue ) !== - 1 ) ) ;
233
234
} )
234
- . on ( 'accept' , function ( selected ) {
235
+ . on ( 'accept' , function ( selected ) {
235
236
if ( d . isAutoStreetPlace ) {
236
237
// set subtag depending on selected entry
237
238
d . id = selected ? selected . type : 'street' ;
@@ -283,7 +284,7 @@ export function uiFieldAddress(field, context) {
283
284
284
285
285
286
function change ( onInput ) {
286
- return function ( ) {
287
+ return function ( ) {
287
288
var tags = { } ;
288
289
289
290
_wrap . selectAll ( 'input' )
@@ -316,7 +317,7 @@ export function uiFieldAddress(field, context) {
316
317
317
318
318
319
function updatePlaceholder ( inputSelection ) {
319
- return inputSelection . attr ( 'placeholder' , function ( subfield ) {
320
+ return inputSelection . attr ( 'placeholder' , function ( subfield ) {
320
321
if ( _tags && Array . isArray ( _tags [ field . key + ':' + subfield . id ] ) ) {
321
322
return t ( 'inspector.multiple_values' ) ;
322
323
}
@@ -339,28 +340,28 @@ export function uiFieldAddress(field, context) {
339
340
340
341
function updateTags ( tags ) {
341
342
utilGetSetValue ( _wrap . selectAll ( 'input' ) , subfield => {
342
- var val ;
343
- if ( subfield . isAutoStreetPlace ) {
344
- const streetKey = `${ field . key } :street` ;
345
- const placeKey = `${ field . key } :place` ;
346
-
347
- if ( tags [ streetKey ] !== undefined || tags [ placeKey ] === undefined ) {
348
- val = tags [ streetKey ] ;
349
- subfield . id = 'street' ;
350
- } else {
351
- val = tags [ placeKey ] ;
352
- subfield . id = 'place' ;
353
- }
343
+ var val ;
344
+ if ( subfield . isAutoStreetPlace ) {
345
+ const streetKey = `${ field . key } :street` ;
346
+ const placeKey = `${ field . key } :place` ;
347
+
348
+ if ( tags [ streetKey ] !== undefined || tags [ placeKey ] === undefined ) {
349
+ val = tags [ streetKey ] ;
350
+ subfield . id = 'street' ;
354
351
} else {
355
- val = tags [ `${ field . key } :${ subfield . id } ` ] ;
352
+ val = tags [ placeKey ] ;
353
+ subfield . id = 'place' ;
356
354
}
357
- return typeof val === 'string' ? val : '' ;
358
- } )
359
- . attr ( 'title' , function ( subfield ) {
355
+ } else {
356
+ val = tags [ `${ field . key } :${ subfield . id } ` ] ;
357
+ }
358
+ return typeof val === 'string' ? val : '' ;
359
+ } )
360
+ . attr ( 'title' , function ( subfield ) {
360
361
var val = tags [ field . key + ':' + subfield . id ] ;
361
362
return ( val && Array . isArray ( val ) ) ? val . filter ( Boolean ) . join ( '\n' ) : undefined ;
362
363
} )
363
- . classed ( 'mixed' , function ( subfield ) {
364
+ . classed ( 'mixed' , function ( subfield ) {
364
365
return Array . isArray ( tags [ field . key + ':' + subfield . id ] ) ;
365
366
} )
366
367
. call ( updatePlaceholder ) ;
@@ -372,20 +373,20 @@ export function uiFieldAddress(field, context) {
372
373
}
373
374
374
375
375
- address . entityIDs = function ( val ) {
376
+ address . entityIDs = function ( val ) {
376
377
if ( ! arguments . length ) return _entityIDs ;
377
378
_entityIDs = val ;
378
379
return address ;
379
380
} ;
380
381
381
382
382
- address . tags = function ( tags ) {
383
+ address . tags = function ( tags ) {
383
384
_tags = tags ;
384
385
updateTags ( tags ) ;
385
386
} ;
386
387
387
388
388
- address . focus = function ( ) {
389
+ address . focus = function ( ) {
389
390
var node = _wrap . selectAll ( 'input' ) . node ( ) ;
390
391
if ( node ) node . focus ( ) ;
391
392
} ;
0 commit comments