В прошлой статье Obsidian + Dataview: Таблицы я рассказал про установку плагина Dataview, формирование таблиц с его помощью и разобрал 4 кейса его использования.
Dataview — это очень мощный и функциональный плагин, с помощью которого кроме таблиц можно так же формировать списки, календари и задачи.
Сегодня хотелось бы остановиться на задачах, тем более что Dataview позволяет сделать из Обсидиана task/todo-менеджер с календарём и возможностью ставить себе задачи на определённые даты, а затем просматривать выполненные\невыполненные задачи за конкретные дни.
Про исходники
По вопросам из прошлой статьи я понял, что неплохо было бы сразу давать исходники того хранилища по которому написана статья. Чтобы читатели сразу открывали исходник и шли по нему не перепечатывая то, что я уже напечатал. Плюс я думаю, что найдутся такие читатели, которым с исходниками и статья не нужна будет.
Вот сразу ссылка на архив, чтобы можно было скачать, распаковать и открыть обсидианом как хранилище.
Про ошибку Error Fatal
(Скорее всего в углу всплывёт ошибка «Error fatal. not a git repositiry», ткните по ней и работайте дальше, я не смог победить её. Она вылезает из-за того, что я выгружаю всё из тестового хранилища в свой гитхаб, чтобы вы могли быстро скачать, а сам плагин Obsidian-git в только что скачанном хранилище не настроен, пощупать сами исходники эта ошибка не мешает. Если она разражает, то удалите в скачаной базе плагин Obsidian-git).
Как работают задачи в двух словах
-
В данной статье я не рассказываю как установить плагин Dataview, т.к. уже рассказывал об этом в первой статье.
-
Задачи так же как и таблицы работают на встроенном языке запросов.
-
Чтобы отобрать все задачи со всего своего хранилища достаточно в любую заметку вставить следующий код (Если в вашем хранилище Обсидиан много задач, то в код лучше добавить что-то ограничивающее выдачу, например FROM #задачи1 , иначе Обсидиан может долго долго формировать в списке все 100500 задач, которые у вас есть):
```dataview TASK FROM #задачи1 ```
-
Т.е. должно получиться что-то подобное:

Добавляем параметр к задачам
-
Предположим мы хотим ввести градацию сложности в каждой задаче.
-
Для этого в каждую заметку можно дописать соответствующий параметр [сложность:: 1].

-
Теперь мы можем по этому параметру: группировать, сортировать и отбирать задачи.
-
Для этого добавляем:
-
«GROUP BY сложность» — для группировки;
-
«SORT сложность ASC» — для сортировки (ASC — по возрастанию, DESC — по убыванию);
-
«WHERE сложность = 1» — для отбора.
-

-
Чтобы отобрать только выполненные задачи пишем «WHERE completed»:

-
Чтобы отобрать только невыполненные задачи пишем «WHERE !completed»:

-
Таким образом можно добавить сразу несколько параметров к одной задаче, этими параметрами могут быть:
-
Контекст — как по GTD (Телефон, Компьютер). И в дальнейшем сделать по заметке на каждый контекст и когда телефонное настроение открывать заметку «Телефон» и перед нами будут все задачи, где от нас требуется сделать звонок, при этом сами задачи могут быть расположены в соответствующих проектах.
-
Место (Дом, Офис, Торговый центр, Клиент) — и в дальнейшем всё так же как по контексту — можно добавлять к каждой задаче параметр места.
-
Сложность или трудозатраты — т.е. какая это задача, пятиминутная или часовая?
-
Добавляем дату к задачам и отбираем задачи на сегодня
-
Предположим нам надо задавать дату каждой задачи.
-
Назовём этот параметр [Дата:: 2023-01-23]
-
Но каждый раз печатать эти 19 символов для каждой задачи — это очень сложно и долго, давайте автоматизируем это.
Ставим плагин QuickAdd, включаем его и идём прописывать хоткеи:
-
В первом поле пишем название нашего хоткея, например «Сегодня», т.е. этот хоткей будет проставлять сегодняшнюю дату.
-
Во втором выпадающем списке выбираем «Capture».
-
Потом жмякаем на кнопку «Add Choice».
-
Затем ткнём на молнию => это добавит данный хоткей в возможность назначения комбинации клавиш в обсидиане.
-
Затем настраиваем созданный хоткей => жмём на шестерёнку.

-
В открывшимся окне ставим две галки «Capture to active file» и «Capture format».
-
Затем в поле «Capture format» пишем следующий текст: «,[Дата:: {{DATE}}],» [[2023-01-23 — Obsidian — Tragic Panda.png]].

-
Так же можно добавить сразу подобные хоткеи на любые даты и вообще текст, который вам нужен:
-
«,[Дата:: {{DATE:yyyy-MM-DD+1}}],» — данная сточка проставит завтрашнюю дату;
-
«,[Дата:: {{DATE:yyyy-MM-DD-1}}],» — эта вчерашнюю дату;
-
«,[Дата:: {{DATE:yyyy-MM-DD+7}}],» — а эта «через неделю»;
-
Можно добавить все три сложности, что мы раньше создали, для этого в Caprute format пишем «,[сложность:: 1],».
-
-
Далее нам надо непосредственно прописать сочетания клавиш нашим хоткеям.
-
Идём в настройки => Сочетания клавиш => Пишем в поле QuickAdd.
-
Там видим все наши созданные хоткеи и назначаем им сочетания клавиш.
-
У меня хоткеи такие: ALT+S — сегодня; ALT+D — завтра; ALT+F — через неделю; ALT+1/2/3 — сложность1/2/3.

-
Теперь присваиваем всем задачам в проекте даты:

-
Затем пишем вот такой код (Мы отбираем все задачи с нужным нам тегом, с непустой датой, а так же с датой сегодня и ранее, все незавершённые задачи, группируем их по дате)
```dataview TASK FROM #задачи3 WHERE Дата != empty WHERE Дата <= date(today) WHERE !completed GROUP BY Дата ```
-
Должно получиться так (эта заметка — динамичная, т.е. каждый новый день сюда будут добавляться задачи с соответствующими датами, по сути это заметка «СЕГОДНЯ» в todo-листах.

-
Ну и на конец можно отобрать предстоящих задачи, невыполненные, сгруппированные сразу и по сложности и по дате (внутри скобок list() можно менять местами параметры или добавлять еще), с ограничением выдачи = 3 (За ограничение отвечает строчка LIMIT 3 и в зависимости от её положения в коде при сложных запросах будут разные результаты), т.е. три ближайших задачи, вот он код:
```dataview TASK FROM #задачи3 WHERE Дата > date(today) WHERE !completed GROUP BY list(сложность, Дата) as abs SORT abs asc LIMIT 3 ```
-
Вот таким должен быть результат (Я не нашёл способа не дублировать каждую родительскую группировку и выглядит это не очень красиво, но это работает, а это главное)

Добавляем календарь и отбираем задачи на любой день
-
После того как мы получили возможность отобразить все сегодняшние и предстоящие задачи хотелось бы еще отобразить задачи на конкретный день.
-
Захотели что-то сделать в обсидиане? Что надо сделать в первую очередь? Правильно — поставить плагин, потом настроить, а потом еще поставить один плагин.
-
Ставим плагин Calendar, в настройках плагина можно сразу снять галку «Confirm before creating new note».

-
Затем ставим плагин Templater.
-
Далее нам надо создать: папку для ежедневных заметок (Daily Notes), папку для шаблонов (Template) и в ней первую заметку-шаблон (Daily Note).

-
Настраиваем встроенный плагин «Ежедневные заметки», указываем файл шаблона ежедневной заметки (Daily Note), указываем папку, куда будут складываться ежедневные заметки (Daily Notes), настраиваем представление даты: YYYY-MM-DD:

-
Настраиваем Dataview: Отключаем предупреждение о пустом результате, устанавливаем интервал обновления Dataview (т.е. выполнили задачу на заметке Dataview, через сколько времени представление обновиться и она оттуда пропадёт, значение в милисекундах), указываем формат даты yyyy-MM-dd, ставим галку «Автоматически проставлять параметр [completion:: 2023-01-23]».

-
Затем идём в файл-шаблон ежедневной заметки (Daily Note) и там пишем заголовок «# Запланированное на сегодня:», а под ним вот такой код (в строчке WHERE отбираются задачи по дате, а дата берётся из названия файла, а файл ежедневной заметки у нас будет называться как раз YYYY-MM-DD):
```dataview TASK FROM #задачи4 WHERE Дата = date({{Title}}) WHERE !completed ```
-
В этом же файле пишем заголовок «# Выполненные за сегодня:», а под ним вот такой код:
```dataview TASK FROM #задачи4 WHERE completion = date({{Title}}) WHERE completed ```

-
Теперь берём проект, в котором у нас перечислены задачи с параметром «Дата»

-
Если мы всё сделали верно или взяли мои исходники, то у нас должно получиться что-то подобное. И в какую дату бы мы не ткнули — у нас создаётся заметка на день, в которой уже есть код Dataview, который отбирает все запланированные и выполненные задачи за этот день.

Заключение
Надеюсь этот гайд поможет вам взглянуть на Обсидиан под другим углом.
Далее в планах раскрыть тему периодических задач через плагины Advanced URI или Tasks.
Не стесняйтесь задавать вопросы, если что-то не получается или не понятно.
Если нашли опечатку в тексте, то выделяйте её и жмите CTRL + Enter и тогда мне в личку прилетит репорт об опечатке.
ссылка на оригинал статьи https://habr.com/ru/articles/712038/
Добавить комментарий