details: /erp/devel/pi/rev/a02b82831805
changeset: 10326:a02b82831805
user: Martin Taal <martin.taal <at> openbravo.com>
date: Wed Feb 02 15:32:58 2011 +0100
summary: Solve issue with null value of view datasource
details: /erp/devel/pi/rev/b53f9e9335cd
changeset: 10327:b53f9e9335cd
user: Martin Taal <martin.taal <at> openbravo.com>
date: Wed Feb 02 15:34:23 2011 +0100
summary: Grid editing: also pass/handle form values in edit mode
details: /erp/devel/pi/rev/001abf5ee1fa
changeset: 10328:001abf5ee1fa
user: Martin Taal <martin.taal <at> openbravo.com>
date: Wed Feb 02 15:35:28 2011 +0100
summary: Consider all context values (also from editable grid) when opening
popup
details: /erp/devel/pi/rev/8c027d350043
changeset: 10329:8c027d350043
user: Martin Taal <martin.taal <at> openbravo.com>
date: Wed Feb 02 15:35:57 2011 +0100
summary: Save edit values in grid before saving the record itself
diffstat:
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
| 4 +-
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
| 7 +-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
| 18 +-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
| 61 +++++++--
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
| 58 +++++----
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
| 1 +
6 files changed, 96 insertions(+), 53 deletions(-)
diffs (truncated from 345 to 300 lines):
diff -r 2260f5f59c95 -r 8c027d350043
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
---
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
Wed Feb 02 14:26:32 2011 +0100
+++
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
Wed Feb 02 15:35:57 2011 +0100
@@ -27,7 +27,6 @@
</#if>
<#if tabComponent.tabSet>
tabId: '${tabComponent.tabId}',
- dataSource: ${tabComponent.dataSourceJavaScript},
moduleId: '${tabComponent.moduleId}',
</#if>
@@ -46,7 +45,7 @@
<#list tabComponent.allFields as field>
{
property: '${field.propertyName?js_string}',
- column: '${field.columnName?js_string}',
+ inpColumn: '${field.columnName?js_string}',
dbColumn: '${field.dbColumnName?js_string}',
sessionProperty: ${field.session},
type: '${field.typeName?js_string}'
@@ -99,6 +98,7 @@
hasChildTabs: true,
</#if>
initWidget: function() {
+ this.dataSource = ${tabComponent.dataSourceJavaScript};
this.viewForm = ${tabComponent.viewForm};
this.viewGrid = ${tabComponent.viewGrid};
this.Super('initWidget', arguments);
diff -r 2260f5f59c95 -r 8c027d350043
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
Wed Feb 02 14:26:32 2011 +0100
+++
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
Wed Feb 02 15:35:57 2011 +0100
@@ -413,11 +413,14 @@
private void setValuesInRequest(String mode, Tab tab, BaseOBObject row,
JSONObject jsContent) {
List<Field> fields = tab.getADFieldList();
if (mode.equals("EDIT")) {
- // In EDIT mode we get them from the database
+ // In EDIT mode we initialize them from the database
for (Field field : fields) {
setValueOfColumnInRequest(row, field.getColumn().getDBColumnName());
}
- } else if (mode.equals("CHANGE") || mode.equals("SETSESSION")) {
+ }
+
+ // and then overwrite with what gets passed in
+ if (mode.equals("EDIT") || mode.equals("CHANGE") ||
mode.equals("SETSESSION")) {
// In CHANGE and SETSESSION we get them from the request
for (Field field : fields) {
final Property prop =
KernelUtils.getInstance().getPropertyFromColumn(field.getColumn());
diff -r 2260f5f59c95 -r 8c027d350043
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
---
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
Wed Feb 02 14:26:32 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
Wed Feb 02 15:35:57 2011 +0100
@@ -173,10 +173,11 @@
},
showPicker: function(){
+ var parameters = [], index = 0, i = 0, length, propDef, inpName, values;
+ var form = this.form, view = form.view;
if (this.isFocusable()) {
this.focusInItem();
}
- var parameters = [], index = 0, i = 0, length, fld, inpName;
parameters[index++] = 'inpIDValue';
if (this.getValue()) {
parameters[index++] = this.getValue();
@@ -184,14 +185,19 @@
parameters[index++] = '';
}
parameters[index++] = 'WindowID';
- parameters[index++] = this.form.view.standardWindow.windowId;
+ parameters[index++] = view.standardWindow.windowId;
+ values = view.getContextInfo(false, true, true, true);
length = this.inFields.length;
for (i = 0; i < length; i++) {
inpName = this.inFields[i];
- fld = this.form.getFieldFromInpColumnName(inpName);
- if (fld && fld.getValue()) {
- parameters[index++] = 'inp' + fld.columnName;
- parameters[index++] = fld.getValue();
+ propDef = view.getPropertyDefinitionFromInpColumnName(inpName);
+ if (propDef && values[inpName]) {
+ // note the name passed is not the same as the inp name, it is inp +
dbcolumn
+ parameters[index++] = 'inp' + propDef.dbColumn;
+ parameters[index++] = values[inpName];
+ // and to be save also pass the value as the input name
+ parameters[index++] = inpName;
+ parameters[index++] = values[inpName];
}
}
this.openSearchWindow(this.searchUrl, parameters, this.getValue());
diff -r 2260f5f59c95 -r 8c027d350043
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
Wed Feb 02 14:26:32 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
Wed Feb 02 15:35:57 2011 +0100
@@ -1264,12 +1264,45 @@
if (this.isShowingForm) {
return this.viewForm.getValues();
} else if (this.isEditingGrid) {
- return this.viewGrid.getEditForm().getValues();
+ return isc.addProperties({}, this.viewGrid.getSelectedRecord(),
this.viewGrid.getEditForm().getValues());
} else {
return this.viewGrid.getSelectedRecord();
}
},
+ getPropertyFromColumnName: function(columnName){
+ var length = this.view.propertyToColumns.length;
+ for (var i = 0; i < length; i++) {
+ var propDef = this.view.propertyToColumns[i];
+ if (propDef.dbColumn === columnName) {
+ return propDef.property;
+ }
+ }
+ return null;
+ },
+
+ getPropertyFromDBColumnName: function(columnName){
+ var length = this.propertyToColumns.length;
+ for (var i = 0; i < length; i++) {
+ var propDef = this.propertyToColumns[i];
+ if (propDef.dbColumn === columnName) {
+ return propDef.property;
+ }
+ }
+ return null;
+ },
+
+ getPropertyDefinitionFromInpColumnName: function(columnName){
+ var length = this.propertyToColumns.length;
+ for (var i = 0; i < length; i++) {
+ var propDef = this.propertyToColumns[i];
+ if (propDef.inpColumn === columnName) {
+ return propDef;
+ }
+ }
+ return null;
+ },
+
//++++++++++++++++++ Reading context ++++++++++++++++++++++++++++++
getContextInfo: function(onlySessionProperties, classicMode,
forceSettingContextVars, convertToClassicFormat){
@@ -1284,16 +1317,16 @@
// 1) showing grid with one record selected
// 2) showing form with aux inputs
if (this.isEditingGrid) {
- record = this.viewGrid.getEditForm().getValues();
+ record = isc.addProperties({}, this.viewGrid.getSelectedRecord(),
this.viewGrid.getEditForm().getValues());
component = this.viewGrid.getEditForm();
form = component;
- } else if (!this.isShowingForm) {
- record = this.viewGrid.getSelectedRecord();
- component = this.viewGrid;
- } else {
+ } else if (this.isShowingForm) {
record = this.viewForm.getValues();
component = this.viewForm;
form = component;
+ } else {
+ record = this.viewGrid.getSelectedRecord();
+ component = this.viewGrid;
}
var properties = this.propertyToColumns;
@@ -1316,12 +1349,12 @@
if (propertyObj.type && convertToClassicFormat) {
type = SimpleType.getType(propertyObj.type);
if (type.createClassicString) {
- contextInfo[properties[i].column] =
type.createClassicString(value);
+ contextInfo[properties[i].inpColumn] =
type.createClassicString(value);
} else {
- contextInfo[properties[i].column] = value;
+ contextInfo[properties[i].inpColumn] = value;
}
} else {
- contextInfo[properties[i].column] = value;
+ contextInfo[properties[i].inpColumn] = value;
}
} else {
// surround the property name with @ symbols to make them different
@@ -1355,7 +1388,7 @@
}
if (this.parentView) {
- isc.addProperties(contextInfo,
this.parentView.getContextInfo(onlySessionProperties, classicMode));
+ isc.addProperties(this.parentView.getContextInfo(onlySessionProperties,
classicMode, forceSettingContextVars, convertToClassicFormat), contextInfo);
}
return contextInfo;
@@ -1382,13 +1415,5 @@
OB.RemoteCallManager.call('org.openbravo.client.application.window.GetTabMessageActionHandler',
{
tabId: this.tabId
}, null, callback, this);
- },
-
- addStandardProperties: function(allProperties){
- for(var objPropertyName in this.standardProperties){
- if(this.standardProperties.hasOwnProperty(objPropertyName)){
-
allProperties[objPropertyName]=this.standardProperties[objPropertyName];
- }
- }
}
});
diff -r 2260f5f59c95 -r 8c027d350043
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
Wed Feb 02 14:26:32 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
Wed Feb 02 15:35:57 2011 +0100
@@ -191,17 +191,6 @@
return this.fieldsByColumnName[columnName.toLowerCase()];
},
- getPropertyFromColumnName: function(columnName){
- var length = this.view.propertyToColumns.length;
- for (var i = 0; i < length; i++) {
- var propDef = this.view.propertyToColumns[i];
- if (propDef.dbColumn === columnName) {
- return propDef.property;
- }
- }
- return null;
- },
-
setFields: function(){
this.Super('setFields', arguments);
this.fieldsByInpColumnName = null;
@@ -209,7 +198,10 @@
},
retrieveInitialValues: function(isNew){
- var parentId = this.view.getParentId(), requestParams, parentColumn, me =
this, mode, properties={};
+ var parentId = this.view.getParentId(), requestParams, parentColumn, me =
this, mode;
+ // note also in this case initial vvalues are passed in as in case of grid
+ // editing the unsaved/error values from a previous edit session are
maintained
+ var allProperties = this.view.getContextInfo(false, true, false, false);
//this.setDisabled(true);
//this.allItemsDisabled = true;
@@ -229,9 +221,8 @@
parentColumn = this.getField(this.view.parentProperty).inpColumnName;
requestParams[parentColumn] = parentId;
}
-
- this.view.addStandardProperties(properties);
-
OB.RemoteCallManager.call('org.openbravo.client.application.window.FormInitializationComponent',
properties, requestParams, function(response, data, request){
+
+
OB.RemoteCallManager.call('org.openbravo.client.application.window.FormInitializationComponent',
allProperties, requestParams, function(response, data, request){
me.processFICReturn(response, data, request);
// remember the initial values
me.rememberValues();
@@ -248,7 +239,7 @@
}
var columnValues = data.columnValues, calloutMessages =
data.calloutMessages,
- auxInputs = data.auxiliaryInputValues, prop, value,
+ auxInputs = data.auxiliaryInputValues, prop, value, i,
dynamicCols = data.dynamicCols,
sessionAttributes = data.sessionAttributes;
if (columnValues) {
@@ -292,13 +283,26 @@
// note onFieldChanged uses the form.readOnly set above
this.onFieldChanged(this);
this.focus();
+
+ // save out the values to the grid before redrawing
+ if (this.grid && this.grid.setEditValues && (this.grid.getEditRow() ||
this.grid.getEditRow() === 0)) {
+ this.grid.setEditValues(this.grid.getEditRow(), this.getValues(), true);
+ }
+ if (this.redrawItems) {
+ for (i = 0; i < this.redrawItems.length; i++) {
+ if (this.redrawItems[i].redraw) {
+ this.redrawItems[i].redraw();
+ }
+ }
+ delete this.redrawItems;
+ }
},
processColumnValue: function(columnName, columnValue){
var data, record, length, valuePresent, currentValue, isDate, value, i,
valueMap = {}, field = this.getFieldFromColumnName(columnName), entries =
columnValue.entries;
if (!field) {
// not a field on the form, probably a datasource field
- var prop = this.getPropertyFromColumnName(columnName);
+ var prop = this.view.getPropertyFromDBColumnName(columnName);
if (!prop) {
return;
}
@@ -306,7 +310,14 @@
if (!field) {
return;
}
+ } else {
+ // redraw at the end
+ if (!this.redrawItems) {
+ this.redrawItems = [];
+ }
+ this.redrawItems.push(field);
}
+
// ignore the id
if (field.name === OB.Constants.ID) {
return;
@@ -357,10 +368,6 @@
} else {
this.clearValue(field.name);
------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires
February 28th, so secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits