Kelola daftar todo dalam proyek - buat, edit, hapus, dan kueri daftar


Ikhtisar

Daftar di Blue adalah wadah untuk mengorganisir todo dalam sebuah proyek. Setiap daftar dapat menampung beberapa todo dan membantu menyusun pekerjaan ke dalam kelompok yang logis. Daftar mendukung penempatan, penguncian, dan kontrol akses berbasis peran.

Konsep Kunci

  • Setiap proyek dapat memiliki hingga 50 daftar
  • Daftar diurutkan berdasarkan posisi (menaik)
  • Daftar dapat dikunci untuk mencegah modifikasi
  • Daftar menghormati izin berbasis proyek dan peran
  • Daftar yang dihapus dipindahkan ke tempat sampah (penghapusan lunak)

Kueri

Dapatkan Satu Daftar

Ambil daftar todo tertentu berdasarkan ID.

query GetTodoList($id: String!) {
  todoList(id: $id) {
    id
    uid
    title
    position
    isDisabled
    isLocked
    createdAt
    updatedAt
    project {
      id
      name
    }
    createdBy {
      id
      username
    }
  }
}

Dapatkan Semua Daftar dalam Proyek

Ambil semua daftar todo untuk proyek tertentu.

query GetProjectLists($projectId: String!) {
  todoLists(projectId: $projectId) {
    id
    uid
    title
    position
    isDisabled
    isLocked
    createdAt
    updatedAt
  }
}

Kueri Daftar Lanjutan

Kueri daftar dengan penyaringan, pengurutan, dan paginasi.

query SearchTodoLists($filter: TodoListsFilterInput!, $sort: [TodoListsSort!], $skip: Int, $take: Int) {
  todoListQueries {
    todoLists(filter: $filter, sort: $sort, skip: $skip, take: $take) {
      items {
        id
        uid
        title
        position
        isDisabled
        isLocked
        createdAt
        updatedAt
        project {
          id
          name
        }
      }
      pageInfo {
        hasNextPage
        hasPreviousPage
        total
      }
    }
  }
}

Mutasi

Buat Daftar

Buat daftar todo baru dalam proyek.

mutation CreateTodoList($input: CreateTodoListInput!) {
  createTodoList(input: $input) {
    id
    uid
    title
    position
    isDisabled
    isLocked
    createdAt
    project {
      id
      name
    }
  }
}

Contoh:

mutation {
  createTodoList(input: {
    projectId: "project-123"
    title: "Sprint 1 Tasks"
    position: 1.0
  }) {
    id
    title
  }
}

Edit Daftar

Perbarui properti daftar todo yang sudah ada.

mutation EditTodoList($input: EditTodoListInput!) {
  editTodoList(input: $input) {
    id
    title
    position
    isLocked
    updatedAt
  }
}

Contoh:

mutation {
  editTodoList(input: {
    todoListId: "list-123"
    title: "Sprint 1 - In Progress"
    position: 2.0
    isLocked: true
  }) {
    id
    title
    isLocked
  }
}

Hapus Daftar

Hapus daftar todo (dipindahkan ke tempat sampah).

mutation DeleteTodoList($input: DeleteTodoListInput!) {
  deleteTodoList(input: $input) {
    success
  }
}

Contoh:

mutation {
  deleteTodoList(input: {
    projectId: "project-123"
    todoListId: "list-123"
  }) {
    success
  }
}

Tandai Daftar sebagai Selesai/Tidak Selesai

Tandai semua todo dalam daftar sebagai selesai atau tidak selesai.

# Mark as done
mutation MarkListDone($todoListId: String!, $filter: TodosFilter) {
  markTodoListAsDone(todoListId: $todoListId, filter: $filter)
}

# Mark as undone
mutation MarkListUndone($todoListId: String!, $filter: TodosFilter) {
  markTodoListAsUndone(todoListId: $todoListId, filter: $filter)
}

Tipe Input

CreateTodoListInput

Parameter Tipe Diperlukan Deskripsi
projectId String! ✅ Ya ID proyek tempat daftar akan dibuat
title String! ✅ Ya Nama daftar
position Float! ✅ Ya Posisi daftar (untuk pengurutan)

EditTodoListInput

Parameter Tipe Diperlukan Deskripsi
todoListId String! ✅ Ya ID daftar yang akan diedit
title String Tidak Judul baru untuk daftar
position Float Tidak Posisi baru untuk daftar
isLocked Boolean Tidak Apakah daftar harus dikunci

DeleteTodoListInput

Parameter Tipe Diperlukan Deskripsi
projectId String! ✅ Ya ID proyek (untuk verifikasi)
todoListId String! ✅ Ya ID daftar yang akan dihapus

TodoListsFilterInput

Parameter Tipe Diperlukan Deskripsi
companyIds [String!]! ✅ Ya Filter berdasarkan ID perusahaan
projectIds [String!] Tidak Filter berdasarkan ID proyek tertentu
ids [String!] Tidak Filter berdasarkan ID daftar tertentu
titles [String!] Tidak Filter berdasarkan judul daftar
search String Tidak Cari daftar berdasarkan judul

TodoListsSort Values

Nilai Deskripsi
title_ASC Urutkan berdasarkan judul menaik
title_DESC Urutkan berdasarkan judul menurun
createdAt_ASC Urutkan berdasarkan tanggal pembuatan menaik
createdAt_DESC Urutkan berdasarkan tanggal pembuatan menurun
updatedAt_ASC Urutkan berdasarkan tanggal pembaruan menaik
updatedAt_DESC Urutkan berdasarkan tanggal pembaruan menurun
position_ASC Urutkan berdasarkan posisi menaik (default)
position_DESC Urutkan berdasarkan posisi menurun

Tipe Respon

TodoList Type

Field Tipe Deskripsi
id ID! Pengenal unik
uid String! Pengenal yang ramah pengguna
position Float! Posisi daftar untuk pengurutan
title String! Nama daftar
isDisabled Boolean! Apakah daftar dinonaktifkan
isLocked Boolean Apakah daftar dikunci
createdAt DateTime! Timestamp pembuatan
updatedAt DateTime! Timestamp pembaruan terakhir
activity Activity Log aktivitas terkait
createdBy User Pengguna yang membuat daftar
project Project! Proyek induk
todos [Todo!]! Todos dalam daftar ini
todosCount Int! Jumlah todos

TodoListsPagination Type

Field Tipe Deskripsi
items [TodoList!]! Array daftar todo
pageInfo PageInfo! Informasi paginasi

Izin yang Diperlukan

Izin Kueri

Operasi Izin yang Diperlukan
todoList Must be authenticated
todoLists Must be authenticated and in company
todoListQueries.todoLists Must be authenticated and in company

Izin Mutasi

Operasi Peran Tingkat Proyek yang Diizinkan
createTodoList OWNER, ADMIN, MEMBER
editTodoList OWNER, ADMIN, MEMBER, CLIENT
deleteTodoList OWNER, ADMIN, MEMBER
markTodoListAsDone OWNER, ADMIN, MEMBER
markTodoListAsUndone OWNER, ADMIN, MEMBER

Catatan: Pengguna dengan peran CLIENT dapat mengedit daftar tetapi tidak dapat membuat atau menghapusnya. Pengguna dengan peran VIEW_ONLY atau COMMENT_ONLY tidak dapat membuat, mengedit, atau menghapus daftar.

Respon Kesalahan

TodoListNotFoundError

{
  "errors": [{
    "message": "Todo list was not found.",
    "extensions": {
      "code": "TODO_LIST_NOT_FOUND"
    }
  }]
}

ProjectNotFoundError

{
  "errors": [{
    "message": "Project was not found.",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Kesalahan Daftar Maksimum

{
  "errors": [{
    "message": "You have reached the maximum number of todo lists for this project.",
    "extensions": {
      "code": "INTERNAL_SERVER_ERROR"
    }
  }]
}

UnauthorizedError

{
  "errors": [{
    "message": "Unauthorized",
    "extensions": {
      "code": "UNAUTHORIZED"
    }
  }]
}

Catatan Penting

  • Batas Daftar: Setiap proyek dapat memiliki maksimum 50 daftar
  • Penghapusan Lunak: Daftar yang dihapus dipindahkan ke tempat sampah dan dapat dipulihkan
  • Manajemen Posisi: Saat membuat daftar, pastikan posisi tidak bertentangan. Gunakan nilai bertahap (1.0, 2.0, 3.0) untuk memungkinkan penyisipan di antara daftar
  • Akses Berbasis Peran: Daftar dapat disembunyikan dari peran tertentu menggunakan izin ProjectUserRoleTodoList
  • Webhook: Pembuatan, pembaruan, dan penghapusan daftar memicu webhook jika dikonfigurasi
  • Pelacakan Aktivitas: Semua operasi daftar dicatat dalam umpan aktivitas
  • Pembaruan Waktu Nyata: Perubahan daftar dipublikasikan melalui langganan untuk pembaruan waktu nyata

Operasi Terkait

  • Gunakan todos kueri untuk mengambil todos dalam daftar
  • Gunakan createTodo mutasi untuk menambahkan todos ke daftar
  • Gunakan moveTodo mutasi untuk memindahkan todos antar daftar
  • Berlangganan ke perubahan daftar menggunakan subscribeToTodoList langganan

Asisten AI

Respon dihasilkan menggunakan AI dan mungkin mengandung kesalahan.

Bagaimana saya bisa membantu Anda?

Tanyakan apa saja tentang Blue atau dokumentasi ini.

Masukkan untuk mengirim • Shift+Masukkan untuk baris baru • ⌘I untuk membuka