Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Daily streak report (maybe heatmap) #743

Closed
alichtman opened this issue Nov 14, 2019 · 11 comments · Fixed by #1146
Closed

Daily streak report (maybe heatmap) #743

alichtman opened this issue Nov 14, 2019 · 11 comments · Fixed by #1146
Labels
enhancement New feature or request 📌 This can't go stale

Comments

@alichtman
Copy link
Contributor

It'd be cool to be able to see how often you're journaling. Extracted from #591.

I'm thinking that the calendar heatmap option in termgraph.py is a good choice.

@alichtman alichtman added the enhancement New feature or request label Nov 14, 2019
@eshrh
Copy link
Contributor

eshrh commented Jan 5, 2020

I'm interested in attempting to implement this. What would be a good way to invoke the heatmap?
I was thinking something like jrnl --calendar just like how termgraph does it.

Termgraph renders the calendar by density of entries on a day of the week cumulatively for the entire month, would this really be the best idea when a user just wants to see how many days in the past week they've written something?

Termgraph is very convenient because it's easy to just copy the single file into the project. It's ideal but harder to hack together some system to generate data in a form that can be easily fed to calendar_heatmap() but this seems pretty difficult from what I've tried(not much). The easiest solution would be to create a file that termgraph can read(just lines of yyyy-mm-dd,number) and then call main which would do all the label-generation, data formatting and normalization automatically. Of course, this adds an extra file, and I'm not sure if this is desirable(where would the file be stored anyway?)

I haven't looked into how to count entries yet, but I assume that it should be fairly straightforward given that functions like reading from and until a certain date work. Streak calculation is also easy once the distribution of entries can be obtained.

@wren
Copy link
Member

wren commented Jan 10, 2020

@eshrh Thanks for volunteering to work on a feature! I think this should be an exporter plugin (much like our current markdown, json, yaml, etc exporters). These are run by something along the lines of jrnl --export markdown and you can see examples of how to implement them in the jrnl/plugins directory in the repo.

Let us know if you have more questions along your way to work on this.

@UtahDave
Copy link

@eshrh I thought that was an interesting idea. Maybe this only needs to be added as a recipe in the documentation. What do you think of this?

jrnl --short | awk '{print $1 " 1"}' | termgraph --calendar

     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan
Mon:
Tue:
Wed:
Thu:                                                  █
Fri:       █
Sat:
Sun:                                                 █

@alichtman
Copy link
Contributor Author

alichtman commented Jan 23, 2020

If they are using colorized titles and dates, they'll need this:

$ jrnl --short | awk '{print $1 " 1"}' | cut -c 10- | termgraph --calendar

This is a good suggestion, I think. I'm in favor of keeping this as a recipe (provided that we can get a real heatmap instead of a binary "jrnl / no jrnl" indicator).

@UtahDave
Copy link

@alichtman I need to create a longer history, but I chose 1 as the output because if we have multiple entries on a specific day, like a Friday, then the heatmap should heat up more. I believe that's how termgraph works

@alichtman
Copy link
Contributor Author

I tested that and wasn't able to get a real heatmap out of it. It's possible that termgraph doesn't support this but I haven't had time to look into it yet.

@marylein
Copy link

jrnl --short | awk '{print $1}' | sort | uniq -c | awk '{printf("%s %s\n", $2, $1)} | termgraph --calendar

this works for me to really show the "heat" on each day.

@alichtman
Copy link
Contributor Author

alichtman commented Jan 24, 2020

$ jrnl --short | awk '{print $1}' | cut -c 10- | sort | uniq -c | awk '{printf("%s %s\n", $2, $1)}' | termgraph --calendar

This is the version that works if you're using colored titles. Nice work, @marylein.

@wren
Copy link
Member

wren commented Jan 26, 2020

I think these all are promising, but have the downside of only working with certain date formats (since the date customizable in the config file). Why don't we implement a general export (like the tags) of dates and counts that can be piped to termgraph to get a heatmap? It might look something like jrnl --export datecount | termgraph.

@stale
Copy link

stale bot commented Mar 26, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Inactive issue: will be closed soon if no activity label Mar 26, 2020
@alichtman
Copy link
Contributor Author

Bump.

@stale stale bot removed the stale Inactive issue: will be closed soon if no activity label Mar 26, 2020
@stale stale bot closed this as completed Apr 2, 2020
@wren wren reopened this Apr 4, 2020
@wren wren added the 📌 This can't go stale label Apr 4, 2020
alichtman added a commit to alichtman/jrnl that referenced this issue Jun 21, 2023
alichtman added a commit to alichtman/jrnl that referenced this issue Jun 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request 📌 This can't go stale
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants