@@ -83,11 +83,7 @@ define([
8383 this . toggleHousenumberAdditionFields ( this . getAddressData ( ) ) ;
8484 var formData = this . source . get ( this . customScope ) ;
8585 if ( formData . experius_postcode_housenumber ) {
86- if ( this . getSettings ( ) . useStreet2AsHouseNumber ) {
87- registry . get ( this . parentName + '.street.1' ) . set ( 'value' , formData . experius_postcode_housenumber ) . set ( 'error' , false ) ;
88- } else {
89- registry . get ( this . parentName + '.street.0' ) . set ( 'value' , formData . street + ' ' + formData . experius_postcode_housenumber ) . set ( 'error' , false ) ;
90- }
86+ this . postcodeHasChanged ( ) ;
9187 }
9288 } else if ( registry . get ( this . parentName + '.experius_postcode_fieldset.experius_postcode_disable' ) . get ( 'visible' ) ) {
9389 this . hideFields ( ) ;
@@ -187,17 +183,10 @@ define([
187183 registry . get ( self . parentName + '.street.1' ) . set ( 'value' , formData . experius_postcode_housenumber ) . set ( 'error' , false ) ;
188184 self . debug ( 'address on two lines' ) ;
189185 } else {
190- registry . get ( self . parentName + '.street.0' ) . set ( 'value' , formData . street + ' ' + formData . experius_postcode_housenumber ) . set ( 'error' , false ) ;
186+ registry . get ( self . parentName + '.street.0' ) . set ( 'value' , self . formatAddress ( ) ) . set ( 'error' , false ) ;
191187 self . debug ( 'address on single line' ) ;
192188 }
193189 registry . get ( self . parentName + '.postcode' ) . set ( 'value' , formData . experius_postcode_postcode ) . set ( 'error' , false ) ;
194- if (
195- typeof registry . get ( self . parentName + '.street.0' ) . get ( 'value' ) == 'object' ||
196- registry . get ( self . parentName + '.street.0' ) . get ( 'value' ) == '[object Object] '
197- ) {
198- this . debug ( 'Fixing street.0 as it contains [object Object]' ) ;
199- registry . get ( self . parentName + '.street.0' ) . set ( 'value' , '' ) . set ( 'error' , false ) ;
200- }
201190 this . debug ( 'postcode or housenumber not set. ' + 'housenumber:' + formData . experius_postcode_housenumber + ' postcode:' + formData . experius_postcode_postcode ) ;
202191 }
203192 } ,
@@ -408,7 +397,11 @@ define([
408397 registry . get ( self . parentName + '.street.1' ) . set ( 'value' , response . houseNumber . toString ( ) ) . set ( 'error' , false ) ;
409398 self . debug ( 'address on two lines' ) ;
410399 } else {
411- registry . get ( self . parentName + '.street.0' ) . set ( 'value' , response . street + ' ' + response . houseNumber ) . set ( 'error' , false ) ;
400+ var address = self . formatAddress ( {
401+ street : response . street ,
402+ housenumber : response . houseNumber
403+ } ) ;
404+ registry . get ( self . parentName + '.street.0' ) . set ( 'value' , address ) . set ( 'error' , false ) ;
412405 self . debug ( 'address on single line' ) ;
413406 }
414407 registry . get ( self . parentName + '.country_id' ) . set ( 'value' , 'NL' ) . set ( 'error' , false ) ;
@@ -533,16 +526,13 @@ define([
533526 registry . get ( parentParentName + '.street.1' ) . set ( 'value' , new_street_value ) ;
534527 console . log ( new_street_value ) ;
535528 } else {
536- current_street_value = this . removeOldAdditionFromString ( registry . get ( parentParentName + '.street.0' ) . get ( 'value' ) ) ;
537- addition = ( newValue ) ? ' ' + newValue : '' ;
538- new_street_value = current_street_value + addition ;
539- registry . get ( parentParentName + '.street.0' ) . set ( 'value' , new_street_value ) ;
529+ registry . get ( parentParentName + '.street.0' ) . set ( 'value' , this . formatAddress ( ) ) ;
540530 }
541531 }
542532
543533 this . previousValue = newValue ;
544534 } ,
545-
535+
546536 removeOldAdditionFromString : function ( street ) {
547537 if ( this . previousValue != undefined && this . previousValue && street ) {
548538 var streetParts = ( "" + street ) . split ( " " ) ;
@@ -553,6 +543,73 @@ define([
553543 return street ;
554544 }
555545 return street ;
546+ } ,
547+
548+ formatAddress : function ( overrideData ) {
549+ var formData = this . source . get ( this . customScope ) ;
550+ if ( ! formData ) {
551+ return null ;
552+ }
553+ overrideData = overrideData || { } ;
554+
555+ // User overridden value or the one in formdata
556+ var address = overrideData . street || ( typeof ( formData . street ) == 'object' ? formData . street [ 0 ] : formData . street ) ;
557+ var postcode = overrideData . postcode || formData . experius_postcode_postcode ;
558+ var houseNo = overrideData . housenumber || formData . experius_postcode_housenumber ;
559+ var houseNoAdd = overrideData . housenumber_addition || formData . experius_postcode_housenumber_addition_manual ;
560+
561+ // If street is already set while not recorded. This means value is set by a third party.
562+ // Here we snapshot the current values into the previous value to avoid duplicate value addition
563+ if ( this . previousStreet !== address ) {
564+ this . previousPostcodeValue = postcode ;
565+ this . previousHousenumberValue = houseNo ;
566+ this . previousValue = this . previousHousenumberAdd = houseNoAdd ;
567+ this . previousStreet = address ;
568+ }
569+
570+ if ( this . previousHousenumberValue || this . previousHousenumberAdd || this . previousValue || this . previousPostcodeValue ) {
571+ // Remove addition
572+ if ( this . previousValue || this . previousHousenumberAdd ) {
573+ address = this . removeOldValueAdditionFromString ( address , this . previousValue || this . previousHousenumberAdd ) ;
574+ }
575+
576+ // Remove house number
577+ if ( this . previousHousenumberValue ) {
578+ address = this . removeOldValueAdditionFromString ( address , this . previousHousenumberValue ) ;
579+ }
580+ }
581+
582+ if ( houseNo ) { // Add house number
583+ address += ' ' + houseNo ;
584+ }
585+ if ( houseNoAdd ) { // Add house number addition
586+ address += ' ' + houseNoAdd ;
587+ }
588+
589+ // Save current values
590+ this . previousPostcodeValue = postcode ;
591+ this . previousHousenumberValue = houseNo ;
592+ this . previousValue = this . previousHousenumberAdd = houseNoAdd ;
593+ this . previousStreet = address || undefined ;
594+
595+ return address ;
596+
597+ } ,
598+
599+ /**
600+ * Removes given stubstring from the end of the given value string if possible
601+ * @param value
602+ * @param addition
603+ * @returns {string|* }
604+ */
605+ removeOldValueAdditionFromString : function ( value , addition ) {
606+ var newValue = value . trim ( ) ;
607+ var strAddition = "" + addition ;
608+ if ( newValue . endsWith ( strAddition ) ) {
609+ return newValue . substr ( newValue , newValue . length - strAddition . length ) . trim ( ) ;
610+ } else {
611+ return value ;
612+ }
556613 }
557614 } ) ;
558615} ) ;
0 commit comments