Ú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ámkydv.pages("#books") - všechny poznámky obsahující štítek booksdv.pages("-#agenda") - všechny poznámky které neobsahují štítek agendadv.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óddv.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