summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-06-28 18:05:25 +0200
committerChristophe Simonis <chs@odoo.com>2016-06-28 18:05:25 +0200
commit93e6316029e237d41540bcf7ac594cc34b692d3a (patch)
treeedbb9fa9a400855d1089d8e612e98c83eb9d3904 /addons/web/static/src/js/views
parent8eb2be4668b5677b82d581023161d31acd8abab1 (diff)
parent71530771ea42c5bf620115e38afeaa6112f720cf (diff)
[MERGE] forward port of branch saas-11 up to 7153077
Diffstat (limited to 'addons/web/static/src/js/views')
-rw-r--r--addons/web/static/src/js/views/form_relational_widgets.js24
-rw-r--r--addons/web/static/src/js/views/list_view.js14
2 files changed, 29 insertions, 9 deletions
diff --git a/addons/web/static/src/js/views/form_relational_widgets.js b/addons/web/static/src/js/views/form_relational_widgets.js
index 624a2fa17a4..8e65677a8b3 100644
--- a/addons/web/static/src/js/views/form_relational_widgets.js
+++ b/addons/web/static/src/js/views/form_relational_widgets.js
@@ -320,7 +320,8 @@ var FieldMany2One = common.AbstractField.extend(common.CompletionFieldMixin, com
var dataset = new data.DataSetStatic(this, this.field.relation, self.build_context());
var def = this.alive(dataset.name_get([self.get("value")])).done(function(data) {
if (!data[0]) {
- self.do_warn(_t("Render"), _t("No value found for the field "+self.field.string+" for value "+self.get("value")));
+ self.do_warn(_t("Render"),
+ _.str.sprintf(_t("No value found for the field %s for value %s"), self.field.string, self.get("value")));
return;
}
self.display_value["" + self.get("value")] = data[0][1];
@@ -819,6 +820,7 @@ var FieldX2Many = AbstractManyField.extend({
self.is_loaded = self.is_loaded.then(function() {
var view = self.get_active_view();
if (view.type === "list") {
+ view.controller.page = 0;
return view.controller.reload_content();
} else if (view.controller.do_search) {
return view.controller.do_search(self.build_domain(), self.dataset.get_context(), []);
@@ -863,6 +865,9 @@ var FieldX2Many = AbstractManyField.extend({
}
return true;
},
+ is_false: function() {
+ return _(this.dataset.ids).isEmpty();
+ },
});
var X2ManyDataSet = data.BufferedDataSet.extend({
@@ -1259,13 +1264,16 @@ var FieldOne2Many = FieldX2Many.extend({
return this._super.apply(this, arguments);
},
commit_value: function() {
- var view = this.viewmanager.active_view;
- if(view.type === "list" && view.controller.editable()) {
- return this.mutex.def.then(function () {
- return view.controller.save_edition();
- });
- }
- return this.mutex.def;
+ var self = this;
+ return this.is_loaded.then(function() {
+ var view = self.viewmanager.active_view;
+ if(view.type === "list" && view.controller.editable()) {
+ return self.mutex.def.then(function () {
+ return view.controller.save_edition();
+ });
+ }
+ return self.mutex.def;
+ });
},
});
diff --git a/addons/web/static/src/js/views/list_view.js b/addons/web/static/src/js/views/list_view.js
index d905dfdadfd..9a87b7fd6b3 100644
--- a/addons/web/static/src/js/views/list_view.js
+++ b/addons/web/static/src/js/views/list_view.js
@@ -4,6 +4,7 @@ odoo.define('web.ListView', function (require) {
var core = require('web.core');
var data = require('web.data');
+var data_manager = require('web.data_manager');
var DataExport = require('web.DataExport');
var formats = require('web.formats');
var common = require('web.list_common');
@@ -36,6 +37,7 @@ var row_decoration = [
var ListView = View.extend({
_template: 'ListView',
accesskey: "l",
+ require_fields: true,
defaults: _.extend({}, View.prototype.defaults, {
// records can be selected one by one
selectable: true,
@@ -151,6 +153,7 @@ var ListView = View.extend({
}
},
willStart: function() {
+ var self = this;
// Retrieve the decoration defined on the model's list view
this.decoration = _.pick(this.fields_view.arch.attrs, function(value, key) {
return row_decoration.indexOf(key) >= 0;
@@ -158,7 +161,10 @@ var ListView = View.extend({
this.decoration = _.mapObject(this.decoration, function(value) {
return py.parse(py.tokenize(value));
});
- return this._super();
+ var fields_def = data_manager.load_fields(this.dataset).then(function(fields_get) {
+ self.fields_get = fields_get;
+ });
+ return $.when(this._super(), fields_def);
},
/**
* Set a custom Group construct as the root of the List View.
@@ -1379,6 +1385,12 @@ ListView.Groups = Class.extend({
}
} else {
group_label = group.value;
+ var grouped_on_field = self.view.fields_get[group.grouped_on];
+ if (grouped_on_field.type === 'selection') {
+ group_label = _.find(grouped_on_field.selection, function(selection) {
+ return selection[0] === group.value;
+ });
+ }
if (group_label instanceof Array) {
group_label = group_label[1];
}