aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHakim El Hattab <hakim.elhattab@gmail.com>2015-09-10 08:28:52 +0200
committerHakim El Hattab <hakim.elhattab@gmail.com>2015-09-10 08:28:52 +0200
commit0338f280d3942094782da57ea3b5b72bdb833e9d (patch)
tree371e619bc9474e78dd805635b6a210614b20d4c1
parent5a40b4486f46b18aa640046595fc592cbb1a5735 (diff)
downloadfreenode-live-2017-presentation-0338f280d3942094782da57ea3b5b72bdb833e9d.tar
freenode-live-2017-presentation-0338f280d3942094782da57ea3b5b72bdb833e9d.tar.gz
add getSlideNotes API method and tests
-rw-r--r--README.md3
-rw-r--r--js/reveal.js46
-rw-r--r--test/test.html3
-rw-r--r--test/test.js10
4 files changed, 44 insertions, 18 deletions
diff --git a/README.md b/README.md
index 8d25fa7..9011605 100644
--- a/README.md
+++ b/README.md
@@ -372,6 +372,9 @@ Reveal.getIndices(); // { h: 0, v: 0 } }
Reveal.getProgress(); // 0-1
Reveal.getTotalSlides();
+// Returns the speaker notes for the current slide
+Reveal.getSlideNotes();
+
// State checks
Reveal.isFirstSlide();
Reveal.isLastSlide();
diff --git a/js/reveal.js b/js/reveal.js
index 83c180b..2b8fec7 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -2475,22 +2475,7 @@
if( config.showNotes && dom.speakerNotes && currentSlide && !isPrintingPDF() ) {
- var notes = '';
-
- // Notes can be specified via the data-notes attribute...
- if( currentSlide.hasAttribute( 'data-notes' ) ) {
- notes = currentSlide.getAttribute( 'data-notes' );
- }
-
- // ... or using an <aside class="notes"> element
- if( !notes ) {
- var notesElement = currentSlide.querySelector( 'aside.notes' );
- if( notesElement ) {
- notes = notesElement.innerHTML;
- }
- }
-
- dom.speakerNotes.innerHTML = notes;
+ dom.speakerNotes.innerHTML = getSlideNotes() || '';
}
@@ -3336,6 +3321,32 @@
}
/**
+ * Retrieves the speaker notes from a slide. Notes can be
+ * defined in two ways:
+ * 1. As a data-notes attribute on the slide <section>
+ * 2. As an <aside class="notes"> inside of the slide
+ */
+ function getSlideNotes( slide ) {
+
+ // Default to the current slide
+ slide = slide || currentSlide;
+
+ // Notes can be specified via the data-notes attribute...
+ if( slide.hasAttribute( 'data-notes' ) ) {
+ return slide.getAttribute( 'data-notes' );
+ }
+
+ // ... or using an <aside class="notes"> element
+ var notesElement = slide.querySelector( 'aside.notes' );
+ if( notesElement ) {
+ return notesElement.innerHTML;
+ }
+
+ return null;
+
+ }
+
+ /**
* Retrieves the current state of the presentation as
* an object. This state can then be restored at any
* time.
@@ -4486,6 +4497,9 @@
// Returns the slide background element at the specified index
getSlideBackground: getSlideBackground,
+ // Returns the speaker notes string for a slide, or null
+ getSlideNotes: getSlideNotes,
+
// Returns the previous slide element, may be null
getPreviousSlide: function() {
return previousSlide;
diff --git a/test/test.html b/test/test.html
index 34cf832..d08e4f0 100644
--- a/test/test.html
+++ b/test/test.html
@@ -24,10 +24,11 @@
<img data-src="fake-url.png">
<video data-src="fake-url.mp4"></video>
<audio data-src="fake-url.mp3"></audio>
+ <aside class="notes">speaker notes 1</aside>
</section>
<section>
- <section data-background="examples/assets/image2.png">
+ <section data-background="examples/assets/image2.png" data-notes="speaker notes 2">
<h1>2.1</h1>
</section>
<section>
diff --git a/test/test.js b/test/test.js
index 79ff81e..a96b70b 100644
--- a/test/test.js
+++ b/test/test.js
@@ -89,7 +89,7 @@ Reveal.addEventListener( 'ready', function() {
test( 'Reveal.isLastSlide after vertical slide', function() {
var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1;
-
+
Reveal.slide( 1, 1 );
Reveal.slide( lastSlideIndex );
strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( '+ lastSlideIndex +', 0 )' );
@@ -139,6 +139,14 @@ Reveal.addEventListener( 'ready', function() {
strictEqual( Reveal.getSlideBackground( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
});
+ test( 'Reveal.getSlideNotes', function() {
+ Reveal.slide( 0, 0 );
+ ok( Reveal.getSlideNotes() === 'speaker notes 1', 'works with <aside class="notes">' );
+
+ Reveal.slide( 1, 0 );
+ ok( Reveal.getSlideNotes() === 'speaker notes 2', 'works with <section data-notes="">' );
+ });
+
test( 'Reveal.getPreviousSlide/getCurrentSlide', function() {
Reveal.slide( 0, 0 );
Reveal.slide( 1, 0 );