[REF] move compute_domain outside of openep.base.form.Widget

bzr revid: xmo@openerp.com-20110411173643-84eqb3vc0drd9ge7
This commit is contained in:
Xavier Morel 2011-04-11 19:36:43 +02:00
parent 25bbc891cf
commit 215ee4fa5f
2 changed files with 76 additions and 83 deletions

View File

@ -258,35 +258,7 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base
/** @namespace */
openerp.base.form = {};
openerp.base.form.Widget = openerp.base.Controller.extend({
init: function(view, node) {
this.view = view;
this.node = node;
this.attrs = eval('(' + (this.node.attrs.attrs || '{}') + ')');
this.type = this.type || node.tag;
this.element_name = this.element_name || this.type;
this.element_id = [this.view.element_id, this.element_name, this.view.widgets_counter++].join("_");
this._super(this.view.session, this.element_id);
this.view.widgets[this.element_id] = this;
this.children = node.children;
this.colspan = parseInt(node.attrs.colspan || 1);
this.template = "Widget";
this.string = this.string || node.attrs.string;
this.help = this.help || node.attrs.help;
this.invisible = (node.attrs.invisible == '1');
},
start: function() {
this.$element = $('#' + this.element_id);
},
process_attrs: function() {
for (var a in this.attrs) {
this[a] = this.compute_domain(this.attrs[a]);
}
},
compute_domain: function(expr) {
openerp.base.form.compute_domain = function(expr, fields) {
var stack = [];
for (var i = 0; i < expr.length; i++) {
var ex = expr[i];
@ -295,7 +267,7 @@ openerp.base.form.Widget = openerp.base.Controller.extend({
continue;
}
var field = this.view.fields[ex[0]].value;
var field = fields[ex[0]].value;
var op = ex[1];
var val = ex[2];
@ -345,6 +317,35 @@ openerp.base.form.Widget = openerp.base.Controller.extend({
}
return _.indexOf(stack, false) == -1;
},
openerp.base.form.Widget = openerp.base.Controller.extend({
init: function(view, node) {
this.view = view;
this.node = node;
this.attrs = eval('(' + (this.node.attrs.attrs || '{}') + ')');
this.type = this.type || node.tag;
this.element_name = this.element_name || this.type;
this.element_id = [this.view.element_id, this.element_name, this.view.widgets_counter++].join("_");
this._super(this.view.session, this.element_id);
this.view.widgets[this.element_id] = this;
this.children = node.children;
this.colspan = parseInt(node.attrs.colspan || 1);
this.template = "Widget";
this.string = this.string || node.attrs.string;
this.help = this.help || node.attrs.help;
this.invisible = (node.attrs.invisible == '1');
},
start: function() {
this.$element = $('#' + this.element_id);
},
process_attrs: function() {
var compute_domain = openerp.base.form.compute_domain;
for (var a in this.attrs) {
this[a] = compute_domain(this.attrs[a], this.view.fields);
}
},
update_dom: function() {
this.$element.toggle(!this.invisible);
},

View File

@ -1,32 +1,28 @@
$(document).ready(function () {
var widget;
var openerp;
module("form.widget", {
setup: function () {
var openerp = window.openerp.init(true);
openerp = window.openerp.init(true);
window.openerp.base.chrome(openerp);
// views loader stuff
window.openerp.base.data(openerp);
window.openerp.base.views(openerp);
window.openerp.base.form(openerp);
widget = new openerp.base.form.Widget({
'widgets': {},
'fields': {}
}, {
'attrs': {}
});
}
});
test("compute_domain", function () {
widget.view.fields = {
var fields = {
'a': {value: 3},
'group_method': {value: 'line'},
'select1': {value: 'day'},
'rrule_type': {value: 'monthly'}
};
ok(widget.compute_domain([['a', '=', 3]]));
ok(widget.compute_domain([['group_method','!=','count']]));
ok(widget.compute_domain([['select1','=','day'],
['rrule_type','=','monthly']]));
ok(openerp.base.form.compute_domain(
[['a', '=', 3]], fields));
ok(openerp.base.form.compute_domain(
[['group_method','!=','count']], fields));
ok(openerp.base.form.compute_domain(
[['select1','=','day'], ['rrule_type','=','monthly']], fields));
});
test("compute_domain or", function () {
var base = {
@ -39,16 +35,12 @@ $(document).ready(function () {
'|', ['user_id','=',3],
['member_ids', 'in', [3]]];
widget.view.fields = _.extend(
{}, base, {'section_id': {value: 42}});
ok(widget.compute_domain(domain));
ok(openerp.base.form.compute_domain(domain, _.extend(
{}, base, {'section_id': {value: 42}})));
ok(openerp.base.form.compute_domain(domain, _.extend(
{}, base, {'user_id': {value: 3}})));
widget.view.fields = _.extend(
{}, base, {'user_id': {value: 3}});
ok(widget.compute_domain(domain));
widget.view.fields = _.extend(
{}, base, {'member_ids': {value: 3}});
ok(widget.compute_domain(domain));
ok(openerp.base.form.compute_domain(domain, _.extend(
{}, base, {'member_ids': {value: 3}})));
});
});