emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Bastien <bzg@altern.org>
To: "M.P." <mattia.pascal@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: compute the difference between effort estimates and actual clocked time
Date: Tue, 16 Aug 2011 16:25:08 +0200	[thread overview]
Message-ID: <87obzpo0o1.fsf@altern.org> (raw)
In-Reply-To: <loom.20110731T105448-747@post.gmane.org> (M. P.'s message of "Sun, 31 Jul 2011 09:10:51 +0000 (UTC)")

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

Hi Pascal,

M.P. <mattia.pascal@gmail.com> writes:

> I'd like to add to my tasks a property  whose value should be the difference in
> time between the effort estimates and the actual clocked time. The final purpose
> is to use the property in column view mode as I do with CLOCKSUM and Effort.
> Could you give me any hints?

There is no way to do this easily right now.

However, this command will display the remaining effort:

#+begin_src emacs-lisp
(defun my-org-display-remaining-effort ()
  "Compute remaining effort for current subtree."
  (interactive)
  (let ((clocksum (org-clock-sum-current-item))
	(effort (org-duration-string-to-minutes
                  (org-entry-get (point) "Effort"))))
    (message (org-minutes-to-hh:mm-string (- effort clocksum)))))
#+end_src

Also, the attached patch allow to postprocess property values with
custom functions when inserting them with org-set-properties.

Let me know if you find this useful!

Best,


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-New-option-org-properties-postprocess-alist.patch --]
[-- Type: text/x-patch, Size: 2232 bytes --]

From b2cdde739e4ed552b5cd4c30d62fb4215656d603 Mon Sep 17 00:00:00 2001
From: Bastien Guerry <bzg@altern.org>
Date: Tue, 16 Aug 2011 16:21:31 +0200
Subject: [PATCH] New option `org-properties-postprocess-alist'.

* org.el (org-properties-postprocess-alist): New option to
allow postprocessing the values of properties set through
`org-set-property'.
(org-set-property): Use this option.

This is inspired by a request from Pascal Mattia.
---
 lisp/org.el |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 318339a..dbefab1 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -2967,6 +2967,28 @@ lined-up with respect to each other."
   :group 'org-properties
   :type 'string)
 
+(defcustom org-properties-postprocess-alist nil
+  "Alist of properties and functions to adjust inserted values.
+Elements of this alist must be of the form 
+
+  ([string] [function])
+
+where [string] must be a property name and [function] must be a
+lambda expression: this lambda expression must take one argument,
+the value to adjust, and return the new value as a string.
+
+For example, this element will allow the property \"Remaining\"
+to be updated wrt the relation between the \"Effort\" property
+and the clock summary:
+
+ ((\"Remaining\" (lambda(value)
+                   (let ((clocksum (org-clock-sum-current-item))
+                         (effort (org-duration-string-to-minutes 
+                                   (org-entry-get (point) \"Effort\"))))
+                     (org-minutes-to-hh:mm-string (- effort clocksum))))))"
+  :group 'org-properties
+  :type 'alist)
+
 (defcustom org-use-property-inheritance nil
   "Non-nil means properties apply also for sublevels.
 
@@ -14228,6 +14250,9 @@ in the current file."
   (let* ((property (or property (org-read-property-name)))
 	 (value (or value (org-read-property-value property))))
     (setq org-last-set-property property)
+    ;; Possibly postprocess the inserted value:
+    (when (assoc property org-properties-postprocess-alist)
+      (setq value (funcall (cadr fn) value)))
     (unless (equal (org-entry-get nil property) value)
       (org-entry-put nil property value))))
 
-- 
1.7.5.2


[-- Attachment #3: Type: text/plain, Size: 14 bytes --]


-- 
 Bastien

  reply	other threads:[~2011-08-16 15:06 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-31  9:10 compute the difference between effort estimates and actual clocked time M.P.
2011-08-16 14:25 ` Bastien [this message]
2011-08-16 21:04   ` Mattia Pascal
2011-08-17  9:41     ` Bastien

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87obzpo0o1.fsf@altern.org \
    --to=bzg@altern.org \
    --cc=emacs-orgmode@gnu.org \
    --cc=mattia.pascal@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).