Files
Trilium/src/public/javascripts/services/script_api.js

79 lines
2.2 KiB
JavaScript
Raw Normal View History

import treeService from './tree.js';
import server from './server.js';
2018-04-04 23:51:47 -04:00
import utils from './utils.js';
import infoService from './info.js';
import linkService from './link.js';
2018-08-10 13:30:20 +02:00
function ScriptApi(startNote, currentNote, originEntity = null) {
2018-02-14 23:31:20 -05:00
const $pluginButtons = $("#plugin-buttons");
2018-02-03 10:37:57 -05:00
async function activateNote(notePath) {
2018-03-24 21:39:15 -04:00
await treeService.activateNode(notePath);
2018-02-03 10:37:57 -05:00
}
2018-08-14 13:50:04 +02:00
async function activateNewNote(notePath) {
await treeService.reload();
await treeService.activateNode(notePath, true);
}
2018-02-03 10:37:57 -05:00
function addButtonToToolbar(buttonId, button) {
$("#" + buttonId).remove();
button.attr('id', buttonId);
2018-02-14 23:31:20 -05:00
$pluginButtons.append(button);
2018-02-03 10:37:57 -05:00
}
2018-03-04 21:43:14 -05:00
function prepareParams(params) {
if (!params) {
return params;
}
return params.map(p => {
if (typeof p === "function") {
return "!@#Function: " + p.toString();
}
else {
return p;
}
});
}
async function runOnServer(script, params = []) {
2018-03-04 21:43:14 -05:00
if (typeof script === "function") {
script = script.toString();
}
const ret = await server.post('script/exec', {
script: script,
params: prepareParams(params),
startNoteId: startNote.noteId,
currentNoteId: currentNote.noteId,
2018-08-10 14:31:57 +02:00
originEntityName: originEntity ? originEntity.constructor.tableName : null,
2018-08-10 13:30:20 +02:00
originEntityId: originEntity ? originEntity.noteId : null
});
2018-03-04 21:43:14 -05:00
return ret.executionResult;
}
2018-02-03 10:37:57 -05:00
return {
startNote: startNote,
currentNote: currentNote,
2018-08-10 13:30:20 +02:00
originEntity: originEntity,
2018-02-03 10:37:57 -05:00
addButtonToToolbar,
activateNote,
2018-08-14 13:50:04 +02:00
activateNewNote,
getInstanceName: () => window.glob.instanceName,
2018-04-04 23:51:47 -04:00
runOnServer,
formatDateISO: utils.formatDateISO,
2018-04-07 13:14:01 -04:00
parseDate: utils.parseDate,
showMessage: infoService.showMessage,
showError: infoService.showError,
reloadTree: treeService.reload, // deprecated
refreshTree: treeService.reload,
createNoteLink: linkService.createNoteLink
2018-02-03 10:37:57 -05:00
}
}
export default ScriptApi;