Task manager - tvortsa/trilium GitHub Wiki
Task Manager это [promoted attributes]] и [[scripts]] демо из в [demo document.
Demo
Task Manager управляет запланированными (TODO) задачами и законченными задачами (не пустой атрибут doneDate). Запланированные задачи далее классифицируются по местоположению и произвольным тегам - всякий раз, когда вы меняете атрибут тега в примечании к задаче, эта задача затем автоматически перемещается в соответствующее место.
Task Manager также интегрируется с [day notes]] - заметки которые [cloned в day note как для todoDate note так и для doneDate note (с prefix либо "TODO" либо "DONE").
Реализация
New tasks создаются в заметке TODO у которого есть "child:template" relation (см attribute inheritance) указывая на шаблон задачи.
Атрибуты
Task template определяет несколько [promoted attributes]] - todoDate, doneData, tags, location. Главное, он также определяет runOnAttributeChange связь - [event обработчик, который запускается при изменении атрибута. Этот script обрабатывает, например, когда мы заполняем атрибут doneDate - это означает, что задача выполнена и должна быть перемещена в заметку «Готово» и удалена из TODO, местоположений и тегов.
кнопка New task
Есть также заметка "button" которая содержит простой скрипт который добавляет кнопку для создания новой заметки (task) в заметке TODO.
api.addButtonToToolbar({
title: 'New task',
icon: 'check',
shortcut: 'alt+n',
action: async () => {
// создание заметок это ответственность бэкэнд (server), поэтому мы должны передать
// управление туда
const taskNoteId = await api.runOnServer(async () => {
const todoRootNote = await api.getNoteWithLabel('taskTodoRoot');
const {note} = await api.createNote(todoRootNote.noteId, 'new task', '');
return note.noteId;
});
// мы получили ID недавно созданной заметки, и мы хотим немедленно отобразить ее
await api.activateNewNote(taskNoteId);
}
});
CSS
На демонстрационном скриншоте выше вы можете заметить, что задачи TODO выделены красным цветом, а DONE задачи - зеленым.
Это сделано, с помощью CSS code note который определяет дополнительные классы CSS:
span.fancytree-node.todo .fancytree-title {
color: red !important;
}
span.fancytree-node.done .fancytree-title {
color: green !important;
}
Этот code note имеет appCss label который распознается Trilium при запуске и загружается в приложение как CSS.
Вторая часть этой функциональности основана на описанном выше обработчике событий, который назначает cssClass label to задача либо "done" либо "todo" на основе состояния задачи.