details:   https://code.openbravo.com/erp/devel/pi/rev/09050a5b4162
changeset: 21931:09050a5b4162
user:      David Baz Fayos <david.baz <at> openbravo.com>
date:      Fri Feb 07 15:16:17 2014 +0100
summary:   Related to issue 24705: Lazy evaluation of viewForm
Now most of the elements and the logic of the viewForm is loaded when the form 
needs to be visualized

diffstat:

 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-view-grid.js
                   |   6 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-view.js
               |  47 ++++++---
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js
             |   8 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-manage-views.js
     |   4 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalization.js
  |   6 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalize-form.js
 |   7 +-
 6 files changed, 52 insertions(+), 26 deletions(-)

diffs (194 lines):

diff -r c73830693d65 -r 09050a5b4162 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-view-grid.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-view-grid.js
     Fri Feb 07 12:56:56 2014 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-view-grid.js
     Fri Feb 07 15:16:17 2014 +0100
@@ -830,7 +830,9 @@
   },
 
   setData: function (data) {
-    data.grid = this;
+    if (typeof data !== 'undefined' && data !== null) {
+      data.grid = this;
+    }
     this.Super('setData', arguments);
   },
 
@@ -2144,7 +2146,7 @@
         this.emptyMessage = this.noDataEmptyMessage;
       }
     }
-    if (oldMessage !== this.emptyMessage) {
+    if (oldMessage !== this.emptyMessage && this.body) {
       this.body.markForRedraw();
     }
   },
diff -r c73830693d65 -r 09050a5b4162 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-view.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-view.js
 Fri Feb 07 12:56:56 2014 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-view.js
 Fri Feb 07 15:16:17 2014 +0100
@@ -282,6 +282,34 @@
     return this.Super('destroy', arguments);
   },
 
+  prepareViewForm: function () {
+    var personalizationData = {};
+
+    if (!this.viewForm) {
+      return;
+    }
+
+    // setDataSource executes setFields which replaces the current fields
+    // We don't want to destroy the associated DataSource objects
+    this.viewForm.destroyItemObjects = false;
+
+    // is used to keep track of the original simple objects
+    // used to create fields
+    this.viewForm._originalFields = isc.clone(this.formFields);
+    this.viewForm.fields = this.formFields;
+    this.viewForm.firstFocusedField = this.firstFocusedField;
+
+    this.viewForm.setDataSource(this.dataSource, this.formFields);
+    this.viewForm.isViewForm = true;
+    this.viewForm.destroyItemObjects = true;
+
+    personalizationData = this.getFormPersonalization(true);
+    if (personalizationData && personalizationData.form) {
+      OB.Personalization.personalizeForm(personalizationData, this.viewForm);
+    }
+
+  },
+
   buildStructure: function () {
     var length, i, fld, lazyFiltering;
     this.createMainParts();
@@ -319,22 +347,6 @@
       this.refreshContents = false;
     }
 
-    if (this.viewForm) {
-      // setDataSource executes setFields which replaces the current fields
-      // We don't want to destroy the associated DataSource objects
-      this.viewForm.destroyItemObjects = false;
-
-      // is used to keep track of the original simple objects
-      // used to create fields
-      this.viewForm._originalFields = isc.clone(this.formFields);
-      this.viewForm.fields = this.formFields;
-      this.viewForm.firstFocusedField = this.firstFocusedField;
-
-      this.viewForm.setDataSource(this.dataSource, this.formFields);
-      this.viewForm.isViewForm = true;
-      this.viewForm.destroyItemObjects = true;
-    }
-
     if (this.isRootView) {
       if (this.childTabSet) {
         this.childTabSet.setState(isc.OBStandardView.STATE_IN_MID);
@@ -1069,6 +1081,9 @@
   // Switch from form to grid view or the other way around
   switchFormGridVisibility: function () {
     if (!this.isShowingForm) {
+      if (!this.viewForm.getDataSource()) {
+        this.prepareViewForm();
+      }
       this.viewGrid.hide();
       this.statusBarFormLayout.show();
       this.statusBarFormLayout.setHeight('100%');
diff -r c73830693d65 -r 09050a5b4162 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js
       Fri Feb 07 12:56:56 2014 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js
       Fri Feb 07 15:16:17 2014 +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-2013 Openbravo SLU
+ * All portions are Copyright (C) 2010-2014 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -555,7 +555,7 @@
           // check the default form and grid viewstates
           length = this.views.length;
           for (i = 0; i < length; i++) {
-            if (personalization.forms && 
personalization.forms[this.views[i].tabId]) {
+            if (personalization.forms && 
personalization.forms[this.views[i].tabId] && 
this.views[i].viewForm.getDataSource()) {
               this.lastViewApplied = true;
               
OB.Personalization.personalizeForm(personalization.forms[this.views[i].tabId], 
this.views[i].viewForm);
             }
@@ -659,8 +659,8 @@
       if (checkSavedView && this.getClass().personalization && 
this.getClass().personalization.views && this.selectedPersonalizationId) {
         for (i = 0; i < this.getClass().personalization.views.length; i++) {
           persView = this.getClass().personalization.views[i];
-          if (persView.viewDefinition && persView.viewDefinition[view.tabId] 
&& persView.personalizationId === this.selectedPersonalizationId) {
-            return persView.viewDefinition[view.tabId].form;
+          if (persView.viewDefinition && persView.viewDefinition[view.tabId] 
&& persView.personalizationId === this.selectedPersonalizationId && 
persView.viewDefinition[view.tabId].form) {
+            return persView.viewDefinition[view.tabId];
           }
         }
       }
diff -r c73830693d65 -r 09050a5b4162 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-manage-views.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-manage-views.js
       Fri Feb 07 12:56:56 2014 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-manage-views.js
       Fri Feb 07 15:16:17 2014 +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) 2011-2013 Openbravo SLU
+ * All portions are Copyright (C) 2011-2014 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s): ___________
  ************************************************************************
@@ -168,7 +168,7 @@
           view.viewGrid.refreshContents();
         }
       }
-      if (viewTabDefinition.form) {
+      if (viewTabDefinition.form && view.viewForm.getDataSource()) {
         OB.Personalization.personalizeForm(viewTabDefinition, view.viewForm);
       }
     }
diff -r c73830693d65 -r 09050a5b4162 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalization.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalization.js
    Fri Feb 07 12:56:56 2014 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalization.js
    Fri Feb 07 15:16:17 2014 +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) 2011-2013 Openbravo SLU
+ * All portions are Copyright (C) 2011-2014 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s): ___________
  ************************************************************************
@@ -362,6 +362,10 @@
   var persId, i, j, fld, undef, fldDef, childFld, newField, newFields = [],
       record, length, allChildFieldsHidden, statusBarFields = [];
 
+  if (!data || !data.form || !data.form.fields || !form) {
+    return;
+  }
+
   // work further with the fields themselves
   data = data.form.fields;
 
diff -r c73830693d65 -r 09050a5b4162 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalize-form.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalize-form.js
   Fri Feb 07 12:56:56 2014 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/personalization/ob-personalize-form.js
   Fri Feb 07 15:16:17 2014 +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) 2011-2012 Openbravo SLU
+ * All portions are Copyright (C) 2011-2014 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -103,6 +103,11 @@
 
     this.initializing = true;
 
+    if (this.form && this.form.view && !this.form.getDataSource()) {
+      // If the viewForm has not been yet fully loaded, do it now.
+      this.form.view.prepareViewForm();
+    }
+
     this.createAddToolbar();
     this.createAddStatusbar();
     this.createAddMainLayout();

------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to