Zurück zur Startseite

DataviewJS und Meta Bind für Obsidian-Aufgaben nach Datum

Der Artikel beschreibt die Implementierung einer interaktiven Seite in Obsidian zum Anzeigen von Aufgaben an einem ausgewählten Datum mit Meta Bind und DataviewJS. Code-Aufschlüsselung, Plugin-Installation und Nutzungsnuancen. Geeignet für Middle-/Senior-Entwickler mit Obsidian.

Dynamische Obsidian-Aufgaben: Datum per Klick mit Meta Bind
Advertisement 728x90

Interaktive Aufgabenansicht in Obsidian nach ausgewähltem Datum mit Meta Bind und DataviewJS

Meta Bind und DataviewJS ermöglichen die Erstellung einer Seite mit einem interaktiven Datumsauswahl-Widget zur Anzeige von Aufgaben. Im Lesemodus klicken Nutzer auf einen Kalender, wählen ein Datum – und die Liste aktualisiert sich automatisch. Diese Lösung nutzt YAML-Eigenschaften als Zwischenspeicher zwischen dem Eingabe-Widget und dem Ausgabe-Skript.

Dadurch entfällt das manuelle Bearbeiten von Tasks- oder Dataview-Abfragen, bei denen das Datum jedes Mal im Code geändert werden muss.

Einrichtung: Plugins installieren und YAML-Block erstellen

Installieren Sie die Plugins Meta Bind und Dataview über die Obsidian-Einstellungen. Aktivieren Sie in Dataview JavaScript-Abfragen.

Google AdInline article slot

Erstellen Sie eine Datei, z.B. DynamicTasks.md, mit einem YAML-Block:

---
selected-date: 2025-12-30
---

Der Anfangswert wird durch das Widget überschrieben.

Meta-Bind-Widget zur Datumsauswahl

Unterhalb des YAML-Blocks fügen Sie ein:

Google AdInline article slot

INPUT[datePicker: selected-date]

Im Lesemodus erscheint ein Kalender. Ein Klick öffnet einen Datumsauswähler, und der Wert wird in selected-date gespeichert.

DataviewJS-Skript: Filtern und Darstellen von Aufgaben

Nach dem Widget fügen Sie ein Skript zur Aufgabensuche hinzu:

Google AdInline article slot

const targetDate = dv.current().file.frontmatter["selected-date"];

const pages = dv.pages('"Work"')

.where(p => p.file.tasks

.where(t => !t.completed && t.due && t.due.toISODate() === targetDate)

.length > 0);

for (let page of pages) {

dv.el("div", dv.fileLink(page.file.path, false), {

attr: {

style: "display:inline-block; margin:8px 0 4px 0; padding:3px 8px; border-radius:6px; background:#e0f0ff; color:#0366d6; font-weight:500;"

}

});

dv.taskList(

page.file.tasks

.where(t => !t.completed && t.due && t.due.toISODate() === targetDate),

false

);

}

Skript-Erklärung

  • Datum lesen: dv.current().file.frontmatter["selected-date"] gibt einen String YYYY-MM-DD zurück.
  • Dateien durchsuchen: dv.pages('"Work"') durchsucht den Ordner. Der Filter prüft auf unerledigte Aufgaben mit due auf targetDate via .toISODate().
  • Darstellung: Für jede Datei – ein Badge-Link mit CSS-Stil und dv.taskList ohne Gruppierung (false). Ersetzen Sie "Work" durch Ihren Ordner.

Integration in ein Canvas-Dashboard

Ziehen Sie die Datei auf ein Canvas – Obsidian erstellt eine interaktive Karte. Passen Sie die Größe an. Arbeiten Sie direkt im Dashboard oder klicken Sie zur Navigation.

Voraussetzungen und Funktionen

  • Tasks-Syntax: Verwenden Sie das Emoji 📅 YYYY-MM-DD für due. Reguläre Checkboxen ohne Datum werden ignoriert.
  • Aktualisierungen: DataviewJS startet mit einer Verzögerung von ~1 Sekunde nach Datumsänderung neu.

Wichtige Punkte

  • Meta Binds interaktiver datePicker aktualisiert YAML ohne manuelle Bearbeitung.
  • DataviewJS filtert Aufgaben nach exakter Übereinstimmung due.toISODate() === targetDate.
  • Gruppierung nach Dateien mit individuellen Badges für UI-Kontrolle.
  • Automatische Darstellung in Canvas ohne zusätzliche Plugins.
  • Geeignet zur Überprüfung der Arbeitslast an zukünftigen Daten (Urlaub, Meetings).

Vorteile gegenüber statischen Abfragen

| Ansatz | Datum ändern | Lesemodus | Auto-Update |

|----------|---------------|--------------|-------------|

| Tasks due on DATE | Manuell im Code | Nein | Nein |

| Dataview due = date() | Manuell im Code | Nein | Nein |

| YAML + Meta Bind + DataviewJS | Klick-Kalender | Ja | Ja |

Die Lösung ist skalierbar: Fügen Sie Filter für Tags oder Status in .where() hinzu.

— Editorial Team

Advertisement 728x90

Weiterlesen