我正在尝试添加类似于HeaderButtonWidget
或StatusWidget
的自定义窗口小部件,但我还是无法做到:
我的第一次尝试:
odoo.define('my_module.pos', function(require) {
"use strict";
var chrome = require('point_of_sale.chrome');
var _t = core._t;
var _lt = core._lt;
...
var AltHeader = chrome.HeaderButtonWidget.extend({
template : 'AltHeader',
init: function(parent, options){
options = options || {};
this._super(parent, options);
this.action = options.action;
this.label = options.label;
},
renderElement: function(){
var self = this;
this._super();
},
button_click: function(){ console.log("its a hit") },
highlight: function(highlight){
this.$el.toggleClass('highlight',!!highlight);
},
});
但是这不起作用,并且Point_of_sale / static / src / js / screens.js的main方法没有返回HeaderButtonWidget,所以根据这个页面: http://odoo-development.readthedocs.io/en/latest/dev/pos/gui.html所以使用屏幕小部件扩展是不可能的,我该怎么做?
编辑: 以下是我的尝试:
odoo.define('pos_widget_toggler.pos', function (require) {
"use strict";
var PosBaseWidget = require('point_of_sale.BaseWidget');
var core = require('web.core');
var _t = core._t;
var _lt = core._lt;
var AltHeader = PosBaseWidget.extend({
template: 'AltHeader',
init: function(parent,options){
this._super(parent, options);
this.label = _lt('OFF');
this.action= function(){
// code will be here
} ;
},
});
return{
AltHeader:AltHeader
};
});
和pos_widget_toggler.xml
<templates id="pos_widget_toggler" inherit_id="point_of_sale.template" xml:space="preserve">
<t t-name="AltHeader">
<div class="oe_status">
<t t-esc="widget.label" />
</div>
</t>
</templates>
我仍然看不到任何东西,
答案 0 :(得分:1)
要创建新窗口小部件,
odoo.define('point_of_sale.chrome', function (require) {
"use strict";
var PosBaseWidget = require('point_of_sale.BaseWidget');
var AltHeader = PosBaseWidget.extend({
template: 'AltHeader',
init: function(parent, options){
//Your code
}
});
return{
AltHeader:AltHeader
};
});
<强> YOUR_CUSTOM_MODULE /静态/ SRC / XML / file.xml 强>
<t t-name="AltHeader">
<div class="oe_status">
// Your code
</div>
</t>
在清单中添加此模板文件。
<强> YOUR_CUSTOM_MODULE / __清单__。PY 强>
'qweb': ['static/src/xml/pos.xml'],
希望它会对你有所帮助。