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