* [bug] Remote durations are considered as fractions @ 2012-04-03 12:35 Sebastien Vauban 2012-04-10 22:46 ` Bastien 0 siblings, 1 reply; 9+ messages in thread From: Sebastien Vauban @ 2012-04-03 12:35 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hello, It took me a while to understand what was going on with some figures in tables derived from a clock report, but I found it: computed total times, referred in a table, are converted as fractions, that is... - 3:36 becomes 1:12 (because 3/36 = 1/12) - 0:51 becomes 0 - 9:03 becomes 3 - 3:34 stays 3:34... Example: * Hours spent #+tblname: hours-spent #+BEGIN: clocktable :maxlevel 4 :scope ("file-tom.org") :block 2012-04 :indent t Clock summary at [2012-04-03 Tue 14:30], for April 2012. | File | Headline | Time | | | |--------------+-----------------------------------+-------+------+------| | | ALL Total time | 18:45 | | | |--------------+-----------------------------------+-------+------+------| | file-tom.org | File time | 12:39 | | | | | Planning | | 3:36 | | | | \__ TODO Arrange meetings | | | 0:51 | | | \__ TODO List skills required | | | 1:27 | | | \__ TODO Organize interviews | | | 1:18 | | | Reporting | | 9:03 | | | | \__ TODO Make report | | | 6:47 | | | \__ TODO Present report | | | 2:16 | #+END: * Summary Time worked on some projects is wrong: | Planning | 1:12 | | Reporting | 3 | #+TBLFM: @1$2=remote(hours-spent,@4$4)::@2$2=remote(hours-spent,@8$4) Using the flag T does not help: | Planning | 00:00:03 | | Reporting | 00:00:09 | #+TBLFM: @1$2=remote(hours-spent,@4$4);T::@2$2=remote(hours-spent,@8$4);T Using the flag t does not help either: | Planning | 0.00 | | Reporting | 0.00 | #+TBLFM: @1$2=remote(hours-spent,@4$4);t::@2$2=remote(hours-spent,@8$4);t Best regards, Seb PS- BTW, this is a nice "clock table" where totals are not mixed. I sent two posts yesterday, but did not see them yet on Gmane -- my NNTP source. -- Sebastien Vauban ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-04-03 12:35 [bug] Remote durations are considered as fractions Sebastien Vauban @ 2012-04-10 22:46 ` Bastien 2012-04-19 13:19 ` Sebastien Vauban 0 siblings, 1 reply; 9+ messages in thread From: Bastien @ 2012-04-10 22:46 UTC (permalink / raw) To: Sebastien Vauban; +Cc: emacs-orgmode Hi Sébastien, "Sebastien Vauban" <wxhgmqzgwmuf@spammotel.com> writes: > Using the flag T does not help: > > | Planning | 00:00:03 | > | Reporting | 00:00:09 | > #+TBLFM: @1$2=remote(hours-spent,@4$4);T This should work as expected now (with the "T" flag.) Note that the conversion of 3:12 into 1:4 is independant of getting the remote references right when they are durations. | Test | 3:12 | | | 1:4 | #+TBLFM: @2$2=@1$2 Thanks for reporting this! -- Bastien ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-04-10 22:46 ` Bastien @ 2012-04-19 13:19 ` Sebastien Vauban 2012-04-20 11:21 ` Bastien 0 siblings, 1 reply; 9+ messages in thread From: Sebastien Vauban @ 2012-04-19 13:19 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Bastien, Bastien wrote: > "Sebastien Vauban" <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes: > >> Using the flag T does not help: >> >> | Planning | 00:00:03 | >> | Reporting | 00:00:09 | >> #+TBLFM: @1$2=remote(hours-spent,@4$4);T > > This should work as expected now (with the "T" flag.) I confirm this is now working as expected for both the "T" and the "t" flags: - Using the flag T: | Planning | 03:36:00 | | Reporting | 09:03:00 | #+TBLFM: @1$2=remote(hours-spent,@4$3);T::@2$2=remote(hours-spent,@8$3);T - Using the flag t: | Planning | 3.60 | | Reporting | 9.05 | #+TBLFM: @1$2=remote(hours-spent,@4$3);t::@2$2=remote(hours-spent,@8$3);t Thanks! BTW, *could we limit the format of "T" to H:MM*, instead of H:MM:SS? The first case seems much more common, and the one used in all time clocking functions of Org. > Note that the conversion of 3:12 into 1:4 is independant of getting the > remote references right when they are durations. > > | Test | 3:12 | > | | 1:4 | > #+TBLFM: @2$2=@1$2 > > Thanks for reporting this! Wasn't aware of that. Thanks for mentioning. Best regards, Seb -- Sebastien Vauban ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-04-19 13:19 ` Sebastien Vauban @ 2012-04-20 11:21 ` Bastien 2012-04-20 20:45 ` Sebastien Vauban 0 siblings, 1 reply; 9+ messages in thread From: Bastien @ 2012-04-20 11:21 UTC (permalink / raw) To: Sebastien Vauban; +Cc: emacs-orgmode Hi Sébastien, "Sebastien Vauban" <wxhgmqzgwmuf@spammotel.com> writes: > BTW, *could we limit the format of "T" to H:MM*, instead of H:MM:SS? The first > case seems much more common, and the one used in all time clocking functions > of Org. Patch welcome! -- Bastien ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-04-20 11:21 ` Bastien @ 2012-04-20 20:45 ` Sebastien Vauban 2012-04-20 23:22 ` Bastien 0 siblings, 1 reply; 9+ messages in thread From: Sebastien Vauban @ 2012-04-20 20:45 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Bastien, Bastien wrote: > "Sebastien Vauban" <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes: > >> BTW, *could we limit the format of "T" to H:MM*, instead of H:MM:SS? The first >> case seems much more common, and the one used in all time clocking functions >> of Org. > > Patch welcome! I think this is it... From a77fe281afe5b568ebfd1d3969a7d4e6e8e54e63 Mon Sep 17 00:00:00 2001 From: Sebastien Vauban <sva-D0wtAvR13HarG/iDocfnWg@public.gmane.org> Date: Fri, 20 Apr 2012 22:43:11 +0200 Subject: [PATCH] Change output format of T specifier to H:MM * org-table.el (org-table-time-seconds-to-string): Change the format string for default output format to H:MM (instead of HH:MM:SS). --- lisp/org-table.el | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/lisp/org-table.el b/lisp/org-table.el index 2d527d7..76fa7c7 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -3319,7 +3319,7 @@ minutes or seconds." (format "%.1f" (/ (float secs) 60))) ((eq output-format 'seconds) (format "%d" secs)) - (t (org-format-seconds "%.2h:%.2m:%.2s" secs)))) + (t (org-format-seconds "%h:%.2m" secs)))) (defun org-table-fedit-convert-buffer (function) "Convert all references in this buffer, using FUNCTION." -- 1.7.9 Best regards, Seb -- Sebastien Vauban ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-04-20 20:45 ` Sebastien Vauban @ 2012-04-20 23:22 ` Bastien 2012-05-02 10:32 ` Sebastien Vauban 0 siblings, 1 reply; 9+ messages in thread From: Bastien @ 2012-04-20 23:22 UTC (permalink / raw) To: Sebastien Vauban; +Cc: public-emacs-orgmode-mXXj517/zsQ Hi Sébastien, "Sebastien Vauban" <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes: > I think this is it... Yes.. but in fact, this is precisely the difference between the `t' and the `T' flags - the latter displays seconds while the former display the output according to `org-table-duration-custom-format', which you can customize. Sorry I didn't mention this before. -- Bastien ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-04-20 23:22 ` Bastien @ 2012-05-02 10:32 ` Sebastien Vauban 2012-05-09 19:16 ` Sebastien Vauban 0 siblings, 1 reply; 9+ messages in thread From: Sebastien Vauban @ 2012-05-02 10:32 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Bastien, Bastien wrote: > "Sebastien Vauban" writes: > >> I think this is it... > > Yes.. but in fact, this is precisely the difference between the `t' and the > `T' flags - the latter displays seconds while the former display the output > according to `org-table-duration-custom-format', which you can customize. > Sorry I didn't mention this before. I have the impression you mixed, in the above, seconds with *fraction of* seconds: - the flag `T' currently means HH:MM:SS, while - the flag `t' currently means "fractional time" of hours (by default). As you say, `t' may be further customized: ┏━━━━ ┃ org-table-duration-custom-format is a variable defined in `org-table.el'. ┃ Its value is hours ┃ ┃ Documentation: ┃ Format for the output of calc computations like $1+$2;t. ┃ The default value is 'hours, and will output the results as a ┃ number of hours. Other allowed values are 'seconds, 'minutes and ┃ 'days, and the output will be a fraction of seconds, minutes or ┃ days. ┗━━━━ Hence, you really have 5 cases: - t, fraction of days - t, fraction of hours - t, fraction of minutes - t, fraction of seconds - T, HH:MM:SS Those 5 cases are currently handled (in that order) in the following function: --8<---------------cut here---------------start------------->8--- (defun org-table-time-seconds-to-string (secs &optional output-format) "Convert a number of seconds to a time string. If OUTPUT-FORMAT is non-nil, return a number of days, hours, minutes or seconds." (let* ((secs0 (abs secs)) (res (cond ((eq output-format 'days) (format "%.3f" (/ (float secs0) 86400))) ((eq output-format 'hours) (format "%.2f" (/ (float secs0) 3600))) ((eq output-format 'minutes) (format "%.1f" (/ (float secs0) 60))) ((eq output-format 'seconds) (format "%d" secs0)) (t (org-format-seconds "%.2h:%.2m:%.2s" secs0))))) (if (< secs 0) (concat "-" res) res))) --8<---------------cut here---------------end--------------->8--- My patch just addressed the HH:MM:SS format (that is, the `T' flag). It does not impact the fractional representation of time (the `t' flag). Best regards, Seb -- Sebastien Vauban ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-05-02 10:32 ` Sebastien Vauban @ 2012-05-09 19:16 ` Sebastien Vauban 2012-06-04 15:02 ` Sebastien Vauban 0 siblings, 1 reply; 9+ messages in thread From: Sebastien Vauban @ 2012-05-09 19:16 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi Bastien, "Sebastien Vauban" wrote: > Bastien wrote: >> "Sebastien Vauban" writes: >> >>> I think this is it... >> >> Yes.. but in fact, this is precisely the difference between the `t' and the >> `T' flags - the latter displays seconds while the former display the output >> according to `org-table-duration-custom-format', which you can customize. >> Sorry I didn't mention this before. > > I have the impression you mixed, in the above, seconds with *fraction of* > seconds: > > - the flag `T' currently means HH:MM:SS, while > - the flag `t' currently means "fractional time" of hours (by default). > > As you say, `t' may be further customized: > > ┏━━━━ > ┃ org-table-duration-custom-format is a variable defined in `org-table.el'. > ┃ Its value is hours > ┃ > ┃ Documentation: > ┃ Format for the output of calc computations like $1+$2;t. > ┃ The default value is 'hours, and will output the results as a > ┃ number of hours. Other allowed values are 'seconds, 'minutes and > ┃ 'days, and the output will be a fraction of seconds, minutes or > ┃ days. > ┗━━━━ > > Hence, you really have 5 cases: > > - t, fraction of days > - t, fraction of hours > - t, fraction of minutes > - t, fraction of seconds > - T, HH:MM:SS > > Those 5 cases are currently handled (in that order) in the following function: > > (defun org-table-time-seconds-to-string (secs &optional output-format) > "Convert a number of seconds to a time string. > If OUTPUT-FORMAT is non-nil, return a number of days, hours, > minutes or seconds." > (let* ((secs0 (abs secs)) > (res > (cond ((eq output-format 'days) > (format "%.3f" (/ (float secs0) 86400))) > ((eq output-format 'hours) > (format "%.2f" (/ (float secs0) 3600))) > ((eq output-format 'minutes) > (format "%.1f" (/ (float secs0) 60))) > ((eq output-format 'seconds) > (format "%d" secs0)) > (t (org-format-seconds "%.2h:%.2m:%.2s" secs0))))) > (if (< secs 0) (concat "-" res) res))) > > My patch just addressed the HH:MM:SS format (that is, the `T' flag). > It does not impact the fractional representation of time (the `t' flag). I just had to look at some table using time references : | 08:30 | 09:00 | | 09:30 | | As the end time on the first line is equal to the beginning time on the second one, I try using a formula to copy the time: | 08:30 | 09:00 | | #ERROR | | #+TBLFM: @2$1=@1$2 The above does not work because Calc makes a division of 9 by 0, as -- by default, without an explicit format -- data is considered as numeric, right? Hence, I need to use the T flag, but this doesn't look right yet: | 08:30 | 09:00 | | 09:00:00 | | #+TBLFM: @2$1=@1$2;T This is what the above patch is supposed to solve. BTW, I tried other variants: 1. replacing `:' by `h' | 08h30 | 09h00 | | 9 h00 | | #+TBLFM: @2$1=@1$2 Weird that the 9 is moved away from the `h'. I can accept that the leading 0 is removed, though. 2. ... and using a string format: | 8h30 | 9h00 | | 9 | | #+TBLFM: @2$1=@1$2;%s Another weird results for me... Isn't there any way to say "copy verbatim the contents" of that field? Best regards, Seb -- Sebastien Vauban ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bug] Remote durations are considered as fractions 2012-05-09 19:16 ` Sebastien Vauban @ 2012-06-04 15:02 ` Sebastien Vauban 0 siblings, 0 replies; 9+ messages in thread From: Sebastien Vauban @ 2012-06-04 15:02 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi, May I bump up this thread (and its inlined, older, corollary)? Best regards, Seb "Sebastien Vauban" wrote: > "Sebastien Vauban" wrote: >> Bastien wrote: >>> "Sebastien Vauban" writes: >>> >>>> I think this is it... >>> >>> Yes.. but in fact, this is precisely the difference between the `t' and the >>> `T' flags - the latter displays seconds while the former display the output >>> according to `org-table-duration-custom-format', which you can customize. >>> Sorry I didn't mention this before. >> >> I have the impression you mixed, in the above, seconds with *fraction of* >> seconds: >> >> - the flag `T' currently means HH:MM:SS, while >> - the flag `t' currently means "fractional time" of hours (by default). >> >> As you say, `t' may be further customized: >> >> ┏━━━━ >> ┃ org-table-duration-custom-format is a variable defined in `org-table.el'. >> ┃ Its value is hours >> ┃ >> ┃ Documentation: >> ┃ Format for the output of calc computations like $1+$2;t. >> ┃ The default value is 'hours, and will output the results as a >> ┃ number of hours. Other allowed values are 'seconds, 'minutes and >> ┃ 'days, and the output will be a fraction of seconds, minutes or >> ┃ days. >> ┗━━━━ >> >> Hence, you really have 5 cases: >> >> - t, fraction of days >> - t, fraction of hours >> - t, fraction of minutes >> - t, fraction of seconds >> - T, HH:MM:SS >> >> Those 5 cases are currently handled (in that order) in the following function: >> >> (defun org-table-time-seconds-to-string (secs &optional output-format) >> "Convert a number of seconds to a time string. >> If OUTPUT-FORMAT is non-nil, return a number of days, hours, >> minutes or seconds." >> (let* ((secs0 (abs secs)) >> (res >> (cond ((eq output-format 'days) >> (format "%.3f" (/ (float secs0) 86400))) >> ((eq output-format 'hours) >> (format "%.2f" (/ (float secs0) 3600))) >> ((eq output-format 'minutes) >> (format "%.1f" (/ (float secs0) 60))) >> ((eq output-format 'seconds) >> (format "%d" secs0)) >> (t (org-format-seconds "%.2h:%.2m:%.2s" secs0))))) >> (if (< secs 0) (concat "-" res) res))) >> >> My patch just addressed the HH:MM:SS format (that is, the `T' flag). >> It does not impact the fractional representation of time (the `t' flag). > > I just had to look at some table using time references : > > | 08:30 | 09:00 | > | 09:30 | | > > As the end time on the first line is equal to the beginning time on the second > one, I try using a formula to copy the time: > > | 08:30 | 09:00 | > | #ERROR | | > #+TBLFM: @2$1=@1$2 > > The above does not work because Calc makes a division of 9 by 0, as -- by > default, without an explicit format -- data is considered as numeric, right? > > Hence, I need to use the T flag, but this doesn't look right yet: > > | 08:30 | 09:00 | > | 09:00:00 | | > #+TBLFM: @2$1=@1$2;T > > This is what the above patch is supposed to solve. > > BTW, I tried other variants: > > 1. replacing `:' by `h' > > | 08h30 | 09h00 | > | 9 h00 | | > #+TBLFM: @2$1=@1$2 > > Weird that the 9 is moved away from the `h'. I can accept that the leading > 0 is removed, though. > > 2. ... and using a string format: > > | 8h30 | 9h00 | > | 9 | | > #+TBLFM: @2$1=@1$2;%s > > Another weird results for me... > > Isn't there any way to say "copy verbatim the contents" of that field? -- Sebastien Vauban ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-06-04 15:02 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-04-03 12:35 [bug] Remote durations are considered as fractions Sebastien Vauban 2012-04-10 22:46 ` Bastien 2012-04-19 13:19 ` Sebastien Vauban 2012-04-20 11:21 ` Bastien 2012-04-20 20:45 ` Sebastien Vauban 2012-04-20 23:22 ` Bastien 2012-05-02 10:32 ` Sebastien Vauban 2012-05-09 19:16 ` Sebastien Vauban 2012-06-04 15:02 ` Sebastien Vauban
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).