mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
renamed notefull to notecomplement
This commit is contained in:
parent
eeedb91ef7
commit
f6f7836b8e
6
package-lock.json
generated
6
package-lock.json
generated
@ -7268,9 +7268,9 @@
|
|||||||
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k="
|
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k="
|
||||||
},
|
},
|
||||||
"open": {
|
"open": {
|
||||||
"version": "7.0.1",
|
"version": "7.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/open/-/open-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/open/-/open-7.0.2.tgz",
|
||||||
"integrity": "sha512-/fVm742AZt6bZ3NpbmBzGpZksDiGbo+xz8RylegKSAnTCgT5u5tvJe0cre3QxICphqHhJHc0OFtFyvU7rNx8+Q==",
|
"integrity": "sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"is-docker": "^2.0.0",
|
"is-docker": "^2.0.0",
|
||||||
"is-wsl": "^2.1.1"
|
"is-wsl": "^2.1.1"
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
"mime-types": "2.1.26",
|
"mime-types": "2.1.26",
|
||||||
"multer": "1.4.2",
|
"multer": "1.4.2",
|
||||||
"node-abi": "2.13.0",
|
"node-abi": "2.13.0",
|
||||||
"open": "7.0.1",
|
"open": "7.0.2",
|
||||||
"pngjs": "3.4.0",
|
"pngjs": "3.4.0",
|
||||||
"portscanner": "2.2.0",
|
"portscanner": "2.2.0",
|
||||||
"rand-token": "0.4.0",
|
"rand-token": "0.4.0",
|
||||||
|
@ -16,11 +16,11 @@ export function showDialog() {
|
|||||||
|
|
||||||
$dialog.modal();
|
$dialog.modal();
|
||||||
|
|
||||||
const {note, noteFull} = appContext.getActiveTabContext();
|
const {note, noteComplement} = appContext.getActiveTabContext();
|
||||||
|
|
||||||
$noteId.text(note.noteId);
|
$noteId.text(note.noteId);
|
||||||
$dateCreated.text(noteFull.dateCreated);
|
$dateCreated.text(noteComplement.dateCreated);
|
||||||
$dateModified.text(noteFull.dateModified);
|
$dateModified.text(noteComplement.dateModified);
|
||||||
$type.text(note.type);
|
$type.text(note.type);
|
||||||
$mime.text(note.mime);
|
$mime.text(note.mime);
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import NoteShort from './note_short.js';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents full note, specifically including note's content.
|
* Complements the NoteShort with the main note content and other extra attributes
|
||||||
*/
|
*/
|
||||||
class NoteFull {
|
class NoteComplement {
|
||||||
constructor(row) {
|
constructor(row) {
|
||||||
|
/** @param {string} */
|
||||||
|
this.noteId = row.noteId;
|
||||||
|
|
||||||
/** @param {string} */
|
/** @param {string} */
|
||||||
this.content = row.content;
|
this.content = row.content;
|
||||||
|
|
||||||
@ -22,4 +23,4 @@ class NoteFull {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default NoteFull;
|
export default NoteComplement;
|
@ -171,7 +171,7 @@ class AppContext {
|
|||||||
return activeContext ? activeContext.notePath : null;
|
return activeContext ? activeContext.notePath : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return {NoteFull} */
|
/** @return {NoteShort} */
|
||||||
getActiveTabNote() {
|
getActiveTabNote() {
|
||||||
const activeContext = this.getActiveTabContext();
|
const activeContext = this.getActiveTabContext();
|
||||||
return activeContext ? activeContext.note : null;
|
return activeContext ? activeContext.note : null;
|
||||||
|
@ -289,7 +289,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @method
|
* @method
|
||||||
* @returns {NoteFull} active note (loaded into right pane)
|
* @returns {NoteShort} active note (loaded into right pane)
|
||||||
*/
|
*/
|
||||||
this.getActiveTabNote = appContext.getActiveTabNote;
|
this.getActiveTabNote = appContext.getActiveTabNote;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import server from './server.js';
|
import server from './server.js';
|
||||||
import ws from "./ws.js";
|
import ws from "./ws.js";
|
||||||
import treeCache from "./tree_cache.js";
|
import treeCache from "./tree_cache.js";
|
||||||
import NoteFull from "../entities/note_full.js";
|
import NoteComplement from "../entities/note_full.js";
|
||||||
import appContext from "./app_context.js";
|
import appContext from "./app_context.js";
|
||||||
|
|
||||||
function getActiveEditor() {
|
function getActiveEditor() {
|
||||||
@ -15,10 +15,10 @@ function getActiveEditor() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadNoteFull(noteId) {
|
async function loadNoteComplement(noteId) {
|
||||||
const row = await server.get('notes/' + noteId);
|
const row = await server.get('notes/' + noteId);
|
||||||
|
|
||||||
return new NoteFull(row);
|
return new NoteComplement(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
function focusOnTitle() {
|
function focusOnTitle() {
|
||||||
@ -45,7 +45,7 @@ $(window).on('beforeunload', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
loadNoteFull,
|
loadNoteComplement,
|
||||||
focusOnTitle,
|
focusOnTitle,
|
||||||
focusAndSelectTitle,
|
focusAndSelectTitle,
|
||||||
getActiveEditor,
|
getActiveEditor,
|
||||||
|
@ -44,9 +44,9 @@ async function mouseEnterHandler() {
|
|||||||
const noteId = treeService.getNoteIdFromNotePath(notePath);
|
const noteId = treeService.getNoteIdFromNotePath(notePath);
|
||||||
|
|
||||||
const note = await treeCache.getNote(noteId);
|
const note = await treeCache.getNote(noteId);
|
||||||
const noteFull = await noteDetailService.loadNoteFull(noteId);
|
const noteComplement = await noteDetailService.loadNoteComplement(noteId);
|
||||||
|
|
||||||
const html = await renderTooltip(note, noteFull);
|
const html = await renderTooltip(note, noteComplement);
|
||||||
|
|
||||||
// we need to check if we're still hovering over the element
|
// we need to check if we're still hovering over the element
|
||||||
// since the operation to get tooltip content was async, it is possible that
|
// since the operation to get tooltip content was async, it is possible that
|
||||||
@ -71,7 +71,7 @@ function mouseLeaveHandler() {
|
|||||||
$(this).tooltip('dispose');
|
$(this).tooltip('dispose');
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderTooltip(note, noteFull) {
|
async function renderTooltip(note, noteComplement) {
|
||||||
const attributes = await note.getAttributes();
|
const attributes = await note.getAttributes();
|
||||||
|
|
||||||
let content = '';
|
let content = '';
|
||||||
@ -117,11 +117,11 @@ async function renderTooltip(note, noteFull) {
|
|||||||
if (note.type === 'text') {
|
if (note.type === 'text') {
|
||||||
// surround with <div> for a case when note's content is pure text (e.g. "[protected]") which
|
// surround with <div> for a case when note's content is pure text (e.g. "[protected]") which
|
||||||
// then fails the jquery non-empty text test
|
// then fails the jquery non-empty text test
|
||||||
content += '<div>' + noteFull.content + '</div>';
|
content += '<div>' + noteComplement.content + '</div>';
|
||||||
}
|
}
|
||||||
else if (note.type === 'code') {
|
else if (note.type === 'code') {
|
||||||
content += $("<pre>")
|
content += $("<pre>")
|
||||||
.text(noteFull.content)
|
.text(noteComplement.content)
|
||||||
.prop('outerHTML');
|
.prop('outerHTML');
|
||||||
}
|
}
|
||||||
else if (note.type === 'image') {
|
else if (note.type === 'image') {
|
||||||
|
@ -51,8 +51,8 @@ class TabContext extends Component {
|
|||||||
/** @property {NoteShort} */
|
/** @property {NoteShort} */
|
||||||
this.note = await treeCache.getNote(noteId);
|
this.note = await treeCache.getNote(noteId);
|
||||||
|
|
||||||
/** @property {NoteFull} */
|
/** @property {NoteComplement} */
|
||||||
this.noteFull = await noteDetailService.loadNoteFull(noteId);
|
this.noteComplement = await noteDetailService.loadNoteComplement(noteId);
|
||||||
|
|
||||||
//this.cleanup(); // esp. on windows autocomplete is not getting closed automatically
|
//this.cleanup(); // esp. on windows autocomplete is not getting closed automatically
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
import utils from '../services/utils.js';
|
||||||
|
|
||||||
export default class Component {
|
export default class Component {
|
||||||
/** @param {AppContext} appContext */
|
/** @param {AppContext} appContext */
|
||||||
constructor(appContext) {
|
constructor(appContext) {
|
||||||
this.componentId = `component-${this.constructor.name}`;
|
this.componentId = `comp-${this.constructor.name}-` + utils.randomString(10);
|
||||||
this.appContext = appContext;
|
this.appContext = appContext;
|
||||||
/** @type Component[] */
|
/** @type Component[] */
|
||||||
this.children = [];
|
this.children = [];
|
||||||
|
@ -37,18 +37,17 @@ export default class NoteDetailWidget extends TabAwareWidget {
|
|||||||
this.typeWidgetPromises = {};
|
this.typeWidgetPromises = {};
|
||||||
|
|
||||||
this.spacedUpdate = new SpacedUpdate(async () => {
|
this.spacedUpdate = new SpacedUpdate(async () => {
|
||||||
const {noteFull, note} = this.tabContext;
|
const {noteComplement, note} = this.tabContext;
|
||||||
const {noteId} = note;
|
const {noteId} = note;
|
||||||
|
|
||||||
// FIXME hack
|
// FIXME hack
|
||||||
const dto = note.dto;
|
const dto = note.dto;
|
||||||
dto.content = noteFull.content = this.getTypeWidget().getContent();
|
dto.content = noteComplement.content = this.getTypeWidget().getContent();
|
||||||
|
|
||||||
const resp = await server.put('notes/' + noteId, dto, this.componentId);
|
const resp = await server.put('notes/' + noteId, dto, this.componentId);
|
||||||
|
|
||||||
// FIXME: minor - does not propagate to other tab contexts with this note though
|
noteComplement.dateModified = resp.dateModified;
|
||||||
noteFull.dateModified = resp.dateModified;
|
noteComplement.utcDateModified = resp.utcDateModified;
|
||||||
noteFull.utcDateModified = resp.utcDateModified;
|
|
||||||
|
|
||||||
this.trigger('noteChangesSaved', {noteId})
|
this.trigger('noteChangesSaved', {noteId})
|
||||||
});
|
});
|
||||||
@ -161,7 +160,7 @@ export default class NoteDetailWidget extends TabAwareWidget {
|
|||||||
let type = note.type;
|
let type = note.type;
|
||||||
|
|
||||||
if (type === 'text' && !disableAutoBook
|
if (type === 'text' && !disableAutoBook
|
||||||
&& utils.isHtmlEmpty(this.tabContext.noteFull.content)
|
&& utils.isHtmlEmpty(this.tabContext.noteComplement.content)
|
||||||
&& note.hasChildren()) {
|
&& note.hasChildren()) {
|
||||||
|
|
||||||
type = 'book';
|
type = 'book';
|
||||||
@ -223,9 +222,7 @@ export default class NoteDetailWidget extends TabAwareWidget {
|
|||||||
|
|
||||||
async entitiesReloadedListener({loadResults}) {
|
async entitiesReloadedListener({loadResults}) {
|
||||||
if (loadResults.isNoteContentReloaded(this.noteId, this.componentId)) {
|
if (loadResults.isNoteContentReloaded(this.noteId, this.componentId)) {
|
||||||
this.tabContext.noteFull = await noteDetailService.loadNoteFull(this.noteId);
|
this.tabContext.noteComplement = await noteDetailService.loadNoteComplement(this.noteId);
|
||||||
|
|
||||||
console.log("Reloaded", this.tabContext.noteFull);
|
|
||||||
|
|
||||||
this.refreshWithNote(this.note, this.notePath);
|
this.refreshWithNote(this.note, this.notePath);
|
||||||
}
|
}
|
||||||
|
@ -49,16 +49,16 @@ class NoteInfoWidget extends StandardWidget {
|
|||||||
const $type = this.$body.find(".note-info-type");
|
const $type = this.$body.find(".note-info-type");
|
||||||
const $mime = this.$body.find(".note-info-mime");
|
const $mime = this.$body.find(".note-info-mime");
|
||||||
|
|
||||||
const {noteFull} = this.tabContext;
|
const {noteComplement} = this.tabContext;
|
||||||
|
|
||||||
$noteId.text(note.noteId);
|
$noteId.text(note.noteId);
|
||||||
$dateCreated
|
$dateCreated
|
||||||
.text(noteFull.dateCreated)
|
.text(noteComplement.dateCreated)
|
||||||
.attr("title", noteFull.dateCreated);
|
.attr("title", noteComplement.dateCreated);
|
||||||
|
|
||||||
$dateModified
|
$dateModified
|
||||||
.text(noteFull.dateModified)
|
.text(noteComplement.dateModified)
|
||||||
.attr("title", noteFull.dateCreated);
|
.attr("title", noteComplement.dateCreated);
|
||||||
|
|
||||||
$type.text(note.type);
|
$type.text(note.type);
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ export default class CodeTypeWidget extends TypeWidget {
|
|||||||
this.spacedUpdate.allowUpdateWithoutChange(() => {
|
this.spacedUpdate.allowUpdateWithoutChange(() => {
|
||||||
// CodeMirror breaks pretty badly on null so even though it shouldn't happen (guarded by consistency check)
|
// CodeMirror breaks pretty badly on null so even though it shouldn't happen (guarded by consistency check)
|
||||||
// we provide fallback
|
// we provide fallback
|
||||||
this.codeEditor.setValue(this.tabContext.noteFull.content || "");
|
this.codeEditor.setValue(this.tabContext.noteComplement.content || "");
|
||||||
|
|
||||||
const info = CodeMirror.findModeByMIME(note.mime);
|
const info = CodeMirror.findModeByMIME(note.mime);
|
||||||
|
|
||||||
|
@ -128,9 +128,9 @@ export default class FileTypeWidget extends TypeWidget {
|
|||||||
this.$fileSize.text(note.contentLength + " bytes");
|
this.$fileSize.text(note.contentLength + " bytes");
|
||||||
this.$fileType.text(note.mime);
|
this.$fileType.text(note.mime);
|
||||||
|
|
||||||
if (this.tabContext.noteFull.content) {
|
if (this.tabContext.noteComplement.content) {
|
||||||
this.$previewContent.show();
|
this.$previewContent.show();
|
||||||
this.$previewContent.text(this.tabContext.noteFull.content);
|
this.$previewContent.text(this.tabContext.noteComplement.content);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.$previewContent.empty().hide();
|
this.$previewContent.empty().hide();
|
||||||
|
@ -132,7 +132,7 @@ class NoteDetailImage extends TypeWidget {
|
|||||||
this.$fileSize.text(note.contentLength + " bytes");
|
this.$fileSize.text(note.contentLength + " bytes");
|
||||||
this.$fileType.text(note.mime);
|
this.$fileType.text(note.mime);
|
||||||
|
|
||||||
const imageHash = this.tabContext.noteFull.utcDateModified.replace(" ", "_");
|
const imageHash = this.tabContext.noteComplement.utcDateModified.replace(" ", "_");
|
||||||
|
|
||||||
this.$imageView.prop("src", `api/images/${note.noteId}/${note.title}?${imageHash}`);
|
this.$imageView.prop("src", `api/images/${note.noteId}/${note.title}?${imageHash}`);
|
||||||
}
|
}
|
||||||
|
@ -254,9 +254,9 @@ export default class RelationMapTypeWidget extends TypeWidget {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.tabContext.noteFull.content) {
|
if (this.tabContext.noteComplement.content) {
|
||||||
try {
|
try {
|
||||||
this.mapData = JSON.parse(this.tabContext.noteFull.content);
|
this.mapData = JSON.parse(this.tabContext.noteComplement.content);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log("Could not parse content: ", e);
|
console.log("Could not parse content: ", e);
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ export default class SearchTypeWidget extends TypeWidget {
|
|||||||
this.$component.show();
|
this.$component.show();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const json = JSON.parse(this.tabContext.noteFull.content);
|
const json = JSON.parse(this.tabContext.noteComplement.content);
|
||||||
|
|
||||||
this.$searchString.val(json.searchString);
|
this.$searchString.val(json.searchString);
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ export default class TextTypeWidget extends TypeWidget {
|
|||||||
this.textEditor.isReadOnly = await note.hasLabel('readOnly');
|
this.textEditor.isReadOnly = await note.hasLabel('readOnly');
|
||||||
|
|
||||||
this.spacedUpdate.allowUpdateWithoutChange(() => {
|
this.spacedUpdate.allowUpdateWithoutChange(() => {
|
||||||
this.textEditor.setData(this.tabContext.noteFull.content);
|
this.textEditor.setData(this.tabContext.noteComplement.content);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import * as syncService from "../services/sync.js";
|
|
||||||
|
|
||||||
const setupRoute = require('./setup');
|
const setupRoute = require('./setup');
|
||||||
const loginRoute = require('./login');
|
const loginRoute = require('./login');
|
||||||
const indexRoute = require('./index');
|
const indexRoute = require('./index');
|
||||||
@ -46,7 +44,7 @@ const auth = require('../services/auth');
|
|||||||
const cls = require('../services/cls');
|
const cls = require('../services/cls');
|
||||||
const sql = require('../services/sql');
|
const sql = require('../services/sql');
|
||||||
const protectedSessionService = require('../services/protected_session');
|
const protectedSessionService = require('../services/protected_session');
|
||||||
const syncTableService = require('../services/sync_table');
|
const syncService = require('../services/sync');
|
||||||
const csurf = require('csurf');
|
const csurf = require('csurf');
|
||||||
|
|
||||||
const csrfMiddleware = csurf({
|
const csrfMiddleware = csurf({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user