details:   /erp/devel/pi/rev/a8a9ffdb50d5
changeset: 9851:a8a9ffdb50d5
user:      Iván Perdomo <ivan.perdomo <at> openbravo.com>
date:      Mon Jan 17 11:15:59 2011 +0100
summary:   [form] Reimplemented display logic

diffstat:

 
modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
            |  17 ++++---
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
          |  16 ++++---
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
 |  21 ++++++++++
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
         |   2 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
                  |   1 +
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
                      |  14 +++++-
 6 files changed, 52 insertions(+), 19 deletions(-)

diffs (212 lines):

diff -r 821f5f52d8f4 -r a8a9ffdb50d5 
modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
        Mon Jan 17 11:07:30 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
        Mon Jan 17 11:15:59 2011 +0100
@@ -26,14 +26,11 @@
 
 import org.hibernate.criterion.Expression;
 import org.openbravo.client.kernel.KernelUtils;
-import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
-import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.ad.ui.AuxiliaryInput;
 import org.openbravo.model.ad.ui.Field;
 import org.openbravo.model.ad.ui.Tab;
-import org.openbravo.service.db.DalConnectionProvider;
 
 /**
  * Parses a dynamic expressions and extracts information, e.g. The expression 
is using a field or an
@@ -53,8 +50,8 @@
 
   private static final String[][] UNIONS = { { "|", " || " }, { "&", " && " } 
};
 
+  private static final String TOKEN_PREFIX = "context.";
   private static Map<String, String> exprToJSMap;
-
   static {
     exprToJSMap = new HashMap<String, String>();
     exprToJSMap.put("'Y'", "true");
@@ -62,6 +59,7 @@
 
   private List<Field> fieldsInExpression = new ArrayList<Field>();
   private List<AuxiliaryInput> auxInputsInExpression = new 
ArrayList<AuxiliaryInput>();
+  private List<String> sessionAttributesInExpression = new ArrayList<String>();
 
   private String code;
   private Tab tab;
@@ -121,6 +119,10 @@
     return fieldsInExpression;
   }
 
+  public List<String> getSessionAttributes() {
+    return sessionAttributesInExpression;
+  }
+
   /*
    * This method was partially copied from WadUtility.
    */
@@ -165,12 +167,11 @@
         auxInputsInExpression.add(auxIn);
         // prevents jslint warning but will only work if auxIn does
         // not contain illegal js names..
-        return "form.auxInputs." + auxIn.getName() + "";
+        return TOKEN_PREFIX + auxIn.getName();
       }
     }
-    return "'"
-        + Utility.getContext(new DalConnectionProvider(false), 
RequestContext.get()
-            .getVariablesSecureApp(), token, tab.getWindow().getId()) + "'";
+    sessionAttributesInExpression.add(token);
+    return TOKEN_PREFIX + token;
   }
 
   /*
diff -r 821f5f52d8f4 -r a8a9ffdb50d5 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
      Mon Jan 17 11:07:30 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
      Mon Jan 17 11:15:59 2011 +0100
@@ -4,14 +4,14 @@
  * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
  * Version 1.1  with a permitted attribution clause; you may not  use this
  * file except in compliance with the License. You  may  obtain  a copy of
- * the License at http://www.openbravo.com/legal/license.html 
+ * the License at http://www.openbravo.com/legal/license.html
  * Software distributed under the License  is  distributed  on  an "AS IS"
  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  * License for the specific  language  governing  rights  and  limitations
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2010 Openbravo SLU
+ * All portions are Copyright (C) 2010-2011 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -35,12 +35,14 @@
         referencedKeyColumnName: 
'${fieldDefinition.referencedKeyColumnName?string}',
         targetEntity: '${fieldDefinition.targetEntity?string}',
         required: ${fieldDefinition.required?string},
-        redrawOnChange: ${fieldDefinition.redrawOnChange?string},
+          <#if fieldDefinition.redrawOnChange?string = "true" >
+          redrawOnChange: ${fieldDefinition.redrawOnChange?string},
+          </#if>
           <#if fieldDefinition.showIf != "">
-          showIf: function(item, value, form) {
-                    // debug console.log('%o', form);
-                    return form.auxInputs && (${fieldDefinition.showIf});
-                  },
+          showIf: function(item, value, form, values) {
+            var context = form.view.getContextInfo(false, true);
+            return context && (${fieldDefinition.showIf});
+          },
           </#if>
           <#if fieldDefinition.searchField>
           displayField: '${fieldDefinition.name?js_string}._identifier',
diff -r 821f5f52d8f4 -r a8a9ffdb50d5 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
     Mon Jan 17 11:07:30 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
     Mon Jan 17 11:15:59 2011 +0100
@@ -43,6 +43,7 @@
 import org.openbravo.base.model.Property;
 import org.openbravo.base.structure.BaseOBObject;
 import org.openbravo.base.structure.ClientEnabled;
+import org.openbravo.client.application.DynamicExpressionParser;
 import 
org.openbravo.client.application.window.servlet.CalloutHttpServletResponse;
 import org.openbravo.client.application.window.servlet.CalloutServletConfig;
 import org.openbravo.client.kernel.BaseActionHandler;
@@ -317,6 +318,7 @@
           jsonAuxiliaryInputValues.put(auxIn.getName(), columnValues.get("inp"
               + Sqlc.TransformaNombreColumna(auxIn.getName())));
         }
+
         finalObject.put("auxiliaryInputValues", jsonAuxiliaryInputValues);
 
         if (mode.equals("NEW") || mode.equals("EDIT")) {
@@ -330,6 +332,25 @@
                 changeEventCols.add(columnName);
               }
             }
+
+            // Adding session attributes in a dynamic expression
+            // This session attributes could be a preference
+            if (field.getDisplayLogic() != null && field.isDisplayed() && 
field.isActive()) {
+              final DynamicExpressionParser parser = new 
DynamicExpressionParser(field
+                  .getDisplayLogic(), tab);
+
+              if (parser.getSessionAttributes().size() > 0) {
+                final JSONObject sessionAttributes = new JSONObject();
+                for (String attrName : parser.getSessionAttributes()) {
+                  final String attrValue = Utility.getContext(new 
DalConnectionProvider(false),
+                      RequestContext.get().getVariablesSecureApp(), attrName, 
tab.getWindow()
+                          .getId());
+                  sessionAttributes.put(attrName, attrValue);
+                }
+                finalObject.put("sessionAttributes", sessionAttributes);
+              }
+            }
+
           }
           finalObject.put("dynamicCols", new JSONArray(changeEventCols));
         }
diff -r 821f5f52d8f4 -r a8a9ffdb50d5 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
     Mon Jan 17 11:07:30 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
     Mon Jan 17 11:15:59 2011 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2010 Openbravo SLU
+ * All portions are Copyright (C) 2010-2011 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
diff -r 821f5f52d8f4 -r a8a9ffdb50d5 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
      Mon Jan 17 11:07:30 2011 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
      Mon Jan 17 11:15:59 2011 +0100
@@ -1321,6 +1321,7 @@
     if (this.isShowingForm) {
       isc.addProperties(contextInfo, this.viewForm.auxInputs);
       isc.addProperties(contextInfo, this.viewForm.hiddenInputs);
+      isc.addProperties(contextInfo, this.viewForm.sessionAttributes);
     }
     
     if (this.parentView) {
diff -r 821f5f52d8f4 -r a8a9ffdb50d5 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
  Mon Jan 17 11:07:30 2011 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
  Mon Jan 17 11:15:59 2011 +0100
@@ -31,6 +31,7 @@
   view: null,
   auxInputs: {},
   hiddenInputs: {},
+  sessionAttributes: {},
   dynamicCols: [],
   width: '100%',
   
@@ -212,8 +213,10 @@
     if (!data) {
       return;
     }
-    var columnValues = data.columnValues, calloutMessages = 
data.calloutMessages, auxInputs = data.auxiliaryInputValues, prop, value;
-    var dynamicCols = data.dynamicCols;
+    var columnValues = data.columnValues, calloutMessages = 
data.calloutMessages,
+                       auxInputs = data.auxiliaryInputValues, prop, value,
+                       dynamicCols = data.dynamicCols,
+                       sessionAttributes = data.sessionAttributes;
     if (columnValues) {
       for (prop in columnValues) {
         if (columnValues.hasOwnProperty(prop)) {
@@ -231,10 +234,15 @@
       for (prop in auxInputs) {
         if (auxInputs.hasOwnProperty(prop)) {
           this.setValue(prop, auxInputs[prop].value);
-          auxInputs[prop] = auxInputs[prop].value;
+          this.auxInputs[prop] = auxInputs[prop].value;
         }
       }
     }
+
+    if(sessionAttributes) {
+      this.sessionAttributes = sessionAttributes;
+    }
+
     if (dynamicCols) {
       this.dynamicCols = dynamicCols;
     }

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand 
malware threats, the impact they can have on your business, and how you 
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to