Odoo 从9开始就取消了甘特图(Gantt)视图,据称是因为所使用的库dhtmlxgantt所采用的开放协议与 Odoo 不兼容(说人话就是要付费),因而在社区版中不再包含。Alan在刚接触 Odoo 时觉得这个功能以及 Workflow 在新版中的去除都非常可惜。
那么作为调包侠的我们是否有替代方案呢?其实 OCA 早就添加了一个免费的 Timeline 视图用于弥补这一损失,下载地址见官方的第三方应用市场:Web timeline。
关于应用的下载和安排此处就不再赘述,先上图:
要在 Project中实现以上效果,需要对该 addon 进行一些修改:
addons/project/views/project_views.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<record id="view_task_timeline" model="ir.ui.view"> <field name="model">project.task</field> <field name="type">timeline</field> <field name="arch" type="xml"> <timeline date_start="date_start" date_stop="date_deadline" string="Tasks" default_group_by="user_id" event_open_popup="true" zoomKey="ctrlKey" colors="#ec7063:user_id == false;#2ecb71:kanban_state=='done';" dependency_arrow="task_dependency_ids"> <field name="user_id"/> <templates> <div t-name="timeline-item"> <div t-esc="record.display_name"/> Assigned to: <span t-esc="record.user_id[1]"/> </div> </templates> </timeline> </field> </record> <record id="action_view_task" model="ir.actions.act_window"> .... <field name="view_mode">kanban,tree,form,calendar,pivot,graph,timeline</field> .... |
以上分别使用了date_start和date_deadline字段作为 Timeline 中的开始和结束时间,考虑编辑的便利性,还应同时在 form 视图中添加date_start的编辑功能(由于 date_start 的数据类型是 datetime,所以这里添加了一个widget=”date”):
1 2 3 4 5 6 7 8 9 |
<!-- Task --> <record id="view_task_form2" model="ir.ui.view"> ... <group> <field name="date_start" widget="date"/> <field name="date_deadline"/> <field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/> </group> ... |
效果如下:
注:本方法在 Odoo 其它版本中应该同样适用
补充:建议使用单独模块进行设置,这样在更新 Odoo 代码时不会被覆盖或出现其它问题
测试环境:Odoo 12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# 在自定义addons 文件夹下操作 mkdir alan_addon vim alan_addon/__manifest__.py { 'name':'Alan Custom', 'description':'Custom settings by Alan', 'depends':['web_timeline','project'], 'data':[ 'views/timeline.xml' ], } touch alan_addon/__init__.py mkdir alan_addon/views vim alan_addon/views/timeline.xml <?xml version="1.0" encoding="utf-8"?> <odoo> <record id="view_task_timeline" model="ir.ui.view"> <field name="model">project.task</field> <field name="type">timeline</field> <field name="arch" type="xml"> <timeline date_start="date_start" date_stop="date_end" string="Tasks" default_group_by="user_id" event_open_popup="true" zoomKey="ctrlKey" colors="#ec7063:user_id == false;#2ecb71:kanban_state=='done';" dependency_arrow="task_dependency_ids"> <field name="user_id"/> <templates> <div t-name="timeline-item"> <div t-esc="record.display_name"/> Assigned to: <span t-esc="record.user_id[1]"/> </div> </templates> </timeline> </field> </record> <record id="project.action_view_task" model="ir.actions.act_window"> <field name="view_mode">kanban,tree,form,calendar,timeline,graph</field> </record> </odoo> |