Razeeman / Android-SimpleTimeTracker

Simple app that tracks time.
GNU General Public License v3.0
665 stars 80 forks source link

[Feature] Support continous retroactive time tracking #52

Closed DaveDuck321 closed 3 weeks ago

DaveDuck321 commented 2 years ago

Apps like SaveMyTime support continuous retroactive time tracking.

Lets say you wake up, study, waste some time, then go on a run. 1) You log "Sleep" as soon as you wake up 2) You log "Study" after finishing studying 3) You log "Relax/ Phone" after deciding to go on the run 4) You log "Run" after finishing the run

This eliminates untracked time and ensures the logging accurately represents how you ended up spending time (ie. if you got distracted and didn't do the timed activity you can just be honest when you log -- no need to correct it after the fact).

The limitations of this are that only a single activity can be logged at once.

Razeeman commented 2 years ago

Hello! I believe this would be same as disabling "Allow multitasking" in settings. This way when you start new activity previous one would be automatically logged. Correct me if this is not the case.

DaveDuck321 commented 2 years ago

Sort of? It's the same number of clicks and the same idea of continuous logging. The difference being you say which activity you have been doing rather than which activity you will be doing. This improves the accuracy of the logs (at least for me) by avoiding scenarios where I leave the incorrect timer running after I switch to doing something else.

I know it sounds like a trivial difference but here's two motivating examples (caused by slight user error):

1 Say I've been working for an hour and check my phone, I would selecting "work" as my activity regardless of how may times I've checked my phone this hour. If I later found myself wasting time on social media etc, I could then select "phone" even though I didn't plan to do this beforehand.

In the existing system, since I didn't plan to waste time, the correct timer wouldn't be running and this would be incorrectly recorded as "work". In the proposed system, I can simply select "phone" whenever I realise I'm wasting time -- and assuming I logged "work" when I first picked up my phone, this would accurately capture and log everything.

2 I check my phone quite regularly when I'm doing Anki but very rarely when I'm exercising. If I forget to start the exercise timer, I would incorrectly log the entire duration (and have to guess the timings later).

However, the proposed system means that I can just select exercise whenever I next open my phone without losing too much accuracy (logged time = true exercise time + time since last log while I was doing Anki). Assuming I was checking my phone every 15 minutes during Anki, this would be accurate to within 15 minutes rather than failing completely.

pat-richter commented 2 years ago

@DaveDuck321 this is exactly what I'm looking for, and the reason why I've uninstalled this app before. But I did not find a good alternative.

Toggl can do, but while the UI is clean, it's complicated to do the correct clicks (since it's not their primary way for logging). SaveMyTime look ok, too. But 9 activities isn't much...

I've now seen that this is already implemented in SimpleTimeTracker! You can choose "Calendar View" in settings, and there will be an "untracked time" which you can assign (only visible when you switch to another tab or app and come back as it seems).

jan-lehmkuhl commented 1 year ago

Hi, i am using now this App in an retroactive manner. My only complain is the number of clicks to do so. My suggestions are:

Thanks @Razeeman for this great app.

pat-richter commented 3 months ago

I've found another app, called everyhour.xyz

I really like the approach for retroactive tracking, but sadly, it lacks on statistics and has no comments.

Instead of adding the time with the datetime modal or changing the start/end time with "-30min" clicks, it just let you set you set an amount of time with pre-defined values (0,25; 0,5; 1; 2; 3; 6; 8 hours). This is so much faster!

image

So, if I track my morning (while its already noon), right now I would have to either

  1. add the activity, stop the activity, edit the activity, set start time and end time with datepicker or x times of -30min
  2. go to list or calendar, click untracked, , set start time and end time with datepicker or x times of -30min, select the activity (no filters here, btw)

While with everyhour, I would click the activity and set "2h", done.

Improvement Ideas @Razeeman

What do you think? I think this solves the original issue in a very elegant way without very much effort.

Razeeman commented 3 months ago

Thank you very much for the feedback. Ability to toggle between selecting start/end time or selecting duration is planned for future updates.

Support for more convenient retroactive tracking is also planned for the nearest updates. Probably will look something like this:

Will this be ok?

pat-richter commented 2 months ago

Would be a great improvement, which covers exactly the third idea!

With another button "like start time" in the "end time area", this would already create an awesome improvement against the current flow.

Button Improvements Not sure if there is already a ticket, but thinking about this button again, following comes into my mind. When I (e.g. accidentally) change the start time, I can't reset to the orig start time (have to go back and edit again). You could make the fullwidth datepicker button a bit smaller, having space for one button left and one button right. Move the "Now" button to the right side and add a "Previous" button to the left side.

Previous will set the date time to end time of previous task (on the start time area) or to the start time (on end time area). Now... well, I don't have to explain. This could also be icons, e.g. some backwards arrow for "previous" and a clock for "now". But maybe this is not needed as there is enough space.

example

Of course the click area has to be a bit larger than the actual button size in my example

pat-richter commented 1 month ago

@Razeeman I've tested your recent changes and really like the way how you implemented the switch between time and duration

Not sure if I like the -x 0 +x [reset] buttons. When I used duration the last days, I've did always reset the time and add +x. However, -x is still needed when I add to much time. maybe auto-reset the time to 0 on change to duration, but add re-add the "now" button instead of "0" in the bar

One minor issue: as a one hand user, I would like to choose on which side the toggle appears ;-)

I really like this improvement! Thank you very much!

Razeeman commented 3 weeks ago

Hello! Added an option for retroactive tracking mode. If enabled current timers will be stopped.

Main tab will look like this. Untracked time and last record currently not clickable. On clicking some activity: if it has same type as the last record - it will be merged, if different type - untracked time will be converted to a record of clicked activity.

image

Widgets will look like this. Top timer is untracked time, bottom is last record duration.

image

Notification will look like this. Timer notifications will not be available, because there are no timers in retroactive mode.

image

Wear will look like this. imageimageimageimageimageimage

If something need more changes or not the expected behaviour, please reopen the issue.

Plans for future updates: