diff options
| author | Parth Gajjar <pga@openerp.com> | 2017-08-30 11:42:05 +0530 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-08-31 14:09:32 +0200 |
| commit | b6ef149b0d913985a0c7e9b56c56e002329f15f3 (patch) | |
| tree | e6c7220fbf75aa6f7620b0527ba3651bda7b1418 /addons/web/static/src/js/fields | |
| parent | db546a3880474f1719d1e256aeaa30143f2cdc49 (diff) | |
[IMP] web: filter when clicking on tags in Kanban
This commit adds a feature to the widget Many2ManyTags for kanban
views. When a tag is clicked, records are filtered on the given
tag, in addition to the active filters in the search view.
Diffstat (limited to 'addons/web/static/src/js/fields')
| -rw-r--r-- | addons/web/static/src/js/fields/relational_fields.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index f396699bc3d..d70071b2fec 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -1656,6 +1656,18 @@ var FormFieldMany2ManyTags = FieldMany2ManyTags.extend({ }); var KanbanFieldMany2ManyTags = FieldMany2ManyTags.extend({ + events: _.extend({}, FieldMany2ManyTags.prototype.events, { + 'click .o_tag': '_onTagClicked', + }), + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @override + * @private + */ _render: function () { var self = this; this.$el.empty().addClass('o_field_many2manytags o_kanban_tags'); @@ -1670,6 +1682,7 @@ var KanbanFieldMany2ManyTags = FieldMany2ManyTags.extend({ $tag.hide(); } else { $tag.addClass('o_tag o_tag_color_' + m2m.data[self.colorField]); + $tag.data('res_id', m2m.res_id); } } else { // display tags in grey by default @@ -1677,6 +1690,24 @@ var KanbanFieldMany2ManyTags = FieldMany2ManyTags.extend({ } }); }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @private + * @param {MouseEvent} e + */ + _onTagClicked: function (e) { + var resID = $(e.currentTarget).data('res_id'); + var record = _.findWhere(this.value.data, {res_id: resID}); + var displayName = record.data.display_name; + this.trigger_up('add_filter', { + domain: "[['" + this.name + "','=','" + displayName + "']]", + help: displayName, + }); + } }); var FieldMany2ManyCheckBoxes = AbstractField.extend({ |
