diff options
Diffstat (limited to 'addons/web/static/src/js/control_panel/comparison_menu.js')
| -rw-r--r-- | addons/web/static/src/js/control_panel/comparison_menu.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/addons/web/static/src/js/control_panel/comparison_menu.js b/addons/web/static/src/js/control_panel/comparison_menu.js new file mode 100644 index 00000000..dee1c982 --- /dev/null +++ b/addons/web/static/src/js/control_panel/comparison_menu.js @@ -0,0 +1,63 @@ +odoo.define("web.ComparisonMenu", function (require) { + "use strict"; + + const DropdownMenu = require("web.DropdownMenu"); + const { FACET_ICONS } = require("web.searchUtils"); + const { useModel } = require("web/static/src/js/model.js"); + + /** + * "Comparison" menu + * + * Displays a set of comparison options related to the currently selected + * date filters. + * @extends DropdownMenu + */ + class ComparisonMenu extends DropdownMenu { + constructor() { + super(...arguments); + this.model = useModel('searchModel'); + } + + //--------------------------------------------------------------------- + // Getters + //--------------------------------------------------------------------- + + /** + * @override + */ + get icon() { + return FACET_ICONS.comparison; + } + + /** + * @override + */ + get items() { + return this.model.get('filters', f => f.type === 'comparison'); + } + + /** + * @override + */ + get title() { + return this.env._t("Comparison"); + } + + //--------------------------------------------------------------------- + // Handlers + //--------------------------------------------------------------------- + + /** + * @private + * @param {OwlEvent} ev + */ + _onItemSelected(ev) { + ev.stopPropagation(); + const { item } = ev.detail; + this.model.dispatch("toggleComparison", item.id); + } + + } + + return ComparisonMenu; +}); |
