From 90c68524231d59a098dc89d2b61dca9b8f937585 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 22 Feb 2021 22:34:33 +0100 Subject: [PATCH] hide auto links by default in relation map, allow configuring displayed relations, fixes #1674 --- src/public/app/widgets/note_detail.js | 2 +- .../app/widgets/type_widgets/relation_map.js | 2 +- src/routes/api/notes.js | 14 +++++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/public/app/widgets/note_detail.js b/src/public/app/widgets/note_detail.js index b0a869e2b..e8d4e2313 100644 --- a/src/public/app/widgets/note_detail.js +++ b/src/public/app/widgets/note_detail.js @@ -276,7 +276,7 @@ export default class NoteDetailWidget extends TabAwareWidget { const label = attrs.find(attr => attr.type === 'label' - && ['readOnly', 'autoReadOnlyDisabled', 'cssClass', 'bookZoomLevel'].includes(attr.name) + && ['readOnly', 'autoReadOnlyDisabled', 'cssClass', 'bookZoomLevel', 'displayRelations'].includes(attr.name) && attr.isAffecting(this.note)); const relation = attrs.find(attr => diff --git a/src/public/app/widgets/type_widgets/relation_map.js b/src/public/app/widgets/type_widgets/relation_map.js index 76bfa7c0c..cf652e90c 100644 --- a/src/public/app/widgets/type_widgets/relation_map.js +++ b/src/public/app/widgets/type_widgets/relation_map.js @@ -285,7 +285,7 @@ export default class RelationMapTypeWidget extends TypeWidget { async loadNotesAndRelations() { const noteIds = this.mapData.notes.map(note => note.noteId); - const data = await server.post("notes/relation-map", {noteIds}); + const data = await server.post("notes/relation-map", {noteIds, relationMapNoteId: this.noteId}); this.relations = []; diff --git a/src/routes/api/notes.js b/src/routes/api/notes.js index a839c0bcf..6ebe2369d 100644 --- a/src/routes/api/notes.js +++ b/src/routes/api/notes.js @@ -117,7 +117,8 @@ function setNoteTypeMime(req) { } function getRelationMap(req) { - const noteIds = req.body.noteIds; + const {relationMapNoteId, noteIds} = req.body; + const resp = { // noteId => title noteTitles: {}, @@ -134,12 +135,23 @@ function getRelationMap(req) { const questionMarks = noteIds.map(noteId => '?').join(','); + const relationMapNote = repository.getNote(relationMapNoteId); + + const displayRelationsVal = relationMapNote.getLabelValue('displayRelations'); + const displayRelations = !displayRelationsVal ? [] : displayRelationsVal + .split(",") + .map(token => token.trim()); + + console.log("displayRelations", displayRelations); + const notes = repository.getEntities(`SELECT * FROM notes WHERE isDeleted = 0 AND noteId IN (${questionMarks})`, noteIds); for (const note of notes) { resp.noteTitles[note.noteId] = note.title; resp.relations = resp.relations.concat(note.getRelations() + .filter(relation => !relation.isAutoLink() || displayRelations.includes(relation.name)) + .filter(relation => displayRelations.length === 0 || displayRelations.includes(relation.name)) .filter(relation => noteIds.includes(relation.value)) .map(relation => ({ attributeId: relation.attributeId,