Odoo自定义引入echart页面

第一步: 创建客户端动作并直接绑定在根目录上

views/home_view.xml

<?xml version="1.0"?>

<odoo>

    <data>

        <!--定义客户端动作-->

        <record id="action_echarts_china" model="ir.actions.client">

            <field name="name">Echarts</field>

            <field name="tag">load_echarts.load_echarts_china</field>

        </record>

        <!--根菜单绑定动作-->

        <menuitem id="menu_echarts_china" name="Echarts" action="action_echarts_china" sequence="1"/>

    </data>

</odoo>

第二步:准备好模板

static/src/xml/load_echarts.xml

<?xml version='1.0' encoding='UTF-8'?>

<templates id='template' xml:space='preserve'>

    <t t-name="echarts_china_template">

        // t标签内写入echarts的代码

        <div id="main" style="width:1100px;height: 800px;"></div>

        <script....>

    </t>

</templates>

第三步: 注册客户端动作打开准备好的模板

static/src/js/load_echarts.js

odoo.define('load_echarts', function (require) {

    "use strict";

    var core = require('web.core');

    var Widget = require('web.Widget');

    // 定义打开模板

    var Echarts = Widget.extend({

        // 模板名称 对应上面xml中t-name

        template: 'echarts_china_template',

        init: function(parent, data){

            return this._super.apply(this, arguments);

        },

        start: function(){

            return true;

        },

    });

    // 将上面定义的打开模板注册成客户端动作 动作名对应client_action中的tag

    core.action_registry.add('load_echarts.load_echarts_china', Echarts);

})

第四步:将注册动作的js和需要用到的js库加入到odoo中

views/include_js.xml

<?xml version="1.0"?>

<odoo>

    <data>

         <template id="load_echarts" name="load_echarts" inherit_id="web.assets_backend">

            <xpath expr="." position="inside">

                // echarts

                <script type="text/javascript" src="/load_echarts/static/src/js/echarts.min.js"></script>

                // echarts使用中国地图所需的js

                <script type="text/javascript" src="/load_echarts/static/src/js/china.js"></script>

                // 上面注册动作的js

                <script type="text/javascript" src="/load_echarts/static/src/js/load_echarts.js"></script>

            </xpath>

        </template>

    </data>

</odoo>

最后记得将所有xml文件写入manifest中

注意xml模板是放在qweb项中

{

    'name': '引入echarts',

    'version': '10.1.0',

    'description': '',

    'author': 'grey27',

    'data': [

        'views/include_js.xml',

        'views/home_view.xml',

    ],

    'qweb': ['static/src/xml/load_echarts.xml'],

}

最终效果

在根菜单栏上直接可以打开echarts

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Odoo自定义 Widgets 可以帮助我们在页面上添加自定义的 HTML 元素和 JavaScript 代码。下面是一个基础教程,介绍如何创建自定义 Widgets。 1. 创建一个模块 首先,我们需要创建一个新的模块。在 Odoo 中,所有的自定义组件都应该包含在一个模块中。 2. 创建一个 Widgets 类 接下来,我们需要创建一个 Widgets 类。Widgets 类用于创建自定义的 HTML 元素和 JavaScript 代码。下面是一个简单的例子: ```python odoo.define('my_module.my_widget', function(require) { 'use strict'; var core = require('web.core'); var Widget = require('web.Widget'); var MyWidget = Widget.extend({ template: 'my_module.my_widget_template', init: function(parent, options) { this._super(parent, options); }, start: function() { this._super(); } }); return MyWidget; }); ``` 在这个例子中,我们创建了一个叫做 `MyWidget` 的类,并继承了 `Widget` 类。我们还设置了一个 `template` 属性,用于指定要使用的模板文件。 3. 创建一个模板文件 接下来,我们需要创建一个模板文件,用于定义我们的自定义 HTML 元素。这个模板文件应该包含在模块的 `static/src/xml` 目录下。下面是一个简单的例子: ```xml <template id="my_module.my_widget_template"> <div class="my-widget"> <h1>My Widget</h1> <p>This is my custom widget!</p> </div> </template> ``` 在这个例子中,我们定义了一个名为 `my_module.my_widget_template` 的模板,它包含一个 `div` 元素和一些文本。 4. 注册我们的 Widgets 类 最后,我们需要在模块中注册我们的 Widgets 类。这样,我们的自定义组件才能被正确地加载。下面是一个简单的例子: ```python odoo.define('my_module', function(require) { 'use strict'; var MyWidget = require('my_module.my_widget'); core.action_registry.add('my_module.my_widget', MyWidget); return { MyWidget: MyWidget }; }); ``` 在这个例子中,我们将 `MyWidget` 类添加到 `action_registry` 中,以便它可以被其他地方使用。 现在,我们已经成功地创建了一个自定义的 Widgets。我们可以在 Odoo 中使用它来添加我们想要的自定义 HTML 元素和 JavaScript 代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值