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

Я хочу показать поповер в определенном столбце строки заказа на продажу, как показано на первом скриншоте здесь: 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 (), или я что-то упускаю, не могли бы вы просветить меня по этому вопросу, спасибо

...