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