openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #00103
[Merge] lp:~openerp-dev/openobject-client-web/listgrid-validation into lp:openobject-client-web
vda(Open ERP) has proposed merging lp:~openerp-dev/openobject-client-web/listgrid-validation into lp:openobject-client-web.
Requested reviews:
OpenERP SA's Web Client R&D (openerp-dev-web)
implemented validation for inline editable list and o2m.
--
https://code.launchpad.net/~openerp-dev/openobject-client-web/listgrid-validation/+merge/34733
Your team OpenERP SA's Web Client R&D is requested to review the proposed merge of lp:~openerp-dev/openobject-client-web/listgrid-validation into lp:openobject-client-web.
=== modified file 'addons/openerp/static/javascript/listgrid.js'
--- addons/openerp/static/javascript/listgrid.js 2010-09-07 05:31:10 +0000
+++ addons/openerp/static/javascript/listgrid.js 2010-09-07 10:29:39 +0000
@@ -541,7 +541,7 @@
this.reload(edit_inline, null, default_get_ctx);
},
- save: function(id) {
+ save: function(id, prev_id) {
if (openobject.http.AJAX_COUNT > 0) {
return callLater(1, bind(this.save, this), id);
@@ -574,7 +574,8 @@
args['_terp_parent/model'] = openobject.dom.get(parent_field + '_terp_model').value;
args['_terp_parent/context'] = openobject.dom.get(parent_field + '_terp_context').value;
args['_terp_source'] = this.name;
-
+
+
var self = this;
var req = openobject.http.postJSON('/openerp/listgrid/save', args);
@@ -600,8 +601,14 @@
} else {
openobject.dom.get(prefix + '_terp_id').value = obj.id;
openobject.dom.get(prefix + '_terp_ids').value = obj.ids;
-
- self.reload(id > 0 ? null : -1, prefix ? 1 : 0);
+
+ if(prev_id != 'undefined' || typeof prev_id !='undefined') {
+ self.reload(prev_id , prefix ? 1 : 0);
+ }
+ else {
+ self.reload(id > 0 ? null : -1, prefix ? 1 : 0);
+ }
+
}
});
},
@@ -853,3 +860,69 @@
_terp_view_mode : this.view_mode}),{width: 700, height: 500});
}
});
+
+var is_list_changed = false;
+var current_id = -1;
+
+var validList = function(_list) {
+ is_list_changed = false;
+ current_id = -1;
+ var $check = jQuery('table.grid[id="'+_list+'_grid'+'"] tr.grid-row td:not(.selector)').find('input, select');
+ $check.change(function() {
+ is_list_changed = true;
+ current_id = parseInt(jQuery(this).closest('tr').attr('record'), 10) || -1;
+ });
+}
+
+var listgridValidation = function(_list, o2m, record_id) {
+ var o2m = parseInt(o2m, 0)
+ if(is_list_changed) {
+ if(confirm('This record has been modified \n Do you really want to save it?')){
+ if(record_id == current_id) {
+ new ListView(_list).save(record_id, current_id);
+ }
+ else {
+ if((record_id > 0 && current_id > 0)) {
+ new ListView(_list).save(current_id, record_id);
+ }
+ else {
+ if((record_id < 0) && (current_id > 0)) {
+ if (o2m) {
+ new ListView(_list).save(current_id, record_id);
+ }
+ else {
+ new ListView(_list).save(record_id, current_id);
+ }
+ }
+ else if((record_id > 0) && (current_id < 0)) {
+ new ListView(_list).save(current_id, record_id);
+ }
+ }
+ }
+ }
+ }
+ else{
+ if(o2m) {
+ var detail = jQuery('table.one2many[id$="'+_list+'"]').attr('detail');
+ if(record_id == 'undefined' || typeof record_id == 'undefined') {
+ new One2Many(_list, detail).create();
+ }
+ if(record_id == current_id) {
+ if(record_id < 0) {
+ new One2Many(_list, detail).create();
+ }
+ }
+ else if((record_id > 0) && (current_id < 0)) {
+ new ListView(_list).edit(record_id);
+ }
+ }
+ else {
+ if(record_id == current_id) {
+ new ListView(_list).create();
+ }
+ else {
+ new ListView(_list).edit(record_id);
+ }
+ }
+ }
+}
=== modified file 'addons/openerp/widgets/templates/listgrid.mako'
--- addons/openerp/widgets/templates/listgrid.mako 2010-09-06 11:36:18 +0000
+++ addons/openerp/widgets/templates/listgrid.mako 2010-09-07 10:29:39 +0000
@@ -122,7 +122,7 @@
</button>
% elif o2m:
<button title="${_('Create new record.')}" id="${name}_btn_"
- onclick="new One2Many('${name}', jQuery('table.one2many[id$=${name}]').attr('detail')).create(); return false;">
+ onclick="listgridValidation('${name}', '${o2m or 0}', -1); return false;">
${_('new')}
</button>
% else:
@@ -130,24 +130,12 @@
<button id="${name}_new" title="${_('Create new record.')}">${_('new')}</button>
% if editors:
<script type="text/javascript">
- var is_list_changed = false;
- var current_id = -1;
- jQuery(document).ready(function() {
- var $check = jQuery("table.grid[id='${name}_grid'] tr.grid-row td:not(.selector)").find('input, select');
- $check.change(function() {
- is_list_changed = true;
- current_id = jQuery(this).closest('tr').attr('record') || -1;
- });
- });
+
jQuery('[id=${name}_new]').click(function() {
- if(is_list_changed) {
- if (confirm('This record has been modified \n Do you really want to save it?')) {
- new ListView('${name}').save(current_id)
- }
- } else {
- new ListView('${name}').create();
- }
+ console.log('in editors clicked')
+ listgridValidation('${name}', '${o2m or 0}', -1)
return false;
+ //new ListView('${name}').create();
});
</script>
% else:
@@ -160,6 +148,13 @@
% endif
% endif
% endif
+ % if not m2m and not dashboard and editors:
+ <script type="text/javascript">
+ jQuery(document).ready(function() {
+ validList('${name}')
+ });
+ </script>
+ % endif
</td>
% endif
<td class="pager-cell-button" style="display: none;">
@@ -326,26 +321,9 @@
jQuery('table[id=${name}_grid] tr.grid-row').each(function(index, row) {
jQuery(row).click(function(event) {
if (!jQuery(event.target).is(':input, img, option, td.m2o_coplition')) {
- var record_id = jQuery(row).attr('record');
- if (record_id > 0) {
- new ListView('${name}').edit(record_id);
- }
- else {
- if ('${name}' == '_terp_list') {
- if (is_list_changed) {
- if (confirm('This record has been modified \n Do you really want to save it?')) {
- new ListView('${name}').save(current_id)
- }
- }
- else{
- new ListView('${name}').create();
- }
- return false;
- }
- else {
- new One2Many('${name}', jQuery('table.one2many[id$=${name}]').attr('detail')).create();
- }
- }
+ var record_id = parseInt(jQuery(row).attr('record'), 10) || -1;
+ console.log('oho clicked', record_id, typeof record_id)
+ listgridValidation('${name}','${o2m or 0}', record_id)
}
});
});
Follow ups