details: /erp/devel/pi/rev/1976da320b9b
changeset: 9995:1976da320b9b
user: Asier Lostalé <asier.lostale <at> openbravo.com>
date: Thu Jan 20 16:30:27 2011 +0100
summary: [process] Display logic for buttons in grid mode takes into account
session vars
details: /erp/devel/pi/rev/71347366bee5
changeset: 9996:71347366bee5
user: Asier Lostalé <asier.lostale <at> openbravo.com>
date: Thu Jan 20 16:50:03 2011 +0100
summary: [process] Do not call FIC to calculate session variables if no
button has session variables logic
diffstat:
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
| 6 +-
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
| 24 ++++-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
| 4 +-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
| 50 ++++++++-
4 files changed, 72 insertions(+), 12 deletions(-)
diffs (187 lines):
diff -r 4629b4fcf93e -r 71347366bee5
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
Thu Jan 20 16:25:50 2011 +0100
+++
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-tab.js.ftl
Thu Jan 20 16:50:03 2011 +0100
@@ -67,20 +67,22 @@
<#if field.showIf != "">
, displayIf: function(item, value, form, currentValues) {
currentValues = currentValues || form.view.getCurrentValues();
- var context = form.view.getContextInfo(false, true);
+ var context = form.view.getContextInfo(false, true, true);
return context && (${field.showIf});
}
</#if>
<#if field.readOnlyIf != "">
, readOnlyIf: function(item, value, form, currentValues) {
currentValues = currentValues || form.view.getCurrentValues();
- var context = form.view.getContextInfo(false, true);
+ var context = form.view.getContextInfo(false, true, true);
return context && (${field.readOnlyIf});
}
</#if>
}<#if field_has_next>,</#if>
</#list>],
+ buttonsHaveSessionLogic: ${tabComponent.buttonSessionLogic?string},
+
iconToolbarButtons: [
<#list tabComponent.iconButtons as button>
{
diff -r 4629b4fcf93e -r 71347366bee5
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
---
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
Thu Jan 20 16:25:50 2011 +0100
+++
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewTab.java
Thu Jan 20 16:50:03 2011 +0100
@@ -62,8 +62,8 @@
private List<ButtonField> buttonFields = null;
private List<IconButton> iconButtons = null;
private Field keyField;
-
private Column keyColumn;
+ private boolean buttonSessionLogic;
protected Template getComponentTemplate() {
return OBDal.getInstance().get(Template.class, TEMPLATE_ID);
@@ -90,7 +90,11 @@
if (!(ApplicationUtils.isUIButton(fld))) {
continue;
}
- buttonFields.add(new ButtonField(fld));
+ ButtonField btn = new ButtonField(fld);
+ buttonFields.add(btn);
+ if (btn.sessionLogic) {
+ buttonSessionLogic = true;
+ }
}
}
return buttonFields;
@@ -276,6 +280,15 @@
return tab.getWindow().getId();
}
+ public boolean isButtonSessionLogic() {
+ if (buttonFields == null) {
+ // Generate buttons fields if they haven't been already generated, to
calculate
+ // buttonSessionLogic
+ getButtonFields();
+ }
+ return buttonSessionLogic;
+ }
+
public class FieldProperty {
private String columnName;
private String dbColumnName;
@@ -330,6 +343,7 @@
private boolean autosave;
private String showIf = "";
private String readOnlyIf = "";
+ private boolean sessionLogic = false;
public ButtonField(Field fld) {
id = fld.getId();
@@ -385,6 +399,9 @@
final DynamicExpressionParser parser = new
DynamicExpressionParser(fld.getDisplayLogic(),
tab);
showIf = parser.getJSExpression();
+ if (parser.getSessionAttributes().size() > 0) {
+ sessionLogic = true;
+ }
}
// Read only logic
@@ -392,6 +409,9 @@
final DynamicExpressionParser parser = new
DynamicExpressionParser(fld.getColumn()
.getReadOnlyLogic(), tab);
readOnlyIf = parser.getJSExpression();
+ if (parser.getSessionAttributes().size() > 0) {
+ sessionLogic = true;
+ }
}
}
diff -r 4629b4fcf93e -r 71347366bee5
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 Jan 20 16:25:50 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
Thu Jan 20 16:50:03 2011 +0100
@@ -1379,7 +1379,7 @@
//++++++++++++++++++ Reading context ++++++++++++++++++++++++++++++
- getContextInfo: function(onlySessionProperties, classicMode){
+ getContextInfo: function(onlySessionProperties, classicMode,
forceSettingContextVars){
var contextInfo = {}, addProperty;
// if classicmode is undefined then both classic and new props are used
var classicModeUndefined = (typeof classicMode === 'undefined');
@@ -1437,7 +1437,7 @@
}
}
}
- if (this.isShowingForm) {
+ if (this.isShowingForm || forceSettingContextVars) {
isc.addProperties(contextInfo, this.viewForm.auxInputs);
isc.addProperties(contextInfo, this.viewForm.hiddenInputs);
isc.addProperties(contextInfo, this.viewForm.sessionAttributes);
diff -r 4629b4fcf93e -r 71347366bee5
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
---
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
Thu Jan 20 16:25:50 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
Thu Jan 20 16:50:03 2011 +0100
@@ -562,20 +562,58 @@
// Refreshes all the custom buttons in the toolbar based on current record
selection
//
refreshCustomButtons: function(){
+ function doRefresh(buttons, currentValues, hideAllButtons){
+ for (var i = 0; i < buttons.length; i++) {
+ if (buttons[i].refresh) {
+ buttons[i].refresh(currentValues, hideAllButtons);
+ }
+ }
+ }
+
var buttons = this.getRightMembers();
var numOfSelRecords = 0;
+
+
if (this.view.viewGrid.getSelectedRecords()) {
numOfSelRecords = this.view.viewGrid.getSelectedRecords().length;
}
var isNew = this.view.viewForm.isNew;
var hideAllButtons = !isNew && (!this.view.viewGrid.getSelectedRecords()
|| this.view.viewGrid.getSelectedRecords().length !== 1);
+
+
var currentValues = this.view.getCurrentValues();
-
- for (var i = 0; i < buttons.length; i++) {
- if (buttons[i].refresh) {
- buttons[i].refresh(currentValues, hideAllButtons);
- }
- }
+ if (this.buttonsHaveSessionLogic && !this.view.isShowingForm &&
!hideAllButtons && !isNew) {
+ var formView = this.view.viewForm;
+ // Call FIC to obtain possible session attributes and set them in form
+ requestParams = {
+ MODE: 'EDIT',
+ PARENT_ID: this.view.getParentId(),
+ TAB_ID: this.view.tabId,
+ ROW_ID: currentValues.id
+ };
+
+
OB.RemoteCallManager.call('org.openbravo.client.application.window.FormInitializationComponent',
{}, requestParams, function(response, data, request){
+ var sessionAttributes = data.sessionAttributes, auxInputs =
data.auxiliaryInputValues;
+ if (sessionAttributes) {
+ formView.sessionAttributes = sessionAttributes;
+ }
+
+ if (auxInputs) {
+ this.auxInputs = {};
+ for (var prop in auxInputs) {
+ if (auxInputs.hasOwnProperty(prop)) {
+ formView.setValue(prop, auxInputs[prop].value);
+ formView.auxInputs[prop] = auxInputs[prop].value;
+ }
+ }
+ }
+
+ doRefresh(buttons, currentValues, false);
+ });
+ } else {
+ currentValues = this.view.getCurrentValues();
+ doRefresh(buttons, currentValues, hideAllButtons);
+ }
},
addMembers: 'null',
------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits