[ADD] delete button per row
bzr revid: xmo@openerp.com-20110407151319-vr7sc3n497y4ily0
This commit is contained in:
parent
f55d7b5e85
commit
e8a6a4e1e2
|
@ -5,6 +5,8 @@ openerp.base.ListView = openerp.base.Controller.extend(
|
|||
defaults: {
|
||||
// records can be selected one by one
|
||||
'selectable': true,
|
||||
// list rows can be deleted
|
||||
'deletable': true,
|
||||
// whether the column headers should be displayed
|
||||
'header': true
|
||||
},
|
||||
|
@ -18,6 +20,7 @@ openerp.base.ListView = openerp.base.Controller.extend(
|
|||
* @param {Object} options A set of options used to configure the view
|
||||
* @param {Boolean} [options.selectable=true] determines whether view rows are selectable (e.g. via a checkbox)
|
||||
* @param {Boolean} [options.header=true] should the list's header be displayed
|
||||
* @param {Boolean} [options.deletable=true] are the list rows deletable
|
||||
*/
|
||||
init: function(view_manager, session, element_id, dataset, view_id, options) {
|
||||
this._super(session, element_id);
|
||||
|
@ -54,6 +57,8 @@ openerp.base.ListView = openerp.base.Controller.extend(
|
|||
// linking feature
|
||||
e.stopImmediatePropagation();
|
||||
});
|
||||
this.$element.find('table').delegate(
|
||||
'td.oe-record-delete button', 'click', this.do_delete);
|
||||
this.$element.find('table').delegate(
|
||||
'tr', 'click', this.on_select_row);
|
||||
|
||||
|
@ -147,6 +152,17 @@ openerp.base.ListView = openerp.base.Controller.extend(
|
|||
var self = this;
|
||||
self.dataset.fetch(self.dataset.fields, 0, self.limit, self.do_fill_table);
|
||||
},
|
||||
/**
|
||||
* Handles the signal to delete a line from the DOM
|
||||
*
|
||||
* @param e
|
||||
*/
|
||||
do_delete: function (e) {
|
||||
// don't link to forms
|
||||
e.stopImmediatePropagation();
|
||||
this.dataset.unlink(
|
||||
[this.rows[$(e.currentTarget).closest('tr').prevAll().length].id]);
|
||||
},
|
||||
/**
|
||||
* Gets the ids of all currently selected records, if any
|
||||
* @returns a list of ids, empty if no record is selected (or the list view is not selectable
|
||||
|
|
|
@ -205,6 +205,9 @@
|
|||
</button>
|
||||
</td>
|
||||
</t>
|
||||
<td t-if="options.deletable" class='oe-record-delete'>
|
||||
<button type="button" name="delete">♻</button>
|
||||
</td>
|
||||
</tr>
|
||||
<t t-name="FormView">
|
||||
<h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/></h2>
|
||||
|
|
|
@ -72,4 +72,35 @@ $(document).ready(function () {
|
|||
start();
|
||||
});
|
||||
});
|
||||
asyncTest('render deletion button if list is deletable', 1, function () {
|
||||
var listview = new openerp.base.ListView(
|
||||
{}, null, 'qunit-fixture', {model: null});
|
||||
|
||||
listview.on_loaded(fvg);
|
||||
|
||||
listview.do_fill_table([{id: 1}, {id: 2}, {id: 3}]).then(function () {
|
||||
equal(
|
||||
listview.$element.find('tbody tr td.oe-record-delete button').length,
|
||||
3);
|
||||
start();
|
||||
});
|
||||
});
|
||||
asyncTest('deletion button should lead on deletion in the dataset',
|
||||
2, function () {
|
||||
var deleted;
|
||||
var listview = new openerp.base.ListView(
|
||||
{}, null, 'qunit-fixture', {model: null, unlink: function (ids) {
|
||||
deleted = ids;
|
||||
}});
|
||||
|
||||
listview.on_loaded(fvg);
|
||||
|
||||
listview.do_fill_table([{id: 1}, {id: 2}, {id: 3}]).then(function () {
|
||||
listview.$element.find('tbody td.oe-record-delete:eq(2) button').click();
|
||||
deepEqual(deleted, [3]);
|
||||
listview.$element.find('tbody td.oe-record-delete:eq(0) button').click();
|
||||
deepEqual(deleted, [1]);
|
||||
start();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue