simplify client side notes plugin
authorHakim El Hattab <hakim.elhattab@gmail.com>
Fri, 26 Jul 2013 13:48:21 +0000 (09:48 -0400)
committerHakim El Hattab <hakim.elhattab@gmail.com>
Fri, 26 Jul 2013 13:48:21 +0000 (09:48 -0400)
plugin/notes/notes.html
plugin/notes/notes.js

index 8af43fb74bae6fdc29f66446aa2ad4ac05c2cbbf..9151663697fe31a4b055a0bf8d730cfe247e399c 100644 (file)
 
                                        window.addEventListener( 'message', function( event ) {
                                                var data = JSON.parse( event.data );
+
                                                // No need for updating the notes in case of fragment changes
                                                if ( data.notes !== undefined) {
                                                        if( data.markdown ) {
                                                        }
                                                }
 
-                                               // Showing and hiding fragments
-                                               if( data.fragment === 'next' ) {
-                                                       currentSlide.contentWindow.Reveal.nextFragment();
-                                               }
-                                               else if( data.fragment === 'prev' ) {
-                                                       currentSlide.contentWindow.Reveal.prevFragment();
-                                               }
-                                               else {
-                                                       // Update the note slides
-                                                       currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv );
-                                                       nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
-                                               }
+                                               // Update the note slides
+                                               currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv, data.indexf );
+                                               nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
 
                                        }, false );
 
index 63de05a0d3d7346c6e02a47264362220213ea596..9a82c3c44e4020e2b8a45d06902506fcdc6a4546 100644 (file)
@@ -10,72 +10,50 @@ var RevealNotes = (function() {
                var notesPopup = window.open( jsFileLocation + 'notes.html', 'reveal.js - Notes', 'width=1120,height=850' );
 
                // Fires when slide is changed
-               Reveal.addEventListener( 'slidechanged', function( event ) {
-                       post('slidechanged');
-               } );
+               Reveal.addEventListener( 'slidechanged', post );
 
                // Fires when a fragment is shown
-               Reveal.addEventListener( 'fragmentshown', function( event ) {
-                       post('fragmentshown');
-               } );
+               Reveal.addEventListener( 'fragmentshown', post );
 
                // Fires when a fragment is hidden
-               Reveal.addEventListener( 'fragmenthidden', function( event ) {
-                       post('fragmenthidden');
-               } );
+               Reveal.addEventListener( 'fragmenthidden', post );
 
                /**
                 * Posts the current slide data to the notes window
-                *
-                * @param {String} eventType Expecting 'slidechanged', 'fragmentshown' 
-                * or 'fragmenthidden' set in the events above to define the needed 
-                * slideDate.
                 */
-               function post( eventType ) {
+               function post() {
                        var slideElement = Reveal.getCurrentSlide(),
+                               slideIndices = Reveal.getIndices(),
                                messageData;
 
-                       if( eventType === 'slidechanged' ) {
-                               var notes = slideElement.querySelector( 'aside.notes' ),
-                                       indexh = Reveal.getIndices().h,
-                                       indexv = Reveal.getIndices().v,
-                                       nextindexh,
-                                       nextindexv;
+                       var notes = slideElement.querySelector( 'aside.notes' ),
+                               nextindexh,
+                               nextindexv;
 
-                               if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
-                                       nextindexh = indexh;
-                                       nextindexv = indexv + 1;
-                               } else {
-                                       nextindexh = indexh + 1;
-                                       nextindexv = 0;
-                               }
-
-                               messageData = {
-                                       notes : notes ? notes.innerHTML : '',
-                                       indexh : indexh,
-                                       indexv : indexv,
-                                       nextindexh : nextindexh,
-                                       nextindexv : nextindexv,
-                                       markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false
-                               };
-                       }
-                       else if( eventType === 'fragmentshown' ) {
-                               messageData = {
-                                       fragment : 'next'
-                               };
-                       }
-                       else if( eventType === 'fragmenthidden' ) {
-                               messageData = {
-                                       fragment : 'prev'
-                               };
+                       if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
+                               nextindexh = slideIndices.h;
+                               nextindexv = slideIndices.v + 1;
+                       } else {
+                               nextindexh = slideIndices.h + 1;
+                               nextindexv = 0;
                        }
 
+                       messageData = {
+                               notes : notes ? notes.innerHTML : '',
+                               indexh : slideIndices.h,
+                               indexv : slideIndices.v,
+                               indexf : slideIndices.f,
+                               nextindexh : nextindexh,
+                               nextindexv : nextindexv,
+                               markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false
+                       };
+
                        notesPopup.postMessage( JSON.stringify( messageData ), '*' );
                }
 
                // Navigate to the current slide when the notes are loaded
                notesPopup.addEventListener( 'load', function( event ) {
-                       post('slidechanged');
+                       post();
                }, false );
        }