From fa673cc3ee0cea36e3959402ede0d4d3dca4909b Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Mon, 7 May 2018 09:50:42 +0000
Subject: [PATCH] [erp5_web_renderjs_ui] Do not display empty relation field in
 non editable mode

---
 .../rjs_gadget_erp5_pt_form_view_js.js             | 12 ++++++++++--
 .../rjs_gadget_erp5_pt_form_view_js.xml            |  4 ++--
 .../testFormViewField.zpt                          | 14 +++++++++++++-
 3 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.js
index 7ff34dc693..f42f94646f 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.js
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.js
@@ -12,8 +12,16 @@
     if (field.type === "FormBox") {return true; }
     // hidden fields should not be obviously rendered
     if (field.hidden === 1) {return false; }
-    // empty default value is bad and final decision
-    return !isEmpty(field['default']);
+    // empty default value must not be displayed
+    if (isEmpty(field['default'])) {
+      return false;
+    }
+    // relation field with no value must not be displayed too
+    if ((field['default'].length === 1) && (isEmpty(field['default'][0]))) {
+      return false;
+    }
+    // display the field by default
+    return true;
   }
 
   rJS(window)
diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.xml
index db0dc1b084..5fbcef865e 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.xml
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_form_view_js.xml
@@ -230,7 +230,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>966.32979.9603.63197</string> </value>
+                <value> <string>967.24700.63112.6741</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -248,7 +248,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1522336529.93</float>
+                        <float>1525686010.1</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_page_templates_zuite/testFormViewField.zpt b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_page_templates_zuite/testFormViewField.zpt
index a93d17ca69..85a201fb25 100644
--- a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_page_templates_zuite/testFormViewField.zpt
+++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_page_templates_zuite/testFormViewField.zpt
@@ -42,7 +42,19 @@
   <td></td>
 </tr>
 
-<!-- Field with value are displayed in read only -->
+<!-- Empty relation field are not displayed -->
+<tr>
+  <td>assertElementNotPresent</td>
+  <td>//label[@for='field_my_foo_category_title']</td>
+  <td></td>
+</tr>
+<tr>
+  <td>assertElementNotPresent</td>
+  <td>//input[@name='field_my_foo_category_title']</td>
+  <td></td>
+</tr>
+
+<!-- string Field with value are displayed in read only -->
 <tr>
   <td>assertElementPresent</td>
   <td>//label[@for='field_my_id' and text()='ID']</td>
-- 
2.30.9