emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Recording Time - org-clock-sum


From: Fredrik Unger
Subject: Re: [O] Recording Time - org-clock-sum
Date: Mon, 17 Nov 2014 19:31:41 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.2.0

Hi,

I implemented a couple of functions that provide me with the
needed timestamps for my timereport [1].

ex.
<2014-11-14 Fri>    [s 08:00 e 14:00   (11:00 12:00)]   [ 5:00 (5.00)]

Summarized from :

* Test
** first
    CLOCK: [2014-11-14 Fri 08:00]--[2014-11-14 Fri 09:00] =>  1:00
    CLOCK: [2014-11-14 Fri 12:00]--[2014-11-14 Fri 13:00] =>  1:00
** second
    CLOCK: [2014-11-14 Fri 09:00]--[2014-11-14 Fri 11:00] =>  2:00
    CLOCK: [2014-11-14 Fri 13:00]--[2014-11-14 Fri 14:00] =>  1:00


Started work at 8, ended at 14 lunch break 11-12. worked 5 h.
(h:m and decimal representation)

One can adapt the format with "timestr".

It is based on the org-clock-sum function. Tested only with simple
files with complete Time stamps (no dangling clocks etc).

timeuniq takes a list of timestamps and returns only timestamps that were unique in the initial list.

Suggestion for improvements are welcome, as I am an elisp/org-mode beginner.

Fredrik Unger

[1] attached range-report.emacs


On 11/05/2014 06:00 PM, Fredrik Unger wrote:
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



Attachment: range-report.emacs
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]