summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-02-28 13:47:09 +0100
committerChristophe Simonis <chs@odoo.com>2019-02-28 13:47:09 +0100
commit06898fac3c9b21d4fd5ef7efd35f829cdff15e46 (patch)
tree6b6d657677778365b06bbf4fb7babcab688edcc2 /addons/web/static/src/js/views
parent012816f85f8f20243bd3dfb55abdfaac59722284 (diff)
parentf9d3b5b7dfe15fb53f14fa0a0ae91bbeded9939b (diff)
[MERGE] forward port branch saas-12.1 up to f9d3b5b7dfe
Diffstat (limited to 'addons/web/static/src/js/views')
-rw-r--r--addons/web/static/src/js/views/abstract_view.js3
-rw-r--r--addons/web/static/src/js/views/control_panel/control_panel_view.js17
-rw-r--r--addons/web/static/src/js/views/view_dialogs.js2
3 files changed, 22 insertions, 0 deletions
diff --git a/addons/web/static/src/js/views/abstract_view.js b/addons/web/static/src/js/views/abstract_view.js
index 72108e3c8ad..ce8951f6ee8 100644
--- a/addons/web/static/src/js/views/abstract_view.js
+++ b/addons/web/static/src/js/views/abstract_view.js
@@ -78,6 +78,8 @@ var AbstractView = Factory.extend({
* @param {string} [params.controllerState]
* @param {string} [params.displayName]
* @param {Array[]} [params.domain=[]]
+ * @param {Object[]} [params.dynamicFilters] transmitted to the
+ * ControlPanelView
* @param {number[]} [params.ids]
* @param {boolean} [params.isEmbedded=false]
* @param {Object} [params.searchQuery={}]
@@ -165,6 +167,7 @@ var AbstractView = Factory.extend({
this.controlPanelParams = {
action: action,
activateDefaultFavorite: params.activateDefaultFavorite,
+ dynamicFilters: params.dynamicFilters,
breadcrumbs: params.breadcrumbs,
context: this.loadParams.context,
domain: this.loadParams.domain,
diff --git a/addons/web/static/src/js/views/control_panel/control_panel_view.js b/addons/web/static/src/js/views/control_panel/control_panel_view.js
index 2bde26340e7..0a140e1f901 100644
--- a/addons/web/static/src/js/views/control_panel/control_panel_view.js
+++ b/addons/web/static/src/js/views/control_panel/control_panel_view.js
@@ -43,6 +43,10 @@ var ControlPanelView = Factory.extend({
* breadcrumbs won't be rendered
* @param {boolean} [params.withSearchBar=true] if set to false, no default
* search bar will be rendered
+ * @param {Object[]} [params.dynamicFilters=[]] filters to add to the
+ * search (in addition to those described in the arch), each filter being
+ * an object with keys 'description' (what is displayed in the searchbar)
+ * and 'domain'
*/
init: function (params) {
var self = this;
@@ -101,6 +105,19 @@ var ControlPanelView = Factory.extend({
INTERVAL_OPTIONS = INTERVAL_OPTIONS.map(function (option) {
return _.extend(option, {description: option.description.toString()});
});
+
+ // add a filter group with the dynamic filters, if any
+ if (params.dynamicFilters && params.dynamicFilters.length) {
+ var dynamicFiltersGroup = params.dynamicFilters.map(function (filter) {
+ return {
+ description: filter.description,
+ domain: JSON.stringify(filter.domain),
+ isDefault: true,
+ type: 'filter',
+ };
+ });
+ this.loadParams.groups.unshift(dynamicFiltersGroup);
+ }
},
//--------------------------------------------------------------------------
diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js
index 65fee4a01b4..befe4247c00 100644
--- a/addons/web/static/src/js/views/view_dialogs.js
+++ b/addons/web/static/src/js/views/view_dialogs.js
@@ -317,6 +317,7 @@ var SelectCreateDialog = ViewDialog.extend({
* - list_view_options: dict of options to pass to the List View
* - on_selected: optional callback to execute when records are selected
* - disable_multiple_selection: true to allow create/select multiple records
+ * - dynamicFilters: filters to add to the searchview
*/
init: function () {
this._super.apply(this, arguments);
@@ -359,6 +360,7 @@ var SelectCreateDialog = ViewDialog.extend({
controlPanelFieldsView: fieldsViews.search,
},
action_buttons: false,
+ dynamicFilters: this.options.dynamicFilters,
context: this.context,
domain: domain,
hasSelectors: !this.options.disable_multiple_selection,