summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorMathieu Duckerts-Antoine <dam@odoo.com>2018-05-14 12:30:31 +0200
committerGéry Debongnie <ged@odoo.com>2018-06-12 09:22:04 +0200
commit7bf5dd687be3919f6add10b1ac59a9cdee824632 (patch)
tree7bdb3fda8c6a08adce469ecf8b4ed3569e77d904 /addons/web/static/src/js
parente476c0f15f3b3785b9b180ae740a4a8f87e8d6dd (diff)
[REF] web: split search_menus in separate files
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/views/search/favorites_menu.js (renamed from addons/web/static/src/js/chrome/search_menus.js)186
-rw-r--r--addons/web/static/src/js/views/search/filter_menu.js103
-rw-r--r--addons/web/static/src/js/views/search/filters_menu.js105
-rw-r--r--addons/web/static/src/js/views/search/groupby_menu.js79
-rw-r--r--addons/web/static/src/js/views/search/search_filters.js (renamed from addons/web/static/src/js/chrome/search_filters.js)0
-rw-r--r--addons/web/static/src/js/views/search/search_inputs.js (renamed from addons/web/static/src/js/chrome/search_inputs.js)0
-rw-r--r--addons/web/static/src/js/views/search/search_view.js (renamed from addons/web/static/src/js/chrome/search_view.js)0
-rw-r--r--addons/web/static/src/js/views/search/search_view_mobile.js (renamed from addons/web/static/src/js/chrome/search_view_mobile.js)0
8 files changed, 287 insertions, 186 deletions
diff --git a/addons/web/static/src/js/chrome/search_menus.js b/addons/web/static/src/js/views/search/favorites_menu.js
index a6548b051f4..f0962e6177e 100644
--- a/addons/web/static/src/js/chrome/search_menus.js
+++ b/addons/web/static/src/js/views/search/favorites_menu.js
@@ -303,189 +303,3 @@ return Widget.extend({
});
});
-
-odoo.define('web.FilterMenu', function (require) {
-"use strict";
-
-var config = require('web.config');
-var search_filters = require('web.search_filters');
-var search_inputs = require('web.search_inputs');
-var Widget = require('web.Widget');
-
-return Widget.extend({
- template: 'SearchView.FilterMenu',
- events: {
- 'click .o_add_filter': function (event) {
- event.preventDefault();
- this.toggle_custom_filter_menu();
- },
- 'click li': function (event) {
- event.preventDefault();
- event.stopImmediatePropagation();
- },
- 'hidden.bs.dropdown': function () {
- this.toggle_custom_filter_menu(false);
- },
- 'click .o_add_condition': 'append_proposition',
- 'click .o_apply_filter': 'commit_search',
- 'keyup .o_searchview_extended_prop_value': function (ev) {
- if (ev.which === $.ui.keyCode.ENTER) {
- this.commit_search();
- }
- },
- },
- init: function (parent, filters, fields) {
- this._super(parent);
- this.isMobile = config.device.isMobile;
- this.filters = filters || [];
- this.searchview = parent;
- this.propositions = [];
- this.custom_filters_open = false;
- this.fields = _.pick(fields, function (field, name) {
- return field.selectable !== false && name !== 'id';
- });
- this.fields.id = { string: 'ID', type: 'id', searchable: true };
- },
- start: function () {
- var self = this;
- this.$menu = this.$('.o_filters_menu');
- this.$add_filter = this.$('.o_add_filter');
- this.$apply_filter = this.$('.o_apply_filter');
- this.$add_filter_menu = this.$('.o_add_filter_menu');
- _.each(this.filters, function (group) {
- if (group.is_visible()) {
- group.insertBefore(self.$add_filter);
- $('<li class="divider">').insertBefore(self.$add_filter);
- }
- });
- },
- toggle_custom_filter_menu: function (is_open) {
- var self = this;
- this.custom_filters_open = !_.isUndefined(is_open) ? is_open : !this.custom_filters_open;
- var def;
- if (this.custom_filters_open && !this.propositions.length) {
- def = this.append_proposition();
- }
- $.when(def).then(function () {
- self.$add_filter
- .toggleClass('o_closed_menu', !self.custom_filters_open)
- .toggleClass('o_open_menu', self.custom_filters_open);
- self.$add_filter_menu.toggle(self.custom_filters_open);
- self.$('.o_filter_condition').toggle(self.custom_filters_open);
- });
- },
- append_proposition: function () {
- var prop = new search_filters.ExtendedSearchProposition(this, this.fields);
- this.propositions.push(prop);
- this.$apply_filter.prop('disabled', false);
- return prop.insertBefore(this.$add_filter_menu);
- },
- remove_proposition: function (prop) {
- this.propositions = _.without(this.propositions, prop);
- if (!this.propositions.length) {
- this.$apply_filter.prop('disabled', true);
- }
- prop.destroy();
- },
- commit_search: function () {
- var filters = _.invoke(this.propositions, 'get_filter'),
- filters_widgets = _.map(filters, function (filter) {
- return new search_inputs.Filter(filter, this);
- }),
- filter_group = new search_inputs.FilterGroup(filters_widgets, this.searchview),
- facets = filters_widgets.map(function (filter) {
- return filter_group.make_facet([filter_group.make_value(filter)]);
- });
- filter_group.insertBefore(this.$add_filter);
- $('<li class="divider">').insertBefore(this.$add_filter);
- this.searchview.query.add(facets, {silent: true});
- this.searchview.query.trigger('reset');
-
- _.invoke(this.propositions, 'destroy');
- this.propositions = [];
- this.append_proposition();
- this.toggle_custom_filter_menu(false);
- },
-});
-
-});
-
-odoo.define('web.GroupByMenu', function (require) {
-"use strict";
-
-var config = require('web.config');
-var core = require('web.core');
-var search_inputs = require('web.search_inputs');
-var Widget = require('web.Widget');
-
-var QWeb = core.qweb;
-
-return Widget.extend({
- template: 'SearchView.GroupByMenu',
- events: {
- 'click li': function (event) {
- event.stopImmediatePropagation();
- },
- 'hidden.bs.dropdown': function () {
- this.toggle_add_menu(false);
- },
- 'click .o_add_custom_group a': function (event) {
- event.preventDefault();
- this.toggle_add_menu();
- },
- },
- init: function (parent, groups, fields) {
- var self = this;
- this._super(parent);
- this.searchview = parent;
- this.isMobile = config.device.isMobile;
- this.groups = groups || [];
- this.groupableFields = [];
- var groupable_types = ['many2one', 'char', 'boolean', 'selection', 'date', 'datetime'];
- _.each(fields, function (field, name) {
- if (field.sortable && _.contains(groupable_types, field.type)) {
- self.groupableFields.push(_.extend({}, field, {name: name}));
- }
- });
- self.groupableFields = _.sortBy(this.groupableFields, 'string');
- },
- start: function () {
- var self = this;
- this.$menu = this.$('.o_group_by_menu');
- var divider = this.$menu.find('.divider');
- _.invoke(this.groups, 'insertBefore', divider);
- if (this.groups.length) {
- divider.show();
- }
- this.$add_group = this.$menu.find('.o_add_custom_group');
- this.$menu.append(QWeb.render('GroupByMenuSelector', this));
- this.$add_group_menu = this.$('.o_add_group');
- this.$group_selector = this.$('.o_group_selector');
- this.$('.o_select_group').click(function () {
- self.toggle_add_menu(false);
- var field = self.$group_selector.find(':selected').data('name');
- self.add_groupby_to_menu(field);
- });
- },
- toggle_add_menu: function (is_open) {
- this.$add_group
- .toggleClass('o_closed_menu', !(_.isUndefined(is_open)) ? !is_open : undefined)
- .toggleClass('o_open_menu', is_open);
- this.$add_group_menu.toggle(is_open);
- if (this.$add_group.hasClass('o_open_menu')) {
- this.$group_selector.focus();
- }
- },
- add_groupby_to_menu: function (field_name) {
- var filter = new search_inputs.Filter({attrs:{
- context:"{'group_by':'" + field_name + "''}",
- name: _.find(this.groupableFields, {name: field_name}).string,
- }}, this.searchview);
- var group = new search_inputs.FilterGroup([filter], this.searchview),
- divider = this.$('.divider').show();
- group.insertBefore(divider);
- group.toggle(filter);
- },
-});
-
-});
diff --git a/addons/web/static/src/js/views/search/filter_menu.js b/addons/web/static/src/js/views/search/filter_menu.js
new file mode 100644
index 00000000000..61a5f2fafc8
--- /dev/null
+++ b/addons/web/static/src/js/views/search/filter_menu.js
@@ -0,0 +1,103 @@
+odoo.define('web.FilterMenu', function (require) {
+"use strict";
+
+var search_filters = require('web.search_filters');
+var search_inputs = require('web.search_inputs');
+var Widget = require('web.Widget');
+
+return Widget.extend({
+ template: 'SearchView.FilterMenu',
+ events: {
+ 'click .o_add_filter': function (event) {
+ event.preventDefault();
+ this.toggle_custom_filter_menu();
+ },
+ 'click li': function (event) {
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ },
+ 'hidden.bs.dropdown': function () {
+ this.toggle_custom_filter_menu(false);
+ },
+ 'click .o_add_condition': 'append_proposition',
+ 'click .o_apply_filter': 'commit_search',
+ 'keyup .o_searchview_extended_prop_value': function (ev) {
+ if (ev.which === $.ui.keyCode.ENTER) {
+ this.commit_search();
+ }
+ },
+ },
+ init: function (parent, filters, fields) {
+ this._super(parent);
+ this.filters = filters || [];
+ this.searchview = parent;
+ this.propositions = [];
+ this.custom_filters_open = false;
+ this.fields = _.pick(fields, function (field, name) {
+ return field.selectable !== false && name !== 'id';
+ });
+ this.fields.id = { string: 'ID', type: 'id', searchable: true };
+ },
+ start: function () {
+ var self = this;
+ this.$menu = this.$('.o_filters_menu');
+ this.$add_filter = this.$('.o_add_filter');
+ this.$apply_filter = this.$('.o_apply_filter');
+ this.$add_filter_menu = this.$('.o_add_filter_menu');
+ _.each(this.filters, function (group) {
+ if (group.is_visible()) {
+ group.insertBefore(self.$add_filter);
+ $('<li class="divider">').insertBefore(self.$add_filter);
+ }
+ });
+ },
+ toggle_custom_filter_menu: function (is_open) {
+ var self = this;
+ this.custom_filters_open = !_.isUndefined(is_open) ? is_open : !this.custom_filters_open;
+ var def;
+ if (this.custom_filters_open && !this.propositions.length) {
+ def = this.append_proposition();
+ }
+ $.when(def).then(function () {
+ self.$add_filter
+ .toggleClass('o_closed_menu', !self.custom_filters_open)
+ .toggleClass('o_open_menu', self.custom_filters_open);
+ self.$add_filter_menu.toggle(self.custom_filters_open);
+ self.$('.o_filter_condition').toggle(self.custom_filters_open);
+ });
+ },
+ append_proposition: function () {
+ var prop = new search_filters.ExtendedSearchProposition(this, this.fields);
+ this.propositions.push(prop);
+ this.$apply_filter.prop('disabled', false);
+ return prop.insertBefore(this.$add_filter_menu);
+ },
+ remove_proposition: function (prop) {
+ this.propositions = _.without(this.propositions, prop);
+ if (!this.propositions.length) {
+ this.$apply_filter.prop('disabled', true);
+ }
+ prop.destroy();
+ },
+ commit_search: function () {
+ var filters = _.invoke(this.propositions, 'get_filter'),
+ filters_widgets = _.map(filters, function (filter) {
+ return new search_inputs.Filter(filter, this);
+ }),
+ filter_group = new search_inputs.FilterGroup(filters_widgets, this.searchview),
+ facets = filters_widgets.map(function (filter) {
+ return filter_group.make_facet([filter_group.make_value(filter)]);
+ });
+ filter_group.insertBefore(this.$add_filter);
+ $('<li class="divider">').insertBefore(this.$add_filter);
+ this.searchview.query.add(facets, {silent: true});
+ this.searchview.query.trigger('reset');
+
+ _.invoke(this.propositions, 'destroy');
+ this.propositions = [];
+ this.append_proposition();
+ this.toggle_custom_filter_menu(false);
+ },
+});
+
+});
diff --git a/addons/web/static/src/js/views/search/filters_menu.js b/addons/web/static/src/js/views/search/filters_menu.js
new file mode 100644
index 00000000000..6305e635082
--- /dev/null
+++ b/addons/web/static/src/js/views/search/filters_menu.js
@@ -0,0 +1,105 @@
+odoo.define('web.FilterMenu', function (require) {
+"use strict";
+
+var config = require('web.config');
+var search_filters = require('web.search_filters');
+var search_inputs = require('web.search_inputs');
+var Widget = require('web.Widget');
+
+return Widget.extend({
+ template: 'SearchView.FilterMenu',
+ events: {
+ 'click .o_add_filter': function (event) {
+ event.preventDefault();
+ this.toggle_custom_filter_menu();
+ },
+ 'click li': function (event) {
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ },
+ 'hidden.bs.dropdown': function () {
+ this.toggle_custom_filter_menu(false);
+ },
+ 'click .o_add_condition': 'append_proposition',
+ 'click .o_apply_filter': 'commit_search',
+ 'keyup .o_searchview_extended_prop_value': function (ev) {
+ if (ev.which === $.ui.keyCode.ENTER) {
+ this.commit_search();
+ }
+ },
+ },
+ init: function (parent, filters, fields) {
+ this._super(parent);
+ this.isMobile = config.device.isMobile;
+ this.filters = filters || [];
+ this.searchview = parent;
+ this.propositions = [];
+ this.custom_filters_open = false;
+ this.fields = _.pick(fields, function (field, name) {
+ return field.selectable !== false && name !== 'id';
+ });
+ this.fields.id = { string: 'ID', type: 'id', searchable: true };
+ },
+ start: function () {
+ var self = this;
+ this.$menu = this.$('.o_filters_menu');
+ this.$add_filter = this.$('.o_add_filter');
+ this.$apply_filter = this.$('.o_apply_filter');
+ this.$add_filter_menu = this.$('.o_add_filter_menu');
+ _.each(this.filters, function (group) {
+ if (group.is_visible()) {
+ group.insertBefore(self.$add_filter);
+ $('<li class="divider">').insertBefore(self.$add_filter);
+ }
+ });
+ },
+ toggle_custom_filter_menu: function (is_open) {
+ var self = this;
+ this.custom_filters_open = !_.isUndefined(is_open) ? is_open : !this.custom_filters_open;
+ var def;
+ if (this.custom_filters_open && !this.propositions.length) {
+ def = this.append_proposition();
+ }
+ $.when(def).then(function () {
+ self.$add_filter
+ .toggleClass('o_closed_menu', !self.custom_filters_open)
+ .toggleClass('o_open_menu', self.custom_filters_open);
+ self.$add_filter_menu.toggle(self.custom_filters_open);
+ self.$('.o_filter_condition').toggle(self.custom_filters_open);
+ });
+ },
+ append_proposition: function () {
+ var prop = new search_filters.ExtendedSearchProposition(this, this.fields);
+ this.propositions.push(prop);
+ this.$apply_filter.prop('disabled', false);
+ return prop.insertBefore(this.$add_filter_menu);
+ },
+ remove_proposition: function (prop) {
+ this.propositions = _.without(this.propositions, prop);
+ if (!this.propositions.length) {
+ this.$apply_filter.prop('disabled', true);
+ }
+ prop.destroy();
+ },
+ commit_search: function () {
+ var filters = _.invoke(this.propositions, 'get_filter'),
+ filters_widgets = _.map(filters, function (filter) {
+ return new search_inputs.Filter(filter, this);
+ }),
+ filter_group = new search_inputs.FilterGroup(filters_widgets, this.searchview),
+ facets = filters_widgets.map(function (filter) {
+ return filter_group.make_facet([filter_group.make_value(filter)]);
+ });
+ filter_group.insertBefore(this.$add_filter);
+ $('<li class="divider">').insertBefore(this.$add_filter);
+ this.searchview.query.add(facets, {silent: true});
+ this.searchview.query.trigger('reset');
+
+ _.invoke(this.propositions, 'destroy');
+ this.propositions = [];
+ this.append_proposition();
+ this.toggle_custom_filter_menu(false);
+ },
+});
+
+});
diff --git a/addons/web/static/src/js/views/search/groupby_menu.js b/addons/web/static/src/js/views/search/groupby_menu.js
new file mode 100644
index 00000000000..9fe6951efc2
--- /dev/null
+++ b/addons/web/static/src/js/views/search/groupby_menu.js
@@ -0,0 +1,79 @@
+odoo.define('web.GroupByMenu', function (require) {
+"use strict";
+
+var config = require('web.config');
+var core = require('web.core');
+var search_inputs = require('web.search_inputs');
+var Widget = require('web.Widget');
+
+var QWeb = core.qweb;
+
+return Widget.extend({
+ template: 'SearchView.GroupByMenu',
+ events: {
+ 'click li': function (event) {
+ event.stopImmediatePropagation();
+ },
+ 'hidden.bs.dropdown': function () {
+ this.toggle_add_menu(false);
+ },
+ 'click .o_add_custom_group a': function (event) {
+ event.preventDefault();
+ this.toggle_add_menu();
+ },
+ },
+ init: function (parent, groups, fields) {
+ var self = this;
+ this._super(parent);
+ this.searchview = parent;
+ this.isMobile = config.device.isMobile;
+ this.groups = groups || [];
+ this.groupableFields = [];
+ var groupable_types = ['many2one', 'char', 'boolean', 'selection', 'date', 'datetime'];
+ _.each(fields, function (field, name) {
+ if (field.sortable && _.contains(groupable_types, field.type)) {
+ self.groupableFields.push(_.extend({}, field, {name: name}));
+ }
+ });
+ self.groupableFields = _.sortBy(this.groupableFields, 'string');
+ },
+ start: function () {
+ var self = this;
+ this.$menu = this.$('.o_group_by_menu');
+ var divider = this.$menu.find('.divider');
+ _.invoke(this.groups, 'insertBefore', divider);
+ if (this.groups.length) {
+ divider.show();
+ }
+ this.$add_group = this.$menu.find('.o_add_custom_group');
+ this.$menu.append(QWeb.render('GroupByMenuSelector', this));
+ this.$add_group_menu = this.$('.o_add_group');
+ this.$group_selector = this.$('.o_group_selector');
+ this.$('.o_select_group').click(function () {
+ self.toggle_add_menu(false);
+ var field = self.$group_selector.find(':selected').data('name');
+ self.add_groupby_to_menu(field);
+ });
+ },
+ toggle_add_menu: function (is_open) {
+ this.$add_group
+ .toggleClass('o_closed_menu', !(_.isUndefined(is_open)) ? !is_open : undefined)
+ .toggleClass('o_open_menu', is_open);
+ this.$add_group_menu.toggle(is_open);
+ if (this.$add_group.hasClass('o_open_menu')) {
+ this.$group_selector.focus();
+ }
+ },
+ add_groupby_to_menu: function (field_name) {
+ var filter = new search_inputs.Filter({attrs:{
+ context:"{'group_by':'" + field_name + "''}",
+ name: _.find(this.groupableFields, {name: field_name}).string,
+ }}, this.searchview);
+ var group = new search_inputs.FilterGroup([filter], this.searchview),
+ divider = this.$('.divider').show();
+ group.insertBefore(divider);
+ group.toggle(filter);
+ },
+});
+
+}); \ No newline at end of file
diff --git a/addons/web/static/src/js/chrome/search_filters.js b/addons/web/static/src/js/views/search/search_filters.js
index 582af7e70ef..582af7e70ef 100644
--- a/addons/web/static/src/js/chrome/search_filters.js
+++ b/addons/web/static/src/js/views/search/search_filters.js
diff --git a/addons/web/static/src/js/chrome/search_inputs.js b/addons/web/static/src/js/views/search/search_inputs.js
index d937a6e246e..d937a6e246e 100644
--- a/addons/web/static/src/js/chrome/search_inputs.js
+++ b/addons/web/static/src/js/views/search/search_inputs.js
diff --git a/addons/web/static/src/js/chrome/search_view.js b/addons/web/static/src/js/views/search/search_view.js
index 8fc3cd73a2b..8fc3cd73a2b 100644
--- a/addons/web/static/src/js/chrome/search_view.js
+++ b/addons/web/static/src/js/views/search/search_view.js
diff --git a/addons/web/static/src/js/chrome/search_view_mobile.js b/addons/web/static/src/js/views/search/search_view_mobile.js
index 852a65c0a37..852a65c0a37 100644
--- a/addons/web/static/src/js/chrome/search_view_mobile.js
+++ b/addons/web/static/src/js/views/search/search_view_mobile.js