Obsidian: за гранью заметок. Трекинг задач
Заметки и задачи в виде чек-листа мы обсудили теперь перейдем к трекингу выполненных задач. Созданный чек-лист может содержать большое количество задач и отслеживать его будет не просто, поэтому создадим трекинг задач с использованием плагина DataView.
Плагин DataView использует язык запросов DQL, который очень похож на SQL и используется для запросов к метаданным в заметках Obsidian. В следующем запросе мы формируем как будет выглядеть наша таблица.
TABLE WITHOUT ID
choice(task.completed, "🟢", "⚪️") AS "Статус",
choice(task.name >0, task.name, (regexreplace(task.text, "\[.*$", ""))) AS "Задача",
choice(task.notes,
"📄 " + task.notes + "",
"🚫 Нет") AS "Заметка",
choice(
task.state > -1,
choice(lower(task.state) = "успех", "🟢 Успех",
choice(task.state = "провал", "🔴 Провал", "⚪️ NA")),
"⚪️ NA"
) AS "Результат",
choice(task.loglink,
"📄 " + task.loglink + "",
"🚫 Нет") AS "Журнал",
task.comments AS "Комментарий"
FROM #checklist
FLATTEN file.tasks AS task
Данный запрос ищет в хранилище Obsidian метку #checklist, а FLATTEN преобразует строковые данные в подобие массива, который будет обрабатываться.
Если в задачах чек-листа есть ссылки на «Заметки» или на файлы журналов, то в трекинге задач можно просмотреть эти результаты. Если навести мышь на ссылку, то она покажется в отдельном окне. Что удобно при изучении информации во время проведения работ.
Для небольшого удобства в начале трекинга задач можно сделать заголовок «Незавершенные задачи», скопировать запрос выше, но добавить условие WHERE после FLATTEN:
…
FLATTEN file.tasks AS task
WHERE task.completed = false
В результате будет отображаться таблица со всеми незавершенными задачами, а в общей таблице будут отображаться все задачи в чек листа.
Для статистики можно использовать следующий запрос.
TABLE WITHOUT ID
(length(filter(file.tasks.completed, (t) => t = true))) AS Завершённых,
(length(file.tasks.text)) - (length(filter(file.tasks.completed, (t) => t = true))) AS "Незавершенных",
(length(filter(file.tasks.completed, (t) => t = true))) / (length(file.tasks.text)) * 100 AS "% Завершено",
(length(file.tasks.text)) AS Всего
FROM #checklist
Он будет показывать сколько всего задач в чек листе сколько завершено задач и сколько не завершено.
Можно использовать dataviewjs, которые позволяет делать более крутые вещи по отображению данных, но требует дополнительного изучения и на данный момент не будет рассматриваться.
#Внутрянка #Организация