aboutsummaryrefslogtreecommitdiff
path: root/plugin/notes-server/client.js
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/notes-server/client.js')
-rw-r--r--plugin/notes-server/client.js69
1 files changed, 28 insertions, 41 deletions
diff --git a/plugin/notes-server/client.js b/plugin/notes-server/client.js
index ee60ff7..f7ecfa2 100644
--- a/plugin/notes-server/client.js
+++ b/plugin/notes-server/client.js
@@ -1,55 +1,28 @@
(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 );
+ var socket = io.connect( window.location.origin ),
+ 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);
- } );
+ /**
+ * Posts the current slide data to the notes window
+ */
+ function post() {
- // 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,
- nextindexv,
- slideElement = event.currentSlide,
+ var slideElement = Reveal.getCurrentSlide(),
notesElement = slideElement.querySelector( 'aside.notes' );
- if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
- nextindexh = event.indexh;
- nextindexv = event.indexv + 1;
- } else {
- nextindexh = event.indexh + 1;
- nextindexv = 0;
- }
-
var messageData = {
- notes : '',
- indexh : event.indexh,
- indexv : event.indexv,
- nextindexh : nextindexh,
- nextindexv : nextindexv,
- socketId : socketId,
- markdown : false
+ notes: '',
+ markdown: false,
+ socketId: socketId,
+ state: Reveal.getState()
};
// Look for notes defined in a slide attribute
@@ -63,6 +36,20 @@
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
}
- socket.emit( 'slidechanged', messageData );
- } );
+ socket.emit( 'state', messageData );
+
+ }
+
+ // Monitor events that trigger a change in state
+ Reveal.addEventListener( 'slidechanged', post );
+ Reveal.addEventListener( 'fragmentshown', post );
+ Reveal.addEventListener( 'fragmenthidden', post );
+ Reveal.addEventListener( 'overviewhidden', post );
+ Reveal.addEventListener( 'overviewshown', post );
+ Reveal.addEventListener( 'paused', post );
+ Reveal.addEventListener( 'resumed', post );
+
+ // Post the initial state
+ post();
+
}());