zoukankan      html  css  js  c++  java
  • Odoo仪表盘详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826324.html

    一:仪表盘与看板的区别

        kanban:kanban是一种视图类型,卡片式视图。可以为某模型定义kanban视图,以卡片式进行展示、操作。

                     也可以自定义一个模型专门用来作为一个模块的看板视图,称之为“工作台”。如果模块中有多个模型,需要不同卡片来展示、操作,可以在自定义的kanban模型中定义一个类型字段,通过不同类型,来展示不同的卡片内容。

        仪表盘:仪表盘是odoo内置的一个模型,名为 board.board  。仪表盘模型类似于驾驶舱一样,可以在界面上加载、显示不同模型的特定视图,以某种排版方式在界面上显示。达到“全局监控、全局操作”的效果。

                    例如:

       

     

    二:仪表盘的使用

        仪表盘的模型不需要我们自己定义,我们只需要自己组装视图文件,决定我们想要的仪表盘视图要展示哪些模型的哪些视图、怎样排版展示即可。

        1:新建视图文件

            在模块的views目录下新建。

        2:编写文件内容,组装仪表盘界面

    <?xml version="1.0"?>
    <odoo>
        <data>
           <!--1:通过action打开一个模型的图形视图-->
            <record model="ir.actions.act_window" id="act_session_graph">
                <field name="name"></field>
                <field name="res_model">引用的模型</field>
                <field name="view_type">form</field>
                <field name="view_mode">graph</field>
                <field name="view_id"
                       ref="模型.被引用的视图元素的外部id"/>
            </record>
    
            <!--2:通过action打开日历视图-->
            <record model="ir.actions.act_window" id="act_session_calendar">
                <field name="name"></field>
                <field name="res_model">模型</field>
                <field name="view_type">form</field>
                <field name="view_mode">calendar</field>
                <field name="view_id" ref="模型.视图外部id"/>
            </record>
    
            <!--3:通过action打开模型列表/表单视图-->
            <record model="ir.actions.act_window" id="act_course_list">
                <field name="name">Courses</field>
                <field name="res_model">openacademy.course</field>
                <field name="view_type">form</field>
                <field name="view_mode">tree,form</field>
            </record>
    
           <!--上述action们都是仪表盘各项内容的来源-->
    
            <!--定义仪表板视图-->
            <record model="ir.ui.view" id="board_session_form">
                <field name="name">仪表板</field>
                <field name="model">board.board</field>
                <field name="type">form</field>
                <field name="arch" type="xml">
                    <form string="仪表盘">
                        <board style="2-1">//排版样式,有好几种样式:1,1-1,2-1和1-1-1,可以在界面上里面点击切换样式
                            <column>//仪表盘单元
                                <action
                                    string="表盘1"
                                    name="%(上面引入的视图id)d"
                                    height=""
                                    width=""/>
                                <action
                                    string="表盘2"
                                    name="%(上面引入的视图id)d"/>
                            </column>
                            <column>//第二列
                                <action
                                    string="表盘3"
                                    name="%(上面引入的视图id)d"/>
                                    ......
                            </column>
                        </board>
                    </form>
                </field>
            </record>
    
    
           <!--定义动作打开仪表板视图-->
            <record model="ir.actions.act_window" id="open_board">
              <field name="name">Dashboard</field>
              <field name="res_model">board.board</field>
              <field name="view_type">form</field>
              <field name="view_mode">form</field>
              <field name="usage">menu</field>
              <field name="view_id" ref="board_session_form"/>
            </record>
    
            <!--定义菜单项,打开仪表盘的action-->
            <menuitem
                name="仪表盘" parent=""
                action="open_board"
                sequence="1"
                id=""
                icon="terp-graph"/>
        </data>
    </odoo>

        3:在manifest中配置文件,使其被加载

    'depends': ['base', 'board'],
    
    'data': [
            ......
            'views/session_board.xml',
        ],

    三:怎么选择

        1:工作台的实现方式选择

        1)仪表盘

            缺点:自由度低。只能通过action调用各个模型的各种视图,单纯地在同一个页面陈列展示。不能作一些统计、加工处理后的效果展示。

            优点:能调用odoo原生的内容,例如graph、透视图、tree视图等。

        2)用kanban

            缺点:卡片内容要自己写,无法调用odoo原生的视图;卡片上要呈现的内容都需要自己定义、赋值。

            优点:自由度高。可以以某个模型为管理单元,制定看板视图,形成管理工作台。也可以自定义一个看板模型,根据不同类型,使卡片展现不同内容,以达到 “模块工作台”的效果。

                     还可以在卡片上,通过label展示一些统计信息;通过button快速跳转;通过柱形图、折线图展示某关键数据的历史变化。

        结论:工作台,使用kanban更好。

       

        2:驾驶舱的实现方式选择

        1)仪表盘

            缺点:自由度低。只能通过action调用各个模型的各种视图,单纯地在同一个页面陈列展示。不能作一些统计、加工处理后的效果展示。

            优点:能调用odoo原生的内容,特别是透视图和图表,可以实现  多维分析驾驶舱

        2)自由前端

            缺点:内容要自己定义,数据来源要自己书写、提供。

            优点:自由度高,通过前端技术,可以集成各种优秀、炫酷的前端控件,达到最优的展示效果。可以实现“管理驾驶舱”。

        结论:报表模块,可以使用仪表盘实现多维分析驾驶舱,把多维分析在一个界面显示。

                 项目驾驶舱模块,使用前端技术,为领导层提供一些加工、处理过的统计结果数据,进行可视化呈现。

  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/ygj0930/p/10826324.html
Copyright © 2011-2022 走看看