- PVSM.RU - https://www.pvsm.ru -
Всем привет, меня зовут Влад. Сегодня я хочу рассказать как и с помощью чего, я веду свои задачи в Obisiadn.
C таск трекерами у меня долгая история: я много сидел на Todoist, потом перешел на TickTick. Не знаю на сколько это было связанно с сами таск трекерами или уже с моими личными проблемами - но по итогу они мне мало помогали закрывать задачи, что личные, так и по работе. Потом у меня появился iPad и годовая подписка на Microsoft Office. Так я и перешел на OneNote.
Примерно в тоже время после тренинга по эмоциональному интеллекту было принято решение делить задачи на сферы жизни: Быт, Работа, Яркость жизни, Хобби и тд, - чтобы можно было заметить перекос в ту или иную сторону. Текстовый редактор, как по мне, в отличие от приложений, дает больше свободы в структурировании и нахождении своего способа организации дел. Если не знаешь как тебе удобно (а ты не знаешь, если только начинаешь вести задачи), то приложения будут структурировать хаос, а не наводить порядок.
Подписка закончилась, продлевать было лень и не очень то и хотелось за один OneNote платить. Так я и перешел на Obsidian, который и по сей день является моим основным приложением для всего.
По началу я разделял задачи руками, сферы жизни - заголовки, месяц - отдельный файл. Но спустя некоторое время, как бы обойтись без французкого... мне надоело это делать руками, Я ЖЕ ПРОГРАММИСТ подумал я и начала автоматизировать свою работу.
Начал я с плагина Tasks, который позволяет писать кастомные запросы на задачи со всего хранилища. И это был ад.
Сама возможность использовать мой любимый Javascript в запросах не может не вызывать уважения к плагину, но то как это пишется... примерно так
filter by function
const SPRINT_P = 'SPRINT';
const SPRINT_START_DATE = '2025-03-17';
const SPRINT_END_DATE = '2025-03-30';
const hasSprintTag = () => {
const sprintTagBegin = '#Спринт25';
const currentSprint = '03С2';
const sprintTag = sprintTagBegin+currentSprint;
return task.tags.includes(sprintTag);
};
...
Про дебагинг я вообще молчу, один раз я искал пробел после слеша целый час, может быть если я изначально знал, что искать, то нашел бы быстрее, в том же Templater с этим проблем нет, я конечно не пробовал Dataview, но может быть там все хорошо.
Сейчас мой запрос работает на свойствах файла и тегах задач.
Структура самого шаблона:
Инбокс - задачи, которые появились в текущем спринте
Задачи - блок с запросом Tasks
Сам результат запроса выглядит так:

Символом параграфа отмечаются категории в тегах, двойными - родительские задачи (так удобнее понимать к чему относиться задача). В "Не сгруппировалось" попадают задачи без категории
Описание свойств, которое используются в запросе:
|
Свойство |
Описание |
Значения |
|---|---|---|
|
HAS_TASK |
Чтобы задачи попали в запрос у Файла должно быть это свойство |
Не имеет значения |
|
SPINT |
свойство отвечающее за то, зависят ли задачи от тега со спринтом |
DONE - попадает в запрос, если дата завершения попадает в период спринта TAG - задачи попадают в тот спринт, который указан в теге задачи |
|
GROUPING |
отвечает за группировку |
HEADING - группировка по заголовкам (нужна для списков, где есть несколько категорий) CUSTOM - группировка по свойствам файла |
|
GROUP_NAME |
Название группы |
Строка |
|
SUBGROUP_NAME |
Название субгруппы |
Строка или |
На сегодня я использую только два набора свойств для списков:
|
Свойство |
|
Значения |
|---|---|---|
|
Описание |
Списки с несколькими категориями, например, беклог на год или на квартал |
Список под конкретную категорию Пример: Похудение, Петпроект %NAME%, и тд |
|
SPINT |
TAG |
DONE |
|
GROUPING |
HEADING |
CUSTOM |
|
GROUP_NAME |
- |
{{Название категории}} |
|
SUBGROUP_NAME |
- |
$FILENAME |
Шаблон с запросом Tasks: https://github.com/imabramon/my-templates [1]
После агрегирования главной проблемой стала работа с тегами, так как вся группировка основана них. По началу я еще не уставал вручную писать, но, например, когда начинается спринт, пишешь очень много задач, многие их которых относятся к разным категориям, то это надоедает. Так я написал первые версии шаблоны на JS. В целом ничего сложного, бьешь tp.selection на строки и добавляешь в конец теги из промта.
Но планы были грандиозные (да и сейчас остались), вот например есть такой список:
- [ ] task
- [ ] sub parent
- [x] sub 1
- [ ] sub 2
- [x] sub 3
Хотелось бы шаблон который сможет превратить его в
- [ ] task
- [ ] sub parent
- [ ] sub 2
- [x] task
- [x] sub parent
- [x] sub 1
- [x] sub 3
Т.е. разделить на завершенную часть и незавершенную. Например у меня есть большая задача в инбоксе, и я не хочу переносить всю ее в беклог или следующий спринт. Так или иначе были идеи шаблонов, для которых нужна была абстракция, чтобы можно было удобнее работать, да и перспектива писать код в обсидиане меня не впечатляла. Так я перешел в привычный vs code.
К сожалению не так часто удавалось или даже хотелось писать из-за личных загонов. Но по спустя временя, понял что это было интересно, как говорил Жан Пьер Польнореф. Потихоньку писал парсер, фиксил баги, писал тесты, фиксил баги, думал какие шаблоны сделать еще и фиксил баги. Не хватает пару обычных для коллекций функций по типу map, reduce и тд, но то что уже есть сейчас хватит, чтобы покрыть большое количество запросов (в первую очередь моих).
По итогу сейчас есть следующие шаблоны:
добавление и удаление тегов - тут понятно
разделение по завершенности - пример выше
счетчик - создает однотипные задачи вида - [ ] N, удобно использовать для трекеров привычек
Так же есть 2 шаблон использующие понятие категории (сферы жизни):
разделить по категории - удобно сортировать инбокс
теги как у родителя - так же удобно работать с инбоксом, так как обычно у меня нет пересечений по категориям
Более подробно про сами шаблоны с примерами и JS API, которое есть на данным момент есть, можно найти на гитхабе: https://github.com/imabramon/templater_tasks_processor [2]
Пациент в глубокой коме...
Пока все это делал, довольно много устал от этого проекта. Вот в начале каждого пета есть некий тильт, так как еще не очень шаришь, мало что есть и много что надо сделать, в середине самый пик приятных эмоций - уже много что есть, начал уже жестко шарить за область проекта, но вот в конце, когда надо полишить - самый тягостный период разработки, как по мне. Понимаешь, что так оставлять нельзя, но и доделывать очень тяжело (возможно у меня SVG).
Надеюсь получилось не слишком душно и кому-нибудь это поможет для работы в obsidian.
Автор: im_abramon
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/416153
Ссылки в тексте:
[1] https://github.com/imabramon/my-templates: https://github.com/imabramon/my-templates
[2] https://github.com/imabramon/templater_tasks_processor: https://github.com/imabramon/templater_tasks_processor
[3] Источник: https://habr.com/ru/articles/899042/?utm_source=habrahabr&utm_medium=rss&utm_campaign=899042
Нажмите здесь для печати.