From 2dae9b9621b919598598cd2d91bce22adf60abd8 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 8 Sep 2019 09:17:16 +0200 Subject: [PATCH] note revisions widget shows content length --- .../javascripts/widgets/note_revisions.js | 12 ++++++-- src/routes/api/note_revisions.js | 28 ++++++++++++++++++- src/routes/routes.js | 1 + 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/public/javascripts/widgets/note_revisions.js b/src/public/javascripts/widgets/note_revisions.js index 7cbc4c186..3fcdecb48 100644 --- a/src/public/javascripts/widgets/note_revisions.js +++ b/src/public/javascripts/widgets/note_revisions.js @@ -20,7 +20,7 @@ class NoteRevisionsWidget extends StandardWidget { } async doRenderBody() { - const revisionItems = await server.get(`notes/${this.ctx.note.noteId}/revisions`); + const revisionItems = await server.get(`notes/${this.ctx.note.noteId}/revision-list`); if (revisionItems.length === 0) { this.$body.text("No revisions yet..."); @@ -32,12 +32,18 @@ class NoteRevisionsWidget extends StandardWidget { const $list = this.$body.find('.note-revision-list'); for (const item of revisionItems) { - $list.append($('
  • ').append($("", { + const $listItem = $('
  • ').append($("", { 'data-action': 'note-revision', 'data-note-path': this.ctx.note.noteId, 'data-note-revision-id': item.noteRevisionId, href: 'javascript:' - }).text(item.dateModifiedFrom.substr(0, 16)))); + }).text(item.dateModifiedFrom.substr(0, 16))); + + if (item.contentLength !== null) { + $listItem.append($("").text(` (${item.contentLength} characters)`)) + } + + $list.append($listItem); } } diff --git a/src/routes/api/note_revisions.js b/src/routes/api/note_revisions.js index 84148248f..8f50fa03a 100644 --- a/src/routes/api/note_revisions.js +++ b/src/routes/api/note_revisions.js @@ -5,7 +5,32 @@ const noteCacheService = require('../../services/note_cache'); async function getNoteRevisions(req) { const noteId = req.params.noteId; - return await repository.getEntities("SELECT * FROM note_revisions WHERE noteId = ? order by utcDateModifiedTo desc", [noteId]); + + return await repository.getEntities(` + SELECT note_revisions.* + FROM note_revisions + WHERE noteId = ? + ORDER BY utcDateModifiedTo DESC`, [noteId]); +} + +async function getNoteRevisionList(req) { + const noteId = req.params.noteId; + + return await repository.getEntities(` + SELECT noteRevisionId, + noteId, + title, + isProtected, + utcDateModifiedFrom, + utcDateModifiedTo, + dateModifiedFrom, + dateModifiedTo, + type, + mime, + CASE isProtected WHEN 1 THEN null ELSE LENGTH(content) END AS contentLength + FROM note_revisions + WHERE noteId = ? + ORDER BY utcDateModifiedTo DESC`, [noteId]); } async function getEditedNotesOnDate(req) { @@ -30,5 +55,6 @@ async function getEditedNotesOnDate(req) { module.exports = { getNoteRevisions, + getNoteRevisionList, getEditedNotesOnDate }; \ No newline at end of file diff --git a/src/routes/routes.js b/src/routes/routes.js index 45c99054b..a18410049 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -132,6 +132,7 @@ function register(app) { apiRoute(PUT, '/api/notes/:noteId/protect/:isProtected', notesApiRoute.protectSubtree); apiRoute(PUT, /\/api\/notes\/(.*)\/type\/(.*)\/mime\/(.*)/, notesApiRoute.setNoteTypeMime); apiRoute(GET, '/api/notes/:noteId/revisions', noteRevisionsApiRoute.getNoteRevisions); + apiRoute(GET, '/api/notes/:noteId/revision-list', noteRevisionsApiRoute.getNoteRevisionList); apiRoute(POST, '/api/notes/relation-map', notesApiRoute.getRelationMap); apiRoute(PUT, '/api/notes/:noteId/change-title', notesApiRoute.changeTitle);