emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Olaf Dietsche <olaf+list.orgmode@olafdietsche.de>
To: emacs-orgmode@gnu.org
Cc: Russell Adams <RLAdams@adamsinfoserv.com>
Subject: Re: Alternatives to clocking in/out for reporting time
Date: Sun, 10 Jul 2022 14:26:08 +0200	[thread overview]
Message-ID: <87y1x1b1cv.fsf@pc04.fritz.box> (raw)
In-Reply-To: <Yrxo6D9Eq8mOjRx4@tahm>

I also use org-mode clocking to record time spent.

But instead of modifying/configuring org-mode, I use a post-processing
Python script to collect and summarize clocked times.

    locale.setlocale(locale.LC_ALL, '')
    # ...
    def extract_times(line):
        # CLOCK: [YYYY-mm-dd WKD HH:MM]--[YYYY-mm-dd WKD HH:MM] => HH:MM
        m = re.search('CLOCK:\s*\[(.+? .+? .+?)\]--\[(.+? .+? .+?)\]\s*=>\s*(.+)', line)
        if m:
            ts = m.group(1)
            start = datetime.datetime.strptime(ts, '%Y-%m-%d %a %H:%M')
            ts = m.group(2)
            stop = datetime.datetime.strptime(ts, '%Y-%m-%d %a %H:%M')
            tm = m.group(3)
            spent = datetime.datetime.strptime(tm, '%H:%M')
            spent = datetime.timedelta(hours = spent.hour, minutes = spent.minute)
            logging.debug('time={}, spent={}'.format(line.strip(), spent))
            return (start, stop, spent)

Together with properties or tags or some other means, you can summarize
and round collected times as needed.
This can be done in any other (scripting) language, of course.

setlocale is needed here, because I have German weekday names.

Kind regards, Olaf

Russell Adams <RLAdams@adamsinfoserv.com> writes:

> I make extensive use of timestamps for billing (timesheet)
> purposes. I'm looking to automate this more, and I find the existing
> clocking system inadequate. I'm hoping someone can point me in the
> right direction.
>
> Today I have log mode enabled so that each time I close a TODO item,
> it records the date and time it was closed. At regular intervals while
> working I add inactive timestamps to my notes. I've mapped that to a
> single key, so it's quite fast. If I switch tasks, have an update,
> made progress I want to note to myself, or leave and return I add an
> inactive timestamp. I have well over 1000 inactive timestamps in my
> current file.
>
> Later I can open my agenda view on the working file, choose my
> timespan (week or month), enable log mode to show when items were
> closed, and then enable inactive timestamps to view all of the
> timestamps. This itemizes all the events organized by time into a
> timeline.
>
> It's fairly straightforward from that timeline to count my hours based
> on the record of where I spent my time. It is unfortunately a very
> manual process.
>
> I find Org's clocking to be too detailed, and that it doesn't play
> well with dynamically organized hierarchies of notes. I frequently
> create and close subtasks, or switch parts of the tree. Clocking each
> one is too much overhead, and too granular. I don't need to provide
> down to the minute reports of each item. It also doesn't appear to
> allow rounding of values, so I still have to adjust the results.
>
> What I envision is a way to count items in the agenda view to produce
> a time report. Counting any inactive timestamp as 15 minutes, where if
> a half hour or more is logged I round up to bill the hour. Closed TODO
> items should count toward billing that whole hour. Clearly this should
> be customized.
>
> The point is that I'm not worried about accounting time by task,
> instead I'm aggregating tasks into accounting by whole hours.
>
> I'm looking at org-element, and it appears I'd have to do my own
> agenda style scan of the whole tree to find items to classify by
> hour. While I'm somewhat proficient at elisp, that sounds like a steep
> wall to climb.
>
> Is there an iterative way to review items in an agenda view so I can
> do the math to produce a report?
>
> ------------------------------------------------------------------
> Russell Adams                            RLAdams@AdamsInfoServ.com
>                                     https://www.adamsinfoserv.com/


      parent reply	other threads:[~2022-07-10 12:27 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-29 14:59 Alternatives to clocking in/out for reporting time Russell Adams
2022-06-29 21:26 ` Tim Cross
2022-06-29 22:09   ` Russell Adams
2022-06-30  2:11 ` Samuel Wales
2022-06-30  2:12   ` Samuel Wales
2022-06-30  8:57   ` Russell Adams
2022-06-30 22:32     ` Samuel Wales
2022-07-08  7:02 ` Ihor Radchenko
2022-07-08  8:10   ` Russell Adams
2022-07-09  4:00     ` Ihor Radchenko
2022-07-09 12:44       ` Russell Adams
2022-07-10  9:30         ` Ihor Radchenko
2022-07-10 23:09           ` Samuel Wales
2022-07-10 12:26 ` Olaf Dietsche [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87y1x1b1cv.fsf@pc04.fritz.box \
    --to=olaf+list.orgmode@olafdietsche.de \
    --cc=RLAdams@adamsinfoserv.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).