lakoliu / Furtherance

Track your time without being tracked
GNU General Public License v3.0
243 stars 23 forks source link

Feature Request: Task name autocompletion #103

Closed jaredwolff closed 9 months ago

jaredwolff commented 1 year ago

It'd be great to search for previously used actions on the main screen and filter out irrelevant ones. The use case is to call back a task that I'm tracking but haven't done for a week or two (so it's buried). Right now I need to scroll some time, while searching, to get to them.

jaredwolff commented 1 year ago

Or, even better yet, simply autocomplete in the Task Name box.

lakoliu commented 1 year ago

Hey, Jared. Thanks for the suggestion! I agree, this would be great to have. It's actually already implemented on the Windows version, but it would be a good feature to have on the GTK version as well. I will get to work on this as soon as I can. Unfortunately, with my day job and a couple other projects I'm working on, I'm short on time at the moment. I will definitely squeeze it in when I can, though.

jaredwolff commented 1 year ago

No worries. I figure you're busy! Happy to test when you get to it.

teynav commented 1 year ago

Thank you for creating such awesome app, I have been thinking of solutions to track time for my studies and this helps a lot, The only downside for me at this point is, scrolling through and redo-ing the task. I would be really glad to have that feature.

It can be implemented in the way that @jaredwolff suggested or it can be done like implementing Ctrl+F feature to search and redo the previous task

teynav commented 1 year ago

I know it's not relevant, but having lot of entries might make it hard to see what have I studied when and really hard when i want to restudy something . I am preparing for exams so i needed to know if i can trust this app to work for me, as said above it lacks search feature but i solved it for myself using a tiny script

#!/bin/bash

database="$HOME/.var/app/com.lakoliu.Furtherance/data/furtherance/furtherance.db"

get_tasks_func () {
     get_tasks_cmd="SELECT task_name, tags FROM tasks;"
     chosen_task="$(echo "$get_tasks_cmd" | sqlite3 "$database"  | uniq | fzf)"
     chosen_task="$(echo $chosen_task | sed 's/|.*//g')"
     get_date="SELECT stop_time FROM tasks WHERE task_name = \"$chosen_task\"; "
     dates_gotten="$(echo "$get_date" | sqlite3 "$database" )"
     dates_gotten="$dates_gotten\n"
     dates_gotten="$(echo $dates_gotten| sed 's/ /\n/g' |sed 's/T/ at /g')"
     echo -e "All dates gotten are \n$dates_gotten"

     echo ""
     latest_date="$(echo "$get_date" | sqlite3 "$database" | tail -1 )"
     echo -e "Last date of access is \n${latest_date:0:10}"
     # echo $chosen_task
}

get_tasks_by_tag () {
     get_tag_cmd="SELECT tags FROM tasks;"
     chosen_tag="$(echo "$get_tag_cmd" | sqlite3 "$database"  | uniq | fzf)"
     get_tasks_cmd="SELECT task_name, tags FROM tasks WHERE tags = \"$chosen_tag\" ;"
     chosen_task="$(echo "$get_tasks_cmd" | sqlite3 "$database"  | uniq | fzf)"
     #sqlite3 "$database"
     chosen_task="$(echo $chosen_task | sed 's/|.*//g')"
     get_date="SELECT stop_time FROM tasks WHERE task_name = \"$chosen_task\"; "
     dates_gotten="$(echo "$get_date" | sqlite3 "$database" )"
     dates_gotten="$dates_gotten\n"
     dates_gotten="$(echo $dates_gotten| sed 's/ /\n/g' |sed 's/T/ at /g')"
     echo -e "All dates gotten are \n$dates_gotten"
     echo ""
     latest_date="$(echo "$get_date" | sqlite3 "$database" | tail -1 )"
     echo -e "Last date of access is \n${latest_date:0:10}"
     # echo $chosen_task
}
option="$(echo -e "Filter by tag \nFilter by name" | fzf)"

if [[ "$option" == "Filter by name" ]];then
    get_tasks_func
else
    get_tasks_by_tag
fi

read -p "Press enter to exit" -n1 ans

Note : fzf is required to be installed for this to work I have used keybinding to bind it to Windows+Ctrl+F , it spits out date when i studied something and also the last date i studied something, I can also filter stuff using tag, it's great for now

lakoliu commented 1 year ago

@teynav that script looks like it could be super useful for a lot of people, thanks for sharing it! Hopefully that is good enough for now until I can find the time to implement this feature in Furtherance.