From 23a432e7d85406409c34f35172d48434e722e19d Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 24 Nov 2020 20:12:49 +0100 Subject: [PATCH] don't show imageLinks in link map when they are connecting parent (text note) and child (image), closes #1461 --- package-lock.json | 8 ++++---- package.json | 2 +- src/routes/api/link_map.js | 36 +++++++++++++++++++++++++++--------- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index c38e62aaf..a042a5c36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "trilium", - "version": "0.45.4", + "version": "0.45.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2654,9 +2654,9 @@ } }, "electron": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/electron/-/electron-9.3.4.tgz", - "integrity": "sha512-OHP8qMKgW8D8GtH+altB22WJw/lBOyyVdoz5e8D0/iPBmJU3Jm93vO4z4Eh/9DvdSXlH8bMHUCMLL9PVW6f+tw==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-9.3.5.tgz", + "integrity": "sha512-EPmDsp7sO0UPtw7nLD1ufse/nBskP+ifXzBgUg9psCUlapkzuwYi6pmLAzKLW/bVjwgyUKwh1OKWILWfOeLGcQ==", "dev": true, "requires": { "@electron/get": "^1.0.1", diff --git a/package.json b/package.json index 0cb58c430..f8c47f6d6 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ }, "devDependencies": { "cross-env": "7.0.2", - "electron": "9.3.4", + "electron": "9.3.5", "electron-builder": "22.9.1", "electron-packager": "15.1.0", "electron-rebuild": "2.3.2", diff --git a/src/routes/api/link_map.js b/src/routes/api/link_map.js index e5fb0a8d6..707941881 100644 --- a/src/routes/api/link_map.js +++ b/src/routes/api/link_map.js @@ -3,15 +3,33 @@ const sql = require('../../services/sql'); function getRelations(noteIds) { - return (sql.getManyRows(` - SELECT noteId, name, value AS targetNoteId - FROM attributes - WHERE (noteId IN (???) OR value IN (???)) - AND type = 'relation' - AND isDeleted = 0 - AND noteId != '' - AND value != '' - `, Array.from(noteIds))); + noteIds = Array.from(noteIds); + + return [ + // first read all non-image relations + ...sql.getManyRows(` + SELECT noteId, name, value AS targetNoteId + FROM attributes + WHERE (noteId IN (???) OR value IN (???)) + AND type = 'relation' + AND name != 'imageLink' + AND isDeleted = 0 + AND noteId != '' + AND value != ''`, noteIds), + // ... then read only imageLink relations which are not connecting parent and child + // this is done to not show image links in the trivial case where they are direct children of the note to which they are included. Same heuristic as in note tree + ...sql.getManyRows(` + SELECT rel.noteId, rel.name, rel.value AS targetNoteId + FROM attributes AS rel + LEFT JOIN branches ON branches.parentNoteId = rel.noteId AND branches.noteId = rel.value AND branches.isDeleted = 0 + WHERE (rel.noteId IN (???) OR rel.value IN (???)) + AND rel.type = 'relation' + AND rel.name = 'imageLink' + AND rel.isDeleted = 0 + AND rel.noteId != '' + AND rel.value != '' + AND branches.branchId IS NULL`, noteIds) + ]; } function getLinkMap(req) {