瀏覽代碼

Make the fragments visible in speaker notes

Michael Kühnel 13 年之前
父節點
當前提交
296242f8d3
共有 2 個文件被更改,包括 67 次插入23 次删除
  1. 17 6
      plugin/notes/notes.html
  2. 50 17
      plugin/notes/notes.js

+ 17 - 6
plugin/notes/notes.html

@@ -109,12 +109,15 @@
 
 					window.addEventListener( 'message', function( event ) {
 						var data = JSON.parse( event.data );
-
-						if( data.markdown ) {
-							notes.innerHTML = (new Showdown.converter()).makeHtml( data.notes );
-						}
-						else {
-							notes.innerHTML = data.notes;
+						console.log(data);
+						// No need for updating the notes in case of fragement changes
+						if ( data.notes !== undefined) {
+							if( data.markdown ) {
+								notes.innerHTML = (new Showdown.converter()).makeHtml( data.notes );
+							}
+							else {
+								notes.innerHTML = data.notes;
+							}
 						}
 
 						// Kill the slide listeners while responding to the event
@@ -124,6 +127,14 @@
 						currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv );
 						nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
 
+						// Showing and hiding fragments
+						if (data.fragment === 'next') {
+							currentSlide.contentWindow.Reveal.nextFragment();
+						}
+						else if (data.fragment === 'prev') {
+							currentSlide.contentWindow.Reveal.prevFragment();
+						}
+
 						// Resume listening on the next cycle
 						setTimeout( addSlideListeners, 1 );
 

+ 50 - 17
plugin/notes/notes.js

@@ -7,15 +7,36 @@ var RevealNotes = (function() {
 	function openNotes() {
 		var notesPopup = window.open( 'plugin/notes/notes.html', 'reveal.js - Notes', 'width=1120,height=850' );
 
-		Reveal.addEventListener( 'slidechanged', post );
+		// Fires when slide is changed
+		Reveal.addEventListener( 'slidechanged', function( event ) {
+			post('slidechanged');
+		} );
+
+		// Fires when a fragment is shown
+		Reveal.addEventListener( 'fragmentshown', function( event ) {
+			post('fragmentshown');
+		} );
+
+		// Fires when a fragment is hidden
+		Reveal.addEventListener( 'fragmenthidden', function( event ) {
+			post('fragmenthidden');
+		} );
 
-		// Posts the current slide data to the notes window
-		function post() {
+		/**
+		 * @description	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) {
+			console.log(eventType);
 			var slideElement = Reveal.getCurrentSlide(),
 				indexh = Reveal.getIndices().h,
 				indexv = Reveal.getIndices().v,
+				notes = slideElement.querySelector( 'aside.notes' ),
 				nextindexh,
-				nextindexv;
+				nextindexv,
+				slideData;
 
 			if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
 				nextindexh = indexh;
@@ -25,16 +46,26 @@ var RevealNotes = (function() {
 				nextindexv = 0;
 			}
 
-			var notes = slideElement.querySelector( 'aside.notes' );
-
-			var slideData = {
-				notes : notes ? notes.innerHTML : '',
-				indexh : indexh,
-				indexv : indexv,
-				nextindexh : nextindexh,
-				nextindexv : nextindexv,
-				markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false
-			};
+			if (eventType === 'slidechanged') {
+				slideData = {
+					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') {
+				slideData = {
+					fragment : 'next'
+				};
+			}
+			else if (eventType === 'fragmenthidden') {
+				slideData = {
+					fragment : 'prev'
+				};
+			}
 
 			notesPopup.postMessage( JSON.stringify( slideData ), '*' );
 		}
@@ -50,7 +81,9 @@ var RevealNotes = (function() {
 		} );
 
 		// Navigate to the current slide when the notes are loaded
-		notesPopup.addEventListener( 'load', post, false );
+		notesPopup.addEventListener( 'load', function( event ) {
+			post('slidechanged');
+		}, false );
 	}
 
 	// If the there's a 'notes' query set, open directly
@@ -70,5 +103,5 @@ var RevealNotes = (function() {
 		}
 	}, false );
 
-	return { open: openNotes }
-})();
+	return { open: openNotes };
+})();

PANIC: session(release): write data/sessions/3/5/35724880207127f8: no space left on device

PANIC

session(release): write data/sessions/3/5/35724880207127f8: no space left on device
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/session@v1.0.3/session.go:204 (0xb13e07)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:80 (0x967b75)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:114 (0x967bf6)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/recovery.go:161 (0x15baec4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/logger.go:40 (0x96b257)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:187 (0x972959)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:304 (0x973a01)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/macaron.go:218 (0x96c572)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:3311 (0x85a5cd)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:2073 (0x837f6f)
/my/cache/.heroku/go/go1.26.3/go/src/runtime/asm_amd64.s:1771 (0x493380)