mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
add API to add plugin buttons, fixes
This commit is contained in:
parent
05575913db
commit
5bffba4e2f
21
src/public/javascripts/api.js
Normal file
21
src/public/javascripts/api.js
Normal file
@ -0,0 +1,21 @@
|
||||
const api = (function() {
|
||||
const pluginButtonsEl = $("#plugin-buttons");
|
||||
|
||||
async function activateNote(notePath) {
|
||||
await noteTree.activateNode(notePath);
|
||||
}
|
||||
|
||||
function addButtonToToolbar(buttonId, button) {
|
||||
$("#" + buttonId).remove();
|
||||
|
||||
button.attr('id', buttonId);
|
||||
|
||||
pluginButtonsEl.append(button);
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
addButtonToToolbar,
|
||||
activateNote
|
||||
}
|
||||
})();
|
@ -116,5 +116,6 @@ async function stopWatch(what, func) {
|
||||
}
|
||||
|
||||
function executeScript(script) {
|
||||
eval("(async function() {" + script + "})()");
|
||||
// last \r\n is necessary if script contains line comment on its last line
|
||||
eval("(async function() {" + script + "\r\n})()");
|
||||
}
|
@ -190,11 +190,6 @@ div.ui-tooltip {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#note-id-display {
|
||||
color: lightgrey;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#note-source {
|
||||
height: 98%;
|
||||
width: 100%;
|
||||
@ -245,6 +240,7 @@ div.ui-tooltip {
|
||||
right: 10px;
|
||||
bottom: 5px;
|
||||
z-index: 1000;
|
||||
color: lightgrey;
|
||||
}
|
||||
|
||||
#note-type-dropdown {
|
||||
|
@ -19,11 +19,12 @@ router.post('/exec', auth.checkApiAuth, wrap(async (req, res, next) => {
|
||||
|
||||
router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => {
|
||||
const noteIds = await attributes.getNoteIdsWithAttribute("run_on_startup");
|
||||
const repository = new Repository(req);
|
||||
|
||||
const scripts = [];
|
||||
|
||||
for (const noteId of noteIds) {
|
||||
scripts.push(await getNoteWithSubtreeScript(noteId, req));
|
||||
scripts.push(await getNoteWithSubtreeScript(noteId, repository));
|
||||
}
|
||||
|
||||
res.send(scripts);
|
||||
@ -41,10 +42,10 @@ router.get('/subtree/:noteId', auth.checkApiAuth, wrap(async (req, res, next) =>
|
||||
res.send(subTreeScripts + noteScript);
|
||||
}));
|
||||
|
||||
async function getNoteWithSubtreeScript(noteId, req) {
|
||||
const noteScript = (await notes.getNoteById(noteId, req)).content;
|
||||
async function getNoteWithSubtreeScript(noteId, repository) {
|
||||
const noteScript = (await repository.getNote(noteId)).content;
|
||||
|
||||
const subTreeScripts = await getSubTreeScripts(noteId, [noteId], req);
|
||||
const subTreeScripts = await getSubTreeScripts(noteId, [noteId], repository);
|
||||
|
||||
return subTreeScripts + noteScript;
|
||||
}
|
||||
|
11
src/scripts/today.js
Normal file
11
src/scripts/today.js
Normal file
@ -0,0 +1,11 @@
|
||||
api.addButtonToToolbar('go-today', $('<button class="btn btn-xs" onclick="goToday();"><span class="ui-icon ui-icon-calendar"></span> Today</button>'));
|
||||
|
||||
window.goToday = async function() {
|
||||
const todayDateStr = formatDateISO(new Date());
|
||||
|
||||
const todayNoteId = await server.exec([todayDateStr], async todayDateStr => {
|
||||
return await this.getDateNoteId(todayDateStr);
|
||||
});
|
||||
|
||||
api.activateNote(todayNoteId);
|
||||
};
|
@ -65,6 +65,8 @@
|
||||
});
|
||||
}
|
||||
|
||||
data.sort((a, b) => a.date < b.date ? -1 : +1);
|
||||
|
||||
return data;
|
||||
});
|
||||
|
||||
|
@ -5,32 +5,6 @@ const sync_table = require('./sync_table');
|
||||
const attributes = require('./attributes');
|
||||
const protected_session = require('./protected_session');
|
||||
|
||||
async function updateJsonNote(noteId, data) {
|
||||
const ret = await createNewNote(noteId, {
|
||||
title: name,
|
||||
content: JSON.stringify(data),
|
||||
target: 'into',
|
||||
isProtected: false,
|
||||
type: 'code',
|
||||
mime: 'application/json'
|
||||
});
|
||||
|
||||
return ret.noteId;
|
||||
}
|
||||
|
||||
async function createNewJsonNote(parentNoteId, name, payload) {
|
||||
const ret = await createNewNote(parentNoteId, {
|
||||
title: name,
|
||||
content: JSON.stringify(payload),
|
||||
target: 'into',
|
||||
isProtected: false,
|
||||
type: 'code',
|
||||
mime: 'application/json'
|
||||
});
|
||||
|
||||
return ret.noteId;
|
||||
}
|
||||
|
||||
async function createNewNote(parentNoteId, noteOpts, dataKey, sourceId) {
|
||||
const noteId = utils.newNoteId();
|
||||
const noteTreeId = utils.newNoteTreeId();
|
||||
|
@ -20,12 +20,18 @@
|
||||
<button class="btn btn-xs" onclick="eventLog.showDialog();">Event log</button>
|
||||
</div>
|
||||
|
||||
<div id="plugin-buttons">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button class="btn btn-xs" onclick="syncNow();" title="Number of outstanding changes to be pushed to server">
|
||||
<span class="ui-icon ui-icon-refresh"></span>
|
||||
|
||||
Sync now (<span id="changes-to-push-count">0</span>)
|
||||
</button>
|
||||
|
||||
<button class="btn btn-xs" onclick="settings.showDialog();">Settings</button>
|
||||
<button class="btn btn-xs" onclick="settings.showDialog();">
|
||||
<span class="ui-icon ui-icon-gear"></span> Settings</button>
|
||||
|
||||
<form action="logout" id="logout-button" method="POST" style="display: inline;">
|
||||
<input type="submit" class="btn btn-xs" value="Logout">
|
||||
@ -492,7 +498,7 @@
|
||||
<script src="javascripts/link.js"></script>
|
||||
<script src="javascripts/sync.js"></script>
|
||||
<script src="javascripts/messaging.js"></script>
|
||||
|
||||
<script src="javascripts/api.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
// we hide container initally because otherwise it is rendered first without CSS and then flickers into
|
||||
|
Loading…
x
Reference in New Issue
Block a user