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

AI-assistent

Svar genereras med hjälp av AI och kan innehålla misstag.

Hur kan jag hjälpa dig?

Fråga mig vad som helst om Blue eller denna dokumentation.

Tryck Enter för att skicka • Shift+Enter för ny rad • ⌘I för att öppna