Úkoly a položky seznamu

Na úkoly existují v Obsidianu speciální pluginy ale je možné využít i dataview a možnosti jak s úkoly a také položkami seznamu pracovat jsou velké.

Základní syntaxe pro vyhledání úkolů
dv.tasklist().file.tasks
Existuje ještě druhá syntaxe pomocí které můžeme vyhledávat jak úkoly tak položky seznamu
dv.tasklist().file.lists

v seznamu lists jsou uloženy všechny položky seznamu což znamená

  • nečíslované seznamy
  • číslované seznamy
  • úkoly

v seznamu tasklist jsou pouze úkoly
ale pozor pokud potřebujeme přidat k úkolu nějaké informace buď seznam nebo prostý text stačí ho zadat s “odskočením“ a tyto informace ze ve výpisu úkolů zobrazí jako součást úkolu

Příklad

- [ ] úkol ke splnění
 - doplňující informace k úkolu
- [ ] druhý úkol
 doplňující informace k úkolu

Vyhledávání ze kterých poznámek se mají úkoly vyhledávat funguje stejně jako u seznamů a tabulek

Příklady

dv.pages() - všechny poznámky
dv.pages("#books") - všechny poznámky obsahující štítek books
dv.pages("-#agenda") - všechny poznámky které neobsahují štítek agenda
dv.pages('"agenda"') - všechny poznámky ve složce agenda (pozor na kombinaci uvozovek a apostrofu, první apostrof potom uvozovky, obráceně to nefunguje)
dv.pages([[Home]]) - soubory které obsahují zpětný odkaz na poznámku s názvem Home.

Pokud při práci s poznámkami měníme názvy složek a poznámek může přijít vhod funkce dv.current která vrátí název složky nebo poznámky ve které je kód dataview.

dv.pages('"' + dv.current().file.path + '"') - poznámka ve které je kód
dv.pages('"' + dv.current().file.folder + '"') - složka ve které je uložena poznámka s kódem

Hotové a nehotové úkoly

Jak rozlišíme úkoly a položky seznamu ?
položky seznamu mají vlastnost tasks nastavenou na false
where(t => t.task false)
příklad celého scriptu
dv.taskList(dv.pages().file.lists.where(t=>t.taskfalse)
přeloženo - najdi a zobraz všechny položky seznamu ve všech poznámkách

Úkol obsahuje text

Je potřeba vyhledávat úkoly které obsahují konkrétní text. Tento způsob je možné použít například na vyhledání úkolů které neobsahují štítek (tag).
dv.taskList(dv.pages().file.tasks.where(t => !(t.text.contains("#"))))
přeloženo - najdi všechny úkoly u kterých se v textu nevyskytuje znak #

nebo naopak obsahují konkrétní štítek
dv.taskList(dv.pages().file.tasks.where(t => t.text.contains("#tag")))
přeloženo - najdi všechny úkoly které obsahují štítek s názvem #tag

Položky pod nadpisem

Dalši možností je vyhledávání úkolů nebo položek seznamu které se vyskytují pod určitým nadpisem. Zde je několik možností které si uvedeme rovnou s příklady

  • nadpis přesného znění
    .where(t =>t.section.subpath "nadpis")

  • pod všemi nadpisy kromě uvedeného
    .where(t =>t.section.subpath != "nadpis")

  • nadpis obsahující konkrétní text
    .where(t =>t.section.subpath.contains("nadpis")

  • pod všemi nadpisy které neobsahují konkrétní text
    .where(t => !t.section.subpath.contains("nadpis")

  • pod všemi nadpisy začínajícími na slovo seznam
    .where(t=>t.section.subpath.substring(0,6) "seznam")

Pokud potřebujeme zadat dvě podmínky které mají hledané výsledky splňovat použijeme tento způsob zápisu
.where(t=>t.section.subpath.substring(0,6) "seznam" && t.task true)
Tímto způsobem můžeme např. vyřešit problém kdy část úkolů je třeba seznam věcí na dovolenou a část jsou skutečné úkoly