From fdf04a42632c08fe289a7eb151bc770de57d4d55 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Thu, 9 Sep 2021 14:46:03 +0200
Subject: [PATCH] FIX #17934 TIME 0:40 fix autocomplete postcode front

---
 .../page/form/contacts-form.component.html       |  2 +-
 .../contact/page/form/contacts-form.component.ts | 16 ++++++++++++++--
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/frontend/app/administration/contact/page/form/contacts-form.component.html b/src/frontend/app/administration/contact/page/form/contacts-form.component.html
index f3224bbb094..762527b72df 100644
--- a/src/frontend/app/administration/contact/page/form/contacts-form.component.html
+++ b/src/frontend/app/administration/contact/page/form/contacts-form.component.html
@@ -280,7 +280,7 @@
                                         <input matInput #autoCompleteInput [formControl]="field.control" [placeholder]="field.label" [matAutocomplete]="matAutocompletePostCodeTown">
                                         <mat-autocomplete #matAutocompletePostCodeTown="matAutocomplete" (optionSelected)="selectPostCode($event)">
                                             <mat-option *ngFor="let postcode of postcodesFilteredResult | async" [value]="postcode">
-                                                {{postcode.postcode}} - {{postcode.town}}
+                                                {{postcode.town}}
                                             </mat-option>
                                         </mat-autocomplete>
                                     </mat-form-field>
diff --git a/src/frontend/app/administration/contact/page/form/contacts-form.component.ts b/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
index e79d9cb7d56..fe4ad7200ce 100644
--- a/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
+++ b/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
@@ -517,8 +517,20 @@ export class ContactsFormComponent implements OnInit {
             if (field.id === 'addressPostcode') {
                 this.postcodesFilteredResult = field.control.valueChanges
                     .pipe(
-                        startWith(''),
-                        exhaustMap((value: string) => this.http.get('../rest/postcode?search=' + value)),
+                        debounceTime(300),
+                        filter((value: string) => value.length > 2),
+                        distinctUntilChanged(),
+                        exhaustMap((value: string) => this.http.get('../rest/autocomplete/postcodes?postcode=' + value)),
+                        map((data: any) => data.postcodes),
+                    );
+            }
+            if (field.id === 'addressTown') {
+                this.postcodesFilteredResult = field.control.valueChanges
+                    .pipe(
+                        debounceTime(300),
+                        filter((value: string) => value.length > 2),
+                        distinctUntilChanged(),
+                        exhaustMap((value: string) => this.http.get('../rest/autocomplete/postcodes?town=' + value)),
                         map((data: any) => data.postcodes),
                     );
             }
-- 
GitLab