fixed frontend script execution

This commit is contained in:
azivner 2018-03-04 14:21:11 -05:00
parent d239ef2956
commit 3b9d1df05c
6 changed files with 27 additions and 21 deletions

View File

@ -1,4 +1,4 @@
const api = (function() {
function Api() {
const $pluginButtons = $("#plugin-buttons");
async function activateNote(notePath) {
@ -14,8 +14,10 @@ const api = (function() {
}
return {
__modules: {},
__notes: {},
addButtonToToolbar,
activateNote,
getInstanceName: noteTree.getInstanceName
}
})();
}

View File

@ -116,7 +116,16 @@ async function stopWatch(what, func) {
}
function executeScript(script) {
eval(script);
const completeScript = `
(async function() {
const api = Api();
${script}
})();`;
console.log(completeScript);
eval(completeScript);
}
function formatValueWithWhitespace(val) {

View File

@ -23,15 +23,15 @@ router.post('/job', auth.checkApiAuth, wrap(async (req, res, next) => {
}));
router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => {
const noteIds = await attributes.getNoteIdsWithAttribute("run", "frontend_startup");
const repository = new Repository(req);
const notes = await attributes.getNotesWithAttribute(repository, "run", "frontend_startup");
const scripts = [];
for (const noteId of noteIds) {
const note = await repository.getNote(noteId);
for (const note of notes) {
const bundle = await script.getScriptBundle(note);
scripts.push(await script.getNoteScript(note));
scripts.push(bundle.script);
}
res.send(scripts);
@ -40,8 +40,9 @@ router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => {
router.get('/subtree/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => {
const repository = new Repository(req);
const note = await repository.getNote(req.params.noteId);
const bundle = await script.getScriptBundle(note);
res.send(await script.getNoteScript(note, repository));
res.send(bundle.script);
}));
router.get('/render/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => {

View File

@ -3,10 +3,10 @@
const sql = require('./sql');
const utils = require('./utils');
const sync_table = require('./sync_table');
const Repository = require('./repository');
const BUILTIN_ATTRIBUTES = [
'run_on_startup',
'frontend_startup',
'backend_startup',
'disable_versioning',
'calendar_root',
'hide_in_autocomplete',
@ -27,9 +27,7 @@ async function getNoteIdWithAttribute(name, value) {
AND attributes.value = ?`, [name, value]);
}
async function getNotesWithAttribute(dataKey, name, value) {
const repository = new Repository(dataKey);
async function getNotesWithAttribute(repository, name, value) {
let notes;
if (value !== undefined) {
@ -44,8 +42,8 @@ async function getNotesWithAttribute(dataKey, name, value) {
return notes;
}
async function getNoteWithAttribute(dataKey, name, value) {
const notes = getNotesWithAttribute(dataKey, name, value);
async function getNoteWithAttribute(repository, name, value) {
const notes = getNotesWithAttribute(repository, name, value);
return notes.length > 0 ? notes[0] : null;
}

View File

@ -101,10 +101,6 @@ async function getRenderScript(note) {
return "async function() {" + subTreeScripts + note.content + "\r\n}";
}
async function getNoteScript(note) {
}
async function getScriptBundle(note, includedNoteIds = []) {
if (!note.isJavaScript()) {
return;
@ -150,6 +146,6 @@ module.exports = {
executeNote,
executeScript,
setJob,
getNoteScript,
getScriptBundle,
getRenderScript
};

View File

@ -31,7 +31,7 @@ function ScriptContext(dataKey, startNote, allNotes) {
};
this.getNotesWithAttribute = async function (attrName, attrValue) {
return await attributes.getNotesWithAttribute(dataKey, attrName, attrValue);
return await attributes.getNotesWithAttribute(repository, attrName, attrValue);
};
this.getNoteWithAttribute = async function (attrName, attrValue) {