diff --git a/src/public/app/widgets/collapsible_widgets/note_revisions.js b/src/public/app/widgets/collapsible_widgets/note_revisions.js index 3f0ac3e9e..636c0fd97 100644 --- a/src/public/app/widgets/collapsible_widgets/note_revisions.js +++ b/src/public/app/widgets/collapsible_widgets/note_revisions.js @@ -46,6 +46,8 @@ class NoteRevisionsWidget extends CollapsibleWidget { return; } + const groupedRevisionItems = this.getGroupedRevisionItems(revisionItems); + if (note.noteId !== this.noteId) { return; } @@ -54,23 +56,47 @@ class NoteRevisionsWidget extends CollapsibleWidget { const $list = this.$body.find('.note-revision-list'); - for (const item of revisionItems) { - const $listItem = $('
  • ').append($("", { - 'data-action': 'note-revision', - 'data-note-path': note.noteId, - 'data-note-revision-id': item.noteRevisionId, - title: 'This revision was last edited on ' + item.dateLastEdited, - href: 'javascript:' - }).text(item.dateLastEdited.substr(0, 16))); + for (const [date, items] of groupedRevisionItems) { + const $listItem = $('
  • ').append($("").text(date + ": ")); + const revsWithinADay = []; - if (item.contentLength !== null) { - $listItem.append($("").text(` (${item.contentLength} bytes)`)) + for (const item of items) { + const $rev = $(""); + + + $rev.append($("", { + 'data-action': 'note-revision', + 'data-note-path': note.noteId, + 'data-note-revision-id': item.noteRevisionId, + title: 'This revision was last edited on ' + item.dateLastEdited, + href: 'javascript:' + }) + .text(item.dateLastEdited.substr(11, 5))); + + revsWithinADay.push($rev.html()); } + $listItem.append(revsWithinADay.join(", ")); $list.append($listItem); } } + getGroupedRevisionItems(revisionItems) { + const grouped = new Map(); // map preserves order of insertion + + for (const item of revisionItems) { + const [date] = item.dateLastEdited.substr(0, 16).split(" "); + + if (!grouped.has(date)) { + grouped.set(date, []); + } + + grouped.get(date).push(item); + } + + return grouped; + } + entitiesReloadedEvent({loadResults}) { if (loadResults.hasNoteRevisionForNote(this.noteId)) { this.refresh();