diff --git a/setup/web_edit_user_filter/odoo/addons/web_edit_user_filter b/setup/web_edit_user_filter/odoo/addons/web_edit_user_filter new file mode 120000 index 000000000..9fe44e09f --- /dev/null +++ b/setup/web_edit_user_filter/odoo/addons/web_edit_user_filter @@ -0,0 +1 @@ +../../../../web_edit_user_filter \ No newline at end of file diff --git a/setup/web_edit_user_filter/setup.py b/setup/web_edit_user_filter/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/web_edit_user_filter/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/web_edit_user_filter/__manifest__.py b/web_edit_user_filter/__manifest__.py index 09edc3c9f..e22f122b4 100644 --- a/web_edit_user_filter/__manifest__.py +++ b/web_edit_user_filter/__manifest__.py @@ -2,21 +2,15 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Edit User Filters', - 'category': 'Extra Tools', - 'version': '12.0.1.0.2', - 'development_status': 'Production/Stable', - 'author': 'Onestein,Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'website': 'https://github.com/OCA/web', - 'depends': [ - 'web' - ], - 'data': [ - 'templates/assets.xml' - ], - 'qweb': [ - 'static/src/xml/backend.xml' - ], - 'installable': True, + "name": "Edit User Filters", + "category": "Extra Tools", + "version": "12.0.1.0.2", + "development_status": "Production/Stable", + "author": "Onestein,Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/OCA/web", + "depends": ["web"], + "data": ["templates/assets.xml"], + "qweb": ["static/src/xml/backend.xml"], + "installable": True, } diff --git a/web_edit_user_filter/models/ir_filters.py b/web_edit_user_filter/models/ir_filters.py index 05925613c..141dcfa6f 100644 --- a/web_edit_user_filter/models/ir_filters.py +++ b/web_edit_user_filter/models/ir_filters.py @@ -5,19 +5,17 @@ from odoo import api, fields, models class IrFilters(models.Model): - _inherit = 'ir.filters' + _inherit = "ir.filters" facet = fields.Text() @api.model def get_filters(self, model, action_id=None): res = super().get_filters(model, action_id) - ids = map(lambda f: f['id'], res) + ids = map(lambda f: f["id"], res) # Browse filters that are in res filters = self.browse(ids) for i, res_filter in enumerate(res): # Add the field 'facet' to the result - res[i]['facet'] = filters.filtered( - lambda f: f.id == res_filter['id'] - ).facet + res[i]["facet"] = filters.filtered(lambda f: f.id == res_filter["id"]).facet return res diff --git a/web_edit_user_filter/static/src/js/backend.js b/web_edit_user_filter/static/src/js/backend.js index 3f5ab7244..63b451fa1 100644 --- a/web_edit_user_filter/static/src/js/backend.js +++ b/web_edit_user_filter/static/src/js/backend.js @@ -1,18 +1,16 @@ /* Copyright 2019 Onestein * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ -odoo.define('web_edit_user_filter', function (require) { +odoo.define("web_edit_user_filter", function (require) { "use strict"; - var FavoriteMenu = require('web.FavoriteMenu'), - core = require('web.core'), - SearchView = require('web.SearchView'); + var FavoriteMenu = require("web.FavoriteMenu"), + core = require("web.core"), + SearchView = require("web.SearchView"); var qweb = core.qweb; var _t = core._t; - FavoriteMenu.include({ - /** * Adds the facets data to the filter. * @@ -24,18 +22,21 @@ odoo.define('web_edit_user_filter', function (require) { this.query.each(function (facet) { var json_facet = facet.attributes; - json_facet.values = facet.get('values'); + json_facet.values = facet.get("values"); _.each(json_facet.values, function (value, i) { - if (typeof value.value === 'object' && value.value !== null && - 'attrs' in value.value) { + if ( + typeof value.value === "object" && + value.value !== null && + "attrs" in value.value + ) { json_facet.values[i] = { attrs: value.value.attrs, }; } }); - if ('field' in json_facet) { + if ("field" in json_facet) { json_facet.field = { attrs: json_facet.field.attrs, }; @@ -58,15 +59,17 @@ odoo.define('web_edit_user_filter', function (require) { var self = this; var res = this._super(filter); var key = this.key_for(filter); - this.$filters[key].append($('', { - class: 'fa fa-pencil o-edit-user-filter', - on: { - click: function (event) { - event.stopImmediatePropagation(); - self._unpackFilter(filter); + this.$filters[key].append( + $("", { + class: "fa fa-pencil o-edit-user-filter", + on: { + click: function (event) { + event.stopImmediatePropagation(); + self._unpackFilter(filter); + }, }, - }, - })); + }) + ); return res; }, @@ -83,58 +86,61 @@ odoo.define('web_edit_user_filter', function (require) { this.query.reset([]); _.each(facets, function (segment) { - if (segment.cat === 'groupByCategory') { + if (segment.cat === "groupByCategory") { _.each(segment.values, function (value) { - var groupBy = _.find( - self.searchview.groupbysMapping, - function (mapping) { - return mapping.groupby.attrs.context === value.attrs.context; - } - ); + var groupBy = _.find(self.searchview.groupbysMapping, function ( + mapping + ) { + return ( + mapping.groupby.attrs.context === value.attrs.context + ); + }); var eventData = { - category: 'groupByCategory', + category: "groupByCategory", itemId: groupBy.groupbyId, isActive: true, groupId: groupBy.groupId, }; - self.trigger_up('menu_item_toggled', eventData); + self.trigger_up("menu_item_toggled", eventData); }); - } else if (segment.cat === 'filterCategory') { + } else if (segment.cat === "filterCategory") { var new_filters = []; _.each(segment.values, function (value) { if (value.attrs.name) { var filterDomain = _.find( self.searchview.filtersMapping, function (mapping) { - return mapping.filter.attrs.name === value.attrs.name; + return ( + mapping.filter.attrs.name === value.attrs.name + ); } ); var eventData = { - category: 'filterCategory', + category: "filterCategory", itemId: filterDomain.filterId, isActive: true, groupId: filterDomain.groupId, }; - self.trigger_up('menu_item_toggled', eventData); + self.trigger_up("menu_item_toggled", eventData); } else { new_filters.push({ groupId: null, filter: { - tag: 'filter', - attrs: value.attrs + tag: "filter", + attrs: value.attrs, }, - itemId: _.uniqueId('__filter__') + itemId: _.uniqueId("__filter__"), }); } }); - self.trigger_up('new_filters', new_filters); + self.trigger_up("new_filters", new_filters); } else { - var search_widget = _.find( - self.searchview.search_fields, function (f) { - return f.attrs.name === segment.field.attrs.name; - } - ); + var search_widget = _.find(self.searchview.search_fields, function ( + f + ) { + return f.attrs.name === segment.field.attrs.name; + }); new_facets.push({ category: segment.category, field: search_widget, @@ -148,7 +154,6 @@ odoo.define('web_edit_user_filter', function (require) { }); SearchView.include({ - /** * Removes a value from a facet. * @@ -158,7 +163,7 @@ odoo.define('web_edit_user_filter', function (require) { */ _removeValue: function (model, value) { var toRemove = model.values.filter(function (v) { - if (typeof v.attributes.value === 'object') { + if (typeof v.attributes.value === "object") { return v.attributes.value.attrs.domain === value; } @@ -176,23 +181,25 @@ odoo.define('web_edit_user_filter', function (require) { */ _renderPopover: function ($facet, model) { var self = this; - var $content = $(qweb.render('web_edit_user_filter.Popover', { - values: model.get('values'), - })); + var $content = $( + qweb.render("web_edit_user_filter.Popover", { + values: model.get("values"), + }) + ); // Cannot use Widget.events here because renderFacets is // triggered apart from renderElement - $content.find('.list-group-item').click(function () { - self._removeValue(model, $(this).attr('data-value')); + $content.find(".list-group-item").click(function () { + self._removeValue(model, $(this).attr("data-value")); }); $facet.popover({ - title: _t('Edit Facet'), - template: qweb.render('web_edit_user_filter.PopoverTemplate'), + title: _t("Edit Facet"), + template: qweb.render("web_edit_user_filter.PopoverTemplate"), content: $content, container: this.$el, html: true, - trigger: 'manual', - placement: 'bottom', + trigger: "manual", + placement: "bottom", animation: false, }); }, @@ -203,7 +210,7 @@ odoo.define('web_edit_user_filter', function (require) { * @private */ _hidePopovers: function () { - this.$el.find('.popover').popover('hide'); + this.$el.find(".popover").popover("hide"); }, /** @@ -213,20 +220,22 @@ odoo.define('web_edit_user_filter', function (require) { var self = this; var res = this._super.apply(this, arguments); - this.$el.find('.o-edit-user-filter-popover').remove(); + this.$el.find(".o-edit-user-filter-popover").remove(); _.each(this.input_subviews, function (input_subview) { - if (!input_subview.model || - input_subview.model.attributes.is_custom_filter) { + if ( + !input_subview.model || + input_subview.model.attributes.is_custom_filter + ) { return; } - input_subview.$el.addClass('o-edit-user-filter-editable'); + input_subview.$el.addClass("o-edit-user-filter-editable"); self._renderPopover(input_subview.$el, input_subview.model); input_subview.$el.click(function () { self._hidePopovers(); - input_subview.$el.popover('show'); + input_subview.$el.popover("show"); }); }); return res; @@ -238,7 +247,7 @@ odoo.define('web_edit_user_filter', function (require) { start: function () { var self = this; var res = this._super.apply(this, arguments); - this._proxyHidePopovers = this.proxy('_hidePopovers'); + this._proxyHidePopovers = this.proxy("_hidePopovers"); $(document).click(this._proxyHidePopovers); return res; }, @@ -248,8 +257,8 @@ odoo.define('web_edit_user_filter', function (require) { */ destroy: function () { var res = this._super.apply(this, arguments); - $(document).unbind('click', this._proxyHidePopovers); + $(document).unbind("click", this._proxyHidePopovers); return res; - } + }, }); }); diff --git a/web_edit_user_filter/static/src/xml/backend.xml b/web_edit_user_filter/static/src/xml/backend.xml index 4863903ba..99b191540 100644 --- a/web_edit_user_filter/static/src/xml/backend.xml +++ b/web_edit_user_filter/static/src/xml/backend.xml @@ -1,16 +1,17 @@ - + - diff --git a/web_edit_user_filter/templates/assets.xml b/web_edit_user_filter/templates/assets.xml index 5ba1b305f..8d82c6abc 100644 --- a/web_edit_user_filter/templates/assets.xml +++ b/web_edit_user_filter/templates/assets.xml @@ -1,16 +1,17 @@ - + -