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