[IMP] Added all fields in custom filters.

bzr revid: nicolas.vanhoren@openerp.com-20110519151249-fgangasrt2ule5kr
This commit is contained in:
niv-openerp 2011-05-19 17:12:49 +02:00
parent 0406a85198
commit 604434f322
3 changed files with 97 additions and 73 deletions

View File

@ -670,6 +670,12 @@ class SearchView(View):
def load(self, req, model, view_id):
fields_view = self.fields_view_get(req, model, view_id, 'search')
return {'fields_view': fields_view}
@openerpweb.jsonrequest
def fields_get(self, req, model):
Model = req.session.model(model)
fields = Model.fields_get()
return {'fields': fields}
class Action(openerpweb.Controller):
_cp_path = "/base/action"

View File

@ -112,7 +112,7 @@ openerp.base.SearchView = openerp.base.Controller.extend({
data.fields_view.fields);
// for extended search view
var ext = new openerp.base.search.ExtendedSearch(null, data.fields_view.fields);
var ext = new openerp.base.search.ExtendedSearch(null, this.session, this.model);
lines.push([ext]);
this.inputs.push(ext);
@ -390,77 +390,6 @@ openerp.base.search.Group = openerp.base.search.Widget.extend({
}
});
openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
template: 'SearchView.extended_search',
identifier_prefix: 'extended-search',
init: function (parent, fields) {
this._super(parent);
this.fields = fields;
},
add_group: function() {
var group = new openerp.base.search.ExtendedSearchGroup(this, this.fields);
var render = group.render({});
this.$element.find('.searchview_extended_groups_list').append(render);
group.start();
},
start: function () {
this._super();
var _this = this;
openerp.base.search.add_expand_listener(this.$element);
this.add_group();
this.$element.find('.searchview_extended_add_group').click(function (e) {
_this.add_group();
});
},
get_context: function() {
return null;
},
get_domain: function() {
if(this.$element.hasClass("folded")) {
return null;
}
return _.reduce(this.children,
function(mem, x) { return mem.concat(x.get_domain());}, []);
}
});
openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
template: 'SearchView.extended_search.group',
identifier_prefix: 'extended-search-group',
init: function (parent, fields) {
this._super(parent);
this.fields = fields;
},
add_prop: function() {
var prop = new openerp.base.search.ExtendedSearchProposition(this, this.fields);
var render = prop.render({});
this.$element.find('.searchview_extended_propositions_list').append(render);
prop.start();
},
start: function () {
this._super();
var _this = this;
this.add_prop();
this.$element.find('.searchview_extended_add_proposition').click(function (e) {
_this.add_prop();
});
var delete_btn = this.$element.find('.searchview_extended_delete_group');
delete_btn.click(function (e) {
_this.stop();
});
},
get_domain: function() {
var props = _(this.children).chain().map(function(x) {
return x.get_proposition();
}).compact().value();
var choice = this.$element.find(".searchview_extended_group_choice").val();
var op = choice == "all" ? "&" : "|";
return [].concat(choice == "none" ? ['!'] : [],
_.map(_.range(_.max([0,props.length - 1])), function() { return op; }),
props);
}
});
openerp.base.search.Input = openerp.base.search.Widget.extend(
/** @lends openerp.base.search.Input# */{
/**
@ -772,6 +701,81 @@ openerp.base.search.custom_filters = new openerp.base.Registry({
'datetime': 'openerp.base.search.ExtendedSearchProposition.DateTime'
});
openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
template: 'SearchView.extended_search',
identifier_prefix: 'extended-search',
init: function (parent, session, model) {
this._super(parent, session);
this.model = model;
},
add_group: function() {
var group = new openerp.base.search.ExtendedSearchGroup(this, this.fields);
var render = group.render({});
this.$element.find('.searchview_extended_groups_list').append(render);
group.start();
},
start: function () {
this._super();
var self = this;
this.rpc("/base/searchview/fields_get",
{"model": this.model}, function(data) {
self.fields = data.fields;
openerp.base.search.add_expand_listener(self.$element);
self.add_group();
self.$element.find('.searchview_extended_add_group').click(function (e) {
self.add_group();
});
});
},
get_context: function() {
return null;
},
get_domain: function() {
if(this.$element.hasClass("folded")) {
return null;
}
return _.reduce(this.children,
function(mem, x) { return mem.concat(x.get_domain());}, []);
}
});
openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
template: 'SearchView.extended_search.group',
identifier_prefix: 'extended-search-group',
init: function (parent, fields) {
this._super(parent);
this.fields = fields;
},
add_prop: function() {
var prop = new openerp.base.search.ExtendedSearchProposition(this, this.fields);
var render = prop.render({});
this.$element.find('.searchview_extended_propositions_list').append(render);
prop.start();
},
start: function () {
this._super();
var _this = this;
this.add_prop();
this.$element.find('.searchview_extended_add_proposition').click(function (e) {
_this.add_prop();
});
var delete_btn = this.$element.find('.searchview_extended_delete_group');
delete_btn.click(function (e) {
_this.stop();
});
},
get_domain: function() {
var props = _(this.children).chain().map(function(x) {
return x.get_proposition();
}).compact().value();
var choice = this.$element.find(".searchview_extended_group_choice").val();
var op = choice == "all" ? "&" : "|";
return [].concat(choice == "none" ? ['!'] : [],
_.map(_.range(_.max([0,props.length - 1])), function() { return op; }),
props);
}
});
openerp.base.search.ExtendedSearchProposition = openerp.base.BaseWidget.extend({
template: 'SearchView.extended_search.proposition',
identifier_prefix: 'extended-search-proposition',
@ -880,7 +884,16 @@ openerp.base.search.ExtendedSearchProposition.DateTime = openerp.base.BaseWidget
{value: "<=", text: "less or equal than"}
],
get_value: function() {
return this.$element.val();
var val = this.$element.val();
debugger;
return val;
},
render: function(add) {
this._super(add);
this.$element.find('input').datetimepicker({
dateFormat: 'yy-mm-dd',
timeFormat: 'hh:mm:ss'
});
}
});

View File

@ -575,6 +575,11 @@
<t t-name="SearchView.extended_search.proposition.char">
<input t-att-id="element_id"/>
</t>
<t t-name="SearchView.extended_search.proposition.datetime">
<input type="text"
t-att-id="element_id"
/>
</t>
<t t-name="ViewManager.sidebar">
<div t-att-id="element_id" class="sidebar-main-div closed-sidebar">