
На этот раз будет история, хах. Когда-то давно я придумал хак для автоматической генерации Mermaid-диаграмм с помощью DataviewJS в Obsidian. Естественно, сразу появилась идея динамически отображать в хранилище структуру системных заметок.
Я намудрил с рекурсивными вызовами, потому что так мне казалось элегантнее, хотя любой нормальный программист увидел бы в этом оверинженеренную лапшу. Но в любом случае это работало.
Позже у меня системных заметок стало довольно много, и всё чаще приходилось перестраивать их структуру. В целом ничего сложного. Посмотрел на диаграмму, разобрался с типами заметок и связями, затем изменил нужные метаданные.
Но всё-таки захотелось интерактива.
Возможно, по моему другому плагину Metadata Validator вы уже заметили, что я часто решаю проблемы через выделение примитивов и определение допустимых операций. Заметили же?)
Поэтому появилась идея декларативно описать типы заметок и связи между ними, а кодом уже обеспечить соблюдение этих правил и отобразить всё визуально. Так и появился Bases Structure.
Работает так. В конфигурации Bases можно описать такую структуру:
- type: structure name: Structure inherit: - project types: Area: tag: area children: Project: area Project: tag: project children: Task: project Task: tag: task children: Task: parent Note: file.backlinks Note: tag: note
Получится такая иерархия:
- Area - Project - Task - Task - Note
Логично выглядит, правда?)
Дальше плагин отображает эту структуру и позволяет переставлять заметки прямо на графе. Можно сохранять тип заметки или менять его при переносе. Например, когда Note должна превратиться в Project и оказаться внутри нужной Area.
Свойства и связи в самих заметках плагин меняет автоматически.
То есть базой теперь можно управлять визуально. Думаю, Zsolt был бы в восторге, так как тут и структурированный граф, и визуал.
Плагин доступен в Community store по названию Bases Structure.
P.S. Простите, не могу не пошутить. У папочных адептов, вероятно, челюсть должна отвиснуть от того, что они могут менять структуру заметок прямо на лету, при этом сохраняя весьма жесткую иерархию.
