From 0e3fde89d6388cfaadf9cb672f6d9225bcc76335 Mon Sep 17 00:00:00 2001
From: Quentin RIBAC <quentin.ribac@xelians.fr>
Date: Wed, 20 Jul 2022 10:11:15 +0200
Subject: [PATCH] FIX #21204 TIME 0:15 indexing form: validate custom fields
 value on form load

---
 .../indexing-form/indexing-form.component.ts        | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
index 0a9c45deb82..a8433f4fad8 100755
--- a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
+++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
@@ -1016,11 +1016,22 @@ export class IndexingFormComponent implements OnInit {
                         indexFound = this.availableCustomFields.map(avField => avField.identifier).indexOf(field.identifier);
 
                         if (indexFound > -1) {
+                            field.type = this.availableCustomFields[indexFound].type;
                             field.label = this.availableCustomFields[indexFound].label;
-                            field.default_value = !this.functions.empty(field.default_value) ? field.default_value : this.availableCustomFields[indexFound].default_value;
                             field.values = this.availableCustomFields[indexFound].values;
                             field.type = this.availableCustomFields[indexFound].type;
                             field.SQLMode = this.availableCustomFields[indexFound].SQLMode;
+                            if (['select', 'radio', 'checkbox'].indexOf(field.type) > -1) {
+                                if (!this.functions.empty(field.default_value)) {
+                                    if (['select', 'radio'].indexOf(field.type) > -1) {
+                                        field.default_value = field.values.map((item: any) => item.id).find((elem: any) => elem.indexOf(field.default_value) > -1) ? field.default_value : null;
+                                    } else if (field.type === 'checkbox') {
+                                        field.default_value = field.values.map((item: any) => item.id).filter((element: any) => field.default_value.incoming(element));
+                                    }
+                                }
+                            } else {
+                                field.default_value = !this.functions.empty(field.default_value) ? field.default_value : this.availableCustomFields[indexFound].default_value;
+                            }
                             this.availableCustomFields.splice(indexFound, 1);
                             fieldExist = true;
                         }
-- 
GitLab