You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.7 KiB
41 lines
1.7 KiB
odoo.define('web_widget_many2many_tags_multi_selection.multiple_tags', function (require) {
|
|
"use strict";
|
|
|
|
var rel_fields = require('web.relational_fields');
|
|
var dialogs = require('web.view_dialogs');
|
|
var core = require('web.core');
|
|
var _t = core._t;
|
|
|
|
rel_fields.FieldMany2One.include({
|
|
_searchCreatePopup: function(view, ids, context) {
|
|
var self = this;
|
|
|
|
// Don't include already selected instances in the search domain
|
|
var domain = self.record.getDomain({fieldName: self.name});
|
|
if (self.field.type === 'many2many') {
|
|
var selected_ids = self._getSearchBlacklist();
|
|
if (selected_ids.length > 0) {
|
|
domain.push(['id', 'not in', selected_ids]);
|
|
}
|
|
}
|
|
|
|
new dialogs.SelectCreateDialog(self, _.extend({}, self.nodeOptions, {
|
|
res_model: self.field.relation,
|
|
domain: domain,
|
|
context: _.extend({}, self.record.getContext(self.recordParams), context || {}),
|
|
title: (view === 'search' ? _t("Search: ") : _t("Create: ")) + self.string,
|
|
initial_ids: ids ? _.map(ids, function(x) {return x[0];}) : undefined,
|
|
initial_view: view,
|
|
disable_multiple_selection: self.field.type !== 'many2many',
|
|
on_selected: function(records) {
|
|
if (self.field.type !== 'many2many') {
|
|
self.reinitialize(records[0]);
|
|
} else {
|
|
self.reinitialize(records);
|
|
}
|
|
self.activate();
|
|
}
|
|
})).open();
|
|
},
|
|
});
|
|
});
|