From 48e451572b0c583b50159beaebfe13a41667de28 Mon Sep 17 00:00:00 2001 From: j Date: Thu, 31 Jan 2019 12:37:49 +0530 Subject: [PATCH] select annotations, edit notes --- static/css/oml.css | 4 ++++ static/html/oml.html | 1 - static/js/annotation.js | 32 ++++++++++++++++++-------------- static/js/oml.js | 4 +++- static/js/utils.js | 2 +- static/js/viewer.js | 19 ++++++++++++++++--- 6 files changed, 42 insertions(+), 20 deletions(-) diff --git a/static/css/oml.css b/static/css/oml.css index b4abb47..382cccd 100644 --- a/static/css/oml.css +++ b/static/css/oml.css @@ -1,5 +1,9 @@ .OMLQuote { + color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); + font-family: Georgia, Palatino, DejaVu Serif, Book Antiqua, Palatino Linotype, Times New Roman, serif; + font-size: 14px; + line-height: 21px; } .OMLAnnotation.selected .OMLQuote { diff --git a/static/html/oml.html b/static/html/oml.html index 2bb4f9e..5c40f80 100644 --- a/static/html/oml.html +++ b/static/html/oml.html @@ -4,7 +4,6 @@ Open Media Library - diff --git a/static/js/annotation.js b/static/js/annotation.js index 8b63d6f..98066ea 100644 --- a/static/js/annotation.js +++ b/static/js/annotation.js @@ -2,11 +2,6 @@ oml.ui.annotation = function(annotation, $iframe) { var $quote = Ox.Element().addClass('OxSelectable OMLQuote').css({ - backgroundColor: 'white', - color: 'black', - fontFamily: 'Georgia, Palatino, DejaVu Serif, Book Antiqua, Palatino Linotype, Times New Roman, serif', - fontSize: '14px', - lineHeight: '21px', padding: '8px' }).html(Ox.encodeHTMLEntities(annotation.text).replace(/\n/g, '
')).on({ click: function(event) { @@ -16,27 +11,35 @@ oml.ui.annotation = function(annotation, $iframe) { }) } }) + var notes = annotation.notes.length ? annotation.notes.map(function(note) { + note.editable = note.user == '' + return note + }) : [{ + id: 'A', + placeholder: 'Add Note', + value: '', + editable: true + }]; + console.log(annotation.notes) var $note = Ox.ArrayEditable({ editing: true, - items: (annotation.comments || []).map(function(comment) { - comment.editable = true - return comment - }), + items: notes, type: 'textarea' }).css({ margin: '2px', minHeight: '12px' }).bindEvent({ submit: function(data) { - var comment = Ox.getObjectById(annotation.comments, data.id) - if (comment) { - comment.value = data.value - comment.modified = (new Date).toISOString() + var note = Ox.getObjectById(annotation.notes, data.id) + if (note) { + note.value = data.value + note.modified = (new Date).toISOString() } else { - annotation.comments.push({ + annotation.notes.push({ created: data.created || (new Date).toISOString(), modified: (new Date).toISOString(), id: data.id, + user: '', value: data.value }) } @@ -64,6 +67,7 @@ oml.ui.annotation = function(annotation, $iframe) { } that.deselect = function() { that.removeClass('selected') + that.loseFocus() } that.select = function () { let selected = document.querySelector('.OMLAnnotation.selected') diff --git a/static/js/oml.js b/static/js/oml.js index 07be0e2..182c825 100644 --- a/static/js/oml.js +++ b/static/js/oml.js @@ -226,7 +226,9 @@ data.browserSupported = browserSupported; oml.ui = {}; loadOMLFiles(function() { - initOML(data); + Ox.getFile('/static/css/oml.css', function() { + initOML(data); + }) }); }, updatestatus: function(data) { diff --git a/static/js/utils.js b/static/js/utils.js index bdbdb27..94a1003 100644 --- a/static/js/utils.js +++ b/static/js/utils.js @@ -988,7 +988,7 @@ oml.resizeListFolders = function() { // FIXME: does this have to be here? var width = oml.getListFoldersWidth(), columnWidth = width - 16 - 48; - oml.$ui.librariesList + oml.$ui.librariesList && oml.$ui.librariesList .css({width: width + 'px'}) .resizeColumn('name', columnWidth); Ox.forEach(oml.$ui.folder, function($folder, index) { diff --git a/static/js/viewer.js b/static/js/viewer.js index ca78003..98a3598 100644 --- a/static/js/viewer.js +++ b/static/js/viewer.js @@ -41,12 +41,23 @@ oml.ui.viewer = function() { function loadAnnotations(callback) { annotations = JSON.parse(localStorage[item + '.annotations'] || '[]') + annotations.forEach(function(data) { + if (data.comments && !data.notes) { + data.notes = data.comments + delete data.comments + } + data.notes = data.notes || []; + }) callback && callback(annotations) } function saveAnnotations(data) { if (data) { data.created = data.created || (new Date).toISOString(); - data.comments = data.comments || []; + if (data.comments && !data.notes) { + data.notes = data.comments + delete data.comments + } + data.notes = data.notes || []; annotations.push(data); } localStorage[item + '.annotations'] = JSON.stringify(annotations) @@ -95,9 +106,11 @@ oml.ui.viewer = function() { oml.$ui.annotationFolder.find('#a-' + data.id).remove() removeAnnotation(data.id) } else if (event == 'selectAnnotation') { - console.log('select', data) + var $annotation = oml.$ui.annotationFolder.find('#a-' + data.id) + $annotation.select() } else if (event == 'deselectAnnotation') { - console.log('deselect', data) + var $annotation = oml.$ui.annotationFolder.find('#a-' + data.id) + $annotation.deselect() } else { that.triggerEvent(event, data); }