Merge pull request #11 from msoedov/theme-chage

Theme select button
This commit is contained in:
Alex Myasoedov 2017-03-03 10:38:59 -05:00 committed by GitHub
commit 3e99709c0c
3 changed files with 87 additions and 44 deletions

View file

@ -1,54 +1,51 @@
$(function() { $(function() {
function slideSeparatorLines(text) { function slideSeparatorLines(text) {
var lines = text.split('\n'); var lines = text.split('\n');
var separatorLineNumbers = []; var separatorLineNumbers = [];
for (i = 0; i < lines.length; i++) { for (i = 0; i < lines.length; i++) {
var line = lines[i]; var line = lines[i];
if (line === '---') { if (line === '---') {
separatorLineNumbers.push(i); separatorLineNumbers.push(i);
} }
}
return separatorLineNumbers;
} }
return separatorLineNumbers; function currentCursorSlide(cursorLine) {
} var text = ace.edit("editor").getValue();
var separatorPositions = slideSeparatorLines(text);
var slideNumber = separatorPositions.length;
separatorPositions.every(function(pos, num) {
if (pos >= cursorLine) {
slideNumber = num;
return false;
}
return true;
});
return slideNumber;
}
function currentCursorSlide(cursorLine) {
var text = ace.edit("editor").getValue(); var editor = ace.edit("editor");
var separatorPositions = slideSeparatorLines(text); editor.setTheme("ace/theme/chrome");
var slideNumber = separatorPositions.length; editor.getSession().setMode("ace/mode/markdown");
separatorPositions.every(function(pos, num) { editor.getSession().setUseWrapMode(true);
if (pos >= cursorLine) { editor.setShowPrintMargin(true);
slideNumber = num;
return false; $.get('/slides.md', function(data) {
} editor.setValue(data, -1);
return true;
}); });
return slideNumber;
}
ace.edit('editor').getSession().selection.on('changeCursor', function(e) {
var editor = ace.edit("editor"); var cursorRow = ace.edit('editor').getCursorPosition().row;
editor.setTheme("ace/theme/chrome"); var currentSlide = currentCursorSlide(cursorRow);
editor.getSession().setMode("ace/mode/markdown"); $('#slides-frame')[0].contentWindow.postMessage(JSON.stringify({
editor.getSession().setUseWrapMode(true); method: 'slide',
editor.setShowPrintMargin(true); args: [currentSlide]
}), window.location.origin);
$.get('/slides.md', function(data) { });
editor.setValue(data, -1);
});
ace.edit('editor').getSession().selection.on('changeCursor', function(e) {
var cursorRow = ace.edit('editor').getCursorPosition().row;
var currentSlide = currentCursorSlide(cursorRow);
$('#slides-frame')[0].contentWindow.postMessage(JSON.stringify({
method: 'slide',
args: [currentSlide]
}), window.location.origin);
});
}); });

View file

@ -5,6 +5,7 @@ function isPreview() {
function initializeReveal() { function initializeReveal() {
// Full list of configuration options available at: // Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration // https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({ Reveal.initialize({
controls: true, controls: true,
progress: true, progress: true,
@ -70,6 +71,8 @@ function initializeReveal() {
} }
] ]
}); });
themesCtrl();
} }
function highlightAnyCodeBlocks() { function highlightAnyCodeBlocks() {
@ -112,6 +115,47 @@ function externalLinksInNewWindow() {
insertMarkdownReference(); insertMarkdownReference();
initializeReveal(); initializeReveal();
function themesCtrl() {
var defaultTheme = "black.css",
currentTheme = localStorage.getItem('theme?') ||
defaultTheme;
function setTheme(theme) {
cssEl = $("#theme");
cssEl.attr("href", "/static/reveal.js/css/theme/" + theme);
localStorage.setItem('theme?', theme);
}
setTheme(currentTheme);
if (!isPreview()) {
return
}
var availableThemes = [
"black.css",
"beige.css",
"blood.css",
"league.css",
"moon.css",
"night.css",
"serif.css",
"simple.css",
"sky.css",
"solarized.css",
"white.css",
];
themeEl = $("#themes");
availableThemes.forEach(function(theme) {
elem = $("<option value=" + theme + ">" + theme + "</option>");
themeEl.append(elem);
})
themeEl.val(currentTheme);
themeEl.change(function() {
val = themeEl.val()
setTheme(val);
});
themeEl.attr("hidden", false);
}
// Monkey patch Reveal so we can reload markdown through an // Monkey patch Reveal so we can reload markdown through an
// inter window message (using the reveal rpc api) // inter window message (using the reveal rpc api)
// (yes, reveal has an rpc api!) // (yes, reveal has an rpc api!)

View file

@ -36,6 +36,8 @@
</head> </head>
<body> <body>
<select id="themes" hidden="true" style="float:right;">
</select>
<div class="reveal"> <div class="reveal">
<div class="slides"></div> <div class="slides"></div>
</div> </div>