Workflowy Sort

Alphabetically sort open lists in workflowy

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         Workflowy Sort
// @namespace    https://workflowy.com
// @version      0.1
// @description  Alphabetically sort open lists in workflowy
// @author       Roland
// @match        https://workflowy.com
// @run-at       document-idle
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // On page load, listen for bullets to populate, then sort them
    var bulletLoaded = setInterval(function(){
        console.log('checking bullets');
        if( document.getElementById('loadingScreen').style.display === 'none' ) {
            console.log('bullets loaded!');
            sortBullets();
            clearInterval(bulletLoaded);
        }
    }, 200);

    // sort bullets on click events (bullet expansion and clicking into a bullet)
    document.addEventListener ("mousedown", autoSort);

    // sort bullets on hotkey press (Ctrl+Shift+S by default)
    document.addEventListener('keydown', keyDownSortBullets);

    function autoSort() {
        $(".bullet, a.content, #expandButton").unbind();
        $('.bullet, a.content').click(function(event){
            setTimeout(function(){
                sortBullets();
                console.log('bullet sort');
            }, 250);
        });
        $('#expandButton').click(function(event){
           // if($(this).attr('data-open-on-last-click') === "true" || typeof $(this).attr('data-open-on-last-click') === 'undefined'){
                setTimeout(function(){
                    sortBullets();
                    console.log('expand sort');
                }, 50);
           // }
        });

    }

    function sortBullets() {
        jQuery.fn.sortDomElements = (function() {
            return function(comparator) {
                return Array.prototype.sort.call(this, comparator).each(function(i) {
                    this.parentNode.appendChild(this);
                });
            };
        })();
        $('div.children').children('.project').sortDomElements(function(a,b){
            var akey = $(a).children('.name').children('.content').text().toLowerCase();
            var bkey = $(b).children('.name').children('.content').text().toLowerCase();
            if (akey == bkey) return 0;
            if (akey < bkey) return -1;
            if (akey > bkey) return 1;
        });
        return true;
    }

    function keyDownSortBullets(e) {
        if(e.ctrlKey && e.shiftKey && e.keyCode === 83){
            e.preventDefault();
            console.log('sorting...');
            sortBullets();
            return false;
            //saveAll();
        }
    }
})();