From 860602b26ea28dd42f6231f83438d6c7f7c2d3fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Fri, 28 Sep 2018 18:47:55 +0200 Subject: [PATCH] [FIX] website_sale_comparison: fix BS4 bugs This commit closes #27308 task-1880762 --- .../static/src/js/website_sale_comparison.js | 34 +++++++++---------- .../static/src/xml/comparison.xml | 8 +++++ .../website_sale_comparison_template.xml | 12 +++---- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/addons/website_sale_comparison/static/src/js/website_sale_comparison.js b/addons/website_sale_comparison/static/src/js/website_sale_comparison.js index 40d750da293..80b24aaa9bb 100644 --- a/addons/website_sale_comparison/static/src/js/website_sale_comparison.js +++ b/addons/website_sale_comparison/static/src/js/website_sale_comparison.js @@ -7,6 +7,7 @@ var Widget = require('web.Widget'); var sAnimations = require('website.content.snippets.animation'); var website_sale_utils = require('website_sale.utils'); +var qweb = core.qweb; var _t = core._t; var ProductComparison = Widget.extend({ @@ -32,13 +33,11 @@ var ProductComparison = Widget.extend({ */ start: function () { var self = this; + self._loadProducts(this.comparelist_product_ids).then(function () { - self._updateContent(self.comparelist_product_ids, true); - if (self.comparelist_product_ids.length) { - $('.o_product_feature_panel').addClass('d-md-block'); - self._updateComparelistView(); - } + self._updateContent('hide'); }); + self._updateComparelistView(); $('#comparelist .o_product_panel_header').popover({ trigger: 'manual', @@ -49,13 +48,14 @@ var ProductComparison = Widget.extend({ }, container: '.o_product_feature_panel', placement: 'top', - template: '', + template: qweb.render('popover'), content: function () { return $('#comparelist .o_product_panel_content').html(); } }); $(document.body).on('click.product_comparaison_widget', '.comparator-popover .o_comparelist_products .o_remove', function (ev) { + ev.preventDefault(); self._removeFromComparelist(ev); }); $(document.body).on('click.product_comparaison_widget', '.o_comparelist_remove', function (ev) { @@ -140,10 +140,10 @@ var ProductComparison = Widget.extend({ if (!_.contains(self.comparelist_product_ids, product_id)) { self.comparelist_product_ids.push(product_id); if (_.has(self.product_data, product_id)){ - self._updateContent([product_id], false); + self._updateContent(); } else { self._loadProducts([product_id]).then(function () { - self._updateContent([product_id], false); + self._updateContent(); }); } } @@ -152,18 +152,19 @@ var ProductComparison = Widget.extend({ /** * @private */ - _updateContent: function (product_ids, reset) { + _updateContent: function (force) { var self = this; - if (reset) { - self.$('.o_comparelist_products .o_product_row').remove(); - } - _.each(product_ids, function (res) { + this.$('.o_comparelist_products .o_product_row').remove(); + _.each(this.comparelist_product_ids, function (res) { var $template = self.product_data[res].render; self.$('.o_comparelist_products').append($template); }); - if ($('.comparator-popover').length) { + if (force !== 'hide' && (this.comparelist_product_ids.length > 1 || force === 'show')) { $('#comparelist .o_product_panel_header').popover('show'); } + else { + $('#comparelist .o_product_panel_header').popover('hide'); + } }, /** * @private @@ -173,8 +174,7 @@ var ProductComparison = Widget.extend({ $(e.currentTarget).parents('.o_product_row').remove(); this._updateCookie(); $('.o_comparelist_limit_warning').hide(); - // force refresh to reposition popover - this._updateContent(this.comparelist_product_ids, true); + this._updateContent('show'); }, /** * @private @@ -191,8 +191,8 @@ var ProductComparison = Widget.extend({ this.$('.o_comparelist_button').removeClass('d-md-block'); if (_.isEmpty(this.comparelist_product_ids)) { $('.o_product_feature_panel').removeClass('d-md-block'); - this._togglePanel(); } else { + $('.o_product_feature_panel').addClass('d-md-block'); this.$('.o_comparelist_products').addClass('d-md-block'); if (this.comparelist_product_ids.length >=2) { this.$('.o_comparelist_button').addClass('d-md-block'); diff --git a/addons/website_sale_comparison/static/src/xml/comparison.xml b/addons/website_sale_comparison/static/src/xml/comparison.xml index f3eca962374..e8d6c8db753 100644 --- a/addons/website_sale_comparison/static/src/xml/comparison.xml +++ b/addons/website_sale_comparison/static/src/xml/comparison.xml @@ -24,4 +24,12 @@ + +