Hantera todo-listor inom projekt - skapa, redigera, ta bort och fråga listor
Översikt
Listor i Blue är behållare för att organisera todos inom ett projekt. Varje lista kan hålla flera todos och hjälper till att strukturera arbetet i logiska grupper. Listor stöder positionering, låsning och rollbaserad åtkomstkontroll.
Nyckelkoncept
- Varje projekt kan ha upp till 50 listor
- Listor är ordnade efter position (stigande)
- Listor kan låsas för att förhindra ändringar
- Listor respekterar projekt- och rollbaserade behörigheter
- Raderade listor flyttas till papperskorgen (mjuk radering)
Frågor
Hämta en enskild lista
Hämta en specifik todo-lista med ID.
query GetTodoList($id: String!) {
todoList(id: $id) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
project {
id
name
}
createdBy {
id
username
}
}
}
Hämta alla listor i ett projekt
Hämta alla todo-listor för ett specifikt projekt.
query GetProjectLists($projectId: String!) {
todoLists(projectId: $projectId) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
}
}
Avancerad lista fråga
Fråga listor med filtrering, sortering och paginering.
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
}
}
}
}
Mutationer
Skapa en lista
Skapa en ny todo-lista i ett projekt.
mutation CreateTodoList($input: CreateTodoListInput!) {
createTodoList(input: $input) {
id
uid
title
position
isDisabled
isLocked
createdAt
project {
id
name
}
}
}
Exempel:
mutation {
createTodoList(input: {
projectId: "project-123"
title: "Sprint 1 Tasks"
position: 1.0
}) {
id
title
}
}
Redigera en lista
Uppdatera egenskaperna för en befintlig todo-lista.
mutation EditTodoList($input: EditTodoListInput!) {
editTodoList(input: $input) {
id
title
position
isLocked
updatedAt
}
}
Exempel:
mutation {
editTodoList(input: {
todoListId: "list-123"
title: "Sprint 1 - In Progress"
position: 2.0
isLocked: true
}) {
id
title
isLocked
}
}
Ta bort en lista
Ta bort en todo-lista (flyttas till papperskorgen).
mutation DeleteTodoList($input: DeleteTodoListInput!) {
deleteTodoList(input: $input) {
success
}
}
Exempel:
mutation {
deleteTodoList(input: {
projectId: "project-123"
todoListId: "list-123"
}) {
success
}
}
Markera lista som klar/inte klar
Markera alla todos i en lista som klara eller inte klara.
# 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)
}
Indata Typer
CreateTodoListInput
Parameter | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
projectId |
String! | ✅ Ja | Projekt-ID där listan kommer att skapas |
title |
String! | ✅ Ja | Namnet på listan |
position |
Float! | ✅ Ja | Positionen för listan (för sortering) |
EditTodoListInput
Parameter | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
todoListId |
String! | ✅ Ja | ID för listan som ska redigeras |
title |
String | Nej | Ny titel för listan |
position |
Float | Nej | Ny position för listan |
isLocked |
Boolean | Nej | Om listan ska låsas |
DeleteTodoListInput
Parameter | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
projectId |
String! | ✅ Ja | Projekt-ID (för verifiering) |
todoListId |
String! | ✅ Ja | ID för listan som ska tas bort |
TodoListsFilterInput
Parameter | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
companyIds |
[String!]! | ✅ Ja | Filtrera efter företags-ID |
projectIds |
[String!] | Nej | Filtrera efter specifika projekt-ID |
ids |
[String!] | Nej | Filtrera efter specifika lista-ID |
titles |
[String!] | Nej | Filtrera efter listtitlar |
search |
String | Nej | Sök listor efter titel |
TodoListsSort Värden
Värde | Beskrivning |
---|---|
title_ASC |
Sortera efter titel stigande |
title_DESC |
Sortera efter titel fallande |
createdAt_ASC |
Sortera efter skapelsedatum stigande |
createdAt_DESC |
Sortera efter skapelsedatum fallande |
updatedAt_ASC |
Sortera efter uppdateringsdatum stigande |
updatedAt_DESC |
Sortera efter uppdateringsdatum fallande |
position_ASC |
Sortera efter position stigande (standard) |
position_DESC |
Sortera efter position fallande |
Svarstyper
TodoList Typ
Fält | Typ | Beskrivning |
---|---|---|
id |
ID! | Unik identifierare |
uid |
String! | Användarvänlig identifierare |
position |
Float! | Lista position för sortering |
title |
String! | Lista namn |
isDisabled |
Boolean! | Om listan är inaktiverad |
isLocked |
Boolean | Om listan är låst |
createdAt |
DateTime! | Skapelsestämpel |
updatedAt |
DateTime! | Senaste uppdateringsstämpel |
activity |
Activity | Associerad aktivitetslogg |
createdBy |
User | Användare som skapade listan |
project |
Project! | Föräldraprojekt |
todos |
[Todo!]! | Todos i denna lista |
todosCount |
Int! | Antal todos |
TodoListsPagination Typ
Fält | Typ | Beskrivning |
---|---|---|
items |
[TodoList!]! | Array av todo-listor |
pageInfo |
PageInfo! | Pagineringinformation |
Obligatoriska behörigheter
Frågebehörigheter
Åtgärd | Obligatorisk behörighet |
---|---|
todoList |
Must be authenticated |
todoLists |
Must be authenticated and in company |
todoListQueries.todoLists |
Must be authenticated and in company |
Mutationsbehörigheter
Åtgärd | Roller på projekt nivå tillåtna |
---|---|
createTodoList |
OWNER, ADMIN, MEMBER |
editTodoList |
OWNER, ADMIN, MEMBER, CLIENT |
deleteTodoList |
OWNER, ADMIN, MEMBER |
markTodoListAsDone |
OWNER, ADMIN, MEMBER |
markTodoListAsUndone |
OWNER, ADMIN, MEMBER |
Notera: Användare med CLIENT-roll kan redigera listor men kan inte skapa eller ta bort dem. Användare med VIEW_ONLY eller COMMENT_ONLY roller kan inte skapa, redigera eller ta bort listor.
Felrespons
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"
}
}]
}
Maximum Lists Error
{
"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"
}
}]
}
Viktiga anteckningar
- Listgräns: Varje projekt kan ha högst 50 listor
- Mjuk radering: Raderade listor flyttas till papperskorgen och kan potentiellt återställas
- Positionshantering: När du skapar listor, se till att positionerna inte krockar. Använd inkrementella värden (1.0, 2.0, 3.0) för att möjliggöra insättning mellan listor
- Rollbaserad åtkomst: Listor kan döljas från vissa roller med hjälp av ProjectUserRoleTodoList-behörigheter
- Webhooks: Skapelse, uppdateringar och radering av listor utlöser webhooks om de är konfigurerade
- Aktivitetsövervakning: Alla listaoperationer loggas i aktivitetsflödet
- Real-tidsuppdateringar: Liständringar publiceras via prenumerationer för realtidsuppdateringar
Relaterade åtgärder
- Använd
todos
frågan för att hämta todos inom en lista - Använd
createTodo
mutation för att lägga till todos i en lista - Använd
moveTodo
mutation för att flytta todos mellan listor - Prenumerera på liständringar med hjälp av
subscribeToTodoList
prenumeration