jupyter notebook auto scroll

Add auto scroll to bottom funtion for jupyter notebook pages.

Versione datata 06/12/2020. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         jupyter notebook auto scroll
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Add auto scroll to bottom funtion for jupyter notebook pages.
// @author       Scruel Tao
// @match        http*://*/notebook*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var scrollDelay = 100;
    var defalutEnabled = true;

    var scrollEnableMap = new Map();
    var scrollCheckIndex = 1;

    $(".output_scroll").each(function() {
        $(this)[0].scrollTop = $(this)[0].scrollHeight;
    });

    function callScrollToBottom() {
        setTimeout(scrollToBottom, scrollDelay);
    }

    function scrollToBottom() {
        $(".output_scroll").each(function() {
            if (!$(this).attr('scroll_checkbox_index')){
                $(this).attr('scroll_checkbox_index', scrollCheckIndex);
                var div = document.createElement('div');
                var checkbox = document.createElement('input');
                checkbox.type = "checkbox";
                checkbox.setAttribute('scroll_checkbox_index', scrollCheckIndex);
                if (defalutEnabled) {
                    checkbox.checked = "checked";
                }
                checkbox.onclick = function(){
                    scrollEnableMap.set($(this).attr('scroll_checkbox_index'), checkbox.checked);
                };

                div.append("Auto Scroll: ");
                div.append(checkbox);
                $(this).parent().before(div);
                scrollEnableMap.set(scrollCheckIndex++, defalutEnabled);
            }

            if (!scrollEnableMap.has($(this).attr('scroll_checkbox_index'))){
                scrollEnableMap.set($(this).attr('scroll_checkbox_index'), defalutEnabled);
            }
            var flag = scrollEnableMap.get($(this).attr('scroll_checkbox_index'));
            if (flag){
                $(this)[0].scrollTop = $(this)[0].scrollHeight;
            }
        });
        callScrollToBottom();
    }
    scrollToBottom();
})();