details:   /erp/devel/pi/rev/1dff818c6bbe
changeset: 9207:1dff818c6bbe
user:      Martin Taal <martin.taal <at> openbravo.com>
date:      Thu Dec 16 14:01:14 2010 +0100
summary:   First implementation of on change call to FIC

details:   /erp/devel/pi/rev/838075395d42
changeset: 9208:838075395d42
user:      Martin Taal <martin.taal <at> openbravo.com>
date:      Thu Dec 16 14:01:21 2010 +0100
summary:   First implementation of on change call to FIC

diffstat:

 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
 |  28 +++-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
                  |  59 +++++----
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
                      |   6 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
                      |  41 ++++++
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
                      |   1 -
 5 files changed, 96 insertions(+), 39 deletions(-)

diffs (244 lines):

diff -r f240c7d5a07d -r 838075395d42 
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
     Thu Dec 16 13:11:51 2010 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
     Thu Dec 16 14:01:21 2010 +0100
@@ -171,7 +171,11 @@
           } else if (mode.equals("CHANGE") || (mode.equals("SETSESSION"))) {
             // On CHANGE and SETSESSION mode, the values are read from the 
request
             JSONObject jsCol = new JSONObject();
-            jsCol.put("value", jsContent.get("inp" + 
Sqlc.TransformaNombreColumna(col)));
+            String colName = "inp" + Sqlc.TransformaNombreColumna(col);
+            if (!jsContent.has(colName)) {
+              continue;
+            }
+            jsCol.put("value", jsContent.get(colName));
             value = jsCol.toString();
           }
           JSONObject jsonobject = new JSONObject(value);
@@ -306,23 +310,29 @@
         finalObject.put("auxiliaryInputValues", jsonAuxiliaryInputValues);
 
         if (mode.equals("NEW") || mode.equals("EDIT")) {
-          JSONArray colsWithValidation = new JSONArray();
+          List<String> changeEventCols = new ArrayList<String>();
           // We also include information related to validation dependencies
           for (Field field : fields) {
             String column = field.getColumn().getDBColumnName();
+            // also call on change for every column with a callout
+            if (field.getColumn().getCallout() != null) {
+              final String columnName = "inp"
+                  + 
Sqlc.TransformaNombreColumna(field.getColumn().getDBColumnName());
+              if (!changeEventCols.contains(columnName)) {
+                changeEventCols.add(columnName);
+              }
+            }
             if (columnsInValidation.get(column) != null
                 && columnsInValidation.get(column).size() > 0) {
-              JSONObject colWithValidation = new JSONObject();
-              colWithValidation.put("name", "inp" + 
Sqlc.TransformaNombreColumna(column));
-              JSONArray colsInValidation = new JSONArray();
               for (String colInVal : columnsInValidation.get(column)) {
-                colsInValidation.put("inp" + 
Sqlc.TransformaNombreColumna(colInVal));
+                final String columnName = "inp" + 
Sqlc.TransformaNombreColumna(colInVal);
+                if (!changeEventCols.contains(columnName)) {
+                  changeEventCols.add(columnName);
+                }
               }
-              colWithValidation.put("colsInValidation", colsInValidation);
-              colsWithValidation.put(colWithValidation);
             }
           }
-          finalObject.put("colsWithValidation", colsWithValidation);
+          finalObject.put("dynamicCols", new JSONArray(changeEventCols));
         }
         System.out.println(finalObject.toString(1));
         System.out.println(System.currentTimeMillis() - iniTime);
diff -r f240c7d5a07d -r 838075395d42 
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
      Thu Dec 16 13:11:51 2010 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
      Thu Dec 16 14:01:21 2010 +0100
@@ -931,42 +931,49 @@
     }
   },
   
-  getContextInfo: function(record, allProperties, sessionProperties){
+  getContextInfo: function(allProperties, sessionProperties){
+    // different modes:
+    // 1) showing grid with one record selected
+    // 2) showing form with aux inputs
+    var record;
+    if (this.viewGrid.isVisible()) {
+      record = this.viewGrid.getSelectedRecord()
+    } else {
+      record = this.viewForm.getValues();   
+    }
     
     var properties = this.propertyToColumns;
 
     for (var i=0; i<properties.length; i++){
       var value = record[properties[i].property];
-      if (typeof value === 'boolean'){
-        value = value?'Y':'N';
+      allProperties[properties[i].column] = value;
+      if (properties[i].sessionProperty){
+        sessionProperties[properties[i].column] = value;
       }
-      var param = {};
-      param[properties[i].column] = value;
-      isc.addProperties(allProperties, param);
-      if (properties[i].sessionProperty){
-        isc.addProperties(sessionProperties, param);
-      }
+    }
+    
+    if (this.viewForm.isVisible()) {
+      isc.addProperties(allProperties, this.viewForm.auxInputs);
+      isc.addProperties(sessionProperties, this.viewForm.auxInputs);
+    }
+    
+    if (this.parentView) {
+      this.parentView.getContextInfo(allProperties, sessionProperties);
     }
   },
 
   setContextInfo: function (sessionProperties, callbackFunction) {
-    var requestParameters = {}, data ={};
-    requestParameters._action = 
'org.openbravo.client.kernel.SetContextInfoActionHandler';
-    isc.addProperties(data, sessionProperties);
-    isc.addProperties(data, {_windowId: this.windowId});
-    
-    var rpcRequest = {};
-    rpcRequest.actionURL = OB.Application.contextUrl + 
'org.openbravo.client.kernel';
-    rpcRequest.callback = callbackFunction;
-    rpcRequest.httpMethod = 'POST';
-               rpcRequest.data = isc.JSON.encode(data);
-    rpcRequest.contentType = 'application/json;charset=UTF-8';
-    rpcRequest.useSimpleHttp = true;
-    rpcRequest.evalResult = false;
-    rpcRequest.params = requestParameters;
-    isc.RPCManager.sendRequest(rpcRequest);
-  }
-  
+    var allProperties = {};
+    if (!sessionProperties) {
+      sessionProperties = {};
+      this.getContextInfo(allProperties, sessionProperties);
+    }
+    
OB.RemoteCallManager.call('org.openbravo.client.application.window.FormInitializationComponent',
 
+    sessionProperties, {
+      MODE: 'SETSESSION',
+      TAB_ID: this.view.tabId
+    }, callbackFunction);
+  }  
 });
 
 // = OBStandardViewTabSet =
diff -r f240c7d5a07d -r 838075395d42 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
  Thu Dec 16 13:11:51 2010 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
  Thu Dec 16 14:01:21 2010 +0100
@@ -807,7 +807,7 @@
        var allProperties = {}, sessionProperties={};
        var theView = button.parentElement.parentElement.view;
        
-       theView.getContextInfo(theView.viewGrid.getSelectedRecord(), 
allProperties, sessionProperties);
+       theView.getContextInfo(allProperties, sessionProperties);
        
        
        for (param in allProperties){
@@ -837,8 +837,8 @@
     return;
   }
   
-  
-  var params = 
button.parentElement.parentElement.view.getContextInfo(theView.viewGrid.getSelectedRecord());
+  var allProperties = {}, sessionProperties = {};
+  var params = theView.getContextInfo(allProperties, sessionProperties);
   
   
   for (param in params){
diff -r f240c7d5a07d -r 838075395d42 
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
  Thu Dec 16 13:11:51 2010 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
  Thu Dec 16 14:01:21 2010 +0100
@@ -30,6 +30,8 @@
   // and the grid and other related components.
   view: null,
   numCols: 4,
+  auxInputs: {},
+  dynamicCols: [],
   
   fieldsByInpColumnName: null,
   fieldsByColumnName: null,
@@ -102,6 +104,7 @@
       return;
     }
     var columnValues = data.columnValues, calloutMessages = 
data.calloutMessages, auxInputs = data.auxiliaryInputValues, prop, value;
+    var dynamicCols = data.dynamicCols;
     if (columnValues) {
       for (prop in columnValues) {
         if (columnValues.hasOwnProperty(prop)) {
@@ -113,12 +116,17 @@
       // show messages...
     }
     if (auxInputs) {
+      this.auxInputs = {};
       for (prop in auxInputs) {
         if (auxInputs.hasOwnProperty(prop)) {
           this.setValue(prop, auxInputs[prop].value);
+          auxInputs[prop] = auxInputs[prop].value;
         }
       }
     }
+    if (dynamicCols) {
+      this.dynamicCols = dynamicCols;
+    }
   },
   
   processColumnValue: function(columnName, columnValue){
@@ -150,5 +158,38 @@
     } else {
       this.clearValue(field.name);
     }
+  },
+  
+  itemChanged: function(item, newValue) {
+    var ret = this.Super("itemChanged", arguments);
+    var i;
+    for (i = 0; i < this.dynamicCols.length; i++) {
+      if (this.dynamicCols[i] === item.inpColumnName) {
+        this.doChangeFICCall(item);
+        return;      
+      }
+    }
+    return ret;
+  },
+  
+  doChangeFICCall: function(item) {
+    var parentId = null, me = this;
+    if (this.view.parentProperty) {
+      parentId = this.getValue(this.view.parentProperty);
+    }
+    
+    var allProperties = {}, sessionProperties = {};
+    this.view.getContextInfo(allProperties, sessionProperties);
+    
+    // collect the context information    
+    
OB.RemoteCallManager.call('org.openbravo.client.application.window.FormInitializationComponent',
 allProperties, {
+      MODE: 'CHANGE',
+      PARENT_ID: parentId,
+      TAB_ID: this.view.tabId,
+      ROW_ID: this.getValue(OB.Constants.ID),
+      CHANGED_COLUMN: item.inpColumnName
+    }, function(response, data, request){
+      me.processInitialValues(response, data, request);
+    });
   }
 });
diff -r f240c7d5a07d -r 838075395d42 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
  Thu Dec 16 13:11:51 2010 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
  Thu Dec 16 14:01:21 2010 +0100
@@ -866,7 +866,6 @@
   },
   
   doOpen: function(){
-               this.grid.view.getContextInfo(this.record);
     this.grid.view.editRecord(this.record);
   },
   

------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to