details: /erp/devel/pi/rev/90d9d93d584c
changeset: 10956:90d9d93d584c
user: Martin Taal <martin.taal <at> openbravo.com>
date: Tue Mar 01 22:08:21 2011 +0100
summary: Also read displayfield together with main record, use displayfield
in new ui
diffstat:
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view-datasource.js
| 25 +-
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/ForeignKeyUIDefinition.java
| 8 +-
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
| 13 +
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
| 9 +
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DefaultDataSourceService.java
| 26 +-
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/templates/datasource.ftl
| 3 +-
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
| 4 +
modules/org.openbravo.service.json/src/org/openbravo/service/json/DefaultJsonDataService.java
| 1 +
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
| 124 ++++-----
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/reference/FKSelectorUIDefinition.java
| 41 +++-
modules/org.openbravo.userinterface.selector/web/org.openbravo.userinterface.selector/js/ob-selector-item.js
| 2 +-
11 files changed, 180 insertions(+), 76 deletions(-)
diffs (truncated from 454 to 300 lines):
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view-datasource.js
---
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view-datasource.js
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view-datasource.js
Tue Mar 01 22:08:21 2011 +0100
@@ -24,7 +24,8 @@
isc.ClassFactory.defineClass('OBViewDataSource', isc.OBRestDataSource);
isc.OBViewDataSource.addProperties({
-
+ additionalProps: null,
+
showProgress: function(editedRecord){
// don't show it, done to quickly
@@ -99,7 +100,8 @@
var additionalPara = {
_operationType: 'update',
_noActiveFilter: true,
- sendOriginalIDBack: true
+ sendOriginalIDBack: true,
+ _extraProperties: this.getAdditionalProps()
};
isc.addProperties(newRequestProperties.params, additionalPara);
if (!newRequestProperties.dataSource) {
@@ -108,6 +110,25 @@
this.Super('performDSOperation', [operationType, data, callback,
newRequestProperties]);
},
+ getAdditionalProps: function() {
+ if (this.additionalProps !== null) {
+ return this.additionalProps;
+ }
+ this.additionalProps = "";
+ for (var prop in this.getFields()) {
+ if (this.getFields().hasOwnProperty(prop)) {
+ var fld = this.getFields()[prop];
+ if (fld.additional) {
+ if (this.additionalProps.length > 0) {
+ this.additionalProps += ",";
+ }
+ this.additionalProps += fld.name;
+ }
+ }
+ }
+ return this.additionalProps;
+ },
+
// do special id-handling so that we can replace the old if with the new
// id
// in the correct way, see the ob-view-grid.js editComplete method
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/ForeignKeyUIDefinition.java
---
a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/ForeignKeyUIDefinition.java
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/ForeignKeyUIDefinition.java
Tue Mar 01 22:08:21 2011 +0100
@@ -58,11 +58,15 @@
}
final Property prop =
KernelUtils.getInstance().getPropertyFromColumn(field.getColumn());
return ", width: isc.OBGrid.getDefaultColumnWidth(" + length + "),
displayField: '"
- + prop.getName() + "." + JsonConstants.IDENTIFIER + "'," +
"valueField: '" + prop.getName()
- + "'" + ", foreignKeyField: true" + super.getGridFieldProperties(field)
+ + getDisplayFieldName(field, prop) + "'," + "valueField: '" +
prop.getName() + "'"
+ + ", foreignKeyField: true" + super.getGridFieldProperties(field)
+ getShowHoverGridFieldSettings(field);
}
+ protected String getDisplayFieldName(Field field, Property prop) {
+ return prop.getName() + "." + JsonConstants.IDENTIFIER;
+ }
+
protected String getSuperGridFieldProperties(Field field) {
return super.getGridFieldProperties(field);
}
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
---
a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
Tue Mar 01 22:08:21 2011 +0100
@@ -22,8 +22,10 @@
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.log4j.Logger;
import org.codehaus.jettison.json.JSONArray;
@@ -236,6 +238,17 @@
}
/**
+ * Parameters passed in to the datasource, for example the
+ * {@link JsonConstants#ADDITIONAL_PROPERTIES_PARAMETER} can be passed in
like this.
+ *
+ * @return a list of parameters used to drive the datasource generation
incorporating this
+ * UIDefinition.
+ */
+ public Map<String, Object> getDataSourceParameters() {
+ return Collections.emptyMap();
+ }
+
+ /**
* Computes properties to initialize and set the field in a Smartclient grid
filter. This can be
* the default value or the sets of values in the valuemap.
*
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
---
a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceProperty.java
Tue Mar 01 22:08:21 2011 +0100
@@ -207,6 +207,7 @@
private boolean numericType;
private List<RefListEntry> valueMap;
private UIDefinition uiDefinition;
+ private boolean additional = false;
public String getType() {
return uiDefinition.getName();
@@ -368,4 +369,12 @@
return (v1 < v2 ? -1 : 1);
}
}
+
+ public boolean isAdditional() {
+ return additional;
+ }
+
+ public void setAdditional(boolean additional) {
+ this.additional = additional;
+ }
}
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DefaultDataSourceService.java
---
a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DefaultDataSourceService.java
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DefaultDataSourceService.java
Tue Mar 01 22:08:21 2011 +0100
@@ -133,16 +133,36 @@
}
// now see if there are additional properties, these are often property
paths
- final Object additionalPropParameter = parameters
+ final String additionalPropParameter = (String) parameters
.get(JsonConstants.ADDITIONAL_PROPERTIES_PARAMETER);
- if (additionalPropParameter != null && getEntity() != null) {
- final String[] additionalProps = ((String)
additionalPropParameter).split(",");
+ final StringBuilder additionalProperties = new StringBuilder();
+ if (additionalPropParameter != null) {
+ additionalProperties.append(additionalPropParameter);
+ }
+ // get the additionalproperties from the properties
+ for (DataSourceProperty dsProp : dsProperties) {
+ final Map<String, Object> params =
dsProp.getUIDefinition().getDataSourceParameters();
+ String additionalProps = (String)
params.get(JsonConstants.ADDITIONAL_PROPERTIES_PARAMETER);
+ if (additionalProps != null) {
+ final String[] additionalPropValues =
additionalProps.toString().split(",");
+ for (String addProp : additionalPropValues) {
+ if (additionalProperties.length() > 0) {
+ additionalProperties.append(",");
+ }
+ additionalProperties.append(dsProp.getName() + "." + addProp);
+ }
+ }
+ }
+
+ if (additionalProperties.length() > 0 && getEntity() != null) {
+ final String[] additionalProps =
additionalProperties.toString().split(",");
// the additional properties are passed back using a different name
// than the original property
for (String additionalProp : additionalProps) {
final Property property = DalUtil.getPropertyFromPath(entity,
additionalProp);
final DataSourceProperty dsProperty =
DataSourceProperty.createFromProperty(property);
+ dsProperty.setAdditional(true);
dsProperty.setName(additionalProp);
dsProperties.add(dsProperty);
}
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/templates/datasource.ftl
---
a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/templates/datasource.ftl
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/templates/datasource.ftl
Tue Mar 01 22:08:21 2011 +0100
@@ -59,7 +59,8 @@
<#macro generateField property>
{name: '${property.name?js_string}',
- type: '${property.type}'
+ type: '${property.type}',
+ additional: ${property.additional?string}
<#if property.id>
, hidden: true, primaryKey: true
</#if>
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
---
a/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
Tue Mar 01 22:08:21 2011 +0100
@@ -157,6 +157,10 @@
}
}
for (String additionalProperty : additionalProperties) {
+ // sometimes empty strings are passed in
+ if (additionalProperty.length() == 0) {
+ continue;
+ }
final Object value = DalUtil.getValueFromPath(bob, additionalProperty);
if (value instanceof BaseOBObject) {
addBaseOBObject(jsonObject, additionalProperty,
getPropertyFromPath(bob,
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.service.json/src/org/openbravo/service/json/DefaultJsonDataService.java
---
a/modules/org.openbravo.service.json/src/org/openbravo/service/json/DefaultJsonDataService.java
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.service.json/src/org/openbravo/service/json/DefaultJsonDataService.java
Tue Mar 01 22:08:21 2011 +0100
@@ -377,6 +377,7 @@
// needs to be done before the close of the session
final DataToJsonConverter toJsonConverter =
OBProvider.getInstance().get(
DataToJsonConverter.class);
+
toJsonConverter.setAdditionalProperties(JsonUtils.getAdditionalProperties(parameters));
final List<JSONObject> jsonObjects =
toJsonConverter.toJsonObjects(bobs);
if (sendOriginalIdBack) {
diff -r 3e4e4993fee9 -r 90d9d93d584c
modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
---
a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
Tue Mar 01 21:54:21 2011 +0100
+++
b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/SelectorComponent.java
Tue Mar 01 22:08:21 2011 +0100
@@ -95,6 +95,63 @@
IdentifierOutField.setOutSuffix("");
}
+ private static DomainType getDomainType(SelectorField selectorField) {
+ if (selectorField.getObuiselSelector().getTable() != null
+ && selectorField.getProperty() != null) {
+ final String entityName =
selectorField.getObuiselSelector().getTable().getName();
+ final Entity entity = ModelProvider.getInstance().getEntity(entityName);
+ final Property property = DalUtil.getPropertyFromPath(entity,
selectorField.getProperty());
+ Check.isNotNull(property, "Property " + selectorField.getProperty() + "
not found in Entity "
+ + entity);
+ return property.getDomainType();
+ } else if (selectorField.getObuiselSelector().getTable() != null
+ && selectorField.getObuiselSelector().isCustomQuery()
+ && selectorField.getReference() != null) {
+ return getDomainType(selectorField.getReference().getId());
+ } else if (selectorField.getObserdsDatasourceField().getReference() !=
null) {
+ return
getDomainType(selectorField.getObserdsDatasourceField().getReference().getId());
+ }
+ return null;
+ }
+
+ private static DomainType getDomainType(String referenceId) {
+ final Reference reference =
ModelProvider.getInstance().getReference(referenceId);
+ Check.isNotNull(reference, "No reference found for referenceid " +
referenceId);
+ return reference.getDomainType();
+ }
+
+ private static String getPropertyOrDataSourceField(SelectorField
selectorField) {
+ if (selectorField.getProperty() != null) {
+ return selectorField.getProperty();
+ }
+ if (selectorField.getDisplayColumnAlias() != null) {
+ return selectorField.getDisplayColumnAlias();
+ }
+ if (selectorField.getObserdsDatasourceField() != null) {
+ return selectorField.getObserdsDatasourceField().getName();
+ }
+ throw new IllegalStateException("Selectorfield " + selectorField
+ + " has a null datasource and a null property");
+ }
+
+ public static String getAdditionalProperties(Selector selector) {
+ final StringBuilder extraProperties = new StringBuilder();
+ if (selector.getDisplayfield() == null ||
!selector.getDisplayfield().isActive()) {
+ return extraProperties.toString();
+ }
+ SelectorField selectorField = selector.getDisplayfield();
+ String fieldName = getPropertyOrDataSourceField(selectorField);
+
+ // handle the case that the field is a foreign key
+ // in that case always show the identifier
+ final DomainType domainType = getDomainType(selectorField);
+ if (domainType instanceof ForeignKeyDomainType) {
+ fieldName = fieldName + "." + JsonConstants.IDENTIFIER;
+ }
+ extraProperties.append(fieldName);
+ return extraProperties.toString();
+ }
+
@Override
protected Template getComponentTemplate() {
return getSelector().getObclkerTemplate();
@@ -237,20 +294,6 @@
return JsonConstants.IDENTIFIER;
}
- private String getPropertyOrDataSourceField(SelectorField selectorField) {
- if (selectorField.getProperty() != null) {
- return selectorField.getProperty();
- }
- if (selectorField.getDisplayColumnAlias() != null) {
- return selectorField.getDisplayColumnAlias();
- }
- if (selectorField.getObserdsDatasourceField() != null) {
- return selectorField.getObserdsDatasourceField().getName();
- }
- throw new IllegalStateException("Selectorfield " + selectorField
- + " has a null datasource and a null property");
- }
-
private boolean isBoolean(SelectorField selectorField) {
final DomainType domainType = getDomainType(selectorField);
if (domainType instanceof PrimitiveDomainType) {
@@ -323,25 +366,7 @@
final Map<String, Object> dsParameters = new HashMap<String,
Object>(getParameters());
dsParameters.put(DataSourceConstants.DS_ONLY_GENERATE_CREATESTATEMENT,
true);
-
------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits