Buat salinan lengkap dari dasbor yang ada termasuk semua grafik, segmen, dan izin
Mutasi copyDashboard
membuat salinan lengkap dari dasbor yang ada, termasuk semua grafik, segmen grafik, nilai, dan izin pengguna. Operasi ini melakukan salinan mendalam dengan pengidentifikasi unik baru untuk semua elemen yang disalin.
Contoh Dasar
Buat salinan dasbor dengan judul kustom:
mutation CopyDashboard {
copyDashboard(input: {
dashboardId: "dashboard_123"
title: "Q4 Sales Dashboard Copy"
}) {
id
title
createdAt
charts {
id
title
chartType
}
dashboardUsers {
id
role
user {
id
email
}
}
}
}
Contoh Lanjutan
Salin dasbor tanpa menentukan judul (secara otomatis menambahkan "(Salin)"):
mutation CopyDashboardAuto {
copyDashboard(input: {
dashboardId: "dashboard_456"
}) {
id
uid
title
createdBy {
id
email
}
company {
id
name
}
charts {
id
title
chartType
position
chartSegments {
id
title
formula
chartValues {
id
value
}
}
}
dashboardUsers {
id
role
user {
id
email
fullName
}
}
createdAt
updatedAt
}
}
Parameter Input
CopyDashboardInput
Parameter | Tipe | Diperlukan | Deskripsi |
---|---|---|---|
dashboardId |
String! | ✅ Ya | ID dari dasbor yang akan disalin |
title |
String | Tidak | Judul kustom untuk dasbor yang disalin. Jika tidak disediakan, menambahkan "(Salin)" ke judul asli |
Bidang Respons
Respons Dasbor
Mutasi mengembalikan objek Dashboard
lengkap dengan semua data yang disalin:
Bidang | Tipe | Deskripsi |
---|---|---|
id |
String! | Pengidentifikasi unik untuk dasbor baru |
uid |
String! | Pengidentifikasi unik yang digunakan untuk routing URL |
title |
String! | Judul dari dasbor yang disalin |
createdBy |
User! | Pengguna yang melakukan operasi salin |
company |
Company! | Perusahaan tempat dasbor ini berada (sama dengan yang asli) |
project |
Project | Asosiasi proyek (sama dengan yang asli, jika ada) |
charts |
[Chart!]! | Semua grafik yang disalin dari dasbor asli |
dashboardUsers |
[DashboardUser!]! | Izin pengguna yang disalin dari yang asli (tidak termasuk pengguna yang menyalin) |
createdAt |
DateTime! | Waktu salinan dibuat |
updatedAt |
DateTime! | Waktu salinan terakhir dimodifikasi |
Perilaku Penyalinan Dasbor
Proses Salinan Mendalam
Operasi copyDashboard
melakukan salinan mendalam lengkap termasuk:
-
Metadata Dasbor
- Membuat dasbor baru dengan ID dan UID baru
- Menyalin judul (atau menambahkan "(Salin)" jika tidak ada judul kustom)
- Mengatur pencipta menjadi pengguna yang melakukan salin
- Mempertahankan asosiasi perusahaan dan proyek
-
Grafik dan Struktur
- Menyalin semua grafik dengan ID dan UID baru
- Mempertahankan jenis grafik, judul, dan posisi
- Mempertahankan konfigurasi dan metadata grafik
-
Segmen Grafik dan Nilai
- Menyalin semua segmen grafik dengan ID dan UID baru
- Mempertahankan judul segmen, rumus, dan konfigurasi
- Menyalin semua nilai grafik dan data mereka
-
Referensi Rumus
- Memperbarui referensi rumus untuk menggunakan UID baru
- Mempertahankan logika dan perhitungan rumus
- Memastikan rumus yang disalin merujuk pada data yang disalin
-
Izin Pengguna
- Menyalin semua izin pengguna dasbor dari yang asli
- Mengecualikan pengguna yang menyalin (mereka menjadi pencipta)
- Mempertahankan penugasan peran VIEWER dan EDITOR
Operasi Pasca-Salin
Setelah membuat salinan, sistem secara otomatis:
- Menerbitkan peristiwa pembuatan dasbor untuk pembaruan waktu nyata
- Memicu perhitungan ulang hasil grafik untuk semua grafik yang disalin
- Memperbarui sistem atau integrasi yang bergantung
Izin yang Diperlukan
Penyalinan dasbor memerlukan izin tertentu:
Peran | Dapat Menyalin Dasbor |
---|---|
Dashboard Creator | ✅ Ya |
Dashboard EDITOR | ✅ Ya |
Dashboard VIEWER | ❌ Tidak |
Pengguna non-dasbor | ❌ Tidak |
Pemeriksaan Izin: Pengguna harus memiliki akses EDITOR ke dasbor asli melalui salah satu cara berikut:
- Menjadi pencipta dasbor asli
- Memiliki penugasan peran EDITOR yang eksplisit pada dasbor
Respons Kesalahan
Dasbor Tidak Ditemukan
{
"errors": [{
"message": "Dashboard was not found.",
"extensions": {
"code": "DASHBOARD_NOT_FOUND"
}
}]
}
Izin Tidak Cukup
{
"errors": [{
"message": "You don't have permission to access this dashboard",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Input Tidak Valid
{
"errors": [{
"message": "Dashboard ID is required",
"extensions": {
"code": "VALIDATION_ERROR"
}
}]
}
Kasus Penggunaan
1. Dasbor Template
Buat dasbor template yang dapat disalin untuk proyek atau tim baru:
mutation CreateProjectDashboard {
copyDashboard(input: {
dashboardId: "template_dashboard_id"
title: "Project Alpha - Sales Dashboard"
}) {
id
title
}
}
2. Cadangan dan Versi
Buat cadangan sebelum melakukan perubahan signifikan:
mutation BackupDashboard {
copyDashboard(input: {
dashboardId: "production_dashboard"
title: "Production Dashboard - Backup 2024-01-15"
}) {
id
title
createdAt
}
}
3. Berbagi Lintas Tim
Salin dasbor antar tim sambil mempertahankan struktur data:
mutation ShareDashboardWithTeam {
copyDashboard(input: {
dashboardId: "marketing_dashboard"
title: "Marketing Dashboard - Sales Team Copy"
}) {
id
title
dashboardUsers {
role
user {
email
}
}
}
}
Praktik Terbaik
Konvensi Penamaan
- Gunakan judul deskriptif yang menunjukkan tujuan salinan
- Sertakan nama tim, tanggal, atau nomor versi untuk kejelasan
- Hindari nama generik seperti "Salin" atau "Dasbor Baru"
Manajemen Izin
- Tinjau izin dasbor yang disalin setelah pembuatan
- Tambahkan atau hapus pengguna sesuai kebutuhan untuk kasus penggunaan tertentu
- Pertimbangkan apakah pemirsa perlu menjadi editor pada salinan
Integritas Data
- Verifikasi bahwa rumus dan perhitungan berfungsi dengan benar setelah disalin
- Periksa bahwa sumber data grafik sesuai untuk konteks baru
- Uji laporan atau integrasi otomatis
Pertimbangan Kinerja
- Menyalin dasbor besar dengan banyak grafik mungkin memerlukan beberapa detik
- Perhitungan ulang grafik terjadi secara asinkron setelah salinan
- Pertimbangkan untuk menyalin selama jam-jam sepi untuk dasbor yang sangat besar
- Pantau sumber daya sistem saat menyalin beberapa dasbor secara bersamaan
Pembatasan
- Tidak dapat menyalin dasbor antar perusahaan yang berbeda
- Referensi rumus terbatas pada data dalam perusahaan yang sama
- Beberapa integrasi eksternal mungkin perlu dikonfigurasi ulang
- Izin atau peran kustom mungkin perlu penyesuaian manual
- Data dan analitik historis tidak dipertahankan dalam salinan
Sumber Daya Terkait
- Ikhtisar Dasbor - Konsep umum dasbor
- Ganti Nama Dasbor - Ubah judul dasbor
- Pengguna Dasbor - Kelola izin dasbor
- API Grafik - Bekerja dengan grafik individu