[Orgmode] Re: question and use example
Hey Paul, Paul Menair pmen...@gmail.com writes: My problem is this. I populate the fifth field with c-- c-u c-y. I would be nice if it happened automatically, but that's no big deal. However, I've been going through and manually entering the sixth field, and that does end up being a hassle. I whipped something up that should work for you. You need to evaluate the code below and then the below table will work for you. (defun ba/org-timerange (s optional in-min) (let* ((re ^\\(.*?\\)--\\(.*?\\)$) (start (replace-regexp-in-string re \\1 s)) (end (replace-regexp-in-string re \\2 s)) (start-in-min (org-hh:mm-string-to-minutes start)) (end-in-min (org-hh:mm-string-to-minutes end)) (diff-in-min (- end-in-min start-in-min))) (if in-min diff-in-min (format %.2f (/ diff-in-min (float 60)) | date | client | desc | timerange | H:M | in dec | |--++---++--+| | 2009-08-26 Wed | benny | foo'd | 2009-08-26 Wed 21:55--2009-08-26 Wed 21:58 | 0:03 | 0.05 | #+TBLFM: $5='(org-minutes-to-hh:mm-string (ba/org-timerange $4 t))::$6='(ba/org-timerange $4) If you're on the table and you press C-u C-c C-c and it should put the correct info at the respective places. Now what I recommend is using autocalc instead so you don't have to worry about doing this. This would require you to change your table to the following format: | | date | client | desc | timerange | H:M | in dec | |---+--++++--+| | # | 2009-08-25 Tue | benny | foo'd | 2009-08-25 Tue 20:55--2009-08-25 Tue 23:58 | 3:03 | 3.05 | | # | 2009-08-26 Wed | bar| quux'd | 2009-08-26 Wed 22:10--2009-08-26 Wed 22:14 | 0:04 | 0.07 | #+TBLFM: $6='(org-minutes-to-hh:mm-string (ba/org-timerange $5 t))::$7='(ba/org-timerange $5) The # in the first column achieves this. See (info (org)Advanced features) for more information. Paul HTH, benny ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Re: question and use example
Benjamin, Many thanks -- works like a charm. I only needed one decimal place, but I figured out how to do that all by myself. Paul ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Re: question and use example
Benjamin Andresen bandre...@gmail.com wrote: Hey Paul, Paul Menair pmen...@gmail.com writes: My problem is this. I populate the fifth field with c-- c-u c-y. I would be nice if it happened automatically, but that's no big deal. However, I've been going through and manually entering the sixth field, and that does end up being a hassle. I whipped something up that should work for you. Very nice! There is a simpler approach, but with the disadvantage that it requires modifications to the structure of the table (iow, I don't know how to do it with a time range :-) The main simplification is that it uses built-in functions. The table looks like this: | | date | client | desc | start time | end time | duration in dec | H:M | |---+--++---+++-+--| | # | 2009-08-26 Wed | benny | foo'd | 2009-08-26 Wed 14:45 | 2009-08-26 Wed 18:05 |3.33 | 3:20 | #+TBLFM: $7=(date($6) - date($5))*24;%.2f :: $8='(org-minutes-to-hh:mm-string (round (* $7 60)));N Note that the primary result is the time interval in decimal hours - the hh:mm result is derived from that. Note also that the rounding is necessary because org-minutes-to-hh:mm-string assumes that its argument is an integer and misbehaves if it is not: (org-minutes-to-hh:mm-string 73.2) -- 1:00 (org-minutes-to-hh:mm-string 73) -- 1:13 I'm sure there are other approaches as well - investigating the built-in clocking and attendant reports is probably a good idea as well. Bernt Hansen has some information in his org-mode page[1], and there is a tutorial about it on worg[2]. HTH, Nick [1] http://doc.norang.ca/org-mode.html [2] http://orgmode.org/worg/org-tutorials/index.php - the tutorial itself is at http://sachachua.com/wp/2007/12/30/clocking-time-with-emacs-org/, but note that it's 1.5 years old and I don't know whether it's still useful or whether it's completely out of date by this time. ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode