# Beeminder as task list, Tampermonkey script

**URL:** <https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774>\
**Category:** Akrasia\
**Created:** [September 14, 2019, 10:20am UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774 "2019-09-14T10:20:07Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![apolyton](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/apolyton/32/1965_2.png) [@apolyton](https://forum.beeminder.com/u/apolyton)\
**Post date:** [September 14, 2019, 10:20am UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/1 "2019-09-14T10:20:07Z")

</div>

Here is a tiny Tampermonkey ([https://www.tampermonkey.net](https://www.tampermonkey.net/)) script that will dim out a goal that has a value today.  
[https://1drv.ms/u/s!AlbCIHapmel9hOJf0bJAt9pNBYcxzQ](https://1drv.ms/u/s!AlbCIHapmel9hOJf0bJAt9pNBYcxzQ)  
It looks like this

 ![51](https://us1.discourse-cdn.com/flex019/uploads/beeminder/original/2X/6/6bf282369bc35fb807f95d143c242aa706989f9a.png)

Alternatively one could change this to completely hide these goals, so that by the end of the day you end up with an empty page 🙂

@dreev would be great if the same/similar CSS classes were added in the Gallery page (which is my main overview).

And on the subject, would be nice to have a different icon/CSS class for the case where there is a value for the current date, but is below the daily rate of the goal.

thank you

---

<div class="post-metadata">

**Author:** ![apolyton](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/apolyton/32/1965_2.png) [@apolyton](https://forum.beeminder.com/u/apolyton)\
**Post date:** [September 14, 2019, 12:30pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/2 "2019-09-14T12:30:59Z")

</div>

And since changes on Beeminder take time, here’s a Stylus ([GitHub - openstyles/stylus: Stylus - Userstyles Manager](https://github.com/openstyles/stylus)) CSS file that converts the overview page into a gallery-like page 😃  
[https://1drv.ms/u/s!AlbCIHapmel9hOJgj-TzMK482CQT9A?e=fAicS9](https://1drv.ms/u/s!AlbCIHapmel9hOJgj-TzMK482CQT9A?e=fAicS9)

It’s a dream come true, all my goals fitting in a single screen 🙂

 ![04](https://us1.discourse-cdn.com/flex019/uploads/beeminder/original/2X/3/335e860f7606e3ca9cdc95cc3f22fa13af0ef7fc.jpeg)

---

<div class="post-metadata">

**Author:** ![phi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/phi/32/2586_2.png) [@phi](https://forum.beeminder.com/u/phi)\
**Post date:** [September 15, 2019, 11:32am UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/3 "2019-09-15T11:32:16Z")

</div>

I can’t import that .zip ☹ It says it can’t parse it.

 ![image](https://us1.discourse-cdn.com/flex019/uploads/beeminder/original/2X/f/fa0a482ab781b0e6caf6b80286157a974bb4274d.png)  
 ![image](https://us1.discourse-cdn.com/flex019/uploads/beeminder/original/2X/2/2a4ffd6576c52d298c813bef5823bca573f71693.png)

---

<div class="post-metadata">

**Author:** ![apolyton](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/apolyton/32/1965_2.png) [@apolyton](https://forum.beeminder.com/u/apolyton)\
**Post date:** [September 15, 2019, 6:39pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/4 "2019-09-15T18:39:20Z")

</div>

I don’t know, I just used the export function of Tapermonkey. It’s just a couple of text files, you can probably just copy/paste the code.

---

<div class="post-metadata">

**Author:** ![shanaqui](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/shanaqui/32/3513_2.png) [@shanaqui](https://forum.beeminder.com/u/shanaqui)\
**Post date:** [September 15, 2019, 6:47pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/5 "2019-09-15T18:47:48Z")

</div>

Hmm, it worked for me! Odd.

---

<div class="post-metadata">

**Author:** ![shanaqui](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/shanaqui/32/3513_2.png) [@shanaqui](https://forum.beeminder.com/u/shanaqui)\
**Post date:** [September 15, 2019, 6:48pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/6 "2019-09-15T18:48:38Z")

</div>

Interesting! I’m not sure if I will use this much (I already have a good routine set up), but I’m playing with it! Thank you for sharing. 😃

---

<div class="post-metadata">

**Author:** ![apolyton](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/apolyton/32/1965_2.png) [@apolyton](https://forum.beeminder.com/u/apolyton)\
**Post date:** [September 15, 2019, 7:09pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/7 "2019-09-15T19:09:26Z")

</div>

Yes, it’s definitely a different routine. I’m now triggered to work in goals that have 20+ days of buffer and that i didn’t mean to be working on on a daily basis 😃  
A victim of my success 😃

---

<div class="post-metadata">

**Author:** ![dreev](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/dreev/32/4311_2.png) [@dreev](https://forum.beeminder.com/u/dreev)\
**Post date:** [September 16, 2019, 3:00pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/8 "2019-09-16T15:00:11Z")

</div>

> [@apolyton](#):
>
> script that will dim out a goal that has a value today

Thanks so much for sharing this! Just to make sure everyone knows, there’s a similar built-in feature (or the opposite of it?) that puts checkmarks next to goals that have had data added today.

> **[Beeminder Changelog](https://changelog.beeminder.com)**
>
> List of all User-Visible Improvements to Beeminder since 2011 Feb 20

---

<div class="post-metadata">

**Author:** ![apolyton](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/apolyton/32/1965_2.png) [@apolyton](https://forum.beeminder.com/u/apolyton)\
**Post date:** [September 16, 2019, 3:40pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/9 "2019-09-16T15:40:23Z")

</div>

> [@dreev](#):
>
> checkmarks next to goals that have had data added today.

Actually the script works because of that check marks feature , it looks for the related elements on the page 🙂

---

<div class="post-metadata">

**Author:** ![narthur](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/narthur/32/5113_2.png) [@narthur](https://forum.beeminder.com/u/narthur)\
**Post date:** [February 4, 2020, 4:06pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/10 "2020-02-04T16:06:59Z")

</div>

Just got around to installing this extension today. It’s really neat!

I made a couple modifications to animate the style change and rerun the script on deadline sort and data submit, and reverse the change on hover:

```
// ==UserScript==
// @name Beeminder task list
// @namespace    
// @version 0.1
// @description Hide goals that have a value today
// @author Markos Giannopoulos
// @match https://www.beeminder.com/*
// @grant none
// ==/UserScript==

(function() {
    'use strict';

    function run() {
        jQuery(".todayta:visible").parent().parent().parent().animate({'background-color': 'white', 'opacity': '0.1'}, 500).mouseenter(function() {
            $(this).css('opacity', '1');
        }).mouseleave(function() {
            $(this).css('opacity', '0.1');
        });
    }

    jQuery('*[data-sort-string="losedate"]').click(run);
    jQuery('*[value="Add progress"]').click(function() {
        setTimeout(run, 3000);
    });

    run();
})();
```

---

<div class="post-metadata">

**Author:** ![narthur](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/narthur/32/5113_2.png) [@narthur](https://forum.beeminder.com/u/narthur)\
**Post date:** [February 6, 2020, 2:53pm UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/11 "2020-02-06T14:53:23Z")

</div>

More tweaks!

- Completely hide goals.
- Don’t hide red goals.
- Add toggle link.

* * *

```
// ==UserScript==
// @name Beeminder task list
// @namespace
// @version 0.1
// @description Hide goals that have a value today
// @author Markos Giannopoulos
// @match https://www.beeminder.com/*
// @grant none
// ==/UserScript==

(function() {
    'use strict';

    var enabled = true;

    window.mgFilterTodos = function() {
        var targets = jQuery(".todayta:visible").parent().parent().parent().not('.red');
        if (enabled) {
            jQuery(".todayta:visible").parent().parent().parent().not('.red').slideUp();
        } else {
            jQuery(".todayta").parent().parent().parent().not('.red').slideDown();
        }
    }

    window.mgToggleTodos = function() {
        enabled = !enabled;
        mgFilterTodos();
    }

    jQuery('*[data-sort-string="losedate"]').click(mgFilterTodos);
    jQuery('*[value="Add progress"]').click(function() {
        setTimeout(mgFilterTodos, 3000);
    });

    var body = document.querySelector('body'),
        content = document.querySelector('.dashboard.content'),
        wrapper = document.createElement('div');

    wrapper.innerHTML = '<a href="#" onclick="mgToggleTodos(); return false;">Toggle Todos</a>';

    var node = body.insertBefore(wrapper, content);

    node.style.textAlign = "center";

    mgFilterTodos();
})();
```

---

<div class="post-metadata">

**Author:** ![mbork](https://avatars.discourse-cdn.com/v4/letter/m/ed655f/32.png) [@mbork](https://forum.beeminder.com/u/mbork)\
**Post date:** [February 7, 2020, 7:03am UTC](https://forum.beeminder.com/t/beeminder-as-task-list-tampermonkey-script/5774/12 "2020-02-07T07:03:43Z")

</div>

My Emacs beeminder client can do a similar thing, where the user gives a percentage and the goal is filtered out if `donetoday` is greater than that percentage of the daily slope of the YBR. So, for `percentage` equal to zero you get almost exactly this behavior. (Almost, since you can do an even nicer thing: you can define “today” to be the "until the goals’ deadlines, or the real “today”, or the real “today” but extended to e.g. 3am for people who still work after midnight.)

Also, I have other filters implemented, like “only show tasks due in `n` days”, “only show goals with deadline in `n` hours no matter which day”, and “do not show these particular goals I selected manually” (e.g. since I won’t do anything with them anyway today).

Just sayin’.
