Как добавить поповер в определенном столбце строки заказа на продажу, в представлении xml? Используя One2ManyListView JS наследование?

Я хочу показать всплывающее окно в определенном столбце строки заказа на продажу, как показано на первом снимке экрана здесь: https://ibb.co/n0FP1Jf

Я попытался показать всплывающее окно, унаследовав класс Javascript FieldOne2Many и One2ManyListView, этот трюк работает с наследованием FormView, но тот же код не работает с One2ManyListView, как показано в коде и на снимке экрана ниже:

КОД, РАБОТАЮЩИЙ С "FormView":

odoo.define("saleorderline_on_hover.ListView", function (require) {
"use strict";

    var ListView = require("web.ListView");
    var KanbanView = require("web_kanban.KanbanView");
    var FormView = require("web.FormView");
    var instance = openerp;
    var core = require('web.core');

    FormView.include({
        do_show: function () {
            if (this.dataset.model == 'sale.order'){
                this.$el.find('tr').popover(
                    {
                        'content': function(e){
                            return '<p>SHOW INFORMATION HERE</p>'
                        },
                        'html': true,
                        'placement':  function(c,s){
                            return $(s).position().top < 200?'bottom':'top'
                        },
                        'trigger': 'hover',
                    });
            }
            return this._super();
        }
    });
});

Результатом этого кода является Popover, показанный на скриншоте здесь: https://ibb.co/r7bxSzq

Тот же код не работает с "FieldOne2Many" и "One2ManyListView":

odoo.define("saleorderline_on_hover.ListView", function (require) {
"use strict";

    var ListView = require("web.ListView");
    var KanbanView = require("web_kanban.KanbanView");
    var FormView = require("web.FormView");
    var instance = openerp;
    var core = require('web.core');
        var FieldOne2Many = core.form_widget_registry.get('one2many');

    FieldOne2Many.include({
        init: function() {
        this._super.apply(this, arguments);
        var One2ManyListView = this.x2many_views.list;
        One2ManyListView.include({
        do_show: function () {
        this.x2m.$el.find('tr').popover({'content': function(e){
              return '<p>SHOW INFORMATION HERE</p>'},
                  'html': true,
                        'placement':  function(c,s){
                            return $(s).position().top < 200?'bottom':'top'
                        },
                        'trigger': 'hover',
                    });
            }
            return this._super();}
         });
       }
    });
 });

Проблема здесь в том, что я не могу найти элемент "tr" или "td" в "this.x2m.$ El" по методу.find(), или я что-то упускаю, не могли бы вы просветить меня по этому вопросу, Спасибо

0 ответов

Другие вопросы по тегам