[ADD] Add support for @modifiers in kanban views
bzr revid: fme@openerp.com-20120607130231-i4lovbubmq9vevwb
This commit is contained in:
parent
2c616a90b2
commit
c04b75fb53
|
@ -109,11 +109,23 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
transform_qweb_template: function(node) {
|
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) {
|
switch (node.tag) {
|
||||||
case 'field':
|
case 'field':
|
||||||
node.tag = qweb_prefix;
|
node.tag = QWeb.prefix;
|
||||||
node.attrs[qweb_prefix + '-esc'] = 'record.' + node.attrs['name'] + '.value';
|
node.attrs[QWeb.prefix + '-esc'] = 'record.' + node.attrs['name'] + '.value';
|
||||||
this.extract_aggregates(node);
|
this.extract_aggregates(node);
|
||||||
break;
|
break;
|
||||||
case 'button':
|
case 'button':
|
||||||
|
@ -126,18 +138,6 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
|
||||||
delete(node.attrs[k]);
|
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']) {
|
if (node.attrs['data-string']) {
|
||||||
node.attrs.title = 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];
|
this.state = this.view.state.records[this.id];
|
||||||
},
|
},
|
||||||
set_record: function(record) {
|
set_record: function(record) {
|
||||||
|
var self = this;
|
||||||
this.id = record.id;
|
this.id = record.id;
|
||||||
|
this.values = {};
|
||||||
|
_.each(record, function(v, k) {
|
||||||
|
self.values[k] = {
|
||||||
|
value: v
|
||||||
|
};
|
||||||
|
});
|
||||||
this.record = this.transform_record(record);
|
this.record = this.transform_record(record);
|
||||||
},
|
},
|
||||||
start: function() {
|
start: function() {
|
||||||
|
@ -751,6 +758,9 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({
|
||||||
} else {
|
} else {
|
||||||
return s.substr(0, size) + '...';
|
return s.substr(0, size) + '...';
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
kanban_compute_domain: function(domain) {
|
||||||
|
return instance.web.form.compute_domain(domain, this.values);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue