2025-01-12 04:36:52 +08:00

64 lines
1.8 KiB
JavaScript

var editor = ace.edit("notebook");
editor.setTheme("ace/theme/tomorrow");
editor.getSession().setMode('ace/mode/markdown');
editor.getSession().setUseWrapMode(true);
editor.getSession().setTabSize(2);
editor.getSession().setFoldStyle('markbegin');
editor.getSession().on('change', function(e) {
$('#nbSrc').val(editor.getValue()).change();
});
editor.getSession().selection.on('changeSelection', function(e) {
var s = editor.session.getTextRange(editor.getSelectionRange());
if (s == '') s = editor.getValue();
$('#nbSrc').val(s).change();
});
editor.commands.addCommand({
name: 'insertChunk',
bindKey: 'Ctrl-Alt-I',
exec: function(editor) {
editor.insert('```{r}\n\n```\n');
editor.navigateUp(2);
}
});
editor.commands.addCommand({
name: 'compileNotebook',
bindKey: 'F4|Ctrl-Shift-H',
exec: function(editor) {
$('#proxy button').trigger('click');
}
});
$(document).ready(function() {
// may pass a url as a query string after ? in the url
var h = window.location.search.substring(1);
function setSrc(msg) {
if (msg) {
alert('unable to read URL ' + h + '\n\nusing default R Markdown example');
}
$('#nbSrc').val(editor.getValue());
$('#proxy button').trigger('click');
}
var w = Math.max($(window).width()/2, 300);
$('#notebook').width(w - 10);
$('#nbOut').css('left', w + 10 + 'px');
if (h) {
$.get(h, {}, function(res) {
var data = res.data, str = data.content;
if (typeof(str) != 'string') return(setSrc(true));
if (data.encoding == 'base64') {
str = str.replace(/\n/g, '');
str = decodeURIComponent(escape(window.atob( str )));
}
if (str) {
editor.setValue(str);
editor.gotoLine(1);
setSrc(false);
} else setSrc(true);
}, 'jsonp')
.error(function() {
setSrc(true);
});
} else setSrc(false);
})