You've already forked comprehensive-rust
mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-07-04 05:40:29 +02:00
Saving playground code state (#1917)
The embedded Playground's code reset when you navigate between slides. This has caused problems: if people navigate away from a slide to look something up, they've suddenly lost their work.
This commit is contained in:
committed by
GitHub
parent
6b3eb83bff
commit
b7a6e3b46d
46
theme/save-playgrounds.js
Normal file
46
theme/save-playgrounds.js
Normal file
@ -0,0 +1,46 @@
|
||||
(function savePlaygrounds() {
|
||||
function setCodeToPlayground() {
|
||||
var codes = JSON.parse(
|
||||
localStorage.getItem(`${window.location.href}₹code`)
|
||||
);
|
||||
if (codes) {
|
||||
var i = 0;
|
||||
Array.from(document.querySelectorAll(".playground")).forEach(function (
|
||||
pre_block
|
||||
) {
|
||||
let code_block = pre_block.querySelector("code");
|
||||
let editor = window.ace.edit(code_block);
|
||||
editor.setValue(codes[i]);
|
||||
editor.clearSelection();
|
||||
i += 1;
|
||||
});
|
||||
}
|
||||
}
|
||||
function getCodeFromPlayground() {
|
||||
var codes = [];
|
||||
Array.from(document.querySelectorAll(".playground")).forEach(function (
|
||||
pre_block
|
||||
) {
|
||||
let code_block = pre_block.querySelector("code");
|
||||
let editor = window.ace.edit(code_block);
|
||||
let code = editor.getValue();
|
||||
codes.push(code);
|
||||
});
|
||||
localStorage.setItem(`${window.location.href}₹code`, JSON.stringify(codes));
|
||||
}
|
||||
setCodeToPlayground();
|
||||
addEventListener("pagehide", getCodeFromPlayground);
|
||||
})();
|
||||
|
||||
function resetPlaygroundsClicked() {
|
||||
let keys = [];
|
||||
for (var i = 0, len = localStorage.length; i < len; i++) {
|
||||
if (localStorage.key(i).includes("₹code")) {
|
||||
keys.push(localStorage.key(i));
|
||||
}
|
||||
}
|
||||
for (let j = 0; j < keys.length; j++) {
|
||||
localStorage.removeItem(keys[j]);
|
||||
}
|
||||
}
|
||||
window.resetPlaygroundsClicked = resetPlaygroundsClicked;
|
Reference in New Issue
Block a user