[imp] created first version of one2manydataset and implemented delete
bzr revid: nicolas.vanhoren@openerp.com-20110621121222-3bjpeh66un137ip6
This commit is contained in:
parent
1349acee6c
commit
8abfc76ea5
|
@ -1267,6 +1267,15 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
# Values: (0, 0, { fields }) create
|
||||||
|
# (1, ID, { fields }) update
|
||||||
|
# (2, ID) remove (delete)
|
||||||
|
# (3, ID) unlink one (target id or target of relation)
|
||||||
|
# (4, ID) link
|
||||||
|
# (5) unlink all (only valid for one2many)
|
||||||
|
*/
|
||||||
|
|
||||||
openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
|
openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
|
||||||
init: function(view, node) {
|
init: function(view, node) {
|
||||||
this._super(view, node);
|
this._super(view, node);
|
||||||
|
@ -1279,9 +1288,8 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this.dataset = new openerp.base.DataSetStatic(this.session, this.field.relation);
|
this.dataset = new openerp.base.form.One2ManyDataset(this.session, this.field.relation);
|
||||||
this.dataset.on_unlink.add_last(function(ids) {
|
this.dataset.on_change.add_last(function() {
|
||||||
self.dataset.set_ids(_.without.apply(_, [self.dataset.ids].concat(ids)));
|
|
||||||
self.on_ui_change();
|
self.on_ui_change();
|
||||||
self.reload_current_view();
|
self.reload_current_view();
|
||||||
});
|
});
|
||||||
|
@ -1337,18 +1345,47 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
|
||||||
// TODO niv: but fme did not implemented delete in form view anyway
|
// TODO niv: but fme did not implemented delete in form view anyway
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
set_value_from_ui: function() {},
|
||||||
set_value: function(value) {
|
set_value: function(value) {
|
||||||
if(value != false) {
|
if(value != false) {
|
||||||
this.dataset.set_ids(value);
|
this.dataset.reset_ids(value);
|
||||||
this.is_setted.resolve();
|
this.is_setted.resolve();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
get_value: function(value) {
|
get_value: function() {
|
||||||
//TODO niv
|
var val = _.map(this.dataset.to_delete, function(v, k) {return [2, parseInt(k, 10)];});
|
||||||
return [];
|
var val = val.concat(_.map(this.dataset.to_create, function(x) {return [0, 0, x];}));
|
||||||
|
return val;
|
||||||
|
},
|
||||||
|
validate: function() {
|
||||||
|
this.invalid = false;
|
||||||
|
// TODO niv
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openerp.base.form.One2ManyDataset = openerp.base.DataSetStatic.extend({
|
||||||
|
init: function() {
|
||||||
|
this._super.apply(this, arguments);
|
||||||
|
this.reset_ids([]);
|
||||||
|
},
|
||||||
|
create: function(data, callback, error_callback) {
|
||||||
|
},
|
||||||
|
write: function (id, data, callback) {
|
||||||
|
},
|
||||||
|
unlink: function(ids) {
|
||||||
|
var self = this;
|
||||||
|
this.set_ids(_.without.apply(_, [this.ids].concat(ids)));
|
||||||
|
_.each(ids, function(x) {self.to_delete[x] = true;});
|
||||||
|
this.on_change();
|
||||||
|
},
|
||||||
|
reset_ids: function(ids) {
|
||||||
|
this.set_ids(ids);
|
||||||
|
this.to_delete = {};
|
||||||
|
this.to_create = {};
|
||||||
|
},
|
||||||
|
on_change: function() {}
|
||||||
|
});
|
||||||
|
|
||||||
openerp.base.form.One2ManyListView = openerp.base.ListView.extend({
|
openerp.base.form.One2ManyListView = openerp.base.ListView.extend({
|
||||||
do_add_record: function () {
|
do_add_record: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -1505,7 +1542,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
|
||||||
$sbutton.click(function() {
|
$sbutton.click(function() {
|
||||||
self.on_select_elements(self.selected_ids);
|
self.on_select_elements(self.selected_ids);
|
||||||
});
|
});
|
||||||
self.view_list = new openerp.base.form.Many2XPopupListView( null, self.session,
|
self.view_list = new openerp.base.form.SelectCreateListView( null, self.session,
|
||||||
self.element_id + "_view_list", self.dataset, false,
|
self.element_id + "_view_list", self.dataset, false,
|
||||||
{'deletable': false});
|
{'deletable': false});
|
||||||
self.view_list.popup = self;
|
self.view_list.popup = self;
|
||||||
|
@ -1563,7 +1600,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.base.form.Many2XPopupListView = openerp.base.ListView.extend({
|
openerp.base.form.SelectCreateListView = openerp.base.ListView.extend({
|
||||||
do_add_record: function () {
|
do_add_record: function () {
|
||||||
this.popup.new_object();
|
this.popup.new_object();
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue