Operationen mit Aufgaben
Eine neue Aufgabe hinzufügen
Um eine neue Aufgabe zur Liste hinzuzufügen, verwenden Sie die Methode addTask(). Das folgende Beispiel fügt eine Aufgabe unter einem angegebenen übergeordneten Element hinzu:
list.addTask({
id: "1.1.1",
project: "first",
parent: "1.1",
targetId: "1.1.2",
reverse: true,
task: {
text: "Task 1.1.1",
}
});
Eine Aufgabe kopieren und einfügen
Kopieren und Einfügen
Die schnellste Möglichkeit, eine Aufgabe zu kopieren und einzufügen, bietet die Methode copyTask(). Übergeben Sie die folgenden Parameter:
id— ID der zu kopierenden Aufgabeproject— ID des Zielprojekts, sofern vorhandentargetId— ID der Zielaufgabe, an der die kopierte Aufgabe eingefügt wird- weitere Parameter sind optional
Der folgende Code-Ausschnitt kopiert eine Aufgabe in ein neues Projekt:
list.copyTask({
id: "1.1", // ID der zu kopierenden Aufgabe
join: false, // setzt Kopien anderer Aufgaben zurück und kopiert nur diese Aufgabe
project: "p_2", // ID des Zielprojekts (sofern vorhanden)
parent: "2.1", // ID der zukünftigen übergeordneten Aufgabe
targetId: "2.1.2", // ID der Zielaufgabe
reverse: true // Aufgabe vor der Zielaufgabe einfügen
});
In die Zwischenablage kopieren
Um eine Aufgabe in die Zwischenablage zu kopieren, ohne sie einzufügen, übergeben Sie die Aufgaben-ID an die Methode copyTask():
list.copyTask({
id: "1.1"
});
IDs anderer Kopien beibehalten
Um eine Aufgabe zu kopieren und zuvor kopierte Aufgaben beizubehalten, übergeben Sie join: true an die Methode copyTask(). Andernfalls kopiert die Methode nur die angegebene Aufgabe und setzt alle früheren Kopien zurück.
Aus der Zwischenablage einfügen
Fügen Sie eine kopierte Aufgabe aus der Zwischenablage an der gewünschten Stelle ein — über die Methode pasteTask(). Der folgende Code-Ausschnitt fügt die kopierte Aufgabe neben einer Zielaufgabe ein:
list.pasteTask({
parent: "1",
targetId: "1.2",
});
Das Ereignis clone-task wird nach paste-task ausgelöst, wenn der Inhalt der Zwischenablage an der Zielposition landet. Der Callback erhält die übergeordnete ID, die Projekt-ID, die Ziel-ID sowie ein batch-Array mit den geklonten Aufgabenobjekten.
Eine Aufgabe aktualisieren
Um Parameter einer Aufgabe dynamisch zu ändern, verwenden Sie die Methode updateTask(). Das folgende Beispiel ändert den Text einer Aufgabe:
list.updateTask({
id: "1.1.1",
task: {
text: "Abgeschlossene Aufgabe"
}
});
Eine Aufgabe verschieben
Um eine Aufgabe an eine andere Position zu verschieben, verwenden Sie die Methode moveTask(). Der folgende Code-Ausschnitt verschiebt eine Aufgabe in ein anderes Projekt:
list.moveTask({
id: "1.1", // ID der zu verschiebenden Aufgabe
project:"p_2", // ID des Zielprojekts (sofern vorhanden)
parent: "2", // ID der zukünftigen übergeordneten Aufgabe
targetId: "2.1", // ID der Zielaufgabe
reverse: true // Aufgabe vor der Zielaufgabe platzieren
});
Eine übergeordnete Aufgabe wird zusammen mit ihren Unteraufgaben verschoben.
Eine Aufgabe löschen
Um eine Aufgabe zu löschen, verwenden Sie die Methode deleteTask():
list.deleteTask({ id: "1.2" });
Die Methode entfernt die Aufgabe zusammen mit allen ihren Unteraufgaben.
Eine Aufgabe auf- und zuklappen
Um eine Aufgabe einzuklappen, verwenden Sie die Methode collapseTask(). Die Methode erwartet die Aufgaben-ID als Parameter:
list.collapseTask({ id: "1.1" });
Um eine eingeklappte Aufgabe anhand ihrer ID aufzuklappen, verwenden Sie die Methode expandTask():
list.expandTask({ id: "1.1" });
Kontextmenü
Jede Aufgabe und jeder Benutzer verfügt über ein Kontextmenü. Verfolgen Sie dessen Aktivität mit zwei Ereignissen:
open-menu— wird ausgelöst, wenn das Menü geöffnet wird; liefert die Element-ID, den Menütyp und optional ein Array von Aufgaben-IDs (source) für Batch-Operationenclose-menu— wird ausgelöst, wenn das Menü geschlossen wird; liefert die Element-ID und den Menütyp
Das folgende Beispiel protokolliert die Lebenszyklusereignisse des Menüs:
list.api.on("open-menu", ({ id, type, source }) => {
console.log("menu opened for", id, "type", type, "source", source);
});
list.api.on("close-menu", ({ id, type }) => {
console.log("menu closed for", id, "type", type);
});
Änderungsprotokoll: Die Ereignisse open-menu und close-menu wurden in v1.1 hinzugefügt.
Eine Aufgabe als abgeschlossen oder offen markieren
Markieren Sie eine Aufgabe als abgeschlossen oder offen — über die Methoden checkTask() und uncheckTask(). Das folgende Beispiel zeigt beide Aufrufe:
list.checkTask({
id: "1.1.1",
manual: false
});
list.uncheckTask({
id: "1.1.1",
manual: false
});
Wenn manual: false, hängt das Ergebnis von taskShape.completed.behavior ab (siehe Referenz zu taskShape für Details).
Wenn taskShape.completed.behavior auf "auto" gesetzt ist, Sie aber einmalig manuell markieren möchten, setzen Sie manual: true:
list.checkTask({
id: "1.1.1",
manual: true
});
list.uncheckTask({
id: "1.1.1",
manual: true
});
Die Einrückungsebene einer Aufgabe ändern
Ändern Sie die Verschachtelungsebene einer Aufgabe dynamisch mit folgenden Methoden:
indentTask()— Verschachtelungsebene einer Aufgabe um eine Ebene nach unten verschiebenunindentTask()— Verschachtelungsebene einer Aufgabe um eine Ebene nach oben verschieben
Der folgende Code-Ausschnitt verschiebt eine Aufgabe eine Ebene tiefer:
const list = new ToDo("#root", {
tasks: [
{ id: "1", text: "Task 1 #tag1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
]
});
list.indentTask({ id: "1.2" });
console.log(list.getParentIds({ id: "1.2" })); // ['1.1', '1']
Das folgende Beispiel verschiebt eine Aufgabe eine Ebene höher:
const list = new ToDo("#root", {
tasks: [
{ id: "1", text: "Task 1 #tag1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
]
});
list.unindentTask({ id: "1.2" });
console.log(list.getParentIds({ id: "1.2" })); // []
Befindet sich die Aufgabe bereits auf der obersten Ebene, hat unindentTask() keine Wirkung.
Aufgaben filtern
Suchen Sie Aufgaben, die den angegebenen Kriterien entsprechen, mit der Methode setFilter(). Die Methode unterstützt den strict-Modus für exakte Übereinstimmungen. Der folgende Code-Ausschnitt filtert Aufgaben nach einem Hashtag:
// Daten nach den angegebenen Regeln filtern
list.setFilter({
match: "#tag1",
highlight: true,
strict: true
});
Um den Filter zurückzusetzen, übergeben Sie match: null:
// Filter zurücksetzen
list.setFilter({ match: null });
Rückgängig machen und Wiederholen
Die To-Do-Liste verfolgt den Änderungsverlauf standardmäßig. Um die letzte Operation rückgängig zu machen, rufen Sie die Methode undo() auf. Um eine durch undo() rückgängig gemachte Operation wiederherzustellen, rufen Sie die Methode redo() auf:
list.addTask({ task: { text: "New task" } });
list.undo(); // Hinzufügen rückgängig machen
list.redo(); // wiederherstellen
Der Umfang und die Tiefe des Verlaufs werden durch die Konfigurationseigenschaft history bestimmt. Weitere Informationen finden Sie unter Konfiguration → Änderungsverlauf.
Änderungsprotokoll: Die Methoden undo() und redo() wurden in v1.3 hinzugefügt.