emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Support for more flexible effort specifications in TaskJuggler exporter
@ 2011-06-02  6:57 Stuart Hickinbottom
  2011-06-08 15:27 ` Christian Egli
  0 siblings, 1 reply; 2+ messages in thread
From: Stuart Hickinbottom @ 2011-06-02  6:57 UTC (permalink / raw)
  To: Org Mode

[-- Attachment #1: Type: text/plain, Size: 1485 bytes --]

Firstly thanks to Carsten and the whole community for org-mode - it's
really made a positive impact on my project organisation, project
tracking and record keeping at work.

I've been experimenting with tracking medium-sized tasks in org as a
work-breakdown and exporting to TaskJuggler to see just how many
evenings and weekends I'll have to work to meet my promised deadlines! A
recent patch (patch 638, 6th Match 2011) added support for more flexible
effort estimate properties such as 4h, 3.5d etc.

Unfortunately, at the moment the TaskJuggler exporter is more fussy over
this property and only accepts HH:MM or an integer, both of which it
translates to a number of days when exporting.

The attached patch adds support for passing-through effort
specifications when they're in the form "REAL UNIT" as they are for TJ,
supporting the suffixes d, w, m and y in a consistent way to org.
Support for HH:MM or bare number of days should still work as before. It
also cleans up another couple of things about the export of effort:

- HH:MM produces a floating point days duration now (was previously
rounded to an integer)
- The bare REAL effort regex failed to escape the decimal point (and
would match any char)
- Regexes now anchor to the string start to avoid matching the end of
duff values
- Docstring updated for more flexible effort specification

Apologies for my pidgin Emacs and elisp/regexes - this is my first
org-mode patch. Hopefully I've done it right...

-- 
Stuart


[-- Attachment #2: taskjuggler-effort.patch --]
[-- Type: text/plain, Size: 1592 bytes --]

diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el
index d2e5c1f..8f9174e 100644
--- a/lisp/org-taskjuggler.el
+++ b/lisp/org-taskjuggler.el
@@ -615,17 +615,19 @@ is defined it will calculate a unique id for the resource using
   "Translate effort strings into a format acceptable to taskjuggler,
 i.e. REAL UNIT. If the effort string is something like 5:30 it
 will be assumed to be hours and will be translated into 5.5h.
-Otherwise if it contains something like 3.0 it is assumed to be
-days and will be translated into 3.0d. Other formats that
-taskjuggler supports (like weeks, months and years) are currently
-not supported."
+TaskJuggler-compatible units are also supported for hours (h),
+days (d), weeks (w), months (m) and years (y) and so effort can
+be specified like 3h or 4.5d.  Otherwise if it contains a bare
+effort without a unit such as 3.0 it is assumed to be days and
+will be translated into 3.0d."
   (cond
    ((null effort) effort)
    ((string-match "\\([0-9]+\\):\\([0-9]+\\)" effort)
     (let ((hours (string-to-number (match-string 1 effort)))
 	  (minutes (string-to-number (match-string 2 effort))))
-      (format "%dh" (+ hours (/ minutes 60.0)))))
-   ((string-match "\\([0-9]+\\).\\([0-9]+\\)" effort) (concat effort "d"))
+      (format "%.1fh" (+ hours (/ minutes 60.0)))))
+   ((string-match "^\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?\\([hdwmy]\\)$" effort) effort)
+   ((string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)$" effort) (concat effort "d"))
    (t (error "Not a valid effort (%s)" effort))))
 
 (defun org-taskjuggler-get-priority (priority)

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] Support for more flexible effort specifications in TaskJuggler exporter
  2011-06-02  6:57 [PATCH] Support for more flexible effort specifications in TaskJuggler exporter Stuart Hickinbottom
@ 2011-06-08 15:27 ` Christian Egli
  0 siblings, 0 replies; 2+ messages in thread
From: Christian Egli @ 2011-06-08 15:27 UTC (permalink / raw)
  To: emacs-orgmode

Hi Stuart

Stuart Hickinbottom <stuart@hickinbottom.com> writes:

> I've been experimenting with tracking medium-sized tasks in org as a
> work-breakdown and exporting to TaskJuggler to see just how many
> evenings and weekends I'll have to work to meet my promised deadlines! A
> recent patch (patch 638, 6th Match 2011) added support for more flexible
> effort estimate properties such as 4h, 3.5d etc.
>
> Unfortunately, at the moment the TaskJuggler exporter is more fussy over
> this property and only accepts HH:MM or an integer, both of which it
> translates to a number of days when exporting.
>
> The attached patch adds support for passing-through effort
> specifications when they're in the form "REAL UNIT" as they are for TJ,
> supporting the suffixes d, w, m and y in a consistent way to org.
> Support for HH:MM or bare number of days should still work as before. It
> also cleans up another couple of things about the export of effort:
>
> - HH:MM produces a floating point days duration now (was previously
> rounded to an integer)
> - The bare REAL effort regex failed to escape the decimal point (and
> would match any char)
> - Regexes now anchor to the string start to avoid matching the end of
> duff values
> - Docstring updated for more flexible effort specification

Thanks for your patch. I just pushed a patch along the lines of yours
which uses the built-in facilities of orgmode. It handles all effort
durations that are defined in `org-duration-string-to-minutes'. This
brings it in line with the rest of orgmode's effort handling. It also
fixes the documentation in org.texi.

Can you check and see if this fixes all your issues?

Thanks
Christian
-- 
Christian Egli
Swiss Library for the Blind, Visually Impaired and Print Disabled
Grubenstrasse 12, CH-8045 Zürich, Switzerland

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-06-08 15:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-02  6:57 [PATCH] Support for more flexible effort specifications in TaskJuggler exporter Stuart Hickinbottom
2011-06-08 15:27 ` Christian Egli

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).