Создайте полную копию существующей панели, включая все графики, сегменты и разрешения


Мутация 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
      }
    }
  }
}

Расширенный пример

Скопируйте панель, не указывая заголовок (автоматически добавляет "(Копия)"):

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 Нет Пользовательский заголовок для скопированной панели. Если не предоставлен, добавляет "(Копия)" к оригинальному заголовку

Поля ответа

Ответ панели

Мутация возвращает полный объект 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
    • Копирует заголовок (или добавляет "(Копия)", если нет пользовательского заголовка)
    • Устанавливает создателя на пользователя, выполняющего копирование
    • Сохраняет ассоциации компании и проекта
  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
      }
    }
  }
}

Лучшие практики

Конвенции именования

  • Используйте описательные заголовки, которые указывают на цель копии
  • Включайте названия команд, даты или номера версий для ясности
  • Избегайте общих названий, таких как "Копия" или "Новая панель"

Управление разрешениями

  • Проверьте разрешения скопированной панели после создания
  • Добавьте или удалите пользователей по мере необходимости для конкретного сценария использования
  • Рассмотрите, нужно ли зрителям стать редакторами копии

Целостность данных

  • Убедитесь, что формулы и вычисления работают корректно после копирования
  • Проверьте, что источники данных графиков подходят для нового контекста
  • Протестируйте любые автоматизированные отчеты или интеграции

Учет производительности

  • Копирование больших панелей с множеством графиков может занять несколько секунд
  • Повторный расчет графиков происходит асинхронно после копирования
  • Рассмотрите возможность копирования в нерабочие часы для очень больших панелей
  • Мониторьте ресурсы системы при копировании нескольких панелей одновременно

Ограничения

  • Нельзя копировать панели между разными компаниями
  • Ссылки на формулы ограничены данными в одной и той же компании
  • Некоторые внешние интеграции могут потребовать перенастройки
  • Пользовательские разрешения или роли могут потребовать ручной настройки
  • Исторические данные и аналитика не сохраняются в копии

Связанные ресурсы

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия