插件功能:通过快捷键,将节点送到指定主题或收集箱。
使用场景:在roamedit中记录的时候,突然想到一个idea,要记录到某个主题中。安装这个插件后,不用打开对应主题,直接在当前主题下记录这个idea,然后一键发送过去。
示例: 在写日记的时候,记录了一条总结,想要放到[[生活经验]]主题内,那就在节点后面打上标签,使用#或[[]]均可。注意标签要放在节点最后面。
写完后使用快捷键ctrl+y,该block就会被转移到[[生活经验]]主题内,如下图所示。
如果要发送待办到收集箱,不要写标签,直接使用快捷键ctrl+y,该block会被转化为待办事项,送到收集箱内。需要将收集箱的id写入插件代码中。
插件代码:
pluginManager.register("node_transfer", {
node_trans(nv) {
var inbox_ky = "";
// 在inbox_ky中填入收集箱的id,即可开启送入收集箱功能。
// 示例: var inbox_ky = "ujD-sYTj88h1r";
var topic_name, target_data;
var res=/(\[\[.*\]\])?(#[^ ]*)?(?= *$)/.exec(nv.data.ori);
if(res!=undefined && res[0]!=""){
//送到#或[[]]指定的主题
var target=res[0];
topic_name = ((target.indexOf("#")!=-1) && target.replace("#","")) || ((target.indexOf("[[")!=-1) && target.replace("[[","").replace("]]","")) || target;
target_data=plugin.memory.getTopic(topic_name);
var new_ky = NNodeView.mkid();
plugin.inodeModel.save({ky:new_ky, pky:target_data.ky, ori:timekit.format('yyyy-MM-dd hh:mm:ss 星期w n')});
var new_ori = nv.data.ori.replace("#"+res,"");
nv.setData({pky:new_ky, ori:new_ori});
nv.$node.remove();
console.log("transfered to topic [[%s]].",topic_name);
}
else if (inbox_ky != ""){
//转为待办
nv.setData({ori:"] "+nv.data.ori});
var cur_node_id=nv.$node[0].getAttribute('id');
var child_node = $('[id='+cur_node_id+'] [nel=dom].node');
for (var x of child_node){
x.nv.setData({ori:"] "+x.nv.data.ori});
}
//送到指定节点下,一般是收集箱
nv.setData({pky:inbox_ky});
nv.$node.remove();
console.log("transfered to inbox.");
}
},
after_hotkey_run() {
//e是event,e.target是dom对象,dom对象可以拿到对应NNodeView对象
plugin.hotkey.add("cmd+y:节点传送",(e=>{
plugin.node_transfer.node_trans(e.target.nv);
}
))
},
run() {
plugin.menu.addItems("node", {
myflow: {
icon: "arrow-right",
label: "节点转移",
hotkey: "cmd+y",
action() {
plugin.node_transfer.node_trans(this.nv);
}
}
})
}
});
上述代码参考自动引用插件写成,分享给大家,使用前先测试测试哦。