From 90c5430ab68b72eaa2e71aea823eddb8f5455283 Mon Sep 17 00:00:00 2001 From: Mohammed Shekha Date: Mon, 30 Jan 2017 18:41:57 +0530 Subject: [PATCH] [IMP] web: Separate personal and shared favorite filters in search view Purpose ======= When there are lots of shared filters then its difficult to differentiate personal and shared filters Specification ========== - Show all personal filters first as user will prefer his own filters to come first in list - Show all shared filters after personal filter in list - Add separator line between personal and shared filter --- .../web/static/src/js/views/search_menus.js | 20 ++++++++++++++----- addons/web/static/src/xml/base.xml | 3 ++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/views/search_menus.js b/addons/web/static/src/js/views/search_menus.js index 10ab44ef30c..0b28d13fea2 100644 --- a/addons/web/static/src/js/views/search_menus.js +++ b/addons/web/static/src/js/views/search_menus.js @@ -45,7 +45,8 @@ return Widget.extend({ this.$save_search = this.$('.o_save_search'); this.$save_name = this.$('.o_save_name'); this.$inputs = this.$save_name.find('input'); - this.$divider = this.$('.divider'); + this.$user_divider = this.$('.divider.user_filter'); + this.$shared_divider = this.$('.divider.shared_filter'); this.$inputs.eq(0).val(this.searchview.get_title()); var $shared_filter = this.$inputs.eq(1), $default_filter = this.$inputs.eq(2); @@ -204,7 +205,11 @@ return Widget.extend({ var self = this; var key = this.key_for(filter); - this.$divider.show(); + if (filter.user_id) { + this.$user_divider.show(); + } else { + this.$shared_divider.show(); + } if (!(key in this.$filters)) { var $filter = $('
  • ') .addClass(filter.user_id ? 'o-searchview-custom-private' @@ -219,7 +224,7 @@ return Widget.extend({ }, }, })) - .insertBefore(this.$divider); + .insertBefore(filter.user_id ? this.$user_divider : this.$shared_divider); this.$filters[key] = $filter; } this.$filters[key].unbind('click').click(function () { @@ -252,8 +257,13 @@ return Widget.extend({ $filter.remove(); delete self.$filters[key]; delete self.filters[key]; - if (_.isEmpty(self.filters)) { - self.$divider.hide(); + var has_user_filter = _.find(self.filters, function(filter) { return filter.user_id; }); + var has_shared_filer = _.find(self.filters, function(filter) { return !filter.user_id; }); + if (!has_user_filter) { + self.$user_divider.hide(); + } + if (!has_shared_filer) { + self.$shared_divider.hide(); } }); }, diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 015e4fe7b79..05548db32ad 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1216,7 +1216,8 @@ Favorites