1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <xsl:stylesheet name="VYM_TaskJuggler" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3 <xsl:output method="text"/>
4 <xsl:template match="node()">
7 <xsl:template match="/vymmap/mapcenter">
8 project <xsl:value-of select="translate(heading, ' ', '_')"/> "<xsl:value-of select="heading"/>" "1.0" 2002-01-16 2002-05-28 {
9 # Pick a day during the project that will be reported as 'today' in
10 # the project reports. If not specified the current day will be
11 # used, but this will likely be ouside of the project range, so it
12 # can't be seen in the reports.
14 # Hide the clock time. Only show the date.
16 # The currency for all money values is U.S. Dollars.
19 # We want to compare the planned scenario, to one with the actual
21 scenario plan "Planned" {
22 scenario actual "Actual"
25 # The daily default rate of all resources. This can be overriden for each
26 # resource. We specify this, so that we can do a good calculation of
27 # the costs of the project.
30 # This is one way to form teams
31 macro allocate_developers [
33 allocate dev2 { limits { dailymax 4h } }
39 resource dev "In House" {
40 resource dev1 "Some Guy" { rate 330.00 }
41 resource dev2 "Some Other Guy"
42 resource dev3 "Some Last Guy on Vacation" { vacation 2002-02-01 - 2002-02-05 }
47 resource misc "Outsource" {
48 resource test "Out Sourcer1" { limits { dailymax 6.4h } rate 240.00 }
49 resource doc "Out Source2" { rate 280.00 vacation 2002-03-11 - 2002-03-16 }
54 # In order to do a simple profit and loss analysis of the project we
55 # specify accounts. One for the development costs, one for the
56 # documentation costs and one account to credit the customer payments
58 account dev "Development" cost
59 account doc "Documentation" cost
60 account rev "Payments" revenue
62 # Now we specify the work packages. The whole project is described as
63 # a task that contains sub tasks. These sub tasks are then broken down
64 # into smaller tasks and so on. The innermost tasks describe the real
65 # work and have resources allocated to them. Many attributes of tasks
66 # are inherited from the enclosing task. This saves you a lot of
68 task <xsl:value-of select="translate(heading, ' ', '_')"/> "<xsl:value-of select="heading"/>" {
70 # All work related costs will be booked to this account unless the
71 # sub tasks specifies it differently.
74 <xsl:call-template name="recursive"/>
78 # This task report is for use with the TaskJuggler GUI
79 taskreport "Project Overview" {
80 columns start, end, effort, duration, completed, status, note, cost, revenue
84 # A resource report for use with the TaskJuggler GUI
85 resourcereport "Resource Usage" {
86 columns effort, freeload, utilization, rate
91 # For conveniance we would like each report to contain links to the
92 # other reports. So we declare a macro with a fragment of raw HTML
93 # code to be embedded into all the HTML reports.
96 '<table align="center" border="2" cellpadding="10"
97 style="background-color:#f3ebae; font-size:105%">
99 <td><a href="Tasks-Overview.html">Tasks Overview</a></td>
100 <td><a href="Staff-Overview.html">Staff Overview</a></td>
101 <td><a href="Accounting.html">Accounting</a></td>
102 <td><a href="Calendar.html">Calendar</a></td>
105 <td><a href="Tasks-Details.html">Tasks Details</a></td>
106 <td><a href="Staff-Details.html">Staff Details</a></td>
107 <td><a href="Status-Report.html">Status Report</a></td>
108 <td><a href="acso.eps">GANTT Chart (Postscript)</a></td>
114 # As the first report, we would like to have a general overview of all
115 # tasks with their computed start and end dates. For better
116 # readability we include a calendar like column that lists the effort
118 htmltaskreport "Tasks-Overview.html" {
119 # This report should contain the navigation bar we have declared
122 # The report should be a table that contains several columns. The
123 # task and their information form the rows of the table. Since we
124 # don't like the title of the effort column, we change it to "Work".
125 columns hierarchindex, name, duration, effort { title "Work"},
127 # For this report we like to have the abbreviated weekday in front
128 # of the date. %a is the tag for this.
129 timeformat "%a %Y-%m-%d"
131 # Don't show load values.
133 # Set a title for the report
134 headline "<xsl:value-of select="heading"/> Project"
135 # And a short description what this report is about.
136 caption "This table presents a management-level overview of the project. The values are days or man-days."
139 # Now a more detailed report that shows all jobs and the people
140 # assigned to the tasks. It also features a comparison of the planned
141 # and actual scenario.
142 htmltaskreport "Tasks-Details.html" {
144 # Now we use a daily calendar.
145 columns no, name, start, end, scenario, daily
148 # Show plan and delayed scenario values.
149 scenarios plan, actual
150 headline "<xsl:value-of select="heading"/> Project - March 2002"
151 caption "This table shows the load of each day for all the tasks.
152 Additionally the resources used for each task are listed. Since the
153 project start was delayed, the delayed schedule differs significantly
154 from the original plan."
155 # Don't hide any resources, that is show them all.
159 # The previous report listed the resources per task. Now we generate a
160 # report the lists all resources.
161 htmlresourcereport "Staff-Overview.html" {
163 # Add a column with the total effort per task.
164 columns no, name { cellurl "http://www.tj.org" }, scenario, weekly, effort
165 scenarios plan, actual
166 # Since we want to see the load values as hours per week, we switch
167 # the unit that loads are reported in to hours.
169 headline "Weekly working hours for the <xsl:value-of select="heading"/> Project"
172 # Now a report similar to the above one but with much more details.
173 htmlresourcereport "Staff-Details.html" {
175 columns name, daily, effort
176 # To still keep the report readable we limit it to show only the
177 # data for March 2002.
181 # The teams are virtual resources that we don't want to see. Since
182 # we have assigned a flag to those virtual resource, we can just
185 # We also like to have the report sorted alphabetically ascending by
189 headline "Daily working hours for the <xsl:value-of select="heading"/> Project - March 2002"
192 htmlweeklycalendar "Calendar.html" {
194 headline "Ongoing Tasks - March 2002"
199 htmlstatusreport "Status-Report.html" {
203 # To conclude the HTML reports a report that shows how badly the
204 # project is calculated is generated. The company won't get rich with
205 # this project. Due to the slip, it actually needs some money from the
206 # bank to pay the salaries.
207 htmlaccountreport "Accounting.html" {
209 # Besides the number of the account and the name we have a column
210 # with the total values (at the end of the project) and the values
211 # for each month of the project.
212 columns no, name, scenario, total, monthly
213 headline "P&L for the Accounting Software Project"
214 caption "The table shows the profit and loss
215 analysis as well as the cashflow situation of the Accounting
217 # Since this is a cashflow calculation we show accumulated values
220 scenarios plan, actual
223 # Finally we generate an XML report that contains all info about the
224 # scheduled project. This will be used by tjx2gantt to create a nice
225 # Gantt chart of our project.
226 xmlreport "<xsl:value-of select="translate(heading, ' ', '_')"/>.tjx" {
230 <xsl:template name="recursive">
231 <xsl:for-each select="branch">
232 task <xsl:value-of select="translate(heading, ' ', '_')"/> "<xsl:value-of select="heading"/>" {
233 # I've included all of the Optional Attributes here.
234 # Commented out for your pleasure.
262 plan:start 2002-03-05
263 actual:start 2002-03-05
266 <xsl:call-template name="recursive"/>