Hello Everyone,
i have created one JS widget and it is properly working on odoo 11, but in master[Odoo 12.0alpha1+e] it's show me a console error "Could not find client action MyWidget".
Bellow are the files. Please help me.
Thanks in advance..
(1) file entry using template:
<template id="qunit_suite" name="tournament widget tests" inherit_id="web.qunit_suite">
<xpath expr="//t[@t-set='head']" position="inside">
<script type="text/javascript" src="/tournament/static/tests/widget_tests.js"></script>
</xpath>
</template>
(2) manifest entry:
'qweb': [
'static/src/xml/widget.xml',
],
(3) tournament/static/src/js/widget.js :
odoo.define('tournament.widget', function(require) {
"use strict";
var Widget = require('web.Widget');
var core = require('web.core');
var myWidget = Widget.extend({
'template' : "Mytemplate",
events: {
'click .class_ex' : 'minus',
'click .class_ex1' : 'plus',
'click .class_ex3' : 'startt',
'click .class_ex4' : 'deleterow',
'click .class_ex5' : 'restart',
'click .class_ex6' : 'stop',
'click .class_ex7' : 'addrow',
},
init: function () {
this._super.apply(this, arguments);
this.myTimer = 0;
},
plus:function(){
var $input = this.$el.find("#textbox")
$input.val(parseInt($input.val())+1)
},
minus:function(){
var $input = this.$el.find("#textbox")
$input.val(parseInt($input.val())-1)
},
startt:function(event){
var $input = this.$el.find("#textbox");
this.myTimer = setInterval(setTime,1000);
function setTime(){
$input.val(parseInt($input.val())+1)
}
this.$el.find("#startt").hide();
this.$el.find("#plus").hide();
this.$el.find("#minus").hide();
this.$el.find("#stop").removeClass("hide");
this.$el.find("#restart").removeClass('hide');
},
restart:function(){
clearInterval(this.myTimer);
var $input = this.$el.find("#textbox");
$input.val(0)
this.$el.find("#restart").addClass("hide");
this.$el.find("#plus").show();
this.$el.find("#minus").show();
this.$el.find("#startt").show();
this.$el.find("#stop").addClass("hide");
},
stop:function(){
clearInterval(this.myTimer);
this.$el.find("#stop").addClass("hide");
this.$el.find("#startt").show();
},
addrow:function(event){
var temp = new myWidget();
temp.insertAfter($("#coppy"));
},
deleterow:function(event){
this.destroy();
},
});
var myWidget1 = Widget.extend({
'template' : "Mytemplate1",
events: {
'click .class_ex7' : 'addrow',
},
addrow:function(event){
var abc = new myWidget();
abc.insertAfter($("#mainWidget"));
},
})
core.action_registry.add('MyWidget', myWidget1);
return myWidget1;
});
(4) tournament/static/src/xml/widget.xml :
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<t t-name="Mytemplate">
<div id="mainn">
<center style="border:3px solid #e5e3e3;border-radius:10px;padding:10px;margin-bottom:10px;">
<input class="form-control" id="textbox" placeholder="Enter Number" value="0" /><br />
<button name="plus" id="plus" class="btn btn-primary class_ex1">+</button>
<button name="minus" id="minus" class="btn btn-primary class_ex" >-</button>
<button name="startt" id="startt" class="btn btn-primary class_ex3">Start</button>
<button name="stop" id="stop" class="hide btn btn-primary class_ex6">Stop</button>
<button name="restart" id="restart" class="hide btn btn-primary class_ex5">Restart</button>
<button name="delete" id="delete" class="btn btn-primary class_ex4">Delete</button>
</center>
</div>
<div id="coppy">
</div>
</t>
<t t-name="Mytemplate1">
<div id="mainWidget" style="margin-bottom:10px;">
<center>
<button name="addrow" id="addrow" class="btn btn-primary class_ex7">Add Row</button>
</center>
</div>
</t>
</templates>
(5) view file entry:
<record model="ir.actions.client" id="widget_action">
<field name="name">Widget</field>
<field name="tag">MyWidget</field>
<field name="target">new</field>
</record>
<menuitem name="Widget"
id="Widget_menu"
parent="tournament.tournament_root_menu"
action="widget_action" />