trilium/src/public/javascripts/services/mobile.js

72 lines
2.3 KiB
JavaScript
Raw Normal View History

2018-12-24 05:28:57 +08:00
import treeService from "./tree.js";
import noteDetailService from "./note_detail.js";
import dragAndDropSetup from "./drag_and_drop.js";
import treeCache from "./tree_cache.js";
import treeBuilder from "./tree_builder.js";
2018-12-24 05:28:57 +08:00
const $tree = $("#tree");
2018-12-25 01:39:31 +08:00
const $detail = $("#detail");
2018-12-25 03:38:38 +08:00
const $closeDetailButton = $("#close-detail-button");
2018-12-25 01:39:31 +08:00
2018-12-25 03:38:38 +08:00
function togglePanes() {
if (!$tree.is(":visible") || !$detail.is(":visible")) {
$detail.toggleClass("d-none");
$tree.toggleClass("d-none");
}
}
$closeDetailButton.click(togglePanes);
async function showTree() {
const tree = await treeService.loadTree();
$tree.fancytree({
autoScroll: true,
extensions: ["dnd5", "clones"],
source: tree,
scrollParent: $tree,
minExpandLevel: 2, // root can't be collapsed
activate: (event, data) => {
const node = data.node;
const noteId = node.data.noteId;
treeService.setCurrentNotePathToHash(node);
2018-12-25 03:38:38 +08:00
togglePanes();
noteDetailService.switchToNote(noteId, true);
},
expand: (event, data) => treeService.setExpandedToServer(data.node.data.branchId, true),
collapse: (event, data) => treeService.setExpandedToServer(data.node.data.branchId, false),
init: (event, data) => treeService.treeInitialized(), // don't collapse to short form
dnd5: dragAndDropSetup,
lazyLoad: function(event, data) {
const noteId = data.node.data.noteId;
data.result = treeCache.getNote(noteId).then(note => treeBuilder.prepareBranch(note));
},
clones: {
highlightActiveClones: true
2018-12-25 17:58:40 +08:00
},
renderNode: function (event, data) {
const node = data.node;
const $nodeSpan = $(node.span);
// check if span of node already rendered
if (!$nodeSpan.data('rendered')) {
const addNoteButton = $('<button class="action-button" title="Add new sub-note" type="button" class="btn">+</button>');
addNoteButton.click(() => {
alert("Add new note");
});
$nodeSpan.append(addNoteButton);
// span rendered
$nodeSpan.data('rendered', true);
}
}
});
}
showTree();