emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Generating burndown charts using org mode
@ 2011-12-31  0:56 Marco Craveiro
  2011-12-31 11:40 ` OSiUX
  0 siblings, 1 reply; 2+ messages in thread
From: Marco Craveiro @ 2011-12-31  0:56 UTC (permalink / raw)
  To: emacs-orgmode

Hi Org-Moders,

I've been using Org-Mode quite a bit, but I'm afraid I'm not an advanced
user. I'm trying to generate burndown charts [1] which basically follow
coding progress over a bounded period of time (an iteration).

I started by generating a file for each iteration:

<snippet_of_org_file>
* Tasks in iteration
- [[file:list_1.org]]
- [[file:list_2.org]]

#+tblname: test_chart
| Day | Expected | Actual |
|-----+----------+--------|
|   0 |        4 |      4 |
|   1 |        3 |      4 |
|   2 |        2 |      1 |
|   3 |        1 |      0 |
|   4 |        0 |      0 |
</snippet_of_org_file>

list_1.org and list_2.org contain a total of 4 tasks for this time
period (tagged with :iteration1:). The table is updated manually at
present. "Day" is an index to the days in the time period, with work
always starting on day 1; "Expected" is the number of tasks expected to
be remaining on that day; "Actual" is the number of tasks actually
remaining. I then use org-babel/gnuplot to plot the chart as explained
on a previous post [2].

It seemed logical to try to generate the table automatically. I can use
org-mode's spreadsheet's facilities for generating all the days in the
table and I can even use date arithmetic to get dates for a day index.
As you can imagine, the bit I'm really stuck with is how to populate the
"Actual" and "Expected" columns. 

I've read a little bit about agenda views, and they seem to do a lot of
what I want, but unfortunately the lisp is not entirely obvious for a
newbie such as me. My questions are:

- is there an org-mode function that computes the total number of tasks
marked with a given tag in this file and any other files it includes?
- is there an org-mode function that computes the total number of tasks
marked with a given tag and marked as CLOSED on a given day in this file
and any other files it includes?

I was wondering if you could give me some pointers on how to go about
finding or even creating these functions as I failed to find anything
obvious. Even a "give up, its not trivial" would do, so I can at least
stop searching.

Many thanks for your time.

Marco

[1] http://en.wikipedia.org/wiki/Burn_down_chart
[2]
http://lists.gnu.org/archive/html/emacs-orgmode/2011-12/msg00813.html

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

* Re: Generating burndown charts using org mode
  2011-12-31  0:56 Generating burndown charts using org mode Marco Craveiro
@ 2011-12-31 11:40 ` OSiUX
  0 siblings, 0 replies; 2+ messages in thread
From: OSiUX @ 2011-12-31 11:40 UTC (permalink / raw)
  To: emacs-orgmode

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

El sáb, 31 dic 2011, Marco Craveiro decía:

> Hi Org-Moders,
>
> I've been using Org-Mode quite a bit, but I'm afraid I'm not an advanced
> user. I'm trying to generate burndown charts [1] which basically follow
> coding progress over a bounded period of time (an iteration).
>
> I started by generating a file for each iteration:
>
> <snippet_of_org_file>
> * Tasks in iteration
> - [[file:list_1.org]]
> - [[file:list_2.org]]
>
> #+tblname: test_chart
> | Day | Expected | Actual |
> |-----+----------+--------|
> |   0 |        4 |      4 |
> |   1 |        3 |      4 |
> |   2 |        2 |      1 |
> |   3 |        1 |      0 |
> |   4 |        0 |      0 |
> </snippet_of_org_file>

Marco, try this:

<snippet_of_org_file>
*** burndown

    #+srcname: burndown
    #+begin_src sh :session
    cd ~/org
    MONTH=$(date +%m)
    DAYS_DONE=$(egrep -A1 "\* DONE" gca.org | egrep -o "CLOSED: \[[0-9]{4}-$MONTH-[0-9]{2}" | cut -c 10- | sort -u)
    echo "day expected actual"
    for DAY in $DAYS_DONE
    do
      NEXT_BY_DAY=$(egrep -A1 "\* NEXT" gca.org | egrep -o "SCHEDULED: <$DAY" | wc -l)
      DONE_BY_DAY=$(egrep -A1 "\* DONE" gca.org | egrep -o "CLOSED: \[$DAY" | wc -l)
      echo $DAY $NEXT_BY_DAY $DONE_BY_DAY
    done
    #+end_src

    #+results: burndown
    |        day | expected | actual |
    | 2011-12-01 |        5 |      1 |
    | 2011-12-05 |        3 |      1 |
    | 2011-12-12 |        4 |      2 |
    | 2011-12-13 |        2 |      1 |
    | 2011-12-14 |        2 |      2 |
    | 2011-12-15 |        2 |      2 |
    | 2011-12-16 |        2 |      1 |
    | 2011-12-19 |        1 |      2 |
    | 2011-12-20 |        0 |      4 |
    | 2011-12-21 |        0 |      6 |
    | 2011-12-22 |        0 |      1 |
    | 2011-12-26 |        0 |      2 |
    | 2011-12-27 |        0 |      3 |

    #+begin_src gnuplot :var data=burndown :file burdown.png
    reset
    set xdata time
    set timefmt "%Y-%m-%d"
    set format x "%d"
    set title "burndown"
    set xlabel "days"
    set ylabel "taks"
    set xtics nomirror
    set ytics nomirror
    plot data using 1:2 with lines lw 2 lt 3 title col(2), \
         data using 1:3 with lines lw 2 lt 1 title col(3)
    #+end_src

    #+results:
    file:burdown.png
</snippet_of_org_file>

--

::

  Osiris Alejandro Gomez (OSiUX) osiux@osiux.com.ar
  AA70 93FD B6EF EB42 6920 7530 A799 B226 74C8 A3FE
  http://osiux.com http://wiki.buenosaireslibre.org

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

end of thread, other threads:[~2011-12-31 11:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-31  0:56 Generating burndown charts using org mode Marco Craveiro
2011-12-31 11:40 ` OSiUX

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