轉載請注明原文地址: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)自由前端
缺點:內容要自己定義,數據來源要自己書寫、提供。
優點:自由度高,通過前端技術,可以集成各種優秀、炫酷的前端控件,達到最優的展示效果。可以實現“管理駕駛艙”。