emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* TaskJuggler 3, revisited
@ 2010-10-09  1:24 John Hendy
  2010-10-09 11:04 ` Detlef Steuer
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: John Hendy @ 2010-10-09  1:24 UTC (permalink / raw)
  To: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 833 bytes --]

Hi,


I'm coming up on some serious need for a project manager. I really only need
gantt chart creation at this point. I strongly dislike the Qt interface and
the need to use that if one wants to get a gantt chart output from the
process. I would much prefer being able to design my html charts, print them
as PDFs or take screenshots and embed them in presentations, send them to
others, etc. (as per tj3).

- is there any progress on an exporter for tj3?

- does anyone have a vague sketch of what needs to happen?

- can I do grunt work for someone to make this happen?
--- scan files for particular variables?
--- run test code, put together all the errors, and send back?
--- something else?

I'm happy to help... I just don't have the programming skills to do the
"real work" that needs to happen.


Thanks for any input,
John

[-- Attachment #1.2: Type: text/html, Size: 1080 bytes --]

[-- Attachment #2: Type: text/plain, Size: 201 bytes --]

_______________________________________________
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

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

* Re: TaskJuggler 3, revisited
  2010-10-09  1:24 TaskJuggler 3, revisited John Hendy
@ 2010-10-09 11:04 ` Detlef Steuer
  2010-10-09 19:25   ` John Hendy
  2010-10-14  6:24   ` Eric S Fraga
  2010-10-09 13:00 ` Anthony Lander
  2010-10-29 15:07 ` Christian Egli
  2 siblings, 2 replies; 13+ messages in thread
From: Detlef Steuer @ 2010-10-09 11:04 UTC (permalink / raw)
  To: emacs-orgmode

Hi John,

if I understand you correctly you just need Gantt charts and not neccessarily tj3. 
If that is the case org-babel and R may help.
There are at least two R-packages wich produce Gantt-charts: plotrix and plan.

May be that helps
Detlef

On Fri, 8 Oct 2010 20:24:31 -0500
John Hendy <jw.hendy@gmail.com> wrote:

> Hi,
> 
> 
> I'm coming up on some serious need for a project manager. I really only need
> gantt chart creation at this point. I strongly dislike the Qt interface and
> the need to use that if one wants to get a gantt chart output from the
> process. I would much prefer being able to design my html charts, print them
> as PDFs or take screenshots and embed them in presentations, send them to
> others, etc. (as per tj3).
> 
> - is there any progress on an exporter for tj3?
> 
> - does anyone have a vague sketch of what needs to happen?
> 
> - can I do grunt work for someone to make this happen?
> --- scan files for particular variables?
> --- run test code, put together all the errors, and send back?
> --- something else?
> 
> I'm happy to help... I just don't have the programming skills to do the
> "real work" that needs to happen.
> 
> 
> Thanks for any input,
> John
> 

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

* Re: TaskJuggler 3, revisited
  2010-10-09  1:24 TaskJuggler 3, revisited John Hendy
  2010-10-09 11:04 ` Detlef Steuer
@ 2010-10-09 13:00 ` Anthony Lander
  2010-10-18 14:52   ` Christian Egli
  2010-10-29 15:07 ` Christian Egli
  2 siblings, 1 reply; 13+ messages in thread
From: Anthony Lander @ 2010-10-09 13:00 UTC (permalink / raw)
  To: John Hendy

Hi John,

On 10-Oct-8, at 9:24 PM, John Hendy wrote:

> I'm coming up on some serious need for a project manager. I really  
> only need gantt chart creation at this point. I strongly dislike the  
> Qt interface and the need to use that if one wants to get a gantt  
> chart output from the process. I would much prefer being able to  
> design my html charts, print them as PDFs or take screenshots and  
> embed them in presentations, send them to others, etc. (as per tj3).

I am roughly in the same boat as you are. I installed tj2 because the  
tk3 manual says it is still unstable, but it's not an ideal solution  
for me, as I have everything running on a mac, with tj2 running in an  
ubuntu virtual machine (because of the Qt requirement).

..and in addition, I found that the exporter for tj2 - which does 90%  
of what I need - was none the less missing a couple of features, so I  
started adding them. Specifically I fixed:

	- The project node was confused with the top task node.
	  I changed it so that the project gets its own node. Needed because...
	- The project now respects an end date or a duration specified on the  
project node
	- I made the TODO state export as a flag so that you can use it to  
filter reports
	  (eg generate a pending tasks or an in-progress tasks report)
	- There was no way to easily add reports or other globals, besides  
customizing
	  variables, so I added a globals and reports node.
	- There was no way to handle taskjuggler features that the exporter  
doesn't know
	  about, like scenarios. I fixed this by making a :TJ: drawer, into  
which you can
	  dump any taskjuggler code you like (on any node), so that even if  
the exporter
	  doesn't support a feature you want, you can still make it work from  
org-mode.

I've only just got this working, and I haven't written a single line  
of documentation for it, except for code comments.

> - is there any progress on an exporter for tj3?

My original thought was to post my changes here as a patch, to be  
tested and hacked on by the group. Maybe it would be smarter to just  
change it into a taskjuggler3 exporter? I just looked through "moving  
from 2 to 3" section of the taskjuggler manual. On first glance, it  
looks like the semantic changes won't bother the exporter, and that  
the syntactic changes are relatively minor. So I am willing to give it  
a whirl.

Given the foregoing, two questions for the group:

1. Is anyone interested in the changes I've made for tj2? I  
unfortunately don't have time to document them, except in point form  
as above, but I am happy to put together a patch and send it to the  
list for others to bang away on.
2. Carsten, would you be interested in these changes, and/or a  
taskjuggler3 exporter?

Thanks,

   -Anthony

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

* Re: Re: TaskJuggler 3, revisited
  2010-10-09 11:04 ` Detlef Steuer
@ 2010-10-09 19:25   ` John Hendy
  2010-10-14  6:24   ` Eric S Fraga
  1 sibling, 0 replies; 13+ messages in thread
From: John Hendy @ 2010-10-09 19:25 UTC (permalink / raw)
  To: Detlef Steuer; +Cc: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 1760 bytes --]

On Sat, Oct 9, 2010 at 6:04 AM, Detlef Steuer <detlef.steuer@gmx.de> wrote:

> Hi John,
>
> if I understand you correctly you just need Gantt charts and not
> neccessarily tj3.
> If that is the case org-babel and R may help.
> There are at least two R-packages wich produce Gantt-charts: plotrix and
> plan.
>
>
Oooh -- I'll definitely be checking these out. I don't have many resources
to manage and have no need for any of the account stuff... so maybe
something like this could work for me.


> May be that helps
> Detlef
>
> On Fri, 8 Oct 2010 20:24:31 -0500
> John Hendy <jw.hendy@gmail.com> wrote:
>
> > Hi,
> >
> >
> > I'm coming up on some serious need for a project manager. I really only
> need
> > gantt chart creation at this point. I strongly dislike the Qt interface
> and
> > the need to use that if one wants to get a gantt chart output from the
> > process. I would much prefer being able to design my html charts, print
> them
> > as PDFs or take screenshots and embed them in presentations, send them to
> > others, etc. (as per tj3).
> >
> > - is there any progress on an exporter for tj3?
> >
> > - does anyone have a vague sketch of what needs to happen?
> >
> > - can I do grunt work for someone to make this happen?
> > --- scan files for particular variables?
> > --- run test code, put together all the errors, and send back?
> > --- something else?
> >
> > I'm happy to help... I just don't have the programming skills to do the
> > "real work" that needs to happen.
> >
> >
> > Thanks for any input,
> > John
> >
>
>
>
> _______________________________________________
> 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
>

[-- Attachment #1.2: Type: text/html, Size: 2607 bytes --]

[-- Attachment #2: Type: text/plain, Size: 201 bytes --]

_______________________________________________
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

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

* Re: Re: TaskJuggler 3, revisited
  2010-10-09 11:04 ` Detlef Steuer
  2010-10-09 19:25   ` John Hendy
@ 2010-10-14  6:24   ` Eric S Fraga
  2010-10-18 14:54     ` Christian Egli
  1 sibling, 1 reply; 13+ messages in thread
From: Eric S Fraga @ 2010-10-14  6:24 UTC (permalink / raw)
  To: emacs-orgmode

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

For the recent project I had to prepare, I did have to generate a
GANTT chart.  I tried using TJ2 via org but found the current
implementation not suitable for my way of working.  Instead of using
TJ, either 2 or 3, I simply created my own chart using tikz in latex.
To make my life easier, I created a number of latex commands for this.

I've now developed some code which will take an org table and create a
GANTT chart.  Some of you may find this useful so I've attached an org
document with all the codes (emacs lisp + latex) along with an
example.  I've also attached a PDF so you can see what I get.

The codes are not necessarily easily customisable so they may not do
what you want.  For the types of project proposals I have to prepare,
the level of detail I have here is sufficient.

eric

[-- Attachment #2: Type: text/plain, Size: 10320 bytes --]

#+TITLE:     GANTT charts with org-babel
#+AUTHOR:    Eric S Fraga
#+EMAIL:     e.fraga@ucl.ac.uk
#+DATE:      \url{$Revision: 1.12 $}
#+LASTCHANGE:      2010.10.13 21:08:08
#+DESCRIPTION: 
#+KEYWORDS: 
#+LANGUAGE:  en
#+OPTIONS:   H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+LINK_UP:   
#+LINK_HOME: 

#+latex_header: \usepackage{pgf, pgfarrows, pgfnodes}
#+latex_header: \usepackage{tikz}

#+latex_header: \newcommand\ganttline[4]{% line, tag, start end
#+latex_header:   \node at (0,#1) [anchor=base east] {#2};
#+latex_header:   \fill[black!20!white] (#3/20,#1-.2) rectangle (#4/20,#1+.2);}

* table of tasks and milestones

  The following table describes the tasks and other relevant
  information for a project.  Each line is an /entry/ and there are
  three types of entry allowed in this table:

  - task :: an actual task that has a start time, a duration and an end time.
  - milestone :: a specific milestone in the project that has a start
               time alone
  - date :: a point in time that will be drawn as a vertical line in the
          GANTT chart (e.g. start of each year).

  Each element of the chart will be annotated with the content of the
  /label/ column of each entry.  The first column of the table is
  ignored but I use it to number the entries.  The last column, titled
  /align/, is used to determine where to place the /activity/ text for
  tasks, whether to the left or right of the bar or, if nothing is
  specified, centred within the bar itself.

#+tblname: gantttesttable
    |    | type      | label | activity      | depends | start | duration | end | align |
    |----+-----------+-------+---------------+---------+-------+----------+-----+-------|
    |  1 | date      | Start |               |         |     0 |          |   0 |       |
    |  2 | task      | 1.1   | Lit survey    |         |     0 |        3 |   3 | right |
    |  3 | task      | 1.2   | Develop model |       2 |     3 |        9 |  12 | right |
    |  4 | milestone | M1    | model         |       3 |    12 |          |  12 |       |
    |  5 | task      | 1.3   | Implement     |       3 |    12 |        6 |  18 | left  |
    |  6 | date      | Y1    |               |         |    12 |          |  12 |       |
    |  7 | milestone | M2    | software      |       5 |    18 |          |  18 |       |
    |----+-----------+-------+---------------+---------+-------+----------+-----+-------|
    |  8 | task      | 2.1   | Surrogate     |       3 |    15 |        6 |  21 | left  |
    |  9 | task      | 2.2   | Implement     |       7 |    21 |        3 |  24 | left  |
    | 10 | milestone | M3    | software      |       8 |    24 |          |  24 |       |
    | 11 | date      | End   |               |         |    24 |          |  24 |       |
    |----+-----------+-------+---------------+---------+-------+----------+-----+-------|
    #+TBLFM: $1=1+@-1::$8=$6+$7::@5$6=@-1$+2::@6$6=@-1$+2::@8$6=@-2$+2::@9$6=3+@4$+2::@10$6=@-1$+2

* some latex code for gantt charts

The following \LaTeX{} code is used to generate the actual elements of
the GANTT chart.  The three colours used, to indicate /tasks/,
/milestones/ and /date/ lines, can be change to suit your own tastes.  All
the rest of the code is not meant to be changed.  Ideally, this code
should be in a separate /style/ file (see [[actions][list of actions below]]) and an
environment should be defined.  As it stands, the code can only be
used once within a document unless the =gantttask= counter is reset
manually.

#+latex_header: \usepackage{tikz}

#+begin_latex
\newcounter{gantttask}
\newcommand{\gantttaskcolour}{blue!50!white}
\newcommand{\ganttmilestonecolour}{red!50!white}
\newcommand{\ganttdatelinecolour}{black!50!white}
\newcommand{\ganttprojecttime}{1}
\newcommand{\ganttntasks}{1}
\newcommand\gantttask[6]{% label, activity, start, end, labelpos, align
  \begin{pgfonlayer}{foreground}
    % \node at (0,\thegantttask) [anchor=base east] {#2};
    \stepcounter{gantttask}
    \node [left] at (0,\thegantttask) {#1};
    \draw[fill=\gantttaskcolour] (#3/\ganttprojecttime,\thegantttask-0.4) rectangle (#4/\ganttprojecttime,\thegantttask +0.4);
    \node at (#5/\ganttprojecttime,\thegantttask) #6 {#2};
  \end{pgfonlayer}
}
\newcommand\ganttpoint[3]{% line, tag, date
  \node at (0,#1) [anchor=base east] {#2};
  \fill[black] (#3/\ganttprojecttime,#1) circle (0.1/\ganttprojecttime);
}
\newcommand\ganttdateline[2]{% tag, date
  \begin{pgfonlayer}{background}
    \draw[\ganttdatelinecolour] (#2/\ganttprojecttime,0) -- (#2/\ganttprojecttime,\thegantttask+1);
    \node at (#2/\ganttprojecttime,0) [above] {#1};
  \end{pgfonlayer}
}
\newcommand\ganttmilestone[2]{% tag, date
  \begin{pgfonlayer}{foreground}
    \node at (#2/\ganttprojecttime,\thegantttask+1.0) [below] {#1};
    \draw[black,fill=\ganttmilestonecolour] (#2/\ganttprojecttime-0.1\ganttntasks/\ganttprojecttime,\thegantttask+0.9) rectangle (#2/\ganttprojecttime+0.1\ganttntasks/\ganttprojecttime,\thegantttask+1.1);
  \end{pgfonlayer}
}

#+END_LaTeX

* lisp code for creating latex that uses above			   :noexport:
#+source: elispgantt
#+begin_src emacs-lisp :var table=gantttesttable :results output raw :exports results
(defun esf/generate-gantt-chart (table)
  (let ((dates "")
	(entries (nthcdr 2 table))
	(milestones "")
	(nmilestones 0)
	(ntasks 0)
	(projecttime 0)
	(tasks "")
	(xlength 1)
	)
    (message "Initial: %s\n" table)
    (message "Entries: %s\n" entries)
    (while entries
      (let ((entry (first entries)))
	(if (listp entry)
	    (let ((id (first entry))
		  (type (nth 1 entry))
		  (label (nth 2 entry))
		  (task (nth 3 entry))
		  (dependencies (nth 4 entry))
		  (start (nth 5 entry))
		  (duration (nth 6 entry))
		  (end (nth 7 entry))
		  (alignment (nth 8 entry))
		  )
	      (if (> start projecttime) (setq projecttime start))
	      (if (string= type "task")
		  (let ((end (+ start duration))
			(textposition (+ start (/ duration 2)))
			(flush "")
			)
		    (if (string= alignment "left")
			(progn
			  (setq textposition start)
			  (setq flush "[left]"))
		      (if (string= alignment "right")
			  (progn
			    (setq textposition end)
			    (setq flush "[right]"))
			)
		      )
		    (setq tasks (format "%s  \\gantttask{%s}{%s}{%d}{%d}{%d}{%s}\n" tasks label task start end textposition flush))
		    (setq ntasks (+ 1 ntasks))
		    (if (> end projecttime)
			(setq projecttime end))
		    )
		(if (string= type "milestone")
		    (progn
		      (setq milestones (format "%s  \\ganttmilestone{$\\begin{array}{c}\\mbox{%s}\\\\ \\mbox{%s}\\end{array}$}{%d}\n" milestones label task start))
		      (setq nmilestones (+ 1 nmilestones)))
		  (if (string= type "date")
		      (setq dates (format "%s  \\ganttdateline{%s}{%d}\n" dates label start))
		    (message "Ignoring entry with type %s\n" type)
		    )
		  )
		)
	      )
	  (message "Ignoring non-list entry %s\n" entry)
	  ) ; end if list entry
	(setq entries (cdr entries))
	)
      ) ; end while entries left
    (format "#+begin_latex
\\pgfdeclarelayer{background}
\\pgfdeclarelayer{foreground}
\\pgfsetlayers{background,foreground}
\\renewcommand{\\ganttprojecttime}{%d}
\\renewcommand{\\ganttntasks}{%d}
\\noindent
\\begin{tikzpicture}[y=-0.75cm,x=0.75\\textwidth]
  \\begin{pgfonlayer}{background}
    \\draw[very thin, red!10!white] (0,1+\\ganttntasks) grid [ystep=0.75cm,xstep=1/\\ganttprojecttime] (1,0);
    \\draw[\\ganttdatelinecolour] (0,0) -- (1,0);
    \\draw[\\ganttdatelinecolour] (0,1+\\ganttntasks) -- (1,1+\\ganttntasks);
  \\end{pgfonlayer}
%s
%s
%s
\\end{tikzpicture}
,#+end_latex\n" projecttime ntasks tasks milestones dates)
    )
  )
(esf/generate-gantt-chart table)
#+end_src

#+   \\draw[help lines, very thin, red!20!white] (0,%s) grid (\\ganttprojecttime,0);
* The GANTT chart

The following GANTT chart is generated by the =emacs-lisp= code in the
section immediately above this one in the =org= file, a section that has
not been exported.

#+results: elispgantt
#+begin_latex
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,foreground}
\renewcommand{\ganttprojecttime}{24}
\renewcommand{\ganttntasks}{5}
\noindent
\begin{tikzpicture}[y=-0.75cm,x=0.75\textwidth]
  \begin{pgfonlayer}{background}
    \draw[very thin, red!10!white] (0,1+\ganttntasks) grid [ystep=0.75cm,xstep=1/\ganttprojecttime] (1,0);
    \draw[\ganttdatelinecolour] (0,0) -- (1,0);
    \draw[\ganttdatelinecolour] (0,1+\ganttntasks) -- (1,1+\ganttntasks);
  \end{pgfonlayer}
  \gantttask{1.1}{Lit survey}{0}{3}{3}{[right]}
  \gantttask{1.2}{Develop model}{3}{12}{12}{[right]}
  \gantttask{1.3}{Implement}{12}{18}{12}{[left]}
  \gantttask{2.1}{Surrogate}{15}{21}{15}{[left]}
  \gantttask{2.2}{Implement}{21}{24}{21}{[left]}

  \ganttmilestone{$\begin{array}{c}\mbox{M1}\\ \mbox{model}\end{array}$}{12}
  \ganttmilestone{$\begin{array}{c}\mbox{M2}\\ \mbox{software}\end{array}$}{18}
  \ganttmilestone{$\begin{array}{c}\mbox{M3}\\ \mbox{software}\end{array}$}{24}

  \ganttdateline{Start}{0}
  \ganttdateline{Y1}{12}
  \ganttdateline{End}{24}

\end{tikzpicture}
#+end_latex


# <<actions>>
* TODO [0/5] outstanding issues or actions
  - [ ] encapsulate latex code within a package
  - [ ] figure out how to make indirect references in org's table
  - [ ] using org-store-link on a section like this one stores the
    special directive, in square brackets, as part of the link
    information but, of course, this changes as items are ticked off
    so the heading changes.
  - [ ] there seems to be some problem with indentation of description
    lists such as the one in the first section of this document.
  - [ ] although the export procedure prompts for whether the emacs
    lisp code should be executed, answering yes doesn't actually
    update the results section.  The code is executed (see *Messages*
    buffer).  The updating might not be happening because the code is
    within a section that is not going to be exported or because there
    is no export directive on the code?  I should try playing with
    =call= invocations of babel code.

[-- Attachment #3: gantt.pdf --]
[-- Type: application/pdf, Size: 81505 bytes --]

[-- Attachment #4: Type: text/plain, Size: 75 bytes --]

-- 
Eric S Fraga
GnuPG: 8F5C 279D 3907 E14A 5C29  570D C891 93D8 FFFC F67D

[-- Attachment #5: Type: text/plain, Size: 201 bytes --]

_______________________________________________
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

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

* Re: TaskJuggler 3, revisited
  2010-10-09 13:00 ` Anthony Lander
@ 2010-10-18 14:52   ` Christian Egli
  2010-10-18 15:45     ` Louis Turk
                       ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Christian Egli @ 2010-10-18 14:52 UTC (permalink / raw)
  To: emacs-orgmode

Anthony Lander <anthonylander@yahoo.com> writes:

> Is anyone interested in the changes I've made for tj2? I unfortunately
> don't have time to document them, except in point form as above, but I
> am happy to put together a patch and send it to the list for others to
> bang away on.

I'm very interested in these patches and would definitely like to see
them, documented or not. It sounds like they should be integrated in the
exporter.

> 2. Carsten, would you be interested in these changes, and/or a
> taskjuggler3 exporter?

I was hoping to have only one taskjuggler exporter which can handle both
tj2 and tj3, possibly depending on a defcustom.

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

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

* Re: TaskJuggler 3, revisited
  2010-10-14  6:24   ` Eric S Fraga
@ 2010-10-18 14:54     ` Christian Egli
  2010-10-18 17:46       ` Eric S Fraga
  0 siblings, 1 reply; 13+ messages in thread
From: Christian Egli @ 2010-10-18 14:54 UTC (permalink / raw)
  To: emacs-orgmode

Eric S Fraga <ucecesf@ucl.ac.uk> writes:

> For the recent project I had to prepare, I did have to generate a
> GANTT chart.  I tried using TJ2 via org but found the current
> implementation not suitable for my way of working.  

What are the problems you encountered?

> Instead of using TJ, either 2 or 3, I simply created my own chart
> using tikz in latex. 

Sweet hack! And looks quite nice too.

Thanks

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

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

* Re: Re: TaskJuggler 3, revisited
  2010-10-18 14:52   ` Christian Egli
@ 2010-10-18 15:45     ` Louis Turk
  2010-10-18 16:55     ` Anthony Lander
       [not found]     ` <98BDDE23-2AA0-4B2A-B089-688F7BC46A49@yahoo.com>
  2 siblings, 0 replies; 13+ messages in thread
From: Louis Turk @ 2010-10-18 15:45 UTC (permalink / raw)
  To: emacs-orgmode

  On 10/18/2010 10:52 PM, Christian Egli wrote:
> Anthony Lander<anthonylander@yahoo.com>  writes:
>
>> Is anyone interested in the changes I've made for tj2? I unfortunately
>> don't have time to document them, except in point form as above, but I
>> am happy to put together a patch and send it to the list for others to
>> bang away on.
> I'm very interested in these patches and would definitely like to see
> them, documented or not. It sounds like they should be integrated in the
> exporter.
>
>> 2. Carsten, would you be interested in these changes, and/or a
>> taskjuggler3 exporter?
> I was hoping to have only one taskjuggler exporter which can handle both
> tj2 and tj3, possibly depending on a defcustom.
>
> Thanks

I'm especially interested in a tj3 exporter. I have already installed 
tj3 specifically to use with org-mode.

Lou

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

* Re: Re: TaskJuggler 3, revisited
  2010-10-18 14:52   ` Christian Egli
  2010-10-18 15:45     ` Louis Turk
@ 2010-10-18 16:55     ` Anthony Lander
       [not found]     ` <98BDDE23-2AA0-4B2A-B089-688F7BC46A49@yahoo.com>
  2 siblings, 0 replies; 13+ messages in thread
From: Anthony Lander @ 2010-10-18 16:55 UTC (permalink / raw)
  To: Christian Egli; +Cc: emacs-orgmode

Hi Christian,

On 10-Oct-18, at 10:52 AM, Christian Egli wrote:

> Anthony Lander <anthonylander@yahoo.com> writes:
>
>> Is anyone interested in the changes I've made for tj2? I  
>> unfortunately
>> don't have time to document them, except in point form as above,  
>> but I
>> am happy to put together a patch and send it to the list for others  
>> to
>> bang away on.
>
> I'm very interested in these patches and would definitely like to see
> them, documented or not. It sounds like they should be integrated in  
> the
> exporter.

In the end, I also got the whole thing working for TJ3. I will send  
you both files - I think it would be easy enough to merge the changes  
together and make an exporter that works for both TJ2 and TJ3  
depending on a defcustom. I'll send you everything in a separate  
email. Maybe we'll get it all integrated together, and then move the  
discussion back on to the list?

Best regards,

   -Anthony

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

* Re: Re: TaskJuggler 3, revisited
  2010-10-18 14:54     ` Christian Egli
@ 2010-10-18 17:46       ` Eric S Fraga
  0 siblings, 0 replies; 13+ messages in thread
From: Eric S Fraga @ 2010-10-18 17:46 UTC (permalink / raw)
  To: Christian Egli; +Cc: emacs-orgmode

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

On Mon, 18 Oct 2010 16:54:37 +0200, Christian Egli <christian.egli@sbs.ch> wrote:
> 
> Eric S Fraga <ucecesf@ucl.ac.uk> writes:
> 
> > For the recent project I had to prepare, I did have to generate a
> > GANTT chart.  I tried using TJ2 via org but found the current
> > implementation not suitable for my way of working.  
> 
> What are the problems you encountered?

The main problem (not really a problem per se) is the need to define
sub-headings for tasks and so on for the exporter to find the
necessary project information.  This makes sense for a running
project, say, but not for the type of document I was preparing (a
project proposal where the level of project workplan detail is much
lower).  I found it much easier, for the latter, to use a simple
table.  Of course, for a running project where you wish to keep track
of how far each task has progressed and allocations of resources etc,
my simple approach won't be of much use and a table is probably not
the ideal representation in any case.

A secondary problem (also not a problem) was the (current) lack of
babel integration for TJ.  I have become addicted to having all my
code etc within org.  I can no longer write anything without at least
one #+begin_src ... directive in my documents!

In terms of org->tj export, there were some issues (can't remember the
details now unfortunately) with default interpretation of values for
times and so on, none of which appeared to be insurmountable but I
didn't spend much time on this aspect due to the above points.

In the end, I didn't need the power of tj so found it quicker to roll
up my own!

> > Instead of using TJ, either 2 or 3, I simply created my own chart
> > using tikz in latex. 
> 
> Sweet hack! And looks quite nice too.

thanks!

I should add that my longer term goal is to support some simple
critical path analysis using the table approach I have defined.  This
would help me in some of the lectures on project management I give to
my students.  I'm currently stuck on how to do indirect references in
org tables: how to get the contents of an entry chosen by a value in a
different entry (e.g. what is the max of the end times of the
dependencies of the current task).  I've not asked any questions on
the list yet because I think most of my answers will come from
learning emacs Calc properly (so much to learn, so little time, but it
sure is fun ;-).

Thanks,
eric


[-- Attachment #2: Type: text/plain, Size: 75 bytes --]

-- 
Eric S Fraga
GnuPG: 8F5C 279D 3907 E14A 5C29  570D C891 93D8 FFFC F67D

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

_______________________________________________
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

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

* Re: Re: TaskJuggler 3, revisited
       [not found]     ` <98BDDE23-2AA0-4B2A-B089-688F7BC46A49@yahoo.com>
@ 2010-10-19  9:29       ` Christian Egli
       [not found]         ` <0EBF5950-179C-44CC-958C-EB9CF06A44AF@yahoo.com>
  0 siblings, 1 reply; 13+ messages in thread
From: Christian Egli @ 2010-10-19  9:29 UTC (permalink / raw)
  To: Anthony Lander; +Cc: emacs-orgmode

Hi Anthony

Anthony Lander <anthonylander@yahoo.com> writes:

> Please find attached a somewhat improved version of your TJ2 exporter,
> a drop-in replacement that exports to TJ3, and also a sample .org
> file. 

This is all exciting stuff. It's a little hard to digest (many changes
rolled into one, white space formatting changes that make it hard to find
the real change, common lisp idioms which I'm not familiar with). Let me
get back to you with some questions and then we can discuss how to most
easily merge the stuff.

- Why did you compute the leafiness? I seem to have experienced that tj3
  has a problem with zero effort tasks that aren't marked as milestones.
  Is that the reason?

- Why do you add a duration of 1d if the task has neither a duration, an
  end, a period nor an effort? Shouldn't that be a milestone instead?

- I see that there is a need to annotate a project with stuff such as
  scenarios, etc and I was missing a way to have file specific reports
  or other globals. Your additional tags solve that problem. However I'm
  a bit reluctant to add more magic tags that mark the trees in some
  way. I was hoping to find a more general way for this problem. So far
  I haven't found a good solution though.

- I like the idea of the TJ drawer, but in the end you just seem to use
  it for the project node and the globals node. So in essence they are
  taskjuggler source code blocks (in disguise) which are tied to a
  particular node. In fact they are not even really tied to a particular
  node, especially in the case of the globals. This goes back to the
  previous question about a good way to add file specific globals. Maybe
  some kind taskjuggler specific export option is really what we are
  looking for.

As an aside, I think it's better to post the source code to the list.
There might be other people interested in it and pitching in with
opinions and improvements.

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

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

* Re: Re: TaskJuggler 3, revisited
       [not found]         ` <0EBF5950-179C-44CC-958C-EB9CF06A44AF@yahoo.com>
@ 2010-10-28  7:28           ` Christian Egli
  0 siblings, 0 replies; 13+ messages in thread
From: Christian Egli @ 2010-10-28  7:28 UTC (permalink / raw)
  To: Anthony Lander; +Cc: emacs-orgmode

Hi Anthony

Anthony Lander <anthonylander@yahoo.com> writes:

> Is the unfamiliar idiom the backtick list with the ,variables in it,
> by chance?

No it was more stuff like `return' and `return-from'.

> Ah, sorry. This I should have documented. The problem is that TJ3
> fails to compile the file if there is a leaf node with no computable
> end date. TJ2 happily ignored the situation, but TJ3 throws an error.

OK, I understand. I managed to slowly integrate (some of) your changes.
It should now generate milestones for nodes that cannot be scheduled and
are leaf nodes. So basically it should export valid code for tj3 if you
set org-export-taskjuggler-target-version to 3.0. Of course the report
definitions in the defcustom org-export-taskjuggler-default-reports are
not compatible with tj3 so you will need to change these.

I have (or I guess rather had) some fondness for recursive functions, so
I re-implemented your leafiness function recursively. However I ran into
problems with max-lisp-eval-depth and it appears that recursion is not
encouraged in Emacs lisp
(http://www.gnu.org/s/emacs/manual/html_node/elisp/Compilation-Tips.html#Compilation-Tips).
So I guess it's back to iterative style.

> In any event, the TJ drawer is my attempt at a catch-all solution. It
> at least allows a user to use missing features without waiting for a
> development change. So for example, I personally will never use the
> accounting stuff, and would not be very motivated to add it to the
> exporter, but if someone needed it, they could put the required code
> in the TJ drawer, and they could still use the TJ exporter for their
> project instead of having to abandon org-mode entirely for one missing
> feature.

I like the drawer stuff and will integrate it.

> Interesting thought. I very much like the idea that you can do other
> things with your org-file than export it to taskjuggler. For example,
> keep actual notes in the file, and export it to other formats like
> html or LaTeX, for purposes other than project planning. 

Absolutely, I agree.

> Being able to say "no, this is not a task" in the task tree would be
> very useful. I don't know how to do it nicely either (yet).

Hm, no this is not possible right now. Why would you want to do this?
Maybe we could just mark it as a comment and make the exporter honor
comments.

> How about if we set up a git repository on github
> with the files, and then post the link on the mailing list? 

I set up a repo and pushed my changes to the code there
(http://github.com/egli/org-mode).
 
> I think we should put your email, and this reply to the
> list as well.

Yes, I almost forgot. Would you mind doing that?

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] 13+ messages in thread

* Re: TaskJuggler 3, revisited
  2010-10-09  1:24 TaskJuggler 3, revisited John Hendy
  2010-10-09 11:04 ` Detlef Steuer
  2010-10-09 13:00 ` Anthony Lander
@ 2010-10-29 15:07 ` Christian Egli
  2 siblings, 0 replies; 13+ messages in thread
From: Christian Egli @ 2010-10-29 15:07 UTC (permalink / raw)
  To: emacs-orgmode

John Hendy <jw.hendy@gmail.com> writes:

> - is there any progress on an exporter for tj3?

Yes there is. See
http://github.com/egli/org-mode/blob/master/lisp/org-taskjuggler.el

> - does anyone have a vague sketch of what needs to happen?

The export to tj3 should basically work now. Just customize
`org-export-taskjuggler-target-version' to 3.0 and you should be set.
You still need to adapt the default reports[1], as they no longer work
with tj3.

`org-export-as-taskjuggler-and-open' needs to be adapted and also there
are some other incoming patches from Anthony Lander that I need to
integrate.

> - can I do grunt work for someone to make this happen?

Testing would help.

Thanks.


Footnotes: 
[1]  `org-export-taskjuggler-default-reports'

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

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

end of thread, other threads:[~2010-10-29 15:08 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-09  1:24 TaskJuggler 3, revisited John Hendy
2010-10-09 11:04 ` Detlef Steuer
2010-10-09 19:25   ` John Hendy
2010-10-14  6:24   ` Eric S Fraga
2010-10-18 14:54     ` Christian Egli
2010-10-18 17:46       ` Eric S Fraga
2010-10-09 13:00 ` Anthony Lander
2010-10-18 14:52   ` Christian Egli
2010-10-18 15:45     ` Louis Turk
2010-10-18 16:55     ` Anthony Lander
     [not found]     ` <98BDDE23-2AA0-4B2A-B089-688F7BC46A49@yahoo.com>
2010-10-19  9:29       ` Christian Egli
     [not found]         ` <0EBF5950-179C-44CC-958C-EB9CF06A44AF@yahoo.com>
2010-10-28  7:28           ` Christian Egli
2010-10-29 15:07 ` 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).