[REF] move compute_domain outside of openep.base.form.Widget
bzr revid: xmo@openerp.com-20110411173643-84eqb3vc0drd9ge7
This commit is contained in:
parent
25bbc891cf
commit
215ee4fa5f
|
@ -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);
|
||||
},
|
||||
|
|
|
@ -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}})));
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue