Promoted attributes - tvortsa/trilium GitHub Wiki

Продвигаемые атрибуты это attributes которые считаются важными и, следовательно, "promoted" в главный note UI. См пример ниже:

images/promoted-attributes.png

Вы можете увидеть заметку, имеющую вид формы с несколькими полями. Каждый из них является просто обычным атрибутом, с той лишь разницей, что они появляются на самой заметке..

Атрибуты могут быть довольно полезными, поскольку они позволяют выполнять запросы, автоматизировать сценарии и т. Д., Но они также неудобно скрываются в диалоговом окне атрибутов заметки. Это позволяет вам выбрать несколько важных и подтолкнуть их впереди пользователя.

Теперь, как мы делаем атрибут для отображения на UI?

Определение атрибута

Attribute это всегда пара имя-значение где и имя, и значение являются строками.

Attribute definition указывает, как следует интерпретировать это значение - это просто строка или дата? Должны ли мы разрешить несколько значений или примечание? И что важно, должны ли мы promote атрибут или нет?

images/attribute-definitions.png

На изображении выше вы можете увидеть две метки - tag и todoDate с некоторыми значениями. Но под ними вы можете снова заметить tag и todoDate атрибуты, но сейчас типа "Label definition". Это "definition" attributes определяет, как "value" attributes должен вести себя.

Так что есть один атрибут для значения и один для атрибута. Но обратите внимание, как определение атрибута Inheritable, Это означает, что он также применяется ко всем заметкам потомка. Таким образом, это определение используется для всего поддерева, в то время как атрибуты «значение» применяются только для этой заметки..

Обратное отношение

Некоторые отношения всегда происходят в парах - мой любимый пример - семья. Если у вас есть заметка, представляющая мужа, и заметка, представляющая жену, то между этими двумя isPartnerOf. Это двусторонние отношения - это означает, что если отношение указывает от мужа на жену, то всегда должно быть другое отношение, указывающее от жены к мужу.

Другой пример - отношения родителя и ребенка. Опять же, они всегда происходят в парах, но в этом случае это не совсем то же самое отношение - то, что происходит от родителя к ребенку, может быть названо isParentOf а другой, идущий от ребенка к родителю, может называться isChildOf.

Relation definition позволяет указать такой "inverse relation" - для отношения, которое вы только что определили, вы указываете, что является обратным отношением. Обратите внимание, что во втором примере у нас должно быть два определения отношений - один для isParentOf который определяет isChildOf как обратное отношение, а затем определение второго отношения для isChildOf который определяет isParentOf как обратное отношение.

Что это делает внутренне, так это то, что всякий раз, когда мы сохраняем отношение, которое определило обратное отношение, мы проверяем, существует ли это обратное отношение в целевой заметке отношения. Точно так же, когда мы удаляем отношение, мы также удаляем обратное отношение в целевой заметке.