diff options
author | David Banham | 2013-03-08 10:29:54 +1100 |
---|---|---|
committer | David Banham | 2013-03-08 10:29:54 +1100 |
commit | 61c229a4f969a0720085c2710f8a7cfd8a12b4a6 (patch) | |
tree | 637eeedce43c63a6aa004d566944ad791b984e7d /plugin/notes-server/client.js | |
parent | 26d5febd7f24223900aa50d24d35e610c7c8a334 (diff) | |
parent | 7081f901da553206f746c40c4a0c1b5773697cf2 (diff) |
Merge branch 'master' of https://github.com/hakimel/reveal.js
Conflicts:
README.md
index.html
js/reveal.js
package.json
plugin/speakernotes/client.js
Diffstat (limited to 'plugin/notes-server/client.js')
-rw-r--r-- | plugin/notes-server/client.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/plugin/notes-server/client.js b/plugin/notes-server/client.js new file mode 100644 index 0000000..156cb9a --- /dev/null +++ b/plugin/notes-server/client.js @@ -0,0 +1,57 @@ +(function() { + // don't emit events from inside the previews themselves + 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); + + // Fires when a fragment is shown + Reveal.addEventListener( 'fragmentshown', function( event ) { + var fragmentData = { + fragment : 'next', + socketId : socketId + }; + socket.emit('fragmentchanged', fragmentData); + } ); + + // Fires when a fragment is hidden + Reveal.addEventListener( 'fragmenthidden', function( event ) { + var fragmentData = { + fragment : 'previous', + socketId : socketId + }; + socket.emit('fragmentchanged', fragmentData); + } ); + + // Fires when slide is changed + Reveal.addEventListener( 'slidechanged', function( event ) { + var nextindexh; + var nextindexv; + var slideElement = event.currentSlide; + + if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') { + nextindexh = event.indexh; + nextindexv = event.indexv + 1; + } else { + nextindexh = event.indexh + 1; + nextindexv = 0; + } + + var notes = slideElement.querySelector('aside.notes'); + var slideData = { + notes : notes ? notes.innerHTML : '', + indexh : event.indexh, + indexv : event.indexv, + nextindexh : nextindexh, + nextindexv : nextindexv, + socketId : socketId, + markdown : notes ? typeof notes.getAttribute('data-markdown') === 'string' : false + + }; + + socket.emit('slidechanged', slideData); + } ); +}()); |