浏览代码

Fix a problem with effort calculation based on hh:mm efforts

Christian Egli 16 年之前
父节点
当前提交
d073c313aa
共有 1 个文件被更改,包括 5 次插入4 次删除
  1. 5 4
      lisp/org-taskjuggler.el

+ 5 - 4
lisp/org-taskjuggler.el

@@ -417,16 +417,17 @@ If the ATTRIBUTE is not in ITEM return nil."
 
 
 (defun org-taskjuggler-clean-effort (effort)
 (defun org-taskjuggler-clean-effort (effort)
   "Translate effort strings into a format acceptable to taskjuggler,
   "Translate effort strings into a format acceptable to taskjuggler,
-i.e. REAL UNIT. If the effort string is something like 5:00 it
-will be assumed to be hours and will be translated into 5.0h.
+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
 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
 days and will be translated into 3.0d. Other formats that taskjuggler
 supports (like weeks, months and years) are currently not supported."
 supports (like weeks, months and years) are currently not supported."
   (cond 
   (cond 
    ((null effort) effort)
    ((null effort) effort)
    ((string-match "\\([0-9]+\\):\\([0-9]+\\)" effort) 
    ((string-match "\\([0-9]+\\):\\([0-9]+\\)" effort) 
-    ; FIXME: translate the minutes to a decimal
-    (concat (match-string 1 effort) "." (match-string 2 effort) "h"))
+    (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"))
    ((string-match "\\([0-9]+\\).\\([0-9]+\\)" effort) (concat effort "d"))
    (t (error "Not a valid effort (%s)" effort))))
    (t (error "Not a valid effort (%s)" effort))))