Kanban View di Odoo adalah salah satu tampilan yang digunakan untuk menampilkan data dalam bentuk kartu (cards) yang dikelompokkan berdasarkan status atau kategori tertentu. Tampilan ini sangat berguna untuk manajemen tugas, proyek, pipeline penjualan, dan alur kerja lainnya yang berbasis tahapan.
Di Odoo 18, Kanban View mendapatkan beberapa peningkatan dalam hal performa dan fleksibilitas dalam penyesuaian tampilan.
Struktur Dasar Kanban View
Kanban View dalam Odoo didefinisikan dalam file XML dengan menggunakan tag <kanban>
di dalam elemen <record>
dari model ir.ui.view
.
Contoh Dasar Kanban View
Berikut adalah contoh bagaimana membuat Kanban View untuk model project.task
:
<odoo>
<record id="view_task_kanban" model="ir.ui.view">
<field name="name">project.task.kanban.view</field>
<field name="model">project.task</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id" class="o_kanban_small_column">
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<field name="name" class="o_kanban_record_title"/>
<field name="user_id" class="o_text_color"/>
</div>
</t>
</templates>
</kanban>
</field>
</record>
</odoo>
Penjelasan Kode
<kanban default_group_by="stage_id">
→ Mengelompokkan kartu berdasarkan fieldstage_id
.<templates>
→ Berisi template tampilan untuk setiap kartu di Kanban.<t t-name="kanban-box">
→ Template utama untuk menampilkan elemen kartu.<field name="name" class="o_kanban_record_title"/>
→ Menampilkan nama tugas.<field name="user_id" class="o_text_color"/>
→ Menampilkan pengguna yang bertanggung jawab atas tugas.
Menambahkan Action Button di Kanban View
Kita bisa menambahkan tombol tindakan (action buttons) dalam tampilan Kanban. Berikut contoh menambahkan tombol "Selesai" untuk menyelesaikan tugas:
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<field name="name" class="o_kanban_record_title"/>
<field name="user_id" class="o_text_color"/>
<button type="object" name="action_mark_done" class="btn btn-primary" string="Selesai"/>
</div>
</t>
Lalu, dalam model Python, kita tambahkan metode untuk menangani tombol ini:
from odoo import models, fields, api
class ProjectTask(models.Model):
_inherit = 'project.task'
def action_mark_done(self):
for record in self:
record.stage_id = self.env.ref('project.project_stage_done').id
Penjelasan:
button type="object" name="action_mark_done"
→ Memanggil metodeaction_mark_done
di model.- Metode
action_mark_done
→ Mengubah status tugas menjadi "Selesai" dengan mengubahstage_id
.
Menampilkan Gambar atau Ikon di Kanban View
Kita bisa menampilkan gambar atau ikon dalam Kanban View menggunakan field image_1920
.
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<img t-if="record.image_1920.raw" t-att-src="'/web/image/' + str(record.id) + '/image_1920'" class="o_kanban_image"/>
<field name="name" class="o_kanban_record_title"/>
</div>
</t>
Penjelasan:
<img t-att-src="'/web/image/' + str(record.id) + '/image_1920'"/>
→ Menampilkan gambar dari fieldimage_1920
jika tersedia.
Menambahkan Drag & Drop pada Kanban View
Salah satu fitur utama Kanban View di Odoo adalah kemampuan drag & drop untuk memindahkan kartu antar kolom. Ini terjadi secara otomatis jika model memiliki field Many2one yang digunakan untuk pengelompokan (group_by
).
Jika kita ingin memastikan fitur ini berfungsi, pastikan field stage_id
memiliki properti ondelete='restrict'
untuk menghindari masalah referensial:
class ProjectTask(models.Model):
_inherit = 'project.task'
stage_id = fields.Many2one('project.task.type', string="Stage", ondelete='restrict')
Dengan ini, pengguna bisa dengan mudah memindahkan tugas ke tahap yang berbeda dengan drag & drop.
Kesimpulan
Kanban View di Odoo 18 memberikan tampilan yang menarik dan fungsional untuk mengelola data berbasis status atau tahapan. Dengan fitur-fitur seperti:
- ✅ Grouping otomatis berdasarkan field tertentu
- ✅ Dukungan drag & drop untuk perpindahan antar tahap
- ✅ Kemampuan menambahkan tombol action langsung dalam kartu
- ✅ Dukungan tampilan gambar dan ikon
Kanban View menjadi salah satu tampilan yang sangat bermanfaat untuk meningkatkan efisiensi dalam mengelola tugas dan proses bisnis.
Semoga artikel ini membantu!