mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-12-27 03:31:52 +00:00
96d4a3ecf7
Due to historical reasons, the code is in subfolder "1". With SVN removal, we place the code back and remove the annoying "1" folder.
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
(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 ),
|
|
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 );
|
|
|
|
/**
|
|
* Posts the current slide data to the notes window
|
|
*/
|
|
function post() {
|
|
|
|
var slideElement = Reveal.getCurrentSlide(),
|
|
notesElement = slideElement.querySelector( 'aside.notes' );
|
|
|
|
var messageData = {
|
|
notes: '',
|
|
markdown: false,
|
|
socketId: socketId,
|
|
state: Reveal.getState()
|
|
};
|
|
|
|
// Look for notes defined in a slide attribute
|
|
if( slideElement.hasAttribute( 'data-notes' ) ) {
|
|
messageData.notes = slideElement.getAttribute( 'data-notes' );
|
|
}
|
|
|
|
// Look for notes defined in an aside element
|
|
if( notesElement ) {
|
|
messageData.notes = notesElement.innerHTML;
|
|
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
|
|
}
|
|
|
|
socket.emit( 'statechanged', messageData );
|
|
|
|
}
|
|
|
|
// When a new notes window connects, post our current state
|
|
socket.on( 'connect', function( data ) {
|
|
post();
|
|
} );
|
|
|
|
// 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();
|
|
|
|
}());
|