Комментарии 14
Я был бы доволен и того больше если бы статья была не столько про конкретный способ управления проектами, у каждого своё мнение как и чем управлять, а про полученный опыт. Например, почему именно эти плагины - они лучшие, или безальтернативные, или что?
Потом - про то, как это работает. Коротко. Чтобы не обращаться только к прочитавшим документацию и по Obsidian плагинам, и DataView, и Tasker. Потому что про шаблоны Tasker ещё можно строить предположения, а про «Блок dataviewjs шаблона task» совершенно не понятно и где лежит, и почему и когда выполняется, и откуда в нём берётся dv.
И только потом - про конкретный код который неплохо было бы убрать под спойлер.
И как бонус, если Вы в этом разбирались - на сколько страшно брать незнамо что из community plugins. Если пользовать планшет, то вроде под iPadOS не побалуешь (да?), а если десктоп?
К варианту, который описан в статье я пришел постепенно, исходя из своих требований к удобству ведения проектов. Эти требования я описал в блоке "Алгоритм работы с проектом". Первоначально я формировал заметки с проектами и задачами вручную, используя вставки через ![[]]
. Это не очень удобно и я сделал автоматизацию, которой и решил поделиться. Я понимаю что это подойдет не всем, но возможно кому-то поможет.
Templater и Dataview это одни из самых популярных плагинов для Obsidian с миллионами скачиваний и открытым кодом (что сильно снижает риски, но полной безопасности никто не гарантирует). Возможно есть и более подходящие плагины, но эти активно используются в комьюнити Obsidian и имеют документацию. Calendar, Periodic Notes и Kanban тоже популярны. Их я использовал и ранее, поэтому использую и в автоматизациях. Про Tasker ничего сказать не могу, видимо Вы имели ввиду Templater.
Всего шаблонов четыре: main, daily, project и task. Каждый шаблон это отдельный файл. Шаблоны main и daily описаны одним блоком кода. Шаблоны project и task я разделил на несколько блоков, чтобы не делать сплошную портянку кода. Для project это блок с properties и dataviewjs. Для task это properties, дополнительный шаблон и dataviewjs.
Код действительно стоит убрать под спойлер, спасибо за совет.
Я использую Obsidian только на десктопе. Заметки синхронизируется с личным облаком Nextcloud. При желании это позволяет посмотреть заметку и с телефона, так как они хранятся в обычном текстовом формате с md разметкой.
Зря Вы не описали верхний уровень - что как работает. Я сам посмотрел что спрашивал - блок Templater просто вписывается в страницу и заменяет себя на создаваемый скриптом текст. При этом некоторые вещи типа интерполяции строк не работают. Сколько раз и когда он выполнится - как повезёт. Кроме того, невозможно создать в странице интерактивные элементы и получить неиндексируемые данные.
Иными словами, такое «управление проектами» - на пределе возможностей этих двух плагинов. Получается как всегда. Вот смотрите какие технологии, вот как можно. Приглядишься - да, так можно, но технологий нет, дальше стена. Для полного удобства, писать полновесный плагин - единственное решение, а это, по крайней мере если делать нормально, комп и Node.js, хотя и с Bun у меня работает.
А вот было бы описание верхнего уровня - не было бы разочарований. Но для нехитрого случая отслеживания японских онгоингов - можно и без полного удобства обойтись, даже Templater не понадобился, и не покидая iPad.
Вы имеете ввиду описание работы самих плагинов? Это немного выходит за рамки статьи. Я думаю что тут лучше будет почитать документацию конкретного плагина.
Пример интерполяции строк из кода:
const currentNoteName = app.workspace.getActiveFile()?.basename;
const headingToAdd = `### [[${currentNoteName}]]`;
За время использования я не сталкивался с проблемой, что текущий код не выполнился.
По поводу предела возможностей сказать сложно. Я планирую сделать еще пачку автоматизации, там будет видно.
Ну, точно такая же интерполяция в кодовом блоке dataview у меня не работала, ну и ладно.
Поставьте себя на место читателя. Он знает что есть такой Obsidian - о нём на Хабре писали. Что к нему есть плагины - они ко всему есть. Видит пример - просто работает, делает полезные вещи. Вопрос - как?
Откуда брать плагины? Какие брать плагины? Они все в Интернете в одну кучу свалены… А что Obsidian при попытке скачать сам предлагает именно эти в числе первых с отрывом по числу скачиваний на порядки - это он не знает, я сам сегодня узнал.
Что все плагины и внутри Obsidian тоже свалены в одну кучу и захламляют пространство имён - тоже. Что каждый плагин реагирует лишь на ограниченный набор событий - тоже. Зачем Templater когда в Obsidian уже есть темплеты - тоже.
Самое моё, и я гарантирую - не только моё, недоумение - куда совать код для dataview - тоже не знает. Не знает общий принцип - dataview читает только индексируемые данные и ничего не может менять, templater может только создать ноут и дальше тоже не может менять. Что HTML в ноуте писать можно, но JavaScript работать не будет и поэтому для dataview нужен кодовый блок - тоже. И отсюда море ограничений убивающее океан фантазий.
Про предел возможностей. Я хочу кнопку которая бы переносила файл из одной папки в другую и меняла в нём текст. Я хочу кнопку которая бы меняла дату по которой идёт поиск в dataview. В Интернете видел, что Obsidian на технологиях Интернета работает - знаю, вот и хочу. Ответ на это один - свой плагин пиши, скорее всего. Или сразу пиши, или после изучения пары тысяч уже написанных…
Про комментарии к коду. Это последняя очередь. Кто JavaScript читает (а кто его не читает?) - тому комментарии не нудны. Кто не читает - тому не особо помогут.
Вот это и есть верхний уровень без которого что-то рассказывать можно только специалистам по Obsidian. Preaching to the chorus называется. Интересующихся управлением проектами - мало, конкретными примерами использования плагинов - больше, возможностями Obsidian - много.
А можете поделиться конфигурацией?)
Уточните, какая конфигурация Вас интересует?
Основные плагины, которыми пользуюсь, я перечислил. У меня еще установлены Note Refactor, Advanced Tables и Tasks. Они в автоматизациях не участвуют, поэтому их указывать не стал. Тему использую Things.
В заметке Homepage использую CSS MCL Multi Column. Его брал отсюда: https://github.com/efemkay/obsidian-modular-css-layout.
Раз статья больше про конкретику, то немного покритикую техническую часть:
Судя по тому что автор использует имена периодических заметок [dd-mm-yyyy] - он ведет их менее месяца, иначе заметил бы что в списке будут идти сначала все заметки первого дня каждого месяца за все года, затем второго и т.д. а не по порядку даты... что немного не удобно, если искать конкретный день вне плашки календаря.
Автор приводит ссылки на документацию по плагинам, но возможно сам туда не заглядывал... иначе как объяснить целую страницу кода для ручного парсинга даты и формирования ссылок вместо встроенных методов...← [[<% tp.date.now('YYYY-MM-DD', -1, tp.file.path(true), 'YYYY-MM-DD') %>]] | [[<% tp.date.now('YYYY-MM-DD', 1, tp.file.path(true), 'YYYY-MM-DD') %>]] →
В следующих шаблонах делается примерно аналогичное с добавлением ссылок на проект... хотя список их можно было просто вести динамическим запросом dataview...
но возможно просто у него такой стиль, и в конечном счете будет тоже самое)
Ежедневные заметки веду с ноября 2023 (до этого обходился без них). Формат даты в таком виде мне кажется более удобным.
Сами шаблоны были переписаны уже пару раз. Но грубо говоря я ими пользуюсь около месяца. Даты фильтруются в шаблоне.
function datesFromDailyNotes(filename) {
return moment(filename, 'DD-MM-YYYY').toDate();
}
pages.sort((a, b) => datesFromDailyNotes(a.file.name) - datesFromDailyNotes(b.file.name));
В итоге получается так:

В документацию заглядывал. В коде же используются методы из нее (возможно не везде, где это было бы уместно).
По поводу tp.date.now
Вы правы, так действительно удобнее. Я не подумал что тут можно использовать tp.file.path(true)
, чтобы привязаться к дате заметки, а не текущей.
Было бы совсем нелишним, если бы вы добавили примеры заполненных шаблонов и выводов Dataview.
И ещё кажется, что оборачивать всё в try/catch это излишне. Templater/Dataview и так ругнутся, если будет ошибка.
Спасибо за статью
Полезная статья, однако было бы удобно, если бы была ссылка на github с .md шаблонами и папками для ленивых :)
Выложил код на github: https://github.com/Ashkaar-gh/obsidian-project-automation
Управление проектами и задачами в Obsidian