You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mr...@apache.org on 2016/10/15 13:19:35 UTC

svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Author: mridulpathak
Date: Sat Oct 15 13:19:35 2016
New Revision: 1765058

URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
Log:
Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
(OFBIZ-7598)

Thanks: Suraj Khurana for contribution.

Modified:
    ofbiz/trunk/framework/widget/dtd/widget-form.xsd
    ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
    ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
    ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
    ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
    ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl

Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
+++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
@@ -86,6 +86,7 @@ under the License.
             <xs:attribute name="style" type="xs:string" />
             <xs:attribute name="focus-field-name" type="xs:string" />
             <xs:attribute name="title" type="xs:string" />
+            <xs:attribute name="empty-form-data-message" type="xs:string" />
             <xs:attribute name="tooltip" type="xs:string" />
             <xs:attribute name="list-name" type="xs:string">
                 <xs:annotation>
@@ -327,6 +328,7 @@ under the License.
             <xs:attribute name="style" type="xs:string" />
             <xs:attribute name="focus-field-name" type="xs:string" />
             <xs:attribute name="title" type="xs:string" />
+            <xs:attribute name="empty-form-data-message" type="xs:string" />
             <xs:attribute name="tooltip" type="xs:string" />
             <xs:attribute name="list-name" type="xs:string">
                 <xs:annotation>

Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
+++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
@@ -147,7 +147,7 @@ public abstract class ModelForm extends
     private final String formWidgetAreaStyle;
     private final boolean groupColumns;
     private final String headerRowStyle;
-    private final boolean hideHeader;
+    private boolean hideHeader;
     private final String itemIndexSeparator;
     private final List<String> lastOrderFields;
     private final String listEntryName;
@@ -184,6 +184,7 @@ public abstract class ModelForm extends
     private final String targetType;
     private final FlexibleStringExpander targetWindowExdr;
     private final String title;
+    private final String emptyFormDataMessage;
     private final String tooltip;
     private final String type;
     private final boolean useRowSubmit;
@@ -241,6 +242,13 @@ public abstract class ModelForm extends
             title = parentModel.title;
         }
         this.title = title;
+        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
+        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
+            emptyFormDataMessage = parentModel.emptyFormDataMessage;
+        } else if (emptyFormDataMessage.isEmpty()) {
+            emptyFormDataMessage = "No records found";
+        }
+        this.emptyFormDataMessage = emptyFormDataMessage;
         String tooltip = formElement.getAttribute("tooltip");
         if (tooltip.isEmpty() && parentModel != null) {
             tooltip = parentModel.tooltip;
@@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
     public boolean getHideHeader() {
         return this.hideHeader;
     }
+    public boolean setHideHeader(Boolean hideHeader) {
+        this.hideHeader = hideHeader;
+        return hideHeader;
+    }
 
     public String getItemIndexSeparator() {
         if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
@@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
         return this.title;
     }
 
+    public String getEmptyFormDataMessage() {
+        return this.emptyFormDataMessage;
+    }
+
     public String getTooltip() {
         return this.tooltip;
     }

Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
@@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
 import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
 import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
 import org.apache.ofbiz.widget.model.ModelFormField;
+import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
 
 /**
  * A form rendering engine.
@@ -925,9 +926,12 @@ public class FormRenderer {
         formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
 
         int numOfColumns = 0;
+        this.checkFormDataAndSetHeader(context);
         // ===== render header row =====
         if (!modelForm.getHideHeader()) {
             numOfColumns = this.renderHeaderRow(writer, context);
+        } else {
+            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
         }
 
         // ===== render the item rows =====
@@ -951,9 +955,12 @@ public class FormRenderer {
         formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
 
         int numOfColumns = 0;
+        this.checkFormDataAndSetHeader(context);
         // ===== render header row =====
         if (!modelForm.getHideHeader()) {
             numOfColumns = this.renderHeaderRow(writer, context);
+        } else {
+            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
         }
 
         // ===== render the item rows =====
@@ -967,6 +974,32 @@ public class FormRenderer {
 
     }
 
+    private void checkFormDataAndSetHeader(Map<String, Object> context) {
+        String lookupName = modelForm.getListName();
+        Object obj = context.get(lookupName);
+        if (obj == null) {
+            if (Debug.verboseOn())
+                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
+            return;
+        }
+        // if list is empty, do not render rows
+        Iterator<?> iter = null;
+        if (obj instanceof Iterator<?>) {
+            iter = (Iterator<?>) obj;
+        } else if (obj instanceof List<?>) {
+            iter = ((List<?>) obj).listIterator();
+        }
+        int itemIndex = -1;
+        Object item = null;
+        while ((item = safeNext(iter)) != null) {
+            itemIndex++;
+            break;
+        }
+        if (itemIndex < 0) {
+            modelForm.setHideHeader(true);
+        }
+    }
+
     private void renderSingleFormString(Appendable writer, Map<String, Object> context, 
             int positions) throws IOException {
         List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();

Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
@@ -99,4 +99,5 @@ public interface FormStringRenderer {
     public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
     public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
     public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
+    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
 }

Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
@@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
             renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
         }
     }
-    
+
+    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
+        StringWriter sr = new StringWriter();
+        sr.append("<@renderEmptyFormDataMessage");
+        sr.append(" message=\"");
+        sr.append(modelForm.getEmptyFormDataMessage());
+        sr.append("\" />");
+        executeMacro(writer, sr.toString());
+    }
+
     public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
         StringWriter sr = new StringWriter();
         sr.append("<@renderFormatHeaderOpen ");

Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
+++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
@@ -326,6 +326,10 @@ under the License.
   </label><#t/>
 </#macro>
 
+<#macro renderEmptyFormDataMessage message>
+  <h3><#if message?has_content>${message}</#if></h3>
+</#macro>
+
 <#macro renderSingleFormFieldTitle></#macro>
 
 <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>



Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Nicolas Malin <ni...@nereide.fr>.
Thanks Mridul,

I know that is difficult to restart a work already done with another 
approach. Don't hesitate to ask help if you are hampered by something

Nicolas

Le 19/10/2016 � 14:08, Mridul Pathak a �crit :
> Hi Nicolas,
>
> Thanks for your input. I\u2019ll work on a better approach to implement this feature.
>
> --
> Thanks & Regards,
> Mridul Pathak
>
>
>> On Oct 18, 2016, at 5:31 PM, Nicolas Malin <ni...@nereide.fr> wrote:
>>
>> Hi Mridul,
>>
>> I like the idea on this commit but I see two problems.
>>
>> * The modification on ModelForm break the threadsafe set by adrian. If I understand what he did, the boolean hideHeader should be rest final, and you don't update the ModelForm during the treatment. To improve it,  insteade of  *if (!modelForm.getHideHeader()) {* use more *if (!modelForm.getHideHeader() && !elementOnList) {* . After this isn't a good solution to use getHideHeader() to display the message "no element found" because if I create a form without header to display and only the list, :) I'm going to blame you !
>>
>> * The message isn't call a flexibleStringExpander so you can't use translation and the default label need to use a common label.
>>
>> Nicolas
>>
>> Le 15/10/2016 � 15:19, mridulpathak@apache.org a �crit :
>>> Author: mridulpathak
>>> Date: Sat Oct 15 13:19:35 2016
>>> New Revision: 1765058
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
>>> Log:
>>> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
>>> (OFBIZ-7598)
>>>
>>> Thanks: Suraj Khurana for contribution.
>>>
>>> Modified:
>>>      ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>>      ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>>
>>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
>>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
>>> @@ -86,6 +86,7 @@ under the License.
>>>               <xs:attribute name="style" type="xs:string" />
>>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>>               <xs:attribute name="title" type="xs:string" />
>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>               <xs:attribute name="tooltip" type="xs:string" />
>>>               <xs:attribute name="list-name" type="xs:string">
>>>                   <xs:annotation>
>>> @@ -327,6 +328,7 @@ under the License.
>>>               <xs:attribute name="style" type="xs:string" />
>>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>>               <xs:attribute name="title" type="xs:string" />
>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>               <xs:attribute name="tooltip" type="xs:string" />
>>>               <xs:attribute name="list-name" type="xs:string">
>>>                   <xs:annotation>
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
>>> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>>>       private final String formWidgetAreaStyle;
>>>       private final boolean groupColumns;
>>>       private final String headerRowStyle;
>>> -    private final boolean hideHeader;
>>> +    private boolean hideHeader;
>>>       private final String itemIndexSeparator;
>>>       private final List<String> lastOrderFields;
>>>       private final String listEntryName;
>>> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>>>       private final String targetType;
>>>       private final FlexibleStringExpander targetWindowExdr;
>>>       private final String title;
>>> +    private final String emptyFormDataMessage;
>>>       private final String tooltip;
>>>       private final String type;
>>>       private final boolean useRowSubmit;
>>> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>>>               title = parentModel.title;
>>>           }
>>>           this.title = title;
>>> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
>>> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
>>> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
>>> +        } else if (emptyFormDataMessage.isEmpty()) {
>>> +            emptyFormDataMessage = "No records found";
>>> +        }
>>> +        this.emptyFormDataMessage = emptyFormDataMessage;
>>>           String tooltip = formElement.getAttribute("tooltip");
>>>           if (tooltip.isEmpty() && parentModel != null) {
>>>               tooltip = parentModel.tooltip;
>>> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>>>       public boolean getHideHeader() {
>>>           return this.hideHeader;
>>>       }
>>> +    public boolean setHideHeader(Boolean hideHeader) {
>>> +        this.hideHeader = hideHeader;
>>> +        return hideHeader;
>>> +    }
>>>         public String getItemIndexSeparator() {
>>>           if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
>>> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>>>           return this.title;
>>>       }
>>>   +    public String getEmptyFormDataMessage() {
>>> +        return this.emptyFormDataMessage;
>>> +    }
>>> +
>>>       public String getTooltip() {
>>>           return this.tooltip;
>>>       }
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
>>> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>>>   import org.apache.ofbiz.widget.model.ModelFormField;
>>> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>>>     /**
>>>    * A form rendering engine.
>>> @@ -925,9 +926,12 @@ public class FormRenderer {
>>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>             int numOfColumns = 0;
>>> +        this.checkFormDataAndSetHeader(context);
>>>           // ===== render header row =====
>>>           if (!modelForm.getHideHeader()) {
>>>               numOfColumns = this.renderHeaderRow(writer, context);
>>> +        } else {
>>> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>           }
>>>             // ===== render the item rows =====
>>> @@ -951,9 +955,12 @@ public class FormRenderer {
>>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>             int numOfColumns = 0;
>>> +        this.checkFormDataAndSetHeader(context);
>>>           // ===== render header row =====
>>>           if (!modelForm.getHideHeader()) {
>>>               numOfColumns = this.renderHeaderRow(writer, context);
>>> +        } else {
>>> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>           }
>>>             // ===== render the item rows =====
>>> @@ -967,6 +974,32 @@ public class FormRenderer {
>>>         }
>>>   +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
>>> +        String lookupName = modelForm.getListName();
>>> +        Object obj = context.get(lookupName);
>>> +        if (obj == null) {
>>> +            if (Debug.verboseOn())
>>> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
>>> +            return;
>>> +        }
>>> +        // if list is empty, do not render rows
>>> +        Iterator<?> iter = null;
>>> +        if (obj instanceof Iterator<?>) {
>>> +            iter = (Iterator<?>) obj;
>>> +        } else if (obj instanceof List<?>) {
>>> +            iter = ((List<?>) obj).listIterator();
>>> +        }
>>> +        int itemIndex = -1;
>>> +        Object item = null;
>>> +        while ((item = safeNext(iter)) != null) {
>>> +            itemIndex++;
>>> +            break;
>>> +        }
>>> +        if (itemIndex < 0) {
>>> +            modelForm.setHideHeader(true);
>>> +        }
>>> +    }
>>> +
>>>       private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>>>               int positions) throws IOException {
>>>           List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
>>> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>>>       public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
>>>       public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>>       public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>>>   }
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
>>> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>>>               renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>>>           }
>>>       }
>>> -
>>> +
>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>> +        StringWriter sr = new StringWriter();
>>> +        sr.append("<@renderEmptyFormDataMessage");
>>> +        sr.append(" message=\"");
>>> +        sr.append(modelForm.getEmptyFormDataMessage());
>>> +        sr.append("\" />");
>>> +        executeMacro(writer, sr.toString());
>>> +    }
>>> +
>>>       public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>>           StringWriter sr = new StringWriter();
>>>           sr.append("<@renderFormatHeaderOpen ");
>>>
>>> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
>>> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
>>> @@ -326,6 +326,10 @@ under the License.
>>>     </label><#t/>
>>>   </#macro>
>>>   +<#macro renderEmptyFormDataMessage message>
>>> +  <h3><#if message?has_content>${message}</#if></h3>
>>> +</#macro>
>>> +
>>>   <#macro renderSingleFormFieldTitle></#macro>
>>>     <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>
>>>
>>>
>>>
>


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Mridul Pathak <mr...@hotwaxsystems.com>.
Hi Nicolas,

Thanks for your input. I’ll work on a better approach to implement this feature.

--
Thanks & Regards,
Mridul Pathak


> On Oct 18, 2016, at 5:31 PM, Nicolas Malin <ni...@nereide.fr> wrote:
> 
> Hi Mridul,
> 
> I like the idea on this commit but I see two problems.
> 
> * The modification on ModelForm break the threadsafe set by adrian. If I understand what he did, the boolean hideHeader should be rest final, and you don't update the ModelForm during the treatment. To improve it,  insteade of  *if (!modelForm.getHideHeader()) {* use more *if (!modelForm.getHideHeader() && !elementOnList) {* . After this isn't a good solution to use getHideHeader() to display the message "no element found" because if I create a form without header to display and only the list, :) I'm going to blame you !
> 
> * The message isn't call a flexibleStringExpander so you can't use translation and the default label need to use a common label.
> 
> Nicolas
> 
> Le 15/10/2016 à 15:19, mridulpathak@apache.org a écrit :
>> Author: mridulpathak
>> Date: Sat Oct 15 13:19:35 2016
>> New Revision: 1765058
>> 
>> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
>> Log:
>> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
>> (OFBIZ-7598)
>> 
>> Thanks: Suraj Khurana for contribution.
>> 
>> Modified:
>>     ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>     ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>     ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>     ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>     ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>     ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>> 
>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
>> @@ -86,6 +86,7 @@ under the License.
>>              <xs:attribute name="style" type="xs:string" />
>>              <xs:attribute name="focus-field-name" type="xs:string" />
>>              <xs:attribute name="title" type="xs:string" />
>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>              <xs:attribute name="tooltip" type="xs:string" />
>>              <xs:attribute name="list-name" type="xs:string">
>>                  <xs:annotation>
>> @@ -327,6 +328,7 @@ under the License.
>>              <xs:attribute name="style" type="xs:string" />
>>              <xs:attribute name="focus-field-name" type="xs:string" />
>>              <xs:attribute name="title" type="xs:string" />
>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>              <xs:attribute name="tooltip" type="xs:string" />
>>              <xs:attribute name="list-name" type="xs:string">
>>                  <xs:annotation>
>> 
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
>> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>>      private final String formWidgetAreaStyle;
>>      private final boolean groupColumns;
>>      private final String headerRowStyle;
>> -    private final boolean hideHeader;
>> +    private boolean hideHeader;
>>      private final String itemIndexSeparator;
>>      private final List<String> lastOrderFields;
>>      private final String listEntryName;
>> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>>      private final String targetType;
>>      private final FlexibleStringExpander targetWindowExdr;
>>      private final String title;
>> +    private final String emptyFormDataMessage;
>>      private final String tooltip;
>>      private final String type;
>>      private final boolean useRowSubmit;
>> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>>              title = parentModel.title;
>>          }
>>          this.title = title;
>> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
>> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
>> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
>> +        } else if (emptyFormDataMessage.isEmpty()) {
>> +            emptyFormDataMessage = "No records found";
>> +        }
>> +        this.emptyFormDataMessage = emptyFormDataMessage;
>>          String tooltip = formElement.getAttribute("tooltip");
>>          if (tooltip.isEmpty() && parentModel != null) {
>>              tooltip = parentModel.tooltip;
>> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>>      public boolean getHideHeader() {
>>          return this.hideHeader;
>>      }
>> +    public boolean setHideHeader(Boolean hideHeader) {
>> +        this.hideHeader = hideHeader;
>> +        return hideHeader;
>> +    }
>>        public String getItemIndexSeparator() {
>>          if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
>> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>>          return this.title;
>>      }
>>  +    public String getEmptyFormDataMessage() {
>> +        return this.emptyFormDataMessage;
>> +    }
>> +
>>      public String getTooltip() {
>>          return this.tooltip;
>>      }
>> 
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>>  import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>>  import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>>  import org.apache.ofbiz.widget.model.ModelFormField;
>> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>>    /**
>>   * A form rendering engine.
>> @@ -925,9 +926,12 @@ public class FormRenderer {
>>          formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>            int numOfColumns = 0;
>> +        this.checkFormDataAndSetHeader(context);
>>          // ===== render header row =====
>>          if (!modelForm.getHideHeader()) {
>>              numOfColumns = this.renderHeaderRow(writer, context);
>> +        } else {
>> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>          }
>>            // ===== render the item rows =====
>> @@ -951,9 +955,12 @@ public class FormRenderer {
>>          formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>            int numOfColumns = 0;
>> +        this.checkFormDataAndSetHeader(context);
>>          // ===== render header row =====
>>          if (!modelForm.getHideHeader()) {
>>              numOfColumns = this.renderHeaderRow(writer, context);
>> +        } else {
>> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>          }
>>            // ===== render the item rows =====
>> @@ -967,6 +974,32 @@ public class FormRenderer {
>>        }
>>  +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
>> +        String lookupName = modelForm.getListName();
>> +        Object obj = context.get(lookupName);
>> +        if (obj == null) {
>> +            if (Debug.verboseOn())
>> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
>> +            return;
>> +        }
>> +        // if list is empty, do not render rows
>> +        Iterator<?> iter = null;
>> +        if (obj instanceof Iterator<?>) {
>> +            iter = (Iterator<?>) obj;
>> +        } else if (obj instanceof List<?>) {
>> +            iter = ((List<?>) obj).listIterator();
>> +        }
>> +        int itemIndex = -1;
>> +        Object item = null;
>> +        while ((item = safeNext(iter)) != null) {
>> +            itemIndex++;
>> +            break;
>> +        }
>> +        if (itemIndex < 0) {
>> +            modelForm.setHideHeader(true);
>> +        }
>> +    }
>> +
>>      private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>>              int positions) throws IOException {
>>          List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>> 
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>>      public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
>>      public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>      public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>>  }
>> 
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>>              renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>>          }
>>      }
>> -
>> +
>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>> +        StringWriter sr = new StringWriter();
>> +        sr.append("<@renderEmptyFormDataMessage");
>> +        sr.append(" message=\"");
>> +        sr.append(modelForm.getEmptyFormDataMessage());
>> +        sr.append("\" />");
>> +        executeMacro(writer, sr.toString());
>> +    }
>> +
>>      public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>          StringWriter sr = new StringWriter();
>>          sr.append("<@renderFormatHeaderOpen ");
>> 
>> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
>> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
>> @@ -326,6 +326,10 @@ under the License.
>>    </label><#t/>
>>  </#macro>
>>  +<#macro renderEmptyFormDataMessage message>
>> +  <h3><#if message?has_content>${message}</#if></h3>
>> +</#macro>
>> +
>>  <#macro renderSingleFormFieldTitle></#macro>
>>    <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>
>> 
>> 
>> 
> 


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Nicolas Malin <ni...@nereide.fr>.
Hi Mridul,

I like the idea on this commit but I see two problems.

* The modification on ModelForm break the threadsafe set by adrian. If I 
understand what he did, the boolean hideHeader should be rest final, and 
you don't update the ModelForm during the treatment. To improve it,  
insteade of  *if (!modelForm.getHideHeader()) {* use more *if 
(!modelForm.getHideHeader() && !elementOnList) {* . After this isn't a 
good solution to use getHideHeader() to display the message "no element 
found" because if I create a form without header to display and only the 
list, :) I'm going to blame you !

* The message isn't call a flexibleStringExpander so you can't use 
translation and the default label need to use a common label.

Nicolas

Le 15/10/2016 � 15:19, mridulpathak@apache.org a �crit :
> Author: mridulpathak
> Date: Sat Oct 15 13:19:35 2016
> New Revision: 1765058
>
> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
> Log:
> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
> (OFBIZ-7598)
>
> Thanks: Suraj Khurana for contribution.
>
> Modified:
>      ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>      ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>
> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
> @@ -86,6 +86,7 @@ under the License.
>               <xs:attribute name="style" type="xs:string" />
>               <xs:attribute name="focus-field-name" type="xs:string" />
>               <xs:attribute name="title" type="xs:string" />
> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>               <xs:attribute name="tooltip" type="xs:string" />
>               <xs:attribute name="list-name" type="xs:string">
>                   <xs:annotation>
> @@ -327,6 +328,7 @@ under the License.
>               <xs:attribute name="style" type="xs:string" />
>               <xs:attribute name="focus-field-name" type="xs:string" />
>               <xs:attribute name="title" type="xs:string" />
> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>               <xs:attribute name="tooltip" type="xs:string" />
>               <xs:attribute name="list-name" type="xs:string">
>                   <xs:annotation>
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>       private final String formWidgetAreaStyle;
>       private final boolean groupColumns;
>       private final String headerRowStyle;
> -    private final boolean hideHeader;
> +    private boolean hideHeader;
>       private final String itemIndexSeparator;
>       private final List<String> lastOrderFields;
>       private final String listEntryName;
> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>       private final String targetType;
>       private final FlexibleStringExpander targetWindowExdr;
>       private final String title;
> +    private final String emptyFormDataMessage;
>       private final String tooltip;
>       private final String type;
>       private final boolean useRowSubmit;
> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>               title = parentModel.title;
>           }
>           this.title = title;
> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
> +        } else if (emptyFormDataMessage.isEmpty()) {
> +            emptyFormDataMessage = "No records found";
> +        }
> +        this.emptyFormDataMessage = emptyFormDataMessage;
>           String tooltip = formElement.getAttribute("tooltip");
>           if (tooltip.isEmpty() && parentModel != null) {
>               tooltip = parentModel.tooltip;
> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>       public boolean getHideHeader() {
>           return this.hideHeader;
>       }
> +    public boolean setHideHeader(Boolean hideHeader) {
> +        this.hideHeader = hideHeader;
> +        return hideHeader;
> +    }
>   
>       public String getItemIndexSeparator() {
>           if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>           return this.title;
>       }
>   
> +    public String getEmptyFormDataMessage() {
> +        return this.emptyFormDataMessage;
> +    }
> +
>       public String getTooltip() {
>           return this.tooltip;
>       }
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>   import org.apache.ofbiz.widget.model.ModelFormField;
> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>   
>   /**
>    * A form rendering engine.
> @@ -925,9 +926,12 @@ public class FormRenderer {
>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>   
>           int numOfColumns = 0;
> +        this.checkFormDataAndSetHeader(context);
>           // ===== render header row =====
>           if (!modelForm.getHideHeader()) {
>               numOfColumns = this.renderHeaderRow(writer, context);
> +        } else {
> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>           }
>   
>           // ===== render the item rows =====
> @@ -951,9 +955,12 @@ public class FormRenderer {
>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>   
>           int numOfColumns = 0;
> +        this.checkFormDataAndSetHeader(context);
>           // ===== render header row =====
>           if (!modelForm.getHideHeader()) {
>               numOfColumns = this.renderHeaderRow(writer, context);
> +        } else {
> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>           }
>   
>           // ===== render the item rows =====
> @@ -967,6 +974,32 @@ public class FormRenderer {
>   
>       }
>   
> +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
> +        String lookupName = modelForm.getListName();
> +        Object obj = context.get(lookupName);
> +        if (obj == null) {
> +            if (Debug.verboseOn())
> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
> +            return;
> +        }
> +        // if list is empty, do not render rows
> +        Iterator<?> iter = null;
> +        if (obj instanceof Iterator<?>) {
> +            iter = (Iterator<?>) obj;
> +        } else if (obj instanceof List<?>) {
> +            iter = ((List<?>) obj).listIterator();
> +        }
> +        int itemIndex = -1;
> +        Object item = null;
> +        while ((item = safeNext(iter)) != null) {
> +            itemIndex++;
> +            break;
> +        }
> +        if (itemIndex < 0) {
> +            modelForm.setHideHeader(true);
> +        }
> +    }
> +
>       private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>               int positions) throws IOException {
>           List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>       public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
>       public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>       public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>   }
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>               renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>           }
>       }
> -
> +
> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
> +        StringWriter sr = new StringWriter();
> +        sr.append("<@renderEmptyFormDataMessage");
> +        sr.append(" message=\"");
> +        sr.append(modelForm.getEmptyFormDataMessage());
> +        sr.append("\" />");
> +        executeMacro(writer, sr.toString());
> +    }
> +
>       public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>           StringWriter sr = new StringWriter();
>           sr.append("<@renderFormatHeaderOpen ");
>
> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
> @@ -326,6 +326,10 @@ under the License.
>     </label><#t/>
>   </#macro>
>   
> +<#macro renderEmptyFormDataMessage message>
> +  <h3><#if message?has_content>${message}</#if></h3>
> +</#macro>
> +
>   <#macro renderSingleFormFieldTitle></#macro>
>   
>   <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>
>
>
>


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Jacques Le Roux <ja...@les7arts.com>.
Thanks Mridul,

I think trunk (bleeding edge) can live with that for few days, then yes I'll revert if not fixed.

Jacques


Le 18/10/2016 � 10:16, Mridul Pathak a �crit :
> Hi Jacques,
>
> I\u2019ll do some tests and see if it could be fixed quickly, else revert it for now.
>
> --
> Thanks & Regards,
> Mridul Pathak
>
>
>> On Oct 17, 2016, at 6:43 PM, Jacques Le Roux <ja...@les7arts.com> wrote:
>>
>> Hi Mridul,
>>
>> After Arun fixed a compilation issue at r1765080, I found that this introduced a regression. Please see https://issues.apache.org/jira/browse/OFBIZ-8505
>>
>> I think it's better to revert and test this more.
>>
>> Thanks
>>
>> Jacques
>>
>>
>> Le 15/10/2016 � 16:25, Jacques Le Roux a �crit :
>>> Hi Mridul,
>>>
>>> Did you notice we have a compilation issue with this commit?
>>>
>>> https://ci.apache.org/builders/ofbiz-trunk
>>>
>>> https://ci.apache.org/builders/ofbiz-trunk/builds/1607/steps/shell/logs/stdio
>>>
>>> Thanks
>>>
>>> Jacques
>>>
>>>
>>> Le 15/10/2016 � 15:19, mridulpathak@apache.org a �crit :
>>>> Author: mridulpathak
>>>> Date: Sat Oct 15 13:19:35 2016
>>>> New Revision: 1765058
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
>>>> Log:
>>>> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
>>>> (OFBIZ-7598)
>>>>
>>>> Thanks: Suraj Khurana for contribution.
>>>>
>>>> Modified:
>>>>      ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>>> ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
>>>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
>>>> @@ -86,6 +86,7 @@ under the License.
>>>>               <xs:attribute name="style" type="xs:string" />
>>>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>>>               <xs:attribute name="title" type="xs:string" />
>>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>>               <xs:attribute name="tooltip" type="xs:string" />
>>>>               <xs:attribute name="list-name" type="xs:string">
>>>>                   <xs:annotation>
>>>> @@ -327,6 +328,7 @@ under the License.
>>>>               <xs:attribute name="style" type="xs:string" />
>>>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>>>               <xs:attribute name="title" type="xs:string" />
>>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>>               <xs:attribute name="tooltip" type="xs:string" />
>>>>               <xs:attribute name="list-name" type="xs:string">
>>>>                   <xs:annotation>
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
>>>> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>>>>       private final String formWidgetAreaStyle;
>>>>       private final boolean groupColumns;
>>>>       private final String headerRowStyle;
>>>> -    private final boolean hideHeader;
>>>> +    private boolean hideHeader;
>>>>       private final String itemIndexSeparator;
>>>>       private final List<String> lastOrderFields;
>>>>       private final String listEntryName;
>>>> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>>>>       private final String targetType;
>>>>       private final FlexibleStringExpander targetWindowExdr;
>>>>       private final String title;
>>>> +    private final String emptyFormDataMessage;
>>>>       private final String tooltip;
>>>>       private final String type;
>>>>       private final boolean useRowSubmit;
>>>> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>>>>               title = parentModel.title;
>>>>           }
>>>>           this.title = title;
>>>> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
>>>> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
>>>> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
>>>> +        } else if (emptyFormDataMessage.isEmpty()) {
>>>> +            emptyFormDataMessage = "No records found";
>>>> +        }
>>>> +        this.emptyFormDataMessage = emptyFormDataMessage;
>>>>           String tooltip = formElement.getAttribute("tooltip");
>>>>           if (tooltip.isEmpty() && parentModel != null) {
>>>>               tooltip = parentModel.tooltip;
>>>> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>>>>       public boolean getHideHeader() {
>>>>           return this.hideHeader;
>>>>       }
>>>> +    public boolean setHideHeader(Boolean hideHeader) {
>>>> +        this.hideHeader = hideHeader;
>>>> +        return hideHeader;
>>>> +    }
>>>>         public String getItemIndexSeparator() {
>>>>           if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
>>>> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>>>>           return this.title;
>>>>       }
>>>>   +    public String getEmptyFormDataMessage() {
>>>> +        return this.emptyFormDataMessage;
>>>> +    }
>>>> +
>>>>       public String getTooltip() {
>>>>           return this.tooltip;
>>>>       }
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
>>>> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>>>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>>>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>>>>   import org.apache.ofbiz.widget.model.ModelFormField;
>>>> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>>>>     /**
>>>>    * A form rendering engine.
>>>> @@ -925,9 +926,12 @@ public class FormRenderer {
>>>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>>             int numOfColumns = 0;
>>>> +        this.checkFormDataAndSetHeader(context);
>>>>           // ===== render header row =====
>>>>           if (!modelForm.getHideHeader()) {
>>>>               numOfColumns = this.renderHeaderRow(writer, context);
>>>> +        } else {
>>>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>>           }
>>>>             // ===== render the item rows =====
>>>> @@ -951,9 +955,12 @@ public class FormRenderer {
>>>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>>             int numOfColumns = 0;
>>>> +        this.checkFormDataAndSetHeader(context);
>>>>           // ===== render header row =====
>>>>           if (!modelForm.getHideHeader()) {
>>>>               numOfColumns = this.renderHeaderRow(writer, context);
>>>> +        } else {
>>>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>>           }
>>>>             // ===== render the item rows =====
>>>> @@ -967,6 +974,32 @@ public class FormRenderer {
>>>>         }
>>>>   +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
>>>> +        String lookupName = modelForm.getListName();
>>>> +        Object obj = context.get(lookupName);
>>>> +        if (obj == null) {
>>>> +            if (Debug.verboseOn())
>>>> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
>>>> +            return;
>>>> +        }
>>>> +        // if list is empty, do not render rows
>>>> +        Iterator<?> iter = null;
>>>> +        if (obj instanceof Iterator<?>) {
>>>> +            iter = (Iterator<?>) obj;
>>>> +        } else if (obj instanceof List<?>) {
>>>> +            iter = ((List<?>) obj).listIterator();
>>>> +        }
>>>> +        int itemIndex = -1;
>>>> +        Object item = null;
>>>> +        while ((item = safeNext(iter)) != null) {
>>>> +            itemIndex++;
>>>> +            break;
>>>> +        }
>>>> +        if (itemIndex < 0) {
>>>> +            modelForm.setHideHeader(true);
>>>> +        }
>>>> +    }
>>>> +
>>>>       private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>>>>               int positions) throws IOException {
>>>>           List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
>>>> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>>>>       public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
>>>>       public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>>>       public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>>>>   }
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
>>>> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>>>>               renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>>>>           }
>>>>       }
>>>> -
>>>> +
>>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>>> +        StringWriter sr = new StringWriter();
>>>> +        sr.append("<@renderEmptyFormDataMessage");
>>>> +        sr.append(" message=\"");
>>>> +        sr.append(modelForm.getEmptyFormDataMessage());
>>>> +        sr.append("\" />");
>>>> +        executeMacro(writer, sr.toString());
>>>> +    }
>>>> +
>>>>       public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>>>           StringWriter sr = new StringWriter();
>>>>           sr.append("<@renderFormatHeaderOpen ");
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
>>>> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
>>>> @@ -326,6 +326,10 @@ under the License.
>>>>     </label><#t/>
>>>>   </#macro>
>>>>   +<#macro renderEmptyFormDataMessage message>
>>>> +  <h3><#if message?has_content>${message}</#if></h3>
>>>> +</#macro>
>>>> +
>>>>   <#macro renderSingleFormFieldTitle></#macro>
>>>>     <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>
>>>>
>>>>
>>>>
>>>
>
>


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi Mridul, Arun,

I finally reverted both at revision: 1766080

Jacques


Le 18/10/2016 � 10:16, Mridul Pathak a �crit :
> Hi Jacques,
>
> I\u2019ll do some tests and see if it could be fixed quickly, else revert it for now.
>
> --
> Thanks & Regards,
> Mridul Pathak
>
>
>> On Oct 17, 2016, at 6:43 PM, Jacques Le Roux <ja...@les7arts.com> wrote:
>>
>> Hi Mridul,
>>
>> After Arun fixed a compilation issue at r1765080, I found that this introduced a regression. Please see https://issues.apache.org/jira/browse/OFBIZ-8505
>>
>> I think it's better to revert and test this more.
>>
>> Thanks
>>
>> Jacques
>>
>>
>> Le 15/10/2016 � 16:25, Jacques Le Roux a �crit :
>>> Hi Mridul,
>>>
>>> Did you notice we have a compilation issue with this commit?
>>>
>>> https://ci.apache.org/builders/ofbiz-trunk
>>>
>>> https://ci.apache.org/builders/ofbiz-trunk/builds/1607/steps/shell/logs/stdio
>>>
>>> Thanks
>>>
>>> Jacques
>>>
>>>
>>> Le 15/10/2016 � 15:19, mridulpathak@apache.org a �crit :
>>>> Author: mridulpathak
>>>> Date: Sat Oct 15 13:19:35 2016
>>>> New Revision: 1765058
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
>>>> Log:
>>>> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
>>>> (OFBIZ-7598)
>>>>
>>>> Thanks: Suraj Khurana for contribution.
>>>>
>>>> Modified:
>>>>      ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>>> ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
>>>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
>>>> @@ -86,6 +86,7 @@ under the License.
>>>>               <xs:attribute name="style" type="xs:string" />
>>>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>>>               <xs:attribute name="title" type="xs:string" />
>>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>>               <xs:attribute name="tooltip" type="xs:string" />
>>>>               <xs:attribute name="list-name" type="xs:string">
>>>>                   <xs:annotation>
>>>> @@ -327,6 +328,7 @@ under the License.
>>>>               <xs:attribute name="style" type="xs:string" />
>>>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>>>               <xs:attribute name="title" type="xs:string" />
>>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>>               <xs:attribute name="tooltip" type="xs:string" />
>>>>               <xs:attribute name="list-name" type="xs:string">
>>>>                   <xs:annotation>
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
>>>> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>>>>       private final String formWidgetAreaStyle;
>>>>       private final boolean groupColumns;
>>>>       private final String headerRowStyle;
>>>> -    private final boolean hideHeader;
>>>> +    private boolean hideHeader;
>>>>       private final String itemIndexSeparator;
>>>>       private final List<String> lastOrderFields;
>>>>       private final String listEntryName;
>>>> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>>>>       private final String targetType;
>>>>       private final FlexibleStringExpander targetWindowExdr;
>>>>       private final String title;
>>>> +    private final String emptyFormDataMessage;
>>>>       private final String tooltip;
>>>>       private final String type;
>>>>       private final boolean useRowSubmit;
>>>> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>>>>               title = parentModel.title;
>>>>           }
>>>>           this.title = title;
>>>> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
>>>> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
>>>> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
>>>> +        } else if (emptyFormDataMessage.isEmpty()) {
>>>> +            emptyFormDataMessage = "No records found";
>>>> +        }
>>>> +        this.emptyFormDataMessage = emptyFormDataMessage;
>>>>           String tooltip = formElement.getAttribute("tooltip");
>>>>           if (tooltip.isEmpty() && parentModel != null) {
>>>>               tooltip = parentModel.tooltip;
>>>> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>>>>       public boolean getHideHeader() {
>>>>           return this.hideHeader;
>>>>       }
>>>> +    public boolean setHideHeader(Boolean hideHeader) {
>>>> +        this.hideHeader = hideHeader;
>>>> +        return hideHeader;
>>>> +    }
>>>>         public String getItemIndexSeparator() {
>>>>           if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
>>>> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>>>>           return this.title;
>>>>       }
>>>>   +    public String getEmptyFormDataMessage() {
>>>> +        return this.emptyFormDataMessage;
>>>> +    }
>>>> +
>>>>       public String getTooltip() {
>>>>           return this.tooltip;
>>>>       }
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
>>>> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>>>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>>>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>>>>   import org.apache.ofbiz.widget.model.ModelFormField;
>>>> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>>>>     /**
>>>>    * A form rendering engine.
>>>> @@ -925,9 +926,12 @@ public class FormRenderer {
>>>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>>             int numOfColumns = 0;
>>>> +        this.checkFormDataAndSetHeader(context);
>>>>           // ===== render header row =====
>>>>           if (!modelForm.getHideHeader()) {
>>>>               numOfColumns = this.renderHeaderRow(writer, context);
>>>> +        } else {
>>>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>>           }
>>>>             // ===== render the item rows =====
>>>> @@ -951,9 +955,12 @@ public class FormRenderer {
>>>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>>             int numOfColumns = 0;
>>>> +        this.checkFormDataAndSetHeader(context);
>>>>           // ===== render header row =====
>>>>           if (!modelForm.getHideHeader()) {
>>>>               numOfColumns = this.renderHeaderRow(writer, context);
>>>> +        } else {
>>>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>>           }
>>>>             // ===== render the item rows =====
>>>> @@ -967,6 +974,32 @@ public class FormRenderer {
>>>>         }
>>>>   +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
>>>> +        String lookupName = modelForm.getListName();
>>>> +        Object obj = context.get(lookupName);
>>>> +        if (obj == null) {
>>>> +            if (Debug.verboseOn())
>>>> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
>>>> +            return;
>>>> +        }
>>>> +        // if list is empty, do not render rows
>>>> +        Iterator<?> iter = null;
>>>> +        if (obj instanceof Iterator<?>) {
>>>> +            iter = (Iterator<?>) obj;
>>>> +        } else if (obj instanceof List<?>) {
>>>> +            iter = ((List<?>) obj).listIterator();
>>>> +        }
>>>> +        int itemIndex = -1;
>>>> +        Object item = null;
>>>> +        while ((item = safeNext(iter)) != null) {
>>>> +            itemIndex++;
>>>> +            break;
>>>> +        }
>>>> +        if (itemIndex < 0) {
>>>> +            modelForm.setHideHeader(true);
>>>> +        }
>>>> +    }
>>>> +
>>>>       private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>>>>               int positions) throws IOException {
>>>>           List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
>>>> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>>>>       public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
>>>>       public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>>>       public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>>>>   }
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
>>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
>>>> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>>>>               renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>>>>           }
>>>>       }
>>>> -
>>>> +
>>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>>> +        StringWriter sr = new StringWriter();
>>>> +        sr.append("<@renderEmptyFormDataMessage");
>>>> +        sr.append(" message=\"");
>>>> +        sr.append(modelForm.getEmptyFormDataMessage());
>>>> +        sr.append("\" />");
>>>> +        executeMacro(writer, sr.toString());
>>>> +    }
>>>> +
>>>>       public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>>>           StringWriter sr = new StringWriter();
>>>>           sr.append("<@renderFormatHeaderOpen ");
>>>>
>>>> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
>>>> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
>>>> @@ -326,6 +326,10 @@ under the License.
>>>>     </label><#t/>
>>>>   </#macro>
>>>>   +<#macro renderEmptyFormDataMessage message>
>>>> +  <h3><#if message?has_content>${message}</#if></h3>
>>>> +</#macro>
>>>> +
>>>>   <#macro renderSingleFormFieldTitle></#macro>
>>>>     <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>
>>>>
>>>>
>>>>
>>>
>
>


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Mridul Pathak <mr...@hotwaxsystems.com>.
Hi Jacques,

I’ll do some tests and see if it could be fixed quickly, else revert it for now.

--
Thanks & Regards,
Mridul Pathak


> On Oct 17, 2016, at 6:43 PM, Jacques Le Roux <ja...@les7arts.com> wrote:
> 
> Hi Mridul,
> 
> After Arun fixed a compilation issue at r1765080, I found that this introduced a regression. Please see https://issues.apache.org/jira/browse/OFBIZ-8505
> 
> I think it's better to revert and test this more.
> 
> Thanks
> 
> Jacques
> 
> 
> Le 15/10/2016 à 16:25, Jacques Le Roux a écrit :
>> Hi Mridul,
>> 
>> Did you notice we have a compilation issue with this commit?
>> 
>> https://ci.apache.org/builders/ofbiz-trunk
>> 
>> https://ci.apache.org/builders/ofbiz-trunk/builds/1607/steps/shell/logs/stdio
>> 
>> Thanks
>> 
>> Jacques
>> 
>> 
>> Le 15/10/2016 à 15:19, mridulpathak@apache.org a écrit :
>>> Author: mridulpathak
>>> Date: Sat Oct 15 13:19:35 2016
>>> New Revision: 1765058
>>> 
>>> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
>>> Log:
>>> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
>>> (OFBIZ-7598)
>>> 
>>> Thanks: Suraj Khurana for contribution.
>>> 
>>> Modified:
>>>     ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>> ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>> 
>>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
>>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
>>> @@ -86,6 +86,7 @@ under the License.
>>>              <xs:attribute name="style" type="xs:string" />
>>>              <xs:attribute name="focus-field-name" type="xs:string" />
>>>              <xs:attribute name="title" type="xs:string" />
>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>              <xs:attribute name="tooltip" type="xs:string" />
>>>              <xs:attribute name="list-name" type="xs:string">
>>>                  <xs:annotation>
>>> @@ -327,6 +328,7 @@ under the License.
>>>              <xs:attribute name="style" type="xs:string" />
>>>              <xs:attribute name="focus-field-name" type="xs:string" />
>>>              <xs:attribute name="title" type="xs:string" />
>>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>>              <xs:attribute name="tooltip" type="xs:string" />
>>>              <xs:attribute name="list-name" type="xs:string">
>>>                  <xs:annotation>
>>> 
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
>>> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>>>      private final String formWidgetAreaStyle;
>>>      private final boolean groupColumns;
>>>      private final String headerRowStyle;
>>> -    private final boolean hideHeader;
>>> +    private boolean hideHeader;
>>>      private final String itemIndexSeparator;
>>>      private final List<String> lastOrderFields;
>>>      private final String listEntryName;
>>> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>>>      private final String targetType;
>>>      private final FlexibleStringExpander targetWindowExdr;
>>>      private final String title;
>>> +    private final String emptyFormDataMessage;
>>>      private final String tooltip;
>>>      private final String type;
>>>      private final boolean useRowSubmit;
>>> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>>>              title = parentModel.title;
>>>          }
>>>          this.title = title;
>>> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
>>> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
>>> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
>>> +        } else if (emptyFormDataMessage.isEmpty()) {
>>> +            emptyFormDataMessage = "No records found";
>>> +        }
>>> +        this.emptyFormDataMessage = emptyFormDataMessage;
>>>          String tooltip = formElement.getAttribute("tooltip");
>>>          if (tooltip.isEmpty() && parentModel != null) {
>>>              tooltip = parentModel.tooltip;
>>> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>>>      public boolean getHideHeader() {
>>>          return this.hideHeader;
>>>      }
>>> +    public boolean setHideHeader(Boolean hideHeader) {
>>> +        this.hideHeader = hideHeader;
>>> +        return hideHeader;
>>> +    }
>>>        public String getItemIndexSeparator() {
>>>          if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
>>> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>>>          return this.title;
>>>      }
>>>  +    public String getEmptyFormDataMessage() {
>>> +        return this.emptyFormDataMessage;
>>> +    }
>>> +
>>>      public String getTooltip() {
>>>          return this.tooltip;
>>>      }
>>> 
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
>>> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>>>  import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>>>  import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>>>  import org.apache.ofbiz.widget.model.ModelFormField;
>>> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>>>    /**
>>>   * A form rendering engine.
>>> @@ -925,9 +926,12 @@ public class FormRenderer {
>>>          formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>            int numOfColumns = 0;
>>> +        this.checkFormDataAndSetHeader(context);
>>>          // ===== render header row =====
>>>          if (!modelForm.getHideHeader()) {
>>>              numOfColumns = this.renderHeaderRow(writer, context);
>>> +        } else {
>>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>          }
>>>            // ===== render the item rows =====
>>> @@ -951,9 +955,12 @@ public class FormRenderer {
>>>          formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>>            int numOfColumns = 0;
>>> +        this.checkFormDataAndSetHeader(context);
>>>          // ===== render header row =====
>>>          if (!modelForm.getHideHeader()) {
>>>              numOfColumns = this.renderHeaderRow(writer, context);
>>> +        } else {
>>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>>          }
>>>            // ===== render the item rows =====
>>> @@ -967,6 +974,32 @@ public class FormRenderer {
>>>        }
>>>  +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
>>> +        String lookupName = modelForm.getListName();
>>> +        Object obj = context.get(lookupName);
>>> +        if (obj == null) {
>>> +            if (Debug.verboseOn())
>>> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
>>> +            return;
>>> +        }
>>> +        // if list is empty, do not render rows
>>> +        Iterator<?> iter = null;
>>> +        if (obj instanceof Iterator<?>) {
>>> +            iter = (Iterator<?>) obj;
>>> +        } else if (obj instanceof List<?>) {
>>> +            iter = ((List<?>) obj).listIterator();
>>> +        }
>>> +        int itemIndex = -1;
>>> +        Object item = null;
>>> +        while ((item = safeNext(iter)) != null) {
>>> +            itemIndex++;
>>> +            break;
>>> +        }
>>> +        if (itemIndex < 0) {
>>> +            modelForm.setHideHeader(true);
>>> +        }
>>> +    }
>>> +
>>>      private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>>>              int positions) throws IOException {
>>>          List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>>> 
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
>>> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>>>      public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
>>>      public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>>      public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>>>  }
>>> 
>>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
>>> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>>>              renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>>>          }
>>>      }
>>> -
>>> +
>>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>> +        StringWriter sr = new StringWriter();
>>> +        sr.append("<@renderEmptyFormDataMessage");
>>> +        sr.append(" message=\"");
>>> +        sr.append(modelForm.getEmptyFormDataMessage());
>>> +        sr.append("\" />");
>>> +        executeMacro(writer, sr.toString());
>>> +    }
>>> +
>>>      public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>>          StringWriter sr = new StringWriter();
>>>          sr.append("<@renderFormatHeaderOpen ");
>>> 
>>> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
>>> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
>>> @@ -326,6 +326,10 @@ under the License.
>>>    </label><#t/>
>>>  </#macro>
>>>  +<#macro renderEmptyFormDataMessage message>
>>> +  <h3><#if message?has_content>${message}</#if></h3>
>>> +</#macro>
>>> +
>>>  <#macro renderSingleFormFieldTitle></#macro>
>>>    <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>
>>> 
>>> 
>>> 
>> 
>> 
> 


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi Mridul,

After Arun fixed a compilation issue at r1765080, I found that this introduced a regression. Please see https://issues.apache.org/jira/browse/OFBIZ-8505

I think it's better to revert and test this more.

Thanks

Jacques


Le 15/10/2016 � 16:25, Jacques Le Roux a �crit :
> Hi Mridul,
>
> Did you notice we have a compilation issue with this commit?
>
> https://ci.apache.org/builders/ofbiz-trunk
>
> https://ci.apache.org/builders/ofbiz-trunk/builds/1607/steps/shell/logs/stdio
>
> Thanks
>
> Jacques
>
>
> Le 15/10/2016 � 15:19, mridulpathak@apache.org a �crit :
>> Author: mridulpathak
>> Date: Sat Oct 15 13:19:35 2016
>> New Revision: 1765058
>>
>> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
>> Log:
>> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
>> (OFBIZ-7598)
>>
>> Thanks: Suraj Khurana for contribution.
>>
>> Modified:
>>      ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>> ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>> ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>
>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
>> @@ -86,6 +86,7 @@ under the License.
>>               <xs:attribute name="style" type="xs:string" />
>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>               <xs:attribute name="title" type="xs:string" />
>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>               <xs:attribute name="tooltip" type="xs:string" />
>>               <xs:attribute name="list-name" type="xs:string">
>>                   <xs:annotation>
>> @@ -327,6 +328,7 @@ under the License.
>>               <xs:attribute name="style" type="xs:string" />
>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>               <xs:attribute name="title" type="xs:string" />
>> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>>               <xs:attribute name="tooltip" type="xs:string" />
>>               <xs:attribute name="list-name" type="xs:string">
>>                   <xs:annotation>
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>> URL: 
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
>> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>>       private final String formWidgetAreaStyle;
>>       private final boolean groupColumns;
>>       private final String headerRowStyle;
>> -    private final boolean hideHeader;
>> +    private boolean hideHeader;
>>       private final String itemIndexSeparator;
>>       private final List<String> lastOrderFields;
>>       private final String listEntryName;
>> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>>       private final String targetType;
>>       private final FlexibleStringExpander targetWindowExdr;
>>       private final String title;
>> +    private final String emptyFormDataMessage;
>>       private final String tooltip;
>>       private final String type;
>>       private final boolean useRowSubmit;
>> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>>               title = parentModel.title;
>>           }
>>           this.title = title;
>> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
>> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
>> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
>> +        } else if (emptyFormDataMessage.isEmpty()) {
>> +            emptyFormDataMessage = "No records found";
>> +        }
>> +        this.emptyFormDataMessage = emptyFormDataMessage;
>>           String tooltip = formElement.getAttribute("tooltip");
>>           if (tooltip.isEmpty() && parentModel != null) {
>>               tooltip = parentModel.tooltip;
>> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>>       public boolean getHideHeader() {
>>           return this.hideHeader;
>>       }
>> +    public boolean setHideHeader(Boolean hideHeader) {
>> +        this.hideHeader = hideHeader;
>> +        return hideHeader;
>> +    }
>>         public String getItemIndexSeparator() {
>>           if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
>> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>>           return this.title;
>>       }
>>   +    public String getEmptyFormDataMessage() {
>> +        return this.emptyFormDataMessage;
>> +    }
>> +
>>       public String getTooltip() {
>>           return this.tooltip;
>>       }
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>> URL: 
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>>   import org.apache.ofbiz.widget.model.ModelFormField;
>> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>>     /**
>>    * A form rendering engine.
>> @@ -925,9 +926,12 @@ public class FormRenderer {
>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>             int numOfColumns = 0;
>> +        this.checkFormDataAndSetHeader(context);
>>           // ===== render header row =====
>>           if (!modelForm.getHideHeader()) {
>>               numOfColumns = this.renderHeaderRow(writer, context);
>> +        } else {
>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>           }
>>             // ===== render the item rows =====
>> @@ -951,9 +955,12 @@ public class FormRenderer {
>>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>>             int numOfColumns = 0;
>> +        this.checkFormDataAndSetHeader(context);
>>           // ===== render header row =====
>>           if (!modelForm.getHideHeader()) {
>>               numOfColumns = this.renderHeaderRow(writer, context);
>> +        } else {
>> + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>>           }
>>             // ===== render the item rows =====
>> @@ -967,6 +974,32 @@ public class FormRenderer {
>>         }
>>   +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
>> +        String lookupName = modelForm.getListName();
>> +        Object obj = context.get(lookupName);
>> +        if (obj == null) {
>> +            if (Debug.verboseOn())
>> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
>> +            return;
>> +        }
>> +        // if list is empty, do not render rows
>> +        Iterator<?> iter = null;
>> +        if (obj instanceof Iterator<?>) {
>> +            iter = (Iterator<?>) obj;
>> +        } else if (obj instanceof List<?>) {
>> +            iter = ((List<?>) obj).listIterator();
>> +        }
>> +        int itemIndex = -1;
>> +        Object item = null;
>> +        while ((item = safeNext(iter)) != null) {
>> +            itemIndex++;
>> +            break;
>> +        }
>> +        if (itemIndex < 0) {
>> +            modelForm.setHideHeader(true);
>> +        }
>> +    }
>> +
>>       private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>>               int positions) throws IOException {
>>           List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>> URL: 
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>>       public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws 
>> IOException;
>>       public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>       public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>>   }
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>> URL: 
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>>               renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>>           }
>>       }
>> -
>> +
>> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>> +        StringWriter sr = new StringWriter();
>> +        sr.append("<@renderEmptyFormDataMessage");
>> +        sr.append(" message=\"");
>> +        sr.append(modelForm.getEmptyFormDataMessage());
>> +        sr.append("\" />");
>> +        executeMacro(writer, sr.toString());
>> +    }
>> +
>>       public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>>           StringWriter sr = new StringWriter();
>>           sr.append("<@renderFormatHeaderOpen ");
>>
>> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
>> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
>> @@ -326,6 +326,10 @@ under the License.
>>     </label><#t/>
>>   </#macro>
>>   +<#macro renderEmptyFormDataMessage message>
>> +  <h3><#if message?has_content>${message}</#if></h3>
>> +</#macro>
>> +
>>   <#macro renderSingleFormFieldTitle></#macro>
>>     <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex 
>> viewSize useRowSubmit>
>>
>>
>>
>
>


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Jacques Le Roux <ja...@les7arts.com>.
Thanks Arun

Jacques


Le 15/10/2016 � 16:53, Arun Patidar a �crit :
> Hi Jacques,
>
> I have fixed the compilation error at  r1765080. Thanks for reporting.
>


Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Arun Patidar <ar...@hotwaxsystems.com>.
Hi Jacques,

I have fixed the compilation error at  r1765080. Thanks for reporting.

-- 
Thanks & Regards
---
Arun Patidar
Manager,Enterprise Software Development
HotWax Mediawww.hotwaxsystems.com


On Sat, Oct 15, 2016 at 7:55 PM, Jacques Le Roux <
jacques.le.roux@les7arts.com> wrote:

> Hi Mridul,
>
> Did you notice we have a compilation issue with this commit?
>
> https://ci.apache.org/builders/ofbiz-trunk
>
> https://ci.apache.org/builders/ofbiz-trunk/builds/1607/
> steps/shell/logs/stdio
>
> Thanks
>
> Jacques
>
>
>
> Le 15/10/2016 à 15:19, mridulpathak@apache.org a écrit :
>
>> Author: mridulpathak
>> Date: Sat Oct 15 13:19:35 2016
>> New Revision: 1765058
>>
>> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
>> Log:
>> Improved: In form widgets of list type empty header row should not render
>> if list to render in file is empty.
>> (OFBIZ-7598)
>>
>> Thanks: Suraj Khurana for contribution.
>>
>> Modified:
>>      ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz
>> /widget/model/ModelForm.java
>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz
>> /widget/renderer/FormRenderer.java
>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz
>> /widget/renderer/FormStringRenderer.java
>>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz
>> /widget/renderer/macro/MacroFormRenderer.java
>>      ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>>
>> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dt
>> d/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ============================================================
>> ==================
>> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
>> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35
>> 2016
>> @@ -86,6 +86,7 @@ under the License.
>>               <xs:attribute name="style" type="xs:string" />
>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>               <xs:attribute name="title" type="xs:string" />
>> +            <xs:attribute name="empty-form-data-message"
>> type="xs:string" />
>>               <xs:attribute name="tooltip" type="xs:string" />
>>               <xs:attribute name="list-name" type="xs:string">
>>                   <xs:annotation>
>> @@ -327,6 +328,7 @@ under the License.
>>               <xs:attribute name="style" type="xs:string" />
>>               <xs:attribute name="focus-field-name" type="xs:string" />
>>               <xs:attribute name="title" type="xs:string" />
>> +            <xs:attribute name="empty-form-data-message"
>> type="xs:string" />
>>               <xs:attribute name="tooltip" type="xs:string" />
>>               <xs:attribute name="list-name" type="xs:string">
>>                   <xs:annotation>
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/model/ModelForm.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/sr
>> c/main/java/org/apache/ofbiz/widget/model/ModelForm.java?
>> rev=1765058&r1=1765057&r2=1765058&view=diff
>> ============================================================
>> ==================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>> (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>> Sat Oct 15 13:19:35 2016
>> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>>       private final String formWidgetAreaStyle;
>>       private final boolean groupColumns;
>>       private final String headerRowStyle;
>> -    private final boolean hideHeader;
>> +    private boolean hideHeader;
>>       private final String itemIndexSeparator;
>>       private final List<String> lastOrderFields;
>>       private final String listEntryName;
>> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>>       private final String targetType;
>>       private final FlexibleStringExpander targetWindowExdr;
>>       private final String title;
>> +    private final String emptyFormDataMessage;
>>       private final String tooltip;
>>       private final String type;
>>       private final boolean useRowSubmit;
>> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>>               title = parentModel.title;
>>           }
>>           this.title = title;
>> +        String emptyFormDataMessage = formElement.getAttribute("empt
>> y-form-data-message");
>> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
>> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
>> +        } else if (emptyFormDataMessage.isEmpty()) {
>> +            emptyFormDataMessage = "No records found";
>> +        }
>> +        this.emptyFormDataMessage = emptyFormDataMessage;
>>           String tooltip = formElement.getAttribute("tooltip");
>>           if (tooltip.isEmpty() && parentModel != null) {
>>               tooltip = parentModel.tooltip;
>> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>>       public boolean getHideHeader() {
>>           return this.hideHeader;
>>       }
>> +    public boolean setHideHeader(Boolean hideHeader) {
>> +        this.hideHeader = hideHeader;
>> +        return hideHeader;
>> +    }
>>         public String getItemIndexSeparator() {
>>           if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
>> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>>           return this.title;
>>       }
>>   +    public String getEmptyFormDataMessage() {
>> +        return this.emptyFormDataMessage;
>> +    }
>> +
>>       public String getTooltip() {
>>           return this.tooltip;
>>       }
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/FormRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/sr
>> c/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.
>> java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ============================================================
>> ==================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/FormRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>>   import org.apache.ofbiz.widget.model.ModelFormField;
>> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>>     /**
>>    * A form rendering engine.
>> @@ -925,9 +926,12 @@ public class FormRenderer {
>>           formStringRenderer.renderFormatListWrapperOpen(writer,
>> context, modelForm);
>>             int numOfColumns = 0;
>> +        this.checkFormDataAndSetHeader(context);
>>           // ===== render header row =====
>>           if (!modelForm.getHideHeader()) {
>>               numOfColumns = this.renderHeaderRow(writer, context);
>> +        } else {
>> +            formStringRenderer.renderEmptyFormDataMessage(writer,
>> context, modelForm);
>>           }
>>             // ===== render the item rows =====
>> @@ -951,9 +955,12 @@ public class FormRenderer {
>>           formStringRenderer.renderFormatListWrapperOpen(writer,
>> context, modelForm);
>>             int numOfColumns = 0;
>> +        this.checkFormDataAndSetHeader(context);
>>           // ===== render header row =====
>>           if (!modelForm.getHideHeader()) {
>>               numOfColumns = this.renderHeaderRow(writer, context);
>> +        } else {
>> +            formStringRenderer.renderEmptyFormDataMessage(writer,
>> context, modelForm);
>>           }
>>             // ===== render the item rows =====
>> @@ -967,6 +974,32 @@ public class FormRenderer {
>>         }
>>   +    private void checkFormDataAndSetHeader(Map<String, Object>
>> context) {
>> +        String lookupName = modelForm.getListName();
>> +        Object obj = context.get(lookupName);
>> +        if (obj == null) {
>> +            if (Debug.verboseOn())
>> +                Debug.logVerbose("No object for list or iterator name ["
>> + lookupName + "] found, so not rendering rows.", module);
>> +            return;
>> +        }
>> +        // if list is empty, do not render rows
>> +        Iterator<?> iter = null;
>> +        if (obj instanceof Iterator<?>) {
>> +            iter = (Iterator<?>) obj;
>> +        } else if (obj instanceof List<?>) {
>> +            iter = ((List<?>) obj).listIterator();
>> +        }
>> +        int itemIndex = -1;
>> +        Object item = null;
>> +        while ((item = safeNext(iter)) != null) {
>> +            itemIndex++;
>> +            break;
>> +        }
>> +        if (itemIndex < 0) {
>> +            modelForm.setHideHeader(true);
>> +        }
>> +    }
>> +
>>       private void renderSingleFormString(Appendable writer, Map<String,
>> Object> context,
>>               int positions) throws IOException {
>>           List<ModelFormField> tempFieldList = new
>> LinkedList<ModelFormField>();
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/FormStringRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/sr
>> c/main/java/org/apache/ofbiz/widget/renderer/FormStringRend
>> erer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ============================================================
>> ==================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/FormStringRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>>       public void renderContainerFindField(Appendable writer,
>> Map<String, Object> context, ModelFormField.ContainerField containerField)
>> throws IOException;
>>       public void renderFieldGroupOpen(Appendable writer, Map<String,
>> Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>>       public void renderFieldGroupClose(Appendable writer, Map<String,
>> Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>> +    public void renderEmptyFormDataMessage(Appendable writer,
>> Map<String, Object> context, ModelForm modelForm) throws IOException;
>>   }
>>
>> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/macro/MacroFormRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/sr
>> c/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFor
>> mRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
>> ============================================================
>> ==================
>> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/macro/MacroFormRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/
>> widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
>> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>>               renderEndingBoundaryComment(writer, "Grid Widget - Grid
>> Element", modelForm);
>>           }
>>       }
>> -
>> +
>> +    public void renderEmptyFormDataMessage(Appendable writer,
>> Map<String, Object> context, ModelForm modelForm) throws IOException {
>> +        StringWriter sr = new StringWriter();
>> +        sr.append("<@renderEmptyFormDataMessage");
>> +        sr.append(" message=\"");
>> +        sr.append(modelForm.getEmptyFormDataMessage());
>> +        sr.append("\" />");
>> +        executeMacro(writer, sr.toString());
>> +    }
>> +
>>       public void renderFormatHeaderOpen(Appendable writer, Map<String,
>> Object> context, ModelForm modelForm) throws IOException {
>>           StringWriter sr = new StringWriter();
>>           sr.append("<@renderFormatHeaderOpen ");
>>
>> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/te
>> mplates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=
>> 1765058&view=diff
>> ============================================================
>> ==================
>> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>> (original)
>> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat
>> Oct 15 13:19:35 2016
>> @@ -326,6 +326,10 @@ under the License.
>>     </label><#t/>
>>   </#macro>
>>   +<#macro renderEmptyFormDataMessage message>
>> +  <h3><#if message?has_content>${message}</#if></h3>
>> +</#macro>
>> +
>>   <#macro renderSingleFormFieldTitle></#macro>
>>     <#macro renderFormOpen linkUrl formType targetWindow containerId
>> containerStyle autocomplete name viewIndexField viewSizeField viewIndex
>> viewSize useRowSubmit>
>>
>>
>>
>>
>

Re: svn commit: r1765058 - in /ofbiz/trunk/framework/widget: dtd/ src/main/java/org/apache/ofbiz/widget/model/ src/main/java/org/apache/ofbiz/widget/renderer/ src/main/java/org/apache/ofbiz/widget/renderer/macro/ templates/

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi Mridul,

Did you notice we have a compilation issue with this commit?

https://ci.apache.org/builders/ofbiz-trunk

https://ci.apache.org/builders/ofbiz-trunk/builds/1607/steps/shell/logs/stdio

Thanks

Jacques


Le 15/10/2016 � 15:19, mridulpathak@apache.org a �crit :
> Author: mridulpathak
> Date: Sat Oct 15 13:19:35 2016
> New Revision: 1765058
>
> URL: http://svn.apache.org/viewvc?rev=1765058&view=rev
> Log:
> Improved: In form widgets of list type empty header row should not render if list to render in file is empty.
> (OFBIZ-7598)
>
> Thanks: Suraj Khurana for contribution.
>
> Modified:
>      ofbiz/trunk/framework/widget/dtd/widget-form.xsd
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
>      ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
>      ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
>
> Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
> +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016
> @@ -86,6 +86,7 @@ under the License.
>               <xs:attribute name="style" type="xs:string" />
>               <xs:attribute name="focus-field-name" type="xs:string" />
>               <xs:attribute name="title" type="xs:string" />
> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>               <xs:attribute name="tooltip" type="xs:string" />
>               <xs:attribute name="list-name" type="xs:string">
>                   <xs:annotation>
> @@ -327,6 +328,7 @@ under the License.
>               <xs:attribute name="style" type="xs:string" />
>               <xs:attribute name="focus-field-name" type="xs:string" />
>               <xs:attribute name="title" type="xs:string" />
> +            <xs:attribute name="empty-form-data-message" type="xs:string" />
>               <xs:attribute name="tooltip" type="xs:string" />
>               <xs:attribute name="list-name" type="xs:string">
>                   <xs:annotation>
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016
> @@ -147,7 +147,7 @@ public abstract class ModelForm extends
>       private final String formWidgetAreaStyle;
>       private final boolean groupColumns;
>       private final String headerRowStyle;
> -    private final boolean hideHeader;
> +    private boolean hideHeader;
>       private final String itemIndexSeparator;
>       private final List<String> lastOrderFields;
>       private final String listEntryName;
> @@ -184,6 +184,7 @@ public abstract class ModelForm extends
>       private final String targetType;
>       private final FlexibleStringExpander targetWindowExdr;
>       private final String title;
> +    private final String emptyFormDataMessage;
>       private final String tooltip;
>       private final String type;
>       private final boolean useRowSubmit;
> @@ -241,6 +242,13 @@ public abstract class ModelForm extends
>               title = parentModel.title;
>           }
>           this.title = title;
> +        String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message");
> +        if (emptyFormDataMessage.isEmpty() && parentModel != null) {
> +            emptyFormDataMessage = parentModel.emptyFormDataMessage;
> +        } else if (emptyFormDataMessage.isEmpty()) {
> +            emptyFormDataMessage = "No records found";
> +        }
> +        this.emptyFormDataMessage = emptyFormDataMessage;
>           String tooltip = formElement.getAttribute("tooltip");
>           if (tooltip.isEmpty() && parentModel != null) {
>               tooltip = parentModel.tooltip;
> @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends
>       public boolean getHideHeader() {
>           return this.hideHeader;
>       }
> +    public boolean setHideHeader(Boolean hideHeader) {
> +        this.hideHeader = hideHeader;
> +        return hideHeader;
> +    }
>   
>       public String getItemIndexSeparator() {
>           if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) {
> @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends
>           return this.title;
>       }
>   
> +    public String getEmptyFormDataMessage() {
> +        return this.emptyFormDataMessage;
> +    }
> +
>       public String getTooltip() {
>           return this.tooltip;
>       }
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016
> @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*;
>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroup;
>   import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase;
>   import org.apache.ofbiz.widget.model.ModelFormField;
> +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
>   
>   /**
>    * A form rendering engine.
> @@ -925,9 +926,12 @@ public class FormRenderer {
>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>   
>           int numOfColumns = 0;
> +        this.checkFormDataAndSetHeader(context);
>           // ===== render header row =====
>           if (!modelForm.getHideHeader()) {
>               numOfColumns = this.renderHeaderRow(writer, context);
> +        } else {
> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>           }
>   
>           // ===== render the item rows =====
> @@ -951,9 +955,12 @@ public class FormRenderer {
>           formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm);
>   
>           int numOfColumns = 0;
> +        this.checkFormDataAndSetHeader(context);
>           // ===== render header row =====
>           if (!modelForm.getHideHeader()) {
>               numOfColumns = this.renderHeaderRow(writer, context);
> +        } else {
> +            formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm);
>           }
>   
>           // ===== render the item rows =====
> @@ -967,6 +974,32 @@ public class FormRenderer {
>   
>       }
>   
> +    private void checkFormDataAndSetHeader(Map<String, Object> context) {
> +        String lookupName = modelForm.getListName();
> +        Object obj = context.get(lookupName);
> +        if (obj == null) {
> +            if (Debug.verboseOn())
> +                Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module);
> +            return;
> +        }
> +        // if list is empty, do not render rows
> +        Iterator<?> iter = null;
> +        if (obj instanceof Iterator<?>) {
> +            iter = (Iterator<?>) obj;
> +        } else if (obj instanceof List<?>) {
> +            iter = ((List<?>) obj).listIterator();
> +        }
> +        int itemIndex = -1;
> +        Object item = null;
> +        while ((item = safeNext(iter)) != null) {
> +            itemIndex++;
> +            break;
> +        }
> +        if (itemIndex < 0) {
> +            modelForm.setHideHeader(true);
> +        }
> +    }
> +
>       private void renderSingleFormString(Appendable writer, Map<String, Object> context,
>               int positions) throws IOException {
>           List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>();
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016
> @@ -99,4 +99,5 @@ public interface FormStringRenderer {
>       public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
>       public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
>       public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException;
>   }
>
> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original)
> +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016
> @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp
>               renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm);
>           }
>       }
> -
> +
> +    public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
> +        StringWriter sr = new StringWriter();
> +        sr.append("<@renderEmptyFormDataMessage");
> +        sr.append(" message=\"");
> +        sr.append(modelForm.getEmptyFormDataMessage());
> +        sr.append("\" />");
> +        executeMacro(writer, sr.toString());
> +    }
> +
>       public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException {
>           StringWriter sr = new StringWriter();
>           sr.append("<@renderFormatHeaderOpen ");
>
> Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original)
> +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016
> @@ -326,6 +326,10 @@ under the License.
>     </label><#t/>
>   </#macro>
>   
> +<#macro renderEmptyFormDataMessage message>
> +  <h3><#if message?has_content>${message}</#if></h3>
> +</#macro>
> +
>   <#macro renderSingleFormFieldTitle></#macro>
>   
>   <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit>
>
>
>