Skip to content

Instantly share code, notes, and snippets.

@mmonkey
Last active August 29, 2015 14:22
Show Gist options
  • Save mmonkey/efb06c0ce538116c1b05 to your computer and use it in GitHub Desktop.
Save mmonkey/efb06c0ce538116c1b05 to your computer and use it in GitHub Desktop.
Bookmarklet for showing card numbers on trello

#Full Code

(function(){
var fillInCardNum = function(e, loop) {
    if (loop > 1000) {
        console.log("Never caught it");
    }
    else {
        var $link = e.find("a.list-card-title.js-card-name");
        if ($link.attr("href") === undefined) {
            setTimeout(function(){fillInCardNum(e, loop++)});
        }
        else {
            // Add the card #
            var $cardNum = $link.children("span.card-short-id");
            $cardNum.text("#" + $link.attr("href").split("/").slice(-1)[0].split("-")[0]);
        }
    }
};
var addCardNumberToOpenCard = function() {
    console.log("Adding card # to card.")
    var cardNum = window.location.href
        .split('/')
        .slice(-1)[0]
        .split("-")[0];
 
    $("div.window")
        .find("div.window-main-col")
        .before($("<span class=\"card-number button-link\">#" + cardNum + "</span>"))
}
var waitForVisible = function(e) {
    if (e.is(":visible")) {
        setTimeout(addCardNumberToOpenCard, 500);
        setTimeout(waitForInvisible, 500, e);
    } else {
        setTimeout(waitForVisible, 250, e);
    }
}
var waitForInvisible = function(e) {
    if (!e.is(":visible")) {
        setTimeout(waitForVisible, 250, e);
    } else {
        setTimeout(waitForInvisible, 250, e);
    }
}
var newCardWatcher = function() {
    var $nodes = $("span.card-short-id.hide:not(._fc_seen)");
    for (var i = 0; i < $nodes.length; i++) {
        var $node = $($nodes[i]);
        if ($node.text().trim() == "#") {
            fillInCardNum($node.parent().parent(), 0);
        }
        $node.addClass("_fc_seen");
    }
    console.log($nodes.length);
}
$(function(){
    // Set up our copy click listener
    $("div.window").on("click", "span.card-number.button-link", function(){
        prompt("Copy link to this page:", window.location.href);
    });
 
    if (window.location.href.indexOf("/c/") > 0) {
       addCardNumberToOpenCard();
    }
 
    var $popupWindow = $("div.window");
    waitForVisible($popupWindow);
 
    // Watch for new cards
    setInterval(newCardWatcher, 250);

    $('.card-short-id').css({'display': 'block', 'font-weight': 'bold'});
});
})()

###Minified - Decoded

(function(){var i=function(t,n){if(n>1e3)console.log("Never caught it");else{var o=t.find("a.list-card-title.js-card-name");if(void 0===o.attr("href"))setTimeout(function(){i(t,n++)});else{var e=o.children("span.card-short-id");e.text("#"+o.attr("href").split("/").slice(-1)[0].split("-")[0])}}},t=function(){console.log("Adding card # to card.");var i=window.location.href.split("/").slice(-1)[0].split("-")[0];$("div.window").find("div.window-main-col").before($('<span class="card-number button-link">#'+i+"</span>"))},n=function(i){i.is(":visible")?(setTimeout(t,500),setTimeout(o,500,i)):setTimeout(n,250,i)},o=function(i){i.is(":visible")?setTimeout(o,250,i):setTimeout(n,250,i)},e=function(){for(var t=$("span.card-short-id.hide:not(._fc_seen)"),n=0;n<t.length;n++){var o=$(t[n]);"#"==o.text().trim()&&i(o.parent().parent(),0),o.addClass("_fc_seen")}console.log(t.length)};$(function(){$("div.window").on("click","span.card-number.button-link",function(){prompt("Copy link to this page:",window.location.href)}),window.location.href.indexOf("/c/")>0&&t();var i=$("div.window");n(i),setInterval(e,250),$(".card-short-id").css({display:"block","font-weight":"bold"})})}())

###Minified - Encoded

http://www.trello.org/bookmarklet.html?name=Show%20Card%20Numbers&desc=Show%20card%20numbers%20on%20the%20front%20of%20the%20card&js=(function()%7Bvar%20i%3Dfunction(t%2Cn)%7Bif(n%3E1e3)console.log(%22Never%20caught%20it%22)%3Belse%7Bvar%20o%3Dt.find(%22a.list-card-title.js-card-name%22)%3Bif(void%200%3D%3D%3Do.attr(%22href%22))setTimeout(function()%7Bi(t%2Cn%2B%2B)%7D)%3Belse%7Bvar%20e%3Do.children(%22span.card-short-id%22)%3Be.text(%22%23%22%2Bo.attr(%22href%22).split(%22%2F%22).slice(-1)%5B0%5D.split(%22-%22)%5B0%5D)%7D%7D%7D%2Ct%3Dfunction()%7Bconsole.log(%22Adding%20card%20%23%20to%20card.%22)%3Bvar%20i%3Dwindow.location.href.split(%22%2F%22).slice(-1)%5B0%5D.split(%22-%22)%5B0%5D%3B%24(%22div.window%22).find(%22div.window-main-col%22).before(%24(%27%3Cspan%20class%3D%22card-number%20button-link%22%3E%23%27%2Bi%2B%22%3C%2Fspan%3E%22))%7D%2Cn%3Dfunction(i)%7Bi.is(%22%3Avisible%22)%3F(setTimeout(t%2C500)%2CsetTimeout(o%2C500%2Ci))%3AsetTimeout(n%2C250%2Ci)%7D%2Co%3Dfunction(i)%7Bi.is(%22%3Avisible%22)%3FsetTimeout(o%2C250%2Ci)%3AsetTimeout(n%2C250%2Ci)%7D%2Ce%3Dfunction()%7Bfor(var%20t%3D%24(%22span.card-short-id.hide%3Anot(._fc_seen)%22)%2Cn%3D0%3Bn%3Ct.length%3Bn%2B%2B)%7Bvar%20o%3D%24(t%5Bn%5D)%3B%22%23%22%3D%3Do.text().trim()%26%26i(o.parent().parent()%2C0)%2Co.addClass(%22_fc_seen%22)%7Dconsole.log(t.length)%7D%3B%24(function()%7B%24(%22div.window%22).on(%22click%22%2C%22span.card-number.button-link%22%2Cfunction()%7Bprompt(%22Copy%20link%20to%20this%20page%3A%22%2Cwindow.location.href)%7D)%2Cwindow.location.href.indexOf(%22%2Fc%2F%22)%3E0%26%26t()%3Bvar%20i%3D%24(%22div.window%22)%3Bn(i)%2CsetInterval(e%2C250)%2C%24(%22.card-short-id%22).css(%7Bdisplay%3A%22block%22%2C%22font-weight%22%3A%22bold%22%7D)%7D)%7D())

###Minified - Bookmarklet Code

javascript:(function()%7Bvar%20i%3Dfunction(t%2Cn)%7Bif(n%3E1e3)console.log(%22Never%20caught%20it%22)%3Belse%7Bvar%20o%3Dt.find(%22a.list-card-title.js-card-name%22)%3Bif(void%200%3D%3D%3Do.attr(%22href%22))setTimeout(function()%7Bi(t%2Cn%2B%2B)%7D)%3Belse%7Bvar%20e%3Do.children(%22span.card-short-id%22)%3Be.text(%22%23%22%2Bo.attr(%22href%22).split(%22%2F%22).slice(-1)%5B0%5D.split(%22-%22)%5B0%5D)%7D%7D%7D%2Ct%3Dfunction()%7Bconsole.log(%22Adding%20card%20%23%20to%20card.%22)%3Bvar%20i%3Dwindow.location.href.split(%22%2F%22).slice(-1)%5B0%5D.split(%22-%22)%5B0%5D%3B%24(%22div.window%22).find(%22div.window-main-col%22).before(%24(%27%3Cspan%20class%3D%22card-number%20button-link%22%3E%23%27%2Bi%2B%22%3C%2Fspan%3E%22))%7D%2Cn%3Dfunction(i)%7Bi.is(%22%3Avisible%22)%3F(setTimeout(t%2C500)%2CsetTimeout(o%2C500%2Ci))%3AsetTimeout(n%2C250%2Ci)%7D%2Co%3Dfunction(i)%7Bi.is(%22%3Avisible%22)%3FsetTimeout(o%2C250%2Ci)%3AsetTimeout(n%2C250%2Ci)%7D%2Ce%3Dfunction()%7Bfor(var%20t%3D%24(%22span.card-short-id.hide%3Anot(._fc_seen)%22)%2Cn%3D0%3Bn%3Ct.length%3Bn%2B%2B)%7Bvar%20o%3D%24(t%5Bn%5D)%3B%22%23%22%3D%3Do.text().trim()%26%26i(o.parent().parent()%2C0)%2Co.addClass(%22_fc_seen%22)%7Dconsole.log(t.length)%7D%3B%24(function()%7B%24(%22div.window%22).on(%22click%22%2C%22span.card-number.button-link%22%2Cfunction()%7Bprompt(%22Copy%20link%20to%20this%20page%3A%22%2Cwindow.location.href)%7D)%2Cwindow.location.href.indexOf(%22%2Fc%2F%22)%3E0%26%26t()%3Bvar%20i%3D%24(%22div.window%22)%3Bn(i)%2CsetInterval(e%2C250)%2C%24(%22.card-short-id%22).css(%7Bdisplay%3A%22block%22%2C%22font-weight%22%3A%22bold%22%7D)%7D)%7D())

###Minified - Encoded - Shortened http://bit.ly/1MrXBFe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment