details: /erp/devel/pi/rev/72ebe51eaba1
changeset: 10494:72ebe51eaba1
user: Martin Taal <martin.taal <at> openbravo.com>
date: Thu Feb 10 01:38:24 2011 +0100
summary: Implemented grid row insert
diffstat:
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
|
11 +
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
| 8 +
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
| 51 +-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
| 59 ++-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-window.js
| 42 +-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
| 14 +-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
| 13 +
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-form.js
| 105 ++-
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-view-grid.js
| 235 +++++++--
modules/org.openbravo.client.application/web/org.openbravo.userinterface.smartclient/openbravo/skins/3.00/org.openbravo.client.application/ob-grid-styles.css
| 15 +-
modules/org.openbravo.client.application/web/org.openbravo.userinterface.smartclient/openbravo/skins/3.00/org.openbravo.client.application/ob-grid-styles.js
| 3 +-
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/FKComboUIDefinition.java
| 4 +-
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
| 2 +-
modules/org.openbravo.service.json/src/org/openbravo/service/json/JsonConstants.java
|
1 +
modules/org.openbravo.service.json/src/org/openbravo/service/json/JsonToDataConverter.java
| 11 +
modules/org.openbravo.userinterface.selector/web/org.openbravo.userinterface.selector/js/ob-selector-item.js
| 1 +
16 files changed, 411 insertions(+), 164 deletions(-)
diffs (truncated from 1285 to 300 lines):
diff -r 6e6c31b37e01 -r 72ebe51eaba1
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
---
a/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
Wed Feb 09 22:14:30 2011 +0100
+++
b/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
Thu Feb 10 01:38:24 2011 +0100
@@ -1091,4 +1091,15 @@
<!--FF8081812DEFDA2B012DEFEDE770003A-->
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
<!--FF8081812DEFDA2B012DEFEDE770003A--></AD_MESSAGE>
+<!--FF8081812E0CE808012E0CF95450002B--><AD_MESSAGE>
+<!--FF8081812E0CE808012E0CF95450002B-->
<AD_MESSAGE_ID><![CDATA[FF8081812E0CE808012E0CF95450002B]]></AD_MESSAGE_ID>
+<!--FF8081812E0CE808012E0CF95450002B-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--FF8081812E0CE808012E0CF95450002B--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--FF8081812E0CE808012E0CF95450002B--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--FF8081812E0CE808012E0CF95450002B-->
<VALUE><![CDATA[OBUIAPP_ParentIsNew]]></VALUE>
+<!--FF8081812E0CE808012E0CF95450002B--> <MSGTEXT><![CDATA[The parent record
is an unsaved new record, save it to create child records.]]></MSGTEXT>
+<!--FF8081812E0CE808012E0CF95450002B--> <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--FF8081812E0CE808012E0CF95450002B-->
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
+<!--FF8081812E0CE808012E0CF95450002B--></AD_MESSAGE>
+
</data>
diff -r 6e6c31b37e01 -r 72ebe51eaba1
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 09 22:14:30 2011 +0100
+++
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
Thu Feb 10 01:38:24 2011 +0100
@@ -41,6 +41,7 @@
import org.openbravo.base.model.ModelProvider;
import org.openbravo.base.model.Property;
import org.openbravo.base.model.domaintype.PrimitiveDomainType;
+import org.openbravo.base.provider.OBProvider;
import org.openbravo.base.structure.BaseOBObject;
import org.openbravo.base.structure.ClientEnabled;
import org.openbravo.base.structure.OrganizationEnabled;
@@ -139,6 +140,13 @@
} catch (JSONException e) {
throw new OBException("Error while parsing content", e);
}
+ // create the row from the json content then
+ if (row == null) {
+ final JsonToDataConverter fromJsonConverter =
OBProvider.getInstance().get(
+ JsonToDataConverter.class);
+ row = fromJsonConverter.toBaseOBObject(jsContent);
+ row.setNewOBObject(true);
+ }
// First the parent record is retrieved and the session variables for
the parent records are
// set
diff -r 6e6c31b37e01 -r 72ebe51eaba1
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 09 22:14:30 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
Thu Feb 10 01:38:24 2011 +0100
@@ -76,6 +76,9 @@
}
targetFld.setValue(value);
+ if (!targetFld.valueMap) {
+ targetFld.valueMap = {};
+ }
targetFld.valueMap[targetFld.getValue()] = display;
targetFld.form.setValue(targetFld.displayField, display);
targetFld.updateValueMap(true);
@@ -388,7 +391,7 @@
});
// == OBListItem ==
-// Combo box for list references
+// Combo box for list references, note is extended by OBFKItem again
isc.ClassFactory.defineClass('OBListItem', ComboBoxItem);
isc.OBListItem.addProperties({
@@ -400,30 +403,39 @@
// setting this to false means that the change handler is called when picking
// a value and not earlier
addUnknownValues: false,
-
+ selectOnFocus: true,
+
pickListProperties: {
showHeaderContextMenu: false
+ },
+
+ // prevent ids from showing up
+ mapValueToDisplay : function (value) {
+ var ret = this.Super('mapValueToDisplay', arguments);
+ if (ret === value && this.isDisabled()) {
+ return '';
+ }
+ if (ret === value && !this.valueMap) {
+ this.valueMap = {};
+ this.valueMap[value] = '';
+ return '';
+ }
+ return ret;
}
});
// == OBFKItem ==
-// Extends SelectItem with suggestion box behavior for foreign key references.
-isc.ClassFactory.defineClass('OBFKItem', ComboBoxItem);
-
-isc.ClassFactory.mixInInterface('OBFKItem', 'OBLinkTitleItem');
+// Extends OBListItem
+isc.ClassFactory.defineClass('OBFKItem', isc.OBListItem);
isc.OBFKItem.addProperties({
- textMatchStyle: 'substring',
- showPickListOnKeypress: true,
- cachePickListResults: false,
- validateOnExit: true,
- completeOnTab: true,
- // setting this to false means that the change handler is called when picking
- // a value and not earlier
- addUnknownValues: false,
-
- pickListProperties: {
- showHeaderContextMenu: false
+ textMatchStyle: 'substring',
+
+ // set the identifier field also, that's what gets displayed in the grid
+ changed: function (form, item, value) {
+ var display = this.mapValueToDisplay(value);
+ form.setValue(this.name + '.' + OB.Constants.IDENTIFIER, display);
+ return this.Super('changed', [arguments]);
}
});
@@ -968,11 +980,6 @@
return this.Super('focus', arguments);
},
- handleEditorExit: function(){
- var ret = this.Super('handleEditorExit', arguments);
- return ret;
- },
-
blur: function(){
// first check if the number is valid
if (!isc.isA.String(this.getValue())) {
diff -r 6e6c31b37e01 -r 72ebe51eaba1
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 09 22:14:30 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
Thu Feb 10 01:38:24 2011 +0100
@@ -480,8 +480,7 @@
// start inactive
childView.tab.setCustomState(isc.OBStandardView.MODE_INACTIVE);
- OB.TestRegistry.register('org.openbravo.client.application.ChildTab_' +
this.tabId + '_' + childView.tabId, childView.tab);
-
+ OB.TestRegistry.register('org.openbravo.client.application.ChildTab_' +
this.tabId + '_' + childView.tabId, childView.tab);
},
setReadOnly: function(readOnly){
@@ -539,6 +538,10 @@
return this.isRootView || this.getParentId();
},
+ isActiveView: function() {
+ return this.standardWindow.activeView === this;
+ },
+
setAsActiveView: function(){
this.standardWindow.setActiveView(this);
},
@@ -597,7 +600,9 @@
this.refreshContents = true;
// clear all our selections..
- this.viewGrid.deselectAllRecords();
+ // note the true parameter prevents autosave actions from happening
+ // this should have been done before anyway
+ this.viewGrid.deselectAllRecords(false, true);
if (this.viewGrid.filterEditor) {
this.viewGrid.filterEditor.getEditForm().clearValues();
@@ -750,7 +755,11 @@
this.viewForm.editNewRecord(preventFocus);
} else {
this.viewGrid.doSelectSingleRecord(record);
- this.viewForm.editRecord(record, preventFocus);
+
+ // also handle the case that there are unsaved values in the grid
+ // show them in the form
+ var rowNum = this.viewGrid.getRecordIndex(record);
+ this.viewForm.editRecord(this.viewGrid.getEditedRecord(rowNum),
preventFocus);
}
if (!preventFocus) {
@@ -944,6 +953,12 @@
if (!this.parentView || !this.parentView.viewGrid.getSelectedRecords() ||
this.parentView.viewGrid.getSelectedRecords().length !== 1) {
return null;
}
+
+ // a new parent is not a real parent
+ if (this.parentView.viewGrid.getSelectedRecord()._new) {
+ return null;
+ }
+
return this.parentView.viewGrid.getSelectedRecord()[OB.Constants.ID];
},
@@ -960,7 +975,7 @@
var infoByTab = [], tabInfo, childView, data = {}, me = this, callback;
- data.parentId = this.viewGrid.getSelectedRecords()[0][OB.Constants.ID];
+ data.parentId = this.getParentId();
for (var i = 0; i < this.childTabSet.tabs.length; i++) {
tabInfo = {};
@@ -1024,21 +1039,34 @@
}
var identifier, tab, tabSet, title;
+
+ if (this.viewGrid.getSelectedRecord()) {
+ identifier = this.viewGrid.getSelectedRecord()[OB.Constants.IDENTIFIER];
+ if (this.viewGrid.getSelectedRecord()._new) {
+ identifier = OB.I18N.getLabel('OBUIAPP_New');
+ }
+ if (!identifier) {
+ identifier = '';
+ } else {
+ identifier = ' - ' + identifier;
+ }
+ }
+
// showing the form
if (this.isShowingForm && this.viewGrid.getSelectedRecord() &&
this.viewGrid.getSelectedRecord()[OB.Constants.IDENTIFIER]) {
- identifier = this.viewGrid.getSelectedRecord()[OB.Constants.IDENTIFIER];
+
if (!this.parentTabSet && this.viewTabId) {
tab = OB.MainView.TabSet.getTab(this.viewTabId);
tabSet = OB.MainView.TabSet;
- title = this.originalTabTitle + ' - ' + identifier;
+ title = this.originalTabTitle + identifier;
} else if (this.parentTabSet && this.tab) {
tab = this.tab;
tabSet = this.parentTabSet;
- title = this.originalTabTitle + ' - ' + identifier;
+ title = this.originalTabTitle + identifier;
}
} else if (this.viewGrid.getSelectedRecords() &&
this.viewGrid.getSelectedRecords().length > 0) {
if (this.viewGrid.getSelectedRecords().length === 1) {
- postFix = ' - ' +
this.viewGrid.getSelectedRecords()[0][OB.Constants.IDENTIFIER];
+ postFix = identifier;
} else {
postFix = ' - ' + OB.I18N.getLabel('OBUIAPP_SelectedRecords',
[this.viewGrid.getSelectedRecords().length]);
}
@@ -1228,17 +1256,24 @@
},
undo: function(){
- var view = this, callback, form;
+ var view = this, callback, form, grid;
if (this.isEditingGrid) {
// the editing grid will take care of the confirmation
view.viewGrid.cancelEditing();
return;
+ } else if (this.isShowingForm) {
+ form = this.viewForm;
} else {
- form = this.viewForm;
+ // selected records
+ grid = view.viewGrid;
}
callback = function(ok){
if (ok) {
- form.undo();
+ if (form) {
+ form.undo();
+ } else {
+ grid.undoEditSelectedRows();
+ }
}
};
isc.ask(OB.I18N.getLabel('OBUIAPP_ConfirmUndo', callback), callback);
diff -r 6e6c31b37e01 -r 72ebe51eaba1
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-window.js
---
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-window.js
Wed Feb 09 22:14:30 2011 +0100
+++
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-window.js
Thu Feb 10 01:38:24 2011 +0100
@@ -63,7 +63,7 @@
// is set when a form or grid editing results in dirty data
// in the window
- dirtyEditObject: null,
+ dirtyEditForm: null,
initWidget: function(){
var standardWindow = this;
@@ -131,33 +131,35 @@
return this.getClass().autoSave;
},
- setDirtyEditObject: function (editObject) {
- this.dirtyEditObject = editObject;
+ isDirty: function() {
+ return this.dirtyEditForm;
+ },
+
+ getDirtyEditForm: function() {
+ return this.dirtyEditForm;
+ },
+
+ setDirtyEditForm: function (editObject) {
+ this.dirtyEditForm = editObject;
if (!editObject) {
------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits