Redmine Dashboards
DashboardsDashboard yang dibangun dari kueri tersimpan yang sudah Anda miliki — grid drag-and-drop berisi tile KPI, tabel, dan lima belas jenis grafik, diagregasi di SQL dan dibatasi pada apa yang boleh dilihat oleh orang yang membukanya.
Banyak server: $399

- Jenis widget
- 23
- Varian grafik
- 15
- Redmine
- 4 · 5 · 6 · 7
- Database
- MySQL, MariaDB, PostgreSQL
- Patch inti
- Tidak ada
Builder drag-and-drop
Grid yang dapat diubah ukuran dan urutannya serta tersimpan otomatis saat Anda bekerja. Atur KPI, grafik, dan tabel hingga dashboard menyampaikan cerita yang Anda butuhkan — tanpa file layout, tanpa memuat ulang halaman.
Lima belas jenis grafik
Batang, horizontal, bertumpuk, garis, multi-garis, area, pie, donat, radar, polar, gauge, funnel, heatmap, treemap, dan cincin progres — digambar dengan Apache ECharts, dalam mode terang dan gelap.
Kueri tersimpan Anda, divisualisasikan
Arahkan widget ke kueri tersimpan dan widget itu mewarisi filternya — termasuk field kustom, pemantau, dan subproyek. Atau ubah kueri menjadi dashboard utuh dengan satu klik.
Diagregasi di SQL
GROUP BY, COUNT, SUM, dan AVG dijalankan di database, sehingga seratus ribu isu dihitung tanpa perlu dimuat satu per satu. Hasil di-cache per pengguna, widget, dan filter aktif.
Dibatasi sesuai hak pengguna
Setiap pembacaan dimulai dari Issue.visible(user), TimeEntry.visible(user), dan Query.visible(user), sehingga tidak ada grafik yang menjumlahkan data proyek yang tidak diikuti oleh orang yang melihatnya.
Filter, refresh, dan drill-down
Satu bilah filter mengubah cakupan seluruh dashboard, interval per dashboard menjaga layar dinding tetap terkini, dan setiap batang, irisan, dan sel dapat diklik untuk membuka daftar isu di baliknya.
Lihat langsung di dalam Redmine
Setiap tangkapan layar di sini berasal dari instalasi Redmine 6 standar dengan plugin yang cukup ditaruh di plugins/. Dashboard berada di bawah header dan menu Redmine sendiri, karena memang di sanalah dashboard berjalan.
Susun dashboard


Widget


Bagikan dan beralih


Kuerinya sudah menjadi laporan
Tidak ada yang meminta Anda mendeskripsikan data untuk kedua kalinya. Filter daftar isu seperti biasa, simpan, dan kueri tersimpan itu menjadi cakupan yang diagregasi oleh widget — relasi yang sama yang digunakan Redmine untuk menampilkan daftar itu sendiri.
| Langkah | Yang Anda lakukan | Yang Anda dapatkan |
|---|---|---|
| 1. Simpan kueri | Filter daftar isu — field kustom, pemantau, subproyek — lalu klik Simpan | Kueri bernama, dibagikan kepada siapa pun yang Anda pilih |
| 2. Arahkan widget ke kueri itu | Pilih kueri tersebut di dialog widget | Sumber data dan pengelompokan default yang masuk akal, ditentukan untuk Anda |
| 3. Atau buat seluruh dashboard | Klik Dari kueri | Dashboard berisi tile KPI dan grafik yang terikat pada kueri itu, dalam satu permintaan |
Dikonfigurasi dari dropdown, bukan SQL
Widget terdiri dari sumber, dimensi, ukuran, dan agregasi. Kelompokkan isu berdasarkan status, prioritas, pelacak, penerima tugas, atau field tanggal apa pun yang dibagi per hari, minggu, bulan, atau tahun; hitung jumlahnya, jumlahkan perkiraan jam, atau rata-ratakan persentase selesai. Tidak ada anggota tim yang perlu menulis SQL untuk mendapatkan grafik — dan karena tidak ada SQL yang ditulis, tidak ada kueri yang dapat menembus izin orang yang membacanya.

Konfigurasikan setiap widget dari satu formulir
Setiap widget, baik KPI, batang, maupun donat, diatur dalam formulir singkat yang sama: judul dan jenis, sumber data, kueri tersimpan opsional untuk filter, ukuran, serta pengelompokan dengan Top-N. Ubah jenisnya dan formulir menyesuaikan diri.




Satu halaman pengaturan untuk admin
Di Administrasi › Plugin › Redmine Charts Anda mengatur caching hasil per pengguna, TTL cache (5–86400 detik, default 300), tema default terang atau gelap, dan interval refresh otomatis default, dengan 0 untuk menonaktifkannya. Halaman ini adalah layar pengaturan plugin milik Redmine sendiri.
23 jenis widget, dan ruang untuk milik Anda
Setiap jenis berupa metadata berbasis registry, sehingga UI konfigurasi terbentuk sendiri dari deklarasi widget itu, bukan dari formulir yang ditulis manual per grafik.
| Kelompok | Jenis | Dikonfigurasi dengan |
|---|---|---|
| Grafik | Batang, batang horizontal, batang bertumpuk, garis, multi-garis, area, pie, donat, radar, polar, gauge, funnel, heatmap, treemap, cincin progres | Sumber, dimensi, ukuran, agregasi |
| KPI / angka | Satu angka teragregasi dengan filternya sendiri | count · sum · avg · min · max |
| Tabel | Grid berhalaman atas data yang sama yang dibatasi sesuai izin | Pemilih kolom dan filter |
| Konten | Markdown, catatan, HTML, iframe, feed aktivitas, isu terbaru | Teks bebas, atau salah satu feed milik Redmine |
Digambar dengan Apache ECharts
Lima belas varian, bertema terang dan gelap, digambar ulang saat ukuran berubah dan tetap terbaca di layar dinding. Bundle sudah di-build sebelumnya di dalam paket, sehingga instalasi plugin tidak memerlukan Node maupun langkah build.
Setiap segmen dapat di-drill-down
Mengklik batang, irisan, atau sel heatmap membuka daftar isu Redmine yang difilter tepat pada isu-isu tersebut. Angkanya tetap dapat diaudit, karena Anda selalu bisa melihat baris di baliknya.
Filter global dan refresh otomatis
Satu bilah filter mengubah cakupan setiap widget di dashboard sekaligus, dan interval refresh per dashboard menjaga layar di lorong tetap terkini. Nilai nol menonaktifkan refresh.
Template dan blueprint
Simpan dashboard sebagai template yang dapat digunakan ulang, duplikasi per tim, atau ekspor sebagai blueprint JSON dan impor ke instans lain — dari staging ke produksi tanpa membangunnya ulang secara manual.
Satu plugin, satu dashboard untuk setiap tim
Seorang delivery lead, tim support desk, dan seorang developer masing-masing membuat dashboard ini dalam hitungan menit dari kueri tersimpan yang sudah mereka miliki.





Dua sumber bawaan, dan sumber Anda di sampingnya
Isu dan catatan waktu sudah dilengkapi dimensi dan ukuran yang terdaftar sejak awal, keduanya berada di balik cakupan visibilitas Redmine sendiri. Sumber yang ditambahkan oleh plugin lain diperlakukan sama persis.
| Sumber | Dimensi | Ukuran |
|---|---|---|
| Isu | Status, prioritas, pelacak, proyek, penerima tugas, pembuat, kategori, versi, dibuat, diperbarui, tanggal jatuh tempo | Jumlah isu, perkiraan jam, persentase selesai |
| Catatan waktu | Proyek, pengguna, kegiatan, tanggal pengerjaan | Jam, jumlah catatan |
| Milik Anda sendiri | Apa pun yang Anda daftarkan | Apa pun yang Anda daftarkan |
Memperluas berarti mendaftarkan, bukan mem-patch
Sumber data adalah class dengan nama, dimensi, ukuran, dan base_scope yang dibatasi sesuai izin; jenis widget adalah sebuah hash. Daftarkan salah satunya dari init.rb plugin Anda sendiri dengan RedmineCharts.register_data_source atau register_widget_type, dan ia langsung muncul di UI konfigurasi — mewarisi filter, caching, dan drill-down. Tidak ada bagian plugin ini yang perlu diedit agar itu berfungsi.
Tidak ada yang bisa mengagregasi data yang tidak boleh dibacanya
Dashboard adalah cara cepat untuk membocorkan angka, sehingga setiap pembacaan dimulai dari cakupan milik pengguna yang melihat, bukan diakhiri dengan pemeriksaan terhadapnya.
Visibilitas dulu, pengelompokan kemudian
Issue.visible(user), TimeEntry.visible(user), dan Query.visible(user) membatasi relasi sebelum satu baris pun dihitung. Total dari proyek yang tidak Anda ikuti tidak dapat muncul di widget mana pun, karena baris-baris itu tidak pernah ada dalam himpunannya.
Empat izin terperinci
Melihat dashboard, membuatnya, mengelola semuanya, mengelola template — masing-masing dapat diberikan per peran. Dan semuanya tetap nonaktif hingga seseorang mengaktifkan modul Charts & Dashboards untuk proyek tersebut.
Berbagi melalui keanggotaan
Berikan akses dashboard kepada pengguna, kelompok, peran, atau seluruh proyek. Setiap permintaan menentukan ulang viewable_by? dan editable_by? melalui keanggotaan Redmine sendiri, bukan melalui daftar akses paralel yang lama-kelamaan tidak sinkron.
Tidak ada data yang keluar dari server
Frontend hanya berkomunikasi dengan API JSON plugin ini di Redmine Anda sendiri, melalui sesi dan token CSRF yang sudah ada. Tanpa layanan eksternal, tanpa pemeriksaan lisensi ke server luar, tanpa telemetri.
Dibangun untuk instans berskala besar
Menghitung seratus ribu isu tidak seharusnya berarti memuat seratus ribu objek. Di sini memang tidak.
| Aspek | Cara penanganannya |
|---|---|
| Agregasi | GROUP BY, COUNT, SUM, dan AVG dijalankan di SQL — baris tidak pernah dimuat sebagai objek hanya untuk dihitung |
| Dimensi yang lebar | Pelipatan Top-N menjaga payload tetap kecil saat sebuah dimensi memiliki ribuan nilai |
| Tampilan berulang | Hasil di-cache per pengguna, mtime widget, dan filter aktif melalui Rails.cache; TTL dapat diatur dan Redis langsung berfungsi |
| Satu widget yang lambat | Widget dimuat secara independen, sehingga satu kueri berat tidak pernah menahan seluruh dashboard |
| Bundle JS yang hilang | Rails merender data setiap widget di sisi server sebagai cadangan, sehingga halaman tetap berfungsi secara terbatas alih-alih kosong |
Portabel karena dirancang, bukan kebetulan
Dukungan lintas versi dan lintas database dirancang sejak awal — migrasi, penyimpanan JSON, dan pengelompokan tanggal semuanya ditulis agar tahan terhadap perbedaan tersebut.
| Aspek | Didukung | Caranya |
|---|---|---|
| Redmine | 4.x, 5.x, 6.x, 7.x | Mendeklarasikan requires_redmine version_or_higher 4.0.0, tanpa override inti yang bisa usang |
| Rails | 5.2 → 8.0 | Migrasi menargetkan baseline 5.2 yang dipahami setiap rilis hingga 8.0 |
| Ruby | 2.5+ | Sesuai dengan persyaratan minimum Redmine 4 |
| Database | MySQL, MariaDB, PostgreSQL | JSON disimpan di kolom teks biasa — DDL identik di mana pun — dengan serializer yang memilih bentuk yang tepat per versi Rails |
| Pengelompokan tanggal | Hari, minggu, bulan, tahun | Mengelompokkan dengan CAST(col AS DATE) yang portabel, lalu melipatnya ke dalam rentang di Ruby — tanpa SQL khusus vendor |
| Menjalankan ulang migrasi | Aman | Ditulis secara defensif, sehingga upgrade yang terputus dapat dijalankan ulang |
Dapat diotomatisasi sejak hari pertama
Setiap endpoint berada di bawah /redmine_charts/api, mengembalikan JSON, dan menerapkan izin yang persis sama dengan UI — sehingga dashboard dapat disiapkan dari CI atau dibuat satu per tim.
| Metode | Path | Fungsinya |
|---|---|---|
| GET | /dashboards | Setiap dashboard yang terlihat oleh pemanggil |
| POST | /dashboards | Membuat dashboard |
| GET | /dashboards/:id | Mengambil dashboard beserta widgetnya |
| PATCH | /dashboards/:id | Memperbarui nama, tata letak, atau pengaturan |
| POST | /dashboards/:id/duplicate | Mengkloningnya, termasuk widget |
| GET | /dashboards/:id/export | Mengekspor blueprint JSON |
| POST | /dashboards/import | Membuat dashboard dari blueprint |
| POST | /dashboards/:id/widgets | Menambahkan widget |
| GET | /widgets/:id/data | Data widget yang teragregasi dan dibatasi sesuai izin |
| GET | /meta/data_sources | Sumber, dimensi, ukuran, dan kueri tersimpan yang dapat Anda gunakan |
Apa yang tersedia hari ini, dan apa berikutnya
Item roadmap sengaja dirancang sebagai tambahan — sumber data, jenis widget, dan layanan ekspor baru — sehingga tidak ada yang akan meminta Anda memigrasikan apa pun. Item tersebut dicantumkan sebagai roadmap, bukan fitur, agar Anda membeli berdasarkan apa yang sudah tersedia hari ini.
| Kemampuan | Status |
|---|---|
| Dashboard: buat, duplikasi, tetapkan default, ekspor, dan impor | Tersedia |
| Grid drag-and-drop yang dapat diubah ukurannya dengan simpan otomatis | Tersedia |
| KPI, tabel, dan rangkaian grafik ECharts lengkap | Tersedia |
| Konfigurasi widget visual tanpa SQL | Tersedia |
| Penggunaan ulang kueri tersimpan dan pembuatan dashboard sekali klik | Tersedia |
| Filter global yang me-refresh seluruh dashboard | Tersedia |
| Drill-down dari grafik → daftar isu | Tersedia |
| Agregasi SQL dan caching per pengguna yang dibatasi sesuai izin | Tersedia |
| Berbagi, template, tema terang dan gelap | Tersedia |
| Lintas versi, lintas database, cadangan di sisi server | Tersedia |
| Ekspor PDF, PNG, dan Excel | Direncanakan |
| Tugas latar belakang untuk laporan yang sangat berat | Direncanakan |
| Pembaruan langsung via WebSocket | Direncanakan |
| Snapshot terjadwal yang dikirim via email | Direncanakan |
| Mode kiosk / wallboard | Direncanakan |
| Pembuat laporan AI dengan bahasa alami | Direncanakan |
| Widget kalender, burndown, dan ringkasan gantt | Direncanakan |
Instal dalam tiga langkah
Memerlukan akses shell dan kemampuan menjalankan tugas rake. Selalu buat cadangan sebelum menginstal plugin.
cd /path/to/redmine # unzip the package from your email or download link unzip redmine_charts-1.0.0.zip -d plugins/ bundle install
bundle exec rake redmine:plugins:migrate NAME=redmine_charts RAILS_ENV=production # optional: the built-in dashboard templates bundle exec rake redmine_charts:seed_templates RAILS_ENV=production touch tmp/restart.txt
# Project → Settings → Modules → Charts & Dashboards # then grant the dashboard permissions to the roles that need them # a Dashboards entry appears in the top menu for anyone who holds one
Apakah plugin ini mem-patch atau meng-override file inti Redmine?
Apakah saya memerlukan Node.js atau langkah build untuk menginstalnya?
Apakah kueri tersimpan saya yang sudah ada akan berfungsi, termasuk yang rumit?
Bisakah seseorang melihat angka dari proyek yang tidak dapat diaksesnya?
Database apa saja yang didukung?
Pada versi Redmine dan Rails berapa plugin ini berjalan?
Bisakah kami menambahkan sumber data atau jenis grafik sendiri?
Apa yang sengaja tidak disertakan di versi 1.0?
Harga
Satu server
Satu instans Redmine · pengguna tanpa batas · pembaruan selama 12 bulan.
Banyak server
Server Redmine tanpa batas · pengguna tanpa batas · pembaruan selama 12 bulan.
Butuh Solusi Redmine Kustom?
Mencari fitur yang belum tersedia di plugin kami?
RedmineKit menyediakan pengembangan plugin Redmine kustom, kustomisasi plugin, otomatisasi alur kerja, integrasi pihak ketiga, dan solusi yang disesuaikan untuk bisnis Anda.
Sampaikan kebutuhan Anda. Kami akan meninjau kebutuhan tersebut dan memberikan solusi yang sesuai beserta perkiraan biaya dan jadwalnya.