[IMP] move most of the clicking-on-a-list-row logic in ListView.List
bzr revid: xmo@openerp.com-20110509082212-rg8rnlsheh1gvsk5
This commit is contained in:
parent
b940e26c36
commit
014fdf0068
|
@ -78,6 +78,9 @@ openerp.base.ListView = openerp.base.Controller.extend(
|
||||||
self.execute_action(
|
self.execute_action(
|
||||||
action, self.dataset, self.session.action_manager,
|
action, self.dataset, self.session.action_manager,
|
||||||
id, self.do_reload);
|
id, self.do_reload);
|
||||||
|
},
|
||||||
|
'row_link': function (e, index) {
|
||||||
|
self.switch_to_record(index);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -174,9 +177,6 @@ openerp.base.ListView = openerp.base.Controller.extend(
|
||||||
var $table = this.$element.find('table');
|
var $table = this.$element.find('table');
|
||||||
this.list.move_to($table);
|
this.list.move_to($table);
|
||||||
|
|
||||||
// Global rows handlers
|
|
||||||
$table.delegate('tr', 'click', this.on_select_row);
|
|
||||||
|
|
||||||
// sidebar stuff
|
// sidebar stuff
|
||||||
if (this.view_manager && this.view_manager.sidebar) {
|
if (this.view_manager && this.view_manager.sidebar) {
|
||||||
this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
|
this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
|
||||||
|
@ -242,30 +242,6 @@ openerp.base.ListView = openerp.base.Controller.extend(
|
||||||
}
|
}
|
||||||
}, this));
|
}, this));
|
||||||
},
|
},
|
||||||
/**
|
|
||||||
* Base handler for clicking on a row, discovers the index of the record
|
|
||||||
* corresponding to the clicked row in the list view's dataset.
|
|
||||||
*
|
|
||||||
* Should not be overridden, use
|
|
||||||
* :js:func:`~openerp.base.ListView.switch_to_record` to customize the
|
|
||||||
* behavior of the list view when clicking on a row instead.
|
|
||||||
*
|
|
||||||
* @param {Object} event jQuery DOM event object
|
|
||||||
*/
|
|
||||||
on_select_row: function (event) {
|
|
||||||
var $target = $(event.currentTarget);
|
|
||||||
if (!$target.parent().is('tbody')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// count number of preceding siblings to line clicked
|
|
||||||
var row = this.rows[$target.prevAll().length];
|
|
||||||
|
|
||||||
var index = _.indexOf(this.dataset.ids, row.data.id.value);
|
|
||||||
if (index == undefined || index === -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.switch_to_record(index);
|
|
||||||
},
|
|
||||||
do_show: function () {
|
do_show: function () {
|
||||||
this.$element.show();
|
this.$element.show();
|
||||||
if (this.hidden) {
|
if (this.hidden) {
|
||||||
|
@ -397,6 +373,9 @@ openerp.base.ListView.List = Class.extend(
|
||||||
*
|
*
|
||||||
* * The name of the action to execute (as a string)
|
* * The name of the action to execute (as a string)
|
||||||
* * The id of the record to execute the action on
|
* * The id of the record to execute the action on
|
||||||
|
* `row_link`
|
||||||
|
* Triggered when a row of the table is clicked, provides the index (in
|
||||||
|
* the rows array) and id of the selected record to the handle function.
|
||||||
*
|
*
|
||||||
* @constructs
|
* @constructs
|
||||||
* @param {Object} opts display options, identical to those of :js:class:`openerp.base.ListView`
|
* @param {Object} opts display options, identical to those of :js:class:`openerp.base.ListView`
|
||||||
|
@ -427,6 +406,13 @@ openerp.base.ListView.List = Class.extend(
|
||||||
record_id = self.row_id($target.closest('tr'));
|
record_id = self.row_id($target.closest('tr'));
|
||||||
|
|
||||||
$(self).trigger('action', [field, record_id]);
|
$(self).trigger('action', [field, record_id]);
|
||||||
|
})
|
||||||
|
.delegate('tr', 'click', function (e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
$(self).trigger(
|
||||||
|
'row_link',
|
||||||
|
[self.row_position(e.currentTarget),
|
||||||
|
self.row_id(e.currentTarget)]);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
move_to: function (element) {
|
move_to: function (element) {
|
||||||
|
@ -475,7 +461,6 @@ openerp.base.ListView.List = Class.extend(
|
||||||
row_id: function (row) {
|
row_id: function (row) {
|
||||||
return this.rows[this.row_position(row)].data.id.value;
|
return this.rows[this.row_position(row)].data.id.value;
|
||||||
}
|
}
|
||||||
// Click events: action, row itself
|
|
||||||
// drag and drop
|
// drag and drop
|
||||||
// editable?
|
// editable?
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue