diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-09-08 14:55:10 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-09-08 14:55:10 +0200 |
| commit | 32bccb877b711fd3cf20d290db0a8390c0e676b7 (patch) | |
| tree | 58e8b0c1a49d1ffea8fe950cff118bb796441586 /addons/web/static/src/js | |
| parent | b7ccdadc1784099a4f1d2853e106441397bd977f (diff) | |
[IMP] look of non-selectable or non-editable editable list views when a row is being edited
dynamically add and remove padding rows
lp bug: https://launchpad.net/bugs/842644 fixed
bzr revid: xmo@openerp.com-20110908125510-fb7vcjsixj5sqhpz
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/list-editable.js | 11 | ||||
| -rw-r--r-- | addons/web/static/src/js/list.js | 44 |
2 files changed, 55 insertions, 0 deletions
diff --git a/addons/web/static/src/js/list-editable.js b/addons/web/static/src/js/list-editable.js index ab78e5e0139..7b41b22e2f7 100644 --- a/addons/web/static/src/js/list-editable.js +++ b/addons/web/static/src/js/list-editable.js @@ -112,6 +112,7 @@ openerp.web.list_editable = function (openerp) { cancelled.resolve(); } cancelled.then(function () { + self.view.unpad_columns(); self.edition_form.stop(); self.edition_form.$element.remove(); delete self.edition_form; @@ -197,6 +198,16 @@ openerp.web.list_editable = function (openerp) { $new_row.prepend('<td>'); } }); + // Add columns for the cancel and save buttons, if + // there are none in the list + if (!self.options.selectable) { + self.view.pad_columns( + 1, {except: $new_row, position: 'before'}); + } + if (!self.options.deletable) { + self.view.pad_columns( + 1, {except: $new_row}); + } self.edition_form.do_show(); }); diff --git a/addons/web/static/src/js/list.js b/addons/web/static/src/js/list.js index 6029b30f866..74f6d7b92e5 100644 --- a/addons/web/static/src/js/list.js +++ b/addons/web/static/src/js/list.js @@ -49,6 +49,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# this.dataset = dataset; this.model = dataset.model; this.view_id = view_id; + this.previous_colspan = null; this.columns = []; @@ -603,6 +604,49 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# get_selected_ids: function() { var ids = this.groups.get_selection().ids; return ids; + }, + /** + * Adds padding columns at the start or end of all table rows (including + * field names row) + * + * @param {Number} count number of columns to add + * @param {Object} options + * @param {"before"|"after"} [position="after"] insertion position for the new columns + * @param {Object} [except] content row to not pad + */ + pad_columns: function (count, options) { + options = options || {}; + // padding for action/pager header + var $first_header = this.$element.find('thead tr:first th'); + var colspan = $first_header.attr('colspan'); + if (colspan) { + if (!this.previous_colspan) { + this.previous_colspan = colspan; + } + $first_header.attr('colspan', parseInt(colspan, 10) + count); + } + // Padding for column titles, footer and data rows + var $rows = this.$element + .find('.oe-listview-header-columns, tr:not(thead tr)') + .not(options['except']); + var newcols = new Array(count+1).join('<td class="oe-listview-padding"></td>'); + if (options.position === 'before') { + $rows.prepend(newcols); + } else { + $rows.append(newcols); + } + }, + /** + * Removes all padding columns of the table + */ + unpad_columns: function () { + this.$element.find('.oe-listview-padding').remove(); + if (this.previous_colspan) { + this.$element + .find('thead tr:first th') + .attr('colspan', this.previous_colspan); + this.previous_colspan = null; + } } }); openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.ListView.List# */{ |
