diff options
author | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-02-17 20:07:41 +0100 |
---|---|---|
committer | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-02-17 20:16:21 +0100 |
commit | a22d00ab25b13b82d19890428f124b4ed3759f92 (patch) | |
tree | 725f94443113d3aaaa10aa31bc6e11cdba4b3382 /plugin/notes-server | |
parent | 9478d03cf6584ac4ec93a79b02f4290da194dee5 (diff) | |
download | fosdem-2018-presentation-a22d00ab25b13b82d19890428f124b4ed3759f92.tar fosdem-2018-presentation-a22d00ab25b13b82d19890428f124b4ed3759f92.tar.gz |
server side notes plugin now supports input via data-notes attribute
Diffstat (limited to 'plugin/notes-server')
-rw-r--r-- | plugin/notes-server/client.js | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/plugin/notes-server/client.js b/plugin/notes-server/client.js index 156cb9a..ee60ff7 100644 --- a/plugin/notes-server/client.js +++ b/plugin/notes-server/client.js @@ -1,12 +1,13 @@ (function() { // don't emit events from inside the previews themselves - if ( window.location.search.match( /receiver/gi ) ) { return; } + if( window.location.search.match( /receiver/gi ) ) { return; } - var socket = io.connect(window.location.origin); - var socketId = Math.random().toString().slice(2); - - console.log('View slide notes at ' + window.location.origin + '/notes/' + socketId); - window.open(window.location.origin + '/notes/' + socketId, 'notes-' + socketId); + var socket = io.connect( window.location.origin ); + var socketId = Math.random().toString().slice( 2 ); + + console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId ); + + window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId ); // Fires when a fragment is shown Reveal.addEventListener( 'fragmentshown', function( event ) { @@ -23,16 +24,17 @@ fragment : 'previous', socketId : socketId }; - socket.emit('fragmentchanged', fragmentData); + socket.emit( 'fragmentchanged', fragmentData ); } ); // Fires when slide is changed Reveal.addEventListener( 'slidechanged', function( event ) { - var nextindexh; - var nextindexv; - var slideElement = event.currentSlide; + var nextindexh, + nextindexv, + slideElement = event.currentSlide, + notesElement = slideElement.querySelector( 'aside.notes' ); - if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') { + if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) { nextindexh = event.indexh; nextindexv = event.indexv + 1; } else { @@ -40,18 +42,27 @@ nextindexv = 0; } - var notes = slideElement.querySelector('aside.notes'); - var slideData = { - notes : notes ? notes.innerHTML : '', + var messageData = { + notes : '', indexh : event.indexh, indexv : event.indexv, nextindexh : nextindexh, nextindexv : nextindexv, socketId : socketId, - markdown : notes ? typeof notes.getAttribute('data-markdown') === 'string' : false - + markdown : false }; - socket.emit('slidechanged', slideData); + // Look for notes defined in a slide attribute + if( slideElement.hasAttribute( 'data-notes' ) ) { + messageData.notes = slideElement.getAttribute( 'data-notes' ); + } + + // Look for notes defined in an aside element + if( notesElement ) { + messageData.notes = notesElement.innerHTML; + messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string'; + } + + socket.emit( 'slidechanged', messageData ); } ); }()); |