emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Fredrik Unger <fred@tree.se>
To: Emacs-orgmode@gnu.org
Subject: Recording Time - org-clock-sum
Date: Wed, 05 Nov 2014 18:00:04 +0100	[thread overview]
Message-ID: <545A5794.8040203@tree.se> (raw)

Hi,

I have been using Emacs Orgmode for 3-4 years recording time.
It started out with Sacha Chua:s article "Clocking Time with Emacs Org" 
[1] where the org-dblock-write:rangereport did what I needed.

As time went by I have made some adaptations to it and simplified it
but kept the core idea [2].
One addition is: that it is not based no increments of 24*60*60 but 1 
day, which removed problems by Daylight savings time (in October).
Maybe more type safe functions exists like in Perl, [3] but I did not 
find in org-mode. With my change I rely on that emacs date calculations
are in the same shape as [3]. It worked for this case and I stopped at that.

I am not a full out user of Orgmode and I do not keep project files.
I use one simple file per month to record my work, and it has been a 
good choice for me. Maybe someday I can switch to some other structure 
but as the CLOCK lines takes some space, I'd rather "forget" CLOCK 
history on a monthly basis. Projects do not last more than 2-3 month 
anyway and the catch-all internal project that is "never ending" would 
become too crowded with CLOCK lines.
It is also easier to spot clocking mistakes if the file is limited to a 
month.

Projects can not be summarized across month, but for my reporting needs
that is not needed.

The data is clocked as follows [4] per month. More project,
items and clocked times are in a normal org file, but this
simplified case should do.

I want to expand the report to show start/end time + breaks.

Eg from :
Time report November 2014
<2014-11-05 Wed> -- 8:00 (8.00)

to :
Time report November 2014
<2014-11-05 Wed> -- 8:00 (8.00)  s 07:00 e 16:00 b 11:00-12:00,

Format is not set, but I need these time for my reporting.
In the normal case it is start-end and lunch.

I have tried to work with org-clock-sum to get the data from the CLOCK 
entries. My elisp is rusty, and I missed that the regexp was */level 
dependent. I managed to get a list of dates but just from the CLOCK 
under the Item.
(((2014-11-05 12:00) (2014-11-05 14:00))
  ((2014-11-05 14:00) (2014-11-05 16:00)))

There were some strange duplicates as well so I guess I just did things 
wrong.

To get the wanted result I would need a regexp that scans all CLOCK:
and reports the two timestamps and generate a list of
((time1 time2) (time2 time3) (time4 time5) (time5 time6)) filtered
on the call with tstart tend like org-clock-sum.
For me the actual heading is not needed.

With this list I can then flaten it, and if needed sort it :
(time1 time2 time2 time3 time4 time5 time5 time6)
If I then remove duplicates all together I will get :
(time1 time3 time4 time6)
where min is start and max is end, and pairs in between are breaks.

s time1 e time6 b time3-time4,

I did not manage to create this list of all CLOCK values filtered on 
tstart/tend (which in my case would be one day at the time just like
I call org-clock-sum for the total sum).

I would be grateful for advice or pointers to a better way to find
all CLOCK values. Feel free to publish [2] on the wiki if you find
it valuable.
If/when I have a full working solution I might publish it on my site.

Thank you,

Fredrik Unger

[1] http://sachachua.com/blog/2007/12/clocking-time-with-emacs-org/
[2] https://tree.se/rangereport.el
[3] https://metacpan.org/pod/DateTime#How-DateTime-Math-Works
[4] https://tree.se/t.org

             reply	other threads:[~2014-11-05 17:51 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05 17:00 Fredrik Unger [this message]
2014-11-06  9:14 ` Recording Time - org-clock-sum Sebastien Vauban
2014-11-17 18:31 ` Fredrik Unger
2014-11-18  7:52   ` Eric S Fraga
2014-11-18 10:31     ` Fredrik Unger

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=545A5794.8040203@tree.se \
    --to=fred@tree.se \
    --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).