Zarządzaj listami zadań w projektach - twórz, edytuj, usuwaj i zapytuj o listy
Przegląd
Listy w Blue są kontenerami do organizowania zadań w ramach projektu. Każda lista może zawierać wiele zadań i pomaga w strukturyzacji pracy w logiczne grupy. Listy wspierają pozycjonowanie, blokowanie i kontrolę dostępu opartą na rolach.
Kluczowe pojęcia
- Każdy projekt może mieć maksymalnie 50 list
- Listy są uporządkowane według pozycji (rosnąco)
- Listy mogą być zablokowane, aby zapobiec modyfikacjom
- Listy respektują uprawnienia na poziomie projektu i oparte na rolach
- Usunięte listy są przenoszone do kosza (miękkie usunięcie)
Zapytania
Pobierz pojedynczą listę
Pobierz konkretną listę zadań według ID.
query GetTodoList($id: String!) {
todoList(id: $id) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
project {
id
name
}
createdBy {
id
username
}
}
}
Pobierz wszystkie listy w projekcie
Pobierz wszystkie listy zadań dla konkretnego projektu.
query GetProjectLists($projectId: String!) {
todoLists(projectId: $projectId) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
}
}
Zaawansowane zapytanie o listy
Zapytaj o listy z filtrowaniem, sortowaniem i paginacją.
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
}
}
}
}
Mutacje
Utwórz listę
Utwórz nową listę zadań w projekcie.
mutation CreateTodoList($input: CreateTodoListInput!) {
createTodoList(input: $input) {
id
uid
title
position
isDisabled
isLocked
createdAt
project {
id
name
}
}
}
Przykład:
mutation {
createTodoList(input: {
projectId: "project-123"
title: "Sprint 1 Tasks"
position: 1.0
}) {
id
title
}
}
Edytuj listę
Zaktualizuj właściwości istniejącej listy zadań.
mutation EditTodoList($input: EditTodoListInput!) {
editTodoList(input: $input) {
id
title
position
isLocked
updatedAt
}
}
Przykład:
mutation {
editTodoList(input: {
todoListId: "list-123"
title: "Sprint 1 - In Progress"
position: 2.0
isLocked: true
}) {
id
title
isLocked
}
}
Usuń listę
Usuń listę zadań (przenosi do kosza).
mutation DeleteTodoList($input: DeleteTodoListInput!) {
deleteTodoList(input: $input) {
success
}
}
Przykład:
mutation {
deleteTodoList(input: {
projectId: "project-123"
todoListId: "list-123"
}) {
success
}
}
Oznacz listę jako zrobioną/niezrobioną
Oznacz wszystkie zadania w liście jako zrobione lub niezrobione.
# 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)
}
Typy wejściowe
CreateTodoListInput
Parametr | Typ | Wymagane | Opis |
---|---|---|---|
projectId |
String! | ✅ Tak | ID projektu, w którym lista zostanie utworzona |
title |
String! | ✅ Tak | Nazwa listy |
position |
Float! | ✅ Tak | Pozycja listy (do sortowania) |
EditTodoListInput
Parametr | Typ | Wymagane | Opis |
---|---|---|---|
todoListId |
String! | ✅ Tak | ID listy do edytowania |
title |
String | Nie | Nowy tytuł dla listy |
position |
Float | Nie | Nowa pozycja dla listy |
isLocked |
Boolean | Nie | Czy lista powinna być zablokowana |
DeleteTodoListInput
Parametr | Typ | Wymagane | Opis |
---|---|---|---|
projectId |
String! | ✅ Tak | ID projektu (do weryfikacji) |
todoListId |
String! | ✅ Tak | ID listy do usunięcia |
TodoListsFilterInput
Parametr | Typ | Wymagane | Opis |
---|---|---|---|
companyIds |
[String!]! | ✅ Tak | Filtrowanie według ID firm |
projectIds |
[String!] | Nie | Filtrowanie według konkretnych ID projektów |
ids |
[String!] | Nie | Filtrowanie według konkretnych ID list |
titles |
[String!] | Nie | Filtrowanie według tytułów list |
search |
String | Nie | Wyszukiwanie list według tytułu |
TodoListsSort Values
Wartość | Opis |
---|---|
title_ASC |
Sortuj według tytułu rosnąco |
title_DESC |
Sortuj według tytułu malejąco |
createdAt_ASC |
Sortuj według daty utworzenia rosnąco |
createdAt_DESC |
Sortuj według daty utworzenia malejąco |
updatedAt_ASC |
Sortuj według daty aktualizacji rosnąco |
updatedAt_DESC |
Sortuj według daty aktualizacji malejąco |
position_ASC |
Sortuj według pozycji rosnąco (domyślnie) |
position_DESC |
Sortuj według pozycji malejąco |
Typy odpowiedzi
Typ TodoList
Pole | Typ | Opis |
---|---|---|
id |
ID! | Unikalny identyfikator |
uid |
String! | Przyjazny identyfikator |
position |
Float! | Pozycja listy do sortowania |
title |
String! | Nazwa listy |
isDisabled |
Boolean! | Czy lista jest wyłączona |
isLocked |
Boolean | Czy lista jest zablokowana |
createdAt |
DateTime! | Znacznik czasu utworzenia |
updatedAt |
DateTime! | Znacznik czasu ostatniej aktualizacji |
activity |
Activity | Powiązany dziennik aktywności |
createdBy |
User | Użytkownik, który utworzył listę |
project |
Project! | Rodzic projektu |
todos |
[Todo!]! | Zadania w tej liście |
todosCount |
Int! | Liczba zadań |
Typ TodoListsPagination
Pole | Typ | Opis |
---|---|---|
items |
[TodoList!]! | Tablica list zadań |
pageInfo |
PageInfo! | Informacje o paginacji |
Wymagane uprawnienia
Uprawnienia zapytań
Operacja | Wymagane uprawnienie |
---|---|
todoList |
Must be authenticated |
todoLists |
Must be authenticated and in company |
todoListQueries.todoLists |
Must be authenticated and in company |
Uprawnienia mutacji
Operacja | Dozwolone role na poziomie projektu |
---|---|
createTodoList |
OWNER, ADMIN, MEMBER |
editTodoList |
OWNER, ADMIN, MEMBER, CLIENT |
deleteTodoList |
OWNER, ADMIN, MEMBER |
markTodoListAsDone |
OWNER, ADMIN, MEMBER |
markTodoListAsUndone |
OWNER, ADMIN, MEMBER |
Uwaga: Użytkownicy z rolą CLIENT mogą edytować listy, ale nie mogą ich tworzyć ani usuwać. Użytkownicy z rolami VIEW_ONLY lub COMMENT_ONLY nie mogą tworzyć, edytować ani usuwać list.
Odpowiedzi błędów
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"
}
}]
}
Błąd maksymalnych list
{
"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"
}
}]
}
Ważne uwagi
- Limit list: Każdy projekt może mieć maksymalnie 50 list
- Miękkie usunięcie: Usunięte listy są przenoszone do kosza i mogą być potencjalnie odzyskane
- Zarządzanie pozycjami: Podczas tworzenia list upewnij się, że pozycje się nie konfliktują. Używaj wartości inkrementalnych (1.0, 2.0, 3.0), aby umożliwić wstawianie między listami
- Dostęp oparty na rolach: Listy mogą być ukryte przed niektórymi rolami za pomocą uprawnień ProjectUserRoleTodoList
- Webhooki: Tworzenie, aktualizacje i usunięcia list wyzwalają webhooki, jeśli są skonfigurowane
- Śledzenie aktywności: Wszystkie operacje na listach są rejestrowane w kanale aktywności
- Aktualizacje w czasie rzeczywistym: Zmiany w listach są publikowane za pośrednictwem subskrypcji dla aktualizacji w czasie rzeczywistym
Powiązane operacje
- Użyj
todos
zapytania, aby pobrać zadania w ramach listy - Użyj
createTodo
mutacji, aby dodać zadania do listy - Użyj
moveTodo
mutacji, aby przenieść zadania między listami - Subskrybuj zmiany w listach, używając
subscribeToTodoList
subskrypcji