[imp] modified search/create popup to allow/disallow multi selection
bzr revid: nicolas.vanhoren@openerp.com-20110615150440-dacg7lgzezte1y7l
This commit is contained in:
parent
751d443942
commit
e39f52312b
|
@ -1174,9 +1174,13 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
|
||||||
var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, []);
|
var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, []);
|
||||||
var self = this;
|
var self = this;
|
||||||
var pop = new openerp.base.form.Many2XSelectPopup(null, self.view.session);
|
var pop = new openerp.base.form.Many2XSelectPopup(null, self.view.session);
|
||||||
pop.select_element(self.field.relation, ids ? _.map(ids, function(x) {return x[0]}) : undefined, view);
|
pop.select_element(self.field.relation,{
|
||||||
pop.on_select_element.add(function(element_id) {
|
initial_ids: ids ? _.map(ids, function(x) {return x[0]}) : undefined,
|
||||||
dataset.call("name_get", [element_id], function(data) {
|
initial_view: view,
|
||||||
|
disable_multiple_selection: true
|
||||||
|
});
|
||||||
|
pop.on_select_elements.add(function(element_ids) {
|
||||||
|
dataset.call("name_get", [element_ids[0]], function(data) {
|
||||||
self._change_int_ext_value(data.result[0]);
|
self._change_int_ext_value(data.result[0]);
|
||||||
pop.stop();
|
pop.stop();
|
||||||
});
|
});
|
||||||
|
@ -1329,11 +1333,13 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({
|
||||||
null, this.m2m_field.view.session);
|
null, this.m2m_field.view.session);
|
||||||
pop.select_element(this.model);
|
pop.select_element(this.model);
|
||||||
var self = this;
|
var self = this;
|
||||||
pop.on_select_element.add(function(element_id) {
|
pop.on_select_elements.add(function(element_ids) {
|
||||||
if(! _.detect(self.dataset.ids, function(x) {return x == element_id;})) {
|
_.each(element_ids, function(element_id) {
|
||||||
self.dataset.set_ids([].concat(self.dataset.ids, [element_id]));
|
if(! _.detect(self.dataset.ids, function(x) {return x == element_id;})) {
|
||||||
self.reload_content();
|
self.dataset.set_ids([].concat(self.dataset.ids, [element_id]));
|
||||||
}
|
self.reload_content();
|
||||||
|
}
|
||||||
|
});
|
||||||
pop.stop();
|
pop.stop();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -1353,10 +1359,16 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({
|
||||||
openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
||||||
identifier_prefix: "many2xselectpopup",
|
identifier_prefix: "many2xselectpopup",
|
||||||
template: "Many2XSelectPopup",
|
template: "Many2XSelectPopup",
|
||||||
select_element: function(model, initial_ids, initial_view) {
|
/**
|
||||||
|
* options:
|
||||||
|
* - initial_ids
|
||||||
|
* - initial_view: form or search (default search)
|
||||||
|
* - disable_multiple_selection
|
||||||
|
*/
|
||||||
|
select_element: function(model, options) {
|
||||||
this.model = model;
|
this.model = model;
|
||||||
this.initial_ids = initial_ids;
|
this.options = options || {};
|
||||||
this.initial_view = initial_view || "search";
|
this.initial_ids = this.options.initial_ids;
|
||||||
jQuery(this.render()).dialog({title: '',
|
jQuery(this.render()).dialog({title: '',
|
||||||
modal: true,
|
modal: true,
|
||||||
minWidth: 800});
|
minWidth: 800});
|
||||||
|
@ -1365,7 +1377,7 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
||||||
start: function() {
|
start: function() {
|
||||||
this._super();
|
this._super();
|
||||||
this.dataset = new openerp.base.DataSetSearch(this.session, this.model);
|
this.dataset = new openerp.base.DataSetSearch(this.session, this.model);
|
||||||
if (this.initial_view == "search") {
|
if (this.options.initial_view == "search") {
|
||||||
this.setup_search_view();
|
this.setup_search_view();
|
||||||
} else { // "form"
|
} else { // "form"
|
||||||
this.new_object();
|
this.new_object();
|
||||||
|
@ -1377,10 +1389,13 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
||||||
this.searchview.stop();
|
this.searchview.stop();
|
||||||
}
|
}
|
||||||
this.searchview = new openerp.base.SearchView(null, this.session,
|
this.searchview = new openerp.base.SearchView(null, this.session,
|
||||||
this.element_id + "_search", this.dataset, false, {});
|
this.element_id + "_search", this.dataset, false, {
|
||||||
|
"selectable": !this.options.disable_multiple_selection
|
||||||
|
});
|
||||||
this.searchview.on_search.add(function(domains, contexts, groupbys) {
|
this.searchview.on_search.add(function(domains, contexts, groupbys) {
|
||||||
if (self.initial_ids) {
|
if (self.initial_ids) {
|
||||||
self.view_list.do_search.call(self, [[["id", "in", self.initial_ids]]], contexts, groupbys);
|
self.view_list.do_search.call(self, [[["id", "in",
|
||||||
|
self.initial_ids]]], contexts, groupbys);
|
||||||
self.initial_ids = undefined;
|
self.initial_ids = undefined;
|
||||||
} else {
|
} else {
|
||||||
self.view_list.do_search.call(self, domains, contexts, groupbys);
|
self.view_list.do_search.call(self, domains, contexts, groupbys);
|
||||||
|
@ -1397,6 +1412,13 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
||||||
$cbutton.click(function() {
|
$cbutton.click(function() {
|
||||||
self.stop();
|
self.stop();
|
||||||
});
|
});
|
||||||
|
var $sbutton = $buttons.find(".oe_many2xselectpopup-search-select");
|
||||||
|
if(self.options.disable_multiple_selection) {
|
||||||
|
$sbutton.hide();
|
||||||
|
}
|
||||||
|
$sbutton.click(function() {
|
||||||
|
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.Many2XPopupListView( null, self.session,
|
||||||
self.element_id + "_view_list", self.dataset, false,
|
self.element_id + "_view_list", self.dataset, false,
|
||||||
{'deletable': false});
|
{'deletable': false});
|
||||||
|
@ -1408,7 +1430,15 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
||||||
});
|
});
|
||||||
this.searchview.start();
|
this.searchview.start();
|
||||||
},
|
},
|
||||||
on_select_element: function(element_id) {
|
on_select_elements: function(element_ids) {
|
||||||
|
},
|
||||||
|
on_click_element: function(ids) {
|
||||||
|
this.selected_ids = ids || [];
|
||||||
|
if(this.selected_ids.length > 0) {
|
||||||
|
this.$element.find(".oe_many2xselectpopup-search-select").removeAttr('disabled');
|
||||||
|
} else {
|
||||||
|
this.$element.find(".oe_many2xselectpopup-search-select").attr('disabled', "disabled");
|
||||||
|
}
|
||||||
},
|
},
|
||||||
new_object: function() {
|
new_object: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -1437,7 +1467,7 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
||||||
this.view_form.on_created.add_last(function(r, success) {
|
this.view_form.on_created.add_last(function(r, success) {
|
||||||
if (r.result) {
|
if (r.result) {
|
||||||
var id = arguments[0].result;
|
var id = arguments[0].result;
|
||||||
self.on_select_element(id);
|
self.on_select_elements([id]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.view_form.do_show();
|
this.view_form.do_show();
|
||||||
|
@ -1446,7 +1476,11 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({
|
||||||
|
|
||||||
openerp.base.form.Many2XPopupListView = openerp.base.ListView.extend({
|
openerp.base.form.Many2XPopupListView = openerp.base.ListView.extend({
|
||||||
select_record: function(index) {
|
select_record: function(index) {
|
||||||
this.popup.on_select_element(this.dataset.ids[index]);
|
this.popup.on_select_elements([this.dataset.ids[index]]);
|
||||||
|
},
|
||||||
|
do_select: function(ids, records) {
|
||||||
|
this._super(ids, records);
|
||||||
|
this.popup.on_click_element(ids);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -885,6 +885,7 @@
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
<t t-name="Many2XSelectPopup.search.buttons">
|
<t t-name="Many2XSelectPopup.search.buttons">
|
||||||
|
<button type="button" class="oe_many2xselectpopup-search-select" disabled="disabled">Select</button>
|
||||||
<button type="button" class="oe_many2xselectpopup-search-new">New</button>
|
<button type="button" class="oe_many2xselectpopup-search-new">New</button>
|
||||||
<button type="button" class="oe_many2xselectpopup-search-close">Close</button>
|
<button type="button" class="oe_many2xselectpopup-search-close">Close</button>
|
||||||
</t>
|
</t>
|
||||||
|
|
Loading…
Reference in New Issue