diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 4d3f09cec71..6a84f65067e 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -109,11 +109,23 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ } }, transform_qweb_template: function(node) { - var qweb_prefix = QWeb.prefix; + var qweb_add_if = function(node, condition) { + if (node.attrs[QWeb.prefix + '-if']) { + condition = _.str.sprintf("(%s) and (%s)", node.attrs[QWeb.prefix + '-if'], condition); + } + node.attrs[QWeb.prefix + '-if'] = condition; + }; + // Process modifiers + if (node.tag && node.attrs.modifiers) { + var modifiers = JSON.parse(node.attrs.modifiers || '{}'); + if (modifiers.invisible) { + qweb_add_if(node, _.str.sprintf("!kanban_compute_domain(%s)", JSON.stringify(modifiers.invisible))); + } + } switch (node.tag) { case 'field': - node.tag = qweb_prefix; - node.attrs[qweb_prefix + '-esc'] = 'record.' + node.attrs['name'] + '.value'; + node.tag = QWeb.prefix; + node.attrs[QWeb.prefix + '-esc'] = 'record.' + node.attrs['name'] + '.value'; this.extract_aggregates(node); break; case 'button': @@ -126,18 +138,6 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ delete(node.attrs[k]); } }); - if (node.attrs['data-states']) { - var states = _.map(node.attrs['data-states'].split(','), function(state) { - return "record.state.raw_value == '" + _.str.trim(state) + "'"; - }); - node.attrs[qweb_prefix + '-if'] = states.join(' or '); - } - if (node.attrs['data-kanban_states']) { - var states = _.map(node.attrs['data-kanban_states'].split(','), function(state) { - return "record.kanban_state.raw_value == '" + _.str.trim(state) + "'"; - }); - node.attrs[qweb_prefix + '-if'] = states.join(' or '); - } if (node.attrs['data-string']) { node.attrs.title = node.attrs['data-string']; } @@ -530,7 +530,14 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ this.state = this.view.state.records[this.id]; }, set_record: function(record) { + var self = this; this.id = record.id; + this.values = {}; + _.each(record, function(v, k) { + self.values[k] = { + value: v + }; + }); this.record = this.transform_record(record); }, start: function() { @@ -751,6 +758,9 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ } else { return s.substr(0, size) + '...'; } + }, + kanban_compute_domain: function(domain) { + return instance.web.form.compute_domain(domain, this.values); } });