Re: [Orgmode] [ANN] Exporter for taskjuggler
>From where can I get the latest version of org-taskjuggler? Thanks -- Manish On Tue, Apr 20, 2010 at 1:39 PM, Christian Egli wrote: > John Hendy writes: > >> I'd stick with looking into TJ3 org-mode integration over 2.4. Or >> perhaps take a look at the first of the references on how to use both: >> >> - http://www.taskjuggler.org/tj3/manual/TaskJuggler_2x_Migration.html > > The exporter is pretty agnostic towards either tj3 or tj2.4. It pretty > much just exports the properties you define in your nodes. It also does > some magic with regards to dependecy and resource export, but these have > not changed in tj3. While I haven't tested it with tj3 the export from > an org file should also work for tj3. You might have to tweak the > reports some, but this can be done with the customize interface. > > HTH > Christian > -- > Christian Egli > Swiss Library for the Blind, Visually Impaired and Print Disabled > Grubenstrasse 12, CH-8045 Zürich, Switzerland > > > ___ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode > ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
John Hendy writes: > I'd stick with looking into TJ3 org-mode integration over 2.4. Or > perhaps take a look at the first of the references on how to use both: > > - http://www.taskjuggler.org/tj3/manual/TaskJuggler_2x_Migration.html The exporter is pretty agnostic towards either tj3 or tj2.4. It pretty much just exports the properties you define in your nodes. It also does some magic with regards to dependecy and resource export, but these have not changed in tj3. While I haven't tested it with tj3 the export from an org file should also work for tj3. You might have to tweak the reports some, but this can be done with the customize interface. HTH Christian -- Christian Egli Swiss Library for the Blind, Visually Impaired and Print Disabled Grubenstrasse 12, CH-8045 Zürich, Switzerland ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
On Mon, Apr 19, 2010 at 5:05 AM, Christian Egli wrote: > Hi Dan > > Thanks for your feedback. > > Dan Davison writes: > > > Yes, I didn't even realize that a new version has come out as I'm still > using the old C++ Unix-only version. > > > One note on this... I think only the new Ruby version (TJ3) supports an actual gantt chart export... 2.4.3 (or whatever the other version is at right now) only shows a gantt chart in the program itself if I recall correction. It's not until TJ3 that you can get nice html output without needing the QT-based interface. Perhaps not a huge deal for some, but I really wanted this (gantt charts) and did not want to be stuck with the QT interface for exporting them (or even showing them to others). If this is the type of output being sought, I'd stick with looking into TJ3 org-mode integration over 2.4. Or perhaps take a look at the first of the references on how to use both: TJ 2.4 for viewing and TJ3 for exporting? Best regards, John References: - http://www.taskjuggler.org/tj3/manual/TaskJuggler_2x_Migration.html - http://www.taskjuggler.org/manual-2.4.3/generating_reports_of_the_scheduled_projects.html#generating_html_reports ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
Christian Egli writes: [...] >> It would also be nice if repeated invocation of >> org-export-as-taskjuggler-and-open on the same project didn't spawn >> multiple TJ instances (TJ v2.4.3 ubuntu). > > Hm, yes. Good idea. Do you have an idea how this could be done easily in > elisp? Is this more the reponsibility of the application? E.g. I just did 'firefox some.png' from the shell and it opened a new tab in a running process. So maybe it's a question of checking whether / requesting that the new ruby implementation has a way of telling it from the shell to open (update?) a project in an already-running TJ process. [...] >> Make it work if `org-odd-levels-only' is in use: >> >> diff --git a/org-taskjuggler.el b/org-taskjuggler.el >> index e887d33..e843dcd 100644 >> --- a/org-taskjuggler.el >> +++ b/org-taskjuggler.el >> @@ -309,7 +309,7 @@ the current node such as the headline, the level, todo >> state >> information, all the properties, etc." >>(let* ((props (org-entry-properties)) >> (components (org-heading-components)) >> - (level (car components)) >> + (level (nth 1 components)) >> (headline (nth 4 components)) >> (parent-ordered (org-taskjuggler-parent-is-ordered-p))) >> (push (cons "level" level) props) > > Oh, OK, good catch. Does this also work if `org-odd-levels-only' is not > in use? Yes. C-h f org-heading-components says the second element differs from the first only if org-odd-levels-only is set. Dan ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
Hi Dan Thanks for your feedback. Dan Davison writes: > A simple org file demonstrating some of the features is the most > important thing lacking at the moment. I'm working on an introduction on worg. Hopefully I'll have something by the end of this week including an example org file. > I encountered problems with the fact that > > - I was using `org-odd-levels-only' Oh, OK, I'm not using this, so there might be issues there. > - the "allocate" property name is required to be lower case (unlike > Effort) That's a general problem. The exporter needs to map between org and tj terminology. In most cases this is not a problem as the terminology comes from tj, e.g. 'limits', 'vacation' or also 'allocate'. Here I assume that the property in org mode is named the same and capitalized the same as in tj. I guess this should be stated in the documentation. In other cases where the exporter needs to map between org and tj, e.g. for effort, but also for completeness or dependency information, the exporter is more forgiving. Specifically in the case of Effort it does the downcase as "Effort" is an established property on org. For completeness information it maps the TODO state (whether it is done or not). And dependencies are taken from the BLOCKER attribute (which is also semi-established). I don't know if this is a good solution. I just tried to stick to the tj property names as close as possible and only allow different names if those concepts and names are established in org mode under a different terminology. Hope that clears things up a bit. > - A Resource named with Uppercase letters will be expected to be all > lowercase by TJ (e.g. my Alf resource below). Well resource names in tj have to conform to [A–Za–z0–9_], so what I did in the exporter is look for an ID attribute in the resource or silently generate an id from the resource headline. So if do not specify an ID your resource Alf will be converted (and made unique) in `org-taskjuggler-get-unique-id'. I guess this is a bit behind the users back and also needs better documentation. In your case the resource will be downcased to 'alf'. I have resources like "Domain Expert", which will be converted to "domain_expert". That's why I usually add an ID property to resources so I can easily allocate them. > I've put patches corresponding to the hacks I made to solve these below. Thanks for the patches. More comments below. I have an updated version locally which also supports optional depends attributes like gapduration and gaplength (which were requested by T Helms on the list). I hope to publish this on a branch in the repo. > It would also be nice if repeated invocation of > org-export-as-taskjuggler-and-open on the same project didn't spawn > multiple TJ instances (TJ v2.4.3 ubuntu). Hm, yes. Good idea. Do you have an idea how this could be done easily in elisp? > I had a quick look at the TJ page -- it sounded as if the cross-platform > ruby version is advancing rapidly? Yes, I didn't even realize that a new version has come out as I'm still using the old C++ Unix-only version. > Make it work if `org-odd-levels-only' is in use: > > diff --git a/org-taskjuggler.el b/org-taskjuggler.el > index e887d33..e843dcd 100644 > --- a/org-taskjuggler.el > +++ b/org-taskjuggler.el > @@ -309,7 +309,7 @@ the current node such as the headline, the level, todo > state > information, all the properties, etc." >(let* ((props (org-entry-properties)) >(components (org-heading-components)) > - (level (car components)) > + (level (nth 1 components)) >(headline (nth 4 components)) >(parent-ordered (org-taskjuggler-parent-is-ordered-p))) > (push (cons "level" level) props) Oh, OK, good catch. Does this also work if `org-odd-levels-only' is not in use? > Allow variations in capitalisation of allocate property name (or maybe > the documentation should just point out that it must be lowercase) I'd rather have the capitalisation as closely to the tj terminology as explained above. I'd prefer to update the documentation here. > Always output resource names lower case I guess this is also a documentation issue. If you know how resources will be named (either with an ID or with `org-taskjuggler-get-unique-id') then it should be more clear how to do the allocations. > More comprehensible error message if you forget to define a project... Yes, of course. I had fixed that one already locally. So, thanks again for the feedback. I hope to have the worg page and the code in the branch soon so things should become clearer. Thanks Christian -- Christian Egli Swiss Library for the Blind, Visually Impaired and Print Disabled Grubenstrasse 12, CH-8045 Zürich, Switzerland ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
Christian Egli writes: [...] > So in order to create a professional looking gant and resource usage > charts I implemented an exporter from org-mode to TaskJuggler > (http://www.taskjuggler.org/). The code is attached and I'm looking for > feedback and would love to get this integrated in the org-mode > distribution. Hi Christian, I'm interested in this too! I had a few teething problems but I think I'm doing OK now. A simple org file demonstrating some of the features is the most important thing lacking at the moment. I encountered problems with the fact that - I was using `org-odd-levels-only' - the "allocate" property name is required to be lower case (unlike Effort) - A Resource named with Uppercase letters will be expected to be all lowercase by TJ (e.g. my Alf resource below). I've put patches corresponding to the hacks I made to solve these below. It would also be nice if repeated invocation of org-export-as-taskjuggler-and-open on the same project didn't spawn multiple TJ instances (TJ v2.4.3 ubuntu). I had a quick look at the TJ page -- it sounded as if the cross-platform ruby version is advancing rapidly? Here's my test file and patches. --8<---cut here---start->8--- * Project :taskjuggler_project: *** DONE First milestone :PROPERTIES: :Effort: 01:00 :Allocate: Alf :END: *** TODO Second milestone :PROPERTIES: :Effort: 01:00 :Allocate: Alf :END: * Resources:taskjuggler_resource: *** Alf alf contents --8<---cut here---end--->8--- Make it work if `org-odd-levels-only' is in use: --8<---cut here---start->8--- diff --git a/org-taskjuggler.el b/org-taskjuggler.el index e887d33..e843dcd 100644 --- a/org-taskjuggler.el +++ b/org-taskjuggler.el @@ -309,7 +309,7 @@ the current node such as the headline, the level, todo state information, all the properties, etc." (let* ((props (org-entry-properties)) (components (org-heading-components)) -(level (car components)) +(level (nth 1 components)) (headline (nth 4 components)) (parent-ordered (org-taskjuggler-parent-is-ordered-p))) (push (cons "level" level) props) --8<---cut here---end--->8--- Allow variations in capitalisation of allocate property name (or maybe the documentation should just point out that it must be lowercase) --8<---cut here---start->8--- diff --git a/org-taskjuggler.el b/org-taskjuggler.el index 718ae9d..ab92eca 100644 --- a/org-taskjuggler.el +++ b/org-taskjuggler.el @@ -525,7 +525,7 @@ org-mode priority string." (headline (cdr (assoc "headline" task))) (effort (org-taskjuggler-clean-effort (cdr (assoc org-effort-property task (depends (cdr (assoc "depends" task))) - (allocate (cdr (assoc "allocate" task))) + (allocate (or (cdr (assoc "allocate" task)) (cdr (assoc "Allocate" task)) (cdr (assoc "ALLOCATE" task (priority-raw (cdr (assoc "PRIORITY" task))) (priority (and priority-raw (org-taskjuggler-get-priority priority-raw))) (state (cdr (assoc "TODO" task))) --8<---cut here---end--->8--- Always output resource names lower case --8<---cut here---start->8--- diff --git a/org-taskjuggler.el b/org-taskjuggler.el index ab92eca..1cc5222 100644 --- a/org-taskjuggler.el +++ b/org-taskjuggler.el @@ -544,7 +544,7 @@ org-mode priority string." (if (and parent-ordered previous-sibling) (format " depends %s\n" previous-sibling) (and depends (format " depends %s\n" depends))) - (and allocate (format " purge allocations\n allocate %s\n" allocate)) + (and allocate (format " purge allocations\n allocate %s\n" (downcase allocate))) (and complete (format " complete %s\n" complete)) (and effort (format " effort %s\n" effort)) (and priority (format " priority %s\n" priority)) --8<---cut here---end--->8--- More comprehensible error message if you forget to define a project... --8<---cut here---start->8--- diff --git a/org-taskjuggler.el b/org-taskjuggler.el index e843dcd..718ae9d 100644 --- a/org-taskjuggler.el +++ b/org-taskjuggler.el @@ -244,6 +244,8 @@ defined in `org-export-taskjuggler-default-reports'." (buffer (find-file-noselect filename)) (old-level 0) task resource) +(unless tasks + (error "No taskjuggler project found")) ;; add a default resource (unless resources (setq resources --8<---cut here---end--->8--- Dan > > TaskJuggler uses a text format to define projects, tasks and resou
Re: [Orgmode] [ANN] Exporter for taskjuggler
On Tue, 06 Apr 2010 13:15:46 +0200, Christian Egli wrote: > > Hi Carsten > > Thanks for your reply. I've been a bit stumped by the zero feedback on > the mailing list. Maybe I should have added a few screenshots of fancy > gant and resource usage charts :-). Christian, I am very interested in what you have done; it's just that I have had no time yet to play with your code and doing so properly requires a bit of time! I have used TJ in the past and have liked it so the integration with org is very appealing indeed. thanks, eric ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
On Apr 6, 2010, at 1:15 PM, Christian Egli wrote: Hi Carsten Thanks for your reply. I've been a bit stumped by the zero feedback on the mailing list. Maybe I should have added a few screenshots of fancy gant and resource usage charts :-). That would have helped big time, I guarantee it :-) Carsten Dominik writes: Hi Christian, this look interesting. Should we put this into the contrib directory for now, or are you aiming for the Org-mode core? I'm getting all the paper work for the assignments done, so I guess we could put it into the core. I suppose this would give it more credibility. What more do you need for integration in the core? - Patches for the Makefile and modules customization? - A section in the manual? Yes, for the manual a compact section, more details can go up on Worg if necessary. Thanks! - Carsten ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
Christian I think this is interesting as well. I've been trying to get back up to speed with tj, it never fit my work flow before. If you had a few more example sub-trees, it would help. How difficult would it be to add gap duration to the export? thanks - Tracy On 04/06/2010 07:15 AM, Christian Egli wrote: Hi Carsten Thanks for your reply. I've been a bit stumped by the zero feedback on the mailing list. Maybe I should have added a few screenshots of fancy gant and resource usage charts :-). Carsten Dominik writes: Hi Christian, this look interesting. Should we put this into the contrib directory for now, or are you aiming for the Org-mode core? I'm getting all the paper work for the assignments done, so I guess we could put it into the core. I suppose this would give it more credibility. What more do you need for integration in the core? - Patches for the Makefile and modules customization? - A section in the manual? Thanks Christian ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
Hi Carsten Thanks for your reply. I've been a bit stumped by the zero feedback on the mailing list. Maybe I should have added a few screenshots of fancy gant and resource usage charts :-). Carsten Dominik writes: > Hi Christian, this look interesting. Should we put this > into the contrib directory for now, or are you aiming > for the Org-mode core? I'm getting all the paper work for the assignments done, so I guess we could put it into the core. I suppose this would give it more credibility. What more do you need for integration in the core? - Patches for the Makefile and modules customization? - A section in the manual? Thanks Christian -- Christian Egli Swiss Library for the Blind, Visually Impaired and Print Disabled Grubenstrasse 12, CH-8045 Zürich, Switzerland ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [ANN] Exporter for taskjuggler
Hi Christian, this look interesting. Should we put this into the contrib directory for now, or are you aiming for the Org-mode core? - Carsten On Mar 30, 2010, at 10:59 AM, Christian Egli wrote: Hi all In theory we're developing according to agile methods here, but in practice people still want to see the classic waterfall project plan. So in order to create a professional looking gant and resource usage charts I implemented an exporter from org-mode to TaskJuggler (http://www.taskjuggler.org/). The code is attached and I'm looking for feedback and would love to get this integrated in the org-mode distribution. TaskJuggler uses a text format to define projects, tasks and resources, so it is a natural fit for org-mode. It can produce all sorts of reports for tasks or resources in either HTML, CSV or PDF. The current version of TaskJuggler requires KDE but the next version is implemented in Ruby and should therefore run on any platform. The exporter is a bit different from other exporters, such as the HTML and LaTeX exporters for example, in that it does not export all the nodes of a document or strictly follow the order of the nodes in the document. Instead the TaskJuggler exporter looks for a tree that defines the tasks and a optionally tree that defines the resources for this project. It then creates a TaskJuggler file based on these trees and the attributes defined in all the nodes. * Installation Put the attached file into your load-path and the following line into your ~/.emacs: (require 'org-taskjuggler) The interactive functions are similar to those of the HTML and LaTeX exporters: M-x `org-export-as-taskjuggler' M-x `org-export-as-taskjuggler-and-open' * Tasks Let's illustrate the usage with a small example. Create your tasks as you usually do with org-mode. Assign efforts to each task using properties (it's easiest to do this in the column view). You should end up with something similar to the example by Peter Jones in http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org . Now mark the top node of your tasks with a tag named "taskjuggler_project" (or whatever you customized `org-export-taskjuggler-project-tag' to). You are now ready to export the project plan with `org-export-as-taskjuggler-and-open' which will export the project plan and open a gant chart in TaskJugglerUI. * Resources Next you can define resources and assign those to work on specific tasks. You can group your resources hierarchically. Tag the top node of the resources with "taskjuggler_resource" (or whatever you customized `org-export-taskjuggler-resource-tag' to). You can optionally assign an ID to the resources (using the standard org properties commands) or you can let the exporter generate IDs automatically (the exporter picks the first word of the headline as the ID as long as it is unique). Using that ID you can then allocate resources to tasks. This is again done with the "allocate" property on the tasks. Do this in column view or when on the task type C-c C-x p allocate RET RET Once the allocations are done you can again export to TaskJuggler and check in the Resource Allocation Graph which person is working on what task at what time. * Export of properties The exporter also takes TODO state information into consideration, i.e. if a task is marked as done it will have the corresponding attribute in TaskJuggler ("complete 100"). Also it will export any property on a task resource or resource node which is known to TaskJuggler, such as limits, vacation, shift, booking, efficiency, journalentry, rate for resources or account, start, note, duration, end, journalentry, milestone, reference, responsible, scheduling, etc for tasks. * Dependencies The exporter will handle dependencies that are defined in the tasks either with the ORDERED attribute (see TODO dependencies in the Org mode manual) or with the BLOCKER attribute (see org-depend.el) or alternatively with a depends attribute. Both the BLOCKER and the depends attribute can be either "previous-sibling" or a reference to an ID which is defined for another task in the project. Thanks Christian -- Christian Egli Swiss Library for the Blind, Visually Impaired and Print Disabled Grubenstrasse 12, CH-8045 Zürich, Switzerland ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] [ANN] Exporter for taskjuggler
Hi all In theory we're developing according to agile methods here, but in practice people still want to see the classic waterfall project plan. So in order to create a professional looking gant and resource usage charts I implemented an exporter from org-mode to TaskJuggler (http://www.taskjuggler.org/). The code is attached and I'm looking for feedback and would love to get this integrated in the org-mode distribution. TaskJuggler uses a text format to define projects, tasks and resources, so it is a natural fit for org-mode. It can produce all sorts of reports for tasks or resources in either HTML, CSV or PDF. The current version of TaskJuggler requires KDE but the next version is implemented in Ruby and should therefore run on any platform. The exporter is a bit different from other exporters, such as the HTML and LaTeX exporters for example, in that it does not export all the nodes of a document or strictly follow the order of the nodes in the document. Instead the TaskJuggler exporter looks for a tree that defines the tasks and a optionally tree that defines the resources for this project. It then creates a TaskJuggler file based on these trees and the attributes defined in all the nodes. * Installation Put the attached file into your load-path and the following line into your ~/.emacs: (require 'org-taskjuggler) The interactive functions are similar to those of the HTML and LaTeX exporters: M-x `org-export-as-taskjuggler' M-x `org-export-as-taskjuggler-and-open' * Tasks Let's illustrate the usage with a small example. Create your tasks as you usually do with org-mode. Assign efforts to each task using properties (it's easiest to do this in the column view). You should end up with something similar to the example by Peter Jones in http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org. Now mark the top node of your tasks with a tag named "taskjuggler_project" (or whatever you customized `org-export-taskjuggler-project-tag' to). You are now ready to export the project plan with `org-export-as-taskjuggler-and-open' which will export the project plan and open a gant chart in TaskJugglerUI. * Resources Next you can define resources and assign those to work on specific tasks. You can group your resources hierarchically. Tag the top node of the resources with "taskjuggler_resource" (or whatever you customized `org-export-taskjuggler-resource-tag' to). You can optionally assign an ID to the resources (using the standard org properties commands) or you can let the exporter generate IDs automatically (the exporter picks the first word of the headline as the ID as long as it is unique). Using that ID you can then allocate resources to tasks. This is again done with the "allocate" property on the tasks. Do this in column view or when on the task type C-c C-x p allocate RET RET Once the allocations are done you can again export to TaskJuggler and check in the Resource Allocation Graph which person is working on what task at what time. * Export of properties The exporter also takes TODO state information into consideration, i.e. if a task is marked as done it will have the corresponding attribute in TaskJuggler ("complete 100"). Also it will export any property on a task resource or resource node which is known to TaskJuggler, such as limits, vacation, shift, booking, efficiency, journalentry, rate for resources or account, start, note, duration, end, journalentry, milestone, reference, responsible, scheduling, etc for tasks. * Dependencies The exporter will handle dependencies that are defined in the tasks either with the ORDERED attribute (see TODO dependencies in the Org mode manual) or with the BLOCKER attribute (see org-depend.el) or alternatively with a depends attribute. Both the BLOCKER and the depends attribute can be either "previous-sibling" or a reference to an ID which is defined for another task in the project. Thanks Christian org-taskjuggler.el Description: TaskJuggler exporter -- Christian Egli Swiss Library for the Blind, Visually Impaired and Print Disabled Grubenstrasse 12, CH-8045 Zürich, Switzerland ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode