創建現有儀表板的完整副本,包括所有圖表、區段和權限


copyDashboard 變更操作創建現有儀表板的完整副本,包括所有圖表、圖表區段、值和用戶權限。此操作執行深度複製,為所有複製的元素生成新的唯一標識符。

基本示例

創建一個具有自定義標題的儀表板副本:

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
      }
    }
  }
}

高級示例

複製一個未指定標題的儀表板(自動附加“(Copy)”):

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
  }
}

輸入參數

CopyDashboardInput

參數 類型 必需 描述
dashboardId String! ✅ 是 要複製的儀表板的 ID
title String 複製儀表板的自定義標題。如果未提供,則在原始標題後附加“(Copy)”

回應欄位

儀表板回應

該變更操作返回一個完整的 Dashboard 對象,包含所有複製的數據:

欄位 類型 描述
id String! 新儀表板的唯一標識符
uid String! 用於 URL 路由的唯一標識符
title String! 複製儀表板的標題
createdBy User! 執行複製操作的用戶
company Company! 儀表板所屬的公司(與原始相同)
project Project 項目關聯(與原始相同,如果有)
charts [Chart!]! 從原始儀表板複製的所有圖表
dashboardUsers [DashboardUser!]! 從原始儀表板複製的用戶權限(不包括複製用戶)
createdAt DateTime! 複製創建的時間
updatedAt DateTime! 複製最後修改的時間

儀表板複製行為

深度複製過程

copyDashboard 操作執行完整的深度複製,包括:

  1. 儀表板元數據

    • 創建具有新 ID 和 UID 的新儀表板
    • 複製標題(如果沒有自定義標題則附加“(Copy)”)
    • 將創建者設置為執行複製的用戶
    • 維護公司和項目關聯
  2. 圖表和結構

    • 複製所有圖表,並生成新的 ID 和 UID
    • 保留圖表類型、標題和位置
    • 維護圖表配置和元數據
  3. 圖表區段和值

    • 複製所有圖表區段,並生成新的 ID 和 UID
    • 保留區段標題、公式和配置
    • 複製所有圖表值及其數據
  4. 公式引用

    • 更新公式引用以使用新的 UID
    • 維護公式邏輯和計算
    • 確保複製的公式引用複製的數據
  5. 用戶權限

    • 從原始儀表板複製所有用戶權限
    • 排除複製用戶(他們成為創建者)
    • 保留 VIEWER 和 EDITOR 角色分配

複製後操作

創建副本後,系統自動:

  • 發佈儀表板創建事件以實現實時更新
  • 觸發所有複製圖表的結果重新計算
  • 更新任何依賴系統或集成

所需權限

儀表板複製需要特定權限:

角色 可以複製儀表板
Dashboard Creator ✅ 是
Dashboard EDITOR ✅ 是
Dashboard VIEWER ❌ 否
非儀表板用戶 ❌ 否

權限檢查:用戶必須對原始儀表板擁有 EDITOR 訪問權限,通過以下方式之一:

  • 成為原始儀表板的創建者
  • 在儀表板上擁有明確的 EDITOR 角色分配

錯誤回應

找不到儀表板

{
  "errors": [{
    "message": "Dashboard was not found.",
    "extensions": {
      "code": "DASHBOARD_NOT_FOUND"
    }
  }]
}

權限不足

{
  "errors": [{
    "message": "You don't have permission to access this dashboard",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

輸入無效

{
  "errors": [{
    "message": "Dashboard ID is required",
    "extensions": {
      "code": "VALIDATION_ERROR"
    }
  }]
}

使用案例

1. 模板儀表板

創建可以為新項目或團隊複製的模板儀表板:

mutation CreateProjectDashboard {
  copyDashboard(input: {
    dashboardId: "template_dashboard_id"
    title: "Project Alpha - Sales Dashboard"
  }) {
    id
    title
  }
}

2. 備份和版本控制

在進行重大更改之前創建備份:

mutation BackupDashboard {
  copyDashboard(input: {
    dashboardId: "production_dashboard"
    title: "Production Dashboard - Backup 2024-01-15"
  }) {
    id
    title
    createdAt
  }
}

3. 跨團隊共享

在團隊之間複製儀表板,同時保持數據結構:

mutation ShareDashboardWithTeam {
  copyDashboard(input: {
    dashboardId: "marketing_dashboard"
    title: "Marketing Dashboard - Sales Team Copy"
  }) {
    id
    title
    dashboardUsers {
      role
      user {
        email
      }
    }
  }
}

最佳實踐

命名慣例

  • 使用描述性標題來指示副本的目的
  • 包括團隊名稱、日期或版本號以提高清晰度
  • 避免使用“Copy”或“New Dashboard”等通用名稱

權限管理

  • 在創建後檢查複製儀表板的權限
  • 根據具體使用案例添加或刪除用戶
  • 考慮查看者是否需要成為副本的編輯者

數據完整性

  • 確認複製後公式和計算正確運行
  • 檢查圖表數據源是否適合新上下文
  • 測試任何自動報告或集成

性能考量

  • 複製大型儀表板(包含許多圖表)可能需要幾秒鐘
  • 圖表重新計算在複製後異步發生
  • 考慮在非高峰時段複製非常大的儀表板
  • 在同時複製多個儀表板時監控系統資源

限制

  • 無法跨不同公司複製儀表板
  • 公式引用僅限於同一公司的數據
  • 某些外部集成可能需要重新配置
  • 自定義權限或角色可能需要手動調整
  • 歷史數據和分析不會在副本中保留

相關資源

AI 助手

回應是使用人工智慧生成的,可能包含錯誤。

我能幫助您什麼?

隨時詢問我有關 Blue 或此文件的任何問題。

輸入發送 • Shift+Enter 進行換行 • ⌘I 打開