New features for Capytale's Jupyter's notebooks : (1) admonition question quick add, (2) restart & clear cells outputs shortcut
当前为
// ==UserScript==
// @name Capytale Jupyter Notebook : more tools
// @namespace http://tampermonkey.net/
// @version 2025-01-16
// @description New features for Capytale's Jupyter's notebooks : (1) admonition question quick add, (2) restart & clear cells outputs shortcut
// @author James Web (in the area)
// @supportURL https://codeberg.org/jrm-omg/userscripts
// @include https://capytale2.ac-paris.fr/p/basthon/**
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Wait until Basthon's ready
let ticTac;
function myCallback() {
if (document.querySelector('#MathJax_Message')) {
// Basthon is ready, go go go !
clearInterval(ticTac);
// (1) Admonition question button feature
function addAdmoQuestion() {
let cell = Jupyter.notebook.insert_cell_below('markdown')
cell.set_text('!!! question\n\n!!!')
}
let qEl = document.createElement('button');
qEl.className = 'btn btn-default';
qEl.title = 'Ajouter une admonition « question » après la cellule active';
qEl.innerHTML = '<i class="fa-question-circle fa"></i>';
qEl.addEventListener('click', addAdmoQuestion);
// (2) Restart & clear cells outputs shortcut
function restartAndClean() {
document.querySelector('#restart_run_all').click();
setTimeout(()=>{
document.querySelector('.modal-footer .btn-danger').click();
setTimeout(()=>{
document.querySelector('#restart_clear_output').click();
setTimeout(()=>{
document.querySelector('.modal-footer .btn-danger').click();
}, 500)
}, 500)
}, 500)
}
let rEl = document.createElement('button');
rEl.className = 'btn btn-default';
rEl.title = 'Tout exécuter + Effacer les sorties';
rEl.innerHTML = '<i class="fa-truck fa"></i>';
rEl.addEventListener('click', restartAndClean);
// Insert new buttons inside the user-scripts-group
let usgEl = document.querySelector('.user-scripts-group');
if (!usgEl) {
usgEl = document.createElement('div');
usgEl.className = 'btn-group user-scripts-group';
document.querySelector('#maintoolbar-container').append(usgEl);
}
usgEl.append(qEl);
usgEl.append(rEl);
}
}
ticTac = setInterval(myCallback, 500);
})();