summaryrefslogtreecommitdiff
path: root/addons/base/static/src/js/search.js
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2011-07-27 13:44:30 +0200
committerFabien Meghazi <fme@openerp.com>2011-07-27 13:44:30 +0200
commit5ca8686fcc08a5b4a927e9ef57ed00a881a12d8a (patch)
treed02887726be15fcc93da8f5d3b4f0dfeecf727fe /addons/base/static/src/js/search.js
parent883380866e8917594525a7a0877f56729df8f238 (diff)
parent216ab84e5f27927ff1bf664ac8bdf38bbed57897 (diff)
[MERGE] Merge with trunk
bzr revid: fme@openerp.com-20110727114430-kzyiq9avv2kur1zm
Diffstat (limited to 'addons/base/static/src/js/search.js')
-rw-r--r--addons/base/static/src/js/search.js74
1 files changed, 61 insertions, 13 deletions
diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js
index 026f19db5b1..8a51abe1335 100644
--- a/addons/base/static/src/js/search.js
+++ b/addons/base/static/src/js/search.js
@@ -110,9 +110,10 @@ openerp.base.SearchView = openerp.base.Controller.extend({
}
},
on_loaded: function(data) {
- var lines = this.make_widgets(
- data.fields_view['arch'].children,
- data.fields_view.fields);
+ var self = this,
+ lines = this.make_widgets(
+ data.fields_view['arch'].children,
+ data.fields_view.fields);
// for extended search view
var ext = new openerp.base.search.ExtendedSearch(this, this.model);
@@ -144,7 +145,9 @@ openerp.base.SearchView = openerp.base.Controller.extend({
self.ready.resolve();
});
- // filters management
+ this.reload_managed_filters();
+ },
+ reload_managed_filters: function() {
var self = this;
return this.rpc('/base/searchview/get_filters', {
model: this.dataset.model
@@ -159,6 +162,7 @@ openerp.base.SearchView = openerp.base.Controller.extend({
* Handle event when the user make a selection in the filters management select box.
*/
on_filters_management: function(e) {
+ var self = this;
var select = this.$element.find(".oe_search-view-filters-management");
var val = select.val();
@@ -173,10 +177,50 @@ openerp.base.SearchView = openerp.base.Controller.extend({
this.on_search([filter.domain], [filter.context], []);
} else if (val == "save_filter") {
select.val("_filters");
- //TODO niv
+ var data = this.build_search_data();
+ var context = new openerp.base.CompoundContext();
+ _.each(data.contexts, function(x) {
+ context.add(x);
+ });
+ var domain = new openerp.base.CompoundDomain();
+ _.each(data.domains, function(x) {
+ domain.add(x);
+ });
+ var dial_html = QWeb.render("SearchView.managed-filters.add");
+ var $dial = $(dial_html);
+ $dial.dialog({
+ modal: true,
+ title: "Filter Entry",
+ buttons: {
+ Cancel: function() {
+ $(this).dialog("close");
+ },
+ OK: function() {
+ $(this).dialog("close");
+ var name = $(this).find("input").val();
+ self.rpc('/base/searchview/save_filter', {
+ model: self.dataset.model,
+ context_to_save: context,
+ domain: domain,
+ name: name
+ }).then(function(result) {
+ self.reload_managed_filters();
+ });
+ },
+ }
+ });
} else { // manage_filters
select.val("_filters");
- //TODO niv
+ this.do_action({
+ res_model: 'ir.filters',
+ views: [[false, 'list'], [false, 'form']],
+ type: 'ir.actions.act_window',
+ context: {"search_default_user_id": this.session.uid,
+ "search_default_model_id": this.dataset.model},
+ target: "current",
+ limit : 80,
+ auto_search : true
+ });
}
},
/**
@@ -197,6 +241,16 @@ openerp.base.SearchView = openerp.base.Controller.extend({
if (e && e.preventDefault) { e.preventDefault(); }
+ var data = this.build_search_data();
+
+ if (data.errors.length) {
+ this.on_invalid(data.errors);
+ return;
+ }
+
+ this.on_search(data.domains, data.contexts, data.groupbys);
+ },
+ build_search_data: function() {
var domains = [],
contexts = [],
errors = [];
@@ -221,19 +275,13 @@ openerp.base.SearchView = openerp.base.Controller.extend({
}
});
- if (errors.length) {
- this.on_invalid(errors);
- return;
- }
-
// TODO: do we need to handle *fields* with group_by in their context?
var groupbys = _(this.enabled_filters)
.chain()
.map(function (filter) { return filter.get_context();})
.compact()
.value();
-
- this.on_search(domains, contexts, groupbys);
+ return {domains: domains, contexts: contexts, errors: errors, groupbys: groupbys};
},
/**
* Triggered after the SearchView has collected all relevant domains and